https://gcc.gnu.org/bugzilla/show_bug.cgi?id=76731

            Bug ID: 76731
           Summary: [AVX512] _mm512_i32gather_epi32 and other
                    scatter/gather routines have incorrect signature
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: wen...@mitsuba-renderer.org
  Target Milestone: ---

All of the scatter/gather intrinsics in avx512intrin.h use int/float/double
pointers, which is incorrect.

For intsance:

extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_i32gather_epi32 (__m512i __index, int const *__addr, int __scale)

These should use void*/const void* pointers according to Intel (see e.g.
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_i32gather_epi32&expand=2778,2777)

This is a departure from prior mask/gather intrinsics, where type information
turned out to be a bad idea for various reasons (e.g. aliasing analysis)

Reply via email to