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>
* config/aarch64/aarch64.md (zero_extendsidi2_aarch64): Fix type
......
......@@ -1586,9 +1586,15 @@ _mm_movemask_pi8 (__m64 __A)
#endif
return __builtin_bpermd (p, __A);
#else
#ifdef __LITTLE_ENDIAN__
unsigned int mask = 0x20283038UL;
unsigned int r1 = __builtin_bpermd (mask, __A) & 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;
#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