aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2008-12-22 02:43:30 +0000
committerAnders Carlsson <andersca@mac.com>2008-12-22 02:43:30 +0000
commit9770086950fae6d458e2c1cf397f1b6ec86506bb (patch)
tree47102ff7714e2d05bb5108c5eedbc53793135bcb
parentff944a8c481d6c0f1ad2633e4be9bf8b1dd2a09f (diff)
Add load intrinsics
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61320 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Headers/xmmintrin.devel.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/Headers/xmmintrin.devel.h b/lib/Headers/xmmintrin.devel.h
index 5ae6aeb85c..acb6e279be 100644
--- a/lib/Headers/xmmintrin.devel.h
+++ b/lib/Headers/xmmintrin.devel.h
@@ -419,6 +419,42 @@ static inline float __attribute__((__always_inline__)) _mm_cvtss_f32(__m128 a)
return 0;
}
+static inline __m128 __attribute__((__always_inline__)) _mm_loadh_pi(__m128 a, __m64 const *p)
+{
+ return __builtin_ia32_loadhps(a, (__v2si *)p);
+}
+
+static inline __m128 __attribute__((__always_inline__)) _mm_loadl_pi(__m128 a, __m64 const *p)
+{
+ return __builtin_ia32_loadlps(a, (__v2si *)p);
+}
+
+static inline __m128 __attribute__((__always_inline__)) _mm_load_ss(float *p)
+{
+ return (__m128){ *p, 0, 0, 0 };
+}
+
+static inline __m128 __attribute__((__always_inline__)) _mm_load1_ps(float *p)
+{
+ return (__m128){ *p, *p, *p, *p };
+}
+
+static inline __m128 __attribute__((__always_inline__)) _mm_load_ps(float *p)
+{
+ return *(__m128*)p;
+}
+
+static inline __m128 __attribute__((__always_inline__)) _mm_loadu_ps(float *p)
+{
+ return __builtin_ia32_loadups(p);
+}
+
+static inline __m128 __attribute__((__always_inline__)) _mm_loadr_ps(float *p)
+{
+ __m128 a = _mm_load_ps(p);
+ return __builtin_shufflevector(a, a, 3, 2, 1, 0);
+}
+
#endif /* __SSE__ */
#endif /* __XMMINTRIN_H */