[llvm-dev] r267690 - [Clang][BuiltIn][AVX512]Adding intrinsics for vmovntdqa vmovntpd vmovntps instruction set
Zuckerman, Michael via llvm-dev
llvm-dev at lists.llvm.org
Sun May 1 06:04:14 PDT 2016
Hi,
For now no.
But I will add this three builtins to CGBuiltin.cpp.
If you want, you can be a reviewer of this change.
Regards
Michael Zuckerman
From: Craig Topper [mailto:craig.topper at gmail.com]
Sent: Thursday, April 28, 2016 04:53
To: Zuckerman, Michael <michael.zuckerman at intel.com>
Subject: Re: r267690 - [Clang][BuiltIn][AVX512]Adding intrinsics for vmovntdqa vmovntpd vmovntps instruction set
Can we use native IR for the stores the way the 128-bit and 256-bit equivalents do?
On Wed, Apr 27, 2016 at 3:44 AM, Michael Zuckerman via cfe-commits <cfe-commits at lists.llvm.org<mailto:cfe-commits at lists.llvm.org>> wrote:
Author: mzuckerm
Date: Wed Apr 27 05:44:15 2016
New Revision: 267690
URL: http://llvm.org/viewvc/llvm-project?rev=267690&view=rev
Log:
[Clang][BuiltIn][AVX512]Adding intrinsics for vmovntdqa vmovntpd vmovntps instruction set
Differential Revision: http://reviews.llvm.org/D19529
Modified:
cfe/trunk/include/clang/Basic/BuiltinsX86.def
cfe/trunk/lib/Headers/avx512fintrin.h
cfe/trunk/test/CodeGen/avx512f-builtins.c
Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=267690&r1=267689&r2=267690&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Wed Apr 27 05:44:15 2016
@@ -2185,6 +2185,10 @@ TARGET_BUILTIN(__builtin_ia32_kortestzhi
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
Modified: cfe/trunk/lib/Headers/avx512fintrin.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx512fintrin.h?rev=267690&r1=267689&r2=267690&view=diff
==============================================================================
--- cfe/trunk/lib/Headers/avx512fintrin.h (original)
+++ cfe/trunk/lib/Headers/avx512fintrin.h Wed Apr 27 05:44:15 2016
@@ -7324,6 +7324,30 @@ _mm512_kxor (__mmask16 __A, __mmask16 __
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
Modified: cfe/trunk/test/CodeGen/avx512f-builtins.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512f-builtins.c?rev=267690&r1=267689&r2=267690&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/avx512f-builtins.c (original)
+++ cfe/trunk/test/CodeGen/avx512f-builtins.c Wed Apr 27 05:44:15 2016
@@ -5053,3 +5053,28 @@ __mmask16 test_mm512_kxor(__mmask16 __A,
// 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);
+}
+
_______________________________________________
cfe-commits mailing list
cfe-commits at lists.llvm.org<mailto:cfe-commits at lists.llvm.org>
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
--
~Craig
---------------------------------------------------------------------
Intel Israel (74) Limited
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160501/ae6e5693/attachment.html>
More information about the llvm-dev
mailing list