summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2008-12-22 00:48:30 +0000
committerAnders Carlsson <andersca@mac.com>2008-12-22 00:48:30 +0000
commit157643c8d74bf2ca66764ea44e2f4677d70fde0c (patch)
treef58b72fd39d0066016e961cee124c908b00742bc /clang
parent60053dd2a50dc3d19e70050001ed58861485fa10 (diff)
downloadbcm5719-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.h47
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 */
OpenPOWER on IntegriCloud