mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Disable f16c scalar conversions for MSVC.
(cherry picked from commit 73b2c13bf2)
This commit is contained in:
committed by
Antonio Sanchez
parent
ac78f84b72
commit
8a21df2d9c
@@ -534,7 +534,12 @@ EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC __half_raw float_to_half_rtne(float ff) {
|
||||
|
||||
#elif defined(EIGEN_HAS_FP16_C)
|
||||
__half_raw h;
|
||||
h.x = _cvtss_sh(ff, 0);
|
||||
#if EIGEN_COMP_MSVC
|
||||
// MSVC does not have scalar instructions.
|
||||
h.x =_mm_extract_epi16(_mm_cvtps_ph(_mm_set_ss(ff), 0), 0);
|
||||
#else
|
||||
h.x = _cvtss_sh(ff, 0);
|
||||
#endif
|
||||
return h;
|
||||
|
||||
#elif defined(EIGEN_HAS_ARM64_FP16_SCALAR_ARITHMETIC)
|
||||
@@ -595,7 +600,12 @@ EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC float half_to_float(__half_raw h) {
|
||||
(defined(EIGEN_HAS_HIP_FP16) && defined(EIGEN_HIP_DEVICE_COMPILE))
|
||||
return __half2float(h);
|
||||
#elif defined(EIGEN_HAS_FP16_C)
|
||||
return _cvtsh_ss(h.x);
|
||||
#if EIGEN_COMP_MSVC
|
||||
// MSVC does not have scalar instructions.
|
||||
return _mm_cvtss_f32(_mm_cvtph_ps(_mm_set1_epi16(h.x)));
|
||||
#else
|
||||
return _cvtsh_ss(h.x);
|
||||
#endif
|
||||
#elif defined(EIGEN_HAS_ARM64_FP16_SCALAR_ARITHMETIC)
|
||||
return static_cast<float>(h.x);
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user