Skip to content
Snippets Groups Projects
Commit ef08168f authored by Asaf Badouh's avatar Asaf Badouh
Browse files

[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
parent 116ce845
No related branches found
No related tags found
No related merge requests found
...@@ -505,6 +505,16 @@ _mm_loadu_pd(double const *__dp) ...@@ -505,6 +505,16 @@ _mm_loadu_pd(double const *__dp)
return ((struct __loadu_pd*)__dp)->__v; 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 static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_load_sd(double const *__dp) _mm_load_sd(double const *__dp)
{ {
......
...@@ -1532,3 +1532,12 @@ __m128i test_mm_xor_si128(__m128i A, __m128i B) { ...@@ -1532,3 +1532,12 @@ __m128i test_mm_xor_si128(__m128i A, __m128i B) {
// CHECK: xor <2 x i64> %{{.*}}, %{{.*}} // CHECK: xor <2 x i64> %{{.*}}, %{{.*}}
return _mm_xor_si128(A, B); 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);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment