@@ -78,15 +78,15 @@ endforeach()
78
78
# file and all files created this way are linked into one large bitcode
79
79
# library.
80
80
# Additional compilation options are needed for compiling each device library.
81
- set (devicelib_arch )
81
+ set (full_build_archs )
82
82
if ("NVPTX" IN_LIST LLVM_TARGETS_TO_BUILD )
83
- list (APPEND devicelib_arch nvptx64-nvidia-cuda )
83
+ list (APPEND full_build_archs nvptx64-nvidia-cuda )
84
84
set (compile_opts_nvptx64-nvidia-cuda "-fsycl-targets=nvptx64-nvidia-cuda"
85
85
"-Xsycl-target-backend" "--cuda-gpu-arch=sm_50" "-nocudalib" )
86
86
set (opt_flags_nvptx64-nvidia-cuda "-O3" "--nvvm-reflect-enable=false" )
87
87
endif ()
88
88
if ("AMDGPU" IN_LIST LLVM_TARGETS_TO_BUILD )
89
- list (APPEND devicelib_arch amdgcn-amd-amdhsa )
89
+ list (APPEND full_build_archs amdgcn-amd-amdhsa )
90
90
set (compile_opts_amdgcn-amd-amdhsa "-nogpulib" "-fsycl-targets=amdgcn-amd-amdhsa"
91
91
"-Xsycl-target-backend" "--offload-arch=gfx942" )
92
92
set (opt_flags_amdgcn-amd-amdhsa "-O3" "--amdgpu-oclc-reflect-enable=false" )
@@ -178,7 +178,7 @@ function(append_to_property list)
178
178
endfunction ()
179
179
180
180
# 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
182
182
# adds the created file to an arch specific global property.
183
183
#
184
184
# Arguments:
@@ -195,7 +195,7 @@ function(add_devicelibs filename)
195
195
cmake_parse_arguments (ARG
196
196
""
197
197
""
198
- "SRC;EXTRA_OPTS;DEPENDENCIES;SKIP_ARCHS ;FILETYPES"
198
+ "SRC;EXTRA_OPTS;DEPENDENCIES;BUILD_ARCHS ;FILETYPES"
199
199
${ARGN} )
200
200
if (ARG_FILETYPES )
201
201
set (devicelib_filetypes "${ARG_FILETYPES} " )
@@ -210,10 +210,7 @@ function(add_devicelibs filename)
210
210
EXTRA_OPTS ${ARG_EXTRA_OPTS} ${${filetype}_device_compile_opts} )
211
211
endforeach ()
212
212
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 )
217
214
compile_lib (${filename} -${arch}
218
215
FILETYPE bc
219
216
SRC ${ARG_SRC}
@@ -350,55 +347,69 @@ check_cxx_compiler_flag(-Wno-invalid-noreturn HAS_NO_INVALID_NORETURN_WARN_FLAG)
350
347
# ones.
351
348
add_devicelibs (libsycl-itt-stubs
352
349
SRC itt_stubs.cpp
350
+ BUILD_ARCHS ${full_build_archs}
353
351
DEPENDENCIES ${itt_obj_deps} )
354
352
add_devicelibs (libsycl-itt-compiler-wrappers
355
353
SRC itt_compiler_wrappers.cpp
354
+ BUILD_ARCHS ${full_build_archs}
356
355
DEPENDENCIES ${itt_obj_deps} )
357
356
add_devicelibs (libsycl-itt-user-wrappers
358
357
SRC itt_user_wrappers.cpp
358
+ BUILD_ARCHS ${full_build_archs}
359
359
DEPENDENCIES ${itt_obj_deps} )
360
360
361
361
add_devicelibs (libsycl-crt
362
362
SRC crt_wrapper.cpp
363
+ BUILD_ARCHS ${full_build_archs}
363
364
DEPENDENCIES ${crt_obj_deps}
364
365
EXTRA_OPTS $< $< BOOL:${HAS_NO_INVALID_NORETURN_WARN_FLAG} > :-Wno-invalid-noreturn> )
365
366
366
367
add_devicelibs (libsycl-complex
367
368
SRC complex_wrapper.cpp
369
+ BUILD_ARCHS ${full_build_archs}
368
370
DEPENDENCIES ${complex_obj_deps} )
369
371
add_devicelibs (libsycl-complex-fp64
370
372
SRC complex_wrapper_fp64.cpp
373
+ BUILD_ARCHS ${full_build_archs}
371
374
DEPENDENCIES ${complex_obj_deps} )
372
375
add_devicelibs (libsycl-cmath
373
376
SRC cmath_wrapper.cpp
377
+ BUILD_ARCHS ${full_build_archs}
374
378
DEPENDENCIES ${cmath_obj_deps} )
375
379
add_devicelibs (libsycl-cmath-fp64
376
380
SRC cmath_wrapper_fp64.cpp
381
+ BUILD_ARCHS ${full_build_archs}
377
382
DEPENDENCIES ${cmath_obj_deps} )
383
+ set (imf_build_archs )
378
384
add_devicelibs (libsycl-imf
379
385
SRC imf_wrapper.cpp
380
- DEPENDENCIES ${imf_obj_deps} )
386
+ DEPENDENCIES ${imf_obj_deps}
387
+ BUILD_ARCHS ${imf_build_archs} )
381
388
add_devicelibs (libsycl-imf-fp64
382
389
SRC imf_wrapper_fp64.cpp
383
- DEPENDENCIES ${imf_obj_deps} )
390
+ DEPENDENCIES ${imf_obj_deps}
391
+ BUILD_ARCHS ${imf_build_archs} )
384
392
add_devicelibs (libsycl-imf-bf16
385
393
SRC imf_wrapper_bf16.cpp
386
- DEPENDENCIES ${imf_obj_deps} )
394
+ DEPENDENCIES ${imf_obj_deps}
395
+ BUILD_ARCHS ${imf_build_archs} )
387
396
add_devicelibs (libsycl-bfloat16
388
397
SRC bfloat16_wrapper.cpp
398
+ BUILD_ARCHS ${full_build_archs}
389
399
DEPENDENCIES ${cmath_obj_deps} )
390
400
if (MSVC )
391
401
add_devicelibs (libsycl-msvc-math
392
402
SRC msvc_math.cpp
403
+ BUILD_ARCHS ${full_build_archs}
393
404
DEPENDENCIES ${cmath_obj_deps} )
394
405
else ()
395
406
if (UR_SANITIZER_INCLUDE_DIR )
407
+ set (sanitizer_build_archs )
396
408
# asan jit
397
409
add_devicelibs (libsycl-asan
398
410
SRC sanitizer/asan_rtl.cpp
399
411
DEPENDENCIES ${asan_obj_deps}
400
- SKIP_ARCHS nvptx64-nvidia-cuda
401
- amdgcn-amd-amdhsa
412
+ BUILD_ARCHS ${sanitizer_build_archs}
402
413
FILETYPES "${filetypes_no_spv} "
403
414
EXTRA_OPTS -fno-sycl-instrument-device-code
404
415
-I${UR_SANITIZER_INCLUDE_DIR}
@@ -421,8 +432,7 @@ else()
421
432
add_devicelibs (libsycl-msan
422
433
SRC sanitizer/msan_rtl.cpp
423
434
DEPENDENCIES ${msan_obj_deps}
424
- SKIP_ARCHS nvptx64-nvidia-cuda
425
- amdgcn-amd-amdhsa
435
+ BUILD_ARCHS ${sanitizer_build_archs}
426
436
FILETYPES "${filetypes_no_spv} "
427
437
EXTRA_OPTS -fno-sycl-instrument-device-code
428
438
-I${UR_SANITIZER_INCLUDE_DIR}
@@ -445,8 +455,7 @@ else()
445
455
add_devicelibs (libsycl-tsan
446
456
SRC sanitizer/tsan_rtl.cpp
447
457
DEPENDENCIES ${tsan_obj_deps}
448
- SKIP_ARCHS nvptx64-nvidia-cuda
449
- amdgcn-amd-amdhsa
458
+ BUILD_ARCHS ${sanitizer_build_archs}
450
459
FILETYPES "${filetypes_no_spv} "
451
460
EXTRA_OPTS -fno-sycl-instrument-device-code
452
461
-I${UR_SANITIZER_INCLUDE_DIR}
@@ -469,30 +478,38 @@ endif()
469
478
470
479
add_devicelibs (libsycl-fallback-cassert
471
480
SRC fallback-cassert.cpp
481
+ BUILD_ARCHS ${full_build_archs}
472
482
DEPENDENCIES ${crt_obj_deps}
473
483
EXTRA_OPTS -fno-sycl-instrument-device-code )
474
484
add_devicelibs (libsycl-fallback-cstring
475
485
SRC fallback-cstring.cpp
486
+ BUILD_ARCHS ${full_build_archs}
476
487
DEPENDENCIES ${crt_obj_deps} )
477
488
add_devicelibs (libsycl-fallback-complex
478
489
SRC fallback-complex.cpp
490
+ BUILD_ARCHS ${full_build_archs}
479
491
DEPENDENCIES ${complex_obj_deps} )
480
492
add_devicelibs (libsycl-fallback-complex-fp64
481
493
SRC fallback-complex-fp64.cpp
494
+ BUILD_ARCHS ${full_build_archs}
482
495
DEPENDENCIES ${complex_obj_deps} )
483
496
add_devicelibs (libsycl-fallback-cmath
484
497
SRC fallback-cmath.cpp
498
+ BUILD_ARCHS ${full_build_archs}
485
499
DEPENDENCIES ${cmath_obj_deps} )
486
500
add_devicelibs (libsycl-fallback-cmath-fp64
487
501
SRC fallback-cmath-fp64.cpp
502
+ BUILD_ARCHS ${full_build_archs}
488
503
DEPENDENCIES ${cmath_obj_deps} )
489
504
add_devicelibs (libsycl-fallback-bfloat16
490
505
SRC fallback-bfloat16.cpp
491
506
FILETYPES "${filetypes_no_spv} "
507
+ BUILD_ARCHS ${full_build_archs}
492
508
DEPENDENCIES ${bfloat16_obj_deps} )
493
509
add_devicelibs (libsycl-native-bfloat16
494
510
SRC bfloat16_wrapper.cpp
495
511
FILETYPES "${filetypes_no_spv} "
512
+ BUILD_ARCHS ${full_build_archs}
496
513
DEPENDENCIES ${bfloat16_obj_deps} )
497
514
498
515
# Create dependency and source lists for Intel math function libraries.
@@ -651,9 +668,9 @@ foreach(dtype IN ITEMS bf16 fp32 fp64)
651
668
endforeach ()
652
669
endforeach ()
653
670
654
- # Add device fallback imf libraries for the NVPTX and AMD targets.
671
+ # Add device fallback imf libraries for single bitcode targets.
655
672
# The output files are bitcode.
656
- foreach (arch IN LISTS devicelib_arch )
673
+ foreach (arch IN LISTS imf_build_archs )
657
674
foreach (dtype IN ITEMS bf16 fp32 fp64 )
658
675
set (tgt_name imf_fallback_${dtype}_bc_${arch} )
659
676
@@ -673,7 +690,7 @@ endforeach()
673
690
674
691
# Create one large bitcode file for the NVPTX and AMD targets.
675
692
# 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 )
677
694
get_property (BC_DEVICE_LIBS_${arch} GLOBAL PROPERTY BC_DEVICE_LIBS_${arch} )
678
695
# Link the bitcode files together.
679
696
link_bc (TARGET device_lib_device_${arch}
0 commit comments