[Bug target/91342] Incorrect parameter type for AVX512 streaming intrinsics.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91342 --- Comment #6 from Jakub Jelinek --- H.J. is on CC.
[Bug target/91342] Incorrect parameter type for AVX512 streaming intrinsics.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91342 --- Comment #5 from Martin Liška --- (In reply to Jakub Jelinek from comment #4) > Intel needs to decide what is right. Do we have a way how to report the issue to them?
[Bug target/91342] Incorrect parameter type for AVX512 streaming intrinsics.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91342 --- Comment #4 from Jakub Jelinek --- Intel needs to decide what is right.
[Bug target/91342] Incorrect parameter type for AVX512 streaming intrinsics.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91342 Martin Liška changed: What|Removed |Added Status|UNCONFIRMED |WAITING Last reconfirmed||2020-01-28 CC||marxin at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #3 from Martin Liška --- @Jakub: What can we do with this one?
[Bug target/91342] Incorrect parameter type for AVX512 streaming intrinsics.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91342 --- Comment #2 from Alex Yee --- Oh I didn't realize Intel's docs were conflicting. I think most people just use the interactive intrinsics guide. MSVC and Intel's own compiler implement the void* variants. Thus, this comes up when porting code coming from those.
[Bug target/91342] Incorrect parameter type for AVX512 streaming intrinsics.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91342 Jakub Jelinek changed: What|Removed |Added CC||hjl.tools at gmail dot com, ||jakub at gcc dot gnu.org --- Comment #1 from Jakub Jelinek --- Intel intrinsics are in constant flux. E.g. the manual (325462-sdm-vol-1-2abcd-3abcd.pdf) documents them as taking Intel C/C++ Compiler Intrinsic Equivalent VMOVNTDQA __m512i _mm512_stream_load_si512(void * p); MOVNTDQA __m128i _mm_stream_load_si128 (__m128i *p); VMOVNTDQA __m256i _mm_stream_load_si256 (__m256i *p); VMOVNTDQ void _mm512_stream_si512(void * p, __m512i a); VMOVNTDQ void _mm256_stream_si256 (__m256i * p, __m256i a); MOVNTDQ void _mm_stream_si128 (__m128i * p, __m128i a); VMOVNTPD void _mm512_stream_pd(double * p, __m512d a); VMOVNTPD void _mm256_stream_pd (double * p, __m256d a); MOVNTPD void _mm_stream_pd (double * p, __m128d a); VMOVNTPS void _mm512_stream_ps(float * p, __m512d a); MOVNTPS void _mm_stream_ps (float * p, __m128d a); VMOVNTPS void _mm256_stream_ps (float * p, __m256 a); That is what GCC implements. CLANG does the same thing, except uses _mm512_stream_load_si512 (void const *__P) https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_stream_=5670 documents them with void * instead.