@@ -78,15 +78,15 @@ endforeach()
7878# file and all files created this way are linked into one large bitcode
7979# library.
8080# Additional compilation options are needed for compiling each device library.
81- set (devicelib_arch )
81+ set (full_build_archs )
8282if ("NVPTX" IN_LIST LLVM_TARGETS_TO_BUILD)
83- list (APPEND devicelib_arch nvptx64-nvidia-cuda)
83+ list (APPEND full_build_archs nvptx64-nvidia-cuda)
8484 set (compile_opts_nvptx64-nvidia-cuda "-fsycl-targets=nvptx64-nvidia-cuda"
8585 "-Xsycl-target-backend" "--cuda-gpu-arch=sm_50" "-nocudalib" )
8686 set (opt_flags_nvptx64-nvidia-cuda "-O3" "--nvvm-reflect-enable=false" )
8787endif ()
8888if ("AMDGPU" IN_LIST LLVM_TARGETS_TO_BUILD)
89- list (APPEND devicelib_arch amdgcn-amd-amdhsa)
89+ list (APPEND full_build_archs amdgcn-amd-amdhsa)
9090 set (compile_opts_amdgcn-amd-amdhsa "-nogpulib" "-fsycl-targets=amdgcn-amd-amdhsa"
9191 "-Xsycl-target-backend" "--offload-arch=gfx942" )
9292 set (opt_flags_amdgcn-amd-amdhsa "-O3" "--amdgpu-oclc-reflect-enable=false" )
@@ -178,7 +178,7 @@ function(append_to_property list)
178178endfunction ()
179179
180180# Creates device libaries for all filetypes.
181- # Adds bitcode library files additionally for each devicelib_arch target and
181+ # Adds bitcode library files additionally for each devicelib build arch and
182182# adds the created file to an arch specific global property.
183183#
184184# Arguments:
@@ -195,7 +195,7 @@ function(add_devicelibs filename)
195195 cmake_parse_arguments (ARG
196196 ""
197197 ""
198- "SRC;EXTRA_OPTS;DEPENDENCIES;SKIP_ARCHS ;FILETYPES"
198+ "SRC;EXTRA_OPTS;DEPENDENCIES;BUILD_ARCHS ;FILETYPES"
199199 ${ARGN} )
200200 if (ARG_FILETYPES)
201201 set (devicelib_filetypes "${ARG_FILETYPES} " )
@@ -210,10 +210,7 @@ function(add_devicelibs filename)
210210 EXTRA_OPTS ${ARG_EXTRA_OPTS} ${${filetype} _device_compile_opts})
211211 endforeach ()
212212
213- foreach (arch IN LISTS devicelib_arch)
214- if (arch IN_LIST ARG_SKIP_ARCHS)
215- continue ()
216- endif ()
213+ foreach (arch IN LISTS ARG_BUILD_ARCHS)
217214 compile_lib(${filename} -${arch}
218215 FILETYPE bc
219216 SRC ${ARG_SRC}
@@ -350,55 +347,69 @@ check_cxx_compiler_flag(-Wno-invalid-noreturn HAS_NO_INVALID_NORETURN_WARN_FLAG)
350347# ones.
351348add_devicelibs(libsycl-itt-stubs
352349 SRC itt_stubs.cpp
350+ BUILD_ARCHS ${full_build_archs}
353351 DEPENDENCIES ${itt_obj_deps} )
354352add_devicelibs(libsycl-itt-compiler-wrappers
355353 SRC itt_compiler_wrappers.cpp
354+ BUILD_ARCHS ${full_build_archs}
356355 DEPENDENCIES ${itt_obj_deps} )
357356add_devicelibs(libsycl-itt-user-wrappers
358357 SRC itt_user_wrappers.cpp
358+ BUILD_ARCHS ${full_build_archs}
359359 DEPENDENCIES ${itt_obj_deps} )
360360
361361add_devicelibs(libsycl-crt
362362 SRC crt_wrapper.cpp
363+ BUILD_ARCHS ${full_build_archs}
363364 DEPENDENCIES ${crt_obj_deps}
364365 EXTRA_OPTS $<$<BOOL :${HAS_NO_INVALID_NORETURN_WARN_FLAG} >:-Wno-invalid-noreturn>)
365366
366367add_devicelibs(libsycl-complex
367368 SRC complex_wrapper.cpp
369+ BUILD_ARCHS ${full_build_archs}
368370 DEPENDENCIES ${complex_obj_deps} )
369371add_devicelibs(libsycl-complex-fp64
370372 SRC complex_wrapper_fp64.cpp
373+ BUILD_ARCHS ${full_build_archs}
371374 DEPENDENCIES ${complex_obj_deps} )
372375add_devicelibs(libsycl-cmath
373376 SRC cmath_wrapper.cpp
377+ BUILD_ARCHS ${full_build_archs}
374378 DEPENDENCIES ${cmath_obj_deps} )
375379add_devicelibs(libsycl-cmath-fp64
376380 SRC cmath_wrapper_fp64.cpp
381+ BUILD_ARCHS ${full_build_archs}
377382 DEPENDENCIES ${cmath_obj_deps} )
383+ set (imf_build_archs)
378384add_devicelibs(libsycl-imf
379385 SRC imf_wrapper.cpp
380- DEPENDENCIES ${imf_obj_deps} )
386+ DEPENDENCIES ${imf_obj_deps}
387+ BUILD_ARCHS ${imf_build_archs} )
381388add_devicelibs(libsycl-imf-fp64
382389 SRC imf_wrapper_fp64.cpp
383- DEPENDENCIES ${imf_obj_deps} )
390+ DEPENDENCIES ${imf_obj_deps}
391+ BUILD_ARCHS ${imf_build_archs} )
384392add_devicelibs(libsycl-imf-bf16
385393 SRC imf_wrapper_bf16.cpp
386- DEPENDENCIES ${imf_obj_deps} )
394+ DEPENDENCIES ${imf_obj_deps}
395+ BUILD_ARCHS ${imf_build_archs} )
387396add_devicelibs(libsycl-bfloat16
388397 SRC bfloat16_wrapper.cpp
398+ BUILD_ARCHS ${full_build_archs}
389399 DEPENDENCIES ${cmath_obj_deps} )
390400if (MSVC )
391401 add_devicelibs(libsycl-msvc -math
392402 SRC msvc_math.cpp
403+ BUILD_ARCHS ${full_build_archs}
393404 DEPENDENCIES ${cmath_obj_deps} )
394405else ()
395406 if (UR_SANITIZER_INCLUDE_DIR)
407+ set (sanitizer_build_archs)
396408 # asan jit
397409 add_devicelibs(libsycl-asan
398410 SRC sanitizer/asan_rtl.cpp
399411 DEPENDENCIES ${asan_obj_deps}
400- SKIP_ARCHS nvptx64-nvidia-cuda
401- amdgcn-amd-amdhsa
412+ BUILD_ARCHS ${sanitizer_build_archs}
402413 FILETYPES "${filetypes_no_spv} "
403414 EXTRA_OPTS -fno-sycl-instrument-device-code
404415 -I${UR_SANITIZER_INCLUDE_DIR}
@@ -421,8 +432,7 @@ else()
421432 add_devicelibs(libsycl-msan
422433 SRC sanitizer/msan_rtl.cpp
423434 DEPENDENCIES ${msan_obj_deps}
424- SKIP_ARCHS nvptx64-nvidia-cuda
425- amdgcn-amd-amdhsa
435+ BUILD_ARCHS ${sanitizer_build_archs}
426436 FILETYPES "${filetypes_no_spv} "
427437 EXTRA_OPTS -fno-sycl-instrument-device-code
428438 -I${UR_SANITIZER_INCLUDE_DIR}
@@ -445,8 +455,7 @@ else()
445455 add_devicelibs(libsycl-tsan
446456 SRC sanitizer/tsan_rtl.cpp
447457 DEPENDENCIES ${tsan_obj_deps}
448- SKIP_ARCHS nvptx64-nvidia-cuda
449- amdgcn-amd-amdhsa
458+ BUILD_ARCHS ${sanitizer_build_archs}
450459 FILETYPES "${filetypes_no_spv} "
451460 EXTRA_OPTS -fno-sycl-instrument-device-code
452461 -I${UR_SANITIZER_INCLUDE_DIR}
@@ -469,30 +478,38 @@ endif()
469478
470479add_devicelibs(libsycl-fallback-cassert
471480 SRC fallback-cassert.cpp
481+ BUILD_ARCHS ${full_build_archs}
472482 DEPENDENCIES ${crt_obj_deps}
473483 EXTRA_OPTS -fno-sycl-instrument-device-code)
474484add_devicelibs(libsycl-fallback-cstring
475485 SRC fallback-cstring.cpp
486+ BUILD_ARCHS ${full_build_archs}
476487 DEPENDENCIES ${crt_obj_deps} )
477488add_devicelibs(libsycl-fallback-complex
478489 SRC fallback-complex.cpp
490+ BUILD_ARCHS ${full_build_archs}
479491 DEPENDENCIES ${complex_obj_deps} )
480492add_devicelibs(libsycl-fallback-complex-fp64
481493 SRC fallback-complex-fp64.cpp
494+ BUILD_ARCHS ${full_build_archs}
482495 DEPENDENCIES ${complex_obj_deps} )
483496add_devicelibs(libsycl-fallback-cmath
484497 SRC fallback-cmath.cpp
498+ BUILD_ARCHS ${full_build_archs}
485499 DEPENDENCIES ${cmath_obj_deps} )
486500add_devicelibs(libsycl-fallback-cmath-fp64
487501 SRC fallback-cmath-fp64.cpp
502+ BUILD_ARCHS ${full_build_archs}
488503 DEPENDENCIES ${cmath_obj_deps} )
489504add_devicelibs(libsycl-fallback-bfloat16
490505 SRC fallback-bfloat16.cpp
491506 FILETYPES "${filetypes_no_spv} "
507+ BUILD_ARCHS ${full_build_archs}
492508 DEPENDENCIES ${bfloat16_obj_deps} )
493509add_devicelibs(libsycl-native-bfloat16
494510 SRC bfloat16_wrapper.cpp
495511 FILETYPES "${filetypes_no_spv} "
512+ BUILD_ARCHS ${full_build_archs}
496513 DEPENDENCIES ${bfloat16_obj_deps} )
497514
498515# Create dependency and source lists for Intel math function libraries.
@@ -651,9 +668,9 @@ foreach(dtype IN ITEMS bf16 fp32 fp64)
651668 endforeach ()
652669endforeach ()
653670
654- # Add device fallback imf libraries for the NVPTX and AMD targets.
671+ # Add device fallback imf libraries for single bitcode targets.
655672# The output files are bitcode.
656- foreach (arch IN LISTS devicelib_arch )
673+ foreach (arch IN LISTS imf_build_archs )
657674 foreach (dtype IN ITEMS bf16 fp32 fp64)
658675 set (tgt_name imf_fallback_${dtype} _bc_${arch} )
659676
@@ -673,7 +690,7 @@ endforeach()
673690
674691# Create one large bitcode file for the NVPTX and AMD targets.
675692# Use all the files collected in the respective global properties.
676- foreach (arch IN LISTS devicelib_arch )
693+ foreach (arch IN LISTS full_build_archs )
677694 get_property (BC_DEVICE_LIBS_${arch} GLOBAL PROPERTY BC_DEVICE_LIBS_${arch} )
678695 # Link the bitcode files together.
679696 link_bc(TARGET device_lib_device_${arch}
0 commit comments