diff options
author | Anders Carlsson <andersca@mac.com> | 2008-12-22 00:48:30 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2008-12-22 00:48:30 +0000 |
commit | 157643c8d74bf2ca66764ea44e2f4677d70fde0c (patch) | |
tree | f58b72fd39d0066016e961cee124c908b00742bc /clang | |
parent | 60053dd2a50dc3d19e70050001ed58861485fa10 (diff) | |
download | bcm5719-llvm-157643c8d74bf2ca66764ea44e2f4677d70fde0c.tar.gz bcm5719-llvm-157643c8d74bf2ca66764ea44e2f4677d70fde0c.zip |
Add a couple of conversion intrinsics
llvm-svn: 61317
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Headers/xmmintrin.devel.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/clang/lib/Headers/xmmintrin.devel.h b/clang/lib/Headers/xmmintrin.devel.h index 5535eb36af5..448c88365ad 100644 --- a/clang/lib/Headers/xmmintrin.devel.h +++ b/clang/lib/Headers/xmmintrin.devel.h @@ -28,6 +28,8 @@ #error "MMX instruction set not enabled" #else +#include <mmintrin.h> + 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 */ |