From 34a11ca5577b49d74daa67ed40b866cefed8b45c Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Tue, 27 May 2025 19:10:48 -0700 Subject: [PATCH 001/105] Provide supports for decomposable structs --- clang/lib/Sema/SemaSYCL.cpp | 206 +++++++++++------- .../experimental/free_function_traits.hpp | 10 + sycl/include/sycl/handler.hpp | 4 +- 3 files changed, 146 insertions(+), 74 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 9a30b3e693ec2..7c2f2762e2133 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -8,6 +8,7 @@ // This implements Semantic Analysis for SYCL constructs. //===----------------------------------------------------------------------===// +#include #include "clang/Sema/SemaSYCL.h" #include "TreeTransform.h" #include "clang/AST/AST.h" @@ -1387,13 +1388,13 @@ class KernelObjVisitor { template void visitComplexRecord(const CXXRecordDecl *Owner, ParentTy &Parent, const CXXRecordDecl *Wrapper, QualType RecordTy, - HandlerTys &... Handlers) { + HandlerTys &...Handlers) { (void)std::initializer_list{ (Handlers.enterStruct(Owner, Parent, RecordTy), 0)...}; VisitRecordHelper(Wrapper, Wrapper->bases(), Handlers...); - VisitRecordHelper(Wrapper, Wrapper->fields(), Handlers...); - (void)std::initializer_list{ - (Handlers.leaveStruct(Owner, Parent, RecordTy), 0)...}; + VisitRecordHelper(Wrapper, Wrapper->fields(), Handlers...), + (void)std::initializer_list{ + (Handlers.leaveStruct(Owner, Parent, RecordTy), 0)...}; } template @@ -1499,7 +1500,9 @@ class KernelObjVisitor { void visitField(const CXXRecordDecl *Owner, FieldDecl *Field, QualType FieldTy, HandlerTys &... Handlers) { if (isSyclSpecialType(FieldTy, SemaSYCLRef)) + { FieldTy->dump(); KF_FOR_EACH(handleSyclSpecialType, Field, FieldTy); +} else if (FieldTy->isStructureOrClassType()) { if (KF_FOR_EACH(handleStructType, Field, FieldTy)) { CXXRecordDecl *RD = FieldTy->getAsCXXRecordDecl(); @@ -1526,9 +1529,12 @@ class KernelObjVisitor { void visitParam(ParmVarDecl *Param, QualType ParamTy, HandlerTys &...Handlers) { if (isSyclSpecialType(ParamTy, SemaSYCLRef)) + {ParamTy->dump(); KP_FOR_EACH(handleSyclSpecialType, Param, ParamTy); +} else if (ParamTy->isStructureOrClassType()) { if (KP_FOR_EACH(handleStructType, Param, ParamTy)) { + ParamTy->dump(); CXXRecordDecl *RD = ParamTy->getAsCXXRecordDecl(); visitRecord(nullptr, Param, RD, ParamTy, Handlers...); } @@ -1607,8 +1613,12 @@ class KernelObjVisitor { template void VisitFunctionParameters(FunctionDecl *FreeFunc, HandlerTys &...Handlers) { - for (ParmVarDecl *Param : FreeFunc->parameters()) + for (ParmVarDecl *Param : FreeFunc->parameters()) { +std::cout << "starting!" << std::endl; +Param->getType()->dump(); visitParam(Param, Param->getType(), Handlers...); +std::cout << "ending!" << std::endl; +} } #undef KF_FOR_EACH @@ -1731,10 +1741,6 @@ class SyclKernelFieldHandlerBase { virtual ~SyclKernelFieldHandlerBase() = default; }; - -// A class to act as the direct base for all the SYCL OpenCL Kernel construction -// tasks that contains a reference to Sema (and potentially any other -// universally required data). class SyclKernelFieldHandler : public SyclKernelFieldHandlerBase { protected: SemaSYCL &SemaSYCLRef; @@ -1818,7 +1824,11 @@ void KernelObjVisitor::visitRecord(const CXXRecordDecl *Owner, ParentTy &Parent, // If this container requires decomposition, we have to visit it as // 'complex', so all handlers are called in this case with the 'complex' // case. + //RecordTy->dump(); visitComplexRecord(Owner, Parent, Wrapper, RecordTy, Handlers...); + // 'complex', so all handlers are called in this case with the 'complex' + // case. + //RecordTy->dump(); } else if (AnyTrue:: Value) { // We are currently in PointerHandler visitor. @@ -2141,31 +2151,14 @@ class SyclKernelFieldChecker : public SyclKernelFieldHandler { } bool enterStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - // TODO manipulate struct depth once special types are supported for free - // function kernels. - // ++StructFieldDepth; + ++StructFieldDepth; return true; } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType ParamTy) final { - // TODO manipulate struct depth once special types are supported for free - // function kernels. - // --StructFieldDepth; - // TODO We don't yet support special types and therefore structs that - // require decomposition and leaving/entering. Diagnose for better user - // experience. - CXXRecordDecl *RD = ParamTy->getAsCXXRecordDecl(); - if (RD->hasAttr()) { - Diag.Report(PD->getLocation(), - diag::err_bad_kernel_param_type) - << ParamTy; - Diag.Report(PD->getLocation(), - diag::note_free_function_kernel_param_type_not_supported) - << ParamTy; - IsInvalid = true; - } - return isValid(); + --StructFieldDepth; + return true; } bool enterStruct(const CXXRecordDecl *, const CXXBaseSpecifier &BS, @@ -2269,8 +2262,6 @@ class SyclKernelDecompMarker : public SyclKernelFieldHandler { } bool handleSyclSpecialType(ParmVarDecl *, QualType) final { - // TODO We don't support special types in free function kernel parameters, - // but track them to diagnose the case properly. CollectionStack.back() = true; return true; } @@ -2542,7 +2533,6 @@ class SyclKernelPointerHandler : public SyclKernelFieldHandler { bool enterStruct(const CXXRecordDecl *, ParmVarDecl *, QualType ParamTy) final { // TODO - unsupportedFreeFunctionParamType(); return true; } @@ -2563,7 +2553,6 @@ class SyclKernelPointerHandler : public SyclKernelFieldHandler { bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType ParamTy) final { // TODO - unsupportedFreeFunctionParamType(); return true; } @@ -2660,7 +2649,6 @@ class SyclKernelPointerHandler : public SyclKernelFieldHandler { bool handleNonDecompStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType ParamTy) final { // TODO - unsupportedFreeFunctionParamType(); return true; } @@ -2694,6 +2682,9 @@ class SyclKernelPointerHandler : public SyclKernelFieldHandler { class SyclKernelDeclCreator : public SyclKernelFieldHandler { FunctionDecl *KernelDecl = nullptr; llvm::SmallVector Params; + // Holds the last handled kernel struct parameter that contains a special type. + // Set in the enterStruct functions. + ParmVarDecl * CurrentStruct; Sema::ContextRAII FuncContext; // Holds the last handled field's first parameter. This doesn't store an // iterator as push_back invalidates iterators. @@ -2711,6 +2702,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { addParam(newParamDesc, ParamTy); } + void addParam(const CXXBaseSpecifier &BS, QualType FieldTy) { // TODO: There is no name for the base available, but duplicate names are // seemingly already possible, so we'll give them all the same name for now. @@ -2798,7 +2790,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { SourceLocation Loc) { handleAccessorPropertyList(Params.back(), RecordDecl, Loc); - // If "accessor" type check if read only + // If "accessor" type check if read only if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::accessor)) { // Get access mode of accessor. const auto *AccessorSpecializationDecl = @@ -2824,6 +2816,8 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { // lambda kernel by taking the value ParmVarDecl or FieldDecl respectively. template bool handleSpecialType(ParentDecl *decl, QualType Ty) { +std::cout << "Important one!" << std::endl; +Ty->dump(); const auto *RD = Ty->getAsCXXRecordDecl(); assert(RD && "The type must be a RecordDecl"); llvm::StringLiteral MethodName = @@ -2837,7 +2831,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { // (if any). size_t ParamIndex = Params.size(); for (const ParmVarDecl *Param : InitMethod->parameters()) { - QualType ParamTy = Param->getType(); + QualType ParamTy = Param->getType(); // For lambda kernels the arguments to the OpenCL kernel are named // based on the position they have as fields in the definition of the // special type structure i.e __arg_field1, __arg_field2 and so on. @@ -2863,6 +2857,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { handleAccessorType(Ty, RD, decl->getBeginLoc()); } LastParamIndex = ParamIndex; + std::cout << LastParamIndex << std::endl; return true; } @@ -2956,6 +2951,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { SYCLKernelAttr::CreateImplicit(SemaSYCLRef.getASTContext())); SemaSYCLRef.addSyclDeviceDecl(KernelDecl); + //KernelDecl->dump(); } bool enterStruct(const CXXRecordDecl *, FieldDecl *, QualType) final { @@ -2963,9 +2959,11 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { return true; } - bool enterStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - // TODO - // ++StructDepth; + bool enterStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType Ty) final { + ++StructDepth; + //StringRef Name = "_arg_struct"; + //addParam(Name, Ty); + //CurrentStruct = Params.back(); return true; } @@ -2975,8 +2973,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - // TODO - // --StructDepth; + --StructDepth; return true; } @@ -2992,6 +2989,15 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { return true; } + bool handleStructType(ParmVarDecl *PD, QualType Ty) final { + StringRef Name = "_arg_struct"; + addParam(Name, Ty); + CurrentStruct = Params.back(); + return true; + } + + bool handleStructType(FieldDecl *, QualType) final { return true; } + bool handleSyclSpecialType(const CXXRecordDecl *, const CXXBaseSpecifier &BS, QualType FieldTy) final { const auto *RecordDecl = FieldTy->getAsCXXRecordDecl(); @@ -3166,6 +3172,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { return ArrayRef(std::begin(Params) + LastParamIndex, std::end(Params)); } + ParmVarDecl *getParentStructForCurrentField() { return CurrentStruct; } }; // This Visitor traverses the AST of the function with @@ -3619,8 +3626,11 @@ class SyclKernelBodyCreator : public SyclKernelFieldHandler { SourceLocation LL = NewBody ? NewBody->getBeginLoc() : SourceLocation(); SourceLocation LR = NewBody ? NewBody->getEndLoc() : SourceLocation(); - return CompoundStmt::Create(SemaSYCLRef.getASTContext(), BodyStmts, + CompoundStmt::Create(SemaSYCLRef.getASTContext(), BodyStmts, + FPOptionsOverride(), LL, LR)->dumpPretty(SemaSYCLRef.getASTContext()); +return CompoundStmt::Create(SemaSYCLRef.getASTContext(), BodyStmts, FPOptionsOverride(), LL, LR); + } void annotateHierarchicalParallelismAPICalls() { @@ -4342,16 +4352,14 @@ class SyclKernelBodyCreator : public SyclKernelFieldHandler { class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { SyclKernelDeclCreator &DeclCreator; llvm::SmallVector BodyStmts; + llvm::SmallVector CurrentStructs; FunctionDecl *FreeFunc = nullptr; SourceLocation FreeFunctionSrcLoc; // Free function source location. llvm::SmallVector ArgExprs; - // Creates a DeclRefExpr to the ParmVar that represents the current free - // function parameter. - Expr *createParamReferenceExpr() { - ParmVarDecl *FreeFunctionParameter = - DeclCreator.getParamVarDeclsForCurrentField()[0]; - + // Creates a DeclRefExpr to the ParmVar that represents an arbitrary + // free function parameter + Expr *createParamReferenceExpr(ParmVarDecl *FreeFunctionParameter) { QualType FreeFunctionParamType = FreeFunctionParameter->getOriginalType(); Expr *DRE = SemaSYCLRef.SemaRef.BuildDeclRefExpr( FreeFunctionParameter, FreeFunctionParamType, VK_LValue, @@ -4360,6 +4368,14 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { return DRE; } + // Creates a DeclRefExpr to the ParmVar that represents the current free + // function parameter. + Expr *createParamReferenceExpr() { + ParmVarDecl *FreeFunctionParameter = + DeclCreator.getParamVarDeclsForCurrentField()[0]; + return createParamReferenceExpr(FreeFunctionParameter); + } + // Creates a DeclRefExpr to the ParmVar that represents the current pointer // parameter. Expr *createPointerParamReferenceExpr(QualType PointerTy) { @@ -4416,6 +4432,7 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { DRE = createReinterpretCastExpr( createGetAddressOf(DRE), SemaSYCLRef.getASTContext().getPointerType( OrigFunctionParameter->getType())); + DRE = createDerefOp(DRE); } @@ -4450,8 +4467,12 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { auto CallExpr = CallExpr::Create(Context, Fn, ArgExprs, ResultTy, VK, FreeFunctionSrcLoc, FPOptionsOverride()); BodyStmts.push_back(CallExpr); +CompoundStmt::Create(Context, BodyStmts, FPOptionsOverride(), {}, + {})->dumpPretty(Context); + return CompoundStmt::Create(Context, BodyStmts, FPOptionsOverride(), {}, {}); + } MemberExpr *buildMemberExpr(Expr *Base, ValueDecl *Member) { @@ -4468,15 +4489,17 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { void createSpecialMethodCall(const CXXRecordDecl *RD, StringRef MethodName, Expr *MemberBaseExpr, SmallVectorImpl &AddTo) { - CXXMethodDecl *Method = getMethodByName(RD, MethodName); +CXXMethodDecl *Method = getMethodByName(RD, MethodName); if (!Method) return; unsigned NumParams = Method->getNumParams(); llvm::SmallVector ParamDREs(NumParams); llvm::ArrayRef KernelParameters = DeclCreator.getParamVarDeclsForCurrentField(); + //std::cout << KernelParameters.size() << std::endl; for (size_t I = 0; I < NumParams; ++I) { QualType ParamType = KernelParameters[I]->getOriginalType(); + //ParamType->dump(); ParamDREs[I] = SemaSYCLRef.SemaRef.BuildDeclRefExpr( KernelParameters[I], ParamType, VK_LValue, FreeFunctionSrcLoc); } @@ -4495,7 +4518,7 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { public: static constexpr const bool VisitInsideSimpleContainers = false; - + FreeFunctionKernelBodyCreator(SemaSYCL &S, SyclKernelDeclCreator &DC, FunctionDecl *FF) : SyclKernelFieldHandler(S), DeclCreator(DC), FreeFunc(FF), @@ -4506,9 +4529,20 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { DeclCreator.setBody(KernelBody); } - bool handleSyclSpecialType(FieldDecl *FD, QualType Ty) final { - // TODO - unsupportedFreeFunctionParamType(); + bool handleSyclSpecialType(FieldDecl *FD, QualType FieldTy) final { + // Being inside this function means there is a struct parameter to the free + // function kernel that contains a special type. +std::cout << "Body!" << std::endl; +FieldTy->dump(); + ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); + // special_type_wrapper_map[ParentStruct->getType()] = true; + Expr *Base = createParamReferenceExpr(ParentStruct); + for (const auto &child : CurrentStructs) { + Base = buildMemberExpr(Base, child); + } + MemberExpr *MemberAccess = buildMemberExpr(Base, FD); + createSpecialMethodCall(FieldTy->getAsCXXRecordDecl(), InitMethodName, + MemberAccess, BodyStmts); return true; } @@ -4527,6 +4561,8 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { // wgm.__init(arg); // user_kernel(some arguments..., wgm, some arguments...); // } + std::cout << "Body!" << std::endl; + ParamTy->dump(); const auto *RecordDecl = ParamTy->getAsCXXRecordDecl(); AccessSpecifier DefaultConstructorAccess; auto DefaultConstructor = @@ -4559,8 +4595,8 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { BodyStmts.push_back(DS); Expr *MemberBaseExpr = SemaSYCLRef.SemaRef.BuildDeclRefExpr( SpecialObjectClone, ParamTy, VK_PRValue, FreeFunctionSrcLoc); - createSpecialMethodCall(RecordDecl, InitMethodName, MemberBaseExpr, - BodyStmts); + createSpecialMethodCall(RecordDecl, InitMethodName, MemberBaseExpr, + BodyStmts); ArgExprs.push_back(MemberBaseExpr); return true; } @@ -4636,26 +4672,24 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { } bool enterStruct(const CXXRecordDecl *RD, FieldDecl *FD, QualType Ty) final { - // TODO - unsupportedFreeFunctionParamType(); + CurrentStructs.push_back(FD); return true; } - bool enterStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); + bool enterStruct(const CXXRecordDecl *RD, ParmVarDecl *PD, + QualType Ty) final { return true; } bool leaveStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { - // TODO - unsupportedFreeFunctionParamType(); + CurrentStructs.pop_back(); return true; } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); + ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); + ArgExprs.push_back(SemaSYCLRef.SemaRef.BuildDeclRefExpr( + ParentStruct, ParentStruct->getType(), VK_PRValue, FreeFunctionSrcLoc)); return true; } @@ -4700,6 +4734,11 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { unsupportedFreeFunctionParamType(); return true; } + FieldDecl *getCurrentStruct() { + assert(CurrentStructs.size() && + "Current free function parameter is not inside a structure!"); + return CurrentStructs.back(); + } }; // Kernels are only the unnamed-lambda feature if the feature is enabled, AND @@ -4979,7 +5018,6 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { bool enterStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { // TODO - unsupportedFreeFunctionParamType(); return true; } @@ -4991,7 +5029,6 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { // TODO - unsupportedFreeFunctionParamType(); return true; } @@ -5488,22 +5525,25 @@ void SemaSYCL::constructFreeFunctionKernel(FunctionDecl *FD, StringRef NameStr) { if (!checkAndAddRegisteredKernelName(*this, FD, NameStr)) return; - SyclKernelArgsSizeChecker argsSizeChecker(*this, FD->getLocation(), false /*IsSIMDKernel*/); SyclKernelDeclCreator kernel_decl(*this, FD->getLocation(), FD->isInlined(), false /*IsSIMDKernel */, FD); - FreeFunctionKernelBodyCreator kernel_body(*this, kernel_decl, FD); - SyclKernelIntHeaderCreator int_header(*this, getSyclIntegrationHeader(), FD->getType(), FD); - SyclKernelIntFooterCreator int_footer(*this, getSyclIntegrationFooter()); KernelObjVisitor Visitor{*this}; - Visitor.VisitFunctionParameters(FD, argsSizeChecker, kernel_decl, kernel_body, - int_header, int_footer); + Visitor.VisitFunctionParameters(FD, argsSizeChecker); + +Visitor.VisitFunctionParameters(FD, kernel_decl); + +Visitor.VisitFunctionParameters(FD, kernel_body); + +Visitor.VisitFunctionParameters(FD, int_header); + +Visitor.VisitFunctionParameters(FD, int_footer); assert(getKernelFDPairs().back().first == FD && "OpenCL Kernel not found for free function entry"); @@ -6984,6 +7024,26 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { } } ParmListWithNamesOstream.flush(); + for (ParmVarDecl *Param : K.SyclKernel->parameters()) { + // if (FreeFunctionKernelBodyCreator::isSpecialTypeWrapper( + // Param->getType())) { + // this is a struct that contains a special type so its neither a + // special type nor a trivially copyable type. We therefore need to + // explicitly communicate to the runtime that this argument should be + // allowed as a free function kernel argument. We do this by defining + // a certain trait recognized by the runtime to be true. + O << "template <>\n"; + O << "struct " + "sycl::ext::oneapi::experimental::detail::is_explicitly_allowed_" + "arg<"; + Policy.SuppressTagKeyword = true; + + Param->getType().print(O, Policy); + Policy.SuppressTagKeyword = false; + O << "> {\n"; + O << " static constexpr bool value = true;\n};\n"; + //} + } FunctionTemplateDecl *FTD = K.SyclKernel->getPrimaryTemplate(); Policy.PrintCanonicalTypes = false; Policy.SuppressDefinition = true; @@ -7720,7 +7780,7 @@ StmtResult SemaSYCL::BuildSYCLKernelCallStmt(FunctionDecl *FD, OutlinedFunctionDeclBodyInstantiator OFDBodyInstantiator(SemaRef, ParmMap); Stmt *OFDBody = OFDBodyInstantiator.TransformStmt(Body).get(); - OFD->setBody(OFDBody); +OFD->setBody(OFDBody); OFD->setNothrow(); Stmt *NewBody = new (getASTContext()) SYCLKernelCallStmt(Body, OFD); diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index 2b5d1f4190d21..0ca1c234c9070 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -44,6 +44,16 @@ template struct is_kernel { template inline constexpr bool is_kernel_v = is_kernel::value; +namespace detail { +template struct is_explicitly_allowed_arg { + static constexpr bool value = false; +}; + +template +inline constexpr bool is_explicitly_allowed_arg_v = + is_explicitly_allowed_arg::value; + +} // namespace detail } // namespace ext::oneapi::experimental } // namespace _V1 } // namespace sycl diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index d7b304a130c83..54b093f05000a 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -1766,7 +1767,8 @@ class __SYCL_EXPORT handler { || (!is_same_type::value && std::is_pointer_v>) // USM || is_same_type::value // Interop - || is_same_type::value; // Stream + || is_same_type::value // Stream + || ext::oneapi::experimental::detail::is_explicitly_allowed_arg>::value; }; /// Sets argument for OpenCL interoperability kernels. From c87f239bf2855a4a689658d530845b7ca5966a6f Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 28 May 2025 07:47:38 -0700 Subject: [PATCH 002/105] Remove debugging statements and apply clang-format --- clang/lib/Sema/SemaSYCL.cpp | 86 ++++++------------- .../experimental/free_function_traits.hpp | 4 +- sycl/include/sycl/handler.hpp | 3 +- 3 files changed, 29 insertions(+), 64 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index b1a7b3cedf70f..a43894b19fd73 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -8,7 +8,6 @@ // This implements Semantic Analysis for SYCL constructs. //===----------------------------------------------------------------------===// -#include #include "clang/Sema/SemaSYCL.h" #include "TreeTransform.h" #include "clang/AST/AST.h" @@ -1409,13 +1408,13 @@ class KernelObjVisitor { template void visitComplexRecord(const CXXRecordDecl *Owner, ParentTy &Parent, const CXXRecordDecl *Wrapper, QualType RecordTy, - HandlerTys &...Handlers) { + HandlerTys &... Handlers) { (void)std::initializer_list{ (Handlers.enterStruct(Owner, Parent, RecordTy), 0)...}; VisitRecordHelper(Wrapper, Wrapper->bases(), Handlers...); - VisitRecordHelper(Wrapper, Wrapper->fields(), Handlers...), - (void)std::initializer_list{ - (Handlers.leaveStruct(Owner, Parent, RecordTy), 0)...}; + VisitRecordHelper(Wrapper, Wrapper->fields(), Handlers...); + (void)std::initializer_list{ + (Handlers.leaveStruct(Owner, Parent, RecordTy), 0)...}; } template @@ -1519,11 +1518,9 @@ class KernelObjVisitor { template void visitField(const CXXRecordDecl *Owner, FieldDecl *Field, - QualType FieldTy, HandlerTys &... Handlers) { + QualType FieldTy, HandlerTys &...Handlers) { if (isSyclSpecialType(FieldTy, SemaSYCLRef)) - { FieldTy->dump(); KF_FOR_EACH(handleSyclSpecialType, Field, FieldTy); -} else if (FieldTy->isStructureOrClassType()) { if (KF_FOR_EACH(handleStructType, Field, FieldTy)) { CXXRecordDecl *RD = FieldTy->getAsCXXRecordDecl(); @@ -1550,12 +1547,9 @@ class KernelObjVisitor { void visitParam(ParmVarDecl *Param, QualType ParamTy, HandlerTys &...Handlers) { if (isSyclSpecialType(ParamTy, SemaSYCLRef)) - {ParamTy->dump(); KP_FOR_EACH(handleSyclSpecialType, Param, ParamTy); -} else if (ParamTy->isStructureOrClassType()) { if (KP_FOR_EACH(handleStructType, Param, ParamTy)) { - ParamTy->dump(); CXXRecordDecl *RD = ParamTy->getAsCXXRecordDecl(); visitRecord(nullptr, Param, RD, ParamTy, Handlers...); } @@ -1634,12 +1628,8 @@ class KernelObjVisitor { template void VisitFunctionParameters(FunctionDecl *FreeFunc, HandlerTys &...Handlers) { - for (ParmVarDecl *Param : FreeFunc->parameters()) { -std::cout << "starting!" << std::endl; -Param->getType()->dump(); + for (ParmVarDecl *Param : FreeFunc->parameters()) visitParam(Param, Param->getType(), Handlers...); -std::cout << "ending!" << std::endl; -} } #undef KF_FOR_EACH @@ -1762,6 +1752,10 @@ class SyclKernelFieldHandlerBase { virtual ~SyclKernelFieldHandlerBase() = default; }; + +// A class to act as the direct base for all the SYCL OpenCL Kernel construction +// tasks that contains a reference to Sema (and potentially any other +// universally required data). class SyclKernelFieldHandler : public SyclKernelFieldHandlerBase { protected: SemaSYCL &SemaSYCLRef; @@ -1845,11 +1839,7 @@ void KernelObjVisitor::visitRecord(const CXXRecordDecl *Owner, ParentTy &Parent, // If this container requires decomposition, we have to visit it as // 'complex', so all handlers are called in this case with the 'complex' // case. - //RecordTy->dump(); visitComplexRecord(Owner, Parent, Wrapper, RecordTy, Handlers...); - // 'complex', so all handlers are called in this case with the 'complex' - // case. - //RecordTy->dump(); } else if (AnyTrue:: Value) { // We are currently in PointerHandler visitor. @@ -2723,7 +2713,6 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { addParam(newParamDesc, ParamTy); } - void addParam(const CXXBaseSpecifier &BS, QualType FieldTy) { // TODO: There is no name for the base available, but duplicate names are // seemingly already possible, so we'll give them all the same name for now. @@ -2811,7 +2800,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { SourceLocation Loc) { handleAccessorPropertyList(Params.back(), RecordDecl, Loc); - // If "accessor" type check if read only + // If "accessor" type check if read only if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::accessor)) { // Get access mode of accessor. const auto *AccessorSpecializationDecl = @@ -2837,8 +2826,6 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { // lambda kernel by taking the value ParmVarDecl or FieldDecl respectively. template bool handleSpecialType(ParentDecl *decl, QualType Ty) { -std::cout << "Important one!" << std::endl; -Ty->dump(); const auto *RD = Ty->getAsCXXRecordDecl(); assert(RD && "The type must be a RecordDecl"); llvm::StringLiteral MethodName = @@ -2852,7 +2839,7 @@ Ty->dump(); // (if any). size_t ParamIndex = Params.size(); for (const ParmVarDecl *Param : InitMethod->parameters()) { - QualType ParamTy = Param->getType(); + QualType ParamTy = Param->getType(); // For lambda kernels the arguments to the OpenCL kernel are named // based on the position they have as fields in the definition of the // special type structure i.e __arg_field1, __arg_field2 and so on. @@ -2878,7 +2865,6 @@ Ty->dump(); handleAccessorType(Ty, RD, decl->getBeginLoc()); } LastParamIndex = ParamIndex; - std::cout << LastParamIndex << std::endl; return true; } @@ -2972,7 +2958,6 @@ Ty->dump(); SYCLKernelAttr::CreateImplicit(SemaSYCLRef.getASTContext())); SemaSYCLRef.addSyclDeviceDecl(KernelDecl); - //KernelDecl->dump(); } bool enterStruct(const CXXRecordDecl *, FieldDecl *, QualType) final { @@ -2982,9 +2967,6 @@ Ty->dump(); bool enterStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType Ty) final { ++StructDepth; - //StringRef Name = "_arg_struct"; - //addParam(Name, Ty); - //CurrentStruct = Params.back(); return true; } @@ -3647,11 +3629,8 @@ class SyclKernelBodyCreator : public SyclKernelFieldHandler { SourceLocation LL = NewBody ? NewBody->getBeginLoc() : SourceLocation(); SourceLocation LR = NewBody ? NewBody->getEndLoc() : SourceLocation(); - CompoundStmt::Create(SemaSYCLRef.getASTContext(), BodyStmts, - FPOptionsOverride(), LL, LR)->dumpPretty(SemaSYCLRef.getASTContext()); -return CompoundStmt::Create(SemaSYCLRef.getASTContext(), BodyStmts, + return CompoundStmt::Create(SemaSYCLRef.getASTContext(), BodyStmts, FPOptionsOverride(), LL, LR); - } void annotateHierarchicalParallelismAPICalls() { @@ -4453,7 +4432,6 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { DRE = createReinterpretCastExpr( createGetAddressOf(DRE), SemaSYCLRef.getASTContext().getPointerType( OrigFunctionParameter->getType())); - DRE = createDerefOp(DRE); } @@ -4488,12 +4466,8 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { auto CallExpr = CallExpr::Create(Context, Fn, ArgExprs, ResultTy, VK, FreeFunctionSrcLoc, FPOptionsOverride()); BodyStmts.push_back(CallExpr); -CompoundStmt::Create(Context, BodyStmts, FPOptionsOverride(), {}, - {})->dumpPretty(Context); - return CompoundStmt::Create(Context, BodyStmts, FPOptionsOverride(), {}, {}); - } MemberExpr *buildMemberExpr(Expr *Base, ValueDecl *Member) { @@ -4510,17 +4484,15 @@ CompoundStmt::Create(Context, BodyStmts, FPOptionsOverride(), {}, void createSpecialMethodCall(const CXXRecordDecl *RD, StringRef MethodName, Expr *MemberBaseExpr, SmallVectorImpl &AddTo) { -CXXMethodDecl *Method = getMethodByName(RD, MethodName); + CXXMethodDecl *Method = getMethodByName(RD, MethodName); if (!Method) return; unsigned NumParams = Method->getNumParams(); llvm::SmallVector ParamDREs(NumParams); llvm::ArrayRef KernelParameters = DeclCreator.getParamVarDeclsForCurrentField(); - //std::cout << KernelParameters.size() << std::endl; for (size_t I = 0; I < NumParams; ++I) { QualType ParamType = KernelParameters[I]->getOriginalType(); - //ParamType->dump(); ParamDREs[I] = SemaSYCLRef.SemaRef.BuildDeclRefExpr( KernelParameters[I], ParamType, VK_LValue, FreeFunctionSrcLoc); } @@ -4539,7 +4511,7 @@ CXXMethodDecl *Method = getMethodByName(RD, MethodName); public: static constexpr const bool VisitInsideSimpleContainers = false; - + FreeFunctionKernelBodyCreator(SemaSYCL &S, SyclKernelDeclCreator &DC, FunctionDecl *FF) : SyclKernelFieldHandler(S), DeclCreator(DC), FreeFunc(FF), @@ -4553,8 +4525,6 @@ CXXMethodDecl *Method = getMethodByName(RD, MethodName); bool handleSyclSpecialType(FieldDecl *FD, QualType FieldTy) final { // Being inside this function means there is a struct parameter to the free // function kernel that contains a special type. -std::cout << "Body!" << std::endl; -FieldTy->dump(); ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); // special_type_wrapper_map[ParentStruct->getType()] = true; Expr *Base = createParamReferenceExpr(ParentStruct); @@ -4582,8 +4552,6 @@ FieldTy->dump(); // wgm.__init(arg); // user_kernel(some arguments..., wgm, some arguments...); // } - std::cout << "Body!" << std::endl; - ParamTy->dump(); const auto *RecordDecl = ParamTy->getAsCXXRecordDecl(); AccessSpecifier DefaultConstructorAccess; auto DefaultConstructor = @@ -4616,8 +4584,8 @@ FieldTy->dump(); BodyStmts.push_back(DS); Expr *MemberBaseExpr = SemaSYCLRef.SemaRef.BuildDeclRefExpr( SpecialObjectClone, ParamTy, VK_PRValue, FreeFunctionSrcLoc); - createSpecialMethodCall(RecordDecl, InitMethodName, MemberBaseExpr, - BodyStmts); + createSpecialMethodCall(RecordDecl, InitMethodName, MemberBaseExpr, + BodyStmts); ArgExprs.push_back(MemberBaseExpr); return true; } @@ -5556,27 +5524,23 @@ void SemaSYCL::constructFreeFunctionKernel(FunctionDecl *FD, StringRef NameStr) { if (!checkAndAddRegisteredKernelName(*this, FD, NameStr)) return; + SyclKernelArgsSizeChecker argsSizeChecker(*this, FD->getLocation(), false /*IsSIMDKernel*/); SyclKernelDeclCreator kernel_decl(*this, FD->getLocation(), FD->isInlined(), false /*IsSIMDKernel */, FD); + FreeFunctionKernelBodyCreator kernel_body(*this, kernel_decl, FD); + SyclKernelIntHeaderCreator int_header(*this, getSyclIntegrationHeader(), FD->getType(), FD); + SyclKernelIntFooterCreator int_footer(*this, getSyclIntegrationFooter()); KernelObjVisitor Visitor{*this}; - Visitor.VisitFunctionParameters(FD, argsSizeChecker); - -Visitor.VisitFunctionParameters(FD, kernel_decl); - -Visitor.VisitFunctionParameters(FD, kernel_body); - -Visitor.VisitFunctionParameters(FD, int_header); - -Visitor.VisitFunctionParameters(FD, int_footer); - - assert(getKernelFDPairs().back().first == FD && + Visitor.VisitFunctionParameters(FD, argsSizeChecker, kernel_decl, kernel_body, int_header, int_footer); + +assert(getKernelFDPairs().back().first == FD && "OpenCL Kernel not found for free function entry"); // Register the kernel name with the OpenCL kernel generated for the // free function. @@ -7812,7 +7776,7 @@ StmtResult SemaSYCL::BuildSYCLKernelCallStmt(FunctionDecl *FD, OutlinedFunctionDeclBodyInstantiator OFDBodyInstantiator(SemaRef, ParmMap); Stmt *OFDBody = OFDBodyInstantiator.TransformStmt(Body).get(); -OFD->setBody(OFDBody); + OFD->setBody(OFDBody); OFD->setNothrow(); Stmt *NewBody = new (getASTContext()) SYCLKernelCallStmt(Body, OFD); diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index 0ca1c234c9070..c564d6239ec80 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -46,11 +46,11 @@ inline constexpr bool is_kernel_v = is_kernel::value; namespace detail { template struct is_explicitly_allowed_arg { - static constexpr bool value = false; + static constexpr bool value = false; }; template -inline constexpr bool is_explicitly_allowed_arg_v = +inline constexpr bool is_explicitly_allowed_arg_v = is_explicitly_allowed_arg::value; } // namespace detail diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 3506d1f34f493..f4935fe5d3e46 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -1817,7 +1817,8 @@ class __SYCL_EXPORT handler { std::is_pointer_v>) // USM || is_same_type::value // Interop || is_same_type::value // Stream - || ext::oneapi::experimental::detail::is_explicitly_allowed_arg>::value; + || ext::oneapi::experimental::detail::is_explicitly_allowed_arg< + remove_cv_ref_t>::value; }; /// Sets argument for OpenCL interoperability kernels. From 6255cf25017fb57c6a3129fbeb60a67d3f3a69fb Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 28 May 2025 07:48:24 -0700 Subject: [PATCH 003/105] Remove debugging statements and apply clang-format --- clang/lib/Sema/SemaSYCL.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index a43894b19fd73..6da3f8fab2f28 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -1518,7 +1518,7 @@ class KernelObjVisitor { template void visitField(const CXXRecordDecl *Owner, FieldDecl *Field, - QualType FieldTy, HandlerTys &...Handlers) { + QualType FieldTy, HandlerTys &... Handlers) { if (isSyclSpecialType(FieldTy, SemaSYCLRef)) KF_FOR_EACH(handleSyclSpecialType, Field, FieldTy); else if (FieldTy->isStructureOrClassType()) { From 4de6a524801110392755f681548e7d9f61bb1b6d Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 28 May 2025 07:49:21 -0700 Subject: [PATCH 004/105] Remove debugging statements and apply clang-format --- clang/lib/Sema/SemaSYCL.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 6da3f8fab2f28..b9cb7bff98577 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -5540,7 +5540,7 @@ void SemaSYCL::constructFreeFunctionKernel(FunctionDecl *FD, Visitor.VisitFunctionParameters(FD, argsSizeChecker, kernel_decl, kernel_body, int_header, int_footer); -assert(getKernelFDPairs().back().first == FD && + assert(getKernelFDPairs().back().first == FD && "OpenCL Kernel not found for free function entry"); // Register the kernel name with the OpenCL kernel generated for the // free function. From 5800d46725b615cf20dd680428893389db0f48f9 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 28 May 2025 07:51:01 -0700 Subject: [PATCH 005/105] Remove TODO statements from code --- clang/lib/Sema/SemaSYCL.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index b9cb7bff98577..f628132db4f08 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -2543,7 +2543,6 @@ class SyclKernelPointerHandler : public SyclKernelFieldHandler { bool enterStruct(const CXXRecordDecl *, ParmVarDecl *, QualType ParamTy) final { - // TODO return true; } @@ -2563,7 +2562,6 @@ class SyclKernelPointerHandler : public SyclKernelFieldHandler { bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType ParamTy) final { - // TODO return true; } @@ -2659,7 +2657,6 @@ class SyclKernelPointerHandler : public SyclKernelFieldHandler { bool handleNonDecompStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType ParamTy) final { - // TODO return true; } @@ -5016,7 +5013,6 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { } bool enterStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - // TODO return true; } @@ -5027,7 +5023,6 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - // TODO return true; } From d1d43f185634882eea3cd68b3f174af9a770291a Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Tue, 3 Jun 2025 11:45:42 -0700 Subject: [PATCH 006/105] Wrapped speaicl types support --- clang/include/clang/Sema/SemaSYCL.h | 9 +- clang/lib/Sema/SemaSYCL.cpp | 279 +++++++++++++++--- .../experimental/free_function_traits.hpp | 9 +- sycl/include/sycl/handler.hpp | 35 ++- sycl/source/detail/scheduler/commands.cpp | 2 + sycl/source/handler.cpp | 7 +- .../free_function_special_types.cpp | 70 +++-- 7 files changed, 337 insertions(+), 74 deletions(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index 8aac24b8d0079..5dabb01abac20 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -65,7 +65,8 @@ class SYCLIntegrationHeader { kind_work_group_memory, kind_dynamic_work_group_memory, kind_dynamic_accessor, - kind_last = kind_dynamic_accessor + kind_special_type_wrapper, + kind_last = kind_special_type_wrapper }; public: @@ -118,6 +119,9 @@ class SYCLIntegrationHeader { /// integration header is required. void addHostPipeRegistration() { NeedToEmitHostPipeRegistration = true; } +void addFreeFunctionParamDecomposition(QualType Ty, MemberExpr *expr) { + DecompositionMap[Ty.getAsOpaquePtr()].push_back(expr); +} private: // Kernel actual parameter descriptor. struct KernelParamDesc { @@ -183,7 +187,6 @@ class SYCLIntegrationHeader { return KernelDescs.size() > 0 ? &KernelDescs[KernelDescs.size() - 1] : nullptr; } - private: /// Keeps invocation descriptors for each kernel invocation started by /// SYCLIntegrationHeader::startKernel @@ -205,6 +208,8 @@ class SYCLIntegrationHeader { /// Keeps track of whether declaration of __sycl_host_pipe_registration /// type and __sycl_host_pipe_registrar variable are required to emit. bool NeedToEmitHostPipeRegistration = false; + + llvm::DenseMap> DecompositionMap; }; class SYCLIntegrationFooter { diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index f628132db4f08..425eab478d775 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -2634,8 +2634,6 @@ class SyclKernelPointerHandler : public SyclKernelFieldHandler { } bool handleScalarType(ParmVarDecl *PD, QualType ParamTy) final { - // TODO - unsupportedFreeFunctionParamType(); return true; } @@ -2843,9 +2841,6 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { // For free function kernels the arguments are named in direct mapping // with the names they have in the __init method i.e __arg_Ptr for work // group memory since its init function takes a parameter with Ptr name. - if constexpr (std::is_same_v) - addParam(decl, ParamTy.getCanonicalType()); - else addParam(Param, ParamTy.getCanonicalType()); // Propagate add_ir_attributes_kernel_parameter attribute. if (const auto *AddIRAttr = @@ -2955,6 +2950,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { SYCLKernelAttr::CreateImplicit(SemaSYCLRef.getASTContext())); SemaSYCLRef.addSyclDeviceDecl(KernelDecl); + KernelDecl->dump(); } bool enterStruct(const CXXRecordDecl *, FieldDecl *, QualType) final { @@ -2990,7 +2986,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { } bool handleStructType(ParmVarDecl *PD, QualType Ty) final { - StringRef Name = "_arg_struct"; + StringRef Name = "_arg_struct"; addParam(Name, Ty); CurrentStruct = Params.back(); return true; @@ -4349,6 +4345,10 @@ class SyclKernelBodyCreator : public SyclKernelFieldHandler { class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { SyclKernelDeclCreator &DeclCreator; llvm::SmallVector BodyStmts; + // Keep track of the structs we have encountered on our way to a special type. + // They will be needed to properly generate the __init call. Note that the + // top-level struct parameter is not kept track here because that is done by + // the DeclCreator. llvm::SmallVector CurrentStructs; FunctionDecl *FreeFunc = nullptr; SourceLocation FreeFunctionSrcLoc; // Free function source location. @@ -4516,15 +4516,15 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { ~FreeFunctionKernelBodyCreator() { CompoundStmt *KernelBody = createFreeFunctionKernelBody(); + KernelBody->dumpPretty(SemaSYCLRef.SemaRef.getASTContext()); DeclCreator.setBody(KernelBody); } bool handleSyclSpecialType(FieldDecl *FD, QualType FieldTy) final { // Being inside this function means there is a struct parameter to the free // function kernel that contains a special type. - ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); - // special_type_wrapper_map[ParentStruct->getType()] = true; - Expr *Base = createParamReferenceExpr(ParentStruct); + //ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); + Expr *Base = ArgExprs.back(); for (const auto &child : CurrentStructs) { Base = buildMemberExpr(Base, child); } @@ -4634,8 +4634,6 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { } bool handleScalarType(FieldDecl *FD, QualType FieldTy) final { - // TODO - unsupportedFreeFunctionParamType(); return true; } @@ -4663,8 +4661,41 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { } bool enterStruct(const CXXRecordDecl *RD, ParmVarDecl *PD, - QualType Ty) final { - return true; + QualType ParamTy) final { + const auto *RecordDecl = ParamTy->getAsCXXRecordDecl(); + AccessSpecifier DefaultConstructorAccess; + auto DefaultConstructor = + std::find_if(RecordDecl->ctor_begin(), RecordDecl->ctor_end(), + [](auto it) { return it->isDefaultConstructor(); }); + DefaultConstructorAccess = DefaultConstructor->getAccess(); + DefaultConstructor->setAccess(AS_public); + + ASTContext &Ctx = SemaSYCLRef.SemaRef.getASTContext(); + VarDecl *SpecialObjectClone = + VarDecl::Create(Ctx, DeclCreator.getKernelDecl(), FreeFunctionSrcLoc, + FreeFunctionSrcLoc, PD->getIdentifier(), ParamTy, + Ctx.getTrivialTypeSourceInfo(ParamTy), SC_None); + InitializedEntity VarEntity = + InitializedEntity::InitializeVariable(SpecialObjectClone); + InitializationKind InitKind = + InitializationKind::CreateDefault(FreeFunctionSrcLoc); + InitializationSequence InitSeq(SemaSYCLRef.SemaRef, VarEntity, InitKind, + std::nullopt); + ExprResult Init = + InitSeq.Perform(SemaSYCLRef.SemaRef, VarEntity, InitKind, std::nullopt); + SpecialObjectClone->setInit( + SemaSYCLRef.SemaRef.MaybeCreateExprWithCleanups(Init.get())); + SpecialObjectClone->setInitStyle(VarDecl::CallInit); + DefaultConstructor->setAccess(DefaultConstructorAccess); + + Stmt *DS = new (SemaSYCLRef.getASTContext()) + DeclStmt(DeclGroupRef(SpecialObjectClone), FreeFunctionSrcLoc, + FreeFunctionSrcLoc); + BodyStmts.push_back(DS); + Expr *MemberBaseExpr = SemaSYCLRef.SemaRef.BuildDeclRefExpr( + SpecialObjectClone, ParamTy, VK_PRValue, FreeFunctionSrcLoc); + ArgExprs.push_back(MemberBaseExpr); +return true; } bool leaveStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { @@ -4673,9 +4704,9 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); - ArgExprs.push_back(SemaSYCLRef.SemaRef.BuildDeclRefExpr( - ParentStruct, ParentStruct->getType(), VK_PRValue, FreeFunctionSrcLoc)); + //ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); + //ArgExprs.push_back(SemaSYCLRef.SemaRef.BuildDeclRefExpr( + // ParentStruct, ParentStruct->getType(), VK_PRValue, FreeFunctionSrcLoc)); return true; } @@ -4727,6 +4758,153 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { } }; +class FreeFunctionKernelParamDecomposer : public SyclKernelFieldHandler { + ParmVarDecl *TopLevelStruct; + llvm::SmallVector CurrentStructs; + SourceLocation FreeFunctionSrcLoc; + FunctionDecl *FreeFunction; + SYCLIntegrationHeader &H; + SyclKernelDeclCreator &DeclCreator; + + // Creates a DeclRefExpr to the ParmVar that represents an arbitrary + // free function parameter + Expr *createParamReferenceExpr(ParmVarDecl *FreeFunctionParameter) { + QualType FreeFunctionParamType = FreeFunctionParameter->getOriginalType(); + Expr *DRE = SemaSYCLRef.SemaRef.BuildDeclRefExpr( + FreeFunctionParameter, FreeFunctionParamType, VK_LValue, + FreeFunctionSrcLoc); + DRE = SemaSYCLRef.SemaRef.DefaultLvalueConversion(DRE).get(); + return DRE; + } + + MemberExpr *buildMemberExpr(Expr *Base, ValueDecl *Member) { + return MemberExpr::CreateImplicit( + SemaSYCLRef.getASTContext(), Base, /*IsArrow */ false, Member, + Member->getType(), VK_LValue, OK_Ordinary); + } + +public: + static constexpr const bool VisitInsideSimpleContainers = false; + + FreeFunctionKernelParamDecomposer(SemaSYCL &S, SYCLIntegrationHeader &Header, FunctionDecl *FF, SyclKernelDeclCreator &DC) + : SyclKernelFieldHandler(S), FreeFunctionSrcLoc(FF->getLocation()), FreeFunction(FF), H(Header), DeclCreator(DC) {} + +bool handleSyclSpecialType(ParmVarDecl *, QualType) final { return true; } + + bool handleSyclSpecialType(FieldDecl *FD, QualType Ty) final { + ParmVarDecl * ParentStruct = DeclCreator.getParentStructForCurrentField(); + Expr *Base = createParamReferenceExpr(ParentStruct); + for (const auto &child : CurrentStructs) { + Base = buildMemberExpr(Base, child); + } + MemberExpr *MemberAccess = buildMemberExpr(Base, FD); + H.addFreeFunctionParamDecomposition(TopLevelStruct->getType(), MemberAccess); + return true; + } + + bool enterStruct(const CXXRecordDecl *RD, FieldDecl *FD, QualType Ty) final { + CurrentStructs.push_back(FD); + return true; + } + bool leaveStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { + CurrentStructs.pop_back(); + return true; + } + bool enterStruct(const CXXRecordDecl *RD, ParmVarDecl *PD, + QualType Ty) final { + TopLevelStruct = PD; + return true; + } + +bool handleSyclSpecialType(const CXXRecordDecl *, const CXXBaseSpecifier &BS, + QualType Ty) final { + return true; + } + + bool handlePointerType(FieldDecl *FD, QualType FieldTy) final { + return true; + } + + bool handlePointerType(ParmVarDecl *PD, QualType ParamTy) final { + return true; + } + + bool handleSimpleArrayType(FieldDecl *FD, QualType FieldTy) final { + return true; + } + + bool handleNonDecompStruct(const CXXRecordDecl *, FieldDecl *FD, + QualType Ty) final { + return true; + } + + bool handleNonDecompStruct(const CXXRecordDecl *, ParmVarDecl *PD, + QualType) final { + return true; + } + + bool handleNonDecompStruct(const CXXRecordDecl *RD, + const CXXBaseSpecifier &BS, QualType Ty) final { + return true; + } + + bool handleScalarType(FieldDecl *FD, QualType FieldTy) final { + ParmVarDecl * ParentStruct = DeclCreator.getParentStructForCurrentField(); + Expr *Base = createParamReferenceExpr(ParentStruct); + for (const auto &child : CurrentStructs) { + Base = buildMemberExpr(Base, child); + } + MemberExpr *MemberAccess = buildMemberExpr(Base, FD); + H.addFreeFunctionParamDecomposition(TopLevelStruct->getType(), MemberAccess); + return true; + } + + bool handleScalarType(ParmVarDecl *, QualType) final { + return true; + } + + bool handleUnionType(FieldDecl *FD, QualType FieldTy) final { + return true; + } + + bool handleUnionType(ParmVarDecl *, QualType) final { + return true; + } + bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *FD, QualType Ty) final { + return true; + } + + bool enterStruct(const CXXRecordDecl *RD, const CXXBaseSpecifier &BS, + QualType) final { + return true; + } + + bool leaveStruct(const CXXRecordDecl *RD, const CXXBaseSpecifier &BS, + QualType) final { + return true; + } + + bool enterArray(FieldDecl *FD, QualType ArrayType, + QualType ElementType) final { + return true; + } + + bool enterArray(ParmVarDecl *PD, QualType ArrayType, + QualType ElementType) final { + return true; + } + + bool leaveArray(FieldDecl *FD, QualType ArrayType, + QualType ElementType) final { + return true; + } + + bool leaveArray(ParmVarDecl *PD, QualType ArrayType, + QualType ElementType) final { + return true; + } +}; + // Kernels are only the unnamed-lambda feature if the feature is enabled, AND // the first template argument has been corrected by the library to match the // functor type. @@ -5012,7 +5190,8 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { return true; } - bool enterStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { + bool enterStruct(const CXXRecordDecl *, ParmVarDecl * PD, QualType Ty) final { + addParam(PD, Ty, SYCLIntegrationHeader::kind_std_layout); return true; } @@ -5527,14 +5706,16 @@ void SemaSYCL::constructFreeFunctionKernel(FunctionDecl *FD, FreeFunctionKernelBodyCreator kernel_body(*this, kernel_decl, FD); - SyclKernelIntHeaderCreator int_header(*this, getSyclIntegrationHeader(), - FD->getType(), FD); + FreeFunctionKernelParamDecomposer decomposer(*this, getSyclIntegrationHeader(), FD, kernel_decl); + + SyclKernelIntHeaderCreator int_header(*this, getSyclIntegrationHeader(), FD->getType(), FD); SyclKernelIntFooterCreator int_footer(*this, getSyclIntegrationFooter()); KernelObjVisitor Visitor{*this}; - Visitor.VisitFunctionParameters(FD, argsSizeChecker, kernel_decl, kernel_body, int_header, int_footer); - + Visitor.VisitFunctionParameters(FD, argsSizeChecker, kernel_decl, kernel_body, decomposer, + int_header, int_footer); + assert(getKernelFDPairs().back().first == FD && "OpenCL Kernel not found for free function entry"); // Register the kernel name with the OpenCL kernel generated for the @@ -6068,6 +6249,7 @@ static const char *paramKind2Str(KernelParamKind K) { CASE(work_group_memory); CASE(dynamic_work_group_memory); CASE(dynamic_accessor); + CASE(special_type_wrapper); } return ""; @@ -6710,6 +6892,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << "#include \n"; O << "#include \n"; O << "#include \n"; + O << "#include \n"; O << "\n"; LangOptions LO; @@ -7016,25 +7199,45 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { } ParmListWithNamesOstream.flush(); for (ParmVarDecl *Param : K.SyclKernel->parameters()) { - // if (FreeFunctionKernelBodyCreator::isSpecialTypeWrapper( - // Param->getType())) { - // this is a struct that contains a special type so its neither a - // special type nor a trivially copyable type. We therefore need to - // explicitly communicate to the runtime that this argument should be - // allowed as a free function kernel argument. We do this by defining - // a certain trait recognized by the runtime to be true. - O << "template <>\n"; - O << "struct " - "sycl::ext::oneapi::experimental::detail::is_explicitly_allowed_" - "arg<"; - Policy.SuppressTagKeyword = true; + if (DecompositionMap.count(Param->getType().getAsOpaquePtr())) { + // this is a struct that contains a special type so its neither a + // special type nor a trivially copyable type. We therefore need to + // explicitly communicate to the runtime that this argument should be + // allowed as a free function kernel argument. We do this by defining + // a certain trait recognized by the runtime to be true. + O << "template <>\n"; + O << "struct " + "sycl::ext::oneapi::experimental::detail::is_special_type_" + "wrapper<"; + Policy.SuppressTagKeyword = true; - Param->getType().print(O, Policy); - Policy.SuppressTagKeyword = false; - O << "> {\n"; - O << " static constexpr bool value = true;\n};\n"; - //} + Param->getType().print(O, Policy); + O << "> {\n"; + O << " inline static constexpr bool value = true;\n};\n\n"; + O << " namespace sycl { inline namespace _V1 { namespace ext { namespace oneapi { namespace " + "experimental { namespace detail { \n"; + O << "template <> struct special_type_wrapper_info<"; + Param->getType().print(O, Policy); + O << "> {\n"; + O << "template< typename DataT, typename HandlerT, typename = " + "std::enable_if_t, "; + Param->getType().print(O, Policy); + O << ">>>\n"; + O << "static void set_arg(int ArgIndex, DataT& "; + O << "_arg_struct"; + O << ", HandlerT& cgh, int &Shift) {\n"; + for (const MemberExpr *wrappedSpecialType : + DecompositionMap[Param->getType().getAsOpaquePtr()]) { + O << " cgh.set_arg(ArgIndex, "; + wrappedSpecialType->printPretty(O, nullptr, Policy); + O << ");\n"; + O << " ++ArgIndex;\n"; + } + O << " Shift = " << DecompositionMap[Param->getType().getAsOpaquePtr()].size() << ";\n"; + O << "}\n };\n} // namespace detail \n} // namespace experimental \n} // namespace oneapi \n} // namespace ext \n} // namespace _V1\n} //namespace sycl\n"; + } } + Policy.SuppressTagKeyword = false; FunctionTemplateDecl *FTD = K.SyclKernel->getPrimaryTemplate(); Policy.PrintAsCanonical = false; Policy.SuppressDefinition = true; diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index c564d6239ec80..c6489c70009d0 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -7,6 +7,8 @@ //===----------------------------------------------------------------------===// #pragma once +#include +#include namespace sycl { inline namespace _V1 { @@ -45,13 +47,12 @@ template inline constexpr bool is_kernel_v = is_kernel::value; namespace detail { -template struct is_explicitly_allowed_arg { - static constexpr bool value = false; +template struct is_special_type_wrapper { + inline static constexpr bool value = false; }; template -inline constexpr bool is_explicitly_allowed_arg_v = - is_explicitly_allowed_arg::value; +struct special_type_wrapper_info {}; } // namespace detail } // namespace ext::oneapi::experimental diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index f4935fe5d3e46..30e484c007992 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #pragma once - +#include #include #include #include @@ -36,7 +36,6 @@ #include #include #include -#include #include #include #include @@ -163,6 +162,10 @@ __SYCL_EXPORT void *async_malloc_from_pool(sycl::handler &h, size_t size, } // namespace ext::oneapi::experimental namespace ext::oneapi::experimental::detail { +template +struct is_special_type_wrapper; +template +struct special_type_wrapper_info; class dynamic_parameter_base; class dynamic_work_group_memory_base; class dynamic_local_accessor_base; @@ -666,6 +669,7 @@ class __SYCL_EXPORT handler { void setArgHelper(int ArgIndex, detail::work_group_memory_impl &Arg); + // setArgHelper for non local accessor argument. template @@ -673,6 +677,7 @@ class __SYCL_EXPORT handler { setArgHelper( int ArgIndex, accessor &&Arg) { + std::cout << "Called accessor " << ArgIndex << std::endl; detail::AccessorBaseHost *AccBase = (detail::AccessorBaseHost *)&Arg; const detail::AccessorImplPtr &AccImpl = detail::getSyclObjImpl(*AccBase); detail::AccessorImplHost *Req = AccImpl.get(); @@ -683,7 +688,7 @@ class __SYCL_EXPORT handler { template void setArgHelper(int ArgIndex, T &&Arg) { void *StoredArg = storePlainArg(Arg); - + std::cout << "Called " << ArgIndex << std::endl; if (!std::is_same::value && std::is_pointer::value) { addArg(detail::kernel_param_kind_t::kind_pointer, StoredArg, sizeof(T), ArgIndex); @@ -1816,9 +1821,7 @@ class __SYCL_EXPORT handler { || (!is_same_type::value && std::is_pointer_v>) // USM || is_same_type::value // Interop - || is_same_type::value // Stream - || ext::oneapi::experimental::detail::is_explicitly_allowed_arg< - remove_cv_ref_t>::value; + || is_same_type::value; // Stream }; /// Sets argument for OpenCL interoperability kernels. @@ -1838,7 +1841,7 @@ class __SYCL_EXPORT handler { void set_arg(int ArgIndex, accessor Arg) { - setArgHelper(ArgIndex, std::move(Arg)); + setArgHelper(ArgIndex, std::move(Arg)); } template @@ -1856,6 +1859,19 @@ class __SYCL_EXPORT handler { setArgHelper(ArgIndex, ArgImpl); } + template + typename std::enable_if_t< + ext::oneapi::experimental::detail::is_special_type_wrapper< + remove_cv_ref_t>::value, + void> + set_arg(int ArgIndex, T &Arg) { + setArgHelper(ArgIndex, Arg); + int Shift; + ext::oneapi::experimental::detail::special_type_wrapper_info< + remove_cv_ref_t>::template set_arg(ArgIndex + 1, Arg, *this, Shift); + MArgShift += Shift; + } + // set_arg for graph dynamic_parameters template void set_arg(int argIndex, @@ -3386,6 +3402,8 @@ class __SYCL_EXPORT handler { bool MIsFinalized = false; event MLastEvent; + int MArgShift = 0; + // Make queue_impl class friend to be able to call finalize method. friend class detail::queue_impl; // Make accessor class friend to keep the list of associated accessors. @@ -3395,7 +3413,8 @@ class __SYCL_EXPORT handler { friend class accessor; friend device detail::getDeviceFromHandler(handler &); friend detail::device_impl &detail::getDeviceImplFromHandler(handler &); - + //template + //friend struct ext::oneapi::experimental::detail::special_type_wrapper_info; template friend class detail::image_accessor; diff --git a/sycl/source/detail/scheduler/commands.cpp b/sycl/source/detail/scheduler/commands.cpp index 739242128f0a2..8ac2bd8499ad0 100644 --- a/sycl/source/detail/scheduler/commands.cpp +++ b/sycl/source/detail/scheduler/commands.cpp @@ -2308,6 +2308,8 @@ void SetArgBasedOnType( const ContextImplPtr &ContextImpl, detail::ArgDesc &Arg, size_t NextTrueIndex) { switch (Arg.MType) { + case kernel_param_kind_t::kind_special_type_wrapper: + break; case kernel_param_kind_t::kind_dynamic_work_group_memory: break; case kernel_param_kind_t::kind_work_group_memory: diff --git a/sycl/source/handler.cpp b/sycl/source/handler.cpp index 80db373592be4..13a75d1cef97c 100644 --- a/sycl/source/handler.cpp +++ b/sycl/source/handler.cpp @@ -1153,6 +1153,7 @@ void handler::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind, "Invalid kernel param kind"); break; } + std::cout << impl->MArgs.size() << std::endl; } void handler::setArgHelper(int ArgIndex, detail::work_group_memory_impl &Arg) { @@ -1177,12 +1178,12 @@ void handler::setArgHelper(int ArgIndex, stream &&Str) { // TODO: the constant can be removed if the size of MArgs will be calculated at // compile time. inline constexpr size_t MaxNumAdditionalArgs = 13; - void handler::extractArgsAndReqs() { assert(MKernel && "MKernel is not initialized"); std::vector UnPreparedArgs = std::move(impl->MArgs); clearArgs(); - + MArgShift = 0; + std::cout << detail::KernelInfoData::getNumParams() << std::endl; std::sort( UnPreparedArgs.begin(), UnPreparedArgs.end(), [](const detail::ArgDesc &first, const detail::ArgDesc &second) -> bool { @@ -2299,7 +2300,7 @@ void handler::addLifetimeSharedPtrStorage(std::shared_ptr SPtr) { void handler::addArg(detail::kernel_param_kind_t ArgKind, void *Req, int AccessTarget, int ArgIndex) { - impl->MArgs.emplace_back(ArgKind, Req, AccessTarget, ArgIndex); + impl->MArgs.emplace_back(ArgKind, Req, AccessTarget, ArgIndex + MArgShift); } void handler::clearArgs() { impl->MArgs.clear(); } diff --git a/sycl/test/extensions/free_function_special_types.cpp b/sycl/test/extensions/free_function_special_types.cpp index 5a9f9df4a1c83..71d7f2ec31a7c 100644 --- a/sycl/test/extensions/free_function_special_types.cpp +++ b/sycl/test/extensions/free_function_special_types.cpp @@ -5,31 +5,63 @@ #include +struct Baz { +// int a; + sycl::accessor accA; + sycl::accessor accB; + sycl::accessor accC; +}; + +struct Foo { + Baz b; + sycl::accessor Acc; +}; + +Baz b; + using namespace sycl; SYCL_EXT_ONEAPI_FUNCTION_PROPERTY( (ext::oneapi::experimental::nd_range_kernel<1>)) -void foo(accessor acc, local_accessor lacc, sampler S, +void foo(Baz b) { + for (int i = 0; i < 10; ++i) { + b.accC[i] = b.accA[i] * b.accB[i] + 25; + } + //str << "Done!" << sycl::endl; +} /*, sampler S, stream str, ext::oneapi::experimental::annotated_arg arg, - ext::oneapi::experimental::annotated_ptr ptr) {} + ext::oneapi::experimental::annotated_ptr ptr, Foo f) {}*/ int main() { - queue Q; - kernel_bundle bundle = - get_kernel_bundle(Q.get_context()); - kernel_id id = ext::oneapi::experimental::get_kernel_id(); - kernel Kernel = bundle.get_kernel(id); - Q.submit([&](handler &h) { - accessor acc; - local_accessor lacc; - sycl::sampler S(sycl::coordinate_normalization_mode::unnormalized, - sycl::addressing_mode::clamp, - sycl::filtering_mode::nearest); - ext::oneapi::experimental::annotated_ptr ptr; - ext::oneapi::experimental::annotated_arg arg; - sycl::stream str(8192, 1024, h); - h.set_args(acc, lacc, S, str, arg, ptr); - h.parallel_for(nd_range{{1}, {1}}, Kernel); - }); + int Data[10]; + for (int i = 0; i < 10; ++i) { + Data[i] = i; + } + int Sum[10]; + { + buffer bufA(&Data[0], 10); + buffer bufB(&Data[0], 10); + buffer bufC(&Sum[0], 10); + queue Q; + kernel_bundle bundle = + get_kernel_bundle(Q.get_context()); + kernel_id id = ext::oneapi::experimental::get_kernel_id(); + kernel Kernel = bundle.get_kernel(id); + Q.submit([&](handler &h) { + sycl::stream str(8192, 1024, h); + accessor accA(bufA, h); + accessor accB(bufB, h); + accessor accC(bufC, h); + // local_accessor lacc; + // local_accessor macc; + b = Baz{accA, accB, accC}; + // Foo f; + h.set_args(b); + h.parallel_for(nd_range{{1}, {1}}, Kernel); + }); + } +for (int i = 0;i < 10; ++i) { + std::cout << Sum[i] << std::endl; +} return 0; } From 290288c6f45772671f7c739987b8ea118356c125 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Fri, 11 Jul 2025 09:37:08 -0700 Subject: [PATCH 007/105] Test --- sycl/source/detail/scheduler/commands.cpp | 2 -- sycl/source/handler.cpp | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/sycl/source/detail/scheduler/commands.cpp b/sycl/source/detail/scheduler/commands.cpp index 8ac2bd8499ad0..739242128f0a2 100644 --- a/sycl/source/detail/scheduler/commands.cpp +++ b/sycl/source/detail/scheduler/commands.cpp @@ -2308,8 +2308,6 @@ void SetArgBasedOnType( const ContextImplPtr &ContextImpl, detail::ArgDesc &Arg, size_t NextTrueIndex) { switch (Arg.MType) { - case kernel_param_kind_t::kind_special_type_wrapper: - break; case kernel_param_kind_t::kind_dynamic_work_group_memory: break; case kernel_param_kind_t::kind_work_group_memory: diff --git a/sycl/source/handler.cpp b/sycl/source/handler.cpp index 13a75d1cef97c..fa14c75fa5d01 100644 --- a/sycl/source/handler.cpp +++ b/sycl/source/handler.cpp @@ -1183,7 +1183,7 @@ void handler::extractArgsAndReqs() { std::vector UnPreparedArgs = std::move(impl->MArgs); clearArgs(); MArgShift = 0; - std::cout << detail::KernelInfoData::getNumParams() << std::endl; + //std::cout << detail::KernelInfo::getNumParams() << std::endl; std::sort( UnPreparedArgs.begin(), UnPreparedArgs.end(), [](const detail::ArgDesc &first, const detail::ArgDesc &second) -> bool { From 5a2faeac0bc748619926fe39b7198f872413012a Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 16 Jul 2025 19:59:35 +0000 Subject: [PATCH 008/105] Fix offsets in integration header --- sycl/include/sycl/detail/kernel_desc.hpp | 1 + sycl/include/sycl/handler.hpp | 5 ++++- sycl/source/handler.cpp | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sycl/include/sycl/detail/kernel_desc.hpp b/sycl/include/sycl/detail/kernel_desc.hpp index a3324cb567d25..16dd7fdc8f033 100644 --- a/sycl/include/sycl/detail/kernel_desc.hpp +++ b/sycl/include/sycl/detail/kernel_desc.hpp @@ -61,6 +61,7 @@ enum class kernel_param_kind_t { kind_work_group_memory = 6, kind_dynamic_work_group_memory = 7, kind_dynamic_accessor = 8, + kind_special_type_wrapper = 9, kind_invalid = 0xf, // not a valid kernel kind }; diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 5dc43a3dbe2af..4e3db18f7fb98 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -707,10 +707,13 @@ class __SYCL_EXPORT handler { template void setArgHelper(int ArgIndex, T &&Arg) { void *StoredArg = storePlainArg(Arg); - std::cout << "Called " << ArgIndex << std::endl; if (!std::is_same::value && std::is_pointer::value) { addArg(detail::kernel_param_kind_t::kind_pointer, StoredArg, sizeof(T), ArgIndex); + } else if (ext::oneapi::experimental::detail::is_special_type_wrapper< + remove_cv_ref_t>::value) { + addArg(detail::kernel_param_kind_t::kind_special_type_wrapper, StoredArg, + sizeof(T), ArgIndex); } else { addArg(detail::kernel_param_kind_t::kind_std_layout, StoredArg, sizeof(T), ArgIndex); diff --git a/sycl/source/handler.cpp b/sycl/source/handler.cpp index 2ba349d90b4b8..aedd6d91c8e2a 100644 --- a/sycl/source/handler.cpp +++ b/sycl/source/handler.cpp @@ -1066,6 +1066,7 @@ void handler::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind, } switch (Kind) { + case kernel_param_kind_t::kind_special_type_wrapper: case kernel_param_kind_t::kind_std_layout: case kernel_param_kind_t::kind_pointer: { addArg(Kind, Ptr, Size, Index + IndexShift); From dcac4426b9ce498c2b72897ab552d18dad2605fb Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 16 Jul 2025 20:01:39 +0000 Subject: [PATCH 009/105] Fix offsets in integration header --- clang/lib/Sema/SemaSYCL.cpp | 59 ++++++++++--------------------------- 1 file changed, 16 insertions(+), 43 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index ddd05e609c8b5..9a0fbaeb30431 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -4531,8 +4531,8 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { bool handleSyclSpecialType(FieldDecl *FD, QualType FieldTy) final { // Being inside this function means there is a struct parameter to the free // function kernel that contains a special type. - //ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); - Expr *Base = ArgExprs.back(); + ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); + Expr *Base = createParamReferenceExpr(ParentStruct); for (const auto &child : CurrentStructs) { Base = buildMemberExpr(Base, child); } @@ -4670,39 +4670,6 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { bool enterStruct(const CXXRecordDecl *RD, ParmVarDecl *PD, QualType ParamTy) final { - const auto *RecordDecl = ParamTy->getAsCXXRecordDecl(); - AccessSpecifier DefaultConstructorAccess; - auto DefaultConstructor = - std::find_if(RecordDecl->ctor_begin(), RecordDecl->ctor_end(), - [](auto it) { return it->isDefaultConstructor(); }); - DefaultConstructorAccess = DefaultConstructor->getAccess(); - DefaultConstructor->setAccess(AS_public); - - ASTContext &Ctx = SemaSYCLRef.SemaRef.getASTContext(); - VarDecl *SpecialObjectClone = - VarDecl::Create(Ctx, DeclCreator.getKernelDecl(), FreeFunctionSrcLoc, - FreeFunctionSrcLoc, PD->getIdentifier(), ParamTy, - Ctx.getTrivialTypeSourceInfo(ParamTy), SC_None); - InitializedEntity VarEntity = - InitializedEntity::InitializeVariable(SpecialObjectClone); - InitializationKind InitKind = - InitializationKind::CreateDefault(FreeFunctionSrcLoc); - InitializationSequence InitSeq(SemaSYCLRef.SemaRef, VarEntity, InitKind, - std::nullopt); - ExprResult Init = - InitSeq.Perform(SemaSYCLRef.SemaRef, VarEntity, InitKind, std::nullopt); - SpecialObjectClone->setInit( - SemaSYCLRef.SemaRef.MaybeCreateExprWithCleanups(Init.get())); - SpecialObjectClone->setInitStyle(VarDecl::CallInit); - DefaultConstructor->setAccess(DefaultConstructorAccess); - - Stmt *DS = new (SemaSYCLRef.getASTContext()) - DeclStmt(DeclGroupRef(SpecialObjectClone), FreeFunctionSrcLoc, - FreeFunctionSrcLoc); - BodyStmts.push_back(DS); - Expr *MemberBaseExpr = SemaSYCLRef.SemaRef.BuildDeclRefExpr( - SpecialObjectClone, ParamTy, VK_PRValue, FreeFunctionSrcLoc); - ArgExprs.push_back(MemberBaseExpr); return true; } @@ -4712,9 +4679,9 @@ return true; } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - //ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); - //ArgExprs.push_back(SemaSYCLRef.SemaRef.BuildDeclRefExpr( - // ParentStruct, ParentStruct->getType(), VK_PRValue, FreeFunctionSrcLoc)); + ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); + ArgExprs.push_back(SemaSYCLRef.SemaRef.BuildDeclRefExpr( + ParentStruct, ParentStruct->getType(), VK_PRValue, FreeFunctionSrcLoc)); return true; } @@ -4926,7 +4893,7 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { int64_t CurOffset = 0; llvm::SmallVector ArrayBaseOffsets; int StructDepth = 0; - + bool SpecialTypeWrapper = false; // A series of functions to calculate the change in offset based on the type. int64_t offsetOf(const FieldDecl *FD, QualType ArgTy) const { return isArrayElement(FD, ArgTy) @@ -4965,7 +4932,8 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { Size = SemaSYCLRef.getASTContext().getTypeSizeInChars(ParamTy).getQuantity(); Header.addParamDesc(Kind, static_cast(Size), - static_cast(CurOffset + OffsetAdj)); + static_cast( + (SpecialTypeWrapper ? 0 : CurOffset) + OffsetAdj)); } public: @@ -5040,7 +5008,10 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { ? SYCLIntegrationHeader::kind_dynamic_accessor : SYCLIntegrationHeader::kind_accessor; - Header.addParamDesc(ParamKind, Info, CurOffset + offsetOf(FD, FieldTy)); + if (SpecialTypeWrapper) + Header.addParamDesc(ParamKind, Info, static_cast(offsetOf(FD, FieldTy))); + else + Header.addParamDesc(ParamKind, Info, CurOffset + offsetOf(FD, FieldTy)); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::stream)) { addParam(FD, FieldTy, SYCLIntegrationHeader::kind_stream); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::work_group_memory)) { @@ -5195,7 +5166,8 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { } bool enterStruct(const CXXRecordDecl *, ParmVarDecl * PD, QualType Ty) final { - addParam(PD, Ty, SYCLIntegrationHeader::kind_std_layout); + addParam(PD, Ty, SYCLIntegrationHeader::kind_special_type_wrapper); + SpecialTypeWrapper = true; return true; } @@ -5206,7 +5178,8 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - return true; + SpecialTypeWrapper = false; +return true; } bool enterStruct(const CXXRecordDecl *RD, const CXXBaseSpecifier &BS, From dff980bab70d01a34b538b49e4a4bde29179fa97 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 17 Jul 2025 14:31:57 +0000 Subject: [PATCH 010/105] Refine changes --- clang/lib/Sema/SemaSYCL.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 9a0fbaeb30431..070544febbe66 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -7238,7 +7238,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { } ParmListWithNamesOstream.flush(); for (ParmVarDecl *Param : K.SyclKernel->parameters()) { - if (DecompositionMap.count(Param->getType().getAsOpaquePtr())) { + if (DecompositionMap.count(Param->getType().getTypePtr())) { // this is a struct that contains a special type so its neither a // special type nor a trivially copyable type. We therefore need to // explicitly communicate to the runtime that this argument should be @@ -7253,7 +7253,8 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { Param->getType().print(O, Policy); O << "> {\n"; O << " inline static constexpr bool value = true;\n};\n\n"; - O << " namespace sycl { inline namespace _V1 { namespace ext { namespace oneapi { namespace " + O << "namespace sycl { inline namespace _V1 { namespace ext { " + "namespace oneapi { namespace " "experimental { namespace detail { \n"; O << "template <> struct special_type_wrapper_info<"; Param->getType().print(O, Policy); @@ -7263,17 +7264,21 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { Param->getType().print(O, Policy); O << ">>>\n"; O << "static void set_arg(int ArgIndex, DataT& "; - O << "_arg_struct"; - O << ", HandlerT& cgh, int &Shift) {\n"; + O << "arg"; + O << ", HandlerT& cgh, int &NumArgs) {\n"; for (const MemberExpr *wrappedSpecialType : - DecompositionMap[Param->getType().getAsOpaquePtr()]) { + DecompositionMap[Param->getType().getTypePtr()]) { O << " cgh.set_arg(ArgIndex, "; wrappedSpecialType->printPretty(O, nullptr, Policy); O << ");\n"; O << " ++ArgIndex;\n"; } - O << " Shift = " << DecompositionMap[Param->getType().getAsOpaquePtr()].size() << ";\n"; - O << "}\n };\n} // namespace detail \n} // namespace experimental \n} // namespace oneapi \n} // namespace ext \n} // namespace _V1\n} //namespace sycl\n"; + O << " NumArgs = " + << DecompositionMap[Param->getType().getTypePtr()].size() + << ";\n"; + O << "}\n};\n} // namespace detail \n} // namespace experimental \n} " + "// namespace oneapi \n} // namespace ext \n} // namespace _V1\n} " + "//namespace sycl\n"; } } Policy.SuppressTagKeyword = false; From b3e935f6ff3d9eba3e0bc5bea5f3faab95037aae Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 17 Jul 2025 14:35:41 +0000 Subject: [PATCH 011/105] Formatting an comments --- sycl/include/sycl/handler.hpp | 11 ++++++++--- sycl/source/handler.cpp | 7 ++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 4e3db18f7fb98..3d77d71a46df0 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -1919,10 +1919,10 @@ class __SYCL_EXPORT handler { void> set_arg(int ArgIndex, T &Arg) { setArgHelper(ArgIndex, Arg); - int Shift; + int NumArgs; ext::oneapi::experimental::detail::special_type_wrapper_info< - remove_cv_ref_t>::template set_arg(ArgIndex + 1, Arg, *this, Shift); - MArgShift += Shift; + remove_cv_ref_t>::template set_arg(ArgIndex + 1, Arg, *this, NumArgs); + MArgShift += NumArgs; } // set_arg for graph dynamic_parameters @@ -3455,6 +3455,11 @@ class __SYCL_EXPORT handler { event MLastEventDoNotUse; #endif + // Certain arguments such as structs that contain SYCL special types entail + // several hidden set_arg calls for every set_arg called by the user. This + // shift is required to make sure the following arguments set by the user have + // the correct index. It keeps track of how many of these hidden set_arg calls + // have been made so far. int MArgShift = 0; // Make queue_impl class friend to be able to call finalize method. diff --git a/sycl/source/handler.cpp b/sycl/source/handler.cpp index 91c9bcec56699..8cedcd5c0b5d3 100644 --- a/sycl/source/handler.cpp +++ b/sycl/source/handler.cpp @@ -1253,8 +1253,6 @@ void handler::extractArgsAndReqs() { assert(MKernel && "MKernel is not initialized"); std::vector UnPreparedArgs = std::move(impl->MArgs); clearArgs(); - MArgShift = 0; - //std::cout << detail::KernelInfo::getNumParams() << std::endl; std::sort( UnPreparedArgs.begin(), UnPreparedArgs.end(), [](const detail::ArgDesc &first, const detail::ArgDesc &second) -> bool { @@ -2420,7 +2418,10 @@ void handler::addArg(detail::kernel_param_kind_t ArgKind, void *Req, impl->MArgs.emplace_back(ArgKind, Req, AccessTarget, ArgIndex + MArgShift); } -void handler::clearArgs() { impl->MArgs.clear(); } +void handler::clearArgs() { + impl->MArgs.clear(); + MArgShift = 0; +} void handler::setArgsToAssociatedAccessors() { impl->MArgs = impl->MAssociatedAccesors; From 4659ec2a5b7644c8fbf7b3636d1a35b49fd73cc5 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 17 Jul 2025 14:44:20 +0000 Subject: [PATCH 012/105] Formatting --- clang/lib/Sema/SemaSYCL.cpp | 48 +++++++------ .../free_function_special_types.cpp | 67 ------------------- 2 files changed, 23 insertions(+), 92 deletions(-) delete mode 100644 sycl/test/extensions/free_function_special_types.cpp diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 742b60031c121..66c6afe39424f 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -2570,7 +2570,6 @@ class SyclKernelPointerHandler : public SyclKernelFieldHandler { return true; } - bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType ParamTy) final { return true; @@ -2851,6 +2850,9 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { // For free function kernels the arguments are named in direct mapping // with the names they have in the __init method i.e __arg_Ptr for work // group memory since its init function takes a parameter with Ptr name. + if constexpr (std::is_same_v) + addParam(decl, ParamTy.getCanonicalType()); + else addParam(Param, ParamTy.getCanonicalType()); // Propagate add_ir_attributes_kernel_parameter attribute. if (const auto *AddIRAttr = @@ -2996,7 +2998,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { } bool handleStructType(ParmVarDecl *PD, QualType Ty) final { - StringRef Name = "_arg_struct"; + StringRef Name = "_arg_struct"; addParam(Name, Ty); CurrentStruct = Params.back(); return true; @@ -4524,7 +4526,6 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { ~FreeFunctionKernelBodyCreator() { CompoundStmt *KernelBody = createFreeFunctionKernelBody(); - KernelBody->dumpPretty(SemaSYCLRef.SemaRef.getASTContext()); DeclCreator.setBody(KernelBody); } @@ -4757,19 +4758,22 @@ class FreeFunctionKernelParamDecomposer : public SyclKernelFieldHandler { public: static constexpr const bool VisitInsideSimpleContainers = false; - FreeFunctionKernelParamDecomposer(SemaSYCL &S, SYCLIntegrationHeader &Header, FunctionDecl *FF, SyclKernelDeclCreator &DC) - : SyclKernelFieldHandler(S), FreeFunctionSrcLoc(FF->getLocation()), FreeFunction(FF), H(Header), DeclCreator(DC) {} + FreeFunctionKernelParamDecomposer(SemaSYCL &S, SYCLIntegrationHeader &Header, + FunctionDecl *FF, SyclKernelDeclCreator &DC) + : SyclKernelFieldHandler(S), FreeFunctionSrcLoc(FF->getLocation()), + FreeFunction(FF), H(Header), DeclCreator(DC) {} -bool handleSyclSpecialType(ParmVarDecl *, QualType) final { return true; } + bool handleSyclSpecialType(ParmVarDecl *, QualType) final { return true; } bool handleSyclSpecialType(FieldDecl *FD, QualType Ty) final { - ParmVarDecl * ParentStruct = DeclCreator.getParentStructForCurrentField(); + ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); Expr *Base = createParamReferenceExpr(ParentStruct); for (const auto &child : CurrentStructs) { Base = buildMemberExpr(Base, child); } MemberExpr *MemberAccess = buildMemberExpr(Base, FD); - H.addFreeFunctionParamDecomposition(TopLevelStruct->getType(), MemberAccess); + H.addFreeFunctionParamDecomposition(TopLevelStruct->getType(), + MemberAccess); return true; } @@ -4787,14 +4791,12 @@ bool handleSyclSpecialType(ParmVarDecl *, QualType) final { return true; } return true; } -bool handleSyclSpecialType(const CXXRecordDecl *, const CXXBaseSpecifier &BS, + bool handleSyclSpecialType(const CXXRecordDecl *, const CXXBaseSpecifier &BS, QualType Ty) final { return true; } - bool handlePointerType(FieldDecl *FD, QualType FieldTy) final { - return true; - } + bool handlePointerType(FieldDecl *FD, QualType FieldTy) final { return true; } bool handlePointerType(ParmVarDecl *PD, QualType ParamTy) final { return true; @@ -4820,27 +4822,22 @@ bool handleSyclSpecialType(const CXXRecordDecl *, const CXXBaseSpecifier &BS, } bool handleScalarType(FieldDecl *FD, QualType FieldTy) final { - ParmVarDecl * ParentStruct = DeclCreator.getParentStructForCurrentField(); + ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); Expr *Base = createParamReferenceExpr(ParentStruct); for (const auto &child : CurrentStructs) { Base = buildMemberExpr(Base, child); } MemberExpr *MemberAccess = buildMemberExpr(Base, FD); - H.addFreeFunctionParamDecomposition(TopLevelStruct->getType(), MemberAccess); + H.addFreeFunctionParamDecomposition(TopLevelStruct->getType(), + MemberAccess); return true; } - bool handleScalarType(ParmVarDecl *, QualType) final { - return true; - } + bool handleScalarType(ParmVarDecl *, QualType) final { return true; } - bool handleUnionType(FieldDecl *FD, QualType FieldTy) final { - return true; - } + bool handleUnionType(FieldDecl *FD, QualType FieldTy) final { return true; } - bool handleUnionType(ParmVarDecl *, QualType) final { - return true; - } + bool handleUnionType(ParmVarDecl *, QualType) final { return true; } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *FD, QualType Ty) final { return true; } @@ -4893,6 +4890,7 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { int64_t CurOffset = 0; llvm::SmallVector ArrayBaseOffsets; int StructDepth = 0; + // Set if we are currently exploring fields of a struct that contains special types bool SpecialTypeWrapper = false; // A series of functions to calculate the change in offset based on the type. int64_t offsetOf(const FieldDecl *FD, QualType ArgTy) const { @@ -5178,8 +5176,8 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - SpecialTypeWrapper = false; -return true; + SpecialTypeWrapper = false; + return true; } bool enterStruct(const CXXRecordDecl *RD, const CXXBaseSpecifier &BS, diff --git a/sycl/test/extensions/free_function_special_types.cpp b/sycl/test/extensions/free_function_special_types.cpp deleted file mode 100644 index 71d7f2ec31a7c..0000000000000 --- a/sycl/test/extensions/free_function_special_types.cpp +++ /dev/null @@ -1,67 +0,0 @@ -// RUN: %clangxx -fsyntax-only -fsycl %s - -// Verify that we can pass top-level special type parameters to free function -// kernels. - -#include - -struct Baz { -// int a; - sycl::accessor accA; - sycl::accessor accB; - sycl::accessor accC; -}; - -struct Foo { - Baz b; - sycl::accessor Acc; -}; - -Baz b; - -using namespace sycl; - -SYCL_EXT_ONEAPI_FUNCTION_PROPERTY( - (ext::oneapi::experimental::nd_range_kernel<1>)) -void foo(Baz b) { - for (int i = 0; i < 10; ++i) { - b.accC[i] = b.accA[i] * b.accB[i] + 25; - } - //str << "Done!" << sycl::endl; -} /*, sampler S, - stream str, ext::oneapi::experimental::annotated_arg arg, - ext::oneapi::experimental::annotated_ptr ptr, Foo f) {}*/ - -int main() { - int Data[10]; - for (int i = 0; i < 10; ++i) { - Data[i] = i; - } - int Sum[10]; - { - buffer bufA(&Data[0], 10); - buffer bufB(&Data[0], 10); - buffer bufC(&Sum[0], 10); - queue Q; - kernel_bundle bundle = - get_kernel_bundle(Q.get_context()); - kernel_id id = ext::oneapi::experimental::get_kernel_id(); - kernel Kernel = bundle.get_kernel(id); - Q.submit([&](handler &h) { - sycl::stream str(8192, 1024, h); - accessor accA(bufA, h); - accessor accB(bufB, h); - accessor accC(bufC, h); - // local_accessor lacc; - // local_accessor macc; - b = Baz{accA, accB, accC}; - // Foo f; - h.set_args(b); - h.parallel_for(nd_range{{1}, {1}}, Kernel); - }); - } -for (int i = 0;i < 10; ++i) { - std::cout << Sum[i] << std::endl; -} - return 0; -} From 18c185a61ab3f3546070260b6d9708943283c14f Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 17 Jul 2025 11:13:57 -0700 Subject: [PATCH 013/105] More formatting --- clang/include/clang/Sema/SemaSYCL.h | 15 +- clang/lib/Sema/SemaSYCL.cpp | 233 ++++-------------- .../experimental/free_function_traits.hpp | 14 +- sycl/include/sycl/handler.hpp | 14 +- sycl/source/handler.cpp | 1 - 5 files changed, 78 insertions(+), 199 deletions(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index 3c12032691a4b..4667932eedef6 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -119,9 +119,12 @@ class SYCLIntegrationHeader { /// integration header is required. void addHostPipeRegistration() { NeedToEmitHostPipeRegistration = true; } -void addFreeFunctionParamDecomposition(QualType Ty, MemberExpr *expr) { - DecompositionMap[Ty.getAsOpaquePtr()].push_back(expr); -} + // Add the entry (Ty, Offset) to the SpecialTypeOffsetMap. + void addSpecialTypeOffset(const Type *ParentStruct, QualType Ty, + int64_t offset) { + SpecialTypeOffsetMap[ParentStruct].push_back(std::make_pair(Ty, offset)); + } + private: // Kernel actual parameter descriptor. struct KernelParamDesc { @@ -209,7 +212,11 @@ void addFreeFunctionParamDecomposition(QualType Ty, MemberExpr *expr) { /// type and __sycl_host_pipe_registrar variable are required to emit. bool NeedToEmitHostPipeRegistration = false; - llvm::DenseMap> DecompositionMap; + // A map that keeps track of type and offset of each special class contained + // inside a struct + llvm::DenseMap, 8>> + SpecialTypeOffsetMap; }; class SYCLIntegrationFooter { diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 66c6afe39424f..d208a083a274c 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -2698,9 +2698,9 @@ class SyclKernelPointerHandler : public SyclKernelFieldHandler { class SyclKernelDeclCreator : public SyclKernelFieldHandler { FunctionDecl *KernelDecl = nullptr; llvm::SmallVector Params; - // Holds the last handled kernel struct parameter that contains a special type. - // Set in the enterStruct functions. - ParmVarDecl * CurrentStruct; + // Holds the last handled kernel struct parameter that contains a special + // type. Set in the enterStruct functions. + ParmVarDecl *CurrentStruct; Sema::ContextRAII FuncContext; // Holds the last handled field's first parameter. This doesn't store an // iterator as push_back invalidates iterators. @@ -2962,7 +2962,6 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { SYCLKernelAttr::CreateImplicit(SemaSYCLRef.getASTContext())); SemaSYCLRef.addSyclDeviceDecl(KernelDecl); - KernelDecl->dump(); } bool enterStruct(const CXXRecordDecl *, FieldDecl *, QualType) final { @@ -4538,8 +4537,8 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { Base = buildMemberExpr(Base, child); } MemberExpr *MemberAccess = buildMemberExpr(Base, FD); - createSpecialMethodCall(FieldTy->getAsCXXRecordDecl(), InitMethodName, - MemberAccess, BodyStmts); + createSpecialMethodCall(FieldTy->getAsCXXRecordDecl(), InitMethodName, + MemberAccess, BodyStmts); return true; } @@ -4642,9 +4641,7 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { return true; } - bool handleScalarType(FieldDecl *FD, QualType FieldTy) final { - return true; - } + bool handleScalarType(FieldDecl *FD, QualType FieldTy) final { return true; } bool handleScalarType(ParmVarDecl *, QualType) final { Expr *ParamRef = createParamReferenceExpr(); @@ -4671,7 +4668,7 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { bool enterStruct(const CXXRecordDecl *RD, ParmVarDecl *PD, QualType ParamTy) final { -return true; + return true; } bool leaveStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { @@ -4682,7 +4679,7 @@ return true; bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); ArgExprs.push_back(SemaSYCLRef.SemaRef.BuildDeclRefExpr( - ParentStruct, ParentStruct->getType(), VK_PRValue, FreeFunctionSrcLoc)); + ParentStruct, ParentStruct->getType(), VK_PRValue, FreeFunctionSrcLoc)); return true; } @@ -4730,149 +4727,6 @@ return true; } }; -class FreeFunctionKernelParamDecomposer : public SyclKernelFieldHandler { - ParmVarDecl *TopLevelStruct; - llvm::SmallVector CurrentStructs; - SourceLocation FreeFunctionSrcLoc; - FunctionDecl *FreeFunction; - SYCLIntegrationHeader &H; - SyclKernelDeclCreator &DeclCreator; - - // Creates a DeclRefExpr to the ParmVar that represents an arbitrary - // free function parameter - Expr *createParamReferenceExpr(ParmVarDecl *FreeFunctionParameter) { - QualType FreeFunctionParamType = FreeFunctionParameter->getOriginalType(); - Expr *DRE = SemaSYCLRef.SemaRef.BuildDeclRefExpr( - FreeFunctionParameter, FreeFunctionParamType, VK_LValue, - FreeFunctionSrcLoc); - DRE = SemaSYCLRef.SemaRef.DefaultLvalueConversion(DRE).get(); - return DRE; - } - - MemberExpr *buildMemberExpr(Expr *Base, ValueDecl *Member) { - return MemberExpr::CreateImplicit( - SemaSYCLRef.getASTContext(), Base, /*IsArrow */ false, Member, - Member->getType(), VK_LValue, OK_Ordinary); - } - -public: - static constexpr const bool VisitInsideSimpleContainers = false; - - FreeFunctionKernelParamDecomposer(SemaSYCL &S, SYCLIntegrationHeader &Header, - FunctionDecl *FF, SyclKernelDeclCreator &DC) - : SyclKernelFieldHandler(S), FreeFunctionSrcLoc(FF->getLocation()), - FreeFunction(FF), H(Header), DeclCreator(DC) {} - - bool handleSyclSpecialType(ParmVarDecl *, QualType) final { return true; } - - bool handleSyclSpecialType(FieldDecl *FD, QualType Ty) final { - ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); - Expr *Base = createParamReferenceExpr(ParentStruct); - for (const auto &child : CurrentStructs) { - Base = buildMemberExpr(Base, child); - } - MemberExpr *MemberAccess = buildMemberExpr(Base, FD); - H.addFreeFunctionParamDecomposition(TopLevelStruct->getType(), - MemberAccess); - return true; - } - - bool enterStruct(const CXXRecordDecl *RD, FieldDecl *FD, QualType Ty) final { - CurrentStructs.push_back(FD); - return true; - } - bool leaveStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { - CurrentStructs.pop_back(); - return true; - } - bool enterStruct(const CXXRecordDecl *RD, ParmVarDecl *PD, - QualType Ty) final { - TopLevelStruct = PD; - return true; - } - - bool handleSyclSpecialType(const CXXRecordDecl *, const CXXBaseSpecifier &BS, - QualType Ty) final { - return true; - } - - bool handlePointerType(FieldDecl *FD, QualType FieldTy) final { return true; } - - bool handlePointerType(ParmVarDecl *PD, QualType ParamTy) final { - return true; - } - - bool handleSimpleArrayType(FieldDecl *FD, QualType FieldTy) final { - return true; - } - - bool handleNonDecompStruct(const CXXRecordDecl *, FieldDecl *FD, - QualType Ty) final { - return true; - } - - bool handleNonDecompStruct(const CXXRecordDecl *, ParmVarDecl *PD, - QualType) final { - return true; - } - - bool handleNonDecompStruct(const CXXRecordDecl *RD, - const CXXBaseSpecifier &BS, QualType Ty) final { - return true; - } - - bool handleScalarType(FieldDecl *FD, QualType FieldTy) final { - ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); - Expr *Base = createParamReferenceExpr(ParentStruct); - for (const auto &child : CurrentStructs) { - Base = buildMemberExpr(Base, child); - } - MemberExpr *MemberAccess = buildMemberExpr(Base, FD); - H.addFreeFunctionParamDecomposition(TopLevelStruct->getType(), - MemberAccess); - return true; - } - - bool handleScalarType(ParmVarDecl *, QualType) final { return true; } - - bool handleUnionType(FieldDecl *FD, QualType FieldTy) final { return true; } - - bool handleUnionType(ParmVarDecl *, QualType) final { return true; } - bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *FD, QualType Ty) final { - return true; - } - - bool enterStruct(const CXXRecordDecl *RD, const CXXBaseSpecifier &BS, - QualType) final { - return true; - } - - bool leaveStruct(const CXXRecordDecl *RD, const CXXBaseSpecifier &BS, - QualType) final { - return true; - } - - bool enterArray(FieldDecl *FD, QualType ArrayType, - QualType ElementType) final { - return true; - } - - bool enterArray(ParmVarDecl *PD, QualType ArrayType, - QualType ElementType) final { - return true; - } - - bool leaveArray(FieldDecl *FD, QualType ArrayType, - QualType ElementType) final { - return true; - } - - bool leaveArray(ParmVarDecl *PD, QualType ArrayType, - QualType ElementType) final { - return true; - } -}; - // Kernels are only the unnamed-lambda feature if the feature is enabled, AND // the first template argument has been corrected by the library to match the // functor type. @@ -4890,8 +4744,11 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { int64_t CurOffset = 0; llvm::SmallVector ArrayBaseOffsets; int StructDepth = 0; - // Set if we are currently exploring fields of a struct that contains special types - bool SpecialTypeWrapper = false; + + // Set if we are currently exploring fields of a struct that is a free + // function kernel parameter + const Type *ParentStruct = nullptr; + // A series of functions to calculate the change in offset based on the type. int64_t offsetOf(const FieldDecl *FD, QualType ArgTy) const { return isArrayElement(FD, ArgTy) @@ -4929,9 +4786,9 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { uint64_t Size; Size = SemaSYCLRef.getASTContext().getTypeSizeInChars(ParamTy).getQuantity(); - Header.addParamDesc(Kind, static_cast(Size), - static_cast( - (SpecialTypeWrapper ? 0 : CurOffset) + OffsetAdj)); + Header.addParamDesc( + Kind, static_cast(Size), + static_cast((ParentStruct ? 0 : CurOffset) + OffsetAdj)); } public: @@ -5006,9 +4863,9 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { ? SYCLIntegrationHeader::kind_dynamic_accessor : SYCLIntegrationHeader::kind_accessor; - if (SpecialTypeWrapper) - Header.addParamDesc(ParamKind, Info, static_cast(offsetOf(FD, FieldTy))); - else + if (ParentStruct) + Header.addParamDesc(ParamKind, Info, offsetOf(FD, FieldTy)); + else Header.addParamDesc(ParamKind, Info, CurOffset + offsetOf(FD, FieldTy)); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::stream)) { addParam(FD, FieldTy, SYCLIntegrationHeader::kind_stream); @@ -5037,6 +4894,9 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { llvm_unreachable( "Unexpected SYCL special class when generating integration header"); } + if (ParentStruct) + Header.addSpecialTypeOffset(ParentStruct, FieldTy, offsetOf(FD, FieldTy)); + return true; } @@ -5163,9 +5023,9 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { return true; } - bool enterStruct(const CXXRecordDecl *, ParmVarDecl * PD, QualType Ty) final { + bool enterStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType Ty) final { addParam(PD, Ty, SYCLIntegrationHeader::kind_special_type_wrapper); - SpecialTypeWrapper = true; + ParentStruct = Ty.getTypePtr(); return true; } @@ -5176,7 +5036,7 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - SpecialTypeWrapper = false; + ParentStruct = nullptr; return true; } @@ -5678,14 +5538,13 @@ void SemaSYCL::constructFreeFunctionKernel(FunctionDecl *FD, FreeFunctionKernelBodyCreator kernel_body(*this, kernel_decl, FD); - FreeFunctionKernelParamDecomposer decomposer(*this, getSyclIntegrationHeader(), FD, kernel_decl); - - SyclKernelIntHeaderCreator int_header(*this, getSyclIntegrationHeader(), FD->getType(), FD); + SyclKernelIntHeaderCreator int_header(*this, getSyclIntegrationHeader(), + FD->getType(), FD); SyclKernelIntFooterCreator int_footer(*this, getSyclIntegrationFooter()); KernelObjVisitor Visitor{*this}; - Visitor.VisitFunctionParameters(FD, argsSizeChecker, kernel_decl, kernel_body, decomposer, + Visitor.VisitFunctionParameters(FD, argsSizeChecker, kernel_decl, kernel_body, int_header, int_footer); assert(getKernelFDPairs().back().first == FD && @@ -7235,13 +7094,20 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { } } ParmListWithNamesOstream.flush(); + + // Now we handle all parameters that are structs that contain special types + // inside. Their information is coontained in SpecialTypeOffsetMap with keys + // the structs and values a vector of pairs representing the type and the + // offset of each special type inside this struct. + llvm::DenseMap visited; for (ParmVarDecl *Param : K.SyclKernel->parameters()) { - if (DecompositionMap.count(Param->getType().getTypePtr())) { + if (SpecialTypeOffsetMap.count(Param->getType().getTypePtr()) && + !visited[Param->getType().getTypePtr()]) { // this is a struct that contains a special type so its neither a // special type nor a trivially copyable type. We therefore need to // explicitly communicate to the runtime that this argument should be // allowed as a free function kernel argument. We do this by defining - // a certain trait recognized by the runtime to be true. + // is_special_type_wrapper to be true. O << "template <>\n"; O << "struct " "sycl::ext::oneapi::experimental::detail::is_special_type_" @@ -7257,26 +7123,29 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << "template <> struct special_type_wrapper_info<"; Param->getType().print(O, Policy); O << "> {\n"; - O << "template< typename DataT, typename HandlerT, typename = " + O << "template< typename ArgT, typename HandlerT, typename = " "std::enable_if_t, "; Param->getType().print(O, Policy); O << ">>>\n"; - O << "static void set_arg(int ArgIndex, DataT& "; + O << " static void set_arg(int ArgIndex, ArgT& "; O << "arg"; O << ", HandlerT& cgh, int &NumArgs) {\n"; - for (const MemberExpr *wrappedSpecialType : - DecompositionMap[Param->getType().getTypePtr()]) { - O << " cgh.set_arg(ArgIndex, "; - wrappedSpecialType->printPretty(O, nullptr, Policy); + for (const auto TypeOffsetPair : + SpecialTypeOffsetMap[Param->getType().getTypePtr()]) { + O << " cgh.set_arg(ArgIndex, *("; + TypeOffsetPair.first.print(O, Policy); + O << " *)"; + O << "((char *)(&arg) + " << TypeOffsetPair.second << ")"; O << ");\n"; - O << " ++ArgIndex;\n"; + O << " ++ArgIndex;\n"; } - O << " NumArgs = " - << DecompositionMap[Param->getType().getTypePtr()].size() + O << " NumArgs = " + << SpecialTypeOffsetMap[Param->getType().getTypePtr()].size() << ";\n"; - O << "}\n};\n} // namespace detail \n} // namespace experimental \n} " + O << " }\n};\n} // namespace detail \n} // namespace experimental \n} " "// namespace oneapi \n} // namespace ext \n} // namespace _V1\n} " - "//namespace sycl\n"; + "// namespace sycl\n\n"; + visited[Param->getType().getTypePtr()] = true; } } Policy.SuppressTagKeyword = false; diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index c6489c70009d0..274f1f08c4a99 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -8,7 +8,6 @@ #pragma once #include -#include namespace sycl { inline namespace _V1 { @@ -47,12 +46,21 @@ template inline constexpr bool is_kernel_v = is_kernel::value; namespace detail { +// A special type wrapper is a struct type that contains special types. +// The frontend defines this trait to be true after analyzing the struct at compile time. template struct is_special_type_wrapper { inline static constexpr bool value = false; }; -template -struct special_type_wrapper_info {}; +// This struct is made to be specialized in the integration header. +// It calls set_arg for every special type contained in the struct regardless of +// the level of nesting. So if type Foo contains two accessors inside and the +// user calls set_arg(Foo), that call will call this function which will call +// set_arg for each of those two accessors. +template struct special_type_wrapper_info { + template + static void set_arg(int ArgIndex, ArgT &arg, HandlerT &cgh, int &NumArgs) {} +}; } // namespace detail } // namespace ext::oneapi::experimental diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 3d77d71a46df0..b7264e99e987b 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -162,10 +162,8 @@ __SYCL_EXPORT void *async_malloc_from_pool(sycl::handler &h, size_t size, } // namespace ext::oneapi::experimental namespace ext::oneapi::experimental::detail { -template -struct is_special_type_wrapper; -template -struct special_type_wrapper_info; +template struct is_special_type_wrapper; +template struct special_type_wrapper_info; class dynamic_parameter_base; class dynamic_work_group_memory_base; class dynamic_local_accessor_base; @@ -688,7 +686,6 @@ class __SYCL_EXPORT handler { void setArgHelper(int ArgIndex, detail::work_group_memory_impl &Arg); - // setArgHelper for non local accessor argument. template @@ -1894,7 +1891,7 @@ class __SYCL_EXPORT handler { void set_arg(int ArgIndex, accessor Arg) { - setArgHelper(ArgIndex, std::move(Arg)); + setArgHelper(ArgIndex, std::move(Arg)); } template @@ -1921,7 +1918,8 @@ class __SYCL_EXPORT handler { setArgHelper(ArgIndex, Arg); int NumArgs; ext::oneapi::experimental::detail::special_type_wrapper_info< - remove_cv_ref_t>::template set_arg(ArgIndex + 1, Arg, *this, NumArgs); + remove_cv_ref_t>::template set_arg(ArgIndex + 1, Arg, *this, + NumArgs); MArgShift += NumArgs; } @@ -3471,8 +3469,6 @@ class __SYCL_EXPORT handler { friend class accessor; friend device detail::getDeviceFromHandler(handler &); friend detail::device_impl &detail::getDeviceImplFromHandler(handler &); - //template - //friend struct ext::oneapi::experimental::detail::special_type_wrapper_info; template friend class detail::image_accessor; diff --git a/sycl/source/handler.cpp b/sycl/source/handler.cpp index 8cedcd5c0b5d3..0d6e802128fc5 100644 --- a/sycl/source/handler.cpp +++ b/sycl/source/handler.cpp @@ -1224,7 +1224,6 @@ void handler::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind, "Invalid kernel param kind"); break; } - std::cout << impl->MArgs.size() << std::endl; } void handler::setArgHelper(int ArgIndex, detail::work_group_memory_impl &Arg) { From 9a32eac955ddf6d267d12b54b75221e849bc6ffa Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 17 Jul 2025 11:18:56 -0700 Subject: [PATCH 014/105] More formatting --- clang/include/clang/Sema/SemaSYCL.h | 1 + sycl/include/sycl/handler.hpp | 4 ++-- sycl/source/handler.cpp | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index 4667932eedef6..2d717929a04af 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -190,6 +190,7 @@ class SYCLIntegrationHeader { return KernelDescs.size() > 0 ? &KernelDescs[KernelDescs.size() - 1] : nullptr; } + private: /// Keeps invocation descriptors for each kernel invocation started by /// SYCLIntegrationHeader::startKernel diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index b7264e99e987b..10b389a3a3089 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -7,7 +7,6 @@ //===----------------------------------------------------------------------===// #pragma once -#include #include #include #include @@ -693,7 +692,6 @@ class __SYCL_EXPORT handler { setArgHelper( int ArgIndex, accessor &&Arg) { - std::cout << "Called accessor " << ArgIndex << std::endl; detail::AccessorBaseHost *AccBase = (detail::AccessorBaseHost *)&Arg; const detail::AccessorImplPtr &AccImpl = detail::getSyclObjImpl(*AccBase); detail::AccessorImplHost *Req = AccImpl.get(); @@ -704,6 +702,7 @@ class __SYCL_EXPORT handler { template void setArgHelper(int ArgIndex, T &&Arg) { void *StoredArg = storePlainArg(Arg); + if (!std::is_same::value && std::is_pointer::value) { addArg(detail::kernel_param_kind_t::kind_pointer, StoredArg, sizeof(T), ArgIndex); @@ -3469,6 +3468,7 @@ class __SYCL_EXPORT handler { friend class accessor; friend device detail::getDeviceFromHandler(handler &); friend detail::device_impl &detail::getDeviceImplFromHandler(handler &); + template friend class detail::image_accessor; diff --git a/sycl/source/handler.cpp b/sycl/source/handler.cpp index 0d6e802128fc5..fdc619414c008 100644 --- a/sycl/source/handler.cpp +++ b/sycl/source/handler.cpp @@ -1248,10 +1248,12 @@ void handler::setArgHelper(int ArgIndex, stream &&Str) { // TODO: the constant can be removed if the size of MArgs will be calculated at // compile time. inline constexpr size_t MaxNumAdditionalArgs = 13; + void handler::extractArgsAndReqs() { assert(MKernel && "MKernel is not initialized"); std::vector UnPreparedArgs = std::move(impl->MArgs); clearArgs(); + std::sort( UnPreparedArgs.begin(), UnPreparedArgs.end(), [](const detail::ArgDesc &first, const detail::ArgDesc &second) -> bool { From 60764b6de9d92e6c6324c11c270bcd8d4c45bc61 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 17 Jul 2025 11:19:33 -0700 Subject: [PATCH 015/105] More formatting --- sycl/include/sycl/handler.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 10b389a3a3089..77b319ae3268b 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// #pragma once + #include #include #include From 4056a8a793cf68244aae8e17bb4205a93d7a1f86 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 17 Jul 2025 11:20:39 -0700 Subject: [PATCH 016/105] Remove rogue changes --- .../free_function_special_types.cpp | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 sycl/test/extensions/free_function_special_types.cpp diff --git a/sycl/test/extensions/free_function_special_types.cpp b/sycl/test/extensions/free_function_special_types.cpp new file mode 100644 index 0000000000000..a392131f6caff --- /dev/null +++ b/sycl/test/extensions/free_function_special_types.cpp @@ -0,0 +1,35 @@ +// RUN: %clangxx -fsyntax-only -fsycl %s + +// Verify that we can pass top-level special type parameters to free function +// kernels. + +#include + +using namespace sycl; + +SYCL_EXT_ONEAPI_FUNCTION_PROPERTY( + (ext::oneapi::experimental::nd_range_kernel<1>)) +void foo(accessor acc, local_accessor lacc, sampler S, + stream str, ext::oneapi::experimental::annotated_arg arg, + ext::oneapi::experimental::annotated_ptr ptr) {} + +int main() { + queue Q; + kernel_bundle bundle = + get_kernel_bundle(Q.get_context()); + kernel_id id = ext::oneapi::experimental::get_kernel_id(); + kernel Kernel = bundle.get_kernel(id); + Q.submit([&](handler &h) { + accessor acc; + local_accessor lacc; + sycl::sampler S(sycl::coordinate_normalization_mode::unnormalized, + sycl::addressing_mode::clamp, + sycl::filtering_mode::nearest); + ext::oneapi::experimental::annotated_ptr ptr; + ext::oneapi::experimental::annotated_arg arg; + sycl::stream str(8192, 1024, h); + h.set_args(acc, lacc, S, str, arg, ptr); + h.parallel_for(nd_range{{1}, {1}}, Kernel); + }); + return 0; +} From f2e21a3ccbc29f048af8c10779039d3fc16ba9d1 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 17 Jul 2025 11:21:31 -0700 Subject: [PATCH 017/105] More formatting --- .../free_function_special_types.cpp | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/sycl/test/extensions/free_function_special_types.cpp b/sycl/test/extensions/free_function_special_types.cpp index a392131f6caff..5a9f9df4a1c83 100644 --- a/sycl/test/extensions/free_function_special_types.cpp +++ b/sycl/test/extensions/free_function_special_types.cpp @@ -1,35 +1,35 @@ -// RUN: %clangxx -fsyntax-only -fsycl %s +// RUN: %clangxx -fsyntax-only -fsycl %s -// Verify that we can pass top-level special type parameters to free function -// kernels. +// Verify that we can pass top-level special type parameters to free function +// kernels. -#include +#include -using namespace sycl; +using namespace sycl; -SYCL_EXT_ONEAPI_FUNCTION_PROPERTY( - (ext::oneapi::experimental::nd_range_kernel<1>)) -void foo(accessor acc, local_accessor lacc, sampler S, - stream str, ext::oneapi::experimental::annotated_arg arg, - ext::oneapi::experimental::annotated_ptr ptr) {} +SYCL_EXT_ONEAPI_FUNCTION_PROPERTY( + (ext::oneapi::experimental::nd_range_kernel<1>)) +void foo(accessor acc, local_accessor lacc, sampler S, + stream str, ext::oneapi::experimental::annotated_arg arg, + ext::oneapi::experimental::annotated_ptr ptr) {} -int main() { - queue Q; - kernel_bundle bundle = - get_kernel_bundle(Q.get_context()); - kernel_id id = ext::oneapi::experimental::get_kernel_id(); - kernel Kernel = bundle.get_kernel(id); - Q.submit([&](handler &h) { - accessor acc; - local_accessor lacc; - sycl::sampler S(sycl::coordinate_normalization_mode::unnormalized, - sycl::addressing_mode::clamp, - sycl::filtering_mode::nearest); - ext::oneapi::experimental::annotated_ptr ptr; - ext::oneapi::experimental::annotated_arg arg; - sycl::stream str(8192, 1024, h); - h.set_args(acc, lacc, S, str, arg, ptr); - h.parallel_for(nd_range{{1}, {1}}, Kernel); - }); - return 0; +int main() { + queue Q; + kernel_bundle bundle = + get_kernel_bundle(Q.get_context()); + kernel_id id = ext::oneapi::experimental::get_kernel_id(); + kernel Kernel = bundle.get_kernel(id); + Q.submit([&](handler &h) { + accessor acc; + local_accessor lacc; + sycl::sampler S(sycl::coordinate_normalization_mode::unnormalized, + sycl::addressing_mode::clamp, + sycl::filtering_mode::nearest); + ext::oneapi::experimental::annotated_ptr ptr; + ext::oneapi::experimental::annotated_arg arg; + sycl::stream str(8192, 1024, h); + h.set_args(acc, lacc, S, str, arg, ptr); + h.parallel_for(nd_range{{1}, {1}}, Kernel); + }); + return 0; } From f0e9e1d46e7fbff1916811bedd3fe728b13839a8 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 17 Jul 2025 19:29:06 -0700 Subject: [PATCH 018/105] Use offsets to access struct member in runtime --- clang/lib/Sema/SemaSYCL.cpp | 100 ++++++++++++++++++------------------ 1 file changed, 51 insertions(+), 49 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index d208a083a274c..2e3776ff9a5e9 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -6257,7 +6257,7 @@ class SYCLFwdDeclEmitter } void Visit(QualType T) { - if (T.isNull()) +if (T.isNull()) return; InnerTypeVisitor::Visit(T.getTypePtr()); } @@ -7095,6 +7095,52 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { } ParmListWithNamesOstream.flush(); + Policy.SuppressTagKeyword = false; + FunctionTemplateDecl *FTD = K.SyclKernel->getPrimaryTemplate(); + Policy.PrintAsCanonical = false; + Policy.SuppressDefinition = true; + Policy.PolishForDeclaration = true; + Policy.FullyQualifiedName = true; + Policy.EnforceScopeForElaboratedTypes = true; + Policy.UseFullyQualifiedEnumerators = true; + + // Now we need to print the declaration of the kernel itself. + // Example: + // template struct Arg { + // T val; + // }; + // For the following free function kernel: + // template + // SYCL_EXT_ONEAPI_FUNCTION_PROPERTY( + // (ext::oneapi::experimental::nd_range_kernel<1>)) + // void foo(Arg arg) {} + // Integration header must contain the following declaration: + // template + // void foo(Arg arg); + // SuppressDefaultTemplateArguments is a downstream addition that suppresses + // default template arguments in the function declaration. It should be set + // to true to emit function declaration that won't cause any compilation + // errors when present in the integration header. + // To print Arg in the function declaration and shim functions we + // need to disable default arguments printing suppression via community flag + // SuppressDefaultTemplateArgs, otherwise they will be suppressed even for + // canonical types or if even written in the original source code. + Policy.SuppressDefaultTemplateArguments = true; + // EnforceDefaultTemplateArgs is a downstream addition that forces printing + // template arguments that match default template arguments while printing + // template-ids, even if the source code doesn't reference them. + Policy.EnforceDefaultTemplateArgs = true; + FreeFunctionPrinter FFPrinter(O, Policy); + if (FTD) { + FFPrinter.printFreeFunctionDeclaration(FTD); + if (const auto kind = K.SyclKernel->getTemplateSpecializationKind(); + K.SyclKernel->isFunctionTemplateSpecialization() && + kind == TSK_ExplicitSpecialization) + FFPrinter.printFreeFunctionDeclaration(K.SyclKernel, ParmListWithNames); + } else { + FFPrinter.printFreeFunctionDeclaration(K.SyclKernel, ParmListWithNames); + } + // Now we handle all parameters that are structs that contain special types // inside. Their information is coontained in SpecialTypeOffsetMap with keys // the structs and values a vector of pairs representing the type and the @@ -7113,7 +7159,6 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { "sycl::ext::oneapi::experimental::detail::is_special_type_" "wrapper<"; Policy.SuppressTagKeyword = true; - Param->getType().print(O, Policy); O << "> {\n"; O << " inline static constexpr bool value = true;\n};\n\n"; @@ -7142,57 +7187,14 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << " NumArgs = " << SpecialTypeOffsetMap[Param->getType().getTypePtr()].size() << ";\n"; - O << " }\n};\n} // namespace detail \n} // namespace experimental \n} " - "// namespace oneapi \n} // namespace ext \n} // namespace _V1\n} " + O << " }\n};\n} // namespace detail \n} // namespace experimental " + "\n} " + "// namespace oneapi \n} // namespace ext \n} // namespace " + "_V1\n} " "// namespace sycl\n\n"; visited[Param->getType().getTypePtr()] = true; } } - Policy.SuppressTagKeyword = false; - FunctionTemplateDecl *FTD = K.SyclKernel->getPrimaryTemplate(); - Policy.PrintAsCanonical = false; - Policy.SuppressDefinition = true; - Policy.PolishForDeclaration = true; - Policy.FullyQualifiedName = true; - Policy.EnforceScopeForElaboratedTypes = true; - Policy.UseFullyQualifiedEnumerators = true; - - // Now we need to print the declaration of the kernel itself. - // Example: - // template struct Arg { - // T val; - // }; - // For the following free function kernel: - // template - // SYCL_EXT_ONEAPI_FUNCTION_PROPERTY( - // (ext::oneapi::experimental::nd_range_kernel<1>)) - // void foo(Arg arg) {} - // Integration header must contain the following declaration: - // template - // void foo(Arg arg); - // SuppressDefaultTemplateArguments is a downstream addition that suppresses - // default template arguments in the function declaration. It should be set - // to true to emit function declaration that won't cause any compilation - // errors when present in the integration header. - // To print Arg in the function declaration and shim functions we - // need to disable default arguments printing suppression via community flag - // SuppressDefaultTemplateArgs, otherwise they will be suppressed even for - // canonical types or if even written in the original source code. - Policy.SuppressDefaultTemplateArguments = true; - // EnforceDefaultTemplateArgs is a downstream addition that forces printing - // template arguments that match default template arguments while printing - // template-ids, even if the source code doesn't reference them. - Policy.EnforceDefaultTemplateArgs = true; - FreeFunctionPrinter FFPrinter(O, Policy); - if (FTD) { - FFPrinter.printFreeFunctionDeclaration(FTD); - if (const auto kind = K.SyclKernel->getTemplateSpecializationKind(); - K.SyclKernel->isFunctionTemplateSpecialization() && - kind == TSK_ExplicitSpecialization) - FFPrinter.printFreeFunctionDeclaration(K.SyclKernel, ParmListWithNames); - } else { - FFPrinter.printFreeFunctionDeclaration(K.SyclKernel, ParmListWithNames); - } FFPrinter.printFreeFunctionShim(K.SyclKernel, ShimCounter, ParmList); O << ";\n"; From 453ca5e0c0b6613a34088f5311d575a5c77a745e Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 17 Jul 2025 22:32:40 -0400 Subject: [PATCH 019/105] Update SemaSYCL.cpp --- clang/lib/Sema/SemaSYCL.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 2e3776ff9a5e9..110c0c4e114ae 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -7094,8 +7094,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { } } ParmListWithNamesOstream.flush(); - - Policy.SuppressTagKeyword = false; + FunctionTemplateDecl *FTD = K.SyclKernel->getPrimaryTemplate(); Policy.PrintAsCanonical = false; Policy.SuppressDefinition = true; From 923c9496b6fb83dd0521d6520e805530d26a5f32 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Fri, 18 Jul 2025 07:26:34 -0700 Subject: [PATCH 020/105] Apply feedback --- clang/include/clang/Sema/SemaSYCL.h | 4 +-- clang/lib/Sema/SemaSYCL.cpp | 17 +++++----- sycl/include/sycl/detail/kernel_desc.hpp | 2 +- .../experimental/free_function_traits.hpp | 9 ++--- sycl/include/sycl/handler.hpp | 33 ++++++++----------- sycl/source/detail/scheduler/commands.cpp | 5 +++ sycl/source/handler.cpp | 2 +- 7 files changed, 36 insertions(+), 36 deletions(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index 2d717929a04af..a115fa032bf79 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -65,8 +65,8 @@ class SYCLIntegrationHeader { kind_work_group_memory, kind_dynamic_work_group_memory, kind_dynamic_accessor, - kind_special_type_wrapper, - kind_last = kind_special_type_wrapper + kind_struct_with_special_type, + kind_last = kind_struct_with_special_type }; public: diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 2e3776ff9a5e9..ac31586a94a48 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -5024,7 +5024,7 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { } bool enterStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType Ty) final { - addParam(PD, Ty, SYCLIntegrationHeader::kind_special_type_wrapper); + addParam(PD, Ty, SYCLIntegrationHeader::kind_struct_with_special_type); ParentStruct = Ty.getTypePtr(); return true; } @@ -6124,7 +6124,7 @@ static const char *paramKind2Str(KernelParamKind K) { CASE(work_group_memory); CASE(dynamic_work_group_memory); CASE(dynamic_accessor); - CASE(special_type_wrapper); + CASE(struct_with_special_type); } return ""; @@ -6257,7 +6257,7 @@ class SYCLFwdDeclEmitter } void Visit(QualType T) { -if (T.isNull()) + if (T.isNull()) return; InnerTypeVisitor::Visit(T.getTypePtr()); } @@ -7094,7 +7094,6 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { } } ParmListWithNamesOstream.flush(); - Policy.SuppressTagKeyword = false; FunctionTemplateDecl *FTD = K.SyclKernel->getPrimaryTemplate(); Policy.PrintAsCanonical = false; @@ -7142,7 +7141,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { } // Now we handle all parameters that are structs that contain special types - // inside. Their information is coontained in SpecialTypeOffsetMap with keys + // inside. Their information is contained in SpecialTypeOffsetMap with keys // the structs and values a vector of pairs representing the type and the // offset of each special type inside this struct. llvm::DenseMap visited; @@ -7153,11 +7152,11 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { // special type nor a trivially copyable type. We therefore need to // explicitly communicate to the runtime that this argument should be // allowed as a free function kernel argument. We do this by defining - // is_special_type_wrapper to be true. + // is_struct_with_special_type to be true. O << "template <>\n"; O << "struct " - "sycl::ext::oneapi::experimental::detail::is_special_type_" - "wrapper<"; + "sycl::ext::oneapi::experimental::detail::is_struct_with_special_" + "type"; Policy.SuppressTagKeyword = true; Param->getType().print(O, Policy); O << "> {\n"; @@ -7165,7 +7164,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << "namespace sycl { inline namespace _V1 { namespace ext { " "namespace oneapi { namespace " "experimental { namespace detail { \n"; - O << "template <> struct special_type_wrapper_info<"; + O << "template <> struct struct_with_special_type_info<"; Param->getType().print(O, Policy); O << "> {\n"; O << "template< typename ArgT, typename HandlerT, typename = " diff --git a/sycl/include/sycl/detail/kernel_desc.hpp b/sycl/include/sycl/detail/kernel_desc.hpp index 16dd7fdc8f033..ab255497a02ae 100644 --- a/sycl/include/sycl/detail/kernel_desc.hpp +++ b/sycl/include/sycl/detail/kernel_desc.hpp @@ -61,7 +61,7 @@ enum class kernel_param_kind_t { kind_work_group_memory = 6, kind_dynamic_work_group_memory = 7, kind_dynamic_accessor = 8, - kind_special_type_wrapper = 9, + kind_struct_with_special_type = 9, kind_invalid = 0xf, // not a valid kernel kind }; diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index 274f1f08c4a99..1c2508a897370 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -46,9 +46,10 @@ template inline constexpr bool is_kernel_v = is_kernel::value; namespace detail { -// A special type wrapper is a struct type that contains special types. -// The frontend defines this trait to be true after analyzing the struct at compile time. -template struct is_special_type_wrapper { +// A struct with special type is a struct type that contains special types. +// The frontend defines this trait to be true after analyzing the struct at +// compile time. +template struct is_struct_with_special_type { inline static constexpr bool value = false; }; @@ -57,7 +58,7 @@ template struct is_special_type_wrapper { // the level of nesting. So if type Foo contains two accessors inside and the // user calls set_arg(Foo), that call will call this function which will call // set_arg for each of those two accessors. -template struct special_type_wrapper_info { +template struct struct_with_special_type_info { template static void set_arg(int ArgIndex, ArgT &arg, HandlerT &cgh, int &NumArgs) {} }; diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 77b319ae3268b..9fada0865993c 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -162,8 +162,8 @@ __SYCL_EXPORT void *async_malloc_from_pool(sycl::handler &h, size_t size, } // namespace ext::oneapi::experimental namespace ext::oneapi::experimental::detail { -template struct is_special_type_wrapper; -template struct special_type_wrapper_info; +template struct is_struct_with_special_type; +template struct struct_with_special_type_info; class dynamic_parameter_base; class dynamic_work_group_memory_base; class dynamic_local_accessor_base; @@ -707,9 +707,9 @@ class __SYCL_EXPORT handler { if (!std::is_same::value && std::is_pointer::value) { addArg(detail::kernel_param_kind_t::kind_pointer, StoredArg, sizeof(T), ArgIndex); - } else if (ext::oneapi::experimental::detail::is_special_type_wrapper< + } else if (ext::oneapi::experimental::detail::is_struct_with_special_type< remove_cv_ref_t>::value) { - addArg(detail::kernel_param_kind_t::kind_special_type_wrapper, StoredArg, + addArg(detail::kernel_param_kind_t::kind_struct_with_special_type, StoredArg, sizeof(T), ArgIndex); } else { addArg(detail::kernel_param_kind_t::kind_std_layout, StoredArg, sizeof(T), @@ -1871,7 +1871,9 @@ class __SYCL_EXPORT handler { || (!is_same_type::value && std::is_pointer_v>) // USM || is_same_type::value // Interop - || is_same_type::value; // Stream + || is_same_type::value // Stream + || ext::oneapi::experimental::detail::is_struct_with_special_type< + remove_cv_ref_t>::value; // Structs that contain special types }; /// Sets argument for OpenCL interoperability kernels. @@ -1884,6 +1886,13 @@ class __SYCL_EXPORT handler { typename std::enable_if_t::value, void> set_arg(int ArgIndex, T &&Arg) { setArgHelper(ArgIndex, std::move(Arg)); + if constexpr (ext::oneapi::experimental::detail:: + is_struct_with_special_type>::value) { + int NumArgs; + ext::oneapi::experimental::detail::struct_with_special_type_info< + remove_cv_ref_t>::set_arg(ArgIndex + 1, Arg, *this, NumArgs); + MArgShift += NumArgs; + } } template - typename std::enable_if_t< - ext::oneapi::experimental::detail::is_special_type_wrapper< - remove_cv_ref_t>::value, - void> - set_arg(int ArgIndex, T &Arg) { - setArgHelper(ArgIndex, Arg); - int NumArgs; - ext::oneapi::experimental::detail::special_type_wrapper_info< - remove_cv_ref_t>::template set_arg(ArgIndex + 1, Arg, *this, - NumArgs); - MArgShift += NumArgs; - } - // set_arg for graph dynamic_parameters template void set_arg(int argIndex, diff --git a/sycl/source/detail/scheduler/commands.cpp b/sycl/source/detail/scheduler/commands.cpp index 4ac11b25c9ff2..5acae4bd9c80b 100644 --- a/sycl/source/detail/scheduler/commands.cpp +++ b/sycl/source/detail/scheduler/commands.cpp @@ -2360,6 +2360,11 @@ static void SetArgBasedOnType( break; } + case kernel_param_kind_t::kind_struct_with_special_type: { + Adapter.call(Kernel, NextTrueIndex, + Arg.MSize, nullptr, Arg.MPtr); + break; + } case kernel_param_kind_t::kind_sampler: { sampler *SamplerPtr = (sampler *)Arg.MPtr; ur_sampler_handle_t Sampler = diff --git a/sycl/source/handler.cpp b/sycl/source/handler.cpp index fdc619414c008..a55eaa2956f3c 100644 --- a/sycl/source/handler.cpp +++ b/sycl/source/handler.cpp @@ -1066,7 +1066,7 @@ void handler::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind, } switch (Kind) { - case kernel_param_kind_t::kind_special_type_wrapper: + case kernel_param_kind_t::kind_struct_with_special_type: case kernel_param_kind_t::kind_std_layout: case kernel_param_kind_t::kind_pointer: { addArg(Kind, Ptr, Size, Index + IndexShift); From a72ff0ad80a025ce7a37b350f783833e709104b4 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Fri, 18 Jul 2025 07:29:39 -0700 Subject: [PATCH 021/105] Fix unused parameter errors --- .../sycl/ext/oneapi/experimental/free_function_traits.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index 1c2508a897370..f219829c6e7e1 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -60,7 +60,12 @@ template struct is_struct_with_special_type { // set_arg for each of those two accessors. template struct struct_with_special_type_info { template - static void set_arg(int ArgIndex, ArgT &arg, HandlerT &cgh, int &NumArgs) {} + static void set_arg(int ArgIndex, ArgT &arg, HandlerT &cgh, int &NumArgs) { + (void)ArgIndex; + (void)arg; + (void)cgh; + (void)NumArgs; + } }; } // namespace detail From 71c8c10527b8869404c16a280f19201d3d86ea78 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Fri, 18 Jul 2025 07:33:47 -0700 Subject: [PATCH 022/105] Apply feedback --- sycl/include/sycl/handler.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 9fada0865993c..e67a7f0288d9f 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -709,8 +709,8 @@ class __SYCL_EXPORT handler { ArgIndex); } else if (ext::oneapi::experimental::detail::is_struct_with_special_type< remove_cv_ref_t>::value) { - addArg(detail::kernel_param_kind_t::kind_struct_with_special_type, StoredArg, - sizeof(T), ArgIndex); + addArg(detail::kernel_param_kind_t::kind_struct_with_special_type, + StoredArg, sizeof(T), ArgIndex); } else { addArg(detail::kernel_param_kind_t::kind_std_layout, StoredArg, sizeof(T), ArgIndex); From 77900d8e5430671dd199f77517586a1685256227 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Fri, 18 Jul 2025 10:57:01 -0700 Subject: [PATCH 023/105] Finish implementation --- clang/lib/Sema/SemaSYCL.cpp | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index ac07e81dcecb2..6a13335a0f7ec 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -2971,6 +2971,10 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { bool enterStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType Ty) final { ++StructDepth; + StringRef Name = "_arg_struct"; + addParam(Name, Ty); + CurrentStruct = Params.back(); + return true; } @@ -2996,15 +3000,6 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { return true; } - bool handleStructType(ParmVarDecl *PD, QualType Ty) final { - StringRef Name = "_arg_struct"; - addParam(Name, Ty); - CurrentStruct = Params.back(); - return true; - } - - bool handleStructType(FieldDecl *, QualType) final { return true; } - bool handleSyclSpecialType(const CXXRecordDecl *, const CXXBaseSpecifier &BS, QualType FieldTy) final { const auto *RecordDecl = FieldTy->getAsCXXRecordDecl(); @@ -7155,11 +7150,20 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << "template <>\n"; O << "struct " "sycl::ext::oneapi::experimental::detail::is_struct_with_special_" - "type"; + "type<"; Policy.SuppressTagKeyword = true; Param->getType().print(O, Policy); O << "> {\n"; O << " inline static constexpr bool value = true;\n};\n\n"; + // Now we define the set_arg function for this struct that contains + // special types. It takes the handler as an argument so that we can + // ultimately call set_arg on the handler for each special type + // contained in the struct. First, emit forward declarations for the + // special types contained within. + for (const auto TypeOffsetPair : + SpecialTypeOffsetMap[Param->getType().getTypePtr()]) + FwdDeclEmitter.Visit( + TypeOffsetPair.first.getDesugaredType(S.getASTContext())); O << "namespace sycl { inline namespace _V1 { namespace ext { " "namespace oneapi { namespace " "experimental { namespace detail { \n"; @@ -7167,7 +7171,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { Param->getType().print(O, Policy); O << "> {\n"; O << "template< typename ArgT, typename HandlerT, typename = " - "std::enable_if_t, "; + "std::enable_if_t, "; Param->getType().print(O, Policy); O << ">>>\n"; O << " static void set_arg(int ArgIndex, ArgT& "; @@ -7175,6 +7179,8 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << ", HandlerT& cgh, int &NumArgs) {\n"; for (const auto TypeOffsetPair : SpecialTypeOffsetMap[Param->getType().getTypePtr()]) { + FwdDeclEmitter.Visit( + TypeOffsetPair.first.getDesugaredType(S.getASTContext())); O << " cgh.set_arg(ArgIndex, *("; TypeOffsetPair.first.print(O, Policy); O << " *)"; @@ -7193,7 +7199,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { visited[Param->getType().getTypePtr()] = true; } } - + Policy.SuppressTagKeyword = false; FFPrinter.printFreeFunctionShim(K.SyclKernel, ShimCounter, ParmList); O << ";\n"; O << "}\n"; @@ -7222,7 +7228,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << "};\n"; O << "}\n"; ++ShimCounter; - } + } if (FreeFunctionCount > 0) { O << "\n#include \n"; From 03bb317835228fcb1d546cb05488ee46e70b17c7 Mon Sep 17 00:00:00 2001 From: "Bushi, Lorenc" Date: Fri, 18 Jul 2025 20:03:39 +0200 Subject: [PATCH 024/105] Formatting --- clang/lib/Sema/SemaSYCL.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 6a13335a0f7ec..114cf523e30b3 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -7228,7 +7228,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << "};\n"; O << "}\n"; ++ShimCounter; - } + } if (FreeFunctionCount > 0) { O << "\n#include \n"; From 0b0cc869c296b345d46eae2fc595e258e59b8df1 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Fri, 18 Jul 2025 14:19:17 -0700 Subject: [PATCH 025/105] Improve implementation --- clang/include/clang/Sema/SemaSYCL.h | 15 +++--- clang/lib/Sema/SemaSYCL.cpp | 48 +++++++++---------- .../experimental/free_function_traits.hpp | 8 ++-- 3 files changed, 33 insertions(+), 38 deletions(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index a115fa032bf79..e2611303c2a88 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -119,10 +119,9 @@ class SYCLIntegrationHeader { /// integration header is required. void addHostPipeRegistration() { NeedToEmitHostPipeRegistration = true; } - // Add the entry (Ty, Offset) to the SpecialTypeOffsetMap. - void addSpecialTypeOffset(const Type *ParentStruct, QualType Ty, - int64_t offset) { - SpecialTypeOffsetMap[ParentStruct].push_back(std::make_pair(Ty, offset)); + // Add ParentStruct to StructsWithSpecialTypes. + void addStructWithSpecialType(const RecordDecl *ParentStruct) { + StructsWithSpecialTypes[ParentStruct] = true; } private: @@ -213,11 +212,9 @@ class SYCLIntegrationHeader { /// type and __sycl_host_pipe_registrar variable are required to emit. bool NeedToEmitHostPipeRegistration = false; - // A map that keeps track of type and offset of each special class contained - // inside a struct - llvm::DenseMap, 8>> - SpecialTypeOffsetMap; + // A map that keeps track of all structs encountered with + // special types inside. + llvm::DenseMap StructsWithSpecialTypes; }; class SYCLIntegrationFooter { diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 6a13335a0f7ec..e698f723721b8 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -2960,7 +2960,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { // diagnosed on the actual kernel. KernelDecl->addAttr( SYCLKernelAttr::CreateImplicit(SemaSYCLRef.getASTContext())); - + KernelDecl->dump(); SemaSYCLRef.addSyclDeviceDecl(KernelDecl); } @@ -2974,7 +2974,6 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { StringRef Name = "_arg_struct"; addParam(Name, Ty); CurrentStruct = Params.back(); - return true; } @@ -4890,7 +4889,7 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { "Unexpected SYCL special class when generating integration header"); } if (ParentStruct) - Header.addSpecialTypeOffset(ParentStruct, FieldTy, offsetOf(FD, FieldTy)); + Header.addStructWithSpecialType(ParentStruct->getAsCXXRecordDecl()); return true; } @@ -7135,13 +7134,16 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { } // Now we handle all parameters that are structs that contain special types - // inside. Their information is contained in SpecialTypeOffsetMap with keys - // the structs and values a vector of pairs representing the type and the - // offset of each special type inside this struct. - llvm::DenseMap visited; + // inside. Their information is contained in StructsWithSpecialTypes. + llvm::DenseMap visited; for (ParmVarDecl *Param : K.SyclKernel->parameters()) { - if (SpecialTypeOffsetMap.count(Param->getType().getTypePtr()) && - !visited[Param->getType().getTypePtr()]) { + if (StructsWithSpecialTypes.count( + Param->getType()->getAsCXXRecordDecl()) && + !visited[Param->getType()->getAsCXXRecordDecl()]) { + const RecordDecl *decl = Param->getType()->getAsCXXRecordDecl(); + int NumFields = 0; + for (const auto member : decl->fields()) + ++NumFields; // this is a struct that contains a special type so its neither a // special type nor a trivially copyable type. We therefore need to // explicitly communicate to the runtime that this argument should be @@ -7157,13 +7159,13 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << " inline static constexpr bool value = true;\n};\n\n"; // Now we define the set_arg function for this struct that contains // special types. It takes the handler as an argument so that we can - // ultimately call set_arg on the handler for each special type + // ultimately call set_arg on the handler for each member // contained in the struct. First, emit forward declarations for the - // special types contained within. - for (const auto TypeOffsetPair : - SpecialTypeOffsetMap[Param->getType().getTypePtr()]) - FwdDeclEmitter.Visit( - TypeOffsetPair.first.getDesugaredType(S.getASTContext())); + // types contained within. + for (const auto member : decl->fields()) + if (isSyclSpecialType(member->getType(), S)) + FwdDeclEmitter.Visit( + member->getType().getDesugaredType(S.getASTContext())); O << "namespace sycl { inline namespace _V1 { namespace ext { " "namespace oneapi { namespace " "experimental { namespace detail { \n"; @@ -7177,26 +7179,22 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << " static void set_arg(int ArgIndex, ArgT& "; O << "arg"; O << ", HandlerT& cgh, int &NumArgs) {\n"; - for (const auto TypeOffsetPair : - SpecialTypeOffsetMap[Param->getType().getTypePtr()]) { - FwdDeclEmitter.Visit( - TypeOffsetPair.first.getDesugaredType(S.getASTContext())); + for (const auto member : decl->fields()) { O << " cgh.set_arg(ArgIndex, *("; - TypeOffsetPair.first.print(O, Policy); + member->getType().print(O, Policy); O << " *)"; - O << "((char *)(&arg) + " << TypeOffsetPair.second << ")"; + O << "((char *)(&arg) + " + << S.getASTContext().getFieldOffset(member) / 8 << ")"; O << ");\n"; O << " ++ArgIndex;\n"; } - O << " NumArgs = " - << SpecialTypeOffsetMap[Param->getType().getTypePtr()].size() - << ";\n"; + O << " NumArgs = " << NumFields << ";\n"; O << " }\n};\n} // namespace detail \n} // namespace experimental " "\n} " "// namespace oneapi \n} // namespace ext \n} // namespace " "_V1\n} " "// namespace sycl\n\n"; - visited[Param->getType().getTypePtr()] = true; + visited[Param->getType()->getAsCXXRecordDecl()] = true; } } Policy.SuppressTagKeyword = false; diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index f219829c6e7e1..b45f3fd596bd3 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -54,10 +54,10 @@ template struct is_struct_with_special_type { }; // This struct is made to be specialized in the integration header. -// It calls set_arg for every special type contained in the struct regardless of -// the level of nesting. So if type Foo contains two accessors inside and the -// user calls set_arg(Foo), that call will call this function which will call -// set_arg for each of those two accessors. +// It calls set_arg for every member contained in the struct at any level of +// composition. So if type Foo contains two accessors and an integer inside and +// the user calls set_arg(Foo), that call will call this function which will +// call set_arg for each of those two accessors and for the int. template struct struct_with_special_type_info { template static void set_arg(int ArgIndex, ArgT &arg, HandlerT &cgh, int &NumArgs) { From ca2310d4c3862a0754d61a845ea9eae324caeefa Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Mon, 21 Jul 2025 12:57:18 -0700 Subject: [PATCH 026/105] Apply more suggestions --- clang/include/clang/Sema/SemaSYCL.h | 19 +- clang/lib/Sema/SemaSYCL.cpp | 410 ++++++++++-------- .../experimental/free_function_traits.hpp | 9 +- sycl/include/sycl/handler.hpp | 12 +- sycl/source/detail/handler_impl.hpp | 7 + sycl/source/handler.cpp | 11 +- 6 files changed, 253 insertions(+), 215 deletions(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index e2611303c2a88..561e169890361 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -119,11 +119,6 @@ class SYCLIntegrationHeader { /// integration header is required. void addHostPipeRegistration() { NeedToEmitHostPipeRegistration = true; } - // Add ParentStruct to StructsWithSpecialTypes. - void addStructWithSpecialType(const RecordDecl *ParentStruct) { - StructsWithSpecialTypes[ParentStruct] = true; - } - private: // Kernel actual parameter descriptor. struct KernelParamDesc { @@ -211,10 +206,6 @@ class SYCLIntegrationHeader { /// Keeps track of whether declaration of __sycl_host_pipe_registration /// type and __sycl_host_pipe_registrar variable are required to emit. bool NeedToEmitHostPipeRegistration = false; - - // A map that keeps track of all structs encountered with - // special types inside. - llvm::DenseMap StructsWithSpecialTypes; }; class SYCLIntegrationFooter { @@ -277,6 +268,9 @@ class SemaSYCL : public SemaBase { llvm::DenseSet FreeFunctionDeclarations; + // A map that keeps track of all structs encountered with + // special types inside. Relevant for free function kernels only + llvm::DenseMap StructsWithSpecialTypes; public: SemaSYCL(Sema &S); @@ -327,6 +321,13 @@ class SemaSYCL : public SemaBase { SYCLKernelFunctions.insert(FD); } + /// Add ParentStruct to StructsWithSpecialTypes. + void addStructWithSpecialType(const RecordDecl *ParentStruct, QualType Ty) { + StructsWithSpecialTypes[ParentStruct] = Ty; + } + + auto &getStructsWithSpecialType() const { return StructsWithSpecialTypes; } + /// Lazily creates and returns SYCL integration header instance. SYCLIntegrationHeader &getSyclIntegrationHeader() { if (SyclIntHeader == nullptr) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 2eff6c0e11c1a..24983dc49c036 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -2277,7 +2277,7 @@ class SyclKernelDecompMarker : public SyclKernelFieldHandler { CollectionStack.back() = true; return true; } - bool handleSyclSpecialType(FieldDecl *, QualType) final { + bool handleSyclSpecialType(FieldDecl *FD, QualType) final { CollectionStack.back() = true; return true; } @@ -2960,7 +2960,6 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { // diagnosed on the actual kernel. KernelDecl->addAttr( SYCLKernelAttr::CreateImplicit(SemaSYCLRef.getASTContext())); - KernelDecl->dump(); SemaSYCLRef.addSyclDeviceDecl(KernelDecl); } @@ -3090,7 +3089,12 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { } bool handleScalarType(FieldDecl *FD, QualType FieldTy) final { - addParam(FD, FieldTy); + // if ParentStruct is non-null, we are dealing with a + // free function kernel. + // In this case, do not pass the scalar as a separate argument since it + // can be passed directly as part of its parent struct + if (!CurrentStruct) + addParam(FD, FieldTy); return true; } @@ -4530,9 +4534,18 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { for (const auto &child : CurrentStructs) { Base = buildMemberExpr(Base, child); } + for (auto it = CurrentStructs.rbegin(); it != CurrentStructs.rend(); ++it) + SemaSYCLRef.addStructWithSpecialType((*it)->getParent(), + (it + 1) == CurrentStructs.rend() + ? ParentStruct->getType() + : (*(it + 1))->getType()); MemberExpr *MemberAccess = buildMemberExpr(Base, FD); createSpecialMethodCall(FieldTy->getAsCXXRecordDecl(), InitMethodName, MemberAccess, BodyStmts); + SemaSYCLRef.addStructWithSpecialType(FD->getParent(), + CurrentStructs.size() + ? CurrentStructs.back()->getType() + : ParentStruct->getType()); return true; } @@ -4541,8 +4554,8 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { // typically if this is the case the default constructor will be private and // in such cases we must manually override the access specifier from private // to public just for the duration of this default initialization. - // TODO: Revisit this approach once https://github.com/intel/llvm/issues/16061 - // is closed. + // TODO: Revisit this approach once + // https://github.com/intel/llvm/issues/16061 is closed. bool handleSyclSpecialType(ParmVarDecl *PD, QualType ParamTy) final { // The code produced looks like this in the case of a work group memory // parameter: @@ -4589,137 +4602,141 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { return true; } - bool handleSyclSpecialType(const CXXRecordDecl *, const CXXBaseSpecifier &, - QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handleSyclSpecialType(const CXXRecordDecl *, const CXXBaseSpecifier &, + QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool handlePointerType(FieldDecl *, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handlePointerType(FieldDecl *, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool handlePointerType(ParmVarDecl *, QualType ParamTy) final { - Expr *PointerRef = createPointerParamReferenceExpr(ParamTy); - ArgExprs.push_back(PointerRef); - return true; - } + bool handlePointerType(ParmVarDecl *, QualType ParamTy) final { + Expr *PointerRef = createPointerParamReferenceExpr(ParamTy); + ArgExprs.push_back(PointerRef); + return true; + } - bool handleSimpleArrayType(FieldDecl *, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handleSimpleArrayType(FieldDecl *, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool handleNonDecompStruct(const CXXRecordDecl *, FieldDecl *, - QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handleNonDecompStruct(const CXXRecordDecl *, FieldDecl *, QualType) + final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool handleNonDecompStruct(const CXXRecordDecl *, ParmVarDecl *PD, - QualType) final { - Expr *TempCopy = createCopyInitExpr(PD); - ArgExprs.push_back(TempCopy); - return true; - } + bool handleNonDecompStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType) + final { + Expr *TempCopy = createCopyInitExpr(PD); + ArgExprs.push_back(TempCopy); + return true; + } - bool handleNonDecompStruct(const CXXRecordDecl *, const CXXBaseSpecifier &, - QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handleNonDecompStruct(const CXXRecordDecl *, const CXXBaseSpecifier &, + QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool handleScalarType(FieldDecl *FD, QualType FieldTy) final { return true; } + bool handleScalarType(FieldDecl * FD, QualType FieldTy) final { + return true; + } - bool handleScalarType(ParmVarDecl *, QualType) final { - Expr *ParamRef = createParamReferenceExpr(); - ArgExprs.push_back(ParamRef); - return true; - } + bool handleScalarType(ParmVarDecl *, QualType) final { + Expr *ParamRef = createParamReferenceExpr(); + ArgExprs.push_back(ParamRef); + return true; + } - bool handleUnionType(FieldDecl *, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handleUnionType(FieldDecl *, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool handleUnionType(ParmVarDecl *, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handleUnionType(ParmVarDecl *, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool enterStruct(const CXXRecordDecl *RD, FieldDecl *FD, QualType Ty) final { - CurrentStructs.push_back(FD); - return true; - } + bool enterStruct(const CXXRecordDecl *RD, FieldDecl *FD, QualType Ty) + final { + CurrentStructs.push_back(FD); + return true; + } - bool enterStruct(const CXXRecordDecl *RD, ParmVarDecl *PD, - QualType ParamTy) final { - return true; - } + bool enterStruct(const CXXRecordDecl *RD, ParmVarDecl *PD, QualType ParamTy) + final { + return true; + } - bool leaveStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { - CurrentStructs.pop_back(); - return true; - } + bool leaveStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { + CurrentStructs.pop_back(); + return true; + } - bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); - ArgExprs.push_back(SemaSYCLRef.SemaRef.BuildDeclRefExpr( - ParentStruct, ParentStruct->getType(), VK_PRValue, FreeFunctionSrcLoc)); - return true; - } + bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { + ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); + ArgExprs.push_back(SemaSYCLRef.SemaRef.BuildDeclRefExpr( + ParentStruct, ParentStruct->getType(), VK_PRValue, + FreeFunctionSrcLoc)); + return true; + } - bool enterStruct(const CXXRecordDecl *, const CXXBaseSpecifier &, - QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool enterStruct(const CXXRecordDecl *, const CXXBaseSpecifier &, QualType) + final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool leaveStruct(const CXXRecordDecl *, const CXXBaseSpecifier &, - QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool leaveStruct(const CXXRecordDecl *, const CXXBaseSpecifier &, QualType) + final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool enterArray(FieldDecl *, QualType, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool enterArray(FieldDecl *, QualType, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool enterArray(ParmVarDecl *, QualType, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool enterArray(ParmVarDecl *, QualType, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool leaveArray(FieldDecl *, QualType, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool leaveArray(FieldDecl *, QualType, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool leaveArray(ParmVarDecl *, QualType, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } - FieldDecl *getCurrentStruct() { - assert(CurrentStructs.size() && - "Current free function parameter is not inside a structure!"); - return CurrentStructs.back(); - } -}; + bool leaveArray(ParmVarDecl *, QualType, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } + FieldDecl *getCurrentStruct() { + assert(CurrentStructs.size() && + "Current free function parameter is not inside a structure!"); + return CurrentStructs.back(); + } + }; // Kernels are only the unnamed-lambda feature if the feature is enabled, AND // the first template argument has been corrected by the library to match the @@ -4739,9 +4756,6 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { llvm::SmallVector ArrayBaseOffsets; int StructDepth = 0; - // Set if we are currently exploring fields of a struct that is a free - // function kernel parameter - const Type *ParentStruct = nullptr; // A series of functions to calculate the change in offset based on the type. int64_t offsetOf(const FieldDecl *FD, QualType ArgTy) const { @@ -4780,9 +4794,8 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { uint64_t Size; Size = SemaSYCLRef.getASTContext().getTypeSizeInChars(ParamTy).getQuantity(); - Header.addParamDesc( - Kind, static_cast(Size), - static_cast((ParentStruct ? 0 : CurOffset) + OffsetAdj)); + Header.addParamDesc(Kind, static_cast(Size), + static_cast(CurOffset + OffsetAdj)); } public: @@ -4857,10 +4870,7 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { ? SYCLIntegrationHeader::kind_dynamic_accessor : SYCLIntegrationHeader::kind_accessor; - if (ParentStruct) - Header.addParamDesc(ParamKind, Info, offsetOf(FD, FieldTy)); - else - Header.addParamDesc(ParamKind, Info, CurOffset + offsetOf(FD, FieldTy)); + Header.addParamDesc(ParamKind, Info, CurOffset + offsetOf(FD, FieldTy)); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::stream)) { addParam(FD, FieldTy, SYCLIntegrationHeader::kind_stream); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::work_group_memory)) { @@ -4888,9 +4898,6 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { llvm_unreachable( "Unexpected SYCL special class when generating integration header"); } - if (ParentStruct) - Header.addStructWithSpecialType(ParentStruct->getAsCXXRecordDecl()); - return true; } @@ -5019,7 +5026,6 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { bool enterStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType Ty) final { addParam(PD, Ty, SYCLIntegrationHeader::kind_struct_with_special_type); - ParentStruct = Ty.getTypePtr(); return true; } @@ -5030,7 +5036,6 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - ParentStruct = nullptr; return true; } @@ -7048,6 +7053,11 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { unsigned ShimCounter = 1; int FreeFunctionCount = 0; + // Structs with special types inside needs some special code generation in the + // header and we keep this visited map to not have duplicates in case several + // free function kernels + // use the same structs as parameters. + llvm::DenseMap visitedStructWithSpecialType; for (const KernelDesc &K : KernelDescs) { if (!S.isFreeFunction(K.SyclKernel)) continue; @@ -7133,69 +7143,91 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { FFPrinter.printFreeFunctionDeclaration(K.SyclKernel, ParmListWithNames); } - // Now we handle all parameters that are structs that contain special types - // inside. Their information is contained in StructsWithSpecialTypes. - llvm::DenseMap visited; + // Now we handle all structs that contain special types + // inside. Their information is contained in StructsWithSpecialTypes of + // SemaSYCL. for (ParmVarDecl *Param : K.SyclKernel->parameters()) { - if (StructsWithSpecialTypes.count( - Param->getType()->getAsCXXRecordDecl()) && - !visited[Param->getType()->getAsCXXRecordDecl()]) { - const RecordDecl *decl = Param->getType()->getAsCXXRecordDecl(); - int NumFields = 0; - for (const auto member : decl->fields()) - ++NumFields; - // this is a struct that contains a special type so its neither a - // special type nor a trivially copyable type. We therefore need to - // explicitly communicate to the runtime that this argument should be - // allowed as a free function kernel argument. We do this by defining - // is_struct_with_special_type to be true. - O << "template <>\n"; - O << "struct " - "sycl::ext::oneapi::experimental::detail::is_struct_with_special_" - "type<"; - Policy.SuppressTagKeyword = true; - Param->getType().print(O, Policy); - O << "> {\n"; - O << " inline static constexpr bool value = true;\n};\n\n"; - // Now we define the set_arg function for this struct that contains - // special types. It takes the handler as an argument so that we can - // ultimately call set_arg on the handler for each member - // contained in the struct. First, emit forward declarations for the - // types contained within. - for (const auto member : decl->fields()) - if (isSyclSpecialType(member->getType(), S)) + if (!Param->getType()->isStructureType()) + continue; + const RecordDecl *Struct = + Param->getType()->getAsStructureType()->getDecl(); + QualType type = Param->getType(); + if (!S.getStructsWithSpecialType().count(Struct) || + visitedStructWithSpecialType.count(Struct)) + continue; + + FwdDeclEmitter.Visit(type.getDesugaredType(S.getASTContext())); + + // this is a struct that contains a special type so its neither a + // special type nor a trivially copyable type. We therefore need to + // explicitly communicate to the runtime that this argument should be + // allowed as a free function kernel argument. We do this by defining + // is_struct_with_special_type to be true. + O << "template <>\n"; + O << "struct " + "sycl::ext::oneapi::experimental::detail::is_struct_with_special_" + "type<"; + Policy.SuppressTagKeyword = true; + type.print(O, Policy); + O << "> {\n"; + O << " inline static constexpr bool value = true;\n};\n\n"; + // Now we define the set_arg function for this struct that contains + // special types. It takes the handler as an argument so that we can + // ultimately call set_arg on the handler for each special type member + // contained in the struct. First, emit needed forward declarations for + // all special types contained in the struct by doing a depth first search + // exploration of the struct. Also collect the offsets of all special + // types inside the struct while we're at it. + llvm::SmallVector, 8> offsets; + llvm::SmallVector dfs; + dfs.emplace_back(Struct); + while (!dfs.empty()) { + const auto top = dfs.pop_back_val(); + for (const auto member : top->fields()) { + if (isSyclSpecialType(member->getType(), S)) { FwdDeclEmitter.Visit( member->getType().getDesugaredType(S.getASTContext())); - O << "namespace sycl { inline namespace _V1 { namespace ext { " - "namespace oneapi { namespace " - "experimental { namespace detail { \n"; - O << "template <> struct struct_with_special_type_info<"; - Param->getType().print(O, Policy); - O << "> {\n"; - O << "template< typename ArgT, typename HandlerT, typename = " - "std::enable_if_t, "; - Param->getType().print(O, Policy); - O << ">>>\n"; - O << " static void set_arg(int ArgIndex, ArgT& "; - O << "arg"; - O << ", HandlerT& cgh, int &NumArgs) {\n"; - for (const auto member : decl->fields()) { - O << " cgh.set_arg(ArgIndex, *("; - member->getType().print(O, Policy); - O << " *)"; - O << "((char *)(&arg) + " - << S.getASTContext().getFieldOffset(member) / 8 << ")"; - O << ");\n"; - O << " ++ArgIndex;\n"; + offsets.emplace_back(std::make_pair( + member, S.getASTContext().getFieldOffset(member) / 8)); + } else if (member->getType()->isStructureType() && + S.getStructsWithSpecialType().count( + member->getType()->getAsStructureType()->getDecl())) { + dfs.emplace_back( + member->getType()->getAsStructureType()->getDecl()); + } } - O << " NumArgs = " << NumFields << ";\n"; - O << " }\n};\n} // namespace detail \n} // namespace experimental " - "\n} " - "// namespace oneapi \n} // namespace ext \n} // namespace " - "_V1\n} " - "// namespace sycl\n\n"; - visited[Param->getType()->getAsCXXRecordDecl()] = true; } + + O << "namespace sycl { inline namespace _V1 { namespace ext { " + "namespace oneapi { namespace " + "experimental { namespace detail { \n"; + O << "template <> struct struct_with_special_type_info<"; + type.print(O, Policy); + O << "> {\n"; + O << "template< typename ArgT, typename HandlerT, typename = " + "std::enable_if_t, "; + type.print(O, Policy); + O << ">>>\n"; + O << " static void set_arg(int ArgIndex, ArgT& "; + O << "arg"; + O << ", HandlerT& cgh, int &NumArgs) {\n"; + int NumFields = 0; + for (const auto fieldoffset : offsets) { + O << " cgh.set_arg(ArgIndex, *("; + fieldoffset.first->getType().print(O, Policy); + O << " *)"; + O << "((char *)(&arg) + " << fieldoffset.second << ")"; + O << ");\n"; + O << " ++ArgIndex;\n"; + ++NumFields; + } + O << " NumArgs = " << NumFields << ";\n"; + O << " }\n};\n} // namespace detail \n} // namespace experimental " + "\n} " + "// namespace oneapi \n} // namespace ext \n} // namespace " + "_V1\n} " + "// namespace sycl\n\n"; + visitedStructWithSpecialType[Struct] = true; } Policy.SuppressTagKeyword = false; FFPrinter.printFreeFunctionShim(K.SyclKernel, ShimCounter, ParmList); diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index b45f3fd596bd3..338122319dc0d 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -60,12 +60,9 @@ template struct is_struct_with_special_type { // call set_arg for each of those two accessors and for the int. template struct struct_with_special_type_info { template - static void set_arg(int ArgIndex, ArgT &arg, HandlerT &cgh, int &NumArgs) { - (void)ArgIndex; - (void)arg; - (void)cgh; - (void)NumArgs; - } + static void set_arg([[maybe_unused]] int ArgIndex, [[maybe_unused]] ArgT &arg, + [[maybe_unused]] HandlerT &cgh, + [[maybe_unused]] int &NumArgs) {} }; } // namespace detail diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index e67a7f0288d9f..ccb417105a3c0 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -1891,7 +1891,7 @@ class __SYCL_EXPORT handler { int NumArgs; ext::oneapi::experimental::detail::struct_with_special_type_info< remove_cv_ref_t>::set_arg(ArgIndex + 1, Arg, *this, NumArgs); - MArgShift += NumArgs; + updateArgShift(NumArgs); } } @@ -3448,13 +3448,6 @@ class __SYCL_EXPORT handler { event MLastEventDoNotUse; #endif - // Certain arguments such as structs that contain SYCL special types entail - // several hidden set_arg calls for every set_arg called by the user. This - // shift is required to make sure the following arguments set by the user have - // the correct index. It keeps track of how many of these hidden set_arg calls - // have been made so far. - int MArgShift = 0; - // Make queue_impl class friend to be able to call finalize method. friend class detail::queue_impl; // Make accessor class friend to keep the list of associated accessors. @@ -3844,6 +3837,9 @@ class __SYCL_EXPORT handler { void addArg(detail::kernel_param_kind_t ArgKind, void *Req, int AccessTarget, int ArgIndex); void clearArgs(); + + void updateArgShift(int); + void setArgsToAssociatedAccessors(); bool HasAssociatedAccessor(detail::AccessorImplHost *Req, diff --git a/sycl/source/detail/handler_impl.hpp b/sycl/source/detail/handler_impl.hpp index 0fda3dd4f2769..e50bd7c144028 100644 --- a/sycl/source/detail/handler_impl.hpp +++ b/sycl/source/detail/handler_impl.hpp @@ -149,6 +149,13 @@ class handler_impl { /// The list of arguments for the kernel. std::vector MArgs; + // Certain arguments such as structs that contain SYCL special types entail + // several hidden set_arg calls for every set_arg called by the user. This + // shift is required to make sure the following arguments set by the user have + // the correct index. It keeps track of how many of these hidden set_arg calls + // have been made so far. + int MArgShift = 0; + /// The list of associated accessors with this handler. /// These accessors were created with this handler as argument or /// have become required for this handler via require method. diff --git a/sycl/source/handler.cpp b/sycl/source/handler.cpp index a55eaa2956f3c..08fb8ba45bbfb 100644 --- a/sycl/source/handler.cpp +++ b/sycl/source/handler.cpp @@ -9,7 +9,7 @@ #include "sycl/detail/helpers.hpp" #include "ur_api.h" #include - +#include #include #include #include @@ -1067,6 +1067,9 @@ void handler::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind, switch (Kind) { case kernel_param_kind_t::kind_struct_with_special_type: + addArg(kernel_param_kind_t::kind_struct_with_special_type, Ptr, Size, + Index + IndexShift); + break; case kernel_param_kind_t::kind_std_layout: case kernel_param_kind_t::kind_pointer: { addArg(Kind, Ptr, Size, Index + IndexShift); @@ -2416,14 +2419,16 @@ void handler::addLifetimeSharedPtrStorage(std::shared_ptr SPtr) { void handler::addArg(detail::kernel_param_kind_t ArgKind, void *Req, int AccessTarget, int ArgIndex) { - impl->MArgs.emplace_back(ArgKind, Req, AccessTarget, ArgIndex + MArgShift); + impl->MArgs.emplace_back(ArgKind, Req, AccessTarget, ArgIndex + impl->MArgShift); } void handler::clearArgs() { impl->MArgs.clear(); - MArgShift = 0; + impl->MArgShift = 0; } +void handler::updateArgShift(int add) { impl->MArgShift += add; } + void handler::setArgsToAssociatedAccessors() { impl->MArgs = impl->MAssociatedAccesors; } From b99314996f22ec6e31376ee04dfffd10b03f9633 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Mon, 21 Jul 2025 19:11:03 -0700 Subject: [PATCH 027/105] Improve implementation --- sycl/source/handler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sycl/source/handler.cpp b/sycl/source/handler.cpp index 08fb8ba45bbfb..0de2129d113f1 100644 --- a/sycl/source/handler.cpp +++ b/sycl/source/handler.cpp @@ -9,7 +9,7 @@ #include "sycl/detail/helpers.hpp" #include "ur_api.h" #include -#include + #include #include #include From 1eb1c446ac3ed72b926be4d61251906ba27c1dc6 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 23 Jul 2025 09:30:08 -0700 Subject: [PATCH 028/105] Improve comments --- clang/lib/Sema/SemaSYCL.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 24983dc49c036..2f2612491f821 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -3089,10 +3089,10 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { } bool handleScalarType(FieldDecl *FD, QualType FieldTy) final { - // if ParentStruct is non-null, we are dealing with a + // if CurrentStruct is non-null, we are dealing with a // free function kernel. // In this case, do not pass the scalar as a separate argument since it - // can be passed directly as part of its parent struct + // can be passed directly as part of the struct that contains it. if (!CurrentStruct) addParam(FD, FieldTy); return true; From 08c2808101714bad1635910fadb197c8f9228e60 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 23 Jul 2025 09:41:56 -0700 Subject: [PATCH 029/105] Fix formatting --- clang/include/clang/Sema/SemaSYCL.h | 5 +- clang/lib/Sema/SemaSYCL.cpp | 227 +++++++++--------- .../experimental/free_function_traits.hpp | 9 +- sycl/source/handler.cpp | 3 +- 4 files changed, 122 insertions(+), 122 deletions(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index 1eb1f293928af..4b33116587fa6 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -269,8 +269,11 @@ class SemaSYCL : public SemaBase { llvm::DenseSet FreeFunctionDeclarations; // A map that keeps track of all structs encountered with - // special types inside. Relevant for free function kernels only + // special types inside. Relevant for free function kernels only. + // The key stores the struct as a declaration and the value stores the struct + // as a QualType just to make it easier to use it. llvm::DenseMap StructsWithSpecialTypes; + public: SemaSYCL(Sema &S); diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 0c11ef19a931c..66be26aee131b 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -4603,141 +4603,137 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { return true; } - bool handleSyclSpecialType(const CXXRecordDecl *, const CXXBaseSpecifier &, - QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handleSyclSpecialType(const CXXRecordDecl *, const CXXBaseSpecifier &, + QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool handlePointerType(FieldDecl *, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handlePointerType(FieldDecl *, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool handlePointerType(ParmVarDecl *, QualType ParamTy) final { - Expr *PointerRef = createPointerParamReferenceExpr(ParamTy); - ArgExprs.push_back(PointerRef); - return true; - } + bool handlePointerType(ParmVarDecl *, QualType ParamTy) final { + Expr *PointerRef = createPointerParamReferenceExpr(ParamTy); + ArgExprs.push_back(PointerRef); + return true; + } - bool handleSimpleArrayType(FieldDecl *, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handleSimpleArrayType(FieldDecl *, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool handleNonDecompStruct(const CXXRecordDecl *, FieldDecl *, QualType) - final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handleNonDecompStruct(const CXXRecordDecl *, FieldDecl *, + QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool handleNonDecompStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType) - final { - Expr *TempCopy = createCopyInitExpr(PD); - ArgExprs.push_back(TempCopy); - return true; - } + bool handleNonDecompStruct(const CXXRecordDecl *, ParmVarDecl *PD, + QualType) final { + Expr *TempCopy = createCopyInitExpr(PD); + ArgExprs.push_back(TempCopy); + return true; + } - bool handleNonDecompStruct(const CXXRecordDecl *, const CXXBaseSpecifier &, - QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handleNonDecompStruct(const CXXRecordDecl *, const CXXBaseSpecifier &, + QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool handleScalarType(FieldDecl * FD, QualType FieldTy) final { - return true; - } + bool handleScalarType(FieldDecl *FD, QualType FieldTy) final { return true; } - bool handleScalarType(ParmVarDecl *, QualType) final { - Expr *ParamRef = createParamReferenceExpr(); - ArgExprs.push_back(ParamRef); - return true; - } + bool handleScalarType(ParmVarDecl *, QualType) final { + Expr *ParamRef = createParamReferenceExpr(); + ArgExprs.push_back(ParamRef); + return true; + } - bool handleUnionType(FieldDecl *, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handleUnionType(FieldDecl *, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool handleUnionType(ParmVarDecl *, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handleUnionType(ParmVarDecl *, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool enterStruct(const CXXRecordDecl *RD, FieldDecl *FD, QualType Ty) - final { - CurrentStructs.push_back(FD); - return true; - } + bool enterStruct(const CXXRecordDecl *RD, FieldDecl *FD, QualType Ty) final { + CurrentStructs.push_back(FD); + return true; + } - bool enterStruct(const CXXRecordDecl *RD, ParmVarDecl *PD, QualType ParamTy) - final { - return true; - } + bool enterStruct(const CXXRecordDecl *RD, ParmVarDecl *PD, + QualType ParamTy) final { + return true; + } - bool leaveStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { - CurrentStructs.pop_back(); - return true; - } + bool leaveStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { + CurrentStructs.pop_back(); + return true; + } - bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); - ArgExprs.push_back(SemaSYCLRef.SemaRef.BuildDeclRefExpr( - ParentStruct, ParentStruct->getType(), VK_PRValue, - FreeFunctionSrcLoc)); - return true; - } + bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { + ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); + ArgExprs.push_back(SemaSYCLRef.SemaRef.BuildDeclRefExpr( + ParentStruct, ParentStruct->getType(), VK_PRValue, FreeFunctionSrcLoc)); + return true; + } - bool enterStruct(const CXXRecordDecl *, const CXXBaseSpecifier &, QualType) - final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool enterStruct(const CXXRecordDecl *, const CXXBaseSpecifier &, + QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool leaveStruct(const CXXRecordDecl *, const CXXBaseSpecifier &, QualType) - final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool leaveStruct(const CXXRecordDecl *, const CXXBaseSpecifier &, + QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool enterArray(FieldDecl *, QualType, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool enterArray(FieldDecl *, QualType, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool enterArray(ParmVarDecl *, QualType, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool enterArray(ParmVarDecl *, QualType, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool leaveArray(FieldDecl *, QualType, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool leaveArray(FieldDecl *, QualType, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool leaveArray(ParmVarDecl *, QualType, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } - FieldDecl *getCurrentStruct() { - assert(CurrentStructs.size() && - "Current free function parameter is not inside a structure!"); - return CurrentStructs.back(); - } - }; + bool leaveArray(ParmVarDecl *, QualType, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } + FieldDecl *getCurrentStruct() { + assert(CurrentStructs.size() && + "Current free function parameter is not inside a structure!"); + return CurrentStructs.back(); + } +}; // Kernels are only the unnamed-lambda feature if the feature is enabled, AND // the first template argument has been corrected by the library to match the @@ -4757,7 +4753,6 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { llvm::SmallVector ArrayBaseOffsets; int StructDepth = 0; - // A series of functions to calculate the change in offset based on the type. int64_t offsetOf(const FieldDecl *FD, QualType ArgTy) const { return isArrayElement(FD, ArgTy) diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index 338122319dc0d..7e9ae8d6d0ac6 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -54,10 +54,11 @@ template struct is_struct_with_special_type { }; // This struct is made to be specialized in the integration header. -// It calls set_arg for every member contained in the struct at any level of -// composition. So if type Foo contains two accessors and an integer inside and -// the user calls set_arg(Foo), that call will call this function which will -// call set_arg for each of those two accessors and for the int. +// It calls set_arg for every member of special type contained in the struct at +// any level of composition. The non-special type members can just be passed as +// part of the struct. So if type Foo contains two accessors and an integer +// inside and the user calls set_arg(Foo), that call will call this function +// which will call set_arg for each of those two accessors and not the int. template struct struct_with_special_type_info { template static void set_arg([[maybe_unused]] int ArgIndex, [[maybe_unused]] ArgT &arg, diff --git a/sycl/source/handler.cpp b/sycl/source/handler.cpp index 8142c76b4a0b5..d9619ab2c2503 100644 --- a/sycl/source/handler.cpp +++ b/sycl/source/handler.cpp @@ -2445,7 +2445,8 @@ void handler::addLifetimeSharedPtrStorage(std::shared_ptr SPtr) { void handler::addArg(detail::kernel_param_kind_t ArgKind, void *Req, int AccessTarget, int ArgIndex) { - impl->MArgs.emplace_back(ArgKind, Req, AccessTarget, ArgIndex + impl->MArgShift); + impl->MArgs.emplace_back(ArgKind, Req, AccessTarget, + ArgIndex + impl->MArgShift); } void handler::clearArgs() { From b9904200e70fc9f410e7246d306acccf0df58d44 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 23 Jul 2025 09:45:37 -0700 Subject: [PATCH 030/105] Improve comments further --- .../sycl/ext/oneapi/experimental/free_function_traits.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index 7e9ae8d6d0ac6..fb8bebf6c36c6 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -59,6 +59,10 @@ template struct is_struct_with_special_type { // part of the struct. So if type Foo contains two accessors and an integer // inside and the user calls set_arg(Foo), that call will call this function // which will call set_arg for each of those two accessors and not the int. +// The function stores in NumArgs the number of set_arg calls that it made so +// that subsequent set_arg calls initiated by the user can have the correct +// index. If the user provides the index ArgIndex the correct index will be +// ArgIndex + NumArgs template struct struct_with_special_type_info { template static void set_arg([[maybe_unused]] int ArgIndex, [[maybe_unused]] ArgT &arg, From eb0925fd3e3f66667fc0f7424f3706ed9dd434fc Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 31 Jul 2025 07:24:32 -0700 Subject: [PATCH 031/105] Add tests --- clang/lib/Sema/SemaSYCL.cpp | 28 ++++++++----------- ...with_special_types_as_kernel_paramters.cpp | 3 -- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 66be26aee131b..d43ac0766ec67 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -2277,7 +2277,7 @@ class SyclKernelDecompMarker : public SyclKernelFieldHandler { CollectionStack.back() = true; return true; } - bool handleSyclSpecialType(FieldDecl *FD, QualType) final { + bool handleSyclSpecialType(FieldDecl *, QualType) final { CollectionStack.back() = true; return true; } @@ -3090,12 +3090,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { } bool handleScalarType(FieldDecl *FD, QualType FieldTy) final { - // if CurrentStruct is non-null, we are dealing with a - // free function kernel. - // In this case, do not pass the scalar as a separate argument since it - // can be passed directly as part of the struct that contains it. - if (!CurrentStruct) - addParam(FD, FieldTy); + addParam(FD, FieldTy); return true; } @@ -7051,8 +7046,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { int FreeFunctionCount = 0; // Structs with special types inside needs some special code generation in the // header and we keep this visited map to not have duplicates in case several - // free function kernels - // use the same structs as parameters. + // free function kernels use the same struct type as parameters. llvm::DenseMap visitedStructWithSpecialType; for (const KernelDesc &K : KernelDescs) { if (!S.isFreeFunction(K.SyclKernel)) @@ -7169,25 +7163,25 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << " inline static constexpr bool value = true;\n};\n\n"; // Now we define the set_arg function for this struct that contains // special types. It takes the handler as an argument so that we can - // ultimately call set_arg on the handler for each special type member + // ultimately call set_arg on the handler for each member // contained in the struct. First, emit needed forward declarations for - // all special types contained in the struct by doing a depth first search - // exploration of the struct. Also collect the offsets of all special - // types inside the struct while we're at it. + // all types contained in the struct by doing a depth first search + // exploration of the struct. Also collect the offsets of all the + // members inside the struct while we're at it so that we can call + // set_arg for each one of those. llvm::SmallVector, 8> offsets; llvm::SmallVector dfs; dfs.emplace_back(Struct); while (!dfs.empty()) { const auto top = dfs.pop_back_val(); for (const auto member : top->fields()) { - if (isSyclSpecialType(member->getType(), S)) { + if (isSyclSpecialType(member->getType(), S) || + !member->getType()->isStructureType()) { FwdDeclEmitter.Visit( member->getType().getDesugaredType(S.getASTContext())); offsets.emplace_back(std::make_pair( member, S.getASTContext().getFieldOffset(member) / 8)); - } else if (member->getType()->isStructureType() && - S.getStructsWithSpecialType().count( - member->getType()->getAsStructureType()->getDecl())) { + } else if (member->getType()->isStructureType()) { dfs.emplace_back( member->getType()->getAsStructureType()->getDecl()); } diff --git a/sycl/test-e2e/FreeFunctionKernels/structs_with_special_types_as_kernel_paramters.cpp b/sycl/test-e2e/FreeFunctionKernels/structs_with_special_types_as_kernel_paramters.cpp index 72f4ca099fee3..81019f1e548c6 100644 --- a/sycl/test-e2e/FreeFunctionKernels/structs_with_special_types_as_kernel_paramters.cpp +++ b/sycl/test-e2e/FreeFunctionKernels/structs_with_special_types_as_kernel_paramters.cpp @@ -4,9 +4,6 @@ // This test verifies whether struct that contains either sycl::local_accesor or // sycl::accessor can be used with free function kernels extension. -// XFAIL: * -// XFAIL-TRACKER: CMPLRLLVM-67737 - #include #include #include From 6932522922d9fe455c867b4aac00b120bf95ed80 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 31 Jul 2025 07:24:50 -0700 Subject: [PATCH 032/105] Add tests --- .../CodeGenSYCL/free_function_int_header.cpp | 204 +++++++++++++++++- 1 file changed, 199 insertions(+), 5 deletions(-) diff --git a/clang/test/CodeGenSYCL/free_function_int_header.cpp b/clang/test/CodeGenSYCL/free_function_int_header.cpp index 48a03c6c65916..1cd5100102284 100644 --- a/clang/test/CodeGenSYCL/free_function_int_header.cpp +++ b/clang/test/CodeGenSYCL/free_function_int_header.cpp @@ -278,6 +278,39 @@ void ff_24(int arg); void ff_24(int arg) { } +// Tests with parameter types that are structs that contain special types inside e.g accessor + +struct AccessorAndLocalAccessor { + sycl::accessor acc; + sycl::local_accessor lacc; +}; + +struct AccessorAndInt { + sycl::accessor acc; + int a; +}; + +struct IntAndAccessor { + int a; + sycl::accessor acc; +}; + +struct SecondLevelAccessor { + AccessorAndInt accAndInt; +}; + +[[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 0)]] +void ff_25(AccessorAndLocalAccessor arg1) { +} + +[[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 0)]] +void ff_26(AccessorAndLocalAccessor arg1, SecondLevelAccessor arg2) { +} + +[[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 0)]] +void ff_27(IntAndAccessor arg1, AccessorAndInt) { +} + // CHECK: const char* const kernel_names[] = { // CHECK-NEXT: {{.*}}__sycl_kernel_ff_2Piii // CHECK-NEXT: {{.*}}__sycl_kernel_ff_2Piiii @@ -313,6 +346,10 @@ void ff_24(int arg) { // CHECK-NEXT: {{.*}}__sycl_kernel_ff_217DerivedPS_ // CHECK-NEXT: {{.*}}__sycl_kernel_ff_227DerivedPS_ // CHECK-NEXT: {{.*}}__sycl_kernel_ff_24i" +// CHECK-NEXT: {{.*}}__sycl_kernel_ff_2524AccessorAndLocalAccessor", +// CHECK-NEXT: {{.*}}__sycl_kernel_ff_2624AccessorAndLocalAccessor19SecondLevelAccessor", +// CHECK-NEXT: {{.*}}__sycl_kernel_ff_2714IntAndAccessor14AccessorAndInt", + // CHECK-NEXT: {{.*}}__sycl_kernel_ff_23i" // CHECK-NEXT: "" @@ -436,6 +473,27 @@ void ff_24(int arg) { // CHECK: //--- _Z19__sycl_kernel_ff_24i // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, +// CHECK: //--- _Z19__sycl_kernel_ff_2524AccessorAndLocalAccessor +// CHECK-NEXT: { kernel_param_kind_t::kind_struct_with_special_type, 36, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 36 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4064, 48 }, + +// CHECK: //--- _Z19__sycl_kernel_ff_2624AccessorAndLocalAccessor19SecondLevelAccessor +// CHECK-NEXT: { kernel_param_kind_t::kind_struct_with_special_type, 36, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 36 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4064, 48 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_struct_with_special_type, 16, 36 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 52 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 64 }, + +// CHECK: //--- _Z19__sycl_kernel_ff_2714IntAndAccessor14AccessorAndInt +// CHECK-NEXT: { kernel_param_kind_t::kind_struct_with_special_type, 16, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 16 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 20 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_struct_with_special_type, 16, 16 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 32 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 44 }, + // CHECK: //--- _Z19__sycl_kernel_ff_23i // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, @@ -1059,19 +1117,131 @@ void ff_24(int arg) { // CHECK-NEXT: static constexpr bool value = true; // CHECK-NEXT: }; +// CHECK: Definition of _Z19__sycl_kernel_ff_2524AccessorAndLocalAccessor as a free function kernel +// CHECK: Forward declarations of kernel and its argument types: +// CHECK: void ff_25(AccessorAndLocalAccessor arg1); +// CHECK-NEXT: template <> +// CHECK-NEXT: struct sycl::ext::oneapi::experimental::detail::is_struct_with_special_type { +// CHECK-NEXT: inline static constexpr bool value = true; +// CHECK-NEXT: }; + +// CHECK: template <> struct struct_with_special_type_info { +// CHECK-NEXT: template< typename ArgT, typename HandlerT, typename = std::enable_if_t, AccessorAndLocalAccessor>>> +// CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { +// CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::accessor > *)((char *)(&arg) + 0)); +// CHECK-NEXT: ++ArgIndex; +// CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::local_accessor *)((char *)(&arg) + 12)); +// CHECK-NEXT: ++ArgIndex; +// CHECK-NEXT: NumArgs = 2; +// CHECK-NEXT: } +// CHECK-NEXT: }; + +// CHECK: static constexpr auto __sycl_shim33() { +// CHECK-NEXT: return (void (*)(struct AccessorAndLocalAccessor))ff_25; +// CHECK-NEXT: } +// CHECK-NEXT: namespace sycl { +// CHECK-NEXT: template <> +// CHECK-NEXT: struct ext::oneapi::experimental::is_kernel<__sycl_shim33()> { +// CHECK-NEXT: static constexpr bool value = true; +// CHECK-NEXT: }; +// CHECK-NEXT: template <> +// CHECK-NEXT: struct ext::oneapi::experimental::is_single_task_kernel<__sycl_shim33()> { +// CHECK-NEXT: static constexpr bool value = true; +// CHECK-NEXT: }; + +// CHECK: Definition of _Z19__sycl_kernel_ff_2624AccessorAndLocalAccessor19SecondLevelAccessor as a free function kernel +// CHECK: Forward declarations of kernel and its argument types: +// CHECK: void ff_26(AccessorAndLocalAccessor arg1, SecondLevelAccessor arg2); +// CHECK-NEXT: template <> +// CHECK-NEXT: struct sycl::ext::oneapi::experimental::detail::is_struct_with_special_type { +// CHECK-NEXT: inline static constexpr bool value = true; +// CHECK-NEXT: }; + +// CHECK: template <> struct struct_with_special_type_info { +// CHECK-NEXT: template< typename ArgT, typename HandlerT, typename = std::enable_if_t, SecondLevelAccessor>>> +// CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { +// CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::accessor > *)((char *)(&arg) + 0)); +// CHECK-NEXT: ++ArgIndex; +// CHECK-NEXT: cgh.set_arg(ArgIndex, *(int *)((char *)(&arg) + 12)); +// CHECK-NEXT: ++ArgIndex; +// CHECK-NEXT: NumArgs = 2; +// CHECK-NEXT: } +// CHECK-NEXT: }; + +// CHECK: static constexpr auto __sycl_shim34() { +// CHECK-NEXT: return (void (*)(struct AccessorAndLocalAccessor, struct SecondLevelAccessor))ff_26; +// CHECK-NEXT:} +// CHECK-NEXT: namespace sycl { +// CHECK-NEXT: template <> +// CHECK-NEXT: struct ext::oneapi::experimental::is_kernel<__sycl_shim34()> { +// CHECK-NEXT: static constexpr bool value = true; +// CHECK-NEXT: }; +// CHECK-NEXT: template <> +// CHECK-NEXT: struct ext::oneapi::experimental::is_single_task_kernel<__sycl_shim34()> { +// CHECK-NEXT: static constexpr bool value = true; +// CHECK-NEXT }; + +// CHECK: Definition of _Z19__sycl_kernel_ff_2714IntAndAccessor14AccessorAndInt as a free function kernel +// CHECK: Forward declarations of kernel and its argument types: +// CHECK: void ff_27(IntAndAccessor arg1, AccessorAndInt ); +// CHECK-NEXT: template <> +// CHECK-NEXT: struct sycl::ext::oneapi::experimental::detail::is_struct_with_special_type { +// CHECK-NEXT: inline static constexpr bool value = true; +// CHECK-NEXT: }; + +// CHECK: template <> struct struct_with_special_type_info { +// CHECK-NEXT: template< typename ArgT, typename HandlerT, typename = std::enable_if_t, IntAndAccessor>>> +// CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { +// CHECK-NEXT: cgh.set_arg(ArgIndex, *(int *)((char *)(&arg) + 0)); +// CHECK-NEXT: ++ArgIndex; +// CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::accessor > *)((char *)(&arg) + 4)); +// CHECK-NEXT: ++ArgIndex; +// CHECK-NEXT: NumArgs = 2; +// CHECK-NEXT: } +// CHECK-NEXT: }; + +// CHECK: template <> +// CHECK-NEXT: struct sycl::ext::oneapi::experimental::detail::is_struct_with_special_type { +// CHECK-NEXT: inline static constexpr bool value = true; +// CHECK-NEXT: }; + +// CHECK: template <> struct struct_with_special_type_info { +// CHECK-NEXT: template< typename ArgT, typename HandlerT, typename = std::enable_if_t, AccessorAndInt>>> +// CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { +// CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::accessor > *)((char *)(&arg) + 0)); +// CHECK-NEXT: ++ArgIndex; +// CHECK-NEXT: cgh.set_arg(ArgIndex, *(int *)((char *)(&arg) + 12)); +// CHECK-NEXT: ++ArgIndex; +// CHECK-NEXT: NumArgs = 2; +// CHECK-NEXT: } +// CHECK-NEXT: }; + +// CHECK: static constexpr auto __sycl_shim35() { +// CHECK-NEXT: return (void (*)(struct IntAndAccessor, struct AccessorAndInt))ff_27; +// CHECK-NEXT: } +// CHECK-NEXT: namespace sycl { +// CHECK-NEXT: template <> +// CHECK-NEXT: struct ext::oneapi::experimental::is_kernel<__sycl_shim35()> { +// CHECK-NEXT: static constexpr bool value = true; +// CHECK-NEXT: }; +// CHECK-NEXT: template <> +// CHECK-NEXT: struct ext::oneapi::experimental::is_single_task_kernel<__sycl_shim35()> { +// CHECK-NEXT: static constexpr bool value = true; +// CHECK-NEXT: }; + // CHECK: Definition of _Z19__sycl_kernel_ff_23i as a free function kernel // CHECK: Forward declarations of kernel and its argument types: // CHECK: void ff_23(int arg); -// CHECK-NEXT: static constexpr auto __sycl_shim33() { +// CHECK-NEXT: static constexpr auto __sycl_shim36() { // CHECK-NEXT: return (void (*)(int))ff_23; // CHECK-NEXT: } // CHECK-NEXT: namespace sycl { // CHECK-NEXT: template <> -// CHECK-NEXT: struct ext::oneapi::experimental::is_kernel<__sycl_shim33()> { +// CHECK-NEXT: struct ext::oneapi::experimental::is_kernel<__sycl_shim36()> { // CHECK-NEXT: static constexpr bool value = true; // CHECK-NEXT: }; // CHECK-NEXT: template <> -// CHECK-NEXT: struct ext::oneapi::experimental::is_single_task_kernel<__sycl_shim33()> { +// CHECK-NEXT: struct ext::oneapi::experimental::is_single_task_kernel<__sycl_shim36()> { // CHECK-NEXT: static constexpr bool value = true; // CHECK-NEXT: }; @@ -1309,15 +1479,39 @@ void ff_24(int arg) { // CHECK: // Definition of kernel_id of _Z19__sycl_kernel_ff_24i // CHECK-NEXT: namespace sycl { // CHECK-NEXT: template <> -// CHECK-NEXT: inline kernel_id ext::oneapi::experimental::get_kernel_id<__sycl_shim32()>() { +// CHECK-NEXT: kernel_id ext::oneapi::experimental::get_kernel_id<__sycl_shim32()>() { // CHECK-NEXT return sycl::detail::get_kernel_id_impl(std::string_view{"_Z19__sycl_kernel_ff_24i"}); // CHECK-NEXT: } // CHECK-NEXT: } +// CHECK: // Definition of kernel_id of _Z19__sycl_kernel_ff_2524AccessorAndLocalAccessor +// CHECK-NEXT: namespace sycl { +// CHECK-NEXT: template <> +// CHECK-NEXT: kernel_id ext::oneapi::experimental::get_kernel_id<__sycl_shim33()>() { +// CHECK-NEXT: return sycl::detail::get_kernel_id_impl(std::string_view{"_Z19__sycl_kernel_ff_2524AccessorAndLocalAccessor"}); +// CHECK-NEXT: } +// CHECK-NEXT: } + +// CHECK: // Definition of kernel_id of _Z19__sycl_kernel_ff_2624AccessorAndLocalAccessor19SecondLevelAccessor +// CHECK-NEXT: namespace sycl { +// CHECK-NEXT: template <> +// CHECK-NEXT: kernel_id ext::oneapi::experimental::get_kernel_id<__sycl_shim34()>() { +// CHECK-NEXT: return sycl::detail::get_kernel_id_impl(std::string_view{"_Z19__sycl_kernel_ff_2624AccessorAndLocalAccessor19SecondLevelAccessor"}); +// CHECK-NEXT: } +// CHECK-NEXT: } + +// CHECK: // Definition of kernel_id of _Z19__sycl_kernel_ff_2714IntAndAccessor14AccessorAndInt +// CHECK-NEXT: namespace sycl { +// CHECK-NEXT: template <> +// CHECK-NEXT: kernel_id ext::oneapi::experimental::get_kernel_id<__sycl_shim35()>() { +// CHECK-NEXT: return sycl::detail::get_kernel_id_impl(std::string_view{"_Z19__sycl_kernel_ff_2714IntAndAccessor14AccessorAndInt"}); +// CHECK-NEXT: } +// CHECK-NEXT: } + // CHECK: // Definition of kernel_id of _Z19__sycl_kernel_ff_23i // CHECK-NEXT: namespace sycl { // CHECK-NEXT: template <> -// CHECK-NEXT: inline kernel_id ext::oneapi::experimental::get_kernel_id<__sycl_shim33()>() { +// CHECK-NEXT: inline kernel_id ext::oneapi::experimental::get_kernel_id<__sycl_shim36()>() { // CHECK-NEXT: return sycl::detail::get_kernel_id_impl(std::string_view{"_Z19__sycl_kernel_ff_23i"}); // CHECK-NEXT: } From 22484765b24ab1dd42510b7d5b9580c92beee299 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 31 Jul 2025 10:57:37 -0700 Subject: [PATCH 033/105] Fix warnings --- sycl/source/detail/scheduler/commands.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sycl/source/detail/scheduler/commands.cpp b/sycl/source/detail/scheduler/commands.cpp index ade9760109b24..176ae5126e756 100644 --- a/sycl/source/detail/scheduler/commands.cpp +++ b/sycl/source/detail/scheduler/commands.cpp @@ -2360,6 +2360,16 @@ static void GetUrArgsBasedOnType( break; } + case kernel_param_kind_t::kind_struct_with_special_type: { + ur_exp_kernel_arg_type_t Type; + ur_exp_kernel_arg_value_t Value = {}; + Value.value = {Arg.MPtr}; + UrArgs.push_back({UR_STRUCTURE_TYPE_EXP_KERNEL_ARG_PROPERTIES, nullptr, + Type, static_cast(NextTrueIndex), + static_cast(Arg.MSize), Value}); + + break; + } case kernel_param_kind_t::kind_sampler: { sampler *SamplerPtr = (sampler *)Arg.MPtr; ur_exp_kernel_arg_value_t Value = {}; From f475e4d8d953c2c787fc74adb1a9761d63be5028 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 31 Jul 2025 11:24:45 -0700 Subject: [PATCH 034/105] Fix more warnings --- sycl/source/detail/scheduler/commands.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sycl/source/detail/scheduler/commands.cpp b/sycl/source/detail/scheduler/commands.cpp index 176ae5126e756..65755404ee4f1 100644 --- a/sycl/source/detail/scheduler/commands.cpp +++ b/sycl/source/detail/scheduler/commands.cpp @@ -2361,11 +2361,11 @@ static void GetUrArgsBasedOnType( break; } case kernel_param_kind_t::kind_struct_with_special_type: { - ur_exp_kernel_arg_type_t Type; ur_exp_kernel_arg_value_t Value = {}; Value.value = {Arg.MPtr}; UrArgs.push_back({UR_STRUCTURE_TYPE_EXP_KERNEL_ARG_PROPERTIES, nullptr, - Type, static_cast(NextTrueIndex), + UR_EXP_KERNEL_ARG_TYPE_VALUE, + static_cast(NextTrueIndex), static_cast(Arg.MSize), Value}); break; From f95f7fd56f21737e11a97dd562284f9eb3512641 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 31 Jul 2025 12:14:54 -0700 Subject: [PATCH 035/105] Fix pre-commit failures in test --- .../CodeGenSYCL/free_function_int_header.cpp | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/clang/test/CodeGenSYCL/free_function_int_header.cpp b/clang/test/CodeGenSYCL/free_function_int_header.cpp index 0c29462bcb001..be1acd1debb6e 100644 --- a/clang/test/CodeGenSYCL/free_function_int_header.cpp +++ b/clang/test/CodeGenSYCL/free_function_int_header.cpp @@ -1611,9 +1611,8 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK: static constexpr auto __sycl_shim33() { // CHECK-NEXT: return (void (*)(struct AccessorAndLocalAccessor))ff_25; // CHECK-NEXT: } -// CHECK-NEXT: namespace sycl { -// CHECK-NEXT: template <> -// CHECK-NEXT: struct ext::oneapi::experimental::is_kernel<__sycl_shim33()> { + +// CHECK: struct ext::oneapi::experimental::is_kernel<__sycl_shim33()> { // CHECK-NEXT: static constexpr bool value = true; // CHECK-NEXT: }; // CHECK-NEXT: template <> @@ -1642,10 +1641,9 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK: static constexpr auto __sycl_shim34() { // CHECK-NEXT: return (void (*)(struct AccessorAndLocalAccessor, struct SecondLevelAccessor))ff_26; -// CHECK-NEXT:} -// CHECK-NEXT: namespace sycl { -// CHECK-NEXT: template <> -// CHECK-NEXT: struct ext::oneapi::experimental::is_kernel<__sycl_shim34()> { +// CHECK-NEXT: } + +// CHECK: struct ext::oneapi::experimental::is_kernel<__sycl_shim34()> { // CHECK-NEXT: static constexpr bool value = true; // CHECK-NEXT: }; // CHECK-NEXT: template <> @@ -1691,9 +1689,8 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK: static constexpr auto __sycl_shim35() { // CHECK-NEXT: return (void (*)(struct IntAndAccessor, struct AccessorAndInt))ff_27; // CHECK-NEXT: } -// CHECK-NEXT: namespace sycl { -// CHECK-NEXT: template <> -// CHECK-NEXT: struct ext::oneapi::experimental::is_kernel<__sycl_shim35()> { + +// CHECK: struct ext::oneapi::experimental::is_kernel<__sycl_shim35()> { // CHECK-NEXT: static constexpr bool value = true; // CHECK-NEXT: }; // CHECK-NEXT: template <> @@ -1711,8 +1708,8 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK: namespace sycl { // CHECK-NEXT: inline namespace _V1 { // CHECK-NEXT: namespace detail { -// CHECK-NEXT: //Free Function Kernel info specialization for shim33 -// CHECK-NEXT: template <> struct FreeFunctionInfoData<__sycl_shim33()> { +// CHECK-NEXT: //Free Function Kernel info specialization for shim36 +// CHECK-NEXT: template <> struct FreeFunctionInfoData<__sycl_shim36()> { // CHECK-NEXT: __SYCL_DLL_LOCAL // CHECK-NEXT: static constexpr unsigned getNumParams() { return 1; } // CHECK-NEXT: __SYCL_DLL_LOCAL @@ -1742,7 +1739,7 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: namespace detail { // CHECK-NEXT: struct GlobalMapUpdater { // CHECK-NEXT: GlobalMapUpdater() { -// CHECK-NEXT: sycl::detail::free_function_info_map::add(sycl::detail::kernel_names, sycl::detail::kernel_args_sizes, 33); +// CHECK-NEXT: sycl::detail::free_function_info_map::add(sycl::detail::kernel_names, sycl::detail::kernel_args_sizes, 36); // CHECK-NEXT: } // CHECK-NEXT: }; // CHECK-NEXT: static GlobalMapUpdater updater; From c7b3696e42259c09fe0446ef50cc070932ed65e6 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 6 Aug 2025 09:24:34 -0700 Subject: [PATCH 036/105] Address compilation errors --- clang/lib/Sema/SemaSYCL.cpp | 6 +----- sycl/include/sycl/handler.hpp | 1 + sycl/source/detail/scheduler/commands.cpp | 9 ++------- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 530b4ff9ea29a..a61fbe93d53c2 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -6806,7 +6806,6 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << "#include \n"; O << "#include \n"; O << "#include \n"; - O << "#include \n"; O << "\n"; LangOptions LO; @@ -7231,10 +7230,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << "template <> struct struct_with_special_type_info<"; type.print(O, Policy); O << "> {\n"; - O << "template< typename ArgT, typename HandlerT, typename = " - "std::enable_if_t, "; - type.print(O, Policy); - O << ">>>\n"; + O << "template\n"; O << " static void set_arg(int ArgIndex, ArgT& "; O << "arg"; O << ", HandlerT& cgh, int &NumArgs) {\n"; diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 3ec8a247d7990..68a035d0f2e1f 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include diff --git a/sycl/source/detail/scheduler/commands.cpp b/sycl/source/detail/scheduler/commands.cpp index a6edaa930fe66..64caf48afbe24 100644 --- a/sycl/source/detail/scheduler/commands.cpp +++ b/sycl/source/detail/scheduler/commands.cpp @@ -2356,13 +2356,8 @@ static void SetArgBasedOnType( break; } case kernel_param_kind_t::kind_struct_with_special_type: { - ur_exp_kernel_arg_value_t Value = {}; - Value.value = {Arg.MPtr}; - UrArgs.push_back({UR_STRUCTURE_TYPE_EXP_KERNEL_ARG_PROPERTIES, nullptr, - UR_EXP_KERNEL_ARG_TYPE_VALUE, - static_cast(NextTrueIndex), - static_cast(Arg.MSize), Value}); - + Adapter.call(Kernel, NextTrueIndex, + Arg.MSize, nullptr, Arg.MPtr); break; } case kernel_param_kind_t::kind_sampler: { From 0a017c1a012d7867020ac1bb706deb6e1472a3c1 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 6 Aug 2025 10:44:28 -0700 Subject: [PATCH 037/105] Update ABI --- .../CodeGenSYCL/free_function_int_header.cpp | 8 ++++---- ...free_function_kernel_params_restrictions.cpp | 17 ----------------- sycl/test/abi/sycl_symbols_linux.dump | 1 + sycl/test/abi/sycl_symbols_windows.dump | 1 + sycl/test/include_deps/sycl_detail_core.hpp.cpp | 1 + 5 files changed, 7 insertions(+), 21 deletions(-) diff --git a/clang/test/CodeGenSYCL/free_function_int_header.cpp b/clang/test/CodeGenSYCL/free_function_int_header.cpp index be1acd1debb6e..2c54df8d485ce 100644 --- a/clang/test/CodeGenSYCL/free_function_int_header.cpp +++ b/clang/test/CodeGenSYCL/free_function_int_header.cpp @@ -1598,7 +1598,7 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: }; // CHECK: template <> struct struct_with_special_type_info { -// CHECK-NEXT: template< typename ArgT, typename HandlerT, typename = std::enable_if_t, AccessorAndLocalAccessor>>> +// CHECK-NEXT: template< typename ArgT, typename HandlerT> // CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { // CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::accessor > *)((char *)(&arg) + 0)); // CHECK-NEXT: ++ArgIndex; @@ -1629,7 +1629,7 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: }; // CHECK: template <> struct struct_with_special_type_info { -// CHECK-NEXT: template< typename ArgT, typename HandlerT, typename = std::enable_if_t, SecondLevelAccessor>>> +// CHECK-NEXT: template< typename ArgT, typename HandlerT> // CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { // CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::accessor > *)((char *)(&arg) + 0)); // CHECK-NEXT: ++ArgIndex; @@ -1660,7 +1660,7 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: }; // CHECK: template <> struct struct_with_special_type_info { -// CHECK-NEXT: template< typename ArgT, typename HandlerT, typename = std::enable_if_t, IntAndAccessor>>> +// CHECK-NEXT: template< typename ArgT, typename HandlerT> // CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { // CHECK-NEXT: cgh.set_arg(ArgIndex, *(int *)((char *)(&arg) + 0)); // CHECK-NEXT: ++ArgIndex; @@ -1676,7 +1676,7 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: }; // CHECK: template <> struct struct_with_special_type_info { -// CHECK-NEXT: template< typename ArgT, typename HandlerT, typename = std::enable_if_t, AccessorAndInt>>> +// CHECK-NEXT: template< typename ArgT, typename HandlerT> // CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { // CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::accessor > *)((char *)(&arg) + 0)); // CHECK-NEXT: ++ArgIndex; diff --git a/clang/test/SemaSYCL/free_function_kernel_params_restrictions.cpp b/clang/test/SemaSYCL/free_function_kernel_params_restrictions.cpp index d1bdc0e3da475..c7b2d2de8921c 100644 --- a/clang/test/SemaSYCL/free_function_kernel_params_restrictions.cpp +++ b/clang/test/SemaSYCL/free_function_kernel_params_restrictions.cpp @@ -42,20 +42,3 @@ __attribute__((sycl_device)) [[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 0)]] void ff_5(A S1) { } - - - -struct StructWithAccessor { - sycl::accessor acc; - int *ptr; -}; - -struct Wrapper { - StructWithAccessor SWA; - -}; - -[[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 0)]] -void ff_6(Wrapper S1) { // expected-error {{cannot be used as the type of a kernel parameter}} - // expected-note@-1 {{'Wrapper' is not yet supported as a free function kernel parameter}} -} diff --git a/sycl/test/abi/sycl_symbols_linux.dump b/sycl/test/abi/sycl_symbols_linux.dump index 71269e088a88a..6fa7edbd12b59 100644 --- a/sycl/test/abi/sycl_symbols_linux.dump +++ b/sycl/test/abi/sycl_symbols_linux.dump @@ -3633,6 +3633,7 @@ _ZN4sycl3_V17handler8finalizeEv _ZN4sycl3_V17handler8getQueueEv _ZN4sycl3_V17handler8prefetchEPKvm _ZN4sycl3_V17handler9clearArgsEv +_ZN4sycl3_V17handler14updateArgShiftEi _ZN4sycl3_V17handler9fill_implEPvPKvmm _ZN4sycl3_V17handlerC1EOSt10unique_ptrINS0_6detail12handler_implESt14default_deleteIS4_EE _ZN4sycl3_V17handlerC1ESt10shared_ptrINS0_3ext6oneapi12experimental6detail10graph_implEE diff --git a/sycl/test/abi/sycl_symbols_windows.dump b/sycl/test/abi/sycl_symbols_windows.dump index 195b20a66d934..4b4ee8db9c023 100644 --- a/sycl/test/abi/sycl_symbols_windows.dump +++ b/sycl/test/abi/sycl_symbols_windows.dump @@ -3830,6 +3830,7 @@ ?category@exception@_V1@sycl@@QEBAAEBVerror_category@std@@XZ ?checkNodePropertiesAndThrow@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@KAXAEBVproperty_list@67@@Z ?clearArgs@handler@_V1@sycl@@AEAAXXZ +?updateArgShift@handler@_V1@sycl@@AEAAXH@Z ?code@exception@_V1@sycl@@QEBAAEBVerror_code@std@@XZ ?compile_from_source@detail@experimental@oneapi@ext@_V1@sycl@@YA?AV?$kernel_bundle@$00@56@AEAV?$kernel_bundle@$02@56@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV?$vector@Vstring_view@detail@_V1@sycl@@V?$allocator@Vstring_view@detail@_V1@sycl@@@std@@@std@@PEAVstring@156@2@Z ?compile_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBV?$kernel_bundle@$0A@@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@AEBVproperty_list@23@@Z diff --git a/sycl/test/include_deps/sycl_detail_core.hpp.cpp b/sycl/test/include_deps/sycl_detail_core.hpp.cpp index 3087928f17c3f..f36771b1089ae 100644 --- a/sycl/test/include_deps/sycl_detail_core.hpp.cpp +++ b/sycl/test/include_deps/sycl_detail_core.hpp.cpp @@ -147,6 +147,7 @@ // CHECK-NEXT: ext/oneapi/interop_common.hpp // CHECK-NEXT: ext/oneapi/bindless_images_mem_handle.hpp // CHECK-NEXT: ext/oneapi/experimental/cluster_group_prop.hpp +// CHECK-NEXT: ext/oneapi/experimental/free_function_traits.hpp // CHECK-NEXT: ext/oneapi/experimental/raw_kernel_arg.hpp // CHECK-NEXT: ext/oneapi/experimental/use_root_sync_prop.hpp // CHECK-NEXT: kernel.hpp From de4b02f526f2b88cfbbbed4b56b0d952b7474126 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 6 Aug 2025 12:30:13 -0700 Subject: [PATCH 038/105] Fix pre-commit failures --- clang/test/CodeGenSYCL/free_function_int_header.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/clang/test/CodeGenSYCL/free_function_int_header.cpp b/clang/test/CodeGenSYCL/free_function_int_header.cpp index 2c54df8d485ce..4731d92bbeed0 100644 --- a/clang/test/CodeGenSYCL/free_function_int_header.cpp +++ b/clang/test/CodeGenSYCL/free_function_int_header.cpp @@ -1598,7 +1598,7 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: }; // CHECK: template <> struct struct_with_special_type_info { -// CHECK-NEXT: template< typename ArgT, typename HandlerT> +// CHECK-NEXT: template // CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { // CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::accessor > *)((char *)(&arg) + 0)); // CHECK-NEXT: ++ArgIndex; @@ -1629,7 +1629,7 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: }; // CHECK: template <> struct struct_with_special_type_info { -// CHECK-NEXT: template< typename ArgT, typename HandlerT> +// CHECK-NEXT: template // CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { // CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::accessor > *)((char *)(&arg) + 0)); // CHECK-NEXT: ++ArgIndex; @@ -1660,7 +1660,7 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: }; // CHECK: template <> struct struct_with_special_type_info { -// CHECK-NEXT: template< typename ArgT, typename HandlerT> +// CHECK-NEXT: template // CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { // CHECK-NEXT: cgh.set_arg(ArgIndex, *(int *)((char *)(&arg) + 0)); // CHECK-NEXT: ++ArgIndex; @@ -1676,7 +1676,7 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: }; // CHECK: template <> struct struct_with_special_type_info { -// CHECK-NEXT: template< typename ArgT, typename HandlerT> +// CHECK-NEXT: template // CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { // CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::accessor > *)((char *)(&arg) + 0)); // CHECK-NEXT: ++ArgIndex; From b093093026161ae4116ced4e4e011cc1f9d125ed Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 6 Aug 2025 22:18:54 -0400 Subject: [PATCH 039/105] Update free_function_traits.hpp --- .../ext/oneapi/experimental/free_function_traits.hpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index fb8bebf6c36c6..08a73c4487200 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -54,15 +54,13 @@ template struct is_struct_with_special_type { }; // This struct is made to be specialized in the integration header. -// It calls set_arg for every member of special type contained in the struct at -// any level of composition. The non-special type members can just be passed as -// part of the struct. So if type Foo contains two accessors and an integer -// inside and the user calls set_arg(Foo), that call will call this function -// which will call set_arg for each of those two accessors and not the int. +// It calls set_arg for every member of contained in the struct at +// any level of composition. So if type Foo contains two accessors and an integer +// inside and the user calls set_arg(Foo) which calls this function with T = Foo +// which will call set_arg for each of those two accessors and the int. // The function stores in NumArgs the number of set_arg calls that it made so // that subsequent set_arg calls initiated by the user can have the correct -// index. If the user provides the index ArgIndex the correct index will be -// ArgIndex + NumArgs +// index. template struct struct_with_special_type_info { template static void set_arg([[maybe_unused]] int ArgIndex, [[maybe_unused]] ArgT &arg, From 1280da070ae33d4774074f56840f2a0cfba32d06 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 6 Aug 2025 22:19:48 -0400 Subject: [PATCH 040/105] Update handler.hpp --- sycl/include/sycl/handler.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 68a035d0f2e1f..9a1a6aff897b4 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -158,8 +158,6 @@ __SYCL_EXPORT void *async_malloc_from_pool(sycl::handler &h, size_t size, } // namespace ext::oneapi::experimental namespace ext::oneapi::experimental::detail { -template struct is_struct_with_special_type; -template struct struct_with_special_type_info; class dynamic_parameter_base; class dynamic_work_group_memory_base; class dynamic_local_accessor_base; From cbdf97dab229cd59a571033f4fc4343cb54ab92d Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 6 Aug 2025 22:21:55 -0400 Subject: [PATCH 041/105] Update handler_impl.hpp --- sycl/source/detail/handler_impl.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sycl/source/detail/handler_impl.hpp b/sycl/source/detail/handler_impl.hpp index e50bd7c144028..8d01dd5692da8 100644 --- a/sycl/source/detail/handler_impl.hpp +++ b/sycl/source/detail/handler_impl.hpp @@ -153,7 +153,8 @@ class handler_impl { // several hidden set_arg calls for every set_arg called by the user. This // shift is required to make sure the following arguments set by the user have // the correct index. It keeps track of how many of these hidden set_arg calls - // have been made so far. + // have been made so far. The user cannot possibly know this, hence we need to + // keep track of this information. int MArgShift = 0; /// The list of associated accessors with this handler. From d2efe9854ac48a76d27f878d715e8309335854c8 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 6 Aug 2025 22:30:44 -0400 Subject: [PATCH 042/105] Formatting --- .../sycl/ext/oneapi/experimental/free_function_traits.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index 08a73c4487200..7194f24dfcb52 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -55,9 +55,9 @@ template struct is_struct_with_special_type { // This struct is made to be specialized in the integration header. // It calls set_arg for every member of contained in the struct at -// any level of composition. So if type Foo contains two accessors and an integer -// inside and the user calls set_arg(Foo) which calls this function with T = Foo -// which will call set_arg for each of those two accessors and the int. +// any level of composition. So if type Foo contains two accessors and an +// integer inside and the user calls set_arg(Foo) which calls this function with +// T = Foo which will call set_arg for each of those two accessors and the int. // The function stores in NumArgs the number of set_arg calls that it made so // that subsequent set_arg calls initiated by the user can have the correct // index. From 4fdec2c7198590f6d0e1c91b3bff48f2bda1a2bd Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Fri, 8 Aug 2025 13:13:37 -0700 Subject: [PATCH 043/105] Apply initial suggestions --- clang/include/clang/Sema/SemaSYCL.h | 8 +++----- clang/lib/Sema/SemaSYCL.cpp | 12 ++---------- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index 4b33116587fa6..c623cd35d43c6 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -270,9 +270,7 @@ class SemaSYCL : public SemaBase { // A map that keeps track of all structs encountered with // special types inside. Relevant for free function kernels only. - // The key stores the struct as a declaration and the value stores the struct - // as a QualType just to make it easier to use it. - llvm::DenseMap StructsWithSpecialTypes; + llvm::DenseSet StructsWithSpecialTypes; public: SemaSYCL(Sema &S); @@ -325,8 +323,8 @@ class SemaSYCL : public SemaBase { } /// Add ParentStruct to StructsWithSpecialTypes. - void addStructWithSpecialType(const RecordDecl *ParentStruct, QualType Ty) { - StructsWithSpecialTypes[ParentStruct] = Ty; + void addStructWithSpecialType(const RecordDecl *ParentStruct) { + StructsWithSpecialTypes.insert(ParentStruct); } auto &getStructsWithSpecialType() const { return StructsWithSpecialTypes; } diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index a61fbe93d53c2..c59f2874cf33f 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -2172,13 +2172,11 @@ class SyclKernelFieldChecker : public SyclKernelFieldHandler { } bool enterStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - ++StructFieldDepth; return true; } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType ParamTy) final { - --StructFieldDepth; return true; } @@ -4531,17 +4529,11 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { Base = buildMemberExpr(Base, child); } for (auto it = CurrentStructs.rbegin(); it != CurrentStructs.rend(); ++it) - SemaSYCLRef.addStructWithSpecialType((*it)->getParent(), - (it + 1) == CurrentStructs.rend() - ? ParentStruct->getType() - : (*(it + 1))->getType()); + SemaSYCLRef.addStructWithSpecialType((*it)->getParent()); MemberExpr *MemberAccess = buildMemberExpr(Base, FD); createSpecialMethodCall(FieldTy->getAsCXXRecordDecl(), InitMethodName, MemberAccess, BodyStmts); - SemaSYCLRef.addStructWithSpecialType(FD->getParent(), - CurrentStructs.size() - ? CurrentStructs.back()->getType() - : ParentStruct->getType()); + SemaSYCLRef.addStructWithSpecialType(FD->getParent()); return true; } From f029707fd477f7041f906ca16152f663d3a417b7 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 25 Sep 2025 07:28:35 -0700 Subject: [PATCH 044/105] Simplify integration header --- clang/lib/Sema/SemaSYCL.cpp | 371 +++++++++--------- .../experimental/free_function_traits.hpp | 23 +- 2 files changed, 195 insertions(+), 199 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index c59f2874cf33f..b7fa8a4482ff8 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -1771,6 +1771,11 @@ class SyclKernelFieldHandler : public SyclKernelFieldHandlerBase { SemaSYCL &SemaSYCLRef; SyclKernelFieldHandler(SemaSYCL &S) : SemaSYCLRef(S) {} + // Holds the last handled kernel struct parameter that contains a special + // type. Set in the enterStruct functions. Only relevant for free function + // kernels + ParmVarDecl *TopLevelStruct = nullptr; + // Returns 'true' if the thing we're visiting (Based on the FD/QualType pair) // is an element of an array. FD will always be the array field. When // traversing the array field, Ty will be the type of the array field or the @@ -1778,6 +1783,8 @@ class SyclKernelFieldHandler : public SyclKernelFieldHandlerBase { bool isArrayElement(const FieldDecl *FD, QualType Ty) const { return !SemaSYCLRef.getASTContext().hasSameType(FD->getType(), Ty); } + + ParmVarDecl *getTopLevelStructForCurrentField() { return TopLevelStruct; } }; // A class to represent the 'do nothing' case for filtering purposes. @@ -2696,9 +2703,6 @@ class SyclKernelPointerHandler : public SyclKernelFieldHandler { class SyclKernelDeclCreator : public SyclKernelFieldHandler { FunctionDecl *KernelDecl = nullptr; llvm::SmallVector Params; - // Holds the last handled kernel struct parameter that contains a special - // type. Set in the enterStruct functions. - ParmVarDecl *CurrentStruct; Sema::ContextRAII FuncContext; // Holds the last handled field's first parameter. This doesn't store an // iterator as push_back invalidates iterators. @@ -2971,7 +2975,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { ++StructDepth; StringRef Name = "_arg_struct"; addParam(Name, Ty); - CurrentStruct = Params.back(); + TopLevelStruct = Params.back(); return true; } @@ -3171,7 +3175,6 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { return ArrayRef(std::begin(Params) + LastParamIndex, std::end(Params)); } - ParmVarDecl *getParentStructForCurrentField() { return CurrentStruct; } }; // This Visitor traverses the AST of the function with @@ -4523,17 +4526,14 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { bool handleSyclSpecialType(FieldDecl *FD, QualType FieldTy) final { // Being inside this function means there is a struct parameter to the free // function kernel that contains a special type. - ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); - Expr *Base = createParamReferenceExpr(ParentStruct); + Expr *Base = createParamReferenceExpr(TopLevelStruct); for (const auto &child : CurrentStructs) { Base = buildMemberExpr(Base, child); } - for (auto it = CurrentStructs.rbegin(); it != CurrentStructs.rend(); ++it) - SemaSYCLRef.addStructWithSpecialType((*it)->getParent()); MemberExpr *MemberAccess = buildMemberExpr(Base, FD); createSpecialMethodCall(FieldTy->getAsCXXRecordDecl(), InitMethodName, MemberAccess, BodyStmts); - SemaSYCLRef.addStructWithSpecialType(FD->getParent()); + SemaSYCLRef.addStructWithSpecialType(TopLevelStruct->getOriginalType()->getAsCXXRecordDecl()); return true; } @@ -4672,9 +4672,8 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - ParmVarDecl *ParentStruct = DeclCreator.getParentStructForCurrentField(); ArgExprs.push_back(SemaSYCLRef.SemaRef.BuildDeclRefExpr( - ParentStruct, ParentStruct->getType(), VK_PRValue, FreeFunctionSrcLoc)); + TopLevelStruct, TopLevelStruct->getType(), VK_PRValue, FreeFunctionSrcLoc)); return true; } @@ -4738,6 +4737,13 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { SYCLIntegrationHeader &Header; int64_t CurOffset = 0; llvm::SmallVector ArrayBaseOffsets; + // For every struct that contains a special type, record the offset and size + // of every special type inside of it at any nesting level. Store the + // information in the variable below. + llvm::DenseMap>> + OffsetSizeInfo; + // Likewise for the kind of a special type i.e accessor etc... + llvm::DenseMap> KindInfo; int StructDepth = 0; // A series of functions to calculate the change in offset based on the type. @@ -4759,7 +4765,11 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { void addParam(const FieldDecl *FD, QualType ArgTy, SYCLIntegrationHeader::kernel_param_kind_t Kind) { - addParam(ArgTy, Kind, offsetOf(FD, ArgTy)); + // If we are dealing with a field of a free function kernel parameter struct + // do not add the parameter. The offset, Size, Kind information has been + // stored in OffsetSizeInfo and KindInfo + if (TopLevelStruct) + addParam(ArgTy, Kind, offsetOf(FD, ArgTy)); } // For free functions we increment the current offset as each parameter is @@ -4837,6 +4847,16 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { } bool handleSyclSpecialType(FieldDecl *FD, QualType FieldTy) final { + // If TopLevelStruct is set, it means we are traversing the fields of a free + // function parameter struct. In this case, we simply record the current + // field's offset and size in OffsetSizeInfo and Kind in KindInfo. + if (TopLevelStruct) { + OffsetSizeInfo[TopLevelStruct].emplace_back( + make_pair(offsetOf(FD, FieldTy), SemaSYCLRef.getASTContext() + .getTypeSizeInChars(FieldTy) + .getQuantity())); + } + const auto *ClassTy = FieldTy->getAsCXXRecordDecl(); assert(ClassTy && "Type must be a C++ record type"); if (isSyclAccessorType(FieldTy)) { @@ -4852,17 +4872,22 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::dynamic_local_accessor) ? SYCLIntegrationHeader::kind_dynamic_accessor : SYCLIntegrationHeader::kind_accessor; - Header.addParamDesc(ParamKind, Info, CurOffset + offsetOf(FD, FieldTy)); + KindInfo[TopLevelStruct].emplace_back(ParamKind); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::stream)) { addParam(FD, FieldTy, SYCLIntegrationHeader::kind_stream); + KindInfo[TopLevelStruct].emplace_back(SYCLIntegrationHeader::kind_stream); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::work_group_memory)) { addParam(FieldTy, SYCLIntegrationHeader::kind_work_group_memory, offsetOf(FD, FieldTy)); + KindInfo[TopLevelStruct].emplace_back( + SYCLIntegrationHeader::kind_work_group_memory); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::dynamic_work_group_memory)) { addParam(FieldTy, SYCLIntegrationHeader::kind_dynamic_work_group_memory, offsetOf(FD, FieldTy)); + KindInfo[TopLevelStruct].emplace_back( + SYCLIntegrationHeader::kind_dynamic_work_group_memory); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::sampler) || SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::annotated_ptr) || SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::annotated_arg)) { @@ -4877,6 +4902,7 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { : (T->isPointerType() ? SYCLIntegrationHeader::kind_pointer : SYCLIntegrationHeader::kind_std_layout); addParam(T, ParamKind, offsetOf(FD, FieldTy)); + KindInfo[TopLevelStruct].emplace_back(ParamKind); } else { llvm_unreachable( "Unexpected SYCL special class when generating integration header"); @@ -4927,146 +4953,148 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { return true; } - bool handlePointerType(FieldDecl *FD, QualType FieldTy) final { - addParam(FD, FieldTy, - ((StructDepth) ? SYCLIntegrationHeader::kind_std_layout - : SYCLIntegrationHeader::kind_pointer)); - return true; - } + bool handlePointerType(FieldDecl * FD, QualType FieldTy) final { + addParam(FD, FieldTy, + ((StructDepth) ? SYCLIntegrationHeader::kind_std_layout + : SYCLIntegrationHeader::kind_pointer)); + return true; + } - bool handlePointerType(ParmVarDecl *PD, QualType ParamTy) final { - addParam(PD, ParamTy, SYCLIntegrationHeader::kind_pointer); - return true; - } + bool handlePointerType(ParmVarDecl * PD, QualType ParamTy) final { + addParam(PD, ParamTy, SYCLIntegrationHeader::kind_pointer); + return true; + } - bool handleScalarType(FieldDecl *FD, QualType FieldTy) final { - addParam(FD, FieldTy, SYCLIntegrationHeader::kind_std_layout); - return true; - } + bool handleScalarType(FieldDecl * FD, QualType FieldTy) final { + addParam(FD, FieldTy, SYCLIntegrationHeader::kind_std_layout); + return true; + } - bool handleScalarType(ParmVarDecl *PD, QualType ParamTy) final { - addParam(PD, ParamTy, SYCLIntegrationHeader::kind_std_layout); - return true; - } + bool handleScalarType(ParmVarDecl * PD, QualType ParamTy) final { + addParam(PD, ParamTy, SYCLIntegrationHeader::kind_std_layout); + return true; + } - bool handleSimpleArrayType(FieldDecl *FD, QualType FieldTy) final { - // Arrays are always wrapped inside of structs, so just treat it as a simple - // struct. - addParam(FD, FieldTy, SYCLIntegrationHeader::kind_std_layout); - return true; - } + bool handleSimpleArrayType(FieldDecl * FD, QualType FieldTy) final { + // Arrays are always wrapped inside of structs, so just treat it as a + // simple struct. + addParam(FD, FieldTy, SYCLIntegrationHeader::kind_std_layout); + return true; + } - bool handleTopLevelStruct(const CXXRecordDecl *, QualType Ty) final { - addParam(Ty, SYCLIntegrationHeader::kind_std_layout, /*Offset=*/0); - return true; - } + bool handleTopLevelStruct(const CXXRecordDecl *, QualType Ty) final { + addParam(Ty, SYCLIntegrationHeader::kind_std_layout, /*Offset=*/0); + return true; + } - bool handleNonDecompStruct(const CXXRecordDecl *, FieldDecl *FD, - QualType Ty) final { - addParam(FD, Ty, SYCLIntegrationHeader::kind_std_layout); - return true; - } + bool handleNonDecompStruct(const CXXRecordDecl *, FieldDecl *FD, + QualType Ty) final { + addParam(FD, Ty, SYCLIntegrationHeader::kind_std_layout); + return true; + } - bool handleNonDecompStruct(const CXXRecordDecl *, ParmVarDecl *PD, - QualType ParamTy) final { - addParam(PD, ParamTy, SYCLIntegrationHeader::kind_std_layout); - return true; - } + bool handleNonDecompStruct(const CXXRecordDecl *, ParmVarDecl *PD, + QualType ParamTy) final { + addParam(PD, ParamTy, SYCLIntegrationHeader::kind_std_layout); + return true; + } - bool handleNonDecompStruct(const CXXRecordDecl *Base, - const CXXBaseSpecifier &, QualType Ty) final { - addParam(Ty, SYCLIntegrationHeader::kind_std_layout, - offsetOf(Base, Ty->getAsCXXRecordDecl())); - return true; - } + bool handleNonDecompStruct(const CXXRecordDecl *Base, + const CXXBaseSpecifier &, QualType Ty) final { + addParam(Ty, SYCLIntegrationHeader::kind_std_layout, + offsetOf(Base, Ty->getAsCXXRecordDecl())); + return true; + } - bool handleUnionType(FieldDecl *FD, QualType FieldTy) final { - return handleScalarType(FD, FieldTy); - } + bool handleUnionType(FieldDecl * FD, QualType FieldTy) final { + return handleScalarType(FD, FieldTy); + } - bool handleUnionType(ParmVarDecl *, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handleUnionType(ParmVarDecl *, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - void handleSyclKernelHandlerType(QualType) { - // The compiler generated kernel argument used to initialize SYCL 2020 - // specialization constants, `specialization_constants_buffer`, should - // have corresponding entry in integration header. - ASTContext &Context = SemaSYCLRef.getASTContext(); - // Offset is zero since kernel_handler argument is not part of - // kernel object (i.e. it is not captured) - addParam(Context.getPointerType(Context.CharTy), - SYCLIntegrationHeader::kind_specialization_constants_buffer, 0); - } + void handleSyclKernelHandlerType(QualType) { + // The compiler generated kernel argument used to initialize SYCL 2020 + // specialization constants, `specialization_constants_buffer`, should + // have corresponding entry in integration header. + ASTContext &Context = SemaSYCLRef.getASTContext(); + // Offset is zero since kernel_handler argument is not part of + // kernel object (i.e. it is not captured) + addParam(Context.getPointerType(Context.CharTy), + SYCLIntegrationHeader::kind_specialization_constants_buffer, 0); + } - bool enterStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { - ++StructDepth; - CurOffset += offsetOf(FD, Ty); - return true; - } + bool enterStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { + ++StructDepth; + CurOffset += offsetOf(FD, Ty); + return true; + } - bool enterStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType Ty) final { - addParam(PD, Ty, SYCLIntegrationHeader::kind_struct_with_special_type); - return true; - } + bool enterStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType Ty) + final { + addParam(PD, Ty, SYCLIntegrationHeader::kind_struct_with_special_type); + TopLevelStruct = PD; + return true; + } - bool leaveStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { - --StructDepth; - CurOffset -= offsetOf(FD, Ty); - return true; - } + bool leaveStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { + --StructDepth; + CurOffset -= offsetOf(FD, Ty); + return true; + } - bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - return true; - } + bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { + return true; + } - bool enterStruct(const CXXRecordDecl *RD, const CXXBaseSpecifier &BS, - QualType) final { - CurOffset += offsetOf(RD, BS.getType()->getAsCXXRecordDecl()); - return true; - } + bool enterStruct(const CXXRecordDecl *RD, const CXXBaseSpecifier &BS, + QualType) final { + CurOffset += offsetOf(RD, BS.getType()->getAsCXXRecordDecl()); + return true; + } - bool leaveStruct(const CXXRecordDecl *RD, const CXXBaseSpecifier &BS, - QualType) final { - CurOffset -= offsetOf(RD, BS.getType()->getAsCXXRecordDecl()); - return true; - } + bool leaveStruct(const CXXRecordDecl *RD, const CXXBaseSpecifier &BS, + QualType) final { + CurOffset -= offsetOf(RD, BS.getType()->getAsCXXRecordDecl()); + return true; + } - bool enterArray(FieldDecl *FD, QualType ArrayTy, QualType) final { - ArrayBaseOffsets.push_back(CurOffset + offsetOf(FD, ArrayTy)); - return true; - } + bool enterArray(FieldDecl * FD, QualType ArrayTy, QualType) final { + ArrayBaseOffsets.push_back(CurOffset + offsetOf(FD, ArrayTy)); + return true; + } - bool enterArray(ParmVarDecl *, QualType, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool enterArray(ParmVarDecl *, QualType, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool nextElement(QualType ET, uint64_t Index) final { - int64_t Size = - SemaSYCLRef.getASTContext().getTypeSizeInChars(ET).getQuantity(); - CurOffset = ArrayBaseOffsets.back() + Size * Index; - return true; - } + bool nextElement(QualType ET, uint64_t Index) final { + int64_t Size = + SemaSYCLRef.getASTContext().getTypeSizeInChars(ET).getQuantity(); + CurOffset = ArrayBaseOffsets.back() + Size * Index; + return true; + } - bool leaveArray(FieldDecl *FD, QualType ArrayTy, QualType) final { - CurOffset = ArrayBaseOffsets.pop_back_val(); - CurOffset -= offsetOf(FD, ArrayTy); - return true; - } + bool leaveArray(FieldDecl * FD, QualType ArrayTy, QualType) final { + CurOffset = ArrayBaseOffsets.pop_back_val(); + CurOffset -= offsetOf(FD, ArrayTy); + return true; + } - bool leaveArray(ParmVarDecl *, QualType, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool leaveArray(ParmVarDecl *, QualType, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - using SyclKernelFieldHandler::enterStruct; - using SyclKernelFieldHandler::leaveStruct; -}; + using SyclKernelFieldHandler::enterStruct; + using SyclKernelFieldHandler::leaveStruct; + }; class SyclKernelIntFooterCreator : public SyclKernelFieldHandler { SYCLIntegrationFooter &Footer; @@ -7188,60 +7216,39 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { Policy.SuppressTagKeyword = true; type.print(O, Policy); O << "> {\n"; - O << " inline static constexpr bool value = true;\n};\n\n"; - // Now we define the set_arg function for this struct that contains - // special types. It takes the handler as an argument so that we can - // ultimately call set_arg on the handler for each member - // contained in the struct. First, emit needed forward declarations for - // all types contained in the struct by doing a depth first search - // exploration of the struct. Also collect the offsets of all the - // members inside the struct while we're at it so that we can call - // set_arg for each one of those. - llvm::SmallVector, 8> offsets; - llvm::SmallVector dfs; - dfs.emplace_back(Struct); - while (!dfs.empty()) { - const auto top = dfs.pop_back_val(); - for (const auto member : top->fields()) { - if (isSyclSpecialType(member->getType(), S) || - !member->getType()->isStructureType()) { - FwdDeclEmitter.Visit( - member->getType().getDesugaredType(S.getASTContext())); - offsets.emplace_back(std::make_pair( - member, S.getASTContext().getFieldOffset(member) / 8)); - } else if (member->getType()->isStructureType()) { - dfs.emplace_back( - member->getType()->getAsStructureType()->getDecl()); - } + O << " inline static constexpr bool value = true;\n"; + O << " static constexpr size_t offsetsSizes[2][] = {\n"; + for (const auto OffsetSize : OffsetSizeInfo[Param]) { + O << "{ " << OffsetSize.first << ", " << OffsetSize.second << "},\n "; + } + O << "{-1, -1} } \n};\n\n "; + O << " static constexpr sycl::detail::kernel_param_kind_t kinds[] = {\n"; + for (const auto Kind : KindInfo[Param]) { + switch (Kind) { + case SYCLIntegrationHeader::kind_accessor: + O << "sycl::detail::kernel_param_kind_t::kind_accessor,\n"; + break; + case SYCLIntegrationHeader::kind_sampler: + O << "sycl::detail::kernel_param_kind_t::kind_accessor,\n"; + break; + case SYCLIntegrationHeader::kind_pointer: + O << "sycl::detail::kernel_param_kind_t::kind_accessor,\n"; + break; + case SYCLIntegrationHeader::kind_stream: + O << "sycl::detail::kernel_param_kind_t::kind_accessor,\n"; + break; + case SYCLIntegrationHeader::kind_work_group_memory: + O << "sycl::detail::kernel_param_kind_t::kind_accessor,\n"; + break; + case SYCLIntegrationHeader::kind_dynamic_accessor: + O << "sycl::detail::kernel_param_kind_t::kind_accessor,\n"; + break; + default: } + O << ",\n "; } + O << "sycl::detail::kernel_param_kind_t::kind_invalid } \n};\n\n "; - O << "namespace sycl { inline namespace _V1 { namespace ext { " - "namespace oneapi { namespace " - "experimental { namespace detail { \n"; - O << "template <> struct struct_with_special_type_info<"; - type.print(O, Policy); - O << "> {\n"; - O << "template\n"; - O << " static void set_arg(int ArgIndex, ArgT& "; - O << "arg"; - O << ", HandlerT& cgh, int &NumArgs) {\n"; - int NumFields = 0; - for (const auto fieldoffset : offsets) { - O << " cgh.set_arg(ArgIndex, *("; - fieldoffset.first->getType().print(O, Policy); - O << " *)"; - O << "((char *)(&arg) + " << fieldoffset.second << ")"; - O << ");\n"; - O << " ++ArgIndex;\n"; - ++NumFields; - } - O << " NumArgs = " << NumFields << ";\n"; - O << " }\n};\n} // namespace detail \n} // namespace experimental " - "\n} " - "// namespace oneapi \n} // namespace ext \n} // namespace " - "_V1\n} " - "// namespace sycl\n\n"; visitedStructWithSpecialType[Struct] = true; } Policy.SuppressTagKeyword = false; diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index 7194f24dfcb52..bcf188e8aa429 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -8,6 +8,7 @@ #pragma once #include +#include namespace sycl { inline namespace _V1 { @@ -48,24 +49,12 @@ inline constexpr bool is_kernel_v = is_kernel::value; namespace detail { // A struct with special type is a struct type that contains special types. // The frontend defines this trait to be true after analyzing the struct at -// compile time. +// compile time and contains information about Offset, Size and kind(accessor, +// etc...) inside the struct template struct is_struct_with_special_type { - inline static constexpr bool value = false; -}; - -// This struct is made to be specialized in the integration header. -// It calls set_arg for every member of contained in the struct at -// any level of composition. So if type Foo contains two accessors and an -// integer inside and the user calls set_arg(Foo) which calls this function with -// T = Foo which will call set_arg for each of those two accessors and the int. -// The function stores in NumArgs the number of set_arg calls that it made so -// that subsequent set_arg calls initiated by the user can have the correct -// index. -template struct struct_with_special_type_info { - template - static void set_arg([[maybe_unused]] int ArgIndex, [[maybe_unused]] ArgT &arg, - [[maybe_unused]] HandlerT &cgh, - [[maybe_unused]] int &NumArgs) {} + static constexpr bool value = false; + static constexpr size_t offsetsSizes[2][]; + static constexpr detail::kernel_param_kind_t kinds[]; }; } // namespace detail From 3557c1f78970f1bcd8c66e7beb2772724df1882d Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Tue, 30 Sep 2025 07:39:55 -0700 Subject: [PATCH 045/105] Fix set_arg function --- clang/include/clang/Sema/SemaSYCL.h | 17 +++++ clang/lib/Sema/SemaSYCL.cpp | 72 ++++++++++++------- .../experimental/free_function_traits.hpp | 6 +- sycl/include/sycl/handler.hpp | 14 +++- 4 files changed, 79 insertions(+), 30 deletions(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index c623cd35d43c6..add8282f16a60 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -119,6 +119,13 @@ class SYCLIntegrationHeader { /// integration header is required. void addHostPipeRegistration() { NeedToEmitHostPipeRegistration = true; } + /// Add an Offset and a size entry to the map OffsetSizeInfo with key Struct. + void addOffsetSizeInfo(ParmVarDecl *Struct, + std::pair OffsetSize); + + /// Add a parameter Kind entry to the map KindInfo with key Struct. + void addKindInfo(ParmVarDecl *Struct, kernel_param_kind_t Kind); + private: // Kernel actual parameter descriptor. struct KernelParamDesc { @@ -206,6 +213,16 @@ class SYCLIntegrationHeader { /// Keeps track of whether declaration of __sycl_host_pipe_registration /// type and __sycl_host_pipe_registrar variable are required to emit. bool NeedToEmitHostPipeRegistration = false; + + // For every struct that contains a special type, record the offset and size + // of every special type inside of it at any nesting level. Store the + // information in the variable below. + llvm::DenseMap>> + OffsetSizeInfo; + // Likewise for the kind of a special type i.e accessor etc... + llvm::DenseMap> + KindInfo; }; class SYCLIntegrationFooter { diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index b7fa8a4482ff8..7f36f364476f1 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -3175,6 +3175,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { return ArrayRef(std::begin(Params) + LastParamIndex, std::end(Params)); } + ParmVarDecl *getTopLevelStruct() { return TopLevelStruct; } }; // This Visitor traverses the AST of the function with @@ -4526,14 +4527,14 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { bool handleSyclSpecialType(FieldDecl *FD, QualType FieldTy) final { // Being inside this function means there is a struct parameter to the free // function kernel that contains a special type. - Expr *Base = createParamReferenceExpr(TopLevelStruct); + Expr *Base = createParamReferenceExpr(DeclCreator.getTopLevelStruct()); for (const auto &child : CurrentStructs) { Base = buildMemberExpr(Base, child); } MemberExpr *MemberAccess = buildMemberExpr(Base, FD); createSpecialMethodCall(FieldTy->getAsCXXRecordDecl(), InitMethodName, MemberAccess, BodyStmts); - SemaSYCLRef.addStructWithSpecialType(TopLevelStruct->getOriginalType()->getAsCXXRecordDecl()); + SemaSYCLRef.addStructWithSpecialType(DeclCreator.getTopLevelStruct()->getType()->getAsCXXRecordDecl()); return true; } @@ -4673,7 +4674,9 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { ArgExprs.push_back(SemaSYCLRef.SemaRef.BuildDeclRefExpr( - TopLevelStruct, TopLevelStruct->getType(), VK_PRValue, FreeFunctionSrcLoc)); + DeclCreator.getTopLevelStruct(), + DeclCreator.getTopLevelStruct()->getType(), VK_PRValue, + FreeFunctionSrcLoc)); return true; } @@ -4851,10 +4854,11 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { // function parameter struct. In this case, we simply record the current // field's offset and size in OffsetSizeInfo and Kind in KindInfo. if (TopLevelStruct) { - OffsetSizeInfo[TopLevelStruct].emplace_back( - make_pair(offsetOf(FD, FieldTy), SemaSYCLRef.getASTContext() - .getTypeSizeInChars(FieldTy) - .getQuantity())); + Header.addOffsetSizeInfo( + TopLevelStruct, + std::make_pair(offsetOf(FD, FieldTy), SemaSYCLRef.getASTContext() + .getTypeSizeInChars(FieldTy) + .getQuantity())); } const auto *ClassTy = FieldTy->getAsCXXRecordDecl(); @@ -4873,21 +4877,21 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { ? SYCLIntegrationHeader::kind_dynamic_accessor : SYCLIntegrationHeader::kind_accessor; Header.addParamDesc(ParamKind, Info, CurOffset + offsetOf(FD, FieldTy)); - KindInfo[TopLevelStruct].emplace_back(ParamKind); + Header.addKindInfo(TopLevelStruct, ParamKind); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::stream)) { addParam(FD, FieldTy, SYCLIntegrationHeader::kind_stream); - KindInfo[TopLevelStruct].emplace_back(SYCLIntegrationHeader::kind_stream); + Header.addKindInfo(TopLevelStruct, SYCLIntegrationHeader::kind_stream); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::work_group_memory)) { addParam(FieldTy, SYCLIntegrationHeader::kind_work_group_memory, offsetOf(FD, FieldTy)); - KindInfo[TopLevelStruct].emplace_back( - SYCLIntegrationHeader::kind_work_group_memory); + Header.addKindInfo(TopLevelStruct, + SYCLIntegrationHeader::kind_work_group_memory); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::dynamic_work_group_memory)) { addParam(FieldTy, SYCLIntegrationHeader::kind_dynamic_work_group_memory, offsetOf(FD, FieldTy)); - KindInfo[TopLevelStruct].emplace_back( - SYCLIntegrationHeader::kind_dynamic_work_group_memory); + Header.addKindInfo(TopLevelStruct, + SYCLIntegrationHeader::kind_dynamic_work_group_memory); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::sampler) || SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::annotated_ptr) || SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::annotated_arg)) { @@ -4902,7 +4906,7 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { : (T->isPointerType() ? SYCLIntegrationHeader::kind_pointer : SYCLIntegrationHeader::kind_std_layout); addParam(T, ParamKind, offsetOf(FD, FieldTy)); - KindInfo[TopLevelStruct].emplace_back(ParamKind); + Header.addKindInfo(TopLevelStruct, ParamKind); } else { llvm_unreachable( "Unexpected SYCL special class when generating integration header"); @@ -7217,37 +7221,45 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { type.print(O, Policy); O << "> {\n"; O << " inline static constexpr bool value = true;\n"; - O << " static constexpr size_t offsetsSizes[2][] = {\n"; + O << " static constexpr int offsets[] = {\n"; for (const auto OffsetSize : OffsetSizeInfo[Param]) { - O << "{ " << OffsetSize.first << ", " << OffsetSize.second << "},\n "; + O << OffsetSize.first << ", "; } - O << "{-1, -1} } \n};\n\n "; - O << " static constexpr sycl::detail::kernel_param_kind_t kinds[] = {\n"; + O << "-1};\n\n "; + + O << " static constexpr int sizes[] = {\n"; + for (const auto OffsetSize : OffsetSizeInfo[Param]) { + O << OffsetSize.second << ", "; + } + O << "-1}; \n\n "; + + O << " static constexpr sycl::detail::kernel_param_kind_t kinds[] = {\n "; for (const auto Kind : KindInfo[Param]) { switch (Kind) { case SYCLIntegrationHeader::kind_accessor: - O << "sycl::detail::kernel_param_kind_t::kind_accessor,\n"; + O << "sycl::detail::kernel_param_kind_t::kind_accessor"; break; case SYCLIntegrationHeader::kind_sampler: - O << "sycl::detail::kernel_param_kind_t::kind_accessor,\n"; + O << "sycl::detail::kernel_param_kind_t::kind_accessor"; break; case SYCLIntegrationHeader::kind_pointer: - O << "sycl::detail::kernel_param_kind_t::kind_accessor,\n"; + O << "sycl::detail::kernel_param_kind_t::kind_accessor"; break; case SYCLIntegrationHeader::kind_stream: - O << "sycl::detail::kernel_param_kind_t::kind_accessor,\n"; + O << "sycl::detail::kernel_param_kind_t::kind_accessor"; break; case SYCLIntegrationHeader::kind_work_group_memory: - O << "sycl::detail::kernel_param_kind_t::kind_accessor,\n"; + O << "sycl::detail::kernel_param_kind_t::kind_accessor"; break; case SYCLIntegrationHeader::kind_dynamic_accessor: - O << "sycl::detail::kernel_param_kind_t::kind_accessor,\n"; + O << "sycl::detail::kernel_param_kind_t::kind_accessor"; break; default: + break; } O << ",\n "; } - O << "sycl::detail::kernel_param_kind_t::kind_invalid } \n};\n\n "; + O << "sycl::detail::kernel_param_kind_t::kind_invalid }; \n};\n\n "; visitedStructWithSpecialType[Struct] = true; } @@ -7339,6 +7351,16 @@ void SYCLIntegrationHeader::addParamDesc(kernel_param_kind_t Kind, int Info, PD.Offset = Offset; } +void SYCLIntegrationHeader::addOffsetSizeInfo( + ParmVarDecl *Struct, std::pair OffsetSize) { + OffsetSizeInfo[Struct].emplace_back(OffsetSize); +} + +void SYCLIntegrationHeader::addKindInfo( + ParmVarDecl *Struct, SYCLIntegrationHeader::kernel_param_kind_t Kind) { + KindInfo[Struct].emplace_back(Kind); +} + void SYCLIntegrationHeader::endKernel() { // nop for now } diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index bcf188e8aa429..3a95e7b8bcf16 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -53,8 +53,10 @@ namespace detail { // etc...) inside the struct template struct is_struct_with_special_type { static constexpr bool value = false; - static constexpr size_t offsetsSizes[2][]; - static constexpr detail::kernel_param_kind_t kinds[]; + static constexpr int offsets[] = {-1}; + static constexpr int sizes[] = {-1}; + static constexpr sycl::detail::kernel_param_kind_t kinds[] = { + sycl::detail::kernel_param_kind_t::kind_invalid}; }; } // namespace detail diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 9a1a6aff897b4..2ad1243a24409 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -1661,9 +1661,17 @@ class __SYCL_EXPORT handler { setArgHelper(ArgIndex, std::move(Arg)); if constexpr (ext::oneapi::experimental::detail:: is_struct_with_special_type>::value) { - int NumArgs; - ext::oneapi::experimental::detail::struct_with_special_type_info< - remove_cv_ref_t>::set_arg(ArgIndex + 1, Arg, *this, NumArgs); + int NumArgs = 0; + using type = + ext::oneapi::experimental::detail::is_struct_with_special_type< + remove_cv_ref_t>; + int index = 0; + while (type::offsets[index] != -1) { + ++NumArgs; + addArg(type::kinds[index], (char *)(&Arg) + type::offsets[index], + type::sizes[index], ArgIndex + NumArgs); + ++index; + } updateArgShift(NumArgs); } } From 1dbac8986c76f6466bf4f3c0e619055437cb7122 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Tue, 30 Sep 2025 13:52:58 -0700 Subject: [PATCH 046/105] More refactoring --- clang/include/clang/Sema/SemaSYCL.h | 19 ++--- clang/lib/Sema/SemaSYCL.cpp | 88 +++++------------------- sycl/include/sycl/detail/kernel_desc.hpp | 2 +- 3 files changed, 28 insertions(+), 81 deletions(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index add8282f16a60..ee45663ab8795 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -119,12 +119,8 @@ class SYCLIntegrationHeader { /// integration header is required. void addHostPipeRegistration() { NeedToEmitHostPipeRegistration = true; } - /// Add an Offset and a size entry to the map OffsetSizeInfo with key Struct. - void addOffsetSizeInfo(ParmVarDecl *Struct, - std::pair OffsetSize); - - /// Add a parameter Kind entry to the map KindInfo with key Struct. - void addKindInfo(ParmVarDecl *Struct, kernel_param_kind_t Kind); + /// Set the ParentStruct field + void setParentStruct(ParmVarDecl *parent); private: // Kernel actual parameter descriptor. @@ -214,9 +210,14 @@ class SYCLIntegrationHeader { /// type and __sycl_host_pipe_registrar variable are required to emit. bool NeedToEmitHostPipeRegistration = false; - // For every struct that contains a special type, record the offset and size - // of every special type inside of it at any nesting level. Store the - // information in the variable below. + // For free function kernels, keeps track of the parameter that is currently + // being analyzed if it is a struct that contains special types. + ParmVarDecl *ParentStruct; + + // For every struct that contains a special type which is given by + // the ParentStruct field above, record the offset and size of every special + // type inside of it at any nesting level. Store the information in the + // variable below. llvm::DenseMap>> OffsetSizeInfo; // Likewise for the kind of a special type i.e accessor etc... diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 7f36f364476f1..599da7418f796 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -1774,7 +1774,7 @@ class SyclKernelFieldHandler : public SyclKernelFieldHandlerBase { // Holds the last handled kernel struct parameter that contains a special // type. Set in the enterStruct functions. Only relevant for free function // kernels - ParmVarDecl *TopLevelStruct = nullptr; + ParmVarDecl *ParentStruct = nullptr; // Returns 'true' if the thing we're visiting (Based on the FD/QualType pair) // is an element of an array. FD will always be the array field. When @@ -1783,8 +1783,6 @@ class SyclKernelFieldHandler : public SyclKernelFieldHandlerBase { bool isArrayElement(const FieldDecl *FD, QualType Ty) const { return !SemaSYCLRef.getASTContext().hasSameType(FD->getType(), Ty); } - - ParmVarDecl *getTopLevelStructForCurrentField() { return TopLevelStruct; } }; // A class to represent the 'do nothing' case for filtering purposes. @@ -2975,7 +2973,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { ++StructDepth; StringRef Name = "_arg_struct"; addParam(Name, Ty); - TopLevelStruct = Params.back(); + ParentStruct = Params.back(); return true; } @@ -3175,7 +3173,7 @@ class SyclKernelDeclCreator : public SyclKernelFieldHandler { return ArrayRef(std::begin(Params) + LastParamIndex, std::end(Params)); } - ParmVarDecl *getTopLevelStruct() { return TopLevelStruct; } + ParmVarDecl *getParentStruct() { return ParentStruct; } }; // This Visitor traverses the AST of the function with @@ -4527,14 +4525,14 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { bool handleSyclSpecialType(FieldDecl *FD, QualType FieldTy) final { // Being inside this function means there is a struct parameter to the free // function kernel that contains a special type. - Expr *Base = createParamReferenceExpr(DeclCreator.getTopLevelStruct()); + Expr *Base = createParamReferenceExpr(DeclCreator.getParentStruct()); for (const auto &child : CurrentStructs) { Base = buildMemberExpr(Base, child); } MemberExpr *MemberAccess = buildMemberExpr(Base, FD); createSpecialMethodCall(FieldTy->getAsCXXRecordDecl(), InitMethodName, MemberAccess, BodyStmts); - SemaSYCLRef.addStructWithSpecialType(DeclCreator.getTopLevelStruct()->getType()->getAsCXXRecordDecl()); + SemaSYCLRef.addStructWithSpecialType(DeclCreator.getParentStruct()->getType()->getAsCXXRecordDecl()); return true; } @@ -4674,8 +4672,8 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { ArgExprs.push_back(SemaSYCLRef.SemaRef.BuildDeclRefExpr( - DeclCreator.getTopLevelStruct(), - DeclCreator.getTopLevelStruct()->getType(), VK_PRValue, + DeclCreator.getParentStruct(), + DeclCreator.getParentStruct()->getType(), VK_PRValue, FreeFunctionSrcLoc)); return true; } @@ -4740,13 +4738,6 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { SYCLIntegrationHeader &Header; int64_t CurOffset = 0; llvm::SmallVector ArrayBaseOffsets; - // For every struct that contains a special type, record the offset and size - // of every special type inside of it at any nesting level. Store the - // information in the variable below. - llvm::DenseMap>> - OffsetSizeInfo; - // Likewise for the kind of a special type i.e accessor etc... - llvm::DenseMap> KindInfo; int StructDepth = 0; // A series of functions to calculate the change in offset based on the type. @@ -4768,11 +4759,7 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { void addParam(const FieldDecl *FD, QualType ArgTy, SYCLIntegrationHeader::kernel_param_kind_t Kind) { - // If we are dealing with a field of a free function kernel parameter struct - // do not add the parameter. The offset, Size, Kind information has been - // stored in OffsetSizeInfo and KindInfo - if (TopLevelStruct) - addParam(ArgTy, Kind, offsetOf(FD, ArgTy)); + addParam(ArgTy, Kind, offsetOf(FD, ArgTy)); } // For free functions we increment the current offset as each parameter is @@ -4850,16 +4837,6 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { } bool handleSyclSpecialType(FieldDecl *FD, QualType FieldTy) final { - // If TopLevelStruct is set, it means we are traversing the fields of a free - // function parameter struct. In this case, we simply record the current - // field's offset and size in OffsetSizeInfo and Kind in KindInfo. - if (TopLevelStruct) { - Header.addOffsetSizeInfo( - TopLevelStruct, - std::make_pair(offsetOf(FD, FieldTy), SemaSYCLRef.getASTContext() - .getTypeSizeInChars(FieldTy) - .getQuantity())); - } const auto *ClassTy = FieldTy->getAsCXXRecordDecl(); assert(ClassTy && "Type must be a C++ record type"); @@ -4877,21 +4854,15 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { ? SYCLIntegrationHeader::kind_dynamic_accessor : SYCLIntegrationHeader::kind_accessor; Header.addParamDesc(ParamKind, Info, CurOffset + offsetOf(FD, FieldTy)); - Header.addKindInfo(TopLevelStruct, ParamKind); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::stream)) { addParam(FD, FieldTy, SYCLIntegrationHeader::kind_stream); - Header.addKindInfo(TopLevelStruct, SYCLIntegrationHeader::kind_stream); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::work_group_memory)) { addParam(FieldTy, SYCLIntegrationHeader::kind_work_group_memory, offsetOf(FD, FieldTy)); - Header.addKindInfo(TopLevelStruct, - SYCLIntegrationHeader::kind_work_group_memory); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::dynamic_work_group_memory)) { addParam(FieldTy, SYCLIntegrationHeader::kind_dynamic_work_group_memory, offsetOf(FD, FieldTy)); - Header.addKindInfo(TopLevelStruct, - SYCLIntegrationHeader::kind_dynamic_work_group_memory); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::sampler) || SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::annotated_ptr) || SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::annotated_arg)) { @@ -4906,7 +4877,6 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { : (T->isPointerType() ? SYCLIntegrationHeader::kind_pointer : SYCLIntegrationHeader::kind_std_layout); addParam(T, ParamKind, offsetOf(FD, FieldTy)); - Header.addKindInfo(TopLevelStruct, ParamKind); } else { llvm_unreachable( "Unexpected SYCL special class when generating integration header"); @@ -5037,10 +5007,10 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { return true; } - bool enterStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType Ty) - final { + bool enterStruct(const CXXRecordDecl *, ParmVarDecl *PD, + QualType Ty) final { addParam(PD, Ty, SYCLIntegrationHeader::kind_struct_with_special_type); - TopLevelStruct = PD; + Header.setParentStruct(PD); return true; } @@ -5051,6 +5021,7 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { + Header.setParentStruct(nullptr); return true; } @@ -7235,28 +7206,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << " static constexpr sycl::detail::kernel_param_kind_t kinds[] = {\n "; for (const auto Kind : KindInfo[Param]) { - switch (Kind) { - case SYCLIntegrationHeader::kind_accessor: - O << "sycl::detail::kernel_param_kind_t::kind_accessor"; - break; - case SYCLIntegrationHeader::kind_sampler: - O << "sycl::detail::kernel_param_kind_t::kind_accessor"; - break; - case SYCLIntegrationHeader::kind_pointer: - O << "sycl::detail::kernel_param_kind_t::kind_accessor"; - break; - case SYCLIntegrationHeader::kind_stream: - O << "sycl::detail::kernel_param_kind_t::kind_accessor"; - break; - case SYCLIntegrationHeader::kind_work_group_memory: - O << "sycl::detail::kernel_param_kind_t::kind_accessor"; - break; - case SYCLIntegrationHeader::kind_dynamic_accessor: - O << "sycl::detail::kernel_param_kind_t::kind_accessor"; - break; - default: - break; - } + O << "sycl::detail::kernel_param_kind_t::" << paramKind2Str(Kind); O << ",\n "; } O << "sycl::detail::kernel_param_kind_t::kind_invalid }; \n};\n\n "; @@ -7349,16 +7299,12 @@ void SYCLIntegrationHeader::addParamDesc(kernel_param_kind_t Kind, int Info, PD.Kind = Kind; PD.Info = Info; PD.Offset = Offset; + OffsetSizeInfo[ParentStruct].emplace_back(std::make_pair(Offset, Info)); + KindInfo[ParentStruct].emplace_back(Kind); } -void SYCLIntegrationHeader::addOffsetSizeInfo( - ParmVarDecl *Struct, std::pair OffsetSize) { - OffsetSizeInfo[Struct].emplace_back(OffsetSize); -} - -void SYCLIntegrationHeader::addKindInfo( - ParmVarDecl *Struct, SYCLIntegrationHeader::kernel_param_kind_t Kind) { - KindInfo[Struct].emplace_back(Kind); +void SYCLIntegrationHeader::setParentStruct(ParmVarDecl *parent) { + ParentStruct = parent; } void SYCLIntegrationHeader::endKernel() { diff --git a/sycl/include/sycl/detail/kernel_desc.hpp b/sycl/include/sycl/detail/kernel_desc.hpp index 39b38648972cd..1439222cf0633 100644 --- a/sycl/include/sycl/detail/kernel_desc.hpp +++ b/sycl/include/sycl/detail/kernel_desc.hpp @@ -61,7 +61,7 @@ enum class kernel_param_kind_t { kind_work_group_memory = 6, kind_dynamic_work_group_memory = 7, kind_dynamic_accessor = 8, - kind_struct_with_special_type = 9, + kind_struct_with_special_type = 9, // structs that contain special types kind_invalid = 0xf, // not a valid kernel kind }; From bb45df4b7a365ecd926507745ffd1ea9c3c105c2 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Tue, 30 Sep 2025 14:04:49 -0700 Subject: [PATCH 047/105] Add comments --- clang/include/clang/Sema/SemaSYCL.h | 2 +- clang/lib/Sema/SemaSYCL.cpp | 10 +++++++--- .../ext/oneapi/experimental/free_function_traits.hpp | 11 +++++++---- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index ee45663ab8795..d5687d5f5adfa 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -65,7 +65,7 @@ class SYCLIntegrationHeader { kind_work_group_memory, kind_dynamic_work_group_memory, kind_dynamic_accessor, - kind_struct_with_special_type, + kind_struct_with_special_type, // structs that contain special types kind_last = kind_struct_with_special_type }; diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 599da7418f796..e75fd5a9ec54d 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -4523,8 +4523,11 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { } bool handleSyclSpecialType(FieldDecl *FD, QualType FieldTy) final { - // Being inside this function means there is a struct parameter to the free - // function kernel that contains a special type. + // FD represents a special type which is a field of a struct parameter + // passed to a free function kernel Get this struct parameter using + // getParentStruct and build the __init call. Also add the struct to the + // list of special structs needed later by the integration header to + // generate some helper structs for the runtime. Expr *Base = createParamReferenceExpr(DeclCreator.getParentStruct()); for (const auto &child : CurrentStructs) { Base = buildMemberExpr(Base, child); @@ -4532,7 +4535,8 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { MemberExpr *MemberAccess = buildMemberExpr(Base, FD); createSpecialMethodCall(FieldTy->getAsCXXRecordDecl(), InitMethodName, MemberAccess, BodyStmts); - SemaSYCLRef.addStructWithSpecialType(DeclCreator.getParentStruct()->getType()->getAsCXXRecordDecl()); + SemaSYCLRef.addStructWithSpecialType( + DeclCreator.getParentStruct()->getType()->getAsCXXRecordDecl()); return true; } diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index 3a95e7b8bcf16..94a34ebf391f4 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -47,10 +47,13 @@ template inline constexpr bool is_kernel_v = is_kernel::value; namespace detail { -// A struct with special type is a struct type that contains special types. -// The frontend defines this trait to be true after analyzing the struct at -// compile time and contains information about Offset, Size and kind(accessor, -// etc...) inside the struct +// A struct with special type is a struct type that contains special types +// passed as a paremeter to a free function kernel. It is decomposed into its +// consituents by the frontend which puts the relevant informaton about each of +// them into the struct below, namely offset, size and parameter kind for each +// one of them. The runtime then calls the addArg function to add each one of +// them as kernel arguments. The value bool is used to distinguish these structs +// from ordinary e.g standard layout structs. template struct is_struct_with_special_type { static constexpr bool value = false; static constexpr int offsets[] = {-1}; From a81350cc50482aa34f78c8094870be35ab3d5663 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Tue, 30 Sep 2025 14:10:24 -0700 Subject: [PATCH 048/105] Add comments --- clang/lib/Sema/SemaSYCL.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index e75fd5a9ec54d..76c4a0fd11fa6 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -7183,11 +7183,14 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { FwdDeclEmitter.Visit(type.getDesugaredType(S.getASTContext())); - // this is a struct that contains a special type so its neither a - // special type nor a trivially copyable type. We therefore need to - // explicitly communicate to the runtime that this argument should be - // allowed as a free function kernel argument. We do this by defining - // is_struct_with_special_type to be true. + // this is a struct that contains a special type so its neither a + // special type nor a trivially copyable type. We therefore need to + // explicitly communicate to the runtime that this argument should be + // allowed as a free function kernel argument. We do this by defining + // is_struct_with_special_type to be true. This helper struct also + // contains information about the offset, size and parameter + // kind of every field inside the struct at any nesting level + // This facilitates setting the arguments in the runtime. O << "template <>\n"; O << "struct " "sycl::ext::oneapi::experimental::detail::is_struct_with_special_" From 417533d1754ca7670d82af18dabf587197c4d722 Mon Sep 17 00:00:00 2001 From: Nick Sarnie Date: Thu, 2 Oct 2025 03:11:01 +0900 Subject: [PATCH 049/105] [SYCL][ESIMD][E2E] Reenable previously failing tests (#20256) Ran CI 3 times and no fails, so should be fine. Signed-off-by: Sarnie, Nick --- sycl/test-e2e/ESIMD/Prefix_Local_sum2.cpp | 2 -- sycl/test-e2e/ESIMD/matrix_transpose_glb.cpp | 2 -- 2 files changed, 4 deletions(-) diff --git a/sycl/test-e2e/ESIMD/Prefix_Local_sum2.cpp b/sycl/test-e2e/ESIMD/Prefix_Local_sum2.cpp index 2e15cb5145223..8deb391902501 100644 --- a/sycl/test-e2e/ESIMD/Prefix_Local_sum2.cpp +++ b/sycl/test-e2e/ESIMD/Prefix_Local_sum2.cpp @@ -7,8 +7,6 @@ //===----------------------------------------------------------------------===// // RUN: %{build} -o %t.out // RUN: %{run} %t.out 20 -// UNSUPPORTED: gpu-intel-dg2 -// UNSUPPORTED-TRACKER: https://github.com/intel/llvm/issues/17075 #include "esimd_test_utils.hpp" diff --git a/sycl/test-e2e/ESIMD/matrix_transpose_glb.cpp b/sycl/test-e2e/ESIMD/matrix_transpose_glb.cpp index c3a97f3118db2..06848fcea6819 100644 --- a/sycl/test-e2e/ESIMD/matrix_transpose_glb.cpp +++ b/sycl/test-e2e/ESIMD/matrix_transpose_glb.cpp @@ -5,8 +5,6 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -// UNSUPPORTED: gpu -// UNSUPPORTED-TRACKER: https://github.com/intel/llvm/issues/17176 // RUN: %{build} -o %t.out // RUN: %{run} %t.out From c4be04eb25fe8e4a1e5149c9c2b513e99ec6677a Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 1 Oct 2025 12:27:22 -0700 Subject: [PATCH 050/105] Handle set_arg for accessors --- clang/lib/Sema/SemaSYCL.cpp | 4 ++-- sycl/include/sycl/handler.hpp | 44 +++++++++++++++++++++++++++++------ 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 76c4a0fd11fa6..a7d2b36e7949a 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -4771,8 +4771,8 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { void addParam(const ParmVarDecl *PD, QualType ParamTy, SYCLIntegrationHeader::kernel_param_kind_t Kind) { addParam(ParamTy, Kind, offsetOf(PD, ParamTy)); - CurOffset += - SemaSYCLRef.getASTContext().getTypeSizeInChars(ParamTy).getQuantity(); + //CurOffset += + // SemaSYCLRef.getASTContext().getTypeSizeInChars(ParamTy).getQuantity(); } void addParam(QualType ParamTy, diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 2ad1243a24409..e9db11b8bd0cf 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -1649,6 +1649,8 @@ class __SYCL_EXPORT handler { remove_cv_ref_t>::value; // Structs that contain special types }; + constexpr static int AccessTargetMask = 0x7ff; + /// Sets argument for OpenCL interoperability kernels. /// /// Registers Arg passed as argument # ArgIndex. @@ -1659,18 +1661,47 @@ class __SYCL_EXPORT handler { typename std::enable_if_t::value, void> set_arg(int ArgIndex, T &&Arg) { setArgHelper(ArgIndex, std::move(Arg)); + ++ArgIndex; + // The following concerns free function kernels only. + // if we are dealing with a struct parameter that contains special types + // inside, we call addArg for each field of the struct(special and standard + // layout included) at any nesting level using the information provided by + // the frontend with the arrays offsets, sizes, and kinds which as the name + // suggests, provide the offset, size and kind of each such field. if constexpr (ext::oneapi::experimental::detail:: is_struct_with_special_type>::value) { - int NumArgs = 0; using type = ext::oneapi::experimental::detail::is_struct_with_special_type< remove_cv_ref_t>; - int index = 0; - while (type::offsets[index] != -1) { + int NumArgs = 0; + while (type::offsets[NumArgs] != -1) { + void *FieldArg = (char *)(&Arg) + type::offsets[NumArgs]; + // treat accessors separately since we have to fetch the data ptr and + // pass that to the addArg function rather than the address of the + // accessor object itself. + if (type::kinds[NumArgs] == + detail::kernel_param_kind_t::kind_accessor) { + const access::target target = static_cast( + type::sizes[NumArgs] & AccessTargetMask); + if (target == target::local) { + detail::LocalAccessorBaseHost *LocalAccBase = + (detail::LocalAccessorBaseHost *)(FieldArg); + setLocalAccessorArgHelper(ArgIndex + NumArgs, *LocalAccBase); + } else { + detail::AccessorBaseHost *AccBase = + (detail::AccessorBaseHost *)(FieldArg); + const detail::AccessorImplPtr &AccImpl = + detail::getSyclObjImpl(*AccBase); + detail::AccessorImplHost *Req = AccImpl.get(); + addArg(type::kinds[NumArgs], Req, type::sizes[NumArgs], + ArgIndex + NumArgs); + } + } else { + // for non-accessors, simply call addArg normally. + addArg(type::kinds[NumArgs], FieldArg, type::sizes[NumArgs], + ArgIndex + NumArgs); + } ++NumArgs; - addArg(type::kinds[index], (char *)(&Arg) + type::offsets[index], - type::sizes[index], ArgIndex + NumArgs); - ++index; } updateArgShift(NumArgs); } @@ -3533,7 +3564,6 @@ class __SYCL_EXPORT handler { // during device compilations (by reducing amount of templates we have to // instantiate), those are only available during host compilation pass. #ifndef __SYCL_DEVICE_ONLY__ - constexpr static int AccessTargetMask = 0x7ff; /// According to section 4.7.6.11. of the SYCL specification, a local accessor /// must not be used in a SYCL kernel function that is invoked via single_task /// or via the simple form of parallel_for that takes a range parameter. From 644b0e961b5e6117ff1b55d2451eeb4a405259c3 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 1 Oct 2025 13:01:34 -0700 Subject: [PATCH 051/105] Formatting --- clang/lib/Sema/SemaSYCL.cpp | 248 +++++++++--------- sycl/include/sycl/detail/kernel_desc.hpp | 2 +- .../experimental/free_function_traits.hpp | 2 +- sycl/include/sycl/handler.hpp | 4 +- sycl/source/detail/handler_impl.hpp | 2 +- sycl/source/detail/kernel_data.hpp | 10 + sycl/source/handler.cpp | 6 +- 7 files changed, 142 insertions(+), 132 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index dc68933125424..2f227531ee8fe 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -4708,9 +4708,8 @@ class FreeFunctionKernelBodyCreator : public SyclKernelFieldHandler { bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { ArgExprs.push_back(SemaSYCLRef.SemaRef.BuildDeclRefExpr( - DeclCreator.getParentStruct(), - DeclCreator.getParentStruct()->getType(), VK_PRValue, - FreeFunctionSrcLoc)); + DeclCreator.getParentStruct(), DeclCreator.getParentStruct()->getType(), + VK_PRValue, FreeFunctionSrcLoc)); return true; } @@ -4803,8 +4802,8 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { void addParam(const ParmVarDecl *PD, QualType ParamTy, SYCLIntegrationHeader::kernel_param_kind_t Kind) { addParam(ParamTy, Kind, offsetOf(PD, ParamTy)); - //CurOffset += - // SemaSYCLRef.getASTContext().getTypeSizeInChars(ParamTy).getQuantity(); + // CurOffset += + // SemaSYCLRef.getASTContext().getTypeSizeInChars(ParamTy).getQuantity(); } void addParam(QualType ParamTy, @@ -4965,149 +4964,148 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { return true; } - bool handlePointerType(FieldDecl * FD, QualType FieldTy) final { - addParam(FD, FieldTy, - ((StructDepth) ? SYCLIntegrationHeader::kind_std_layout - : SYCLIntegrationHeader::kind_pointer)); - return true; - } + bool handlePointerType(FieldDecl *FD, QualType FieldTy) final { + addParam(FD, FieldTy, + ((StructDepth) ? SYCLIntegrationHeader::kind_std_layout + : SYCLIntegrationHeader::kind_pointer)); + return true; + } - bool handlePointerType(ParmVarDecl * PD, QualType ParamTy) final { - addParam(PD, ParamTy, SYCLIntegrationHeader::kind_pointer); - return true; - } + bool handlePointerType(ParmVarDecl *PD, QualType ParamTy) final { + addParam(PD, ParamTy, SYCLIntegrationHeader::kind_pointer); + return true; + } - bool handleScalarType(FieldDecl * FD, QualType FieldTy) final { - addParam(FD, FieldTy, SYCLIntegrationHeader::kind_std_layout); - return true; - } + bool handleScalarType(FieldDecl *FD, QualType FieldTy) final { + addParam(FD, FieldTy, SYCLIntegrationHeader::kind_std_layout); + return true; + } - bool handleScalarType(ParmVarDecl * PD, QualType ParamTy) final { - addParam(PD, ParamTy, SYCLIntegrationHeader::kind_std_layout); - return true; - } + bool handleScalarType(ParmVarDecl *PD, QualType ParamTy) final { + addParam(PD, ParamTy, SYCLIntegrationHeader::kind_std_layout); + return true; + } - bool handleSimpleArrayType(FieldDecl * FD, QualType FieldTy) final { - // Arrays are always wrapped inside of structs, so just treat it as a - // simple struct. - addParam(FD, FieldTy, SYCLIntegrationHeader::kind_std_layout); - return true; - } + bool handleSimpleArrayType(FieldDecl *FD, QualType FieldTy) final { + // Arrays are always wrapped inside of structs, so just treat it as a + // simple struct. + addParam(FD, FieldTy, SYCLIntegrationHeader::kind_std_layout); + return true; + } - bool handleTopLevelStruct(const CXXRecordDecl *, QualType Ty) final { - addParam(Ty, SYCLIntegrationHeader::kind_std_layout, /*Offset=*/0); - return true; - } + bool handleTopLevelStruct(const CXXRecordDecl *, QualType Ty) final { + addParam(Ty, SYCLIntegrationHeader::kind_std_layout, /*Offset=*/0); + return true; + } - bool handleNonDecompStruct(const CXXRecordDecl *, FieldDecl *FD, - QualType Ty) final { - addParam(FD, Ty, SYCLIntegrationHeader::kind_std_layout); - return true; - } + bool handleNonDecompStruct(const CXXRecordDecl *, FieldDecl *FD, + QualType Ty) final { + addParam(FD, Ty, SYCLIntegrationHeader::kind_std_layout); + return true; + } - bool handleNonDecompStruct(const CXXRecordDecl *, ParmVarDecl *PD, - QualType ParamTy) final { - addParam(PD, ParamTy, SYCLIntegrationHeader::kind_std_layout); - return true; - } + bool handleNonDecompStruct(const CXXRecordDecl *, ParmVarDecl *PD, + QualType ParamTy) final { + addParam(PD, ParamTy, SYCLIntegrationHeader::kind_std_layout); + return true; + } - bool handleNonDecompStruct(const CXXRecordDecl *Base, - const CXXBaseSpecifier &, QualType Ty) final { - addParam(Ty, SYCLIntegrationHeader::kind_std_layout, - offsetOf(Base, Ty->getAsCXXRecordDecl())); - return true; - } + bool handleNonDecompStruct(const CXXRecordDecl *Base, + const CXXBaseSpecifier &, QualType Ty) final { + addParam(Ty, SYCLIntegrationHeader::kind_std_layout, + offsetOf(Base, Ty->getAsCXXRecordDecl())); + return true; + } - bool handleUnionType(FieldDecl * FD, QualType FieldTy) final { - return handleScalarType(FD, FieldTy); - } + bool handleUnionType(FieldDecl *FD, QualType FieldTy) final { + return handleScalarType(FD, FieldTy); + } - bool handleUnionType(ParmVarDecl *, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool handleUnionType(ParmVarDecl *, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - void handleSyclKernelHandlerType(QualType) { - // The compiler generated kernel argument used to initialize SYCL 2020 - // specialization constants, `specialization_constants_buffer`, should - // have corresponding entry in integration header. - ASTContext &Context = SemaSYCLRef.getASTContext(); - // Offset is zero since kernel_handler argument is not part of - // kernel object (i.e. it is not captured) - addParam(Context.getPointerType(Context.CharTy), - SYCLIntegrationHeader::kind_specialization_constants_buffer, 0); - } + void handleSyclKernelHandlerType(QualType) { + // The compiler generated kernel argument used to initialize SYCL 2020 + // specialization constants, `specialization_constants_buffer`, should + // have corresponding entry in integration header. + ASTContext &Context = SemaSYCLRef.getASTContext(); + // Offset is zero since kernel_handler argument is not part of + // kernel object (i.e. it is not captured) + addParam(Context.getPointerType(Context.CharTy), + SYCLIntegrationHeader::kind_specialization_constants_buffer, 0); + } - bool enterStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { - ++StructDepth; - CurOffset += offsetOf(FD, Ty); - return true; - } + bool enterStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { + ++StructDepth; + CurOffset += offsetOf(FD, Ty); + return true; + } - bool enterStruct(const CXXRecordDecl *, ParmVarDecl *PD, - QualType Ty) final { - addParam(PD, Ty, SYCLIntegrationHeader::kind_struct_with_special_type); - Header.setParentStruct(PD); - return true; - } + bool enterStruct(const CXXRecordDecl *, ParmVarDecl *PD, QualType Ty) final { + addParam(PD, Ty, SYCLIntegrationHeader::kind_struct_with_special_type); + Header.setParentStruct(PD); + return true; + } - bool leaveStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { - --StructDepth; - CurOffset -= offsetOf(FD, Ty); - return true; - } + bool leaveStruct(const CXXRecordDecl *, FieldDecl *FD, QualType Ty) final { + --StructDepth; + CurOffset -= offsetOf(FD, Ty); + return true; + } - bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - Header.setParentStruct(nullptr); - return true; - } + bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { + Header.setParentStruct(nullptr); + return true; + } - bool enterStruct(const CXXRecordDecl *RD, const CXXBaseSpecifier &BS, - QualType) final { - CurOffset += offsetOf(RD, BS.getType()->getAsCXXRecordDecl()); - return true; - } + bool enterStruct(const CXXRecordDecl *RD, const CXXBaseSpecifier &BS, + QualType) final { + CurOffset += offsetOf(RD, BS.getType()->getAsCXXRecordDecl()); + return true; + } - bool leaveStruct(const CXXRecordDecl *RD, const CXXBaseSpecifier &BS, - QualType) final { - CurOffset -= offsetOf(RD, BS.getType()->getAsCXXRecordDecl()); - return true; - } + bool leaveStruct(const CXXRecordDecl *RD, const CXXBaseSpecifier &BS, + QualType) final { + CurOffset -= offsetOf(RD, BS.getType()->getAsCXXRecordDecl()); + return true; + } - bool enterArray(FieldDecl * FD, QualType ArrayTy, QualType) final { - ArrayBaseOffsets.push_back(CurOffset + offsetOf(FD, ArrayTy)); - return true; - } + bool enterArray(FieldDecl *FD, QualType ArrayTy, QualType) final { + ArrayBaseOffsets.push_back(CurOffset + offsetOf(FD, ArrayTy)); + return true; + } - bool enterArray(ParmVarDecl *, QualType, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool enterArray(ParmVarDecl *, QualType, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - bool nextElement(QualType ET, uint64_t Index) final { - int64_t Size = - SemaSYCLRef.getASTContext().getTypeSizeInChars(ET).getQuantity(); - CurOffset = ArrayBaseOffsets.back() + Size * Index; - return true; - } + bool nextElement(QualType ET, uint64_t Index) final { + int64_t Size = + SemaSYCLRef.getASTContext().getTypeSizeInChars(ET).getQuantity(); + CurOffset = ArrayBaseOffsets.back() + Size * Index; + return true; + } - bool leaveArray(FieldDecl * FD, QualType ArrayTy, QualType) final { - CurOffset = ArrayBaseOffsets.pop_back_val(); - CurOffset -= offsetOf(FD, ArrayTy); - return true; - } + bool leaveArray(FieldDecl *FD, QualType ArrayTy, QualType) final { + CurOffset = ArrayBaseOffsets.pop_back_val(); + CurOffset -= offsetOf(FD, ArrayTy); + return true; + } - bool leaveArray(ParmVarDecl *, QualType, QualType) final { - // TODO - unsupportedFreeFunctionParamType(); - return true; - } + bool leaveArray(ParmVarDecl *, QualType, QualType) final { + // TODO + unsupportedFreeFunctionParamType(); + return true; + } - using SyclKernelFieldHandler::enterStruct; - using SyclKernelFieldHandler::leaveStruct; - }; + using SyclKernelFieldHandler::enterStruct; + using SyclKernelFieldHandler::leaveStruct; +}; class SyclKernelIntFooterCreator : public SyclKernelFieldHandler { SYCLIntegrationFooter &Footer; diff --git a/sycl/include/sycl/detail/kernel_desc.hpp b/sycl/include/sycl/detail/kernel_desc.hpp index 082d4346d7e2a..e3134accc29f2 100644 --- a/sycl/include/sycl/detail/kernel_desc.hpp +++ b/sycl/include/sycl/detail/kernel_desc.hpp @@ -62,7 +62,7 @@ enum class kernel_param_kind_t { kind_dynamic_work_group_memory = 7, kind_dynamic_accessor = 8, kind_struct_with_special_type = 9, // structs that contain special types - kind_invalid = 0xf, // not a valid kernel kind + kind_invalid = 0xf, // not a valid kernel kind }; // describes a kernel parameter diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index 94a34ebf391f4..bdbd298750b67 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -7,8 +7,8 @@ //===----------------------------------------------------------------------===// #pragma once -#include #include +#include namespace sycl { inline namespace _V1 { diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 8c33a46e32560..3e209f1f256b4 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -3660,14 +3660,14 @@ class __SYCL_EXPORT handler { void addArg(detail::kernel_param_kind_t ArgKind, void *Req, int AccessTarget, int ArgIndex); - + #ifndef __INTEL_PREVIEW_BREAKING_CHANGES // TODO: remove in the next ABI-breaking window void clearArgs(); #endif void incrementArgShift(int); - + void setArgsToAssociatedAccessors(); bool HasAssociatedAccessor(detail::AccessorImplHost *Req, diff --git a/sycl/source/detail/handler_impl.hpp b/sycl/source/detail/handler_impl.hpp index 357c0895af1ac..b94fd2996e548 100644 --- a/sycl/source/detail/handler_impl.hpp +++ b/sycl/source/detail/handler_impl.hpp @@ -141,7 +141,7 @@ class handler_impl { /// The list of arguments for the kernel. std::vector MArgs; - + /// The list of associated accessors with this handler. /// These accessors were created with this handler as argument or /// have become required for this handler via require method. diff --git a/sycl/source/detail/kernel_data.hpp b/sycl/source/detail/kernel_data.hpp index 7ba849dc33f1f..fd76cd55fa59d 100644 --- a/sycl/source/detail/kernel_data.hpp +++ b/sycl/source/detail/kernel_data.hpp @@ -181,6 +181,8 @@ class KernelData { void extractArgsAndReqsFromLambda(); + void incrementArgShift(int Shift) { MArgShift += Shift; } + private: // Storage for any SYCL Graph dynamic parameters which have been flagged for // registration in the CG, along with the argument index for the parameter. @@ -204,6 +206,14 @@ class KernelData { // A pointer to device kernel information. Cached on the application side in // headers or retrieved from program manager. DeviceKernelInfo *MDeviceKernelInfoPtr = nullptr; + + // Certain arguments such as structs that contain SYCL special types entail + // several hidden set_arg calls for every set_arg called by the user. This + // shift is required to make sure the following arguments set by the user have + // the correct index. It keeps track of how many of these hidden set_arg calls + // have been made so far. The user cannot possibly know this, hence we need to + // keep track of this information. + int MArgShift = 0; }; } // namespace detail diff --git a/sycl/source/handler.cpp b/sycl/source/handler.cpp index f6e6c0ff1d2a7..15fc75dae71a7 100644 --- a/sycl/source/handler.cpp +++ b/sycl/source/handler.cpp @@ -2248,8 +2248,10 @@ void handler::addArg(detail::kernel_param_kind_t ArgKind, void *Req, impl->MKernelData.addArg(ArgKind, Req, AccessTarget, ArgIndex); } -void handler::incrementArgShift(int Shift) { impl->MKernelData.incrementArgShift(Shift); } - +void handler::incrementArgShift(int Shift) { + impl->MKernelData.incrementArgShift(Shift); +} + #ifndef __INTEL_PREVIEW_BREAKING_CHANGES void handler::clearArgs() { impl->MKernelData.clearArgs(); } #endif From 22eec279832dd83fa2e17e4259c0c0317150a0d2 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 1 Oct 2025 13:03:28 -0700 Subject: [PATCH 052/105] Improve commenting --- clang/include/clang/Sema/SemaSYCL.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index c1a31f453fa04..67710dd292294 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -215,9 +215,8 @@ class SYCLIntegrationHeader { ParmVarDecl *ParentStruct; // For every struct that contains a special type which is given by - // the ParentStruct field above, record the offset and size of every special - // type inside of it at any nesting level. Store the information in the - // variable below. + // the ParentStruct field above, record the offset and size of its fields + // at any nesting level. Store the information in the variable below. llvm::DenseMap>> OffsetSizeInfo; // Likewise for the kind of a special type i.e accessor etc... From def364178a9a8f8d569fbbb8b8a310ddec29fd2b Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 1 Oct 2025 13:06:08 -0700 Subject: [PATCH 053/105] Improve commenting --- clang/lib/Sema/SemaSYCL.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 2f227531ee8fe..12e905e2b0340 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -4797,13 +4797,9 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { addParam(ArgTy, Kind, offsetOf(FD, ArgTy)); } - // For free functions we increment the current offset as each parameter is - // added. void addParam(const ParmVarDecl *PD, QualType ParamTy, SYCLIntegrationHeader::kernel_param_kind_t Kind) { addParam(ParamTy, Kind, offsetOf(PD, ParamTy)); - // CurOffset += - // SemaSYCLRef.getASTContext().getTypeSizeInChars(ParamTy).getQuantity(); } void addParam(QualType ParamTy, From fcde60e20e4c2169afed9af5f03e0e1a9a5d80d5 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 1 Oct 2025 15:34:12 -0700 Subject: [PATCH 054/105] Fix merge conflicts --- clang/lib/Sema/SemaSYCL.cpp | 5 ++--- sycl/include/sycl/handler.hpp | 5 ++--- sycl/source/detail/handler_impl.hpp | 2 +- sycl/source/detail/kernel_data.cpp | 8 ++++++++ sycl/source/detail/kernel_data.hpp | 9 +++++++-- sycl/source/handler.cpp | 11 ++++++----- 6 files changed, 26 insertions(+), 14 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 12e905e2b0340..7a822f5b55f87 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -4870,7 +4870,6 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { } bool handleSyclSpecialType(FieldDecl *FD, QualType FieldTy) final { - const auto *ClassTy = FieldTy->getAsCXXRecordDecl(); assert(ClassTy && "Type must be a C++ record type"); if (isSyclAccessorType(FieldTy)) { @@ -4886,6 +4885,7 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::dynamic_local_accessor) ? SYCLIntegrationHeader::kind_dynamic_accessor : SYCLIntegrationHeader::kind_accessor; + Header.addParamDesc(ParamKind, Info, CurOffset + offsetOf(FD, FieldTy)); } else if (SemaSYCL::isSyclType(FieldTy, SYCLTypeAttr::stream)) { addParam(FD, FieldTy, SYCLIntegrationHeader::kind_stream); @@ -5053,7 +5053,6 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { - Header.setParentStruct(nullptr); return true; } @@ -7278,7 +7277,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { if (!Param->getType()->isStructureType()) continue; const RecordDecl *Struct = - Param->getType()->getAsStructureType()->getDecl(); + Param->getType()->getAsRecordDecl(); QualType type = Param->getType(); if (!S.getStructsWithSpecialType().count(Struct) || visitedStructWithSpecialType.count(Struct)) diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 3e209f1f256b4..c6c61c37bfeaf 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -1696,7 +1696,7 @@ class __SYCL_EXPORT handler { } ++NumArgs; } - updateArgShift(NumArgs); + incrementArgShift(NumArgs); } } @@ -3666,8 +3666,6 @@ class __SYCL_EXPORT handler { void clearArgs(); #endif - void incrementArgShift(int); - void setArgsToAssociatedAccessors(); bool HasAssociatedAccessor(detail::AccessorImplHost *Req, @@ -3751,6 +3749,7 @@ class __SYCL_EXPORT handler { queue getQueue(); + void incrementArgShift(int Shift); protected: /// Registers event dependencies in this command group. void depends_on(const detail::EventImplPtr &Event); diff --git a/sycl/source/detail/handler_impl.hpp b/sycl/source/detail/handler_impl.hpp index b94fd2996e548..0a97fb4d3985f 100644 --- a/sycl/source/detail/handler_impl.hpp +++ b/sycl/source/detail/handler_impl.hpp @@ -63,7 +63,7 @@ class handler_impl { KernelNameStrRefT getKernelName() const { return MKernelData.getKernelName(); - } + } /// Registers mutually exclusive submission states. HandlerSubmissionState MSubmissionState = HandlerSubmissionState::NO_STATE; diff --git a/sycl/source/detail/kernel_data.cpp b/sycl/source/detail/kernel_data.cpp index 116321b7b3b8b..c041dceeadcf6 100644 --- a/sycl/source/detail/kernel_data.cpp +++ b/sycl/source/detail/kernel_data.cpp @@ -120,6 +120,10 @@ void KernelData::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind, switch (Kind) { case kernel_param_kind_t::kind_std_layout: + case kernel_param_kind_t::kind_struct_with_special_type: { + addArg(Kind, Ptr, Size, Index + IndexShift); + break; + } case kernel_param_kind_t::kind_pointer: { addArg(Kind, Ptr, Size, Index + IndexShift); break; @@ -362,6 +366,10 @@ void KernelData::extractArgsAndReqsFromLambda() { } } +void KernelData::incrementArgShift(int Shift) { MArgShift += Shift; } + +int KernelData::getArgShift() const { return MArgShift; } + } // namespace detail } // namespace _V1 } // namespace sycl diff --git a/sycl/source/detail/kernel_data.hpp b/sycl/source/detail/kernel_data.hpp index fd76cd55fa59d..3fefc302240fd 100644 --- a/sycl/source/detail/kernel_data.hpp +++ b/sycl/source/detail/kernel_data.hpp @@ -59,7 +59,10 @@ class KernelData { MArgs.emplace_back(std::forward(args)...); } - void clearArgs() { MArgs.clear(); } + void clearArgs() { + MArgs.clear(); + MArgShift = 0; + } detail::NDRDescT &getNDRDesc() & { return MNDRDesc; } @@ -181,7 +184,9 @@ class KernelData { void extractArgsAndReqsFromLambda(); - void incrementArgShift(int Shift) { MArgShift += Shift; } + void incrementArgShift(int Shift); + + int getArgShift() const; private: // Storage for any SYCL Graph dynamic parameters which have been flagged for diff --git a/sycl/source/handler.cpp b/sycl/source/handler.cpp index 15fc75dae71a7..ed715724aeac8 100644 --- a/sycl/source/handler.cpp +++ b/sycl/source/handler.cpp @@ -2245,11 +2245,8 @@ void handler::addLifetimeSharedPtrStorage(std::shared_ptr SPtr) { void handler::addArg(detail::kernel_param_kind_t ArgKind, void *Req, int AccessTarget, int ArgIndex) { - impl->MKernelData.addArg(ArgKind, Req, AccessTarget, ArgIndex); -} - -void handler::incrementArgShift(int Shift) { - impl->MKernelData.incrementArgShift(Shift); + impl->MKernelData.addArg(ArgKind, Req, AccessTarget, + ArgIndex + impl->MKernelData.getArgShift()); } #ifndef __INTEL_PREVIEW_BREAKING_CHANGES @@ -2407,6 +2404,10 @@ void handler::setDeviceKernelInfoPtr( impl->MKernelData.setDeviceKernelInfoPtr(DeviceKernelInfoPtr); } +void handler::incrementArgShift(int Shift) { + impl->MKernelData.incrementArgShift(Shift); +} + void handler::setKernelFunc(void *KernelFuncPtr) { impl->MKernelData.setKernelFunc(KernelFuncPtr); } From e863838b31b6ffce640d75359d251c83babcf126 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 1 Oct 2025 15:39:23 -0700 Subject: [PATCH 055/105] Remove dead code --- sycl/source/detail/handler_impl.hpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/sycl/source/detail/handler_impl.hpp b/sycl/source/detail/handler_impl.hpp index 0a97fb4d3985f..0213e259a52a7 100644 --- a/sycl/source/detail/handler_impl.hpp +++ b/sycl/source/detail/handler_impl.hpp @@ -139,9 +139,6 @@ class handler_impl { /// we exit the method they are passed in. detail::CG::StorageInitHelper CGData; - /// The list of arguments for the kernel. - std::vector MArgs; - /// The list of associated accessors with this handler. /// These accessors were created with this handler as argument or /// have become required for this handler via require method. From a248351e378169970c5c3094f898734ff2cfdf0b Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 1 Oct 2025 22:39:12 -0700 Subject: [PATCH 056/105] More formatting and some bug fixing --- clang/lib/Sema/SemaSYCL.cpp | 16 ++++++++++++---- sycl/include/sycl/handler.hpp | 1 + sycl/source/detail/handler_impl.hpp | 2 +- sycl/source/detail/kernel_data.cpp | 1 + 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 7a822f5b55f87..59472b259748d 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -5053,6 +5053,7 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler { } bool leaveStruct(const CXXRecordDecl *, ParmVarDecl *, QualType) final { + Header.setParentStruct(nullptr); return true; } @@ -7276,8 +7277,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { for (ParmVarDecl *Param : K.SyclKernel->parameters()) { if (!Param->getType()->isStructureType()) continue; - const RecordDecl *Struct = - Param->getType()->getAsRecordDecl(); + const RecordDecl *Struct = Param->getType()->getAsRecordDecl(); QualType type = Param->getType(); if (!S.getStructsWithSpecialType().count(Struct) || visitedStructWithSpecialType.count(Struct)) @@ -7408,8 +7408,16 @@ void SYCLIntegrationHeader::addParamDesc(kernel_param_kind_t Kind, int Info, PD.Kind = Kind; PD.Info = Info; PD.Offset = Offset; - OffsetSizeInfo[ParentStruct].emplace_back(std::make_pair(Offset, Info)); - KindInfo[ParentStruct].emplace_back(Kind); + // If we are adding a free function kernel parameter that is a struct that + // contains a special type, a little more work needs to be done in order to + // help the runtime set the kernel arguments properly. Add the offset, size, + // and Kind information to the integration header for each field inside this + // struct. Also, verify that we are actually adding a field and not the struct + // itself by checking the Kind. + if (ParentStruct && Kind != kernel_param_kind_t::kind_struct_with_special_type) { + OffsetSizeInfo[ParentStruct].emplace_back(std::make_pair(Offset, Info)); + KindInfo[ParentStruct].emplace_back(Kind); + } } void SYCLIntegrationHeader::setParentStruct(ParmVarDecl *parent) { diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index c6c61c37bfeaf..9046d9ee41fe5 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -3750,6 +3750,7 @@ class __SYCL_EXPORT handler { queue getQueue(); void incrementArgShift(int Shift); + protected: /// Registers event dependencies in this command group. void depends_on(const detail::EventImplPtr &Event); diff --git a/sycl/source/detail/handler_impl.hpp b/sycl/source/detail/handler_impl.hpp index 0213e259a52a7..d18dc7236790b 100644 --- a/sycl/source/detail/handler_impl.hpp +++ b/sycl/source/detail/handler_impl.hpp @@ -63,7 +63,7 @@ class handler_impl { KernelNameStrRefT getKernelName() const { return MKernelData.getKernelName(); - } + } /// Registers mutually exclusive submission states. HandlerSubmissionState MSubmissionState = HandlerSubmissionState::NO_STATE; diff --git a/sycl/source/detail/kernel_data.cpp b/sycl/source/detail/kernel_data.cpp index c041dceeadcf6..8680035733038 100644 --- a/sycl/source/detail/kernel_data.cpp +++ b/sycl/source/detail/kernel_data.cpp @@ -282,6 +282,7 @@ void KernelData::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind, } } + void KernelData::extractArgsAndReqs(bool IsKernelCreatedFromSource) { std::vector UnPreparedArgs = std::move(MArgs); clearArgs(); From 9323fcc73a934ce08b9bf42a8febb95a1783d325 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 1 Oct 2025 22:44:01 -0700 Subject: [PATCH 057/105] More formatting --- clang/lib/Sema/SemaSYCL.cpp | 3 ++- sycl/source/detail/kernel_data.cpp | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 59472b259748d..88347116a7b0f 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -7414,7 +7414,8 @@ void SYCLIntegrationHeader::addParamDesc(kernel_param_kind_t Kind, int Info, // and Kind information to the integration header for each field inside this // struct. Also, verify that we are actually adding a field and not the struct // itself by checking the Kind. - if (ParentStruct && Kind != kernel_param_kind_t::kind_struct_with_special_type) { + if (ParentStruct && + Kind != kernel_param_kind_t::kind_struct_with_special_type) { OffsetSizeInfo[ParentStruct].emplace_back(std::make_pair(Offset, Info)); KindInfo[ParentStruct].emplace_back(Kind); } diff --git a/sycl/source/detail/kernel_data.cpp b/sycl/source/detail/kernel_data.cpp index 8680035733038..c041dceeadcf6 100644 --- a/sycl/source/detail/kernel_data.cpp +++ b/sycl/source/detail/kernel_data.cpp @@ -282,7 +282,6 @@ void KernelData::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind, } } - void KernelData::extractArgsAndReqs(bool IsKernelCreatedFromSource) { std::vector UnPreparedArgs = std::move(MArgs); clearArgs(); From 0d29f6d4d4cc7116bb7c10203d5765f115f880cb Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 2 Oct 2025 02:26:59 -0400 Subject: [PATCH 058/105] Update SemaSYCL.h --- clang/include/clang/Sema/SemaSYCL.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index 67710dd292294..63914b98f30da 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -219,7 +219,7 @@ class SYCLIntegrationHeader { // at any nesting level. Store the information in the variable below. llvm::DenseMap>> OffsetSizeInfo; - // Likewise for the kind of a special type i.e accessor etc... + // Likewise for the kind of a field i.e accessor, std_layout etc... llvm::DenseMap> KindInfo; From 9a50c64aa7f0a025e6c6ca9234873e85b9c468df Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Thu, 2 Oct 2025 07:09:05 -0700 Subject: [PATCH 059/105] Fix uninitialized pointer --- clang/include/clang/Sema/SemaSYCL.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index 67710dd292294..13b54c769a147 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -212,7 +212,7 @@ class SYCLIntegrationHeader { // For free function kernels, keeps track of the parameter that is currently // being analyzed if it is a struct that contains special types. - ParmVarDecl *ParentStruct; + ParmVarDecl * ParentStruct = nullptr; // For every struct that contains a special type which is given by // the ParentStruct field above, record the offset and size of its fields From 1f05d3982a16285c9fb9ae0c4c0767f3db7aaf83 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Fri, 3 Oct 2025 13:47:00 -0700 Subject: [PATCH 060/105] Address pre-commit failures --- clang/include/clang/Sema/SemaSYCL.h | 2 +- clang/lib/Sema/SemaSYCL.cpp | 10 +++++----- sycl/test/abi/sycl_symbols_linux.dump | 2 +- sycl/test/abi/sycl_symbols_windows-sycl-rel-6_3.dump | 1 - sycl/test/abi/sycl_symbols_windows.dump | 4 ++-- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/clang/include/clang/Sema/SemaSYCL.h b/clang/include/clang/Sema/SemaSYCL.h index 6044b401ed997..5cbc96a33d173 100644 --- a/clang/include/clang/Sema/SemaSYCL.h +++ b/clang/include/clang/Sema/SemaSYCL.h @@ -212,7 +212,7 @@ class SYCLIntegrationHeader { // For free function kernels, keeps track of the parameter that is currently // being analyzed if it is a struct that contains special types. - ParmVarDecl * ParentStruct = nullptr; + ParmVarDecl *ParentStruct = nullptr; // For every struct that contains a special type which is given by // the ParentStruct field above, record the offset and size of its fields diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 88347116a7b0f..5d4e67447b81f 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -7301,21 +7301,21 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { type.print(O, Policy); O << "> {\n"; O << " inline static constexpr bool value = true;\n"; - O << " static constexpr int offsets[] = {\n"; + O << " static constexpr int offsets[] = { "; for (const auto OffsetSize : OffsetSizeInfo[Param]) { O << OffsetSize.first << ", "; } - O << "-1};\n\n "; + O << "-1};\n "; - O << " static constexpr int sizes[] = {\n"; + O << " static constexpr int sizes[] = { "; for (const auto OffsetSize : OffsetSizeInfo[Param]) { O << OffsetSize.second << ", "; } - O << "-1}; \n\n "; + O << "-1}; \n "; O << " static constexpr sycl::detail::kernel_param_kind_t kinds[] = {\n "; for (const auto Kind : KindInfo[Param]) { - O << "sycl::detail::kernel_param_kind_t::" << paramKind2Str(Kind); + O << " sycl::detail::kernel_param_kind_t::" << paramKind2Str(Kind); O << ",\n "; } O << "sycl::detail::kernel_param_kind_t::kind_invalid }; \n};\n\n "; diff --git a/sycl/test/abi/sycl_symbols_linux.dump b/sycl/test/abi/sycl_symbols_linux.dump index 7e54f5b4a2f7b..b570960838a36 100644 --- a/sycl/test/abi/sycl_symbols_linux.dump +++ b/sycl/test/abi/sycl_symbols_linux.dump @@ -3647,7 +3647,7 @@ _ZN4sycl3_V17handler8getQueueEv _ZN4sycl3_V17handler8prefetchEPKvm _ZN4sycl3_V17handler8prefetchEPKvmNS0_3ext6oneapi12experimental13prefetch_typeE _ZN4sycl3_V17handler9clearArgsEv -_ZN4sycl3_V17handler14updateArgShiftEi +_ZN4sycl3_V17handler17incrementArgShiftEi _ZN4sycl3_V17handler9fill_implEPvPKvmm _ZN4sycl3_V17handlerC1EOSt10unique_ptrINS0_6detail12handler_implESt14default_deleteIS4_EE _ZN4sycl3_V17handlerC1ESt10shared_ptrINS0_3ext6oneapi12experimental6detail10graph_implEE diff --git a/sycl/test/abi/sycl_symbols_windows-sycl-rel-6_3.dump b/sycl/test/abi/sycl_symbols_windows-sycl-rel-6_3.dump index 7dce72aee3f18..359506cc8c3db 100644 --- a/sycl/test/abi/sycl_symbols_windows-sycl-rel-6_3.dump +++ b/sycl/test/abi/sycl_symbols_windows-sycl-rel-6_3.dump @@ -707,7 +707,6 @@ ??_Dexception@_V1@sycl@@QEAAXXZ ??_Fcontext@_V1@sycl@@QEAAXXZ ??_Fqueue@_V1@sycl@@QEAAXXZ -?AccessTargetMask@handler@_V1@sycl@@0HB ?Clear@exception_list@_V1@sycl@@AEAAXXZ ?DirSep@OSUtil@detail@_V1@sycl@@2QEBDEB ?DisableRangeRounding@handler@_V1@sycl@@AEAA_NXZ diff --git a/sycl/test/abi/sycl_symbols_windows.dump b/sycl/test/abi/sycl_symbols_windows.dump index ae44a73328234..21484d284e648 100644 --- a/sycl/test/abi/sycl_symbols_windows.dump +++ b/sycl/test/abi/sycl_symbols_windows.dump @@ -715,7 +715,6 @@ ??_Dexception@_V1@sycl@@QEAAXXZ ??_Fcontext@_V1@sycl@@QEAAXXZ ??_Fqueue@_V1@sycl@@QEAAXXZ -?AccessTargetMask@handler@_V1@sycl@@0HB ?Clear@exception_list@_V1@sycl@@AEAAXXZ ?DirSep@OSUtil@detail@_V1@sycl@@2QEBDEB ?DisableRangeRounding@handler@_V1@sycl@@AEAA_NXZ @@ -3837,7 +3836,8 @@ ?category@exception@_V1@sycl@@QEBAAEBVerror_category@std@@XZ ?checkNodePropertiesAndThrow@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@KAXAEBVproperty_list@67@@Z ?clearArgs@handler@_V1@sycl@@AEAAXXZ -?updateArgShift@handler@_V1@sycl@@AEAAXH@Z +?AccessTargetMask@handler@_V1@sycl@@2HB +?incrementArgShift@handler@_V1@sycl@@AEAAXH@Z ?code@exception@_V1@sycl@@QEBAAEBVerror_code@std@@XZ ?compile_from_source@detail@experimental@oneapi@ext@_V1@sycl@@YA?AV?$kernel_bundle@$00@56@AEAV?$kernel_bundle@$02@56@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV?$vector@Vstring_view@detail@_V1@sycl@@V?$allocator@Vstring_view@detail@_V1@sycl@@@std@@@std@@PEAVstring@156@2@Z ?compile_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBV?$kernel_bundle@$0A@@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@AEBVproperty_list@23@@Z From 35f87a77200e344010ff757f08d4d29348c83951 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Fri, 3 Oct 2025 14:38:46 -0700 Subject: [PATCH 061/105] Fix pre-commit failures --- .../CodeGenSYCL/free_function_int_header.cpp | 138 +++++++----------- 1 file changed, 56 insertions(+), 82 deletions(-) diff --git a/clang/test/CodeGenSYCL/free_function_int_header.cpp b/clang/test/CodeGenSYCL/free_function_int_header.cpp index f7693cb9af894..a9020631f4506 100644 --- a/clang/test/CodeGenSYCL/free_function_int_header.cpp +++ b/clang/test/CodeGenSYCL/free_function_int_header.cpp @@ -358,39 +358,39 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK: const kernel_param_desc_t kernel_signatures[] = { // CHECK-NEXT: {{.*}}__sycl_kernel_ff_2Piii // CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 8 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 12 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, // CHECK: {{.*}}__sycl_kernel_ff_2Piiii // CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 8 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 12 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 16 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, // CHECK: {{.*}}__sycl_kernel_ff_3IiEvPT_S0_S0_ // CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 8 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 12 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, // CHECK: {{.*}}__sycl_kernel_ff_3IfEvPT_S0_S0_ // CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 8 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 12 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, // CHECK: {{.*}}__sycl_kernel_ff_3IdEvPT_S0_S0_ // CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 8, 8 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 8, 16 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 8, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 8, 0 }, // CHECK: //--- _Z18__sycl_kernel_ff_410NoPointers8Pointers3Agg // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 16, 4 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 32, 20 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 16, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 32, 0 }, // CHECK: //--- _Z18__sycl_kernel_ff_6I3Agg7DerivedEvT_T0_i // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 32, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 40, 32 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 72 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 40, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, // CHECK: //--- _Z18__sycl_kernel_ff_7ILi3EEv16KArgWithPtrArrayIXT_EE // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 48, 0 }, @@ -401,27 +401,27 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK: //--- _ZN28__sycl_kernel_free_functions4ff_9EiPi // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 4 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, // CHECK: //--- _ZN28__sycl_kernel_free_functions5tests5ff_10EiPi // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 4 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, // CHECK: //--- _ZN28__sycl_kernel_free_functions5tests2V15ff_11EiPi // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 4 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, // CHECK: //--- _ZN26__sycl_kernel__GLOBAL__N_15ff_12EiPi // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 4 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, // CHECK: //--- _ZN28__sycl_kernel_free_functions5ff_13EiPi // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 4 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, // CHECK: //--- _ZN28__sycl_kernel_free_functions5tests5ff_13EiPi // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 4 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, // CHECK: //--- _Z18__sycl_kernel_ff_9N4sycl3_V125dynamic_work_group_memoryIiEE // CHECK-NEXT: { kernel_param_kind_t::kind_dynamic_work_group_memory, 8, 0 }, @@ -446,23 +446,23 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK: //--- _ZN28__sycl_kernel_free_functions5tests5ff_14EiPi // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 4 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, // CHECK: //--- _ZN28__sycl_kernel_free_functions5ff_15EiPi // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 4 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, // CHECK: //--- _ZN28__sycl_kernel_free_functions5ff_16E3AggPS0_ // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 32, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 32 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, // CHECK: //--- _ZN28__sycl_kernel_free_functions5ff_17E7DerivedPS0_ // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 40, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 40 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, // CHECK: //--- _ZN28__sycl_kernel_free_functions5tests5ff_18ENS_3AggEPS1_ // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 8, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 8 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_pointer, 8, 0 }, // CHECK: //--- _Z19__sycl_kernel_ff_19N14free_functions16KArgWithPtrArrayILi50EEE // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 800, 0 }, @@ -475,24 +475,24 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK: //--- _Z19__sycl_kernel_ff_2524AccessorAndLocalAccessor // CHECK-NEXT: { kernel_param_kind_t::kind_struct_with_special_type, 36, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 36 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4064, 48 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4064, 12 }, // CHECK: //--- _Z19__sycl_kernel_ff_2624AccessorAndLocalAccessor19SecondLevelAccessor // CHECK-NEXT: { kernel_param_kind_t::kind_struct_with_special_type, 36, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 36 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4064, 48 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_struct_with_special_type, 16, 36 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 52 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 64 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4064, 12 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_struct_with_special_type, 16, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 12 }, // CHECK: //--- _Z19__sycl_kernel_ff_2714IntAndAccessor14AccessorAndInt // CHECK-NEXT: { kernel_param_kind_t::kind_struct_with_special_type, 16, 0 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 16 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 20 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_struct_with_special_type, 16, 16 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 32 }, -// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 44 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 4 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_struct_with_special_type, 16, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 12 }, // CHECK: //--- _Z19__sycl_kernel_ff_23i // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, @@ -1595,17 +1595,12 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: template <> // CHECK-NEXT: struct sycl::ext::oneapi::experimental::detail::is_struct_with_special_type { // CHECK-NEXT: inline static constexpr bool value = true; -// CHECK-NEXT: }; - -// CHECK: template <> struct struct_with_special_type_info { -// CHECK-NEXT: template -// CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { -// CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::accessor > *)((char *)(&arg) + 0)); -// CHECK-NEXT: ++ArgIndex; -// CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::local_accessor *)((char *)(&arg) + 12)); -// CHECK-NEXT: ++ArgIndex; -// CHECK-NEXT: NumArgs = 2; -// CHECK-NEXT: } +// CHECK-NEXT: static constexpr int offsets[] = { 0, 12, -1}; +// CHECK-NEXT: static constexpr int sizes[] = { 4062, 4064, -1}; +// CHECK-NEXT: static constexpr sycl::detail::kernel_param_kind_t kinds[] = { +// CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_accessor, +// CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_accessor, +// CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_invalid }; // CHECK-NEXT: }; // CHECK: static constexpr auto __sycl_shim33() { @@ -1626,17 +1621,12 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: template <> // CHECK-NEXT: struct sycl::ext::oneapi::experimental::detail::is_struct_with_special_type { // CHECK-NEXT: inline static constexpr bool value = true; -// CHECK-NEXT: }; - -// CHECK: template <> struct struct_with_special_type_info { -// CHECK-NEXT: template -// CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { -// CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::accessor > *)((char *)(&arg) + 0)); -// CHECK-NEXT: ++ArgIndex; -// CHECK-NEXT: cgh.set_arg(ArgIndex, *(int *)((char *)(&arg) + 12)); -// CHECK-NEXT: ++ArgIndex; -// CHECK-NEXT: NumArgs = 2; -// CHECK-NEXT: } +// CHECK-NEXT: static constexpr int offsets[] = { 0, 12, -1}; +// CHECK-NEXT: static constexpr int sizes[] = { 4062, 4, -1}; +// CHECK-NEXT: static constexpr sycl::detail::kernel_param_kind_t kinds[] = { +// CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_accessor, +// CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_std_layout, +// CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_invalid }; // CHECK-NEXT: }; // CHECK: static constexpr auto __sycl_shim34() { @@ -1657,17 +1647,12 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: template <> // CHECK-NEXT: struct sycl::ext::oneapi::experimental::detail::is_struct_with_special_type { // CHECK-NEXT: inline static constexpr bool value = true; -// CHECK-NEXT: }; - -// CHECK: template <> struct struct_with_special_type_info { -// CHECK-NEXT: template -// CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { -// CHECK-NEXT: cgh.set_arg(ArgIndex, *(int *)((char *)(&arg) + 0)); -// CHECK-NEXT: ++ArgIndex; -// CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::accessor > *)((char *)(&arg) + 4)); -// CHECK-NEXT: ++ArgIndex; -// CHECK-NEXT: NumArgs = 2; -// CHECK-NEXT: } +// CHECK-NEXT: static constexpr int offsets[] = { 0, 4, -1}; +// CHECK-NEXT: static constexpr int sizes[] = { 4, 4062, -1}; +// CHECK-NEXT: static constexpr sycl::detail::kernel_param_kind_t kinds[] = { +// CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_std_layout, +// CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_accessor, +// CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_invalid }; // CHECK-NEXT: }; // CHECK: template <> @@ -1675,17 +1660,6 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: inline static constexpr bool value = true; // CHECK-NEXT: }; -// CHECK: template <> struct struct_with_special_type_info { -// CHECK-NEXT: template -// CHECK-NEXT: static void set_arg(int ArgIndex, ArgT& arg, HandlerT& cgh, int &NumArgs) { -// CHECK-NEXT: cgh.set_arg(ArgIndex, *(sycl::accessor > *)((char *)(&arg) + 0)); -// CHECK-NEXT: ++ArgIndex; -// CHECK-NEXT: cgh.set_arg(ArgIndex, *(int *)((char *)(&arg) + 12)); -// CHECK-NEXT: ++ArgIndex; -// CHECK-NEXT: NumArgs = 2; -// CHECK-NEXT: } -// CHECK-NEXT: }; - // CHECK: static constexpr auto __sycl_shim35() { // CHECK-NEXT: return (void (*)(struct IntAndAccessor, struct AccessorAndInt))ff_27; // CHECK-NEXT: } From 2f80b121cafee3b1bf32aa2aefb6e7cefa95c9d1 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Mon, 6 Oct 2025 07:56:52 -0700 Subject: [PATCH 062/105] Revert some ABI breaking changes --- sycl/include/sycl/handler.hpp | 6 +++--- sycl/test/abi/sycl_symbols_windows-sycl-rel-6_3.dump | 1 + sycl/test/abi/sycl_symbols_windows.dump | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 9046d9ee41fe5..ade583b476fa0 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -1641,9 +1641,7 @@ class __SYCL_EXPORT handler { || ext::oneapi::experimental::detail::is_struct_with_special_type< remove_cv_ref_t>::value; // Structs that contain special types }; - - constexpr static int AccessTargetMask = 0x7ff; - + /// Sets argument for OpenCL interoperability kernels. /// /// Registers Arg passed as argument # ArgIndex. @@ -1674,6 +1672,7 @@ class __SYCL_EXPORT handler { // accessor object itself. if (type::kinds[NumArgs] == detail::kernel_param_kind_t::kind_accessor) { + constexpr int AccessTargetMask = 0x7ff; const access::target target = static_cast( type::sizes[NumArgs] & AccessTargetMask); if (target == target::local) { @@ -3571,6 +3570,7 @@ class __SYCL_EXPORT handler { // during device compilations (by reducing amount of templates we have to // instantiate), those are only available during host compilation pass. #ifndef __SYCL_DEVICE_ONLY__ + constexpr static int AccessTargetMask = 0x7ff; /// According to section 4.7.6.11. of the SYCL specification, a local accessor /// must not be used in a SYCL kernel function that is invoked via single_task /// or via the simple form of parallel_for that takes a range parameter. diff --git a/sycl/test/abi/sycl_symbols_windows-sycl-rel-6_3.dump b/sycl/test/abi/sycl_symbols_windows-sycl-rel-6_3.dump index 359506cc8c3db..7dce72aee3f18 100644 --- a/sycl/test/abi/sycl_symbols_windows-sycl-rel-6_3.dump +++ b/sycl/test/abi/sycl_symbols_windows-sycl-rel-6_3.dump @@ -707,6 +707,7 @@ ??_Dexception@_V1@sycl@@QEAAXXZ ??_Fcontext@_V1@sycl@@QEAAXXZ ??_Fqueue@_V1@sycl@@QEAAXXZ +?AccessTargetMask@handler@_V1@sycl@@0HB ?Clear@exception_list@_V1@sycl@@AEAAXXZ ?DirSep@OSUtil@detail@_V1@sycl@@2QEBDEB ?DisableRangeRounding@handler@_V1@sycl@@AEAA_NXZ diff --git a/sycl/test/abi/sycl_symbols_windows.dump b/sycl/test/abi/sycl_symbols_windows.dump index 21484d284e648..61b2e18ecf814 100644 --- a/sycl/test/abi/sycl_symbols_windows.dump +++ b/sycl/test/abi/sycl_symbols_windows.dump @@ -715,6 +715,7 @@ ??_Dexception@_V1@sycl@@QEAAXXZ ??_Fcontext@_V1@sycl@@QEAAXXZ ??_Fqueue@_V1@sycl@@QEAAXXZ +?AccessTargetMask@handler@_V1@sycl@@0HB ?Clear@exception_list@_V1@sycl@@AEAAXXZ ?DirSep@OSUtil@detail@_V1@sycl@@2QEBDEB ?DisableRangeRounding@handler@_V1@sycl@@AEAA_NXZ @@ -3836,7 +3837,6 @@ ?category@exception@_V1@sycl@@QEBAAEBVerror_category@std@@XZ ?checkNodePropertiesAndThrow@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@KAXAEBVproperty_list@67@@Z ?clearArgs@handler@_V1@sycl@@AEAAXXZ -?AccessTargetMask@handler@_V1@sycl@@2HB ?incrementArgShift@handler@_V1@sycl@@AEAAXH@Z ?code@exception@_V1@sycl@@QEBAAEBVerror_code@std@@XZ ?compile_from_source@detail@experimental@oneapi@ext@_V1@sycl@@YA?AV?$kernel_bundle@$00@56@AEAV?$kernel_bundle@$02@56@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV?$vector@Vstring_view@detail@_V1@sycl@@V?$allocator@Vstring_view@detail@_V1@sycl@@@std@@@std@@PEAVstring@156@2@Z From 50b264d89056dd02457e5490ce8d5ffe6bc1bb37 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Mon, 6 Oct 2025 13:43:41 -0700 Subject: [PATCH 063/105] Add specialization of is_device_copyable in integration header --- clang/lib/Sema/SemaSYCL.cpp | 9 +++ .../CodeGenSYCL/free_function_int_header.cpp | 61 +++++++++++++++---- sycl/include/sycl/handler.hpp | 7 ++- 3 files changed, 63 insertions(+), 14 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 5d4e67447b81f..f121d962d2450 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -7293,6 +7293,15 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { // contains information about the offset, size and parameter // kind of every field inside the struct at any nesting level // This facilitates setting the arguments in the runtime. + // We also define is_device_copyable trait to be true for this type to + // allow it being passed in device kernels. + O << "template <>\n"; + O << "struct " + "sycl::detail::is_device_copyable<"; + Policy.SuppressTagKeyword = true; + type.print(O, Policy); + O << ">: std::true_type {};\n"; + O << "template <>\n"; O << "struct " "sycl::ext::oneapi::experimental::detail::is_struct_with_special_" diff --git a/clang/test/CodeGenSYCL/free_function_int_header.cpp b/clang/test/CodeGenSYCL/free_function_int_header.cpp index a9020631f4506..398a102337ce6 100644 --- a/clang/test/CodeGenSYCL/free_function_int_header.cpp +++ b/clang/test/CodeGenSYCL/free_function_int_header.cpp @@ -299,6 +299,12 @@ struct SecondLevelAccessor { AccessorAndInt accAndInt; }; +template +struct TemplatedAccessorStruct { + sycl::accessor acc; + sycl::local_accessor lacc; +}; + [[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 0)]] void ff_25(AccessorAndLocalAccessor arg1) { } @@ -311,6 +317,10 @@ void ff_26(AccessorAndLocalAccessor arg1, SecondLevelAccessor arg2) { void ff_27(IntAndAccessor arg1, AccessorAndInt) { } +[[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 0)]] +void ff_28(TemplatedAccessorStruct arg1) { +} + // CHECK: const char* const kernel_names[] = { // CHECK-NEXT: {{.*}}__sycl_kernel_ff_2Piii // CHECK-NEXT: {{.*}}__sycl_kernel_ff_2Piiii @@ -349,6 +359,7 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: {{.*}}__sycl_kernel_ff_2524AccessorAndLocalAccessor", // CHECK-NEXT: {{.*}}__sycl_kernel_ff_2624AccessorAndLocalAccessor19SecondLevelAccessor", // CHECK-NEXT: {{.*}}__sycl_kernel_ff_2714IntAndAccessor14AccessorAndInt", +// CHECK-NEXT: {{.*}}__sycl_kernel_ff_2823TemplatedAccessorStructIiE", // CHECK-NEXT: {{.*}}__sycl_kernel_ff_23i" @@ -494,6 +505,11 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 0 }, // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 12 }, +// CHECK: //--- _Z19__sycl_kernel_ff_2823TemplatedAccessorStructIiE +// CHECK-NEXT: { kernel_param_kind_t::kind_struct_with_special_type, 36, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 0 }, +// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4064, 12 }, + // CHECK: //--- _Z19__sycl_kernel_ff_23i // CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 }, @@ -1655,11 +1671,6 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_invalid }; // CHECK-NEXT: }; -// CHECK: template <> -// CHECK-NEXT: struct sycl::ext::oneapi::experimental::detail::is_struct_with_special_type { -// CHECK-NEXT: inline static constexpr bool value = true; -// CHECK-NEXT: }; - // CHECK: static constexpr auto __sycl_shim35() { // CHECK-NEXT: return (void (*)(struct IntAndAccessor, struct AccessorAndInt))ff_27; // CHECK-NEXT: } @@ -1672,18 +1683,46 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: static constexpr bool value = true; // CHECK-NEXT: }; + +// CHECK: Definition of _Z19__sycl_kernel_ff_2823TemplatedAccessorStructIiE as a free function kernel +// CHECK: Forward declarations of kernel and its argument types: +// CHECK: template struct TemplatedAccessorStruct; +// CHECK: void ff_28(TemplatedAccessorStruct arg1); +// CHECK-NEXT: template <> +// CHECK-NEXT: struct sycl::ext::oneapi::experimental::detail::is_struct_with_special_type> { +// CHECK-NEXT: inline static constexpr bool value = true; +// CHECK-NEXT: static constexpr int offsets[] = { 0, 12, -1}; +// CHECK-NEXT: static constexpr int sizes[] = { 4062, 4064, -1}; +// CHECK-NEXT: static constexpr sycl::detail::kernel_param_kind_t kinds[] = { +// CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_accessor, +// CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_accessor, +// CHECK-NEXT sycl::detail::kernel_param_kind_t::kind_invalid }; +// CHECK-NEXT: }; + +// CHECK: static constexpr auto __sycl_shim36() { +// CHECK-NEXT: return (void (*)(struct TemplatedAccessorStruct))ff_28; +// CHECK-NEXT: } + +// CHECK: struct ext::oneapi::experimental::is_kernel<__sycl_shim36()> { +// CHECK-NEXT: static constexpr bool value = true; +// CHECK-NEXT: }; +// CHECK-NEXT: template <> +// CHECK-NEXT: struct ext::oneapi::experimental::is_single_task_kernel<__sycl_shim36()> { +// CHECK-NEXT: static constexpr bool value = true; +// CHECK-NEXT: }; + // CHECK: Definition of _Z19__sycl_kernel_ff_23i as a free function kernel // CHECK: Forward declarations of kernel and its argument types: // CHECK: void ff_23(int arg); -// CHECK-NEXT: static constexpr auto __sycl_shim36() { +// CHECK-NEXT: static constexpr auto __sycl_shim37() { // CHECK-NEXT: return (void (*)(int))ff_23; // CHECK-NEXT: } // CHECK: namespace sycl { // CHECK-NEXT: inline namespace _V1 { // CHECK-NEXT: namespace detail { -// CHECK-NEXT: //Free Function Kernel info specialization for shim36 -// CHECK-NEXT: template <> struct FreeFunctionInfoData<__sycl_shim36()> { +// CHECK-NEXT: //Free Function Kernel info specialization for shim37 +// CHECK-NEXT: template <> struct FreeFunctionInfoData<__sycl_shim37()> { // CHECK-NEXT: __SYCL_DLL_LOCAL // CHECK-NEXT: static constexpr unsigned getNumParams() { return 1; } // CHECK-NEXT: __SYCL_DLL_LOCAL @@ -1695,11 +1734,11 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK: namespace sycl { // CHECK-NEXT: template <> -// CHECK-NEXT: struct ext::oneapi::experimental::is_kernel<__sycl_shim36()> { +// CHECK-NEXT: struct ext::oneapi::experimental::is_kernel<__sycl_shim37()> { // CHECK-NEXT: static constexpr bool value = true; // CHECK-NEXT: }; // CHECK-NEXT: template <> -// CHECK-NEXT: struct ext::oneapi::experimental::is_single_task_kernel<__sycl_shim36()> { +// CHECK-NEXT: struct ext::oneapi::experimental::is_single_task_kernel<__sycl_shim37()> { // CHECK-NEXT: static constexpr bool value = true; // CHECK-NEXT: }; @@ -1713,7 +1752,7 @@ void ff_27(IntAndAccessor arg1, AccessorAndInt) { // CHECK-NEXT: namespace detail { // CHECK-NEXT: struct GlobalMapUpdater { // CHECK-NEXT: GlobalMapUpdater() { -// CHECK-NEXT: sycl::detail::free_function_info_map::add(sycl::detail::kernel_names, sycl::detail::kernel_args_sizes, 36); +// CHECK-NEXT: sycl::detail::free_function_info_map::add(sycl::detail::kernel_names, sycl::detail::kernel_args_sizes, 37); // CHECK-NEXT: } // CHECK-NEXT: }; // CHECK-NEXT: static GlobalMapUpdater updater; diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index ade583b476fa0..4e716b25943e3 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -1638,10 +1638,11 @@ class __SYCL_EXPORT handler { std::is_pointer_v>) // USM || is_same_type::value // Interop || is_same_type::value // Stream - || ext::oneapi::experimental::detail::is_struct_with_special_type< - remove_cv_ref_t>::value; // Structs that contain special types + || + sycl::is_device_copyable_v>; // Structs that contain + // special types }; - + /// Sets argument for OpenCL interoperability kernels. /// /// Registers Arg passed as argument # ArgIndex. From 5861175dd1d030d007dfd29b42bd930bf4d9c74f Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Mon, 6 Oct 2025 14:12:27 -0700 Subject: [PATCH 064/105] Modify tests to check for the device_copyable trait --- clang/lib/Sema/SemaSYCL.cpp | 2 +- .../CodeGenSYCL/free_function_int_header.cpp | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index f121d962d2450..3cad865f7afd2 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -7297,7 +7297,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { // allow it being passed in device kernels. O << "template <>\n"; O << "struct " - "sycl::detail::is_device_copyable<"; + "sycl::is_device_copyable<"; Policy.SuppressTagKeyword = true; type.print(O, Policy); O << ">: std::true_type {};\n"; diff --git a/clang/test/CodeGenSYCL/free_function_int_header.cpp b/clang/test/CodeGenSYCL/free_function_int_header.cpp index 398a102337ce6..250ac721ab583 100644 --- a/clang/test/CodeGenSYCL/free_function_int_header.cpp +++ b/clang/test/CodeGenSYCL/free_function_int_header.cpp @@ -1609,6 +1609,8 @@ void ff_28(TemplatedAccessorStruct arg1) { // CHECK: Forward declarations of kernel and its argument types: // CHECK: void ff_25(AccessorAndLocalAccessor arg1); // CHECK-NEXT: template <> +// CHECK-NEXT: struct sycl::is_device_copyable: std::true_type {}; +// CHECK-NEXT: template <> // CHECK-NEXT: struct sycl::ext::oneapi::experimental::detail::is_struct_with_special_type { // CHECK-NEXT: inline static constexpr bool value = true; // CHECK-NEXT: static constexpr int offsets[] = { 0, 12, -1}; @@ -1635,6 +1637,8 @@ void ff_28(TemplatedAccessorStruct arg1) { // CHECK: Forward declarations of kernel and its argument types: // CHECK: void ff_26(AccessorAndLocalAccessor arg1, SecondLevelAccessor arg2); // CHECK-NEXT: template <> +// CHECK-NEXT: struct sycl::is_device_copyable: std::true_type {}; +// CHECK-NEXT: template <> // CHECK-NEXT: struct sycl::ext::oneapi::experimental::detail::is_struct_with_special_type { // CHECK-NEXT: inline static constexpr bool value = true; // CHECK-NEXT: static constexpr int offsets[] = { 0, 12, -1}; @@ -1661,6 +1665,8 @@ void ff_28(TemplatedAccessorStruct arg1) { // CHECK: Forward declarations of kernel and its argument types: // CHECK: void ff_27(IntAndAccessor arg1, AccessorAndInt ); // CHECK-NEXT: template <> +// CHECK-NEXT: struct sycl::is_device_copyable: std::true_type {}; +// CHECK-NEXT: template <> // CHECK-NEXT: struct sycl::ext::oneapi::experimental::detail::is_struct_with_special_type { // CHECK-NEXT: inline static constexpr bool value = true; // CHECK-NEXT: static constexpr int offsets[] = { 0, 4, -1}; @@ -1671,6 +1677,21 @@ void ff_28(TemplatedAccessorStruct arg1) { // CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_invalid }; // CHECK-NEXT: }; +// CHECK: template <> +// CHECK-NEXT: struct sycl::is_device_copyable: std::true_type {}; +// CHECK-NEXT: template <> +// CHECK-NEXT: struct sycl::ext::oneapi::experimental::detail::is_struct_with_special_type { +// CHECK-NEXT: inline static constexpr bool value = true; +// CHECK-NEXT: static constexpr int offsets[] = { 0, 12, -1}; +// CHECK-NEXT: static constexpr int sizes[] = { 4062, 4, -1}; +// CHECK-NEXT: static constexpr sycl::detail::kernel_param_kind_t kinds[] = { +// CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_accessor, +// CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_std_layout, +// CHECK-NEXT: sycl::detail::kernel_param_kind_t::kind_invalid }; +// CHECK-NEXT: }; + + + // CHECK: static constexpr auto __sycl_shim35() { // CHECK-NEXT: return (void (*)(struct IntAndAccessor, struct AccessorAndInt))ff_27; // CHECK-NEXT: } @@ -1689,6 +1710,8 @@ void ff_28(TemplatedAccessorStruct arg1) { // CHECK: template struct TemplatedAccessorStruct; // CHECK: void ff_28(TemplatedAccessorStruct arg1); // CHECK-NEXT: template <> +// CHECK-NEXT: struct sycl::is_device_copyable>: std::true_type {}; +// CHECK-NEXT: template <> // CHECK-NEXT: struct sycl::ext::oneapi::experimental::detail::is_struct_with_special_type> { // CHECK-NEXT: inline static constexpr bool value = true; // CHECK-NEXT: static constexpr int offsets[] = { 0, 12, -1}; From 4396bf9fd520a1cca480da0d78d604825252f15c Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Tue, 7 Oct 2025 07:33:25 -0700 Subject: [PATCH 065/105] Fix pre-commit failures --- clang/lib/Sema/SemaSYCL.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 3cad865f7afd2..31491f6a9c6a3 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -6908,6 +6908,7 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << "#include \n"; O << "#include \n"; O << "#include \n"; + O << "#include \n"; O << "\n"; LangOptions LO; From 43076a20c4038a1ea235069dd96a8ec82735a935 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Tue, 7 Oct 2025 08:20:48 -0700 Subject: [PATCH 066/105] Fix more pre-commit failures --- .../Inputs/sycl/detail/is_device_copyable.hpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp diff --git a/clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp b/clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp new file mode 100644 index 0000000000000..874b01e890da0 --- /dev/null +++ b/clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp @@ -0,0 +1,14 @@ +//==------------ is_device_copyable.hpp - ----------------------------------==// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#pragma once + +namespace sycl { +inline namespace _V1 { +template struct is_device_copyable; +} // namespace _V1 +} // namespace sycl From f72f9530bde6ec18e8263f63dc6d3c69d21e5130 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Tue, 7 Oct 2025 12:14:35 -0400 Subject: [PATCH 067/105] Update is_device_copyable.hpp --- clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp b/clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp index 874b01e890da0..91cd6816e15ee 100644 --- a/clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp +++ b/clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp @@ -8,7 +8,5 @@ #pragma once namespace sycl { -inline namespace _V1 { template struct is_device_copyable; -} // namespace _V1 } // namespace sycl From 46ab7f20de3a6b24486fe90db3e55d0f1a09703a Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Tue, 7 Oct 2025 12:24:25 -0700 Subject: [PATCH 068/105] Fix more pre-commit failures --- clang/lib/Sema/SemaSYCL.cpp | 1 - .../Inputs/sycl/detail/is_device_copyable.hpp | 14 -------------- .../oneapi/experimental/free_function_traits.hpp | 3 +++ 3 files changed, 3 insertions(+), 15 deletions(-) delete mode 100644 clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 31491f6a9c6a3..3cad865f7afd2 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -6908,7 +6908,6 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << "#include \n"; O << "#include \n"; O << "#include \n"; - O << "#include \n"; O << "\n"; LangOptions LO; diff --git a/clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp b/clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp deleted file mode 100644 index 874b01e890da0..0000000000000 --- a/clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp +++ /dev/null @@ -1,14 +0,0 @@ -//==------------ is_device_copyable.hpp - ----------------------------------==// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#pragma once - -namespace sycl { -inline namespace _V1 { -template struct is_device_copyable; -} // namespace _V1 -} // namespace sycl diff --git a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp index bdbd298750b67..f399c380fd5f8 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/free_function_traits.hpp @@ -64,5 +64,8 @@ template struct is_struct_with_special_type { } // namespace detail } // namespace ext::oneapi::experimental + +template struct is_device_copyable; + } // namespace _V1 } // namespace sycl From cb43003cd958bc315eab2c2ac6966c25f4276cdb Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Tue, 7 Oct 2025 15:27:37 -0400 Subject: [PATCH 069/105] Delete clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp --- .../Inputs/sycl/detail/is_device_copyable.hpp | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp diff --git a/clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp b/clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp deleted file mode 100644 index 91cd6816e15ee..0000000000000 --- a/clang/test/SemaSYCL/Inputs/sycl/detail/is_device_copyable.hpp +++ /dev/null @@ -1,12 +0,0 @@ -//==------------ is_device_copyable.hpp - ----------------------------------==// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#pragma once - -namespace sycl { -template struct is_device_copyable; -} // namespace sycl From 6763f3bde67784b62205c9585a616f74ba1f3011 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Tue, 2 Dec 2025 20:27:15 -0800 Subject: [PATCH 070/105] Resolve pre-commit failures --- clang/test/CodeGenSYCL/free_function_int_header.cpp | 2 +- sycl/source/detail/scheduler/commands.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/clang/test/CodeGenSYCL/free_function_int_header.cpp b/clang/test/CodeGenSYCL/free_function_int_header.cpp index 14b46076a260a..b4326f023df54 100644 --- a/clang/test/CodeGenSYCL/free_function_int_header.cpp +++ b/clang/test/CodeGenSYCL/free_function_int_header.cpp @@ -1776,7 +1776,7 @@ void ff_28(TemplatedAccessorStruct arg1) { // CHECK-NEXT: sycl::detail::free_function_info_map::add(sycl::detail::kernel_names, sycl::detail::kernel_args_sizes, 37); // CHECK-NEXT: } // CHECK-NEXT: ~GlobalMapUpdater() { -// CHECK-NEXT: sycl::detail::free_function_info_map::remove(sycl::detail::kernel_names, sycl::detail::kernel_args_sizes, 33); +// CHECK-NEXT: sycl::detail::free_function_info_map::remove(sycl::detail::kernel_names, sycl::detail::kernel_args_sizes, 37); // CHECK-NEXT: } // CHECK-NEXT: }; // CHECK-NEXT: static GlobalMapUpdater updater; diff --git a/sycl/source/detail/scheduler/commands.cpp b/sycl/source/detail/scheduler/commands.cpp index dd3b2b4a78194..0fb0ba2e72369 100644 --- a/sycl/source/detail/scheduler/commands.cpp +++ b/sycl/source/detail/scheduler/commands.cpp @@ -2308,6 +2308,8 @@ static void GetUrArgsBasedOnType( 0, {}}; switch (Arg.MType) { + case kernel_param_kind_t::kind_struct_with_special_type: + break; case kernel_param_kind_t::kind_dynamic_work_group_memory: break; case kernel_param_kind_t::kind_work_group_memory: From a71a745c466b4871097f0a17488f4a943fc7b9d3 Mon Sep 17 00:00:00 2001 From: Chris Perkins Date: Tue, 2 Dec 2025 22:33:53 -0700 Subject: [PATCH 071/105] [E2E][BINDLESS] reenable copy_subregion_2D.cpp (#20678) can't reproduce the failure seen https://github.com/intel/llvm/issues/20006 . Wanting to try it on CI again to see if still relevant. --- sycl/test-e2e/bindless_images/copies/copy_subregion_2D.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sycl/test-e2e/bindless_images/copies/copy_subregion_2D.cpp b/sycl/test-e2e/bindless_images/copies/copy_subregion_2D.cpp index a9deb5e336d8a..541420a97dc26 100644 --- a/sycl/test-e2e/bindless_images/copies/copy_subregion_2D.cpp +++ b/sycl/test-e2e/bindless_images/copies/copy_subregion_2D.cpp @@ -1,5 +1,5 @@ // REQUIRES: aspect-ext_oneapi_bindless_images -// UNSUPPORTED: gpu +// UNSUPPORTED: gpu-intel-dg2 // UNSUPPORTED-INTENDED: sporadic failure in CI // https://github.com/intel/llvm/issues/20006 // XFAIL: linux && arch-intel_gpu_acm_g10 && level_zero_v2_adapter From 4561a40caf481051a680cd61a5a84f4c6fabaa8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Stolarczuk?= Date: Wed, 3 Dec 2025 12:18:07 +0100 Subject: [PATCH 072/105] [CI][UR] Bump DPC++ version used in UR workflow (#20781) --- .github/workflows/ur-build-hw.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ur-build-hw.yml b/.github/workflows/ur-build-hw.yml index 709945c95fc3e..a50b8cb2d0945 100644 --- a/.github/workflows/ur-build-hw.yml +++ b/.github/workflows/ur-build-hw.yml @@ -126,7 +126,7 @@ jobs: - name: Download DPC++ run: | - wget -O dpcpp_compiler.tar.gz https://github.com/intel/llvm/releases/download/nightly-2024-12-12/sycl_linux.tar.gz + wget -O dpcpp_compiler.tar.gz https://github.com/intel/llvm/releases/download/nightly-2025-11-28/sycl_linux.tar.gz mkdir -p dpcpp_compiler tar -xvf dpcpp_compiler.tar.gz -C dpcpp_compiler From a47637569b856cfeb857b3825bcf7e5d2c19ce6d Mon Sep 17 00:00:00 2001 From: Dounia Khaldi Date: Wed, 3 Dec 2025 09:06:33 -0600 Subject: [PATCH 073/105] [SYCL] Add support for WCL for matrix aspect (#20794) --- sycl/source/detail/device_impl.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sycl/source/detail/device_impl.hpp b/sycl/source/detail/device_impl.hpp index a52fd65353a10..1e3b735bf86f4 100644 --- a/sycl/source/detail/device_impl.hpp +++ b/sycl/source/detail/device_impl.hpp @@ -1480,7 +1480,7 @@ class device_impl : public std::enable_shared_from_this { arch::intel_gpu_dg2_g12, arch::intel_gpu_bmg_g21, arch::intel_gpu_bmg_g31, arch::intel_gpu_lnl_m, arch::intel_gpu_arl_h, arch::intel_gpu_ptl_h, - arch::intel_gpu_ptl_u, + arch::intel_gpu_ptl_u, arch::intel_gpu_wcl, }; try { return std::any_of( @@ -2031,7 +2031,8 @@ class device_impl : public std::enable_shared_from_this { (architecture::intel_gpu_bmg_g31 == DeviceArch) || (architecture::intel_gpu_lnl_m == DeviceArch) || (architecture::intel_gpu_ptl_h == DeviceArch) || - (architecture::intel_gpu_ptl_u == DeviceArch)) { + (architecture::intel_gpu_ptl_u == DeviceArch) || + (architecture::intel_gpu_wcl == DeviceArch)) { std::vector pvc_combs = { {8, 0, 0, 0, 16, 32, matrix_type::uint8, matrix_type::uint8, matrix_type::sint32, matrix_type::sint32}, From 2342a56bbbb4fbf2c3aa1d569ef786ccf411ee84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20=C5=9Awi=C4=99cicki?= Date: Wed, 3 Dec 2025 16:12:23 +0100 Subject: [PATCH 074/105] [UR] Cleanup the record & replay spec (#20806) --- unified-runtime/include/ur_api.h | 110 ++++++------- unified-runtime/include/ur_api_funcs.def | 2 +- unified-runtime/include/ur_ddi.h | 14 +- unified-runtime/include/ur_print.h | 20 +-- unified-runtime/include/ur_print.hpp | 115 ++++++------- unified-runtime/scripts/core/EXP-GRAPH.rst | 8 +- unified-runtime/scripts/core/exp-graph.yml | 153 ++++++++---------- unified-runtime/scripts/core/registry.yml | 8 +- .../source/adapters/cuda/queue.cpp | 11 +- .../adapters/cuda/ur_interface_loader.cpp | 2 +- unified-runtime/source/adapters/hip/queue.cpp | 11 +- .../adapters/hip/ur_interface_loader.cpp | 2 +- .../source/adapters/level_zero/queue.cpp | 10 +- .../level_zero/ur_interface_loader.cpp | 2 +- .../level_zero/ur_interface_loader.hpp | 14 +- .../adapters/level_zero/v2/queue_api.cpp | 18 +-- .../adapters/level_zero/v2/queue_api.hpp | 6 +- .../adapters/level_zero/v2/queue_batched.hpp | 9 +- .../v2/queue_immediate_in_order.hpp | 9 +- .../v2/queue_immediate_out_of_order.hpp | 9 +- .../source/adapters/mock/ur_mockddi.cpp | 51 +++--- .../source/adapters/native_cpu/queue.cpp | 11 +- .../native_cpu/ur_interface_loader.cpp | 2 +- .../source/adapters/offload/queue.cpp | 11 +- .../adapters/offload/ur_interface_loader.cpp | 2 +- .../source/adapters/opencl/queue.cpp | 11 +- .../adapters/opencl/ur_interface_loader.cpp | 2 +- .../loader/layers/tracing/ur_trcddi.cpp | 71 ++++---- .../loader/layers/validation/ur_valddi.cpp | 73 +++++---- unified-runtime/source/loader/loader.def.in | 4 +- unified-runtime/source/loader/loader.map.in | 4 +- unified-runtime/source/loader/ur_ldrddi.cpp | 43 ++--- unified-runtime/source/loader/ur_libapi.cpp | 83 ++++------ unified-runtime/source/loader/ur_print.cpp | 17 +- unified-runtime/source/ur_api.cpp | 70 ++++---- 35 files changed, 485 insertions(+), 503 deletions(-) diff --git a/unified-runtime/include/ur_api.h b/unified-runtime/include/ur_api.h index 75cb616f48dd4..e0f18d53ffe35 100644 --- a/unified-runtime/include/ur_api.h +++ b/unified-runtime/include/ur_api.h @@ -497,8 +497,6 @@ typedef enum ur_function_t { UR_FUNCTION_QUEUE_BEGIN_CAPTURE_INTO_GRAPH_EXP = 298, /// Enumerator for ::urQueueEndGraphCaptureExp UR_FUNCTION_QUEUE_END_GRAPH_CAPTURE_EXP = 299, - /// Enumerator for ::urQueueAppendGraphExp - UR_FUNCTION_QUEUE_APPEND_GRAPH_EXP = 301, /// Enumerator for ::urGraphDestroyExp UR_FUNCTION_GRAPH_DESTROY_EXP = 302, /// Enumerator for ::urGraphExecutableGraphDestroyExp @@ -511,6 +509,8 @@ typedef enum ur_function_t { UR_FUNCTION_GRAPH_DUMP_CONTENTS_EXP = 306, /// Enumerator for ::urGraphInstantiateGraphExp UR_FUNCTION_GRAPH_INSTANTIATE_GRAPH_EXP = 307, + /// Enumerator for ::urEnqueueGraphExp + UR_FUNCTION_ENQUEUE_GRAPH_EXP = 308, /// @cond UR_FUNCTION_FORCE_UINT32 = 0x7fffffff /// @endcond @@ -2489,7 +2489,7 @@ typedef enum ur_device_info_t { UR_DEVICE_INFO_CLOCK_DEVICE_SUPPORT_EXP = 0x2062, /// [::ur_bool_t] returns true if the device is integrated GPU. UR_DEVICE_INFO_IS_INTEGRATED_GPU = 0x2070, - /// [::ur_bool_t] returns true if the device supports graph record and replay + /// [::ur_bool_t] Returns true if the device supports graph record and replay /// functionality. UR_DEVICE_INFO_GRAPH_RECORD_AND_REPLAY_SUPPORT_EXP = 0x2080, /// [::ur_bool_t] Returns true if the device supports the USM P2P @@ -7409,6 +7409,8 @@ typedef enum ur_command_t { UR_COMMAND_ENQUEUE_USM_HOST_ALLOC_EXP = 0x2052, /// Event created by ::urEnqueueUSMFreeExp UR_COMMAND_ENQUEUE_USM_FREE_EXP = 0x2053, + /// Event created by ::urEnqueueGraphExp + UR_COMMAND_ENQUEUE_GRAPH_EXP = 0x2100, /// @cond UR_COMMAND_FORCE_UINT32 = 0x7fffffff /// @endcond @@ -13515,20 +13517,17 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueNativeCommandExp( #pragma region graph_(experimental) #endif /////////////////////////////////////////////////////////////////////////////// -/// @brief Handle of record & replay graph object +/// @brief Handle of record & replay graph object. typedef struct ur_exp_graph_handle_t_ *ur_exp_graph_handle_t; /////////////////////////////////////////////////////////////////////////////// -/// @brief Handle of record & replay executable graph object +/// @brief Handle of record & replay executable graph object. typedef struct ur_exp_executable_graph_handle_t_ *ur_exp_executable_graph_handle_t; /////////////////////////////////////////////////////////////////////////////// /// @brief Create a new record & replay graph instance explicitly. /// -/// @details -/// - Create a new record & replay graph instance explicitly. -/// /// @returns /// - ::UR_RESULT_SUCCESS /// - ::UR_RESULT_ERROR_UNINITIALIZED @@ -13538,8 +13537,6 @@ typedef struct ur_exp_executable_graph_handle_t_ /// + `NULL == hContext` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER /// + `NULL == phGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT UR_APIEXPORT ur_result_t UR_APICALL urGraphCreateExp( /// [in] Handle of the context object. ur_context_handle_t hContext, @@ -13547,7 +13544,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urGraphCreateExp( ur_exp_graph_handle_t *phGraph); /////////////////////////////////////////////////////////////////////////////// -/// @brief Begin graph capture on the specified immediate queue. +/// @brief Begin graph capture on the specified queue. /// /// @returns /// - ::UR_RESULT_SUCCESS @@ -13556,15 +13553,13 @@ UR_APIEXPORT ur_result_t UR_APICALL urGraphCreateExp( /// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hQueue` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT UR_APIEXPORT ur_result_t UR_APICALL urQueueBeginGraphCaptureExp( /// [in] Handle of the queue on which to begin graph capture. ur_queue_handle_t hQueue); /////////////////////////////////////////////////////////////////////////////// /// @brief Begin capturing commands into an existing graph on the specified -/// immediate queue. +/// queue. /// /// @returns /// - ::UR_RESULT_SUCCESS @@ -13574,8 +13569,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urQueueBeginGraphCaptureExp( /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hQueue` /// + `NULL == hGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT UR_APIEXPORT ur_result_t UR_APICALL urQueueBeginCaptureIntoGraphExp( /// [in] Handle of the queue on which to begin graph capture. ur_queue_handle_t hQueue, @@ -13583,7 +13576,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urQueueBeginCaptureIntoGraphExp( ur_exp_graph_handle_t hGraph); /////////////////////////////////////////////////////////////////////////////// -/// @brief End graph capture on the specified immediate queue. +/// @brief End graph capture on the specified queue. /// /// @returns /// - ::UR_RESULT_SUCCESS @@ -13594,8 +13587,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urQueueBeginCaptureIntoGraphExp( /// + `NULL == hQueue` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER /// + `NULL == phGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT UR_APIEXPORT ur_result_t UR_APICALL urQueueEndGraphCaptureExp( /// [in] Handle of the queue on which to end graph capture. ur_queue_handle_t hQueue, @@ -13616,8 +13607,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urQueueEndGraphCaptureExp( /// + `NULL == hGraph` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER /// + `NULL == phExecGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT UR_APIEXPORT ur_result_t UR_APICALL urGraphInstantiateGraphExp( /// [in] Handle of the recorded graph to instantiate. ur_exp_graph_handle_t hGraph, @@ -13625,7 +13614,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urGraphInstantiateGraphExp( ur_exp_executable_graph_handle_t *phExecGraph); /////////////////////////////////////////////////////////////////////////////// -/// @brief Append an executable graph to the queue. +/// @brief Enqueue an executable graph onto the queue. /// /// @returns /// - ::UR_RESULT_SUCCESS @@ -13635,20 +13624,27 @@ UR_APIEXPORT ur_result_t UR_APICALL urGraphInstantiateGraphExp( /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hQueue` /// + `NULL == hGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT -UR_APIEXPORT ur_result_t UR_APICALL urQueueAppendGraphExp( - /// [in] Handle of the queue to append the graph to. +/// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. +UR_APIEXPORT ur_result_t UR_APICALL urEnqueueGraphExp( + /// [in] Handle of the queue to which the graph will be enqueued. ur_queue_handle_t hQueue, - /// [in] Handle of the executable graph to append. + /// [in] Handle of the executable graph to be enqueued. ur_exp_executable_graph_handle_t hGraph, - /// [in][optional] Event to be signaled on completion. - ur_event_handle_t hSignalEvent, /// [in][optional] Number of events to wait on before executing. - uint32_t numWaitEvents, - /// [in][optional][range(0, numWaitEvents)] Handle of the events to wait - /// on before launching. - ur_event_handle_t *phWaitEvents); + uint32_t numEventsInWaitList, + /// [in][optional][range(0, numEventsInWaitList)] Pointer to a list of + /// events that must be complete before this command can be executed. + /// If nullptr, the numEventsInWaitList must be 0, indicating that this + /// command does not wait on any event to complete. + const ur_event_handle_t *phEventWaitList, + /// [out][optional][alloc] Event object that identifies this particular + /// command instance. + /// If phEventWaitList and phEvent are not nullptr, phEvent must not refer + /// to an element of the phEventWaitList array. + ur_event_handle_t *phEvent); /////////////////////////////////////////////////////////////////////////////// /// @brief Destroy a recorded graph object. All executable graph instances @@ -13662,8 +13658,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urQueueAppendGraphExp( /// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT UR_APIEXPORT ur_result_t UR_APICALL urGraphDestroyExp( /// [in] Handle of the graph object to destroy. ur_exp_graph_handle_t hGraph); @@ -13679,8 +13673,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urGraphDestroyExp( /// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hExecutableGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT UR_APIEXPORT ur_result_t UR_APICALL urGraphExecutableGraphDestroyExp( /// [in] Handle of the executable graph object to destroy. ur_exp_executable_graph_handle_t hExecutableGraph); @@ -13696,14 +13688,12 @@ UR_APIEXPORT ur_result_t UR_APICALL urGraphExecutableGraphDestroyExp( /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hQueue` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER -/// + `NULL == hResult` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT +/// + `NULL == pResult` UR_APIEXPORT ur_result_t UR_APICALL urQueueIsGraphCaptureEnabledExp( /// [in] Native queue to query. ur_queue_handle_t hQueue, /// [out] Pointer to a boolean where the result will be stored. - bool *hResult); + bool *pResult); /////////////////////////////////////////////////////////////////////////////// /// @brief Return whether the given recorded graph contains any nodes. @@ -13716,14 +13706,13 @@ UR_APIEXPORT ur_result_t UR_APICALL urQueueIsGraphCaptureEnabledExp( /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hGraph` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER -/// + `NULL == hResult` -/// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY -/// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES +/// + `NULL == pResult` +/// - ::UR_RESULT_ERROR_INVALID_GRAPH UR_APIEXPORT ur_result_t UR_APICALL urGraphIsEmptyExp( /// [in] Handle of the graph to query. ur_exp_graph_handle_t hGraph, /// [out] Pointer to a boolean where the result will be stored. - bool *hResult); + bool *pResult); /////////////////////////////////////////////////////////////////////////////// /// @brief Dump the contents of the recorded graph to the provided file path. @@ -13737,9 +13726,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urGraphIsEmptyExp( /// + `NULL == hGraph` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER /// + `NULL == filePath` -/// - ::UR_RESULT_ERROR_INVALID_VALUE -/// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY -/// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES UR_APIEXPORT ur_result_t UR_APICALL urGraphDumpContentsExp( /// [in] Handle of the graph to dump. ur_exp_graph_handle_t hGraph, @@ -14591,25 +14577,13 @@ typedef struct ur_queue_end_graph_capture_exp_params_t { ur_exp_graph_handle_t **pphGraph; } ur_queue_end_graph_capture_exp_params_t; -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function parameters for urQueueAppendGraphExp -/// @details Each entry is a pointer to the parameter passed to the function; -/// allowing the callback the ability to modify the parameter's value -typedef struct ur_queue_append_graph_exp_params_t { - ur_queue_handle_t *phQueue; - ur_exp_executable_graph_handle_t *phGraph; - ur_event_handle_t *phSignalEvent; - uint32_t *pnumWaitEvents; - ur_event_handle_t **pphWaitEvents; -} ur_queue_append_graph_exp_params_t; - /////////////////////////////////////////////////////////////////////////////// /// @brief Function parameters for urQueueIsGraphCaptureEnabledExp /// @details Each entry is a pointer to the parameter passed to the function; /// allowing the callback the ability to modify the parameter's value typedef struct ur_queue_is_graph_capture_enabled_exp_params_t { ur_queue_handle_t *phQueue; - bool **phResult; + bool **ppResult; } ur_queue_is_graph_capture_enabled_exp_params_t; /////////////////////////////////////////////////////////////////////////////// @@ -15354,6 +15328,18 @@ typedef struct ur_enqueue_native_command_exp_params_t { ur_event_handle_t **pphEvent; } ur_enqueue_native_command_exp_params_t; +/////////////////////////////////////////////////////////////////////////////// +/// @brief Function parameters for urEnqueueGraphExp +/// @details Each entry is a pointer to the parameter passed to the function; +/// allowing the callback the ability to modify the parameter's value +typedef struct ur_enqueue_graph_exp_params_t { + ur_queue_handle_t *phQueue; + ur_exp_executable_graph_handle_t *phGraph; + uint32_t *pnumEventsInWaitList; + const ur_event_handle_t **pphEventWaitList; + ur_event_handle_t **pphEvent; +} ur_enqueue_graph_exp_params_t; + /////////////////////////////////////////////////////////////////////////////// /// @brief Function parameters for urUSMHostAlloc /// @details Each entry is a pointer to the parameter passed to the function; @@ -16256,7 +16242,7 @@ typedef struct ur_graph_executable_graph_destroy_exp_params_t { /// allowing the callback the ability to modify the parameter's value typedef struct ur_graph_is_empty_exp_params_t { ur_exp_graph_handle_t *phGraph; - bool **phResult; + bool **ppResult; } ur_graph_is_empty_exp_params_t; /////////////////////////////////////////////////////////////////////////////// diff --git a/unified-runtime/include/ur_api_funcs.def b/unified-runtime/include/ur_api_funcs.def index 9deb1baf0b193..fba1cec526697 100644 --- a/unified-runtime/include/ur_api_funcs.def +++ b/unified-runtime/include/ur_api_funcs.def @@ -91,7 +91,6 @@ _UR_API(urQueueFlush) _UR_API(urQueueBeginGraphCaptureExp) _UR_API(urQueueBeginCaptureIntoGraphExp) _UR_API(urQueueEndGraphCaptureExp) -_UR_API(urQueueAppendGraphExp) _UR_API(urQueueIsGraphCaptureEnabledExp) _UR_API(urSamplerCreate) _UR_API(urSamplerRetain) @@ -147,6 +146,7 @@ _UR_API(urEnqueueUSMFreeExp) _UR_API(urEnqueueCommandBufferExp) _UR_API(urEnqueueTimestampRecordingExp) _UR_API(urEnqueueNativeCommandExp) +_UR_API(urEnqueueGraphExp) _UR_API(urUSMHostAlloc) _UR_API(urUSMDeviceAlloc) _UR_API(urUSMSharedAlloc) diff --git a/unified-runtime/include/ur_ddi.h b/unified-runtime/include/ur_ddi.h index 28f7d75d7b523..3e473faa1f7b2 100644 --- a/unified-runtime/include/ur_ddi.h +++ b/unified-runtime/include/ur_ddi.h @@ -698,12 +698,6 @@ typedef ur_result_t(UR_APICALL *ur_pfnQueueBeginCaptureIntoGraphExp_t)( typedef ur_result_t(UR_APICALL *ur_pfnQueueEndGraphCaptureExp_t)( ur_queue_handle_t, ur_exp_graph_handle_t *); -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for urQueueAppendGraphExp -typedef ur_result_t(UR_APICALL *ur_pfnQueueAppendGraphExp_t)( - ur_queue_handle_t, ur_exp_executable_graph_handle_t, ur_event_handle_t, - uint32_t, ur_event_handle_t *); - /////////////////////////////////////////////////////////////////////////////// /// @brief Function-pointer for urQueueIsGraphCaptureEnabledExp typedef ur_result_t(UR_APICALL *ur_pfnQueueIsGraphCaptureEnabledExp_t)( @@ -715,7 +709,6 @@ typedef struct ur_queue_exp_dditable_t { ur_pfnQueueBeginGraphCaptureExp_t pfnBeginGraphCaptureExp; ur_pfnQueueBeginCaptureIntoGraphExp_t pfnBeginCaptureIntoGraphExp; ur_pfnQueueEndGraphCaptureExp_t pfnEndGraphCaptureExp; - ur_pfnQueueAppendGraphExp_t pfnAppendGraphExp; ur_pfnQueueIsGraphCaptureEnabledExp_t pfnIsGraphCaptureEnabledExp; } ur_queue_exp_dditable_t; @@ -1214,6 +1207,12 @@ typedef ur_result_t(UR_APICALL *ur_pfnEnqueueNativeCommandExp_t)( const ur_exp_enqueue_native_command_properties_t *, uint32_t, const ur_event_handle_t *, ur_event_handle_t *); +/////////////////////////////////////////////////////////////////////////////// +/// @brief Function-pointer for urEnqueueGraphExp +typedef ur_result_t(UR_APICALL *ur_pfnEnqueueGraphExp_t)( + ur_queue_handle_t, ur_exp_executable_graph_handle_t, uint32_t, + const ur_event_handle_t *, ur_event_handle_t *); + /////////////////////////////////////////////////////////////////////////////// /// @brief Table of EnqueueExp functions pointers typedef struct ur_enqueue_exp_dditable_t { @@ -1225,6 +1224,7 @@ typedef struct ur_enqueue_exp_dditable_t { ur_pfnEnqueueCommandBufferExp_t pfnCommandBufferExp; ur_pfnEnqueueTimestampRecordingExp_t pfnTimestampRecordingExp; ur_pfnEnqueueNativeCommandExp_t pfnNativeCommandExp; + ur_pfnEnqueueGraphExp_t pfnGraphExp; } ur_enqueue_exp_dditable_t; /////////////////////////////////////////////////////////////////////////////// diff --git a/unified-runtime/include/ur_print.h b/unified-runtime/include/ur_print.h index 251e0f9763a27..e0cbe0c89d488 100644 --- a/unified-runtime/include/ur_print.h +++ b/unified-runtime/include/ur_print.h @@ -2341,16 +2341,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urPrintQueueEndGraphCaptureExpParams( const struct ur_queue_end_graph_capture_exp_params_t *params, char *buffer, const size_t buff_size, size_t *out_size); -/////////////////////////////////////////////////////////////////////////////// -/// @brief Print ur_queue_append_graph_exp_params_t struct -/// @returns -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_SIZE -/// - `buff_size < out_size` -UR_APIEXPORT ur_result_t UR_APICALL urPrintQueueAppendGraphExpParams( - const struct ur_queue_append_graph_exp_params_t *params, char *buffer, - const size_t buff_size, size_t *out_size); - /////////////////////////////////////////////////////////////////////////////// /// @brief Print ur_queue_is_graph_capture_enabled_exp_params_t struct /// @returns @@ -2905,6 +2895,16 @@ UR_APIEXPORT ur_result_t UR_APICALL urPrintEnqueueNativeCommandExpParams( const struct ur_enqueue_native_command_exp_params_t *params, char *buffer, const size_t buff_size, size_t *out_size); +/////////////////////////////////////////////////////////////////////////////// +/// @brief Print ur_enqueue_graph_exp_params_t struct +/// @returns +/// - ::UR_RESULT_SUCCESS +/// - ::UR_RESULT_ERROR_INVALID_SIZE +/// - `buff_size < out_size` +UR_APIEXPORT ur_result_t UR_APICALL urPrintEnqueueGraphExpParams( + const struct ur_enqueue_graph_exp_params_t *params, char *buffer, + const size_t buff_size, size_t *out_size); + /////////////////////////////////////////////////////////////////////////////// /// @brief Print ur_usm_host_alloc_params_t struct /// @returns diff --git a/unified-runtime/include/ur_print.hpp b/unified-runtime/include/ur_print.hpp index a3afc20786add..27a7d4ea90ad2 100644 --- a/unified-runtime/include/ur_print.hpp +++ b/unified-runtime/include/ur_print.hpp @@ -1337,9 +1337,6 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_function_t value) { case UR_FUNCTION_QUEUE_END_GRAPH_CAPTURE_EXP: os << "UR_FUNCTION_QUEUE_END_GRAPH_CAPTURE_EXP"; break; - case UR_FUNCTION_QUEUE_APPEND_GRAPH_EXP: - os << "UR_FUNCTION_QUEUE_APPEND_GRAPH_EXP"; - break; case UR_FUNCTION_GRAPH_DESTROY_EXP: os << "UR_FUNCTION_GRAPH_DESTROY_EXP"; break; @@ -1358,6 +1355,9 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_function_t value) { case UR_FUNCTION_GRAPH_INSTANTIATE_GRAPH_EXP: os << "UR_FUNCTION_GRAPH_INSTANTIATE_GRAPH_EXP"; break; + case UR_FUNCTION_ENQUEUE_GRAPH_EXP: + os << "UR_FUNCTION_ENQUEUE_GRAPH_EXP"; + break; default: os << "unknown enumerator"; break; @@ -10799,6 +10799,9 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_command_t value) { case UR_COMMAND_ENQUEUE_USM_FREE_EXP: os << "UR_COMMAND_ENQUEUE_USM_FREE_EXP"; break; + case UR_COMMAND_ENQUEUE_GRAPH_EXP: + os << "UR_COMMAND_ENQUEUE_GRAPH_EXP"; + break; default: os << "unknown enumerator"; break; @@ -15306,52 +15309,6 @@ operator<<(std::ostream &os, return os; } -/////////////////////////////////////////////////////////////////////////////// -/// @brief Print operator for the ur_queue_append_graph_exp_params_t type -/// @returns -/// std::ostream & -inline std::ostream &operator<<( - std::ostream &os, - [[maybe_unused]] const struct ur_queue_append_graph_exp_params_t *params) { - - os << ".hQueue = "; - - ur::details::printPtr(os, *(params->phQueue)); - - os << ", "; - os << ".hGraph = "; - - ur::details::printPtr(os, *(params->phGraph)); - - os << ", "; - os << ".hSignalEvent = "; - - ur::details::printPtr(os, *(params->phSignalEvent)); - - os << ", "; - os << ".numWaitEvents = "; - - os << *(params->pnumWaitEvents); - - os << ", "; - os << ".phWaitEvents = "; - ur::details::printPtr( - os, reinterpret_cast(*(params->pphWaitEvents))); - if (*(params->pphWaitEvents) != NULL) { - os << " {"; - for (size_t i = 0; i < *params->pnumWaitEvents; ++i) { - if (i != 0) { - os << ", "; - } - - ur::details::printPtr(os, (*(params->pphWaitEvents))[i]); - } - os << "}"; - } - - return os; -} - /////////////////////////////////////////////////////////////////////////////// /// @brief Print operator for the ur_queue_is_graph_capture_enabled_exp_params_t /// type @@ -15367,9 +15324,9 @@ inline std::ostream &operator<<( ur::details::printPtr(os, *(params->phQueue)); os << ", "; - os << ".hResult = "; + os << ".pResult = "; - ur::details::printPtr(os, *(params->phResult)); + ur::details::printPtr(os, *(params->ppResult)); return os; } @@ -18141,6 +18098,52 @@ operator<<(std::ostream &os, return os; } +/////////////////////////////////////////////////////////////////////////////// +/// @brief Print operator for the ur_enqueue_graph_exp_params_t type +/// @returns +/// std::ostream & +inline std::ostream &operator<<( + std::ostream &os, + [[maybe_unused]] const struct ur_enqueue_graph_exp_params_t *params) { + + os << ".hQueue = "; + + ur::details::printPtr(os, *(params->phQueue)); + + os << ", "; + os << ".hGraph = "; + + ur::details::printPtr(os, *(params->phGraph)); + + os << ", "; + os << ".numEventsInWaitList = "; + + os << *(params->pnumEventsInWaitList); + + os << ", "; + os << ".phEventWaitList = "; + ur::details::printPtr( + os, reinterpret_cast(*(params->pphEventWaitList))); + if (*(params->pphEventWaitList) != NULL) { + os << " {"; + for (size_t i = 0; i < *params->pnumEventsInWaitList; ++i) { + if (i != 0) { + os << ", "; + } + + ur::details::printPtr(os, (*(params->pphEventWaitList))[i]); + } + os << "}"; + } + + os << ", "; + os << ".phEvent = "; + + ur::details::printPtr(os, *(params->pphEvent)); + + return os; +} + /////////////////////////////////////////////////////////////////////////////// /// @brief Print operator for the ur_usm_host_alloc_params_t type /// @returns @@ -21097,9 +21100,9 @@ inline std::ostream &operator<<( ur::details::printPtr(os, *(params->phGraph)); os << ", "; - os << ".hResult = "; + os << ".pResult = "; - ur::details::printPtr(os, *(params->phResult)); + ur::details::printPtr(os, *(params->ppResult)); return os; } @@ -22337,9 +22340,6 @@ inline ur_result_t UR_APICALL printFunctionParams(std::ostream &os, case UR_FUNCTION_QUEUE_END_GRAPH_CAPTURE_EXP: { os << (const struct ur_queue_end_graph_capture_exp_params_t *)params; } break; - case UR_FUNCTION_QUEUE_APPEND_GRAPH_EXP: { - os << (const struct ur_queue_append_graph_exp_params_t *)params; - } break; case UR_FUNCTION_QUEUE_IS_GRAPH_CAPTURE_ENABLED_EXP: { os << (const struct ur_queue_is_graph_capture_enabled_exp_params_t *)params; } break; @@ -22511,6 +22511,9 @@ inline ur_result_t UR_APICALL printFunctionParams(std::ostream &os, case UR_FUNCTION_ENQUEUE_NATIVE_COMMAND_EXP: { os << (const struct ur_enqueue_native_command_exp_params_t *)params; } break; + case UR_FUNCTION_ENQUEUE_GRAPH_EXP: { + os << (const struct ur_enqueue_graph_exp_params_t *)params; + } break; case UR_FUNCTION_USM_HOST_ALLOC: { os << (const struct ur_usm_host_alloc_params_t *)params; } break; diff --git a/unified-runtime/scripts/core/EXP-GRAPH.rst b/unified-runtime/scripts/core/EXP-GRAPH.rst index 7b3dff39fe787..344242c30cfb8 100644 --- a/unified-runtime/scripts/core/EXP-GRAPH.rst +++ b/unified-runtime/scripts/core/EXP-GRAPH.rst @@ -48,8 +48,8 @@ Functions * ${x}QueueBeginGraphCaptureExp * ${x}QueueBeginCaptureIntoGraphExp * ${x}QueueEndGraphCaptureExp - * ${x}QueueAppendGraphExp * ${x}QueueIsGraphCaptureEnabledExp + * ${x}EnqueueGraphExp Changelog -------------------------------------------------------------------------------- @@ -62,6 +62,12 @@ Changelog | 1.1 | Extend ${x}_device_info_t enumerator with | | | graph record and replay entry. | +-----------+---------------------------------------------+ +| 1.2 | Extend ${x}_command_t enumerator with | +| | enqueue graph event entry. Cleanup spec | +| | entry descriptions and return values. | +| | Rename QueueAppendGraphExp into | +| | EnqueueGraphExp. | ++-----------+---------------------------------------------+ Support -------------------------------------------------------------------------------- diff --git a/unified-runtime/scripts/core/exp-graph.yml b/unified-runtime/scripts/core/exp-graph.yml index f2f6b9dc258e7..2c2306107abf7 100644 --- a/unified-runtime/scripts/core/exp-graph.yml +++ b/unified-runtime/scripts/core/exp-graph.yml @@ -7,21 +7,16 @@ # # See YaML.md for syntax definition # -# TODO: -# ZE_RESULT_ERROR_INVALID_GRAPH -# ZE_RESULT_QUERY_TRUE -# ZE_RESULT_QUERY_FALSE -# --- #-------------------------------------------------------------------------- type: header desc: "Intel $OneApi Unified Runtime Experimental APIs for Graph Record and Replay" --- #-------------------------------------------------------------------------- type: handle -desc: "Handle of record & replay graph object" +desc: "Handle of record & replay graph object." name: "$x_exp_graph_handle_t" --- #-------------------------------------------------------------------------- type: handle -desc: "Handle of record & replay executable graph object" +desc: "Handle of record & replay executable graph object." name: "$x_exp_executable_graph_handle_t" --- #-------------------------------------------------------------------------- type: enum @@ -33,16 +28,23 @@ etors: - name: GRAPH_RECORD_AND_REPLAY_SUPPORT_EXP value: "0x2080" desc: | - [$x_bool_t] returns true if the device supports graph record and replay + [$x_bool_t] Returns true if the device supports graph record and replay functionality. --- #-------------------------------------------------------------------------- +type: enum +extend: true +desc: "Command Type experimental enumerations." +name: $x_command_t +etors: + - name: ENQUEUE_GRAPH_EXP + value: "0x2100" + desc: "Event created by $xEnqueueGraphExp" +--- #-------------------------------------------------------------------------- type: function desc: "Create a new record & replay graph instance explicitly." class: $xGraph name: CreateExp decl: static -details: - - "Create a new record & replay graph instance explicitly." params: - type: $x_context_handle_t name: hContext @@ -50,91 +52,82 @@ params: - type: $x_exp_graph_handle_t* name: phGraph desc: "[out][alloc] Pointer to the handle of the created graph object." -returns: - - $X_RESULT_SUCCESS - - $X_RESULT_ERROR_INVALID_ARGUMENT --- #-------------------------------------------------------------------------- type: function -desc: "Begin graph capture on the specified immediate queue." +desc: "Begin graph capture on the specified queue." class: $xQueue name: BeginGraphCaptureExp params: - - type: $x_queue_handle_t - name: hQueue - desc: "[in] Handle of the queue on which to begin graph capture." -returns: - - $X_RESULT_SUCCESS - - $X_RESULT_ERROR_INVALID_ARGUMENT + - type: $x_queue_handle_t + name: hQueue + desc: "[in] Handle of the queue on which to begin graph capture." --- #-------------------------------------------------------------------------- type: function -desc: "Begin capturing commands into an existing graph on the specified immediate queue." +desc: "Begin capturing commands into an existing graph on the specified queue." class: $xQueue name: BeginCaptureIntoGraphExp params: - - type: $x_queue_handle_t - name: hQueue - desc: "[in] Handle of the queue on which to begin graph capture." - - type: $x_exp_graph_handle_t - name: hGraph - desc: "[in] Handle of the graph object to capture into." -returns: - - $X_RESULT_SUCCESS - - $X_RESULT_ERROR_INVALID_ARGUMENT + - type: $x_queue_handle_t + name: hQueue + desc: "[in] Handle of the queue on which to begin graph capture." + - type: $x_exp_graph_handle_t + name: hGraph + desc: "[in] Handle of the graph object to capture into." --- #-------------------------------------------------------------------------- type: function -desc: "End graph capture on the specified immediate queue." +desc: "End graph capture on the specified queue." class: $xQueue name: EndGraphCaptureExp params: - - type: $x_queue_handle_t - name: hQueue - desc: "[in] Handle of the queue on which to end graph capture." - - type: $x_exp_graph_handle_t* - name: phGraph - desc: "[out] Pointer to the handle of the recorded graph object. If $xQueueBeginCaptureIntoGraphExp - was used to begin the capture, then phGraph will contain the same graph that was passed to it." -returns: - - $X_RESULT_SUCCESS - - $X_RESULT_ERROR_INVALID_ARGUMENT + - type: $x_queue_handle_t + name: hQueue + desc: "[in] Handle of the queue on which to end graph capture." + - type: $x_exp_graph_handle_t* + name: phGraph + desc: "[out] Pointer to the handle of the recorded graph object. If $xQueueBeginCaptureIntoGraphExp + was used to begin the capture, then phGraph will contain the same graph that was passed to it." --- #-------------------------------------------------------------------------- type: function desc: "Instantiate an executable graph from a recorded graph." class: $xGraph name: InstantiateGraphExp params: - - type: $x_exp_graph_handle_t - name: hGraph - desc: "[in] Handle of the recorded graph to instantiate." - - type: $x_exp_executable_graph_handle_t* - name: phExecGraph - desc: "[out] Pointer to the handle of the instantiated executable graph." -returns: - - $X_RESULT_SUCCESS - - $X_RESULT_ERROR_INVALID_ARGUMENT + - type: $x_exp_graph_handle_t + name: hGraph + desc: "[in] Handle of the recorded graph to instantiate." + - type: $x_exp_executable_graph_handle_t* + name: phExecGraph + desc: "[out] Pointer to the handle of the instantiated executable graph." --- #-------------------------------------------------------------------------- type: function -desc: "Append an executable graph to the queue." -class: $xQueue -name: AppendGraphExp +desc: "Enqueue an executable graph onto the queue." +class: $xEnqueue +name: GraphExp params: - - type: $x_queue_handle_t - name: hQueue - desc: "[in] Handle of the queue to append the graph to." - - type: $x_exp_executable_graph_handle_t - name: hGraph - desc: "[in] Handle of the executable graph to append." - - type: $x_event_handle_t - name: hSignalEvent - desc: "[in][optional] Event to be signaled on completion." - - type: uint32_t - name: numWaitEvents - desc: "[in][optional] Number of events to wait on before executing." - - type: $x_event_handle_t* - name: phWaitEvents - desc: "[in][optional][range(0, numWaitEvents)] Handle of the events to wait on before launching." + - type: $x_queue_handle_t + name: hQueue + desc: "[in] Handle of the queue to which the graph will be enqueued." + - type: $x_exp_executable_graph_handle_t + name: hGraph + desc: "[in] Handle of the executable graph to be enqueued." + - type: uint32_t + name: numEventsInWaitList + desc: "[in][optional] Number of events to wait on before executing." + - type: const $x_event_handle_t* + name: phEventWaitList + desc: | + [in][optional][range(0, numEventsInWaitList)] Pointer to a list of events that must be complete before this command can be executed. + If nullptr, the numEventsInWaitList must be 0, indicating that this command does not wait on any event to complete. + - type: $x_event_handle_t* + name: phEvent + desc: | + [out][optional][alloc] Event object that identifies this particular command instance. + If phEventWaitList and phEvent are not nullptr, phEvent must not refer to an element of the phEventWaitList array. returns: - - $X_RESULT_SUCCESS - - $X_RESULT_ERROR_INVALID_ARGUMENT + - $X_RESULT_ERROR_INVALID_EVENT_WAIT_LIST: + - "`phEventWaitList == NULL && numEventsInWaitList > 0`" + - "`phEventWaitList != NULL && numEventsInWaitList == 0`" + - "If event objects in phEventWaitList are not valid events." --- #-------------------------------------------------------------------------- type: function desc: "Destroy a recorded graph object. All executable graph instances created from this recorded graph must be destroyed before calling this function." @@ -144,9 +137,6 @@ params: - type: $x_exp_graph_handle_t name: hGraph desc: "[in] Handle of the graph object to destroy." -returns: - - $X_RESULT_SUCCESS - - $X_RESULT_ERROR_INVALID_ARGUMENT --- #-------------------------------------------------------------------------- type: function desc: "Destroy an instantiated executable graph object. The graph instance must not be executing on any queue." @@ -156,9 +146,6 @@ params: - type: $x_exp_executable_graph_handle_t name: hExecutableGraph desc: "[in] Handle of the executable graph object to destroy." -returns: - - $X_RESULT_SUCCESS - - $X_RESULT_ERROR_INVALID_ARGUMENT --- #-------------------------------------------------------------------------- type: function desc: "Query whether graph capture is currently enabled on the given queue." @@ -169,11 +156,8 @@ params: name: hQueue desc: "[in] Native queue to query." - type: bool* - name: hResult + name: pResult desc: "[out] Pointer to a boolean where the result will be stored." -returns: - - $X_RESULT_SUCCESS - - $X_RESULT_ERROR_INVALID_ARGUMENT --- #-------------------------------------------------------------------------- type: function desc: "Return whether the given recorded graph contains any nodes." @@ -184,11 +168,10 @@ params: name: hGraph desc: "[in] Handle of the graph to query." - type: bool* - name: hResult + name: pResult desc: "[out] Pointer to a boolean where the result will be stored." returns: - - $X_RESULT_ERROR_OUT_OF_HOST_MEMORY - - $X_RESULT_ERROR_OUT_OF_RESOURCES + - $X_RESULT_ERROR_INVALID_GRAPH --- #-------------------------------------------------------------------------- type: function desc: "Dump the contents of the recorded graph to the provided file path." @@ -201,7 +184,3 @@ params: - type: const char* name: filePath desc: "[in] Path to the file to write the dumped graph contents." -returns: - - $X_RESULT_ERROR_INVALID_VALUE - - $X_RESULT_ERROR_OUT_OF_HOST_MEMORY - - $X_RESULT_ERROR_OUT_OF_RESOURCES diff --git a/unified-runtime/scripts/core/registry.yml b/unified-runtime/scripts/core/registry.yml index 7fa6ab676fbc7..3146664d412ac 100644 --- a/unified-runtime/scripts/core/registry.yml +++ b/unified-runtime/scripts/core/registry.yml @@ -703,9 +703,6 @@ etors: - name: QUEUE_END_GRAPH_CAPTURE_EXP desc: Enumerator for $xQueueEndGraphCaptureExp value: '299' -- name: QUEUE_APPEND_GRAPH_EXP - desc: Enumerator for $xQueueAppendGraphExp - value: '301' - name: GRAPH_DESTROY_EXP desc: Enumerator for $xGraphDestroyExp value: '302' @@ -724,7 +721,10 @@ etors: - name: GRAPH_INSTANTIATE_GRAPH_EXP desc: Enumerator for $xGraphInstantiateGraphExp value: '307' -max_id: '307' +- name: ENQUEUE_GRAPH_EXP + desc: Enumerator for $xEnqueueGraphExp + value: '308' +max_id: '308' --- type: enum desc: Defines structure types diff --git a/unified-runtime/source/adapters/cuda/queue.cpp b/unified-runtime/source/adapters/cuda/queue.cpp index be3a71cc5299d..d9ad7eed159f4 100644 --- a/unified-runtime/source/adapters/cuda/queue.cpp +++ b/unified-runtime/source/adapters/cuda/queue.cpp @@ -275,11 +275,12 @@ UR_APIEXPORT ur_result_t UR_APICALL urQueueEndGraphCaptureExp( return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } -UR_APIEXPORT ur_result_t UR_APICALL urQueueAppendGraphExp( - ur_queue_handle_t /* hQueue */, - ur_exp_executable_graph_handle_t /* hGraph */, - ur_event_handle_t /* hSignalEvent */, uint32_t /* numWaitEvents */, - ur_event_handle_t * /* phWaitEvents */) { +UR_APIEXPORT ur_result_t UR_APICALL +urEnqueueGraphExp(ur_queue_handle_t /* hQueue */, + ur_exp_executable_graph_handle_t /* hGraph */, + uint32_t /* numEventsInWaitList */, + const ur_event_handle_t * /* phEventWaitList */, + ur_event_handle_t * /* phEvent */) { return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } diff --git a/unified-runtime/source/adapters/cuda/ur_interface_loader.cpp b/unified-runtime/source/adapters/cuda/ur_interface_loader.cpp index 15e6ea7582dd5..88122acce13d2 100644 --- a/unified-runtime/source/adapters/cuda/ur_interface_loader.cpp +++ b/unified-runtime/source/adapters/cuda/ur_interface_loader.cpp @@ -259,7 +259,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urGetQueueExpProcAddrTable( pDdiTable->pfnBeginGraphCaptureExp = urQueueBeginGraphCaptureExp; pDdiTable->pfnBeginCaptureIntoGraphExp = urQueueBeginCaptureIntoGraphExp; pDdiTable->pfnEndGraphCaptureExp = urQueueEndGraphCaptureExp; - pDdiTable->pfnAppendGraphExp = urQueueAppendGraphExp; pDdiTable->pfnIsGraphCaptureEnabledExp = urQueueIsGraphCaptureEnabledExp; return UR_RESULT_SUCCESS; @@ -496,6 +495,7 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetEnqueueExpProcAddrTable( pDdiTable->pfnUSMFreeExp = urEnqueueUSMFreeExp; pDdiTable->pfnCommandBufferExp = urEnqueueCommandBufferExp; pDdiTable->pfnKernelLaunchWithArgsExp = urEnqueueKernelLaunchWithArgsExp; + pDdiTable->pfnGraphExp = urEnqueueGraphExp; return UR_RESULT_SUCCESS; } diff --git a/unified-runtime/source/adapters/hip/queue.cpp b/unified-runtime/source/adapters/hip/queue.cpp index 3f9b5fee40adc..362e4b6d7f2bd 100644 --- a/unified-runtime/source/adapters/hip/queue.cpp +++ b/unified-runtime/source/adapters/hip/queue.cpp @@ -268,11 +268,12 @@ UR_APIEXPORT ur_result_t UR_APICALL urQueueEndGraphCaptureExp( return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } -UR_APIEXPORT ur_result_t UR_APICALL urQueueAppendGraphExp( - ur_queue_handle_t /* hQueue */, - ur_exp_executable_graph_handle_t /* hGraph */, - ur_event_handle_t /* hSignalEvent */, uint32_t /* numWaitEvents */, - ur_event_handle_t * /* phWaitEvents */) { +UR_APIEXPORT ur_result_t UR_APICALL +urEnqueueGraphExp(ur_queue_handle_t /* hQueue */, + ur_exp_executable_graph_handle_t /* hGraph */, + uint32_t /* numEventsInWaitList */, + const ur_event_handle_t * /* phEventWaitList */, + ur_event_handle_t * /* phEvent */) { return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } diff --git a/unified-runtime/source/adapters/hip/ur_interface_loader.cpp b/unified-runtime/source/adapters/hip/ur_interface_loader.cpp index ba9f3053b9320..5640836cce825 100644 --- a/unified-runtime/source/adapters/hip/ur_interface_loader.cpp +++ b/unified-runtime/source/adapters/hip/ur_interface_loader.cpp @@ -259,7 +259,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urGetQueueExpProcAddrTable( pDdiTable->pfnBeginGraphCaptureExp = urQueueBeginGraphCaptureExp; pDdiTable->pfnBeginCaptureIntoGraphExp = urQueueBeginCaptureIntoGraphExp; pDdiTable->pfnEndGraphCaptureExp = urQueueEndGraphCaptureExp; - pDdiTable->pfnAppendGraphExp = urQueueAppendGraphExp; pDdiTable->pfnIsGraphCaptureEnabledExp = urQueueIsGraphCaptureEnabledExp; return UR_RESULT_SUCCESS; @@ -489,6 +488,7 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetEnqueueExpProcAddrTable( pDdiTable->pfnNativeCommandExp = urEnqueueNativeCommandExp; pDdiTable->pfnCommandBufferExp = urEnqueueCommandBufferExp; pDdiTable->pfnKernelLaunchWithArgsExp = urEnqueueKernelLaunchWithArgsExp; + pDdiTable->pfnGraphExp = urEnqueueGraphExp; return UR_RESULT_SUCCESS; } diff --git a/unified-runtime/source/adapters/level_zero/queue.cpp b/unified-runtime/source/adapters/level_zero/queue.cpp index d2cef4cc58523..6a18cd1a9f52e 100644 --- a/unified-runtime/source/adapters/level_zero/queue.cpp +++ b/unified-runtime/source/adapters/level_zero/queue.cpp @@ -954,11 +954,11 @@ ur_result_t urQueueEndGraphCaptureExp(ur_queue_handle_t /* hQueue */, return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } -ur_result_t urQueueAppendGraphExp(ur_queue_handle_t /* hQueue */, - ur_exp_executable_graph_handle_t /* hGraph */, - ur_event_handle_t /* hSignalEvent */, - uint32_t /* numWaitEvents */, - ur_event_handle_t * /* phWaitEvents */) { +ur_result_t urEnqueueGraphExp(ur_queue_handle_t /* hQueue */, + ur_exp_executable_graph_handle_t /* hGraph */, + uint32_t /* numEventsInWaitList */, + const ur_event_handle_t * /* phEventWaitList */, + ur_event_handle_t * /* phEvent */) { UR_LOG_LEGACY(ERR, logger::LegacyMessage("[UR][L0] {} function not implemented!"), "{} function not implemented!", __FUNCTION__); diff --git a/unified-runtime/source/adapters/level_zero/ur_interface_loader.cpp b/unified-runtime/source/adapters/level_zero/ur_interface_loader.cpp index 435e7cb80fa73..cdff8a4f4d3e8 100644 --- a/unified-runtime/source/adapters/level_zero/ur_interface_loader.cpp +++ b/unified-runtime/source/adapters/level_zero/ur_interface_loader.cpp @@ -235,6 +235,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urGetEnqueueExpProcAddrTable( pDdiTable->pfnTimestampRecordingExp = ur::level_zero::urEnqueueTimestampRecordingExp; pDdiTable->pfnNativeCommandExp = ur::level_zero::urEnqueueNativeCommandExp; + pDdiTable->pfnGraphExp = ur::level_zero::urEnqueueGraphExp; return result; } @@ -474,7 +475,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urGetQueueExpProcAddrTable( pDdiTable->pfnBeginCaptureIntoGraphExp = ur::level_zero::urQueueBeginCaptureIntoGraphExp; pDdiTable->pfnEndGraphCaptureExp = ur::level_zero::urQueueEndGraphCaptureExp; - pDdiTable->pfnAppendGraphExp = ur::level_zero::urQueueAppendGraphExp; pDdiTable->pfnIsGraphCaptureEnabledExp = ur::level_zero::urQueueIsGraphCaptureEnabledExp; diff --git a/unified-runtime/source/adapters/level_zero/ur_interface_loader.hpp b/unified-runtime/source/adapters/level_zero/ur_interface_loader.hpp index c53091fb05eb2..b65fed856f7e0 100644 --- a/unified-runtime/source/adapters/level_zero/ur_interface_loader.hpp +++ b/unified-runtime/source/adapters/level_zero/ur_interface_loader.hpp @@ -853,17 +853,17 @@ ur_result_t urQueueEndGraphCaptureExp(ur_queue_handle_t hQueue, ur_result_t urGraphInstantiateGraphExp(ur_exp_graph_handle_t hGraph, ur_exp_executable_graph_handle_t *phExecGraph); -ur_result_t urQueueAppendGraphExp(ur_queue_handle_t hQueue, - ur_exp_executable_graph_handle_t hGraph, - ur_event_handle_t hSignalEvent, - uint32_t numWaitEvents, - ur_event_handle_t *phWaitEvents); +ur_result_t urEnqueueGraphExp(ur_queue_handle_t hQueue, + ur_exp_executable_graph_handle_t hGraph, + uint32_t numEventsInWaitList, + const ur_event_handle_t *phEventWaitList, + ur_event_handle_t *phEvent); ur_result_t urGraphDestroyExp(ur_exp_graph_handle_t hGraph); ur_result_t urGraphExecutableGraphDestroyExp( ur_exp_executable_graph_handle_t hExecutableGraph); ur_result_t urQueueIsGraphCaptureEnabledExp(ur_queue_handle_t hQueue, - bool *hResult); -ur_result_t urGraphIsEmptyExp(ur_exp_graph_handle_t hGraph, bool *hResult); + bool *pResult); +ur_result_t urGraphIsEmptyExp(ur_exp_graph_handle_t hGraph, bool *pResult); ur_result_t urGraphDumpContentsExp(ur_exp_graph_handle_t hGraph, const char *filePath); #ifdef UR_STATIC_ADAPTER_LEVEL_ZERO diff --git a/unified-runtime/source/adapters/level_zero/v2/queue_api.cpp b/unified-runtime/source/adapters/level_zero/v2/queue_api.cpp index 75bfe171e2367..6d7fe1cc99b5a 100644 --- a/unified-runtime/source/adapters/level_zero/v2/queue_api.cpp +++ b/unified-runtime/source/adapters/level_zero/v2/queue_api.cpp @@ -496,19 +496,19 @@ ur_result_t urQueueEndGraphCaptureExp(ur_queue_handle_t hQueue, } catch (...) { return exceptionToResult(std::current_exception()); } -ur_result_t urQueueAppendGraphExp(ur_queue_handle_t hQueue, - ur_exp_executable_graph_handle_t hGraph, - ur_event_handle_t hSignalEvent, - uint32_t numWaitEvents, - ur_event_handle_t *phWaitEvents) try { - return hQueue->get().queueAppendGraphExp(hGraph, hSignalEvent, numWaitEvents, - phWaitEvents); +ur_result_t urEnqueueGraphExp(ur_queue_handle_t hQueue, + ur_exp_executable_graph_handle_t hGraph, + uint32_t numEventsInWaitList, + const ur_event_handle_t *phEventWaitList, + ur_event_handle_t *phEvent) try { + return hQueue->get().enqueueGraphExp(hGraph, numEventsInWaitList, + phEventWaitList, phEvent); } catch (...) { return exceptionToResult(std::current_exception()); } ur_result_t urQueueIsGraphCaptureEnabledExp(ur_queue_handle_t hQueue, - bool *hResult) try { - return hQueue->get().queueIsGraphCapteEnabledExp(hResult); + bool *pResult) try { + return hQueue->get().queueIsGraphCapteEnabledExp(pResult); } catch (...) { return exceptionToResult(std::current_exception()); } diff --git a/unified-runtime/source/adapters/level_zero/v2/queue_api.hpp b/unified-runtime/source/adapters/level_zero/v2/queue_api.hpp index 87b272cf9d413..06ffc5dbf526f 100644 --- a/unified-runtime/source/adapters/level_zero/v2/queue_api.hpp +++ b/unified-runtime/source/adapters/level_zero/v2/queue_api.hpp @@ -181,8 +181,8 @@ struct ur_queue_t_ : ur_queue_extensions { virtual ur_result_t queueBeginGraphCapteExp() = 0; virtual ur_result_t queueBeginCapteIntoGraphExp(ur_exp_graph_handle_t) = 0; virtual ur_result_t queueEndGraphCapteExp(ur_exp_graph_handle_t *) = 0; - virtual ur_result_t queueAppendGraphExp(ur_exp_executable_graph_handle_t, - ur_event_handle_t, uint32_t, - ur_event_handle_t *) = 0; + virtual ur_result_t enqueueGraphExp(ur_exp_executable_graph_handle_t, + uint32_t, const ur_event_handle_t *, + ur_event_handle_t *) = 0; virtual ur_result_t queueIsGraphCapteEnabledExp(bool *) = 0; }; diff --git a/unified-runtime/source/adapters/level_zero/v2/queue_batched.hpp b/unified-runtime/source/adapters/level_zero/v2/queue_batched.hpp index 86c4e8b740fae..882145cf22996 100644 --- a/unified-runtime/source/adapters/level_zero/v2/queue_batched.hpp +++ b/unified-runtime/source/adapters/level_zero/v2/queue_batched.hpp @@ -465,11 +465,10 @@ struct ur_queue_batched_t : ur_object, ur_queue_t_ { return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } - ur_result_t - queueAppendGraphExp(ur_exp_executable_graph_handle_t /* hGraph */, - ur_event_handle_t /* hSignalEvent */, - uint32_t /* numWaitEvents */, - ur_event_handle_t * /* phWaitEvents */) override { + ur_result_t enqueueGraphExp(ur_exp_executable_graph_handle_t /* hGraph */, + uint32_t /* numEventsInWaitList */, + const ur_event_handle_t * /* phEventWaitList */, + ur_event_handle_t * /* phEvent */) override { return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } diff --git a/unified-runtime/source/adapters/level_zero/v2/queue_immediate_in_order.hpp b/unified-runtime/source/adapters/level_zero/v2/queue_immediate_in_order.hpp index bdaf99d67ff82..6db4993e98b36 100644 --- a/unified-runtime/source/adapters/level_zero/v2/queue_immediate_in_order.hpp +++ b/unified-runtime/source/adapters/level_zero/v2/queue_immediate_in_order.hpp @@ -562,11 +562,10 @@ struct ur_queue_immediate_in_order_t : ur_object, ur_queue_t_ { return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } - ur_result_t - queueAppendGraphExp(ur_exp_executable_graph_handle_t /* hGraph */, - ur_event_handle_t /* hSignalEvent */, - uint32_t /* numWaitEvents */, - ur_event_handle_t * /* phWaitEvents */) override { + ur_result_t enqueueGraphExp(ur_exp_executable_graph_handle_t /* hGraph */, + uint32_t /* numEventsInWaitList */, + const ur_event_handle_t * /* phEventWaitList */, + ur_event_handle_t * /* phEvent */) override { return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } diff --git a/unified-runtime/source/adapters/level_zero/v2/queue_immediate_out_of_order.hpp b/unified-runtime/source/adapters/level_zero/v2/queue_immediate_out_of_order.hpp index e02f49361eaa8..d771ca8cce79a 100644 --- a/unified-runtime/source/adapters/level_zero/v2/queue_immediate_out_of_order.hpp +++ b/unified-runtime/source/adapters/level_zero/v2/queue_immediate_out_of_order.hpp @@ -617,11 +617,10 @@ struct ur_queue_immediate_out_of_order_t : ur_object, ur_queue_t_ { return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } - ur_result_t - queueAppendGraphExp(ur_exp_executable_graph_handle_t /* hGraph */, - ur_event_handle_t /* hSignalEvent */, - uint32_t /* numWaitEvents */, - ur_event_handle_t * /* phWaitEvents */) override { + ur_result_t enqueueGraphExp(ur_exp_executable_graph_handle_t /* hGraph */, + uint32_t /* numEventsInWaitList */, + const ur_event_handle_t * /* phEventWaitList */, + ur_event_handle_t * /* phEvent */) override { return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } diff --git a/unified-runtime/source/adapters/mock/ur_mockddi.cpp b/unified-runtime/source/adapters/mock/ur_mockddi.cpp index 56a73ee8af011..85b7e143d15be 100644 --- a/unified-runtime/source/adapters/mock/ur_mockddi.cpp +++ b/unified-runtime/source/adapters/mock/ur_mockddi.cpp @@ -12653,26 +12653,31 @@ __urdlllocal ur_result_t UR_APICALL urGraphInstantiateGraphExp( } /////////////////////////////////////////////////////////////////////////////// -/// @brief Intercept function for urQueueAppendGraphExp -__urdlllocal ur_result_t UR_APICALL urQueueAppendGraphExp( - /// [in] Handle of the queue to append the graph to. +/// @brief Intercept function for urEnqueueGraphExp +__urdlllocal ur_result_t UR_APICALL urEnqueueGraphExp( + /// [in] Handle of the queue to which the graph will be enqueued. ur_queue_handle_t hQueue, - /// [in] Handle of the executable graph to append. + /// [in] Handle of the executable graph to be enqueued. ur_exp_executable_graph_handle_t hGraph, - /// [in][optional] Event to be signaled on completion. - ur_event_handle_t hSignalEvent, /// [in][optional] Number of events to wait on before executing. - uint32_t numWaitEvents, - /// [in][optional][range(0, numWaitEvents)] Handle of the events to wait - /// on before launching. - ur_event_handle_t *phWaitEvents) try { + uint32_t numEventsInWaitList, + /// [in][optional][range(0, numEventsInWaitList)] Pointer to a list of + /// events that must be complete before this command can be executed. + /// If nullptr, the numEventsInWaitList must be 0, indicating that this + /// command does not wait on any event to complete. + const ur_event_handle_t *phEventWaitList, + /// [out][optional][alloc] Event object that identifies this particular + /// command instance. + /// If phEventWaitList and phEvent are not nullptr, phEvent must not refer + /// to an element of the phEventWaitList array. + ur_event_handle_t *phEvent) try { ur_result_t result = UR_RESULT_SUCCESS; - ur_queue_append_graph_exp_params_t params = {&hQueue, &hGraph, &hSignalEvent, - &numWaitEvents, &phWaitEvents}; + ur_enqueue_graph_exp_params_t params = { + &hQueue, &hGraph, &numEventsInWaitList, &phEventWaitList, &phEvent}; auto beforeCallback = reinterpret_cast( - mock::getCallbacks().get_before_callback("urQueueAppendGraphExp")); + mock::getCallbacks().get_before_callback("urEnqueueGraphExp")); if (beforeCallback) { result = beforeCallback(¶ms); if (result != UR_RESULT_SUCCESS) { @@ -12681,11 +12686,15 @@ __urdlllocal ur_result_t UR_APICALL urQueueAppendGraphExp( } auto replaceCallback = reinterpret_cast( - mock::getCallbacks().get_replace_callback("urQueueAppendGraphExp")); + mock::getCallbacks().get_replace_callback("urEnqueueGraphExp")); if (replaceCallback) { result = replaceCallback(¶ms); } else { + // optional output handle + if (phEvent) { + *phEvent = mock::createDummyHandle(); + } result = UR_RESULT_SUCCESS; } @@ -12694,7 +12703,7 @@ __urdlllocal ur_result_t UR_APICALL urQueueAppendGraphExp( } auto afterCallback = reinterpret_cast( - mock::getCallbacks().get_after_callback("urQueueAppendGraphExp")); + mock::getCallbacks().get_after_callback("urEnqueueGraphExp")); if (afterCallback) { return afterCallback(¶ms); } @@ -12797,10 +12806,10 @@ __urdlllocal ur_result_t UR_APICALL urQueueIsGraphCaptureEnabledExp( /// [in] Native queue to query. ur_queue_handle_t hQueue, /// [out] Pointer to a boolean where the result will be stored. - bool *hResult) try { + bool *pResult) try { ur_result_t result = UR_RESULT_SUCCESS; - ur_queue_is_graph_capture_enabled_exp_params_t params = {&hQueue, &hResult}; + ur_queue_is_graph_capture_enabled_exp_params_t params = {&hQueue, &pResult}; auto beforeCallback = reinterpret_cast( mock::getCallbacks().get_before_callback( @@ -12844,10 +12853,10 @@ __urdlllocal ur_result_t UR_APICALL urGraphIsEmptyExp( /// [in] Handle of the graph to query. ur_exp_graph_handle_t hGraph, /// [out] Pointer to a boolean where the result will be stored. - bool *hResult) try { + bool *pResult) try { ur_result_t result = UR_RESULT_SUCCESS; - ur_graph_is_empty_exp_params_t params = {&hGraph, &hResult}; + ur_graph_is_empty_exp_params_t params = {&hGraph, &pResult}; auto beforeCallback = reinterpret_cast( mock::getCallbacks().get_before_callback("urGraphIsEmptyExp")); @@ -13303,6 +13312,8 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetEnqueueExpProcAddrTable( pDdiTable->pfnNativeCommandExp = driver::urEnqueueNativeCommandExp; + pDdiTable->pfnGraphExp = driver::urEnqueueGraphExp; + return result; } catch (...) { return exceptionToResult(std::current_exception()); @@ -13803,8 +13814,6 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetQueueExpProcAddrTable( pDdiTable->pfnEndGraphCaptureExp = driver::urQueueEndGraphCaptureExp; - pDdiTable->pfnAppendGraphExp = driver::urQueueAppendGraphExp; - pDdiTable->pfnIsGraphCaptureEnabledExp = driver::urQueueIsGraphCaptureEnabledExp; diff --git a/unified-runtime/source/adapters/native_cpu/queue.cpp b/unified-runtime/source/adapters/native_cpu/queue.cpp index a8999fab9da71..9b5bcc369f37a 100644 --- a/unified-runtime/source/adapters/native_cpu/queue.cpp +++ b/unified-runtime/source/adapters/native_cpu/queue.cpp @@ -113,11 +113,12 @@ UR_APIEXPORT ur_result_t urQueueEndGraphCaptureExp( DIE_NO_IMPLEMENTATION; } -UR_APIEXPORT ur_result_t urQueueAppendGraphExp( - ur_queue_handle_t /* hQueue */, - ur_exp_executable_graph_handle_t /* hGraph */, - ur_event_handle_t /* hSignalEvent */, uint32_t /* numWaitEvents */, - ur_event_handle_t * /* phWaitEvents */) { +UR_APIEXPORT ur_result_t +urEnqueueGraphExp(ur_queue_handle_t /* hQueue */, + ur_exp_executable_graph_handle_t /* hGraph */, + uint32_t /* numEventsInWaitList */, + const ur_event_handle_t * /* phEventWaitList */, + ur_event_handle_t * /* phEvent */) { DIE_NO_IMPLEMENTATION; } diff --git a/unified-runtime/source/adapters/native_cpu/ur_interface_loader.cpp b/unified-runtime/source/adapters/native_cpu/ur_interface_loader.cpp index fc6e152be2922..139f80475e5dd 100644 --- a/unified-runtime/source/adapters/native_cpu/ur_interface_loader.cpp +++ b/unified-runtime/source/adapters/native_cpu/ur_interface_loader.cpp @@ -259,7 +259,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urGetQueueExpProcAddrTable( pDdiTable->pfnBeginGraphCaptureExp = urQueueBeginGraphCaptureExp; pDdiTable->pfnBeginCaptureIntoGraphExp = urQueueBeginCaptureIntoGraphExp; pDdiTable->pfnEndGraphCaptureExp = urQueueEndGraphCaptureExp; - pDdiTable->pfnAppendGraphExp = urQueueAppendGraphExp; pDdiTable->pfnIsGraphCaptureEnabledExp = urQueueIsGraphCaptureEnabledExp; return UR_RESULT_SUCCESS; @@ -473,6 +472,7 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetEnqueueExpProcAddrTable( pDdiTable->pfnNativeCommandExp = urEnqueueNativeCommandExp; pDdiTable->pfnCommandBufferExp = urEnqueueCommandBufferExp; pDdiTable->pfnKernelLaunchWithArgsExp = urEnqueueKernelLaunchWithArgsExp; + pDdiTable->pfnGraphExp = urEnqueueGraphExp; return UR_RESULT_SUCCESS; } diff --git a/unified-runtime/source/adapters/offload/queue.cpp b/unified-runtime/source/adapters/offload/queue.cpp index c5435929dbeb5..4eb9502b59353 100644 --- a/unified-runtime/source/adapters/offload/queue.cpp +++ b/unified-runtime/source/adapters/offload/queue.cpp @@ -140,11 +140,12 @@ UR_APIEXPORT ur_result_t UR_APICALL urQueueEndGraphCaptureExp( return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } -UR_APIEXPORT ur_result_t UR_APICALL urQueueAppendGraphExp( - ur_queue_handle_t /* hQueue */, - ur_exp_executable_graph_handle_t /* hGraph */, - ur_event_handle_t /* hSignalEvent */, uint32_t /* numWaitEvents */, - ur_event_handle_t * /* phWaitEvents */) { +UR_APIEXPORT ur_result_t UR_APICALL +urEnqueueGraphExp(ur_queue_handle_t /* hQueue */, + ur_exp_executable_graph_handle_t /* hGraph */, + uint32_t /* numEventsInWaitList */, + const ur_event_handle_t * /* phEventWaitList */, + ur_event_handle_t * /* phEvent */) { return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } diff --git a/unified-runtime/source/adapters/offload/ur_interface_loader.cpp b/unified-runtime/source/adapters/offload/ur_interface_loader.cpp index 0dd1ec836c7fb..eea537b87c610 100644 --- a/unified-runtime/source/adapters/offload/ur_interface_loader.cpp +++ b/unified-runtime/source/adapters/offload/ur_interface_loader.cpp @@ -222,7 +222,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urGetQueueExpProcAddrTable( pDdiTable->pfnBeginGraphCaptureExp = urQueueBeginGraphCaptureExp; pDdiTable->pfnBeginCaptureIntoGraphExp = urQueueBeginCaptureIntoGraphExp; pDdiTable->pfnEndGraphCaptureExp = urQueueEndGraphCaptureExp; - pDdiTable->pfnAppendGraphExp = urQueueAppendGraphExp; pDdiTable->pfnIsGraphCaptureEnabledExp = urQueueIsGraphCaptureEnabledExp; return UR_RESULT_SUCCESS; } @@ -425,6 +424,7 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetEnqueueExpProcAddrTable( pDdiTable->pfnTimestampRecordingExp = nullptr; pDdiTable->pfnNativeCommandExp = nullptr; pDdiTable->pfnKernelLaunchWithArgsExp = urEnqueueKernelLaunchWithArgsExp; + pDdiTable->pfnGraphExp = urEnqueueGraphExp; return UR_RESULT_SUCCESS; } diff --git a/unified-runtime/source/adapters/opencl/queue.cpp b/unified-runtime/source/adapters/opencl/queue.cpp index eb511a7966229..7d52571a32bd1 100644 --- a/unified-runtime/source/adapters/opencl/queue.cpp +++ b/unified-runtime/source/adapters/opencl/queue.cpp @@ -327,11 +327,12 @@ UR_APIEXPORT ur_result_t UR_APICALL urQueueEndGraphCaptureExp( return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } -UR_APIEXPORT ur_result_t UR_APICALL urQueueAppendGraphExp( - ur_queue_handle_t /* hQueue */, - ur_exp_executable_graph_handle_t /* hGraph */, - ur_event_handle_t /* hSignalEvent */, uint32_t /* numWaitEvents */, - ur_event_handle_t * /* phWaitEvents */) { +UR_APIEXPORT ur_result_t UR_APICALL +urEnqueueGraphExp(ur_queue_handle_t /* hQueue */, + ur_exp_executable_graph_handle_t /* hGraph */, + uint32_t /* numEventsInWaitList */, + const ur_event_handle_t * /* phEventWaitList */, + ur_event_handle_t * /* phEvent */) { return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } diff --git a/unified-runtime/source/adapters/opencl/ur_interface_loader.cpp b/unified-runtime/source/adapters/opencl/ur_interface_loader.cpp index d6885f480a57c..ba2221074baa5 100644 --- a/unified-runtime/source/adapters/opencl/ur_interface_loader.cpp +++ b/unified-runtime/source/adapters/opencl/ur_interface_loader.cpp @@ -445,6 +445,7 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetEnqueueExpProcAddrTable( pDdiTable->pfnNativeCommandExp = urEnqueueNativeCommandExp; pDdiTable->pfnCommandBufferExp = urEnqueueCommandBufferExp; pDdiTable->pfnKernelLaunchWithArgsExp = urEnqueueKernelLaunchWithArgsExp; + pDdiTable->pfnGraphExp = urEnqueueGraphExp; return UR_RESULT_SUCCESS; } @@ -489,7 +490,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urGetQueueExpProcAddrTable( pDdiTable->pfnBeginGraphCaptureExp = urQueueBeginGraphCaptureExp; pDdiTable->pfnBeginCaptureIntoGraphExp = urQueueBeginCaptureIntoGraphExp; pDdiTable->pfnEndGraphCaptureExp = urQueueEndGraphCaptureExp; - pDdiTable->pfnAppendGraphExp = urQueueAppendGraphExp; pDdiTable->pfnIsGraphCaptureEnabledExp = urQueueIsGraphCaptureEnabledExp; return UR_RESULT_SUCCESS; diff --git a/unified-runtime/source/loader/layers/tracing/ur_trcddi.cpp b/unified-runtime/source/loader/layers/tracing/ur_trcddi.cpp index 2dc7e4ada1ace..905381c0a13d4 100644 --- a/unified-runtime/source/loader/layers/tracing/ur_trcddi.cpp +++ b/unified-runtime/source/loader/layers/tracing/ur_trcddi.cpp @@ -10723,43 +10723,48 @@ __urdlllocal ur_result_t UR_APICALL urGraphInstantiateGraphExp( } /////////////////////////////////////////////////////////////////////////////// -/// @brief Intercept function for urQueueAppendGraphExp -__urdlllocal ur_result_t UR_APICALL urQueueAppendGraphExp( - /// [in] Handle of the queue to append the graph to. +/// @brief Intercept function for urEnqueueGraphExp +__urdlllocal ur_result_t UR_APICALL urEnqueueGraphExp( + /// [in] Handle of the queue to which the graph will be enqueued. ur_queue_handle_t hQueue, - /// [in] Handle of the executable graph to append. + /// [in] Handle of the executable graph to be enqueued. ur_exp_executable_graph_handle_t hGraph, - /// [in][optional] Event to be signaled on completion. - ur_event_handle_t hSignalEvent, /// [in][optional] Number of events to wait on before executing. - uint32_t numWaitEvents, - /// [in][optional][range(0, numWaitEvents)] Handle of the events to wait - /// on before launching. - ur_event_handle_t *phWaitEvents) { - auto pfnAppendGraphExp = getContext()->urDdiTable.QueueExp.pfnAppendGraphExp; + uint32_t numEventsInWaitList, + /// [in][optional][range(0, numEventsInWaitList)] Pointer to a list of + /// events that must be complete before this command can be executed. + /// If nullptr, the numEventsInWaitList must be 0, indicating that this + /// command does not wait on any event to complete. + const ur_event_handle_t *phEventWaitList, + /// [out][optional][alloc] Event object that identifies this particular + /// command instance. + /// If phEventWaitList and phEvent are not nullptr, phEvent must not refer + /// to an element of the phEventWaitList array. + ur_event_handle_t *phEvent) { + auto pfnGraphExp = getContext()->urDdiTable.EnqueueExp.pfnGraphExp; - if (nullptr == pfnAppendGraphExp) + if (nullptr == pfnGraphExp) return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; - ur_queue_append_graph_exp_params_t params = {&hQueue, &hGraph, &hSignalEvent, - &numWaitEvents, &phWaitEvents}; - uint64_t instance = getContext()->notify_begin( - UR_FUNCTION_QUEUE_APPEND_GRAPH_EXP, "urQueueAppendGraphExp", ¶ms); + ur_enqueue_graph_exp_params_t params = { + &hQueue, &hGraph, &numEventsInWaitList, &phEventWaitList, &phEvent}; + uint64_t instance = getContext()->notify_begin(UR_FUNCTION_ENQUEUE_GRAPH_EXP, + "urEnqueueGraphExp", ¶ms); auto &logger = getContext()->logger; - UR_LOG_L(logger, INFO, " ---> urQueueAppendGraphExp\n"); + UR_LOG_L(logger, INFO, " ---> urEnqueueGraphExp\n"); - ur_result_t result = pfnAppendGraphExp(hQueue, hGraph, hSignalEvent, - numWaitEvents, phWaitEvents); + ur_result_t result = pfnGraphExp(hQueue, hGraph, numEventsInWaitList, + phEventWaitList, phEvent); - getContext()->notify_end(UR_FUNCTION_QUEUE_APPEND_GRAPH_EXP, - "urQueueAppendGraphExp", ¶ms, &result, instance); + getContext()->notify_end(UR_FUNCTION_ENQUEUE_GRAPH_EXP, "urEnqueueGraphExp", + ¶ms, &result, instance); if (logger.getLevel() <= UR_LOGGER_LEVEL_INFO) { std::ostringstream args_str; - ur::extras::printFunctionParams( - args_str, UR_FUNCTION_QUEUE_APPEND_GRAPH_EXP, ¶ms); - UR_LOG_L(logger, INFO, " <--- urQueueAppendGraphExp({}) -> {};\n", + ur::extras::printFunctionParams(args_str, UR_FUNCTION_ENQUEUE_GRAPH_EXP, + ¶ms); + UR_LOG_L(logger, INFO, " <--- urEnqueueGraphExp({}) -> {};\n", args_str.str(), result); } @@ -10842,14 +10847,14 @@ __urdlllocal ur_result_t UR_APICALL urQueueIsGraphCaptureEnabledExp( /// [in] Native queue to query. ur_queue_handle_t hQueue, /// [out] Pointer to a boolean where the result will be stored. - bool *hResult) { + bool *pResult) { auto pfnIsGraphCaptureEnabledExp = getContext()->urDdiTable.QueueExp.pfnIsGraphCaptureEnabledExp; if (nullptr == pfnIsGraphCaptureEnabledExp) return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; - ur_queue_is_graph_capture_enabled_exp_params_t params = {&hQueue, &hResult}; + ur_queue_is_graph_capture_enabled_exp_params_t params = {&hQueue, &pResult}; uint64_t instance = getContext()->notify_begin(UR_FUNCTION_QUEUE_IS_GRAPH_CAPTURE_ENABLED_EXP, "urQueueIsGraphCaptureEnabledExp", ¶ms); @@ -10857,7 +10862,7 @@ __urdlllocal ur_result_t UR_APICALL urQueueIsGraphCaptureEnabledExp( auto &logger = getContext()->logger; UR_LOG_L(logger, INFO, " ---> urQueueIsGraphCaptureEnabledExp\n"); - ur_result_t result = pfnIsGraphCaptureEnabledExp(hQueue, hResult); + ur_result_t result = pfnIsGraphCaptureEnabledExp(hQueue, pResult); getContext()->notify_end(UR_FUNCTION_QUEUE_IS_GRAPH_CAPTURE_ENABLED_EXP, "urQueueIsGraphCaptureEnabledExp", ¶ms, &result, @@ -10881,20 +10886,20 @@ __urdlllocal ur_result_t UR_APICALL urGraphIsEmptyExp( /// [in] Handle of the graph to query. ur_exp_graph_handle_t hGraph, /// [out] Pointer to a boolean where the result will be stored. - bool *hResult) { + bool *pResult) { auto pfnIsEmptyExp = getContext()->urDdiTable.GraphExp.pfnIsEmptyExp; if (nullptr == pfnIsEmptyExp) return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; - ur_graph_is_empty_exp_params_t params = {&hGraph, &hResult}; + ur_graph_is_empty_exp_params_t params = {&hGraph, &pResult}; uint64_t instance = getContext()->notify_begin(UR_FUNCTION_GRAPH_IS_EMPTY_EXP, "urGraphIsEmptyExp", ¶ms); auto &logger = getContext()->logger; UR_LOG_L(logger, INFO, " ---> urGraphIsEmptyExp\n"); - ur_result_t result = pfnIsEmptyExp(hGraph, hResult); + ur_result_t result = pfnIsEmptyExp(hGraph, pResult); getContext()->notify_end(UR_FUNCTION_GRAPH_IS_EMPTY_EXP, "urGraphIsEmptyExp", ¶ms, &result, instance); @@ -11459,6 +11464,9 @@ __urdlllocal ur_result_t UR_APICALL urGetEnqueueExpProcAddrTable( dditable.pfnNativeCommandExp = pDdiTable->pfnNativeCommandExp; pDdiTable->pfnNativeCommandExp = ur_tracing_layer::urEnqueueNativeCommandExp; + dditable.pfnGraphExp = pDdiTable->pfnGraphExp; + pDdiTable->pfnGraphExp = ur_tracing_layer::urEnqueueGraphExp; + return result; } /////////////////////////////////////////////////////////////////////////////// @@ -12084,9 +12092,6 @@ __urdlllocal ur_result_t UR_APICALL urGetQueueExpProcAddrTable( pDdiTable->pfnEndGraphCaptureExp = ur_tracing_layer::urQueueEndGraphCaptureExp; - dditable.pfnAppendGraphExp = pDdiTable->pfnAppendGraphExp; - pDdiTable->pfnAppendGraphExp = ur_tracing_layer::urQueueAppendGraphExp; - dditable.pfnIsGraphCaptureEnabledExp = pDdiTable->pfnIsGraphCaptureEnabledExp; pDdiTable->pfnIsGraphCaptureEnabledExp = ur_tracing_layer::urQueueIsGraphCaptureEnabledExp; diff --git a/unified-runtime/source/loader/layers/validation/ur_valddi.cpp b/unified-runtime/source/loader/layers/validation/ur_valddi.cpp index b0245d25daef4..8a5cccca06159 100644 --- a/unified-runtime/source/loader/layers/validation/ur_valddi.cpp +++ b/unified-runtime/source/loader/layers/validation/ur_valddi.cpp @@ -11502,22 +11502,27 @@ __urdlllocal ur_result_t UR_APICALL urGraphInstantiateGraphExp( } /////////////////////////////////////////////////////////////////////////////// -/// @brief Intercept function for urQueueAppendGraphExp -__urdlllocal ur_result_t UR_APICALL urQueueAppendGraphExp( - /// [in] Handle of the queue to append the graph to. +/// @brief Intercept function for urEnqueueGraphExp +__urdlllocal ur_result_t UR_APICALL urEnqueueGraphExp( + /// [in] Handle of the queue to which the graph will be enqueued. ur_queue_handle_t hQueue, - /// [in] Handle of the executable graph to append. + /// [in] Handle of the executable graph to be enqueued. ur_exp_executable_graph_handle_t hGraph, - /// [in][optional] Event to be signaled on completion. - ur_event_handle_t hSignalEvent, /// [in][optional] Number of events to wait on before executing. - uint32_t numWaitEvents, - /// [in][optional][range(0, numWaitEvents)] Handle of the events to wait - /// on before launching. - ur_event_handle_t *phWaitEvents) { - auto pfnAppendGraphExp = getContext()->urDdiTable.QueueExp.pfnAppendGraphExp; + uint32_t numEventsInWaitList, + /// [in][optional][range(0, numEventsInWaitList)] Pointer to a list of + /// events that must be complete before this command can be executed. + /// If nullptr, the numEventsInWaitList must be 0, indicating that this + /// command does not wait on any event to complete. + const ur_event_handle_t *phEventWaitList, + /// [out][optional][alloc] Event object that identifies this particular + /// command instance. + /// If phEventWaitList and phEvent are not nullptr, phEvent must not refer + /// to an element of the phEventWaitList array. + ur_event_handle_t *phEvent) { + auto pfnGraphExp = getContext()->urDdiTable.EnqueueExp.pfnGraphExp; - if (nullptr == pfnAppendGraphExp) { + if (nullptr == pfnGraphExp) { return UR_RESULT_ERROR_UNINITIALIZED; } @@ -11527,6 +11532,20 @@ __urdlllocal ur_result_t UR_APICALL urQueueAppendGraphExp( if (NULL == hGraph) return UR_RESULT_ERROR_INVALID_NULL_HANDLE; + + if (phEventWaitList == NULL && numEventsInWaitList > 0) + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + + if (phEventWaitList != NULL && numEventsInWaitList == 0) + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } if (getContext()->enableLifetimeValidation && @@ -11534,13 +11553,13 @@ __urdlllocal ur_result_t UR_APICALL urQueueAppendGraphExp( URLOG_CTX_INVALID_REFERENCE(hQueue); } - if (getContext()->enableLifetimeValidation && - !getContext()->refCountContext->isReferenceValid(hSignalEvent)) { - URLOG_CTX_INVALID_REFERENCE(hSignalEvent); - } + ur_result_t result = pfnGraphExp(hQueue, hGraph, numEventsInWaitList, + phEventWaitList, phEvent); - ur_result_t result = pfnAppendGraphExp(hQueue, hGraph, hSignalEvent, - numWaitEvents, phWaitEvents); + if (getContext()->enableLeakChecking && result == UR_RESULT_SUCCESS && + phEvent) { + getContext()->refCountContext->createRefCount(*phEvent); + } return result; } @@ -11594,7 +11613,7 @@ __urdlllocal ur_result_t UR_APICALL urQueueIsGraphCaptureEnabledExp( /// [in] Native queue to query. ur_queue_handle_t hQueue, /// [out] Pointer to a boolean where the result will be stored. - bool *hResult) { + bool *pResult) { auto pfnIsGraphCaptureEnabledExp = getContext()->urDdiTable.QueueExp.pfnIsGraphCaptureEnabledExp; @@ -11603,7 +11622,7 @@ __urdlllocal ur_result_t UR_APICALL urQueueIsGraphCaptureEnabledExp( } if (getContext()->enableParameterValidation) { - if (NULL == hResult) + if (NULL == pResult) return UR_RESULT_ERROR_INVALID_NULL_POINTER; if (NULL == hQueue) @@ -11615,7 +11634,7 @@ __urdlllocal ur_result_t UR_APICALL urQueueIsGraphCaptureEnabledExp( URLOG_CTX_INVALID_REFERENCE(hQueue); } - ur_result_t result = pfnIsGraphCaptureEnabledExp(hQueue, hResult); + ur_result_t result = pfnIsGraphCaptureEnabledExp(hQueue, pResult); return result; } @@ -11626,7 +11645,7 @@ __urdlllocal ur_result_t UR_APICALL urGraphIsEmptyExp( /// [in] Handle of the graph to query. ur_exp_graph_handle_t hGraph, /// [out] Pointer to a boolean where the result will be stored. - bool *hResult) { + bool *pResult) { auto pfnIsEmptyExp = getContext()->urDdiTable.GraphExp.pfnIsEmptyExp; if (nullptr == pfnIsEmptyExp) { @@ -11634,14 +11653,14 @@ __urdlllocal ur_result_t UR_APICALL urGraphIsEmptyExp( } if (getContext()->enableParameterValidation) { - if (NULL == hResult) + if (NULL == pResult) return UR_RESULT_ERROR_INVALID_NULL_POINTER; if (NULL == hGraph) return UR_RESULT_ERROR_INVALID_NULL_HANDLE; } - ur_result_t result = pfnIsEmptyExp(hGraph, hResult); + ur_result_t result = pfnIsEmptyExp(hGraph, pResult); return result; } @@ -12197,6 +12216,9 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetEnqueueExpProcAddrTable( pDdiTable->pfnNativeCommandExp = ur_validation_layer::urEnqueueNativeCommandExp; + dditable.pfnGraphExp = pDdiTable->pfnGraphExp; + pDdiTable->pfnGraphExp = ur_validation_layer::urEnqueueGraphExp; + return result; } @@ -12838,9 +12860,6 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetQueueExpProcAddrTable( pDdiTable->pfnEndGraphCaptureExp = ur_validation_layer::urQueueEndGraphCaptureExp; - dditable.pfnAppendGraphExp = pDdiTable->pfnAppendGraphExp; - pDdiTable->pfnAppendGraphExp = ur_validation_layer::urQueueAppendGraphExp; - dditable.pfnIsGraphCaptureEnabledExp = pDdiTable->pfnIsGraphCaptureEnabledExp; pDdiTable->pfnIsGraphCaptureEnabledExp = ur_validation_layer::urQueueIsGraphCaptureEnabledExp; diff --git a/unified-runtime/source/loader/loader.def.in b/unified-runtime/source/loader/loader.def.in index e368adca367dd..0435ec9315e1d 100644 --- a/unified-runtime/source/loader/loader.def.in +++ b/unified-runtime/source/loader/loader.def.in @@ -76,6 +76,7 @@ EXPORTS urEnqueueEventsWait urEnqueueEventsWaitWithBarrier urEnqueueEventsWaitWithBarrierExt + urEnqueueGraphExp urEnqueueKernelLaunch urEnqueueKernelLaunchWithArgsExp urEnqueueMemBufferCopy @@ -304,6 +305,7 @@ EXPORTS urPrintEnqueueEventsWaitParams urPrintEnqueueEventsWaitWithBarrierExtParams urPrintEnqueueEventsWaitWithBarrierParams + urPrintEnqueueGraphExpParams urPrintEnqueueKernelLaunchParams urPrintEnqueueKernelLaunchWithArgsExpParams urPrintEnqueueMemBufferCopyParams @@ -501,7 +503,6 @@ EXPORTS urPrintProgramReleaseParams urPrintProgramRetainParams urPrintProgramSetSpecializationConstantsParams - urPrintQueueAppendGraphExpParams urPrintQueueBeginCaptureIntoGraphExpParams urPrintQueueBeginGraphCaptureExpParams urPrintQueueCreateParams @@ -603,7 +604,6 @@ EXPORTS urProgramRelease urProgramRetain urProgramSetSpecializationConstants - urQueueAppendGraphExp urQueueBeginCaptureIntoGraphExp urQueueBeginGraphCaptureExp urQueueCreate diff --git a/unified-runtime/source/loader/loader.map.in b/unified-runtime/source/loader/loader.map.in index a9d015469ef6a..ac8dcf2522ea8 100644 --- a/unified-runtime/source/loader/loader.map.in +++ b/unified-runtime/source/loader/loader.map.in @@ -76,6 +76,7 @@ urEnqueueEventsWait; urEnqueueEventsWaitWithBarrier; urEnqueueEventsWaitWithBarrierExt; + urEnqueueGraphExp; urEnqueueKernelLaunch; urEnqueueKernelLaunchWithArgsExp; urEnqueueMemBufferCopy; @@ -304,6 +305,7 @@ urPrintEnqueueEventsWaitParams; urPrintEnqueueEventsWaitWithBarrierExtParams; urPrintEnqueueEventsWaitWithBarrierParams; + urPrintEnqueueGraphExpParams; urPrintEnqueueKernelLaunchParams; urPrintEnqueueKernelLaunchWithArgsExpParams; urPrintEnqueueMemBufferCopyParams; @@ -501,7 +503,6 @@ urPrintProgramReleaseParams; urPrintProgramRetainParams; urPrintProgramSetSpecializationConstantsParams; - urPrintQueueAppendGraphExpParams; urPrintQueueBeginCaptureIntoGraphExpParams; urPrintQueueBeginGraphCaptureExpParams; urPrintQueueCreateParams; @@ -603,7 +604,6 @@ urProgramRelease; urProgramRetain; urProgramSetSpecializationConstants; - urQueueAppendGraphExp; urQueueBeginCaptureIntoGraphExp; urQueueBeginGraphCaptureExp; urQueueCreate; diff --git a/unified-runtime/source/loader/ur_ldrddi.cpp b/unified-runtime/source/loader/ur_ldrddi.cpp index c7c60ec879dc9..3a366b990055c 100644 --- a/unified-runtime/source/loader/ur_ldrddi.cpp +++ b/unified-runtime/source/loader/ur_ldrddi.cpp @@ -6085,29 +6085,34 @@ __urdlllocal ur_result_t UR_APICALL urGraphInstantiateGraphExp( } /////////////////////////////////////////////////////////////////////////////// -/// @brief Intercept function for urQueueAppendGraphExp -__urdlllocal ur_result_t UR_APICALL urQueueAppendGraphExp( - /// [in] Handle of the queue to append the graph to. +/// @brief Intercept function for urEnqueueGraphExp +__urdlllocal ur_result_t UR_APICALL urEnqueueGraphExp( + /// [in] Handle of the queue to which the graph will be enqueued. ur_queue_handle_t hQueue, - /// [in] Handle of the executable graph to append. + /// [in] Handle of the executable graph to be enqueued. ur_exp_executable_graph_handle_t hGraph, - /// [in][optional] Event to be signaled on completion. - ur_event_handle_t hSignalEvent, /// [in][optional] Number of events to wait on before executing. - uint32_t numWaitEvents, - /// [in][optional][range(0, numWaitEvents)] Handle of the events to wait - /// on before launching. - ur_event_handle_t *phWaitEvents) { + uint32_t numEventsInWaitList, + /// [in][optional][range(0, numEventsInWaitList)] Pointer to a list of + /// events that must be complete before this command can be executed. + /// If nullptr, the numEventsInWaitList must be 0, indicating that this + /// command does not wait on any event to complete. + const ur_event_handle_t *phEventWaitList, + /// [out][optional][alloc] Event object that identifies this particular + /// command instance. + /// If phEventWaitList and phEvent are not nullptr, phEvent must not refer + /// to an element of the phEventWaitList array. + ur_event_handle_t *phEvent) { auto *dditable = *reinterpret_cast(hQueue); - auto *pfnAppendGraphExp = dditable->QueueExp.pfnAppendGraphExp; - if (nullptr == pfnAppendGraphExp) + auto *pfnGraphExp = dditable->EnqueueExp.pfnGraphExp; + if (nullptr == pfnGraphExp) return UR_RESULT_ERROR_UNINITIALIZED; // forward to device-platform - return pfnAppendGraphExp(hQueue, hGraph, hSignalEvent, numWaitEvents, - phWaitEvents); + return pfnGraphExp(hQueue, hGraph, numEventsInWaitList, phEventWaitList, + phEvent); } /////////////////////////////////////////////////////////////////////////////// @@ -6149,7 +6154,7 @@ __urdlllocal ur_result_t UR_APICALL urQueueIsGraphCaptureEnabledExp( /// [in] Native queue to query. ur_queue_handle_t hQueue, /// [out] Pointer to a boolean where the result will be stored. - bool *hResult) { + bool *pResult) { auto *dditable = *reinterpret_cast(hQueue); @@ -6159,7 +6164,7 @@ __urdlllocal ur_result_t UR_APICALL urQueueIsGraphCaptureEnabledExp( return UR_RESULT_ERROR_UNINITIALIZED; // forward to device-platform - return pfnIsGraphCaptureEnabledExp(hQueue, hResult); + return pfnIsGraphCaptureEnabledExp(hQueue, pResult); } /////////////////////////////////////////////////////////////////////////////// @@ -6168,7 +6173,7 @@ __urdlllocal ur_result_t UR_APICALL urGraphIsEmptyExp( /// [in] Handle of the graph to query. ur_exp_graph_handle_t hGraph, /// [out] Pointer to a boolean where the result will be stored. - bool *hResult) { + bool *pResult) { auto *dditable = *reinterpret_cast(hGraph); @@ -6177,7 +6182,7 @@ __urdlllocal ur_result_t UR_APICALL urGraphIsEmptyExp( return UR_RESULT_ERROR_UNINITIALIZED; // forward to device-platform - return pfnIsEmptyExp(hGraph, hResult); + return pfnIsEmptyExp(hGraph, pResult); } /////////////////////////////////////////////////////////////////////////////// @@ -6641,6 +6646,7 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetEnqueueExpProcAddrTable( pDdiTable->pfnTimestampRecordingExp = ur_loader::urEnqueueTimestampRecordingExp; pDdiTable->pfnNativeCommandExp = ur_loader::urEnqueueNativeCommandExp; + pDdiTable->pfnGraphExp = ur_loader::urEnqueueGraphExp; } else { // return pointers directly to platform's DDIs *pDdiTable = @@ -7362,7 +7368,6 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetQueueExpProcAddrTable( pDdiTable->pfnBeginCaptureIntoGraphExp = ur_loader::urQueueBeginCaptureIntoGraphExp; pDdiTable->pfnEndGraphCaptureExp = ur_loader::urQueueEndGraphCaptureExp; - pDdiTable->pfnAppendGraphExp = ur_loader::urQueueAppendGraphExp; pDdiTable->pfnIsGraphCaptureEnabledExp = ur_loader::urQueueIsGraphCaptureEnabledExp; } else { diff --git a/unified-runtime/source/loader/ur_libapi.cpp b/unified-runtime/source/loader/ur_libapi.cpp index 48366210af215..7e5d6977b619d 100644 --- a/unified-runtime/source/loader/ur_libapi.cpp +++ b/unified-runtime/source/loader/ur_libapi.cpp @@ -11018,9 +11018,6 @@ ur_result_t UR_APICALL urEnqueueNativeCommandExp( /////////////////////////////////////////////////////////////////////////////// /// @brief Create a new record & replay graph instance explicitly. /// -/// @details -/// - Create a new record & replay graph instance explicitly. -/// /// @returns /// - ::UR_RESULT_SUCCESS /// - ::UR_RESULT_ERROR_UNINITIALIZED @@ -11030,8 +11027,6 @@ ur_result_t UR_APICALL urEnqueueNativeCommandExp( /// + `NULL == hContext` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER /// + `NULL == phGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT ur_result_t UR_APICALL urGraphCreateExp( /// [in] Handle of the context object. ur_context_handle_t hContext, @@ -11047,7 +11042,7 @@ ur_result_t UR_APICALL urGraphCreateExp( } /////////////////////////////////////////////////////////////////////////////// -/// @brief Begin graph capture on the specified immediate queue. +/// @brief Begin graph capture on the specified queue. /// /// @returns /// - ::UR_RESULT_SUCCESS @@ -11056,8 +11051,6 @@ ur_result_t UR_APICALL urGraphCreateExp( /// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hQueue` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT ur_result_t UR_APICALL urQueueBeginGraphCaptureExp( /// [in] Handle of the queue on which to begin graph capture. ur_queue_handle_t hQueue) try { @@ -11073,7 +11066,7 @@ ur_result_t UR_APICALL urQueueBeginGraphCaptureExp( /////////////////////////////////////////////////////////////////////////////// /// @brief Begin capturing commands into an existing graph on the specified -/// immediate queue. +/// queue. /// /// @returns /// - ::UR_RESULT_SUCCESS @@ -11083,8 +11076,6 @@ ur_result_t UR_APICALL urQueueBeginGraphCaptureExp( /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hQueue` /// + `NULL == hGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT ur_result_t UR_APICALL urQueueBeginCaptureIntoGraphExp( /// [in] Handle of the queue on which to begin graph capture. ur_queue_handle_t hQueue, @@ -11101,7 +11092,7 @@ ur_result_t UR_APICALL urQueueBeginCaptureIntoGraphExp( } /////////////////////////////////////////////////////////////////////////////// -/// @brief End graph capture on the specified immediate queue. +/// @brief End graph capture on the specified queue. /// /// @returns /// - ::UR_RESULT_SUCCESS @@ -11112,8 +11103,6 @@ ur_result_t UR_APICALL urQueueBeginCaptureIntoGraphExp( /// + `NULL == hQueue` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER /// + `NULL == phGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT ur_result_t UR_APICALL urQueueEndGraphCaptureExp( /// [in] Handle of the queue on which to end graph capture. ur_queue_handle_t hQueue, @@ -11143,8 +11132,6 @@ ur_result_t UR_APICALL urQueueEndGraphCaptureExp( /// + `NULL == hGraph` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER /// + `NULL == phExecGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT ur_result_t UR_APICALL urGraphInstantiateGraphExp( /// [in] Handle of the recorded graph to instantiate. ur_exp_graph_handle_t hGraph, @@ -11161,7 +11148,7 @@ ur_result_t UR_APICALL urGraphInstantiateGraphExp( } /////////////////////////////////////////////////////////////////////////////// -/// @brief Append an executable graph to the queue. +/// @brief Enqueue an executable graph onto the queue. /// /// @returns /// - ::UR_RESULT_SUCCESS @@ -11171,27 +11158,33 @@ ur_result_t UR_APICALL urGraphInstantiateGraphExp( /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hQueue` /// + `NULL == hGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT -ur_result_t UR_APICALL urQueueAppendGraphExp( - /// [in] Handle of the queue to append the graph to. +/// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. +ur_result_t UR_APICALL urEnqueueGraphExp( + /// [in] Handle of the queue to which the graph will be enqueued. ur_queue_handle_t hQueue, - /// [in] Handle of the executable graph to append. + /// [in] Handle of the executable graph to be enqueued. ur_exp_executable_graph_handle_t hGraph, - /// [in][optional] Event to be signaled on completion. - ur_event_handle_t hSignalEvent, /// [in][optional] Number of events to wait on before executing. - uint32_t numWaitEvents, - /// [in][optional][range(0, numWaitEvents)] Handle of the events to wait - /// on before launching. - ur_event_handle_t *phWaitEvents) try { - auto pfnAppendGraphExp = - ur_lib::getContext()->urDdiTable.QueueExp.pfnAppendGraphExp; - if (nullptr == pfnAppendGraphExp) + uint32_t numEventsInWaitList, + /// [in][optional][range(0, numEventsInWaitList)] Pointer to a list of + /// events that must be complete before this command can be executed. + /// If nullptr, the numEventsInWaitList must be 0, indicating that this + /// command does not wait on any event to complete. + const ur_event_handle_t *phEventWaitList, + /// [out][optional][alloc] Event object that identifies this particular + /// command instance. + /// If phEventWaitList and phEvent are not nullptr, phEvent must not refer + /// to an element of the phEventWaitList array. + ur_event_handle_t *phEvent) try { + auto pfnGraphExp = ur_lib::getContext()->urDdiTable.EnqueueExp.pfnGraphExp; + if (nullptr == pfnGraphExp) return UR_RESULT_ERROR_UNINITIALIZED; - return pfnAppendGraphExp(hQueue, hGraph, hSignalEvent, numWaitEvents, - phWaitEvents); + return pfnGraphExp(hQueue, hGraph, numEventsInWaitList, phEventWaitList, + phEvent); } catch (...) { return exceptionToResult(std::current_exception()); } @@ -11208,8 +11201,6 @@ ur_result_t UR_APICALL urQueueAppendGraphExp( /// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT ur_result_t UR_APICALL urGraphDestroyExp( /// [in] Handle of the graph object to destroy. ur_exp_graph_handle_t hGraph) try { @@ -11233,8 +11224,6 @@ ur_result_t UR_APICALL urGraphDestroyExp( /// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hExecutableGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT ur_result_t UR_APICALL urGraphExecutableGraphDestroyExp( /// [in] Handle of the executable graph object to destroy. ur_exp_executable_graph_handle_t hExecutableGraph) try { @@ -11259,20 +11248,18 @@ ur_result_t UR_APICALL urGraphExecutableGraphDestroyExp( /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hQueue` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER -/// + `NULL == hResult` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT +/// + `NULL == pResult` ur_result_t UR_APICALL urQueueIsGraphCaptureEnabledExp( /// [in] Native queue to query. ur_queue_handle_t hQueue, /// [out] Pointer to a boolean where the result will be stored. - bool *hResult) try { + bool *pResult) try { auto pfnIsGraphCaptureEnabledExp = ur_lib::getContext()->urDdiTable.QueueExp.pfnIsGraphCaptureEnabledExp; if (nullptr == pfnIsGraphCaptureEnabledExp) return UR_RESULT_ERROR_UNINITIALIZED; - return pfnIsGraphCaptureEnabledExp(hQueue, hResult); + return pfnIsGraphCaptureEnabledExp(hQueue, pResult); } catch (...) { return exceptionToResult(std::current_exception()); } @@ -11288,19 +11275,18 @@ ur_result_t UR_APICALL urQueueIsGraphCaptureEnabledExp( /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hGraph` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER -/// + `NULL == hResult` -/// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY -/// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES +/// + `NULL == pResult` +/// - ::UR_RESULT_ERROR_INVALID_GRAPH ur_result_t UR_APICALL urGraphIsEmptyExp( /// [in] Handle of the graph to query. ur_exp_graph_handle_t hGraph, /// [out] Pointer to a boolean where the result will be stored. - bool *hResult) try { + bool *pResult) try { auto pfnIsEmptyExp = ur_lib::getContext()->urDdiTable.GraphExp.pfnIsEmptyExp; if (nullptr == pfnIsEmptyExp) return UR_RESULT_ERROR_UNINITIALIZED; - return pfnIsEmptyExp(hGraph, hResult); + return pfnIsEmptyExp(hGraph, pResult); } catch (...) { return exceptionToResult(std::current_exception()); } @@ -11317,9 +11303,6 @@ ur_result_t UR_APICALL urGraphIsEmptyExp( /// + `NULL == hGraph` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER /// + `NULL == filePath` -/// - ::UR_RESULT_ERROR_INVALID_VALUE -/// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY -/// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES ur_result_t UR_APICALL urGraphDumpContentsExp( /// [in] Handle of the graph to dump. ur_exp_graph_handle_t hGraph, diff --git a/unified-runtime/source/loader/ur_print.cpp b/unified-runtime/source/loader/ur_print.cpp index 3f254d6830de7..6fe53ce867ca3 100644 --- a/unified-runtime/source/loader/ur_print.cpp +++ b/unified-runtime/source/loader/ur_print.cpp @@ -1996,6 +1996,15 @@ ur_result_t urPrintEnqueueNativeCommandExpParams( return str_copy(&ss, buffer, buff_size, out_size); } +ur_result_t +urPrintEnqueueGraphExpParams(const struct ur_enqueue_graph_exp_params_t *params, + char *buffer, const size_t buff_size, + size_t *out_size) { + std::stringstream ss; + ss << params; + return str_copy(&ss, buffer, buff_size, out_size); +} + ur_result_t urPrintEventGetInfoParams(const struct ur_event_get_info_params_t *params, char *buffer, const size_t buff_size, @@ -2795,14 +2804,6 @@ ur_result_t urPrintQueueEndGraphCaptureExpParams( return str_copy(&ss, buffer, buff_size, out_size); } -ur_result_t urPrintQueueAppendGraphExpParams( - const struct ur_queue_append_graph_exp_params_t *params, char *buffer, - const size_t buff_size, size_t *out_size) { - std::stringstream ss; - ss << params; - return str_copy(&ss, buffer, buff_size, out_size); -} - ur_result_t urPrintQueueIsGraphCaptureEnabledExpParams( const struct ur_queue_is_graph_capture_enabled_exp_params_t *params, char *buffer, const size_t buff_size, size_t *out_size) { diff --git a/unified-runtime/source/ur_api.cpp b/unified-runtime/source/ur_api.cpp index d3460ba4879ab..6b76c3a1f306d 100644 --- a/unified-runtime/source/ur_api.cpp +++ b/unified-runtime/source/ur_api.cpp @@ -9588,9 +9588,6 @@ ur_result_t UR_APICALL urEnqueueNativeCommandExp( /////////////////////////////////////////////////////////////////////////////// /// @brief Create a new record & replay graph instance explicitly. /// -/// @details -/// - Create a new record & replay graph instance explicitly. -/// /// @returns /// - ::UR_RESULT_SUCCESS /// - ::UR_RESULT_ERROR_UNINITIALIZED @@ -9600,8 +9597,6 @@ ur_result_t UR_APICALL urEnqueueNativeCommandExp( /// + `NULL == hContext` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER /// + `NULL == phGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT ur_result_t UR_APICALL urGraphCreateExp( /// [in] Handle of the context object. ur_context_handle_t hContext, @@ -9612,7 +9607,7 @@ ur_result_t UR_APICALL urGraphCreateExp( } /////////////////////////////////////////////////////////////////////////////// -/// @brief Begin graph capture on the specified immediate queue. +/// @brief Begin graph capture on the specified queue. /// /// @returns /// - ::UR_RESULT_SUCCESS @@ -9621,8 +9616,6 @@ ur_result_t UR_APICALL urGraphCreateExp( /// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hQueue` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT ur_result_t UR_APICALL urQueueBeginGraphCaptureExp( /// [in] Handle of the queue on which to begin graph capture. ur_queue_handle_t hQueue) { @@ -9632,7 +9625,7 @@ ur_result_t UR_APICALL urQueueBeginGraphCaptureExp( /////////////////////////////////////////////////////////////////////////////// /// @brief Begin capturing commands into an existing graph on the specified -/// immediate queue. +/// queue. /// /// @returns /// - ::UR_RESULT_SUCCESS @@ -9642,8 +9635,6 @@ ur_result_t UR_APICALL urQueueBeginGraphCaptureExp( /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hQueue` /// + `NULL == hGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT ur_result_t UR_APICALL urQueueBeginCaptureIntoGraphExp( /// [in] Handle of the queue on which to begin graph capture. ur_queue_handle_t hQueue, @@ -9654,7 +9645,7 @@ ur_result_t UR_APICALL urQueueBeginCaptureIntoGraphExp( } /////////////////////////////////////////////////////////////////////////////// -/// @brief End graph capture on the specified immediate queue. +/// @brief End graph capture on the specified queue. /// /// @returns /// - ::UR_RESULT_SUCCESS @@ -9665,8 +9656,6 @@ ur_result_t UR_APICALL urQueueBeginCaptureIntoGraphExp( /// + `NULL == hQueue` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER /// + `NULL == phGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT ur_result_t UR_APICALL urQueueEndGraphCaptureExp( /// [in] Handle of the queue on which to end graph capture. ur_queue_handle_t hQueue, @@ -9690,8 +9679,6 @@ ur_result_t UR_APICALL urQueueEndGraphCaptureExp( /// + `NULL == hGraph` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER /// + `NULL == phExecGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT ur_result_t UR_APICALL urGraphInstantiateGraphExp( /// [in] Handle of the recorded graph to instantiate. ur_exp_graph_handle_t hGraph, @@ -9702,7 +9689,7 @@ ur_result_t UR_APICALL urGraphInstantiateGraphExp( } /////////////////////////////////////////////////////////////////////////////// -/// @brief Append an executable graph to the queue. +/// @brief Enqueue an executable graph onto the queue. /// /// @returns /// - ::UR_RESULT_SUCCESS @@ -9712,20 +9699,27 @@ ur_result_t UR_APICALL urGraphInstantiateGraphExp( /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hQueue` /// + `NULL == hGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT -ur_result_t UR_APICALL urQueueAppendGraphExp( - /// [in] Handle of the queue to append the graph to. +/// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. +ur_result_t UR_APICALL urEnqueueGraphExp( + /// [in] Handle of the queue to which the graph will be enqueued. ur_queue_handle_t hQueue, - /// [in] Handle of the executable graph to append. + /// [in] Handle of the executable graph to be enqueued. ur_exp_executable_graph_handle_t hGraph, - /// [in][optional] Event to be signaled on completion. - ur_event_handle_t hSignalEvent, /// [in][optional] Number of events to wait on before executing. - uint32_t numWaitEvents, - /// [in][optional][range(0, numWaitEvents)] Handle of the events to wait - /// on before launching. - ur_event_handle_t *phWaitEvents) { + uint32_t numEventsInWaitList, + /// [in][optional][range(0, numEventsInWaitList)] Pointer to a list of + /// events that must be complete before this command can be executed. + /// If nullptr, the numEventsInWaitList must be 0, indicating that this + /// command does not wait on any event to complete. + const ur_event_handle_t *phEventWaitList, + /// [out][optional][alloc] Event object that identifies this particular + /// command instance. + /// If phEventWaitList and phEvent are not nullptr, phEvent must not refer + /// to an element of the phEventWaitList array. + ur_event_handle_t *phEvent) { ur_result_t result = UR_RESULT_SUCCESS; return result; } @@ -9742,8 +9736,6 @@ ur_result_t UR_APICALL urQueueAppendGraphExp( /// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT ur_result_t UR_APICALL urGraphDestroyExp( /// [in] Handle of the graph object to destroy. ur_exp_graph_handle_t hGraph) { @@ -9762,8 +9754,6 @@ ur_result_t UR_APICALL urGraphDestroyExp( /// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hExecutableGraph` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT ur_result_t UR_APICALL urGraphExecutableGraphDestroyExp( /// [in] Handle of the executable graph object to destroy. ur_exp_executable_graph_handle_t hExecutableGraph) { @@ -9782,14 +9772,12 @@ ur_result_t UR_APICALL urGraphExecutableGraphDestroyExp( /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hQueue` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER -/// + `NULL == hResult` -/// - ::UR_RESULT_SUCCESS -/// - ::UR_RESULT_ERROR_INVALID_ARGUMENT +/// + `NULL == pResult` ur_result_t UR_APICALL urQueueIsGraphCaptureEnabledExp( /// [in] Native queue to query. ur_queue_handle_t hQueue, /// [out] Pointer to a boolean where the result will be stored. - bool *hResult) { + bool *pResult) { ur_result_t result = UR_RESULT_SUCCESS; return result; } @@ -9805,14 +9793,13 @@ ur_result_t UR_APICALL urQueueIsGraphCaptureEnabledExp( /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE /// + `NULL == hGraph` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER -/// + `NULL == hResult` -/// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY -/// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES +/// + `NULL == pResult` +/// - ::UR_RESULT_ERROR_INVALID_GRAPH ur_result_t UR_APICALL urGraphIsEmptyExp( /// [in] Handle of the graph to query. ur_exp_graph_handle_t hGraph, /// [out] Pointer to a boolean where the result will be stored. - bool *hResult) { + bool *pResult) { ur_result_t result = UR_RESULT_SUCCESS; return result; } @@ -9829,9 +9816,6 @@ ur_result_t UR_APICALL urGraphIsEmptyExp( /// + `NULL == hGraph` /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER /// + `NULL == filePath` -/// - ::UR_RESULT_ERROR_INVALID_VALUE -/// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY -/// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES ur_result_t UR_APICALL urGraphDumpContentsExp( /// [in] Handle of the graph to dump. ur_exp_graph_handle_t hGraph, From 041422fdad8143991d24c50305a8a4c26a87defb Mon Sep 17 00:00:00 2001 From: Nikita Kornev Date: Wed, 3 Dec 2025 16:20:22 +0100 Subject: [PATCH 075/105] [CI] Fix cts actions (#20808) remove leftover parentheses --- devops/actions/run-tests/cts/action.yml | 4 ++-- devops/actions/run-tests/windows/cts/action.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/devops/actions/run-tests/cts/action.yml b/devops/actions/run-tests/cts/action.yml index 67c27bfd11da5..6472fcca9edcc 100644 --- a/devops/actions/run-tests/cts/action.yml +++ b/devops/actions/run-tests/cts/action.yml @@ -95,7 +95,7 @@ runs: - name: SYCL CTS List devices # Proceed with execution even if the 'build' step did not succeed. - if: ${{ !cancelled()) && inputs.testing_mode != 'build-only' }} + if: ${{ !cancelled() && inputs.testing_mode != 'build-only' }} shell: bash env: ONEAPI_DEVICE_SELECTOR: ${{ inputs.target_devices }} @@ -129,7 +129,7 @@ runs: - name: Run SYCL CTS tests # Proceed with execution even if the previous two steps did not succeed. - if: ${{ !cancelled()) && inputs.testing_mode != 'build-only' }} + if: ${{ !cancelled() && inputs.testing_mode != 'build-only' }} env: ONEAPI_DEVICE_SELECTOR: ${{ inputs.target_devices }} # By-default GitHub actions execute the "run" shell script with -e option, diff --git a/devops/actions/run-tests/windows/cts/action.yml b/devops/actions/run-tests/windows/cts/action.yml index ac605bd4bacd9..83d753c4ae161 100644 --- a/devops/actions/run-tests/windows/cts/action.yml +++ b/devops/actions/run-tests/windows/cts/action.yml @@ -97,7 +97,7 @@ runs: - name: SYCL CTS List devices # Proceed with execution even if the 'build' step did not succeed. - if: ${{ !cancelled()) && inputs.testing_mode != 'build-only' }} + if: ${{ !cancelled() && inputs.testing_mode != 'build-only' }} shell: bash env: ONEAPI_DEVICE_SELECTOR: ${{ inputs.target_devices }} @@ -131,7 +131,7 @@ runs: - name: Run SYCL CTS tests # Proceed with execution even if the previous two steps did not succeed. - if: ${{ !cancelled()) && inputs.testing_mode != 'build-only' }} + if: ${{ !cancelled() && inputs.testing_mode != 'build-only' }} env: ONEAPI_DEVICE_SELECTOR: ${{ inputs.target_devices }} # By-default GitHub actions execute the "run" shell script with -e option, From 667c45a9d00fbbd500ef7500882aefff7eea5868 Mon Sep 17 00:00:00 2001 From: Andrei Elovikov Date: Wed, 3 Dec 2025 07:50:40 -0800 Subject: [PATCH 076/105] [NFCI][SYCL] Consolidate `[get|create]SyclObj[From]Impl` into `ImplUtils` (#20798) This way much less `friend` declarations are needed. --- sycl/include/sycl/accessor.hpp | 61 ++------------- sycl/include/sycl/accessor_image.hpp | 78 ++----------------- sycl/include/sycl/buffer.hpp | 5 +- sycl/include/sycl/context.hpp | 13 +--- sycl/include/sycl/detail/impl_utils.hpp | 75 ++++++++---------- sycl/include/sycl/device.hpp | 13 +--- sycl/include/sycl/event.hpp | 13 +--- .../ext/oneapi/bindless_images_memory.hpp | 5 +- .../experimental/async_alloc/memory_pool.hpp | 13 +--- .../experimental/graph/command_graph.hpp | 9 +-- .../ext/oneapi/experimental/graph/dynamic.hpp | 12 +-- .../experimental/graph/executable_graph.hpp | 6 +- .../experimental/graph/modifiable_graph.hpp | 11 +-- .../ext/oneapi/experimental/graph/node.hpp | 12 +-- .../ext/oneapi/virtual_mem/physical_mem.hpp | 10 +-- sycl/include/sycl/handler.hpp | 6 +- sycl/include/sycl/image.hpp | 33 ++------ sycl/include/sycl/kernel.hpp | 11 +-- sycl/include/sycl/kernel_bundle.hpp | 57 +++----------- sycl/include/sycl/platform.hpp | 12 +-- sycl/include/sycl/queue.hpp | 12 +-- sycl/include/sycl/sampler.hpp | 5 +- sycl/include/sycl/stream.hpp | 5 +- 23 files changed, 100 insertions(+), 377 deletions(-) diff --git a/sycl/include/sycl/accessor.hpp b/sycl/include/sycl/accessor.hpp index 3f48859aefed3..ad938b2685e07 100644 --- a/sycl/include/sycl/accessor.hpp +++ b/sycl/include/sycl/accessor.hpp @@ -516,6 +516,7 @@ using AccessorImplPtr = std::shared_ptr; class __SYCL_EXPORT AccessorBaseHost { protected: AccessorBaseHost(const AccessorImplPtr &Impl) : impl{Impl} {} + friend sycl::detail::ImplUtils; public: AccessorBaseHost(id<3> Offset, range<3> AccessRange, range<3> MemoryRange, @@ -550,16 +551,6 @@ class __SYCL_EXPORT AccessorBaseHost { void *getMemoryObject() const; - template - friend const decltype(Obj::impl) &getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - template friend class accessor; @@ -574,6 +565,8 @@ class LocalAccessorImplHost; using LocalAccessorImplPtr = std::shared_ptr; class __SYCL_EXPORT LocalAccessorBaseHost { + friend sycl::detail::ImplUtils; + protected: LocalAccessorBaseHost(const LocalAccessorImplPtr &Impl) : impl{Impl} {} @@ -589,17 +582,6 @@ class __SYCL_EXPORT LocalAccessorBaseHost { const property_list &getPropList() const; protected: - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - LocalAccessorImplPtr impl; }; } // namespace detail @@ -623,6 +605,8 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : public detail::OwnerLessBase< accessor> { + friend sycl::detail::ImplUtils; + protected: static_assert((AccessTarget == access::target::global_buffer || AccessTarget == access::target::constant_buffer || @@ -854,17 +838,6 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : friend class sycl::stream; friend class sycl::ext::intel::esimd::detail::AccessorPrivateProxy; - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - public: // 4.7.6.9.1. Interface for buffer command accessors // value_type is defined as const DataT for read_only accessors, DataT @@ -2249,17 +2222,6 @@ class __SYCL_SPECIAL_CLASS local_accessor_base : return Result; } - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - template friend class local_accessor; public: @@ -2474,6 +2436,7 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(local_accessor) local_accessor access::placeholder::false_t>, public detail::OwnerLessBase> { + friend sycl::detail::ImplUtils; using local_acc = local_accessor_base(), @@ -2647,6 +2610,8 @@ template { + friend sycl::detail::ImplUtils; + protected: using AccessorT = accessor; @@ -2671,16 +2636,6 @@ class __SYCL_EBO host_accessor host_accessor(const detail::AccessorImplPtr &Impl) : accessor{Impl} {} - - template - friend const decltype(Obj::impl) &getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); #endif // __SYCL_DEVICE_ONLY__ public: diff --git a/sycl/include/sycl/accessor_image.hpp b/sycl/include/sycl/accessor_image.hpp index db57a0943266b..be5eb3a697ae4 100644 --- a/sycl/include/sycl/accessor_image.hpp +++ b/sycl/include/sycl/accessor_image.hpp @@ -77,6 +77,7 @@ class __SYCL_EXPORT UnsampledImageAccessorBaseHost { protected: UnsampledImageAccessorBaseHost(const UnsampledImageAccessorImplPtr &Impl) : impl{Impl} {} + friend sycl::detail::ImplUtils; public: UnsampledImageAccessorBaseHost(sycl::range<3> Size, access_mode AccessMode, @@ -97,18 +98,6 @@ class __SYCL_EXPORT UnsampledImageAccessorBaseHost { const property_list &getPropList() const; protected: - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - UnsampledImageAccessorImplPtr impl; // The function references helper methods required by GDB pretty-printers @@ -151,6 +140,7 @@ class __SYCL_EXPORT SampledImageAccessorBaseHost { protected: SampledImageAccessorBaseHost(const SampledImageAccessorImplPtr &Impl) : impl{Impl} {} + friend sycl::detail::ImplUtils; public: SampledImageAccessorBaseHost(sycl::range<3> Size, void *SYCLMemObject, @@ -173,18 +163,6 @@ class __SYCL_EXPORT SampledImageAccessorBaseHost { const property_list &getPropList() const; protected: - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - SampledImageAccessorImplPtr impl; // The function references helper methods required by GDB pretty-printers @@ -789,6 +767,7 @@ class __SYCL_EBO unsampled_image_accessor : #endif // __SYCL_DEVICE_ONLY__ public detail::OwnerLessBase< unsampled_image_accessor> { + friend sycl::detail::ImplUtils; static_assert(std::is_same_v || std::is_same_v || std::is_same_v || std::is_same_v, @@ -940,18 +919,6 @@ class __SYCL_EBO unsampled_image_accessor : { (void)Impl; } - - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); }; template > { + friend sycl::detail::ImplUtils; static_assert(std::is_same_v || std::is_same_v || std::is_same_v || std::is_same_v, @@ -1082,18 +1050,6 @@ class __SYCL_EBO host_unsampled_image_accessor host_unsampled_image_accessor( const detail::UnsampledImageAccessorImplPtr &Impl) : base_class{Impl} {} - - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); }; template > { + friend sycl::detail::ImplUtils; static_assert(std::is_same_v || std::is_same_v || std::is_same_v || std::is_same_v, @@ -1231,18 +1188,6 @@ class __SYCL_EBO sampled_image_accessor : { (void)Impl; } - - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); }; template @@ -1250,6 +1195,7 @@ class __SYCL_EBO host_sampled_image_accessor : private detail::SampledImageAccessorBaseHost, public detail::OwnerLessBase< host_sampled_image_accessor> { + friend sycl::detail::ImplUtils; static_assert(std::is_same_v || std::is_same_v || std::is_same_v || std::is_same_v, @@ -1340,18 +1286,6 @@ class __SYCL_EBO host_sampled_image_accessor private: host_sampled_image_accessor(const detail::SampledImageAccessorImplPtr &Impl) : base_class{Impl} {} - - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); }; } // namespace _V1 diff --git a/sycl/include/sycl/buffer.hpp b/sycl/include/sycl/buffer.hpp index 4c0d9575c7807..da1814996c807 100644 --- a/sycl/include/sycl/buffer.hpp +++ b/sycl/include/sycl/buffer.hpp @@ -93,6 +93,8 @@ struct BufferInterop; // The non-template base for the sycl::buffer class class __SYCL_EXPORT buffer_plain { + friend sycl::detail::ImplUtils; + protected: buffer_plain(size_t SizeInBytes, size_t, const property_list &Props, std::unique_ptr Allocator); @@ -730,9 +732,6 @@ class buffer : public detail::buffer_plain, } private: - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); template friend class buffer; template backend_return_t; /// /// \ingroup sycl_api class __SYCL_EXPORT context : public detail::OwnerLessBase { + friend sycl::detail::ImplUtils; + public: /// Constructs a SYCL context instance using an instance of default_selector. /// @@ -255,17 +257,6 @@ class __SYCL_EXPORT context : public detail::OwnerLessBase { template friend auto get_native(const SyclT &Obj) -> backend_return_t; - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - const property_list &getPropList() const; }; diff --git a/sycl/include/sycl/detail/impl_utils.hpp b/sycl/include/sycl/detail/impl_utils.hpp index 00f61558a88d4..f5307b03d5d52 100644 --- a/sycl/include/sycl/detail/impl_utils.hpp +++ b/sycl/include/sycl/detail/impl_utils.hpp @@ -8,55 +8,48 @@ #pragma once -#include // for assert -#include // for hash -#include // for add_pointer_t -#include // for forward +#include +#include +#include +#include +#include namespace sycl { inline namespace _V1 { +class handler; namespace detail { +// Note! This class relies on the fact that all SYCL interface +// classes contain "impl" field that points to implementation object. "impl" +// field should be accessible from this class. +struct ImplUtils { + // Helper function for extracting implementation from SYCL's interface + // objects. + template + static const decltype(Obj::impl) &getSyclObjImpl(const Obj &SyclObj) { + assert(SyclObj.impl && "every constructor should create an impl"); + return SyclObj.impl; + } -// Helper function for extracting implementation from SYCL's interface objects. -// Note! This function relies on the fact that all SYCL interface classes -// contain "impl" field that points to implementation object. "impl" field -// should be accessible from this function. -// -// Note that due to a bug in MSVC compilers (including MSVC2019 v19.20), it -// may not recognize the usage of this function in friend member declarations -// if the template parameter name there is not equal to the name used here, -// i.e. 'Obj'. For example, using 'Obj' here and 'T' in such declaration -// would trigger that error in MSVC: -// template -// friend decltype(T::impl) detail::getSyclObjImpl(const T &SyclObject); -template -const decltype(Obj::impl) &getSyclObjImpl(const Obj &SyclObject) { - assert(SyclObject.impl && "every constructor should create an impl"); - return SyclObject.impl; -} - -// Helper function for creation SYCL interface objects from implementations. -// Note! These functions rely on the fact that all SYCL interface classes -// contain "impl" field that points to implementation object. "impl" field -// should be accessible from these functions. -template -T createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj) { - return T(std::forward(ImplObj)); -} + // Helper function for creation SYCL interface objects from implementations. + template + static SyclObject createSyclObjFromImpl(From &&from) { + if constexpr (std::is_same_v>>) + return SyclObject{from.shared_from_this()}; + else + return SyclObject{std::forward(from)}; + } +}; -template -T createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj) { - return T(ImplObj); +template +auto getSyclObjImpl(const Obj &SyclObj) + -> decltype(ImplUtils::getSyclObjImpl(SyclObj)) { + return ImplUtils::getSyclObjImpl(SyclObj); } -template -T createSyclObjFromImpl( - std::add_lvalue_reference_t()))>::element_type> - ImplRef) { - return createSyclObjFromImpl(ImplRef.shared_from_this()); +template +SyclObject createSyclObjFromImpl(From &&from) { + return ImplUtils::createSyclObjFromImpl(std::forward(from)); } template struct sycl_obj_hash { diff --git a/sycl/include/sycl/device.hpp b/sycl/include/sycl/device.hpp index 381f537df3c4d..a2836228704f5 100644 --- a/sycl/include/sycl/device.hpp +++ b/sycl/include/sycl/device.hpp @@ -66,6 +66,8 @@ enum class peer_access { /// \ingroup sycl_api class __SYCL_STANDALONE_DEBUG __SYCL_EXPORT device : public detail::OwnerLessBase { + friend sycl::detail::ImplUtils; + public: /// Constructs a SYCL device instance using the default device. device(); @@ -370,17 +372,6 @@ class __SYCL_STANDALONE_DEBUG __SYCL_EXPORT device ur_native_handle_t getNative() const; - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - template friend auto get_native(const SyclObjectT &Obj) -> backend_return_t; diff --git a/sycl/include/sycl/event.hpp b/sycl/include/sycl/event.hpp index 98e722e185bcc..0791ee0ecc650 100644 --- a/sycl/include/sycl/event.hpp +++ b/sycl/include/sycl/event.hpp @@ -42,6 +42,8 @@ class event_impl; /// /// \ingroup sycl_api class __SYCL_EXPORT event : public detail::OwnerLessBase { + friend sycl::detail::ImplUtils; + public: /// Constructs a ready SYCL event. /// @@ -144,17 +146,6 @@ class __SYCL_EXPORT event : public detail::OwnerLessBase { std::shared_ptr impl; - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - template friend auto get_native(const SyclObjectT &Obj) -> backend_return_t; diff --git a/sycl/include/sycl/ext/oneapi/bindless_images_memory.hpp b/sycl/include/sycl/ext/oneapi/bindless_images_memory.hpp index 88c5bdbb59c74..88e480684e4c1 100644 --- a/sycl/include/sycl/ext/oneapi/bindless_images_memory.hpp +++ b/sycl/include/sycl/ext/oneapi/bindless_images_memory.hpp @@ -58,6 +58,7 @@ class image_mem_impl { /// A class that represents image memory class __SYCL_EXPORT image_mem { + friend sycl::detail::ImplUtils; using raw_handle_type = image_mem_handle; public: @@ -93,10 +94,6 @@ class __SYCL_EXPORT image_mem { protected: std::shared_ptr impl; - - template - friend const decltype(Obj::impl) & - sycl::detail::getSyclObjImpl(const Obj &SyclObject); }; /// Direction to copy data from bindless image handle diff --git a/sycl/include/sycl/ext/oneapi/experimental/async_alloc/memory_pool.hpp b/sycl/include/sycl/ext/oneapi/experimental/async_alloc/memory_pool.hpp index d21c32a6945b4..3fc86d245229f 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/async_alloc/memory_pool.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/async_alloc/memory_pool.hpp @@ -24,6 +24,8 @@ class memory_pool_impl; /// Memory pool class __SYCL_EXPORT memory_pool { + friend sycl::detail::ImplUtils; + public: template - friend const decltype(Obj::impl) & - sycl::detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T sycl::detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T sycl::detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - template pool_properties stripProps(Properties props) { pool_properties poolProps{}; if constexpr (decltype(props)::template has_property()) { diff --git a/sycl/include/sycl/ext/oneapi/experimental/graph/command_graph.hpp b/sycl/include/sycl/ext/oneapi/experimental/graph/command_graph.hpp index b21336d608a98..29eb3e4bc9b72 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/graph/command_graph.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/graph/command_graph.hpp @@ -85,6 +85,8 @@ UnsupportedFeatureToString(UnsupportedGraphFeatures Feature) { /// Graph in the modifiable state. template class command_graph : public detail::modifiable_command_graph { + friend sycl::detail::ImplUtils; + public: /// Constructor. /// @param SyclContext Context to use for graph. @@ -113,13 +115,6 @@ class command_graph : public detail::modifiable_command_graph { /// @param Impl Detail implementation class to construct object with. command_graph(const std::shared_ptr &Impl) : modifiable_command_graph(Impl) {} - - template - friend T sycl::detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T sycl::detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); }; template <> diff --git a/sycl/include/sycl/ext/oneapi/experimental/graph/dynamic.hpp b/sycl/include/sycl/ext/oneapi/experimental/graph/dynamic.hpp index e617f2c6dc270..9bfc71e378ec0 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/graph/dynamic.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/graph/dynamic.hpp @@ -45,6 +45,8 @@ class dynamic_command_group_impl; } // namespace detail class __SYCL_EXPORT dynamic_command_group { + friend sycl::detail::ImplUtils; + public: dynamic_command_group( const command_graph &Graph, @@ -64,15 +66,13 @@ class __SYCL_EXPORT dynamic_command_group { } private: - template - friend const decltype(Obj::impl) & - sycl::detail::getSyclObjImpl(const Obj &SyclObject); - std::shared_ptr impl; }; namespace detail { class __SYCL_EXPORT dynamic_parameter_base { + friend sycl::detail::ImplUtils; + public: dynamic_parameter_base(size_t ParamSize, const void *Data); dynamic_parameter_base(); @@ -101,10 +101,6 @@ class __SYCL_EXPORT dynamic_parameter_base { void updateAccessor(const sycl::detail::AccessorBaseHost *Acc); std::shared_ptr impl; - - template - friend const decltype(Obj::impl) & - sycl::detail::getSyclObjImpl(const Obj &SyclObject); }; class __SYCL_EXPORT dynamic_work_group_memory_base diff --git a/sycl/include/sycl/ext/oneapi/experimental/graph/executable_graph.hpp b/sycl/include/sycl/ext/oneapi/experimental/graph/executable_graph.hpp index e5e90b4a90046..37d589b2be6cb 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/graph/executable_graph.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/graph/executable_graph.hpp @@ -33,6 +33,8 @@ class exec_graph_impl; // Templateless executable command-graph base class. class __SYCL_EXPORT executable_command_graph : public sycl::detail::OwnerLessBase { + friend sycl::detail::ImplUtils; + public: /// An executable command-graph is not user constructable. executable_command_graph() = delete; @@ -74,10 +76,6 @@ class __SYCL_EXPORT executable_command_graph const sycl::context &Ctx, const property_list &PropList = {}); - template - friend const decltype(Obj::impl) & - sycl::detail::getSyclObjImpl(const Obj &SyclObject); - /// Creates a backend representation of the graph in \p impl member variable. void finalizeImpl(); diff --git a/sycl/include/sycl/ext/oneapi/experimental/graph/modifiable_graph.hpp b/sycl/include/sycl/ext/oneapi/experimental/graph/modifiable_graph.hpp index 1b66edadf566b..8ffd73247192f 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/graph/modifiable_graph.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/graph/modifiable_graph.hpp @@ -41,6 +41,8 @@ class graph_impl; // Templateless modifiable command-graph base class. class __SYCL_EXPORT modifiable_command_graph : public sycl::detail::OwnerLessBase { + friend sycl::detail::ImplUtils; + public: /// Constructor. /// @param SyclContext Context to use for graph. @@ -198,15 +200,6 @@ class __SYCL_EXPORT modifiable_command_graph void print_graph(sycl::detail::string_view path, bool verbose = false) const; - template - friend const decltype(Obj::impl) & - sycl::detail::getSyclObjImpl(const Obj &SyclObject); - template - friend T sycl::detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T sycl::detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); std::shared_ptr impl; static void checkNodePropertiesAndThrow(const property_list &Properties); diff --git a/sycl/include/sycl/ext/oneapi/experimental/graph/node.hpp b/sycl/include/sycl/ext/oneapi/experimental/graph/node.hpp index 91c756e32049f..0978fa4b8eb23 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/graph/node.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/graph/node.hpp @@ -47,6 +47,8 @@ enum class node_type { /// Class representing a node in the graph, returned by command_graph::add(). class __SYCL_EXPORT node { + friend sycl::detail::ImplUtils; + public: node() = delete; @@ -81,16 +83,6 @@ class __SYCL_EXPORT node { private: node(const std::shared_ptr &Impl) : impl(Impl) {} - template - friend const decltype(Obj::impl) & - sycl::detail::getSyclObjImpl(const Obj &SyclObject); - template - friend T sycl::detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T sycl::detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - std::shared_ptr impl; }; diff --git a/sycl/include/sycl/ext/oneapi/virtual_mem/physical_mem.hpp b/sycl/include/sycl/ext/oneapi/virtual_mem/physical_mem.hpp index c7338474e50ac..aecef93473911 100644 --- a/sycl/include/sycl/ext/oneapi/virtual_mem/physical_mem.hpp +++ b/sycl/include/sycl/ext/oneapi/virtual_mem/physical_mem.hpp @@ -28,6 +28,8 @@ enum class address_access_mode : char { none = 0, read = 1, read_write = 2 }; class __SYCL_EXPORT physical_mem : public sycl::detail::OwnerLessBase { + friend sycl::detail::ImplUtils; + public: physical_mem(const device &SyclDevice, const context &SyclContext, size_t NumBytes); @@ -57,14 +59,6 @@ class __SYCL_EXPORT physical_mem private: std::shared_ptr impl; - - template - friend const decltype(Obj::impl) & - sycl::detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T sycl::detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); }; } // namespace ext::oneapi::experimental diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index f73d362123272..2217e3cade53b 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -419,6 +419,8 @@ template bool range_size_fits_in_size_t(const range &r) { /// /// \ingroup sycl_api class __SYCL_EXPORT handler { + friend sycl::detail::ImplUtils; + private: /// Constructs SYCL handler from the pre-constructed stack-allocated /// `handler_impl` (not enforced, but meaningless to do a heap allocation @@ -2865,10 +2867,6 @@ class __SYCL_EXPORT handler { class _propertiesT, class> friend class ext::intel::experimental::pipe; - template - friend const decltype(Obj::impl) & - sycl::detail::getSyclObjImpl(const Obj &SyclObject); - /// Read from a host pipe given a host address and /// \param Name name of the host pipe to be passed into lower level runtime /// \param Ptr host pointer of host pipe as identified by address of its const diff --git a/sycl/include/sycl/image.hpp b/sycl/include/sycl/image.hpp index cff83ee1efd0b..a2dbff58c4af7 100644 --- a/sycl/include/sycl/image.hpp +++ b/sycl/include/sycl/image.hpp @@ -170,6 +170,7 @@ inline image_channel_order FormatChannelOrder(image_format Format) { class __SYCL_EXPORT image_plain { protected: image_plain(const std::shared_ptr &Impl) : impl{Impl} {} + friend sycl::detail::ImplUtils; image_plain(image_channel_order Order, image_channel_type Type, const range<3> &Range, @@ -347,6 +348,7 @@ class image_common : public image_plain { template class unsampled_image_common : public image_common { private: + friend sycl::detail::ImplUtils; using common_base = typename detail::image_common; protected: @@ -427,6 +429,7 @@ class unsampled_image_common : public image_common { template class image : public detail::unsampled_image_common { private: + friend sycl::detail::ImplUtils; using common_base = typename detail::unsampled_image_common; @@ -694,10 +697,6 @@ class image : public detail::unsampled_image_common { make_image(const backend_input_t> &BackendObject, const context &TargetContext, event AvailableEvent); - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - template @@ -713,6 +712,7 @@ class unsampled_image : public detail::unsampled_image_common, public detail::OwnerLessBase> { private: + friend sycl::detail::ImplUtils; using common_base = typename detail::unsampled_image_common; @@ -981,18 +981,6 @@ class unsampled_image } private: - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - template friend class host_unsampled_image_accessor; @@ -1006,6 +994,7 @@ class sampled_image : public detail::image_common, public detail::OwnerLessBase> { private: + friend sycl::detail::ImplUtils; using common_base = typename detail::image_common; sampled_image(const std::shared_ptr &Impl) @@ -1122,18 +1111,6 @@ class sampled_image } private: - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - template friend class host_sampled_image_accessor; template diff --git a/sycl/include/sycl/kernel.hpp b/sycl/include/sycl/kernel.hpp index bb44daf12b9c3..42e5c00dfec00 100644 --- a/sycl/include/sycl/kernel.hpp +++ b/sycl/include/sycl/kernel.hpp @@ -67,6 +67,8 @@ template struct get_kernel_name_t { /// /// \ingroup sycl_api class __SYCL_EXPORT kernel : public detail::OwnerLessBase { + friend sycl::detail::ImplUtils; + public: /// Constructs a SYCL kernel instance from an OpenCL cl_kernel /// @@ -250,15 +252,6 @@ class __SYCL_EXPORT kernel : public detail::OwnerLessBase { std::shared_ptr impl; - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); template friend auto get_native(const SyclObjectT &Obj) -> backend_return_t; diff --git a/sycl/include/sycl/kernel_bundle.hpp b/sycl/include/sycl/kernel_bundle.hpp index 08d0428216300..b4af63c854b08 100644 --- a/sycl/include/sycl/kernel_bundle.hpp +++ b/sycl/include/sycl/kernel_bundle.hpp @@ -67,6 +67,8 @@ std::enable_if_t, kernel_id> get_kernel_id(); /// /// \ingroup sycl_api class __SYCL_EXPORT kernel_id : public detail::OwnerLessBase { + friend sycl::detail::ImplUtils; + public: kernel_id() = delete; @@ -84,18 +86,6 @@ class __SYCL_EXPORT kernel_id : public detail::OwnerLessBase { : impl(std::move(Impl)) {} std::shared_ptr impl; - - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); }; namespace detail { @@ -104,6 +94,8 @@ class device_image_impl; // The class is used as a base for device_image for "untemplating" public // methods. class __SYCL_EXPORT device_image_plain { + friend sycl::detail::ImplUtils; + public: device_image_plain(const std::shared_ptr &Impl) : impl(Impl) {} @@ -133,18 +125,6 @@ class __SYCL_EXPORT device_image_plain { std::shared_ptr impl; - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - backend ext_oneapi_get_backend_impl() const noexcept; #if (!defined(_HAS_STD_BYTE) || _HAS_STD_BYTE != 0) @@ -158,6 +138,8 @@ class __SYCL_EXPORT device_image_plain { template class device_image : public detail::device_image_plain, public detail::OwnerLessBase> { + friend sycl::detail::ImplUtils; + public: device_image() = delete; @@ -201,18 +183,6 @@ class device_image : public detail::device_image_plain, device_image(std::shared_ptr Impl) : device_image_plain(std::move(Impl)) {} - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - // To allow calling device_image_plain::getNative() template friend class kernel_bundle; }; @@ -223,6 +193,8 @@ using KernelBundleImplPtr = std::shared_ptr; // The class is used as a base for kernel_bundle to "untemplate" it's methods class __SYCL_EXPORT kernel_bundle_plain { + friend sycl::detail::ImplUtils; + public: kernel_bundle_plain(const detail::KernelBundleImplPtr &Impl) : impl(std::move(Impl)) {} @@ -324,6 +296,8 @@ class __SYCL_EXPORT kernel_bundle_plain { template class kernel_bundle : public detail::kernel_bundle_plain, public detail::OwnerLessBase> { + friend sycl::detail::ImplUtils; + public: using device_image_iterator = const device_image *; @@ -583,17 +557,6 @@ class kernel_bundle : public detail::kernel_bundle_plain, kernel_bundle(detail::KernelBundleImplPtr Impl) : kernel_bundle_plain(std::move(Impl)) {} - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - template friend auto get_native(const kernel_bundle &Obj) -> backend_return_t>; diff --git a/sycl/include/sycl/platform.hpp b/sycl/include/sycl/platform.hpp index ccb1e795610cf..6197daa74427a 100644 --- a/sycl/include/sycl/platform.hpp +++ b/sycl/include/sycl/platform.hpp @@ -63,6 +63,8 @@ class filter_selector; /// /// \ingroup sycl_api class __SYCL_EXPORT platform : public detail::OwnerLessBase { + friend sycl::detail::ImplUtils; + public: /// Constructs a SYCL platform using the default device. platform(); @@ -210,16 +212,6 @@ class __SYCL_EXPORT platform : public detail::OwnerLessBase { platform(const device &Device); - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - template friend auto get_native(const SyclObjectT &Obj) -> backend_return_t; diff --git a/sycl/include/sycl/queue.hpp b/sycl/include/sycl/queue.hpp index 459bb522a8553..1e02a5fd930bc 100644 --- a/sycl/include/sycl/queue.hpp +++ b/sycl/include/sycl/queue.hpp @@ -295,6 +295,8 @@ event submit_with_event_impl(const queue &Q, PropertiesT Props, /// /// \ingroup sycl_api class __SYCL_EXPORT queue : public detail::OwnerLessBase { + friend sycl::detail::ImplUtils; + public: /// Constructs a SYCL queue instance using the device returned by an instance /// of default_selector. @@ -3751,16 +3753,6 @@ class __SYCL_EXPORT queue : public detail::OwnerLessBase { std::shared_ptr impl; queue(std::shared_ptr impl) : impl(impl) {} - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); - template - friend T detail::createSyclObjFromImpl( - std::add_rvalue_reference_t ImplObj); - template - friend T detail::createSyclObjFromImpl( - std::add_lvalue_reference_t ImplObj); - template friend auto get_native(const SyclObjectT &Obj) -> backend_return_t; diff --git a/sycl/include/sycl/sampler.hpp b/sycl/include/sycl/sampler.hpp index 6dd69ff4ac734..feb3699976439 100644 --- a/sycl/include/sycl/sampler.hpp +++ b/sycl/include/sycl/sampler.hpp @@ -63,6 +63,8 @@ class sampler_impl; /// /// \ingroup sycl_api class __SYCL_EXPORT __SYCL_SPECIAL_CLASS __SYCL_TYPE(sampler) sampler { + friend sycl::detail::ImplUtils; + public: sampler(coordinate_normalization_mode normalizationMode, addressing_mode addressingMode, filtering_mode filteringMode, @@ -119,9 +121,6 @@ class __SYCL_EXPORT __SYCL_SPECIAL_CLASS __SYCL_TYPE(sampler) sampler { private: #else std::shared_ptr impl; - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); #endif template { + friend sycl::detail::ImplUtils; + private: #ifndef __SYCL_DEVICE_ONLY__ // Constructor for recreating a stream. @@ -909,9 +911,6 @@ class __SYCL_EXPORT __SYCL_SPECIAL_CLASS __SYCL_TYPE(stream) stream char padding[sizeof(std::shared_ptr)]; #else std::shared_ptr impl; - template - friend const decltype(Obj::impl) & - detail::getSyclObjImpl(const Obj &SyclObject); #endif // NOTE: Some members are required for reconstructing the stream, but are not From 7f105d17ad305ea6abd1a757149cb34217fe740d Mon Sep 17 00:00:00 2001 From: Artur Gainullin Date: Wed, 3 Dec 2025 10:10:17 -0800 Subject: [PATCH 077/105] [SYCL][ABI-break] Remove deprecated variadic printf implementation (#20800) Co-authored-by: Steffen Larsen steffen.larsen@intel.com --- sycl/include/sycl/__spirv/spirv_ops.hpp | 14 ------- sycl/test-e2e/Basic/built-ins.cpp | 12 ------ sycl/test-e2e/DeviceLib/built-ins/printf.cpp | 16 -------- sycl/test-e2e/ESIMD/printf.cpp | 16 -------- ...nc_alloc_device_memory_reuse_zero_init.cpp | 2 - sycl/test-e2e/Printf/float.cpp | 15 ------- sycl/test/extensions/experimental-printf.cpp | 40 ------------------- sycl/test/warnings/variadic_ocl_printf.cpp | 5 --- 8 files changed, 120 deletions(-) delete mode 100644 sycl/test/extensions/experimental-printf.cpp delete mode 100644 sycl/test/warnings/variadic_ocl_printf.cpp diff --git a/sycl/include/sycl/__spirv/spirv_ops.hpp b/sycl/include/sycl/__spirv/spirv_ops.hpp index ad0c7a31d3519..4f68506aaca03 100644 --- a/sycl/include/sycl/__spirv/spirv_ops.hpp +++ b/sycl/include/sycl/__spirv/spirv_ops.hpp @@ -838,19 +838,6 @@ __clc_BarrierTestWait(int64_t *state, int64_t arrival) noexcept; __SYCL_CONVERGENT__ extern __DPCPP_SYCL_EXTERNAL __SYCL_EXPORT void __clc_BarrierArriveAndWait(int64_t *state) noexcept; -#if defined(__SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__) && \ - !defined(__INTEL_PREVIEW_BREAKING_CHANGES) -#if defined(__clang__) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wpedantic" -#warning \ - "__SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ is deprecated and will be removed in a future release." -#pragma clang diagnostic pop -#endif -extern __DPCPP_SYCL_EXTERNAL int -__spirv_ocl_printf(const __attribute__((opencl_constant)) char *Format, ...); -extern __DPCPP_SYCL_EXTERNAL int __spirv_ocl_printf(const char *Format, ...); -#else template extern __DPCPP_SYCL_EXTERNAL int __spirv_ocl_printf(const __attribute__((opencl_constant)) char *Format, @@ -858,7 +845,6 @@ __spirv_ocl_printf(const __attribute__((opencl_constant)) char *Format, template extern __DPCPP_SYCL_EXTERNAL int __spirv_ocl_printf(const char *Format, Args... args); -#endif // Native builtin extension diff --git a/sycl/test-e2e/Basic/built-ins.cpp b/sycl/test-e2e/Basic/built-ins.cpp index 5ec26787c676a..2984ba302a9d4 100644 --- a/sycl/test-e2e/Basic/built-ins.cpp +++ b/sycl/test-e2e/Basic/built-ins.cpp @@ -1,9 +1,6 @@ // RUN: %{build} -o %t.out // RUN: %{run} %t.out | FileCheck %s -// RUN: %{build} -D__SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ -Wno-#warnings -o %t_var.out -// RUN: %{run} %t_var.out | FileCheck %s - // Hits an assertion and kernel page fault with AMD: // UNSUPPORTED: target-amd // UNSUPPORTED-TRACKER: https://github.com/intel/llvm/issues/14404 @@ -28,15 +25,6 @@ static const CONSTANT char format[] = "Hello, World! %d %f\n"; int main() { s::queue q{}; -#ifdef __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ - if (!q.get_device().has(sycl::aspect::fp64)) { - std::cout << "Test with __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ defined is " - "skipped because the device did not have fp64." - << std::endl; - return 0; - } -#endif - // Test printf q.submit([&](s::handler &CGH) { CGH.single_task([=]() { diff --git a/sycl/test-e2e/DeviceLib/built-ins/printf.cpp b/sycl/test-e2e/DeviceLib/built-ins/printf.cpp index a0e7bff0d939e..e4608f7fd483e 100644 --- a/sycl/test-e2e/DeviceLib/built-ins/printf.cpp +++ b/sycl/test-e2e/DeviceLib/built-ins/printf.cpp @@ -4,9 +4,6 @@ // // RUN: %{build} -o %t.out // RUN: %{run} %t.out | FileCheck %s -// -// RUN: %{build} -fsycl-device-code-split=per_kernel -D__SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ -Wno-#warnings -o %t_var.out -// RUN: %{run} %t_var.out | FileCheck %s #include #include @@ -98,13 +95,6 @@ int main() { Queue.wait(); } -#ifdef __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ - // Currently printf will promote floating point values to doubles. - // __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ changes the behavior to use - // a variadic function, so if it is defined it will promote the floating - // point arguments. - if (Queue.get_device().has(sycl::aspect::fp64)) -#endif // __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ { Queue.submit([&](handler &CGH) { CGH.single_task([=]() { @@ -120,12 +110,6 @@ int main() { }); Queue.wait(); } -#ifdef __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ - else { - std::cout << "Skipped floating point test." << std::endl; - std::cout << "Skipped floating point test." << std::endl; - } -#endif // __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ // CHECK-NEXT: {{(33.4|Skipped floating point test.)}} // CHECK-NEXT: {{(-33.4|Skipped floating point test.)}} diff --git a/sycl/test-e2e/ESIMD/printf.cpp b/sycl/test-e2e/ESIMD/printf.cpp index 8f828b5e69f81..b15abe6128d26 100644 --- a/sycl/test-e2e/ESIMD/printf.cpp +++ b/sycl/test-e2e/ESIMD/printf.cpp @@ -10,9 +10,6 @@ // RUN: %{build} -o %t.out // RUN: %{run} %t.out | FileCheck %s // -// RUN: %{build} -fsycl-device-code-split=per_kernel -D__SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ -Wno-#warnings -o %t_var.out -// RUN: %{run} %t_var.out | FileCheck %s -// //===----------------------------------------------------------------------===// // // The test checks that ESIMD kernels support printf functionality. @@ -67,13 +64,6 @@ int main() { Queue.wait(); } -#ifdef __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ - // Currently printf will promote floating point values to doubles. - // __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ changes the behavior to use - // a variadic function, so if it is defined it will promote the floating - // point arguments. - if (Queue.get_device().has(sycl::aspect::fp64)) -#endif // __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ { Queue.submit([&](handler &CGH) { CGH.single_task([=]() { @@ -89,12 +79,6 @@ int main() { }); Queue.wait(); } -#ifdef __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ - else { - std::cout << "Skipped floating point test." << std::endl; - std::cout << "Skipped floating point test." << std::endl; - } -#endif // __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ // CHECK-NEXT: {{(33.4|Skipped floating point test.)}} // CHECK-NEXT: {{(-33.4|Skipped floating point test.)}} diff --git a/sycl/test-e2e/Graph/AsyncAlloc/Inputs/async_alloc_device_memory_reuse_zero_init.cpp b/sycl/test-e2e/Graph/AsyncAlloc/Inputs/async_alloc_device_memory_reuse_zero_init.cpp index e4ec248d16d43..d5c7deabc79e8 100644 --- a/sycl/test-e2e/Graph/AsyncAlloc/Inputs/async_alloc_device_memory_reuse_zero_init.cpp +++ b/sycl/test-e2e/Graph/AsyncAlloc/Inputs/async_alloc_device_memory_reuse_zero_init.cpp @@ -9,8 +9,6 @@ #include #include -#define __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ - using T = int; void add_nodes_to_graph( exp_ext::command_graph &Graph, diff --git a/sycl/test-e2e/Printf/float.cpp b/sycl/test-e2e/Printf/float.cpp index 624a5977bc707..1fae377529cc4 100644 --- a/sycl/test-e2e/Printf/float.cpp +++ b/sycl/test-e2e/Printf/float.cpp @@ -8,9 +8,6 @@ // // RUN: %{build} -o %t.out // RUN: %{run} %t.out | FileCheck %s -// FIXME: Remove dedicated variadic printf testing once the option is removed. -// RUN: %{build} -o %t.nonvar.out -D__SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ -Wno-#warnings -// RUN: %{run} %t.nonvar.out | FileCheck %s // FIXME: Remove dedicated constant address space testing once generic AS // support is considered stable. // RUN: %{build} -o %t.constant.out -DTEST_CONSTANT_AS @@ -46,18 +43,6 @@ class FloatTest; int main() { queue q; - -#ifdef __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ - if (!q.get_device().has(aspect::fp64)) { - std::cout << "Skipping the actual test due to variadic argument promotion. " - "Printing hard-coded output from the host side:\n" - << "3.140000e+00, 3.140000E+00\n" - "0x1.91eb86p+1, 0X1.91EB86P+1\n" - "3.14, 3.14" - << std::endl; - return 0; - } -#endif // __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ q.submit([](handler &cgh) { cgh.single_task([]() { do_float_test(); }); }); diff --git a/sycl/test/extensions/experimental-printf.cpp b/sycl/test/extensions/experimental-printf.cpp deleted file mode 100644 index 3efc00bbca2c9..0000000000000 --- a/sycl/test/extensions/experimental-printf.cpp +++ /dev/null @@ -1,40 +0,0 @@ -// This test is intended to check that internal -// __SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ works as expected, i.e. we can -// see printf ExtInst regardless of the macro presence and that argument -// promotion is disabled if the macro is present. -// -// RUN: %clangxx -fsycl -fsycl-device-only -fno-sycl-use-bitcode %s -o %t.spv -// RUN: llvm-spirv -to-text %t.spv -o %t.spt -// RUN: FileCheck %s --check-prefixes CHECK,CHECK-FLOAT < %t.spt -// -// RUN: %clangxx -fsycl -fsycl-device-only -fno-sycl-use-bitcode -D__SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ %s -o %t.spv -// RUN: llvm-spirv -to-text %t.spv -o %t.spt -// RUN: FileCheck %s --check-prefixes CHECK,CHECK-DOUBLE < %t.spt - -// CHECK-FLOAT: TypeFloat [[#TYPE:]] 32 -// CHECK-DOUBLE: TypeFloat [[#TYPE:]] 64 -// CHECK: Constant [[#TYPE]] [[#CONST:]] -// CHECK: ExtInst [[#]] [[#]] [[#]] printf [[#]] [[#CONST]] - -#include - -#ifdef __SYCL_DEVICE_ONLY__ -#define __SYCL_CONSTANT_AS __attribute__((opencl_constant)) -#else -#define __SYCL_CONSTANT_AS -#endif - -const __SYCL_CONSTANT_AS char fmt[] = "Hello, World! %f\n"; - -int main() { - sycl::queue q; - - q.submit([&](sycl::handler &cgh) { - cgh.single_task([=]() { - float f = 3.14; - sycl::ext::oneapi::experimental::printf(fmt, f); - }); - }); - - return 0; -} diff --git a/sycl/test/warnings/variadic_ocl_printf.cpp b/sycl/test/warnings/variadic_ocl_printf.cpp deleted file mode 100644 index 74caff358136d..0000000000000 --- a/sycl/test/warnings/variadic_ocl_printf.cpp +++ /dev/null @@ -1,5 +0,0 @@ -// RUN: %clangxx -D__SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ -fsycl -fsycl-device-only -fsyntax-only -Xclang -verify -Xclang -verify-ignore-unexpected=note %s - -// expected-warning@*:* {{__SYCL_USE_VARIADIC_SPIRV_OCL_PRINTF__ is deprecated and will be removed in a future release.}} -#include - From 7f1b981225446de325b2fa44be25f76b2f72ed80 Mon Sep 17 00:00:00 2001 From: Nick Sarnie Date: Thu, 4 Dec 2025 04:44:22 +0900 Subject: [PATCH 078/105] Revert "[E2E][BINDLESS] reenable copy_subregion_2D.cpp" (#20819) Reverts intel/llvm#20678 --- sycl/test-e2e/bindless_images/copies/copy_subregion_2D.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sycl/test-e2e/bindless_images/copies/copy_subregion_2D.cpp b/sycl/test-e2e/bindless_images/copies/copy_subregion_2D.cpp index 541420a97dc26..a9deb5e336d8a 100644 --- a/sycl/test-e2e/bindless_images/copies/copy_subregion_2D.cpp +++ b/sycl/test-e2e/bindless_images/copies/copy_subregion_2D.cpp @@ -1,5 +1,5 @@ // REQUIRES: aspect-ext_oneapi_bindless_images -// UNSUPPORTED: gpu-intel-dg2 +// UNSUPPORTED: gpu // UNSUPPORTED-INTENDED: sporadic failure in CI // https://github.com/intel/llvm/issues/20006 // XFAIL: linux && arch-intel_gpu_acm_g10 && level_zero_v2_adapter From 60981f764e84dd01fea76466138c8a837bd9bdaa Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Wed, 3 Dec 2025 11:45:19 -0800 Subject: [PATCH 079/105] Fix more pre-commit failures --- sycl/source/detail/scheduler/commands.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sycl/source/detail/scheduler/commands.cpp b/sycl/source/detail/scheduler/commands.cpp index 0fb0ba2e72369..2664a45e94e83 100644 --- a/sycl/source/detail/scheduler/commands.cpp +++ b/sycl/source/detail/scheduler/commands.cpp @@ -2308,8 +2308,16 @@ static void GetUrArgsBasedOnType( 0, {}}; switch (Arg.MType) { - case kernel_param_kind_t::kind_struct_with_special_type: + case kernel_param_kind_t::kind_struct_with_special_type: { + ur_exp_kernel_arg_type_t Type; + Type = UR_EXP_KERNEL_ARG_TYPE_VALUE; + ur_exp_kernel_arg_value_t Value = {}; + Value.value = {Arg.MPtr}; + UrArg.type = Type; + UrArg.size = static_cast(Arg.MSize); + UrArg.value = Value; break; + } case kernel_param_kind_t::kind_dynamic_work_group_memory: break; case kernel_param_kind_t::kind_work_group_memory: From b4aedf02b2f2efbba5ed8de145d9119aeb78e712 Mon Sep 17 00:00:00 2001 From: Artur Gainullin Date: Wed, 3 Dec 2025 14:58:24 -0800 Subject: [PATCH 080/105] [SYCL][ABI-break] Cleanup `get_info` ABI entry points (#20770) We are in the abi breaking window, so we can cleanup these entries. Co-authored-by: Steffen Larsen steffen.larsen@intel.com --- sycl/source/detail/device_impl.cpp | 56 ---------- sycl/source/detail/device_impl.hpp | 130 ++++-------------------- sycl/source/device.cpp | 9 +- sycl/test/abi/sycl_symbols_linux.dump | 41 -------- sycl/test/abi/sycl_symbols_windows.dump | 41 -------- 5 files changed, 21 insertions(+), 256 deletions(-) diff --git a/sycl/source/detail/device_impl.cpp b/sycl/source/detail/device_impl.cpp index 6a9736d3af32c..5739b85ba4d91 100644 --- a/sycl/source/detail/device_impl.cpp +++ b/sycl/source/detail/device_impl.cpp @@ -467,62 +467,6 @@ device_impl::getImmediateProgressGuarantee( return forward_progress_guarantee::weakly_parallel; } -#ifndef __INTEL_PREVIEW_BREAKING_CHANGES -#define EXPORT_GET_INFO(PARAM) \ - template <> \ - __SYCL_EXPORT PARAM::return_type device_impl::get_info() const { \ - return get_info_abi_workaround(); \ - } - -// clang-format off -EXPORT_GET_INFO(ext::intel::info::device::device_id) -EXPORT_GET_INFO(ext::intel::info::device::pci_address) -EXPORT_GET_INFO(ext::intel::info::device::gpu_eu_count) -EXPORT_GET_INFO(ext::intel::info::device::gpu_eu_simd_width) -EXPORT_GET_INFO(ext::intel::info::device::gpu_slices) -EXPORT_GET_INFO(ext::intel::info::device::gpu_subslices_per_slice) -EXPORT_GET_INFO(ext::intel::info::device::gpu_eu_count_per_subslice) -EXPORT_GET_INFO(ext::intel::info::device::gpu_hw_threads_per_eu) -EXPORT_GET_INFO(ext::intel::info::device::max_mem_bandwidth) -EXPORT_GET_INFO(ext::intel::info::device::uuid) -EXPORT_GET_INFO(ext::intel::info::device::free_memory) -EXPORT_GET_INFO(ext::intel::info::device::memory_clock_rate) -EXPORT_GET_INFO(ext::intel::info::device::memory_bus_width) -EXPORT_GET_INFO(ext::intel::info::device::max_compute_queue_indices) -EXPORT_GET_INFO(ext::intel::esimd::info::device::has_2d_block_io_support) -EXPORT_GET_INFO(ext::intel::info::device::current_clock_throttle_reasons) -EXPORT_GET_INFO(ext::intel::info::device::fan_speed) -EXPORT_GET_INFO(ext::intel::info::device::min_power_limit) -EXPORT_GET_INFO(ext::intel::info::device::max_power_limit) - -EXPORT_GET_INFO(ext::codeplay::experimental::info::device::supports_fusion) -EXPORT_GET_INFO(ext::codeplay::experimental::info::device::max_registers_per_work_group) - -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::max_global_work_groups) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::max_work_groups<1>) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::max_work_groups<2>) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::max_work_groups<3>) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::work_group_progress_capabilities) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::sub_group_progress_capabilities) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::sub_group_progress_capabilities) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::work_item_progress_capabilities) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::work_item_progress_capabilities) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::work_item_progress_capabilities) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::architecture) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::matrix_combinations) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::image_row_pitch_align) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::max_image_linear_row_pitch) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::max_image_linear_width) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::max_image_linear_height) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::mipmap_max_anisotropy) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::component_devices) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::composite_device) -EXPORT_GET_INFO(ext::oneapi::info::device::num_compute_units) -// clang-format on - -#undef EXPORT_GET_INFO -#endif - } // namespace detail } // namespace _V1 } // namespace sycl diff --git a/sycl/source/detail/device_impl.hpp b/sycl/source/detail/device_impl.hpp index 1e3b735bf86f4..020aae35bb9a6 100644 --- a/sycl/source/detail/device_impl.hpp +++ b/sycl/source/detail/device_impl.hpp @@ -379,13 +379,7 @@ class device_impl : public std::enable_shared_from_this { struct InfoInitializer { template static void init(device_impl &device, typename Desc::return_type &value) { - value = device. -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES - get_info -#else - get_info_abi_workaround -#endif - (); + value = device.get_info(); } }; @@ -562,23 +556,8 @@ class device_impl : public std::enable_shared_from_this { /// /// \return device info of type described in Table 4.20. -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES template decltype(auto) get_info() const { -#define CALL_GET_INFO get_info -#else - // We've been exporting - // `device_impl::get_info::info::device::` for no - // reason. Have to keep doing that until next ABI breaking window. Also, old - // gcc doesn't allow in-class specializations, so they have to go out-of-class - // which happens later then implicit instantiatons of delegating to - // `get_info`. As such, all such calls have to go through - // `get_info_abi_workaround` for which we need this ugly macro: -#define CALL_GET_INFO get_info_abi_workaround - template typename Param::return_type get_info() const; - template - decltype(auto) get_info_abi_workaround() const { -#endif using execution_scope = ext::oneapi::experimental::execution_scope; // With the return type of this function being automatically @@ -614,12 +593,12 @@ class device_impl : public std::enable_shared_from_this { } CASE(info::device::max_work_item_sizes<2>) { range<3> r3 = - CALL_GET_INFO, DependentFalse>(); + get_info, DependentFalse>(); return range<2>{r3[1], r3[2]}; } CASE(info::device::max_work_item_sizes<1>) { range<3> r3 = - CALL_GET_INFO, DependentFalse>(); + get_info, DependentFalse>(); return range<1>{r3[2]}; } @@ -710,8 +689,7 @@ class device_impl : public std::enable_shared_from_this { ';'); } CASE(info::device::built_in_kernel_ids) { - auto names = - CALL_GET_INFO(); + auto names = get_info(); std::vector ids; ids.reserve(names.size()); @@ -893,25 +871,25 @@ class device_impl : public std::enable_shared_from_this { CASE(info::device::ext_oneapi_max_global_work_groups) { // Deprecated alias. - return CALL_GET_INFO< + return get_info< ext::oneapi::experimental::info::device::max_global_work_groups, DependentFalse>(); } CASE(info::device::ext_oneapi_max_work_groups_1d) { // Deprecated alias. - return CALL_GET_INFO< + return get_info< ext::oneapi::experimental::info::device::max_work_groups<1>, DependentFalse>(); } CASE(info::device::ext_oneapi_max_work_groups_2d) { // Deprecated alias. - return CALL_GET_INFO< + return get_info< ext::oneapi::experimental::info::device::max_work_groups<2>, DependentFalse>(); } CASE(info::device::ext_oneapi_max_work_groups_3d) { // Deprecated alias. - return CALL_GET_INFO< + return get_info< ext::oneapi::experimental::info::device::max_work_groups<3>, DependentFalse>(); } @@ -936,7 +914,7 @@ class device_impl : public std::enable_shared_from_this { return static_cast((std::numeric_limits::max)()); } CASE(ext::oneapi::experimental::info::device::max_work_groups<3>) { - size_t Limit = CALL_GET_INFO< + size_t Limit = get_info< ext::oneapi::experimental::info::device::max_global_work_groups, DependentFalse>(); @@ -949,15 +927,15 @@ class device_impl : public std::enable_shared_from_this { std::min(Limit, result[0])); } CASE(ext::oneapi::experimental::info::device::max_work_groups<2>) { - id<3> max_3d = CALL_GET_INFO< - ext::oneapi::experimental::info::device::max_work_groups<3>, - DependentFalse>(); + id<3> max_3d = + get_info, + DependentFalse>(); return id<2>{max_3d[1], max_3d[2]}; } CASE(ext::oneapi::experimental::info::device::max_work_groups<1>) { - id<3> max_3d = CALL_GET_INFO< - ext::oneapi::experimental::info::device::max_work_groups<3>, - DependentFalse>(); + id<3> max_3d = + get_info, + DependentFalse>(); return id<1>{max_3d[2]}; } @@ -1493,7 +1471,7 @@ class device_impl : public std::enable_shared_from_this { } } CASE(ext_oneapi_is_composite) { - auto components = CALL_GET_INFO< + auto components = get_info< sycl::ext::oneapi::experimental::info::device::component_devices>(); // Any device with ext_oneapi_is_composite aspect will have at least two // constituent component devices. @@ -1650,12 +1628,7 @@ class device_impl : public std::enable_shared_from_this { extOneapiArchitectureIs(ext::oneapi::experimental::architecture Arch) const { return Arch == -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES - get_info -#else - get_info_abi_workaround -#endif - (); + get_info(); } bool extOneapiArchitectureIs( @@ -1666,12 +1639,7 @@ class device_impl : public std::enable_shared_from_this { get_category_max_architecture(Category); if (CategoryMinArch.has_value() && CategoryMaxArch.has_value()) { auto Arch = -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES - get_info -#else - get_info_abi_workaround -#endif - (); + get_info(); return CategoryMinArch <= Arch && Arch <= CategoryMaxArch; } return false; @@ -1969,7 +1937,7 @@ class device_impl : public std::enable_shared_from_this { // sycl_ext_oneapi_device_architecture, the runtime exception is // omitted, and std::nullopt is returned. try { - return CALL_GET_INFO< + return get_info< ext::oneapi::experimental::info::device::architecture>(); } catch (sycl::exception &e) { if (e.code() != errc::runtime) @@ -2358,66 +2326,6 @@ class devices_range : public iterator_range { } }; -#ifndef __INTEL_PREVIEW_BREAKING_CHANGES -template -typename Param::return_type device_impl::get_info() const { - return get_info_abi_workaround(); -} - -#define EXPORT_GET_INFO(PARAM) \ - template <> \ - __SYCL_EXPORT PARAM::return_type device_impl::get_info() const; - -// clang-format off -EXPORT_GET_INFO(ext::intel::info::device::device_id) -EXPORT_GET_INFO(ext::intel::info::device::pci_address) -EXPORT_GET_INFO(ext::intel::info::device::gpu_eu_count) -EXPORT_GET_INFO(ext::intel::info::device::gpu_eu_simd_width) -EXPORT_GET_INFO(ext::intel::info::device::gpu_slices) -EXPORT_GET_INFO(ext::intel::info::device::gpu_subslices_per_slice) -EXPORT_GET_INFO(ext::intel::info::device::gpu_eu_count_per_subslice) -EXPORT_GET_INFO(ext::intel::info::device::gpu_hw_threads_per_eu) -EXPORT_GET_INFO(ext::intel::info::device::max_mem_bandwidth) -EXPORT_GET_INFO(ext::intel::info::device::uuid) -EXPORT_GET_INFO(ext::intel::info::device::free_memory) -EXPORT_GET_INFO(ext::intel::info::device::memory_clock_rate) -EXPORT_GET_INFO(ext::intel::info::device::memory_bus_width) -EXPORT_GET_INFO(ext::intel::info::device::max_compute_queue_indices) -EXPORT_GET_INFO(ext::intel::esimd::info::device::has_2d_block_io_support) -EXPORT_GET_INFO(ext::intel::info::device::current_clock_throttle_reasons) -EXPORT_GET_INFO(ext::intel::info::device::fan_speed) -EXPORT_GET_INFO(ext::intel::info::device::min_power_limit) -EXPORT_GET_INFO(ext::intel::info::device::max_power_limit) - -EXPORT_GET_INFO(ext::codeplay::experimental::info::device::supports_fusion) -EXPORT_GET_INFO(ext::codeplay::experimental::info::device::max_registers_per_work_group) - -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::max_global_work_groups) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::max_work_groups<1>) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::max_work_groups<2>) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::max_work_groups<3>) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::work_group_progress_capabilities) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::sub_group_progress_capabilities) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::sub_group_progress_capabilities) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::work_item_progress_capabilities) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::work_item_progress_capabilities) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::work_item_progress_capabilities) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::architecture) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::matrix_combinations) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::image_row_pitch_align) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::max_image_linear_row_pitch) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::max_image_linear_width) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::max_image_linear_height) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::mipmap_max_anisotropy) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::component_devices) -EXPORT_GET_INFO(ext::oneapi::experimental::info::device::composite_device) -EXPORT_GET_INFO(ext::oneapi::info::device::num_compute_units) -// clang-format on - -#undef EXPORT_GET_INFO -#endif - -#undef CALL_GET_INFO } // namespace detail } // namespace _V1 } // namespace sycl diff --git a/sycl/source/device.cpp b/sycl/source/device.cpp index 3b8caf79ff72e..c4e29f53d99aa 100644 --- a/sycl/source/device.cpp +++ b/sycl/source/device.cpp @@ -127,13 +127,8 @@ detail::ABINeutralT_t::return_type> device::get_info_impl() const { static_assert( std::is_same_v::return_type, - decltype(impl->template -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES - get_info -#else - get_info_abi_workaround -#endif - ())>); + decltype(impl->template get_info< + Param, true /* InitializingCache */>())>); return detail::convert_to_abi_neutral(impl->template get_info()); } diff --git a/sycl/test/abi/sycl_symbols_linux.dump b/sycl/test/abi/sycl_symbols_linux.dump index b953f825d5952..01e23c41d2a15 100644 --- a/sycl/test/abi/sycl_symbols_linux.dump +++ b/sycl/test/abi/sycl_symbols_linux.dump @@ -3708,47 +3708,6 @@ _ZNK4sycl3_V15queue9khr_emptyEv _ZNK4sycl3_V16ONEAPI15filter_selector13select_deviceEv _ZNK4sycl3_V16ONEAPI15filter_selector5resetEv _ZNK4sycl3_V16ONEAPI15filter_selectorclERKNS0_6deviceE -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device10gpu_slicesEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device11free_memoryEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device11pci_addressEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device12gpu_eu_countEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device15max_power_limitEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device15min_power_limitEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device16memory_bus_widthEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device17gpu_eu_simd_widthEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device17max_mem_bandwidthEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device17memory_clock_rateEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device21gpu_hw_threads_per_euEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device23gpu_subslices_per_sliceEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device25gpu_eu_count_per_subsliceEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device25max_compute_queue_indicesEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device30current_clock_throttle_reasonsEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device4uuidEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device9device_idEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel4info6device9fan_speedEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext5intel5esimd4info6device23has_2d_block_io_supportEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device12architectureEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device15max_work_groupsILi1EEEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device15max_work_groupsILi2EEEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device15max_work_groupsILi3EEEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device16composite_deviceEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device17component_devicesEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device19matrix_combinationsEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device21image_row_pitch_alignEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device21mipmap_max_anisotropyEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device22max_global_work_groupsEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device22max_image_linear_widthEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device23max_image_linear_heightEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device26max_image_linear_row_pitchEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device31sub_group_progress_capabilitiesILNS6_15execution_scopeE2EEEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device31sub_group_progress_capabilitiesILNS6_15execution_scopeE3EEEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device31work_item_progress_capabilitiesILNS6_15execution_scopeE1EEEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device31work_item_progress_capabilitiesILNS6_15execution_scopeE2EEEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device31work_item_progress_capabilitiesILNS6_15execution_scopeE3EEEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi12experimental4info6device32work_group_progress_capabilitiesILNS6_15execution_scopeE3EEEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext6oneapi4info6device17num_compute_unitsEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext8codeplay12experimental4info6device15supports_fusionEEENT_11return_typeEv -_ZNK4sycl3_V16detail11device_impl8get_infoINS0_3ext8codeplay12experimental4info6device28max_registers_per_work_groupEEENT_11return_typeEv _ZNK4sycl3_V16detail11image_plain10getSamplerEv _ZNK4sycl3_V16detail11image_plain11getPropListEv _ZNK4sycl3_V16detail11image_plain11getRowPitchEv diff --git a/sycl/test/abi/sycl_symbols_windows.dump b/sycl/test/abi/sycl_symbols_windows.dump index cac88ba890cfd..001b338a14fd2 100644 --- a/sycl/test/abi/sycl_symbols_windows.dump +++ b/sycl/test/abi/sycl_symbols_windows.dump @@ -26,16 +26,6 @@ ??$ext_oneapi_get_info@Unum_sub_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$00@12@@Z ??$ext_oneapi_get_info@Unum_sub_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$01@12@@Z ??$ext_oneapi_get_info@Unum_sub_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$02@12@@Z -??$get_info@U?$max_work_groups@$00@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$id@$00@23@XZ -??$get_info@U?$max_work_groups@$01@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$id@$01@23@XZ -??$get_info@U?$max_work_groups@$02@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$id@$02@23@XZ -??$get_info@U?$sub_group_progress_capabilities@$01@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info@U?$sub_group_progress_capabilities@$02@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info@U?$work_group_progress_capabilities@$02@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info@U?$work_item_progress_capabilities@$00@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info@U?$work_item_progress_capabilities@$01@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info@U?$work_item_progress_capabilities@$02@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info@Uarchitecture@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AW4architecture@experimental@oneapi@ext@23@XZ ??$get_info@Uatomic_fence_order_capabilities@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AV?$vector@W4memory_order@_V1@sycl@@V?$allocator@W4memory_order@_V1@sycl@@@std@@@std@@XZ ??$get_info@Uatomic_fence_scope_capabilities@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AV?$vector@W4memory_scope@_V1@sycl@@V?$allocator@W4memory_scope@_V1@sycl@@@std@@@std@@XZ ??$get_info@Uatomic_memory_order_capabilities@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AV?$vector@W4memory_order@_V1@sycl@@V?$allocator@W4memory_order@_V1@sycl@@@std@@@std@@XZ @@ -44,43 +34,14 @@ ??$get_info@Ucompile_num_sub_groups@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z ??$get_info@Ucompile_sub_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z ??$get_info@Ucompile_work_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA?AV?$range@$02@12@AEBVdevice@12@@Z -??$get_info@Ucomponent_devices@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ -??$get_info@Ucomposite_device@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AVdevice@23@XZ ??$get_info@Ucontext@queue@info@_V1@sycl@@@queue@_V1@sycl@@QEBA?AVcontext@12@XZ -??$get_info@Ucurrent_clock_throttle_reasons@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$vector@W4throttle_reason@intel@ext@_V1@sycl@@V?$allocator@W4throttle_reason@intel@ext@_V1@sycl@@@std@@@std@@XZ ??$get_info@Udevice@queue@info@_V1@sycl@@@queue@_V1@sycl@@QEBA?AVdevice@12@XZ -??$get_info@Udevice_id@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAIXZ ??$get_info@Udevices@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ ??$get_info@Uext_codeplay_num_regs@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z -??$get_info@Ufan_speed@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAHXZ -??$get_info@Ufree_memory@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA_KXZ ??$get_info@Uglobal_work_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA?AV?$range@$02@12@AEBVdevice@12@@Z -??$get_info@Ugpu_eu_count@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAIXZ -??$get_info@Ugpu_eu_count_per_subslice@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAIXZ -??$get_info@Ugpu_eu_simd_width@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAIXZ -??$get_info@Ugpu_hw_threads_per_eu@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAIXZ -??$get_info@Ugpu_slices@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAIXZ -??$get_info@Ugpu_subslices_per_slice@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAIXZ -??$get_info@Uhas_2d_block_io_support@device@info@esimd@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA_NXZ -??$get_info@Uimage_row_pitch_align@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAIXZ -??$get_info@Umatrix_combinations@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$vector@Ucombination@matrix@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Ucombination@matrix@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info@Umax_compute_queue_indices@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAHXZ -??$get_info@Umax_global_work_groups@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA_KXZ -??$get_info@Umax_image_linear_height@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA_KXZ -??$get_info@Umax_image_linear_row_pitch@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA_KXZ -??$get_info@Umax_image_linear_width@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA_KXZ -??$get_info@Umax_mem_bandwidth@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA_KXZ ??$get_info@Umax_num_sub_groups@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z -??$get_info@Umax_power_limit@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAHXZ -??$get_info@Umax_registers_per_work_group@device@info@experimental@codeplay@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAIXZ ??$get_info@Umax_sub_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z ??$get_info@Umax_sub_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@AEBV?$range@$02@12@@Z -??$get_info@Umemory_bus_width@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAIXZ -??$get_info@Umemory_clock_rate@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAIXZ -??$get_info@Umin_power_limit@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAHXZ -??$get_info@Umipmap_max_anisotropy@device@info@experimental@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBAMXZ -??$get_info@Unum_compute_units@device@info@oneapi@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA_KXZ -??$get_info@Upci_address@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ ??$get_info@Uplatform@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AVplatform@12@XZ ??$get_info@Upreferred_work_group_size_multiple@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KAEBVdevice@12@@Z ??$get_info@Uprivate_mem_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KAEBVdevice@12@@Z @@ -88,8 +49,6 @@ ??$get_info@Ureference_count@event@info@_V1@sycl@@@event@_V1@sycl@@QEBAIXZ ??$get_info@Ureference_count@queue@info@_V1@sycl@@@queue@_V1@sycl@@QEBAIXZ ??$get_info@Uspill_memory_size@kernel_device_specific@info@intel@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KAEBVdevice@12@@Z -??$get_info@Usupports_fusion@device@info@experimental@codeplay@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA_NXZ -??$get_info@Uuuid@device@info@intel@ext@_V1@sycl@@@device_impl@detail@_V1@sycl@@QEBA?AV?$array@E$0BA@@std@@XZ ??$get_info@Uwork_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KAEBVdevice@12@@Z ??$get_info_impl@U?$max_work_groups@$00@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$id@$00@12@XZ ??$get_info_impl@U?$max_work_groups@$01@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$id@$01@12@XZ From e1f0d504f8dac228a8a4a3ac6d46c6189b0732a5 Mon Sep 17 00:00:00 2001 From: Artur Gainullin Date: Wed, 3 Dec 2025 16:22:44 -0800 Subject: [PATCH 081/105] [SYCL][ABI-break] Cleanup reduction ABI entries (#20815) --- sycl/source/detail/reduction.cpp | 97 +++---------------------- sycl/test/abi/sycl_symbols_linux.dump | 4 - sycl/test/abi/sycl_symbols_windows.dump | 4 - 3 files changed, 11 insertions(+), 94 deletions(-) diff --git a/sycl/source/detail/reduction.cpp b/sycl/source/detail/reduction.cpp index 84a8722c96e76..48ad823e06205 100644 --- a/sycl/source/detail/reduction.cpp +++ b/sycl/source/detail/reduction.cpp @@ -49,10 +49,10 @@ __SYCL_EXPORT size_t reduComputeWGSize(size_t NWorkItems, size_t MaxWGSize, return WGSize; } -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES -// Inline this helper: -#endif -uint32_t reduGetMaxNumConcurrentWorkGroups(device_impl &Dev) { +// Returns the estimated number of physical threads on the device associated +// with the given queue. +__SYCL_EXPORT uint32_t reduGetMaxNumConcurrentWorkGroups(handler &cgh) { + const device_impl &Dev = getSyclObjImpl(cgh)->get_device(); uint32_t NumThreads = Dev.get_info(); // TODO: The heuristics here require additional tuning for various devices // and vendors. Also, it would be better to check vendor/generation/etc. @@ -60,33 +60,10 @@ uint32_t reduGetMaxNumConcurrentWorkGroups(device_impl &Dev) { NumThreads *= 8; return NumThreads; } -// Returns the estimated number of physical threads on the device associated -// with the given queue. -__SYCL_EXPORT uint32_t reduGetMaxNumConcurrentWorkGroups(handler &cgh) { - return reduGetMaxNumConcurrentWorkGroups(getSyclObjImpl(cgh)->get_device()); -} -#ifndef __INTEL_PREVIEW_BREAKING_CHANGES -__SYCL_EXPORT uint32_t reduGetMaxNumConcurrentWorkGroups( - std::shared_ptr Queue) { - // TODO: Graphs extension explicit API uses a handler with no queue attached, - // so return some value here. In the future we should have access to the - // device so can remove this. - // - // The 8 value was chosen as the hardcoded value as it is the returned - // value for sycl::info::device::max_compute_units on - // Intel HD Graphics devices used as a L0 backend during development. - if (Queue == nullptr) { - return 8; - } - return reduGetMaxNumConcurrentWorkGroups(Queue->getDeviceImpl()); -} -#endif - -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES -// Inline this helper: -#endif -size_t reduGetMaxWGSize(device_impl &Dev, size_t LocalMemBytesPerWorkItem) { +__SYCL_EXPORT size_t reduGetMaxWGSize(handler &cgh, + size_t LocalMemBytesPerWorkItem) { + const device_impl &Dev = getSyclObjImpl(cgh)->get_device(); size_t MaxWGSize = Dev.get_info(); size_t WGSizePerMem = MaxWGSize * 2; @@ -123,24 +100,9 @@ size_t reduGetMaxWGSize(device_impl &Dev, size_t LocalMemBytesPerWorkItem) { return WGSize; } -__SYCL_EXPORT size_t reduGetMaxWGSize(handler &cgh, - size_t LocalMemBytesPerWorkItem) { - return reduGetMaxWGSize(getSyclObjImpl(cgh)->get_device(), - LocalMemBytesPerWorkItem); -} -#ifndef __INTEL_PREVIEW_BREAKING_CHANGES -__SYCL_EXPORT -size_t reduGetMaxWGSize(std::shared_ptr Queue, - size_t LocalMemBytesPerWorkItem) { - return reduGetMaxWGSize(Queue->getDeviceImpl(), LocalMemBytesPerWorkItem); -} -#endif -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES -// Inline this helper: -#endif -size_t reduGetPreferredWGSize(device_impl &Dev, - size_t LocalMemBytesPerWorkItem) { +__SYCL_EXPORT size_t reduGetPreferredWGSize(handler &cgh, + size_t LocalMemBytesPerWorkItem) { // The maximum WGSize returned by CPU devices is very large and does not // help the reduction implementation: since all work associated with a // work-group is typically assigned to one CPU thread, selecting a large @@ -150,6 +112,7 @@ size_t reduGetPreferredWGSize(device_impl &Dev, // behavior. using PrefWGConfig = sycl::detail::SYCLConfig< sycl::detail::SYCL_REDUCTION_PREFERRED_WORKGROUP_SIZE>; + const device_impl &Dev = getSyclObjImpl(cgh)->get_device(); if (Dev.is_cpu()) { size_t CPUMaxWGSize = PrefWGConfig::get(sycl::info::device_type::cpu); if (CPUMaxWGSize == 0) @@ -177,46 +140,8 @@ size_t reduGetPreferredWGSize(device_impl &Dev, } // Use the maximum work-group size otherwise. - return reduGetMaxWGSize(Dev, LocalMemBytesPerWorkItem); -} -__SYCL_EXPORT size_t reduGetPreferredWGSize(handler &cgh, - size_t LocalMemBytesPerWorkItem) { - return reduGetPreferredWGSize(getSyclObjImpl(cgh)->get_device(), - LocalMemBytesPerWorkItem); -} -#ifndef __INTEL_PREVIEW_BREAKING_CHANGES -__SYCL_EXPORT size_t reduGetPreferredWGSize(std::shared_ptr &Queue, - size_t LocalMemBytesPerWorkItem) { - // TODO: Graphs extension explicit API uses a handler with a null queue to - // process CGFs, in future we should have access to the device so we can - // correctly calculate this. - // - // The 32 value was chosen as the hardcoded value as it is the returned - // value for SYCL_REDUCTION_PREFERRED_WORKGROUP_SIZE on - // Intel HD Graphics devices used as a L0 backend during development. - if (Queue == nullptr) { - return 32; - } - device_impl &Dev = Queue->getDeviceImpl(); - - return reduGetPreferredWGSize(Dev, LocalMemBytesPerWorkItem); -} -#endif - -#ifndef __INTEL_PREVIEW_BREAKING_CHANGES -__SYCL_EXPORT void -addCounterInit(handler &CGH, std::shared_ptr &Queue, - std::shared_ptr &Counter) { - auto EventImpl = detail::event_impl::create_device_event(*Queue); - EventImpl->setContextImpl(Queue->getContextImpl()); - EventImpl->setStateIncomplete(); - ur_event_handle_t UREvent = nullptr; - MemoryManager::fill_usm(Counter.get(), *Queue, sizeof(int), {0}, {}, - &UREvent); - EventImpl->setHandle(UREvent); - CGH.depends_on(createSyclObjFromImpl(EventImpl)); + return reduGetMaxWGSize(cgh, LocalMemBytesPerWorkItem); } -#endif __SYCL_EXPORT void verifyReductionProps(const property_list &Props) { auto CheckDataLessProperties = [](int PropertyKind) { diff --git a/sycl/test/abi/sycl_symbols_linux.dump b/sycl/test/abi/sycl_symbols_linux.dump index 01e23c41d2a15..8805cdc726754 100644 --- a/sycl/test/abi/sycl_symbols_linux.dump +++ b/sycl/test/abi/sycl_symbols_linux.dump @@ -3273,7 +3273,6 @@ _ZN4sycl3_V16detail13lgamma_r_implEfPi _ZN4sycl3_V16detail13make_platformEmNS0_7backendE _ZN4sycl3_V16detail13select_deviceERKSt8functionIFiRKNS0_6deviceEEE _ZN4sycl3_V16detail13select_deviceERKSt8functionIFiRKNS0_6deviceEEERKNS0_7contextE -_ZN4sycl3_V16detail14addCounterInitERNS0_7handlerERSt10shared_ptrINS1_10queue_implEERS4_IiE _ZN4sycl3_V16detail14getBorderColorENS0_19image_channel_orderE _ZN4sycl3_V16detail14tls_code_loc_t5queryEv _ZN4sycl3_V16detail14tls_code_loc_tC1ERKNS1_13code_locationE @@ -3294,7 +3293,6 @@ _ZN4sycl3_V16detail16AccessorBaseHostC2ENS0_2idILi3EEENS0_5rangeILi3EEES6_NS0_6a _ZN4sycl3_V16detail16get_pointer_typeEPKvRNS1_12context_implE _ZN4sycl3_V16detail16openIPCMemHandleEPKSt4bytemRKNS0_7contextERKNS0_6deviceE _ZN4sycl3_V16detail16reduGetMaxWGSizeERNS0_7handlerEm -_ZN4sycl3_V16detail16reduGetMaxWGSizeESt10shared_ptrINS1_10queue_implEEm _ZN4sycl3_V16detail17HostProfilingInfo3endEv _ZN4sycl3_V16detail17HostProfilingInfo5startEv _ZN4sycl3_V16detail17device_global_map3addEPKvPKc @@ -3332,7 +3330,6 @@ _ZN4sycl3_V16detail22get_kernel_bundle_implERKNS0_7contextERKSt6vectorINS0_6devi _ZN4sycl3_V16detail22has_kernel_bundle_implERKNS0_7contextERKSt6vectorINS0_6deviceESaIS6_EENS0_12bundle_stateE _ZN4sycl3_V16detail22has_kernel_bundle_implERKNS0_7contextERKSt6vectorINS0_6deviceESaIS6_EERKS5_INS0_9kernel_idESaISB_EENS0_12bundle_stateE _ZN4sycl3_V16detail22reduGetPreferredWGSizeERNS0_7handlerEm -_ZN4sycl3_V16detail22reduGetPreferredWGSizeERSt10shared_ptrINS1_10queue_implEEm _ZN4sycl3_V16detail22removeDuplicateDevicesERKSt6vectorINS0_6deviceESaIS3_EE _ZN4sycl3_V16detail23constructorNotificationEPvS2_NS0_6access6targetENS3_4modeERKNS1_13code_locationE _ZN4sycl3_V16detail24find_device_intersectionERKSt6vectorINS0_13kernel_bundleILNS0_12bundle_stateE1EEESaIS5_EE @@ -3351,7 +3348,6 @@ _ZN4sycl3_V16detail30UnsampledImageAccessorBaseHostC1ENS0_5rangeILi3EEENS0_6acce _ZN4sycl3_V16detail30UnsampledImageAccessorBaseHostC2ENS0_5rangeILi3EEENS0_6access4modeEPviiNS0_2idILi3EEENS0_18image_channel_typeENS0_19image_channel_orderERKNS0_13property_listE _ZN4sycl3_V16detail33enable_ext_oneapi_default_contextEb _ZN4sycl3_V16detail33reduGetMaxNumConcurrentWorkGroupsERNS0_7handlerE -_ZN4sycl3_V16detail33reduGetMaxNumConcurrentWorkGroupsESt10shared_ptrINS1_10queue_implEE _ZN4sycl3_V16detail34addHostSampledImageAccessorAndWaitEPNS1_28SampledImageAccessorImplHostE _ZN4sycl3_V16detail35sampledImageConstructorNotificationEPvS2_RKSt8optionalINS0_12image_targetEEPKvjRKNS1_13code_locationE _ZN4sycl3_V16detail36addHostUnsampledImageAccessorAndWaitEPNS1_30UnsampledImageAccessorImplHostE diff --git a/sycl/test/abi/sycl_symbols_windows.dump b/sycl/test/abi/sycl_symbols_windows.dump index 001b338a14fd2..c756587fc1621 100644 --- a/sycl/test/abi/sycl_symbols_windows.dump +++ b/sycl/test/abi/sycl_symbols_windows.dump @@ -3692,7 +3692,6 @@ ?add@host_pipe_map@detail@_V1@sycl@@YAXPEBXPEBD@Z ?add@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA?AVnode@34567@AEBVproperty_list@67@@Z ?addArg@handler@_V1@sycl@@AEAAXW4kernel_param_kind_t@detail@23@PEAXHH@Z -?addCounterInit@detail@_V1@sycl@@YAXAEAVhandler@23@AEAV?$shared_ptr@Vqueue_impl@detail@_V1@sycl@@@std@@AEAV?$shared_ptr@H@6@@Z ?addGraphLeafDependencies@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAAXVnode@34567@@Z ?addHostAccessorAndWait@detail@_V1@sycl@@YAXPEAVAccessorImplHost@123@@Z ?addHostSampledImageAccessorAndWait@detail@_V1@sycl@@YAXPEAVSampledImageAccessorImplHost@123@@Z @@ -4287,10 +4286,7 @@ ?query@tls_code_loc_t@detail@_V1@sycl@@QEAAAEBUcode_location@234@XZ ?reduComputeWGSize@detail@_V1@sycl@@YA_K_K0AEA_K@Z ?reduGetMaxNumConcurrentWorkGroups@detail@_V1@sycl@@YAIAEAVhandler@23@@Z -?reduGetMaxNumConcurrentWorkGroups@detail@_V1@sycl@@YAIV?$shared_ptr@Vqueue_impl@detail@_V1@sycl@@@std@@@Z ?reduGetMaxWGSize@detail@_V1@sycl@@YA_KAEAVhandler@23@_K@Z -?reduGetMaxWGSize@detail@_V1@sycl@@YA_KV?$shared_ptr@Vqueue_impl@detail@_V1@sycl@@@std@@_K@Z -?reduGetPreferredWGSize@detail@_V1@sycl@@YA_KAEAV?$shared_ptr@Vqueue_impl@detail@_V1@sycl@@@std@@_K@Z ?reduGetPreferredWGSize@detail@_V1@sycl@@YA_KAEAVhandler@23@_K@Z ?registerDynamicParameter@handler@_V1@sycl@@AEAAXPEAVdynamic_parameter_impl@detail@experimental@oneapi@ext@23@H@Z ?release_external_memory@experimental@oneapi@ext@_V1@sycl@@YAXUexternal_mem@12345@AEBVdevice@45@AEBVcontext@45@@Z From 894db96e64066f40954f597069292f40717304d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Plewa?= Date: Thu, 4 Dec 2025 14:05:26 +0100 Subject: [PATCH 082/105] [UR][offload] fix device iteration in offload adapter (#20783) --- unified-runtime/source/adapters/offload/adapter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unified-runtime/source/adapters/offload/adapter.cpp b/unified-runtime/source/adapters/offload/adapter.cpp index 0e15159c67e9c..2842b2d686601 100644 --- a/unified-runtime/source/adapters/offload/adapter.cpp +++ b/unified-runtime/source/adapters/offload/adapter.cpp @@ -56,7 +56,7 @@ ur_result_t ur_adapter_handle_t_::init() { ->Devices.push_back( std::make_unique(URPlatform->get(), D)); } - return false; + return true; }, &Adapter->Platforms); From f5c33b1fce29e43472f692d6dc6f901d952c8df2 Mon Sep 17 00:00:00 2001 From: "Mateusz P. Nowak" Date: Thu, 4 Dec 2025 14:49:38 +0100 Subject: [PATCH 083/105] [SYCL][e2e] Fix buffer.cpp test (#20785) Vector after reserve without resize has still size 0, and accessing its memory beyond size is undefined behavior. The test failed on integrated gpu (l0v2 adapter, ARL cpu), this PR fixes it. Signed-off-by: Mateusz P. Nowak --- sycl/test-e2e/Basic/buffer/buffer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sycl/test-e2e/Basic/buffer/buffer.cpp b/sycl/test-e2e/Basic/buffer/buffer.cpp index e0676207b4efe..e40d8d5014a4f 100644 --- a/sycl/test-e2e/Basic/buffer/buffer.cpp +++ b/sycl/test-e2e/Basic/buffer/buffer.cpp @@ -515,9 +515,9 @@ int main() { std::vector bool_vector; std::vector int_vector; std::vector float_vector; - bool_vector.reserve(size); - int_vector.reserve(size); - float_vector.reserve(size); + bool_vector.resize(size); + int_vector.resize(size); + float_vector.resize(size); sycl::queue Queue; std::mutex m; From 27bcab9b7166537ada3b623a527699a16f0e8db5 Mon Sep 17 00:00:00 2001 From: Maksim Sabianin Date: Thu, 4 Dec 2025 15:51:53 +0100 Subject: [PATCH 084/105] [CI] Refactor cleanup of built E2E tests in precommit. (#20790) This change approaches the feedback from #20634 related to repeated cleanup. --- .github/workflows/sycl-linux-build.yml | 8 -------- devops/actions/run-tests/e2e/action.yml | 5 +++++ devops/actions/run-tests/windows/e2e/action.yml | 4 ++++ 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/sycl-linux-build.yml b/.github/workflows/sycl-linux-build.yml index 13583e7a44142..e3b350fbac3cb 100644 --- a/.github/workflows/sycl-linux-build.yml +++ b/.github/workflows/sycl-linux-build.yml @@ -339,10 +339,6 @@ jobs: sycl_compiler: $GITHUB_WORKSPACE/toolchain/bin/clang++ extra_lit_opts: --param sycl_build_targets="spir;nvidia;amd" - - name: Remove E2E tests before spirv-backend run - if: ${{ inputs.e2e_binaries_spirv_backend_artifact && !cancelled() && steps.build.conclusion == 'success' }} - run: rm -rf build-e2e - - name: Build E2E tests with SPIR-V Backend if: ${{ inputs.e2e_binaries_spirv_backend_artifact && !cancelled() && steps.build.conclusion == 'success' }} uses: ./devops/actions/run-tests/e2e @@ -354,10 +350,6 @@ jobs: sycl_compiler: $GITHUB_WORKSPACE/toolchain/bin/clang++ extra_lit_opts: --param spirv-backend=True - - name: Remove E2E tests before preview-mode run - if: ${{ inputs.e2e_binaries_preview_artifact && !cancelled() && steps.build.conclusion == 'success' }} - run: rm -rf build-e2e - - name: Build E2E tests in Preview Mode if: ${{ inputs.e2e_binaries_preview_artifact && !cancelled() && steps.build.conclusion == 'success' }} uses: ./devops/actions/run-tests/e2e diff --git a/devops/actions/run-tests/e2e/action.yml b/devops/actions/run-tests/e2e/action.yml index c78935eab8eb5..f277e02518359 100644 --- a/devops/actions/run-tests/e2e/action.yml +++ b/devops/actions/run-tests/e2e/action.yml @@ -106,3 +106,8 @@ runs: name: ${{ inputs.binaries_artifact }} path: e2e_binaries.tar.zst retention-days: ${{ inputs.retention-days }} + - name: Cleanup E2E tests + if: ${{ !cancelled() }} + shell: bash + run: | + rm -rf build-e2e diff --git a/devops/actions/run-tests/windows/e2e/action.yml b/devops/actions/run-tests/windows/e2e/action.yml index 5400db21a7cf3..0a3ac8d92df04 100644 --- a/devops/actions/run-tests/windows/e2e/action.yml +++ b/devops/actions/run-tests/windows/e2e/action.yml @@ -121,3 +121,7 @@ runs: name: ${{ inputs.binaries_artifact }} path: e2e_bin.tar.gz retention-days: ${{ inputs.retention-days }} + - name: Cleanup E2E tests + if: ${{ !cancelled() }} + shell: bash + run: rm -rf build-e2e From f11d97923542e638c997a9cd0970605c511c0875 Mon Sep 17 00:00:00 2001 From: Nick Sarnie Date: Thu, 4 Dec 2025 23:52:15 +0900 Subject: [PATCH 085/105] [LTO] Extend CAS build workaround to LTO (#20814) Shared library build fails with the same error Jinsong saw and fixed in https://github.com/intel/llvm/commit/e676cb09f0b23ec572fefe09aa7882876797eb79 as part of the pulldown. This was missed because we don't run the nightly as part of the pulldown CI, and we only do a shared library build in the nightly. Fix confirmed in https://github.com/intel/llvm/actions/runs/19906696122/job/57064646962 Closes: https://github.com/intel/llvm/issues/20743 Signed-off-by: Nick Sarnie --- llvm/lib/LTO/CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/llvm/lib/LTO/CMakeLists.txt b/llvm/lib/LTO/CMakeLists.txt index 9470a69cb00ac..c1f7e058cdae4 100644 --- a/llvm/lib/LTO/CMakeLists.txt +++ b/llvm/lib/LTO/CMakeLists.txt @@ -1,3 +1,10 @@ +if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + # We append -fno-lifetime-dse in HandleLLVMOptions.cmake + # append("-fno-lifetime-dse" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + # But it is causing link failure with llvm::StdThreadPool::asyncEnqueue + string(REPLACE "-fno-lifetime-dse" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") +endif () + add_llvm_component_library(LLVMLTO LTO.cpp LTOBackend.cpp From cb4040873396446becbbac9cae72431244abe90b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Plewa?= Date: Thu, 4 Dec 2025 17:17:03 +0100 Subject: [PATCH 086/105] [UR][offload] Add support for Level zero in offload adapter (#20830) --- unified-runtime/source/adapters/offload/device.cpp | 2 ++ unified-runtime/source/adapters/offload/program.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/unified-runtime/source/adapters/offload/device.cpp b/unified-runtime/source/adapters/offload/device.cpp index 5ebe7170dcc48..0b0d5f4905cbe 100644 --- a/unified-runtime/source/adapters/offload/device.cpp +++ b/unified-runtime/source/adapters/offload/device.cpp @@ -456,6 +456,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceSelectBinary( ImageTarget = UR_DEVICE_BINARY_TARGET_NVPTX64; } else if (Backend == OL_PLATFORM_BACKEND_AMDGPU) { ImageTarget = UR_DEVICE_BINARY_TARGET_AMDGCN; + } else if (Backend == OL_PLATFORM_BACKEND_LEVEL_ZERO) { + ImageTarget = UR_DEVICE_BINARY_TARGET_SPIRV64; } for (uint32_t i = 0; i < NumBinaries; ++i) { diff --git a/unified-runtime/source/adapters/offload/program.cpp b/unified-runtime/source/adapters/offload/program.cpp index fa5246c8a7e58..68bca36bcc02c 100644 --- a/unified-runtime/source/adapters/offload/program.cpp +++ b/unified-runtime/source/adapters/offload/program.cpp @@ -174,7 +174,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urProgramBuild(ur_context_handle_t, UR_APIEXPORT ur_result_t UR_APICALL urProgramBuildExp(ur_program_handle_t hProgram, uint32_t, ur_device_handle_t *, - const char *pOptions) { + ur_exp_program_flags_t, const char *pOptions) { // Do nothing, program is built upon creation if (pOptions && *pOptions) { hProgram->Error = "Liboffload doesn't support link options"; From 89a052579da4605d3e90c1bcab53ae2108901338 Mon Sep 17 00:00:00 2001 From: Matthew Michel Date: Thu, 4 Dec 2025 10:18:33 -0600 Subject: [PATCH 087/105] [SYCL][Graph][Test] Move `host_task_in_order_dependency` to unsupported with windows + gen12 + level_zero (#20792) - `host_task_in_order.cpp` introduced in https://github.com/intel/llvm/pull/20690 sporadically fails on Windows + Gen12 due to reported L0 leaks - Move to unsupported for the affected configuration and track resolution in https://github.com/intel/llvm/issues/20696 --- .../Graph/RecordReplay/host_task_in_order_dependency.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sycl/test-e2e/Graph/RecordReplay/host_task_in_order_dependency.cpp b/sycl/test-e2e/Graph/RecordReplay/host_task_in_order_dependency.cpp index 0fb287f85fdbb..c86cdc4ab0670 100644 --- a/sycl/test-e2e/Graph/RecordReplay/host_task_in_order_dependency.cpp +++ b/sycl/test-e2e/Graph/RecordReplay/host_task_in_order_dependency.cpp @@ -3,6 +3,9 @@ // Extra run to check for leaks in Level Zero using UR_L0_LEAKS_DEBUG // RUN: %if level_zero %{%{l0_leak_check} %{run} %t.out 2>&1 | FileCheck %s --implicit-check-not=LEAK %} // +// UNSUPPORTED: level_zero && windows && gpu-intel-gen12 +// UNSUPPORTED-TRACKER: https://github.com/intel/llvm/issues/20696 +// // REQUIRES: aspect-usm_host_allocations // Tests injected barrier between an in-order operation in no event mode and a From 80da6b6b6c806424212333cfd45c09eab012a47b Mon Sep 17 00:00:00 2001 From: Wenju He Date: Fri, 5 Dec 2025 00:24:30 +0800 Subject: [PATCH 088/105] [Clang][Test] Remove sycl-bc-device-libraries.cpp's dependency on libspirv files (#20791) Also add `-fgpu-rdc` to fix `Unknown command line argument '-amdgpu-internalize-symbols'` error when generating %t.amd.o. Closes #20784 --- .../test/Driver/sycl-bc-device-libraries.cpp | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/clang/test/Driver/sycl-bc-device-libraries.cpp b/clang/test/Driver/sycl-bc-device-libraries.cpp index 34c926dff69da..b3c4744ad1c8f 100644 --- a/clang/test/Driver/sycl-bc-device-libraries.cpp +++ b/clang/test/Driver/sycl-bc-device-libraries.cpp @@ -1,27 +1,31 @@ /// Test that SYCL bitcode device libraries are properly separated for NVIDIA and AMD targets. -/// Check devicelib and libspirv are linked for nvptx. +/// Check devicelib are linked for nvptx. // RUN: %clang -### -fsycl --offload-new-driver \ +// RUN: -fno-sycl-libspirv -Wno-unsafe-libspirv-not-linked \ // RUN: -fsycl-targets=nvptx64-nvidia-cuda \ // RUN: --cuda-path=%S/Inputs/CUDA_102/usr/local/cuda \ // RUN: %s 2>&1 | FileCheck -check-prefix=CHECK-NVPTX-BC %s // RUN: %clang_cl -### -fsycl --offload-new-driver \ +// RUN: -fno-sycl-libspirv -Wno-unsafe-libspirv-not-linked \ // RUN: -fsycl-targets=nvptx64-nvidia-cuda \ // RUN: --cuda-path=%S/Inputs/CUDA_102/usr/local/cuda \ // RUN: %s 2>&1 | FileCheck -check-prefix=CHECK-NVPTX-BC %s // CHECK-NVPTX-BC: clang-linker-wrapper -// CHECK-NVPTX-BC-SAME: "--bitcode-library=nvptx64-nvidia-cuda={{.*}}devicelib-nvptx64-nvidia-cuda.bc" "--bitcode-library=nvptx64-nvidia-cuda={{.*}}libspirv-nvptx64-nvidia-cuda.bc" +// CHECK-NVPTX-BC-SAME: "--bitcode-library=nvptx64-nvidia-cuda={{.*}}devicelib-nvptx64-nvidia-cuda.bc" /// Check devicelib is linked for amdgcn. // RUN: %clang -### -fsycl --offload-new-driver \ +// RUN: -fno-sycl-libspirv -Wno-unsafe-libspirv-not-linked \ // RUN: -fsycl-targets=amdgcn-amd-amdhsa \ // RUN: -Xsycl-target-backend=amdgcn-amd-amdhsa --offload-arch=gfx900 \ // RUN: --rocm-path=%S/Inputs/rocm \ // RUN: %s 2>&1 | FileCheck -check-prefix=CHECK-AMD-BC %s // RUN: %clang_cl -### -fsycl --offload-new-driver \ +// RUN: -fno-sycl-libspirv -Wno-unsafe-libspirv-not-linked \ // RUN: -fsycl-targets=amdgcn-amd-amdhsa \ // RUN: -Xsycl-target-backend=amdgcn-amd-amdhsa --offload-arch=gfx900 \ // RUN: --rocm-path=%S/Inputs/rocm \ @@ -32,6 +36,7 @@ /// Check linking with multiple targets. // RUN: %clang -### -fsycl --offload-new-driver \ +// RUN: -fno-sycl-libspirv -Wno-unsafe-libspirv-not-linked \ // RUN: -fsycl-targets=amdgcn-amd-amdhsa,nvptx64-nvidia-cuda \ // RUN: -Xsycl-target-backend=amdgcn-amd-amdhsa --offload-arch=gfx900 \ // RUN: --cuda-path=%S/Inputs/CUDA_102/usr/local/cuda \ @@ -39,6 +44,7 @@ // RUN: %s 2>&1 | FileCheck -check-prefix=CHECK-MULTI-TARGET %s // RUN: %clang_cl -### -fsycl --offload-new-driver \ +// RUN: -fno-sycl-libspirv -Wno-unsafe-libspirv-not-linked \ // RUN: -fsycl-targets=amdgcn-amd-amdhsa,nvptx64-nvidia-cuda \ // RUN: -Xsycl-target-backend=amdgcn-amd-amdhsa --offload-arch=gfx900 \ // RUN: --cuda-path=%S/Inputs/CUDA_102/usr/local/cuda \ @@ -46,21 +52,26 @@ // RUN: %s 2>&1 | FileCheck -check-prefix=CHECK-MULTI-TARGET %s // CHECK-MULTI-TARGET: clang-linker-wrapper -// CHECK-MULTI-TARGET-SAME: "--bitcode-library=amdgcn-amd-amdhsa={{.*}}devicelib-amdgcn-amd-amdhsa.bc" "--bitcode-library=nvptx64-nvidia-cuda={{.*}}devicelib-nvptx64-nvidia-cuda.bc" "--bitcode-library=nvptx64-nvidia-cuda={{.*}}libspirv-nvptx64-nvidia-cuda.bc" +// CHECK-MULTI-TARGET-SAME: "--bitcode-library=amdgcn-amd-amdhsa={{.*}}devicelib-amdgcn-amd-amdhsa.bc" "--bitcode-library=nvptx64-nvidia-cuda={{.*}}devicelib-nvptx64-nvidia-cuda.bc" /// Test --bitcode-library with nvptx dummy libraries. // RUN: %clang -cc1 %s -triple nvptx64-nvidia-cuda -emit-llvm-bc -o %t.nvptx.devicelib.bc -// RUN: %clang -cc1 %s -triple nvptx64-nvidia-cuda -emit-llvm-bc -o %t.nvptx.libspirv.bc -// RUN: %clangxx -fsycl -fsycl-targets=nvptx64-nvidia-cuda --offload-new-driver -c %s -o %t.nvptx.o -nocudalib -// RUN: clang-linker-wrapper --bitcode-library=nvptx64-nvidia-cuda=%t.nvptx.devicelib.bc --bitcode-library=nvptx64-nvidia-cuda=%t.nvptx.libspirv.bc \ +// RUN: %clang -cc1 %s -triple nvptx64-nvidia-cuda -emit-llvm-bc -o %t.nvptx.libdummy.bc +// RUN: %clangxx -fsycl -fsycl-targets=nvptx64-nvidia-cuda \ +// RUN: -fno-sycl-libspirv -Wno-unsafe-libspirv-not-linked \ +// RUN: --offload-new-driver -c %s -o %t.nvptx.o -nocudalib +// RUN: clang-linker-wrapper --bitcode-library=nvptx64-nvidia-cuda=%t.nvptx.devicelib.bc --bitcode-library=nvptx64-nvidia-cuda=%t.nvptx.libdummy.bc \ // RUN: --host-triple=x86_64-unknown-linux-gnu --dry-run \ // RUN: --linker-path=/usr/bin/ld %t.nvptx.o -o a.out 2>&1 | FileCheck -check-prefix=CHECK-WRAPPER-NVPTX %s -// CHECK-WRAPPER-NVPTX: llvm-link{{.*}} {{.*}}.nvptx.devicelib.bc {{.*}}.nvptx.libspirv.bc +// CHECK-WRAPPER-NVPTX: llvm-link{{.*}} {{.*}}.nvptx.devicelib.bc {{.*}}.nvptx.libdummy.bc /// Test --bitcode-library with amdgcn dummy library. // RUN: %clang -cc1 %s -triple amdgcn-amd-amdhsa -emit-llvm-bc -o %t.amd.devicelib.bc -// RUN: %clangxx -fsycl -fsycl-targets=amdgcn-amd-amdhsa -Xsycl-target-backend=amdgcn-amd-amdhsa --offload-arch=gfx900 --offload-new-driver -c %s -o %t.amd.o -nogpulib +// RUN: %clangxx -fsycl -fsycl-targets=amdgcn-amd-amdhsa \ +// RUN: -Xsycl-target-backend=amdgcn-amd-amdhsa --offload-arch=gfx900 \ +// RUN: -fno-sycl-libspirv -Wno-unsafe-libspirv-not-linked \ +// RUN: --offload-new-driver -c %s -o %t.amd.o -nogpulib -fgpu-rdc // RUN: clang-linker-wrapper --bitcode-library=amdgcn-amd-amdhsa=%t.amd.devicelib.bc \ // RUN: --host-triple=x86_64-unknown-linux-gnu --dry-run \ // RUN: --linker-path=/usr/bin/ld %t.amd.o -o a.out 2>&1 | FileCheck -check-prefix=CHECK-WRAPPER-AMD %s @@ -70,10 +81,11 @@ /// Test --bitcode-library with multi-target bc libraries. // RUN: %clangxx -fsycl -fsycl-targets=amdgcn-amd-amdhsa,nvptx64-nvidia-cuda \ // RUN: -Xsycl-target-backend=amdgcn-amd-amdhsa --offload-arch=gfx900 \ -// RUN: --offload-new-driver -c %s -o %t.multi.o -nocudalib -nogpulib -// RUN: clang-linker-wrapper --bitcode-library=amdgcn-amd-amdhsa=%t.amd.devicelib.bc --bitcode-library=nvptx64-nvidia-cuda=%t.nvptx.devicelib.bc --bitcode-library=nvptx64-nvidia-cuda=%t.nvptx.libspirv.bc \ +// RUN: -fno-sycl-libspirv -Wno-unsafe-libspirv-not-linked \ +// RUN: --offload-new-driver -c %s -o %t.multi.o -nocudalib -nogpulib -fgpu-rdc +// RUN: clang-linker-wrapper --bitcode-library=amdgcn-amd-amdhsa=%t.amd.devicelib.bc --bitcode-library=nvptx64-nvidia-cuda=%t.nvptx.devicelib.bc --bitcode-library=nvptx64-nvidia-cuda=%t.nvptx.libdummy.bc \ // RUN: --host-triple=x86_64-unknown-linux-gnu --dry-run \ // RUN: --linker-path=/usr/bin/ld %t.multi.o -o a.out 2>&1 | FileCheck -check-prefix=CHECK-WRAPPER-MULTI %s // CHECK-WRAPPER-MULTI: llvm-link{{.*}} {{.*}}.amd.devicelib.bc -// CHECK-WRAPPER-MULTI: llvm-link{{.*}} {{.*}}.nvptx.devicelib.bc {{.*}}.nvptx.libspirv.bc +// CHECK-WRAPPER-MULTI: llvm-link{{.*}} {{.*}}.nvptx.devicelib.bc {{.*}}.nvptx.libdummy.bc From c254acc7d62f03296b00979a22e8f75d272cb92d Mon Sep 17 00:00:00 2001 From: Filippo Barbari <121092059+fbarbari@users.noreply.github.com> Date: Thu, 4 Dec 2025 17:41:41 +0100 Subject: [PATCH 089/105] Added `--verbose` in the proper place in `compile.py` (#20825) When running `compile.py` (after `configure.py`) with the `--verbose` flag, the resulting cmake command is `cmake --build build -- deply-sycl-toolchain --verbose` which results in an error like this `/usr/bin/gmake: unrecognized option '--verbose'` when using Unix Makefiles as generator. To support both makefiles and ninja, a better and easier approach is to just place `--verbose` before the `--` in the final command. --- buildbot/compile.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/buildbot/compile.py b/buildbot/compile.py index 055abd6dab739..de5a776f35003 100644 --- a/buildbot/compile.py +++ b/buildbot/compile.py @@ -31,15 +31,18 @@ def do_compile(args): "cmake", "--build", abs_obj_dir, + ] + + if args.verbose: + cmake_cmd.append("--verbose") + + cmake_cmd += [ "--", args.build_target, "-j", str(cpu_count), ] - if args.verbose: - cmake_cmd.append("--verbose") - print("[Cmake Command]: {}".format(" ".join(cmake_cmd))) subprocess.check_call(cmake_cmd, cwd=abs_obj_dir) From fe61680b7bfbf81cffc87bb467436c74f1909523 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Dec 2025 17:03:31 +0000 Subject: [PATCH 090/105] Bump jws in /lldb/tools/lldb-dap (#20832) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps and [jws](https://github.com/brianloveswords/node-jws). These dependencies needed to be updated together. Updates `jws` from 3.2.2 to 3.2.3
Release notes

Sourced from jws's releases.

v3.2.3

Changed

  • Fix advisory GHSA-869p-cjfg-cm3x: createSign and createVerify now require that a non empty secret is provided (via opts.secret, opts.privateKey or opts.key) when using HMAC algorithms.
  • Upgrading JWA version to 1.4.2, addressing a compatibility issue for Node >= 25.
Changelog

Sourced from jws's changelog.

[3.2.3]

Changed

  • Fix advisory GHSA-869p-cjfg-cm3x: createSign and createVerify now require that a non empty secret is provided (via opts.secret, opts.privateKey or opts.key) when using HMAC algorithms.
  • Upgrading JWA version to 1.4.2, adressing a compatibility issue for Node >= 25.

[3.0.0]

Changed

2.0.0 - 2015-01-30

Changed

  • BREAKING: Default payload encoding changed from binary to utf8. utf8 is a is a more sensible default than binary because many payloads, as far as I can tell, will contain user-facing strings that could be in any language. (6b6de48)

  • Code reorganization, thanks @​fearphage! (7880050)

Added

  • Option in all relevant methods for encoding. For those few users that might be depending on a binary encoding of the messages, this is for them. (6b6de48)
Commits
  • 4f6e73f Merge commit from fork
  • bd0fea5 version 3.2.3
  • 7c3b4b4 Enhance tests for HMAC streaming sign and verify
  • a9b8ed9 Improve secretOrKey initialization in VerifyStream
  • 6707fde Improve secret handling in SignStream
  • See full diff in compare view
Maintainer changes

This version was pushed to npm by julien.wollscheid, a new releaser for jws since your current version.


Updates `jws` from 4.0.0 to 4.0.1
Release notes

Sourced from jws's releases.

v3.2.3

Changed

  • Fix advisory GHSA-869p-cjfg-cm3x: createSign and createVerify now require that a non empty secret is provided (via opts.secret, opts.privateKey or opts.key) when using HMAC algorithms.
  • Upgrading JWA version to 1.4.2, addressing a compatibility issue for Node >= 25.
Changelog

Sourced from jws's changelog.

[3.2.3]

Changed

  • Fix advisory GHSA-869p-cjfg-cm3x: createSign and createVerify now require that a non empty secret is provided (via opts.secret, opts.privateKey or opts.key) when using HMAC algorithms.
  • Upgrading JWA version to 1.4.2, adressing a compatibility issue for Node >= 25.

[3.0.0]

Changed

2.0.0 - 2015-01-30

Changed

  • BREAKING: Default payload encoding changed from binary to utf8. utf8 is a is a more sensible default than binary because many payloads, as far as I can tell, will contain user-facing strings that could be in any language. (6b6de48)

  • Code reorganization, thanks @​fearphage! (7880050)

Added

  • Option in all relevant methods for encoding. For those few users that might be depending on a binary encoding of the messages, this is for them. (6b6de48)
Commits
  • 4f6e73f Merge commit from fork
  • bd0fea5 version 3.2.3
  • 7c3b4b4 Enhance tests for HMAC streaming sign and verify
  • a9b8ed9 Improve secretOrKey initialization in VerifyStream
  • 6707fde Improve secret handling in SignStream
  • See full diff in compare view
Maintainer changes

This version was pushed to npm by julien.wollscheid, a new releaser for jws since your current version.


Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/intel/llvm/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- lldb/tools/lldb-dap/package-lock.json | 33 ++++++++++++++------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/lldb/tools/lldb-dap/package-lock.json b/lldb/tools/lldb-dap/package-lock.json index a9ee377615a2f..fb0cb76408d82 100644 --- a/lldb/tools/lldb-dap/package-lock.json +++ b/lldb/tools/lldb-dap/package-lock.json @@ -2183,48 +2183,48 @@ } }, "node_modules/jsonwebtoken/node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", + "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", "dev": true, "license": "MIT", "dependencies": { - "buffer-equal-constant-time": "1.0.1", + "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "node_modules/jsonwebtoken/node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.3.tgz", + "integrity": "sha512-byiJ0FLRdLdSVSReO/U4E7RoEyOCKnEnEPMjq3HxWtvzLsV08/i5RQKsFVNkCldrCaPr2vDNAOMsfs8T/Hze7g==", "dev": true, "license": "MIT", "dependencies": { - "jwa": "^1.4.1", + "jwa": "^1.4.2", "safe-buffer": "^5.0.1" } }, "node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", "dev": true, "license": "MIT", "dependencies": { - "buffer-equal-constant-time": "1.0.1", + "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", "dev": true, "license": "MIT", "dependencies": { - "jwa": "^2.0.0", + "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, @@ -2669,6 +2669,7 @@ "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, From 90fbcb18fe464387001f29abc702298dbecf0c78 Mon Sep 17 00:00:00 2001 From: Artur Gainullin Date: Thu, 4 Dec 2025 10:24:34 -0800 Subject: [PATCH 091/105] [SYCL][ABI-break] Promote breaking changes related to code location (#20802) --- sycl/include/sycl/detail/common.hpp | 26 --------------- .../ext/oneapi/experimental/cuda/builtins.hpp | 1 + sycl/source/detail/common.cpp | 32 ++----------------- sycl/test/abi/layout_handler.cpp | 8 ++--- sycl/test/abi/layout_tls_code_loc_t.cpp | 7 ++-- sycl/test/abi/sycl_symbols_windows.dump | 1 - sycl/test/abi/symbol_size_alignment.cpp | 4 --- 7 files changed, 11 insertions(+), 68 deletions(-) diff --git a/sycl/include/sycl/detail/common.hpp b/sycl/include/sycl/detail/common.hpp index a0476e21657a7..27e2b0560e81e 100644 --- a/sycl/include/sycl/detail/common.hpp +++ b/sycl/include/sycl/detail/common.hpp @@ -8,11 +8,6 @@ #pragma once -#ifndef __INTEL_PREVIEW_BREAKING_CHANGES -#ifndef __SYCL_DEVICE_ONLY__ -#include -#endif -#endif // #ifndef __INTEL_PREVIEW_BREAKING_CHANGES #include // for __SYCL_ALWAYS_INLINE #include // for __SYCL_EXPORT @@ -101,14 +96,8 @@ struct code_location { private: const char *MFileName; const char *MFunctionName; -#ifndef __INTEL_PREVIEW_BREAKING_CHANGES - // For preserving layout of handler class - unsigned long MLineNo; - unsigned long MColumnNo; -#else uint32_t MLineNo; uint32_t MColumnNo; -#endif }; /// @brief Data type that manages the code_location information in TLS @@ -151,22 +140,9 @@ class __SYCL_EXPORT tls_code_loc_t { /// @param CodeLoc The code location information to set up the TLS slot with. tls_code_loc_t(const detail::code_location &CodeLoc); -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES // Used to maintain global state (GCodeLocTLS), so we do not want to copy tls_code_loc_t(const tls_code_loc_t &) = delete; tls_code_loc_t &operator=(const tls_code_loc_t &) = delete; -#else - tls_code_loc_t &operator=(const tls_code_loc_t &) { - // Should never be called. In PREVIEW we marked it as deleted, but - // before ABI breaking change we need to keep it for backward compatibility. - assert(false && "tls_code_loc_t should not be copied"); -#ifndef __SYCL_DEVICE_ONLY__ - throw sycl::exception(sycl::make_error_code(sycl::errc::invalid), - "tls_code_loc_t should not be copied"); -#endif - return *this; - } -#endif // __INTEL_PREVIEW_BREAKING_CHANGES /// If the code location is set up by this instance, reset it. ~tls_code_loc_t(); @@ -179,10 +155,8 @@ class __SYCL_EXPORT tls_code_loc_t { bool isToplevel() const { return !MLocalScope; } private: -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES // Cache the TLS location to decrease amount of TLS accesses. detail::code_location &CodeLocTLSRef; -#endif // __INTEL_PREVIEW_BREAKING_CHANGES // The flag that is used to determine if the object is in a local scope or in // the top level scope. bool MLocalScope = true; diff --git a/sycl/include/sycl/ext/oneapi/experimental/cuda/builtins.hpp b/sycl/include/sycl/ext/oneapi/experimental/cuda/builtins.hpp index e0b8fbb861e0a..fc9638c382cc5 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/cuda/builtins.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/cuda/builtins.hpp @@ -10,6 +10,7 @@ #define SYCL_EXT_ONEAPI_CUDA_TEX_CACHE_READ 1 +#include #include #if defined(_WIN32) || defined(_WIN64) diff --git a/sycl/source/detail/common.cpp b/sycl/source/detail/common.cpp index f05b37d9986ce..1c7669bbf3652 100644 --- a/sycl/source/detail/common.cpp +++ b/sycl/source/detail/common.cpp @@ -24,18 +24,10 @@ static thread_local detail::code_location GCodeLocTLS = {}; /// check and see if code location object is available. If not, continue with /// instrumentation as needed tls_code_loc_t::tls_code_loc_t() -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES : CodeLocTLSRef(GCodeLocTLS), // Check TLS to see if a previously stashed code_location object is // available; if so, we are in a local scope. - MLocalScope(CodeLocTLSRef.fileName() && CodeLocTLSRef.functionName()) -#else - : // Check TLS to see if a previously stashed code_location object is - // available; if so, we are in a local scope. - MLocalScope(GCodeLocTLS.fileName() && GCodeLocTLS.functionName()) -#endif // __INTEL_PREVIEW_BREAKING_CHANGES -{ -} + MLocalScope(CodeLocTLSRef.fileName() && CodeLocTLSRef.functionName()) {} ur_code_location_t codeLocationCallback(void *) { ur_code_location_t codeloc; @@ -53,7 +45,6 @@ ur_code_location_t codeLocationCallback(void *) { /// location has been stashed in the TLS at a higher level. If not, we have the /// code location information that must be active for the current calling scope. tls_code_loc_t::tls_code_loc_t(const detail::code_location &CodeLoc) -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES : CodeLocTLSRef(GCodeLocTLS), // Check TLS to see if a previously stashed code_location object is // available; if so, then don't overwrite the previous information as we @@ -62,36 +53,17 @@ tls_code_loc_t::tls_code_loc_t(const detail::code_location &CodeLoc) if (!MLocalScope) // Update the TLS information with the code_location information CodeLocTLSRef = CodeLoc; -#else - : // Check TLS to see if a previously stashed code_location object is - // available; if so, then don't overwrite the previous information as we - // are still in scope of the instrumented function. - MLocalScope(GCodeLocTLS.fileName() && GCodeLocTLS.functionName()) { - if (!MLocalScope) - // Update the TLS information with the code_location information - GCodeLocTLS = CodeLoc; -#endif // __INTEL_PREVIEW_BREAKING_CHANGES } /// @brief If we are the top lovel scope, reset the code location info tls_code_loc_t::~tls_code_loc_t() { // Only reset the TLS data if the top level function is going out of scope if (!MLocalScope) { -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES CodeLocTLSRef = {}; -#else - GCodeLocTLS = {}; -#endif // __INTEL_PREVIEW_BREAKING_CHANGES } } -const detail::code_location &tls_code_loc_t::query() { -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES - return CodeLocTLSRef; -#else - return GCodeLocTLS; -#endif // __INTEL_PREVIEW_BREAKING_CHANGES -} +const detail::code_location &tls_code_loc_t::query() { return CodeLocTLSRef; } } // namespace detail } // namespace _V1 diff --git a/sycl/test/abi/layout_handler.cpp b/sycl/test/abi/layout_handler.cpp index 8c749786fd67e..7f4cb8248530a 100644 --- a/sycl/test/abi/layout_handler.cpp +++ b/sycl/test/abi/layout_handler.cpp @@ -65,8 +65,8 @@ void foo() { // CHECK-NEXT: 144 | struct sycl::detail::code_location MCodeLoc // CHECK-NEXT: 144 | const char * MFileName // CHECK-NEXT: 152 | const char * MFunctionName -// CHECK-NEXT: 160 | unsigned long MLineNo -// CHECK-NEXT: 168 | unsigned long MColumnNo -// CHECK-NEXT: | [sizeof=176, dsize=176, align=8, -// CHECK-NEXT: | nvsize=176, nvalign=8] +// CHECK-NEXT: 160 | uint32_t MLineNo +// CHECK-NEXT: 164 | uint32_t MColumnNo +// CHECK-NEXT: | [sizeof=168, dsize=168, align=8, +// CHECK-NEXT: | nvsize=168, nvalign=8] // clang-format on \ No newline at end of file diff --git a/sycl/test/abi/layout_tls_code_loc_t.cpp b/sycl/test/abi/layout_tls_code_loc_t.cpp index ec1ffc18feb97..0c5dfd8f6ee8e 100644 --- a/sycl/test/abi/layout_tls_code_loc_t.cpp +++ b/sycl/test/abi/layout_tls_code_loc_t.cpp @@ -9,6 +9,7 @@ void foo(sycl::detail::tls_code_loc_t) {} // CHECK: 0 | class sycl::detail::tls_code_loc_t -// CHECK-NEXT: 0 | _Bool MLocalScope -// CHECK-NEXT: | [sizeof=1, dsize=1, align=1, -// CHECK-NEXT: | nvsize=1, nvalign=1] +// CHECK-NEXT: 0 | detail::code_location & CodeLocTLSRef +// CHECK-NEXT: 8 | _Bool MLocalScope +// CHECK-NEXT: | [sizeof=16, dsize=9, align=8, +// CHECK-NEXT: | nvsize=9, nvalign=8] diff --git a/sycl/test/abi/sycl_symbols_windows.dump b/sycl/test/abi/sycl_symbols_windows.dump index c756587fc1621..2104972ee6272 100644 --- a/sycl/test/abi/sycl_symbols_windows.dump +++ b/sycl/test/abi/sycl_symbols_windows.dump @@ -586,7 +586,6 @@ ??4sampler@_V1@sycl@@QEAAAEAV012@AEBV012@@Z ??4stream@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z ??4stream@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4tls_code_loc_t@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z ??8context@_V1@sycl@@QEBA_NAEBV012@@Z ??8device@_V1@sycl@@QEBA_NAEBV012@@Z ??8device_image_plain@detail@_V1@sycl@@QEBA_NAEBV0123@@Z diff --git a/sycl/test/abi/symbol_size_alignment.cpp b/sycl/test/abi/symbol_size_alignment.cpp index 5f0279580e657..41466d5dd6b2a 100644 --- a/sycl/test/abi/symbol_size_alignment.cpp +++ b/sycl/test/abi/symbol_size_alignment.cpp @@ -52,11 +52,7 @@ int main() { check(); check(); check(); -#ifdef _MSC_VER check(); -#else - check(); -#endif check, 16, 8>(); check(); check(); From 56a1ca3071425ed0c41bbcdc675cee56efee80a7 Mon Sep 17 00:00:00 2001 From: Artur Gainullin Date: Thu, 4 Dec 2025 15:05:51 -0800 Subject: [PATCH 092/105] [SYCL] Promote breaking changes for logical operations (#20816) --- sycl/include/sycl/functional.hpp | 19 ------------------- sycl/test/basic_tests/logical_operations.cpp | 8 -------- .../logical_or_and_group_algorithms.cpp | 2 +- 3 files changed, 1 insertion(+), 28 deletions(-) diff --git a/sycl/include/sycl/functional.hpp b/sycl/include/sycl/functional.hpp index e0201e0a64a40..0f7acdeb93c19 100644 --- a/sycl/include/sycl/functional.hpp +++ b/sycl/include/sycl/functional.hpp @@ -20,28 +20,9 @@ template using multiplies = std::multiplies; template using bit_and = std::bit_and; template using bit_or = std::bit_or; template using bit_xor = std::bit_xor; - -// std:logical_and/std::logical_or with a non-void type returns bool, -// sycl requires returning T. -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES template struct logical_and : std::logical_and {}; template struct logical_or : std::logical_or {}; -#else -template struct logical_and { - T operator()(const T &lhs, const T &rhs) const { return lhs && rhs; } -}; - -template <> struct logical_and : std::logical_and {}; - -template struct logical_or { - T operator()(const T &lhs, const T &rhs) const { return lhs || rhs; } -}; - -template <> struct logical_or : std::logical_or {}; - -#endif - // sycl::minimum definition should be consistent with std::min template struct minimum { T operator()(const T &lhs, const T &rhs) const { diff --git a/sycl/test/basic_tests/logical_operations.cpp b/sycl/test/basic_tests/logical_operations.cpp index e040470cecd04..ccd052ba323ba 100644 --- a/sycl/test/basic_tests/logical_operations.cpp +++ b/sycl/test/basic_tests/logical_operations.cpp @@ -1,4 +1,3 @@ -// RUN: %clang -fpreview-breaking-changes -fsycl -fsyntax-only %s // RUN: %clang -fsycl -fsyntax-only %s #include @@ -10,16 +9,9 @@ int main() { const auto logicalOr = sycl::logical_or(); const auto logicalAndVoid = sycl::logical_and(); const auto logicalOrVoid = sycl::logical_or(); -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); -#else - static_assert(std::is_same_v); - static_assert(std::is_same_v); - static_assert(std::is_same_v); - static_assert(std::is_same_v); -#endif return 0; } diff --git a/sycl/test/group_algorithms/logical_or_and_group_algorithms.cpp b/sycl/test/group_algorithms/logical_or_and_group_algorithms.cpp index 5553efe364fbc..15ff3a7e5bd0b 100644 --- a/sycl/test/group_algorithms/logical_or_and_group_algorithms.cpp +++ b/sycl/test/group_algorithms/logical_or_and_group_algorithms.cpp @@ -1,4 +1,4 @@ -// RUN: %clangxx -fsycl -Xclang -verify=expected -Xclang -verify-ignore-unexpected=note -fpreview-breaking-changes -fsyntax-only -fsycl-device-only -ferror-limit=0 %s +// RUN: %clangxx -fsycl -Xclang -verify=expected -Xclang -verify-ignore-unexpected=note -fsyntax-only -fsycl-device-only -ferror-limit=0 %s #include From 3f39f082c9ef8ed8f14975f859f84ab61d60f8ce Mon Sep 17 00:00:00 2001 From: Artur Gainullin Date: Thu, 4 Dec 2025 15:41:31 -0800 Subject: [PATCH 093/105] [SYCL][NFC] Remove old unused source file (#20812) This source file is not compiled into libsycl.so --- sycl/source/queue_v3.cpp | 72 ---------------------------------------- 1 file changed, 72 deletions(-) delete mode 100644 sycl/source/queue_v3.cpp diff --git a/sycl/source/queue_v3.cpp b/sycl/source/queue_v3.cpp deleted file mode 100644 index 2196e94fffa45..0000000000000 --- a/sycl/source/queue_v3.cpp +++ /dev/null @@ -1,72 +0,0 @@ -//==-------------- queue_v3.cpp --------------------------------------------==// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -// This file implements queue constructors for earlier releases and file -// queue.cpp implements queue constructors for the current release. This enables -// different default queue implementations for old and current user code, a -// feature needed on some platforms. This temporary and will be removed in the -// next release. - -#define __SYCL_EXT_ONEAPI_BACKEND_LEVEL_ZERO_V3 -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -namespace sycl { -inline namespace _V1 { - -queue::queue(const context &SyclContext, const device_selector &DeviceSelector, - const async_handler &AsyncHandler, const property_list &PropList) { - - const std::vector Devs = SyclContext.get_devices(); - - auto Comp = [&DeviceSelector](const device &d1, const device &d2) { - return DeviceSelector(d1) < DeviceSelector(d2); - }; - - const device &SyclDevice = *std::max_element(Devs.begin(), Devs.end(), Comp); - - impl = std::make_shared( - detail::getSyclObjImpl(SyclDevice), detail::getSyclObjImpl(SyclContext), - AsyncHandler, PropList, true); -} - -queue::queue(const context &SyclContext, const device &SyclDevice, - const async_handler &AsyncHandler, const property_list &PropList) { - impl = std::make_shared( - detail::getSyclObjImpl(SyclDevice), detail::getSyclObjImpl(SyclContext), - AsyncHandler, PropList, true); -} - -queue::queue(const device &SyclDevice, const async_handler &AsyncHandler, - const property_list &PropList) { - impl = std::make_shared( - detail::getSyclObjImpl(SyclDevice), AsyncHandler, PropList, true); -} - -queue::queue(const context &SyclContext, const device_selector &deviceSelector, - const property_list &PropList) - : queue(SyclContext, deviceSelector, - detail::getSyclObjImpl(SyclContext)->get_async_handler(), - PropList) {} - -queue::queue(const context &SyclContext, const device &SyclDevice, - const property_list &PropList) - : queue(SyclContext, SyclDevice, - detail::getSyclObjImpl(SyclContext)->get_async_handler(), - PropList) {} - -} // namespace _V1 -} // namespace sycl From b1a75dd437732e1518bd3cb449b375a8c95f7cb4 Mon Sep 17 00:00:00 2001 From: Michael Aziz Date: Fri, 5 Dec 2025 02:33:13 -0500 Subject: [PATCH 094/105] [SYCL] Implement coverage instrumentation for device code (#20710) This PR reapplies the changes from #20206. It also includes the following new changes: 1. The coverage tools were moved from compiler dependencies to E2E test dependencies so that the SYCL toolchain can be be built without `compiler-rt`. 2. A definition of `__sycl_increment_profile_counters` was added to fix build errors when building with Apple Clang. --------- Signed-off-by: Michael Aziz Co-authored-by: Steffen Larsen --- buildbot/configure.py | 2 +- clang/lib/CodeGen/BackendUtil.cpp | 3 + clang/lib/Driver/ToolChains/Clang.cpp | 3 + clang/lib/Driver/ToolChains/SYCL.cpp | 6 +- clang/test/Driver/sycl-profile-update.cpp | 4 + clang/test/Driver/sycl-unsupported.cpp | 13 -- .../lib/profile/InstrProfilingRuntime.cpp | 16 +++ .../Instrumentation/InstrProfiling.cpp | 31 ++++ .../InstrProfiling/coverage_sycl.ll | 29 ++++ sycl/doc/design/DeviceCodeCoverage.md | 71 ++++++++++ sycl/doc/index.rst | 1 + sycl/source/detail/context_impl.cpp | 5 + sycl/source/detail/device_global_map.hpp | 15 +- .../source/detail/device_global_map_entry.cpp | 133 +++++++++++++++--- .../source/detail/device_global_map_entry.hpp | 11 +- .../program_manager/program_manager.cpp | 14 ++ .../program_manager/program_manager.hpp | 5 + sycl/test-e2e/CMakeLists.txt | 3 + .../Coverage/device_code_coverage.cpp | 64 +++++++++ 19 files changed, 386 insertions(+), 43 deletions(-) create mode 100644 clang/test/Driver/sycl-profile-update.cpp create mode 100644 llvm/test/Instrumentation/InstrProfiling/coverage_sycl.ll create mode 100644 sycl/doc/design/DeviceCodeCoverage.md create mode 100644 sycl/test-e2e/Coverage/device_code_coverage.cpp diff --git a/buildbot/configure.py b/buildbot/configure.py index 95a05b54a0e99..5bddddec67a06 100644 --- a/buildbot/configure.py +++ b/buildbot/configure.py @@ -21,7 +21,7 @@ def do_configure(args, passthrough_args): if not os.path.isdir(abs_obj_dir): os.makedirs(abs_obj_dir) - llvm_external_projects = "sycl;llvm-spirv;opencl;xpti;xptifw" + llvm_external_projects = "sycl;llvm-spirv;opencl;xpti;xptifw;compiler-rt" # libdevice build requires a working SYCL toolchain, which is not the case # with macOS target right now. diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index cef177d76af7b..60ed7518e903e 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -1213,6 +1213,9 @@ void EmitAssemblyHelper::RunOptimizationPipeline( PB.registerPipelineStartEPCallback( [Options](ModulePassManager &MPM, OptimizationLevel Level) { MPM.addPass(InstrProfilingLoweringPass(*Options, false)); + // The profiling pass adds SYCL device globals so we need to run + // the compile-time properties pass to update the metadata. + MPM.addPass(CompileTimePropertiesPass()); }); // TODO: Consider passing the MemoryProfileOutput to the pass builder via diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 2b6590f2ede33..5a6baf0e5906e 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5423,6 +5423,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-fsycl-is-device"); CmdArgs.push_back("-fdeclare-spirv-builtins"); + // Set the atomic profile update flag to increment counters atomically. + CmdArgs.push_back("-fprofile-update=atomic"); + // Set O2 optimization level by default if (!Args.getLastArg(options::OPT_O_Group)) CmdArgs.push_back("-O2"); diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp index ca9c68dedcde7..a4db63c4fb52f 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -1371,11 +1371,7 @@ static ArrayRef getUnsupportedOpts() { options::OPT_fno_profile_generate, // -f[no-]profile-generate options::OPT_ftest_coverage, options::OPT_fno_test_coverage, // -f[no-]test-coverage - options::OPT_fcoverage_mapping, - options::OPT_coverage, // --coverage - options::OPT_fno_coverage_mapping, // -f[no-]coverage-mapping - options::OPT_fprofile_instr_generate, - options::OPT_fprofile_instr_generate_EQ, + options::OPT_coverage, // --coverage options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs, // -f[no-]profile-arcs options::OPT_fno_profile_instr_generate, // -f[no-]profile-instr-generate diff --git a/clang/test/Driver/sycl-profile-update.cpp b/clang/test/Driver/sycl-profile-update.cpp new file mode 100644 index 0000000000000..2d11cc6378047 --- /dev/null +++ b/clang/test/Driver/sycl-profile-update.cpp @@ -0,0 +1,4 @@ +// Ensure that the profile update mode is set to 'atomic' when compiling SYCL code. +// RUN: %clangxx -### -fsycl -fprofile-instr-generate -fcoverage-mapping %s 2>&1 | FileCheck %s +// RUN: %clang_cl -### -fsycl -fprofile-instr-generate -fcoverage-mapping %s 2>&1 | FileCheck %s +// CHECK: "-fprofile-update=atomic" diff --git a/clang/test/Driver/sycl-unsupported.cpp b/clang/test/Driver/sycl-unsupported.cpp index a2c09f615209a..044c1805307bf 100644 --- a/clang/test/Driver/sycl-unsupported.cpp +++ b/clang/test/Driver/sycl-unsupported.cpp @@ -19,13 +19,6 @@ // RUN: -DOPT_CC1=-debug-info-kind=line-tables-only \ // RUN: -check-prefixes=UNSUPPORTED_OPT_DIAG,UNSUPPORTED_OPT -// RUN: %clangxx -fsycl -fprofile-instr-generate -### %s 2>&1 \ -// RUN: | FileCheck %s -DARCH=spir64 -DOPT=-fprofile-instr-generate \ -// RUN: -DOPT_CC1=-fprofile-instrument=clang \ -// RUN: -check-prefixes=UNSUPPORTED_OPT_DIAG,UNSUPPORTED_OPT -// RUN: %clangxx -fsycl -fcoverage-mapping \ -// RUN: -fprofile-instr-generate -### %s 2>&1 \ -// RUN: | FileCheck %s -DARCH=spir64 -DOPT=-fcoverage-mapping // RUN: %clangxx -fsycl -ftest-coverage -### %s 2>&1 \ // RUN: | FileCheck %s -DARCH=spir64 -DOPT=-ftest-coverage \ // RUN: -DOPT_CC1=-coverage-notes-file \ @@ -49,12 +42,6 @@ // RUN: | FileCheck %s -DARCH=spir64 -DOPT=--coverage \ // RUN: -DOPT_CC1=-coverage-notes-file \ // RUN: -check-prefixes=UNSUPPORTED_OPT_DIAG,UNSUPPORTED_OPT -// Check to make sure our '-fsanitize=address' exception isn't triggered by a -// different option -// RUN: %clangxx -fsycl -fprofile-instr-generate=address -### %s 2>&1 \ -// RUN: | FileCheck %s -DARCH=spir64 -DOPT=-fprofile-instr-generate=address \ -// RUN: -DOPT_CC1=-fprofile-instrument=clang \ -// RUN: -check-prefixes=UNSUPPORTED_OPT_DIAG,UNSUPPORTED_OPT // CHECK: ignoring '[[OPT]]' option as it is not currently supported for target '[[ARCH]]{{.*}}'; only supported for host compilation [-Woption-ignored] // CHECK-NOT: clang{{.*}} "-fsycl-is-device"{{.*}} "[[OPT]]{{.*}}" diff --git a/compiler-rt/lib/profile/InstrProfilingRuntime.cpp b/compiler-rt/lib/profile/InstrProfilingRuntime.cpp index 6b2ce97001735..ed1f277c96641 100644 --- a/compiler-rt/lib/profile/InstrProfilingRuntime.cpp +++ b/compiler-rt/lib/profile/InstrProfilingRuntime.cpp @@ -10,6 +10,22 @@ extern "C" { #include "InstrProfiling.h" +void __sycl_increment_profile_counters(uint64_t FnHash, size_t NumCounters, + const uint64_t *Increments) { + for (const __llvm_profile_data *DataVar = __llvm_profile_begin_data(); + DataVar < __llvm_profile_end_data(); DataVar++) { + if (DataVar->NameRef != FnHash || DataVar->NumCounters != NumCounters) + continue; + + uint64_t *const Counters = reinterpret_cast( + reinterpret_cast(DataVar) + + reinterpret_cast(DataVar->CounterPtr)); + for (size_t i = 0; i < NumCounters; i++) + Counters[i] += Increments[i]; + break; + } +} + static int RegisterRuntime() { __llvm_profile_initialize(); #ifdef _AIX diff --git a/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp b/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp index 8c8d16a6e3d25..a99c53df1f308 100644 --- a/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp +++ b/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp @@ -994,6 +994,9 @@ bool InstrLowerer::lower() { if (!NeedsRuntimeHook && ContainsProfiling) emitRuntimeHook(); + if (M.getTargetTriple().isSPIR()) + return true; + emitRegistration(); emitUses(); emitInitialization(); @@ -1108,6 +1111,18 @@ GlobalVariable *InstrLowerer::getOrCreateBiasVar(StringRef VarName) { } Value *InstrLowerer::getCounterAddress(InstrProfCntrInstBase *I) { + if (M.getTargetTriple().isSPIR()) { + auto *Counters = getOrCreateRegionCounters(I); + IRBuilder<> Builder(I); + auto *Addr = Builder.CreateLoad(PointerType::get(M.getContext(), 1), + Counters, "pgocount.addr"); + const std::uint64_t Index = I->getIndex()->getZExtValue(); + if (Index == 0) + return Addr; + auto *Offset = Builder.getInt64(Index * sizeof(std::uint64_t)); + return Builder.CreatePtrAdd(Addr, Offset, "pgocount.offset"); + } + auto *Counters = getOrCreateRegionCounters(I); IRBuilder<> Builder(I); @@ -1648,6 +1663,22 @@ InstrLowerer::getOrCreateRegionBitmaps(InstrProfMCDCBitmapInstBase *Inc) { GlobalVariable * InstrLowerer::createRegionCounters(InstrProfCntrInstBase *Inc, StringRef Name, GlobalValue::LinkageTypes Linkage) { + if (M.getTargetTriple().isSPIR()) { + uint64_t NumCounters = Inc->getNumCounters()->getZExtValue(); + auto &Ctx = M.getContext(); + auto *PtrTy = PointerType::get(Ctx, 1); + auto *IntTy = Type::getInt64Ty(Ctx); + auto *StructTy = StructType::get(Ctx, {PtrTy, IntTy}); + GlobalVariable *GV = new GlobalVariable( + M, StructTy, false, Linkage, Constant::getNullValue(StructTy), Name); + const std::uint64_t FnHash = IndexedInstrProf::ComputeHash( + getPGOFuncNameVarInitializer(Inc->getName())); + const std::string FnName = std::string{"__profc_"} + std::to_string(FnHash); + GV->addAttribute("sycl-unique-id", FnName); + GV->addAttribute("sycl-device-global-size", Twine(NumCounters * 8).str()); + return GV; + } + uint64_t NumCounters = Inc->getNumCounters()->getZExtValue(); auto &Ctx = M.getContext(); GlobalVariable *GV; diff --git a/llvm/test/Instrumentation/InstrProfiling/coverage_sycl.ll b/llvm/test/Instrumentation/InstrProfiling/coverage_sycl.ll new file mode 100644 index 0000000000000..e2e5688432e0e --- /dev/null +++ b/llvm/test/Instrumentation/InstrProfiling/coverage_sycl.ll @@ -0,0 +1,29 @@ +; RUN: opt < %s -passes=instrprof -S | FileCheck %s + +target triple = "spir64-unknown-unknown" + +@__profn_foo = private constant [3 x i8] c"foo" +; CHECK: @__profc_foo = private global { ptr addrspace(1), i64 } zeroinitializer, section "__llvm_prf_cnts", comdat #0 +; CHECK: @__profd_foo = private global { i64, i64, i64, i64, ptr, ptr, i32, [3 x i16], i32 } { i64 {{.*}}, i64 {{.*}}, i64 sub (i64 ptrtoint (ptr @__profc_foo to i64) +@__profn_bar = private constant [3 x i8] c"bar" +; CHECK: @__profc_bar = private global { ptr addrspace(1), i64 } zeroinitializer, section "__llvm_prf_cnts", comdat #1 +; CHECK: @__profd_bar = private global { i64, i64, i64, i64, ptr, ptr, i32, [3 x i16], i32 } { i64 {{.*}}, i64 {{.*}}, i64 sub (i64 ptrtoint (ptr @__profc_bar to i64) + +; CHECK: @__llvm_prf_nm = {{.*}} section "__llvm_prf_names" + +define void @_Z3foov() { + call void @llvm.instrprof.cover(ptr @__profn_foo, i64 12345678, i32 1, i32 0) + ; CHECK: %pgocount.addr = load ptr addrspace(1), ptr @__profc_foo, align 8 + ; CHECK: store i8 0, ptr addrspace(1) %pgocount.addr, align 1 + ret void +} + +%class.A = type { ptr } +define dso_local void @_Z3barv(ptr nocapture nonnull align 8 %0) unnamed_addr #0 align 2 { + call void @llvm.instrprof.cover(ptr @__profn_bar, i64 87654321, i32 1, i32 0) + ; CHECK: %pgocount.addr = load ptr addrspace(1), ptr @__profc_bar, align 8 + ; CHECK: store i8 0, ptr addrspace(1) %pgocount.addr, align 1 + ret void +} + +declare void @llvm.instrprof.cover(ptr, i64, i32, i32) diff --git a/sycl/doc/design/DeviceCodeCoverage.md b/sycl/doc/design/DeviceCodeCoverage.md new file mode 100644 index 0000000000000..623023e703ac5 --- /dev/null +++ b/sycl/doc/design/DeviceCodeCoverage.md @@ -0,0 +1,71 @@ +# Design for Device-side Code Coverage + +## Overview + +This document describes the design and implementation of device-side code coverage for SYCL, extending Clang's source-based code coverage to support device code. The approach leverages the existing SYCL device global infrastructure, as detailed in the [DeviceGlobal.md](DeviceGlobal.md) design document, to enable collection and aggregation of coverage data from device kernels. + +## Design Details + +### Profiling Counter Representation + +Profiling counters for code coverage are lowered by the compiler as device globals. Specifically, the `InstrProfilingLoweringPass` is modified so that, when targeting SPIR-V, coverage counters are represented as pointers to USM buffers, matching the representation of other SYCL device globals. This indirection allows counters to be relocatable and managed consistently with other device-side global variables. + +Each counter is annotated with a unique identifier (`sycl-unique-id`) of the form `__profc_`, where `` is a 64-bit unsigned integer uniquely identifying the instrumented function. The counter's size is also recorded via the `sycl-device-global-size` attribute. These attributes ensure that counters are discoverable and manageable by the SYCL runtime and integration headers/footers. + +The profile counter device global is represented as an array of 8-byte integers (`std::uint64_t`). The number of elements in this array corresponds to the number of regions in the function being instrumented, where a region typically represents a distinct code branch or block. The size of the device global variable is therefore determined by multiplying the number of regions by eight bytes, and this value is recorded in the `sycl-device-global-size` attribute for use by the runtime and integration logic. + +### Integration with Device Global Infrastructure + +The device global infrastructure, as described in [DeviceGlobal.md](DeviceGlobal.md), provides mechanisms for mapping host and device instances of global variables, managing their lifetimes, and facilitating data transfer. Device-side coverage counters are treated as a special class of device globals: + +- They use the shared allocation type rather than the device allocation type for the underlying USM memory. +- They do not have corresponding `device_global` declarations in host code. +- Their lifetime and cleanup are managed via the device global map, with integration footer code ensuring registration and deregistration. + +### Runtime Handling and Data Aggregation + +When a device global entry corresponding to a coverage counter is released (e.g., when a device image is unloaded), the SYCL runtime aggregates the values from the device-side counter into the equivalent host-side counter. Equivalence is determined by matching both the `` and the number of counter regions. If no matching host-side counter exists—typically due to differences in code between host and device caused by the `__SYCL_DEVICE_ONLY__` macro—the device-side counter values are discarded. + +The aggregation is performed by invoking a new function in the compiler runtime, `__sycl_increment_profile_counters`, which is weakly linked to accommodate optional runtime availability. This function accepts the ``, the number of regions, and the increment values, and updates the host-side counters accordingly. At program exit, the final profile data reflects the sum of host and device coverage counters. + +### Compiler and Runtime Changes + +#### Compiler Frontend + +- The lowering pass for coverage counters is updated to emit device globals with the appropriate attributes and indirection. +- Integration headers and footers are updated to register device global counters with the runtime, using the unique identifier and size. + +#### SYCL Runtime + +- Device globals with IDs matching the `__profc_` pattern are recognized as coverage counters. +- USM allocation and management for counters is handled as for other device globals, but without host-side declarations. +- Upon cleanup, device-side counter values are aggregated into host-side counters via the runtime API. + +#### Compiler Runtime + +- The new function `__sycl_increment_profile_counters` is introduced to update host-side counters. +- The function is weakly linked to allow for optional inclusion. + +### Limitations and Considerations + +- The feature is currently implemented only for SPIR-V targets; CUDA and HIP backends are not supported. +- Devices lacking support for device globals cannot utilize device-side code coverage. +- Differences in code between host and device (e.g., due to `__SYCL_DEVICE_ONLY__`) may prevent aggregation of coverage data for some functions. +- The design relies on the robustness of the device global infrastructure for correct mapping and lifetime management. + +## Relationship to Device Global Design + +This feature is built upon the mechanisms described in [DeviceGlobal.md](DeviceGlobal.md), including: + +- Use of unique string identifiers (`sycl-unique-id`) for mapping and management. +- USM-based allocation and zero-initialization of device-side storage. +- Integration header/footer registration for host-device correlation. +- Runtime database for device global management and lookup. + +The code coverage counters are a specialized use case of device globals, with additional logic for aggregation and profile generation. + +## References + +- [Implementation design for SYCL device globals](DeviceGlobal.md) +- [Clang Source-based Code Coverage](https://clang.llvm.org/docs/SourceBasedCodeCoverage.html) +- [SYCL Specification](https://registry.khronos.org/SYCL/specs/sycl-2020/html/sycl-2020.html) diff --git a/sycl/doc/index.rst b/sycl/doc/index.rst index fa885e8cdb000..8197a8dac38e8 100644 --- a/sycl/doc/index.rst +++ b/sycl/doc/index.rst @@ -39,6 +39,7 @@ Design Documents for the oneAPI DPC++ Compiler design/ParallelForRangeRounding design/SYCLInstrumentationUsingXPTI design/ITTAnnotations + design/DeviceCodeCoverage design/DeviceGlobal design/CompileTimeProperties design/HostPipes diff --git a/sycl/source/detail/context_impl.cpp b/sycl/source/detail/context_impl.cpp index 59044782a43ce..053597fbc857e 100644 --- a/sycl/source/detail/context_impl.cpp +++ b/sycl/source/detail/context_impl.cpp @@ -128,6 +128,11 @@ context_impl::~context_impl() { if (DGEntry != nullptr) DGEntry->removeAssociatedResources(this); } + // Free all profile counter USM allocations associated with this context. + for (DeviceGlobalMapEntry *DGEntry : + detail::ProgramManager::getInstance() + .getProfileCounterDeviceGlobalEntries(this)) + DGEntry->cleanupProfileCounter(this); MCachedLibPrograms.clear(); // TODO catch an exception and put it to list of asynchronous exceptions getAdapter().call_nocheck(MContext); diff --git a/sycl/source/detail/device_global_map.hpp b/sycl/source/detail/device_global_map.hpp index ea255bacda6ba..46682b06aff5f 100644 --- a/sycl/source/detail/device_global_map.hpp +++ b/sycl/source/detail/device_global_map.hpp @@ -75,7 +75,10 @@ class DeviceGlobalMap { // cannot be set until registration happens. auto EntryUPtr = std::make_unique( DeviceGlobal->Name, Img, TypeSize, DeviceImageScopeDecorated); - MDeviceGlobals.emplace(DeviceGlobal->Name, std::move(EntryUPtr)); + auto NewEntry = + MDeviceGlobals.emplace(DeviceGlobal->Name, std::move(EntryUPtr)); + if (NewEntry.first->second->isProfileCounter()) + MProfileCounterDeviceGlobals.push_back(NewEntry.first->second.get()); } } } @@ -114,6 +117,8 @@ class DeviceGlobalMap { auto EntryUPtr = std::make_unique(UniqueId, DeviceGlobalPtr); auto NewEntry = MDeviceGlobals.emplace(UniqueId, std::move(EntryUPtr)); + if (NewEntry.first->second->isProfileCounter()) + MProfileCounterDeviceGlobals.push_back(NewEntry.first->second.get()); MPtr2DeviceGlobal.insert({DeviceGlobalPtr, NewEntry.first->second.get()}); } @@ -154,6 +159,11 @@ class DeviceGlobalMap { } } + std::vector getProfileCounterEntries() { + std::lock_guard DeviceGlobalsGuard(MDeviceGlobalsMutex); + return MProfileCounterDeviceGlobals; + } + const std::unordered_map getPointerMap() const { return MPtr2DeviceGlobal; @@ -177,6 +187,9 @@ class DeviceGlobalMap { MDeviceGlobals; std::unordered_map MPtr2DeviceGlobal; + // List of profile counter device globals. + std::vector MProfileCounterDeviceGlobals; + /// Protects MDeviceGlobals and MPtr2DeviceGlobal. std::mutex MDeviceGlobalsMutex; }; diff --git a/sycl/source/detail/device_global_map_entry.cpp b/sycl/source/detail/device_global_map_entry.cpp index d31d9e8999348..cc92acbf6d581 100644 --- a/sycl/source/detail/device_global_map_entry.cpp +++ b/sycl/source/detail/device_global_map_entry.cpp @@ -56,6 +56,93 @@ OwnedUrEvent DeviceGlobalUSMMem::getInitEvent(adapter_impl &Adapter) { } } +bool DeviceGlobalMapEntry::isAvailableInContext( + const context_impl *CtxImpl) const { + std::lock_guard Lock{MDeviceToUSMPtrMapMutex}; + return std::any_of( + MDeviceToUSMPtrMap.begin(), MDeviceToUSMPtrMap.end(), + [CtxImpl](const auto &It) { return It.first.second == CtxImpl; }); +} + +bool DeviceGlobalMapEntry::isProfileCounter() const { + constexpr std::string_view CounterPrefix = "__profc_"; + return std::string_view{MUniqueId}.substr(0, CounterPrefix.size()) == + CounterPrefix; +} + +// __sycl_increment_profile_counters must be defined as a weak symbol so that +// the program will link even if the profiling runtime is not linked in. When +// compiling with MSVC there is no weak attribute, so we use a pragma comment +// and default function to achieve the same effect. When compiling with Apple +// Clang, profiling is unsupported and the function definition is empty. +#ifdef _MSC_VER +extern "C" void +__sycl_increment_profile_counters(std::uint64_t FnHash, std::size_t NumCounters, + const std::uint64_t *Increments); +extern "C" void +__sycl_increment_profile_counters_default(std::uint64_t FnHash, + std::size_t NumCounters, + const std::uint64_t *Increments) { + (void)FnHash; + (void)NumCounters; + (void)Increments; +} +#pragma comment( \ + linker, \ + "/alternatename:__sycl_increment_profile_counters=__sycl_increment_profile_counters_default") +#elif defined(__clang__) && defined(__apple_build_version__) +extern "C" void +__sycl_increment_profile_counters(std::uint64_t FnHash, std::size_t NumCounters, + const std::uint64_t *Increments) { + (void)FnHash; + (void)NumCounters; + (void)Increments; +} +#else +extern "C" void __attribute__((weak)) +__sycl_increment_profile_counters(std::uint64_t FnHash, std::size_t NumCounters, + const std::uint64_t *Increments); +#endif + +void DeviceGlobalMapEntry::cleanupProfileCounter(context_impl *CtxImpl) { + std::lock_guard Lock{MDeviceToUSMPtrMapMutex}; + assert(isProfileCounter() && "Not a profile counter device global."); + const std::size_t NumCounters = MDeviceGlobalTSize / sizeof(std::uint64_t); + const std::uint64_t FnHash = [&] { + constexpr size_t PrefixSize = std::string_view{"__profc_"}.size(); + constexpr int DecimalBase = 10; + return std::strtoull(MUniqueId.substr(PrefixSize).c_str(), nullptr, + DecimalBase); + }(); + for (const device_impl &Device : CtxImpl->getDevices()) { + auto USMPtrIt = MDeviceToUSMPtrMap.find({&Device, CtxImpl}); + if (USMPtrIt == MDeviceToUSMPtrMap.end()) + continue; + + // Get the increments from the USM pointer. + DeviceGlobalUSMMem &USMMem = USMPtrIt->second; + std::vector Increments(NumCounters); + const std::uint64_t *Counters = static_cast(USMMem.MPtr); + for (std::size_t I = 0; I < NumCounters; ++I) + Increments[I] = Counters[I]; + + // Call the weak symbol to update the profile counters. + if (&__sycl_increment_profile_counters) + __sycl_increment_profile_counters(FnHash, Increments.size(), + Increments.data()); + + // Free the USM memory and release the event if it exists. + detail::usm::freeInternal(USMMem.MPtr, CtxImpl); + if (USMMem.MInitEvent != nullptr) + CtxImpl->getAdapter().call(USMMem.MInitEvent); + + // Set to nullptr to avoid double free. + USMMem.MPtr = nullptr; + USMMem.MInitEvent = nullptr; + MDeviceToUSMPtrMap.erase(USMPtrIt); + } +} + DeviceGlobalUSMMem & DeviceGlobalMapEntry::getOrAllocateDeviceGlobalUSM(queue_impl &QueueImpl) { assert(!MIsDeviceImageScopeDecorated && @@ -70,7 +157,8 @@ DeviceGlobalMapEntry::getOrAllocateDeviceGlobalUSM(queue_impl &QueueImpl) { return DGUSMPtr->second; void *NewDGUSMPtr = detail::usm::alignedAllocInternal( - 0, MDeviceGlobalTSize, &CtxImpl, &DevImpl, sycl::usm::alloc::device); + 0, MDeviceGlobalTSize, &CtxImpl, &DevImpl, + isProfileCounter() ? sycl::usm::alloc::shared : sycl::usm::alloc::device); auto NewAllocIt = MDeviceToUSMPtrMap.emplace( std::piecewise_construct, std::forward_as_tuple(&DevImpl, &CtxImpl), @@ -85,12 +173,12 @@ DeviceGlobalMapEntry::getOrAllocateDeviceGlobalUSM(queue_impl &QueueImpl) { std::lock_guard Lock(NewAlloc.MInitEventMutex); ur_event_handle_t InitEvent = nullptr; if (MDeviceGlobalPtr) { - // C++ guarantees members appear in memory in the order they are declared, - // so since the member variable that contains the initial contents of the - // device_global is right after the usm_ptr member variable we can do - // some pointer arithmetic to memcopy over this value to the usm_ptr. This - // value inside of the device_global will be zero-initialized if it was - // not given a value on construction. + // C++ guarantees members appear in memory in the order they are + // declared, so since the member variable that contains the initial + // contents of the device_global is right after the usm_ptr member + // variable we can do some pointer arithmetic to memcopy over this + // value to the usm_ptr. This value inside of the device_global will + // be zero-initialized if it was not given a value on construction. MemoryManager::copy_usm( reinterpret_cast( reinterpret_cast(MDeviceGlobalPtr) + @@ -98,8 +186,8 @@ DeviceGlobalMapEntry::getOrAllocateDeviceGlobalUSM(queue_impl &QueueImpl) { QueueImpl, MDeviceGlobalTSize, NewAlloc.MPtr, std::vector{}, &InitEvent); } else { - // For SYCLBIN device globals we do not have a host pointer to copy from, - // so instead we fill the USM memory with 0's. + // For SYCLBIN device globals we do not have a host pointer to copy + // from, so instead we fill the USM memory with 0's. MemoryManager::fill_usm(NewAlloc.MPtr, QueueImpl, MDeviceGlobalTSize, {static_cast(0)}, {}, &InitEvent); } @@ -107,8 +195,8 @@ DeviceGlobalMapEntry::getOrAllocateDeviceGlobalUSM(queue_impl &QueueImpl) { } // Only device globals with host variables need to be registered with the - // context. The rest will be managed by their kernel bundles and cleaned up - // accordingly. + // context. The rest will be managed by their kernel bundles and cleaned + // up accordingly. if (MDeviceGlobalPtr) CtxImpl.addAssociatedDeviceGlobal(MDeviceGlobalPtr); return NewAlloc; @@ -128,7 +216,8 @@ DeviceGlobalMapEntry::getOrAllocateDeviceGlobalUSM(const context &Context) { return DGUSMPtr->second; void *NewDGUSMPtr = detail::usm::alignedAllocInternal( - 0, MDeviceGlobalTSize, &CtxImpl, &DevImpl, sycl::usm::alloc::device); + 0, MDeviceGlobalTSize, &CtxImpl, &DevImpl, + isProfileCounter() ? sycl::usm::alloc::shared : sycl::usm::alloc::device); auto NewAllocIt = MDeviceToUSMPtrMap.emplace( std::piecewise_construct, std::forward_as_tuple(&DevImpl, &CtxImpl), @@ -139,20 +228,20 @@ DeviceGlobalMapEntry::getOrAllocateDeviceGlobalUSM(const context &Context) { NewAlloc.MAllocatingContext = CtxImpl.shared_from_this(); if (MDeviceGlobalPtr) { - // C++ guarantees members appear in memory in the order they are declared, - // so since the member variable that contains the initial contents of the - // device_global is right after the usm_ptr member variable we can do - // some pointer arithmetic to memcopy over this value to the usm_ptr. This - // value inside of the device_global will be zero-initialized if it was not - // given a value on construction. + // C++ guarantees members appear in memory in the order they are + // declared, so since the member variable that contains the initial + // contents of the device_global is right after the usm_ptr member + // variable we can do some pointer arithmetic to memcopy over this value + // to the usm_ptr. This value inside of the device_global will be + // zero-initialized if it was not given a value on construction. MemoryManager::context_copy_usm( reinterpret_cast( reinterpret_cast(MDeviceGlobalPtr) + sizeof(MDeviceGlobalPtr)), &CtxImpl, MDeviceGlobalTSize, NewAlloc.MPtr); } else { - // For SYCLBIN device globals we do not have a host pointer to copy from, - // so instead we fill the USM memory with 0's. + // For SYCLBIN device globals we do not have a host pointer to copy + // from, so instead we fill the USM memory with 0's. std::vector ImmBuff(MDeviceGlobalTSize, static_cast(0)); MemoryManager::context_copy_usm(ImmBuff.data(), &CtxImpl, @@ -160,8 +249,8 @@ DeviceGlobalMapEntry::getOrAllocateDeviceGlobalUSM(const context &Context) { } // Only device globals with host variables need to be registered with the - // context. The rest will be managed by their kernel bundles and cleaned up - // accordingly. + // context. The rest will be managed by their kernel bundles and cleaned + // up accordingly. if (MDeviceGlobalPtr) CtxImpl.addAssociatedDeviceGlobal(MDeviceGlobalPtr); return NewAlloc; diff --git a/sycl/source/detail/device_global_map_entry.hpp b/sycl/source/detail/device_global_map_entry.hpp index 9ff30938cbf34..4538dcf4bc1eb 100644 --- a/sycl/source/detail/device_global_map_entry.hpp +++ b/sycl/source/detail/device_global_map_entry.hpp @@ -110,6 +110,15 @@ struct DeviceGlobalMapEntry { MIsDeviceImageScopeDecorated = IsDeviceImageScopeDecorated; } + // Checks if the device_global is available in the given context. + bool isAvailableInContext(const context_impl *CtxImpl) const; + + // Returns true if the device_global is a profile counter. + bool isProfileCounter() const; + + // Cleans up a profile counter device global. + void cleanupProfileCounter(context_impl *CtxImpl); + // Gets or allocates USM memory for a device_global. DeviceGlobalUSMMem &getOrAllocateDeviceGlobalUSM(queue_impl &QueueImpl); @@ -135,7 +144,7 @@ struct DeviceGlobalMapEntry { std::map, DeviceGlobalUSMMem> MDeviceToUSMPtrMap; - std::mutex MDeviceToUSMPtrMapMutex; + mutable std::mutex MDeviceToUSMPtrMapMutex; }; } // namespace detail diff --git a/sycl/source/detail/program_manager/program_manager.cpp b/sycl/source/detail/program_manager/program_manager.cpp index 835e31952d5d0..3a5f2fb4925d8 100644 --- a/sycl/source/detail/program_manager/program_manager.cpp +++ b/sycl/source/detail/program_manager/program_manager.cpp @@ -2434,6 +2434,20 @@ std::vector ProgramManager::getDeviceGlobalEntries( return FoundEntries; } +std::vector +ProgramManager::getProfileCounterDeviceGlobalEntries( + const context_impl *CtxImpl) { + std::vector ProfileCounters = + ProgramManager::getInstance().m_DeviceGlobals.getProfileCounterEntries(); + const auto NewEnd = + std::remove_if(ProfileCounters.begin(), ProfileCounters.end(), + [CtxImpl](DeviceGlobalMapEntry *DGEntry) { + return !DGEntry->isAvailableInContext(CtxImpl); + }); + ProfileCounters.erase(NewEnd, ProfileCounters.end()); + return ProfileCounters; +} + void ProgramManager::addOrInitHostPipeEntry(const void *HostPipePtr, const char *UniqueId) { std::lock_guard HostPipesGuard(m_HostPipesMutex); diff --git a/sycl/source/detail/program_manager/program_manager.hpp b/sycl/source/detail/program_manager/program_manager.hpp index 98707d5e30d94..c7a1a0aafb854 100644 --- a/sycl/source/detail/program_manager/program_manager.hpp +++ b/sycl/source/detail/program_manager/program_manager.hpp @@ -304,6 +304,11 @@ class ProgramManager { std::vector getDeviceGlobalEntries(const std::vector &UniqueIds, bool ExcludeDeviceImageScopeDecorated = false); + + // The function gets all device_global entries that are profile counters. + std::vector + getProfileCounterDeviceGlobalEntries(const context_impl *CtxImpl); + // The function inserts or initializes a host_pipe entry into the // host_pipe map. void addOrInitHostPipeEntry(const void *HostPipePtr, const char *UniqueId); diff --git a/sycl/test-e2e/CMakeLists.txt b/sycl/test-e2e/CMakeLists.txt index a430d8475f193..26da635642124 100644 --- a/sycl/test-e2e/CMakeLists.txt +++ b/sycl/test-e2e/CMakeLists.txt @@ -98,6 +98,9 @@ if(NOT SYCL_TEST_E2E_STANDALONE) sycl-toolchain FileCheck not + compiler-rt + llvm-profdata + llvm-cov ) endif() # Standalone. diff --git a/sycl/test-e2e/Coverage/device_code_coverage.cpp b/sycl/test-e2e/Coverage/device_code_coverage.cpp new file mode 100644 index 0000000000000..e6996e708f0d9 --- /dev/null +++ b/sycl/test-e2e/Coverage/device_code_coverage.cpp @@ -0,0 +1,64 @@ +// RUN: %{build} -fprofile-instr-generate -fcoverage-mapping -o %t.out +// RUN: %{run} LLVM_PROFILE_FILE=%t.profraw %t.out +// RUN: %{run-aux} llvm-profdata merge %t.profraw -o %t.profdata +// RUN: %{run-aux} llvm-cov show -instr-profile=%t.profdata %t.out -name="main" | FileCheck %s + +#include + +int main() { + sycl::queue q; + int *values = sycl::malloc_shared(10, q); + q.submit([&](sycl::handler &h) { + h.parallel_for(sycl::range<1>(10), [=](sycl::id<1> idx) { + if (idx[0] < 8) + values[idx] = 42; + else + values[idx] = 7; + }); + }).wait(); + for (int i = 0; i < 10; i++) + assert(values[i] == (i < 8 ? 42 : 7)); + sycl::free(values, q); + return 0; +} + +// REQUIRES: target-spir +// UNSUPPORTED: opencl && gpu +// UNSUPPORTED-TRACKER: GSD-4287 +// UNSUPPORTED: windows +// UNSUPPORTED-INTENDED: On Windows, compiler-rt requires /MT but the flag +// cannot be used with SYCL. + +// CHECK: main: +// CHECK: 8| 1|int main() { +// CHECK: 9| 1| sycl::queue q; +// CHECK: 10| 1| int *values = sycl::malloc_shared(10, q); +// CHECK: 11| 1| q.submit([&](sycl::handler &h) { +// CHECK: 12| 1| h.parallel_for(sycl::range<1>(10), [=](sycl::id<1> idx) { +// CHECK: 13| 1| if (idx[0] < 8) +// CHECK: 14| 1| values[idx] = 42; +// CHECK: 15| 1| else +// CHECK: 16| 1| values[idx] = 7; +// CHECK: 17| 1| }); +// CHECK: 18| 1| }).wait(); +// CHECK: 19| 11| for (int i = 0; i < 10; i++) +// CHECK: 20| 10| assert(values[i] == (i < 8 ? 42 : 7)); +// CHECK: 21| 1| sycl::free(values, q); +// CHECK: 22| 1| return 0; +// CHECK: 23| 1|} +// CHECK: device_code_coverage.cpp:_ZZ4mainENKUlRN4sycl3_V17handlerEE_clES2_: +// CHECK: 11| 1| q.submit([&](sycl::handler &h) { +// CHECK: 12| 1| h.parallel_for(sycl::range<1>(10), [=](sycl::id<1> idx) { +// CHECK: 13| 1| if (idx[0] < 8) +// CHECK: 14| 1| values[idx] = 42; +// CHECK: 15| 1| else +// CHECK: 16| 1| values[idx] = 7; +// CHECK: 17| 1| }); +// CHECK: 18| 1| }).wait(); +// CHECK: device_code_coverage.cpp:_ZZZ4mainENKUlRN4sycl3_V17handlerEE_clES2_ENKUlNS0_2idILi1EEEE_clES5_: +// CHECK: 12| 10| h.parallel_for(sycl::range<1>(10), [=](sycl::id<1> idx) { +// CHECK: 13| 10| if (idx[0] < 8) +// CHECK: 14| 8| values[idx] = 42; +// CHECK: 15| 2| else +// CHECK: 16| 2| values[idx] = 7; +// CHECK: 17| 10| }); From 5f3fce6a9dee25621d02cfbf05c4be225959bf58 Mon Sep 17 00:00:00 2001 From: jinge90 Date: Fri, 5 Dec 2025 16:36:49 +0800 Subject: [PATCH 095/105] [SYCL][NFC] Format for program_manager.cpp (#20822) Signed-off-by: jinge90 --- .../source/detail/program_manager/program_manager.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/sycl/source/detail/program_manager/program_manager.cpp b/sycl/source/detail/program_manager/program_manager.cpp index 3a5f2fb4925d8..8abbe0fdc261f 100644 --- a/sycl/source/detail/program_manager/program_manager.cpp +++ b/sycl/source/detail/program_manager/program_manager.cpp @@ -402,12 +402,11 @@ static void appendCompileOptionsFromImage(std::string &CompileOpts, auto ColonPos = OptValue.find(":"); auto Device = OptValue.substr(0, ColonPos); std::string BackendStrToAdd; - bool IsPVC = - std::all_of(Devs.begin(), Devs.end(), [&](device_impl &Dev) { - return IsIntelGPU && - (Dev.get_info() & - 0xFF00) == 0x0B00; - }); + bool IsPVC = std::all_of(Devs.begin(), Devs.end(), [&](device_impl &Dev) { + return IsIntelGPU && + (Dev.get_info() & 0xFF00) == + 0x0B00; + }); // Currently 'pvc' is the only supported device. if (Device == "pvc" && IsPVC) BackendStrToAdd = " " + OptValue.substr(ColonPos + 1) + " "; From 458ab0cbb9e9c3834c14cca88d16ecfc099d0c04 Mon Sep 17 00:00:00 2001 From: Lukasz Dorau Date: Fri, 5 Dec 2025 11:04:39 +0100 Subject: [PATCH 096/105] [UR] Fix arguments of urEnqueueKernelLaunch() in test/fuzz/urFuzz.cpp (#20823) Signed-off-by: Lukasz Dorau --- unified-runtime/test/fuzz/urFuzz.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unified-runtime/test/fuzz/urFuzz.cpp b/unified-runtime/test/fuzz/urFuzz.cpp index 89007cddd8e3f..21ef7af138450 100644 --- a/unified-runtime/test/fuzz/urFuzz.cpp +++ b/unified-runtime/test/fuzz/urFuzz.cpp @@ -402,7 +402,7 @@ int ur_program_create_with_il(TestState &state) { const size_t lWorkSize[] = {1, 1, 1}; urEnqueueKernelLaunch(queue, kernel, nDim, gWorkOffset, gWorkSize, lWorkSize, - 0, nullptr, &event); + nullptr, 1, &event, nullptr); urEventWait(1, &event); urEventRelease(event); From 9ddd4094e336e2807577448315bb6bfc1c0e6c2a Mon Sep 17 00:00:00 2001 From: Dmitry Sidorov Date: Fri, 5 Dec 2025 13:56:43 +0100 Subject: [PATCH 097/105] [DOC][SPIR-V] Add SPV_INTEL_float4 and SPV_INTEL_fp_conversions extension docs (#20467) Signed-off-by: Sidorov, Dmitry --- .../SPV_INTEL_float4.asciidoc | 258 ++++++++++++++ .../SPV_INTEL_fp_conversions.asciidoc | 322 ++++++++++++++++++ .../mini_float_conversions_env.asciidoc | 145 ++++++++ 3 files changed, 725 insertions(+) create mode 100644 sycl/doc/design/spirv-extensions/SPV_INTEL_float4.asciidoc create mode 100644 sycl/doc/design/spirv-extensions/SPV_INTEL_fp_conversions.asciidoc create mode 100644 sycl/doc/design/spirv-extensions/mini_float_conversions_env.asciidoc diff --git a/sycl/doc/design/spirv-extensions/SPV_INTEL_float4.asciidoc b/sycl/doc/design/spirv-extensions/SPV_INTEL_float4.asciidoc new file mode 100644 index 0000000000000..0ea88f7bdb13e --- /dev/null +++ b/sycl/doc/design/spirv-extensions/SPV_INTEL_float4.asciidoc @@ -0,0 +1,258 @@ +:extension_name: SPV_INTEL_float4 + +:hf4_capability_name: Float4E2M1INTEL +:hf4_capability_token: 6212 +:hf4_matrix_capability_name: Float4E2M1CooperativeMatrixINTEL +:hf4_matrix_capability_token: 6213 +:hf4_encoding: 6214 + +:khr_matrix_capability_name: CooperativeMatrixKHR + +:joint_matrix_url: https://https://github.com/intel/llvm/tree/sycl/sycl/doc/design/spirv-extensions/SPV_INTEL_joint_matrix.asciidoc +:fp_conv_url: https://github.com/intel/llvm/tree/sycl/sycl/doc/design/spirv-extensions/SPV_INTEL_fp_conversions.asciidoc +:coop_matrix_url: https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_cooperative_matrix.html +:bfloat16_url: https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_bfloat16.html +:fp8_url: https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_float8.html + +{extension_name} +================ + + +== Name Strings + +{extension_name} + +== Contributors + +- Dmitry Sidorov, Intel + +- Victor Mustya, Intel + +- Ben Ashbaugh, Intel + +- Dounia Khaldi, Intel + +- Joe Garvey, Intel + +- Greg Lueck, Intel + +- Pawel Jurek, Intel + + +Notice +------ + +Copyright (c) 2025 Intel Corporation. All rights reserved. + +Status +------ + +* Working Draft + +This is a preview extension specification, intended to provide early access to +a feature for review and community feedback. When the feature matures, this +specification may be released as a formal extension. + +Because the interfaces defined by this specification are not final and are +subject to change they are not intended to be used by shipping software +products. If you are interested in using this feature in your software product, +please let us know! + +== Version + +[width="40%",cols="25,25"] +|======================================== +| Last Modified Date | 2025-10-24 +| Revision | 2 +|======================================== + +== Dependencies + +This extension is written against the SPIR-V Specification, +Version 1.6 Revision 4. + +This extension interacts with {coop_matrix_url}[*SPV_KHR_cooperative_matrix*] extension. + +This extension interacts with {joint_matrix_url}[*SPV_INTEL_joint_matrix*] extension. + +This extension interacts with {bfloat16_url}[*SPV_KHR_bfloat16*] extension. + +This extension interacts with {fp8_url}[*SPV_EXT_float8*] extension. + +This extension interacts with {fp_conv_url}[*SPV_INTEL_fp_conversions*] extension. + +This extension requires SPIR-V 1.0. + +Overview +-------- + +This extension extends the *OpTypeFloat* instruction to enable the definition of `FP4E2M1` +floating-point format that has one sign bit, two exponent bits and one mantissa bits. + +The `FP4E2M1` special values are defined by the table below. + +[options="header"] +[width="80%"] +[cols="1,2"] +|==== +| ^| `FP4E2M1` +| Exponent Bias | 1 +| Max normal +| S.11.1 = 6.0 (1.5 * 2^2^) + +| Min normal +| S.01.0 = 1.0 (1.0 * 2^0^) + +| Max subnormal +| S.00.1 = 0.5 (0.5 * 2^0^) + +| Min subnormal +| S.00.1 = 0.5 (0.5 * 2^0^) + +| Infinity | N/A +| NaN | N/A + +|==== + +== Modifications to the SPIR-V Specification, Version 1.6 + +Binary Form +~~~~~~~~~~~ + +FP Encoding +~~~~~~~~~~~ + +Add a new enum: + +-- +[cols="^2,14,2,4",options="header",width = "100%"] +|==== +2+^.^| FP Encoding | Width(s) | Enabling Capabilities +| {hf4_encoding} | *Float4E2M1INTEL* + +The floating point type is encoded as a 4-bit float type. +This is encoded with the following encoding parameters: + + + - _bias_ is 1 + + + - _sign bit_ is 1 + + + - _w_ (exponent) is 2 + + + - _t_ (significand) is 1 + + + - _k_ (width) is 4 +| 4 | *Float4E2M1INTEL* + +|=== +-- + +=== Capabilities + +Modify Section 3.31, Capability, adding rows to the Capability table: + +-- +[options="header"] +|==== +2+^| Capability ^| Implicitly Declares +| {hf4_capability_token} | *{hf4_capability_name}* + +Uses *Float4E2M1INTEL* floating-point encoding. + +| +| {hf4_matrix_capability_token} | *{hf4_matrix_capability_name}* | *{khr_matrix_capability_name}* +|==== +-- + +=== Memory Layout + +Add to Section 2.18.1. Memory Layout, FPE2M1 4 layout: + +Scalar floating point variables with a `Width` of 4 can only be declared in the `Private` or `Function` storage classes. +In other storage classes, they must be included in an `OpTypeVector` with an even `Component Count`, where the first component in every pair is in bits 0-3 of the corresponding byte, and the second component is in bits 4-7. + +=== Instructions + +==== 3.42.11. Conversion Instructions + +* Add the following paragraphs to *OpFConvert*: + + +When converting to floating-point values with the *Float4E2M1INTEL* encoding, out-of-range +values and infinity and are converted to largest representable finite value with a matching sign. +Conversion from NaNs is implementation-defined. + + + + +==== 3.49.6. Type-Declaration Instructions + +Add the following requirement to *OpTypeCooperativeMatrixKHR*: + +If _Component Type_ has a *Float4E2M1INTEL* encoding then *{hf4_matrix_capability_name}* must be declared. + +Validation Rules +~~~~~~~~~~~~~~~~ + +Add the following bullets to section 2.16.1, Universal Validation Rules: + + * Variables with a type that is or includes a floating-point type with the *Float4E2M1INTEL* encoding must only be used with the following instructions: + ** https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#_miscellaneous_instructions[Miscellaneous Instructions] : + *** OpUndef + ** https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#_constant_creation_instructions[Constant Creation Instructions] : + *** OpConstant + *** OpConstantNull + *** OpConstantOp + *** OpConstantComposite + *** OpConstantCompositeContinuedINTEL + *** OpCooperativeMatrixConstructCheckedINTEL + *** OpSpecConstant + *** OpSpecConstantOp + *** OpSpecConstantComposite + *** OpSpecConstantCompositeContinuedINTEL + ** https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#_arithmetic_instructions[Arithmetic Instructions] : + *** OpCooperativeMatrixMulAddKHR + *** OpCooperativeMatrixMulAddScaledINTEL + ** https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#_composite_instructions[Composite Instructions] : + *** OpVectorExtractDynamic + *** OpVectorInsertDynamic + *** OpVectorShuffle + *** OpCompositeConstruct + *** OpCompositeExtract + *** OpCompositeInsert + *** OpCopyObject + *** OpCopyLogical + ** https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#_memory_instructions[Memory Instructions] : + *** OpPtrEqual + *** OpPtrNotEqual + *** OpPtrDiff + *** OpCooperativeMatrixLoadKHR + *** OpCooperativeMatrixStoreKHR + *** OpCooperativeMatrixLoadCheckedINTEL + *** OpCooperativeMatrixStoreCheckedINTEL + ** https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#_function_instructions[Function Instructions] : + *** OpFunction + *** OpFunctionParameter + *** OpFunctionCall + ** https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#_conversion_instructions[Conversion Instructions] : + *** OpConvertSToF + *** OpFConvert + *** OpConvertPtrToU + *** OpConvertUToPtr + *** OpPtrCastToGeneric + *** OpGenericCastToPtr + *** OpGenericCastToPtrExplicit + *** OpBitcast + *** OpClampConvertFToFINTEL + *** OpBiasedRoundFToFINTEL + *** OpClampBiasedRoundFToFINTEL + *** OpBiasedRoundFToSINTEL + ** https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#_control_flow_instructions[Control-Flow Instructions] : + *** OpReturnValue + *** OpSelect + *** OpPhi + *** OpLifetimeStart + *** OpLifetimeStop + +=== Issues + +- + +Revision History +---------------- + +[cols="5,15,15,70"] +[grid="rows"] +[options="header"] +|======================================== +|Rev|Date|Author|Changes +|1|2024-06-15|Dmitry Sidorov|Initial revision +|2|2025-10-24|Dmitry Sidorov|Prepare to publish +|======================================== diff --git a/sycl/doc/design/spirv-extensions/SPV_INTEL_fp_conversions.asciidoc b/sycl/doc/design/spirv-extensions/SPV_INTEL_fp_conversions.asciidoc new file mode 100644 index 0000000000000..6fa3f49867879 --- /dev/null +++ b/sycl/doc/design/spirv-extensions/SPV_INTEL_fp_conversions.asciidoc @@ -0,0 +1,322 @@ +:extension_name: SPV_INTEL_fp_conversions + +:convert_capability_name: FloatConversionsINTEL +:convert_capability_token: 6215 +:OpClampConvertFToFINTEL_token: 6216 +:OpClampConvertFToSINTEL_token: 6424 +:OpStochasticRoundFToFINTEL_token: 6217 +:OpClampStochasticRoundFToFINTEL_token: 6218 +:OpClampStochasticRoundFToSINTEL_token: 6219 + +:coop_matrix_url: https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_cooperative_matrix.html +:bfloat16_url: https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_bfloat16.html +:fp8_url: https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_float8.html +:fp4_url: https://github.com/intel/llvm/tree/sycl/sycl/doc/design/spirv-extensions/SPV_INTEL_float4.asciidoc + +{extension_name} +================ + + +== Name Strings + +{extension_name} + +== Contributors + +- Dmitry Sidorov, Intel + +- Victor Mustya, Intel + +- Ben Ashbaugh, Intel + +- Dounia Khaldi, Intel + +- Joe Garvey, Intel + +- Greg Lueck, Intel + +- Pawel Jurek, Intel + +- John Lu, Intel + +- Eyal Radiano, Intel + +- Mateusz Garbowski, Intel + + +Notice +------ + +Copyright (c) 2025 Intel Corporation. All rights reserved. + +Status +------ + +* Working Draft + +This is a preview extension specification, intended to provide early access to +a feature for review and community feedback. When the feature matures, this +specification may be released as a formal extension. + +Because the interfaces defined by this specification are not final and are +subject to change they are not intended to be used by shipping software +products. If you are interested in using this feature in your software product, +please let us know! + +== Version + +[width="40%",cols="25,25"] +|======================================== +| Last Modified Date | 2025-10-24 +| Revision | 2 +|======================================== + +== Dependencies + +This extension is written against the SPIR-V Specification, +Version 1.6 Revision 4. + +This extension interacts with {coop_matrix_url}[*SPV_KHR_cooperative_matrix*] extension. + +This extension interacts with {bfloat16_url}[*SPV_KHR_bfloat16*] extension. + +This extension interacts with {fp8_url}[*SPV_EXT_float8*] extension. + +This extension interacts with {fp4_url}[*SPV_INTEL_float4*] extension. + +This extension requires SPIR-V 1.0. + +Overview +-------- + +== Modifications to the SPIR-V Specification, Version 1.6 + +=== Capabilities + +Modify Section 3.31, Capability, adding rows to the Capability table: + +-- +[options="header"] +|==== +2+^| Capability ^| Implicitly Declares +| {convert_capability_token} | *{convert_capability_name}* + +Uses *OpClampConvertFToFINTEL*, *OpStochasticRoundFToFINTEL*, *OpClampStochasticRoundFToFINTEL* and *OpClampStochasticRoundFToSINTEL* +instructions. + +| +|==== +-- + +=== Instructions + +==== 3.42.11. Conversion Instructions + +[cols="1a,1,3*3",width="100%"] +|===== +4+|[[OpClampConvertFToFINTEL]]*OpClampConvertFToFINTEL* + + + +Converts numerically one floating point value to another. +In case of overflow, the positive result clamps to maximum normal value. +The negative result clamps to lowest negative normal value, which is equal to +maximum normal value multiplied by -1. + + + +_Result Type_ is the type of the converted object, it must be a scalar or +vector of _float type_. + + + +_Value_ must be a scalar or vector of _float type_. It must have a wider range +than the _Result Type_ and it must have the same number of components as 'Result Type'. + + + +Results are computed per component. + + + +1+|Capability: + +*{convert_capability_name}* +1+| 4 | {OpClampConvertFToFINTEL_token} +| __ + +_Result Type_ +| _Result _ +| __ + +_Value_ +|===== + +[cols="1a,1,3*3",width="100%"] +|===== +4+|[[OpClampConvertFToSINTEL]]*OpClampConvertFToSINTEL* + + + +Converts numerically a floating point value to integer. +In case of overflow, the result is saturated to INT_MAX or INT_MIN depending on a sign bit. + + + +_Result Type_ is the type of the converted object, it must be a scalar or +vector of _integer type_. + + + +_Value_ must be a scalar or vector of _float type_. +It must have the same number of components as 'Result Type'. + + + +Results are computed per component. + + + +1+|Capability: + +*{convert_capability_name}* +1+| 4 | {OpClampConvertFToSINTEL_token} +| __ + +_Result Type_ +| _Result _ +| __ + +_Value_ +|===== + +[cols="1a,1,5*",width="100%"] +|===== +6+|[[OpStochasticRoundFToFINTEL]]*OpStochasticRoundFToFINTEL* + + + +Converts numerically one floating point value to another using stochastic rounding. + + +Stochastic rounding is performed by adding a pseudo-random bias value to the mantissa +of the converted value as follows. The bias is first added to the mantissa of the converted value. +If this causes the mantissa to overflow, then the exponent of the converted value +is increased by 1 and the mantissa bits are shifted right. The value is then converted +to the _Result Type_, rounding towards zero. If the exponent overflows when converting +to the _Result Type_, the result of the conversion is +/- Inf. If _Result Type_ doesn't have +Inf representation, then in case of overflow the result saturates to max normal value representable +by the type preserving the sign. + + + +As described above, each input requires a bias value in order to perform the conversion. +These bias values are generated by executing an implementation-defined algorithm +that produces pseudo-random values that uses _Seed_ as a starting point. This algorithm is +guaranteed to produce repeatable bias values when the same value is passed for _Seed_. + + + +The instruction also returns a value in _Next Seed_, which client code can use to generate +good quality random biases. If the client intends to call *OpStochasticRoundFToFINTEL* +again from the same kernel invocation, it should use this value as a new seed that it +passes as _Seed_ in that next call. + + + +_Result Type_ is the type of the converted object, it must be a scalar or +vector of _float type_. + + + +_Value_ must be a scalar or vector of _float type_. It must have a wider range +than the _Result Type_ and it must have the same number of components as 'Result Type'. + + + +_Seed_ must be a 32-bit scalar _integer type_. + + + +_Next Seed_ must be of a _pointer type_ with *Function* storage class and 32-bit scalar _integer_ element type. + + + +Results are computed per component. + + + + +1+|Capability: + +*{convert_capability_name}* +1+| 4+ | {OpStochasticRoundFToFINTEL_token} +| __ + +_Result Type_ +| _Result _ +| __ + +_Value_ +| __ + +_Seed_ +| Optional __ + +_Next Seed_ +|===== + + +[cols="1a,1,5*3",width="100%"] +|===== +6+|[[OpClampStochasticRoundFToFINTEL]]*OpClampStochasticRoundFToFINTEL* + + + +Has the same semantics as *OpStochasticRoundFToFINTEL*, with an addition, that +in case of overflow, the positive result clamps to maximum normal value. +The negative result clamps to lowest negative normal value, which is equal to +maximum normal value multiplied by -1. + +This instruction may be used for stochastic rounding operation, if a producer passes +pseudo-random _Seed_ value. + + + +_Result Type_ is the type of the converted object, it must be a scalar or +vector of _float type_. + + + +_Value_ must be a scalar or vector of _float type_. It must have a wider range +than the _Result Type_ and it must have the same number of components as 'Result Type'. + + + +_Seed_ must be a 32-bit scalar _integer type_. + + + +_Next Seed_ must be of a _pointer type_ with *Function* storage class and 32-bit scalar _integer_ element type. + + + +Results are computed per component. + + + +1+|Capability: + +*{convert_capability_name}* +1+| 5+ | {OpClampStochasticRoundFToFINTEL_token} +| __ + +_Result Type_ +| _Result _ +| __ + +_Value_ +| __ + +_Seed_ +| Optional __ + +_Next Seed_ +|===== + + +[cols="1a,1,5*3",width="100%"] +|===== +6+|[[OpClampStochasticRoundFToSINTEL]]*OpClampStochasticRoundFToSINTEL* + + + +Converts a floating point value to integer using stochastic rounding. +Has the same semantics as *OpStochasticRoundFToFINTEL*. +In case of overflow, the result is saturated to INT_MAX or INT_MIN depending on a sign bit. +This instruction may be used for stochastic rounding operation, if a producer +passes pseudo-random _Seed_ value. + + + +_Result Type_ is the type of the converted object, it must be a scalar or +vector of _integer type_. + + + +_Value_ must be a scalar or vector of _float type_. It must have a wider range +than the _Result Type_ and it must have the same number of components as 'Result Type'. + + + +_Seed_ must be a 32-bit scalar _integer type_. + + + +Results are computed per component. + + + +_Next Seed_ must be of a _pointer type_ with *Function* storage class and 32-bit scalar _integer_ element type. + + + +1+|Capability: + +*{convert_capability_name}* +1+| 4+ | {OpClampStochasticRoundFToSINTEL_token} +| __ + +_Result Type_ +| _Result _ +| __ + +_Value_ +| __ + +_Seed_ +| Optional __ + +_Next Seed_ +|===== + + +Validation Rules +~~~~~~~~~~~~~~~~ + +Add the following bullets to section 2.16.11, Universal Validation Rules: + + * Variables with a type that is or includes a floating-point type with the *BFloat16KHR*, *Float8E4M3EXT*, *Float8E5M2EXT* and *Float4E2M1INTEL* encodings can also be used with the following instructions: + ** *OpClampConvertFToFINTEL* + + * Variables with a type that is or includes a floating-point type with the *BFloat16KHR*, *Float8E4M3EXT*, *Float8E5M2EXT* and *Float4E2M1INTEL* encodings can also be used with the following instructions: + ** *OpStochasticRoundFToFINTEL* + ** *OpClampStochasticRoundFToFINTEL* + + * Variables with a type that is or includes a floating-point type with the *BFloat16KHR* encoding can also be used with the following instructions: + ** *OpClampConvertFToSINTEL* and *OpClampStochasticRoundFToSINTEL* + + +== Interactions with SPV_KHR_cooperative_matrix + +When *CooperativeMatrixKHR* capability is declared it is allowed to convert a _cooperative matrix_ +using the instructions added by this extensions. + +If _Value_ is _cooperative matrix_, then the _Result Type_ must be a _cooperative matrix type_ +with the same _Rows_, _Columns_, _Scope_ and _Use_ operands. _Seed_ operand can be non-uniform, all +other operands to these instructions must be dynamically +uniform within every instance of the _Scope_ of the _cooperative matrix_. + + +=== Issues + +- + +Revision History +---------------- + +[cols="5,15,15,70"] +[grid="rows"] +[options="header"] +|======================================== +|Rev|Date|Author|Changes +|1|2024-06-15|Dmitry Sidorov|Initial revision +|1|2025-10-24|Dmitry Sidorov|Prepare to publish +|======================================== diff --git a/sycl/doc/design/spirv-extensions/mini_float_conversions_env.asciidoc b/sycl/doc/design/spirv-extensions/mini_float_conversions_env.asciidoc new file mode 100644 index 0000000000000..a1be113041092 --- /dev/null +++ b/sycl/doc/design/spirv-extensions/mini_float_conversions_env.asciidoc @@ -0,0 +1,145 @@ +Mini-float Types and Conversions Environment Specification +========================================================== + +This document provides list of supported conversions for types and instructions +added in *SPV_EXT_float8*, *SPV_INTEL_int4*, *SPV_INTEL_float4* and *SPV_INTEL_fp_conversions* extensons +in Level-Zero and OpenCL Environments for Intel platforms. + + +Conversion from NaNs to `Float4E2M1INTEL` +----------------------------------------- + +NaNs are converted to largest representable finite value with a matching sign. + +Float to float conversions via OpFConvert +----------------------------------------- + +Conversions to *OpTypeFloat* with *Float4E2M1INTEL* encoding are being done with +round to the nearest even (RTE) mode by default. It's illegal to put any *FPRoundingMode* +decoration other than *RTE* on the instruction in these cases. *RoundingModeRTZ* +execution mode has no affect on these conversions. + + +Only the following conversions via *OpFConvert* to or from 4-bit floating-point values with the `Float4E2M1INTEL` encoding +are supported: + + + + +[cols="1,1", options="header"] +|=== +| To *Float4E2M1INTEL* 'Result' | From *Float4E2M1INTEL* 'Value' +| From 16-bit *IEEE754* | To 16-bit *IEEE754* +| From 16-bit *BFloat16KHR* | To 16-bit *BFloat16KHR* +| | To 8-bit *Float8E4M3EXT* +| | To 8-bit *Float8E5M2EXT* +|=== + +Only the following conversions via *OpFConvert* to or from 8-bit floating-point values with the `Float8E4M3EXT` and `Float8E5M2EXT` encodings +are supported: + + + + +[cols="1,1", options="header"] +|=== +| To *Float8E4M3EXT* 'Result' | From *Float8E4M3EXT* 'Value' +| From 16-bit *IEEE754* | To 16-bit *IEEE754* +| From 16-bit *BFloat16KHR* | To 16-bit *BFloat16KHR* +| From 4-bit *Float4E2M1INTEL* | +|=== + +[cols="1,1", options="header"] +|=== +| To *Float8E5M2EXT* 'Result' | From *Float8E5M2EXT* 'Value' +| From 16-bit *IEEE754* | To 16-bit *IEEE754* +| From 16-bit *BFloat16KHR* | To 16-bit *BFloat16KHR* +| From 4-bit *Float4E2M1INTEL* | +|=== + +Float to integer conversions via OpConvertFToS +---------------------------------------------- + +Only the following conversions via *OpConvertFToS* from float to 4-bit integer values are supported: + + + + +[cols="1,1", options="header"] +|=== +| _Result_ | 'Value' +| 4-bit integer | 16-bit *IEEE754* +| 4-bit integer | 16-bit *BFloat16KHR* +|=== + +Float to float conversions via OpClampConvertFToFINTEL +------------------------------------------------------ + +Only the following conversions via *OpClampConvertFToFINTEL* are supported: + + + + +[cols="1,1", options="header"] +|=== +| _Result_ | 'Value' +| 16-bit *IEEE754* | 32-bit *IEEE754* +| 8-bit *Float8E5M2EXT* | 16-bit *IEEE754* +| 8-bit *Float8E5M2EXT* | 16-bit *BFloat16KHR* +| 8-bit *Float8E4M3EXT* | 16-bit *IEEE754* +| 8-bit *Float8E4M3EXT* | 16-bit *BFloat16KHR* +| 4-bit *Float4E2M1INTEL* | 16-bit *IEEE754* +| 4-bit *Float4E2M1INTEL* | 16-bit *BFloat16KHR* +|=== + +Float to integer conversions via OpClampConvertFToSINTEL +-------------------------------------------------------- + +Only the following conversions via *OpClampConvertFToSINTEL* from float to 4-bit integer values are supported: + + + + +[cols="1,1", options="header"] +|=== +| _Result_ | 'Value' +| 4-bit integer | 16-bit *IEEE754* +| 4-bit integer | 16-bit *BFloat16KHR* +|=== + +Float to float conversions via OpStochasticRoundFToFINTEL +--------------------------------------------------------- + +Only the following conversions via *OpStochasticRoundFToFINTEL* are supported: + + + + +[cols="1,1", options="header"] +|=== +| _Result_ | 'Value' +| 16-bit *IEEE754* | 32-bit *IEEE754* +| 8-bit *Float8E5M2EXT* | 16-bit *IEEE754* +| 8-bit *Float8E5M2EXT* | 16-bit *BFloat16KHR* +| 8-bit *Float8E4M3EXT* | 16-bit *IEEE754* +| 8-bit *Float8E4M3EXT* | 16-bit *BFloat16KHR* +| 4-bit *Float4E2M1INTEL* | 16-bit *IEEE754* +| 4-bit *Float4E2M1INTEL* | 16-bit *BFloat16KHR* +|=== + +Float to float conversions via OpClampStochasticRoundFToFINTEL +-------------------------------------------------------------- + +Only the following conversions via *OpClampStochasticRoundFToFINTEL* are supported: + + + +[cols="1,1", options="header"] +|=== +| _Result_ | 'Value' +| 16-bit *IEEE754* | 32-bit *IEEE754* +| 8-bit *Float8E5M2EXT* | 16-bit *IEEE754* +| 8-bit *Float8E5M2EXT* | 16-bit *BFloat16KHR* +| 8-bit *Float8E4M3EXT* | 16-bit *IEEE754* +| 8-bit *Float8E4M3EXT* | 16-bit *BFloat16KHR* +| 4-bit *Float4E2M1INTEL* | 16-bit *IEEE754* +| 4-bit *Float4E2M1INTEL* | 16-bit *BFloat16KHR* +|=== + + +Float to integer conversions via OpClampStochasticRoundFToSINTEL +---------------------------------------------------------------- + +Only the following conversions via *OpClampStochasticRoundFToSINTEL* from float to 4-bit integer values are supported: + + + + +[cols="1,1", options="header"] +|=== +| _Result_ | 'Value' +| 4-bit integer | 16-bit *IEEE754* +| 4-bit integer | 16-bit *BFloat16KHR* +|=== From 7e25be4ea12f6b6e67a120376c5c0ade775dc712 Mon Sep 17 00:00:00 2001 From: luszczewskakasia1 Date: Fri, 5 Dec 2025 14:13:34 +0100 Subject: [PATCH 098/105] [Benchmarks] Add benchmarks scripts for Torch MultiQueue benchmarks (#20665) Created scripts to port PyTorch MultiQueue benchmarks --- devops/scripts/benchmarks/benches/compute.py | 76 +++++++++++++++++++ .../benchmarks/tests/test_integration.py | 20 +++++ 2 files changed, 96 insertions(+) diff --git a/devops/scripts/benchmarks/benches/compute.py b/devops/scripts/benchmarks/benches/compute.py index 9d8523dd1ad16..02e52f01e3266 100644 --- a/devops/scripts/benchmarks/benches/compute.py +++ b/devops/scripts/benchmarks/benches/compute.py @@ -269,6 +269,7 @@ def benchmarks(self) -> list[Benchmark]: ) ) + # Add RecordAndReplay benchmarks record_and_replay_params = product([0, 1], [0, 1]) for emulate, instantiate in record_and_replay_params: @@ -315,6 +316,39 @@ def createRrBench(variant_name: str, **kwargs): ), ] + # Add TorchMultiQueue benchmarks + for runtime in filter(lambda x: x != RUNTIMES.UR, RUNTIMES): + + def createTorchMultiQueueBench(variant_name: str, **kwargs): + return TorchMultiQueue( + self, + runtime, + variant_name, + PROFILERS.TIMER, + **kwargs, + ) + + benches += [ + createTorchMultiQueueBench( + "large", + workgroupCount=4096, + workgroupSize=512, + kernelsPerQueue=20, + ), + createTorchMultiQueueBench( + "medium", + workgroupCount=512, + workgroupSize=256, + kernelsPerQueue=10, + ), + createTorchMultiQueueBench( + "small", + workgroupCount=256, + workgroupSize=124, + kernelsPerQueue=4, + ), + ] + # Add UR-specific benchmarks benches += [ # TODO: multithread_benchmark_ur fails with segfault @@ -770,6 +804,48 @@ def _bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]: return [f"--{k}={v}" for k, v in self._rr_params.items()] +class TorchMultiQueue(ComputeBenchmark): + def __init__( + self, suite, runtime: RUNTIMES, variant_name: str, profiler_type, **kwargs + ): + self._variant_name = variant_name + self._smq_params = kwargs + self._iterations_regular = 1000 + self._iterations_trace = 10 + super().__init__( + suite, + f"torch_benchmark_{runtime.value}", + "KernelSubmitMultiQueue", + runtime, + profiler_type, + ) + + def name(self): + ret = [] + for k, v in self._smq_params.items(): + ret.append(f"{k} {v}") + ret.sort() + return self._bench_name + " " + ", ".join(ret) + + def display_name(self) -> str: + return f"{self.explicit_group()} {self._runtime.value}" + + def explicit_group(self): + return f"{self._test} {self._variant_name}" + + def get_tags(self): + return ["pytorch", runtime_to_tag_name(self._runtime)] + + def _supported_runtimes(self) -> list[RUNTIMES]: + return super()._supported_runtimes() + [RUNTIMES.SYCL_PREVIEW] + + def _bin_args(self, run_trace: TracingType = TracingType.NONE) -> list[str]: + iters = self._get_iters(run_trace) + return [f"--iterations={iters}"] + [ + f"--{k}={v}" for k, v in self._smq_params.items() + ] + + class QueueInOrderMemcpy(ComputeBenchmark): def __init__(self, bench, isCopyOnly, source, destination, size, profiler_type): self._is_copy_only = isCopyOnly diff --git a/devops/scripts/benchmarks/tests/test_integration.py b/devops/scripts/benchmarks/tests/test_integration.py index fc6c4482463dd..6b546f80cb3a4 100644 --- a/devops/scripts/benchmarks/tests/test_integration.py +++ b/devops/scripts/benchmarks/tests/test_integration.py @@ -188,6 +188,26 @@ def test_submit_kernel(self): {"L0", "latency", "micro", "submit"}, ) + def test_torch_l0(self): + self._checkCase( + "torch_benchmark_l0 kernelsPerQueue 20, workgroupCount 4096, workgroupSize 512", + "KernelSubmitMultiQueue large", + {"pytorch", "L0"}, + ) + + def test_torch_sycl(self): + self._checkCase( + "torch_benchmark_sycl kernelsPerQueue 10, workgroupCount 512, workgroupSize 256", + "KernelSubmitMultiQueue medium", + {"pytorch", "SYCL"}, + ) + + def test_torch_syclpreview(self): + self._checkCase( + "torch_benchmark_syclpreview kernelsPerQueue 4, workgroupCount 256, workgroupSize 124", + "KernelSubmitMultiQueue small", + {"pytorch", "SYCL"}, + ) if __name__ == "__main__": unittest.main() From 24d6ff921161f5c8b44d93bdacb09871bc156396 Mon Sep 17 00:00:00 2001 From: Nikita Kornev Date: Fri, 5 Dec 2025 17:23:08 +0100 Subject: [PATCH 099/105] [CI] Update sycl-nightly.yml (#20775) Remove repeating "level_zero:gpu". I believe we're not interested in testing anything except level_zero on windows, so that can likely be simplified. Anyways, feel free to reject if not desirable. --- .github/workflows/sycl-nightly.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/sycl-nightly.yml b/.github/workflows/sycl-nightly.yml index e09db20b90369..351f7ba3a1897 100644 --- a/.github/workflows/sycl-nightly.yml +++ b/.github/workflows/sycl-nightly.yml @@ -222,23 +222,20 @@ jobs: fail-fast: false matrix: include: - - name: Intel L0 Gen12 GPU + - name: Intel Gen12 GPU runner: '["Windows", "gen12"]' - target_devices: level_zero:gpu - - name: Intel L0 Arc GPU + - name: Intel Arc GPU runner: '["Windows", "arc"]' - target_devices: level_zero:gpu - - name: Intel L0 Battlemage GPU + - name: Intel Battlemage GPU runner: '["Windows", "bmg"]' - target_devices: level_zero:gpu uses: ./.github/workflows/sycl-windows-run-tests.yml with: name: ${{ matrix.name }} runner: ${{ matrix.runner }} - target_devices: ${{ matrix.target_devices }} + target_devices: level_zero:gpu toolchain_artifact_filename: ${{ needs.build-win.outputs.toolchain_artifact_filename }} cuda-aws-start: From 3eaabec388dc307c95c274f7d9af1c861838eafb Mon Sep 17 00:00:00 2001 From: Artur Gainullin Date: Fri, 5 Dec 2025 08:36:36 -0800 Subject: [PATCH 100/105] [SYCL][ABI-break] Promote `detail::string_view` breaking changes (#20836) --- sycl/include/sycl/detail/string_view.hpp | 26 +------- sycl/source/kernel_bundle.cpp | 9 +-- .../abi/layout_compile_time_kernel_info.cpp | 27 ++++---- sycl/test/abi/layout_handler.cpp | 63 ++++++++++--------- sycl/test/abi/symbol_size_alignment.cpp | 2 +- 5 files changed, 51 insertions(+), 76 deletions(-) diff --git a/sycl/include/sycl/detail/string_view.hpp b/sycl/include/sycl/detail/string_view.hpp index d394de736d847..5a13c324605cb 100644 --- a/sycl/include/sycl/detail/string_view.hpp +++ b/sycl/include/sycl/detail/string_view.hpp @@ -22,47 +22,29 @@ namespace detail { class string_view { const char *str = nullptr; -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES size_t len = 0; -#endif public: constexpr string_view() noexcept = default; constexpr string_view(const string_view &strn) noexcept = default; constexpr string_view(string_view &&strn) noexcept = default; constexpr string_view(std::string_view strn) noexcept - : str(strn.data()) -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES - , - len(strn.size()) -#endif - { - } + : str(strn.data()), len(strn.size()) {} string_view(const sycl::detail::string &strn) noexcept - : str(strn.c_str()) -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES - , - len(strlen(strn.c_str())) -#endif - { - } + : str(strn.c_str()), len(strlen(strn.c_str())) {} constexpr string_view &operator=(string_view &&strn) noexcept = default; string_view &operator=(const string_view &strn) noexcept = default; constexpr string_view &operator=(std::string_view strn) noexcept { str = strn.data(); -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES len = strn.size(); -#endif return *this; } string_view &operator=(const sycl::detail::string &strn) noexcept { str = strn.c_str(); -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES len = strlen(strn.c_str()); -#endif return *this; } @@ -71,11 +53,7 @@ class string_view { constexpr operator std::string_view() const noexcept { if (str == nullptr) return std::string_view{}; -#ifdef __INTEL_PREVIEW_BREAKING_CHANGES return std::string_view(str, len); -#else - return std::string_view(str); -#endif } }; diff --git a/sycl/source/kernel_bundle.cpp b/sycl/source/kernel_bundle.cpp index 14d19ddacaa6b..9639f0cb960d0 100644 --- a/sycl/source/kernel_bundle.cpp +++ b/sycl/source/kernel_bundle.cpp @@ -182,14 +182,7 @@ removeDuplicateDevices(const std::vector &Devs) { kernel_id get_kernel_id_impl(string_view KernelName) { return detail::ProgramManager::getInstance().getSYCLKernelID( -#ifndef __INTEL_PREVIEW_BREAKING_CHANGES - std::string( -#endif - std::string_view(KernelName) -#ifndef __INTEL_PREVIEW_BREAKING_CHANGES - ) -#endif - ); + std::string_view(KernelName)); } detail::KernelBundleImplPtr diff --git a/sycl/test/abi/layout_compile_time_kernel_info.cpp b/sycl/test/abi/layout_compile_time_kernel_info.cpp index 348d268c49a9e..d3a2c802158da 100644 --- a/sycl/test/abi/layout_compile_time_kernel_info.cpp +++ b/sycl/test/abi/layout_compile_time_kernel_info.cpp @@ -11,16 +11,19 @@ void foo(sycl::detail::compile_time_kernel_info_v1::CompileTimeKernelInfoTy) {} // CHECK: 0 | struct sycl::detail::CompileTimeKernelInfoTy // CHECK: 0 | class sycl::detail::string_view Name // CHECK-NEXT: 0 | const char * str -// CHECK-NEXT: 8 | unsigned int NumParams -// CHECK-NEXT: 12 | _Bool IsESIMD -// CHECK-NEXT: 16 | class sycl::detail::string_view FileName -// CHECK-NEXT: 16 | const char * str -// CHECK-NEXT: 24 | class sycl::detail::string_view FunctionName +// CHECK-NEXT: 8 | size_t len +// CHECK-NEXT: 16 | unsigned int NumParams +// CHECK-NEXT: 20 | _Bool IsESIMD +// CHECK-NEXT: 24 | class sycl::detail::string_view FileName // CHECK-NEXT: 24 | const char * str -// CHECK-NEXT: 32 | unsigned int LineNumber -// CHECK-NEXT: 36 | unsigned int ColumnNumber -// CHECK-NEXT: 40 | int64_t KernelSize -// CHECK-NEXT: 48 | ParamDescGetterT ParamDescGetter -// CHECK-NEXT: 56 | _Bool HasSpecialCaptures -// CHECK-NEXT: | [sizeof=64, dsize=57, align=8, -// CHECK-NEXT: | nvsize=57, nvalign=8] +// CHECK-NEXT: 32 | size_t len +// CHECK-NEXT: 40 | class sycl::detail::string_view FunctionName +// CHECK-NEXT: 40 | const char * str +// CHECK-NEXT: 48 | size_t len +// CHECK-NEXT: 56 | unsigned int LineNumber +// CHECK-NEXT: 60 | unsigned int ColumnNumber +// CHECK-NEXT: 64 | int64_t KernelSize +// CHECK-NEXT: 72 | ParamDescGetterT ParamDescGetter +// CHECK-NEXT: 80 | _Bool HasSpecialCaptures +// CHECK-NEXT: | [sizeof=88, dsize=81, align=8, +// CHECK-NEXT: | nvsize=81, nvalign=8] diff --git a/sycl/test/abi/layout_handler.cpp b/sycl/test/abi/layout_handler.cpp index 7f4cb8248530a..cfedce4277a31 100644 --- a/sycl/test/abi/layout_handler.cpp +++ b/sycl/test/abi/layout_handler.cpp @@ -38,35 +38,36 @@ void foo() { // CHECK-NEXT: 56 | pointer _M_end_of_storage // CHECK-NEXT: 64 | class sycl::detail::string_view MKernelName // CHECK-NEXT: 64 | const char * str -// CHECK-NEXT: 72 | class std::shared_ptr MKernel -// CHECK-NEXT: 72 | class std::__shared_ptr (base) -// CHECK-NEXT: 72 | class std::__shared_ptr_access (base) (empty) -// CHECK-NEXT: 72 | element_type * _M_ptr -// CHECK-NEXT: 80 | class std::__shared_count<> _M_refcount -// CHECK-NEXT: 80 | _Sp_counted_base<(enum __gnu_cxx::_Lock_policy)2U> * _M_pi -// CHECK-NEXT: 88 | void * MSrcPtr -// CHECK-NEXT: 96 | void * MDstPtr -// CHECK-NEXT: 104 | size_t MLength -// CHECK-NEXT: 112 | class std::vector MPattern -// CHECK-NEXT: 112 | struct std::_Vector_base > (base) -// CHECK-NEXT: 112 | struct std::_Vector_base >::_Vector_impl _M_impl -// CHECK-NEXT: 112 | class std::allocator (base) (empty) -// CHECK: 112 | pointer _M_start -// CHECK-NEXT: 120 | pointer _M_finish -// CHECK-NEXT: 128 | pointer _M_end_of_storage -// CHECK-NEXT: 136 | class std::unique_ptr MHostKernel -// CHECK-NEXT: 136 | struct std::__uniq_ptr_data > -// CHECK: 136 | class std::__uniq_ptr_impl > (base) -// CHECK-NEXT: 136 | class std::tuple > -// CHECK-NEXT: 136 | struct std::_Tuple_impl<0, class sycl::detail::HostKernelBase *, struct std::default_delete > (base) -// CHECK-NEXT: 136 | struct std::_Tuple_impl<1, struct std::default_delete > (base) (empty) -// CHECK: 136 | struct std::_Head_base<0, class sycl::detail::HostKernelBase *> (base) -// CHECK-NEXT: 136 | class sycl::detail::HostKernelBase * _M_head_impl -// CHECK-NEXT: 144 | struct sycl::detail::code_location MCodeLoc -// CHECK-NEXT: 144 | const char * MFileName -// CHECK-NEXT: 152 | const char * MFunctionName -// CHECK-NEXT: 160 | uint32_t MLineNo -// CHECK-NEXT: 164 | uint32_t MColumnNo -// CHECK-NEXT: | [sizeof=168, dsize=168, align=8, -// CHECK-NEXT: | nvsize=168, nvalign=8] +// CHECK-NEXT: 72 | size_t len +// CHECK-NEXT: 80 | class std::shared_ptr MKernel +// CHECK-NEXT: 80 | class std::__shared_ptr (base) +// CHECK-NEXT: 80 | class std::__shared_ptr_access (base) (empty) +// CHECK-NEXT: 80 | element_type * _M_ptr +// CHECK-NEXT: 88 | class std::__shared_count<> _M_refcount +// CHECK-NEXT: 88 | _Sp_counted_base<(enum __gnu_cxx::_Lock_policy)2U> * _M_pi +// CHECK-NEXT: 96 | void * MSrcPtr +// CHECK-NEXT: 104 | void * MDstPtr +// CHECK-NEXT: 112 | size_t MLength +// CHECK-NEXT: 120 | class std::vector MPattern +// CHECK-NEXT: 120 | struct std::_Vector_base > (base) +// CHECK-NEXT: 120 | struct std::_Vector_base >::_Vector_impl _M_impl +// CHECK-NEXT: 120 | class std::allocator (base) (empty) +// CHECK: 120 | pointer _M_start +// CHECK-NEXT: 128 | pointer _M_finish +// CHECK-NEXT: 136 | pointer _M_end_of_storage +// CHECK-NEXT: 144 | class std::unique_ptr MHostKernel +// CHECK-NEXT: 144 | struct std::__uniq_ptr_data > +// CHECK: 144 | class std::__uniq_ptr_impl > (base) +// CHECK-NEXT: 144 | class std::tuple > +// CHECK-NEXT: 144 | struct std::_Tuple_impl<0, class sycl::detail::HostKernelBase *, struct std::default_delete > (base) +// CHECK-NEXT: 144 | struct std::_Tuple_impl<1, struct std::default_delete > (base) (empty) +// CHECK: 144 | struct std::_Head_base<0, class sycl::detail::HostKernelBase *> (base) +// CHECK-NEXT: 144 | class sycl::detail::HostKernelBase * _M_head_impl +// CHECK-NEXT: 152 | struct sycl::detail::code_location MCodeLoc +// CHECK-NEXT: 152 | const char * MFileName +// CHECK-NEXT: 160 | const char * MFunctionName +// CHECK-NEXT: 168 | uint32_t MLineNo +// CHECK-NEXT: 172 | uint32_t MColumnNo +// CHECK-NEXT: | [sizeof=176, dsize=176, align=8, +// CHECK-NEXT: | nvsize=176, nvalign=8] // clang-format on \ No newline at end of file diff --git a/sycl/test/abi/symbol_size_alignment.cpp b/sycl/test/abi/symbol_size_alignment.cpp index 41466d5dd6b2a..2d66b5aba8692 100644 --- a/sycl/test/abi/symbol_size_alignment.cpp +++ b/sycl/test/abi/symbol_size_alignment.cpp @@ -52,7 +52,7 @@ int main() { check(); check(); check(); - check(); + check(); check, 16, 8>(); check(); check(); From 29c7b9b13190163efd0cce2bf0b64a53686f0653 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Fri, 5 Dec 2025 10:14:53 -0800 Subject: [PATCH 101/105] Fix pre-commit errors --- sycl/test/abi/sycl_symbols_linux.dump | 2 +- sycl/test/include_deps/sycl_detail_core.hpp.cpp | 1 + sycl/test/include_deps/sycl_khr_includes_handler.hpp.cpp | 1 + sycl/test/include_deps/sycl_khr_includes_kernel_bundle.hpp.cpp | 1 + sycl/test/include_deps/sycl_khr_includes_queue.hpp.cpp | 1 + sycl/test/include_deps/sycl_khr_includes_reduction.hpp.cpp | 1 + sycl/test/include_deps/sycl_khr_includes_stream.hpp.cpp | 1 + sycl/test/include_deps/sycl_khr_includes_usm.hpp.cpp | 1 + 8 files changed, 8 insertions(+), 1 deletion(-) diff --git a/sycl/test/abi/sycl_symbols_linux.dump b/sycl/test/abi/sycl_symbols_linux.dump index e35b695e520dd..4ade6a37390f1 100644 --- a/sycl/test/abi/sycl_symbols_linux.dump +++ b/sycl/test/abi/sycl_symbols_linux.dump @@ -3547,6 +3547,7 @@ _ZN4sycl3_V17handler15ext_oneapi_copyEPKvRKNS0_3ext6oneapi12experimental16image_ _ZN4sycl3_V17handler15ext_oneapi_copyEPKvRKNS0_3ext6oneapi12experimental16image_descriptorEmPvS9_m _ZN4sycl3_V17handler16ext_oneapi_graphENS0_3ext6oneapi12experimental13command_graphILNS4_11graph_stateE1EEE _ZN4sycl3_V17handler16getMaxWorkGroupsEv +_ZN4sycl3_V17handler17incrementArgShiftEi _ZN4sycl3_V17handler17supportsUSMFill2DEv _ZN4sycl3_V17handler17use_kernel_bundleERKNS0_13kernel_bundleILNS0_12bundle_stateE2EEE _ZN4sycl3_V17handler18RangeRoundingTraceEv @@ -3604,7 +3605,6 @@ _ZN4sycl3_V17handler8finalizeEv _ZN4sycl3_V17handler8getQueueEv _ZN4sycl3_V17handler8prefetchEPKvm _ZN4sycl3_V17handler8prefetchEPKvmNS0_3ext6oneapi12experimental13prefetch_typeE -_ZN4sycl3_V17handler17incrementArgShiftEi _ZN4sycl3_V17handler9fill_implEPvPKvmm _ZN4sycl3_V17handlerC1EOSt10unique_ptrINS0_6detail12handler_implESt14default_deleteIS4_EE _ZN4sycl3_V17handlerC1ERNS0_6detail12handler_implE diff --git a/sycl/test/include_deps/sycl_detail_core.hpp.cpp b/sycl/test/include_deps/sycl_detail_core.hpp.cpp index 2544bc16485d5..0fc0058caf6ab 100644 --- a/sycl/test/include_deps/sycl_detail_core.hpp.cpp +++ b/sycl/test/include_deps/sycl_detail_core.hpp.cpp @@ -147,6 +147,7 @@ // CHECK-NEXT: ext/oneapi/bindless_images_interop.hpp // CHECK-NEXT: ext/oneapi/interop_common.hpp // CHECK-NEXT: ext/oneapi/bindless_images_mem_handle.hpp +// CHECK-NEXT: ext/oneapi/experimental/free_function_traits.hpp // CHECK-NEXT: ext/oneapi/experimental/raw_kernel_arg.hpp // CHECK-NEXT: kernel.hpp // CHECK-NEXT: sampler.hpp diff --git a/sycl/test/include_deps/sycl_khr_includes_handler.hpp.cpp b/sycl/test/include_deps/sycl_khr_includes_handler.hpp.cpp index 94b3cbf15d8d1..3beaefcc56711 100644 --- a/sycl/test/include_deps/sycl_khr_includes_handler.hpp.cpp +++ b/sycl/test/include_deps/sycl_khr_includes_handler.hpp.cpp @@ -144,6 +144,7 @@ // CHECK-NEXT: ext/oneapi/bindless_images_mem_handle.hpp // CHECK-NEXT: ext/oneapi/device_global/device_global.hpp // CHECK-NEXT: ext/oneapi/device_global/properties.hpp +// CHECK-NEXT: ext/oneapi/experimental/free_function_traits.hpp // CHECK-NEXT: ext/oneapi/experimental/raw_kernel_arg.hpp // CHECK-NEXT: kernel.hpp // CHECK-NEXT: sampler.hpp diff --git a/sycl/test/include_deps/sycl_khr_includes_kernel_bundle.hpp.cpp b/sycl/test/include_deps/sycl_khr_includes_kernel_bundle.hpp.cpp index a1ebb06b56591..0d475c6910261 100644 --- a/sycl/test/include_deps/sycl_khr_includes_kernel_bundle.hpp.cpp +++ b/sycl/test/include_deps/sycl_khr_includes_kernel_bundle.hpp.cpp @@ -146,6 +146,7 @@ // CHECK-NEXT: ext/oneapi/bindless_images_mem_handle.hpp // CHECK-NEXT: ext/oneapi/device_global/device_global.hpp // CHECK-NEXT: ext/oneapi/device_global/properties.hpp +// CHECK-NEXT: ext/oneapi/experimental/free_function_traits.hpp // CHECK-NEXT: ext/oneapi/experimental/raw_kernel_arg.hpp // CHECK-NEXT: sampler.hpp // CHECK-NEXT: sycl_span.hpp diff --git a/sycl/test/include_deps/sycl_khr_includes_queue.hpp.cpp b/sycl/test/include_deps/sycl_khr_includes_queue.hpp.cpp index cf2ff1ec5bbac..f2ad156db54f0 100644 --- a/sycl/test/include_deps/sycl_khr_includes_queue.hpp.cpp +++ b/sycl/test/include_deps/sycl_khr_includes_queue.hpp.cpp @@ -151,6 +151,7 @@ // CHECK-NEXT: ext/oneapi/bindless_images_interop.hpp // CHECK-NEXT: ext/oneapi/interop_common.hpp // CHECK-NEXT: ext/oneapi/bindless_images_mem_handle.hpp +// CHECK-NEXT: ext/oneapi/experimental/free_function_traits.hpp // CHECK-NEXT: ext/oneapi/experimental/raw_kernel_arg.hpp // CHECK-NEXT: kernel.hpp // CHECK-NEXT: sampler.hpp diff --git a/sycl/test/include_deps/sycl_khr_includes_reduction.hpp.cpp b/sycl/test/include_deps/sycl_khr_includes_reduction.hpp.cpp index 53e1da9695d09..ecfbf51d76b0f 100644 --- a/sycl/test/include_deps/sycl_khr_includes_reduction.hpp.cpp +++ b/sycl/test/include_deps/sycl_khr_includes_reduction.hpp.cpp @@ -174,6 +174,7 @@ // CHECK-NEXT: ext/oneapi/bindless_images_mem_handle.hpp // CHECK-NEXT: ext/oneapi/device_global/device_global.hpp // CHECK-NEXT: ext/oneapi/device_global/properties.hpp +// CHECK-NEXT: ext/oneapi/experimental/free_function_traits.hpp // CHECK-NEXT: ext/oneapi/experimental/raw_kernel_arg.hpp // CHECK-NEXT: kernel.hpp // CHECK-NEXT: sampler.hpp diff --git a/sycl/test/include_deps/sycl_khr_includes_stream.hpp.cpp b/sycl/test/include_deps/sycl_khr_includes_stream.hpp.cpp index 7feda0438dee3..540be89282a9a 100644 --- a/sycl/test/include_deps/sycl_khr_includes_stream.hpp.cpp +++ b/sycl/test/include_deps/sycl_khr_includes_stream.hpp.cpp @@ -163,6 +163,7 @@ // CHECK-NEXT: ext/oneapi/bindless_images_mem_handle.hpp // CHECK-NEXT: ext/oneapi/device_global/device_global.hpp // CHECK-NEXT: ext/oneapi/device_global/properties.hpp +// CHECK-NEXT: ext/oneapi/experimental/free_function_traits.hpp // CHECK-NEXT: ext/oneapi/experimental/raw_kernel_arg.hpp // CHECK-NEXT: kernel.hpp // CHECK-NEXT: sampler.hpp diff --git a/sycl/test/include_deps/sycl_khr_includes_usm.hpp.cpp b/sycl/test/include_deps/sycl_khr_includes_usm.hpp.cpp index 7b0becee030d4..0d78e36b146f5 100644 --- a/sycl/test/include_deps/sycl_khr_includes_usm.hpp.cpp +++ b/sycl/test/include_deps/sycl_khr_includes_usm.hpp.cpp @@ -166,6 +166,7 @@ // CHECK-NEXT: ext/oneapi/bindless_images_interop.hpp // CHECK-NEXT: ext/oneapi/interop_common.hpp // CHECK-NEXT: ext/oneapi/bindless_images_mem_handle.hpp +// CHECK-NEXT: ext/oneapi/experimental/free_function_traits.hpp // CHECK-NEXT: ext/oneapi/experimental/raw_kernel_arg.hpp // CHECK-NEXT: kernel.hpp // CHECK-NEXT: sampler.hpp From e3fb663b0ea6f416600b9eb03ca40d5e1e970f9d Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Fri, 5 Dec 2025 10:47:27 -0800 Subject: [PATCH 102/105] Fix typo --- sycl/test/include_deps/sycl_khr_includes_kernel_bundle.hpp.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/sycl/test/include_deps/sycl_khr_includes_kernel_bundle.hpp.cpp b/sycl/test/include_deps/sycl_khr_includes_kernel_bundle.hpp.cpp index 0d475c6910261..698aa9a6115ee 100644 --- a/sycl/test/include_deps/sycl_khr_includes_kernel_bundle.hpp.cpp +++ b/sycl/test/include_deps/sycl_khr_includes_kernel_bundle.hpp.cpp @@ -150,6 +150,5 @@ // CHECK-NEXT: ext/oneapi/experimental/raw_kernel_arg.hpp // CHECK-NEXT: sampler.hpp // CHECK-NEXT: sycl_span.hpp -// CHECK-NEXT: ext/oneapi/experimental/free_function_traits.hpp // CHECK-NEXT: specialization_id.hpp // CHECK-EMPTY: From befc6a1b47c0317a10f7013c4b8e3989f7cdd2f9 Mon Sep 17 00:00:00 2001 From: "Bushi, Lorenc" Date: Fri, 5 Dec 2025 10:57:33 -0800 Subject: [PATCH 103/105] Update Windows ABI symbols --- sycl/test/abi/sycl_symbols_windows.dump | 4405 +---------------------- 1 file changed, 2 insertions(+), 4403 deletions(-) diff --git a/sycl/test/abi/sycl_symbols_windows.dump b/sycl/test/abi/sycl_symbols_windows.dump index a07fc7a6ccf89..2a4cc8a5d0d69 100644 --- a/sycl/test/abi/sycl_symbols_windows.dump +++ b/sycl/test/abi/sycl_symbols_windows.dump @@ -3,4409 +3,8 @@ # DO NOT EDIT IT MANUALLY. Refer to sycl/doc/developer/ABIPolicyGuide.md for more info. ################################################################################ -# RUN: env LLVM_BIN_PATH=%llvm_build_bin_dir %python %sycl_tools_src_dir/abi_check.py --mode check_symbols --reference %s %llvm_build_bin_dir/sycl9.dll +# RUN: env LLVM_BIN_PATH=%llvm_build_bin_dir %python %sycl_tools_src_dir/abi_check.py --mode check_symbols --reference %s %llvm_build_bin_dir/sycl.lib # REQUIRES: windows # UNSUPPORTED: libcxx -??$create_sub_devices@$0BAIG@@device@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@_K@Z -??$create_sub_devices@$0BAIH@@device@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV?$vector@_KV?$allocator@_K@std@@@4@@Z -??$create_sub_devices@$0BAII@@device@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@W4partition_affinity_domain@info@12@@Z -??$create_sub_devices@$0BAIJ@@device@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ -??$ext_oneapi_get_info@U?$max_work_item_sizes@$00@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA?AV?$id@$00@12@Vqueue@12@@Z -??$ext_oneapi_get_info@U?$max_work_item_sizes@$01@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA?AV?$id@$01@12@Vqueue@12@@Z -??$ext_oneapi_get_info@U?$max_work_item_sizes@$02@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA?AV?$id@$02@12@Vqueue@12@@Z -??$ext_oneapi_get_info@Umax_num_work_group_sync@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KVqueue@12@@Z -??$ext_oneapi_get_info@Umax_num_work_group_sync@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KVqueue@12@AEBV?$range@$02@12@_K@Z -??$ext_oneapi_get_info@Umax_num_work_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KVqueue@12@AEBV?$range@$00@12@_K@Z -??$ext_oneapi_get_info@Umax_num_work_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KVqueue@12@AEBV?$range@$01@12@_K@Z -??$ext_oneapi_get_info@Umax_num_work_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KVqueue@12@AEBV?$range@$02@12@_K@Z -??$ext_oneapi_get_info@Umax_sub_group_size@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$00@12@@Z -??$ext_oneapi_get_info@Umax_sub_group_size@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$01@12@@Z -??$ext_oneapi_get_info@Umax_sub_group_size@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$02@12@@Z -??$ext_oneapi_get_info@Umax_work_group_size@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KVqueue@12@@Z -??$ext_oneapi_get_info@Unum_sub_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$00@12@@Z -??$ext_oneapi_get_info@Unum_sub_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$01@12@@Z -??$ext_oneapi_get_info@Unum_sub_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$02@12@@Z -??$get_info@Uatomic_fence_order_capabilities@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AV?$vector@W4memory_order@_V1@sycl@@V?$allocator@W4memory_order@_V1@sycl@@@std@@@std@@XZ -??$get_info@Uatomic_fence_scope_capabilities@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AV?$vector@W4memory_scope@_V1@sycl@@V?$allocator@W4memory_scope@_V1@sycl@@@std@@@std@@XZ -??$get_info@Uatomic_memory_order_capabilities@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AV?$vector@W4memory_order@_V1@sycl@@V?$allocator@W4memory_order@_V1@sycl@@@std@@@std@@XZ -??$get_info@Uatomic_memory_scope_capabilities@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AV?$vector@W4memory_scope@_V1@sycl@@V?$allocator@W4memory_scope@_V1@sycl@@@std@@@std@@XZ -??$get_info@Ucommand_execution_status@event@info@_V1@sycl@@@event@_V1@sycl@@QEBA?AW4event_command_status@info@12@XZ -??$get_info@Ucompile_num_sub_groups@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z -??$get_info@Ucompile_sub_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z -??$get_info@Ucompile_work_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA?AV?$range@$02@12@AEBVdevice@12@@Z -??$get_info@Ucontext@queue@info@_V1@sycl@@@queue@_V1@sycl@@QEBA?AVcontext@12@XZ -??$get_info@Udevice@queue@info@_V1@sycl@@@queue@_V1@sycl@@QEBA?AVdevice@12@XZ -??$get_info@Udevices@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ -??$get_info@Uext_codeplay_num_regs@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z -??$get_info@Uglobal_work_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA?AV?$range@$02@12@AEBVdevice@12@@Z -??$get_info@Umax_num_sub_groups@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z -??$get_info@Umax_sub_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z -??$get_info@Umax_sub_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@AEBV?$range@$02@12@@Z -??$get_info@Uplatform@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AVplatform@12@XZ -??$get_info@Upreferred_work_group_size_multiple@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KAEBVdevice@12@@Z -??$get_info@Uprivate_mem_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KAEBVdevice@12@@Z -??$get_info@Ureference_count@context@info@_V1@sycl@@@context@_V1@sycl@@QEBAIXZ -??$get_info@Ureference_count@event@info@_V1@sycl@@@event@_V1@sycl@@QEBAIXZ -??$get_info@Ureference_count@queue@info@_V1@sycl@@@queue@_V1@sycl@@QEBAIXZ -??$get_info@Uspill_memory_size@kernel_device_specific@info@intel@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KAEBVdevice@12@@Z -??$get_info@Uwork_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KAEBVdevice@12@@Z -??$get_info_impl@U?$max_work_groups@$00@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$id@$00@12@XZ -??$get_info_impl@U?$max_work_groups@$01@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$id@$01@12@XZ -??$get_info_impl@U?$max_work_groups@$02@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$id@$02@12@XZ -??$get_info_impl@U?$max_work_item_sizes@$00@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$range@$00@12@XZ -??$get_info_impl@U?$max_work_item_sizes@$01@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$range@$01@12@XZ -??$get_info_impl@U?$max_work_item_sizes@$02@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$range@$02@12@XZ -??$get_info_impl@U?$sub_group_progress_capabilities@$01@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@U?$sub_group_progress_capabilities@$02@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@U?$work_group_progress_capabilities@$02@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@U?$work_item_progress_capabilities@$00@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@U?$work_item_progress_capabilities@$01@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@U?$work_item_progress_capabilities@$02@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Uaddress_bits@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Uarchitecture@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AW4architecture@experimental@oneapi@ext@12@XZ -??$get_info_impl@Uaspects@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4aspect@_V1@sycl@@V?$allocator@W4aspect@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Uatomic64@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uatomic_fence_order_capabilities@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4memory_order@_V1@sycl@@V?$allocator@W4memory_order@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Uatomic_fence_scope_capabilities@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4memory_scope@_V1@sycl@@V?$allocator@W4memory_scope@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Uatomic_memory_order_capabilities@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4memory_order@_V1@sycl@@V?$allocator@W4memory_order@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Uatomic_memory_scope_capabilities@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4memory_scope@_V1@sycl@@V?$allocator@W4memory_scope@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Uattributes@kernel@info@_V1@sycl@@@kernel@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_info_impl@Ubackend_version@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_info_impl@Ubuilt_in_kernel_ids@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@Vkernel_id@_V1@sycl@@V?$allocator@Vkernel_id@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Ubuilt_in_kernels@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@Vstring@detail@_V1@sycl@@V?$allocator@Vstring@detail@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Ucomponent_devices@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Ucomposite_device@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV012@XZ -??$get_info_impl@Ucontext@kernel@info@_V1@sycl@@@kernel@_V1@sycl@@AEBA?AVcontext@12@XZ -??$get_info_impl@Ucurrent_clock_throttle_reasons@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4throttle_reason@intel@ext@_V1@sycl@@V?$allocator@W4throttle_reason@intel@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Udevice_id@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Udevice_type@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AW4device_type@info@12@XZ -??$get_info_impl@Udouble_fp_config@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4fp_config@info@_V1@sycl@@V?$allocator@W4fp_config@info@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Udriver_version@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_info_impl@Uerror_correction_support@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uexecution_capabilities@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4execution_capability@info@_V1@sycl@@V?$allocator@W4execution_capability@info@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Uext_intel_device_info_uuid@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$array@E$0BA@@std@@XZ -??$get_info_impl@Uext_intel_gpu_eu_count@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Uext_intel_gpu_eu_count_per_subslice@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Uext_intel_gpu_eu_simd_width@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Uext_intel_gpu_hw_threads_per_eu@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Uext_intel_gpu_slices@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Uext_intel_gpu_subslices_per_slice@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Uext_intel_max_mem_bandwidth@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Uext_intel_mem_channel@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uext_intel_pci_address@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_info_impl@Uext_oneapi_cuda_cluster_group@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uext_oneapi_max_global_work_groups@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Uext_oneapi_max_work_groups_1d@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$id@$00@12@XZ -??$get_info_impl@Uext_oneapi_max_work_groups_2d@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$id@$01@12@XZ -??$get_info_impl@Uext_oneapi_max_work_groups_3d@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$id@$02@12@XZ -??$get_info_impl@Uext_oneapi_srgb@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uextensions@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@Vstring@detail@_V1@sycl@@V?$allocator@Vstring@detail@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Uextensions@platform@info@_V1@sycl@@@platform@_V1@sycl@@AEBA?AV?$vector@Vstring@detail@_V1@sycl@@V?$allocator@Vstring@detail@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Ufan_speed@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAHXZ -??$get_info_impl@Ufree_memory@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Ufunction_name@kernel@info@_V1@sycl@@@kernel@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_info_impl@Uglobal_mem_cache_line_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Uglobal_mem_cache_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Uglobal_mem_cache_type@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AW4global_mem_cache_type@info@12@XZ -??$get_info_impl@Uglobal_mem_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Ugpu_eu_count@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Ugpu_eu_count_per_subslice@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Ugpu_eu_simd_width@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Ugpu_hw_threads_per_eu@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Ugpu_slices@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Ugpu_subslices_per_slice@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Uhalf_fp_config@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4fp_config@info@_V1@sycl@@V?$allocator@W4fp_config@info@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Uhas_2d_block_io_support@device@info@esimd@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uhost_unified_memory@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uimage2d_max_height@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Uimage2d_max_width@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Uimage3d_max_depth@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Uimage3d_max_height@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Uimage3d_max_width@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Uimage_max_array_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Uimage_max_buffer_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Uimage_row_pitch_align@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Uimage_support@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uis_available@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uis_compiler_available@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uis_endian_little@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uis_linker_available@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Ukernel_kernel_pipe_support@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Ulocal_mem_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Ulocal_mem_type@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AW4local_mem_type@info@12@XZ -??$get_info_impl@Uluid@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$array@E$07@std@@XZ -??$get_info_impl@Umatrix_combinations@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@Ucombination@matrix@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Ucombination@matrix@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Umax_clock_frequency@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Umax_compute_queue_indices@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAHXZ -??$get_info_impl@Umax_compute_units@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Umax_constant_args@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Umax_constant_buffer_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Umax_global_work_groups@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Umax_image_linear_height@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Umax_image_linear_row_pitch@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Umax_image_linear_width@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Umax_mem_alloc_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Umax_mem_bandwidth@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Umax_num_sub_groups@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Umax_parameter_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Umax_power_limit@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAHXZ -??$get_info_impl@Umax_read_image_args@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Umax_registers_per_work_group@device@info@experimental@codeplay@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Umax_samplers@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Umax_work_group_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Umax_work_item_dimensions@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Umax_write_image_args@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Umem_base_addr_align@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Umemory_bus_width@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Umemory_clock_rate@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Umin_power_limit@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAHXZ -??$get_info_impl@Umipmap_max_anisotropy@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBAMXZ -??$get_info_impl@Uname@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_info_impl@Uname@platform@info@_V1@sycl@@@platform@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_info_impl@Unative_vector_width_char@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Unative_vector_width_double@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Unative_vector_width_float@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Unative_vector_width_half@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Unative_vector_width_int@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Unative_vector_width_long@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Unative_vector_width_short@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Unode_mask@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Unum_args@kernel@info@_V1@sycl@@@kernel@_V1@sycl@@AEBAIXZ -??$get_info_impl@Unum_compute_units@device@info@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Uopencl_c_version@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_info_impl@Uparent_device@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV012@XZ -??$get_info_impl@Upartition_affinity_domains@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4partition_affinity_domain@info@_V1@sycl@@V?$allocator@W4partition_affinity_domain@info@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Upartition_max_sub_devices@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Upartition_properties@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4partition_property@info@_V1@sycl@@V?$allocator@W4partition_property@info@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Upartition_type_affinity_domain@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AW4partition_affinity_domain@info@12@XZ -??$get_info_impl@Upartition_type_property@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AW4partition_property@info@12@XZ -??$get_info_impl@Upci_address@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_info_impl@Uplatform@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVplatform@12@XZ -??$get_info_impl@Upreferred_interop_user_sync@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Upreferred_vector_width_char@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Upreferred_vector_width_double@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Upreferred_vector_width_float@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Upreferred_vector_width_half@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Upreferred_vector_width_int@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Upreferred_vector_width_long@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Upreferred_vector_width_short@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Uprintf_buffer_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Uprofile@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_info_impl@Uprofile@platform@info@_V1@sycl@@@platform@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_info_impl@Uprofiling_timer_resolution@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ -??$get_info_impl@Uqueue_profiling@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Ureference_count@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Ureference_count@kernel@info@_V1@sycl@@@kernel@_V1@sycl@@AEBAIXZ -??$get_info_impl@Usingle_fp_config@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4fp_config@info@_V1@sycl@@V?$allocator@W4fp_config@info@_V1@sycl@@@std@@@std@@XZ -??$get_info_impl@Usub_group_independent_forward_progress@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Usub_group_sizes@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@_KV?$allocator@_K@std@@@std@@XZ -??$get_info_impl@Usupports_fusion@device@info@experimental@codeplay@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uusm_device_allocations@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uusm_host_allocations@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uusm_restricted_shared_allocations@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uusm_shared_allocations@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uusm_system_allocations@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ -??$get_info_impl@Uuuid@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$array@E$0BA@@std@@XZ -??$get_info_impl@Uvendor@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_info_impl@Uvendor@platform@info@_V1@sycl@@@platform@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_info_impl@Uvendor_id@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ -??$get_info_impl@Uversion@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_info_impl@Uversion@platform@info@_V1@sycl@@@platform@_V1@sycl@@AEBA?AVstring@detail@12@XZ -??$get_profiling_info@Ucommand_end@event_profiling@info@_V1@sycl@@@event@_V1@sycl@@QEBA_KXZ -??$get_profiling_info@Ucommand_start@event_profiling@info@_V1@sycl@@@event@_V1@sycl@@QEBA_KXZ -??$get_profiling_info@Ucommand_submit@event_profiling@info@_V1@sycl@@@event@_V1@sycl@@QEBA_KXZ -??$import_external_memory@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_mem@01234@U?$external_mem_descriptor@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVdevice@34@AEBVcontext@34@@Z -??$import_external_memory@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_mem@01234@U?$external_mem_descriptor@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVqueue@34@@Z -??$import_external_memory@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_mem@01234@U?$external_mem_descriptor@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVdevice@34@AEBVcontext@34@@Z -??$import_external_memory@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_mem@01234@U?$external_mem_descriptor@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVqueue@34@@Z -??$import_external_semaphore@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_semaphore@01234@U?$external_semaphore_descriptor@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVdevice@34@AEBVcontext@34@@Z -??$import_external_semaphore@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_semaphore@01234@U?$external_semaphore_descriptor@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVqueue@34@@Z -??$import_external_semaphore@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_semaphore@01234@U?$external_semaphore_descriptor@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVdevice@34@AEBVcontext@34@@Z -??$import_external_semaphore@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_semaphore@01234@U?$external_semaphore_descriptor@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVqueue@34@@Z -??$is_image_handle_supported@Usampled_image_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA_NAEBUimage_descriptor@01234@W4image_memory_handle_type@01234@AEBVdevice@34@AEBVcontext@34@@Z -??$is_image_handle_supported@Usampled_image_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA_NAEBUimage_descriptor@01234@W4image_memory_handle_type@01234@AEBVqueue@34@@Z -??$is_image_handle_supported@Uunsampled_image_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA_NAEBUimage_descriptor@01234@W4image_memory_handle_type@01234@AEBVdevice@34@AEBVcontext@34@@Z -??$is_image_handle_supported@Uunsampled_image_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA_NAEBUimage_descriptor@01234@W4image_memory_handle_type@01234@AEBVqueue@34@@Z -??$update_nd_range@$00@node@experimental@oneapi@ext@_V1@sycl@@QEAAXV?$nd_range@$00@45@@Z -??$update_nd_range@$01@node@experimental@oneapi@ext@_V1@sycl@@QEAAXV?$nd_range@$01@45@@Z -??$update_nd_range@$02@node@experimental@oneapi@ext@_V1@sycl@@QEAAXV?$nd_range@$02@45@@Z -??$update_range@$00@node@experimental@oneapi@ext@_V1@sycl@@QEAAXV?$range@$00@45@@Z -??$update_range@$01@node@experimental@oneapi@ext@_V1@sycl@@QEAAXV?$range@$01@45@@Z -??$update_range@$02@node@experimental@oneapi@ext@_V1@sycl@@QEAAXV?$range@$02@45@@Z -??0AccessorBaseHost@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@VAccessorImplHost@detail@_V1@sycl@@@std@@@Z -??0AccessorBaseHost@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z -??0AccessorBaseHost@detail@_V1@sycl@@QEAA@AEBV0123@@Z -??0AccessorBaseHost@detail@_V1@sycl@@QEAA@V?$id@$02@23@V?$range@$02@23@1W4mode@access@23@PEAXHH_K_NAEBVproperty_list@23@@Z -??0AccessorBaseHost@detail@_V1@sycl@@QEAA@V?$id@$02@23@V?$range@$02@23@1W4mode@access@23@PEAXHH_N_K4AEBVproperty_list@23@@Z -??0HostProfilingInfo@detail@_V1@sycl@@QEAA@XZ -??0LocalAccessorBaseHost@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@VLocalAccessorImplHost@detail@_V1@sycl@@@std@@@Z -??0LocalAccessorBaseHost@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z -??0LocalAccessorBaseHost@detail@_V1@sycl@@QEAA@AEBV0123@@Z -??0LocalAccessorBaseHost@detail@_V1@sycl@@QEAA@V?$range@$02@23@HHAEBVproperty_list@23@@Z -??0SYCLCategory@detail@_V1@sycl@@QEAA@XZ -??0SampledImageAccessorBaseHost@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@VSampledImageAccessorImplHost@detail@_V1@sycl@@@std@@@Z -??0SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z -??0SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@AEBV0123@@Z -??0SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@V?$range@$02@23@PEAXHHV?$id@$02@23@W4image_channel_type@23@W4image_channel_order@23@Uimage_sampler@23@AEBVproperty_list@23@@Z -??0SubmissionInfo@v1@detail@_V1@sycl@@QEAA@$$QEAV01234@@Z -??0SubmissionInfo@v1@detail@_V1@sycl@@QEAA@AEBV01234@@Z -??0SubmissionInfo@v1@detail@_V1@sycl@@QEAA@XZ -??0UnsampledImageAccessorBaseHost@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@VUnsampledImageAccessorImplHost@detail@_V1@sycl@@@std@@@Z -??0UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z -??0UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@AEBV0123@@Z -??0UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@V?$range@$02@23@W4mode@access@23@PEAXHHV?$id@$02@23@W4image_channel_type@23@W4image_channel_order@23@AEBVproperty_list@23@@Z -??0accelerator_selector@_V1@sycl@@QEAA@$$QEAV012@@Z -??0accelerator_selector@_V1@sycl@@QEAA@AEBV012@@Z -??0accelerator_selector@_V1@sycl@@QEAA@XZ -??0buffer_plain@detail@_V1@sycl@@IEAA@AEBV?$function@$$A6AXPEAX@Z@std@@_K_KAEBVproperty_list@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@5@_N@Z -??0buffer_plain@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@$$CBX@std@@_K_KAEBVproperty_list@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@5@_N@Z -??0buffer_plain@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@Vbuffer_impl@detail@_V1@sycl@@@std@@@Z -??0buffer_plain@detail@_V1@sycl@@IEAA@PEAX_K1AEBVproperty_list@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@@Z -??0buffer_plain@detail@_V1@sycl@@IEAA@PEBX_K1AEBVproperty_list@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@@Z -??0buffer_plain@detail@_V1@sycl@@IEAA@_K0AEBVproperty_list@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@@Z -??0buffer_plain@detail@_V1@sycl@@IEAA@_KAEBVcontext@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@_NAEBVevent@23@@Z -??0buffer_plain@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z -??0buffer_plain@detail@_V1@sycl@@QEAA@AEBV0123@@Z -??0context@_V1@sycl@@AEAA@V?$shared_ptr@Vcontext_impl@detail@_V1@sycl@@@std@@@Z -??0context@_V1@sycl@@QEAA@$$QEAV012@@Z -??0context@_V1@sycl@@QEAA@AEBV012@@Z -??0context@_V1@sycl@@QEAA@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z -??0context@_V1@sycl@@QEAA@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBVproperty_list@12@@Z -??0context@_V1@sycl@@QEAA@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@V?$function@$$A6AXVexception_list@_V1@sycl@@@Z@4@AEBVproperty_list@12@@Z -??0context@_V1@sycl@@QEAA@AEBVdevice@12@AEBVproperty_list@12@@Z -??0context@_V1@sycl@@QEAA@AEBVdevice@12@V?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z -??0context@_V1@sycl@@QEAA@AEBVplatform@12@AEBVproperty_list@12@@Z -??0context@_V1@sycl@@QEAA@AEBVplatform@12@V?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z -??0context@_V1@sycl@@QEAA@AEBVproperty_list@12@@Z -??0context@_V1@sycl@@QEAA@PEAU_cl_context@@V?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@@Z -??0cpu_selector@_V1@sycl@@QEAA@$$QEAV012@@Z -??0cpu_selector@_V1@sycl@@QEAA@AEBV012@@Z -??0cpu_selector@_V1@sycl@@QEAA@XZ -??0default_selector@_V1@sycl@@QEAA@$$QEAV012@@Z -??0default_selector@_V1@sycl@@QEAA@AEBV012@@Z -??0default_selector@_V1@sycl@@QEAA@XZ -??0device@_V1@sycl@@AEAA@V?$shared_ptr@Vdevice_impl@detail@_V1@sycl@@@std@@@Z -??0device@_V1@sycl@@QEAA@$$QEAV012@@Z -??0device@_V1@sycl@@QEAA@AEBV012@@Z -??0device@_V1@sycl@@QEAA@AEBVdevice_selector@12@@Z -??0device@_V1@sycl@@QEAA@PEAU_cl_device_id@@@Z -??0device@_V1@sycl@@QEAA@XZ -??0device_image_plain@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z -??0device_image_plain@detail@_V1@sycl@@QEAA@$$QEAV?$shared_ptr@Vdevice_image_impl@detail@_V1@sycl@@@std@@@Z -??0device_image_plain@detail@_V1@sycl@@QEAA@AEBV0123@@Z -??0device_image_plain@detail@_V1@sycl@@QEAA@AEBV?$shared_ptr@Vdevice_image_impl@detail@_V1@sycl@@@std@@@Z -??0device_selector@_V1@sycl@@QEAA@AEBV012@@Z -??0device_selector@_V1@sycl@@QEAA@XZ -??0dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV012345@@Z -??0dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV012345@@Z -??0dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV?$command_graph@$0A@@12345@AEBV?$vector@V?$function@$$A6AXAEAVhandler@_V1@sycl@@@Z@std@@V?$allocator@V?$function@$$A6AXAEAVhandler@_V1@sycl@@@Z@std@@@2@@std@@@Z -??0dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV0123456@@Z -??0dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV0123456@@Z -??0dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@V?$range@$02@56@HHAEBVproperty_list@56@@Z -??0dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??0dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV0123456@@Z -??0dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV0123456@@Z -??0dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV?$shared_ptr@Vdynamic_parameter_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@@Z -??0dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??0dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@_KPEBX@Z -??0dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV0123456@@Z -??0dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV0123456@@Z -??0dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??0dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@_K@Z -??0event@_V1@sycl@@AEAA@V?$shared_ptr@Vevent_impl@detail@_V1@sycl@@@std@@@Z -??0event@_V1@sycl@@QEAA@$$QEAV012@@Z -??0event@_V1@sycl@@QEAA@AEBV012@@Z -??0event@_V1@sycl@@QEAA@PEAU_cl_event@@AEBVcontext@12@@Z -??0event@_V1@sycl@@QEAA@XZ -??0exception@_V1@sycl@@IEAA@Verror_code@std@@V?$shared_ptr@Vcontext@_V1@sycl@@@4@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@4@@Z -??0exception@_V1@sycl@@IEAA@Verror_code@std@@V?$shared_ptr@Vcontext@_V1@sycl@@@4@PEBD@Z -??0exception@_V1@sycl@@QEAA@AEBV012@@Z -??0exception@_V1@sycl@@QEAA@HAEBVerror_category@std@@@Z -??0exception@_V1@sycl@@QEAA@HAEBVerror_category@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@4@@Z -??0exception@_V1@sycl@@QEAA@HAEBVerror_category@std@@PEBD@Z -??0exception@_V1@sycl@@QEAA@Vcontext@12@HAEBVerror_category@std@@@Z -??0exception@_V1@sycl@@QEAA@Vcontext@12@HAEBVerror_category@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@5@@Z -??0exception@_V1@sycl@@QEAA@Vcontext@12@HAEBVerror_category@std@@PEBD@Z -??0exception@_V1@sycl@@QEAA@Vcontext@12@Verror_code@std@@@Z -??0exception@_V1@sycl@@QEAA@Vcontext@12@Verror_code@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@5@@Z -??0exception@_V1@sycl@@QEAA@Vcontext@12@Verror_code@std@@PEBD@Z -??0exception@_V1@sycl@@QEAA@Verror_code@std@@@Z -??0exception@_V1@sycl@@QEAA@Verror_code@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@4@@Z -??0exception@_V1@sycl@@QEAA@Verror_code@std@@PEBD@Z -??0exception@_V1@sycl@@QEAA@XZ -??0exception_list@_V1@sycl@@QEAA@$$QEAV012@@Z -??0exception_list@_V1@sycl@@QEAA@AEBV012@@Z -??0exception_list@_V1@sycl@@QEAA@XZ -??0executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAA@AEBV?$shared_ptr@Vgraph_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@AEBVcontext@56@AEBVproperty_list@56@@Z -??0executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV0123456@@Z -??0executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV0123456@@Z -??0filter_selector@ONEAPI@_V1@sycl@@AEAA@Vstring_view@detail@23@@Z -??0filter_selector@ONEAPI@_V1@sycl@@QEAA@$$QEAV0123@@Z -??0filter_selector@ONEAPI@_V1@sycl@@QEAA@AEBV0123@@Z -??0filter_selector@ONEAPI@_V1@sycl@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z -??0filter_selector@oneapi@ext@_V1@sycl@@AEAA@Vstring_view@detail@34@@Z -??0filter_selector@oneapi@ext@_V1@sycl@@QEAA@$$QEAV01234@@Z -??0filter_selector@oneapi@ext@_V1@sycl@@QEAA@AEBV01234@@Z -??0filter_selector@oneapi@ext@_V1@sycl@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z -??0fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAA@$$QEAV012345@@Z -??0fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAA@AEAVqueue@45@@Z -??0fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAA@AEBV012345@@Z -??0gpu_selector@_V1@sycl@@QEAA@$$QEAV012@@Z -??0gpu_selector@_V1@sycl@@QEAA@AEBV012@@Z -??0gpu_selector@_V1@sycl@@QEAA@XZ -??0handler@_V1@sycl@@AEAA@$$QEAV?$unique_ptr@Vhandler_impl@detail@_V1@sycl@@U?$default_delete@Vhandler_impl@detail@_V1@sycl@@@std@@@std@@@Z -??0handler@_V1@sycl@@AEAA@AEAVhandler_impl@detail@12@@Z -??0image_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV012345@@Z -??0image_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z -??0image_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBUimage_descriptor@12345@AEBVqueue@45@@Z -??0image_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV012345@@Z -??0image_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??0image_mem_impl@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBUimage_descriptor@23456@AEBVdevice@56@AEBVcontext@56@@Z -??0image_plain@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@$$CBX@std@@W4image_channel_order@23@W4image_channel_type@23@AEBV?$range@$02@23@AEBV?$range@$01@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@5@EAEBVproperty_list@23@_N@Z -??0image_plain@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@$$CBX@std@@W4image_channel_order@23@W4image_channel_type@23@AEBV?$range@$02@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@5@EAEBVproperty_list@23@_N@Z -??0image_plain@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@$$CBX@std@@W4image_channel_order@23@W4image_channel_type@23@Uimage_sampler@23@AEBV?$range@$02@23@AEBV?$range@$01@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@5@EAEBVproperty_list@23@@Z -??0image_plain@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@$$CBX@std@@W4image_channel_order@23@W4image_channel_type@23@Uimage_sampler@23@AEBV?$range@$02@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@5@EAEBVproperty_list@23@@Z -??0image_plain@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@Vimage_impl@detail@_V1@sycl@@@std@@@Z -??0image_plain@detail@_V1@sycl@@IEAA@PEAU_cl_mem@@AEBVcontext@23@Vevent@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@E@Z -??0image_plain@detail@_V1@sycl@@IEAA@PEAXW4image_channel_order@23@W4image_channel_type@23@AEBV?$range@$02@23@AEBV?$range@$01@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EAEBVproperty_list@23@@Z -??0image_plain@detail@_V1@sycl@@IEAA@PEAXW4image_channel_order@23@W4image_channel_type@23@AEBV?$range@$02@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EAEBVproperty_list@23@@Z -??0image_plain@detail@_V1@sycl@@IEAA@PEBXW4image_channel_order@23@W4image_channel_type@23@AEBV?$range@$02@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EAEBVproperty_list@23@@Z -??0image_plain@detail@_V1@sycl@@IEAA@PEBXW4image_channel_order@23@W4image_channel_type@23@Uimage_sampler@23@AEBV?$range@$02@23@AEBV?$range@$01@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EAEBVproperty_list@23@@Z -??0image_plain@detail@_V1@sycl@@IEAA@PEBXW4image_channel_order@23@W4image_channel_type@23@Uimage_sampler@23@AEBV?$range@$02@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EAEBVproperty_list@23@@Z -??0image_plain@detail@_V1@sycl@@IEAA@W4image_channel_order@23@W4image_channel_type@23@AEBV?$range@$02@23@AEBV?$range@$01@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EAEBVproperty_list@23@@Z -??0image_plain@detail@_V1@sycl@@IEAA@W4image_channel_order@23@W4image_channel_type@23@AEBV?$range@$02@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EAEBVproperty_list@23@@Z -??0image_plain@detail@_V1@sycl@@IEAA@_KAEBVcontext@23@Vevent@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EW4image_channel_order@23@W4image_channel_type@23@_NV?$range@$02@23@@Z -??0image_plain@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z -??0image_plain@detail@_V1@sycl@@QEAA@AEBV0123@@Z -??0kernel@_V1@sycl@@AEAA@V?$shared_ptr@Vkernel_impl@detail@_V1@sycl@@@std@@@Z -??0kernel@_V1@sycl@@QEAA@$$QEAV012@@Z -??0kernel@_V1@sycl@@QEAA@AEBV012@@Z -??0kernel@_V1@sycl@@QEAA@PEAU_cl_kernel@@AEBVcontext@12@@Z -??0kernel_bundle_plain@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z -??0kernel_bundle_plain@detail@_V1@sycl@@QEAA@AEBV0123@@Z -??0kernel_bundle_plain@detail@_V1@sycl@@QEAA@AEBV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@@Z -??0kernel_id@_V1@sycl@@AEAA@AEBV?$shared_ptr@Vkernel_id_impl@detail@_V1@sycl@@@std@@@Z -??0kernel_id@_V1@sycl@@AEAA@PEBD@Z -??0kernel_id@_V1@sycl@@QEAA@$$QEAV012@@Z -??0kernel_id@_V1@sycl@@QEAA@AEBV012@@Z -??0memory_pool@experimental@oneapi@ext@_V1@sycl@@IEAA@AEBVcontext@45@AEBVdevice@45@W4alloc@usm@45@Upool_properties@012345@@Z -??0memory_pool@experimental@oneapi@ext@_V1@sycl@@IEAA@V?$shared_ptr@Vmemory_pool_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@@Z -??0memory_pool@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV012345@@Z -??0memory_pool@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV012345@@Z -??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAA@AEBV?$shared_ptr@Vgraph_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@@Z -??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV0123456@@Z -??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV0123456@@Z -??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBVcontext@56@AEBVdevice@56@AEBVproperty_list@56@@Z -??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBVdevice@56@AEBVproperty_list@56@@Z -??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBVqueue@56@AEBVproperty_list@56@@Z -??0node@experimental@oneapi@ext@_V1@sycl@@AEAA@AEBV?$shared_ptr@Vnode_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@@Z -??0node@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV012345@@Z -??0node@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV012345@@Z -??0physical_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV012345@@Z -??0physical_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV012345@@Z -??0physical_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBVdevice@45@AEBVcontext@45@_K@Z -??0physical_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBVqueue@45@_K@Z -??0platform@_V1@sycl@@AEAA@AEBVdevice@12@@Z -??0platform@_V1@sycl@@AEAA@V?$shared_ptr@Vplatform_impl@detail@_V1@sycl@@@std@@@Z -??0platform@_V1@sycl@@QEAA@$$QEAV012@@Z -??0platform@_V1@sycl@@QEAA@AEBV012@@Z -??0platform@_V1@sycl@@QEAA@AEBVdevice_selector@12@@Z -??0platform@_V1@sycl@@QEAA@PEAU_cl_platform_id@@@Z -??0platform@_V1@sycl@@QEAA@XZ -??0queue@_V1@sycl@@AEAA@V?$shared_ptr@Vqueue_impl@detail@_V1@sycl@@@std@@@Z -??0queue@_V1@sycl@@QEAA@$$QEAV012@@Z -??0queue@_V1@sycl@@QEAA@AEBV012@@Z -??0queue@_V1@sycl@@QEAA@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z -??0queue@_V1@sycl@@QEAA@AEBVcontext@12@AEBVdevice@12@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z -??0queue@_V1@sycl@@QEAA@AEBVcontext@12@AEBVdevice@12@AEBVproperty_list@12@@Z -??0queue@_V1@sycl@@QEAA@AEBVcontext@12@AEBVdevice_selector@12@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z -??0queue@_V1@sycl@@QEAA@AEBVcontext@12@AEBVdevice_selector@12@AEBVproperty_list@12@@Z -??0queue@_V1@sycl@@QEAA@AEBVdevice@12@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z -??0queue@_V1@sycl@@QEAA@AEBVdevice@12@AEBVproperty_list@12@@Z -??0queue@_V1@sycl@@QEAA@AEBVdevice_selector@12@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z -??0queue@_V1@sycl@@QEAA@AEBVdevice_selector@12@AEBVproperty_list@12@@Z -??0queue@_V1@sycl@@QEAA@AEBVproperty_list@12@@Z -??0queue@_V1@sycl@@QEAA@PEAU_cl_command_queue@@AEBVcontext@12@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@@Z -??0sampler@_V1@sycl@@QEAA@$$QEAV012@@Z -??0sampler@_V1@sycl@@QEAA@AEBV012@@Z -??0sampler@_V1@sycl@@QEAA@PEAU_cl_sampler@@AEBVcontext@12@@Z -??0sampler@_V1@sycl@@QEAA@W4coordinate_normalization_mode@12@W4addressing_mode@12@W4filtering_mode@12@AEBVproperty_list@12@@Z -??0stream@_V1@sycl@@AEAA@V?$shared_ptr@Vstream_impl@detail@_V1@sycl@@@std@@V?$accessor@D$00$0EAC@$0HNO@$0A@V?$accessor_property_list@$$V@oneapi@ext@_V1@sycl@@@12@V?$accessor@I$00$0EAF@$0HNO@$0A@V?$accessor_property_list@$$V@oneapi@ext@_V1@sycl@@@12@1@Z -??0stream@_V1@sycl@@QEAA@$$QEAV012@@Z -??0stream@_V1@sycl@@QEAA@AEBV012@@Z -??0stream@_V1@sycl@@QEAA@_K0AEAVhandler@12@@Z -??0stream@_V1@sycl@@QEAA@_K0AEAVhandler@12@AEBVproperty_list@12@@Z -??0tls_code_loc_t@detail@_V1@sycl@@QEAA@AEBUcode_location@123@@Z -??0tls_code_loc_t@detail@_V1@sycl@@QEAA@XZ -??1AccessorBaseHost@detail@_V1@sycl@@QEAA@XZ -??1LocalAccessorBaseHost@detail@_V1@sycl@@QEAA@XZ -??1SYCLCategory@detail@_V1@sycl@@UEAA@XZ -??1SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@XZ -??1SubmissionInfo@v1@detail@_V1@sycl@@QEAA@XZ -??1UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@XZ -??1accelerator_selector@_V1@sycl@@UEAA@XZ -??1buffer_plain@detail@_V1@sycl@@QEAA@XZ -??1context@_V1@sycl@@QEAA@XZ -??1cpu_selector@_V1@sycl@@UEAA@XZ -??1default_selector@_V1@sycl@@UEAA@XZ -??1device@_V1@sycl@@QEAA@XZ -??1device_image_plain@detail@_V1@sycl@@QEAA@XZ -??1device_selector@_V1@sycl@@UEAA@XZ -??1dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??1dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??1dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??1dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??1event@_V1@sycl@@QEAA@XZ -??1exception@_V1@sycl@@UEAA@XZ -??1exception_list@_V1@sycl@@QEAA@XZ -??1executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??1filter_selector@ONEAPI@_V1@sycl@@UEAA@XZ -??1filter_selector@oneapi@ext@_V1@sycl@@UEAA@XZ -??1fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAA@XZ -??1gpu_selector@_V1@sycl@@UEAA@XZ -??1handler@_V1@sycl@@AEAA@XZ -??1image_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??1image_mem_impl@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??1image_plain@detail@_V1@sycl@@QEAA@XZ -??1kernel@_V1@sycl@@QEAA@XZ -??1kernel_bundle_plain@detail@_V1@sycl@@QEAA@XZ -??1kernel_id@_V1@sycl@@QEAA@XZ -??1memory_pool@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??1modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??1node@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??1physical_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??1platform@_V1@sycl@@QEAA@XZ -??1queue@_V1@sycl@@QEAA@XZ -??1sampler@_V1@sycl@@QEAA@XZ -??1stream@_V1@sycl@@QEAA@XZ -??1tls_code_loc_t@detail@_V1@sycl@@QEAA@XZ -??4?$OwnerLessBase@Vcontext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4?$OwnerLessBase@Vcontext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4?$OwnerLessBase@Vdevice@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4?$OwnerLessBase@Vdevice@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4?$OwnerLessBase@Vevent@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4?$OwnerLessBase@Vevent@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4?$OwnerLessBase@Vexecutable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4?$OwnerLessBase@Vexecutable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4?$OwnerLessBase@Vkernel@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4?$OwnerLessBase@Vkernel@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4?$OwnerLessBase@Vkernel_id@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4?$OwnerLessBase@Vkernel_id@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4?$OwnerLessBase@Vmodifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4?$OwnerLessBase@Vmodifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4?$OwnerLessBase@Vphysical_mem@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4?$OwnerLessBase@Vphysical_mem@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4?$OwnerLessBase@Vplatform@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4?$OwnerLessBase@Vplatform@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4?$OwnerLessBase@Vqueue@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4?$OwnerLessBase@Vqueue@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4?$OwnerLessBase@Vstream@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4?$OwnerLessBase@Vstream@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4?$hash@Vdynamic_command_group@experimental@oneapi@ext@_V1@sycl@@@std@@QEAAAEAU01@$$QEAU01@@Z -??4?$hash@Vdynamic_command_group@experimental@oneapi@ext@_V1@sycl@@@std@@QEAAAEAU01@AEBU01@@Z -??4?$hash@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@QEAAAEAU01@$$QEAU01@@Z -??4?$hash@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@QEAAAEAU01@AEBU01@@Z -??4?$hash@Vqueue@_V1@sycl@@@std@@QEAAAEAU01@$$QEAU01@@Z -??4?$hash@Vqueue@_V1@sycl@@@std@@QEAAAEAU01@AEBU01@@Z -??4AccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4AccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4HostProfilingInfo@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4HostProfilingInfo@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4LocalAccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4LocalAccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4OSUtil@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4OSUtil@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4SubmissionInfo@v1@detail@_V1@sycl@@QEAAAEAV01234@$$QEAV01234@@Z -??4SubmissionInfo@v1@detail@_V1@sycl@@QEAAAEAV01234@AEBV01234@@Z -??4UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4accelerator_selector@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z -??4accelerator_selector@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4buffer_plain@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4buffer_plain@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4context@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z -??4context@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4cpu_selector@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z -??4cpu_selector@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4default_selector@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z -??4default_selector@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4device@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z -??4device@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4device_image_plain@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4device_image_plain@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4device_selector@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@$$QEAV012345@@Z -??4dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@AEBV012345@@Z -??4dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@$$QEAV0123456@@Z -??4dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@AEBV0123456@@Z -??4dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@$$QEAV0123456@@Z -??4dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@AEBV0123456@@Z -??4dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@$$QEAV0123456@@Z -??4dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@AEBV0123456@@Z -??4event@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z -??4event@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4exception@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4exception_list@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z -??4exception_list@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@$$QEAV0123456@@Z -??4executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@AEBV0123456@@Z -??4filter_selector@ONEAPI@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4filter_selector@ONEAPI@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4filter_selector@oneapi@ext@_V1@sycl@@QEAAAEAV01234@$$QEAV01234@@Z -??4filter_selector@oneapi@ext@_V1@sycl@@QEAAAEAV01234@AEBV01234@@Z -??4fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAAAEAV012345@$$QEAV012345@@Z -??4fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAAAEAV012345@AEBV012345@@Z -??4gpu_selector@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z -??4gpu_selector@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4image_mem@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@$$QEAV012345@@Z -??4image_mem@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@AEBV012345@@Z -??4image_plain@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4image_plain@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4kernel@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z -??4kernel@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4kernel_bundle_plain@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z -??4kernel_bundle_plain@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4kernel_id@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z -??4kernel_id@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4memory_pool@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@$$QEAV012345@@Z -??4memory_pool@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@AEBV012345@@Z -??4modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@$$QEAV0123456@@Z -??4modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@AEBV0123456@@Z -??4node@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@$$QEAV012345@@Z -??4node@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@AEBV012345@@Z -??4physical_mem@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@$$QEAV012345@@Z -??4physical_mem@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@AEBV012345@@Z -??4platform@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z -??4platform@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4queue@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z -??4queue@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4sampler@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z -??4sampler@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??4stream@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z -??4stream@_V1@sycl@@QEAAAEAV012@AEBV012@@Z -??8context@_V1@sycl@@QEBA_NAEBV012@@Z -??8device@_V1@sycl@@QEBA_NAEBV012@@Z -??8device_image_plain@detail@_V1@sycl@@QEBA_NAEBV0123@@Z -??8event@_V1@sycl@@QEBA_NAEBV012@@Z -??8image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA_NAEBV012345@@Z -??8kernel@_V1@sycl@@QEBA_NAEBV012@@Z -??8kernel_bundle_plain@detail@_V1@sycl@@QEBA_NAEBV0123@@Z -??8kernel_id@_V1@sycl@@QEBA_NAEBV012@@Z -??8memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA_NAEBV012345@@Z -??8physical_mem@experimental@oneapi@ext@_V1@sycl@@QEBA_NAEBV012345@@Z -??8platform@_V1@sycl@@QEBA_NAEBV012@@Z -??8queue@_V1@sycl@@QEBA_NAEBV012@@Z -??8sampler@_V1@sycl@@QEBA_NAEBV012@@Z -??8stream@_V1@sycl@@QEBA_NAEBV012@@Z -??9context@_V1@sycl@@QEBA_NAEBV012@@Z -??9device@_V1@sycl@@QEBA_NAEBV012@@Z -??9device_image_plain@detail@_V1@sycl@@QEBA_NAEBV0123@@Z -??9event@_V1@sycl@@QEBA_NAEBV012@@Z -??9image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA_NAEBV012345@@Z -??9kernel@_V1@sycl@@QEBA_NAEBV012@@Z -??9kernel_bundle_plain@detail@_V1@sycl@@QEBA_NAEBV0123@@Z -??9kernel_id@_V1@sycl@@QEBA_NAEBV012@@Z -??9memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA_NAEBV012345@@Z -??9physical_mem@experimental@oneapi@ext@_V1@sycl@@QEBA_NAEBV012345@@Z -??9platform@_V1@sycl@@QEBA_NAEBV012@@Z -??9queue@_V1@sycl@@QEBA_NAEBV012@@Z -??9sampler@_V1@sycl@@QEBA_NAEBV012@@Z -??9stream@_V1@sycl@@QEBA_NAEBV012@@Z -??R?$hash@Vdynamic_command_group@experimental@oneapi@ext@_V1@sycl@@@std@@QEBA_KAEBVdynamic_command_group@experimental@oneapi@ext@_V1@sycl@@@Z -??R?$hash@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@QEBA_KAEBVnode@experimental@oneapi@ext@_V1@sycl@@@Z -??R?$hash@Vqueue@_V1@sycl@@@std@@QEBA_KAEBVqueue@_V1@sycl@@@Z -??Raccelerator_selector@_V1@sycl@@UEBAHAEBVdevice@12@@Z -??Rcpu_selector@_V1@sycl@@UEBAHAEBVdevice@12@@Z -??Rdefault_selector@_V1@sycl@@UEBAHAEBVdevice@12@@Z -??Rfilter_selector@ONEAPI@_V1@sycl@@UEBAHAEBVdevice@23@@Z -??Rfilter_selector@oneapi@ext@_V1@sycl@@UEBAHAEBVdevice@34@@Z -??Rgpu_selector@_V1@sycl@@UEBAHAEBVdevice@12@@Z -??_7SYCLCategory@detail@_V1@sycl@@6B@ -??_7accelerator_selector@_V1@sycl@@6B@ -??_7cpu_selector@_V1@sycl@@6B@ -??_7default_selector@_V1@sycl@@6B@ -??_7device_selector@_V1@sycl@@6B@ -??_7exception@_V1@sycl@@6B@ -??_7filter_selector@ONEAPI@_V1@sycl@@6B@ -??_7filter_selector@oneapi@ext@_V1@sycl@@6B@ -??_7gpu_selector@_V1@sycl@@6B@ -??_8exception@_V1@sycl@@7B@ -??_Dexception@_V1@sycl@@QEAAXXZ -??_Fcontext@_V1@sycl@@QEAAXXZ -??_Fqueue@_V1@sycl@@QEAAXXZ -?AccessTargetMask@handler@_V1@sycl@@0HB -?Clear@exception_list@_V1@sycl@@AEAAXXZ -?DirSep@OSUtil@detail@_V1@sycl@@2QEBDEB -?DisableRangeRounding@handler@_V1@sycl@@AEAA_NXZ -?EventMode@SubmissionInfo@v1@detail@_V1@sycl@@QEAAAEAW4event_mode_enum@experimental@oneapi@ext@45@XZ -?EventMode@SubmissionInfo@v1@detail@_V1@sycl@@QEBAAEBW4event_mode_enum@experimental@oneapi@ext@45@XZ -?GDBMethodsAnchor@SampledImageAccessorBaseHost@detail@_V1@sycl@@IEAAXXZ -?GDBMethodsAnchor@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@IEAAXXZ -?GetRangeRoundingSettings@handler@_V1@sycl@@AEAAXAEA_K00@Z -?HasAssociatedAccessor@handler@_V1@sycl@@AEBA_NPEAVAccessorImplHost@detail@23@W4target@access@23@@Z -?PushBack@exception_list@_V1@sycl@@AEAAX$$QEAVexception_ptr@std@@@Z -?PushBack@exception_list@_V1@sycl@@AEAAXAEBVexception_ptr@std@@@Z -?RangeRoundingTrace@handler@_V1@sycl@@AEAA_NXZ -?SetHostTask@handler@_V1@sycl@@AEAAXV?$function@$$A6AXVinterop_handle@_V1@sycl@@@Z@std@@@Z -?SetHostTask@handler@_V1@sycl@@AEAAXV?$function@$$A6AXXZ@std@@@Z -?SetKernelLaunchpropertiesIfNotEmpty@handler@_V1@sycl@@AEAAXAEBU?$PropsHolder@Uwork_group_scratch_size@experimental@oneapi@ext@_V1@sycl@@Ucache_config@2intel@456@Uuse_root_sync_key@23456@Uwork_group_progress_key@23456@Usub_group_progress_key@23456@Uwork_item_progress_key@23456@U?$cluster_size@$00@cuda@23456@U?$cluster_size@$01@cuda@23456@U?$cluster_size@$02@cuda@23456@@kernel_launch_properties_v1@detail@23@@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z -?__abs_diff_impl@_V1@sycl@@YACCC@Z -?__abs_diff_impl@_V1@sycl@@YADDD@Z -?__abs_diff_impl@_V1@sycl@@YAEEE@Z -?__abs_diff_impl@_V1@sycl@@YAFFF@Z -?__abs_diff_impl@_V1@sycl@@YAGGG@Z -?__abs_diff_impl@_V1@sycl@@YAHHH@Z -?__abs_diff_impl@_V1@sycl@@YAIII@Z -?__abs_diff_impl@_V1@sycl@@YAJJJ@Z -?__abs_diff_impl@_V1@sycl@@YAKKK@Z -?__abs_diff_impl@_V1@sycl@@YA_J_J0@Z -?__abs_diff_impl@_V1@sycl@@YA_K_K0@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@@Z -?__abs_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@@Z -?__abs_impl@_V1@sycl@@YACC@Z -?__abs_impl@_V1@sycl@@YADD@Z -?__abs_impl@_V1@sycl@@YAEE@Z -?__abs_impl@_V1@sycl@@YAFF@Z -?__abs_impl@_V1@sycl@@YAGG@Z -?__abs_impl@_V1@sycl@@YAHH@Z -?__abs_impl@_V1@sycl@@YAII@Z -?__abs_impl@_V1@sycl@@YAJJ@Z -?__abs_impl@_V1@sycl@@YAKK@Z -?__abs_impl@_V1@sycl@@YA_J_J@Z -?__abs_impl@_V1@sycl@@YA_K_K@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__acos_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__acos_impl@_V1@sycl@@YAMM@Z -?__acos_impl@_V1@sycl@@YANN@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__acosh_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__acosh_impl@_V1@sycl@@YAMM@Z -?__acosh_impl@_V1@sycl@@YANN@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__acospi_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__acospi_impl@_V1@sycl@@YAMM@Z -?__acospi_impl@_V1@sycl@@YANN@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z -?__add_sat_impl@_V1@sycl@@YACCC@Z -?__add_sat_impl@_V1@sycl@@YADDD@Z -?__add_sat_impl@_V1@sycl@@YAEEE@Z -?__add_sat_impl@_V1@sycl@@YAFFF@Z -?__add_sat_impl@_V1@sycl@@YAGGG@Z -?__add_sat_impl@_V1@sycl@@YAHHH@Z -?__add_sat_impl@_V1@sycl@@YAIII@Z -?__add_sat_impl@_V1@sycl@@YAJJJ@Z -?__add_sat_impl@_V1@sycl@@YAKKK@Z -?__add_sat_impl@_V1@sycl@@YA_J_J0@Z -?__add_sat_impl@_V1@sycl@@YA_K_K0@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__asin_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__asin_impl@_V1@sycl@@YAMM@Z -?__asin_impl@_V1@sycl@@YANN@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__asinh_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__asinh_impl@_V1@sycl@@YAMM@Z -?__asinh_impl@_V1@sycl@@YANN@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__asinpi_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__asinpi_impl@_V1@sycl@@YAMM@Z -?__asinpi_impl@_V1@sycl@@YANN@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__atan2_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__atan2_impl@_V1@sycl@@YAMMM@Z -?__atan2_impl@_V1@sycl@@YANNN@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__atan2pi_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__atan2pi_impl@_V1@sycl@@YAMMM@Z -?__atan2pi_impl@_V1@sycl@@YANNN@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__atan_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__atan_impl@_V1@sycl@@YAMM@Z -?__atan_impl@_V1@sycl@@YANN@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__atanh_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__atanh_impl@_V1@sycl@@YAMM@Z -?__atanh_impl@_V1@sycl@@YANN@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__atanpi_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__atanpi_impl@_V1@sycl@@YAMM@Z -?__atanpi_impl@_V1@sycl@@YANN@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@00@Z -?__bitselect_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@00@Z -?__bitselect_impl@_V1@sycl@@YACCCC@Z -?__bitselect_impl@_V1@sycl@@YADDDD@Z -?__bitselect_impl@_V1@sycl@@YAEEEE@Z -?__bitselect_impl@_V1@sycl@@YAFFFF@Z -?__bitselect_impl@_V1@sycl@@YAGGGG@Z -?__bitselect_impl@_V1@sycl@@YAHHHH@Z -?__bitselect_impl@_V1@sycl@@YAIIII@Z -?__bitselect_impl@_V1@sycl@@YAJJJJ@Z -?__bitselect_impl@_V1@sycl@@YAKKKK@Z -?__bitselect_impl@_V1@sycl@@YAMMMM@Z -?__bitselect_impl@_V1@sycl@@YANNNN@Z -?__bitselect_impl@_V1@sycl@@YA_J_J00@Z -?__bitselect_impl@_V1@sycl@@YA_K_K00@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__cbrt_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__cbrt_impl@_V1@sycl@@YAMM@Z -?__cbrt_impl@_V1@sycl@@YANN@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__ceil_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__ceil_impl@_V1@sycl@@YAMM@Z -?__ceil_impl@_V1@sycl@@YANN@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@00@Z -?__clamp_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@00@Z -?__clamp_impl@_V1@sycl@@YACCCC@Z -?__clamp_impl@_V1@sycl@@YADDDD@Z -?__clamp_impl@_V1@sycl@@YAEEEE@Z -?__clamp_impl@_V1@sycl@@YAFFFF@Z -?__clamp_impl@_V1@sycl@@YAGGGG@Z -?__clamp_impl@_V1@sycl@@YAHHHH@Z -?__clamp_impl@_V1@sycl@@YAIIII@Z -?__clamp_impl@_V1@sycl@@YAJJJJ@Z -?__clamp_impl@_V1@sycl@@YAKKKK@Z -?__clamp_impl@_V1@sycl@@YAMMMM@Z -?__clamp_impl@_V1@sycl@@YANNNN@Z -?__clamp_impl@_V1@sycl@@YA_J_J00@Z -?__clamp_impl@_V1@sycl@@YA_K_K00@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@@Z -?__clz_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@@Z -?__clz_impl@_V1@sycl@@YACC@Z -?__clz_impl@_V1@sycl@@YADD@Z -?__clz_impl@_V1@sycl@@YAEE@Z -?__clz_impl@_V1@sycl@@YAFF@Z -?__clz_impl@_V1@sycl@@YAGG@Z -?__clz_impl@_V1@sycl@@YAHH@Z -?__clz_impl@_V1@sycl@@YAII@Z -?__clz_impl@_V1@sycl@@YAJJ@Z -?__clz_impl@_V1@sycl@@YAKK@Z -?__clz_impl@_V1@sycl@@YA_J_J@Z -?__clz_impl@_V1@sycl@@YA_K_K@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__copysign_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__copysign_impl@_V1@sycl@@YAMMM@Z -?__copysign_impl@_V1@sycl@@YANNN@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__cos_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__cos_impl@_V1@sycl@@YAMM@Z -?__cos_impl@_V1@sycl@@YANN@Z -?__cos_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__cos_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__cos_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__cos_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__cos_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__cos_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__cos_impl@half_precision@_V1@sycl@@YAMM@Z -?__cos_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__cos_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__cos_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__cos_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__cos_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__cos_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__cos_impl@native@_V1@sycl@@YAMM@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__cosh_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__cosh_impl@_V1@sycl@@YAMM@Z -?__cosh_impl@_V1@sycl@@YANN@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__cospi_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__cospi_impl@_V1@sycl@@YAMM@Z -?__cospi_impl@_V1@sycl@@YANN@Z -?__cross_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__cross_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__cross_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__cross_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__cross_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__cross_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@@Z -?__ctz_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@@Z -?__ctz_impl@_V1@sycl@@YACC@Z -?__ctz_impl@_V1@sycl@@YADD@Z -?__ctz_impl@_V1@sycl@@YAEE@Z -?__ctz_impl@_V1@sycl@@YAFF@Z -?__ctz_impl@_V1@sycl@@YAGG@Z -?__ctz_impl@_V1@sycl@@YAHH@Z -?__ctz_impl@_V1@sycl@@YAII@Z -?__ctz_impl@_V1@sycl@@YAJJ@Z -?__ctz_impl@_V1@sycl@@YAKK@Z -?__ctz_impl@_V1@sycl@@YA_J_J@Z -?__ctz_impl@_V1@sycl@@YA_K_K@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__degrees_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__degrees_impl@_V1@sycl@@YAMM@Z -?__degrees_impl@_V1@sycl@@YANN@Z -?__distance_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__distance_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z -?__distance_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z -?__distance_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z -?__distance_impl@_V1@sycl@@YAMMM@Z -?__distance_impl@_V1@sycl@@YAMV?$vec@M$01@12@0@Z -?__distance_impl@_V1@sycl@@YAMV?$vec@M$02@12@0@Z -?__distance_impl@_V1@sycl@@YAMV?$vec@M$03@12@0@Z -?__distance_impl@_V1@sycl@@YANNN@Z -?__distance_impl@_V1@sycl@@YANV?$vec@N$01@12@0@Z -?__distance_impl@_V1@sycl@@YANV?$vec@N$02@12@0@Z -?__distance_impl@_V1@sycl@@YANV?$vec@N$03@12@0@Z -?__divide_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@0@Z -?__divide_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@0@Z -?__divide_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@0@Z -?__divide_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@0@Z -?__divide_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@0@Z -?__divide_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@0@Z -?__divide_impl@half_precision@_V1@sycl@@YAMMM@Z -?__divide_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@0@Z -?__divide_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@0@Z -?__divide_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@0@Z -?__divide_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@0@Z -?__divide_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@0@Z -?__divide_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@0@Z -?__divide_impl@native@_V1@sycl@@YAMMM@Z -?__dot_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__dot_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z -?__dot_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z -?__dot_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z -?__dot_impl@_V1@sycl@@YAMMM@Z -?__dot_impl@_V1@sycl@@YAMV?$vec@M$01@12@0@Z -?__dot_impl@_V1@sycl@@YAMV?$vec@M$02@12@0@Z -?__dot_impl@_V1@sycl@@YAMV?$vec@M$03@12@0@Z -?__dot_impl@_V1@sycl@@YANNN@Z -?__dot_impl@_V1@sycl@@YANV?$vec@N$01@12@0@Z -?__dot_impl@_V1@sycl@@YANV?$vec@N$02@12@0@Z -?__dot_impl@_V1@sycl@@YANV?$vec@N$03@12@0@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__erf_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__erf_impl@_V1@sycl@@YAMM@Z -?__erf_impl@_V1@sycl@@YANN@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__erfc_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__erfc_impl@_V1@sycl@@YAMM@Z -?__erfc_impl@_V1@sycl@@YANN@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__exp10_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__exp10_impl@_V1@sycl@@YAMM@Z -?__exp10_impl@_V1@sycl@@YANN@Z -?__exp10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__exp10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__exp10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__exp10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__exp10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__exp10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__exp10_impl@half_precision@_V1@sycl@@YAMM@Z -?__exp10_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__exp10_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__exp10_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__exp10_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__exp10_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__exp10_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__exp10_impl@native@_V1@sycl@@YAMM@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__exp2_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__exp2_impl@_V1@sycl@@YAMM@Z -?__exp2_impl@_V1@sycl@@YANN@Z -?__exp2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__exp2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__exp2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__exp2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__exp2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__exp2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__exp2_impl@half_precision@_V1@sycl@@YAMM@Z -?__exp2_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__exp2_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__exp2_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__exp2_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__exp2_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__exp2_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__exp2_impl@native@_V1@sycl@@YAMM@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__exp_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__exp_impl@_V1@sycl@@YAMM@Z -?__exp_impl@_V1@sycl@@YANN@Z -?__exp_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__exp_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__exp_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__exp_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__exp_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__exp_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__exp_impl@half_precision@_V1@sycl@@YAMM@Z -?__exp_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__exp_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__exp_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__exp_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__exp_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__exp_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__exp_impl@native@_V1@sycl@@YAMM@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__expm1_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__expm1_impl@_V1@sycl@@YAMM@Z -?__expm1_impl@_V1@sycl@@YANN@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__fabs_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__fabs_impl@_V1@sycl@@YAMM@Z -?__fabs_impl@_V1@sycl@@YANN@Z -?__fast_distance_impl@_V1@sycl@@YAMMM@Z -?__fast_distance_impl@_V1@sycl@@YAMV?$vec@M$01@12@0@Z -?__fast_distance_impl@_V1@sycl@@YAMV?$vec@M$02@12@0@Z -?__fast_distance_impl@_V1@sycl@@YAMV?$vec@M$03@12@0@Z -?__fast_length_impl@_V1@sycl@@YAMM@Z -?__fast_length_impl@_V1@sycl@@YAMV?$vec@M$01@12@@Z -?__fast_length_impl@_V1@sycl@@YAMV?$vec@M$02@12@@Z -?__fast_length_impl@_V1@sycl@@YAMV?$vec@M$03@12@@Z -?__fast_normalize_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__fast_normalize_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__fast_normalize_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__fast_normalize_impl@_V1@sycl@@YAMM@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__fdim_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__fdim_impl@_V1@sycl@@YAMMM@Z -?__fdim_impl@_V1@sycl@@YANNN@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__floor_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__floor_impl@_V1@sycl@@YAMM@Z -?__floor_impl@_V1@sycl@@YANN@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@00@Z -?__fma_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@00@Z -?__fma_impl@_V1@sycl@@YAMMMM@Z -?__fma_impl@_V1@sycl@@YANNNN@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__fmax_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__fmax_impl@_V1@sycl@@YAMMM@Z -?__fmax_impl@_V1@sycl@@YANNN@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__fmin_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__fmin_impl@_V1@sycl@@YAMMM@Z -?__fmin_impl@_V1@sycl@@YANNN@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__fmod_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__fmod_impl@_V1@sycl@@YAMMM@Z -?__fmod_impl@_V1@sycl@@YANNN@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z -?__hadd_impl@_V1@sycl@@YACCC@Z -?__hadd_impl@_V1@sycl@@YADDD@Z -?__hadd_impl@_V1@sycl@@YAEEE@Z -?__hadd_impl@_V1@sycl@@YAFFF@Z -?__hadd_impl@_V1@sycl@@YAGGG@Z -?__hadd_impl@_V1@sycl@@YAHHH@Z -?__hadd_impl@_V1@sycl@@YAIII@Z -?__hadd_impl@_V1@sycl@@YAJJJ@Z -?__hadd_impl@_V1@sycl@@YAKKK@Z -?__hadd_impl@_V1@sycl@@YA_J_J0@Z -?__hadd_impl@_V1@sycl@@YA_K_K0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__hypot_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__hypot_impl@_V1@sycl@@YAMMM@Z -?__hypot_impl@_V1@sycl@@YANNN@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@N$00@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@N$01@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@N$02@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@N$03@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@N$07@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@N$0BA@@12@@Z -?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@@Z -?__ilogb_impl@_V1@sycl@@YAHM@Z -?__ilogb_impl@_V1@sycl@@YAHN@Z -?__ilogb_impl@_V1@sycl@@YAHVhalf@half_impl@detail@12@@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z -?__isequal_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z -?__isequal_impl@_V1@sycl@@YA_NMM@Z -?__isequal_impl@_V1@sycl@@YA_NNN@Z -?__isequal_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@@Z -?__isfinite_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@@Z -?__isfinite_impl@_V1@sycl@@YA_NM@Z -?__isfinite_impl@_V1@sycl@@YA_NN@Z -?__isfinite_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z -?__isgreater_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z -?__isgreater_impl@_V1@sycl@@YA_NMM@Z -?__isgreater_impl@_V1@sycl@@YA_NNN@Z -?__isgreater_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z -?__isgreaterequal_impl@_V1@sycl@@YA_NMM@Z -?__isgreaterequal_impl@_V1@sycl@@YA_NNN@Z -?__isgreaterequal_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@@Z -?__isinf_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@@Z -?__isinf_impl@_V1@sycl@@YA_NM@Z -?__isinf_impl@_V1@sycl@@YA_NN@Z -?__isinf_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z -?__isless_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z -?__isless_impl@_V1@sycl@@YA_NMM@Z -?__isless_impl@_V1@sycl@@YA_NNN@Z -?__isless_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z -?__islessequal_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z -?__islessequal_impl@_V1@sycl@@YA_NMM@Z -?__islessequal_impl@_V1@sycl@@YA_NNN@Z -?__islessequal_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z -?__islessgreater_impl@_V1@sycl@@YA_NMM@Z -?__islessgreater_impl@_V1@sycl@@YA_NNN@Z -?__islessgreater_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@@Z -?__isnan_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@@Z -?__isnan_impl@_V1@sycl@@YA_NM@Z -?__isnan_impl@_V1@sycl@@YA_NN@Z -?__isnan_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@@Z -?__isnormal_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@@Z -?__isnormal_impl@_V1@sycl@@YA_NM@Z -?__isnormal_impl@_V1@sycl@@YA_NN@Z -?__isnormal_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z -?__isnotequal_impl@_V1@sycl@@YA_NMM@Z -?__isnotequal_impl@_V1@sycl@@YA_NNN@Z -?__isnotequal_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z -?__isordered_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z -?__isordered_impl@_V1@sycl@@YA_NMM@Z -?__isordered_impl@_V1@sycl@@YA_NNN@Z -?__isordered_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z -?__isunordered_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z -?__isunordered_impl@_V1@sycl@@YA_NMM@Z -?__isunordered_impl@_V1@sycl@@YA_NNN@Z -?__isunordered_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@V?$vec@H$00@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@V?$vec@H$01@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@V?$vec@H$02@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@V?$vec@H$03@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@V?$vec@H$07@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@V?$vec@H$0BA@@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@V?$vec@H$00@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@V?$vec@H$01@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@V?$vec@H$02@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@V?$vec@H$03@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@V?$vec@H$07@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@V?$vec@H$0BA@@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@V?$vec@H$00@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@V?$vec@H$01@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@V?$vec@H$02@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@V?$vec@H$03@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@V?$vec@H$07@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@V?$vec@H$0BA@@12@@Z -?__ldexp_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@H@Z -?__ldexp_impl@_V1@sycl@@YAMMH@Z -?__ldexp_impl@_V1@sycl@@YANNH@Z -?__length_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__length_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@@Z -?__length_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@@Z -?__length_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@@Z -?__length_impl@_V1@sycl@@YAMM@Z -?__length_impl@_V1@sycl@@YAMV?$vec@M$01@12@@Z -?__length_impl@_V1@sycl@@YAMV?$vec@M$02@12@@Z -?__length_impl@_V1@sycl@@YAMV?$vec@M$03@12@@Z -?__length_impl@_V1@sycl@@YANN@Z -?__length_impl@_V1@sycl@@YANV?$vec@N$01@12@@Z -?__length_impl@_V1@sycl@@YANV?$vec@N$02@12@@Z -?__length_impl@_V1@sycl@@YANV?$vec@N$03@12@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__lgamma_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__lgamma_impl@_V1@sycl@@YAMM@Z -?__lgamma_impl@_V1@sycl@@YANN@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__log10_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__log10_impl@_V1@sycl@@YAMM@Z -?__log10_impl@_V1@sycl@@YANN@Z -?__log10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__log10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__log10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__log10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__log10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__log10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__log10_impl@half_precision@_V1@sycl@@YAMM@Z -?__log10_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__log10_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__log10_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__log10_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__log10_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__log10_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__log10_impl@native@_V1@sycl@@YAMM@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__log1p_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__log1p_impl@_V1@sycl@@YAMM@Z -?__log1p_impl@_V1@sycl@@YANN@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__log2_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__log2_impl@_V1@sycl@@YAMM@Z -?__log2_impl@_V1@sycl@@YANN@Z -?__log2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__log2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__log2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__log2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__log2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__log2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__log2_impl@half_precision@_V1@sycl@@YAMM@Z -?__log2_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__log2_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__log2_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__log2_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__log2_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__log2_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__log2_impl@native@_V1@sycl@@YAMM@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__log_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__log_impl@_V1@sycl@@YAMM@Z -?__log_impl@_V1@sycl@@YANN@Z -?__log_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__log_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__log_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__log_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__log_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__log_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__log_impl@half_precision@_V1@sycl@@YAMM@Z -?__log_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__log_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__log_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__log_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__log_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__log_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__log_impl@native@_V1@sycl@@YAMM@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__logb_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__logb_impl@_V1@sycl@@YAMM@Z -?__logb_impl@_V1@sycl@@YANN@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@00@Z -?__mad_hi_impl@_V1@sycl@@YACCCC@Z -?__mad_hi_impl@_V1@sycl@@YADDDD@Z -?__mad_hi_impl@_V1@sycl@@YAEEEE@Z -?__mad_hi_impl@_V1@sycl@@YAFFFF@Z -?__mad_hi_impl@_V1@sycl@@YAGGGG@Z -?__mad_hi_impl@_V1@sycl@@YAHHHH@Z -?__mad_hi_impl@_V1@sycl@@YAIIII@Z -?__mad_hi_impl@_V1@sycl@@YAJJJJ@Z -?__mad_hi_impl@_V1@sycl@@YAKKKK@Z -?__mad_hi_impl@_V1@sycl@@YA_J_J00@Z -?__mad_hi_impl@_V1@sycl@@YA_K_K00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@00@Z -?__mad_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@00@Z -?__mad_impl@_V1@sycl@@YAMMMM@Z -?__mad_impl@_V1@sycl@@YANNNN@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@00@Z -?__mad_sat_impl@_V1@sycl@@YACCCC@Z -?__mad_sat_impl@_V1@sycl@@YADDDD@Z -?__mad_sat_impl@_V1@sycl@@YAEEEE@Z -?__mad_sat_impl@_V1@sycl@@YAFFFF@Z -?__mad_sat_impl@_V1@sycl@@YAGGGG@Z -?__mad_sat_impl@_V1@sycl@@YAHHHH@Z -?__mad_sat_impl@_V1@sycl@@YAIIII@Z -?__mad_sat_impl@_V1@sycl@@YAJJJJ@Z -?__mad_sat_impl@_V1@sycl@@YAKKKK@Z -?__mad_sat_impl@_V1@sycl@@YA_J_J00@Z -?__mad_sat_impl@_V1@sycl@@YA_K_K00@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z -?__max_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__max_impl@_V1@sycl@@YACCC@Z -?__max_impl@_V1@sycl@@YADDD@Z -?__max_impl@_V1@sycl@@YAEEE@Z -?__max_impl@_V1@sycl@@YAFFF@Z -?__max_impl@_V1@sycl@@YAGGG@Z -?__max_impl@_V1@sycl@@YAHHH@Z -?__max_impl@_V1@sycl@@YAIII@Z -?__max_impl@_V1@sycl@@YAJJJ@Z -?__max_impl@_V1@sycl@@YAKKK@Z -?__max_impl@_V1@sycl@@YAMMM@Z -?__max_impl@_V1@sycl@@YANNN@Z -?__max_impl@_V1@sycl@@YA_J_J0@Z -?__max_impl@_V1@sycl@@YA_K_K0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__maxmag_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__maxmag_impl@_V1@sycl@@YAMMM@Z -?__maxmag_impl@_V1@sycl@@YANNN@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z -?__min_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__min_impl@_V1@sycl@@YACCC@Z -?__min_impl@_V1@sycl@@YADDD@Z -?__min_impl@_V1@sycl@@YAEEE@Z -?__min_impl@_V1@sycl@@YAFFF@Z -?__min_impl@_V1@sycl@@YAGGG@Z -?__min_impl@_V1@sycl@@YAHHH@Z -?__min_impl@_V1@sycl@@YAIII@Z -?__min_impl@_V1@sycl@@YAJJJ@Z -?__min_impl@_V1@sycl@@YAKKK@Z -?__min_impl@_V1@sycl@@YAMMM@Z -?__min_impl@_V1@sycl@@YANNN@Z -?__min_impl@_V1@sycl@@YA_J_J0@Z -?__min_impl@_V1@sycl@@YA_K_K0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__minmag_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__minmag_impl@_V1@sycl@@YAMMM@Z -?__minmag_impl@_V1@sycl@@YANNN@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@00@Z -?__mix_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@00@Z -?__mix_impl@_V1@sycl@@YAMMMM@Z -?__mix_impl@_V1@sycl@@YANNNN@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z -?__mul_hi_impl@_V1@sycl@@YACCC@Z -?__mul_hi_impl@_V1@sycl@@YADDD@Z -?__mul_hi_impl@_V1@sycl@@YAEEE@Z -?__mul_hi_impl@_V1@sycl@@YAFFF@Z -?__mul_hi_impl@_V1@sycl@@YAGGG@Z -?__mul_hi_impl@_V1@sycl@@YAHHH@Z -?__mul_hi_impl@_V1@sycl@@YAIII@Z -?__mul_hi_impl@_V1@sycl@@YAJJJ@Z -?__mul_hi_impl@_V1@sycl@@YAKKK@Z -?__mul_hi_impl@_V1@sycl@@YA_J_J0@Z -?__mul_hi_impl@_V1@sycl@@YA_K_K0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__nextafter_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__nextafter_impl@_V1@sycl@@YAMMM@Z -?__nextafter_impl@_V1@sycl@@YANNN@Z -?__normalize_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__normalize_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__normalize_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__normalize_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__normalize_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__normalize_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__normalize_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__normalize_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__normalize_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__normalize_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__normalize_impl@_V1@sycl@@YAMM@Z -?__normalize_impl@_V1@sycl@@YANN@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@@Z -?__popcount_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@@Z -?__popcount_impl@_V1@sycl@@YACC@Z -?__popcount_impl@_V1@sycl@@YADD@Z -?__popcount_impl@_V1@sycl@@YAEE@Z -?__popcount_impl@_V1@sycl@@YAFF@Z -?__popcount_impl@_V1@sycl@@YAGG@Z -?__popcount_impl@_V1@sycl@@YAHH@Z -?__popcount_impl@_V1@sycl@@YAII@Z -?__popcount_impl@_V1@sycl@@YAJJ@Z -?__popcount_impl@_V1@sycl@@YAKK@Z -?__popcount_impl@_V1@sycl@@YA_J_J@Z -?__popcount_impl@_V1@sycl@@YA_K_K@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__pow_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__pow_impl@_V1@sycl@@YAMMM@Z -?__pow_impl@_V1@sycl@@YANNN@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@V?$vec@H$00@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@V?$vec@H$01@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@V?$vec@H$02@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@V?$vec@H$03@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@V?$vec@H$07@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@V?$vec@H$0BA@@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@V?$vec@H$00@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@V?$vec@H$01@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@V?$vec@H$02@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@V?$vec@H$03@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@V?$vec@H$07@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@V?$vec@H$0BA@@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@V?$vec@H$00@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@V?$vec@H$01@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@V?$vec@H$02@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@V?$vec@H$03@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@V?$vec@H$07@12@@Z -?__pown_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@V?$vec@H$0BA@@12@@Z -?__pown_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@H@Z -?__pown_impl@_V1@sycl@@YAMMH@Z -?__pown_impl@_V1@sycl@@YANNH@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__powr_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__powr_impl@_V1@sycl@@YAMMM@Z -?__powr_impl@_V1@sycl@@YANNN@Z -?__powr_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@0@Z -?__powr_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@0@Z -?__powr_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@0@Z -?__powr_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@0@Z -?__powr_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@0@Z -?__powr_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@0@Z -?__powr_impl@half_precision@_V1@sycl@@YAMMM@Z -?__powr_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@0@Z -?__powr_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@0@Z -?__powr_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@0@Z -?__powr_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@0@Z -?__powr_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@0@Z -?__powr_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@0@Z -?__powr_impl@native@_V1@sycl@@YAMMM@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__radians_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__radians_impl@_V1@sycl@@YAMM@Z -?__radians_impl@_V1@sycl@@YANN@Z -?__recip_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__recip_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__recip_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__recip_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__recip_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__recip_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__recip_impl@half_precision@_V1@sycl@@YAMM@Z -?__recip_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__recip_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__recip_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__recip_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__recip_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__recip_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__recip_impl@native@_V1@sycl@@YAMM@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__remainder_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__remainder_impl@_V1@sycl@@YAMMM@Z -?__remainder_impl@_V1@sycl@@YANNN@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z -?__rhadd_impl@_V1@sycl@@YACCC@Z -?__rhadd_impl@_V1@sycl@@YADDD@Z -?__rhadd_impl@_V1@sycl@@YAEEE@Z -?__rhadd_impl@_V1@sycl@@YAFFF@Z -?__rhadd_impl@_V1@sycl@@YAGGG@Z -?__rhadd_impl@_V1@sycl@@YAHHH@Z -?__rhadd_impl@_V1@sycl@@YAIII@Z -?__rhadd_impl@_V1@sycl@@YAJJJ@Z -?__rhadd_impl@_V1@sycl@@YAKKK@Z -?__rhadd_impl@_V1@sycl@@YA_J_J0@Z -?__rhadd_impl@_V1@sycl@@YA_K_K0@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__rint_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__rint_impl@_V1@sycl@@YAMM@Z -?__rint_impl@_V1@sycl@@YANN@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@V?$vec@H$00@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@V?$vec@H$01@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@V?$vec@H$02@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@V?$vec@H$03@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@V?$vec@H$07@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@V?$vec@H$0BA@@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@V?$vec@H$00@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@V?$vec@H$01@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@V?$vec@H$02@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@V?$vec@H$03@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@V?$vec@H$07@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@V?$vec@H$0BA@@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@V?$vec@H$00@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@V?$vec@H$01@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@V?$vec@H$02@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@V?$vec@H$03@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@V?$vec@H$07@12@@Z -?__rootn_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@V?$vec@H$0BA@@12@@Z -?__rootn_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@H@Z -?__rootn_impl@_V1@sycl@@YAMMH@Z -?__rootn_impl@_V1@sycl@@YANNH@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z -?__rotate_impl@_V1@sycl@@YACCC@Z -?__rotate_impl@_V1@sycl@@YADDD@Z -?__rotate_impl@_V1@sycl@@YAEEE@Z -?__rotate_impl@_V1@sycl@@YAFFF@Z -?__rotate_impl@_V1@sycl@@YAGGG@Z -?__rotate_impl@_V1@sycl@@YAHHH@Z -?__rotate_impl@_V1@sycl@@YAIII@Z -?__rotate_impl@_V1@sycl@@YAJJJ@Z -?__rotate_impl@_V1@sycl@@YAKKK@Z -?__rotate_impl@_V1@sycl@@YA_J_J0@Z -?__rotate_impl@_V1@sycl@@YA_K_K0@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__round_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__round_impl@_V1@sycl@@YAMM@Z -?__round_impl@_V1@sycl@@YANN@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__rsqrt_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__rsqrt_impl@_V1@sycl@@YAMM@Z -?__rsqrt_impl@_V1@sycl@@YANN@Z -?__rsqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__rsqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__rsqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__rsqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__rsqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__rsqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__rsqrt_impl@half_precision@_V1@sycl@@YAMM@Z -?__rsqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__rsqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__rsqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__rsqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__rsqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__rsqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__rsqrt_impl@native@_V1@sycl@@YAMM@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__sign_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__sign_impl@_V1@sycl@@YAMM@Z -?__sign_impl@_V1@sycl@@YANN@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@@Z -?__signbit_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@@Z -?__signbit_impl@_V1@sycl@@YA_NM@Z -?__signbit_impl@_V1@sycl@@YA_NN@Z -?__signbit_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__sin_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__sin_impl@_V1@sycl@@YAMM@Z -?__sin_impl@_V1@sycl@@YANN@Z -?__sin_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__sin_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__sin_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__sin_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__sin_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__sin_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__sin_impl@half_precision@_V1@sycl@@YAMM@Z -?__sin_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__sin_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__sin_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__sin_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__sin_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__sin_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__sin_impl@native@_V1@sycl@@YAMM@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__sinh_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__sinh_impl@_V1@sycl@@YAMM@Z -?__sinh_impl@_V1@sycl@@YANN@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__sinpi_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__sinpi_impl@_V1@sycl@@YAMM@Z -?__sinpi_impl@_V1@sycl@@YANN@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@00@Z -?__smoothstep_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@00@Z -?__smoothstep_impl@_V1@sycl@@YAMMMM@Z -?__smoothstep_impl@_V1@sycl@@YANNNN@Z -?__spirv_ControlBarrier@@YAXUScope@__spv@@0I@Z -?__spirv_GroupWaitEvents@@YAXUScope@__spv@@IPEAPEAX@Z -?__spirv_MemoryBarrier@@YAXUScope@__spv@@I@Z -?__spirv_ocl_prefetch@@YAXPEBD_K@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__sqrt_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__sqrt_impl@_V1@sycl@@YAMM@Z -?__sqrt_impl@_V1@sycl@@YANN@Z -?__sqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__sqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__sqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__sqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__sqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__sqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__sqrt_impl@half_precision@_V1@sycl@@YAMM@Z -?__sqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__sqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__sqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__sqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__sqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__sqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__sqrt_impl@native@_V1@sycl@@YAMM@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z -?__step_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z -?__step_impl@_V1@sycl@@YAMMM@Z -?__step_impl@_V1@sycl@@YANNN@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z -?__sub_sat_impl@_V1@sycl@@YACCC@Z -?__sub_sat_impl@_V1@sycl@@YADDD@Z -?__sub_sat_impl@_V1@sycl@@YAEEE@Z -?__sub_sat_impl@_V1@sycl@@YAFFF@Z -?__sub_sat_impl@_V1@sycl@@YAGGG@Z -?__sub_sat_impl@_V1@sycl@@YAHHH@Z -?__sub_sat_impl@_V1@sycl@@YAIII@Z -?__sub_sat_impl@_V1@sycl@@YAJJJ@Z -?__sub_sat_impl@_V1@sycl@@YAKKK@Z -?__sub_sat_impl@_V1@sycl@@YA_J_J0@Z -?__sub_sat_impl@_V1@sycl@@YA_K_K0@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__tan_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__tan_impl@_V1@sycl@@YAMM@Z -?__tan_impl@_V1@sycl@@YANN@Z -?__tan_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__tan_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__tan_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__tan_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__tan_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__tan_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__tan_impl@half_precision@_V1@sycl@@YAMM@Z -?__tan_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z -?__tan_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z -?__tan_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z -?__tan_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z -?__tan_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z -?__tan_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z -?__tan_impl@native@_V1@sycl@@YAMM@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__tanh_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__tanh_impl@_V1@sycl@@YAMM@Z -?__tanh_impl@_V1@sycl@@YANN@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__tanpi_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__tanpi_impl@_V1@sycl@@YAMM@Z -?__tanpi_impl@_V1@sycl@@YANN@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__tgamma_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__tgamma_impl@_V1@sycl@@YAMM@Z -?__tgamma_impl@_V1@sycl@@YANN@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z -?__trunc_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z -?__trunc_impl@_V1@sycl@@YAMM@Z -?__trunc_impl@_V1@sycl@@YANN@Z -?accelerator_selector_v@_V1@sycl@@YAHAEBVdevice@12@@Z -?add@device_global_map@detail@_V1@sycl@@YAXPEBXPEBD@Z -?add@free_function_info_map@detail@_V1@sycl@@YAXPEBQEBDPEBII@Z -?add@host_pipe_map@detail@_V1@sycl@@YAXPEBXPEBD@Z -?add@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA?AVnode@34567@AEBVproperty_list@67@@Z -?addArg@handler@_V1@sycl@@AEAAXW4kernel_param_kind_t@detail@23@PEAXHH@Z -?addGraphLeafDependencies@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAAXVnode@34567@@Z -?addHostAccessorAndWait@detail@_V1@sycl@@YAXPEAVAccessorImplHost@123@@Z -?addHostSampledImageAccessorAndWait@detail@_V1@sycl@@YAXPEAVSampledImageAccessorImplHost@123@@Z -?addHostUnsampledImageAccessorAndWait@detail@_V1@sycl@@YAXPEAVUnsampledImageAccessorImplHost@123@@Z -?addImpl@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAA?AVnode@34567@AEAVdynamic_command_group@34567@AEBV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@@Z -?addImpl@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAA?AVnode@34567@AEBV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@@Z -?addImpl@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAA?AVnode@34567@V?$function@$$A6AXAEAVhandler@_V1@sycl@@@Z@std@@AEBV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@@Z -?addLifetimeSharedPtrStorage@handler@_V1@sycl@@AEAAXV?$shared_ptr@$$CBX@std@@@Z -?addOrReplaceAccessorProperties@buffer_plain@detail@_V1@sycl@@IEAAXAEBVproperty_list@34@@Z -?addReduction@handler@_V1@sycl@@AEAAXAEBV?$shared_ptr@$$CBX@std@@@Z -?addStream@handler@_V1@sycl@@AEAAXAEBV?$shared_ptr@Vstream_impl@detail@_V1@sycl@@@std@@@Z -?alignedAlloc@OSUtil@detail@_V1@sycl@@SAPEAX_K0@Z -?alignedFree@OSUtil@detail@_V1@sycl@@SAXPEAX@Z -?aligned_alloc@_V1@sycl@@YAPEAX_K0AEBVdevice@12@AEBVcontext@12@W4alloc@usm@12@AEBUcode_location@detail@12@@Z -?aligned_alloc@_V1@sycl@@YAPEAX_K0AEBVdevice@12@AEBVcontext@12@W4alloc@usm@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?aligned_alloc@_V1@sycl@@YAPEAX_K0AEBVqueue@12@W4alloc@usm@12@AEBUcode_location@detail@12@@Z -?aligned_alloc@_V1@sycl@@YAPEAX_K0AEBVqueue@12@W4alloc@usm@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?aligned_alloc_device@_V1@sycl@@YAPEAX_K0AEBVdevice@12@AEBVcontext@12@AEBUcode_location@detail@12@@Z -?aligned_alloc_device@_V1@sycl@@YAPEAX_K0AEBVdevice@12@AEBVcontext@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?aligned_alloc_device@_V1@sycl@@YAPEAX_K0AEBVqueue@12@AEBUcode_location@detail@12@@Z -?aligned_alloc_device@_V1@sycl@@YAPEAX_K0AEBVqueue@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?aligned_alloc_host@_V1@sycl@@YAPEAX_K0AEBVcontext@12@AEBUcode_location@detail@12@@Z -?aligned_alloc_host@_V1@sycl@@YAPEAX_K0AEBVcontext@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?aligned_alloc_host@_V1@sycl@@YAPEAX_K0AEBVqueue@12@AEBUcode_location@detail@12@@Z -?aligned_alloc_host@_V1@sycl@@YAPEAX_K0AEBVqueue@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?aligned_alloc_shared@_V1@sycl@@YAPEAX_K0AEBVdevice@12@AEBVcontext@12@AEBUcode_location@detail@12@@Z -?aligned_alloc_shared@_V1@sycl@@YAPEAX_K0AEBVdevice@12@AEBVcontext@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?aligned_alloc_shared@_V1@sycl@@YAPEAX_K0AEBVqueue@12@AEBUcode_location@detail@12@@Z -?aligned_alloc_shared@_V1@sycl@@YAPEAX_K0AEBVqueue@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?alloc_exportable_device_mem@experimental@oneapi@ext@_V1@sycl@@YAPEAX_K0W4external_mem_handle_type@12345@AEBVdevice@45@AEBVcontext@45@AEBVproperty_list@45@@Z -?alloc_image_mem@experimental@oneapi@ext@_V1@sycl@@YA?AUimage_mem_handle@12345@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z -?alloc_image_mem@experimental@oneapi@ext@_V1@sycl@@YA?AUimage_mem_handle@12345@AEBUimage_descriptor@12345@AEBVqueue@45@@Z -?aspect_selector@_V1@sycl@@YA?AV?$function@$$A6AHAEBVdevice@_V1@sycl@@@Z@std@@AEBV?$vector@W4aspect@_V1@sycl@@V?$allocator@W4aspect@_V1@sycl@@@std@@@4@0@Z -?associateWithHandler@detail@_V1@sycl@@YAXAEAVhandler@23@PEAVAccessorBaseHost@123@W4target@access@23@@Z -?associateWithHandler@detail@_V1@sycl@@YAXAEAVhandler@23@PEAVSampledImageAccessorBaseHost@123@W4image_target@23@@Z -?associateWithHandler@detail@_V1@sycl@@YAXAEAVhandler@23@PEAVUnsampledImageAccessorBaseHost@123@W4image_target@23@@Z -?associateWithHandler@handler@_V1@sycl@@AEAAXPEAVAccessorBaseHost@detail@23@W4target@access@23@@Z -?associateWithHandler@handler@_V1@sycl@@AEAAXPEAVSampledImageAccessorBaseHost@detail@23@W4image_target@23@@Z -?associateWithHandler@handler@_V1@sycl@@AEAAXPEAVUnsampledImageAccessorBaseHost@detail@23@W4image_target@23@@Z -?associateWithHandlerCommon@handler@_V1@sycl@@AEAAXV?$shared_ptr@VAccessorImplHost@detail@_V1@sycl@@@std@@H@Z -?async_free@experimental@oneapi@ext@_V1@sycl@@YAXAEAVhandler@45@PEAX@Z -?async_free@experimental@oneapi@ext@_V1@sycl@@YAXAEBVqueue@45@PEAXAEBUcode_location@detail@45@@Z -?async_malloc@experimental@oneapi@ext@_V1@sycl@@YAPEAXAEAVhandler@45@W4alloc@usm@45@_K@Z -?async_malloc@experimental@oneapi@ext@_V1@sycl@@YAPEAXAEBVqueue@45@W4alloc@usm@45@_KAEBUcode_location@detail@45@@Z -?async_malloc_from_pool@experimental@oneapi@ext@_V1@sycl@@YAPEAXAEAVhandler@45@_KAEBVmemory_pool@12345@@Z -?async_malloc_from_pool@experimental@oneapi@ext@_V1@sycl@@YAPEAXAEBVqueue@45@_KAEBVmemory_pool@12345@AEBUcode_location@detail@45@@Z -?begin@exception_list@_V1@sycl@@QEBA?AV?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@Vexception_ptr@std@@@std@@@std@@@std@@XZ -?begin@kernel_bundle_plain@detail@_V1@sycl@@IEBAPEBVdevice_image_plain@234@XZ -?begin_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEAVqueue@67@AEBVproperty_list@67@@Z -?begin_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEBV?$vector@Vqueue@_V1@sycl@@V?$allocator@Vqueue@_V1@sycl@@@std@@@std@@AEBVproperty_list@67@@Z -?build_from_source@detail@experimental@oneapi@ext@_V1@sycl@@YA?AV?$kernel_bundle@$01@56@AEAV?$kernel_bundle@$02@56@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV?$vector@Vstring_view@detail@_V1@sycl@@V?$allocator@Vstring_view@detail@_V1@sycl@@@std@@@std@@PEAVstring@156@2@Z -?build_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBV?$kernel_bundle@$0A@@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@AEBVproperty_list@23@@Z -?cancel_fusion@fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAAXXZ -?category@exception@_V1@sycl@@QEBAAEBVerror_category@std@@XZ -?checkNodePropertiesAndThrow@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@KAXAEBVproperty_list@67@@Z -?incrementArgShift@handler@_V1@sycl@@AEAAXH@Z -?close@ipc_memory@experimental@oneapi@ext@_V1@sycl@@YAXPEAXAEBVcontext@56@@Z -?code@exception@_V1@sycl@@QEBAAEBVerror_code@std@@XZ -?compile_from_source@detail@experimental@oneapi@ext@_V1@sycl@@YA?AV?$kernel_bundle@$00@56@AEAV?$kernel_bundle@$02@56@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV?$vector@Vstring_view@detail@_V1@sycl@@V?$allocator@Vstring_view@detail@_V1@sycl@@@std@@@std@@PEAVstring@156@2@Z -?compile_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBV?$kernel_bundle@$0A@@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@AEBVproperty_list@23@@Z -?complete_fusion@fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAA?AVevent@56@AEBVproperty_list@56@@Z -?computeFallbackKernelBounds@handler@_V1@sycl@@AEAA?AV?$id@$01@23@_K0@Z -?constructorNotification@buffer_plain@detail@_V1@sycl@@IEAAXAEBUcode_location@234@PEAXPEBX2IIQEA_K@Z -?constructorNotification@detail@_V1@sycl@@YAXPEAX0W4target@access@23@W4mode@523@AEBUcode_location@123@@Z -?contains_specialization_constants@kernel_bundle_plain@detail@_V1@sycl@@QEBA_NXZ -?contextSetExtendedDeleter@pi@detail@_V1@sycl@@YAXAEBVcontext@34@P6AXPEAX@Z1@Z -?copyCodeLoc@handler@_V1@sycl@@AEAAXAEBV123@@Z -?cpu_selector_v@_V1@sycl@@YAHAEBVdevice@12@@Z -?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUsampled_image_handle@12345@AEAVimage_mem@12345@AEBUbindless_image_sampler@12345@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z -?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUsampled_image_handle@12345@AEAVimage_mem@12345@AEBUbindless_image_sampler@12345@AEBUimage_descriptor@12345@AEBVqueue@45@@Z -?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUsampled_image_handle@12345@PEAX_KAEBUbindless_image_sampler@12345@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z -?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUsampled_image_handle@12345@PEAX_KAEBUbindless_image_sampler@12345@AEBUimage_descriptor@12345@AEBVqueue@45@@Z -?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUsampled_image_handle@12345@Uimage_mem_handle@12345@AEBUbindless_image_sampler@12345@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z -?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUsampled_image_handle@12345@Uimage_mem_handle@12345@AEBUbindless_image_sampler@12345@AEBUimage_descriptor@12345@AEBVqueue@45@@Z -?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUunsampled_image_handle@12345@AEAVimage_mem@12345@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z -?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUunsampled_image_handle@12345@AEAVimage_mem@12345@AEBUimage_descriptor@12345@AEBVqueue@45@@Z -?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUunsampled_image_handle@12345@Uimage_mem_handle@12345@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z -?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUunsampled_image_handle@12345@Uimage_mem_handle@12345@AEBUimage_descriptor@12345@AEBVqueue@45@@Z -?default_selector_v@_V1@sycl@@YAHAEBVdevice@12@@Z -?deleteAccProps@buffer_plain@detail@_V1@sycl@@IEAAXAEBW4PropWithDataKind@234@@Z -?depends_on@handler@_V1@sycl@@IEAAXAEBV?$shared_ptr@Vevent_impl@detail@_V1@sycl@@@std@@@Z -?depends_on@handler@_V1@sycl@@IEAAXAEBV?$vector@V?$shared_ptr@Vevent_impl@detail@_V1@sycl@@@std@@V?$allocator@V?$shared_ptr@Vevent_impl@detail@_V1@sycl@@@std@@@2@@std@@@Z -?depends_on@handler@_V1@sycl@@QEAAXAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@@Z -?depends_on@handler@_V1@sycl@@QEAAXVevent@23@@Z -?destroy_image_handle@experimental@oneapi@ext@_V1@sycl@@YAXAEAUsampled_image_handle@12345@AEBVdevice@45@AEBVcontext@45@@Z -?destroy_image_handle@experimental@oneapi@ext@_V1@sycl@@YAXAEAUsampled_image_handle@12345@AEBVqueue@45@@Z -?destroy_image_handle@experimental@oneapi@ext@_V1@sycl@@YAXAEAUunsampled_image_handle@12345@AEBVdevice@45@AEBVcontext@45@@Z -?destroy_image_handle@experimental@oneapi@ext@_V1@sycl@@YAXAEAUunsampled_image_handle@12345@AEBVqueue@45@@Z -?device_has@queue@_V1@sycl@@AEBA_NW4aspect@23@@Z -?empty@kernel_bundle_plain@detail@_V1@sycl@@QEBA_NXZ -?enable_ext_oneapi_default_context@detail@_V1@sycl@@YAX_N@Z -?end@HostProfilingInfo@detail@_V1@sycl@@QEAAXXZ -?end@exception_list@_V1@sycl@@QEBA?AV?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@Vexception_ptr@std@@@std@@@std@@@std@@XZ -?end@kernel_bundle_plain@detail@_V1@sycl@@IEBAPEBVdevice_image_plain@234@XZ -?end_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEAVqueue@67@@Z -?end_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEBV?$vector@Vqueue@_V1@sycl@@V?$allocator@Vqueue@_V1@sycl@@@std@@@std@@@Z -?end_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXXZ -?eventNeeded@handler@_V1@sycl@@AEBA_NXZ -?export_device_mem_opaque_fd@detail@experimental@oneapi@ext@_V1@sycl@@YAHPEAXAEBVdevice@56@AEBVcontext@56@@Z -?export_device_mem_win32_nt_handle@detail@experimental@oneapi@ext@_V1@sycl@@YAPEAXPEAXAEBVdevice@56@AEBVcontext@56@@Z -?ext_codeplay_has_graph@interop_handle@_V1@sycl@@QEBA_NXZ -?ext_codeplay_supports_fusion@queue@_V1@sycl@@QEBA_NXZ -?ext_intel_read_host_pipe@handler@_V1@sycl@@AEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAX_K_N@Z -?ext_intel_read_host_pipe@handler@_V1@sycl@@AEAAXVstring_view@detail@23@PEAX_K_N@Z -?ext_intel_write_host_pipe@handler@_V1@sycl@@AEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAX_K_N@Z -?ext_intel_write_host_pipe@handler@_V1@sycl@@AEAAXVstring_view@detail@23@PEAX_K_N@Z -?ext_oneapi_architecture_is@device@_V1@sycl@@QEAA_NW4arch_category@experimental@oneapi@ext@23@@Z -?ext_oneapi_architecture_is@device@_V1@sycl@@QEAA_NW4architecture@experimental@oneapi@ext@23@@Z -?ext_oneapi_barrier@handler@_V1@sycl@@QEAAXAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@@Z -?ext_oneapi_barrier@handler@_V1@sycl@@QEAAXXZ -?ext_oneapi_can_access_peer@device@_V1@sycl@@QEAA_NAEBV123@W4peer_access@oneapi@ext@23@@Z -?ext_oneapi_can_build@device@_V1@sycl@@QEAA_NW4source_language@experimental@oneapi@ext@23@@Z -?ext_oneapi_can_compile@device@_V1@sycl@@QEAA_NW4source_language@experimental@oneapi@ext@23@@Z -?ext_oneapi_cl_profile@device@_V1@sycl@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ -?ext_oneapi_cl_profile_impl@device@_V1@sycl@@AEBA?AVstring@detail@23@XZ -?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX12@Z -?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@56723@1@Z -?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXPEAXAEBUimage_descriptor@experimental@oneapi@ext@23@_K@Z -?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXUimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@56723@@Z -?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXV?$range@$02@23@1Uimage_mem_handle@experimental@oneapi@ext@23@1AEBUimage_descriptor@67823@1@Z -?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX1231@Z -?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@67823@121@Z -?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXV?$range@$02@23@PEAX1AEBUimage_descriptor@experimental@oneapi@ext@23@_K11@Z -?ext_oneapi_copy@handler@_V1@sycl@@QEAAXUimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@56723@PEAX1_K@Z -?ext_oneapi_copy@handler@_V1@sycl@@QEAAXUimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@56723@U456723@1@Z -?ext_oneapi_copy@handler@_V1@sycl@@QEAAXUimage_mem_handle@experimental@oneapi@ext@23@PEAXAEBUimage_descriptor@56723@@Z -?ext_oneapi_copy@handler@_V1@sycl@@QEAAXUimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@56723@PEAX111@Z -?ext_oneapi_copy@handler@_V1@sycl@@QEAAXUimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@56723@PEAX12_K1@Z -?ext_oneapi_copy@handler@_V1@sycl@@QEAAXUimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@56723@U456723@121@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX12AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX12AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX12V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@67823@1AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@67823@1AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@67823@1V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXPEAXAEBUimage_descriptor@experimental@oneapi@ext@23@_KAEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXPEAXAEBUimage_descriptor@experimental@oneapi@ext@23@_KAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXPEAXAEBUimage_descriptor@experimental@oneapi@ext@23@_KV423@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXUimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXUimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXUimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@1Uimage_mem_handle@experimental@oneapi@ext@23@1AEBUimage_descriptor@78923@1AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@1Uimage_mem_handle@experimental@oneapi@ext@23@1AEBUimage_descriptor@78923@1AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@1Uimage_mem_handle@experimental@oneapi@ext@23@1AEBUimage_descriptor@78923@1V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX1231AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX1231AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX1231V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@78923@121AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@78923@121AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@78923@121V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@PEAX1AEBUimage_descriptor@experimental@oneapi@ext@23@_K11AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@PEAX1AEBUimage_descriptor@experimental@oneapi@ext@23@_K11AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@PEAX1AEBUimage_descriptor@experimental@oneapi@ext@23@_K11V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@PEAX1_KAEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@PEAX1_KAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@PEAX1_KV423@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@U567823@1AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@U567823@1AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@U567823@1V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@PEAXAEBUimage_descriptor@67823@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@PEAXAEBUimage_descriptor@67823@AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@PEAXAEBUimage_descriptor@67823@V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@PEAX111AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@PEAX111AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@PEAX111V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@PEAX12_K1AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@PEAX12_K1AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@PEAX12_K1V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@U567823@121AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@U567823@121AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@U567823@121V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_disable_peer_access@device@_V1@sycl@@QEAAXAEBV123@@Z -?ext_oneapi_empty@queue@_V1@sycl@@QEBA_NXZ -?ext_oneapi_enable_peer_access@device@_V1@sycl@@QEAAXAEBV123@@Z -?ext_oneapi_fill2d_impl@handler@_V1@sycl@@AEAAXPEAX_KPEBX111@Z -?ext_oneapi_get_backend_content_view_impl@device_image_plain@detail@_V1@sycl@@IEBA?AU?$pair@PEBW4byte@std@@PEBW412@@std@@XZ -?ext_oneapi_get_backend_impl@device_image_plain@detail@_V1@sycl@@IEBA?AW4backend@34@XZ -?ext_oneapi_get_composite_devices@platform@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ -?ext_oneapi_get_default_context@device@_V1@sycl@@QEAA?AVcontext@23@XZ -?ext_oneapi_get_default_context@platform@_V1@sycl@@QEBA?AVcontext@23@XZ -?ext_oneapi_get_default_memory_pool@context@_V1@sycl@@QEBA?AVmemory_pool@experimental@oneapi@ext@23@AEBVdevice@23@W4alloc@usm@23@@Z -?ext_oneapi_get_device_global_address@kernel_bundle_plain@detail@_V1@sycl@@AEAAPEAXVstring_view@234@AEBVdevice@34@@Z -?ext_oneapi_get_device_global_address@kernel_bundle_plain@detail@_V1@sycl@@QEAAPEAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBVdevice@34@@Z -?ext_oneapi_get_device_global_size@kernel_bundle_plain@detail@_V1@sycl@@AEAA_KVstring_view@234@@Z -?ext_oneapi_get_device_global_size@kernel_bundle_plain@detail@_V1@sycl@@QEAA_KAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z -?ext_oneapi_get_graph@queue@_V1@sycl@@QEBA?AV?$command_graph@$0A@@experimental@oneapi@ext@23@XZ -?ext_oneapi_get_kernel@kernel_bundle_plain@detail@_V1@sycl@@AEAA?AVkernel@34@Vstring_view@234@@Z -?ext_oneapi_get_kernel@kernel_bundle_plain@detail@_V1@sycl@@QEAA?AVkernel@34@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z -?ext_oneapi_get_last_event@queue@_V1@sycl@@QEBA?AV?$optional@Vevent@_V1@sycl@@@std@@XZ -?ext_oneapi_get_last_event_impl@queue@_V1@sycl@@AEBA?AV?$optional@Vevent@_V1@sycl@@@detail@23@XZ -?ext_oneapi_get_raw_kernel_name@kernel_bundle_plain@detail@_V1@sycl@@AEAA?AVstring@234@Vstring_view@234@@Z -?ext_oneapi_get_raw_kernel_name@kernel_bundle_plain@detail@_V1@sycl@@QEAA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV56@@Z -?ext_oneapi_get_state@queue@_V1@sycl@@QEBA?AW4queue_state@experimental@oneapi@ext@23@XZ -?ext_oneapi_graph@handler@_V1@sycl@@QEAAXV?$command_graph@$00@experimental@oneapi@ext@23@@Z -?ext_oneapi_graph@queue@_V1@sycl@@QEAA?AVevent@23@V?$command_graph@$00@experimental@oneapi@ext@23@AEBUcode_location@detail@23@@Z -?ext_oneapi_graph@queue@_V1@sycl@@QEAA?AVevent@23@V?$command_graph@$00@experimental@oneapi@ext@23@AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_graph@queue@_V1@sycl@@QEAA?AVevent@23@V?$command_graph@$00@experimental@oneapi@ext@23@V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_has_device_global@kernel_bundle_plain@detail@_V1@sycl@@AEAA_NVstring_view@234@@Z -?ext_oneapi_has_device_global@kernel_bundle_plain@detail@_V1@sycl@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z -?ext_oneapi_has_kernel@kernel_bundle_plain@detail@_V1@sycl@@AEAA_NVstring_view@234@@Z -?ext_oneapi_has_kernel@kernel_bundle_plain@detail@_V1@sycl@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z -?ext_oneapi_memcpy2d_impl@handler@_V1@sycl@@AEAAXPEAX_KPEBX111@Z -?ext_oneapi_memset2d_impl@handler@_V1@sycl@@AEAAXPEAX_KH11@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vcontext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vcontext@_V1@sycl@@@2oneapi@ext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vcontext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVcontext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vdevice@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vdevice@_V1@sycl@@@2oneapi@ext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vdevice@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVdevice@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vevent@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vevent@_V1@sycl@@@2oneapi@ext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vevent@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVevent@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vexecutable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vexecutable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@2oneapi@ext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vexecutable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVexecutable_command_graph@2experimental@oneapi@ext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vkernel@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vkernel@_V1@sycl@@@2oneapi@ext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vkernel@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVkernel@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vkernel_id@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vkernel_id@_V1@sycl@@@2oneapi@ext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vkernel_id@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVkernel_id@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vmodifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vmodifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@2oneapi@ext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vmodifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVmodifiable_command_graph@2experimental@oneapi@ext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vphysical_mem@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vphysical_mem@experimental@oneapi@ext@_V1@sycl@@@2oneapi@ext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vphysical_mem@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVphysical_mem@experimental@oneapi@ext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vplatform@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vplatform@_V1@sycl@@@2oneapi@ext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vplatform@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVplatform@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vqueue@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vqueue@_V1@sycl@@@2oneapi@ext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vqueue@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVqueue@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vstream@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vstream@_V1@sycl@@@2oneapi@ext@34@@Z -?ext_oneapi_owner_before@?$OwnerLessBase@Vstream@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVstream@34@@Z -?ext_oneapi_prod@queue@_V1@sycl@@QEAAXXZ -?ext_oneapi_set_external_event@queue@_V1@sycl@@QEAAXAEBVevent@23@@Z -?ext_oneapi_signal_external_semaphore@handler@_V1@sycl@@QEAAXUexternal_semaphore@experimental@oneapi@ext@23@@Z -?ext_oneapi_signal_external_semaphore@handler@_V1@sycl@@QEAAXUexternal_semaphore@experimental@oneapi@ext@23@_K@Z -?ext_oneapi_signal_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@AEBUcode_location@detail@23@@Z -?ext_oneapi_signal_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_signal_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_signal_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@_KAEBUcode_location@detail@23@@Z -?ext_oneapi_signal_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@_KAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_signal_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@_KV423@AEBUcode_location@detail@23@@Z -?ext_oneapi_submit_barrier@queue@_V1@sycl@@QEAA?AVevent@23@AEBUcode_location@detail@23@@Z -?ext_oneapi_submit_barrier@queue@_V1@sycl@@QEAA?AVevent@23@AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_supports_cl_c_feature@device@_V1@sycl@@AEAA_NVstring_view@detail@23@@Z -?ext_oneapi_supports_cl_c_feature@device@_V1@sycl@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z -?ext_oneapi_supports_cl_c_version@device@_V1@sycl@@QEBA_NAEBUcl_version@experimental@oneapi@ext@23@@Z -?ext_oneapi_supports_cl_extension@device@_V1@sycl@@AEBA_NVstring_view@detail@23@PEAUcl_version@experimental@oneapi@ext@23@@Z -?ext_oneapi_supports_cl_extension@device@_V1@sycl@@QEBA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAUcl_version@experimental@oneapi@ext@23@@Z -?ext_oneapi_wait_external_semaphore@handler@_V1@sycl@@QEAAXUexternal_semaphore@experimental@oneapi@ext@23@@Z -?ext_oneapi_wait_external_semaphore@handler@_V1@sycl@@QEAAXUexternal_semaphore@experimental@oneapi@ext@23@_K@Z -?ext_oneapi_wait_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@AEBUcode_location@detail@23@@Z -?ext_oneapi_wait_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_wait_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@V423@AEBUcode_location@detail@23@@Z -?ext_oneapi_wait_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@_KAEBUcode_location@detail@23@@Z -?ext_oneapi_wait_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@_KAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?ext_oneapi_wait_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@_KV423@AEBUcode_location@detail@23@@Z -?extractArgsAndReqs@handler@_V1@sycl@@AEAAXXZ -?fill_impl@handler@_V1@sycl@@AEAAXPEAXPEBX_K2@Z -?finalize@handler@_V1@sycl@@AEAA?AV?$shared_ptr@Vevent_impl@detail@_V1@sycl@@@std@@XZ -?finalize@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEBA?AV?$command_graph@$00@34567@AEBVproperty_list@67@@Z -?finalizeImpl@executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAAXXZ -?find_device_intersection@detail@_V1@sycl@@YA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV?$vector@V?$kernel_bundle@$00@_V1@sycl@@V?$allocator@V?$kernel_bundle@$00@_V1@sycl@@@std@@@5@@Z -?free@_V1@sycl@@YAXPEAXAEBVcontext@12@AEBUcode_location@detail@12@@Z -?free@_V1@sycl@@YAXPEAXAEBVqueue@12@AEBUcode_location@detail@12@@Z -?free_exportable_memory@experimental@oneapi@ext@_V1@sycl@@YAXPEAXAEBVdevice@45@AEBVcontext@45@@Z -?free_image_mem@experimental@oneapi@ext@_V1@sycl@@YAXUimage_mem_handle@12345@W4image_type@12345@AEBVdevice@45@AEBVcontext@45@@Z -?free_image_mem@experimental@oneapi@ext@_V1@sycl@@YAXUimage_mem_handle@12345@W4image_type@12345@AEBVqueue@45@@Z -?free_virtual_mem@experimental@oneapi@ext@_V1@sycl@@YAX_K0AEBVcontext@45@@Z -?frexp_impl@detail@_V1@sycl@@YA?AVhalf@half_impl@123@V45123@PEAH@Z -?frexp_impl@detail@_V1@sycl@@YAMMPEAH@Z -?frexp_impl@detail@_V1@sycl@@YANNPEAH@Z -?get@context@_V1@sycl@@QEBAPEAU_cl_context@@XZ -?get@device@_V1@sycl@@QEBAPEAU_cl_device_id@@XZ -?get@ipc_memory@experimental@oneapi@ext@_V1@sycl@@YA?AUhandle@123456@PEAXAEBVcontext@56@@Z -?get@kernel@_V1@sycl@@QEBAPEAU_cl_kernel@@XZ -?get@platform@_V1@sycl@@QEBAPEAU_cl_platform_id@@XZ -?get@queue@_V1@sycl@@QEBAPEAU_cl_command_queue@@XZ -?getAccData@AccessorBaseHost@detail@_V1@sycl@@QEAAAEAUAccHostDataT@234@XZ -?getAccData@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAAEAUAccHostDataT@234@XZ -?getAccData@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAAEAUAccHostDataT@234@XZ -?getAccessRange@AccessorBaseHost@detail@_V1@sycl@@QEAAAEAV?$range@$02@34@XZ -?getAccessRange@AccessorBaseHost@detail@_V1@sycl@@QEBAAEBV?$range@$02@34@XZ -?getBorderColor@detail@_V1@sycl@@YA?AV?$vec@M$03@23@W4image_channel_order@23@@Z -?getChannelOrder@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBA?AW4image_channel_order@34@XZ -?getChannelOrder@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBA?AW4image_channel_order@34@XZ -?getChannelOrder@image_plain@detail@_V1@sycl@@IEBA?AW4image_channel_order@34@XZ -?getChannelType@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBA?AW4image_channel_type@34@XZ -?getChannelType@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBA?AW4image_channel_type@34@XZ -?getChannelType@image_plain@detail@_V1@sycl@@IEBA?AW4image_channel_type@34@XZ -?getCommandGraph@handler@_V1@sycl@@AEBA?AV?$shared_ptr@Vgraph_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@XZ -?getContextImpl@handler@_V1@sycl@@AEBAAEAVcontext_impl@detail@23@XZ -?getCurrentDSODir@OSUtil@detail@_V1@sycl@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ -?getDeviceBackend@handler@_V1@sycl@@AEBA?AW4backend@23@XZ -?getDeviceFromHandler@detail@_V1@sycl@@YA?AVdevice@23@AEAVhandler@23@@Z -?getDeviceKernelInfo@detail@_V1@sycl@@YAAEAVDeviceKernelInfo@123@AEBUCompileTimeKernelInfoTy@compile_time_kernel_info_v1@123@@Z -?getElemSize@AccessorBaseHost@detail@_V1@sycl@@QEBAIXZ -?getElementSize@LocalAccessorBaseHost@detail@_V1@sycl@@QEAAHXZ -?getElementSize@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAHXZ -?getElementSize@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAHXZ -?getElementSize@image_plain@detail@_V1@sycl@@IEBA_KXZ -?getEndTime@HostProfilingInfo@detail@_V1@sycl@@QEBA_KXZ -?getKernelBundle@handler@_V1@sycl@@AEBA?AV?$kernel_bundle@$0A@@23@XZ -?getMaxWorkGroups@handler@_V1@sycl@@AEAA?AV?$optional@V?$array@_K$02@std@@@std@@XZ -?getMaxWorkGroups_v2@handler@_V1@sycl@@AEAA?AV?$tuple@V?$array@_K$02@std@@_N@std@@XZ -?getMemoryObject@AccessorBaseHost@detail@_V1@sycl@@QEBAPEAXXZ -?getMemoryObject@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAPEAXXZ -?getMemoryObject@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAPEAXXZ -?getMemoryRange@AccessorBaseHost@detail@_V1@sycl@@QEAAAEAV?$range@$02@34@XZ -?getMemoryRange@AccessorBaseHost@detail@_V1@sycl@@QEBAAEBV?$range@$02@34@XZ -?getNative@context@_V1@sycl@@AEBA_KXZ -?getNative@device@_V1@sycl@@AEBA_KXZ -?getNative@device_image_plain@detail@_V1@sycl@@QEBA_KXZ -?getNative@event@_V1@sycl@@AEBA_KXZ -?getNative@kernel@_V1@sycl@@AEBA_KXZ -?getNative@platform@_V1@sycl@@AEBA_KXZ -?getNative@queue@_V1@sycl@@QEBA_KAEAH@Z -?getNativeContext@interop_handle@_V1@sycl@@AEBA_KXZ -?getNativeDevice@interop_handle@_V1@sycl@@AEBA_KXZ -?getNativeGraph@interop_handle@_V1@sycl@@AEBA_KXZ -?getNativeImpl@kernel@_V1@sycl@@AEBA_KXZ -?getNativeMem@interop_handle@_V1@sycl@@AEBA_KPEAVAccessorImplHost@detail@23@@Z -?getNativeQueue@interop_handle@_V1@sycl@@AEBA_KAEAH@Z -?getNativeVector@buffer_plain@detail@_V1@sycl@@IEBA?AV?$vector@_KV?$allocator@_K@std@@@std@@W4backend@34@@Z -?getNativeVector@event@_V1@sycl@@AEBA?AV?$vector@_KV?$allocator@_K@std@@@std@@XZ -?getNumOfDims@LocalAccessorBaseHost@detail@_V1@sycl@@QEAAHXZ -?getNumOfDims@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAHXZ -?getNumOfDims@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAHXZ -?getOSMemSize@OSUtil@detail@_V1@sycl@@SA_KXZ -?getOffset@AccessorBaseHost@detail@_V1@sycl@@QEAAAEAV?$id@$02@34@XZ -?getOffset@AccessorBaseHost@detail@_V1@sycl@@QEBAAEBV?$id@$02@34@XZ -?getOrInsertHandlerKernelBundlePtr@handler@_V1@sycl@@AEBAPEAVkernel_bundle_impl@detail@23@_N@Z -?getPitch@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBA?AV?$id@$02@34@XZ -?getPitch@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBA?AV?$id@$02@34@XZ -?getPixelCoordLinearFiltMode@detail@_V1@sycl@@YA?AV?$vec@H$07@23@V?$vec@M$03@23@W4addressing_mode@23@V?$range@$02@23@AEAV523@@Z -?getPixelCoordNearestFiltMode@detail@_V1@sycl@@YA?AV?$vec@H$03@23@V?$vec@M$03@23@W4addressing_mode@23@V?$range@$02@23@@Z -?getPropList@AccessorBaseHost@detail@_V1@sycl@@QEBAAEBVproperty_list@34@XZ -?getPropList@LocalAccessorBaseHost@detail@_V1@sycl@@QEBAAEBVproperty_list@34@XZ -?getPropList@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAAEBVproperty_list@34@XZ -?getPropList@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAAEBVproperty_list@34@XZ -?getPropList@buffer_plain@detail@_V1@sycl@@IEBAAEBVproperty_list@34@XZ -?getPropList@context@_V1@sycl@@AEBAAEBVproperty_list@23@XZ -?getPropList@image_plain@detail@_V1@sycl@@IEBAAEBVproperty_list@34@XZ -?getPropList@queue@_V1@sycl@@AEBAAEBVproperty_list@23@XZ -?getPropList@sampler@_V1@sycl@@AEBAAEBVproperty_list@23@XZ -?getPropList@stream@_V1@sycl@@AEBAAEBVproperty_list@23@XZ -?getPtr@AccessorBaseHost@detail@_V1@sycl@@QEAAPEAXXZ -?getPtr@AccessorBaseHost@detail@_V1@sycl@@QEBAPEAXXZ -?getPtr@LocalAccessorBaseHost@detail@_V1@sycl@@QEAAPEAXXZ -?getPtr@LocalAccessorBaseHost@detail@_V1@sycl@@QEBAPEAXXZ -?getPtr@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAPEAXXZ -?getPtr@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAPEAXXZ -?getPtr@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAPEAXXZ -?getPtr@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAPEAXXZ -?getQueue@handler@_V1@sycl@@AEAA?AVqueue@23@XZ -?getRowPitch@image_plain@detail@_V1@sycl@@IEBA_KXZ -?getSampler@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBA?AUimage_sampler@34@XZ -?getSampler@image_plain@detail@_V1@sycl@@IEBA?AUimage_sampler@34@XZ -?getSize@LocalAccessorBaseHost@detail@_V1@sycl@@QEAAAEAV?$range@$02@34@XZ -?getSize@LocalAccessorBaseHost@detail@_V1@sycl@@QEBAAEBV?$range@$02@34@XZ -?getSize@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAAEBV?$range@$02@34@XZ -?getSize@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAAEBV?$range@$02@34@XZ -?getSize@buffer_plain@detail@_V1@sycl@@IEBA_KXZ -?getSlicePitch@image_plain@detail@_V1@sycl@@IEBA_KXZ -?getStartTime@HostProfilingInfo@detail@_V1@sycl@@QEBA_KXZ -?getType@handler@_V1@sycl@@AEBA?AW4CGType@detail@23@XZ -?getValueFromDynamicParameter@detail@_V1@sycl@@YAPEAXAEAVdynamic_parameter_base@1experimental@oneapi@ext@23@@Z -?get_access_mode@experimental@oneapi@ext@_V1@sycl@@YA?AW4address_access_mode@12345@PEBX_KAEBVcontext@45@@Z -?get_active_index@dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEBA_KXZ -?get_addressing_mode@sampler@_V1@sycl@@QEBA?AW4addressing_mode@23@XZ -?get_alloc_kind@memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA?AW4alloc@usm@56@XZ -?get_allocator_internal@buffer_plain@detail@_V1@sycl@@IEBAAEBV?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@XZ -?get_allocator_internal@image_plain@detail@_V1@sycl@@IEBAAEBV?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@XZ -?get_backend@context@_V1@sycl@@QEBA?AW4backend@23@XZ -?get_backend@device@_V1@sycl@@QEBA?AW4backend@23@XZ -?get_backend@event@_V1@sycl@@QEBA?AW4backend@23@XZ -?get_backend@interop_handle@_V1@sycl@@QEBA?AW4backend@23@XZ -?get_backend@kernel@_V1@sycl@@QEBA?AW4backend@23@XZ -?get_backend@kernel_bundle_plain@detail@_V1@sycl@@QEBA?AW4backend@34@XZ -?get_backend@platform@_V1@sycl@@QEBA?AW4backend@23@XZ -?get_backend@queue@_V1@sycl@@QEBA?AW4backend@23@XZ -?get_channel_order@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AW4image_channel_order@56@XZ -?get_channel_type@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AW4image_channel_type@56@XZ -?get_composite_devices@experimental@oneapi@ext@_V1@sycl@@YA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ -?get_context@exception@_V1@sycl@@QEBA?AVcontext@23@XZ -?get_context@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AVcontext@56@XZ -?get_context@kernel@_V1@sycl@@QEBA?AVcontext@23@XZ -?get_context@kernel_bundle_plain@detail@_V1@sycl@@QEBA?AVcontext@34@XZ -?get_context@memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA?AVcontext@56@XZ -?get_context@physical_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AVcontext@56@XZ -?get_context@queue@_V1@sycl@@QEBA?AVcontext@23@XZ -?get_coordinate_normalization_mode@sampler@_V1@sycl@@QEBA?AW4coordinate_normalization_mode@23@XZ -?get_count@image_plain@detail@_V1@sycl@@IEBA_KXZ -?get_descriptor@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBAAEBUimage_descriptor@23456@XZ -?get_device@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AVdevice@56@XZ -?get_device@memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA?AVdevice@56@XZ -?get_device@physical_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AVdevice@56@XZ -?get_device@queue@_V1@sycl@@QEBA?AVdevice@23@XZ -?get_devices@context@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ -?get_devices@device@_V1@sycl@@SA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@W4device_type@info@23@@Z -?get_devices@kernel_bundle_plain@detail@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ -?get_devices@platform@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@W4device_type@info@23@@Z -?get_empty_interop_kernel_bundle_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBVcontext@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@@Z -?get_filtering_mode@sampler@_V1@sycl@@QEBA?AW4filtering_mode@23@XZ -?get_flags@stream@_V1@sycl@@AEBAIXZ -?get_handle@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AUimage_mem_handle@23456@XZ -?get_image_channel_type@experimental@oneapi@ext@_V1@sycl@@YA?AW4image_channel_type@45@Uimage_mem_handle@12345@AEBVdevice@45@AEBVcontext@45@@Z -?get_image_channel_type@experimental@oneapi@ext@_V1@sycl@@YA?AW4image_channel_type@45@Uimage_mem_handle@12345@AEBVqueue@45@@Z -?get_image_memory_support@experimental@oneapi@ext@_V1@sycl@@YA?AV?$vector@W4image_memory_handle_type@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4image_memory_handle_type@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z -?get_image_memory_support@experimental@oneapi@ext@_V1@sycl@@YA?AV?$vector@W4image_memory_handle_type@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4image_memory_handle_type@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@AEBUimage_descriptor@12345@AEBVqueue@45@@Z -?get_image_num_channels@experimental@oneapi@ext@_V1@sycl@@YAIUimage_mem_handle@12345@AEBVdevice@45@AEBVcontext@45@@Z -?get_image_num_channels@experimental@oneapi@ext@_V1@sycl@@YAIUimage_mem_handle@12345@AEBVqueue@45@@Z -?get_image_range@experimental@oneapi@ext@_V1@sycl@@YA?AV?$range@$02@45@Uimage_mem_handle@12345@AEBVdevice@45@AEBVcontext@45@@Z -?get_image_range@experimental@oneapi@ext@_V1@sycl@@YA?AV?$range@$02@45@Uimage_mem_handle@12345@AEBVqueue@45@@Z -?get_impl@handler@_V1@sycl@@AEAAPEAVhandler_impl@detail@23@XZ -?get_kernel@kernel_bundle_plain@detail@_V1@sycl@@IEBA?AVkernel@34@AEBVkernel_id@34@@Z -?get_kernel_bundle@kernel@_V1@sycl@@QEBA?AV?$kernel_bundle@$01@23@XZ -?get_kernel_bundle_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBVcontext@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@AEBV?$span@D$0?0@23@W4bundle_state@23@@Z -?get_kernel_bundle_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBVcontext@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@AEBV?$vector@Vkernel_id@_V1@sycl@@V?$allocator@Vkernel_id@_V1@sycl@@@std@@@5@W4bundle_state@23@@Z -?get_kernel_bundle_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBVcontext@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@W4bundle_state@23@@Z -?get_kernel_bundle_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBVcontext@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@W4bundle_state@23@AEBV?$function@$$A6A_NAEBV?$shared_ptr@Vdevice_image_impl@detail@_V1@sycl@@@std@@@Z@5@@Z -?get_kernel_id_impl@detail@_V1@sycl@@YA?AVkernel_id@23@Vstring_view@123@@Z -?get_kernel_ids@_V1@sycl@@YA?AV?$vector@Vkernel_id@_V1@sycl@@V?$allocator@Vkernel_id@_V1@sycl@@@std@@@std@@XZ -?get_kernel_ids@kernel_bundle_plain@detail@_V1@sycl@@QEBA?AV?$vector@Vkernel_id@_V1@sycl@@V?$allocator@Vkernel_id@_V1@sycl@@@std@@@std@@XZ -?get_max_statement_size@stream@_V1@sycl@@QEBA_KXZ -?get_mem_granularity@experimental@oneapi@ext@_V1@sycl@@YA_KAEBVcontext@45@W4granularity_mode@12345@@Z -?get_mem_granularity@experimental@oneapi@ext@_V1@sycl@@YA_KAEBVdevice@45@AEBVcontext@45@W4granularity_mode@12345@@Z -?get_mip_level_mem_handle@experimental@oneapi@ext@_V1@sycl@@YA?AUimage_mem_handle@12345@U612345@IAEBVdevice@45@AEBVcontext@45@@Z -?get_mip_level_mem_handle@experimental@oneapi@ext@_V1@sycl@@YA?AUimage_mem_handle@12345@U612345@IAEBVqueue@45@@Z -?get_mip_level_mem_handle@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AUimage_mem_handle@23456@I@Z -?get_name@kernel_id@_V1@sycl@@QEBAPEBDXZ -?get_node_from_event@node@experimental@oneapi@ext@_V1@sycl@@SA?AV123456@Vevent@56@@Z -?get_nodes@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEBA?AV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -?get_num_channels@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBAIXZ -?get_pipe_name@pipe_base@experimental@intel@ext@_V1@sycl@@KA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBX@Z -?get_pipe_name_impl@pipe_base@experimental@intel@ext@_V1@sycl@@KA?AVstring@detail@56@PEBX@Z -?get_pitch@image_plain@detail@_V1@sycl@@IEBA?AV?$range@$01@34@XZ -?get_platform@context@_V1@sycl@@QEBA?AVplatform@23@XZ -?get_platform@device@_V1@sycl@@QEBA?AVplatform@23@XZ -?get_platforms@platform@_V1@sycl@@SA?AV?$vector@Vplatform@_V1@sycl@@V?$allocator@Vplatform@_V1@sycl@@@std@@@std@@XZ -?get_pointer_device@_V1@sycl@@YA?AVdevice@12@PEBXAEBVcontext@12@@Z -?get_pointer_type@_V1@sycl@@YA?AW4alloc@usm@12@PEBXAEBVcontext@12@@Z -?get_pointer_type@detail@_V1@sycl@@YA?AW4alloc@usm@23@PEBXAEAVcontext_impl@123@@Z -?get_precision@stream@_V1@sycl@@QEBA_KXZ -?get_predecessors@node@experimental@oneapi@ext@_V1@sycl@@QEBA?AV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -?get_queue@fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEBA?AVqueue@56@XZ -?get_range@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AV?$range@$02@56@XZ -?get_range@image_plain@detail@_V1@sycl@@IEBA?AV?$range@$02@34@XZ -?get_required_mem_size@executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEBA_KXZ -?get_reserved_size_current@memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA_KXZ -?get_root_nodes@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEBA?AV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -?get_size@image_plain@detail@_V1@sycl@@IEBA_KXZ -?get_size@stream@_V1@sycl@@QEBA_KXZ -?get_specialization_constant_impl@kernel_bundle_plain@detail@_V1@sycl@@IEBAXPEBDPEAX@Z -?get_stream_mode@stream@_V1@sycl@@QEBA?AW4stream_manipulator@23@XZ -?get_successors@node@experimental@oneapi@ext@_V1@sycl@@QEBA?AV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ -?get_threshold@memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA_KXZ -?get_type@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AW4image_type@23456@XZ -?get_type@node@experimental@oneapi@ext@_V1@sycl@@QEBA?AW4node_type@23456@XZ -?get_used_size_current@memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA_KXZ -?get_wait_list@event@_V1@sycl@@QEAA?AV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@XZ -?get_width@stream@_V1@sycl@@QEBA_KXZ -?get_work_item_buffer_size@stream@_V1@sycl@@QEBA_KXZ -?gpu_selector_v@_V1@sycl@@YAHAEBVdevice@12@@Z -?handleRelease@buffer_plain@detail@_V1@sycl@@IEBAXXZ -?has@device@_V1@sycl@@QEBA_NW4aspect@23@@Z -?has@platform@_V1@sycl@@QEBA_NW4aspect@23@@Z -?has_context@exception@_V1@sycl@@QEBA_NXZ -?has_extension@detail@opencl@_V1@sycl@@YA_NAEBVdevice@34@Vstring_view@134@@Z -?has_extension@detail@opencl@_V1@sycl@@YA_NAEBVplatform@34@Vstring_view@134@@Z -?has_extension@device@_V1@sycl@@AEBA_NVstring_view@detail@23@@Z -?has_extension@device@_V1@sycl@@QEBA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z -?has_extension@opencl@_V1@sycl@@YA_NAEBVdevice@23@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z -?has_extension@opencl@_V1@sycl@@YA_NAEBVplatform@23@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z -?has_extension@platform@_V1@sycl@@AEBA_NVstring_view@detail@23@@Z -?has_extension@platform@_V1@sycl@@QEBA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z -?has_kernel@device_image_plain@detail@_V1@sycl@@QEBA_NAEBVkernel_id@34@@Z -?has_kernel@device_image_plain@detail@_V1@sycl@@QEBA_NAEBVkernel_id@34@AEBVdevice@34@@Z -?has_kernel@kernel_bundle_plain@detail@_V1@sycl@@QEBA_NAEBVkernel_id@34@@Z -?has_kernel@kernel_bundle_plain@detail@_V1@sycl@@QEBA_NAEBVkernel_id@34@AEBVdevice@34@@Z -?has_kernel_bundle_impl@detail@_V1@sycl@@YA_NAEBVcontext@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV?$vector@Vkernel_id@_V1@sycl@@V?$allocator@Vkernel_id@_V1@sycl@@@std@@@6@W4bundle_state@23@@Z -?has_kernel_bundle_impl@detail@_V1@sycl@@YA_NAEBVcontext@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@W4bundle_state@23@@Z -?has_specialization_constant_impl@kernel_bundle_plain@detail@_V1@sycl@@IEBA_NPEBD@Z -?increase_threshold_to@memory_pool@experimental@oneapi@ext@_V1@sycl@@QEAAX_K@Z -?instantiateKernelOnHost@handler@_V1@sycl@@AEAAXPEAX@Z -?internalProfilingTagImpl@handler@_V1@sycl@@AEAAXXZ -?isBackendSupportedFillSize@handler@_V1@sycl@@CA_N_K@Z -?isConstOrGlobal@handler@_V1@sycl@@CA_NW4target@access@23@@Z -?isDeviceGlobalUsedInKernel@detail@_V1@sycl@@YA_NPEBX@Z -?isImageOrImageArray@handler@_V1@sycl@@CA_NW4target@access@23@@Z -?isMemoryObjectUsedByGraph@AccessorBaseHost@detail@_V1@sycl@@QEBA_NXZ -?isOutOfRange@detail@_V1@sycl@@YA_NV?$vec@H$03@23@W4addressing_mode@23@V?$range@$02@23@@Z -?isPathPresent@OSUtil@detail@_V1@sycl@@SA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z -?isPlaceholder@AccessorBaseHost@detail@_V1@sycl@@QEBA_NXZ -?isStateExplicitKernelBundle@handler@_V1@sycl@@AEBA_NXZ -?isToplevel@tls_code_loc_t@detail@_V1@sycl@@QEBA_NXZ -?isValidModeForDestinationAccessor@handler@_V1@sycl@@CA_NW4mode@access@23@@Z -?isValidModeForSourceAccessor@handler@_V1@sycl@@CA_NW4mode@access@23@@Z -?isValidTargetForExplicitOp@handler@_V1@sycl@@CA_NW4target@access@23@@Z -?is_accelerator@device@_V1@sycl@@QEBA_NXZ -?is_compatible@_V1@sycl@@YA_NAEBV?$vector@Vkernel_id@_V1@sycl@@V?$allocator@Vkernel_id@_V1@sycl@@@std@@@std@@AEBVdevice@12@@Z -?is_cpu@device@_V1@sycl@@QEBA_NXZ -?is_gpu@device@_V1@sycl@@QEBA_NXZ -?is_in_fusion_mode@fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEBA_NXZ -?is_in_order@queue@_V1@sycl@@QEBA_NXZ -?is_specialization_constant_set@kernel_bundle_plain@detail@_V1@sycl@@IEBA_NPEBD@Z -?join_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBV?$vector@V?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@V?$allocator@V?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@@2@@5@W4bundle_state@23@@Z -?khr_empty@queue@_V1@sycl@@QEBA_NXZ -?khr_get_default_context@platform@_V1@sycl@@QEBA?AVcontext@23@XZ -?lgamma_r_impl@detail@_V1@sycl@@YA?AVhalf@half_impl@123@V45123@PEAH@Z -?lgamma_r_impl@detail@_V1@sycl@@YAMMPEAH@Z -?lgamma_r_impl@detail@_V1@sycl@@YANNPEAH@Z -?link_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBV?$vector@V?$kernel_bundle@$00@_V1@sycl@@V?$allocator@V?$kernel_bundle@$00@_V1@sycl@@@std@@@5@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@AEBVproperty_list@23@@Z -?link_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@PEBV?$kernel_bundle@$00@23@_KAEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@_N@Z -?makeDir@OSUtil@detail@_V1@sycl@@SAHPEBD@Z -?make_context@detail@_V1@sycl@@YA?AVcontext@23@_KAEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@W4backend@23@_NAEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@6@@Z -?make_device@detail@_V1@sycl@@YA?AVdevice@23@_KW4backend@23@@Z -?make_device@detail@level_zero@oneapi@ext@_V1@sycl@@YA?AVdevice@56@AEBVplatform@56@_K@Z -?make_edge@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEAVnode@34567@0@Z -?make_error_code@_V1@sycl@@YA?AVerror_code@std@@W4errc@12@@Z -?make_event@detail@_V1@sycl@@YA?AVevent@23@_KAEBVcontext@23@W4backend@23@@Z -?make_event@detail@_V1@sycl@@YA?AVevent@23@_KAEBVcontext@23@_NW4backend@23@@Z -?make_kernel@detail@_V1@sycl@@YA?AVkernel@23@AEBVcontext@23@AEBV?$kernel_bundle@$01@23@_K_NW4backend@23@@Z -?make_kernel@detail@_V1@sycl@@YA?AVkernel@23@_KAEBVcontext@23@W4backend@23@@Z -?make_kernel_bundle@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@_KAEBVcontext@23@W4bundle_state@23@W4backend@23@@Z -?make_kernel_bundle@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@_KAEBVcontext@23@_NW4bundle_state@23@W4backend@23@@Z -?make_kernel_bundle_from_source@detail@experimental@oneapi@ext@_V1@sycl@@YA?AV?$kernel_bundle@$02@56@AEBVcontext@56@W4source_language@23456@AEBV?$vector@W4byte@std@@V?$allocator@W4byte@std@@@2@@std@@V?$vector@U?$pair@Vstring_view@detail@_V1@sycl@@V1234@@std@@V?$allocator@U?$pair@Vstring_view@detail@_V1@sycl@@V1234@@std@@@2@@std@@@Z -?make_kernel_bundle_from_source@detail@experimental@oneapi@ext@_V1@sycl@@YA?AV?$kernel_bundle@$02@56@AEBVcontext@56@W4source_language@23456@Vstring_view@156@V?$vector@U?$pair@Vstring_view@detail@_V1@sycl@@V1234@@std@@V?$allocator@U?$pair@Vstring_view@detail@_V1@sycl@@V1234@@std@@@2@@std@@@Z -?make_platform@detail@_V1@sycl@@YA?AVplatform@23@_KW4backend@23@@Z -?make_queue@detail@_V1@sycl@@YA?AVqueue@23@_KHAEBVcontext@23@PEBVdevice@23@_NAEBVproperty_list@23@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@W4backend@23@@Z -?malloc@_V1@sycl@@YAPEAX_KAEBVdevice@12@AEBVcontext@12@W4alloc@usm@12@AEBUcode_location@detail@12@@Z -?malloc@_V1@sycl@@YAPEAX_KAEBVdevice@12@AEBVcontext@12@W4alloc@usm@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?malloc@_V1@sycl@@YAPEAX_KAEBVqueue@12@W4alloc@usm@12@AEBUcode_location@detail@12@@Z -?malloc@_V1@sycl@@YAPEAX_KAEBVqueue@12@W4alloc@usm@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?malloc_device@_V1@sycl@@YAPEAX_KAEBVdevice@12@AEBVcontext@12@AEBUcode_location@detail@12@@Z -?malloc_device@_V1@sycl@@YAPEAX_KAEBVdevice@12@AEBVcontext@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?malloc_device@_V1@sycl@@YAPEAX_KAEBVqueue@12@AEBUcode_location@detail@12@@Z -?malloc_device@_V1@sycl@@YAPEAX_KAEBVqueue@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?malloc_host@_V1@sycl@@YAPEAX_KAEBVcontext@12@AEBUcode_location@detail@12@@Z -?malloc_host@_V1@sycl@@YAPEAX_KAEBVcontext@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?malloc_host@_V1@sycl@@YAPEAX_KAEBVqueue@12@AEBUcode_location@detail@12@@Z -?malloc_host@_V1@sycl@@YAPEAX_KAEBVqueue@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?malloc_shared@_V1@sycl@@YAPEAX_KAEBVdevice@12@AEBVcontext@12@AEBUcode_location@detail@12@@Z -?malloc_shared@_V1@sycl@@YAPEAX_KAEBVdevice@12@AEBVcontext@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?malloc_shared@_V1@sycl@@YAPEAX_KAEBVqueue@12@AEBUcode_location@detail@12@@Z -?malloc_shared@_V1@sycl@@YAPEAX_KAEBVqueue@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z -?map@physical_mem@experimental@oneapi@ext@_V1@sycl@@QEBAPEAX_K0W4address_access_mode@23456@0@Z -?map_external_image_memory@experimental@oneapi@ext@_V1@sycl@@YA?AUimage_mem_handle@12345@Uexternal_mem@12345@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z -?map_external_image_memory@experimental@oneapi@ext@_V1@sycl@@YA?AUimage_mem_handle@12345@Uexternal_mem@12345@AEBUimage_descriptor@12345@AEBVqueue@45@@Z -?map_external_linear_memory@experimental@oneapi@ext@_V1@sycl@@YAPEAXUexternal_mem@12345@_K1AEBVdevice@45@AEBVcontext@45@@Z -?map_external_linear_memory@experimental@oneapi@ext@_V1@sycl@@YAPEAXUexternal_mem@12345@_K1AEBVqueue@45@@Z -?markBufferAsInternal@detail@_V1@sycl@@YAXAEBV?$shared_ptr@Vbuffer_impl@detail@_V1@sycl@@@std@@@Z -?mem_advise@experimental@oneapi@ext@_V1@sycl@@YAXVqueue@45@PEAX_KHAEBUcode_location@detail@45@@Z -?mem_advise@handler@_V1@sycl@@QEAAXPEBX_KH@Z -?mem_advise@queue@_V1@sycl@@QEAA?AVevent@23@PEBX_KHAEBUcode_location@detail@23@@Z -?mem_advise@queue@_V1@sycl@@QEAA?AVevent@23@PEBX_KHAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?mem_advise@queue@_V1@sycl@@QEAA?AVevent@23@PEBX_KHV423@AEBUcode_location@detail@23@@Z -?memcpy@experimental@oneapi@ext@_V1@sycl@@YAXVqueue@45@PEAXPEBX_KAEBUcode_location@detail@45@@Z -?memcpy@handler@_V1@sycl@@QEAAXPEAXPEBX_K@Z -?memcpy@queue@_V1@sycl@@QEAA?AVevent@23@PEAXPEBX_KAEBUcode_location@detail@23@@Z -?memcpy@queue@_V1@sycl@@QEAA?AVevent@23@PEAXPEBX_KAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?memcpy@queue@_V1@sycl@@QEAA?AVevent@23@PEAXPEBX_KV423@AEBUcode_location@detail@23@@Z -?memcpyFromDeviceGlobal@handler@_V1@sycl@@AEAAXPEAXPEBX_N_K3@Z -?memcpyFromDeviceGlobal@queue@_V1@sycl@@AEAA?AVevent@23@PEAXPEBX_N_K3AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@@Z -?memcpyFromHostOnlyDeviceGlobal@handler@_V1@sycl@@AEAAXPEAXPEBX_N_K3@Z -?memcpyToDeviceGlobal@handler@_V1@sycl@@AEAAXPEBX0_N_K2@Z -?memcpyToDeviceGlobal@queue@_V1@sycl@@AEAA?AVevent@23@PEAXPEBX_N_K3AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@@Z -?memcpyToHostOnlyDeviceGlobal@handler@_V1@sycl@@AEAAXPEBX0_K_N11@Z -?memset@experimental@oneapi@ext@_V1@sycl@@YAXVqueue@45@PEAXH_KAEBUcode_location@detail@45@@Z -?memset@handler@_V1@sycl@@QEAAXPEAXH_K@Z -?memset@queue@_V1@sycl@@QEAA?AVevent@23@PEAXH_KAEBUcode_location@detail@23@@Z -?memset@queue@_V1@sycl@@QEAA?AVevent@23@PEAXH_KAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?memset@queue@_V1@sycl@@QEAA?AVevent@23@PEAXH_KV423@AEBUcode_location@detail@23@@Z -?message@SYCLCategory@detail@_V1@sycl@@UEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z -?modf_impl@detail@_V1@sycl@@YA?AVhalf@half_impl@123@V45123@PEAV45123@@Z -?modf_impl@detail@_V1@sycl@@YAMMPEAM@Z -?modf_impl@detail@_V1@sycl@@YANNPEAN@Z -?name@SYCLCategory@detail@_V1@sycl@@UEBAPEBDXZ -?native_specialization_constant@kernel_bundle_plain@detail@_V1@sycl@@QEBA_NXZ -?openIPCMemHandle@detail@_V1@sycl@@YAPEAXPEBW4byte@std@@_KAEBVcontext@23@AEBVdevice@23@@Z -?parallel_for@handler@_V1@sycl@@QEAAXV?$range@$00@23@Vkernel@23@@Z -?parallel_for@handler@_V1@sycl@@QEAAXV?$range@$01@23@Vkernel@23@@Z -?parallel_for@handler@_V1@sycl@@QEAAXV?$range@$02@23@Vkernel@23@@Z -?pitched_alloc_device@experimental@oneapi@ext@_V1@sycl@@YAPEAXPEA_KAEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z -?pitched_alloc_device@experimental@oneapi@ext@_V1@sycl@@YAPEAXPEA_KAEBUimage_descriptor@12345@AEBVqueue@45@@Z -?pitched_alloc_device@experimental@oneapi@ext@_V1@sycl@@YAPEAXPEA_K_K1IAEBVdevice@45@AEBVcontext@45@@Z -?pitched_alloc_device@experimental@oneapi@ext@_V1@sycl@@YAPEAXPEA_K_K1IAEBVqueue@45@@Z -?postProcess@HandlerAccess@detail@_V1@sycl@@SAXAEAVhandler@34@Vtype_erased_cgfo_ty@234@@Z -?preProcess@HandlerAccess@detail@_V1@sycl@@SAXAEAVhandler@34@Vtype_erased_cgfo_ty@234@@Z -?prefetch@handler@_V1@sycl@@QEAAXPEBX_K@Z -?prefetch@handler@_V1@sycl@@QEAAXPEBX_KW4prefetch_type@experimental@oneapi@ext@23@@Z -?prefetch@queue@_V1@sycl@@QEAA?AVevent@23@PEBX_KAEBUcode_location@detail@23@@Z -?prefetch@queue@_V1@sycl@@QEAA?AVevent@23@PEBX_KAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z -?prefetch@queue@_V1@sycl@@QEAA?AVevent@23@PEBX_KV423@AEBUcode_location@detail@23@@Z -?prepare_for_device_copy@experimental@oneapi@ext@_V1@sycl@@YAXPEBX_KAEBVcontext@45@@Z -?prepare_for_device_copy@experimental@oneapi@ext@_V1@sycl@@YAXPEBX_KAEBVqueue@45@@Z -?print_graph@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEBAXVstring_view@267@_N@Z -?print_graph@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEBAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N@Z -?put@ipc_memory@experimental@oneapi@ext@_V1@sycl@@YAXAEAUhandle@123456@AEBVcontext@56@@Z -?query@tls_code_loc_t@detail@_V1@sycl@@QEAAAEBUcode_location@234@XZ -?reduComputeWGSize@detail@_V1@sycl@@YA_K_K0AEA_K@Z -?reduGetMaxNumConcurrentWorkGroups@detail@_V1@sycl@@YAIAEAVhandler@23@@Z -?reduGetMaxWGSize@detail@_V1@sycl@@YA_KAEAVhandler@23@_K@Z -?reduGetPreferredWGSize@detail@_V1@sycl@@YA_KAEAVhandler@23@_K@Z -?registerDynamicParameter@handler@_V1@sycl@@AEAAXPEAVdynamic_parameter_impl@detail@experimental@oneapi@ext@23@H@Z -?release_external_memory@experimental@oneapi@ext@_V1@sycl@@YAXUexternal_mem@12345@AEBVdevice@45@AEBVcontext@45@@Z -?release_external_memory@experimental@oneapi@ext@_V1@sycl@@YAXUexternal_mem@12345@AEBVqueue@45@@Z -?release_external_semaphore@experimental@oneapi@ext@_V1@sycl@@YAXUexternal_semaphore@12345@AEBVdevice@45@AEBVcontext@45@@Z -?release_external_semaphore@experimental@oneapi@ext@_V1@sycl@@YAXUexternal_semaphore@12345@AEBVqueue@45@@Z -?release_from_device_copy@experimental@oneapi@ext@_V1@sycl@@YAXPEBXAEBVcontext@45@@Z -?release_from_device_copy@experimental@oneapi@ext@_V1@sycl@@YAXPEBXAEBVqueue@45@@Z -?remove@free_function_info_map@detail@_V1@sycl@@YAXPEBQEBDPEBII@Z -?removeDuplicateDevices@detail@_V1@sycl@@YA?BV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV45@@Z -?remquo_impl@detail@_V1@sycl@@YA?AVhalf@half_impl@123@V45123@0PEAH@Z -?remquo_impl@detail@_V1@sycl@@YAMMMPEAH@Z -?remquo_impl@detail@_V1@sycl@@YANNNPEAH@Z -?reserve_virtual_mem@experimental@oneapi@ext@_V1@sycl@@YA_K_K0AEBVcontext@45@@Z -?reset@filter_selector@ONEAPI@_V1@sycl@@QEBAXXZ -?reset@filter_selector@oneapi@ext@_V1@sycl@@QEBAXXZ -?sampledImageConstructorNotification@detail@_V1@sycl@@YAXPEAX0AEBV?$optional@W4image_target@_V1@sycl@@@std@@PEBXIAEBUcode_location@123@@Z -?sampledImageConstructorNotification@image_plain@detail@_V1@sycl@@IEAAXAEBUcode_location@234@PEAXPEBXIQEA_KW4image_format@34@AEBUimage_sampler@34@@Z -?sampledImageDestructorNotification@image_plain@detail@_V1@sycl@@IEAAXPEAX@Z -?saveCodeLoc@handler@_V1@sycl@@AEAAXUcode_location@detail@23@_N@Z -?select_device@detail@_V1@sycl@@YA?AVdevice@23@AEBV?$function@$$A6AHAEBVdevice@_V1@sycl@@@Z@std@@@Z -?select_device@detail@_V1@sycl@@YA?AVdevice@23@AEBV?$function@$$A6AHAEBVdevice@_V1@sycl@@@Z@std@@AEBVcontext@23@@Z -?select_device@device_selector@_V1@sycl@@UEBA?AVdevice@23@XZ -?select_device@filter_selector@ONEAPI@_V1@sycl@@UEBA?AVdevice@34@XZ -?select_device@filter_selector@oneapi@ext@_V1@sycl@@UEBA?AVdevice@45@XZ -?setArgHelper@handler@_V1@sycl@@AEAAXH$$QEAVraw_kernel_arg@experimental@oneapi@ext@23@@Z -?setArgHelper@handler@_V1@sycl@@AEAAXH$$QEAVsampler@23@@Z -?setArgHelper@handler@_V1@sycl@@AEAAXH$$QEAVstream@23@@Z -?setArgHelper@handler@_V1@sycl@@AEAAXHAEAVwork_group_memory_impl@detail@23@@Z -?setArgsHelper@handler@_V1@sycl@@AEAAXH@Z -?setArgsToAssociatedAccessors@handler@_V1@sycl@@AEAAXXZ -?setDevice@HostProfilingInfo@detail@_V1@sycl@@QEAAXPEAVdevice_impl@234@@Z -?setDeviceKernelInfo@handler@_V1@sycl@@AEAAX$$QEAVkernel@23@@Z -?setDeviceKernelInfoPtr@handler@_V1@sycl@@AEAAXPEAVDeviceKernelInfo@detail@23@@Z -?setHandlerKernelBundle@handler@_V1@sycl@@AEAAXVkernel@23@@Z -?setKernelFunc@handler@_V1@sycl@@AEAAXPEAX@Z -?setKernelLaunchProperties@handler@_V1@sycl@@AEAAXAEBU?$PropsHolder@Uwork_group_scratch_size@experimental@oneapi@ext@_V1@sycl@@Ucache_config@2intel@456@Uuse_root_sync_key@23456@Uwork_group_progress_key@23456@Usub_group_progress_key@23456@Uwork_item_progress_key@23456@U?$cluster_size@$00@cuda@23456@U?$cluster_size@$01@cuda@23456@U?$cluster_size@$02@cuda@23456@@kernel_launch_properties_v1@detail@23@@Z -?setLocalAccessorArgHelper@handler@_V1@sycl@@AEAAXHAEAVLocalAccessorBaseHost@detail@23@@Z -?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$00@23@0V?$id@$00@23@@Z -?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$00@23@V?$id@$00@23@@Z -?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$00@23@_N@Z -?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$01@23@0V?$id@$01@23@@Z -?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$01@23@V?$id@$01@23@@Z -?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$01@23@_N@Z -?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$02@23@0V?$id@$02@23@@Z -?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$02@23@V?$id@$02@23@@Z -?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$02@23@_N@Z -?setStateExplicitKernelBundle@handler@_V1@sycl@@AEAAXXZ -?setStateSpecConstSet@handler@_V1@sycl@@AEAAXXZ -?setType@handler@_V1@sycl@@AEAAXW4CGType@detail@23@@Z -?setUserFacingNodeType@handler@_V1@sycl@@AEAAXW4node_type@experimental@oneapi@ext@23@@Z -?set_access_mode@experimental@oneapi@ext@_V1@sycl@@YAXPEBX_KW4address_access_mode@12345@AEBVcontext@45@@Z -?set_active_index@dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEAAX_K@Z -?set_arg@handler@_V1@sycl@@QEAAXH$$QEAVraw_kernel_arg@experimental@oneapi@ext@23@@Z -?set_final_data_internal@buffer_plain@detail@_V1@sycl@@IEAAXAEBV?$function@$$A6AXAEBV?$function@$$A6AXPEAX@Z@std@@@Z@std@@@Z -?set_final_data_internal@buffer_plain@detail@_V1@sycl@@IEAAXXZ -?set_final_data_internal@image_plain@detail@_V1@sycl@@IEAAXAEBV?$function@$$A6AXAEBV?$function@$$A6AXPEAX@Z@std@@@Z@std@@@Z -?set_final_data_internal@image_plain@detail@_V1@sycl@@IEAAXXZ -?set_flag@stream@_V1@sycl@@AEBAXI@Z -?set_flag@stream@_V1@sycl@@AEBAXII@Z -?set_manipulator@stream@_V1@sycl@@AEBAXW4stream_manipulator@23@@Z -?set_specialization_constant_impl@kernel_bundle_plain@detail@_V1@sycl@@IEAAXPEBDPEAX_K@Z -?set_write_back@buffer_plain@detail@_V1@sycl@@IEAAX_N@Z -?set_write_back@image_plain@detail@_V1@sycl@@IEAAX_N@Z -?sincos_impl@detail@_V1@sycl@@YA?AVhalf@half_impl@123@V45123@PEAV45123@@Z -?sincos_impl@detail@_V1@sycl@@YAMMPEAM@Z -?sincos_impl@detail@_V1@sycl@@YANNPEAN@Z -?single_task@handler@_V1@sycl@@QEAAXVkernel@23@@Z -?size@exception_list@_V1@sycl@@QEBA_KXZ -?size@physical_mem@experimental@oneapi@ext@_V1@sycl@@QEBA_KXZ -?size@stream@_V1@sycl@@QEBA_KXZ -?start@HostProfilingInfo@detail@_V1@sycl@@QEAAXXZ -?start_fusion@fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAAXXZ -?storeRawArg@handler@_V1@sycl@@AEAAPEAXAEBVraw_kernel_arg@experimental@oneapi@ext@23@@Z -?storeRawArg@handler@_V1@sycl@@AEAAPEAXPEBX_K@Z -?submit_graph_direct_with_event_impl@_V1@sycl@@YA?AVevent@12@AEBVqueue@12@AEAV?$command_graph@$00@experimental@oneapi@ext@12@V?$span@$$CBVevent@_V1@sycl@@$0?0@12@AEBUcode_location@detail@12@@Z -?submit_graph_direct_without_event_impl@_V1@sycl@@YAXAEBVqueue@12@AEAV?$command_graph@$00@experimental@oneapi@ext@12@V?$span@$$CBVevent@_V1@sycl@@$0?0@12@AEBUcode_location@detail@12@@Z -?submit_kernel_direct_with_event_impl@_V1@sycl@@YA?AVevent@12@AEBVqueue@12@AEBVnd_range_view@nd_range_view_v1@detail@12@AEAVHostKernelRefBase@712@PEAVDeviceKernelInfo@712@V?$span@$$CBVevent@_V1@sycl@@$0?0@12@AEBU?$PropsHolder@Uwork_group_scratch_size@experimental@oneapi@ext@_V1@sycl@@Ucache_config@2intel@456@Uuse_root_sync_key@23456@Uwork_group_progress_key@23456@Usub_group_progress_key@23456@Uwork_item_progress_key@23456@U?$cluster_size@$00@cuda@23456@U?$cluster_size@$01@cuda@23456@U?$cluster_size@$02@cuda@23456@@kernel_launch_properties_v1@712@AEBUcode_location@712@_N@Z -?submit_kernel_direct_without_event_impl@_V1@sycl@@YAXAEBVqueue@12@AEBVnd_range_view@nd_range_view_v1@detail@12@AEAVHostKernelRefBase@612@PEAVDeviceKernelInfo@612@V?$span@$$CBVevent@_V1@sycl@@$0?0@12@AEBU?$PropsHolder@Uwork_group_scratch_size@experimental@oneapi@ext@_V1@sycl@@Ucache_config@2intel@456@Uuse_root_sync_key@23456@Uwork_group_progress_key@23456@Usub_group_progress_key@23456@Uwork_item_progress_key@23456@U?$cluster_size@$00@cuda@23456@U?$cluster_size@$01@cuda@23456@U?$cluster_size@$02@cuda@23456@@kernel_launch_properties_v1@612@AEBUcode_location@612@_N@Z -?submit_with_event_impl@queue@_V1@sycl@@AEBA?AVevent@23@AEBVtype_erased_cgfo_ty@detail@23@AEBVSubmissionInfo@v1@623@AEBUcode_location@623@_N@Z -?submit_without_event_impl@queue@_V1@sycl@@AEBAXAEBVtype_erased_cgfo_ty@detail@23@AEBVSubmissionInfo@v1@523@AEBUcode_location@523@_N@Z -?supportsUSMFill2D@handler@_V1@sycl@@AEAA_NXZ -?supportsUSMMemcpy2D@handler@_V1@sycl@@AEAA_NXZ -?supportsUSMMemset2D@handler@_V1@sycl@@AEAA_NXZ -?supports_importing_handle_type@experimental@oneapi@ext@_V1@sycl@@YA_NW4external_mem_handle_type@12345@AEBVdevice@45@@Z -?sycl_category@_V1@sycl@@YAAEBVerror_category@std@@XZ -?throwIfActionIsCreated@handler@_V1@sycl@@AEAAXXZ -?throwOnKernelParameterMisuse@handler@_V1@sycl@@AEBAXAEBUCompileTimeKernelInfoTy@compile_time_kernel_info_v1@detail@23@@Z -?throw_asynchronous@queue@_V1@sycl@@QEAAXXZ -?unmap@experimental@oneapi@ext@_V1@sycl@@YAXPEBX_KAEBVcontext@45@@Z -?unmap_external_image_memory@experimental@oneapi@ext@_V1@sycl@@YAXUimage_mem_handle@12345@W4image_type@12345@AEBVdevice@45@AEBVcontext@45@@Z -?unmap_external_linear_memory@experimental@oneapi@ext@_V1@sycl@@YAXPEAXAEBVdevice@45@AEBVcontext@45@@Z -?unsampledImageConstructorNotification@detail@_V1@sycl@@YAXPEAX0AEBV?$optional@W4image_target@_V1@sycl@@@std@@W4mode@access@23@PEBXIAEBUcode_location@123@@Z -?unsampledImageConstructorNotification@image_plain@detail@_V1@sycl@@IEAAXAEBUcode_location@234@PEAXPEBXIQEA_KW4image_format@34@@Z -?unsampledImageDestructorNotification@image_plain@detail@_V1@sycl@@IEAAXPEAX@Z -?unset_flag@stream@_V1@sycl@@AEBAXI@Z -?update@executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEBV?$command_graph@$0A@@34567@@Z -?update@executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEBV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@@Z -?update@executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEBVnode@34567@@Z -?updateAccessor@dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@IEAAXPEBVAccessorBaseHost@267@@Z -?updateLocalAccessor@dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@IEAAXV?$range@$02@67@@Z -?updateValue@dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@IEAAXPEBVraw_kernel_arg@34567@_K@Z -?updateValue@dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@IEAAXPEBX_K@Z -?updateWorkGroupMem@dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@IEAAX_K@Z -?use_kernel_bundle@handler@_V1@sycl@@QEAAXAEBV?$kernel_bundle@$01@23@@Z -?verifyReductionProps@detail@_V1@sycl@@YAXAEBVproperty_list@23@@Z -?verifyUSMAllocatorProperties@_V1@sycl@@YAXAEBVproperty_list@12@@Z -?verifyUsedKernelBundleInternal@handler@_V1@sycl@@AEAAXVstring_view@detail@23@@Z -?wait@event@_V1@sycl@@QEAAXXZ -?wait@event@_V1@sycl@@SAXAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@@Z -?wait@queue@_V1@sycl@@QEAAXAEBUcode_location@detail@23@@Z -?waitEvents@detail@_V1@sycl@@YAXV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@@Z -?wait_and_throw@event@_V1@sycl@@QEAAXXZ -?wait_and_throw@event@_V1@sycl@@SAXAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@@Z -?wait_and_throw@queue@_V1@sycl@@QEAAXAEBUcode_location@detail@23@@Z -?wait_and_throw_proxy@queue@_V1@sycl@@QEAAXAEBUcode_location@detail@23@@Z -?wait_non_blocking@pipe_base@experimental@intel@ext@_V1@sycl@@KA_NAEBVevent@56@@Z -?wait_proxy@queue@_V1@sycl@@QEAAXAEBUcode_location@detail@23@@Z -?what@exception@_V1@sycl@@UEBAPEBDXZ -DllMain -__sycl_register_lib -__sycl_unregister_lib + From a5c60900356b2c60d8602b39021f8071d628af92 Mon Sep 17 00:00:00 2001 From: Lorenc Bushi Date: Fri, 5 Dec 2025 14:02:54 -0500 Subject: [PATCH 104/105] Update clang/lib/Sema/SemaSYCL.cpp Co-authored-by: premanandrao --- clang/lib/Sema/SemaSYCL.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 8c05bf0209e82..41182950b4aa8 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -7313,8 +7313,8 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) { O << "template <>\n"; O << "struct " - "sycl::ext::oneapi::experimental::detail::is_struct_with_special_" - "type<"; + "sycl::ext::oneapi::experimental::detail::" + "is_struct_with_special_type<"; Policy.SuppressTagKeyword = true; type.print(O, Policy); O << "> {\n"; From ebce536707ea39edc67bf6ba04105bd995d276cc Mon Sep 17 00:00:00 2001 From: "Bushi, Lorenc" Date: Fri, 5 Dec 2025 11:04:49 -0800 Subject: [PATCH 105/105] Revert "Update Windows ABI symbols" This reverts commit befc6a1b47c0317a10f7013c4b8e3989f7cdd2f9. --- sycl/test/abi/sycl_symbols_windows.dump | 4405 ++++++++++++++++++++++- 1 file changed, 4403 insertions(+), 2 deletions(-) diff --git a/sycl/test/abi/sycl_symbols_windows.dump b/sycl/test/abi/sycl_symbols_windows.dump index 2a4cc8a5d0d69..a07fc7a6ccf89 100644 --- a/sycl/test/abi/sycl_symbols_windows.dump +++ b/sycl/test/abi/sycl_symbols_windows.dump @@ -3,8 +3,4409 @@ # DO NOT EDIT IT MANUALLY. Refer to sycl/doc/developer/ABIPolicyGuide.md for more info. ################################################################################ -# RUN: env LLVM_BIN_PATH=%llvm_build_bin_dir %python %sycl_tools_src_dir/abi_check.py --mode check_symbols --reference %s %llvm_build_bin_dir/sycl.lib +# RUN: env LLVM_BIN_PATH=%llvm_build_bin_dir %python %sycl_tools_src_dir/abi_check.py --mode check_symbols --reference %s %llvm_build_bin_dir/sycl9.dll # REQUIRES: windows # UNSUPPORTED: libcxx - +??$create_sub_devices@$0BAIG@@device@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@_K@Z +??$create_sub_devices@$0BAIH@@device@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV?$vector@_KV?$allocator@_K@std@@@4@@Z +??$create_sub_devices@$0BAII@@device@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@W4partition_affinity_domain@info@12@@Z +??$create_sub_devices@$0BAIJ@@device@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ +??$ext_oneapi_get_info@U?$max_work_item_sizes@$00@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA?AV?$id@$00@12@Vqueue@12@@Z +??$ext_oneapi_get_info@U?$max_work_item_sizes@$01@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA?AV?$id@$01@12@Vqueue@12@@Z +??$ext_oneapi_get_info@U?$max_work_item_sizes@$02@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA?AV?$id@$02@12@Vqueue@12@@Z +??$ext_oneapi_get_info@Umax_num_work_group_sync@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KVqueue@12@@Z +??$ext_oneapi_get_info@Umax_num_work_group_sync@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KVqueue@12@AEBV?$range@$02@12@_K@Z +??$ext_oneapi_get_info@Umax_num_work_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KVqueue@12@AEBV?$range@$00@12@_K@Z +??$ext_oneapi_get_info@Umax_num_work_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KVqueue@12@AEBV?$range@$01@12@_K@Z +??$ext_oneapi_get_info@Umax_num_work_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KVqueue@12@AEBV?$range@$02@12@_K@Z +??$ext_oneapi_get_info@Umax_sub_group_size@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$00@12@@Z +??$ext_oneapi_get_info@Umax_sub_group_size@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$01@12@@Z +??$ext_oneapi_get_info@Umax_sub_group_size@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$02@12@@Z +??$ext_oneapi_get_info@Umax_work_group_size@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KVqueue@12@@Z +??$ext_oneapi_get_info@Unum_sub_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$00@12@@Z +??$ext_oneapi_get_info@Unum_sub_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$01@12@@Z +??$ext_oneapi_get_info@Unum_sub_groups@kernel_queue_specific@info@experimental@oneapi@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBAIVqueue@12@AEBV?$range@$02@12@@Z +??$get_info@Uatomic_fence_order_capabilities@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AV?$vector@W4memory_order@_V1@sycl@@V?$allocator@W4memory_order@_V1@sycl@@@std@@@std@@XZ +??$get_info@Uatomic_fence_scope_capabilities@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AV?$vector@W4memory_scope@_V1@sycl@@V?$allocator@W4memory_scope@_V1@sycl@@@std@@@std@@XZ +??$get_info@Uatomic_memory_order_capabilities@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AV?$vector@W4memory_order@_V1@sycl@@V?$allocator@W4memory_order@_V1@sycl@@@std@@@std@@XZ +??$get_info@Uatomic_memory_scope_capabilities@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AV?$vector@W4memory_scope@_V1@sycl@@V?$allocator@W4memory_scope@_V1@sycl@@@std@@@std@@XZ +??$get_info@Ucommand_execution_status@event@info@_V1@sycl@@@event@_V1@sycl@@QEBA?AW4event_command_status@info@12@XZ +??$get_info@Ucompile_num_sub_groups@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z +??$get_info@Ucompile_sub_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z +??$get_info@Ucompile_work_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA?AV?$range@$02@12@AEBVdevice@12@@Z +??$get_info@Ucontext@queue@info@_V1@sycl@@@queue@_V1@sycl@@QEBA?AVcontext@12@XZ +??$get_info@Udevice@queue@info@_V1@sycl@@@queue@_V1@sycl@@QEBA?AVdevice@12@XZ +??$get_info@Udevices@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ +??$get_info@Uext_codeplay_num_regs@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z +??$get_info@Uglobal_work_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA?AV?$range@$02@12@AEBVdevice@12@@Z +??$get_info@Umax_num_sub_groups@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z +??$get_info@Umax_sub_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@@Z +??$get_info@Umax_sub_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBAIAEBVdevice@12@AEBV?$range@$02@12@@Z +??$get_info@Uplatform@context@info@_V1@sycl@@@context@_V1@sycl@@QEBA?AVplatform@12@XZ +??$get_info@Upreferred_work_group_size_multiple@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KAEBVdevice@12@@Z +??$get_info@Uprivate_mem_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KAEBVdevice@12@@Z +??$get_info@Ureference_count@context@info@_V1@sycl@@@context@_V1@sycl@@QEBAIXZ +??$get_info@Ureference_count@event@info@_V1@sycl@@@event@_V1@sycl@@QEBAIXZ +??$get_info@Ureference_count@queue@info@_V1@sycl@@@queue@_V1@sycl@@QEBAIXZ +??$get_info@Uspill_memory_size@kernel_device_specific@info@intel@ext@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KAEBVdevice@12@@Z +??$get_info@Uwork_group_size@kernel_device_specific@info@_V1@sycl@@@kernel@_V1@sycl@@QEBA_KAEBVdevice@12@@Z +??$get_info_impl@U?$max_work_groups@$00@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$id@$00@12@XZ +??$get_info_impl@U?$max_work_groups@$01@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$id@$01@12@XZ +??$get_info_impl@U?$max_work_groups@$02@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$id@$02@12@XZ +??$get_info_impl@U?$max_work_item_sizes@$00@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$range@$00@12@XZ +??$get_info_impl@U?$max_work_item_sizes@$01@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$range@$01@12@XZ +??$get_info_impl@U?$max_work_item_sizes@$02@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$range@$02@12@XZ +??$get_info_impl@U?$sub_group_progress_capabilities@$01@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@U?$sub_group_progress_capabilities@$02@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@U?$work_group_progress_capabilities@$02@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@U?$work_item_progress_capabilities@$00@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@U?$work_item_progress_capabilities@$01@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@U?$work_item_progress_capabilities@$02@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4forward_progress_guarantee@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Uaddress_bits@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Uarchitecture@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AW4architecture@experimental@oneapi@ext@12@XZ +??$get_info_impl@Uaspects@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4aspect@_V1@sycl@@V?$allocator@W4aspect@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Uatomic64@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uatomic_fence_order_capabilities@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4memory_order@_V1@sycl@@V?$allocator@W4memory_order@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Uatomic_fence_scope_capabilities@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4memory_scope@_V1@sycl@@V?$allocator@W4memory_scope@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Uatomic_memory_order_capabilities@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4memory_order@_V1@sycl@@V?$allocator@W4memory_order@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Uatomic_memory_scope_capabilities@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4memory_scope@_V1@sycl@@V?$allocator@W4memory_scope@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Uattributes@kernel@info@_V1@sycl@@@kernel@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_info_impl@Ubackend_version@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_info_impl@Ubuilt_in_kernel_ids@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@Vkernel_id@_V1@sycl@@V?$allocator@Vkernel_id@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Ubuilt_in_kernels@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@Vstring@detail@_V1@sycl@@V?$allocator@Vstring@detail@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Ucomponent_devices@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Ucomposite_device@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV012@XZ +??$get_info_impl@Ucontext@kernel@info@_V1@sycl@@@kernel@_V1@sycl@@AEBA?AVcontext@12@XZ +??$get_info_impl@Ucurrent_clock_throttle_reasons@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4throttle_reason@intel@ext@_V1@sycl@@V?$allocator@W4throttle_reason@intel@ext@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Udevice_id@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Udevice_type@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AW4device_type@info@12@XZ +??$get_info_impl@Udouble_fp_config@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4fp_config@info@_V1@sycl@@V?$allocator@W4fp_config@info@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Udriver_version@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_info_impl@Uerror_correction_support@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uexecution_capabilities@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4execution_capability@info@_V1@sycl@@V?$allocator@W4execution_capability@info@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Uext_intel_device_info_uuid@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$array@E$0BA@@std@@XZ +??$get_info_impl@Uext_intel_gpu_eu_count@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Uext_intel_gpu_eu_count_per_subslice@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Uext_intel_gpu_eu_simd_width@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Uext_intel_gpu_hw_threads_per_eu@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Uext_intel_gpu_slices@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Uext_intel_gpu_subslices_per_slice@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Uext_intel_max_mem_bandwidth@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Uext_intel_mem_channel@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uext_intel_pci_address@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_info_impl@Uext_oneapi_cuda_cluster_group@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uext_oneapi_max_global_work_groups@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Uext_oneapi_max_work_groups_1d@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$id@$00@12@XZ +??$get_info_impl@Uext_oneapi_max_work_groups_2d@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$id@$01@12@XZ +??$get_info_impl@Uext_oneapi_max_work_groups_3d@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$id@$02@12@XZ +??$get_info_impl@Uext_oneapi_srgb@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uextensions@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@Vstring@detail@_V1@sycl@@V?$allocator@Vstring@detail@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Uextensions@platform@info@_V1@sycl@@@platform@_V1@sycl@@AEBA?AV?$vector@Vstring@detail@_V1@sycl@@V?$allocator@Vstring@detail@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Ufan_speed@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAHXZ +??$get_info_impl@Ufree_memory@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Ufunction_name@kernel@info@_V1@sycl@@@kernel@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_info_impl@Uglobal_mem_cache_line_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Uglobal_mem_cache_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Uglobal_mem_cache_type@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AW4global_mem_cache_type@info@12@XZ +??$get_info_impl@Uglobal_mem_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Ugpu_eu_count@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Ugpu_eu_count_per_subslice@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Ugpu_eu_simd_width@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Ugpu_hw_threads_per_eu@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Ugpu_slices@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Ugpu_subslices_per_slice@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Uhalf_fp_config@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4fp_config@info@_V1@sycl@@V?$allocator@W4fp_config@info@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Uhas_2d_block_io_support@device@info@esimd@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uhost_unified_memory@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uimage2d_max_height@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Uimage2d_max_width@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Uimage3d_max_depth@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Uimage3d_max_height@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Uimage3d_max_width@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Uimage_max_array_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Uimage_max_buffer_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Uimage_row_pitch_align@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Uimage_support@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uis_available@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uis_compiler_available@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uis_endian_little@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uis_linker_available@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Ukernel_kernel_pipe_support@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Ulocal_mem_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Ulocal_mem_type@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AW4local_mem_type@info@12@XZ +??$get_info_impl@Uluid@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$array@E$07@std@@XZ +??$get_info_impl@Umatrix_combinations@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@Ucombination@matrix@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Ucombination@matrix@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Umax_clock_frequency@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Umax_compute_queue_indices@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAHXZ +??$get_info_impl@Umax_compute_units@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Umax_constant_args@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Umax_constant_buffer_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Umax_global_work_groups@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Umax_image_linear_height@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Umax_image_linear_row_pitch@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Umax_image_linear_width@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Umax_mem_alloc_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Umax_mem_bandwidth@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Umax_num_sub_groups@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Umax_parameter_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Umax_power_limit@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAHXZ +??$get_info_impl@Umax_read_image_args@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Umax_registers_per_work_group@device@info@experimental@codeplay@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Umax_samplers@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Umax_work_group_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Umax_work_item_dimensions@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Umax_write_image_args@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Umem_base_addr_align@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Umemory_bus_width@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Umemory_clock_rate@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Umin_power_limit@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAHXZ +??$get_info_impl@Umipmap_max_anisotropy@device@info@experimental@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBAMXZ +??$get_info_impl@Uname@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_info_impl@Uname@platform@info@_V1@sycl@@@platform@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_info_impl@Unative_vector_width_char@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Unative_vector_width_double@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Unative_vector_width_float@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Unative_vector_width_half@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Unative_vector_width_int@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Unative_vector_width_long@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Unative_vector_width_short@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Unode_mask@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Unum_args@kernel@info@_V1@sycl@@@kernel@_V1@sycl@@AEBAIXZ +??$get_info_impl@Unum_compute_units@device@info@oneapi@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Uopencl_c_version@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_info_impl@Uparent_device@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV012@XZ +??$get_info_impl@Upartition_affinity_domains@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4partition_affinity_domain@info@_V1@sycl@@V?$allocator@W4partition_affinity_domain@info@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Upartition_max_sub_devices@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Upartition_properties@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4partition_property@info@_V1@sycl@@V?$allocator@W4partition_property@info@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Upartition_type_affinity_domain@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AW4partition_affinity_domain@info@12@XZ +??$get_info_impl@Upartition_type_property@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AW4partition_property@info@12@XZ +??$get_info_impl@Upci_address@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_info_impl@Uplatform@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVplatform@12@XZ +??$get_info_impl@Upreferred_interop_user_sync@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Upreferred_vector_width_char@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Upreferred_vector_width_double@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Upreferred_vector_width_float@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Upreferred_vector_width_half@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Upreferred_vector_width_int@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Upreferred_vector_width_long@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Upreferred_vector_width_short@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Uprintf_buffer_size@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Uprofile@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_info_impl@Uprofile@platform@info@_V1@sycl@@@platform@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_info_impl@Uprofiling_timer_resolution@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_KXZ +??$get_info_impl@Uqueue_profiling@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Ureference_count@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Ureference_count@kernel@info@_V1@sycl@@@kernel@_V1@sycl@@AEBAIXZ +??$get_info_impl@Usingle_fp_config@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@W4fp_config@info@_V1@sycl@@V?$allocator@W4fp_config@info@_V1@sycl@@@std@@@std@@XZ +??$get_info_impl@Usub_group_independent_forward_progress@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Usub_group_sizes@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$vector@_KV?$allocator@_K@std@@@std@@XZ +??$get_info_impl@Usupports_fusion@device@info@experimental@codeplay@ext@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uusm_device_allocations@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uusm_host_allocations@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uusm_restricted_shared_allocations@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uusm_shared_allocations@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uusm_system_allocations@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA_NXZ +??$get_info_impl@Uuuid@device@info@intel@ext@_V1@sycl@@@device@_V1@sycl@@AEBA?AV?$array@E$0BA@@std@@XZ +??$get_info_impl@Uvendor@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_info_impl@Uvendor@platform@info@_V1@sycl@@@platform@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_info_impl@Uvendor_id@device@info@_V1@sycl@@@device@_V1@sycl@@AEBAIXZ +??$get_info_impl@Uversion@device@info@_V1@sycl@@@device@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_info_impl@Uversion@platform@info@_V1@sycl@@@platform@_V1@sycl@@AEBA?AVstring@detail@12@XZ +??$get_profiling_info@Ucommand_end@event_profiling@info@_V1@sycl@@@event@_V1@sycl@@QEBA_KXZ +??$get_profiling_info@Ucommand_start@event_profiling@info@_V1@sycl@@@event@_V1@sycl@@QEBA_KXZ +??$get_profiling_info@Ucommand_submit@event_profiling@info@_V1@sycl@@@event@_V1@sycl@@QEBA_KXZ +??$import_external_memory@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_mem@01234@U?$external_mem_descriptor@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVdevice@34@AEBVcontext@34@@Z +??$import_external_memory@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_mem@01234@U?$external_mem_descriptor@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVqueue@34@@Z +??$import_external_memory@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_mem@01234@U?$external_mem_descriptor@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVdevice@34@AEBVcontext@34@@Z +??$import_external_memory@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_mem@01234@U?$external_mem_descriptor@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVqueue@34@@Z +??$import_external_semaphore@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_semaphore@01234@U?$external_semaphore_descriptor@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVdevice@34@AEBVcontext@34@@Z +??$import_external_semaphore@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_semaphore@01234@U?$external_semaphore_descriptor@Uresource_fd@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVqueue@34@@Z +??$import_external_semaphore@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_semaphore@01234@U?$external_semaphore_descriptor@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVdevice@34@AEBVcontext@34@@Z +??$import_external_semaphore@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA?AUexternal_semaphore@01234@U?$external_semaphore_descriptor@Uresource_win32_handle@experimental@oneapi@ext@_V1@sycl@@@01234@AEBVqueue@34@@Z +??$is_image_handle_supported@Usampled_image_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA_NAEBUimage_descriptor@01234@W4image_memory_handle_type@01234@AEBVdevice@34@AEBVcontext@34@@Z +??$is_image_handle_supported@Usampled_image_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA_NAEBUimage_descriptor@01234@W4image_memory_handle_type@01234@AEBVqueue@34@@Z +??$is_image_handle_supported@Uunsampled_image_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA_NAEBUimage_descriptor@01234@W4image_memory_handle_type@01234@AEBVdevice@34@AEBVcontext@34@@Z +??$is_image_handle_supported@Uunsampled_image_handle@experimental@oneapi@ext@_V1@sycl@@@experimental@oneapi@ext@_V1@sycl@@YA_NAEBUimage_descriptor@01234@W4image_memory_handle_type@01234@AEBVqueue@34@@Z +??$update_nd_range@$00@node@experimental@oneapi@ext@_V1@sycl@@QEAAXV?$nd_range@$00@45@@Z +??$update_nd_range@$01@node@experimental@oneapi@ext@_V1@sycl@@QEAAXV?$nd_range@$01@45@@Z +??$update_nd_range@$02@node@experimental@oneapi@ext@_V1@sycl@@QEAAXV?$nd_range@$02@45@@Z +??$update_range@$00@node@experimental@oneapi@ext@_V1@sycl@@QEAAXV?$range@$00@45@@Z +??$update_range@$01@node@experimental@oneapi@ext@_V1@sycl@@QEAAXV?$range@$01@45@@Z +??$update_range@$02@node@experimental@oneapi@ext@_V1@sycl@@QEAAXV?$range@$02@45@@Z +??0AccessorBaseHost@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@VAccessorImplHost@detail@_V1@sycl@@@std@@@Z +??0AccessorBaseHost@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z +??0AccessorBaseHost@detail@_V1@sycl@@QEAA@AEBV0123@@Z +??0AccessorBaseHost@detail@_V1@sycl@@QEAA@V?$id@$02@23@V?$range@$02@23@1W4mode@access@23@PEAXHH_K_NAEBVproperty_list@23@@Z +??0AccessorBaseHost@detail@_V1@sycl@@QEAA@V?$id@$02@23@V?$range@$02@23@1W4mode@access@23@PEAXHH_N_K4AEBVproperty_list@23@@Z +??0HostProfilingInfo@detail@_V1@sycl@@QEAA@XZ +??0LocalAccessorBaseHost@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@VLocalAccessorImplHost@detail@_V1@sycl@@@std@@@Z +??0LocalAccessorBaseHost@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z +??0LocalAccessorBaseHost@detail@_V1@sycl@@QEAA@AEBV0123@@Z +??0LocalAccessorBaseHost@detail@_V1@sycl@@QEAA@V?$range@$02@23@HHAEBVproperty_list@23@@Z +??0SYCLCategory@detail@_V1@sycl@@QEAA@XZ +??0SampledImageAccessorBaseHost@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@VSampledImageAccessorImplHost@detail@_V1@sycl@@@std@@@Z +??0SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z +??0SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@AEBV0123@@Z +??0SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@V?$range@$02@23@PEAXHHV?$id@$02@23@W4image_channel_type@23@W4image_channel_order@23@Uimage_sampler@23@AEBVproperty_list@23@@Z +??0SubmissionInfo@v1@detail@_V1@sycl@@QEAA@$$QEAV01234@@Z +??0SubmissionInfo@v1@detail@_V1@sycl@@QEAA@AEBV01234@@Z +??0SubmissionInfo@v1@detail@_V1@sycl@@QEAA@XZ +??0UnsampledImageAccessorBaseHost@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@VUnsampledImageAccessorImplHost@detail@_V1@sycl@@@std@@@Z +??0UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z +??0UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@AEBV0123@@Z +??0UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@V?$range@$02@23@W4mode@access@23@PEAXHHV?$id@$02@23@W4image_channel_type@23@W4image_channel_order@23@AEBVproperty_list@23@@Z +??0accelerator_selector@_V1@sycl@@QEAA@$$QEAV012@@Z +??0accelerator_selector@_V1@sycl@@QEAA@AEBV012@@Z +??0accelerator_selector@_V1@sycl@@QEAA@XZ +??0buffer_plain@detail@_V1@sycl@@IEAA@AEBV?$function@$$A6AXPEAX@Z@std@@_K_KAEBVproperty_list@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@5@_N@Z +??0buffer_plain@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@$$CBX@std@@_K_KAEBVproperty_list@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@5@_N@Z +??0buffer_plain@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@Vbuffer_impl@detail@_V1@sycl@@@std@@@Z +??0buffer_plain@detail@_V1@sycl@@IEAA@PEAX_K1AEBVproperty_list@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@@Z +??0buffer_plain@detail@_V1@sycl@@IEAA@PEBX_K1AEBVproperty_list@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@@Z +??0buffer_plain@detail@_V1@sycl@@IEAA@_K0AEBVproperty_list@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@@Z +??0buffer_plain@detail@_V1@sycl@@IEAA@_KAEBVcontext@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@_NAEBVevent@23@@Z +??0buffer_plain@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z +??0buffer_plain@detail@_V1@sycl@@QEAA@AEBV0123@@Z +??0context@_V1@sycl@@AEAA@V?$shared_ptr@Vcontext_impl@detail@_V1@sycl@@@std@@@Z +??0context@_V1@sycl@@QEAA@$$QEAV012@@Z +??0context@_V1@sycl@@QEAA@AEBV012@@Z +??0context@_V1@sycl@@QEAA@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z +??0context@_V1@sycl@@QEAA@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBVproperty_list@12@@Z +??0context@_V1@sycl@@QEAA@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@V?$function@$$A6AXVexception_list@_V1@sycl@@@Z@4@AEBVproperty_list@12@@Z +??0context@_V1@sycl@@QEAA@AEBVdevice@12@AEBVproperty_list@12@@Z +??0context@_V1@sycl@@QEAA@AEBVdevice@12@V?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z +??0context@_V1@sycl@@QEAA@AEBVplatform@12@AEBVproperty_list@12@@Z +??0context@_V1@sycl@@QEAA@AEBVplatform@12@V?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z +??0context@_V1@sycl@@QEAA@AEBVproperty_list@12@@Z +??0context@_V1@sycl@@QEAA@PEAU_cl_context@@V?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@@Z +??0cpu_selector@_V1@sycl@@QEAA@$$QEAV012@@Z +??0cpu_selector@_V1@sycl@@QEAA@AEBV012@@Z +??0cpu_selector@_V1@sycl@@QEAA@XZ +??0default_selector@_V1@sycl@@QEAA@$$QEAV012@@Z +??0default_selector@_V1@sycl@@QEAA@AEBV012@@Z +??0default_selector@_V1@sycl@@QEAA@XZ +??0device@_V1@sycl@@AEAA@V?$shared_ptr@Vdevice_impl@detail@_V1@sycl@@@std@@@Z +??0device@_V1@sycl@@QEAA@$$QEAV012@@Z +??0device@_V1@sycl@@QEAA@AEBV012@@Z +??0device@_V1@sycl@@QEAA@AEBVdevice_selector@12@@Z +??0device@_V1@sycl@@QEAA@PEAU_cl_device_id@@@Z +??0device@_V1@sycl@@QEAA@XZ +??0device_image_plain@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z +??0device_image_plain@detail@_V1@sycl@@QEAA@$$QEAV?$shared_ptr@Vdevice_image_impl@detail@_V1@sycl@@@std@@@Z +??0device_image_plain@detail@_V1@sycl@@QEAA@AEBV0123@@Z +??0device_image_plain@detail@_V1@sycl@@QEAA@AEBV?$shared_ptr@Vdevice_image_impl@detail@_V1@sycl@@@std@@@Z +??0device_selector@_V1@sycl@@QEAA@AEBV012@@Z +??0device_selector@_V1@sycl@@QEAA@XZ +??0dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV012345@@Z +??0dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV012345@@Z +??0dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV?$command_graph@$0A@@12345@AEBV?$vector@V?$function@$$A6AXAEAVhandler@_V1@sycl@@@Z@std@@V?$allocator@V?$function@$$A6AXAEAVhandler@_V1@sycl@@@Z@std@@@2@@std@@@Z +??0dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV0123456@@Z +??0dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV0123456@@Z +??0dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@V?$range@$02@56@HHAEBVproperty_list@56@@Z +??0dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??0dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV0123456@@Z +??0dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV0123456@@Z +??0dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV?$shared_ptr@Vdynamic_parameter_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@@Z +??0dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??0dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@_KPEBX@Z +??0dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV0123456@@Z +??0dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV0123456@@Z +??0dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??0dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@_K@Z +??0event@_V1@sycl@@AEAA@V?$shared_ptr@Vevent_impl@detail@_V1@sycl@@@std@@@Z +??0event@_V1@sycl@@QEAA@$$QEAV012@@Z +??0event@_V1@sycl@@QEAA@AEBV012@@Z +??0event@_V1@sycl@@QEAA@PEAU_cl_event@@AEBVcontext@12@@Z +??0event@_V1@sycl@@QEAA@XZ +??0exception@_V1@sycl@@IEAA@Verror_code@std@@V?$shared_ptr@Vcontext@_V1@sycl@@@4@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@4@@Z +??0exception@_V1@sycl@@IEAA@Verror_code@std@@V?$shared_ptr@Vcontext@_V1@sycl@@@4@PEBD@Z +??0exception@_V1@sycl@@QEAA@AEBV012@@Z +??0exception@_V1@sycl@@QEAA@HAEBVerror_category@std@@@Z +??0exception@_V1@sycl@@QEAA@HAEBVerror_category@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@4@@Z +??0exception@_V1@sycl@@QEAA@HAEBVerror_category@std@@PEBD@Z +??0exception@_V1@sycl@@QEAA@Vcontext@12@HAEBVerror_category@std@@@Z +??0exception@_V1@sycl@@QEAA@Vcontext@12@HAEBVerror_category@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@5@@Z +??0exception@_V1@sycl@@QEAA@Vcontext@12@HAEBVerror_category@std@@PEBD@Z +??0exception@_V1@sycl@@QEAA@Vcontext@12@Verror_code@std@@@Z +??0exception@_V1@sycl@@QEAA@Vcontext@12@Verror_code@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@5@@Z +??0exception@_V1@sycl@@QEAA@Vcontext@12@Verror_code@std@@PEBD@Z +??0exception@_V1@sycl@@QEAA@Verror_code@std@@@Z +??0exception@_V1@sycl@@QEAA@Verror_code@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@4@@Z +??0exception@_V1@sycl@@QEAA@Verror_code@std@@PEBD@Z +??0exception@_V1@sycl@@QEAA@XZ +??0exception_list@_V1@sycl@@QEAA@$$QEAV012@@Z +??0exception_list@_V1@sycl@@QEAA@AEBV012@@Z +??0exception_list@_V1@sycl@@QEAA@XZ +??0executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAA@AEBV?$shared_ptr@Vgraph_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@AEBVcontext@56@AEBVproperty_list@56@@Z +??0executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV0123456@@Z +??0executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV0123456@@Z +??0filter_selector@ONEAPI@_V1@sycl@@AEAA@Vstring_view@detail@23@@Z +??0filter_selector@ONEAPI@_V1@sycl@@QEAA@$$QEAV0123@@Z +??0filter_selector@ONEAPI@_V1@sycl@@QEAA@AEBV0123@@Z +??0filter_selector@ONEAPI@_V1@sycl@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z +??0filter_selector@oneapi@ext@_V1@sycl@@AEAA@Vstring_view@detail@34@@Z +??0filter_selector@oneapi@ext@_V1@sycl@@QEAA@$$QEAV01234@@Z +??0filter_selector@oneapi@ext@_V1@sycl@@QEAA@AEBV01234@@Z +??0filter_selector@oneapi@ext@_V1@sycl@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z +??0fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAA@$$QEAV012345@@Z +??0fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAA@AEAVqueue@45@@Z +??0fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAA@AEBV012345@@Z +??0gpu_selector@_V1@sycl@@QEAA@$$QEAV012@@Z +??0gpu_selector@_V1@sycl@@QEAA@AEBV012@@Z +??0gpu_selector@_V1@sycl@@QEAA@XZ +??0handler@_V1@sycl@@AEAA@$$QEAV?$unique_ptr@Vhandler_impl@detail@_V1@sycl@@U?$default_delete@Vhandler_impl@detail@_V1@sycl@@@std@@@std@@@Z +??0handler@_V1@sycl@@AEAA@AEAVhandler_impl@detail@12@@Z +??0image_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV012345@@Z +??0image_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z +??0image_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBUimage_descriptor@12345@AEBVqueue@45@@Z +??0image_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV012345@@Z +??0image_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??0image_mem_impl@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBUimage_descriptor@23456@AEBVdevice@56@AEBVcontext@56@@Z +??0image_plain@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@$$CBX@std@@W4image_channel_order@23@W4image_channel_type@23@AEBV?$range@$02@23@AEBV?$range@$01@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@5@EAEBVproperty_list@23@_N@Z +??0image_plain@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@$$CBX@std@@W4image_channel_order@23@W4image_channel_type@23@AEBV?$range@$02@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@5@EAEBVproperty_list@23@_N@Z +??0image_plain@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@$$CBX@std@@W4image_channel_order@23@W4image_channel_type@23@Uimage_sampler@23@AEBV?$range@$02@23@AEBV?$range@$01@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@5@EAEBVproperty_list@23@@Z +??0image_plain@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@$$CBX@std@@W4image_channel_order@23@W4image_channel_type@23@Uimage_sampler@23@AEBV?$range@$02@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@5@EAEBVproperty_list@23@@Z +??0image_plain@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@Vimage_impl@detail@_V1@sycl@@@std@@@Z +??0image_plain@detail@_V1@sycl@@IEAA@PEAU_cl_mem@@AEBVcontext@23@Vevent@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@E@Z +??0image_plain@detail@_V1@sycl@@IEAA@PEAXW4image_channel_order@23@W4image_channel_type@23@AEBV?$range@$02@23@AEBV?$range@$01@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EAEBVproperty_list@23@@Z +??0image_plain@detail@_V1@sycl@@IEAA@PEAXW4image_channel_order@23@W4image_channel_type@23@AEBV?$range@$02@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EAEBVproperty_list@23@@Z +??0image_plain@detail@_V1@sycl@@IEAA@PEBXW4image_channel_order@23@W4image_channel_type@23@AEBV?$range@$02@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EAEBVproperty_list@23@@Z +??0image_plain@detail@_V1@sycl@@IEAA@PEBXW4image_channel_order@23@W4image_channel_type@23@Uimage_sampler@23@AEBV?$range@$02@23@AEBV?$range@$01@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EAEBVproperty_list@23@@Z +??0image_plain@detail@_V1@sycl@@IEAA@PEBXW4image_channel_order@23@W4image_channel_type@23@Uimage_sampler@23@AEBV?$range@$02@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EAEBVproperty_list@23@@Z +??0image_plain@detail@_V1@sycl@@IEAA@W4image_channel_order@23@W4image_channel_type@23@AEBV?$range@$02@23@AEBV?$range@$01@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EAEBVproperty_list@23@@Z +??0image_plain@detail@_V1@sycl@@IEAA@W4image_channel_order@23@W4image_channel_type@23@AEBV?$range@$02@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EAEBVproperty_list@23@@Z +??0image_plain@detail@_V1@sycl@@IEAA@_KAEBVcontext@23@Vevent@23@V?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@EW4image_channel_order@23@W4image_channel_type@23@_NV?$range@$02@23@@Z +??0image_plain@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z +??0image_plain@detail@_V1@sycl@@QEAA@AEBV0123@@Z +??0kernel@_V1@sycl@@AEAA@V?$shared_ptr@Vkernel_impl@detail@_V1@sycl@@@std@@@Z +??0kernel@_V1@sycl@@QEAA@$$QEAV012@@Z +??0kernel@_V1@sycl@@QEAA@AEBV012@@Z +??0kernel@_V1@sycl@@QEAA@PEAU_cl_kernel@@AEBVcontext@12@@Z +??0kernel_bundle_plain@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z +??0kernel_bundle_plain@detail@_V1@sycl@@QEAA@AEBV0123@@Z +??0kernel_bundle_plain@detail@_V1@sycl@@QEAA@AEBV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@@Z +??0kernel_id@_V1@sycl@@AEAA@AEBV?$shared_ptr@Vkernel_id_impl@detail@_V1@sycl@@@std@@@Z +??0kernel_id@_V1@sycl@@AEAA@PEBD@Z +??0kernel_id@_V1@sycl@@QEAA@$$QEAV012@@Z +??0kernel_id@_V1@sycl@@QEAA@AEBV012@@Z +??0memory_pool@experimental@oneapi@ext@_V1@sycl@@IEAA@AEBVcontext@45@AEBVdevice@45@W4alloc@usm@45@Upool_properties@012345@@Z +??0memory_pool@experimental@oneapi@ext@_V1@sycl@@IEAA@V?$shared_ptr@Vmemory_pool_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@@Z +??0memory_pool@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV012345@@Z +??0memory_pool@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV012345@@Z +??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAA@AEBV?$shared_ptr@Vgraph_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@@Z +??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV0123456@@Z +??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV0123456@@Z +??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBVcontext@56@AEBVdevice@56@AEBVproperty_list@56@@Z +??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBVdevice@56@AEBVproperty_list@56@@Z +??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBVqueue@56@AEBVproperty_list@56@@Z +??0node@experimental@oneapi@ext@_V1@sycl@@AEAA@AEBV?$shared_ptr@Vnode_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@@Z +??0node@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV012345@@Z +??0node@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV012345@@Z +??0physical_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV012345@@Z +??0physical_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV012345@@Z +??0physical_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBVdevice@45@AEBVcontext@45@_K@Z +??0physical_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBVqueue@45@_K@Z +??0platform@_V1@sycl@@AEAA@AEBVdevice@12@@Z +??0platform@_V1@sycl@@AEAA@V?$shared_ptr@Vplatform_impl@detail@_V1@sycl@@@std@@@Z +??0platform@_V1@sycl@@QEAA@$$QEAV012@@Z +??0platform@_V1@sycl@@QEAA@AEBV012@@Z +??0platform@_V1@sycl@@QEAA@AEBVdevice_selector@12@@Z +??0platform@_V1@sycl@@QEAA@PEAU_cl_platform_id@@@Z +??0platform@_V1@sycl@@QEAA@XZ +??0queue@_V1@sycl@@AEAA@V?$shared_ptr@Vqueue_impl@detail@_V1@sycl@@@std@@@Z +??0queue@_V1@sycl@@QEAA@$$QEAV012@@Z +??0queue@_V1@sycl@@QEAA@AEBV012@@Z +??0queue@_V1@sycl@@QEAA@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z +??0queue@_V1@sycl@@QEAA@AEBVcontext@12@AEBVdevice@12@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z +??0queue@_V1@sycl@@QEAA@AEBVcontext@12@AEBVdevice@12@AEBVproperty_list@12@@Z +??0queue@_V1@sycl@@QEAA@AEBVcontext@12@AEBVdevice_selector@12@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z +??0queue@_V1@sycl@@QEAA@AEBVcontext@12@AEBVdevice_selector@12@AEBVproperty_list@12@@Z +??0queue@_V1@sycl@@QEAA@AEBVdevice@12@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z +??0queue@_V1@sycl@@QEAA@AEBVdevice@12@AEBVproperty_list@12@@Z +??0queue@_V1@sycl@@QEAA@AEBVdevice_selector@12@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@AEBVproperty_list@12@@Z +??0queue@_V1@sycl@@QEAA@AEBVdevice_selector@12@AEBVproperty_list@12@@Z +??0queue@_V1@sycl@@QEAA@AEBVproperty_list@12@@Z +??0queue@_V1@sycl@@QEAA@PEAU_cl_command_queue@@AEBVcontext@12@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@@Z +??0sampler@_V1@sycl@@QEAA@$$QEAV012@@Z +??0sampler@_V1@sycl@@QEAA@AEBV012@@Z +??0sampler@_V1@sycl@@QEAA@PEAU_cl_sampler@@AEBVcontext@12@@Z +??0sampler@_V1@sycl@@QEAA@W4coordinate_normalization_mode@12@W4addressing_mode@12@W4filtering_mode@12@AEBVproperty_list@12@@Z +??0stream@_V1@sycl@@AEAA@V?$shared_ptr@Vstream_impl@detail@_V1@sycl@@@std@@V?$accessor@D$00$0EAC@$0HNO@$0A@V?$accessor_property_list@$$V@oneapi@ext@_V1@sycl@@@12@V?$accessor@I$00$0EAF@$0HNO@$0A@V?$accessor_property_list@$$V@oneapi@ext@_V1@sycl@@@12@1@Z +??0stream@_V1@sycl@@QEAA@$$QEAV012@@Z +??0stream@_V1@sycl@@QEAA@AEBV012@@Z +??0stream@_V1@sycl@@QEAA@_K0AEAVhandler@12@@Z +??0stream@_V1@sycl@@QEAA@_K0AEAVhandler@12@AEBVproperty_list@12@@Z +??0tls_code_loc_t@detail@_V1@sycl@@QEAA@AEBUcode_location@123@@Z +??0tls_code_loc_t@detail@_V1@sycl@@QEAA@XZ +??1AccessorBaseHost@detail@_V1@sycl@@QEAA@XZ +??1LocalAccessorBaseHost@detail@_V1@sycl@@QEAA@XZ +??1SYCLCategory@detail@_V1@sycl@@UEAA@XZ +??1SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@XZ +??1SubmissionInfo@v1@detail@_V1@sycl@@QEAA@XZ +??1UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAA@XZ +??1accelerator_selector@_V1@sycl@@UEAA@XZ +??1buffer_plain@detail@_V1@sycl@@QEAA@XZ +??1context@_V1@sycl@@QEAA@XZ +??1cpu_selector@_V1@sycl@@UEAA@XZ +??1default_selector@_V1@sycl@@UEAA@XZ +??1device@_V1@sycl@@QEAA@XZ +??1device_image_plain@detail@_V1@sycl@@QEAA@XZ +??1device_selector@_V1@sycl@@UEAA@XZ +??1dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??1dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??1dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??1dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??1event@_V1@sycl@@QEAA@XZ +??1exception@_V1@sycl@@UEAA@XZ +??1exception_list@_V1@sycl@@QEAA@XZ +??1executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??1filter_selector@ONEAPI@_V1@sycl@@UEAA@XZ +??1filter_selector@oneapi@ext@_V1@sycl@@UEAA@XZ +??1fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAA@XZ +??1gpu_selector@_V1@sycl@@UEAA@XZ +??1handler@_V1@sycl@@AEAA@XZ +??1image_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??1image_mem_impl@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??1image_plain@detail@_V1@sycl@@QEAA@XZ +??1kernel@_V1@sycl@@QEAA@XZ +??1kernel_bundle_plain@detail@_V1@sycl@@QEAA@XZ +??1kernel_id@_V1@sycl@@QEAA@XZ +??1memory_pool@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??1modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??1node@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??1physical_mem@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??1platform@_V1@sycl@@QEAA@XZ +??1queue@_V1@sycl@@QEAA@XZ +??1sampler@_V1@sycl@@QEAA@XZ +??1stream@_V1@sycl@@QEAA@XZ +??1tls_code_loc_t@detail@_V1@sycl@@QEAA@XZ +??4?$OwnerLessBase@Vcontext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4?$OwnerLessBase@Vcontext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4?$OwnerLessBase@Vdevice@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4?$OwnerLessBase@Vdevice@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4?$OwnerLessBase@Vevent@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4?$OwnerLessBase@Vevent@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4?$OwnerLessBase@Vexecutable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4?$OwnerLessBase@Vexecutable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4?$OwnerLessBase@Vkernel@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4?$OwnerLessBase@Vkernel@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4?$OwnerLessBase@Vkernel_id@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4?$OwnerLessBase@Vkernel_id@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4?$OwnerLessBase@Vmodifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4?$OwnerLessBase@Vmodifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4?$OwnerLessBase@Vphysical_mem@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4?$OwnerLessBase@Vphysical_mem@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4?$OwnerLessBase@Vplatform@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4?$OwnerLessBase@Vplatform@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4?$OwnerLessBase@Vqueue@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4?$OwnerLessBase@Vqueue@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4?$OwnerLessBase@Vstream@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4?$OwnerLessBase@Vstream@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4?$hash@Vdynamic_command_group@experimental@oneapi@ext@_V1@sycl@@@std@@QEAAAEAU01@$$QEAU01@@Z +??4?$hash@Vdynamic_command_group@experimental@oneapi@ext@_V1@sycl@@@std@@QEAAAEAU01@AEBU01@@Z +??4?$hash@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@QEAAAEAU01@$$QEAU01@@Z +??4?$hash@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@QEAAAEAU01@AEBU01@@Z +??4?$hash@Vqueue@_V1@sycl@@@std@@QEAAAEAU01@$$QEAU01@@Z +??4?$hash@Vqueue@_V1@sycl@@@std@@QEAAAEAU01@AEBU01@@Z +??4AccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4AccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4HostProfilingInfo@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4HostProfilingInfo@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4LocalAccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4LocalAccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4OSUtil@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4OSUtil@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4SubmissionInfo@v1@detail@_V1@sycl@@QEAAAEAV01234@$$QEAV01234@@Z +??4SubmissionInfo@v1@detail@_V1@sycl@@QEAAAEAV01234@AEBV01234@@Z +??4UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4accelerator_selector@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z +??4accelerator_selector@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4buffer_plain@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4buffer_plain@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4context@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z +??4context@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4cpu_selector@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z +??4cpu_selector@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4default_selector@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z +??4default_selector@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4device@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z +??4device@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4device_image_plain@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4device_image_plain@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4device_selector@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@$$QEAV012345@@Z +??4dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@AEBV012345@@Z +??4dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@$$QEAV0123456@@Z +??4dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@AEBV0123456@@Z +??4dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@$$QEAV0123456@@Z +??4dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@AEBV0123456@@Z +??4dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@$$QEAV0123456@@Z +??4dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@AEBV0123456@@Z +??4event@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z +??4event@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4exception@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4exception_list@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z +??4exception_list@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@$$QEAV0123456@@Z +??4executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@AEBV0123456@@Z +??4filter_selector@ONEAPI@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4filter_selector@ONEAPI@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4filter_selector@oneapi@ext@_V1@sycl@@QEAAAEAV01234@$$QEAV01234@@Z +??4filter_selector@oneapi@ext@_V1@sycl@@QEAAAEAV01234@AEBV01234@@Z +??4fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAAAEAV012345@$$QEAV012345@@Z +??4fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAAAEAV012345@AEBV012345@@Z +??4gpu_selector@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z +??4gpu_selector@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4image_mem@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@$$QEAV012345@@Z +??4image_mem@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@AEBV012345@@Z +??4image_plain@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4image_plain@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4kernel@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z +??4kernel@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4kernel_bundle_plain@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z +??4kernel_bundle_plain@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z +??4kernel_id@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z +??4kernel_id@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4memory_pool@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@$$QEAV012345@@Z +??4memory_pool@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@AEBV012345@@Z +??4modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@$$QEAV0123456@@Z +??4modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@AEBV0123456@@Z +??4node@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@$$QEAV012345@@Z +??4node@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@AEBV012345@@Z +??4physical_mem@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@$$QEAV012345@@Z +??4physical_mem@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@AEBV012345@@Z +??4platform@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z +??4platform@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4queue@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z +??4queue@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4sampler@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z +??4sampler@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??4stream@_V1@sycl@@QEAAAEAV012@$$QEAV012@@Z +??4stream@_V1@sycl@@QEAAAEAV012@AEBV012@@Z +??8context@_V1@sycl@@QEBA_NAEBV012@@Z +??8device@_V1@sycl@@QEBA_NAEBV012@@Z +??8device_image_plain@detail@_V1@sycl@@QEBA_NAEBV0123@@Z +??8event@_V1@sycl@@QEBA_NAEBV012@@Z +??8image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA_NAEBV012345@@Z +??8kernel@_V1@sycl@@QEBA_NAEBV012@@Z +??8kernel_bundle_plain@detail@_V1@sycl@@QEBA_NAEBV0123@@Z +??8kernel_id@_V1@sycl@@QEBA_NAEBV012@@Z +??8memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA_NAEBV012345@@Z +??8physical_mem@experimental@oneapi@ext@_V1@sycl@@QEBA_NAEBV012345@@Z +??8platform@_V1@sycl@@QEBA_NAEBV012@@Z +??8queue@_V1@sycl@@QEBA_NAEBV012@@Z +??8sampler@_V1@sycl@@QEBA_NAEBV012@@Z +??8stream@_V1@sycl@@QEBA_NAEBV012@@Z +??9context@_V1@sycl@@QEBA_NAEBV012@@Z +??9device@_V1@sycl@@QEBA_NAEBV012@@Z +??9device_image_plain@detail@_V1@sycl@@QEBA_NAEBV0123@@Z +??9event@_V1@sycl@@QEBA_NAEBV012@@Z +??9image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA_NAEBV012345@@Z +??9kernel@_V1@sycl@@QEBA_NAEBV012@@Z +??9kernel_bundle_plain@detail@_V1@sycl@@QEBA_NAEBV0123@@Z +??9kernel_id@_V1@sycl@@QEBA_NAEBV012@@Z +??9memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA_NAEBV012345@@Z +??9physical_mem@experimental@oneapi@ext@_V1@sycl@@QEBA_NAEBV012345@@Z +??9platform@_V1@sycl@@QEBA_NAEBV012@@Z +??9queue@_V1@sycl@@QEBA_NAEBV012@@Z +??9sampler@_V1@sycl@@QEBA_NAEBV012@@Z +??9stream@_V1@sycl@@QEBA_NAEBV012@@Z +??R?$hash@Vdynamic_command_group@experimental@oneapi@ext@_V1@sycl@@@std@@QEBA_KAEBVdynamic_command_group@experimental@oneapi@ext@_V1@sycl@@@Z +??R?$hash@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@QEBA_KAEBVnode@experimental@oneapi@ext@_V1@sycl@@@Z +??R?$hash@Vqueue@_V1@sycl@@@std@@QEBA_KAEBVqueue@_V1@sycl@@@Z +??Raccelerator_selector@_V1@sycl@@UEBAHAEBVdevice@12@@Z +??Rcpu_selector@_V1@sycl@@UEBAHAEBVdevice@12@@Z +??Rdefault_selector@_V1@sycl@@UEBAHAEBVdevice@12@@Z +??Rfilter_selector@ONEAPI@_V1@sycl@@UEBAHAEBVdevice@23@@Z +??Rfilter_selector@oneapi@ext@_V1@sycl@@UEBAHAEBVdevice@34@@Z +??Rgpu_selector@_V1@sycl@@UEBAHAEBVdevice@12@@Z +??_7SYCLCategory@detail@_V1@sycl@@6B@ +??_7accelerator_selector@_V1@sycl@@6B@ +??_7cpu_selector@_V1@sycl@@6B@ +??_7default_selector@_V1@sycl@@6B@ +??_7device_selector@_V1@sycl@@6B@ +??_7exception@_V1@sycl@@6B@ +??_7filter_selector@ONEAPI@_V1@sycl@@6B@ +??_7filter_selector@oneapi@ext@_V1@sycl@@6B@ +??_7gpu_selector@_V1@sycl@@6B@ +??_8exception@_V1@sycl@@7B@ +??_Dexception@_V1@sycl@@QEAAXXZ +??_Fcontext@_V1@sycl@@QEAAXXZ +??_Fqueue@_V1@sycl@@QEAAXXZ +?AccessTargetMask@handler@_V1@sycl@@0HB +?Clear@exception_list@_V1@sycl@@AEAAXXZ +?DirSep@OSUtil@detail@_V1@sycl@@2QEBDEB +?DisableRangeRounding@handler@_V1@sycl@@AEAA_NXZ +?EventMode@SubmissionInfo@v1@detail@_V1@sycl@@QEAAAEAW4event_mode_enum@experimental@oneapi@ext@45@XZ +?EventMode@SubmissionInfo@v1@detail@_V1@sycl@@QEBAAEBW4event_mode_enum@experimental@oneapi@ext@45@XZ +?GDBMethodsAnchor@SampledImageAccessorBaseHost@detail@_V1@sycl@@IEAAXXZ +?GDBMethodsAnchor@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@IEAAXXZ +?GetRangeRoundingSettings@handler@_V1@sycl@@AEAAXAEA_K00@Z +?HasAssociatedAccessor@handler@_V1@sycl@@AEBA_NPEAVAccessorImplHost@detail@23@W4target@access@23@@Z +?PushBack@exception_list@_V1@sycl@@AEAAX$$QEAVexception_ptr@std@@@Z +?PushBack@exception_list@_V1@sycl@@AEAAXAEBVexception_ptr@std@@@Z +?RangeRoundingTrace@handler@_V1@sycl@@AEAA_NXZ +?SetHostTask@handler@_V1@sycl@@AEAAXV?$function@$$A6AXVinterop_handle@_V1@sycl@@@Z@std@@@Z +?SetHostTask@handler@_V1@sycl@@AEAAXV?$function@$$A6AXXZ@std@@@Z +?SetKernelLaunchpropertiesIfNotEmpty@handler@_V1@sycl@@AEAAXAEBU?$PropsHolder@Uwork_group_scratch_size@experimental@oneapi@ext@_V1@sycl@@Ucache_config@2intel@456@Uuse_root_sync_key@23456@Uwork_group_progress_key@23456@Usub_group_progress_key@23456@Uwork_item_progress_key@23456@U?$cluster_size@$00@cuda@23456@U?$cluster_size@$01@cuda@23456@U?$cluster_size@$02@cuda@23456@@kernel_launch_properties_v1@detail@23@@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z +?__abs_diff_impl@_V1@sycl@@YACCC@Z +?__abs_diff_impl@_V1@sycl@@YADDD@Z +?__abs_diff_impl@_V1@sycl@@YAEEE@Z +?__abs_diff_impl@_V1@sycl@@YAFFF@Z +?__abs_diff_impl@_V1@sycl@@YAGGG@Z +?__abs_diff_impl@_V1@sycl@@YAHHH@Z +?__abs_diff_impl@_V1@sycl@@YAIII@Z +?__abs_diff_impl@_V1@sycl@@YAJJJ@Z +?__abs_diff_impl@_V1@sycl@@YAKKK@Z +?__abs_diff_impl@_V1@sycl@@YA_J_J0@Z +?__abs_diff_impl@_V1@sycl@@YA_K_K0@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@@Z +?__abs_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@@Z +?__abs_impl@_V1@sycl@@YACC@Z +?__abs_impl@_V1@sycl@@YADD@Z +?__abs_impl@_V1@sycl@@YAEE@Z +?__abs_impl@_V1@sycl@@YAFF@Z +?__abs_impl@_V1@sycl@@YAGG@Z +?__abs_impl@_V1@sycl@@YAHH@Z +?__abs_impl@_V1@sycl@@YAII@Z +?__abs_impl@_V1@sycl@@YAJJ@Z +?__abs_impl@_V1@sycl@@YAKK@Z +?__abs_impl@_V1@sycl@@YA_J_J@Z +?__abs_impl@_V1@sycl@@YA_K_K@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__acos_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__acos_impl@_V1@sycl@@YAMM@Z +?__acos_impl@_V1@sycl@@YANN@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__acosh_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__acosh_impl@_V1@sycl@@YAMM@Z +?__acosh_impl@_V1@sycl@@YANN@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__acospi_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__acospi_impl@_V1@sycl@@YAMM@Z +?__acospi_impl@_V1@sycl@@YANN@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z +?__add_sat_impl@_V1@sycl@@YACCC@Z +?__add_sat_impl@_V1@sycl@@YADDD@Z +?__add_sat_impl@_V1@sycl@@YAEEE@Z +?__add_sat_impl@_V1@sycl@@YAFFF@Z +?__add_sat_impl@_V1@sycl@@YAGGG@Z +?__add_sat_impl@_V1@sycl@@YAHHH@Z +?__add_sat_impl@_V1@sycl@@YAIII@Z +?__add_sat_impl@_V1@sycl@@YAJJJ@Z +?__add_sat_impl@_V1@sycl@@YAKKK@Z +?__add_sat_impl@_V1@sycl@@YA_J_J0@Z +?__add_sat_impl@_V1@sycl@@YA_K_K0@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__asin_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__asin_impl@_V1@sycl@@YAMM@Z +?__asin_impl@_V1@sycl@@YANN@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__asinh_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__asinh_impl@_V1@sycl@@YAMM@Z +?__asinh_impl@_V1@sycl@@YANN@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__asinpi_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__asinpi_impl@_V1@sycl@@YAMM@Z +?__asinpi_impl@_V1@sycl@@YANN@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__atan2_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__atan2_impl@_V1@sycl@@YAMMM@Z +?__atan2_impl@_V1@sycl@@YANNN@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__atan2pi_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__atan2pi_impl@_V1@sycl@@YAMMM@Z +?__atan2pi_impl@_V1@sycl@@YANNN@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__atan_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__atan_impl@_V1@sycl@@YAMM@Z +?__atan_impl@_V1@sycl@@YANN@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__atanh_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__atanh_impl@_V1@sycl@@YAMM@Z +?__atanh_impl@_V1@sycl@@YANN@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__atanpi_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__atanpi_impl@_V1@sycl@@YAMM@Z +?__atanpi_impl@_V1@sycl@@YANN@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@00@Z +?__bitselect_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@00@Z +?__bitselect_impl@_V1@sycl@@YACCCC@Z +?__bitselect_impl@_V1@sycl@@YADDDD@Z +?__bitselect_impl@_V1@sycl@@YAEEEE@Z +?__bitselect_impl@_V1@sycl@@YAFFFF@Z +?__bitselect_impl@_V1@sycl@@YAGGGG@Z +?__bitselect_impl@_V1@sycl@@YAHHHH@Z +?__bitselect_impl@_V1@sycl@@YAIIII@Z +?__bitselect_impl@_V1@sycl@@YAJJJJ@Z +?__bitselect_impl@_V1@sycl@@YAKKKK@Z +?__bitselect_impl@_V1@sycl@@YAMMMM@Z +?__bitselect_impl@_V1@sycl@@YANNNN@Z +?__bitselect_impl@_V1@sycl@@YA_J_J00@Z +?__bitselect_impl@_V1@sycl@@YA_K_K00@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__cbrt_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__cbrt_impl@_V1@sycl@@YAMM@Z +?__cbrt_impl@_V1@sycl@@YANN@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__ceil_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__ceil_impl@_V1@sycl@@YAMM@Z +?__ceil_impl@_V1@sycl@@YANN@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@00@Z +?__clamp_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@00@Z +?__clamp_impl@_V1@sycl@@YACCCC@Z +?__clamp_impl@_V1@sycl@@YADDDD@Z +?__clamp_impl@_V1@sycl@@YAEEEE@Z +?__clamp_impl@_V1@sycl@@YAFFFF@Z +?__clamp_impl@_V1@sycl@@YAGGGG@Z +?__clamp_impl@_V1@sycl@@YAHHHH@Z +?__clamp_impl@_V1@sycl@@YAIIII@Z +?__clamp_impl@_V1@sycl@@YAJJJJ@Z +?__clamp_impl@_V1@sycl@@YAKKKK@Z +?__clamp_impl@_V1@sycl@@YAMMMM@Z +?__clamp_impl@_V1@sycl@@YANNNN@Z +?__clamp_impl@_V1@sycl@@YA_J_J00@Z +?__clamp_impl@_V1@sycl@@YA_K_K00@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@@Z +?__clz_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@@Z +?__clz_impl@_V1@sycl@@YACC@Z +?__clz_impl@_V1@sycl@@YADD@Z +?__clz_impl@_V1@sycl@@YAEE@Z +?__clz_impl@_V1@sycl@@YAFF@Z +?__clz_impl@_V1@sycl@@YAGG@Z +?__clz_impl@_V1@sycl@@YAHH@Z +?__clz_impl@_V1@sycl@@YAII@Z +?__clz_impl@_V1@sycl@@YAJJ@Z +?__clz_impl@_V1@sycl@@YAKK@Z +?__clz_impl@_V1@sycl@@YA_J_J@Z +?__clz_impl@_V1@sycl@@YA_K_K@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__copysign_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__copysign_impl@_V1@sycl@@YAMMM@Z +?__copysign_impl@_V1@sycl@@YANNN@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__cos_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__cos_impl@_V1@sycl@@YAMM@Z +?__cos_impl@_V1@sycl@@YANN@Z +?__cos_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__cos_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__cos_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__cos_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__cos_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__cos_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__cos_impl@half_precision@_V1@sycl@@YAMM@Z +?__cos_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__cos_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__cos_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__cos_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__cos_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__cos_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__cos_impl@native@_V1@sycl@@YAMM@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__cosh_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__cosh_impl@_V1@sycl@@YAMM@Z +?__cosh_impl@_V1@sycl@@YANN@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__cospi_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__cospi_impl@_V1@sycl@@YAMM@Z +?__cospi_impl@_V1@sycl@@YANN@Z +?__cross_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__cross_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__cross_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__cross_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__cross_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__cross_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@@Z +?__ctz_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@@Z +?__ctz_impl@_V1@sycl@@YACC@Z +?__ctz_impl@_V1@sycl@@YADD@Z +?__ctz_impl@_V1@sycl@@YAEE@Z +?__ctz_impl@_V1@sycl@@YAFF@Z +?__ctz_impl@_V1@sycl@@YAGG@Z +?__ctz_impl@_V1@sycl@@YAHH@Z +?__ctz_impl@_V1@sycl@@YAII@Z +?__ctz_impl@_V1@sycl@@YAJJ@Z +?__ctz_impl@_V1@sycl@@YAKK@Z +?__ctz_impl@_V1@sycl@@YA_J_J@Z +?__ctz_impl@_V1@sycl@@YA_K_K@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__degrees_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__degrees_impl@_V1@sycl@@YAMM@Z +?__degrees_impl@_V1@sycl@@YANN@Z +?__distance_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__distance_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z +?__distance_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z +?__distance_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z +?__distance_impl@_V1@sycl@@YAMMM@Z +?__distance_impl@_V1@sycl@@YAMV?$vec@M$01@12@0@Z +?__distance_impl@_V1@sycl@@YAMV?$vec@M$02@12@0@Z +?__distance_impl@_V1@sycl@@YAMV?$vec@M$03@12@0@Z +?__distance_impl@_V1@sycl@@YANNN@Z +?__distance_impl@_V1@sycl@@YANV?$vec@N$01@12@0@Z +?__distance_impl@_V1@sycl@@YANV?$vec@N$02@12@0@Z +?__distance_impl@_V1@sycl@@YANV?$vec@N$03@12@0@Z +?__divide_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@0@Z +?__divide_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@0@Z +?__divide_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@0@Z +?__divide_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@0@Z +?__divide_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@0@Z +?__divide_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@0@Z +?__divide_impl@half_precision@_V1@sycl@@YAMMM@Z +?__divide_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@0@Z +?__divide_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@0@Z +?__divide_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@0@Z +?__divide_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@0@Z +?__divide_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@0@Z +?__divide_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@0@Z +?__divide_impl@native@_V1@sycl@@YAMMM@Z +?__dot_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__dot_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z +?__dot_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z +?__dot_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z +?__dot_impl@_V1@sycl@@YAMMM@Z +?__dot_impl@_V1@sycl@@YAMV?$vec@M$01@12@0@Z +?__dot_impl@_V1@sycl@@YAMV?$vec@M$02@12@0@Z +?__dot_impl@_V1@sycl@@YAMV?$vec@M$03@12@0@Z +?__dot_impl@_V1@sycl@@YANNN@Z +?__dot_impl@_V1@sycl@@YANV?$vec@N$01@12@0@Z +?__dot_impl@_V1@sycl@@YANV?$vec@N$02@12@0@Z +?__dot_impl@_V1@sycl@@YANV?$vec@N$03@12@0@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__erf_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__erf_impl@_V1@sycl@@YAMM@Z +?__erf_impl@_V1@sycl@@YANN@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__erfc_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__erfc_impl@_V1@sycl@@YAMM@Z +?__erfc_impl@_V1@sycl@@YANN@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__exp10_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__exp10_impl@_V1@sycl@@YAMM@Z +?__exp10_impl@_V1@sycl@@YANN@Z +?__exp10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__exp10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__exp10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__exp10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__exp10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__exp10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__exp10_impl@half_precision@_V1@sycl@@YAMM@Z +?__exp10_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__exp10_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__exp10_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__exp10_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__exp10_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__exp10_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__exp10_impl@native@_V1@sycl@@YAMM@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__exp2_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__exp2_impl@_V1@sycl@@YAMM@Z +?__exp2_impl@_V1@sycl@@YANN@Z +?__exp2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__exp2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__exp2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__exp2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__exp2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__exp2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__exp2_impl@half_precision@_V1@sycl@@YAMM@Z +?__exp2_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__exp2_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__exp2_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__exp2_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__exp2_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__exp2_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__exp2_impl@native@_V1@sycl@@YAMM@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__exp_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__exp_impl@_V1@sycl@@YAMM@Z +?__exp_impl@_V1@sycl@@YANN@Z +?__exp_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__exp_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__exp_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__exp_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__exp_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__exp_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__exp_impl@half_precision@_V1@sycl@@YAMM@Z +?__exp_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__exp_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__exp_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__exp_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__exp_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__exp_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__exp_impl@native@_V1@sycl@@YAMM@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__expm1_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__expm1_impl@_V1@sycl@@YAMM@Z +?__expm1_impl@_V1@sycl@@YANN@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__fabs_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__fabs_impl@_V1@sycl@@YAMM@Z +?__fabs_impl@_V1@sycl@@YANN@Z +?__fast_distance_impl@_V1@sycl@@YAMMM@Z +?__fast_distance_impl@_V1@sycl@@YAMV?$vec@M$01@12@0@Z +?__fast_distance_impl@_V1@sycl@@YAMV?$vec@M$02@12@0@Z +?__fast_distance_impl@_V1@sycl@@YAMV?$vec@M$03@12@0@Z +?__fast_length_impl@_V1@sycl@@YAMM@Z +?__fast_length_impl@_V1@sycl@@YAMV?$vec@M$01@12@@Z +?__fast_length_impl@_V1@sycl@@YAMV?$vec@M$02@12@@Z +?__fast_length_impl@_V1@sycl@@YAMV?$vec@M$03@12@@Z +?__fast_normalize_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__fast_normalize_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__fast_normalize_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__fast_normalize_impl@_V1@sycl@@YAMM@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__fdim_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__fdim_impl@_V1@sycl@@YAMMM@Z +?__fdim_impl@_V1@sycl@@YANNN@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__floor_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__floor_impl@_V1@sycl@@YAMM@Z +?__floor_impl@_V1@sycl@@YANN@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@00@Z +?__fma_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@00@Z +?__fma_impl@_V1@sycl@@YAMMMM@Z +?__fma_impl@_V1@sycl@@YANNNN@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__fmax_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__fmax_impl@_V1@sycl@@YAMMM@Z +?__fmax_impl@_V1@sycl@@YANNN@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__fmin_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__fmin_impl@_V1@sycl@@YAMMM@Z +?__fmin_impl@_V1@sycl@@YANNN@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__fmod_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__fmod_impl@_V1@sycl@@YAMMM@Z +?__fmod_impl@_V1@sycl@@YANNN@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z +?__hadd_impl@_V1@sycl@@YACCC@Z +?__hadd_impl@_V1@sycl@@YADDD@Z +?__hadd_impl@_V1@sycl@@YAEEE@Z +?__hadd_impl@_V1@sycl@@YAFFF@Z +?__hadd_impl@_V1@sycl@@YAGGG@Z +?__hadd_impl@_V1@sycl@@YAHHH@Z +?__hadd_impl@_V1@sycl@@YAIII@Z +?__hadd_impl@_V1@sycl@@YAJJJ@Z +?__hadd_impl@_V1@sycl@@YAKKK@Z +?__hadd_impl@_V1@sycl@@YA_J_J0@Z +?__hadd_impl@_V1@sycl@@YA_K_K0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__hypot_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__hypot_impl@_V1@sycl@@YAMMM@Z +?__hypot_impl@_V1@sycl@@YANNN@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@N$00@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@N$01@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@N$02@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@N$03@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@N$07@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@N$0BA@@12@@Z +?__ilogb_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@@Z +?__ilogb_impl@_V1@sycl@@YAHM@Z +?__ilogb_impl@_V1@sycl@@YAHN@Z +?__ilogb_impl@_V1@sycl@@YAHVhalf@half_impl@detail@12@@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z +?__isequal_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z +?__isequal_impl@_V1@sycl@@YA_NMM@Z +?__isequal_impl@_V1@sycl@@YA_NNN@Z +?__isequal_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@@Z +?__isfinite_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@@Z +?__isfinite_impl@_V1@sycl@@YA_NM@Z +?__isfinite_impl@_V1@sycl@@YA_NN@Z +?__isfinite_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z +?__isgreater_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z +?__isgreater_impl@_V1@sycl@@YA_NMM@Z +?__isgreater_impl@_V1@sycl@@YA_NNN@Z +?__isgreater_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z +?__isgreaterequal_impl@_V1@sycl@@YA_NMM@Z +?__isgreaterequal_impl@_V1@sycl@@YA_NNN@Z +?__isgreaterequal_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@@Z +?__isinf_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@@Z +?__isinf_impl@_V1@sycl@@YA_NM@Z +?__isinf_impl@_V1@sycl@@YA_NN@Z +?__isinf_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z +?__isless_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z +?__isless_impl@_V1@sycl@@YA_NMM@Z +?__isless_impl@_V1@sycl@@YA_NNN@Z +?__isless_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z +?__islessequal_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z +?__islessequal_impl@_V1@sycl@@YA_NMM@Z +?__islessequal_impl@_V1@sycl@@YA_NNN@Z +?__islessequal_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z +?__islessgreater_impl@_V1@sycl@@YA_NMM@Z +?__islessgreater_impl@_V1@sycl@@YA_NNN@Z +?__islessgreater_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@@Z +?__isnan_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@@Z +?__isnan_impl@_V1@sycl@@YA_NM@Z +?__isnan_impl@_V1@sycl@@YA_NN@Z +?__isnan_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@@Z +?__isnormal_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@@Z +?__isnormal_impl@_V1@sycl@@YA_NM@Z +?__isnormal_impl@_V1@sycl@@YA_NN@Z +?__isnormal_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z +?__isnotequal_impl@_V1@sycl@@YA_NMM@Z +?__isnotequal_impl@_V1@sycl@@YA_NNN@Z +?__isnotequal_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z +?__isordered_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z +?__isordered_impl@_V1@sycl@@YA_NMM@Z +?__isordered_impl@_V1@sycl@@YA_NNN@Z +?__isordered_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@0@Z +?__isunordered_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@0@Z +?__isunordered_impl@_V1@sycl@@YA_NMM@Z +?__isunordered_impl@_V1@sycl@@YA_NNN@Z +?__isunordered_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@0@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@V?$vec@H$00@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@V?$vec@H$01@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@V?$vec@H$02@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@V?$vec@H$03@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@V?$vec@H$07@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@V?$vec@H$0BA@@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@V?$vec@H$00@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@V?$vec@H$01@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@V?$vec@H$02@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@V?$vec@H$03@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@V?$vec@H$07@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@V?$vec@H$0BA@@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@V?$vec@H$00@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@V?$vec@H$01@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@V?$vec@H$02@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@V?$vec@H$03@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@V?$vec@H$07@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@V?$vec@H$0BA@@12@@Z +?__ldexp_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@H@Z +?__ldexp_impl@_V1@sycl@@YAMMH@Z +?__ldexp_impl@_V1@sycl@@YANNH@Z +?__length_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__length_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@@Z +?__length_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@@Z +?__length_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@@Z +?__length_impl@_V1@sycl@@YAMM@Z +?__length_impl@_V1@sycl@@YAMV?$vec@M$01@12@@Z +?__length_impl@_V1@sycl@@YAMV?$vec@M$02@12@@Z +?__length_impl@_V1@sycl@@YAMV?$vec@M$03@12@@Z +?__length_impl@_V1@sycl@@YANN@Z +?__length_impl@_V1@sycl@@YANV?$vec@N$01@12@@Z +?__length_impl@_V1@sycl@@YANV?$vec@N$02@12@@Z +?__length_impl@_V1@sycl@@YANV?$vec@N$03@12@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__lgamma_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__lgamma_impl@_V1@sycl@@YAMM@Z +?__lgamma_impl@_V1@sycl@@YANN@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__log10_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__log10_impl@_V1@sycl@@YAMM@Z +?__log10_impl@_V1@sycl@@YANN@Z +?__log10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__log10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__log10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__log10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__log10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__log10_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__log10_impl@half_precision@_V1@sycl@@YAMM@Z +?__log10_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__log10_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__log10_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__log10_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__log10_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__log10_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__log10_impl@native@_V1@sycl@@YAMM@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__log1p_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__log1p_impl@_V1@sycl@@YAMM@Z +?__log1p_impl@_V1@sycl@@YANN@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__log2_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__log2_impl@_V1@sycl@@YAMM@Z +?__log2_impl@_V1@sycl@@YANN@Z +?__log2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__log2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__log2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__log2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__log2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__log2_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__log2_impl@half_precision@_V1@sycl@@YAMM@Z +?__log2_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__log2_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__log2_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__log2_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__log2_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__log2_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__log2_impl@native@_V1@sycl@@YAMM@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__log_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__log_impl@_V1@sycl@@YAMM@Z +?__log_impl@_V1@sycl@@YANN@Z +?__log_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__log_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__log_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__log_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__log_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__log_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__log_impl@half_precision@_V1@sycl@@YAMM@Z +?__log_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__log_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__log_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__log_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__log_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__log_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__log_impl@native@_V1@sycl@@YAMM@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__logb_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__logb_impl@_V1@sycl@@YAMM@Z +?__logb_impl@_V1@sycl@@YANN@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@00@Z +?__mad_hi_impl@_V1@sycl@@YACCCC@Z +?__mad_hi_impl@_V1@sycl@@YADDDD@Z +?__mad_hi_impl@_V1@sycl@@YAEEEE@Z +?__mad_hi_impl@_V1@sycl@@YAFFFF@Z +?__mad_hi_impl@_V1@sycl@@YAGGGG@Z +?__mad_hi_impl@_V1@sycl@@YAHHHH@Z +?__mad_hi_impl@_V1@sycl@@YAIIII@Z +?__mad_hi_impl@_V1@sycl@@YAJJJJ@Z +?__mad_hi_impl@_V1@sycl@@YAKKKK@Z +?__mad_hi_impl@_V1@sycl@@YA_J_J00@Z +?__mad_hi_impl@_V1@sycl@@YA_K_K00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@00@Z +?__mad_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@00@Z +?__mad_impl@_V1@sycl@@YAMMMM@Z +?__mad_impl@_V1@sycl@@YANNNN@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@00@Z +?__mad_sat_impl@_V1@sycl@@YACCCC@Z +?__mad_sat_impl@_V1@sycl@@YADDDD@Z +?__mad_sat_impl@_V1@sycl@@YAEEEE@Z +?__mad_sat_impl@_V1@sycl@@YAFFFF@Z +?__mad_sat_impl@_V1@sycl@@YAGGGG@Z +?__mad_sat_impl@_V1@sycl@@YAHHHH@Z +?__mad_sat_impl@_V1@sycl@@YAIIII@Z +?__mad_sat_impl@_V1@sycl@@YAJJJJ@Z +?__mad_sat_impl@_V1@sycl@@YAKKKK@Z +?__mad_sat_impl@_V1@sycl@@YA_J_J00@Z +?__mad_sat_impl@_V1@sycl@@YA_K_K00@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z +?__max_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__max_impl@_V1@sycl@@YACCC@Z +?__max_impl@_V1@sycl@@YADDD@Z +?__max_impl@_V1@sycl@@YAEEE@Z +?__max_impl@_V1@sycl@@YAFFF@Z +?__max_impl@_V1@sycl@@YAGGG@Z +?__max_impl@_V1@sycl@@YAHHH@Z +?__max_impl@_V1@sycl@@YAIII@Z +?__max_impl@_V1@sycl@@YAJJJ@Z +?__max_impl@_V1@sycl@@YAKKK@Z +?__max_impl@_V1@sycl@@YAMMM@Z +?__max_impl@_V1@sycl@@YANNN@Z +?__max_impl@_V1@sycl@@YA_J_J0@Z +?__max_impl@_V1@sycl@@YA_K_K0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__maxmag_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__maxmag_impl@_V1@sycl@@YAMMM@Z +?__maxmag_impl@_V1@sycl@@YANNN@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z +?__min_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__min_impl@_V1@sycl@@YACCC@Z +?__min_impl@_V1@sycl@@YADDD@Z +?__min_impl@_V1@sycl@@YAEEE@Z +?__min_impl@_V1@sycl@@YAFFF@Z +?__min_impl@_V1@sycl@@YAGGG@Z +?__min_impl@_V1@sycl@@YAHHH@Z +?__min_impl@_V1@sycl@@YAIII@Z +?__min_impl@_V1@sycl@@YAJJJ@Z +?__min_impl@_V1@sycl@@YAKKK@Z +?__min_impl@_V1@sycl@@YAMMM@Z +?__min_impl@_V1@sycl@@YANNN@Z +?__min_impl@_V1@sycl@@YA_J_J0@Z +?__min_impl@_V1@sycl@@YA_K_K0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__minmag_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__minmag_impl@_V1@sycl@@YAMMM@Z +?__minmag_impl@_V1@sycl@@YANNN@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@00@Z +?__mix_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@00@Z +?__mix_impl@_V1@sycl@@YAMMMM@Z +?__mix_impl@_V1@sycl@@YANNNN@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z +?__mul_hi_impl@_V1@sycl@@YACCC@Z +?__mul_hi_impl@_V1@sycl@@YADDD@Z +?__mul_hi_impl@_V1@sycl@@YAEEE@Z +?__mul_hi_impl@_V1@sycl@@YAFFF@Z +?__mul_hi_impl@_V1@sycl@@YAGGG@Z +?__mul_hi_impl@_V1@sycl@@YAHHH@Z +?__mul_hi_impl@_V1@sycl@@YAIII@Z +?__mul_hi_impl@_V1@sycl@@YAJJJ@Z +?__mul_hi_impl@_V1@sycl@@YAKKK@Z +?__mul_hi_impl@_V1@sycl@@YA_J_J0@Z +?__mul_hi_impl@_V1@sycl@@YA_K_K0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__nextafter_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__nextafter_impl@_V1@sycl@@YAMMM@Z +?__nextafter_impl@_V1@sycl@@YANNN@Z +?__normalize_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__normalize_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__normalize_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__normalize_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__normalize_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__normalize_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__normalize_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__normalize_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__normalize_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__normalize_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__normalize_impl@_V1@sycl@@YAMM@Z +?__normalize_impl@_V1@sycl@@YANN@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@@Z +?__popcount_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@@Z +?__popcount_impl@_V1@sycl@@YACC@Z +?__popcount_impl@_V1@sycl@@YADD@Z +?__popcount_impl@_V1@sycl@@YAEE@Z +?__popcount_impl@_V1@sycl@@YAFF@Z +?__popcount_impl@_V1@sycl@@YAGG@Z +?__popcount_impl@_V1@sycl@@YAHH@Z +?__popcount_impl@_V1@sycl@@YAII@Z +?__popcount_impl@_V1@sycl@@YAJJ@Z +?__popcount_impl@_V1@sycl@@YAKK@Z +?__popcount_impl@_V1@sycl@@YA_J_J@Z +?__popcount_impl@_V1@sycl@@YA_K_K@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__pow_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__pow_impl@_V1@sycl@@YAMMM@Z +?__pow_impl@_V1@sycl@@YANNN@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@V?$vec@H$00@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@V?$vec@H$01@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@V?$vec@H$02@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@V?$vec@H$03@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@V?$vec@H$07@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@V?$vec@H$0BA@@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@V?$vec@H$00@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@V?$vec@H$01@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@V?$vec@H$02@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@V?$vec@H$03@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@V?$vec@H$07@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@V?$vec@H$0BA@@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@V?$vec@H$00@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@V?$vec@H$01@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@V?$vec@H$02@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@V?$vec@H$03@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@V?$vec@H$07@12@@Z +?__pown_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@V?$vec@H$0BA@@12@@Z +?__pown_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@H@Z +?__pown_impl@_V1@sycl@@YAMMH@Z +?__pown_impl@_V1@sycl@@YANNH@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__powr_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__powr_impl@_V1@sycl@@YAMMM@Z +?__powr_impl@_V1@sycl@@YANNN@Z +?__powr_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@0@Z +?__powr_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@0@Z +?__powr_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@0@Z +?__powr_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@0@Z +?__powr_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@0@Z +?__powr_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@0@Z +?__powr_impl@half_precision@_V1@sycl@@YAMMM@Z +?__powr_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@0@Z +?__powr_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@0@Z +?__powr_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@0@Z +?__powr_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@0@Z +?__powr_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@0@Z +?__powr_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@0@Z +?__powr_impl@native@_V1@sycl@@YAMMM@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__radians_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__radians_impl@_V1@sycl@@YAMM@Z +?__radians_impl@_V1@sycl@@YANN@Z +?__recip_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__recip_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__recip_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__recip_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__recip_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__recip_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__recip_impl@half_precision@_V1@sycl@@YAMM@Z +?__recip_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__recip_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__recip_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__recip_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__recip_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__recip_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__recip_impl@native@_V1@sycl@@YAMM@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__remainder_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__remainder_impl@_V1@sycl@@YAMMM@Z +?__remainder_impl@_V1@sycl@@YANNN@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z +?__rhadd_impl@_V1@sycl@@YACCC@Z +?__rhadd_impl@_V1@sycl@@YADDD@Z +?__rhadd_impl@_V1@sycl@@YAEEE@Z +?__rhadd_impl@_V1@sycl@@YAFFF@Z +?__rhadd_impl@_V1@sycl@@YAGGG@Z +?__rhadd_impl@_V1@sycl@@YAHHH@Z +?__rhadd_impl@_V1@sycl@@YAIII@Z +?__rhadd_impl@_V1@sycl@@YAJJJ@Z +?__rhadd_impl@_V1@sycl@@YAKKK@Z +?__rhadd_impl@_V1@sycl@@YA_J_J0@Z +?__rhadd_impl@_V1@sycl@@YA_K_K0@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__rint_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__rint_impl@_V1@sycl@@YAMM@Z +?__rint_impl@_V1@sycl@@YANN@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@V?$vec@H$00@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@V?$vec@H$01@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@V?$vec@H$02@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@V?$vec@H$03@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@V?$vec@H$07@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@V?$vec@H$0BA@@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@V?$vec@H$00@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@V?$vec@H$01@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@V?$vec@H$02@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@V?$vec@H$03@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@V?$vec@H$07@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@V?$vec@H$0BA@@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@V?$vec@H$00@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@V?$vec@H$01@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@V?$vec@H$02@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@V?$vec@H$03@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@V?$vec@H$07@12@@Z +?__rootn_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@V?$vec@H$0BA@@12@@Z +?__rootn_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@H@Z +?__rootn_impl@_V1@sycl@@YAMMH@Z +?__rootn_impl@_V1@sycl@@YANNH@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z +?__rotate_impl@_V1@sycl@@YACCC@Z +?__rotate_impl@_V1@sycl@@YADDD@Z +?__rotate_impl@_V1@sycl@@YAEEE@Z +?__rotate_impl@_V1@sycl@@YAFFF@Z +?__rotate_impl@_V1@sycl@@YAGGG@Z +?__rotate_impl@_V1@sycl@@YAHHH@Z +?__rotate_impl@_V1@sycl@@YAIII@Z +?__rotate_impl@_V1@sycl@@YAJJJ@Z +?__rotate_impl@_V1@sycl@@YAKKK@Z +?__rotate_impl@_V1@sycl@@YA_J_J0@Z +?__rotate_impl@_V1@sycl@@YA_K_K0@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__round_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__round_impl@_V1@sycl@@YAMM@Z +?__round_impl@_V1@sycl@@YANN@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__rsqrt_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__rsqrt_impl@_V1@sycl@@YAMM@Z +?__rsqrt_impl@_V1@sycl@@YANN@Z +?__rsqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__rsqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__rsqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__rsqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__rsqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__rsqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__rsqrt_impl@half_precision@_V1@sycl@@YAMM@Z +?__rsqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__rsqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__rsqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__rsqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__rsqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__rsqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__rsqrt_impl@native@_V1@sycl@@YAMM@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__sign_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__sign_impl@_V1@sycl@@YAMM@Z +?__sign_impl@_V1@sycl@@YANN@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V?$vec@M$00@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V?$vec@M$01@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V?$vec@M$02@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V?$vec@M$03@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V?$vec@M$07@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V?$vec@M$0BA@@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V?$vec@N$00@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V?$vec@N$01@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V?$vec@N$02@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V?$vec@N$03@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V?$vec@N$07@12@@Z +?__signbit_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V?$vec@N$0BA@@12@@Z +?__signbit_impl@_V1@sycl@@YA_NM@Z +?__signbit_impl@_V1@sycl@@YA_NN@Z +?__signbit_impl@_V1@sycl@@YA_NVhalf@half_impl@detail@12@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__sin_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__sin_impl@_V1@sycl@@YAMM@Z +?__sin_impl@_V1@sycl@@YANN@Z +?__sin_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__sin_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__sin_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__sin_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__sin_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__sin_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__sin_impl@half_precision@_V1@sycl@@YAMM@Z +?__sin_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__sin_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__sin_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__sin_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__sin_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__sin_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__sin_impl@native@_V1@sycl@@YAMM@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__sinh_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__sinh_impl@_V1@sycl@@YAMM@Z +?__sinh_impl@_V1@sycl@@YANN@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__sinpi_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__sinpi_impl@_V1@sycl@@YAMM@Z +?__sinpi_impl@_V1@sycl@@YANN@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@00@Z +?__smoothstep_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@00@Z +?__smoothstep_impl@_V1@sycl@@YAMMMM@Z +?__smoothstep_impl@_V1@sycl@@YANNNN@Z +?__spirv_ControlBarrier@@YAXUScope@__spv@@0I@Z +?__spirv_GroupWaitEvents@@YAXUScope@__spv@@IPEAPEAX@Z +?__spirv_MemoryBarrier@@YAXUScope@__spv@@I@Z +?__spirv_ocl_prefetch@@YAXPEBD_K@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__sqrt_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__sqrt_impl@_V1@sycl@@YAMM@Z +?__sqrt_impl@_V1@sycl@@YANN@Z +?__sqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__sqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__sqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__sqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__sqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__sqrt_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__sqrt_impl@half_precision@_V1@sycl@@YAMM@Z +?__sqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__sqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__sqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__sqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__sqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__sqrt_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__sqrt_impl@native@_V1@sycl@@YAMM@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@0@Z +?__step_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@0@Z +?__step_impl@_V1@sycl@@YAMMM@Z +?__step_impl@_V1@sycl@@YANNN@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@C$00@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@C$01@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@C$02@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@C$03@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@C$07@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@C$0BA@@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@E$00@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@E$01@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@E$02@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@E$03@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@E$07@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@E$0BA@@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@F$00@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@F$01@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@F$02@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@F$03@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@F$07@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@F$0BA@@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@G$00@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@G$01@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@G$02@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@G$03@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@G$07@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@G$0BA@@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@H$00@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@H$01@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@H$02@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@H$03@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@H$07@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@H$0BA@@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@I$00@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@I$01@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@I$02@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@I$03@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@I$07@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@I$0BA@@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_J$00@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_J$01@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_J$02@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_J$03@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_J$07@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_J$0BA@@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_K$00@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_K$01@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_K$02@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_K$03@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_K$07@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YA?AV?$vec@_K$0BA@@12@V312@0@Z +?__sub_sat_impl@_V1@sycl@@YACCC@Z +?__sub_sat_impl@_V1@sycl@@YADDD@Z +?__sub_sat_impl@_V1@sycl@@YAEEE@Z +?__sub_sat_impl@_V1@sycl@@YAFFF@Z +?__sub_sat_impl@_V1@sycl@@YAGGG@Z +?__sub_sat_impl@_V1@sycl@@YAHHH@Z +?__sub_sat_impl@_V1@sycl@@YAIII@Z +?__sub_sat_impl@_V1@sycl@@YAJJJ@Z +?__sub_sat_impl@_V1@sycl@@YAKKK@Z +?__sub_sat_impl@_V1@sycl@@YA_J_J0@Z +?__sub_sat_impl@_V1@sycl@@YA_K_K0@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__tan_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__tan_impl@_V1@sycl@@YAMM@Z +?__tan_impl@_V1@sycl@@YANN@Z +?__tan_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__tan_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__tan_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__tan_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__tan_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__tan_impl@half_precision@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__tan_impl@half_precision@_V1@sycl@@YAMM@Z +?__tan_impl@native@_V1@sycl@@YA?AV?$vec@M$00@23@V423@@Z +?__tan_impl@native@_V1@sycl@@YA?AV?$vec@M$01@23@V423@@Z +?__tan_impl@native@_V1@sycl@@YA?AV?$vec@M$02@23@V423@@Z +?__tan_impl@native@_V1@sycl@@YA?AV?$vec@M$03@23@V423@@Z +?__tan_impl@native@_V1@sycl@@YA?AV?$vec@M$07@23@V423@@Z +?__tan_impl@native@_V1@sycl@@YA?AV?$vec@M$0BA@@23@V423@@Z +?__tan_impl@native@_V1@sycl@@YAMM@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__tanh_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__tanh_impl@_V1@sycl@@YAMM@Z +?__tanh_impl@_V1@sycl@@YANN@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__tanpi_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__tanpi_impl@_V1@sycl@@YAMM@Z +?__tanpi_impl@_V1@sycl@@YANN@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__tgamma_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__tgamma_impl@_V1@sycl@@YAMM@Z +?__tgamma_impl@_V1@sycl@@YANN@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@M$00@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@M$01@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@M$02@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@M$03@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@M$07@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@M$0BA@@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@N$00@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@N$01@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@N$02@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@N$03@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@N$07@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@N$0BA@@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$00@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$01@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$02@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$03@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$07@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AV?$vec@Vhalf@half_impl@detail@_V1@sycl@@$0BA@@12@V312@@Z +?__trunc_impl@_V1@sycl@@YA?AVhalf@half_impl@detail@12@V34512@@Z +?__trunc_impl@_V1@sycl@@YAMM@Z +?__trunc_impl@_V1@sycl@@YANN@Z +?accelerator_selector_v@_V1@sycl@@YAHAEBVdevice@12@@Z +?add@device_global_map@detail@_V1@sycl@@YAXPEBXPEBD@Z +?add@free_function_info_map@detail@_V1@sycl@@YAXPEBQEBDPEBII@Z +?add@host_pipe_map@detail@_V1@sycl@@YAXPEBXPEBD@Z +?add@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA?AVnode@34567@AEBVproperty_list@67@@Z +?addArg@handler@_V1@sycl@@AEAAXW4kernel_param_kind_t@detail@23@PEAXHH@Z +?addGraphLeafDependencies@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAAXVnode@34567@@Z +?addHostAccessorAndWait@detail@_V1@sycl@@YAXPEAVAccessorImplHost@123@@Z +?addHostSampledImageAccessorAndWait@detail@_V1@sycl@@YAXPEAVSampledImageAccessorImplHost@123@@Z +?addHostUnsampledImageAccessorAndWait@detail@_V1@sycl@@YAXPEAVUnsampledImageAccessorImplHost@123@@Z +?addImpl@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAA?AVnode@34567@AEAVdynamic_command_group@34567@AEBV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@@Z +?addImpl@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAA?AVnode@34567@AEBV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@@Z +?addImpl@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAA?AVnode@34567@V?$function@$$A6AXAEAVhandler@_V1@sycl@@@Z@std@@AEBV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@@Z +?addLifetimeSharedPtrStorage@handler@_V1@sycl@@AEAAXV?$shared_ptr@$$CBX@std@@@Z +?addOrReplaceAccessorProperties@buffer_plain@detail@_V1@sycl@@IEAAXAEBVproperty_list@34@@Z +?addReduction@handler@_V1@sycl@@AEAAXAEBV?$shared_ptr@$$CBX@std@@@Z +?addStream@handler@_V1@sycl@@AEAAXAEBV?$shared_ptr@Vstream_impl@detail@_V1@sycl@@@std@@@Z +?alignedAlloc@OSUtil@detail@_V1@sycl@@SAPEAX_K0@Z +?alignedFree@OSUtil@detail@_V1@sycl@@SAXPEAX@Z +?aligned_alloc@_V1@sycl@@YAPEAX_K0AEBVdevice@12@AEBVcontext@12@W4alloc@usm@12@AEBUcode_location@detail@12@@Z +?aligned_alloc@_V1@sycl@@YAPEAX_K0AEBVdevice@12@AEBVcontext@12@W4alloc@usm@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?aligned_alloc@_V1@sycl@@YAPEAX_K0AEBVqueue@12@W4alloc@usm@12@AEBUcode_location@detail@12@@Z +?aligned_alloc@_V1@sycl@@YAPEAX_K0AEBVqueue@12@W4alloc@usm@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?aligned_alloc_device@_V1@sycl@@YAPEAX_K0AEBVdevice@12@AEBVcontext@12@AEBUcode_location@detail@12@@Z +?aligned_alloc_device@_V1@sycl@@YAPEAX_K0AEBVdevice@12@AEBVcontext@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?aligned_alloc_device@_V1@sycl@@YAPEAX_K0AEBVqueue@12@AEBUcode_location@detail@12@@Z +?aligned_alloc_device@_V1@sycl@@YAPEAX_K0AEBVqueue@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?aligned_alloc_host@_V1@sycl@@YAPEAX_K0AEBVcontext@12@AEBUcode_location@detail@12@@Z +?aligned_alloc_host@_V1@sycl@@YAPEAX_K0AEBVcontext@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?aligned_alloc_host@_V1@sycl@@YAPEAX_K0AEBVqueue@12@AEBUcode_location@detail@12@@Z +?aligned_alloc_host@_V1@sycl@@YAPEAX_K0AEBVqueue@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?aligned_alloc_shared@_V1@sycl@@YAPEAX_K0AEBVdevice@12@AEBVcontext@12@AEBUcode_location@detail@12@@Z +?aligned_alloc_shared@_V1@sycl@@YAPEAX_K0AEBVdevice@12@AEBVcontext@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?aligned_alloc_shared@_V1@sycl@@YAPEAX_K0AEBVqueue@12@AEBUcode_location@detail@12@@Z +?aligned_alloc_shared@_V1@sycl@@YAPEAX_K0AEBVqueue@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?alloc_exportable_device_mem@experimental@oneapi@ext@_V1@sycl@@YAPEAX_K0W4external_mem_handle_type@12345@AEBVdevice@45@AEBVcontext@45@AEBVproperty_list@45@@Z +?alloc_image_mem@experimental@oneapi@ext@_V1@sycl@@YA?AUimage_mem_handle@12345@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z +?alloc_image_mem@experimental@oneapi@ext@_V1@sycl@@YA?AUimage_mem_handle@12345@AEBUimage_descriptor@12345@AEBVqueue@45@@Z +?aspect_selector@_V1@sycl@@YA?AV?$function@$$A6AHAEBVdevice@_V1@sycl@@@Z@std@@AEBV?$vector@W4aspect@_V1@sycl@@V?$allocator@W4aspect@_V1@sycl@@@std@@@4@0@Z +?associateWithHandler@detail@_V1@sycl@@YAXAEAVhandler@23@PEAVAccessorBaseHost@123@W4target@access@23@@Z +?associateWithHandler@detail@_V1@sycl@@YAXAEAVhandler@23@PEAVSampledImageAccessorBaseHost@123@W4image_target@23@@Z +?associateWithHandler@detail@_V1@sycl@@YAXAEAVhandler@23@PEAVUnsampledImageAccessorBaseHost@123@W4image_target@23@@Z +?associateWithHandler@handler@_V1@sycl@@AEAAXPEAVAccessorBaseHost@detail@23@W4target@access@23@@Z +?associateWithHandler@handler@_V1@sycl@@AEAAXPEAVSampledImageAccessorBaseHost@detail@23@W4image_target@23@@Z +?associateWithHandler@handler@_V1@sycl@@AEAAXPEAVUnsampledImageAccessorBaseHost@detail@23@W4image_target@23@@Z +?associateWithHandlerCommon@handler@_V1@sycl@@AEAAXV?$shared_ptr@VAccessorImplHost@detail@_V1@sycl@@@std@@H@Z +?async_free@experimental@oneapi@ext@_V1@sycl@@YAXAEAVhandler@45@PEAX@Z +?async_free@experimental@oneapi@ext@_V1@sycl@@YAXAEBVqueue@45@PEAXAEBUcode_location@detail@45@@Z +?async_malloc@experimental@oneapi@ext@_V1@sycl@@YAPEAXAEAVhandler@45@W4alloc@usm@45@_K@Z +?async_malloc@experimental@oneapi@ext@_V1@sycl@@YAPEAXAEBVqueue@45@W4alloc@usm@45@_KAEBUcode_location@detail@45@@Z +?async_malloc_from_pool@experimental@oneapi@ext@_V1@sycl@@YAPEAXAEAVhandler@45@_KAEBVmemory_pool@12345@@Z +?async_malloc_from_pool@experimental@oneapi@ext@_V1@sycl@@YAPEAXAEBVqueue@45@_KAEBVmemory_pool@12345@AEBUcode_location@detail@45@@Z +?begin@exception_list@_V1@sycl@@QEBA?AV?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@Vexception_ptr@std@@@std@@@std@@@std@@XZ +?begin@kernel_bundle_plain@detail@_V1@sycl@@IEBAPEBVdevice_image_plain@234@XZ +?begin_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEAVqueue@67@AEBVproperty_list@67@@Z +?begin_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEBV?$vector@Vqueue@_V1@sycl@@V?$allocator@Vqueue@_V1@sycl@@@std@@@std@@AEBVproperty_list@67@@Z +?build_from_source@detail@experimental@oneapi@ext@_V1@sycl@@YA?AV?$kernel_bundle@$01@56@AEAV?$kernel_bundle@$02@56@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV?$vector@Vstring_view@detail@_V1@sycl@@V?$allocator@Vstring_view@detail@_V1@sycl@@@std@@@std@@PEAVstring@156@2@Z +?build_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBV?$kernel_bundle@$0A@@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@AEBVproperty_list@23@@Z +?cancel_fusion@fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAAXXZ +?category@exception@_V1@sycl@@QEBAAEBVerror_category@std@@XZ +?checkNodePropertiesAndThrow@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@KAXAEBVproperty_list@67@@Z +?incrementArgShift@handler@_V1@sycl@@AEAAXH@Z +?close@ipc_memory@experimental@oneapi@ext@_V1@sycl@@YAXPEAXAEBVcontext@56@@Z +?code@exception@_V1@sycl@@QEBAAEBVerror_code@std@@XZ +?compile_from_source@detail@experimental@oneapi@ext@_V1@sycl@@YA?AV?$kernel_bundle@$00@56@AEAV?$kernel_bundle@$02@56@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV?$vector@Vstring_view@detail@_V1@sycl@@V?$allocator@Vstring_view@detail@_V1@sycl@@@std@@@std@@PEAVstring@156@2@Z +?compile_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBV?$kernel_bundle@$0A@@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@AEBVproperty_list@23@@Z +?complete_fusion@fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAA?AVevent@56@AEBVproperty_list@56@@Z +?computeFallbackKernelBounds@handler@_V1@sycl@@AEAA?AV?$id@$01@23@_K0@Z +?constructorNotification@buffer_plain@detail@_V1@sycl@@IEAAXAEBUcode_location@234@PEAXPEBX2IIQEA_K@Z +?constructorNotification@detail@_V1@sycl@@YAXPEAX0W4target@access@23@W4mode@523@AEBUcode_location@123@@Z +?contains_specialization_constants@kernel_bundle_plain@detail@_V1@sycl@@QEBA_NXZ +?contextSetExtendedDeleter@pi@detail@_V1@sycl@@YAXAEBVcontext@34@P6AXPEAX@Z1@Z +?copyCodeLoc@handler@_V1@sycl@@AEAAXAEBV123@@Z +?cpu_selector_v@_V1@sycl@@YAHAEBVdevice@12@@Z +?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUsampled_image_handle@12345@AEAVimage_mem@12345@AEBUbindless_image_sampler@12345@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z +?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUsampled_image_handle@12345@AEAVimage_mem@12345@AEBUbindless_image_sampler@12345@AEBUimage_descriptor@12345@AEBVqueue@45@@Z +?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUsampled_image_handle@12345@PEAX_KAEBUbindless_image_sampler@12345@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z +?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUsampled_image_handle@12345@PEAX_KAEBUbindless_image_sampler@12345@AEBUimage_descriptor@12345@AEBVqueue@45@@Z +?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUsampled_image_handle@12345@Uimage_mem_handle@12345@AEBUbindless_image_sampler@12345@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z +?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUsampled_image_handle@12345@Uimage_mem_handle@12345@AEBUbindless_image_sampler@12345@AEBUimage_descriptor@12345@AEBVqueue@45@@Z +?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUunsampled_image_handle@12345@AEAVimage_mem@12345@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z +?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUunsampled_image_handle@12345@AEAVimage_mem@12345@AEBUimage_descriptor@12345@AEBVqueue@45@@Z +?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUunsampled_image_handle@12345@Uimage_mem_handle@12345@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z +?create_image@experimental@oneapi@ext@_V1@sycl@@YA?AUunsampled_image_handle@12345@Uimage_mem_handle@12345@AEBUimage_descriptor@12345@AEBVqueue@45@@Z +?default_selector_v@_V1@sycl@@YAHAEBVdevice@12@@Z +?deleteAccProps@buffer_plain@detail@_V1@sycl@@IEAAXAEBW4PropWithDataKind@234@@Z +?depends_on@handler@_V1@sycl@@IEAAXAEBV?$shared_ptr@Vevent_impl@detail@_V1@sycl@@@std@@@Z +?depends_on@handler@_V1@sycl@@IEAAXAEBV?$vector@V?$shared_ptr@Vevent_impl@detail@_V1@sycl@@@std@@V?$allocator@V?$shared_ptr@Vevent_impl@detail@_V1@sycl@@@std@@@2@@std@@@Z +?depends_on@handler@_V1@sycl@@QEAAXAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@@Z +?depends_on@handler@_V1@sycl@@QEAAXVevent@23@@Z +?destroy_image_handle@experimental@oneapi@ext@_V1@sycl@@YAXAEAUsampled_image_handle@12345@AEBVdevice@45@AEBVcontext@45@@Z +?destroy_image_handle@experimental@oneapi@ext@_V1@sycl@@YAXAEAUsampled_image_handle@12345@AEBVqueue@45@@Z +?destroy_image_handle@experimental@oneapi@ext@_V1@sycl@@YAXAEAUunsampled_image_handle@12345@AEBVdevice@45@AEBVcontext@45@@Z +?destroy_image_handle@experimental@oneapi@ext@_V1@sycl@@YAXAEAUunsampled_image_handle@12345@AEBVqueue@45@@Z +?device_has@queue@_V1@sycl@@AEBA_NW4aspect@23@@Z +?empty@kernel_bundle_plain@detail@_V1@sycl@@QEBA_NXZ +?enable_ext_oneapi_default_context@detail@_V1@sycl@@YAX_N@Z +?end@HostProfilingInfo@detail@_V1@sycl@@QEAAXXZ +?end@exception_list@_V1@sycl@@QEBA?AV?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@Vexception_ptr@std@@@std@@@std@@@std@@XZ +?end@kernel_bundle_plain@detail@_V1@sycl@@IEBAPEBVdevice_image_plain@234@XZ +?end_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEAVqueue@67@@Z +?end_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEBV?$vector@Vqueue@_V1@sycl@@V?$allocator@Vqueue@_V1@sycl@@@std@@@std@@@Z +?end_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXXZ +?eventNeeded@handler@_V1@sycl@@AEBA_NXZ +?export_device_mem_opaque_fd@detail@experimental@oneapi@ext@_V1@sycl@@YAHPEAXAEBVdevice@56@AEBVcontext@56@@Z +?export_device_mem_win32_nt_handle@detail@experimental@oneapi@ext@_V1@sycl@@YAPEAXPEAXAEBVdevice@56@AEBVcontext@56@@Z +?ext_codeplay_has_graph@interop_handle@_V1@sycl@@QEBA_NXZ +?ext_codeplay_supports_fusion@queue@_V1@sycl@@QEBA_NXZ +?ext_intel_read_host_pipe@handler@_V1@sycl@@AEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAX_K_N@Z +?ext_intel_read_host_pipe@handler@_V1@sycl@@AEAAXVstring_view@detail@23@PEAX_K_N@Z +?ext_intel_write_host_pipe@handler@_V1@sycl@@AEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAX_K_N@Z +?ext_intel_write_host_pipe@handler@_V1@sycl@@AEAAXVstring_view@detail@23@PEAX_K_N@Z +?ext_oneapi_architecture_is@device@_V1@sycl@@QEAA_NW4arch_category@experimental@oneapi@ext@23@@Z +?ext_oneapi_architecture_is@device@_V1@sycl@@QEAA_NW4architecture@experimental@oneapi@ext@23@@Z +?ext_oneapi_barrier@handler@_V1@sycl@@QEAAXAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@@Z +?ext_oneapi_barrier@handler@_V1@sycl@@QEAAXXZ +?ext_oneapi_can_access_peer@device@_V1@sycl@@QEAA_NAEBV123@W4peer_access@oneapi@ext@23@@Z +?ext_oneapi_can_build@device@_V1@sycl@@QEAA_NW4source_language@experimental@oneapi@ext@23@@Z +?ext_oneapi_can_compile@device@_V1@sycl@@QEAA_NW4source_language@experimental@oneapi@ext@23@@Z +?ext_oneapi_cl_profile@device@_V1@sycl@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ +?ext_oneapi_cl_profile_impl@device@_V1@sycl@@AEBA?AVstring@detail@23@XZ +?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX12@Z +?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@56723@1@Z +?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXPEAXAEBUimage_descriptor@experimental@oneapi@ext@23@_K@Z +?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXUimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@56723@@Z +?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXV?$range@$02@23@1Uimage_mem_handle@experimental@oneapi@ext@23@1AEBUimage_descriptor@67823@1@Z +?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX1231@Z +?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@67823@121@Z +?ext_oneapi_copy@handler@_V1@sycl@@QEAAXPEBXV?$range@$02@23@PEAX1AEBUimage_descriptor@experimental@oneapi@ext@23@_K11@Z +?ext_oneapi_copy@handler@_V1@sycl@@QEAAXUimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@56723@PEAX1_K@Z +?ext_oneapi_copy@handler@_V1@sycl@@QEAAXUimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@56723@U456723@1@Z +?ext_oneapi_copy@handler@_V1@sycl@@QEAAXUimage_mem_handle@experimental@oneapi@ext@23@PEAXAEBUimage_descriptor@56723@@Z +?ext_oneapi_copy@handler@_V1@sycl@@QEAAXUimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@56723@PEAX111@Z +?ext_oneapi_copy@handler@_V1@sycl@@QEAAXUimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@56723@PEAX12_K1@Z +?ext_oneapi_copy@handler@_V1@sycl@@QEAAXUimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@56723@U456723@121@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX12AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX12AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX12V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@67823@1AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@67823@1AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXAEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@67823@1V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXPEAXAEBUimage_descriptor@experimental@oneapi@ext@23@_KAEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXPEAXAEBUimage_descriptor@experimental@oneapi@ext@23@_KAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXPEAXAEBUimage_descriptor@experimental@oneapi@ext@23@_KV423@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXUimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXUimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXUimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@1Uimage_mem_handle@experimental@oneapi@ext@23@1AEBUimage_descriptor@78923@1AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@1Uimage_mem_handle@experimental@oneapi@ext@23@1AEBUimage_descriptor@78923@1AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@1Uimage_mem_handle@experimental@oneapi@ext@23@1AEBUimage_descriptor@78923@1V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX1231AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX1231AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KPEAX1231V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@78923@121AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@78923@121AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@AEBUimage_descriptor@experimental@oneapi@ext@23@_KUimage_mem_handle@78923@121V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@PEAX1AEBUimage_descriptor@experimental@oneapi@ext@23@_K11AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@PEAX1AEBUimage_descriptor@experimental@oneapi@ext@23@_K11AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@PEBXV?$range@$02@23@PEAX1AEBUimage_descriptor@experimental@oneapi@ext@23@_K11V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@PEAX1_KAEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@PEAX1_KAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@PEAX1_KV423@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@U567823@1AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@U567823@1AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@AEBUimage_descriptor@67823@U567823@1V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@PEAXAEBUimage_descriptor@67823@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@PEAXAEBUimage_descriptor@67823@AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@PEAXAEBUimage_descriptor@67823@V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@PEAX111AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@PEAX111AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@PEAX111V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@PEAX12_K1AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@PEAX12_K1AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@PEAX12_K1V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@U567823@121AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@U567823@121AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_copy@queue@_V1@sycl@@QEAA?AVevent@23@Uimage_mem_handle@experimental@oneapi@ext@23@V?$range@$02@23@AEBUimage_descriptor@67823@U567823@121V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_disable_peer_access@device@_V1@sycl@@QEAAXAEBV123@@Z +?ext_oneapi_empty@queue@_V1@sycl@@QEBA_NXZ +?ext_oneapi_enable_peer_access@device@_V1@sycl@@QEAAXAEBV123@@Z +?ext_oneapi_fill2d_impl@handler@_V1@sycl@@AEAAXPEAX_KPEBX111@Z +?ext_oneapi_get_backend_content_view_impl@device_image_plain@detail@_V1@sycl@@IEBA?AU?$pair@PEBW4byte@std@@PEBW412@@std@@XZ +?ext_oneapi_get_backend_impl@device_image_plain@detail@_V1@sycl@@IEBA?AW4backend@34@XZ +?ext_oneapi_get_composite_devices@platform@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ +?ext_oneapi_get_default_context@device@_V1@sycl@@QEAA?AVcontext@23@XZ +?ext_oneapi_get_default_context@platform@_V1@sycl@@QEBA?AVcontext@23@XZ +?ext_oneapi_get_default_memory_pool@context@_V1@sycl@@QEBA?AVmemory_pool@experimental@oneapi@ext@23@AEBVdevice@23@W4alloc@usm@23@@Z +?ext_oneapi_get_device_global_address@kernel_bundle_plain@detail@_V1@sycl@@AEAAPEAXVstring_view@234@AEBVdevice@34@@Z +?ext_oneapi_get_device_global_address@kernel_bundle_plain@detail@_V1@sycl@@QEAAPEAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBVdevice@34@@Z +?ext_oneapi_get_device_global_size@kernel_bundle_plain@detail@_V1@sycl@@AEAA_KVstring_view@234@@Z +?ext_oneapi_get_device_global_size@kernel_bundle_plain@detail@_V1@sycl@@QEAA_KAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z +?ext_oneapi_get_graph@queue@_V1@sycl@@QEBA?AV?$command_graph@$0A@@experimental@oneapi@ext@23@XZ +?ext_oneapi_get_kernel@kernel_bundle_plain@detail@_V1@sycl@@AEAA?AVkernel@34@Vstring_view@234@@Z +?ext_oneapi_get_kernel@kernel_bundle_plain@detail@_V1@sycl@@QEAA?AVkernel@34@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z +?ext_oneapi_get_last_event@queue@_V1@sycl@@QEBA?AV?$optional@Vevent@_V1@sycl@@@std@@XZ +?ext_oneapi_get_last_event_impl@queue@_V1@sycl@@AEBA?AV?$optional@Vevent@_V1@sycl@@@detail@23@XZ +?ext_oneapi_get_raw_kernel_name@kernel_bundle_plain@detail@_V1@sycl@@AEAA?AVstring@234@Vstring_view@234@@Z +?ext_oneapi_get_raw_kernel_name@kernel_bundle_plain@detail@_V1@sycl@@QEAA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV56@@Z +?ext_oneapi_get_state@queue@_V1@sycl@@QEBA?AW4queue_state@experimental@oneapi@ext@23@XZ +?ext_oneapi_graph@handler@_V1@sycl@@QEAAXV?$command_graph@$00@experimental@oneapi@ext@23@@Z +?ext_oneapi_graph@queue@_V1@sycl@@QEAA?AVevent@23@V?$command_graph@$00@experimental@oneapi@ext@23@AEBUcode_location@detail@23@@Z +?ext_oneapi_graph@queue@_V1@sycl@@QEAA?AVevent@23@V?$command_graph@$00@experimental@oneapi@ext@23@AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_graph@queue@_V1@sycl@@QEAA?AVevent@23@V?$command_graph@$00@experimental@oneapi@ext@23@V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_has_device_global@kernel_bundle_plain@detail@_V1@sycl@@AEAA_NVstring_view@234@@Z +?ext_oneapi_has_device_global@kernel_bundle_plain@detail@_V1@sycl@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z +?ext_oneapi_has_kernel@kernel_bundle_plain@detail@_V1@sycl@@AEAA_NVstring_view@234@@Z +?ext_oneapi_has_kernel@kernel_bundle_plain@detail@_V1@sycl@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z +?ext_oneapi_memcpy2d_impl@handler@_V1@sycl@@AEAAXPEAX_KPEBX111@Z +?ext_oneapi_memset2d_impl@handler@_V1@sycl@@AEAAXPEAX_KH11@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vcontext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vcontext@_V1@sycl@@@2oneapi@ext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vcontext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVcontext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vdevice@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vdevice@_V1@sycl@@@2oneapi@ext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vdevice@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVdevice@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vevent@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vevent@_V1@sycl@@@2oneapi@ext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vevent@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVevent@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vexecutable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vexecutable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@2oneapi@ext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vexecutable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVexecutable_command_graph@2experimental@oneapi@ext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vkernel@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vkernel@_V1@sycl@@@2oneapi@ext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vkernel@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVkernel@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vkernel_id@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vkernel_id@_V1@sycl@@@2oneapi@ext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vkernel_id@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVkernel_id@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vmodifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vmodifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@2oneapi@ext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vmodifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVmodifiable_command_graph@2experimental@oneapi@ext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vphysical_mem@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vphysical_mem@experimental@oneapi@ext@_V1@sycl@@@2oneapi@ext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vphysical_mem@experimental@oneapi@ext@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVphysical_mem@experimental@oneapi@ext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vplatform@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vplatform@_V1@sycl@@@2oneapi@ext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vplatform@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVplatform@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vqueue@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vqueue@_V1@sycl@@@2oneapi@ext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vqueue@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVqueue@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vstream@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBV?$weak_object_base@Vstream@_V1@sycl@@@2oneapi@ext@34@@Z +?ext_oneapi_owner_before@?$OwnerLessBase@Vstream@_V1@sycl@@@detail@_V1@sycl@@QEBA_NAEBVstream@34@@Z +?ext_oneapi_prod@queue@_V1@sycl@@QEAAXXZ +?ext_oneapi_set_external_event@queue@_V1@sycl@@QEAAXAEBVevent@23@@Z +?ext_oneapi_signal_external_semaphore@handler@_V1@sycl@@QEAAXUexternal_semaphore@experimental@oneapi@ext@23@@Z +?ext_oneapi_signal_external_semaphore@handler@_V1@sycl@@QEAAXUexternal_semaphore@experimental@oneapi@ext@23@_K@Z +?ext_oneapi_signal_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@AEBUcode_location@detail@23@@Z +?ext_oneapi_signal_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_signal_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_signal_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@_KAEBUcode_location@detail@23@@Z +?ext_oneapi_signal_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@_KAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_signal_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@_KV423@AEBUcode_location@detail@23@@Z +?ext_oneapi_submit_barrier@queue@_V1@sycl@@QEAA?AVevent@23@AEBUcode_location@detail@23@@Z +?ext_oneapi_submit_barrier@queue@_V1@sycl@@QEAA?AVevent@23@AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_supports_cl_c_feature@device@_V1@sycl@@AEAA_NVstring_view@detail@23@@Z +?ext_oneapi_supports_cl_c_feature@device@_V1@sycl@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z +?ext_oneapi_supports_cl_c_version@device@_V1@sycl@@QEBA_NAEBUcl_version@experimental@oneapi@ext@23@@Z +?ext_oneapi_supports_cl_extension@device@_V1@sycl@@AEBA_NVstring_view@detail@23@PEAUcl_version@experimental@oneapi@ext@23@@Z +?ext_oneapi_supports_cl_extension@device@_V1@sycl@@QEBA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAUcl_version@experimental@oneapi@ext@23@@Z +?ext_oneapi_wait_external_semaphore@handler@_V1@sycl@@QEAAXUexternal_semaphore@experimental@oneapi@ext@23@@Z +?ext_oneapi_wait_external_semaphore@handler@_V1@sycl@@QEAAXUexternal_semaphore@experimental@oneapi@ext@23@_K@Z +?ext_oneapi_wait_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@AEBUcode_location@detail@23@@Z +?ext_oneapi_wait_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_wait_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@V423@AEBUcode_location@detail@23@@Z +?ext_oneapi_wait_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@_KAEBUcode_location@detail@23@@Z +?ext_oneapi_wait_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@_KAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?ext_oneapi_wait_external_semaphore@queue@_V1@sycl@@QEAA?AVevent@23@Uexternal_semaphore@experimental@oneapi@ext@23@_KV423@AEBUcode_location@detail@23@@Z +?extractArgsAndReqs@handler@_V1@sycl@@AEAAXXZ +?fill_impl@handler@_V1@sycl@@AEAAXPEAXPEBX_K2@Z +?finalize@handler@_V1@sycl@@AEAA?AV?$shared_ptr@Vevent_impl@detail@_V1@sycl@@@std@@XZ +?finalize@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEBA?AV?$command_graph@$00@34567@AEBVproperty_list@67@@Z +?finalizeImpl@executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAAXXZ +?find_device_intersection@detail@_V1@sycl@@YA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV?$vector@V?$kernel_bundle@$00@_V1@sycl@@V?$allocator@V?$kernel_bundle@$00@_V1@sycl@@@std@@@5@@Z +?free@_V1@sycl@@YAXPEAXAEBVcontext@12@AEBUcode_location@detail@12@@Z +?free@_V1@sycl@@YAXPEAXAEBVqueue@12@AEBUcode_location@detail@12@@Z +?free_exportable_memory@experimental@oneapi@ext@_V1@sycl@@YAXPEAXAEBVdevice@45@AEBVcontext@45@@Z +?free_image_mem@experimental@oneapi@ext@_V1@sycl@@YAXUimage_mem_handle@12345@W4image_type@12345@AEBVdevice@45@AEBVcontext@45@@Z +?free_image_mem@experimental@oneapi@ext@_V1@sycl@@YAXUimage_mem_handle@12345@W4image_type@12345@AEBVqueue@45@@Z +?free_virtual_mem@experimental@oneapi@ext@_V1@sycl@@YAX_K0AEBVcontext@45@@Z +?frexp_impl@detail@_V1@sycl@@YA?AVhalf@half_impl@123@V45123@PEAH@Z +?frexp_impl@detail@_V1@sycl@@YAMMPEAH@Z +?frexp_impl@detail@_V1@sycl@@YANNPEAH@Z +?get@context@_V1@sycl@@QEBAPEAU_cl_context@@XZ +?get@device@_V1@sycl@@QEBAPEAU_cl_device_id@@XZ +?get@ipc_memory@experimental@oneapi@ext@_V1@sycl@@YA?AUhandle@123456@PEAXAEBVcontext@56@@Z +?get@kernel@_V1@sycl@@QEBAPEAU_cl_kernel@@XZ +?get@platform@_V1@sycl@@QEBAPEAU_cl_platform_id@@XZ +?get@queue@_V1@sycl@@QEBAPEAU_cl_command_queue@@XZ +?getAccData@AccessorBaseHost@detail@_V1@sycl@@QEAAAEAUAccHostDataT@234@XZ +?getAccData@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAAEAUAccHostDataT@234@XZ +?getAccData@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAAEAUAccHostDataT@234@XZ +?getAccessRange@AccessorBaseHost@detail@_V1@sycl@@QEAAAEAV?$range@$02@34@XZ +?getAccessRange@AccessorBaseHost@detail@_V1@sycl@@QEBAAEBV?$range@$02@34@XZ +?getBorderColor@detail@_V1@sycl@@YA?AV?$vec@M$03@23@W4image_channel_order@23@@Z +?getChannelOrder@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBA?AW4image_channel_order@34@XZ +?getChannelOrder@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBA?AW4image_channel_order@34@XZ +?getChannelOrder@image_plain@detail@_V1@sycl@@IEBA?AW4image_channel_order@34@XZ +?getChannelType@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBA?AW4image_channel_type@34@XZ +?getChannelType@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBA?AW4image_channel_type@34@XZ +?getChannelType@image_plain@detail@_V1@sycl@@IEBA?AW4image_channel_type@34@XZ +?getCommandGraph@handler@_V1@sycl@@AEBA?AV?$shared_ptr@Vgraph_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@XZ +?getContextImpl@handler@_V1@sycl@@AEBAAEAVcontext_impl@detail@23@XZ +?getCurrentDSODir@OSUtil@detail@_V1@sycl@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ +?getDeviceBackend@handler@_V1@sycl@@AEBA?AW4backend@23@XZ +?getDeviceFromHandler@detail@_V1@sycl@@YA?AVdevice@23@AEAVhandler@23@@Z +?getDeviceKernelInfo@detail@_V1@sycl@@YAAEAVDeviceKernelInfo@123@AEBUCompileTimeKernelInfoTy@compile_time_kernel_info_v1@123@@Z +?getElemSize@AccessorBaseHost@detail@_V1@sycl@@QEBAIXZ +?getElementSize@LocalAccessorBaseHost@detail@_V1@sycl@@QEAAHXZ +?getElementSize@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAHXZ +?getElementSize@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAHXZ +?getElementSize@image_plain@detail@_V1@sycl@@IEBA_KXZ +?getEndTime@HostProfilingInfo@detail@_V1@sycl@@QEBA_KXZ +?getKernelBundle@handler@_V1@sycl@@AEBA?AV?$kernel_bundle@$0A@@23@XZ +?getMaxWorkGroups@handler@_V1@sycl@@AEAA?AV?$optional@V?$array@_K$02@std@@@std@@XZ +?getMaxWorkGroups_v2@handler@_V1@sycl@@AEAA?AV?$tuple@V?$array@_K$02@std@@_N@std@@XZ +?getMemoryObject@AccessorBaseHost@detail@_V1@sycl@@QEBAPEAXXZ +?getMemoryObject@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAPEAXXZ +?getMemoryObject@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAPEAXXZ +?getMemoryRange@AccessorBaseHost@detail@_V1@sycl@@QEAAAEAV?$range@$02@34@XZ +?getMemoryRange@AccessorBaseHost@detail@_V1@sycl@@QEBAAEBV?$range@$02@34@XZ +?getNative@context@_V1@sycl@@AEBA_KXZ +?getNative@device@_V1@sycl@@AEBA_KXZ +?getNative@device_image_plain@detail@_V1@sycl@@QEBA_KXZ +?getNative@event@_V1@sycl@@AEBA_KXZ +?getNative@kernel@_V1@sycl@@AEBA_KXZ +?getNative@platform@_V1@sycl@@AEBA_KXZ +?getNative@queue@_V1@sycl@@QEBA_KAEAH@Z +?getNativeContext@interop_handle@_V1@sycl@@AEBA_KXZ +?getNativeDevice@interop_handle@_V1@sycl@@AEBA_KXZ +?getNativeGraph@interop_handle@_V1@sycl@@AEBA_KXZ +?getNativeImpl@kernel@_V1@sycl@@AEBA_KXZ +?getNativeMem@interop_handle@_V1@sycl@@AEBA_KPEAVAccessorImplHost@detail@23@@Z +?getNativeQueue@interop_handle@_V1@sycl@@AEBA_KAEAH@Z +?getNativeVector@buffer_plain@detail@_V1@sycl@@IEBA?AV?$vector@_KV?$allocator@_K@std@@@std@@W4backend@34@@Z +?getNativeVector@event@_V1@sycl@@AEBA?AV?$vector@_KV?$allocator@_K@std@@@std@@XZ +?getNumOfDims@LocalAccessorBaseHost@detail@_V1@sycl@@QEAAHXZ +?getNumOfDims@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAHXZ +?getNumOfDims@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAHXZ +?getOSMemSize@OSUtil@detail@_V1@sycl@@SA_KXZ +?getOffset@AccessorBaseHost@detail@_V1@sycl@@QEAAAEAV?$id@$02@34@XZ +?getOffset@AccessorBaseHost@detail@_V1@sycl@@QEBAAEBV?$id@$02@34@XZ +?getOrInsertHandlerKernelBundlePtr@handler@_V1@sycl@@AEBAPEAVkernel_bundle_impl@detail@23@_N@Z +?getPitch@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBA?AV?$id@$02@34@XZ +?getPitch@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBA?AV?$id@$02@34@XZ +?getPixelCoordLinearFiltMode@detail@_V1@sycl@@YA?AV?$vec@H$07@23@V?$vec@M$03@23@W4addressing_mode@23@V?$range@$02@23@AEAV523@@Z +?getPixelCoordNearestFiltMode@detail@_V1@sycl@@YA?AV?$vec@H$03@23@V?$vec@M$03@23@W4addressing_mode@23@V?$range@$02@23@@Z +?getPropList@AccessorBaseHost@detail@_V1@sycl@@QEBAAEBVproperty_list@34@XZ +?getPropList@LocalAccessorBaseHost@detail@_V1@sycl@@QEBAAEBVproperty_list@34@XZ +?getPropList@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAAEBVproperty_list@34@XZ +?getPropList@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAAEBVproperty_list@34@XZ +?getPropList@buffer_plain@detail@_V1@sycl@@IEBAAEBVproperty_list@34@XZ +?getPropList@context@_V1@sycl@@AEBAAEBVproperty_list@23@XZ +?getPropList@image_plain@detail@_V1@sycl@@IEBAAEBVproperty_list@34@XZ +?getPropList@queue@_V1@sycl@@AEBAAEBVproperty_list@23@XZ +?getPropList@sampler@_V1@sycl@@AEBAAEBVproperty_list@23@XZ +?getPropList@stream@_V1@sycl@@AEBAAEBVproperty_list@23@XZ +?getPtr@AccessorBaseHost@detail@_V1@sycl@@QEAAPEAXXZ +?getPtr@AccessorBaseHost@detail@_V1@sycl@@QEBAPEAXXZ +?getPtr@LocalAccessorBaseHost@detail@_V1@sycl@@QEAAPEAXXZ +?getPtr@LocalAccessorBaseHost@detail@_V1@sycl@@QEBAPEAXXZ +?getPtr@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAPEAXXZ +?getPtr@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAPEAXXZ +?getPtr@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEAAPEAXXZ +?getPtr@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAPEAXXZ +?getQueue@handler@_V1@sycl@@AEAA?AVqueue@23@XZ +?getRowPitch@image_plain@detail@_V1@sycl@@IEBA_KXZ +?getSampler@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBA?AUimage_sampler@34@XZ +?getSampler@image_plain@detail@_V1@sycl@@IEBA?AUimage_sampler@34@XZ +?getSize@LocalAccessorBaseHost@detail@_V1@sycl@@QEAAAEAV?$range@$02@34@XZ +?getSize@LocalAccessorBaseHost@detail@_V1@sycl@@QEBAAEBV?$range@$02@34@XZ +?getSize@SampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAAEBV?$range@$02@34@XZ +?getSize@UnsampledImageAccessorBaseHost@detail@_V1@sycl@@QEBAAEBV?$range@$02@34@XZ +?getSize@buffer_plain@detail@_V1@sycl@@IEBA_KXZ +?getSlicePitch@image_plain@detail@_V1@sycl@@IEBA_KXZ +?getStartTime@HostProfilingInfo@detail@_V1@sycl@@QEBA_KXZ +?getType@handler@_V1@sycl@@AEBA?AW4CGType@detail@23@XZ +?getValueFromDynamicParameter@detail@_V1@sycl@@YAPEAXAEAVdynamic_parameter_base@1experimental@oneapi@ext@23@@Z +?get_access_mode@experimental@oneapi@ext@_V1@sycl@@YA?AW4address_access_mode@12345@PEBX_KAEBVcontext@45@@Z +?get_active_index@dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEBA_KXZ +?get_addressing_mode@sampler@_V1@sycl@@QEBA?AW4addressing_mode@23@XZ +?get_alloc_kind@memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA?AW4alloc@usm@56@XZ +?get_allocator_internal@buffer_plain@detail@_V1@sycl@@IEBAAEBV?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@XZ +?get_allocator_internal@image_plain@detail@_V1@sycl@@IEBAAEBV?$unique_ptr@VSYCLMemObjAllocator@detail@_V1@sycl@@U?$default_delete@VSYCLMemObjAllocator@detail@_V1@sycl@@@std@@@std@@XZ +?get_backend@context@_V1@sycl@@QEBA?AW4backend@23@XZ +?get_backend@device@_V1@sycl@@QEBA?AW4backend@23@XZ +?get_backend@event@_V1@sycl@@QEBA?AW4backend@23@XZ +?get_backend@interop_handle@_V1@sycl@@QEBA?AW4backend@23@XZ +?get_backend@kernel@_V1@sycl@@QEBA?AW4backend@23@XZ +?get_backend@kernel_bundle_plain@detail@_V1@sycl@@QEBA?AW4backend@34@XZ +?get_backend@platform@_V1@sycl@@QEBA?AW4backend@23@XZ +?get_backend@queue@_V1@sycl@@QEBA?AW4backend@23@XZ +?get_channel_order@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AW4image_channel_order@56@XZ +?get_channel_type@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AW4image_channel_type@56@XZ +?get_composite_devices@experimental@oneapi@ext@_V1@sycl@@YA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ +?get_context@exception@_V1@sycl@@QEBA?AVcontext@23@XZ +?get_context@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AVcontext@56@XZ +?get_context@kernel@_V1@sycl@@QEBA?AVcontext@23@XZ +?get_context@kernel_bundle_plain@detail@_V1@sycl@@QEBA?AVcontext@34@XZ +?get_context@memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA?AVcontext@56@XZ +?get_context@physical_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AVcontext@56@XZ +?get_context@queue@_V1@sycl@@QEBA?AVcontext@23@XZ +?get_coordinate_normalization_mode@sampler@_V1@sycl@@QEBA?AW4coordinate_normalization_mode@23@XZ +?get_count@image_plain@detail@_V1@sycl@@IEBA_KXZ +?get_descriptor@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBAAEBUimage_descriptor@23456@XZ +?get_device@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AVdevice@56@XZ +?get_device@memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA?AVdevice@56@XZ +?get_device@physical_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AVdevice@56@XZ +?get_device@queue@_V1@sycl@@QEBA?AVdevice@23@XZ +?get_devices@context@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ +?get_devices@device@_V1@sycl@@SA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@W4device_type@info@23@@Z +?get_devices@kernel_bundle_plain@detail@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ +?get_devices@platform@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@W4device_type@info@23@@Z +?get_empty_interop_kernel_bundle_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBVcontext@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@@Z +?get_filtering_mode@sampler@_V1@sycl@@QEBA?AW4filtering_mode@23@XZ +?get_flags@stream@_V1@sycl@@AEBAIXZ +?get_handle@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AUimage_mem_handle@23456@XZ +?get_image_channel_type@experimental@oneapi@ext@_V1@sycl@@YA?AW4image_channel_type@45@Uimage_mem_handle@12345@AEBVdevice@45@AEBVcontext@45@@Z +?get_image_channel_type@experimental@oneapi@ext@_V1@sycl@@YA?AW4image_channel_type@45@Uimage_mem_handle@12345@AEBVqueue@45@@Z +?get_image_memory_support@experimental@oneapi@ext@_V1@sycl@@YA?AV?$vector@W4image_memory_handle_type@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4image_memory_handle_type@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z +?get_image_memory_support@experimental@oneapi@ext@_V1@sycl@@YA?AV?$vector@W4image_memory_handle_type@experimental@oneapi@ext@_V1@sycl@@V?$allocator@W4image_memory_handle_type@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@AEBUimage_descriptor@12345@AEBVqueue@45@@Z +?get_image_num_channels@experimental@oneapi@ext@_V1@sycl@@YAIUimage_mem_handle@12345@AEBVdevice@45@AEBVcontext@45@@Z +?get_image_num_channels@experimental@oneapi@ext@_V1@sycl@@YAIUimage_mem_handle@12345@AEBVqueue@45@@Z +?get_image_range@experimental@oneapi@ext@_V1@sycl@@YA?AV?$range@$02@45@Uimage_mem_handle@12345@AEBVdevice@45@AEBVcontext@45@@Z +?get_image_range@experimental@oneapi@ext@_V1@sycl@@YA?AV?$range@$02@45@Uimage_mem_handle@12345@AEBVqueue@45@@Z +?get_impl@handler@_V1@sycl@@AEAAPEAVhandler_impl@detail@23@XZ +?get_kernel@kernel_bundle_plain@detail@_V1@sycl@@IEBA?AVkernel@34@AEBVkernel_id@34@@Z +?get_kernel_bundle@kernel@_V1@sycl@@QEBA?AV?$kernel_bundle@$01@23@XZ +?get_kernel_bundle_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBVcontext@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@AEBV?$span@D$0?0@23@W4bundle_state@23@@Z +?get_kernel_bundle_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBVcontext@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@AEBV?$vector@Vkernel_id@_V1@sycl@@V?$allocator@Vkernel_id@_V1@sycl@@@std@@@5@W4bundle_state@23@@Z +?get_kernel_bundle_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBVcontext@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@W4bundle_state@23@@Z +?get_kernel_bundle_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBVcontext@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@W4bundle_state@23@AEBV?$function@$$A6A_NAEBV?$shared_ptr@Vdevice_image_impl@detail@_V1@sycl@@@std@@@Z@5@@Z +?get_kernel_id_impl@detail@_V1@sycl@@YA?AVkernel_id@23@Vstring_view@123@@Z +?get_kernel_ids@_V1@sycl@@YA?AV?$vector@Vkernel_id@_V1@sycl@@V?$allocator@Vkernel_id@_V1@sycl@@@std@@@std@@XZ +?get_kernel_ids@kernel_bundle_plain@detail@_V1@sycl@@QEBA?AV?$vector@Vkernel_id@_V1@sycl@@V?$allocator@Vkernel_id@_V1@sycl@@@std@@@std@@XZ +?get_max_statement_size@stream@_V1@sycl@@QEBA_KXZ +?get_mem_granularity@experimental@oneapi@ext@_V1@sycl@@YA_KAEBVcontext@45@W4granularity_mode@12345@@Z +?get_mem_granularity@experimental@oneapi@ext@_V1@sycl@@YA_KAEBVdevice@45@AEBVcontext@45@W4granularity_mode@12345@@Z +?get_mip_level_mem_handle@experimental@oneapi@ext@_V1@sycl@@YA?AUimage_mem_handle@12345@U612345@IAEBVdevice@45@AEBVcontext@45@@Z +?get_mip_level_mem_handle@experimental@oneapi@ext@_V1@sycl@@YA?AUimage_mem_handle@12345@U612345@IAEBVqueue@45@@Z +?get_mip_level_mem_handle@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AUimage_mem_handle@23456@I@Z +?get_name@kernel_id@_V1@sycl@@QEBAPEBDXZ +?get_node_from_event@node@experimental@oneapi@ext@_V1@sycl@@SA?AV123456@Vevent@56@@Z +?get_nodes@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEBA?AV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ +?get_num_channels@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBAIXZ +?get_pipe_name@pipe_base@experimental@intel@ext@_V1@sycl@@KA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBX@Z +?get_pipe_name_impl@pipe_base@experimental@intel@ext@_V1@sycl@@KA?AVstring@detail@56@PEBX@Z +?get_pitch@image_plain@detail@_V1@sycl@@IEBA?AV?$range@$01@34@XZ +?get_platform@context@_V1@sycl@@QEBA?AVplatform@23@XZ +?get_platform@device@_V1@sycl@@QEBA?AVplatform@23@XZ +?get_platforms@platform@_V1@sycl@@SA?AV?$vector@Vplatform@_V1@sycl@@V?$allocator@Vplatform@_V1@sycl@@@std@@@std@@XZ +?get_pointer_device@_V1@sycl@@YA?AVdevice@12@PEBXAEBVcontext@12@@Z +?get_pointer_type@_V1@sycl@@YA?AW4alloc@usm@12@PEBXAEBVcontext@12@@Z +?get_pointer_type@detail@_V1@sycl@@YA?AW4alloc@usm@23@PEBXAEAVcontext_impl@123@@Z +?get_precision@stream@_V1@sycl@@QEBA_KXZ +?get_predecessors@node@experimental@oneapi@ext@_V1@sycl@@QEBA?AV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ +?get_queue@fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEBA?AVqueue@56@XZ +?get_range@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AV?$range@$02@56@XZ +?get_range@image_plain@detail@_V1@sycl@@IEBA?AV?$range@$02@34@XZ +?get_required_mem_size@executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEBA_KXZ +?get_reserved_size_current@memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA_KXZ +?get_root_nodes@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEBA?AV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ +?get_size@image_plain@detail@_V1@sycl@@IEBA_KXZ +?get_size@stream@_V1@sycl@@QEBA_KXZ +?get_specialization_constant_impl@kernel_bundle_plain@detail@_V1@sycl@@IEBAXPEBDPEAX@Z +?get_stream_mode@stream@_V1@sycl@@QEBA?AW4stream_manipulator@23@XZ +?get_successors@node@experimental@oneapi@ext@_V1@sycl@@QEBA?AV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@XZ +?get_threshold@memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA_KXZ +?get_type@image_mem@experimental@oneapi@ext@_V1@sycl@@QEBA?AW4image_type@23456@XZ +?get_type@node@experimental@oneapi@ext@_V1@sycl@@QEBA?AW4node_type@23456@XZ +?get_used_size_current@memory_pool@experimental@oneapi@ext@_V1@sycl@@QEBA_KXZ +?get_wait_list@event@_V1@sycl@@QEAA?AV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@XZ +?get_width@stream@_V1@sycl@@QEBA_KXZ +?get_work_item_buffer_size@stream@_V1@sycl@@QEBA_KXZ +?gpu_selector_v@_V1@sycl@@YAHAEBVdevice@12@@Z +?handleRelease@buffer_plain@detail@_V1@sycl@@IEBAXXZ +?has@device@_V1@sycl@@QEBA_NW4aspect@23@@Z +?has@platform@_V1@sycl@@QEBA_NW4aspect@23@@Z +?has_context@exception@_V1@sycl@@QEBA_NXZ +?has_extension@detail@opencl@_V1@sycl@@YA_NAEBVdevice@34@Vstring_view@134@@Z +?has_extension@detail@opencl@_V1@sycl@@YA_NAEBVplatform@34@Vstring_view@134@@Z +?has_extension@device@_V1@sycl@@AEBA_NVstring_view@detail@23@@Z +?has_extension@device@_V1@sycl@@QEBA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z +?has_extension@opencl@_V1@sycl@@YA_NAEBVdevice@23@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z +?has_extension@opencl@_V1@sycl@@YA_NAEBVplatform@23@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z +?has_extension@platform@_V1@sycl@@AEBA_NVstring_view@detail@23@@Z +?has_extension@platform@_V1@sycl@@QEBA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z +?has_kernel@device_image_plain@detail@_V1@sycl@@QEBA_NAEBVkernel_id@34@@Z +?has_kernel@device_image_plain@detail@_V1@sycl@@QEBA_NAEBVkernel_id@34@AEBVdevice@34@@Z +?has_kernel@kernel_bundle_plain@detail@_V1@sycl@@QEBA_NAEBVkernel_id@34@@Z +?has_kernel@kernel_bundle_plain@detail@_V1@sycl@@QEBA_NAEBVkernel_id@34@AEBVdevice@34@@Z +?has_kernel_bundle_impl@detail@_V1@sycl@@YA_NAEBVcontext@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV?$vector@Vkernel_id@_V1@sycl@@V?$allocator@Vkernel_id@_V1@sycl@@@std@@@6@W4bundle_state@23@@Z +?has_kernel_bundle_impl@detail@_V1@sycl@@YA_NAEBVcontext@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@W4bundle_state@23@@Z +?has_specialization_constant_impl@kernel_bundle_plain@detail@_V1@sycl@@IEBA_NPEBD@Z +?increase_threshold_to@memory_pool@experimental@oneapi@ext@_V1@sycl@@QEAAX_K@Z +?instantiateKernelOnHost@handler@_V1@sycl@@AEAAXPEAX@Z +?internalProfilingTagImpl@handler@_V1@sycl@@AEAAXXZ +?isBackendSupportedFillSize@handler@_V1@sycl@@CA_N_K@Z +?isConstOrGlobal@handler@_V1@sycl@@CA_NW4target@access@23@@Z +?isDeviceGlobalUsedInKernel@detail@_V1@sycl@@YA_NPEBX@Z +?isImageOrImageArray@handler@_V1@sycl@@CA_NW4target@access@23@@Z +?isMemoryObjectUsedByGraph@AccessorBaseHost@detail@_V1@sycl@@QEBA_NXZ +?isOutOfRange@detail@_V1@sycl@@YA_NV?$vec@H$03@23@W4addressing_mode@23@V?$range@$02@23@@Z +?isPathPresent@OSUtil@detail@_V1@sycl@@SA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z +?isPlaceholder@AccessorBaseHost@detail@_V1@sycl@@QEBA_NXZ +?isStateExplicitKernelBundle@handler@_V1@sycl@@AEBA_NXZ +?isToplevel@tls_code_loc_t@detail@_V1@sycl@@QEBA_NXZ +?isValidModeForDestinationAccessor@handler@_V1@sycl@@CA_NW4mode@access@23@@Z +?isValidModeForSourceAccessor@handler@_V1@sycl@@CA_NW4mode@access@23@@Z +?isValidTargetForExplicitOp@handler@_V1@sycl@@CA_NW4target@access@23@@Z +?is_accelerator@device@_V1@sycl@@QEBA_NXZ +?is_compatible@_V1@sycl@@YA_NAEBV?$vector@Vkernel_id@_V1@sycl@@V?$allocator@Vkernel_id@_V1@sycl@@@std@@@std@@AEBVdevice@12@@Z +?is_cpu@device@_V1@sycl@@QEBA_NXZ +?is_gpu@device@_V1@sycl@@QEBA_NXZ +?is_in_fusion_mode@fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEBA_NXZ +?is_in_order@queue@_V1@sycl@@QEBA_NXZ +?is_specialization_constant_set@kernel_bundle_plain@detail@_V1@sycl@@IEBA_NPEBD@Z +?join_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBV?$vector@V?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@V?$allocator@V?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@@2@@5@W4bundle_state@23@@Z +?khr_empty@queue@_V1@sycl@@QEBA_NXZ +?khr_get_default_context@platform@_V1@sycl@@QEBA?AVcontext@23@XZ +?lgamma_r_impl@detail@_V1@sycl@@YA?AVhalf@half_impl@123@V45123@PEAH@Z +?lgamma_r_impl@detail@_V1@sycl@@YAMMPEAH@Z +?lgamma_r_impl@detail@_V1@sycl@@YANNPEAH@Z +?link_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBV?$vector@V?$kernel_bundle@$00@_V1@sycl@@V?$allocator@V?$kernel_bundle@$00@_V1@sycl@@@std@@@5@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@AEBVproperty_list@23@@Z +?link_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@PEBV?$kernel_bundle@$00@23@_KAEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@_N@Z +?makeDir@OSUtil@detail@_V1@sycl@@SAHPEBD@Z +?make_context@detail@_V1@sycl@@YA?AVcontext@23@_KAEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@W4backend@23@_NAEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@6@@Z +?make_device@detail@_V1@sycl@@YA?AVdevice@23@_KW4backend@23@@Z +?make_device@detail@level_zero@oneapi@ext@_V1@sycl@@YA?AVdevice@56@AEBVplatform@56@_K@Z +?make_edge@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEAVnode@34567@0@Z +?make_error_code@_V1@sycl@@YA?AVerror_code@std@@W4errc@12@@Z +?make_event@detail@_V1@sycl@@YA?AVevent@23@_KAEBVcontext@23@W4backend@23@@Z +?make_event@detail@_V1@sycl@@YA?AVevent@23@_KAEBVcontext@23@_NW4backend@23@@Z +?make_kernel@detail@_V1@sycl@@YA?AVkernel@23@AEBVcontext@23@AEBV?$kernel_bundle@$01@23@_K_NW4backend@23@@Z +?make_kernel@detail@_V1@sycl@@YA?AVkernel@23@_KAEBVcontext@23@W4backend@23@@Z +?make_kernel_bundle@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@_KAEBVcontext@23@W4bundle_state@23@W4backend@23@@Z +?make_kernel_bundle@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@_KAEBVcontext@23@_NW4bundle_state@23@W4backend@23@@Z +?make_kernel_bundle_from_source@detail@experimental@oneapi@ext@_V1@sycl@@YA?AV?$kernel_bundle@$02@56@AEBVcontext@56@W4source_language@23456@AEBV?$vector@W4byte@std@@V?$allocator@W4byte@std@@@2@@std@@V?$vector@U?$pair@Vstring_view@detail@_V1@sycl@@V1234@@std@@V?$allocator@U?$pair@Vstring_view@detail@_V1@sycl@@V1234@@std@@@2@@std@@@Z +?make_kernel_bundle_from_source@detail@experimental@oneapi@ext@_V1@sycl@@YA?AV?$kernel_bundle@$02@56@AEBVcontext@56@W4source_language@23456@Vstring_view@156@V?$vector@U?$pair@Vstring_view@detail@_V1@sycl@@V1234@@std@@V?$allocator@U?$pair@Vstring_view@detail@_V1@sycl@@V1234@@std@@@2@@std@@@Z +?make_platform@detail@_V1@sycl@@YA?AVplatform@23@_KW4backend@23@@Z +?make_queue@detail@_V1@sycl@@YA?AVqueue@23@_KHAEBVcontext@23@PEBVdevice@23@_NAEBVproperty_list@23@AEBV?$function@$$A6AXVexception_list@_V1@sycl@@@Z@std@@W4backend@23@@Z +?malloc@_V1@sycl@@YAPEAX_KAEBVdevice@12@AEBVcontext@12@W4alloc@usm@12@AEBUcode_location@detail@12@@Z +?malloc@_V1@sycl@@YAPEAX_KAEBVdevice@12@AEBVcontext@12@W4alloc@usm@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?malloc@_V1@sycl@@YAPEAX_KAEBVqueue@12@W4alloc@usm@12@AEBUcode_location@detail@12@@Z +?malloc@_V1@sycl@@YAPEAX_KAEBVqueue@12@W4alloc@usm@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?malloc_device@_V1@sycl@@YAPEAX_KAEBVdevice@12@AEBVcontext@12@AEBUcode_location@detail@12@@Z +?malloc_device@_V1@sycl@@YAPEAX_KAEBVdevice@12@AEBVcontext@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?malloc_device@_V1@sycl@@YAPEAX_KAEBVqueue@12@AEBUcode_location@detail@12@@Z +?malloc_device@_V1@sycl@@YAPEAX_KAEBVqueue@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?malloc_host@_V1@sycl@@YAPEAX_KAEBVcontext@12@AEBUcode_location@detail@12@@Z +?malloc_host@_V1@sycl@@YAPEAX_KAEBVcontext@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?malloc_host@_V1@sycl@@YAPEAX_KAEBVqueue@12@AEBUcode_location@detail@12@@Z +?malloc_host@_V1@sycl@@YAPEAX_KAEBVqueue@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?malloc_shared@_V1@sycl@@YAPEAX_KAEBVdevice@12@AEBVcontext@12@AEBUcode_location@detail@12@@Z +?malloc_shared@_V1@sycl@@YAPEAX_KAEBVdevice@12@AEBVcontext@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?malloc_shared@_V1@sycl@@YAPEAX_KAEBVqueue@12@AEBUcode_location@detail@12@@Z +?malloc_shared@_V1@sycl@@YAPEAX_KAEBVqueue@12@AEBVproperty_list@12@AEBUcode_location@detail@12@@Z +?map@physical_mem@experimental@oneapi@ext@_V1@sycl@@QEBAPEAX_K0W4address_access_mode@23456@0@Z +?map_external_image_memory@experimental@oneapi@ext@_V1@sycl@@YA?AUimage_mem_handle@12345@Uexternal_mem@12345@AEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z +?map_external_image_memory@experimental@oneapi@ext@_V1@sycl@@YA?AUimage_mem_handle@12345@Uexternal_mem@12345@AEBUimage_descriptor@12345@AEBVqueue@45@@Z +?map_external_linear_memory@experimental@oneapi@ext@_V1@sycl@@YAPEAXUexternal_mem@12345@_K1AEBVdevice@45@AEBVcontext@45@@Z +?map_external_linear_memory@experimental@oneapi@ext@_V1@sycl@@YAPEAXUexternal_mem@12345@_K1AEBVqueue@45@@Z +?markBufferAsInternal@detail@_V1@sycl@@YAXAEBV?$shared_ptr@Vbuffer_impl@detail@_V1@sycl@@@std@@@Z +?mem_advise@experimental@oneapi@ext@_V1@sycl@@YAXVqueue@45@PEAX_KHAEBUcode_location@detail@45@@Z +?mem_advise@handler@_V1@sycl@@QEAAXPEBX_KH@Z +?mem_advise@queue@_V1@sycl@@QEAA?AVevent@23@PEBX_KHAEBUcode_location@detail@23@@Z +?mem_advise@queue@_V1@sycl@@QEAA?AVevent@23@PEBX_KHAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?mem_advise@queue@_V1@sycl@@QEAA?AVevent@23@PEBX_KHV423@AEBUcode_location@detail@23@@Z +?memcpy@experimental@oneapi@ext@_V1@sycl@@YAXVqueue@45@PEAXPEBX_KAEBUcode_location@detail@45@@Z +?memcpy@handler@_V1@sycl@@QEAAXPEAXPEBX_K@Z +?memcpy@queue@_V1@sycl@@QEAA?AVevent@23@PEAXPEBX_KAEBUcode_location@detail@23@@Z +?memcpy@queue@_V1@sycl@@QEAA?AVevent@23@PEAXPEBX_KAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?memcpy@queue@_V1@sycl@@QEAA?AVevent@23@PEAXPEBX_KV423@AEBUcode_location@detail@23@@Z +?memcpyFromDeviceGlobal@handler@_V1@sycl@@AEAAXPEAXPEBX_N_K3@Z +?memcpyFromDeviceGlobal@queue@_V1@sycl@@AEAA?AVevent@23@PEAXPEBX_N_K3AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@@Z +?memcpyFromHostOnlyDeviceGlobal@handler@_V1@sycl@@AEAAXPEAXPEBX_N_K3@Z +?memcpyToDeviceGlobal@handler@_V1@sycl@@AEAAXPEBX0_N_K2@Z +?memcpyToDeviceGlobal@queue@_V1@sycl@@AEAA?AVevent@23@PEAXPEBX_N_K3AEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@@Z +?memcpyToHostOnlyDeviceGlobal@handler@_V1@sycl@@AEAAXPEBX0_K_N11@Z +?memset@experimental@oneapi@ext@_V1@sycl@@YAXVqueue@45@PEAXH_KAEBUcode_location@detail@45@@Z +?memset@handler@_V1@sycl@@QEAAXPEAXH_K@Z +?memset@queue@_V1@sycl@@QEAA?AVevent@23@PEAXH_KAEBUcode_location@detail@23@@Z +?memset@queue@_V1@sycl@@QEAA?AVevent@23@PEAXH_KAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?memset@queue@_V1@sycl@@QEAA?AVevent@23@PEAXH_KV423@AEBUcode_location@detail@23@@Z +?message@SYCLCategory@detail@_V1@sycl@@UEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z +?modf_impl@detail@_V1@sycl@@YA?AVhalf@half_impl@123@V45123@PEAV45123@@Z +?modf_impl@detail@_V1@sycl@@YAMMPEAM@Z +?modf_impl@detail@_V1@sycl@@YANNPEAN@Z +?name@SYCLCategory@detail@_V1@sycl@@UEBAPEBDXZ +?native_specialization_constant@kernel_bundle_plain@detail@_V1@sycl@@QEBA_NXZ +?openIPCMemHandle@detail@_V1@sycl@@YAPEAXPEBW4byte@std@@_KAEBVcontext@23@AEBVdevice@23@@Z +?parallel_for@handler@_V1@sycl@@QEAAXV?$range@$00@23@Vkernel@23@@Z +?parallel_for@handler@_V1@sycl@@QEAAXV?$range@$01@23@Vkernel@23@@Z +?parallel_for@handler@_V1@sycl@@QEAAXV?$range@$02@23@Vkernel@23@@Z +?pitched_alloc_device@experimental@oneapi@ext@_V1@sycl@@YAPEAXPEA_KAEBUimage_descriptor@12345@AEBVdevice@45@AEBVcontext@45@@Z +?pitched_alloc_device@experimental@oneapi@ext@_V1@sycl@@YAPEAXPEA_KAEBUimage_descriptor@12345@AEBVqueue@45@@Z +?pitched_alloc_device@experimental@oneapi@ext@_V1@sycl@@YAPEAXPEA_K_K1IAEBVdevice@45@AEBVcontext@45@@Z +?pitched_alloc_device@experimental@oneapi@ext@_V1@sycl@@YAPEAXPEA_K_K1IAEBVqueue@45@@Z +?postProcess@HandlerAccess@detail@_V1@sycl@@SAXAEAVhandler@34@Vtype_erased_cgfo_ty@234@@Z +?preProcess@HandlerAccess@detail@_V1@sycl@@SAXAEAVhandler@34@Vtype_erased_cgfo_ty@234@@Z +?prefetch@handler@_V1@sycl@@QEAAXPEBX_K@Z +?prefetch@handler@_V1@sycl@@QEAAXPEBX_KW4prefetch_type@experimental@oneapi@ext@23@@Z +?prefetch@queue@_V1@sycl@@QEAA?AVevent@23@PEBX_KAEBUcode_location@detail@23@@Z +?prefetch@queue@_V1@sycl@@QEAA?AVevent@23@PEBX_KAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@AEBUcode_location@detail@23@@Z +?prefetch@queue@_V1@sycl@@QEAA?AVevent@23@PEBX_KV423@AEBUcode_location@detail@23@@Z +?prepare_for_device_copy@experimental@oneapi@ext@_V1@sycl@@YAXPEBX_KAEBVcontext@45@@Z +?prepare_for_device_copy@experimental@oneapi@ext@_V1@sycl@@YAXPEBX_KAEBVqueue@45@@Z +?print_graph@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEBAXVstring_view@267@_N@Z +?print_graph@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEBAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N@Z +?put@ipc_memory@experimental@oneapi@ext@_V1@sycl@@YAXAEAUhandle@123456@AEBVcontext@56@@Z +?query@tls_code_loc_t@detail@_V1@sycl@@QEAAAEBUcode_location@234@XZ +?reduComputeWGSize@detail@_V1@sycl@@YA_K_K0AEA_K@Z +?reduGetMaxNumConcurrentWorkGroups@detail@_V1@sycl@@YAIAEAVhandler@23@@Z +?reduGetMaxWGSize@detail@_V1@sycl@@YA_KAEAVhandler@23@_K@Z +?reduGetPreferredWGSize@detail@_V1@sycl@@YA_KAEAVhandler@23@_K@Z +?registerDynamicParameter@handler@_V1@sycl@@AEAAXPEAVdynamic_parameter_impl@detail@experimental@oneapi@ext@23@H@Z +?release_external_memory@experimental@oneapi@ext@_V1@sycl@@YAXUexternal_mem@12345@AEBVdevice@45@AEBVcontext@45@@Z +?release_external_memory@experimental@oneapi@ext@_V1@sycl@@YAXUexternal_mem@12345@AEBVqueue@45@@Z +?release_external_semaphore@experimental@oneapi@ext@_V1@sycl@@YAXUexternal_semaphore@12345@AEBVdevice@45@AEBVcontext@45@@Z +?release_external_semaphore@experimental@oneapi@ext@_V1@sycl@@YAXUexternal_semaphore@12345@AEBVqueue@45@@Z +?release_from_device_copy@experimental@oneapi@ext@_V1@sycl@@YAXPEBXAEBVcontext@45@@Z +?release_from_device_copy@experimental@oneapi@ext@_V1@sycl@@YAXPEBXAEBVqueue@45@@Z +?remove@free_function_info_map@detail@_V1@sycl@@YAXPEBQEBDPEBII@Z +?removeDuplicateDevices@detail@_V1@sycl@@YA?BV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV45@@Z +?remquo_impl@detail@_V1@sycl@@YA?AVhalf@half_impl@123@V45123@0PEAH@Z +?remquo_impl@detail@_V1@sycl@@YAMMMPEAH@Z +?remquo_impl@detail@_V1@sycl@@YANNNPEAH@Z +?reserve_virtual_mem@experimental@oneapi@ext@_V1@sycl@@YA_K_K0AEBVcontext@45@@Z +?reset@filter_selector@ONEAPI@_V1@sycl@@QEBAXXZ +?reset@filter_selector@oneapi@ext@_V1@sycl@@QEBAXXZ +?sampledImageConstructorNotification@detail@_V1@sycl@@YAXPEAX0AEBV?$optional@W4image_target@_V1@sycl@@@std@@PEBXIAEBUcode_location@123@@Z +?sampledImageConstructorNotification@image_plain@detail@_V1@sycl@@IEAAXAEBUcode_location@234@PEAXPEBXIQEA_KW4image_format@34@AEBUimage_sampler@34@@Z +?sampledImageDestructorNotification@image_plain@detail@_V1@sycl@@IEAAXPEAX@Z +?saveCodeLoc@handler@_V1@sycl@@AEAAXUcode_location@detail@23@_N@Z +?select_device@detail@_V1@sycl@@YA?AVdevice@23@AEBV?$function@$$A6AHAEBVdevice@_V1@sycl@@@Z@std@@@Z +?select_device@detail@_V1@sycl@@YA?AVdevice@23@AEBV?$function@$$A6AHAEBVdevice@_V1@sycl@@@Z@std@@AEBVcontext@23@@Z +?select_device@device_selector@_V1@sycl@@UEBA?AVdevice@23@XZ +?select_device@filter_selector@ONEAPI@_V1@sycl@@UEBA?AVdevice@34@XZ +?select_device@filter_selector@oneapi@ext@_V1@sycl@@UEBA?AVdevice@45@XZ +?setArgHelper@handler@_V1@sycl@@AEAAXH$$QEAVraw_kernel_arg@experimental@oneapi@ext@23@@Z +?setArgHelper@handler@_V1@sycl@@AEAAXH$$QEAVsampler@23@@Z +?setArgHelper@handler@_V1@sycl@@AEAAXH$$QEAVstream@23@@Z +?setArgHelper@handler@_V1@sycl@@AEAAXHAEAVwork_group_memory_impl@detail@23@@Z +?setArgsHelper@handler@_V1@sycl@@AEAAXH@Z +?setArgsToAssociatedAccessors@handler@_V1@sycl@@AEAAXXZ +?setDevice@HostProfilingInfo@detail@_V1@sycl@@QEAAXPEAVdevice_impl@234@@Z +?setDeviceKernelInfo@handler@_V1@sycl@@AEAAX$$QEAVkernel@23@@Z +?setDeviceKernelInfoPtr@handler@_V1@sycl@@AEAAXPEAVDeviceKernelInfo@detail@23@@Z +?setHandlerKernelBundle@handler@_V1@sycl@@AEAAXVkernel@23@@Z +?setKernelFunc@handler@_V1@sycl@@AEAAXPEAX@Z +?setKernelLaunchProperties@handler@_V1@sycl@@AEAAXAEBU?$PropsHolder@Uwork_group_scratch_size@experimental@oneapi@ext@_V1@sycl@@Ucache_config@2intel@456@Uuse_root_sync_key@23456@Uwork_group_progress_key@23456@Usub_group_progress_key@23456@Uwork_item_progress_key@23456@U?$cluster_size@$00@cuda@23456@U?$cluster_size@$01@cuda@23456@U?$cluster_size@$02@cuda@23456@@kernel_launch_properties_v1@detail@23@@Z +?setLocalAccessorArgHelper@handler@_V1@sycl@@AEAAXHAEAVLocalAccessorBaseHost@detail@23@@Z +?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$00@23@0V?$id@$00@23@@Z +?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$00@23@V?$id@$00@23@@Z +?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$00@23@_N@Z +?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$01@23@0V?$id@$01@23@@Z +?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$01@23@V?$id@$01@23@@Z +?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$01@23@_N@Z +?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$02@23@0V?$id@$02@23@@Z +?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$02@23@V?$id@$02@23@@Z +?setNDRangeDescriptor@handler@_V1@sycl@@AEAAXV?$range@$02@23@_N@Z +?setStateExplicitKernelBundle@handler@_V1@sycl@@AEAAXXZ +?setStateSpecConstSet@handler@_V1@sycl@@AEAAXXZ +?setType@handler@_V1@sycl@@AEAAXW4CGType@detail@23@@Z +?setUserFacingNodeType@handler@_V1@sycl@@AEAAXW4node_type@experimental@oneapi@ext@23@@Z +?set_access_mode@experimental@oneapi@ext@_V1@sycl@@YAXPEBX_KW4address_access_mode@12345@AEBVcontext@45@@Z +?set_active_index@dynamic_command_group@experimental@oneapi@ext@_V1@sycl@@QEAAX_K@Z +?set_arg@handler@_V1@sycl@@QEAAXH$$QEAVraw_kernel_arg@experimental@oneapi@ext@23@@Z +?set_final_data_internal@buffer_plain@detail@_V1@sycl@@IEAAXAEBV?$function@$$A6AXAEBV?$function@$$A6AXPEAX@Z@std@@@Z@std@@@Z +?set_final_data_internal@buffer_plain@detail@_V1@sycl@@IEAAXXZ +?set_final_data_internal@image_plain@detail@_V1@sycl@@IEAAXAEBV?$function@$$A6AXAEBV?$function@$$A6AXPEAX@Z@std@@@Z@std@@@Z +?set_final_data_internal@image_plain@detail@_V1@sycl@@IEAAXXZ +?set_flag@stream@_V1@sycl@@AEBAXI@Z +?set_flag@stream@_V1@sycl@@AEBAXII@Z +?set_manipulator@stream@_V1@sycl@@AEBAXW4stream_manipulator@23@@Z +?set_specialization_constant_impl@kernel_bundle_plain@detail@_V1@sycl@@IEAAXPEBDPEAX_K@Z +?set_write_back@buffer_plain@detail@_V1@sycl@@IEAAX_N@Z +?set_write_back@image_plain@detail@_V1@sycl@@IEAAX_N@Z +?sincos_impl@detail@_V1@sycl@@YA?AVhalf@half_impl@123@V45123@PEAV45123@@Z +?sincos_impl@detail@_V1@sycl@@YAMMPEAM@Z +?sincos_impl@detail@_V1@sycl@@YANNPEAN@Z +?single_task@handler@_V1@sycl@@QEAAXVkernel@23@@Z +?size@exception_list@_V1@sycl@@QEBA_KXZ +?size@physical_mem@experimental@oneapi@ext@_V1@sycl@@QEBA_KXZ +?size@stream@_V1@sycl@@QEBA_KXZ +?start@HostProfilingInfo@detail@_V1@sycl@@QEAAXXZ +?start_fusion@fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAAXXZ +?storeRawArg@handler@_V1@sycl@@AEAAPEAXAEBVraw_kernel_arg@experimental@oneapi@ext@23@@Z +?storeRawArg@handler@_V1@sycl@@AEAAPEAXPEBX_K@Z +?submit_graph_direct_with_event_impl@_V1@sycl@@YA?AVevent@12@AEBVqueue@12@AEAV?$command_graph@$00@experimental@oneapi@ext@12@V?$span@$$CBVevent@_V1@sycl@@$0?0@12@AEBUcode_location@detail@12@@Z +?submit_graph_direct_without_event_impl@_V1@sycl@@YAXAEBVqueue@12@AEAV?$command_graph@$00@experimental@oneapi@ext@12@V?$span@$$CBVevent@_V1@sycl@@$0?0@12@AEBUcode_location@detail@12@@Z +?submit_kernel_direct_with_event_impl@_V1@sycl@@YA?AVevent@12@AEBVqueue@12@AEBVnd_range_view@nd_range_view_v1@detail@12@AEAVHostKernelRefBase@712@PEAVDeviceKernelInfo@712@V?$span@$$CBVevent@_V1@sycl@@$0?0@12@AEBU?$PropsHolder@Uwork_group_scratch_size@experimental@oneapi@ext@_V1@sycl@@Ucache_config@2intel@456@Uuse_root_sync_key@23456@Uwork_group_progress_key@23456@Usub_group_progress_key@23456@Uwork_item_progress_key@23456@U?$cluster_size@$00@cuda@23456@U?$cluster_size@$01@cuda@23456@U?$cluster_size@$02@cuda@23456@@kernel_launch_properties_v1@712@AEBUcode_location@712@_N@Z +?submit_kernel_direct_without_event_impl@_V1@sycl@@YAXAEBVqueue@12@AEBVnd_range_view@nd_range_view_v1@detail@12@AEAVHostKernelRefBase@612@PEAVDeviceKernelInfo@612@V?$span@$$CBVevent@_V1@sycl@@$0?0@12@AEBU?$PropsHolder@Uwork_group_scratch_size@experimental@oneapi@ext@_V1@sycl@@Ucache_config@2intel@456@Uuse_root_sync_key@23456@Uwork_group_progress_key@23456@Usub_group_progress_key@23456@Uwork_item_progress_key@23456@U?$cluster_size@$00@cuda@23456@U?$cluster_size@$01@cuda@23456@U?$cluster_size@$02@cuda@23456@@kernel_launch_properties_v1@612@AEBUcode_location@612@_N@Z +?submit_with_event_impl@queue@_V1@sycl@@AEBA?AVevent@23@AEBVtype_erased_cgfo_ty@detail@23@AEBVSubmissionInfo@v1@623@AEBUcode_location@623@_N@Z +?submit_without_event_impl@queue@_V1@sycl@@AEBAXAEBVtype_erased_cgfo_ty@detail@23@AEBVSubmissionInfo@v1@523@AEBUcode_location@523@_N@Z +?supportsUSMFill2D@handler@_V1@sycl@@AEAA_NXZ +?supportsUSMMemcpy2D@handler@_V1@sycl@@AEAA_NXZ +?supportsUSMMemset2D@handler@_V1@sycl@@AEAA_NXZ +?supports_importing_handle_type@experimental@oneapi@ext@_V1@sycl@@YA_NW4external_mem_handle_type@12345@AEBVdevice@45@@Z +?sycl_category@_V1@sycl@@YAAEBVerror_category@std@@XZ +?throwIfActionIsCreated@handler@_V1@sycl@@AEAAXXZ +?throwOnKernelParameterMisuse@handler@_V1@sycl@@AEBAXAEBUCompileTimeKernelInfoTy@compile_time_kernel_info_v1@detail@23@@Z +?throw_asynchronous@queue@_V1@sycl@@QEAAXXZ +?unmap@experimental@oneapi@ext@_V1@sycl@@YAXPEBX_KAEBVcontext@45@@Z +?unmap_external_image_memory@experimental@oneapi@ext@_V1@sycl@@YAXUimage_mem_handle@12345@W4image_type@12345@AEBVdevice@45@AEBVcontext@45@@Z +?unmap_external_linear_memory@experimental@oneapi@ext@_V1@sycl@@YAXPEAXAEBVdevice@45@AEBVcontext@45@@Z +?unsampledImageConstructorNotification@detail@_V1@sycl@@YAXPEAX0AEBV?$optional@W4image_target@_V1@sycl@@@std@@W4mode@access@23@PEBXIAEBUcode_location@123@@Z +?unsampledImageConstructorNotification@image_plain@detail@_V1@sycl@@IEAAXAEBUcode_location@234@PEAXPEBXIQEA_KW4image_format@34@@Z +?unsampledImageDestructorNotification@image_plain@detail@_V1@sycl@@IEAAXPEAX@Z +?unset_flag@stream@_V1@sycl@@AEBAXI@Z +?update@executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEBV?$command_graph@$0A@@34567@@Z +?update@executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEBV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@@Z +?update@executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEBVnode@34567@@Z +?updateAccessor@dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@IEAAXPEBVAccessorBaseHost@267@@Z +?updateLocalAccessor@dynamic_local_accessor_base@detail@experimental@oneapi@ext@_V1@sycl@@IEAAXV?$range@$02@67@@Z +?updateValue@dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@IEAAXPEBVraw_kernel_arg@34567@_K@Z +?updateValue@dynamic_parameter_base@detail@experimental@oneapi@ext@_V1@sycl@@IEAAXPEBX_K@Z +?updateWorkGroupMem@dynamic_work_group_memory_base@detail@experimental@oneapi@ext@_V1@sycl@@IEAAX_K@Z +?use_kernel_bundle@handler@_V1@sycl@@QEAAXAEBV?$kernel_bundle@$01@23@@Z +?verifyReductionProps@detail@_V1@sycl@@YAXAEBVproperty_list@23@@Z +?verifyUSMAllocatorProperties@_V1@sycl@@YAXAEBVproperty_list@12@@Z +?verifyUsedKernelBundleInternal@handler@_V1@sycl@@AEAAXVstring_view@detail@23@@Z +?wait@event@_V1@sycl@@QEAAXXZ +?wait@event@_V1@sycl@@SAXAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@@Z +?wait@queue@_V1@sycl@@QEAAXAEBUcode_location@detail@23@@Z +?waitEvents@detail@_V1@sycl@@YAXV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@@Z +?wait_and_throw@event@_V1@sycl@@QEAAXXZ +?wait_and_throw@event@_V1@sycl@@SAXAEBV?$vector@Vevent@_V1@sycl@@V?$allocator@Vevent@_V1@sycl@@@std@@@std@@@Z +?wait_and_throw@queue@_V1@sycl@@QEAAXAEBUcode_location@detail@23@@Z +?wait_and_throw_proxy@queue@_V1@sycl@@QEAAXAEBUcode_location@detail@23@@Z +?wait_non_blocking@pipe_base@experimental@intel@ext@_V1@sycl@@KA_NAEBVevent@56@@Z +?wait_proxy@queue@_V1@sycl@@QEAAXAEBUcode_location@detail@23@@Z +?what@exception@_V1@sycl@@UEBAPEBDXZ +DllMain +__sycl_register_lib +__sycl_unregister_lib