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

            Bug ID: 87467
           Summary: Incorrect function parameter for _mm512_abs_pd in
                    `include/avx512fintrin.h`
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: manodeep at gmail dot com
  Target Milestone: ---

While trying to compile an AVX512F kernel containing vector intrinsics, I
encountered a warning from gcc 7.3.0:

----
/apps/skylake/software/core/gcccore/7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/avx512fintrin.h:7301:1:
note: expected '__m512 {aka __vector(16) float}' but argument is of type
'__m512d {aka __vector(8) double}'
 _mm512_abs_pd (__m512 __A)
----

`_mm512_abs_pd` refers to the double precision vector registers
(https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_abs_pd&expand=5236,5298,54).
It looks like the bug is present in the new gcc-8 branch as well:
https://github.com/gcc-mirror/gcc/blob/gcc-8-branch/gcc/config/i386/avx512fintrin.h#L7730

Simply replacing  `_mm512_abs_pd (__m512 __A)` with  `_mm512_abs_pd (__m512d
__A)` should fix the problem. 


Please let me know if you need any further info. 

Cheers,
Dr. Manodeep Sinha,
Centre for Astrophysics & Supercomputing,
Swinburne University of Technology,
Hawthorn, VIC 3122.

Reply via email to