diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp index 2a50df84e2850..b9d8d1784831f 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -582,21 +582,13 @@ SYCLToolChain::getDeviceLibNames(const Driver &D, using SYCLDeviceLibsList = SmallVector; const SYCLDeviceLibsList SYCLDeviceLibs = {"libsycl-crt", - "libsycl-complex", - "libsycl-complex-fp64", "libsycl-cmath", - "libsycl-cmath-fp64", #if defined(_WIN32) "libsycl-msvc-math", #endif "libsycl-imf", "libsycl-imf-fp64", "libsycl-imf-bf16", - "libsycl-fallback-cstring", - "libsycl-fallback-complex", - "libsycl-fallback-complex-fp64", - "libsycl-fallback-cmath", - "libsycl-fallback-cmath-fp64", "libsycl-fallback-imf", "libsycl-fallback-imf-fp64", "libsycl-fallback-imf-bf16"}; @@ -743,9 +735,6 @@ static llvm::SmallVector SYCLDeviceLibList{ "bfloat16", "crt", "cmath", - "cmath-fp64", - "complex", - "complex-fp64", #if defined(_WIN32) "msvc-math", #else @@ -766,11 +755,6 @@ static llvm::SmallVector SYCLDeviceLibList{ "itt-compiler-wrappers", "itt-stubs", "itt-user-wrappers", - "fallback-cstring", - "fallback-cmath", - "fallback-cmath-fp64", - "fallback-complex", - "fallback-complex-fp64", "fallback-imf", "fallback-imf-fp64", "fallback-imf-bf16", diff --git a/clang/test/Driver/sycl-device-lib-old-model.cpp b/clang/test/Driver/sycl-device-lib-old-model.cpp index 0612d7f446e56..e8a8e76235117 100644 --- a/clang/test/Driver/sycl-device-lib-old-model.cpp +++ b/clang/test/Driver/sycl-device-lib-old-model.cpp @@ -10,18 +10,10 @@ // RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_LINK_DEFAULT // SYCL_DEVICE_LIB_LINK_DEFAULT: llvm-link{{.*}} "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-complex.bc" -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-complex-fp64.bc" // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-cmath.bc" -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-cmath-fp64.bc" // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-imf.bc" // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-imf-fp64.bc" // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-imf-bf16.bc" -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-cstring.bc" -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-complex.bc" -// 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-imf.bc" // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc" // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc" @@ -46,18 +38,10 @@ // SYCL_LLVM_LINK_DEVICE_LIB: llvm-link{{.*}} "{{.*}}.bc" "-o" "{{.*}}.bc" "--suppress-warnings" // SYCL_LLVM_LINK_DEVICE_LIB: llvm-link{{.*}} "-only-needed" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-crt.bc" -// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-complex.bc" -// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-complex-fp64.bc" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-cmath.bc" -// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-cmath-fp64.bc" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-imf.bc" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-imf-fp64.bc" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-imf-bf16.bc" -// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-cstring.bc" -// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-complex.bc" -// 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-imf.bc" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc" @@ -86,18 +70,10 @@ // RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=address -DUSE_SYCL_DEVICE_ASAN" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_ASAN_MACRO // SYCL_DEVICE_LIB_ASAN: llvm-link{{.*}} "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-complex.bc" -// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-complex-fp64.bc" // SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-cmath.bc" -// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-cmath-fp64.bc" // SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-imf.bc" // SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-imf-fp64.bc" // SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-imf-bf16.bc" -// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-cstring.bc" -// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-complex.bc" -// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-complex-fp64.bc" -// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-cmath.bc" -// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-cmath-fp64.bc" // SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-imf.bc" // SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc" // SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc" @@ -120,18 +96,10 @@ // RUN: %clangxx -fsycl -fsycl-targets=spir64_gen -Xs "-device 12.60.7" --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -Xarch_device -fsanitize=address -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_PVC // SYCL_DEVICE_LIB_ASAN_PVC: llvm-link{{.*}} "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-complex.bc" -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-complex-fp64.bc" // SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-cmath.bc" -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-cmath-fp64.bc" // SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-imf.bc" // SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-imf-fp64.bc" // SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-imf-bf16.bc" -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-fallback-cstring.bc" -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-fallback-complex.bc" -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-fallback-complex-fp64.bc" -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-fallback-cmath.bc" -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-fallback-cmath-fp64.bc" // SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-fallback-imf.bc" // SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc" // SYCL_DEVICE_LIB_ASAN_PVC-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc" @@ -142,18 +110,10 @@ // RUN: %clangxx -fsycl -fsycl-targets=spir64_x86_64 --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -Xarch_device -fsanitize=address -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_CPU // SYCL_DEVICE_LIB_ASAN_CPU: llvm-link{{.*}} "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-complex.bc" -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-complex-fp64.bc" // SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-cmath.bc" -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-cmath-fp64.bc" // SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-imf.bc" // SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-imf-fp64.bc" // SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-imf-bf16.bc" -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-fallback-cstring.bc" -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-fallback-complex.bc" -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-fallback-complex-fp64.bc" -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-fallback-cmath.bc" -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-fallback-cmath-fp64.bc" // SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-fallback-imf.bc" // SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc" // SYCL_DEVICE_LIB_ASAN_CPU-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc" @@ -173,18 +133,10 @@ // RUN: --sysroot=%S/Inputs/SYCL -Xarch_device -fsanitize=address -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_DG2 // SYCL_DEVICE_LIB_ASAN_DG2: llvm-link{{.*}} "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-complex.bc" -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-complex-fp64.bc" // SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-cmath.bc" -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-cmath-fp64.bc" // SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-imf.bc" // SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-imf-fp64.bc" // SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-imf-bf16.bc" -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-fallback-cstring.bc" -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-fallback-complex.bc" -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-fallback-complex-fp64.bc" -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-fallback-cmath.bc" -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-fallback-cmath-fp64.bc" // SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-fallback-imf.bc" // SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc" // SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc" @@ -206,18 +158,10 @@ // RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=memory -DUSE_SYCL_DEVICE_MSAN" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_MSAN_MACRO // SYCL_DEVICE_LIB_MSAN: llvm-link{{.*}} "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-complex.bc" -// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-complex-fp64.bc" // SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-cmath.bc" -// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-cmath-fp64.bc" // SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-imf.bc" // SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-imf-fp64.bc" // SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-imf-bf16.bc" -// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-cstring.bc" -// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-complex.bc" -// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-complex-fp64.bc" -// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-cmath.bc" -// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-cmath-fp64.bc" // SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-imf.bc" // SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc" // SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc" @@ -265,18 +209,10 @@ // RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=thread -DUSE_SYCL_DEVICE_TSAN" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_TSAN_MACRO // SYCL_DEVICE_LIB_TSAN: llvm-link{{.*}} "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-complex.bc" -// SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-complex-fp64.bc" // SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-cmath.bc" -// SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-cmath-fp64.bc" // SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-imf.bc" // SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-imf-fp64.bc" // SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-imf-bf16.bc" -// SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-fallback-cstring.bc" -// SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-fallback-complex.bc" -// SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-fallback-complex-fp64.bc" -// SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-fallback-cmath.bc" -// SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-fallback-cmath-fp64.bc" // SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-fallback-imf.bc" // SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc" // SYCL_DEVICE_LIB_TSAN-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc" diff --git a/clang/test/Driver/sycl-device-lib-win.cpp b/clang/test/Driver/sycl-device-lib-win.cpp index ae7a4f743ecb4..580519540a257 100644 --- a/clang/test/Driver/sycl-device-lib-win.cpp +++ b/clang/test/Driver/sycl-device-lib-win.cpp @@ -11,17 +11,10 @@ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_LINK_DEFAULT // SYCL_DEVICE_LIB_LINK_DEFAULT: llvm-link{{.*}} "{{.*}}libsycl-crt.bc" // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-complex.bc" -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-complex-fp64.bc" // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-cmath.bc" -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-cmath-fp64.bc" // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-imf.bc" // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-imf-fp64.bc" // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-imf-bf16.bc" -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-cstring.bc" -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-complex.bc" -// 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-imf.bc" // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc" // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc" @@ -45,17 +38,10 @@ // SYCL_LLVM_LINK_DEVICE_LIB: llvm-link{{.*}} "-only-needed" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-crt.bc" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-complex.bc" -// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-complex-fp64.bc" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-cmath.bc" -// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-cmath-fp64.bc" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-imf.bc" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-imf-fp64.bc" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-imf-bf16.bc" -// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-cstring.bc" -// SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-complex.bc" -// 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-imf.bc" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc" // SYCL_LLVM_LINK_DEVICE_LIB-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc" diff --git a/clang/test/Driver/sycl-device-lib.cpp b/clang/test/Driver/sycl-device-lib.cpp index 5eb6dbdb900aa..d64002219a8b0 100644 --- a/clang/test/Driver/sycl-device-lib.cpp +++ b/clang/test/Driver/sycl-device-lib.cpp @@ -10,18 +10,10 @@ // RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_LINK_DEFAULT // SYCL_DEVICE_LIB_LINK_DEFAULT: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-complex.bc -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-complex-fp64.bc // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-cmath.bc -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-cmath-fp64.bc // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-imf.bc // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-imf-fp64.bc // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-imf-bf16.bc -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-cstring.bc -// SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-complex.bc -// 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-imf.bc // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-imf-fp64.bc // SYCL_DEVICE_LIB_LINK_DEFAULT-SAME: {{.*}}libsycl-fallback-imf-bf16.bc @@ -49,18 +41,10 @@ // RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=address -DUSE_SYCL_DEVICE_ASAN" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN // SYCL_DEVICE_LIB_ASAN: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-complex.bc -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-complex-fp64.bc // SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-cmath.bc -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-cmath-fp64.bc // SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-imf.bc // SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-imf-fp64.bc // SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-imf-bf16.bc -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cstring.bc -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-complex.bc -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-complex-fp64.bc -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cmath.bc -// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc // SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf.bc // SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf-fp64.bc // SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf-bf16.bc @@ -91,18 +75,10 @@ // RUN: -Xarch_device -fsanitize=address -Xs "-device 12.60.7" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_PVC // SYCL_DEVICE_LIB_ASAN_PVC: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-complex. -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-complex-fp64. // SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-cmath.bc -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-cmath-fp64.bc // SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-imf.bc // SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-imf-fp64.bc // SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-imf-bf16.bc -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-cstring.bc -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-complex.bc -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-complex-fp64.bc -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-cmath.bc -// SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc // SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-imf.bc // SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-imf-fp64.bc // SYCL_DEVICE_LIB_ASAN_PVC-SAME: {{.*}}libsycl-fallback-imf-bf16.bc @@ -113,18 +89,10 @@ // RUN: %clangxx -fsycl -fsycl-targets=spir64_x86_64 --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -Xarch_device -fsanitize=address -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_CPU // SYCL_DEVICE_LIB_ASAN_CPU: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-complex.bc -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-complex-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-cmath.bc -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-cmath-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-imf.bc // SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-imf-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-imf-bf16.bc -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-cstring.bc -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-complex.bc -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-complex-fp64.bc -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-cmath.bc -// SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-imf.bc // SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-imf-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU-SAME: {{.*}}libsycl-fallback-imf-bf16.bc @@ -138,35 +106,19 @@ // RUN: -fsanitize=address -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_CPU_GPU // SYCL_DEVICE_LIB_ASAN_CPU_GPU: clang{{.*}} "-triple" "spir64_gen-unknown-unknown"{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-complex.bc -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-complex-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-cmath.bc -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-cmath-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-imf.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-imf-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-imf-bf16.bc -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-cstring.bc -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-complex.bc -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-complex-fp64.bc -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-cmath.bc -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-imf.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-imf-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-imf-bf16.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: "-mlink-bitcode-file" "{{.*}}libsycl-asan.bc" // SYCL_DEVICE_LIB_ASAN_CPU_GPU: clang{{.*}} "-triple" "spir64_x86_64-unknown-unknown"{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-complex.bc -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-complex-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-cmath.bc -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-cmath-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-imf.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-imf-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-imf-bf16.bc -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-cstring.bc -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-complex.bc -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-complex-fp64.bc -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-cmath.bc -// SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-imf.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-imf-fp64.bc // SYCL_DEVICE_LIB_ASAN_CPU_GPU-SAME: {{.*}}libsycl-fallback-imf-bf16.bc @@ -186,18 +138,10 @@ // RUN: -Xarch_device -fsanitize=address -Xs "-device dg2" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_DG2 // SYCL_DEVICE_LIB_ASAN_DG2: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-complex.bc -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-complex-fp64.bc // SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-cmath.bc -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-cmath-fp64.bc // SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-imf.bc // SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-imf-fp64.bc // SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-imf-bf16.bc -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-cstring.bc -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-complex.bc -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-complex-fp64.bc -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-cmath.bc -// SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc // SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-imf.bc // SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-imf-fp64.bc // SYCL_DEVICE_LIB_ASAN_DG2-SAME: {{.*}}libsycl-fallback-imf-bf16.bc @@ -213,18 +157,10 @@ // RUN: -Xarch_device -fsanitize=address -Xsycl-target-backend=spir64_gen "-device pvc,dg2" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_MUL // SYCL_DEVICE_LIB_ASAN_MUL: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-complex.bc -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-complex-fp64.bc // SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-cmath.bc -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-cmath-fp64.bc // SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-imf.bc // SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-imf-fp64.bc // SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-imf-bf16.bc -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-cstring.bc -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-complex.bc -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-complex-fp64.bc -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-cmath.bc -// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc // SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-imf.bc // SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-imf-fp64.bc // SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-imf-bf16.bc @@ -243,18 +179,10 @@ // RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=memory -DUSE_SYCL_DEVICE_MSAN" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN // SYCL_DEVICE_LIB_MSAN: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-complex.bc -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-complex-fp64.bc // SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-cmath.bc -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-cmath-fp64.bc // SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-imf.bc // SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-imf-fp64.bc // SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-imf-bf16.bc -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-cstring.bc -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-complex.bc -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-complex-fp64.bc -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-cmath.bc -// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc // SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-imf.bc // SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-imf-fp64.bc // SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-imf-bf16.bc @@ -288,18 +216,10 @@ // RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=thread -DUSE_SYCL_DEVICE_TSAN" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN // SYCL_DEVICE_LIB_TSAN: clang{{.*}} "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-complex. -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-complex-fp64. // SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-cmath.bc -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-cmath-fp64.bc // SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-imf.bc // SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-imf-fp64.bc // SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-imf-bf16.bc -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-cstring.bc -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-complex.bc -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-complex-fp64.bc -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-cmath.bc -// SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-cmath-fp64.bc // SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-imf.bc // SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-imf-fp64.bc // SYCL_DEVICE_LIB_TSAN-SAME: {{.*}}libsycl-fallback-imf-bf16.bc diff --git a/clang/test/Driver/sycl-force-target.cpp b/clang/test/Driver/sycl-force-target.cpp index f608fffbb5471..98239f4e4fc14 100644 --- a/clang/test/Driver/sycl-force-target.cpp +++ b/clang/test/Driver/sycl-force-target.cpp @@ -18,7 +18,7 @@ // CHECK_FORCE_TARGET: clang-offload-bundler{{.*}} "-type=o" "-targets=host-{{.*}},sycl-spir64-unknown-unknown" "-input={{.*}}" "-output={{.*}}" "-output=[[DEVICEOBJECTOUT:.+]]" "-unbundle" "-allow-missing-bundles" // CHECK_FORCE_TARGET: spirv-to-ir-wrapper{{.*}} "[[DEVICEOBJECTOUT]]" "-o" "[[DEVICEOBJECTBC:.+\.bc]]" // CHECK_FORCE_TARGET: llvm-link{{.*}} "[[DEVICEOBJECTBC]]"{{.*}} "-o" "[[DEVICEOBJLINKED:.+\.bc]]" "--suppress-warnings" -// CHECK_FORCE_TARGET: llvm-link{{.*}} "{{.*}}libsycl-complex{{.*}}" +// CHECK_FORCE_TARGET: llvm-link{{.*}} "{{.*}}libsycl-cmath{{.*}}" // CHECK_FORCE_TARGET_GEN: llvm-foreach{{.*}} {{.*}}ocloc{{.*}} // CHECK_FORCE_TARGET_CPU: llvm-foreach{{.*}} {{.*}}opencl-aot{{.*}} diff --git a/clang/test/Driver/sycl-no-rdc-fat-archive-old-model.cpp b/clang/test/Driver/sycl-no-rdc-fat-archive-old-model.cpp index fe871ebf916dc..deefefa845061 100644 --- a/clang/test/Driver/sycl-no-rdc-fat-archive-old-model.cpp +++ b/clang/test/Driver/sycl-no-rdc-fat-archive-old-model.cpp @@ -13,18 +13,18 @@ // CHECK: 2: clang-offload-unbundler, {1}, tempfilelist // CHECK: 3: spirv-to-ir-wrapper, {2}, tempfilelist, (device-sycl) // CHECK: 4: input, "{{.*}}libsycl-crt.bc", ir, (device-sycl) -// CHECK: 23: linker, {4, {{.*}}}, ir, (device-sycl) -// CHECK: 24: linker, {3, 23}, ir, (device-sycl) -// CHECK: 25: foreach, {3, 24}, ir, (device-sycl) -// CHECK: 26: file-table-tform, {3, 25}, tempfilelist, (device-sycl) -// CHECK: 27: sycl-post-link, {26}, tempfiletable, (device-sycl) -// CHECK: 28: foreach, {26, 27}, tempfiletable, (device-sycl) -// CHECK: 29: file-table-tform, {28}, tempfilelist, (device-sycl) -// CHECK: 30: file-table-tform, {28}, tempfilelist, (device-sycl) -// CHECK: 31: foreach, {26, 30}, tempfilelist, (device-sycl) -// CHECK: 32: file-table-tform, {31}, tempfilelist, (device-sycl) -// CHECK: 33: llvm-spirv, {32}, tempfilelist, (device-sycl) -// CHECK: 34: file-table-tform, {29, 33}, tempfiletable, (device-sycl) -// CHECK: 35: clang-offload-wrapper, {34}, object, (device-sycl) -// CHECK: 36: offload, "device-sycl (spir64-unknown-unknown)" {35}, object -// CHECK: 37: linker, {0, 36}, image, (host-sycl) +// CHECK: 15: linker, {4, {{.*}}}, ir, (device-sycl) +// CHECK: 16: linker, {3, 15}, ir, (device-sycl) +// CHECK: 17: foreach, {3, 16}, ir, (device-sycl) +// CHECK: 18: file-table-tform, {3, 17}, tempfilelist, (device-sycl) +// CHECK: 19: sycl-post-link, {18}, tempfiletable, (device-sycl) +// CHECK: 20: foreach, {18, 19}, tempfiletable, (device-sycl) +// CHECK: 21: file-table-tform, {20}, tempfilelist, (device-sycl) +// CHECK: 22: file-table-tform, {20}, tempfilelist, (device-sycl) +// CHECK: 23: foreach, {18, 22}, tempfilelist, (device-sycl) +// CHECK: 24: file-table-tform, {23}, tempfilelist, (device-sycl) +// CHECK: 25: llvm-spirv, {24}, tempfilelist, (device-sycl) +// CHECK: 26: file-table-tform, {21, 25}, tempfiletable, (device-sycl) +// CHECK: 27: clang-offload-wrapper, {26}, object, (device-sycl) +// CHECK: 28: offload, "device-sycl (spir64-unknown-unknown)" {27}, object +// CHECK: 29: linker, {0, 28}, image, (host-sycl) diff --git a/clang/test/Driver/sycl-no-rdc-fat-archive-win.cpp b/clang/test/Driver/sycl-no-rdc-fat-archive-win.cpp index bc0e5c3f63566..ca6fab9afa8d6 100644 --- a/clang/test/Driver/sycl-no-rdc-fat-archive-win.cpp +++ b/clang/test/Driver/sycl-no-rdc-fat-archive-win.cpp @@ -18,18 +18,18 @@ // CHECK: 2: clang-offload-unbundler, {1}, tempfilelist // CHECK: 3: spirv-to-ir-wrapper, {2}, tempfilelist, (device-sycl) // CHECK: 4: input, "{{.*}}libsycl-crt{{.*}}", ir, (device-sycl) -// CHECK: 24: linker, {4, {{.*}}}, ir, (device-sycl) -// CHECK: 25: linker, {3, 24}, ir, (device-sycl) -// CHECK: 26: foreach, {3, 25}, ir, (device-sycl) -// CHECK: 27: file-table-tform, {3, 26}, tempfilelist, (device-sycl) -// CHECK: 28: sycl-post-link, {27}, tempfiletable, (device-sycl) -// CHECK: 29: foreach, {27, 28}, tempfiletable, (device-sycl) -// CHECK: 30: file-table-tform, {29}, tempfilelist, (device-sycl) -// CHECK: 31: file-table-tform, {29}, tempfilelist, (device-sycl) -// CHECK: 32: foreach, {27, 31}, tempfilelist, (device-sycl) -// CHECK: 33: file-table-tform, {32}, tempfilelist, (device-sycl) -// CHECK: 34: llvm-spirv, {33}, tempfilelist, (device-sycl) -// CHECK: 35: file-table-tform, {30, 34}, tempfiletable, (device-sycl) -// CHECK: 36: clang-offload-wrapper, {35}, object, (device-sycl) -// CHECK: 37: offload, "device-sycl (spir64-unknown-unknown)" {36}, object -// CHECK: 38: linker, {0, 37}, image, (host-sycl) +// CHECK: 15: linker, {4, {{.*}}}, ir, (device-sycl) +// CHECK: 16: linker, {3, 15}, ir, (device-sycl) +// CHECK: 17: foreach, {3, 16}, ir, (device-sycl) +// CHECK: 18: file-table-tform, {3, 17}, tempfilelist, (device-sycl) +// CHECK: 19: sycl-post-link, {18}, tempfiletable, (device-sycl) +// CHECK: 20: foreach, {18, 19}, tempfiletable, (device-sycl) +// CHECK: 21: file-table-tform, {20}, tempfilelist, (device-sycl) +// CHECK: 22: file-table-tform, {20}, tempfilelist, (device-sycl) +// CHECK: 23: foreach, {18, 22}, tempfilelist, (device-sycl) +// CHECK: 24: file-table-tform, {23}, tempfilelist, (device-sycl) +// CHECK: 25: llvm-spirv, {24}, tempfilelist, (device-sycl) +// CHECK: 26: file-table-tform, {21, 25}, tempfiletable, (device-sycl) +// CHECK: 27: clang-offload-wrapper, {26}, object, (device-sycl) +// CHECK: 28: offload, "device-sycl (spir64-unknown-unknown)" {27}, object +// CHECK: 29: linker, {0, 28}, image, (host-sycl) diff --git a/clang/test/Driver/sycl-no-rdc-old-model.cpp b/clang/test/Driver/sycl-no-rdc-old-model.cpp index 6bb6fec807614..dc54b4d4f19e2 100644 --- a/clang/test/Driver/sycl-no-rdc-old-model.cpp +++ b/clang/test/Driver/sycl-no-rdc-old-model.cpp @@ -12,19 +12,19 @@ // CHECK: 12: preprocessor, {11}, c++-cpp-output, (device-sycl) // CHECK: 13: compiler, {12}, ir, (device-sycl) // CHECK: 18: input, "{{.*}}libsycl-crt.bc", ir, (device-sycl) -// CHECK: 37: linker, {18, {{.*}}}, ir, (device-sycl) -// CHECK: 38: linker, {4, 37}, ir, (device-sycl) -// CHECK: 39: sycl-post-link, {38}, tempfiletable, (device-sycl) -// CHECK: 40: file-table-tform, {39}, tempfilelist, (device-sycl) -// CHECK: 41: llvm-spirv, {40}, tempfilelist, (device-sycl) -// CHECK: 42: file-table-tform, {39, 41}, tempfiletable, (device-sycl) -// CHECK: 43: clang-offload-wrapper, {42}, object, (device-sycl) -// CHECK: 44: offload, "device-sycl (spir64-unknown-unknown)" {43}, object -// CHECK: 45: linker, {13, 37}, ir, (device-sycl) -// CHECK: 46: sycl-post-link, {45}, tempfiletable, (device-sycl) -// CHECK: 47: file-table-tform, {46}, tempfilelist, (device-sycl) -// CHECK: 48: llvm-spirv, {47}, tempfilelist, (device-sycl) -// CHECK: 49: file-table-tform, {46, 48}, tempfiletable, (device-sycl) -// CHECK: 50: clang-offload-wrapper, {49}, object, (device-sycl) -// CHECK: 51: offload, "device-sycl (spir64-unknown-unknown)" {50}, object -// CHECK: 52: linker, {8, 17, 44, 51}, image, (host-sycl) +// CHECK: 29: linker, {18, {{.*}}}, ir, (device-sycl) +// CHECK: 30: linker, {4, 29}, ir, (device-sycl) +// CHECK: 31: sycl-post-link, {30}, tempfiletable, (device-sycl) +// CHECK: 32: file-table-tform, {31}, tempfilelist, (device-sycl) +// CHECK: 33: llvm-spirv, {32}, tempfilelist, (device-sycl) +// CHECK: 34: file-table-tform, {31, 33}, tempfiletable, (device-sycl) +// CHECK: 35: clang-offload-wrapper, {34}, object, (device-sycl) +// CHECK: 36: offload, "device-sycl (spir64-unknown-unknown)" {35}, object +// CHECK: 37: linker, {13, 29}, ir, (device-sycl) +// CHECK: 38: sycl-post-link, {37}, tempfiletable, (device-sycl) +// CHECK: 39: file-table-tform, {38}, tempfilelist, (device-sycl) +// CHECK: 40: llvm-spirv, {39}, tempfilelist, (device-sycl) +// CHECK: 41: file-table-tform, {38, 40}, tempfiletable, (device-sycl) +// CHECK: 42: clang-offload-wrapper, {41}, object, (device-sycl) +// CHECK: 43: offload, "device-sycl (spir64-unknown-unknown)" {42}, object +// CHECK: 44: linker, {8, 17, 36, 43}, image, (host-sycl) diff --git a/clang/test/Driver/sycl-no-rdc-win.cpp b/clang/test/Driver/sycl-no-rdc-win.cpp index 61b39a642d1c5..b84d0c1d1a28a 100644 --- a/clang/test/Driver/sycl-no-rdc-win.cpp +++ b/clang/test/Driver/sycl-no-rdc-win.cpp @@ -15,22 +15,22 @@ // CHECK: 13: compiler, {12}, ir, (device-sycl) // CHECK: 14: offload, "host-sycl (x86_64-pc-windows-msvc)" {10}, "device-sycl (spir64-unknown-unknown)" {13}, c++-cpp-output // CHECK: 18: input, "{{.*}}libsycl-crt{{.*}}", ir, (device-sycl) -// CHECK: 38: linker, {18, {{.*}}}, ir, (device-sycl) -// CHECK: 39: linker, {4, 38}, ir, (device-sycl) -// CHECK: 40: sycl-post-link, {39}, tempfiletable, (device-sycl) -// CHECK: 41: file-table-tform, {40}, tempfilelist, (device-sycl) -// CHECK: 42: llvm-spirv, {41}, tempfilelist, (device-sycl) -// CHECK: 43: file-table-tform, {40, 42}, tempfiletable, (device-sycl) -// CHECK: 44: clang-offload-wrapper, {43}, object, (device-sycl) -// CHECK: 45: offload, "device-sycl (spir64-unknown-unknown)" {44}, object -// CHECK: 46: linker, {13, 38}, ir, (device-sycl) -// CHECK: 47: sycl-post-link, {46}, tempfiletable, (device-sycl) -// CHECK: 48: file-table-tform, {47}, tempfilelist, (device-sycl) -// CHECK: 49: llvm-spirv, {48}, tempfilelist, (device-sycl) -// CHECK: 50: file-table-tform, {47, 49}, tempfiletable, (device-sycl) -// CHECK: 51: clang-offload-wrapper, {50}, object, (device-sycl) -// CHECK: 52: offload, "device-sycl (spir64-unknown-unknown)" {51}, object -// CHECK: 53: linker, {8, 17, 45, 52}, image, (host-sycl) +// CHECK: 30: linker, {18, {{.*}}}, ir, (device-sycl) +// CHECK: 31: linker, {4, 30}, ir, (device-sycl) +// CHECK: 32: sycl-post-link, {31}, tempfiletable, (device-sycl) +// CHECK: 33: file-table-tform, {32}, tempfilelist, (device-sycl) +// CHECK: 34: llvm-spirv, {33}, tempfilelist, (device-sycl) +// CHECK: 35: file-table-tform, {32, 34}, tempfiletable, (device-sycl) +// CHECK: 36: clang-offload-wrapper, {35}, object, (device-sycl) +// CHECK: 37: offload, "device-sycl (spir64-unknown-unknown)" {36}, object +// CHECK: 38: linker, {13, 30}, ir, (device-sycl) +// CHECK: 39: sycl-post-link, {38}, tempfiletable, (device-sycl) +// CHECK: 40: file-table-tform, {39}, tempfilelist, (device-sycl) +// CHECK: 41: llvm-spirv, {40}, tempfilelist, (device-sycl) +// CHECK: 42: file-table-tform, {39, 41}, tempfiletable, (device-sycl) +// CHECK: 43: clang-offload-wrapper, {42}, object, (device-sycl) +// CHECK: 44: offload, "device-sycl (spir64-unknown-unknown)" {43}, object +// CHECK: 45: linker, {8, 17, 37, 44}, image, (host-sycl) // RUN: %clang -### -fsycl -fno-sycl-rdc -c -fsycl-targets=spir64_gen --sysroot=%S/Inputs/SYCL %t1.cpp 2>&1 | FileCheck -check-prefix=CHECK-EARLY %s // RUN: %clang_cl -### -fsycl -fno-sycl-rdc -c -fsycl-targets=spir64_gen /clang:--sysroot=%S/Inputs/SYCL %t1.cpp 2>&1 | FileCheck -check-prefix=CHECK-EARLY %s diff --git a/libdevice/cmake/modules/SYCLLibdevice.cmake b/libdevice/cmake/modules/SYCLLibdevice.cmake index 9450d481362e3..c47cfb8de32ab 100644 --- a/libdevice/cmake/modules/SYCLLibdevice.cmake +++ b/libdevice/cmake/modules/SYCLLibdevice.cmake @@ -313,9 +313,10 @@ set(sycl-compiler_deps ${clang-offload-bundler_target} ${llvm-offload-binary_target} ${file-table-tform_target} ${llvm-foreach_target} ${llvm-spirv_target} ${sycl-post-link_target}) -set(crt_obj_deps wrapper.h device.h spirv_vars.h ${sycl-compiler_deps}) -set(complex_obj_deps device_complex.h device.h ${sycl-compiler_deps}) -set(cmath_obj_deps device_math.h device.h ${sycl-compiler_deps}) +set(crt_obj_deps wrapper.h device.h spirv_vars.h fallback-cstring.hpp ${sycl-compiler_deps}) +set(cmath_obj_deps + device_math.h device.h fallback-cmath.hpp fallback-cmath-fp64.hpp + device_complex.h fallback-complex.hpp fallback-complex-fp64.hpp complex_wrapper.hpp ${sycl-compiler_deps}) set(imf_obj_deps device_imf.hpp imf_half.hpp imf_bf16.hpp imf_rounding_op.hpp imf_impl_utils.hpp device.h ${sycl-compiler_deps}) set(itt_obj_deps device_itt.h spirv_vars.h device.h ${sycl-compiler_deps}) set(bfloat16_obj_deps sycl-headers ${sycl-compiler_deps}) @@ -429,22 +430,10 @@ add_devicelibs(libsycl-crt DEPENDENCIES ${crt_obj_deps} EXTRA_OPTS $<$:-Wno-invalid-noreturn>) -add_devicelibs(libsycl-complex - SRC complex_wrapper.cpp - BUILD_ARCHS ${full_build_archs} - DEPENDENCIES ${complex_obj_deps}) -add_devicelibs(libsycl-complex-fp64 - SRC complex_wrapper_fp64.cpp - BUILD_ARCHS ${full_build_archs} - DEPENDENCIES ${complex_obj_deps} ) add_devicelibs(libsycl-cmath SRC cmath_wrapper.cpp BUILD_ARCHS ${full_build_archs} DEPENDENCIES ${cmath_obj_deps}) -add_devicelibs(libsycl-cmath-fp64 - SRC cmath_wrapper_fp64.cpp - BUILD_ARCHS ${full_build_archs} - DEPENDENCIES ${cmath_obj_deps} ) add_devicelibs(libsycl-imf SRC imf_wrapper.cpp DEPENDENCIES ${imf_obj_deps} @@ -457,10 +446,6 @@ add_devicelibs(libsycl-imf-bf16 SRC imf_wrapper_bf16.cpp DEPENDENCIES ${imf_obj_deps} BUILD_ARCHS ${imf_build_archs}) -add_devicelibs(libsycl-bfloat16 - SRC bfloat16_wrapper.cpp - BUILD_ARCHS ${full_build_archs} - DEPENDENCIES ${cmath_obj_deps}) if(MSVC) add_devicelibs(libsycl-msvc-math SRC msvc_math.cpp @@ -537,26 +522,6 @@ else() endif() endif() -add_devicelibs(libsycl-fallback-cstring - SRC fallback-cstring.cpp - BUILD_ARCHS ${full_build_archs} - DEPENDENCIES ${crt_obj_deps}) -add_devicelibs(libsycl-fallback-complex - SRC fallback-complex.cpp - BUILD_ARCHS ${full_build_archs} - DEPENDENCIES ${complex_obj_deps}) -add_devicelibs(libsycl-fallback-complex-fp64 - SRC fallback-complex-fp64.cpp - BUILD_ARCHS ${full_build_archs} - DEPENDENCIES ${complex_obj_deps}) -add_devicelibs(libsycl-fallback-cmath - SRC fallback-cmath.cpp - BUILD_ARCHS ${full_build_archs} - DEPENDENCIES ${cmath_obj_deps}) -add_devicelibs(libsycl-fallback-cmath-fp64 - SRC fallback-cmath-fp64.cpp - BUILD_ARCHS ${full_build_archs} - DEPENDENCIES ${cmath_obj_deps}) add_devicelibs(libsycl-fallback-bfloat16 SRC fallback-bfloat16.cpp BUILD_ARCHS ${full_build_archs} diff --git a/libdevice/cmath_wrapper.cpp b/libdevice/cmath_wrapper.cpp index 8a2a40b5743dc..cfb9892f69b01 100644 --- a/libdevice/cmath_wrapper.cpp +++ b/libdevice/cmath_wrapper.cpp @@ -6,7 +6,10 @@ // //===----------------------------------------------------------------------===// -#include "device_math.h" +#include "complex_wrapper.hpp" +#include "device.h" +#include "fallback-cmath-fp64.hpp" +#include "fallback-cmath.hpp" #if defined(__SPIR__) || defined(__SPIRV__) @@ -22,11 +25,9 @@ float copysignf(float x, float y) { return __devicelib_copysignf(x, y); } DEVICE_EXTERN_C_INLINE float cospif(float x) { return __devicelib_cospif(x); } -extern "C" SYCL_EXTERNAL float __devicelib_fmaxf(float, float); DEVICE_EXTERN_C_INLINE float fmaxf(float x, float y) { return __devicelib_fmaxf(x, y); } -extern "C" SYCL_EXTERNAL float __devicelib_fminf(float, float); DEVICE_EXTERN_C_INLINE float fminf(float x, float y) { return __devicelib_fminf(x, y); } @@ -174,4 +175,167 @@ float atanhf(float x) { return __devicelib_atanhf(x); } DEVICE_EXTERN_C_INLINE float rintf(float x) { return __spirv_ocl_rint(x); } +DEVICE_EXTERN_C_INLINE +double fabs(double x) { return __devicelib_fabs(x); } + +DEVICE_EXTERN_C_INLINE +double ceil(double x) { return __devicelib_ceil(x); } + +DEVICE_EXTERN_C_INLINE +double copysign(double x, double y) { return __devicelib_copysign(x, y); } + +DEVICE_EXTERN_C_INLINE +double scalbln(double x, long y) { return __devicelib_scalbln(x, y); } + +DEVICE_EXTERN_C_INLINE +double cospi(double x) { return __devicelib_cospi(x); } + +DEVICE_EXTERN_C_INLINE +double fmax(double x, double y) { return __devicelib_fmax(x, y); } + +DEVICE_EXTERN_C_INLINE +double fmin(double x, double y) { return __devicelib_fmin(x, y); } + +DEVICE_EXTERN_C_INLINE +double trunc(double x) { return __devicelib_trunc(x); } + +DEVICE_EXTERN_C_INLINE +double sinpi(double x) { return __devicelib_sinpi(x); } + +DEVICE_EXTERN_C_INLINE +double rsqrt(double x) { return __devicelib_rsqrt(x); } + +DEVICE_EXTERN_C_INLINE +double exp10(double x) { return __devicelib_exp10(x); } + +DEVICE_EXTERN_C_INLINE +double log(double x) { return __devicelib_log(x); } + +DEVICE_EXTERN_C_INLINE +double round(double x) { return __devicelib_round(x); } + +DEVICE_EXTERN_C_INLINE +double floor(double x) { return __devicelib_floor(x); } + +DEVICE_EXTERN_C_INLINE +double exp(double x) { return __devicelib_exp(x); } + +DEVICE_EXTERN_C_INLINE +double frexp(double x, int *exp) { return __devicelib_frexp(x, exp); } + +DEVICE_EXTERN_C_INLINE +double ldexp(double x, int exp) { return __devicelib_ldexp(x, exp); } + +DEVICE_EXTERN_C_INLINE +double log10(double x) { return __devicelib_log10(x); } + +DEVICE_EXTERN_C_INLINE +double modf(double x, double *intpart) { return __devicelib_modf(x, intpart); } + +DEVICE_EXTERN_C_INLINE +double exp2(double x) { return __devicelib_exp2(x); } + +DEVICE_EXTERN_C_INLINE +double expm1(double x) { return __devicelib_expm1(x); } + +DEVICE_EXTERN_C_INLINE +int ilogb(double x) { return __devicelib_ilogb(x); } + +DEVICE_EXTERN_C_INLINE +double log1p(double x) { return __devicelib_log1p(x); } + +DEVICE_EXTERN_C_INLINE +double log2(double x) { return __devicelib_log2(x); } + +DEVICE_EXTERN_C_INLINE +double logb(double x) { return __devicelib_logb(x); } + +DEVICE_EXTERN_C_INLINE +double sqrt(double x) { return __devicelib_sqrt(x); } + +DEVICE_EXTERN_C_INLINE +double cbrt(double x) { return __devicelib_cbrt(x); } + +DEVICE_EXTERN_C_INLINE +double hypot(double x, double y) { return __devicelib_hypot(x, y); } + +DEVICE_EXTERN_C_INLINE +double erf(double x) { return __devicelib_erf(x); } + +DEVICE_EXTERN_C_INLINE +double erfc(double x) { return __devicelib_erfc(x); } + +DEVICE_EXTERN_C_INLINE +double tgamma(double x) { return __devicelib_tgamma(x); } + +DEVICE_EXTERN_C_INLINE +double lgamma(double x) { return __devicelib_lgamma(x); } + +DEVICE_EXTERN_C_INLINE +double fmod(double x, double y) { return __devicelib_fmod(x, y); } + +DEVICE_EXTERN_C_INLINE +double remainder(double x, double y) { return __devicelib_remainder(x, y); } + +DEVICE_EXTERN_C_INLINE +double remquo(double x, double y, int *q) { + return __devicelib_remquo(x, y, q); +} + +DEVICE_EXTERN_C_INLINE +double nextafter(double x, double y) { return __devicelib_nextafter(x, y); } + +DEVICE_EXTERN_C_INLINE +double fdim(double x, double y) { return __devicelib_fdim(x, y); } + +DEVICE_EXTERN_C_INLINE +double fma(double x, double y, double z) { return __devicelib_fma(x, y, z); } + +DEVICE_EXTERN_C_INLINE +double sin(double x) { return __devicelib_sin(x); } + +DEVICE_EXTERN_C_INLINE +double cos(double x) { return __devicelib_cos(x); } + +DEVICE_EXTERN_C_INLINE +double tan(double x) { return __devicelib_tan(x); } + +DEVICE_EXTERN_C_INLINE +double pow(double x, double y) { return __devicelib_pow(x, y); } + +DEVICE_EXTERN_C_INLINE +double acos(double x) { return __devicelib_acos(x); } + +DEVICE_EXTERN_C_INLINE +double asin(double x) { return __devicelib_asin(x); } + +DEVICE_EXTERN_C_INLINE +double atan(double x) { return __devicelib_atan(x); } + +DEVICE_EXTERN_C_INLINE +double atan2(double x, double y) { return __devicelib_atan2(x, y); } + +DEVICE_EXTERN_C_INLINE +double cosh(double x) { return __devicelib_cosh(x); } + +DEVICE_EXTERN_C_INLINE +double sinh(double x) { return __devicelib_sinh(x); } + +DEVICE_EXTERN_C_INLINE +double tanh(double x) { return __devicelib_tanh(x); } + +DEVICE_EXTERN_C_INLINE +double acosh(double x) { return __devicelib_acosh(x); } + +DEVICE_EXTERN_C_INLINE +double asinh(double x) { return __devicelib_asinh(x); } + +DEVICE_EXTERN_C_INLINE +double atanh(double x) { return __devicelib_atanh(x); } + +DEVICE_EXTERN_C_INLINE +double scalbn(double x, int exp) { return __devicelib_scalbn(x, exp); } + +DEVICE_EXTERN_C_INLINE +double rint(double x) { return __spirv_ocl_rint(x); } #endif // __SPIR__ || __SPIRV__ diff --git a/libdevice/cmath_wrapper_fp64.cpp b/libdevice/cmath_wrapper_fp64.cpp deleted file mode 100644 index 168211491337c..0000000000000 --- a/libdevice/cmath_wrapper_fp64.cpp +++ /dev/null @@ -1,184 +0,0 @@ -//==--- cmath_wrapper_fp64.cpp - wrappers for double precision C math library -// functions ----------==// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "device_math.h" - -#if defined(__SPIR__) || defined(__SPIRV__) - -// All exported functions in math and complex device libraries are weak -// reference. If users provide their own math or complex functions(with -// the prototype), functions in device libraries will be ignored and -// overrided by users' version. - -DEVICE_EXTERN_C_INLINE -double fabs(double x) { return __devicelib_fabs(x); } - -DEVICE_EXTERN_C_INLINE -double ceil(double x) { return __devicelib_ceil(x); } - -DEVICE_EXTERN_C_INLINE -double copysign(double x, double y) { return __devicelib_copysign(x, y); } - -DEVICE_EXTERN_C_INLINE -double scalbln(double x, long y) { return __devicelib_scalbln(x, y); } - -DEVICE_EXTERN_C_INLINE -double cospi(double x) { return __devicelib_cospi(x); } - -extern "C" SYCL_EXTERNAL double __devicelib_fmax(double, double); -DEVICE_EXTERN_C_INLINE -double fmax(double x, double y) { return __devicelib_fmax(x, y); } - -extern "C" SYCL_EXTERNAL double __devicelib_fmin(double, double); -DEVICE_EXTERN_C_INLINE -double fmin(double x, double y) { return __devicelib_fmin(x, y); } - -DEVICE_EXTERN_C_INLINE -double trunc(double x) { return __devicelib_trunc(x); } - -DEVICE_EXTERN_C_INLINE -double sinpi(double x) { return __devicelib_sinpi(x); } - -DEVICE_EXTERN_C_INLINE -double rsqrt(double x) { return __devicelib_rsqrt(x); } - -DEVICE_EXTERN_C_INLINE -double exp10(double x) { return __devicelib_exp10(x); } - -DEVICE_EXTERN_C_INLINE -double log(double x) { return __devicelib_log(x); } - -DEVICE_EXTERN_C_INLINE -double round(double x) { return __devicelib_round(x); } - -DEVICE_EXTERN_C_INLINE -double floor(double x) { return __devicelib_floor(x); } - -DEVICE_EXTERN_C_INLINE -double exp(double x) { return __devicelib_exp(x); } - -DEVICE_EXTERN_C_INLINE -double frexp(double x, int *exp) { return __devicelib_frexp(x, exp); } - -DEVICE_EXTERN_C_INLINE -double ldexp(double x, int exp) { return __devicelib_ldexp(x, exp); } - -DEVICE_EXTERN_C_INLINE -double log10(double x) { return __devicelib_log10(x); } - -DEVICE_EXTERN_C_INLINE -double modf(double x, double *intpart) { return __devicelib_modf(x, intpart); } - -DEVICE_EXTERN_C_INLINE -double exp2(double x) { return __devicelib_exp2(x); } - -DEVICE_EXTERN_C_INLINE -double expm1(double x) { return __devicelib_expm1(x); } - -DEVICE_EXTERN_C_INLINE -int ilogb(double x) { return __devicelib_ilogb(x); } - -DEVICE_EXTERN_C_INLINE -double log1p(double x) { return __devicelib_log1p(x); } - -DEVICE_EXTERN_C_INLINE -double log2(double x) { return __devicelib_log2(x); } - -DEVICE_EXTERN_C_INLINE -double logb(double x) { return __devicelib_logb(x); } - -DEVICE_EXTERN_C_INLINE -double sqrt(double x) { return __devicelib_sqrt(x); } - -DEVICE_EXTERN_C_INLINE -double cbrt(double x) { return __devicelib_cbrt(x); } - -DEVICE_EXTERN_C_INLINE -double hypot(double x, double y) { return __devicelib_hypot(x, y); } - -DEVICE_EXTERN_C_INLINE -double erf(double x) { return __devicelib_erf(x); } - -DEVICE_EXTERN_C_INLINE -double erfc(double x) { return __devicelib_erfc(x); } - -DEVICE_EXTERN_C_INLINE -double tgamma(double x) { return __devicelib_tgamma(x); } - -DEVICE_EXTERN_C_INLINE -double lgamma(double x) { return __devicelib_lgamma(x); } - -DEVICE_EXTERN_C_INLINE -double fmod(double x, double y) { return __devicelib_fmod(x, y); } - -DEVICE_EXTERN_C_INLINE -double remainder(double x, double y) { return __devicelib_remainder(x, y); } - -DEVICE_EXTERN_C_INLINE -double remquo(double x, double y, int *q) { - return __devicelib_remquo(x, y, q); -} - -DEVICE_EXTERN_C_INLINE -double nextafter(double x, double y) { return __devicelib_nextafter(x, y); } - -DEVICE_EXTERN_C_INLINE -double fdim(double x, double y) { return __devicelib_fdim(x, y); } - -DEVICE_EXTERN_C_INLINE -double fma(double x, double y, double z) { return __devicelib_fma(x, y, z); } - -DEVICE_EXTERN_C_INLINE -double sin(double x) { return __devicelib_sin(x); } - -DEVICE_EXTERN_C_INLINE -double cos(double x) { return __devicelib_cos(x); } - -DEVICE_EXTERN_C_INLINE -double tan(double x) { return __devicelib_tan(x); } - -DEVICE_EXTERN_C_INLINE -double pow(double x, double y) { return __devicelib_pow(x, y); } - -DEVICE_EXTERN_C_INLINE -double acos(double x) { return __devicelib_acos(x); } - -DEVICE_EXTERN_C_INLINE -double asin(double x) { return __devicelib_asin(x); } - -DEVICE_EXTERN_C_INLINE -double atan(double x) { return __devicelib_atan(x); } - -DEVICE_EXTERN_C_INLINE -double atan2(double x, double y) { return __devicelib_atan2(x, y); } - -DEVICE_EXTERN_C_INLINE -double cosh(double x) { return __devicelib_cosh(x); } - -DEVICE_EXTERN_C_INLINE -double sinh(double x) { return __devicelib_sinh(x); } - -DEVICE_EXTERN_C_INLINE -double tanh(double x) { return __devicelib_tanh(x); } - -DEVICE_EXTERN_C_INLINE -double acosh(double x) { return __devicelib_acosh(x); } - -DEVICE_EXTERN_C_INLINE -double asinh(double x) { return __devicelib_asinh(x); } - -DEVICE_EXTERN_C_INLINE -double atanh(double x) { return __devicelib_atanh(x); } - -DEVICE_EXTERN_C_INLINE -double scalbn(double x, int exp) { return __devicelib_scalbn(x, exp); } - -DEVICE_EXTERN_C_INLINE -double rint(double x) { return __spirv_ocl_rint(x); } -#endif // __SPIR__ || __SPIRV__ diff --git a/libdevice/complex_wrapper.cpp b/libdevice/complex_wrapper.hpp similarity index 52% rename from libdevice/complex_wrapper.cpp rename to libdevice/complex_wrapper.hpp index f01872fb6aee1..eee09c8b6c5f9 100644 --- a/libdevice/complex_wrapper.cpp +++ b/libdevice/complex_wrapper.hpp @@ -1,4 +1,4 @@ -//==--- complex_wrapper.cpp - wrappers for C99 complex math functions ------==// +//==--- complex_wrapper.hpp - wrappers for C99 complex math functions ------==// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -6,7 +6,8 @@ // //===----------------------------------------------------------------------===// -#include "device_complex.h" +#include "fallback-complex-fp64.hpp" +#include "fallback-complex.hpp" #if defined(__SPIR__) || defined(__SPIRV__) @@ -99,4 +100,94 @@ DEVICE_EXTERN_C_INLINE float __complex__ __divsc3(float __a, float __b, float __c, float __d) { return __devicelib___divsc3(__a, __b, __c, __d); } + +DEVICE_EXTERN_C_INLINE +double cimag(double __complex__ z) { return __devicelib_cimag(z); } + +DEVICE_EXTERN_C_INLINE +double creal(double __complex__ z) { return __devicelib_creal(z); } + +DEVICE_EXTERN_C_INLINE +double cabs(double __complex__ z) { return __devicelib_cabs(z); } + +DEVICE_EXTERN_C_INLINE +double carg(double __complex__ z) { return __devicelib_carg(z); } + +DEVICE_EXTERN_C_INLINE +double __complex__ cproj(double __complex__ z) { return __devicelib_cproj(z); } + +DEVICE_EXTERN_C_INLINE +double __complex__ cexp(double __complex__ z) { return __devicelib_cexp(z); } + +DEVICE_EXTERN_C_INLINE +double __complex__ clog(double __complex__ z) { return __devicelib_clog(z); } + +DEVICE_EXTERN_C_INLINE +double __complex__ cpow(double __complex__ x, double __complex__ y) { + return __devicelib_cpow(x, y); +} + +DEVICE_EXTERN_C_INLINE +double __complex__ cpolar(double rho, double theta) { + return __devicelib_cpolar(rho, theta); +} + +DEVICE_EXTERN_C_INLINE +double __complex__ csqrt(double __complex__ z) { return __devicelib_csqrt(z); } + +DEVICE_EXTERN_C_INLINE +double __complex__ csinh(double __complex__ z) { return __devicelib_csinh(z); } + +DEVICE_EXTERN_C_INLINE +double __complex__ ccosh(double __complex__ z) { return __devicelib_ccosh(z); } + +DEVICE_EXTERN_C_INLINE +double __complex__ ctanh(double __complex__ z) { return __devicelib_ctanh(z); } + +DEVICE_EXTERN_C_INLINE +double __complex__ csin(double __complex__ z) { return __devicelib_csin(z); } + +DEVICE_EXTERN_C_INLINE +double __complex__ ccos(double __complex__ z) { return __devicelib_ccos(z); } + +DEVICE_EXTERN_C_INLINE +double __complex__ ctan(double __complex__ z) { return __devicelib_ctan(z); } + +DEVICE_EXTERN_C_INLINE +double __complex__ cacos(double __complex__ z) { return __devicelib_cacos(z); } + +DEVICE_EXTERN_C_INLINE +double __complex__ casinh(double __complex__ z) { + return __devicelib_casinh(z); +} + +DEVICE_EXTERN_C_INLINE +double __complex__ casin(double __complex__ z) { return __devicelib_casin(z); } + +DEVICE_EXTERN_C_INLINE +double __complex__ cacosh(double __complex__ z) { + return __devicelib_cacosh(z); +} + +DEVICE_EXTERN_C_INLINE +double __complex__ catanh(double __complex__ z) { + return __devicelib_catanh(z); +} + +DEVICE_EXTERN_C_INLINE +double __complex__ catan(double __complex__ z) { return __devicelib_catan(z); } + +// __muldc3 +// Returns: the product of a + ib and c + id +DEVICE_EXTERN_C_INLINE +double __complex__ __muldc3(double __a, double __b, double __c, double __d) { + return __devicelib___muldc3(__a, __b, __c, __d); +} + +// __divdc3 +// Returns: the quotient of (a + ib) / (c + id) +DEVICE_EXTERN_C_INLINE +double __complex__ __divdc3(double __a, double __b, double __c, double __d) { + return __devicelib___divdc3(__a, __b, __c, __d); +} #endif // __SPIR__ || __SPIRV__ diff --git a/libdevice/complex_wrapper_fp64.cpp b/libdevice/complex_wrapper_fp64.cpp deleted file mode 100644 index d3f42face5ec3..0000000000000 --- a/libdevice/complex_wrapper_fp64.cpp +++ /dev/null @@ -1,103 +0,0 @@ -//==--- complex_wrapper_fp64.cpp - wrappers for double precision C99 complex -// math functions ------==// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "device_complex.h" - -#if defined(__SPIR__) || defined(__SPIRV__) - -DEVICE_EXTERN_C_INLINE -double cimag(double __complex__ z) { return __devicelib_cimag(z); } - -DEVICE_EXTERN_C_INLINE -double creal(double __complex__ z) { return __devicelib_creal(z); } - -DEVICE_EXTERN_C_INLINE -double cabs(double __complex__ z) { return __devicelib_cabs(z); } - -DEVICE_EXTERN_C_INLINE -double carg(double __complex__ z) { return __devicelib_carg(z); } - -DEVICE_EXTERN_C_INLINE -double __complex__ cproj(double __complex__ z) { return __devicelib_cproj(z); } - -DEVICE_EXTERN_C_INLINE -double __complex__ cexp(double __complex__ z) { return __devicelib_cexp(z); } - -DEVICE_EXTERN_C_INLINE -double __complex__ clog(double __complex__ z) { return __devicelib_clog(z); } - -DEVICE_EXTERN_C_INLINE -double __complex__ cpow(double __complex__ x, double __complex__ y) { - return __devicelib_cpow(x, y); -} - -DEVICE_EXTERN_C_INLINE -double __complex__ cpolar(double rho, double theta) { - return __devicelib_cpolar(rho, theta); -} - -DEVICE_EXTERN_C_INLINE -double __complex__ csqrt(double __complex__ z) { return __devicelib_csqrt(z); } - -DEVICE_EXTERN_C_INLINE -double __complex__ csinh(double __complex__ z) { return __devicelib_csinh(z); } - -DEVICE_EXTERN_C_INLINE -double __complex__ ccosh(double __complex__ z) { return __devicelib_ccosh(z); } - -DEVICE_EXTERN_C_INLINE -double __complex__ ctanh(double __complex__ z) { return __devicelib_ctanh(z); } - -DEVICE_EXTERN_C_INLINE -double __complex__ csin(double __complex__ z) { return __devicelib_csin(z); } - -DEVICE_EXTERN_C_INLINE -double __complex__ ccos(double __complex__ z) { return __devicelib_ccos(z); } - -DEVICE_EXTERN_C_INLINE -double __complex__ ctan(double __complex__ z) { return __devicelib_ctan(z); } - -DEVICE_EXTERN_C_INLINE -double __complex__ cacos(double __complex__ z) { return __devicelib_cacos(z); } - -DEVICE_EXTERN_C_INLINE -double __complex__ casinh(double __complex__ z) { - return __devicelib_casinh(z); -} - -DEVICE_EXTERN_C_INLINE -double __complex__ casin(double __complex__ z) { return __devicelib_casin(z); } - -DEVICE_EXTERN_C_INLINE -double __complex__ cacosh(double __complex__ z) { - return __devicelib_cacosh(z); -} - -DEVICE_EXTERN_C_INLINE -double __complex__ catanh(double __complex__ z) { - return __devicelib_catanh(z); -} - -DEVICE_EXTERN_C_INLINE -double __complex__ catan(double __complex__ z) { return __devicelib_catan(z); } - -// __muldc3 -// Returns: the product of a + ib and c + id -DEVICE_EXTERN_C_INLINE -double __complex__ __muldc3(double __a, double __b, double __c, double __d) { - return __devicelib___muldc3(__a, __b, __c, __d); -} - -// __divdc3 -// Returns: the quotient of (a + ib) / (c + id) -DEVICE_EXTERN_C_INLINE -double __complex__ __divdc3(double __a, double __b, double __c, double __d) { - return __devicelib___divdc3(__a, __b, __c, __d); -} -#endif // __SPIR__ || __SPIRV__ diff --git a/libdevice/crt_wrapper.cpp b/libdevice/crt_wrapper.cpp index ce0f8c9cbf4f6..8c9cb715f7036 100644 --- a/libdevice/crt_wrapper.cpp +++ b/libdevice/crt_wrapper.cpp @@ -6,6 +6,7 @@ // //===----------------------------------------------------------------------===// +#include "fallback-cstring.hpp" #include "include/spir_global_var.hpp" #include "spirv_vars.h" #include "wrapper.h" diff --git a/libdevice/device_complex.h b/libdevice/device_complex.h index 6fa4254ff2025..a7be1421ee575 100644 --- a/libdevice/device_complex.h +++ b/libdevice/device_complex.h @@ -21,149 +21,5 @@ #ifndef CMPLXF #define CMPLXF(r, i) ((float __complex__){(float)(r), (float)(i)}) #endif - -DEVICE_EXTERN_C -double __devicelib_cimag(double __complex__ z); - -DEVICE_EXTERN_C -float __devicelib_cimagf(float __complex__ z); - -DEVICE_EXTERN_C -double __devicelib_creal(double __complex__ z); - -DEVICE_EXTERN_C -float __devicelib_crealf(float __complex__ z); - -DEVICE_EXTERN_C -double __devicelib_carg(double __complex__ z); - -DEVICE_EXTERN_C -float __devicelib_cargf(float __complex__ z); - -DEVICE_EXTERN_C -double __devicelib_cabs(double __complex__ z); - -DEVICE_EXTERN_C -float __devicelib_cabsf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_cproj(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_cprojf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_cexp(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_cexpf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_clog(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_clogf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_cpow(double __complex__ x, double __complex__ y); - -DEVICE_EXTERN_C -float __complex__ __devicelib_cpowf(float __complex__ x, float __complex__ y); - -DEVICE_EXTERN_C -double __complex__ __devicelib_cpolar(double x, double y); - -DEVICE_EXTERN_C -float __complex__ __devicelib_cpolarf(float x, float y); - -DEVICE_EXTERN_C -double __complex__ __devicelib_csqrt(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_csqrtf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_csinh(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_csinhf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_ccosh(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_ccoshf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_ctanh(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_ctanhf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_csin(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_csinf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_ccos(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_ccosf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_ctan(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_ctanf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_cacos(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_cacosf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_casinh(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_casinhf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_casin(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_casinf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_cacosh(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_cacoshf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_catanh(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_catanhf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib_catan(double __complex__ z); - -DEVICE_EXTERN_C -float __complex__ __devicelib_catanf(float __complex__ z); - -DEVICE_EXTERN_C -double __complex__ __devicelib___muldc3(double a, double b, double c, double d); - -DEVICE_EXTERN_C -float __complex__ __devicelib___mulsc3(float a, float b, float c, float d); - -DEVICE_EXTERN_C -double __complex__ __devicelib___divdc3(double a, double b, double c, double d); - -DEVICE_EXTERN_C -float __complex__ __devicelib___divsc3(float a, float b, float c, float d); #endif // __SPIR__ || __SPIRV__ #endif // __LIBDEVICE_DEVICE_COMPLEX_H_ diff --git a/libdevice/fallback-cmath-fp64.cpp b/libdevice/fallback-cmath-fp64.cpp deleted file mode 100644 index 6da6bfec50180..0000000000000 --- a/libdevice/fallback-cmath-fp64.cpp +++ /dev/null @@ -1,195 +0,0 @@ -//==--- fallback-cmath-fp64.cpp - fallback implementation of double precision -// math functions -----==// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "device_math.h" - -#ifdef __LIBDEVICE_TARGET_SUPPORT -// To support fallback device libraries on-demand loading, please update the -// DeviceLibFuncMap in llvm/tools/sycl-post-link/sycl-post-link.cpp if you add -// or remove any item in this file. - -DEVICE_EXTERN_C_INLINE -double __devicelib_fabs(double x) { return x < 0 ? -x : x; } - -DEVICE_EXTERN_C_INLINE -double __devicelib_ceil(double x) { return __spirv_ocl_ceil(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_copysign(double x, double y) { - return __spirv_ocl_copysign(x, y); -} - -DEVICE_EXTERN_C_INLINE -double __devicelib_cospi(double x) { return __spirv_ocl_cospi(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_scalbln(double x, long int y) { - return __spirv_ocl_ldexp(x, (int)y); -} - -DEVICE_EXTERN_C_INLINE -double __devicelib_fmax(double x, double y) { return __spirv_ocl_fmax(x, y); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_fmin(double x, double y) { return __spirv_ocl_fmin(x, y); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_trunc(double x) { return __spirv_ocl_trunc(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_sinpi(double x) { return __spirv_ocl_sinpi(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_rsqrt(double x) { return __spirv_ocl_rsqrt(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_exp10(double x) { return __spirv_ocl_exp10(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_log(double x) { return __spirv_ocl_log(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_exp(double x) { return __spirv_ocl_exp(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_frexp(double x, int *exp) { - return __spirv_ocl_frexp(x, exp); -} - -DEVICE_EXTERN_C_INLINE -double __devicelib_ldexp(double x, int exp) { - return __spirv_ocl_ldexp(x, exp); -} - -DEVICE_EXTERN_C_INLINE -double __devicelib_log10(double x) { return __spirv_ocl_log10(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_modf(double x, double *intpart) { - return __spirv_ocl_modf(x, intpart); -} - -DEVICE_EXTERN_C_INLINE -double __devicelib_round(double x) { return __spirv_ocl_round(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_floor(double x) { return __spirv_ocl_floor(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_exp2(double x) { return __spirv_ocl_exp2(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_expm1(double x) { return __spirv_ocl_expm1(x); } - -DEVICE_EXTERN_C_INLINE -int __devicelib_ilogb(double x) { return __spirv_ocl_ilogb(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_log1p(double x) { return __spirv_ocl_log1p(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_log2(double x) { return __spirv_ocl_log2(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_logb(double x) { return __spirv_ocl_logb(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_sqrt(double x) { return __spirv_ocl_sqrt(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_cbrt(double x) { return __spirv_ocl_cbrt(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_hypot(double x, double y) { return __spirv_ocl_hypot(x, y); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_erf(double x) { return __spirv_ocl_erf(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_erfc(double x) { return __spirv_ocl_erfc(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_tgamma(double x) { return __spirv_ocl_tgamma(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_lgamma(double x) { return __spirv_ocl_lgamma(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_fmod(double x, double y) { return __spirv_ocl_fmod(x, y); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_remainder(double x, double y) { - return __spirv_ocl_remainder(x, y); -} - -DEVICE_EXTERN_C_INLINE -double __devicelib_remquo(double x, double y, int *q) { - return __spirv_ocl_remquo(x, y, q); -} - -DEVICE_EXTERN_C_INLINE -double __devicelib_nextafter(double x, double y) { - return __spirv_ocl_nextafter(x, y); -} - -DEVICE_EXTERN_C_INLINE -double __devicelib_fdim(double x, double y) { return __spirv_ocl_fdim(x, y); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_fma(double x, double y, double z) { - return __spirv_ocl_fma(x, y, z); -} - -DEVICE_EXTERN_C_INLINE -double __devicelib_sin(double x) { return __spirv_ocl_sin(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_cos(double x) { return __spirv_ocl_cos(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_tan(double x) { return __spirv_ocl_tan(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_pow(double x, double y) { return __spirv_ocl_pow(x, y); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_acos(double x) { return __spirv_ocl_acos(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_asin(double x) { return __spirv_ocl_asin(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_atan(double x) { return __spirv_ocl_atan(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_atan2(double x, double y) { return __spirv_ocl_atan2(x, y); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_cosh(double x) { return __spirv_ocl_cosh(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_sinh(double x) { return __spirv_ocl_sinh(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_tanh(double x) { return __spirv_ocl_tanh(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_acosh(double x) { return __spirv_ocl_acosh(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_asinh(double x) { return __spirv_ocl_asinh(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_atanh(double x) { return __spirv_ocl_atanh(x); } - -DEVICE_EXTERN_C_INLINE -double __devicelib_scalbn(double x, int exp) { - return __spirv_ocl_ldexp(x, exp); -} -#endif // __LIBDEVICE_TARGET_SUPPORT diff --git a/libdevice/fallback-cmath-fp64.hpp b/libdevice/fallback-cmath-fp64.hpp new file mode 100644 index 0000000000000..0aac47171f111 --- /dev/null +++ b/libdevice/fallback-cmath-fp64.hpp @@ -0,0 +1,182 @@ +//==--- fallback-cmath-fp64.cpp - fallback implementation of double precision +// math functions -----==// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "device.h" +#ifdef __LIBDEVICE_TARGET_SUPPORT + +static inline double __devicelib_fabs(double x) { return x < 0 ? -x : x; } + +static inline double __devicelib_ceil(double x) { return __spirv_ocl_ceil(x); } + +static inline double __devicelib_copysign(double x, double y) { + return __spirv_ocl_copysign(x, y); +} + +static inline double __devicelib_cospi(double x) { + return __spirv_ocl_cospi(x); +} + +static inline double __devicelib_scalbln(double x, long int y) { + return __spirv_ocl_ldexp(x, (int)y); +} + +static inline double __devicelib_fmax(double x, double y) { + return __spirv_ocl_fmax(x, y); +} + +static inline double __devicelib_fmin(double x, double y) { + return __spirv_ocl_fmin(x, y); +} + +static inline double __devicelib_trunc(double x) { + return __spirv_ocl_trunc(x); +} + +static inline double __devicelib_sinpi(double x) { + return __spirv_ocl_sinpi(x); +} + +static inline double __devicelib_rsqrt(double x) { + return __spirv_ocl_rsqrt(x); +} + +static inline double __devicelib_exp10(double x) { + return __spirv_ocl_exp10(x); +} + +static inline double __devicelib_log(double x) { return __spirv_ocl_log(x); } + +static inline double __devicelib_exp(double x) { return __spirv_ocl_exp(x); } + +static inline double __devicelib_frexp(double x, int *exp) { + return __spirv_ocl_frexp(x, exp); +} + +static inline double __devicelib_ldexp(double x, int exp) { + return __spirv_ocl_ldexp(x, exp); +} + +static inline double __devicelib_log10(double x) { + return __spirv_ocl_log10(x); +} + +static inline double __devicelib_modf(double x, double *intpart) { + return __spirv_ocl_modf(x, intpart); +} + +static inline double __devicelib_round(double x) { + return __spirv_ocl_round(x); +} + +static inline double __devicelib_floor(double x) { + return __spirv_ocl_floor(x); +} + +static inline double __devicelib_exp2(double x) { return __spirv_ocl_exp2(x); } + +static inline double __devicelib_expm1(double x) { + return __spirv_ocl_expm1(x); +} + +static inline int __devicelib_ilogb(double x) { return __spirv_ocl_ilogb(x); } + +static inline double __devicelib_log1p(double x) { + return __spirv_ocl_log1p(x); +} + +static inline double __devicelib_log2(double x) { return __spirv_ocl_log2(x); } + +static inline double __devicelib_logb(double x) { return __spirv_ocl_logb(x); } + +static inline double __devicelib_sqrt(double x) { return __spirv_ocl_sqrt(x); } + +static inline double __devicelib_cbrt(double x) { return __spirv_ocl_cbrt(x); } + +static inline double __devicelib_hypot(double x, double y) { + return __spirv_ocl_hypot(x, y); +} + +static inline double __devicelib_erf(double x) { return __spirv_ocl_erf(x); } + +static inline double __devicelib_erfc(double x) { return __spirv_ocl_erfc(x); } + +static inline double __devicelib_tgamma(double x) { + return __spirv_ocl_tgamma(x); +} + +static inline double __devicelib_lgamma(double x) { + return __spirv_ocl_lgamma(x); +} + +static inline double __devicelib_fmod(double x, double y) { + return __spirv_ocl_fmod(x, y); +} + +static inline double __devicelib_remainder(double x, double y) { + return __spirv_ocl_remainder(x, y); +} + +static inline double __devicelib_remquo(double x, double y, int *q) { + return __spirv_ocl_remquo(x, y, q); +} + +static inline double __devicelib_nextafter(double x, double y) { + return __spirv_ocl_nextafter(x, y); +} + +static inline double __devicelib_fdim(double x, double y) { + return __spirv_ocl_fdim(x, y); +} + +static inline double __devicelib_fma(double x, double y, double z) { + return __spirv_ocl_fma(x, y, z); +} + +static inline double __devicelib_sin(double x) { return __spirv_ocl_sin(x); } + +static inline double __devicelib_cos(double x) { return __spirv_ocl_cos(x); } + +static inline double __devicelib_tan(double x) { return __spirv_ocl_tan(x); } + +static inline double __devicelib_pow(double x, double y) { + return __spirv_ocl_pow(x, y); +} + +static inline double __devicelib_acos(double x) { return __spirv_ocl_acos(x); } + +static inline double __devicelib_asin(double x) { return __spirv_ocl_asin(x); } + +static inline double __devicelib_atan(double x) { return __spirv_ocl_atan(x); } + +static inline double __devicelib_atan2(double x, double y) { + return __spirv_ocl_atan2(x, y); +} + +static inline double __devicelib_cosh(double x) { return __spirv_ocl_cosh(x); } + +static inline double __devicelib_sinh(double x) { return __spirv_ocl_sinh(x); } + +static inline double __devicelib_tanh(double x) { return __spirv_ocl_tanh(x); } + +static inline double __devicelib_acosh(double x) { + return __spirv_ocl_acosh(x); +} + +static inline double __devicelib_asinh(double x) { + return __spirv_ocl_asinh(x); +} + +static inline double __devicelib_atanh(double x) { + return __spirv_ocl_atanh(x); +} + +static inline double __devicelib_scalbn(double x, int exp) { + return __spirv_ocl_ldexp(x, exp); +} +#endif // __LIBDEVICE_TARGET_SUPPORT diff --git a/libdevice/fallback-cmath.cpp b/libdevice/fallback-cmath.cpp deleted file mode 100644 index 0159cdb564926..0000000000000 --- a/libdevice/fallback-cmath.cpp +++ /dev/null @@ -1,199 +0,0 @@ -//==--- fallback-cmath.cpp - fallback implementation of math functions -----==// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "device_math.h" - -#if defined(__SPIR__) || defined(__SPIRV__) - -// To support fallback device libraries on-demand loading, please update the -// DeviceLibFuncMap in llvm/tools/sycl-post-link/sycl-post-link.cpp if you add -// or remove any item in this file. -// TODO: generate the DeviceLibFuncMap in sycl-post-link.cpp automatically -// during the build based on libdevice to avoid manually sync. - -DEVICE_EXTERN_C_INLINE -float __devicelib_fabsf(float x) { return x < 0 ? -x : x; } - -DEVICE_EXTERN_C_INLINE -float __devicelib_ceilf(float x) { return __spirv_ocl_ceil(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_copysignf(float x, float y) { - return __spirv_ocl_copysign(x, y); -} - -DEVICE_EXTERN_C_INLINE -float __devicelib_cospif(float x) { return __spirv_ocl_cospi(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_scalblnf(float x, long int y) { - return __spirv_ocl_ldexp(x, (int)y); -} - -DEVICE_EXTERN_C_INLINE -float __devicelib_fmaxf(float x, float y) { return __spirv_ocl_fmax(x, y); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_fminf(float x, float y) { return __spirv_ocl_fmin(x, y); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_truncf(float x) { return __spirv_ocl_trunc(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_sinpif(float x) { return __spirv_ocl_sinpi(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_rsqrtf(float x) { return __spirv_ocl_rsqrt(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_exp10f(float x) { return __spirv_ocl_exp10(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_scalbnf(float x, int n) { return __spirv_ocl_ldexp(x, n); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_roundf(float x) { return __spirv_ocl_round(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_floorf(float x) { return __spirv_ocl_floor(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_logf(float x) { return __spirv_ocl_log(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_expf(float x) { return __spirv_ocl_exp(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_frexpf(float x, int *exp) { - return __spirv_ocl_frexp(x, exp); -} - -DEVICE_EXTERN_C_INLINE -float __devicelib_ldexpf(float x, int exp) { return __spirv_ocl_ldexp(x, exp); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_log10f(float x) { return __spirv_ocl_log10(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_modff(float x, float *intpart) { - return __spirv_ocl_modf(x, intpart); -} - -DEVICE_EXTERN_C_INLINE -float __devicelib_exp2f(float x) { return __spirv_ocl_exp2(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_expm1f(float x) { return __spirv_ocl_expm1(x); } - -DEVICE_EXTERN_C_INLINE -int __devicelib_ilogbf(float x) { return __spirv_ocl_ilogb(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_log1pf(float x) { return __spirv_ocl_log1p(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_log2f(float x) { return __spirv_ocl_log2(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_logbf(float x) { return __spirv_ocl_logb(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_sqrtf(float x) { return __spirv_ocl_sqrt(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_cbrtf(float x) { return __spirv_ocl_cbrt(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_hypotf(float x, float y) { return __spirv_ocl_hypot(x, y); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_erff(float x) { return __spirv_ocl_erf(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_erfcf(float x) { return __spirv_ocl_erfc(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_tgammaf(float x) { return __spirv_ocl_tgamma(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_lgammaf(float x) { return __spirv_ocl_lgamma(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_fmodf(float x, float y) { return __spirv_ocl_fmod(x, y); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_remainderf(float x, float y) { - return __spirv_ocl_remainder(x, y); -} - -DEVICE_EXTERN_C_INLINE -float __devicelib_remquof(float x, float y, int *q) { - return __spirv_ocl_remquo(x, y, q); -} - -DEVICE_EXTERN_C_INLINE -float __devicelib_nextafterf(float x, float y) { - return __spirv_ocl_nextafter(x, y); -} - -DEVICE_EXTERN_C_INLINE -float __devicelib_fdimf(float x, float y) { return __spirv_ocl_fdim(x, y); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_fmaf(float x, float y, float z) { - return __spirv_ocl_fma(x, y, z); -} - -#if defined(__SPIR__) || defined(__SPIRV__) -DEVICE_EXTERN_C_INLINE -float __devicelib_sinf(float x) { return (x == 0.0f) ? x : __spirv_ocl_sin(x); } -#else -DEVICE_EXTERN_C_INLINE -float __devicelib_sinf(float x) { return __spirv_ocl_sin(x); } -#endif - -DEVICE_EXTERN_C_INLINE -float __devicelib_cosf(float x) { return __spirv_ocl_cos(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_tanf(float x) { return __spirv_ocl_tan(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_powf(float x, float y) { return __spirv_ocl_pow(x, y); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_acosf(float x) { return __spirv_ocl_acos(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_asinf(float x) { return __spirv_ocl_asin(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_atanf(float x) { return __spirv_ocl_atan(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_atan2f(float x, float y) { return __spirv_ocl_atan2(x, y); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_coshf(float x) { return __spirv_ocl_cosh(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_sinhf(float x) { return __spirv_ocl_sinh(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_tanhf(float x) { return __spirv_ocl_tanh(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_acoshf(float x) { return __spirv_ocl_acosh(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_asinhf(float x) { return __spirv_ocl_asinh(x); } - -DEVICE_EXTERN_C_INLINE -float __devicelib_atanhf(float x) { return __spirv_ocl_atanh(x); } - -#endif // __SPIR__ || __SPIRV__ diff --git a/libdevice/fallback-cmath.hpp b/libdevice/fallback-cmath.hpp new file mode 100644 index 0000000000000..65dac3572f545 --- /dev/null +++ b/libdevice/fallback-cmath.hpp @@ -0,0 +1,161 @@ +//==--- fallback-cmath.cpp - fallback implementation of math functions -----==// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#if defined(__SPIR__) || defined(__SPIRV__) + +static inline float __devicelib_fabsf(float x) { return x < 0 ? -x : x; } + +static inline float __devicelib_ceilf(float x) { return __spirv_ocl_ceil(x); } + +static inline float __devicelib_copysignf(float x, float y) { + return __spirv_ocl_copysign(x, y); +} + +static inline float __devicelib_cospif(float x) { return __spirv_ocl_cospi(x); } + +static inline float __devicelib_scalblnf(float x, long int y) { + return __spirv_ocl_ldexp(x, (int)y); +} + +static inline float __devicelib_fmaxf(float x, float y) { + return __spirv_ocl_fmax(x, y); +} + +static inline float __devicelib_fminf(float x, float y) { + return __spirv_ocl_fmin(x, y); +} + +static inline float __devicelib_truncf(float x) { return __spirv_ocl_trunc(x); } + +static inline float __devicelib_sinpif(float x) { return __spirv_ocl_sinpi(x); } + +static inline float __devicelib_rsqrtf(float x) { return __spirv_ocl_rsqrt(x); } + +static inline float __devicelib_exp10f(float x) { return __spirv_ocl_exp10(x); } + +static inline float __devicelib_scalbnf(float x, int n) { + return __spirv_ocl_ldexp(x, n); +} + +static inline float __devicelib_roundf(float x) { return __spirv_ocl_round(x); } + +static inline float __devicelib_floorf(float x) { return __spirv_ocl_floor(x); } + +static inline float __devicelib_logf(float x) { return __spirv_ocl_log(x); } + +static inline float __devicelib_expf(float x) { return __spirv_ocl_exp(x); } + +static inline float __devicelib_frexpf(float x, int *exp) { + return __spirv_ocl_frexp(x, exp); +} + +static inline float __devicelib_ldexpf(float x, int exp) { + return __spirv_ocl_ldexp(x, exp); +} + +static inline float __devicelib_log10f(float x) { return __spirv_ocl_log10(x); } + +static inline float __devicelib_modff(float x, float *intpart) { + return __spirv_ocl_modf(x, intpart); +} + +static inline float __devicelib_exp2f(float x) { return __spirv_ocl_exp2(x); } + +static inline float __devicelib_expm1f(float x) { return __spirv_ocl_expm1(x); } + +static inline int __devicelib_ilogbf(float x) { return __spirv_ocl_ilogb(x); } + +static inline float __devicelib_log1pf(float x) { return __spirv_ocl_log1p(x); } + +static inline float __devicelib_log2f(float x) { return __spirv_ocl_log2(x); } + +static inline float __devicelib_logbf(float x) { return __spirv_ocl_logb(x); } + +static inline float __devicelib_sqrtf(float x) { return __spirv_ocl_sqrt(x); } + +static inline float __devicelib_cbrtf(float x) { return __spirv_ocl_cbrt(x); } + +static inline float __devicelib_hypotf(float x, float y) { + return __spirv_ocl_hypot(x, y); +} + +static inline float __devicelib_erff(float x) { return __spirv_ocl_erf(x); } + +static inline float __devicelib_erfcf(float x) { return __spirv_ocl_erfc(x); } + +static inline float __devicelib_tgammaf(float x) { + return __spirv_ocl_tgamma(x); +} + +static inline float __devicelib_lgammaf(float x) { + return __spirv_ocl_lgamma(x); +} + +static inline float __devicelib_fmodf(float x, float y) { + return __spirv_ocl_fmod(x, y); +} + +static inline float __devicelib_remainderf(float x, float y) { + return __spirv_ocl_remainder(x, y); +} + +static inline float __devicelib_remquof(float x, float y, int *q) { + return __spirv_ocl_remquo(x, y, q); +} + +static inline float __devicelib_nextafterf(float x, float y) { + return __spirv_ocl_nextafter(x, y); +} + +static inline float __devicelib_fdimf(float x, float y) { + return __spirv_ocl_fdim(x, y); +} + +static inline float __devicelib_fmaf(float x, float y, float z) { + return __spirv_ocl_fma(x, y, z); +} + +#if defined(__SPIR__) || defined(__SPIRV__) +static inline float __devicelib_sinf(float x) { + return (x == 0.0f) ? x : __spirv_ocl_sin(x); +} +#else +static inline float __devicelib_sinf(float x) { return __spirv_ocl_sin(x); } +#endif + +static inline float __devicelib_cosf(float x) { return __spirv_ocl_cos(x); } + +static inline float __devicelib_tanf(float x) { return __spirv_ocl_tan(x); } + +static inline float __devicelib_powf(float x, float y) { + return __spirv_ocl_pow(x, y); +} + +static inline float __devicelib_acosf(float x) { return __spirv_ocl_acos(x); } + +static inline float __devicelib_asinf(float x) { return __spirv_ocl_asin(x); } + +static inline float __devicelib_atanf(float x) { return __spirv_ocl_atan(x); } + +static inline float __devicelib_atan2f(float x, float y) { + return __spirv_ocl_atan2(x, y); +} + +static inline float __devicelib_coshf(float x) { return __spirv_ocl_cosh(x); } + +static inline float __devicelib_sinhf(float x) { return __spirv_ocl_sinh(x); } + +static inline float __devicelib_tanhf(float x) { return __spirv_ocl_tanh(x); } + +static inline float __devicelib_acoshf(float x) { return __spirv_ocl_acosh(x); } + +static inline float __devicelib_asinhf(float x) { return __spirv_ocl_asinh(x); } + +static inline float __devicelib_atanhf(float x) { return __spirv_ocl_atanh(x); } + +#endif // __SPIR__ || __SPIRV__ diff --git a/libdevice/fallback-complex-fp64.cpp b/libdevice/fallback-complex-fp64.hpp similarity index 84% rename from libdevice/fallback-complex-fp64.cpp rename to libdevice/fallback-complex-fp64.hpp index 28a5be8ab4a48..10984da587005 100644 --- a/libdevice/fallback-complex-fp64.cpp +++ b/libdevice/fallback-complex-fp64.hpp @@ -1,4 +1,4 @@ -//==----- fallback-complex-fp64.cpp - double precision complex math functions +//==----- fallback-complex-fp64.hpp - double precision complex math functions // for SPIR-V device --==// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. @@ -10,22 +10,20 @@ #include "device_complex.h" #if defined(__SPIR__) || defined(__SPIRV__) -#include - -// To support fallback device libraries on-demand loading, please update the -// DeviceLibFuncMap in llvm/tools/sycl-post-link/sycl-post-link.cpp if you add -// or remove any item in this file. -DEVICE_EXTERN_C_INLINE -double __devicelib_creal(double __complex__ z) { return __real__(z); } +#define INFINITY __builtin_huge_val() +#define NAN __builtin_nan("") +static inline double __devicelib_creal(double __complex__ z) { + return __real__(z); +} -DEVICE_EXTERN_C_INLINE -double __devicelib_cimag(double __complex__ z) { return __imag__(z); } +static inline double __devicelib_cimag(double __complex__ z) { + return __imag__(z); +} // __muldc3 // Returns: the product of a + ib and c + id -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib___muldc3(double __a, double __b, double __c, - double __d) { +static inline double __complex__ __devicelib___muldc3(double __a, double __b, + double __c, double __d) { double __ac = __a * __c; double __bd = __b * __d; double __ad = __a * __d; @@ -75,9 +73,8 @@ double __complex__ __devicelib___muldc3(double __a, double __b, double __c, // __divdc3 // Returns: the quotient of (a + ib) / (c + id) -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib___divdc3(double __a, double __b, double __c, - double __d) { +static inline double __complex__ __devicelib___divdc3(double __a, double __b, + double __c, double __d) { int __ilogbw = 0; double __logbw = __spirv_ocl_logb( __spirv_ocl_fmax(__spirv_ocl_fabs(__c), __spirv_ocl_fabs(__d))); @@ -117,18 +114,15 @@ double __complex__ __devicelib___divdc3(double __a, double __b, double __c, return z; } -DEVICE_EXTERN_C_INLINE -double __devicelib_cabs(double __complex__ z) { +static inline double __devicelib_cabs(double __complex__ z) { return __spirv_ocl_hypot(__devicelib_creal(z), __devicelib_cimag(z)); } -DEVICE_EXTERN_C_INLINE -double __devicelib_carg(double __complex__ z) { +static inline double __devicelib_carg(double __complex__ z) { return __spirv_ocl_atan2(__devicelib_cimag(z), __devicelib_creal(z)); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_cproj(double __complex__ z) { +static inline double __complex__ __devicelib_cproj(double __complex__ z) { double __complex__ r = z; if (__spirv_IsInf(__devicelib_creal(z)) || __spirv_IsInf(__devicelib_cimag(z))) @@ -136,8 +130,7 @@ double __complex__ __devicelib_cproj(double __complex__ z) { return r; } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_cexp(double __complex__ z) { +static inline double __complex__ __devicelib_cexp(double __complex__ z) { double z_imag = __devicelib_cimag(z); double z_real = __devicelib_creal(z); if (__spirv_IsInf(z_real)) { @@ -168,14 +161,12 @@ double __complex__ __devicelib_cexp(double __complex__ z) { return CMPLX(ret_real, ret_imag); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_clog(double __complex__ z) { +static inline double __complex__ __devicelib_clog(double __complex__ z) { return CMPLX(__spirv_ocl_log(__devicelib_cabs(z)), __devicelib_carg(z)); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_cpow(double __complex__ x, - double __complex__ y) { +static inline double __complex__ __devicelib_cpow(double __complex__ x, + double __complex__ y) { double __complex__ t = __devicelib_clog(x); double __complex__ w = __devicelib___muldc3(__devicelib_creal(y), __devicelib_cimag(y), @@ -183,8 +174,7 @@ double __complex__ __devicelib_cpow(double __complex__ x, return __devicelib_cexp(w); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_cpolar(double rho, double theta) { +static inline double __complex__ __devicelib_cpolar(double rho, double theta) { if (__spirv_IsNan(rho) || __spirv_SignBitSet(rho)) return CMPLX(NAN, NAN); if (__spirv_IsNan(theta)) { @@ -206,8 +196,7 @@ double __complex__ __devicelib_cpolar(double rho, double theta) { return CMPLX(x, y); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_csqrt(double __complex__ z) { +static inline double __complex__ __devicelib_csqrt(double __complex__ z) { double z_real = __devicelib_creal(z); double z_imag = __devicelib_cimag(z); if (__spirv_IsInf(z_imag)) @@ -224,8 +213,7 @@ double __complex__ __devicelib_csqrt(double __complex__ z) { __devicelib_carg(z) / 2.0); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_csinh(double __complex__ z) { +static inline double __complex__ __devicelib_csinh(double __complex__ z) { double z_real = __devicelib_creal(z); double z_imag = __devicelib_cimag(z); if (__spirv_IsInf(z_real) && !__spirv_IsFinite(z_imag)) @@ -238,8 +226,7 @@ double __complex__ __devicelib_csinh(double __complex__ z) { __spirv_ocl_cosh(z_real) * __spirv_ocl_sin(z_imag)); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_ccosh(double __complex__ z) { +static inline double __complex__ __devicelib_ccosh(double __complex__ z) { double z_real = __devicelib_creal(z); double z_imag = __devicelib_cimag(z); if (__spirv_IsInf(z_real) && !__spirv_IsFinite(z_imag)) @@ -254,8 +241,7 @@ double __complex__ __devicelib_ccosh(double __complex__ z) { __spirv_ocl_sinh(z_real) * __spirv_ocl_sin(z_imag)); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_ctanh(double __complex__ z) { +static inline double __complex__ __devicelib_ctanh(double __complex__ z) { double z_real = __devicelib_creal(z); double z_imag = __devicelib_cimag(z); if (__spirv_IsInf(z_real)) { @@ -275,34 +261,29 @@ double __complex__ __devicelib_ctanh(double __complex__ z) { return CMPLX(__2rsh / __d, __spirv_ocl_sin(__2i) / __d); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_csin(double __complex__ z) { +static inline double __complex__ __devicelib_csin(double __complex__ z) { double __complex__ w = __devicelib_csinh(CMPLX(-__devicelib_cimag(z), __devicelib_creal(z))); return CMPLX(__devicelib_cimag(w), -__devicelib_creal(w)); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_ccos(double __complex__ z) { +static inline double __complex__ __devicelib_ccos(double __complex__ z) { return __devicelib_ccosh(CMPLX(-__devicelib_cimag(z), __devicelib_creal(z))); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_ctan(double __complex__ z) { +static inline double __complex__ __devicelib_ctan(double __complex__ z) { double __complex__ w = __devicelib_ctanh(CMPLX(-__devicelib_cimag(z), __devicelib_creal(z))); return CMPLX(__devicelib_cimag(w), -__devicelib_creal(w)); } -DEVICE_EXTERN_C_INLINE -double __complex__ __sqr(double __complex__ z) { +static inline double __complex__ __sqr(double __complex__ z) { double z_real = __devicelib_creal(z); double z_imag = __devicelib_cimag(z); return CMPLX((z_real + z_imag) * (z_real - z_imag), 2.0 * z_real * z_imag); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_cacos(double __complex__ z) { +static inline double __complex__ __devicelib_cacos(double __complex__ z) { double z_real = __devicelib_creal(z); double z_imag = __devicelib_cimag(z); const double __pi(__spirv_ocl_atan2(+0.0, -0.0)); @@ -336,8 +317,7 @@ double __complex__ __devicelib_cacos(double __complex__ z) { -__spirv_ocl_fabs(__devicelib_creal(w))); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_casinh(double __complex__ z) { +static inline double __complex__ __devicelib_casinh(double __complex__ z) { double z_real = __devicelib_creal(z); double z_imag = __devicelib_cimag(z); const double __pi(__spirv_ocl_atan2(+0.0, -0.0)); @@ -364,15 +344,13 @@ double __complex__ __devicelib_casinh(double __complex__ z) { __spirv_ocl_copysign(__devicelib_cimag(w), z_imag)); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_casin(double __complex__ z) { +static inline double __complex__ __devicelib_casin(double __complex__ z) { double __complex__ w = __devicelib_casinh(CMPLX(-__devicelib_cimag(z), __devicelib_creal(z))); return CMPLX(__devicelib_cimag(w), -__devicelib_creal(w)); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_cacosh(double __complex__ z) { +static inline double __complex__ __devicelib_cacosh(double __complex__ z) { double z_real = __devicelib_creal(z); double z_imag = __devicelib_cimag(z); const double __pi(__spirv_ocl_atan2(+0.0, -0.0)); @@ -403,8 +381,7 @@ double __complex__ __devicelib_cacosh(double __complex__ z) { __spirv_ocl_copysign(__devicelib_cimag(w), z_imag)); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_catanh(double __complex__ z) { +static inline double __complex__ __devicelib_catanh(double __complex__ z) { double z_real = __devicelib_creal(z); double z_imag = __devicelib_cimag(z); const double __pi(__spirv_ocl_atan2(+0.0, -0.0)); @@ -434,10 +411,11 @@ double __complex__ __devicelib_catanh(double __complex__ z) { __spirv_ocl_copysign(__devicelib_cimag(w), z_imag)); } -DEVICE_EXTERN_C_INLINE -double __complex__ __devicelib_catan(double __complex__ z) { +static inline double __complex__ __devicelib_catan(double __complex__ z) { double __complex__ w = __devicelib_catanh(CMPLX(-__devicelib_cimag(z), __devicelib_creal(z))); return CMPLX(__devicelib_cimag(w), -__devicelib_creal(w)); } +#undef INFINITY +#undef NAN #endif // __SPIR__ || __SPIRV__ diff --git a/libdevice/fallback-complex.cpp b/libdevice/fallback-complex.hpp similarity index 84% rename from libdevice/fallback-complex.cpp rename to libdevice/fallback-complex.hpp index 9f94195a3a407..ad6d3c893c6d6 100644 --- a/libdevice/fallback-complex.cpp +++ b/libdevice/fallback-complex.hpp @@ -1,4 +1,4 @@ -//==----- fallback-complex.cpp - complex math functions for SPIR-V device --==// +//==----- fallback-complex.hpp - complex math functions for SPIR-V device --==// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -9,22 +9,20 @@ #include "device_complex.h" #if defined(__SPIR__) || defined(__SPIRV__) -#include - -// To support fallback device libraries on-demand loading, please update the -// DeviceLibFuncMap in llvm/tools/sycl-post-link/sycl-post-link.cpp if you add -// or remove any item in this file. -DEVICE_EXTERN_C_INLINE -float __devicelib_crealf(float __complex__ z) { return __real__(z); } +#define INFINITY __builtin_huge_valf() +#define NAN __builtin_nanf("") +static inline float __devicelib_crealf(float __complex__ z) { + return __real__(z); +} -DEVICE_EXTERN_C_INLINE -float __devicelib_cimagf(float __complex__ z) { return __imag__(z); } +static inline float __devicelib_cimagf(float __complex__ z) { + return __imag__(z); +} // __mulsc3 // Returns: the product of a + ib and c + id -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib___mulsc3(float __a, float __b, float __c, - float __d) { +static inline float __complex__ __devicelib___mulsc3(float __a, float __b, + float __c, float __d) { float __ac = __a * __c; float __bd = __b * __d; float __ad = __a * __d; @@ -76,9 +74,8 @@ float __complex__ __devicelib___mulsc3(float __a, float __b, float __c, // Returns: the quotient of (a + ib) / (c + id) // FIXME: divsc3/divdc3 have overflow issue when dealing with large number. // And this overflow issue is from libc++/compiler-rt's implementation. -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib___divsc3(float __a, float __b, float __c, - float __d) { +static inline float __complex__ __devicelib___divsc3(float __a, float __b, + float __c, float __d) { int __ilogbw = 0; float __logbw = __spirv_ocl_logb( __spirv_ocl_fmax(__spirv_ocl_fabs(__c), __spirv_ocl_fabs(__d))); @@ -118,18 +115,15 @@ float __complex__ __devicelib___divsc3(float __a, float __b, float __c, return z; } -DEVICE_EXTERN_C_INLINE -float __devicelib_cargf(float __complex__ z) { +static inline float __devicelib_cargf(float __complex__ z) { return __spirv_ocl_atan2(__devicelib_cimagf(z), __devicelib_crealf(z)); } -DEVICE_EXTERN_C_INLINE -float __devicelib_cabsf(float __complex__ z) { +static inline float __devicelib_cabsf(float __complex__ z) { return __spirv_ocl_hypot(__devicelib_crealf(z), __devicelib_cimagf(z)); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_cprojf(float __complex__ z) { +static inline float __complex__ __devicelib_cprojf(float __complex__ z) { float __complex__ r = z; if (__spirv_IsInf(__devicelib_crealf(z)) || __spirv_IsInf(__devicelib_cimagf(z))) @@ -137,8 +131,7 @@ float __complex__ __devicelib_cprojf(float __complex__ z) { return r; } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_cexpf(float __complex__ z) { +static inline float __complex__ __devicelib_cexpf(float __complex__ z) { float z_imag = __devicelib_cimagf(z); float z_real = __devicelib_crealf(z); if (z_imag == 0) { @@ -161,13 +154,12 @@ float __complex__ __devicelib_cexpf(float __complex__ z) { return CMPLXF(e * __spirv_ocl_cos(z_imag), e * __spirv_ocl_sin(z_imag)); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_clogf(float __complex__ z) { +static inline float __complex__ __devicelib_clogf(float __complex__ z) { return CMPLXF(__spirv_ocl_log(__devicelib_cabsf(z)), __devicelib_cargf(z)); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_cpowf(float __complex__ x, float __complex__ y) { +static inline float __complex__ __devicelib_cpowf(float __complex__ x, + float __complex__ y) { float __complex__ t = __devicelib_clogf(x); float __complex__ w = __devicelib___mulsc3(__devicelib_crealf(y), __devicelib_cimagf(y), @@ -175,8 +167,7 @@ float __complex__ __devicelib_cpowf(float __complex__ x, float __complex__ y) { return __devicelib_cexpf(w); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_cpolarf(float rho, float theta) { +static inline float __complex__ __devicelib_cpolarf(float rho, float theta) { if (__spirv_IsNan(rho) || __spirv_SignBitSet(rho)) return CMPLXF(NAN, NAN); if (__spirv_IsNan(theta)) { @@ -198,8 +189,7 @@ float __complex__ __devicelib_cpolarf(float rho, float theta) { return CMPLXF(x, y); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_csqrtf(float __complex__ z) { +static inline float __complex__ __devicelib_csqrtf(float __complex__ z) { float z_real = __devicelib_crealf(z); float z_imag = __devicelib_cimagf(z); if (__spirv_IsInf(z_imag)) @@ -216,8 +206,7 @@ float __complex__ __devicelib_csqrtf(float __complex__ z) { __devicelib_cargf(z) / 2.0f); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_csinhf(float __complex__ z) { +static inline float __complex__ __devicelib_csinhf(float __complex__ z) { float z_real = __devicelib_crealf(z); float z_imag = __devicelib_cimagf(z); if (__spirv_IsInf(z_real) && !__spirv_IsFinite(z_imag)) @@ -230,8 +219,7 @@ float __complex__ __devicelib_csinhf(float __complex__ z) { __spirv_ocl_cosh(z_real) * __spirv_ocl_sin(z_imag)); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_ccoshf(float __complex__ z) { +static inline float __complex__ __devicelib_ccoshf(float __complex__ z) { float z_real = __devicelib_crealf(z); float z_imag = __devicelib_cimagf(z); if (__spirv_IsInf(z_real) && !__spirv_IsFinite(z_imag)) @@ -246,8 +234,7 @@ float __complex__ __devicelib_ccoshf(float __complex__ z) { __spirv_ocl_sinh(z_real) * __spirv_ocl_sin(z_imag)); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_ctanhf(float __complex__ z) { +static inline float __complex__ __devicelib_ctanhf(float __complex__ z) { float z_real = __devicelib_crealf(z); float z_imag = __devicelib_cimagf(z); if (__spirv_IsInf(z_real)) { @@ -268,35 +255,30 @@ float __complex__ __devicelib_ctanhf(float __complex__ z) { return CMPLXF(__2rsh / __d, __spirv_ocl_sin(__2i) / __d); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_csinf(float __complex__ z) { +static inline float __complex__ __devicelib_csinf(float __complex__ z) { float __complex__ w = __devicelib_csinhf(CMPLXF(-__devicelib_cimagf(z), __devicelib_crealf(z))); return CMPLXF(__devicelib_cimagf(w), -__devicelib_crealf(w)); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_ccosf(float __complex__ z) { +static inline float __complex__ __devicelib_ccosf(float __complex__ z) { return __devicelib_ccoshf( CMPLXF(-__devicelib_cimagf(z), __devicelib_crealf(z))); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_ctanf(float __complex__ z) { +static inline float __complex__ __devicelib_ctanf(float __complex__ z) { float __complex__ w = __devicelib_ctanhf(CMPLXF(-__devicelib_cimagf(z), __devicelib_crealf(z))); return CMPLXF(__devicelib_cimagf(w), -__devicelib_crealf(w)); } -DEVICE_EXTERN_C_INLINE -float __complex__ __sqrf(float __complex__ z) { +static inline float __complex__ __sqrf(float __complex__ z) { float z_real = __devicelib_crealf(z); float z_imag = __devicelib_cimagf(z); return CMPLXF((z_real + z_imag) * (z_real - z_imag), 2.0f * z_real * z_imag); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_cacosf(float __complex__ z) { +static inline float __complex__ __devicelib_cacosf(float __complex__ z) { float z_real = __devicelib_crealf(z); float z_imag = __devicelib_cimagf(z); const float __pi(__spirv_ocl_atan2(+0.0f, -0.0f)); @@ -330,8 +312,7 @@ float __complex__ __devicelib_cacosf(float __complex__ z) { -__spirv_ocl_fabs(__devicelib_crealf(w))); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_casinhf(float __complex__ z) { +static inline float __complex__ __devicelib_casinhf(float __complex__ z) { float z_real = __devicelib_crealf(z); float z_imag = __devicelib_cimagf(z); const float __pi(__spirv_ocl_atan2(+0.0f, -0.0f)); @@ -358,15 +339,13 @@ float __complex__ __devicelib_casinhf(float __complex__ z) { __spirv_ocl_copysign(__devicelib_cimagf(w), z_imag)); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_casinf(float __complex__ z) { +static inline float __complex__ __devicelib_casinf(float __complex__ z) { float __complex__ w = __devicelib_casinhf( CMPLXF(-__devicelib_cimagf(z), __devicelib_crealf(z))); return CMPLXF(__devicelib_cimagf(w), -__devicelib_crealf(w)); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_cacoshf(float __complex__ z) { +static inline float __complex__ __devicelib_cacoshf(float __complex__ z) { float z_real = __devicelib_crealf(z); float z_imag = __devicelib_cimagf(z); const float __pi(__spirv_ocl_atan2(+0.0f, -0.0f)); @@ -397,8 +376,7 @@ float __complex__ __devicelib_cacoshf(float __complex__ z) { __spirv_ocl_copysign(__devicelib_cimagf(w), z_imag)); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_catanhf(float __complex__ z) { +static inline float __complex__ __devicelib_catanhf(float __complex__ z) { float z_real = __devicelib_crealf(z); float z_imag = __devicelib_cimagf(z); const float __pi(__spirv_ocl_atan2(+0.0f, -0.0f)); @@ -428,10 +406,11 @@ float __complex__ __devicelib_catanhf(float __complex__ z) { __spirv_ocl_copysign(__devicelib_cimagf(w), z_imag)); } -DEVICE_EXTERN_C_INLINE -float __complex__ __devicelib_catanf(float __complex__ z) { +static inline float __complex__ __devicelib_catanf(float __complex__ z) { float __complex__ w = __devicelib_catanhf( CMPLXF(-__devicelib_cimagf(z), __devicelib_crealf(z))); return CMPLXF(__devicelib_cimagf(w), -__devicelib_crealf(w)); } +#undef INFINITY +#undef NAN #endif // __SPIR__ || __SPIRV__ diff --git a/libdevice/fallback-cstring.cpp b/libdevice/fallback-cstring.hpp similarity index 95% rename from libdevice/fallback-cstring.cpp rename to libdevice/fallback-cstring.hpp index d59527b2a6157..639d6090a34e4 100644 --- a/libdevice/fallback-cstring.cpp +++ b/libdevice/fallback-cstring.hpp @@ -1,4 +1,4 @@ -//==-- fallback-cstring.cpp - fallback implementation of C string functions--=// +//==-- fallback-cstring.hpp - fallback implementation of C string functions--=// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -42,8 +42,7 @@ static void *__devicelib_memcpy_uint32_aligned(void *dest, const void *src, return dest; } -DEVICE_EXTERN_C_INLINE -void *__devicelib_memcpy(void *dest, const void *src, size_t n) { +static inline void *__devicelib_memcpy(void *dest, const void *src, size_t n) { if (dest == NULL || src == NULL || n == 0) return dest; @@ -104,8 +103,7 @@ static void *__devicelib_memset_uint32_aligned(void *dest, int c, size_t n) { return dest; } -DEVICE_EXTERN_C_INLINE -void *__devicelib_memset(void *dest, int c, size_t n) { +static inline void *__devicelib_memset(void *dest, int c, size_t n) { if (dest == NULL || n == 0) return dest; @@ -173,8 +171,7 @@ static int __devicelib_memcmp_uint32_aligned(const void *s1, const void *s2, &s1_uint32_ptr[cmp_num], &s2_uint32_ptr[cmp_num], tailing_bytes); } -DEVICE_EXTERN_C_INLINE -int __devicelib_memcmp(const void *s1, const void *s2, size_t n) { +static inline int __devicelib_memcmp(const void *s1, const void *s2, size_t n) { if (s1 == s2 || n == 0) return 0; diff --git a/libdevice/msvc_math.cpp b/libdevice/msvc_math.cpp index ab234eb8e25e3..982840e12209a 100644 --- a/libdevice/msvc_math.cpp +++ b/libdevice/msvc_math.cpp @@ -34,10 +34,7 @@ union _Dconst2 { // pun float types as integer array #define _FXbig (float)((F_NBITS + 1) * 347L / 1000) DEVICE_EXTERN_C_INLINE -float __devicelib_hypotf(float, float); - -DEVICE_EXTERN_C_INLINE -float _hypotf(float x, float y) { return __devicelib_hypotf(x, y); } +float _hypotf(float x, float y) { return __spirv_ocl_hypot(x, y); } DEVICE_EXTERN_C_INLINE short _FDtest(float *px) { // categorize *px diff --git a/libdevice/wrapper.h b/libdevice/wrapper.h index 3b425d9df49e9..4e24b13cbed3d 100644 --- a/libdevice/wrapper.h +++ b/libdevice/wrapper.h @@ -18,12 +18,6 @@ // required by the wrapper libraries. #include "spirv_vars.h" DEVICE_EXTERN_C -void *__devicelib_memcpy(void *dest, const void *src, size_t n); -DEVICE_EXTERN_C -void *__devicelib_memset(void *dest, int c, size_t n); -DEVICE_EXTERN_C -int __devicelib_memcmp(const void *s1, const void *s2, size_t n); -DEVICE_EXTERN_C void __devicelib_assert_fail(const char *expr, const char *file, int32_t line, const char *func, uint64_t gid0, uint64_t gid1, uint64_t gid2, uint64_t lid0, uint64_t lid1, diff --git a/sycl-jit/jit-compiler/lib/rtc/DeviceCompilation.cpp b/sycl-jit/jit-compiler/lib/rtc/DeviceCompilation.cpp index e755aa7f893f2..6270b6befd902 100644 --- a/sycl-jit/jit-compiler/lib/rtc/DeviceCompilation.cpp +++ b/sycl-jit/jit-compiler/lib/rtc/DeviceCompilation.cpp @@ -785,21 +785,13 @@ static void getDeviceLibraries(const ArgList &Args, using SYCLDeviceLibsList = SmallVector; const SYCLDeviceLibsList SYCLDeviceLibs = {"libsycl-crt", - "libsycl-complex", - "libsycl-complex-fp64", "libsycl-cmath", - "libsycl-cmath-fp64", #if defined(_WIN32) "libsycl-msvc-math", #endif "libsycl-imf", "libsycl-imf-fp64", "libsycl-imf-bf16", - "libsycl-fallback-cstring", - "libsycl-fallback-complex", - "libsycl-fallback-complex-fp64", - "libsycl-fallback-cmath", - "libsycl-fallback-cmath-fp64", "libsycl-fallback-imf", "libsycl-fallback-imf-fp64", "libsycl-fallback-imf-bf16"};