diff options
author | Asaf Badouh <asaf.badouh@intel.com> | 2016-06-26 13:51:54 +0000 |
---|---|---|
committer | Asaf Badouh <asaf.badouh@intel.com> | 2016-06-26 13:51:54 +0000 |
commit | ef08168fd27c12796280b03994ae9bbb53ed2953 (patch) | |
tree | 5cd88d52ef5de625a05bfa6f386090903fbae790 | |
parent | 116ce8458879ac0721cfd7badfd4c3868ed2da78 (diff) |
[X86] add _mm_loadu_si64
Differential Revision: http://reviews.llvm.org/D21504
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@273812 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Headers/emmintrin.h | 10 | ||||
-rw-r--r-- | test/CodeGen/sse2-builtins.c | 9 |
2 files changed, 19 insertions, 0 deletions
diff --git a/lib/Headers/emmintrin.h b/lib/Headers/emmintrin.h index 0c2c8546ac..22eb02c691 100644 --- a/lib/Headers/emmintrin.h +++ b/lib/Headers/emmintrin.h @@ -505,6 +505,16 @@ _mm_loadu_pd(double const *__dp) return ((struct __loadu_pd*)__dp)->__v; } +static __inline__ __m128i __DEFAULT_FN_ATTRS +_mm_loadu_si64(void const *__a) +{ + struct __loadu_si64 { + long long __v; + } __attribute__((__packed__, __may_alias__)); + long long __u = ((struct __loadu_si64*)__a)->__v; + return (__m128i){__u, 0L}; +} + static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_load_sd(double const *__dp) { diff --git a/test/CodeGen/sse2-builtins.c b/test/CodeGen/sse2-builtins.c index 782dbee1a3..d5aae2276a 100644 --- a/test/CodeGen/sse2-builtins.c +++ b/test/CodeGen/sse2-builtins.c @@ -1532,3 +1532,12 @@ __m128i test_mm_xor_si128(__m128i A, __m128i B) { // CHECK: xor <2 x i64> %{{.*}}, %{{.*}} return _mm_xor_si128(A, B); } + +__m128i test_mm_loadu_si64(void const* A) { + // CHECK-LABEL: test_mm_loadu_si64 + // CHECK: load i64, i64* %{{.*}}, align 1{{$}} + // CHECK: insertelement <2 x i64> undef, i64 %{{.*}}, i32 0 + // CHECK: insertelement <2 x i64> %{{.*}}, i64 0, i32 1 + return _mm_loadu_si64(A); +} + |