diff options
| author | Craig Topper <craig.topper@intel.com> | 2018-10-20 19:28:52 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2018-10-20 19:28:52 +0000 |
| commit | eae26bf73715994c2bd145f9b6dc3836aa4ffd4f (patch) | |
| tree | 058f60bd6d36955dbcddfc4a0aabfd8c27e4635e /clang/test/CodeGen | |
| parent | 58508be3c01db0a6b544d47dff3150b626d7b604 (diff) | |
| download | bcm5719-llvm-eae26bf73715994c2bd145f9b6dc3836aa4ffd4f.tar.gz bcm5719-llvm-eae26bf73715994c2bd145f9b6dc3836aa4ffd4f.zip | |
[X86] Add more intrinsics to match icc.
This adds
_mm_loadu_epi8, _mm256_loadu_epi8, _mm512_loadu_epi8
_mm_loadu_epi16, _mm256_loadu_epi16, _mm512_loadu_epi16
_mm_storeu_epi8, _mm256_storeu_epi8, _mm512_storeu_epi8
_mm_storeu_epi16, _mm256_storeu_epi16, _mm512_storeu_epi16
llvm-svn: 344862
Diffstat (limited to 'clang/test/CodeGen')
| -rw-r--r-- | clang/test/CodeGen/avx512bw-builtins.c | 30 | ||||
| -rw-r--r-- | clang/test/CodeGen/avx512vl-builtins.c | 8 | ||||
| -rw-r--r-- | clang/test/CodeGen/avx512vlbw-builtins.c | 48 |
3 files changed, 81 insertions, 5 deletions
diff --git a/clang/test/CodeGen/avx512bw-builtins.c b/clang/test/CodeGen/avx512bw-builtins.c index 01476c9e89c..d22bc7b5a39 100644 --- a/clang/test/CodeGen/avx512bw-builtins.c +++ b/clang/test/CodeGen/avx512bw-builtins.c @@ -2112,6 +2112,13 @@ __mmask32 test_mm512_kunpackw(__m512i __A, __m512i __B, __m512i __C, __m512i __D return _mm512_mask_cmpneq_epu16_mask(_mm512_kunpackw(_mm512_cmpneq_epu16_mask(__B, __A),_mm512_cmpneq_epu16_mask(__C, __D)), __E, __F); } +__m512i test_mm512_loadu_epi16 (void *__P) +{ + // CHECK-LABEL: @test_mm512_loadu_epi16 + // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}} + return _mm512_loadu_epi16 (__P); +} + __m512i test_mm512_mask_loadu_epi16(__m512i __W, __mmask32 __U, void const *__P) { // CHECK-LABEL: @test_mm512_mask_loadu_epi16 // CHECK: @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i16> %{{.*}}) @@ -2124,6 +2131,13 @@ __m512i test_mm512_maskz_loadu_epi16(__mmask32 __U, void const *__P) { return _mm512_maskz_loadu_epi16(__U, __P); } +__m512i test_mm512_loadu_epi8 (void *__P) +{ + // CHECK-LABEL: @test_mm512_loadu_epi8 + // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}} + return _mm512_loadu_epi8 (__P); +} + __m512i test_mm512_mask_loadu_epi8(__m512i __W, __mmask64 __U, void const *__P) { // CHECK-LABEL: @test_mm512_mask_loadu_epi8 // CHECK: @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}, <64 x i8> %{{.*}}) @@ -2135,11 +2149,19 @@ __m512i test_mm512_maskz_loadu_epi8(__mmask64 __U, void const *__P) { // CHECK: @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}, <64 x i8> %{{.*}}) return _mm512_maskz_loadu_epi8(__U, __P); } + +void test_mm512_storeu_epi16(void *__P, __m512i __A) { + // CHECK-LABEL: @test_mm512_storeu_epi16 + // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}} + return _mm512_storeu_epi16(__P, __A); +} + void test_mm512_mask_storeu_epi16(void *__P, __mmask32 __U, __m512i __A) { // CHECK-LABEL: @test_mm512_mask_storeu_epi16 // CHECK: @llvm.masked.store.v32i16.p0v32i16(<32 x i16> %{{.*}}, <32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}) - return _mm512_mask_storeu_epi16(__P, __U, __A); + return _mm512_mask_storeu_epi16(__P, __U, __A); } + __mmask64 test_mm512_test_epi8_mask(__m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_test_epi8_mask // CHECK: and <16 x i32> %{{.*}}, %{{.*}} @@ -2147,6 +2169,12 @@ __mmask64 test_mm512_test_epi8_mask(__m512i __A, __m512i __B) { return _mm512_test_epi8_mask(__A, __B); } +void test_mm512_storeu_epi8(void *__P, __m512i __A) { + // CHECK-LABEL: @test_mm512_storeu_epi8 + // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}} + return _mm512_storeu_epi8(__P, __A); +} + void test_mm512_mask_storeu_epi8(void *__P, __mmask64 __U, __m512i __A) { // CHECK-LABEL: @test_mm512_mask_storeu_epi8 // CHECK: @llvm.masked.store.v64i8.p0v64i8(<64 x i8> %{{.*}}, <64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}) diff --git a/clang/test/CodeGen/avx512vl-builtins.c b/clang/test/CodeGen/avx512vl-builtins.c index 181238600e4..57931ca4376 100644 --- a/clang/test/CodeGen/avx512vl-builtins.c +++ b/clang/test/CodeGen/avx512vl-builtins.c @@ -7052,10 +7052,10 @@ void test_mm256_mask_store_ps(void *__P, __mmask8 __U, __m256 __A) { return _mm256_mask_store_ps(__P, __U, __A); } -void test_mm_storeu_epi64(void *__P, __m128i __A) { - // CHECK-LABEL: @test_mm_storeu_epi64 - // CHECK: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}} - return _mm_storeu_epi64(__P, __A); +void test_mm_storeu_epi64(void *__p, __m128i __a) { + // check-label: @test_mm_storeu_epi64 + // check: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}} + return _mm_storeu_epi64(__p, __a); } void test_mm_mask_storeu_epi64(void *__P, __mmask8 __U, __m128i __A) { diff --git a/clang/test/CodeGen/avx512vlbw-builtins.c b/clang/test/CodeGen/avx512vlbw-builtins.c index 06fa935acc5..06a48b5b27f 100644 --- a/clang/test/CodeGen/avx512vlbw-builtins.c +++ b/clang/test/CodeGen/avx512vlbw-builtins.c @@ -2465,6 +2465,12 @@ __m256i test_mm256_maskz_mov_epi8(__mmask32 __U, __m256i __A) { return _mm256_maskz_mov_epi8(__U, __A); } +__m128i test_mm_loadu_epi16(void const *__P) { + // CHECK-LABEL: @test_mm_loadu_epi16 + // CHECK: load <2 x i64>, <2 x i64>* %{{.*}}, align 1{{$}} + return _mm_loadu_epi16(__P); +} + __m128i test_mm_mask_loadu_epi16(__m128i __W, __mmask8 __U, void const *__P) { // CHECK-LABEL: @test_mm_mask_loadu_epi16 // CHECK: @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i16> %{{.*}}) @@ -2477,6 +2483,12 @@ __m128i test_mm_maskz_loadu_epi16(__mmask8 __U, void const *__P) { return _mm_maskz_loadu_epi16(__U, __P); } +__m256i test_mm256_loadu_epi16(void const *__P) { + // CHECK-LABEL: @test_mm256_loadu_epi16 + // CHECK: load <4 x i64>, <4 x i64>* %{{.*}}, align 1{{$}} + return _mm256_loadu_epi16(__P); +} + __m256i test_mm256_mask_loadu_epi16(__m256i __W, __mmask16 __U, void const *__P) { // CHECK-LABEL: @test_mm256_mask_loadu_epi16 // CHECK: @llvm.masked.load.v16i16.p0v16i16(<16 x i16>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i16> %{{.*}}) @@ -2489,6 +2501,12 @@ __m256i test_mm256_maskz_loadu_epi16(__mmask16 __U, void const *__P) { return _mm256_maskz_loadu_epi16(__U, __P); } +__m128i test_mm_loadu_epi8(void const *__P) { + // CHECK-LABEL: @test_mm_loadu_epi8 + // CHECK: load <2 x i64>, <2 x i64>* %{{.*}}, align 1{{$}} + return _mm_loadu_epi8(__P); +} + __m128i test_mm_mask_loadu_epi8(__m128i __W, __mmask16 __U, void const *__P) { // CHECK-LABEL: @test_mm_mask_loadu_epi8 // CHECK: @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i8> %{{.*}}) @@ -2501,6 +2519,12 @@ __m128i test_mm_maskz_loadu_epi8(__mmask16 __U, void const *__P) { return _mm_maskz_loadu_epi8(__U, __P); } +__m256i test_mm256_loadu_epi8(void const *__P) { + // CHECK-LABEL: @test_mm256_loadu_epi8 + // CHECK: load <4 x i64>, <4 x i64>* %{{.*}}, align 1{{$}} + return _mm256_loadu_epi8(__P); +} + __m256i test_mm256_mask_loadu_epi8(__m256i __W, __mmask32 __U, void const *__P) { // CHECK-LABEL: @test_mm256_mask_loadu_epi8 // CHECK: @llvm.masked.load.v32i8.p0v32i8(<32 x i8>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i8> %{{.*}}) @@ -2513,24 +2537,48 @@ __m256i test_mm256_maskz_loadu_epi8(__mmask32 __U, void const *__P) { return _mm256_maskz_loadu_epi8(__U, __P); } +void test_mm_storeu_epi16(void *__p, __m128i __a) { + // check-label: @test_mm_storeu_epi16 + // check: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}} + return _mm_storeu_epi16(__p, __a); +} + void test_mm_mask_storeu_epi16(void *__P, __mmask8 __U, __m128i __A) { // CHECK-LABEL: @test_mm_mask_storeu_epi16 // CHECK: @llvm.masked.store.v8i16.p0v8i16(<8 x i16> %{{.*}}, <8 x i16>* %{{.*}}, i32 1, <8 x i1> %{{.*}}) return _mm_mask_storeu_epi16(__P, __U, __A); } +void test_mm256_storeu_epi16(void *__P, __m256i __A) { + // CHECK-LABEL: @test_mm256_storeu_epi16 + // CHECK: store <4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, align 1{{$}} + return _mm256_storeu_epi16(__P, __A); +} + void test_mm256_mask_storeu_epi16(void *__P, __mmask16 __U, __m256i __A) { // CHECK-LABEL: @test_mm256_mask_storeu_epi16 // CHECK: @llvm.masked.store.v16i16.p0v16i16(<16 x i16> %{{.*}}, <16 x i16>* %{{.*}}, i32 1, <16 x i1> %{{.*}}) return _mm256_mask_storeu_epi16(__P, __U, __A); } +void test_mm_storeu_epi8(void *__p, __m128i __a) { + // check-label: @test_mm_storeu_epi8 + // check: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}} + return _mm_storeu_epi8(__p, __a); +} + void test_mm_mask_storeu_epi8(void *__P, __mmask16 __U, __m128i __A) { // CHECK-LABEL: @test_mm_mask_storeu_epi8 // CHECK: @llvm.masked.store.v16i8.p0v16i8(<16 x i8> %{{.*}}, <16 x i8>* %{{.*}}, i32 1, <16 x i1> %{{.*}}) return _mm_mask_storeu_epi8(__P, __U, __A); } +void test_mm256_storeu_epi8(void *__P, __m256i __A) { + // CHECK-LABEL: @test_mm256_storeu_epi8 + // CHECK: store <4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, align 1{{$}} + return _mm256_storeu_epi8(__P, __A); +} + void test_mm256_mask_storeu_epi8(void *__P, __mmask32 __U, __m256i __A) { // CHECK-LABEL: @test_mm256_mask_storeu_epi8 // CHECK: @llvm.masked.store.v32i8.p0v32i8(<32 x i8> %{{.*}}, <32 x i8>* %{{.*}}, i32 1, <32 x i1> %{{.*}}) |

