Skip to content
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

[SYCL] Impl of fallback group sort in device code #12676

Draft
wants to merge 120 commits into
base: sycl
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
9e4717c
[SYCL] Impl of fallback group sort in device code
jinge90 Feb 9, 2024
4614b00
fix clang-fortmat issue
jinge90 Feb 9, 2024
e32e4c4
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Feb 22, 2024
4d47fcb
template for group sort
jinge90 Feb 22, 2024
33c2df4
remove commented code
jinge90 Feb 22, 2024
90cb9d2
add default work group joint sort for i8
jinge90 Feb 23, 2024
f0224ea
add default work group joint sort fo i64
jinge90 Feb 23, 2024
9170914
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Feb 27, 2024
eed61f4
add default work group joint sort for unsigned integer
jinge90 Feb 27, 2024
2907810
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Feb 29, 2024
9840222
add wg default private sort for i8
jinge90 Mar 1, 2024
d6ac904
Merge remote-tracking branch 'origin/sycl' into fallback_sort
jinge90 Mar 4, 2024
fd80709
add private sorting for i16
jinge90 Mar 4, 2024
38251b4
private sort for i64
jinge90 Mar 4, 2024
92d86f1
add private sort for uint
jinge90 Mar 4, 2024
2a1124a
add private sort for fp32
jinge90 Mar 5, 2024
5145446
Merge remote-tracking branch 'origin/sycl' into fallback_sort
jinge90 Mar 6, 2024
9ef7692
add sub group private sort
jinge90 Mar 6, 2024
0b993f6
Merge remote-tracking branch 'origin/sycl' into fallback_sort
jinge90 Mar 11, 2024
3025430
add utils for fp16 comparison
jinge90 Mar 11, 2024
455d343
add work group joint sort for f16
jinge90 Mar 11, 2024
15444c2
use native f16 type
jinge90 Mar 11, 2024
9f6172a
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Mar 14, 2024
2385102
Merge remote-tracking branch 'origin/sycl' into fallback_sort
jinge90 Mar 20, 2024
3ee7b7d
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Apr 3, 2024
91ac557
Sync with latest sycl branch
jinge90 Jul 11, 2024
59c67db
Merge remote-tracking branch 'origin/sycl' into fallback_sort
jinge90 Jul 12, 2024
ae0d2af
link gsort fallback
jinge90 Jul 12, 2024
045413c
update driver test
jinge90 Jul 12, 2024
4ae26de
Enable fallback spv for group sort
jinge90 Jul 12, 2024
e0cb989
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Jul 12, 2024
8a62ceb
Fix driver test regression
jinge90 Jul 12, 2024
7c72135
Add first test case for fallback group sort
jinge90 Jul 12, 2024
92f171f
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Jul 15, 2024
f8190b6
Add test for group sort i8,i16,i64
jinge90 Jul 15, 2024
d242e77
Fix clang-format
jinge90 Jul 15, 2024
1170147
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Jul 16, 2024
bfb2d8b
Combine tests
jinge90 Jul 17, 2024
ee09a2a
Fix joint sort p1i64_u32_p1i64
jinge90 Jul 17, 2024
152e09d
add fp32 test
jinge90 Jul 17, 2024
31c11d1
sync with latest sycl branch
jinge90 Jul 17, 2024
f530e7d
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Jul 19, 2024
0273739
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Jul 22, 2024
b400b03
Fix joint_sort_p1u64_u32_p1u8
jinge90 Jul 22, 2024
c603cb1
add tests
jinge90 Jul 22, 2024
db00c79
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Jul 23, 2024
82fa9ce
Add tests for private sort
jinge90 Jul 23, 2024
06bdf77
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Jul 24, 2024
289395b
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Jul 25, 2024
f672adf
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Jul 29, 2024
5fa8ec3
draft to add key value
jinge90 Jul 29, 2024
b775b85
Add (uint32_t, uint32_t)
jinge90 Jul 29, 2024
db2e183
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Jul 29, 2024
c0dbd92
Add joint sort KV
jinge90 Jul 30, 2024
f61d9ce
add test for KV joint sort
jinge90 Jul 30, 2024
92d7e9e
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Aug 2, 2024
060842e
add KV sort private sort
jinge90 Aug 5, 2024
1672cf4
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Aug 5, 2024
e554305
disable KV sort tests on CPU backend
jinge90 Aug 6, 2024
032e56f
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Aug 6, 2024
627e0e8
add private KV sort
jinge90 Aug 6, 2024
062219a
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Aug 7, 2024
07a5df4
simplify function name
jinge90 Aug 7, 2024
8bc9263
fix merge conflict
jinge90 Aug 20, 2024
89aeaad
Merge remote-tracking branch 'origin/sycl' into fallback_sort
jinge90 Aug 20, 2024
f227a4e
fix clang format
jinge90 Aug 20, 2024
d5ef5e6
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Aug 21, 2024
0c15fd7
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Aug 30, 2024
724113b
add more misc APIs
jinge90 Sep 10, 2024
aee06c9
sync with latest intel/llvm
jinge90 Sep 10, 2024
2670023
fix cmake issue
jinge90 Sep 10, 2024
1017431
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Sep 11, 2024
3139b28
add int8_t value for kv gsort
jinge90 Sep 12, 2024
d7ba9c8
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Sep 12, 2024
ffdee6e
fix KV buble sort stable issue
jinge90 Sep 12, 2024
c52baf4
add e2e tests for p1u8_i8
jinge90 Sep 12, 2024
328b25f
add e2e tests for key_u8
jinge90 Sep 13, 2024
7b8dc30
use p1u8_p1u32 for p1u8_p1f32
jinge90 Sep 13, 2024
fc328cd
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Sep 13, 2024
4f70308
use u32 copy for fp32
jinge90 Sep 13, 2024
96f7ba7
add p1u16_p1i8/16/32/64
jinge90 Sep 14, 2024
47aa231
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Sep 14, 2024
4e46393
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Sep 19, 2024
77d9856
add p1 signed integer key
jinge90 Sep 19, 2024
cfd749d
add tests for p1i8_p1*
jinge90 Sep 19, 2024
883a60c
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Sep 23, 2024
bdd19f2
add wg_private_sort for key-value
jinge90 Sep 23, 2024
287498c
add test for u8_u64
jinge90 Sep 24, 2024
343f56d
add KV sort for i8 key
jinge90 Sep 26, 2024
61d9cf8
Merge remote-tracking branch 'origin/sycl' into fallback_sort
jinge90 Sep 29, 2024
cff0a6b
add work group private sort for i32/u32/i64/u64 key type
jinge90 Sep 29, 2024
f43572a
add tests for i16 key type
jinge90 Sep 30, 2024
396d310
add tests for i16,u16 key type
jinge90 Sep 30, 2024
c845b34
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Oct 8, 2024
5e4f509
add tests for key type u32
jinge90 Oct 9, 2024
bef0bcf
add test for key type i32
jinge90 Oct 9, 2024
35413ea
add tests for key type i64/u64
jinge90 Oct 9, 2024
34f6c35
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Oct 9, 2024
828be3b
apply group broadcast to KV private sort
jinge90 Oct 9, 2024
8a03ba5
add private KV spread sort
jinge90 Oct 11, 2024
5667986
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Oct 12, 2024
c1e3aaa
add private key value sorting with local shared scratch memory
jinge90 Oct 12, 2024
b079feb
add subgroup key-value sort for 1-element for u8/u16 key
jinge90 Oct 14, 2024
5436084
Fix incorrect type in sg_private_sort_p1u16_p1i8
jinge90 Oct 14, 2024
961a6d8
fix e2e test header file issue
jinge90 Oct 14, 2024
f71a79c
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Oct 15, 2024
3ff204a
remove incorrect subgroup private func names
jinge90 Oct 18, 2024
b26e1a5
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Oct 18, 2024
a4e8572
correct function name for subgroup private sorting
jinge90 Oct 21, 2024
bc03dc4
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Oct 21, 2024
f068588
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Oct 22, 2024
11f2a13
sync with latest head
jinge90 Nov 11, 2024
877af07
fix clang format issue
jinge90 Nov 11, 2024
7d87a89
fix clang format
jinge90 Nov 11, 2024
78235d0
Disable AMD target for fallback gsort
jinge90 Nov 11, 2024
3bdc448
fix cmake
jinge90 Nov 11, 2024
4e486b4
Fix cmake issue
jinge90 Nov 11, 2024
2559b78
sync with latest intel/llvm
jinge90 Nov 28, 2024
36ad10f
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 Dec 10, 2024
a5d2e26
sync with latest sycl head
jinge90 Dec 12, 2024
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
8 changes: 4 additions & 4 deletions clang/include/clang/Driver/Options.td
Original file line number Diff line number Diff line change
Expand Up @@ -6900,14 +6900,14 @@ def fno_sycl_dead_args_optimization : Flag<["-"], "fno-sycl-dead-args-optimizati
HelpText<"Disables elimination of DPC++ dead kernel arguments">;
def fsycl_device_lib_EQ : CommaJoined<["-"], "fsycl-device-lib=">,
Flags<[NoXarchOption]>,
Values<"libc,libm-fp32,libm-fp64,libimf-fp32,libimf-fp64,libimf-bf16,all">,
Values<"libc,libm-fp32,libm-fp64,libimf-fp32,libimf-fp64,libimf-bf16,libgsort-fp32,all">,
HelpText<"Control inclusion of device libraries into device binary linkage. "
"Valid arguments are libc, libm-fp32, libm-fp64, libimf-fp32, "
"libimf-fp64, libimf-bf16, all">;
"libimf-fp64, libimf-bf16, libgsort-fp32, all">;
def fno_sycl_device_lib_EQ : CommaJoined<["-"], "fno-sycl-device-lib=">,
Flags<[NoXarchOption]>, Values<"libc, libm-fp32, libm-fp64, all">,
Flags<[NoXarchOption]>, Values<"libc, libm-fp32, libm-fp64, libgsort-fp32, all">,
HelpText<"Control exclusion of device libraries from device binary linkage. "
"Valid arguments are libc, libm-fp32, libm-fp64, all">;
"Valid arguments are libc, libm-fp32, libm-fp64, libgsort-fp32, all">;
def fsycl_device_lib_jit_link : Flag<["-"], "fsycl-device-lib-jit-link">,
HelpText<"Enables sycl device library jit link (experimental)">;
def fno_sycl_device_lib_jit_link : Flag<["-"], "fno-sycl-device-lib-jit-link">,
Expand Down
8 changes: 5 additions & 3 deletions clang/lib/Driver/ToolChains/SYCL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -452,9 +452,9 @@ SYCL::getDeviceLibraries(const Compilation &C, const llvm::Triple &TargetTriple,

// Currently, all SYCL device libraries will be linked by default.
llvm::StringMap<bool> DeviceLibLinkInfo = {
{"libc", true}, {"libm-fp32", true}, {"libm-fp64", true},
{"libimf-fp32", true}, {"libimf-fp64", true}, {"libimf-bf16", true},
{"libm-bfloat16", true}, {"internal", true}};
{"libc", true}, {"libm-fp32", true}, {"libm-fp64", true},
{"libimf-fp32", true}, {"libimf-fp64", true}, {"libimf-bf16", true},
{"libm-bfloat16", true}, {"libgsort-fp32", true}, {"internal", true}};

// If -fno-sycl-device-lib is specified, its values will be used to exclude
// linkage of libraries specified by DeviceLibLinkInfo. Linkage of "internal"
Expand Down Expand Up @@ -536,6 +536,7 @@ SYCL::getDeviceLibraries(const Compilation &C, const llvm::Triple &TargetTriple,
{"libsycl-fallback-complex-fp64", "libm-fp64"},
{"libsycl-fallback-cmath", "libm-fp32"},
{"libsycl-fallback-cmath-fp64", "libm-fp64"},
{"libsycl-fallback-gsort", "libgsort-fp32"},
{"libsycl-fallback-imf", "libimf-fp32"},
{"libsycl-fallback-imf-fp64", "libimf-fp64"},
{"libsycl-fallback-imf-bf16", "libimf-bf16"}};
Expand Down Expand Up @@ -851,6 +852,7 @@ static llvm::SmallVector<StringRef, 16> SYCLDeviceLibList{
"fallback-cmath-fp64",
"fallback-complex",
"fallback-complex-fp64",
"fallback-gsort",
"fallback-imf",
"fallback-imf-fp64",
"fallback-imf-bf16",
Expand Down
Empty file.
Empty file.
5 changes: 5 additions & 0 deletions clang/test/Driver/sycl-device-lib-win.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-complex-fp64.bc"
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-cmath.bc"
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-cmath-fp64.bc"
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-gsort.bc"
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-imf.bc"
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc"
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc"
Expand Down Expand Up @@ -70,6 +71,7 @@
// SYCL_DEVICE_LIB_LINK_WITH_FP64-SAME: "{{.*}}libsycl-fallback-complex-fp64.bc"
// SYCL_DEVICE_LIB_LINK_WITH_FP64-SAME: "{{.*}}libsycl-fallback-cmath.bc"
// SYCL_DEVICE_LIB_LINK_WITH_FP64-SAME: "{{.*}}libsycl-fallback-cmath-fp64.bc"
// SYCL_DEVICE_LIB_LINK_WITH_FP64-SAME: "{{.*}}libsycl-fallback-gsort.bc"
// SYCL_DEVICE_LIB_LINK_WITH_FP64-SAME: "{{.*}}libsycl-fallback-imf.bc"
// SYCL_DEVICE_LIB_LINK_WITH_FP64-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc"
// SYCL_DEVICE_LIB_LINK_WITH_FP64-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc"
Expand All @@ -93,6 +95,7 @@
// SYCL_DEVICE_LIB_LINK_NO_LIBC-SAME: "{{.*}}libsycl-fallback-complex-fp64.bc"
// SYCL_DEVICE_LIB_LINK_NO_LIBC-SAME: "{{.*}}libsycl-fallback-cmath.bc"
// SYCL_DEVICE_LIB_LINK_NO_LIBC-SAME: "{{.*}}libsycl-fallback-cmath-fp64.bc"
// SYCL_DEVICE_LIB_LINK_NO_LIBC-SAME: "{{.*}}libsycl-fallback-gsort.bc"
// SYCL_DEVICE_LIB_LINK_NO_LIBC-SAME: "{{.*}}libsycl-fallback-imf.bc"
// SYCL_DEVICE_LIB_LINK_NO_LIBC-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc"
// SYCL_DEVICE_LIB_LINK_NO_LIBC-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc"
Expand All @@ -115,6 +118,7 @@
// SYCL_DEVICE_LIB_LINK_NO_LIBM-NOT: "{{.*}}libsycl-fallback-complex-fp64.bc"
// SYCL_DEVICE_LIB_LINK_NO_LIBM-NOT: "{{.*}}libsycl-fallback-cmath.bc"
// SYCL_DEVICE_LIB_LINK_NO_LIBM-NOT: "{{.*}}libsycl-fallback-cmath-fp64.bc"
// SYCL_DEVICE_LIB_LINK_NO_LIBM-SAME: "{{.*}}libsycl-fallback-gsort.bc"
// SYCL_DEVICE_LIB_LINK_NO_LIBM-SAME: "{{.*}}libsycl-fallback-imf.bc"
// SYCL_DEVICE_LIB_LINK_NO_LIBM-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc"
// SYCL_DEVICE_LIB_LINK_NO_LIBM-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc"
Expand Down Expand Up @@ -172,6 +176,7 @@
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-complex-fp64.bc"
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-cmath.bc"
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-cmath-fp64.bc"
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-gsort.bc"
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-imf.bc"
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc"
// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc"
Expand Down
16 changes: 11 additions & 5 deletions clang/test/Driver/sycl-device-lib.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-cmath.new.o
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-gsort.new.o
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-imf.new.o
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o
// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o
Expand Down Expand Up @@ -70,11 +71,12 @@
// SYCL_DEVICE_LIB_LINK_WITH_FP64-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o
// SYCL_DEVICE_LIB_LINK_WITH_FP64-SAME: {{.*}}libsycl-fallback-cmath.new.o
// SYCL_DEVICE_LIB_LINK_WITH_FP64-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o
// SYCL_DEVICE_LIB_LINK_WITH_FP64-SAME: {{.*}}libsycl-fallback-gsort.new.o
// SYCL_DEVICE_LIB_LINK_WITH_FP64-SAME: {{.*}}libsycl-fallback-imf.new.o
// SYCL_DEVICE_LIB_LINK_WITH_FP64-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o
// SYCL_DEVICE_LIB_LINK_WITH_FP64-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o
/// ###########################################################################

/// ###########################################################################
/// test behavior of -fno-sycl-device-lib=libc
// RUN: %clangxx -fsycl --offload-new-driver %s -fno-sycl-device-lib=libc --sysroot=%S/Inputs/SYCL -### 2>&1 \
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_LINK_NO_LIBC
Expand All @@ -93,11 +95,12 @@
// SYCL_DEVICE_LIB_LINK_NO_LIBC-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o
// SYCL_DEVICE_LIB_LINK_NO_LIBC-SAME: {{.*}}libsycl-fallback-cmath.new.o
// SYCL_DEVICE_LIB_LINK_NO_LIBC-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o
// SYCL_DEVICE_LIB_LINK_NO_LIBC-SAME: {{.*}}libsycl-fallback-gsort.new.o
// SYCL_DEVICE_LIB_LINK_NO_LIBC-SAME: {{.*}}libsycl-fallback-imf.new.o
// SYCL_DEVICE_LIB_LINK_NO_LIBC-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o
// SYCL_DEVICE_LIB_LINK_NO_LIBC-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o
/// ###########################################################################

/// ###########################################################################
/// test behavior of -fno-sycl-device-lib=libm-fp32,libm-fp64
// RUN: %clangxx -fsycl --offload-new-driver %s -fno-sycl-device-lib=libm-fp32,libm-fp64 --sysroot=%S/Inputs/SYCL -### 2>&1 \
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_LINK_NO_LIBM
Expand All @@ -116,11 +119,12 @@
// SYCL_DEVICE_LIB_LINK_NO_LIBM-NOT: {{.*}}libsycl-fallback-complex-fp64.new.o
// SYCL_DEVICE_LIB_LINK_NO_LIBM-NOT: {{.*}}libsycl-fallback-cmath.new.o
// SYCL_DEVICE_LIB_LINK_NO_LIBM-NOT: {{.*}}libsycl-fallback-cmath-fp64.new.o
// SYCL_DEVICE_LIB_LINK_NO_LIBM-SAME: {{.*}}libsycl-fallback-gsort.new.o
// SYCL_DEVICE_LIB_LINK_NO_LIBM-SAME: {{.*}}libsycl-fallback-imf.new.o
// SYCL_DEVICE_LIB_LINK_NO_LIBM-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o
// SYCL_DEVICE_LIB_LINK_NO_LIBM-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o
/// ###########################################################################

/// ###########################################################################
/// test behavior of disabling all device libraries
// RUN: %clangxx -fsycl --offload-new-driver %s -fno-sycl-device-lib=libc,libm-fp32 --sysroot=%S/Inputs/SYCL -### 2>&1 \
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_LINK_NO_DEVICE_LIB
Expand Down Expand Up @@ -152,6 +156,7 @@
// SYCL_DEVICE_LIB_INVALID_VALUE: error: unsupported argument '[[Val]]' to option '-fsycl-device-lib='
// SYCL_NO_DEVICE_LIB_INVALID_VALUE: error: unsupported argument '[[Val]]' to option '-fno-sycl-device-lib='


/// ###########################################################################
/// test behavior of libsycl-asan.o linking when -fsanitize=address is available
// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -fsanitize=address -### 2>&1 \
Expand All @@ -168,8 +173,8 @@
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_ASAN_MACRO
// SYCL_DEVICE_LIB_ASAN: clang-linker-wrapper{{.*}} "-sycl-device-libraries
// SYCL_DEVICE_LIB_ASAN: {{.*}}libsycl-crt.new.o
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-complex.
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-complex-fp64.
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-complex.new.o
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-complex-fp64.new.o
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-cmath.new.o
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-cmath-fp64.new.o
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-imf.new.o
Expand All @@ -181,6 +186,7 @@
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cmath.new.o
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-gsort.new.o
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf.new.o
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o
Expand Down
2 changes: 1 addition & 1 deletion clang/test/Driver/sycl-offload-new-driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
// RUN: %clangxx --target=x86_64-unknown-linux-gnu -fsycl --offload-new-driver \
// RUN: --sysroot=%S/Inputs/SYCL -### %s 2>&1 \
// RUN: | FileCheck -check-prefix WRAPPER_OPTIONS %s
// WRAPPER_OPTIONS: clang-linker-wrapper{{.*}} "-sycl-device-libraries=libsycl-crt.new.o,libsycl-complex.new.o,libsycl-complex-fp64.new.o,libsycl-cmath.new.o,libsycl-cmath-fp64.new.o,libsycl-imf.new.o,libsycl-imf-fp64.new.o,libsycl-imf-bf16.new.o,libsycl-fallback-cassert.new.o,libsycl-fallback-cstring.new.o,libsycl-fallback-complex.new.o,libsycl-fallback-complex-fp64.new.o,libsycl-fallback-cmath.new.o,libsycl-fallback-cmath-fp64.new.o,libsycl-fallback-imf.new.o,libsycl-fallback-imf-fp64.new.o,libsycl-fallback-imf-bf16.new.o,libsycl-itt-user-wrappers.new.o,libsycl-itt-compiler-wrappers.new.o,libsycl-itt-stubs.new.o"
// WRAPPER_OPTIONS: clang-linker-wrapper{{.*}} "-sycl-device-libraries=libsycl-crt.new.o,libsycl-complex.new.o,libsycl-complex-fp64.new.o,libsycl-cmath.new.o,libsycl-cmath-fp64.new.o,libsycl-imf.new.o,libsycl-imf-fp64.new.o,libsycl-imf-bf16.new.o,libsycl-fallback-cassert.new.o,libsycl-fallback-cstring.new.o,libsycl-fallback-complex.new.o,libsycl-fallback-complex-fp64.new.o,libsycl-fallback-cmath.new.o,libsycl-fallback-cmath-fp64.new.o,libsycl-fallback-gsort.new.o,libsycl-fallback-imf.new.o,libsycl-fallback-imf-fp64.new.o,libsycl-fallback-imf-bf16.new.o,libsycl-itt-user-wrappers.new.o,libsycl-itt-compiler-wrappers.new.o,libsycl-itt-stubs.new.o"
// WRAPPER_OPTIONS-SAME: "-sycl-device-library-location={{.*}}/lib"

/// Verify phases used to generate SPIR-V instead of LLVM-IR
Expand Down
71 changes: 1 addition & 70 deletions libdevice/atomic.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,78 +7,9 @@
//===----------------------------------------------------------------------===//
#pragma once

#include <cstdint>

#include "device.h"
#include "spirv_decls.hpp"

#if defined(__SPIR__) || defined(__SPIRV__)

#define SPIR_GLOBAL __attribute__((opencl_global))

namespace __spv {
struct Scope {

enum Flag : uint32_t {
CrossDevice = 0,
Device = 1,
Workgroup = 2,
Subgroup = 3,
Invocation = 4,
};

constexpr Scope(Flag flag) : flag_value(flag) {}

constexpr operator uint32_t() const { return flag_value; }

Flag flag_value;
};

struct MemorySemanticsMask {

enum Flag : uint32_t {
None = 0x0,
Acquire = 0x2,
Release = 0x4,
AcquireRelease = 0x8,
SequentiallyConsistent = 0x10,
UniformMemory = 0x40,
SubgroupMemory = 0x80,
WorkgroupMemory = 0x100,
CrossWorkgroupMemory = 0x200,
AtomicCounterMemory = 0x400,
ImageMemory = 0x800,
};

constexpr MemorySemanticsMask(Flag flag) : flag_value(flag) {}

constexpr operator uint32_t() const { return flag_value; }

Flag flag_value;
};
} // namespace __spv

extern DEVICE_EXTERNAL int
__spirv_AtomicCompareExchange(int SPIR_GLOBAL *, __spv::Scope::Flag,
__spv::MemorySemanticsMask::Flag,
__spv::MemorySemanticsMask::Flag, int, int);

extern DEVICE_EXTERNAL int
__spirv_AtomicCompareExchange(int *, __spv::Scope::Flag,
__spv::MemorySemanticsMask::Flag,
__spv::MemorySemanticsMask::Flag, int, int);

extern DEVICE_EXTERNAL int __spirv_AtomicLoad(const int SPIR_GLOBAL *,
__spv::Scope::Flag,
__spv::MemorySemanticsMask::Flag);

extern DEVICE_EXTERNAL void
__spirv_AtomicStore(int SPIR_GLOBAL *, __spv::Scope::Flag,
__spv::MemorySemanticsMask::Flag, int);

extern DEVICE_EXTERNAL void
__spirv_AtomicStore(int *, __spv::Scope::Flag, __spv::MemorySemanticsMask::Flag,
int);

/// Atomically set the value in *Ptr with Desired if and only if it is Expected
/// Return the value which already was in *Ptr
static inline int atomicCompareAndSet(SPIR_GLOBAL int *Ptr, int Desired,
Expand Down
13 changes: 9 additions & 4 deletions libdevice/cmake/modules/SYCLLibdevice.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -218,9 +218,8 @@ function(add_devicelibs filename)
DEPENDENCIES ${ARG_DEPENDENCIES}
EXTRA_OPTS ${ARG_EXTRA_OPTS} ${bc_device_compile_opts}
${compile_opts_${arch}})

append_to_property(${bc_binary_dir}/${filename}-${arch}.bc
PROPERTY_NAME BC_DEVICE_LIBS_${arch})
append_to_property(${bc_binary_dir}/${filename}-${arch}.bc
PROPERTY_NAME BC_DEVICE_LIBS_${arch})
endforeach()
endfunction()

Expand All @@ -233,7 +232,7 @@ set(itt_obj_deps device_itt.h spirv_vars.h device.h sycl-compiler)
set(bfloat16_obj_deps sycl-headers sycl-compiler)
if (NOT MSVC AND UR_SANITIZER_INCLUDE_DIR)
set(asan_obj_deps
device.h atomic.hpp spirv_vars.h
device.h atomic.hpp spirv_vars.h spirv_decls.hpp
${UR_SANITIZER_INCLUDE_DIR}/asan/asan_libdevice.hpp
include/asan_rtl.hpp
include/spir_global_var.hpp
Expand Down Expand Up @@ -296,6 +295,7 @@ if (NOT MSVC AND UR_SANITIZER_INCLUDE_DIR)
include/spir_global_var.hpp
sycl-compiler)
endif()
set(gsort_obj_deps device.h spirv_decls.hpp spirv_vars.h group_helper.hpp sort_helper.hpp sycl-compiler)

if("native_cpu" IN_LIST SYCL_ENABLE_BACKENDS)
if (NOT DEFINED NATIVE_CPU_DIR)
Expand Down Expand Up @@ -416,6 +416,11 @@ add_devicelibs(libsycl-fallback-bfloat16
add_devicelibs(libsycl-native-bfloat16
SRC bfloat16_wrapper.cpp
DEPENDENCIES ${bfloat16_obj_deps})
add_devicelibs(libsycl-fallback-gsort
SRC fallback-gsort.cpp
DEPENDENCIES ${gsort_obj_deps}
EXTRA_OPTS -fno-sycl-instrument-device-code
SKIP_ARCHS amdgcn-amd-amdhsa)

# Create dependency and source lists for Intel math function libraries.
file(MAKE_DIRECTORY ${obj_binary_dir}/libdevice)
Expand Down
Loading
Loading