This turned up during certain FreeBSD port builds. Apparently the mmd3dnow.h header shipped with clang misses the following intrinsics: __m64 _m_from_float(float); __m64 _m_from_int(int); void _m_prefetch(void *); float _m_to_float(__m64); int _m_to_int(__m64); Note that the int variants are also not declared by gcc, e.g. these seem to be only relevant to Microsoft C. Maybe it is not worth declaring them in mm3dnow.h, since they are already in the Microsoft-specific Intrin.h header.
(In reply to comment #0) > This turned up during certain FreeBSD port builds. Apparently the > mmd3dnow.h header shipped with clang misses the following intrinsics: > > __m64 _m_from_int(int); > int _m_to_int(__m64); > These 2 are MMX intrinsics and are included in mmintrin.h (which mm3dnow.h includes): /* Aliases for compatibility. */ #define _m_from_int _mm_cvtsi32_si64 #define _m_to_int _mm_cvtsi64_si32
(In reply to comment #1) ... > > __m64 _m_from_int(int); > > int _m_to_int(__m64); > > > > These 2 are MMX intrinsics and are included in mmintrin.h (which mm3dnow.h > includes): > > /* Aliases for compatibility. */ > #define _m_from_int _mm_cvtsi32_si64 > #define _m_to_int _mm_cvtsi64_si32 Yes, but specifically _m_prefetch() was the intrinsic some ports error'd out on. Maybe this could also be defined similarly?
Review patch for _m_prefetch() http://reviews.llvm.org/D11338
(In reply to comment #3) > Review patch for _m_prefetch() > http://reviews.llvm.org/D11338 Committed in rL243305 and rL243314
> __m64 _m_from_float(float); > __m64 _m_from_int(int); > void _m_prefetch(void *); > float _m_to_float(__m64); > int _m_to_int(__m64); > The only missing functions now are _m_from_float and _m_to_float. The other definitions can be safely removed from Intrin.h
D12272 - patch to remove the unnecessary _m_from_int, _m_to_int and _m_prefetch intrinsic definitions
D12340 - final patch to add the missing _m_from_float / _m_to_float implementations.