From: Anders Carlsson Date: Mon, 22 Dec 2008 00:48:30 +0000 (+0000) Subject: Add a couple of conversion intrinsics X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4fcc313c624bcad3e6ae79a8507c58ec5b02a8de;p=clang Add a couple of conversion intrinsics git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61317 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Headers/xmmintrin.devel.h b/lib/Headers/xmmintrin.devel.h index 5535eb36af..448c88365a 100644 --- a/lib/Headers/xmmintrin.devel.h +++ b/lib/Headers/xmmintrin.devel.h @@ -28,6 +28,8 @@ #error "MMX instruction set not enabled" #else +#include + typedef float __m128 __attribute__((__vector_size__(16))); static inline __m128 __attribute__((__always_inline__)) _mm_add_ss(__m128 a, __m128 b) @@ -320,6 +322,51 @@ static inline int __attribute__((__always_inline__)) _mm_ucomineq_ss(__m128 a, _ return __builtin_ia32_ucomineq(a, b); } +static inline int __attribute__((__always_inline__)) _mm_cvtss_si32(__m128 a) +{ + return __builtin_ia32_cvtss2si(a); +} + +static inline long long __attribute__((__always_inline__)) _mm_cvtss_si64(__m128 a) +{ + return __builtin_ia32_cvtss2si64(a); +} + +static inline __m64 __attribute__((__always_inline__)) _mm_cvtps_pi32(__m128 a) +{ + return (__m64)__builtin_ia32_cvtps2pi(a); +} + +static inline int __attribute__((__always_inline__)) _mm_cvttss_si32(__m128 a) +{ + return __builtin_ia32_cvttss2si(a); +} + +static inline long long __attribute__((__always_inline__)) _mm_cvttss_si64(__m128 a) +{ + return __builtin_ia32_cvttss2si64(a); +} + +static inline __m64 __attribute__((__always_inline__)) _mm_cvttps_pi32(__m128 a) +{ + return (__m64)__builtin_ia32_cvttps2pi(a); +} + +static inline __m128 __attribute__((__always_inline__)) _mm_cvtsi32_ss(__m128 a, int b) +{ + return __builtin_ia32_cvtsi2ss(a, b); +} + +static inline __m128 __attribute__((__always_inline__)) _mm_cvtsi64_ss(__m128 a, long long b) +{ + return __builtin_ia32_cvtsi642ss(a, b); +} + +static inline __m128 __attribute__((__always_inline__)) _mm_cvtpi32_ps(__m128 a, __m64 b) +{ + return __builtin_ia32_cvtpi2ps(a, (__v2si)b); +} + #endif /* __SSE__ */ #endif /* __XMMINTRIN_H */