mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 14:36:08 +00:00

Summary: In this patch we propose a temporary solution to resolving math functions for the NVPTX toolchain, temporary until OpenMP variant is supported by Clang. We intercept the inclusion of math.h and cmath headers and if we are in the OpenMP-NVPTX case, we re-use CUDA's math function resolution mechanism. Authors: @gtbercea @jdoerfert Reviewers: hfinkel, caomhin, ABataev, tra Reviewed By: hfinkel, ABataev, tra Subscribers: JDevlieghere, mgorny, guansong, cfe-commits, jdoerfert Tags: #clang Differential Revision: https://reviews.llvm.org/D61399 llvm-svn: 360265
22 lines
1.1 KiB
C++
22 lines
1.1 KiB
C++
// Test calling of device math functions.
|
|
///==========================================================================///
|
|
|
|
// REQUIRES: nvptx-registered-target
|
|
|
|
// RUN: %clang_cc1 -internal-isystem %S/Inputs/include -include math.h -x c++ -fopenmp -triple powerpc64le-unknown-unknown -fopenmp-targets=nvptx64-nvidia-cuda -emit-llvm-bc %s -o %t-ppc-host.bc
|
|
// RUN: %clang_cc1 -internal-isystem %S/../../lib/Headers/openmp_wrappers -include __clang_openmp_math.h -internal-isystem %S/../../lib/Headers/openmp_wrappers -include math.h -internal-isystem %S/Inputs/include -include stdlib.h -include limits -x c++ -fopenmp -triple nvptx64-nvidia-cuda -aux-triple powerpc64le-unknown-unknown -fopenmp-targets=nvptx64-nvidia-cuda -emit-llvm %s -fopenmp-is-device -fopenmp-host-ir-file-path %t-ppc-host.bc -o - | FileCheck -check-prefix CHECK-YES %s
|
|
|
|
#include <math.h>
|
|
|
|
void test_sqrt(double a1) {
|
|
#pragma omp target
|
|
{
|
|
// CHECK-YES: call double @__nv_sqrt(double
|
|
double l1 = sqrt(a1);
|
|
// CHECK-YES: call double @__nv_pow(double
|
|
double l2 = pow(a1, a1);
|
|
// CHECK-YES: call double @__nv_modf(double
|
|
double l3 = modf(a1 + 3.5, &a1);
|
|
}
|
|
}
|