[Bug target/88316] numerous big-endian issues with compatibility implementations of vector intrinsics for powerpc

pc at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Dec 6 22:04:00 GMT 2018


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

--- Comment #1 from pc at gcc dot gnu.org ---
Author: pc
Date: Thu Dec  6 22:03:25 2018
New Revision: 266868

URL: https://gcc.gnu.org/viewcvs?rev=266868&root=gcc&view=rev
Log:
[rs6000] x86-compat vector intrinsics fixes for BE, 32bit

Fix general endian and 32-bit mode issues found in the
compatibility implementations of the x86 vector intrinsics when running the
associated test suite tests.  (The tests had been inadvertently made to PASS
without actually running the test code.  A later patch fixes this issue.)

2018-12-03  Paul A. Clarke  <pc@us.ibm.com>

        PR target/88316
        * config/rs6000/mmintrin.h (_mm_unpackhi_pi8): Fix for big-endian.
        (_mm_unpacklo_pi8): Likewise.
        (_mm_mulhi_pi16): Likewise.
        (_mm_packs_pi16): Fix for big-endian. Use preferred API.
        (_mm_packs_pi32): Likewise.
        (_mm_packs_pu16): Likewise.
        * config/rs6000/xmmintrin.h (_mm_cvtss_si32): Fix for big-endian.
        (_mm_cvtss_si64): Likewise.
        (_mm_cvtpi32x2_ps): Likewise.
        (_mm_shuffle_ps): Likewise.
        (_mm_movemask_pi8): Likewise.
        (_mm_mulhi_pu16): Likewise.
        (_mm_sad_pu8): Likewise.
        (_mm_sad_pu8): Likewise.
        (_mm_cvtpu16_ps): Fix for big-endian. Use preferred API.
        (_mm_cvtpu8_ps): Likewise.
        (_mm_movemask_ps): Better #else case for big-endian (no functional
        change).
        (_mm_shuffle_pi16): Likewise.
        * config/rs6000/emmintrin.h (_mm_movemask_pd): Fix for big-endian.
        Better #else case for big-endian (no functional change).
        (_mm_movemask_epi8): Likewise.
        (_mm_shufflehi_epi16): Likewise.
        (_mm_shufflelo_epi16): Likewise.
        (_mm_shuffle_epi32): Likewise.
        (_mm_mul_epu32): Fix for big-endian.
        (_mm_bsrli_si128): Likewise.
        (_mm_cvtps_pd): Better #else case for big endian.
        (_mm_mulhi_epi16): Likewise.
        (_mm_mul_epu32): Likewise.
        (_mm_slli_si128): Likewise.
        (_mm_sll_epi16): Likewise.
        (_mm_sll_epi32): Likewise.
        (_mm_sra_epi16): Likewise.
        (_mm_sra_epi32): Likewise.
        (_mm_srl_epi16): Likewise.
        (_mm_srl_epi32): Likewise.
        (_mm_mulhi_epu16): Likewise.
        (_mm_sad_epu8): Likewise.
        * config/rs6000/pmmintrin.h (_mm_hadd_ps): Fix for big-endian.
        (_mm_sub_ps): Likewise.
        * config/rs6000/mmintrin.h (_mm_cmpeq_pi8): Fix for 32-bit mode.
        * gcc/config/rs6000/tmmintrin.h (_mm_alignr_epi8): Use ENDIAN
        macros consistently (no functional changes).
        (_mm_alignr_pi8): Likewise.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/rs6000/emmintrin.h
    trunk/gcc/config/rs6000/mmintrin.h
    trunk/gcc/config/rs6000/pmmintrin.h
    trunk/gcc/config/rs6000/tmmintrin.h
    trunk/gcc/config/rs6000/xmmintrin.h


More information about the Gcc-bugs mailing list