@@ -244,7 +244,7 @@ configure_file( libclc.pc.in libclc.pc @ONLY )
244
244
install ( FILES ${CMAKE_CURRENT_BINARY_DIR} /libclc.pc DESTINATION "${CMAKE_INSTALL_DATADIR} /pkgconfig" )
245
245
246
246
if ( ENABLE_RUNTIME_SUBNORMAL )
247
- foreach ( file subnormal_use_default subnormal_disable )
247
+ foreach ( file IN ITEMS subnormal_use_default subnormal_disable )
248
248
link_bc (
249
249
TARGET ${file}
250
250
RSP_DIR ${LIBCLC_ARCH_OBJFILE_DIR}
@@ -364,6 +364,7 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
364
364
else ()
365
365
set ( DARCH ${ARCH} )
366
366
endif ()
367
+
367
368
# Append a variety of target- and triple-based directories to search,
368
369
# increasing in specificity.
369
370
list ( APPEND opencl_dirs ${DARCH} ${DARCH} -${OS} ${DARCH} -${VENDOR}-${OS} )
@@ -419,13 +420,9 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
419
420
set ( libspirv_gen_files )
420
421
set ( BUILD_LIBSPIRV_${t} TRUE )
421
422
422
- if ( NOT ARCH STREQUAL spirv AND NOT ARCH STREQUAL spirv64 )
423
- if ( ARCH STREQUAL clspv OR ARCH STREQUAL clspv64 )
424
- list ( APPEND libspirv_gen_files clspv-convert.cl )
425
- elseif ( NOT ENABLE_RUNTIME_SUBNORMAL )
426
- list ( APPEND libspirv_gen_files spirv-convert.cl )
427
- list ( APPEND libspirv_lib_files libspirv/lib/generic/subnormal_use_default.ll )
428
- endif ()
423
+ if ( NOT ENABLE_RUNTIME_SUBNORMAL )
424
+ list ( APPEND libspirv_gen_files spirv-convert.cl )
425
+ list ( APPEND libspirv_lib_files libspirv/lib/generic/subnormal_use_default.ll )
429
426
endif ()
430
427
431
428
libclc_configure_lib_source (
@@ -444,61 +441,61 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
444
441
CLANG_TRIPLE clang_triple
445
442
)
446
443
447
- # Some targets don't have a specific GPU to target
448
- set ( build_flags )
449
- if ( d STREQUAL none OR ARCH STREQUAL spirv OR ARCH STREQUAL spirv64 )
450
- # FIXME: Ideally we would not be tied to a specific PTX ISA version
451
- if ( ARCH STREQUAL nvptx OR ARCH STREQUAL nvptx64 )
452
- # Disables NVVM reflection to defer to after linking
453
- list ( APPEND build_flags -Xclang -target-feature -Xclang +ptx72
454
- -march=sm_86 -mllvm --nvvm-reflect-enable=false )
455
- elseif ( ARCH STREQUAL amdgcn )
456
- # AMDGCN needs libclc to be compiled to high bc version since all atomic
457
- # clang builtins need to be accessible
458
- list ( APPEND build_flags -mcpu=gfx942 -mllvm --amdgpu-oclc-reflect-enable=false )
459
- elseif ( ARCH STREQUAL native_cpu )
460
- list ( APPEND build_flags -Xclang -fsycl-is-native-cpu )
461
- endif ()
462
- endif ()
463
-
464
444
message ( STATUS " device: ${d} ( ${${d} _aliases} )" )
465
445
466
446
if ( ARCH STREQUAL spirv OR ARCH STREQUAL spirv64 )
467
- set ( opt_flags -O3 )
468
- list ( APPEND build_flags -DCLC_SPIRV )
447
+ set ( build_flags -O0 -finline-hint-functions -DCLC_SPIRV )
448
+ set ( opt_flags )
469
449
set ( spvflags --spirv-max-version=1.1 )
470
450
set ( MACRO_ARCH SPIRV32 )
471
451
if ( ARCH STREQUAL spirv64 )
472
452
set ( MACRO_ARCH SPIRV64 )
473
453
endif ()
474
454
elseif ( ARCH STREQUAL clspv OR ARCH STREQUAL clspv64 )
455
+ set ( build_flags "-Wno-unknown-assumption" -DCLC_CLSPV )
475
456
set ( opt_flags -O3 )
476
- list ( APPEND build_flags -DCLC_CLSPV )
477
457
set ( MACRO_ARCH CLSPV32 )
478
458
if ( ARCH STREQUAL clspv64 )
479
459
set ( MACRO_ARCH CLSPV64 )
480
460
endif ()
481
461
elseif ( ARCH STREQUAL nvptx OR ARCH STREQUAL nvptx64 )
462
+ set ( build_flags )
482
463
set ( opt_flags -O3 "--nvvm-reflect-enable=false" )
483
464
elseif ( ARCH STREQUAL amdgcn )
465
+ set ( build_flags )
484
466
set ( opt_flags -O3 --amdgpu-oclc-reflect-enable=false )
485
467
elseif ( ARCH STREQUAL native_cpu )
468
+ set ( build_flags -Xclang -fsycl-is-native-cpu )
486
469
set ( opt_flags -O3 )
487
470
else ()
471
+ set ( build_flags )
488
472
set ( opt_flags -O3 )
489
473
set ( MACRO_ARCH ${ARCH} )
490
474
endif ()
491
475
476
+ # Some targets don't have a specific GPU to target
477
+ if ( ARCH STREQUAL nvptx OR ARCH STREQUAL nvptx64 )
478
+ # Disable NVVM reflection to deferring to after linking
479
+ list ( APPEND build_flags -Xclang -target-feature -Xclang +ptx72
480
+ -march=sm_86 -mllvm --nvvm-reflect-enable=false )
481
+ elseif ( t STREQUAL amdgcn--amdhsa )
482
+ # Disable AMDGPU reflection, deferring to after linking
483
+ list ( APPEND build_flags -mllvm --amdgpu-oclc-reflect-enable=false )
484
+ endif ()
485
+
492
486
set ( LIBCLC_ARCH_OBJFILE_DIR "${LIBCLC_OBJFILE_DIR} /${arch_suffix} " )
493
487
file ( MAKE_DIRECTORY ${LIBCLC_ARCH_OBJFILE_DIR} )
494
488
489
+ # Build for OpenCL 3.0 independently of the target or device.
490
+ list ( APPEND build_flags -cl-std=CL3.0 )
491
+
495
492
# OpenCL 3.0 extensions
496
493
string (CONCAT CL_3_0_EXTENSIONS
497
494
"-cl-ext="
498
495
"+__opencl_c_3d_image_writes,"
499
496
"+__opencl_c_images,"
500
497
"+cl_khr_3d_image_writes" )
501
- list ( APPEND build_flags -cl-std=CL3.0 "-Xclang" ${CL_3_0_EXTENSIONS} )
498
+ list ( APPEND build_flags "-Xclang" ${CL_3_0_EXTENSIONS} )
502
499
503
500
# Add platform specific flags
504
501
if (WIN32 )
@@ -543,8 +540,7 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
543
540
if ( ARCH STREQUAL amdgcn OR ARCH STREQUAL r600 OR ARCH STREQUAL amdgcn-amdhsa )
544
541
set ( private_addrspace_val 5 )
545
542
endif ()
546
- if ( ARCH STREQUAL spirv OR ARCH STREQUAL spirv64
547
- OR ARCH STREQUAL clspv OR ARCH STREQUAL clspv64 )
543
+ if ( ARCH STREQUAL spirv OR ARCH STREQUAL spirv64 )
548
544
set ( generic_addrspace_val 4 )
549
545
endif ()
550
546
list ( APPEND build_flags
@@ -618,21 +614,11 @@ install(DIRECTORY ${LIBCLC_LIBRARY_OUTPUT_INTDIR}
618
614
COMPONENT libspirv-builtins
619
615
FILES_MATCHING PATTERN "libspirv-*" )
620
616
621
- install (DIRECTORY ${LIBCLC_LIBRARY_OUTPUT_INTDIR}
622
- DESTINATION lib${LLVM_LIBDIR_SUFFIX}
623
- COMPONENT clc-builtins
624
- FILES_MATCHING PATTERN "clc-*" )
625
-
626
617
if ( LIBCLC_GENERATE_REMANGLED_VARIANTS )
627
618
install (DIRECTORY ${LIBCLC_LIBRARY_OUTPUT_INTDIR}
628
619
DESTINATION lib${LLVM_LIBDIR_SUFFIX}
629
620
COMPONENT libspirv-builtins
630
621
FILES_MATCHING PATTERN "remangled-*libspirv-*" )
631
-
632
- install (DIRECTORY ${LIBCLC_LIBRARY_OUTPUT_INTDIR}
633
- DESTINATION lib${LLVM_LIBDIR_SUFFIX}
634
- COMPONENT clc-builtins
635
- FILES_MATCHING PATTERN "remangled-*clc-*" )
636
622
endif ()
637
623
638
624
add_subdirectory (test )
0 commit comments