summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorFilipe Cabecinhas <me@filcab.net>2015-02-19 03:02:33 +0000
committerFilipe Cabecinhas <me@filcab.net>2015-02-19 03:02:33 +0000
commit54a2ba8b76dee612ede3b873834360e0a39fd9d8 (patch)
tree9dfcf08374cba00e618e1c25581617c872512e56 /clang
parent2d38959cd95cbea4791f11222d29b8677701064c (diff)
downloadbcm5719-llvm-54a2ba8b76dee612ede3b873834360e0a39fd9d8.tar.gz
bcm5719-llvm-54a2ba8b76dee612ede3b873834360e0a39fd9d8.zip
[Headers] Add tests for _mm256_insert_epi64 and fix its definition
Summary: The definition for _mm256_insert_epi64 was taking an int, which would get truncated before being inserted in the vector. Original patch by Joshua Magee! Reviewers: bruno, craig.topper Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D7179 llvm-svn: 229811
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Headers/avxintrin.h2
-rw-r--r--clang/test/CodeGen/avx-builtins.c24
2 files changed, 25 insertions, 1 deletions
diff --git a/clang/lib/Headers/avxintrin.h b/clang/lib/Headers/avxintrin.h
index a40c2335bd1..aaca7e1a111 100644
--- a/clang/lib/Headers/avxintrin.h
+++ b/clang/lib/Headers/avxintrin.h
@@ -514,7 +514,7 @@ _mm256_insert_epi8(__m256i __a, int __b, int const __imm)
#ifdef __x86_64__
static __inline __m256i __attribute__((__always_inline__, __nodebug__))
-_mm256_insert_epi64(__m256i __a, int __b, int const __imm)
+_mm256_insert_epi64(__m256i __a, long __b, int const __imm)
{
__v4di __c = (__v4di)__a;
__c[__imm & 3] = __b;
diff --git a/clang/test/CodeGen/avx-builtins.c b/clang/test/CodeGen/avx-builtins.c
index 5b5b6a56b4b..28e11baeb72 100644
--- a/clang/test/CodeGen/avx-builtins.c
+++ b/clang/test/CodeGen/avx-builtins.c
@@ -123,3 +123,27 @@ __m256 test_256_blend_ps(__m256 __a, __m256 __b) {
// CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 8, i32 1, i32 10, i32 3, i32 12, i32 13, i32 6, i32 7>
return _mm256_blend_ps(__a, __b, 0x35);
}
+
+__m256i test_256_insert_epi8(__m256i __a) {
+ // CHECK-LABEL: @test_256_insert_epi8
+ // CHECK: insertelement <32 x i8> {{.*}}, i8 {{.*}}, i32 {{.*}}
+ return _mm256_insert_epi8(__a, 42, 3);
+}
+
+__m256i test_256_insert_epi16(__m256i __a) {
+ // CHECK-LABEL: @test_256_insert_epi16
+ // CHECK: insertelement <16 x i16> {{.*}}, i16 {{.*}}, i32 {{.*}}
+ return _mm256_insert_epi16(__a, 42, 3);
+}
+
+__m256i test_256_insert_epi32(__m256i __a) {
+ // CHECK-LABEL: @test_256_insert_epi32
+ // CHECK: insertelement <8 x i32> {{.*}}, i32 {{.*}}, i32 {{.*}}
+ return _mm256_insert_epi32(__a, 42, 3);
+}
+
+__m256i test_256_insert_epi64(__m256i __a) {
+ // CHECK-LABEL: @test_256_insert_epi64
+ // CHECK: insertelement <4 x i64> {{.*}}, i64 {{.*}}, i32 {{.*}}
+ return _mm256_insert_epi64(__a, 42, 3);
+}
OpenPOWER on IntegriCloud