/*===-- complex --- OpenMP complex wrapper for target regions --------- c++ -===
 *
 * 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
 *
 *===-----------------------------------------------------------------------===
 */

#ifndef __CLANG_OPENMP_COMPLEX__
#define __CLANG_OPENMP_COMPLEX__

#ifndef _OPENMP
#error "This file is for OpenMP compilation only."
#endif

// We require std::math functions in the complex builtins below.
#include <cmath>

#define __CUDA__
#include <__clang_cuda_complex_builtins.h>
#endif

// Grab the host header too.
#include_next <complex>


#ifdef __cplusplus

// If we are compiling against libc++, the macro _LIBCPP_STD_VER should be set
// after including <cmath> above. Since the complex header we use is a
// simplified version of the libc++, we don't need it in this case. If we
// compile against libstdc++, or any other standard library, we will overload
// the (hopefully template) functions in the <complex> header with the ones we
// got from libc++ which decomposes math functions, like `std::sin`, into
// arithmetic and calls to non-complex functions, all of which we can then
// handle.
#ifndef _LIBCPP_STD_VER

#pragma omp begin declare variant match(                                       \
    device = {arch(nvptx, nvptx64)},                                           \
    implementation = {extension(match_any, allow_templates)})

#include <complex_cmath.h>

#pragma omp end declare variant

#endif

#endif
