Skip to content

[SYCL] Link and include LLVMSupport in SYCL library #16763

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 20 commits into
base: sycl
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
a89edc6
[SYCL] Link and include LLVM utility headers in SYCL library
steffenlarsen Jan 24, 2025
4b479b2
Disable unused parameter warnings in library
steffenlarsen Jan 24, 2025
cb78c5e
Fix lowercase private
steffenlarsen Jan 24, 2025
8eedefa
Change to LIB_OBJ_NAME
steffenlarsen Jan 24, 2025
c8a5bf9
Exclude warning flag on MSVC
steffenlarsen Jan 24, 2025
a1c5055
Address binary size on non-MSVC
steffenlarsen Jan 27, 2025
524e961
Fix to use LIB_NAME instead of LIB_OBJ_NAME
steffenlarsen Jan 27, 2025
0a5c250
Avoid need for disabling warnings from LLVM headers
steffenlarsen Jan 27, 2025
fb33872
Merge remote-tracking branch 'intel/sycl' into steffen/link_llvm_tooling
steffenlarsen May 1, 2025
03718f8
Only include LLVMSupport for now
steffenlarsen May 1, 2025
a485a81
Switch to interface to try and avoid warnings
steffenlarsen May 1, 2025
8c98e5d
Fix formatting
steffenlarsen May 1, 2025
71b1abf
Revert to private
steffenlarsen May 1, 2025
0d43f6c
Change include to object target
steffenlarsen May 1, 2025
1a45733
Merge remote-tracking branch 'intel/sycl' into steffen/link_llvm_tooling
steffenlarsen May 6, 2025
1a306df
Remove LLVM ABI check
steffenlarsen May 6, 2025
e65e559
Merge remote-tracking branch 'intel/sycl' into steffen/link_llvm_tooling
steffenlarsen May 9, 2025
a909259
Enable stack tracing for Windows when enabled globally
steffenlarsen May 12, 2025
c25f17d
Merge remote-tracking branch 'intel/sycl' into steffen/link_llvm_tooling
steffenlarsen May 13, 2025
cd290c4
Merge remote-tracking branch 'intel/sycl' into steffen/link_llvm_tooling
steffenlarsen May 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions sycl/source/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,7 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
if (SYCL_ENABLE_STACK_PRINTING)
if(NOT MSVC OR (CMAKE_BUILD_TYPE STREQUAL "Debug" AND ARG_COMPILE_OPTIONS MATCHES ".*MDd.*") OR
(NOT CMAKE_BUILD_TYPE STREQUAL "Debug" AND NOT ARG_COMPILE_OPTIONS MATCHES ".*MDd.*"))
add_dependencies(${LIB_NAME} LLVMSupport)
target_compile_definitions(${LIB_OBJ_NAME} PUBLIC ENABLE_STACK_TRACE)
target_link_libraries(${LIB_NAME} PRIVATE LLVMSupport)
endif()
endif()

Expand Down Expand Up @@ -192,6 +190,11 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
endif()
endif()

# Link with LLVMSupport for shared utilities.
add_dependencies(${LIB_NAME} LLVMSupport)
target_link_libraries(${LIB_NAME} PRIVATE LLVMSupport)
target_include_directories(${LIB_OBJ_NAME} SYSTEM PRIVATE ${LLVM_MAIN_INCLUDE_DIR})

check_linker_flag(CXX "-Wl,--gc-sections" LINKER_SUPPORTS_WL_GC_SECTIONS)
if(LINKER_SUPPORTS_WL_GC_SECTIONS)
# Reduces the size of the resulting library by having the linker perform
Expand Down
39 changes: 0 additions & 39 deletions sycl/source/detail/compiler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,45 +35,6 @@
#define __SYCL_DEVICE_BINARY_TARGET_LLVM_NVPTX64 "llvm_nvptx64"
#define __SYCL_DEVICE_BINARY_TARGET_LLVM_AMDGCN "llvm_amdgcn"

/// Device binary image property set names recognized by the SYCL runtime.
/// Name must be consistent with
/// PropertySetRegistry::SYCL_SPECIALIZATION_CONSTANTS defined in
/// PropertySetIO.h
#define __SYCL_PROPERTY_SET_SPEC_CONST_MAP "SYCL/specialization constants"
/// PropertySetRegistry::SYCL_SPEC_CONSTANTS_DEFAULT_VALUES defined in
/// PropertySetIO.h
#define __SYCL_PROPERTY_SET_SPEC_CONST_DEFAULT_VALUES_MAP \
"SYCL/specialization constants default values"
/// TODO: remove req mask when sycl devicelib online linking path is removed.
/// PropertySetRegistry::SYCL_DEVICELIB_REQ_MASK defined in PropertySetIO.h
#define __SYCL_PROPERTY_SET_DEVICELIB_REQ_MASK "SYCL/devicelib req mask"
/// PropertySetRegistry::SYCL_DEVICELIB_METADATA defined in PropertySetIO.h
#define __SYCL_PROPERTY_SET_DEVICELIB_METADATA "SYCL/devicelib metadata"
/// PropertySetRegistry::SYCL_KERNEL_PARAM_OPT_INFO defined in PropertySetIO.h
#define __SYCL_PROPERTY_SET_KERNEL_PARAM_OPT_INFO "SYCL/kernel param opt"
/// PropertySetRegistry::SYCL_KERNEL_PROGRAM_METADATA defined in PropertySetIO.h
#define __SYCL_PROPERTY_SET_PROGRAM_METADATA "SYCL/program metadata"
/// PropertySetRegistry::SYCL_MISC_PROP defined in PropertySetIO.h
#define __SYCL_PROPERTY_SET_SYCL_MISC_PROP "SYCL/misc properties"
/// PropertySetRegistry::SYCL_ASSERT_USED defined in PropertySetIO.h
#define __SYCL_PROPERTY_SET_SYCL_ASSERT_USED "SYCL/assert used"
/// PropertySetRegistry::SYCL_EXPORTED_SYMBOLS defined in PropertySetIO.h
#define __SYCL_PROPERTY_SET_SYCL_EXPORTED_SYMBOLS "SYCL/exported symbols"
/// PropertySetRegistry::SYCL_IMPORTED_SYMBOLS defined in PropertySetIO.h
#define __SYCL_PROPERTY_SET_SYCL_IMPORTED_SYMBOLS "SYCL/imported symbols"
/// PropertySetRegistry::SYCL_DEVICE_GLOBALS defined in PropertySetIO.h
#define __SYCL_PROPERTY_SET_SYCL_DEVICE_GLOBALS "SYCL/device globals"
/// PropertySetRegistry::SYCL_DEVICE_REQUIREMENTS defined in PropertySetIO.h
#define __SYCL_PROPERTY_SET_SYCL_DEVICE_REQUIREMENTS "SYCL/device requirements"
/// PropertySetRegistry::SYCL_HOST_PIPES defined in PropertySetIO.h
#define __SYCL_PROPERTY_SET_SYCL_HOST_PIPES "SYCL/host pipes"
/// PropertySetRegistry::SYCL_VIRTUAL_FUNCTIONS defined in PropertySetIO.h
#define __SYCL_PROPERTY_SET_SYCL_VIRTUAL_FUNCTIONS "SYCL/virtual functions"
/// PropertySetRegistry::SYCL_IMPLICIT_LOCAL_ARG defined in PropertySetIO.h
#define __SYCL_PROPERTY_SET_SYCL_IMPLICIT_LOCAL_ARG "SYCL/implicit local arg"
/// PropertySetRegistry::SYCL_REGISTERED_KERNELS defined in PropertySetIO.h
#define __SYCL_PROPERTY_SET_SYCL_REGISTERED_KERNELS "SYCL/registered kernels"

/// Program metadata tags recognized by the PI backends. For kernels the tag
/// must appear after the kernel name.
#define __SYCL_PROGRAM_METADATA_TAG_REQD_WORK_GROUP_SIZE "@reqd_work_group_size"
Expand Down
45 changes: 29 additions & 16 deletions sycl/source/detail/device_binary_image.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
// For device image compression.
#include <detail/compression.hpp>

#include <llvm/Support/PropertySetIO.h>

#include <algorithm>
#include <cstdlib>
#include <cstring>
Expand Down Expand Up @@ -185,28 +187,39 @@ void RTDeviceBinaryImage::init(sycl_device_binary Bin) {
// try to determine the format; may remain "NONE"
Format = ur::getBinaryImageFormat(Bin->BinaryStart, getSize());

SpecConstIDMap.init(Bin, __SYCL_PROPERTY_SET_SPEC_CONST_MAP);
SpecConstIDMap.init(
Bin, llvm::util::PropertySetRegistry::SYCL_SPECIALIZATION_CONSTANTS);
SpecConstDefaultValuesMap.init(
Bin, __SYCL_PROPERTY_SET_SPEC_CONST_DEFAULT_VALUES_MAP);
DeviceLibReqMask.init(Bin, __SYCL_PROPERTY_SET_DEVICELIB_REQ_MASK);
DeviceLibMetadata.init(Bin, __SYCL_PROPERTY_SET_DEVICELIB_METADATA);
KernelParamOptInfo.init(Bin, __SYCL_PROPERTY_SET_KERNEL_PARAM_OPT_INFO);
AssertUsed.init(Bin, __SYCL_PROPERTY_SET_SYCL_ASSERT_USED);
ImplicitLocalArg.init(Bin, __SYCL_PROPERTY_SET_SYCL_IMPLICIT_LOCAL_ARG);
ProgramMetadata.init(Bin, __SYCL_PROPERTY_SET_PROGRAM_METADATA);
Bin, llvm::util::PropertySetRegistry::SYCL_SPEC_CONSTANTS_DEFAULT_VALUES);
DeviceLibReqMask.init(
Bin, llvm::util::PropertySetRegistry::SYCL_DEVICELIB_REQ_MASK);
DeviceLibMetadata.init(
Bin, llvm::util::PropertySetRegistry::SYCL_DEVICELIB_METADATA);
KernelParamOptInfo.init(
Bin, llvm::util::PropertySetRegistry::SYCL_KERNEL_PARAM_OPT_INFO);
AssertUsed.init(Bin, llvm::util::PropertySetRegistry::SYCL_ASSERT_USED);
ImplicitLocalArg.init(
Bin, llvm::util::PropertySetRegistry::SYCL_IMPLICIT_LOCAL_ARG);
ProgramMetadata.init(Bin,
llvm::util::PropertySetRegistry::SYCL_PROGRAM_METADATA);
// Convert ProgramMetadata into the UR format
for (const auto &Prop : ProgramMetadata) {
ProgramMetadataUR.push_back(
ur::mapDeviceBinaryPropertyToProgramMetadata(Prop));
}
ExportedSymbols.init(Bin, __SYCL_PROPERTY_SET_SYCL_EXPORTED_SYMBOLS);
ImportedSymbols.init(Bin, __SYCL_PROPERTY_SET_SYCL_IMPORTED_SYMBOLS);
DeviceGlobals.init(Bin, __SYCL_PROPERTY_SET_SYCL_DEVICE_GLOBALS);
DeviceRequirements.init(Bin, __SYCL_PROPERTY_SET_SYCL_DEVICE_REQUIREMENTS);
HostPipes.init(Bin, __SYCL_PROPERTY_SET_SYCL_HOST_PIPES);
VirtualFunctions.init(Bin, __SYCL_PROPERTY_SET_SYCL_VIRTUAL_FUNCTIONS);
RegisteredKernels.init(Bin, __SYCL_PROPERTY_SET_SYCL_REGISTERED_KERNELS);
Misc.init(Bin, __SYCL_PROPERTY_SET_SYCL_MISC_PROP);
ExportedSymbols.init(Bin,
llvm::util::PropertySetRegistry::SYCL_EXPORTED_SYMBOLS);
ImportedSymbols.init(Bin,
llvm::util::PropertySetRegistry::SYCL_IMPORTED_SYMBOLS);
DeviceGlobals.init(Bin, llvm::util::PropertySetRegistry::SYCL_DEVICE_GLOBALS);
DeviceRequirements.init(
Bin, llvm::util::PropertySetRegistry::SYCL_DEVICE_REQUIREMENTS);
HostPipes.init(Bin, llvm::util::PropertySetRegistry::SYCL_HOST_PIPES);
VirtualFunctions.init(
Bin, llvm::util::PropertySetRegistry::SYCL_VIRTUAL_FUNCTIONS);
RegisteredKernels.init(
Bin, llvm::util::PropertySetRegistry::SYCL_REGISTERED_KERNELS);
Misc.init(Bin, llvm::util::PropertySetRegistry::SYCL_MISC_PROP);
}

std::atomic<uintptr_t> RTDeviceBinaryImage::ImageCounter = 1;
Expand Down
4 changes: 3 additions & 1 deletion sycl/source/detail/jit_compiler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
#include <sycl/detail/os_util.hpp>
#include <sycl/detail/ur.hpp>

#include <llvm/Support/PropertySetIO.h>

namespace sycl {
inline namespace _V1 {
namespace detail {
Expand Down Expand Up @@ -265,7 +267,7 @@ sycl_device_binaries jit_compiler::createDeviceBinaries(

for (const auto &FPS : DevImgInfo.Properties) {
bool IsDeviceGlobalsPropSet =
FPS.Name == __SYCL_PROPERTY_SET_SYCL_DEVICE_GLOBALS;
FPS.Name == llvm::util::PropertySetRegistry::SYCL_DEVICE_GLOBALS;
PropertySetContainer PropSet{FPS.Name.c_str()};
for (const auto &FPV : FPS.Values) {
if (FPV.IsUIntValue) {
Expand Down
8 changes: 6 additions & 2 deletions sycl/source/detail/program_manager/program_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@

#include <sycl/ext/oneapi/matrix/query-types.hpp>

#include <llvm/Support/PropertySetIO.h>

#include <algorithm>
#include <cassert>
#include <cstdint>
Expand Down Expand Up @@ -1860,7 +1862,8 @@ static bool isBfloat16DeviceLibImage(sycl_device_binary RawImg,
for (ImgPS = RawImg->PropertySetsBegin; ImgPS != RawImg->PropertySetsEnd;
++ImgPS) {
if (ImgPS->Name &&
!strcmp(__SYCL_PROPERTY_SET_DEVICELIB_METADATA, ImgPS->Name)) {
!strcmp(llvm::util::PropertySetRegistry::SYCL_DEVICELIB_METADATA,
ImgPS->Name)) {
if (!LibVersion)
return true;

Expand Down Expand Up @@ -1888,7 +1891,8 @@ getExportedSymbolPS(sycl_device_binary RawImg) {
for (ImgPS = RawImg->PropertySetsBegin; ImgPS != RawImg->PropertySetsEnd;
++ImgPS) {
if (ImgPS->Name &&
!strcmp(__SYCL_PROPERTY_SET_SYCL_EXPORTED_SYMBOLS, ImgPS->Name))
!strcmp(llvm::util::PropertySetRegistry::SYCL_EXPORTED_SYMBOLS,
ImgPS->Name))
return ImgPS;
}

Expand Down
1 change: 1 addition & 0 deletions sycl/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ set(SYCL_THREADS_LIB ${CMAKE_THREAD_LIBS_INIT})
# TEST_INCLUDE_PATH is used for syntax-only verification of type information.
list(APPEND test_includes ${SYCL_INCLUDE})
list(APPEND test_includes ${SYCL_SOURCE_DIR}/source)
list(APPEND test_includes ${LLVM_MAIN_INCLUDE_DIR})
list(APPEND test_includes ${BOOST_UNORDERED_INCLUDE_DIRS})
if(SYCL_ENABLE_EXTENSION_JIT)
list(APPEND test_includes ${LLVM_EXTERNAL_SYCL_JIT_SOURCE_DIR}/jit-compiler/include)
Expand Down
6 changes: 4 additions & 2 deletions sycl/unittests/Extensions/DeviceGlobal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

#include <sycl/sycl.hpp>

#include <llvm/Support/PropertySetIO.h>

#include "detail/context_impl.hpp"
#include "detail/kernel_program_cache.hpp"

Expand Down Expand Up @@ -64,7 +66,7 @@ static sycl::unittest::MockDeviceImage generateDeviceGlobalImage() {
MockPropertySet PropSet;
MockProperty DevGlobInfo =
makeDeviceGlobalInfo(DeviceGlobalName, sizeof(int) * 2, 0);
PropSet.insert(__SYCL_PROPERTY_SET_SYCL_DEVICE_GLOBALS,
PropSet.insert(llvm::util::PropertySetRegistry::SYCL_DEVICE_GLOBALS,
std::vector<MockProperty>{std::move(DevGlobInfo)});

std::vector<MockOffloadEntry> Entries =
Expand All @@ -87,7 +89,7 @@ static sycl::unittest::MockDeviceImage generateDeviceGlobalImgScopeImage() {
MockPropertySet PropSet;
MockProperty DevGlobInfo =
makeDeviceGlobalInfo(DeviceGlobalImgScopeName, sizeof(int) * 2, 1);
PropSet.insert(__SYCL_PROPERTY_SET_SYCL_DEVICE_GLOBALS,
PropSet.insert(llvm::util::PropertySetRegistry::SYCL_DEVICE_GLOBALS,
std::vector<MockProperty>{std::move(DevGlobInfo)});

std::vector<MockOffloadEntry> Entries =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
#include "ur_mock_helpers.hpp"
#include <sycl/sycl.hpp>

#include <llvm/Support/PropertySetIO.h>

#include <helpers/MockDeviceImage.hpp>
#include <helpers/MockKernelInfo.hpp>
#include <helpers/RuntimeLinkingCommon.hpp>
Expand Down Expand Up @@ -65,7 +67,8 @@ generateImage(std::initializer_list<std::string> KernelNames,
SYCL_PROPERTY_TYPE_BYTE_ARRAY);

Props.push_back(Prop);
PropSet.insert(__SYCL_PROPERTY_SET_SYCL_VIRTUAL_FUNCTIONS, std::move(Props));
PropSet.insert(llvm::util::PropertySetRegistry::SYCL_VIRTUAL_FUNCTIONS,
std::move(Props));

std::vector<unsigned char> Bin{Magic};

Expand Down
22 changes: 15 additions & 7 deletions sycl/unittests/helpers/MockDeviceImage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@

#include <sycl/detail/defines_elementary.hpp>

#include <llvm/Support/PropertySetIO.h>

namespace sycl {
inline namespace _V1 {
namespace unittest {
Expand Down Expand Up @@ -191,7 +193,8 @@ class MockPropertySet {
// Value must be an all-zero 32-bit mask, which would mean that no fallback
// libraries are needed to be loaded.
MockProperty DeviceLibReqMask("", Data, SYCL_PROPERTY_TYPE_UINT32);
insert(__SYCL_PROPERTY_SET_DEVICELIB_REQ_MASK, std::move(DeviceLibReqMask));
insert(llvm::util::PropertySetRegistry::SYCL_DEVICELIB_REQ_MASK,
std::move(DeviceLibReqMask));
}

/// Adds a new property to the set.
Expand Down Expand Up @@ -461,7 +464,8 @@ inline void setKernelUsesAssert(const std::vector<std::string> &Names,
std::vector<MockProperty> Value;
for (const std::string &N : Names)
Value.push_back({N, {0, 0, 0, 0}, SYCL_PROPERTY_TYPE_UINT32});
Set.insert(__SYCL_PROPERTY_SET_SYCL_ASSERT_USED, std::move(Value));
Set.insert(llvm::util::PropertySetRegistry::SYCL_ASSERT_USED,
std::move(Value));
}

/// Utility function to add specialization constants to property set.
Expand All @@ -470,12 +474,14 @@ inline void setKernelUsesAssert(const std::vector<std::string> &Names,
inline void addSpecConstants(std::vector<MockProperty> &&SpecConstants,
std::vector<char> ValData,
MockPropertySet &Props) {
Props.insert(__SYCL_PROPERTY_SET_SPEC_CONST_MAP, std::move(SpecConstants));
Props.insert(llvm::util::PropertySetRegistry::SYCL_SPECIALIZATION_CONSTANTS,
std::move(SpecConstants));

MockProperty Prop{"all", std::move(ValData), SYCL_PROPERTY_TYPE_BYTE_ARRAY};

Props.insert(__SYCL_PROPERTY_SET_SPEC_CONST_DEFAULT_VALUES_MAP,
std::move(Prop));
Props.insert(
llvm::util::PropertySetRegistry::SYCL_SPEC_CONSTANTS_DEFAULT_VALUES,
std::move(Prop));
}

/// Utility function to add ESIMD kernel flag to property set.
Expand All @@ -484,7 +490,8 @@ inline void addESIMDFlag(MockPropertySet &Props) {
ValData[0] = 1;
MockProperty Prop{"isEsimdImage", ValData, SYCL_PROPERTY_TYPE_UINT32};

Props.insert(__SYCL_PROPERTY_SET_SYCL_MISC_PROP, std::move(Prop));
Props.insert(llvm::util::PropertySetRegistry::SYCL_MISC_PROP,
std::move(Prop));
}

/// Utility function to generate offload entries for kernels without arguments.
Expand Down Expand Up @@ -597,7 +604,8 @@ addDeviceRequirementsProps(MockPropertySet &Props,
std::vector<MockProperty> Value{makeAspectsProp(Aspects)};
if (!ReqdWGSize.empty())
Value.push_back(makeReqdWGSizeProp(ReqdWGSize));
Props.insert(__SYCL_PROPERTY_SET_SYCL_DEVICE_REQUIREMENTS, std::move(Value));
Props.insert(llvm::util::PropertySetRegistry::SYCL_DEVICE_REQUIREMENTS,
std::move(Value));
}

inline MockDeviceImage
Expand Down
4 changes: 3 additions & 1 deletion sycl/unittests/pipes/host_pipe_registration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
#include <cstring>
#include <sycl/sycl.hpp>

#include <llvm/Support/PropertySetIO.h>

#include <detail/device_binary_image.hpp>
#include <detail/host_pipe_map_entry.hpp>
#include <gtest/gtest.h>
Expand Down Expand Up @@ -38,7 +40,7 @@ static sycl::unittest::MockDeviceImage generateDefaultImage() {
MockPropertySet PropSet;
MockProperty HostPipeInfo =
makeHostPipeInfo("test_host_pipe_unique_id", sizeof(int));
PropSet.insert(__SYCL_PROPERTY_SET_SYCL_HOST_PIPES,
PropSet.insert(llvm::util::PropertySetRegistry::SYCL_HOST_PIPES,
std::vector<MockProperty>{std::move(HostPipeInfo)});

std::vector<MockOffloadEntry> Entries = makeEmptyKernels({"TestKernel"});
Expand Down
15 changes: 8 additions & 7 deletions sycl/unittests/program_manager/Cleanup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,28 +169,29 @@ sycl::unittest::MockDeviceImage generateImage(const std::string &ImageId) {
KernelEAM);
std::vector<sycl::unittest::MockProperty> ImgKPOI{std::move(EAMKernelPOI)};

PropSet.insert(__SYCL_PROPERTY_SET_SYCL_EXPORTED_SYMBOLS,
PropSet.insert(llvm::util::PropertySetRegistry::SYCL_EXPORTED_SYMBOLS,
createPropertySet(ExportedSymbols));

PropSet.insert(__SYCL_PROPERTY_SET_SYCL_IMPORTED_SYMBOLS,
PropSet.insert(llvm::util::PropertySetRegistry::SYCL_IMPORTED_SYMBOLS,
createPropertySet(ImportedSymbols));

PropSet.insert(__SYCL_PROPERTY_SET_SYCL_VIRTUAL_FUNCTIONS,
PropSet.insert(llvm::util::PropertySetRegistry::SYCL_VIRTUAL_FUNCTIONS,
createVFPropertySet(VirtualFunctions));
setKernelUsesAssert(std::vector<std::string>{KernelNames.begin()[0]},
PropSet);

PropSet.insert(__SYCL_PROPERTY_SET_SYCL_IMPLICIT_LOCAL_ARG,
PropSet.insert(llvm::util::PropertySetRegistry::SYCL_IMPLICIT_LOCAL_ARG,
createPropertySet(ImplicitLocalArg));
PropSet.insert(__SYCL_PROPERTY_SET_KERNEL_PARAM_OPT_INFO, std::move(ImgKPOI));
PropSet.insert(llvm::util::PropertySetRegistry::SYCL_KERNEL_PARAM_OPT_INFO,
std::move(ImgKPOI));

PropSet.insert(
__SYCL_PROPERTY_SET_SYCL_DEVICE_GLOBALS,
llvm::util::PropertySetRegistry::SYCL_DEVICE_GLOBALS,
std::vector<sycl::unittest::MockProperty>{
sycl::unittest::makeDeviceGlobalInfo(
generateRefName(ImageId, "DeviceGlobal"), sizeof(int), 0)});

PropSet.insert(__SYCL_PROPERTY_SET_SYCL_HOST_PIPES,
PropSet.insert(llvm::util::PropertySetRegistry::SYCL_HOST_PIPES,
std::vector<sycl::unittest::MockProperty>{
sycl::unittest::makeHostPipeInfo(
generateRefName(ImageId, "HostPipe"), sizeof(int))});
Expand Down
4 changes: 3 additions & 1 deletion sycl/unittests/program_manager/CompileTarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
#include <helpers/MockKernelInfo.hpp>
#include <helpers/UrMock.hpp>

#include <llvm/Support/PropertySetIO.h>

#include <gtest/gtest.h>

using namespace sycl;
Expand All @@ -24,7 +26,7 @@ generateImageWithCompileTarget(std::string KernelName,
MockProperty CompileTargetProperty("compile_target", Data,
SYCL_PROPERTY_TYPE_BYTE_ARRAY);
MockPropertySet PropSet;
PropSet.insert(__SYCL_PROPERTY_SET_SYCL_DEVICE_REQUIREMENTS,
PropSet.insert(llvm::util::PropertySetRegistry::SYCL_DEVICE_REQUIREMENTS,
std::move(CompileTargetProperty));

std::vector<unsigned char> Bin(CompileTarget.begin(), CompileTarget.end());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#include <sycl/sycl.hpp>

#include <llvm/Support/PropertySetIO.h>

#include <detail/device_image_impl.hpp>
#include <helpers/MockDeviceImage.hpp>
#include <helpers/MockKernelInfo.hpp>
Expand Down Expand Up @@ -76,10 +78,10 @@ generateImage(std::initializer_list<std::string> KernelNames,
const char *DeviceTargetSpec,
sycl::unittest::MockPropertySet PropSet) {
if (!ExportedSymbols.empty())
PropSet.insert(__SYCL_PROPERTY_SET_SYCL_EXPORTED_SYMBOLS,
PropSet.insert(llvm::util::PropertySetRegistry::SYCL_EXPORTED_SYMBOLS,
createPropertySet(ExportedSymbols));
if (!ImportedSymbols.empty())
PropSet.insert(__SYCL_PROPERTY_SET_SYCL_IMPORTED_SYMBOLS,
PropSet.insert(llvm::util::PropertySetRegistry::SYCL_IMPORTED_SYMBOLS,
createPropertySet(ImportedSymbols));

std::vector<unsigned char> Bin{Magic};
Expand Down
Loading