From: Michael Zuckerman Date: Wed, 27 Apr 2016 10:44:15 +0000 (+0000) Subject: [Clang][BuiltIn][AVX512]Adding intrinsics for vmovntdqa vmovntpd vmovntps instruction set X-Git-Tag: llvmorg-3.9.0-rc1~7795 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7c85a8cb46702e221f5d3eecc3c8e946b325eeb6;p=platform%2Fupstream%2Fllvm.git [Clang][BuiltIn][AVX512]Adding intrinsics for vmovntdqa vmovntpd vmovntps instruction set Differential Revision: http://reviews.llvm.org/D19529 llvm-svn: 267690 --- diff --git a/clang/include/clang/Basic/BuiltinsX86.def b/clang/include/clang/Basic/BuiltinsX86.def index f84cc85..b635c86 100644 --- a/clang/include/clang/Basic/BuiltinsX86.def +++ b/clang/include/clang/Basic/BuiltinsX86.def @@ -2185,6 +2185,10 @@ TARGET_BUILTIN(__builtin_ia32_kortestzhi, "iUsUs","","avx512f") TARGET_BUILTIN(__builtin_ia32_kunpckhi, "UsUsUs","","avx512f") TARGET_BUILTIN(__builtin_ia32_kxnorhi, "UsUsUs","","avx512f") TARGET_BUILTIN(__builtin_ia32_kxorhi, "UsUsUs","","avx512f") +TARGET_BUILTIN(__builtin_ia32_movntdq512, "vV8LLi*V8LLi","","avx512f") +TARGET_BUILTIN(__builtin_ia32_movntdqa512, "V8LLiV8LLi*","","avx512f") +TARGET_BUILTIN(__builtin_ia32_movntpd512, "vd*V8d","","avx512f") +TARGET_BUILTIN(__builtin_ia32_movntps512, "vf*V16f","","avx512f") #undef BUILTIN #undef TARGET_BUILTIN diff --git a/clang/lib/Headers/avx512fintrin.h b/clang/lib/Headers/avx512fintrin.h index 95934f7..41e4d3f 100644 --- a/clang/lib/Headers/avx512fintrin.h +++ b/clang/lib/Headers/avx512fintrin.h @@ -7324,6 +7324,30 @@ _mm512_kxor (__mmask16 __A, __mmask16 __B) return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B); } +static __inline__ void __DEFAULT_FN_ATTRS +_mm512_stream_si512 (__m512i * __P, __m512i __A) +{ + __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_stream_load_si512 (void *__P) +{ + return __builtin_ia32_movntdqa512 ((__v8di *)__P); +} + +static __inline__ void __DEFAULT_FN_ATTRS +_mm512_stream_pd (double *__P, __m512d __A) +{ + __builtin_ia32_movntpd512 (__P, (__v8df) __A); +} + +static __inline__ void __DEFAULT_FN_ATTRS +_mm512_stream_ps (float *__P, __m512 __A) +{ + __builtin_ia32_movntps512 (__P, (__v16sf) __A); +} + #undef __DEFAULT_FN_ATTRS #endif // __AVX512FINTRIN_H diff --git a/clang/test/CodeGen/avx512f-builtins.c b/clang/test/CodeGen/avx512f-builtins.c index 7be2207..28a7818 100644 --- a/clang/test/CodeGen/avx512f-builtins.c +++ b/clang/test/CodeGen/avx512f-builtins.c @@ -5053,3 +5053,28 @@ __mmask16 test_mm512_kxor(__mmask16 __A, __mmask16 __B) { // CHECK: @llvm.x86.avx512.kxor.w return _mm512_kxor(__A, __B); } + +void test_mm512_stream_si512(__m512i * __P, __m512i __A) { + // CHECK-LABEL: @test_mm512_stream_si512 + // CHECK: @llvm.x86.avx512.storent.q.512 + _mm512_stream_si512(__P, __A); +} + +__m512i test_mm512_stream_load_si512(void *__P) { + // CHECK-LABEL: @test_mm512_stream_load_si512 + // CHECK: @llvm.x86.avx512.movntdqa + return _mm512_stream_load_si512(__P); +} + +void test_mm512_stream_pd(double *__P, __m512d __A) { + // CHECK-LABEL: @test_mm512_stream_pd + // CHECK: @llvm.x86.avx512.storent.pd.512 + return _mm512_stream_pd(__P, __A); +} + +void test_mm512_stream_ps(float *__P, __m512 __A) { + // CHECK-LABEL: @test_mm512_stream_ps + // CHECK: @llvm.x86.avx512.storent.ps.512 + _mm512_stream_ps(__P, __A); +} +