Commit 8ab1df52 by Segher Boessenkool Committed by Segher Boessenkool

rs6000: Fix _mm_movemask_pi8 emulation for 32 bit


	* config/rs6000/xmmintrin.h (_mm_movemask_pi8): Implement for 32-bit
	big endian.

From-SVN: r269891
parent 27f18a62
2019-03-23 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/xmmintrin.h (_mm_movemask_pi8): Implement for 32-bit
big endian.
2019-03-22 Andrew Pinski <apinski@marvell.com> 2019-03-22 Andrew Pinski <apinski@marvell.com>
* config/aarch64/aarch64.md (zero_extendsidi2_aarch64): Fix type * config/aarch64/aarch64.md (zero_extendsidi2_aarch64): Fix type
......
...@@ -1586,9 +1586,15 @@ _mm_movemask_pi8 (__m64 __A) ...@@ -1586,9 +1586,15 @@ _mm_movemask_pi8 (__m64 __A)
#endif #endif
return __builtin_bpermd (p, __A); return __builtin_bpermd (p, __A);
#else #else
#ifdef __LITTLE_ENDIAN__
unsigned int mask = 0x20283038UL; unsigned int mask = 0x20283038UL;
unsigned int r1 = __builtin_bpermd (mask, __A) & 0xf; unsigned int r1 = __builtin_bpermd (mask, __A) & 0xf;
unsigned int r2 = __builtin_bpermd (mask, __A >> 32) & 0xf; unsigned int r2 = __builtin_bpermd (mask, __A >> 32) & 0xf;
#else
unsigned int mask = 0x38302820UL;
unsigned int r1 = __builtin_bpermd (mask, __A >> 32) & 0xf;
unsigned int r2 = __builtin_bpermd (mask, __A) & 0xf;
#endif
return (r2 << 4) | r1; return (r2 << 4) | r1;
#endif #endif
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment