glibc/sysdeps
Gabriel F. T. Gomes 4d98ace9de powerpc: Restrict xssqrtqp operands to Vector Registers (bug 21941)
POWER ISA 3.0 introduces the xssqrtqp instructions, which expects
operands to be in Vector Registers (Altivec/VMX), even though this
instruction belongs to the Vector-Scalar Instruction Set.

In GCC's Extended Assembly for POWER, the 'wq' register constraint is
provided for use with IEEE 754 128-bit floating-point values.  However,
this constraint does not limit the register allocation to Vector
Registers (Altivec/VMX) and could assign a Vector-Scalar Register (VSX)
to the operands of the instruction.

This patch changes the register constraint used in sqrtf128 from 'wq' to
'v', in order to request a Vector Register (Altivec/VMX) for use with
the xssqrtqp instruction.

Tested for powerpc64le and --with-cpu=power9.

	[BZ #21941]
	* sysdeps/powerpc/fpu/math_private.h (__ieee754_sqrtf128): Since
	xssqrtqp requires operands to be in Vector Registers
	(Altivec/VMX), replace the register constraint 'wq' with 'v'.
	* sysdeps/powerpc/powerpc64le/power9/fpu/e_sqrtf128.c
	(__ieee754_sqrtf128): Likewise.
2017-08-10 16:10:21 -03:00
..
aarch64 [AArch64] Optimized memcmp. 2017-08-10 17:00:38 +01:00
alpha Update Alpha libm-test-ulps 2017-07-27 14:21:28 -03:00
arm Fix uc_* namespace (bug 21457). 2017-08-09 17:51:26 +00:00
generic ld.so: Introduce struct dl_exception 2017-08-10 16:54:57 +02:00
gnu Regenerate sysdeps/gnu/errlist.c. 2017-06-04 15:27:14 -04:00
hppa Remove extra semicolons in struct pthread_mutex (bug 21804) 2017-07-24 12:22:05 +02:00
i386 Fix uc_* namespace (bug 21457). 2017-08-09 17:51:26 +00:00
ia64 float128: Add signbit alternative for old compilers 2017-06-30 18:34:29 -03:00
ieee754 Consistently use uintN_t not u_intN_t in libm. 2017-08-03 19:55:04 +00:00
init_array Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
m68k Fix uc_* namespace (bug 21457). 2017-08-09 17:51:26 +00:00
mach Do not use __ptr_t. 2017-08-08 17:14:49 +00:00
microblaze Update Microblaze libm-test-ulps 2017-07-28 09:19:40 -03:00
mips Fix uc_* namespace (bug 21457). 2017-08-09 17:51:26 +00:00
nios2 Update Nios II ULPs file. 2017-07-28 03:54:35 -07:00
nptl Remove extra semicolons in struct pthread_mutex (bug 21804) 2017-07-24 12:22:05 +02:00
posix Do not use __ptr_t. 2017-08-08 17:14:49 +00:00
powerpc powerpc: Restrict xssqrtqp operands to Vector Registers (bug 21941) 2017-08-10 16:10:21 -03:00
pthread Single threaded stdio optimization 2017-07-04 16:05:12 +01:00
s390 Require binutils 2.25 or later to build glibc. 2017-06-28 11:31:50 +00:00
sh PowerPC64 ELFv2 PPC64_OPT_LOCALENTRY 2017-06-14 10:47:25 +09:30
sparc Update sparc ulps 2017-07-19 15:56:02 -03:00
tile Do not use __ptr_t. 2017-08-08 17:14:49 +00:00
unix ld.so: Introduce struct dl_exception 2017-08-10 16:54:57 +02:00
wordsize-32 Build divdi3 only for architecture that required it 2017-04-06 15:14:34 -03:00
wordsize-64 Add missing header files throughout the testsuite. 2017-02-16 17:33:18 -05:00
x86 x86: Remove assembly versions of HAS_CPU_FEATURE/HAS_ARCH_FEATURE 2017-08-04 13:38:20 -07:00
x86_64 ld.so: Introduce struct dl_exception 2017-08-10 16:54:57 +02:00