diff options
-rw-r--r-- | unsupported/Eigen/SpecialFunctions | 3 | ||||
-rw-r--r-- | unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h | 59 |
2 files changed, 62 insertions, 0 deletions
diff --git a/unsupported/Eigen/SpecialFunctions b/unsupported/Eigen/SpecialFunctions index 6e8132fb2..a098ce871 100644 --- a/unsupported/Eigen/SpecialFunctions +++ b/unsupported/Eigen/SpecialFunctions @@ -66,6 +66,9 @@ namespace Eigen { #include "src/SpecialFunctions/BesselFunctionsFunctors.h" #include "src/SpecialFunctions/BesselFunctionsArrayAPI.h" #include "src/SpecialFunctions/SpecialFunctionsImpl.h" +#if defined(EIGEN_HIPCC) +#include "src/SpecialFunctions/HipVectorCompatibility.h" +#endif #include "src/SpecialFunctions/SpecialFunctionsPacketMath.h" #include "src/SpecialFunctions/SpecialFunctionsHalf.h" #include "src/SpecialFunctions/SpecialFunctionsFunctors.h" diff --git a/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h b/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h new file mode 100644 index 000000000..60a3972a3 --- /dev/null +++ b/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h @@ -0,0 +1,59 @@ +#ifndef HIP_VECTOR_COMPATIBILITY_H +#define HIP_VECTOR_COMPATIBILITY_H + +namespace hip_impl { + template <typename, typename, unsigned int> struct Scalar_accessor; +} // end namespace hip_impl + +namespace Eigen { +namespace internal { + +#define HIP_SCALAR_ACCESSOR_BUILDER(NAME) \ +template <typename T, typename U, unsigned int n> \ +struct NAME <hip_impl::Scalar_accessor<T, U, n>> : NAME <T> {}; + +#define HIP_SCALAR_ACCESSOR_BUILDER_IGAMMA(NAME) \ +template <typename T, typename U, unsigned int n, IgammaComputationMode mode> \ +struct NAME <hip_impl::Scalar_accessor<T, U, n>, mode> : NAME <T, mode> {}; + +#if EIGEN_HAS_C99_MATH +HIP_SCALAR_ACCESSOR_BUILDER(betainc_helper) +HIP_SCALAR_ACCESSOR_BUILDER(erf_impl) +HIP_SCALAR_ACCESSOR_BUILDER(erfc_impl) +HIP_SCALAR_ACCESSOR_BUILDER(igammac_impl) +HIP_SCALAR_ACCESSOR_BUILDER(incbeta_cfe) +HIP_SCALAR_ACCESSOR_BUILDER(lgamma_impl) +HIP_SCALAR_ACCESSOR_BUILDER(ndtri_impl) +HIP_SCALAR_ACCESSOR_BUILDER(polygamma_impl) +HIP_SCALAR_ACCESSOR_BUILDER_IGAMMA(igamma_generic_impl) +#endif + +HIP_SCALAR_ACCESSOR_BUILDER(bessel_i0_impl) +HIP_SCALAR_ACCESSOR_BUILDER(bessel_i0e_impl) +HIP_SCALAR_ACCESSOR_BUILDER(bessel_i1_impl) +HIP_SCALAR_ACCESSOR_BUILDER(bessel_i1e_impl) +HIP_SCALAR_ACCESSOR_BUILDER(bessel_j0_impl) +HIP_SCALAR_ACCESSOR_BUILDER(bessel_j1_impl) +HIP_SCALAR_ACCESSOR_BUILDER(bessel_k0_impl) +HIP_SCALAR_ACCESSOR_BUILDER(bessel_k0e_impl) +HIP_SCALAR_ACCESSOR_BUILDER(bessel_k1_impl) +HIP_SCALAR_ACCESSOR_BUILDER(bessel_k1e_impl) +HIP_SCALAR_ACCESSOR_BUILDER(bessel_y0_impl) +HIP_SCALAR_ACCESSOR_BUILDER(bessel_y1_impl) +HIP_SCALAR_ACCESSOR_BUILDER(betainc_impl) +HIP_SCALAR_ACCESSOR_BUILDER(digamma_impl) +HIP_SCALAR_ACCESSOR_BUILDER(digamma_impl_maybe_poly) +HIP_SCALAR_ACCESSOR_BUILDER(gamma_sample_der_alpha_impl) +HIP_SCALAR_ACCESSOR_BUILDER(gamma_sample_der_alpha_retval) +HIP_SCALAR_ACCESSOR_BUILDER(igamma_der_a_impl) +HIP_SCALAR_ACCESSOR_BUILDER(igamma_der_a_retval) +HIP_SCALAR_ACCESSOR_BUILDER(igamma_impl) +HIP_SCALAR_ACCESSOR_BUILDER(zeta_impl) +HIP_SCALAR_ACCESSOR_BUILDER(zeta_impl_series) +HIP_SCALAR_ACCESSOR_BUILDER_IGAMMA(igamma_series_impl) +HIP_SCALAR_ACCESSOR_BUILDER_IGAMMA(igammac_cf_impl) + +} // end namespace internal +} // end namespace Eigen + +#endif // HIP_VECTOR_COMPATIBILITY_H |