[Bug target/91342] Incorrect parameter type for AVX512 streaming intrinsics.

2020-01-28 Thread jakub at gcc dot gnu.org
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.

2020-01-28 Thread marxin at gcc dot gnu.org
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.

2020-01-28 Thread jakub at gcc dot gnu.org
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.

2020-01-28 Thread marxin at gcc dot gnu.org
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.

2019-08-04 Thread a-yee at u dot northwestern.edu
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.

2019-08-04 Thread jakub at gcc dot gnu.org
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.