From d04eb5b33deee850e955748729953769a1a42e52 Mon Sep 17 00:00:00 2001 From: Pengfei Wang Date: Tue, 3 Sep 2019 02:06:15 +0000 Subject: [PATCH] [x86] Fix bugs of some intrinsic functions in CLANG : _mm512_stream_ps, _mm512_stream_pd, _mm512_stream_si512 Reviewers: craig.topper, pengfei, LuoYuanke, RKSimon, spatel Reviewed By: RKSimon Subscribers: llvm-commits Patch by Bing Yu (yubing) Differential Revision: https://reviews.llvm.org/D66786 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@370691 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Headers/avx512fintrin.h | 6 +++--- test/CodeGen/avx512f-builtins.c | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/lib/Headers/avx512fintrin.h b/lib/Headers/avx512fintrin.h index 5748c1ea6e..4e341a10fa 100644 --- a/lib/Headers/avx512fintrin.h +++ b/lib/Headers/avx512fintrin.h @@ -8436,7 +8436,7 @@ _store_mask16(__mmask16 *__A, __mmask16 __B) { } static __inline__ void __DEFAULT_FN_ATTRS512 -_mm512_stream_si512 (__m512i * __P, __m512i __A) +_mm512_stream_si512 (void * __P, __m512i __A) { typedef __v8di __v8di_aligned __attribute__((aligned(64))); __builtin_nontemporal_store((__v8di_aligned)__A, (__v8di_aligned*)__P); @@ -8450,14 +8450,14 @@ _mm512_stream_load_si512 (void const *__P) } static __inline__ void __DEFAULT_FN_ATTRS512 -_mm512_stream_pd (double *__P, __m512d __A) +_mm512_stream_pd (void *__P, __m512d __A) { typedef __v8df __v8df_aligned __attribute__((aligned(64))); __builtin_nontemporal_store((__v8df_aligned)__A, (__v8df_aligned*)__P); } static __inline__ void __DEFAULT_FN_ATTRS512 -_mm512_stream_ps (float *__P, __m512 __A) +_mm512_stream_ps (void *__P, __m512 __A) { typedef __v16sf __v16sf_aligned __attribute__((aligned(64))); __builtin_nontemporal_store((__v16sf_aligned)__A, (__v16sf_aligned*)__P); diff --git a/test/CodeGen/avx512f-builtins.c b/test/CodeGen/avx512f-builtins.c index aaf3157c08..2a083e3e5c 100644 --- a/test/CodeGen/avx512f-builtins.c +++ b/test/CodeGen/avx512f-builtins.c @@ -8575,6 +8575,12 @@ void test_mm512_stream_si512(__m512i * __P, __m512i __A) { _mm512_stream_si512(__P, __A); } +void test_mm512_stream_si512_2(void * __P, __m512i __A) { + // CHECK-LABEL: @test_mm512_stream_si512 + // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 64, !nontemporal + _mm512_stream_si512(__P, __A); +} + __m512i test_mm512_stream_load_si512(void *__P) { // CHECK-LABEL: @test_mm512_stream_load_si512 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 64, !nontemporal @@ -8593,12 +8599,23 @@ void test_mm512_stream_pd(double *__P, __m512d __A) { return _mm512_stream_pd(__P, __A); } +void test_mm512_stream_pd_2(void *__P, __m512d __A) { + // CHECK-LABEL: @test_mm512_stream_pd + // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 64, !nontemporal + return _mm512_stream_pd(__P, __A); +} + void test_mm512_stream_ps(float *__P, __m512 __A) { // CHECK-LABEL: @test_mm512_stream_ps // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 64, !nontemporal _mm512_stream_ps(__P, __A); } +void test_mm512_stream_ps_2(void *__P, __m512 __A) { + // CHECK-LABEL: @test_mm512_stream_ps + // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 64, !nontemporal + _mm512_stream_ps(__P, __A); +} __m512d test_mm512_mask_compress_pd(__m512d __W, __mmask8 __U, __m512d __A) { // CHECK-LABEL: @test_mm512_mask_compress_pd // CHECK: @llvm.x86.avx512.mask.compress -- 2.40.0