diff options
| author | Filipe Cabecinhas <me@filcab.net> | 2015-02-19 03:02:33 +0000 |
|---|---|---|
| committer | Filipe Cabecinhas <me@filcab.net> | 2015-02-19 03:02:33 +0000 |
| commit | 54a2ba8b76dee612ede3b873834360e0a39fd9d8 (patch) | |
| tree | 9dfcf08374cba00e618e1c25581617c872512e56 /clang | |
| parent | 2d38959cd95cbea4791f11222d29b8677701064c (diff) | |
| download | bcm5719-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.h | 2 | ||||
| -rw-r--r-- | clang/test/CodeGen/avx-builtins.c | 24 |
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); +} |

