Johannes Doerfert d999cbc988 [OpenMP] Initial support for std::complex in target regions
This simply follows the scheme we have for other wrappers. It resolves
the current link problem, e.g., `__muldc3 not found`, when std::complex
operations are used on a device.

This will not allow complex make math function calls to work properly,
e.g., sin, but that is more complex (pan intended) anyway.

Reviewed By: tra, JonChesterfield

Differential Revision: https://reviews.llvm.org/D80897
2020-07-08 17:33:59 -05:00

32 lines
770 B
Plaintext

#pragma once
#include <stdlib.h>
#if __cplusplus >= 201703L
extern int abs (int __x) throw() __attribute__ ((__const__)) ;
extern long int labs (long int __x) throw() __attribute__ ((__const__)) ;
extern float fabs (float __x) throw() __attribute__ ((__const__)) ;
#else
extern int abs (int __x) __attribute__ ((__const__)) ;
extern long int labs (long int __x) __attribute__ ((__const__)) ;
extern float fabs (float __x) __attribute__ ((__const__)) ;
#endif
namespace std
{
using ::abs;
inline long
abs(long __i) { return __builtin_labs(__i); }
inline long long
abs(long long __x) { return __builtin_llabs (__x); }
float fabs(float __x) { return __builtin_fabs(__x); }
float abs(float __x) { return fabs(__x); }
double abs(double __x) { return fabs(__x); }
}