]> git.ipfire.org Git - thirdparty/gcc.git/commit
rs6000: Fix vec_cpsgn parameter order (PR101985)
authorBill Schmidt <wschmidt@linux.ibm.com>
Tue, 12 Oct 2021 22:37:16 +0000 (17:37 -0500)
committerBill Schmidt <wschmidt@linux.ibm.com>
Tue, 12 Oct 2021 22:39:18 +0000 (17:39 -0500)
commit76ba473b99c30ddec6171840a76292d6d4b67e7c
tree2494135ee65f56a1a317fef93bb47d9a0a9f3e37
parent4ca446a46bef8c127d7aaeb2d4bb4625edc7f84e
rs6000: Fix vec_cpsgn parameter order (PR101985)

The vec_cpsgn built-in function API differs in argument order from the
copysign<mode>3 convention.  Currently that pattern is incorrctly used to
implement vec_cpsgn.  Fix that by reversing the operand order of the
builtin while leaving the existing pattern in place to implement copysignf
for vector modes.

Part of the fix when using the new built-in support requires an adjustment
to a pending patch that replaces much of altivec.h with an automatically
generated file.

Also fix a bug in the new built-in overload infrastructure where we were
using the VSX form of the VEC_COPYSIGN built-in when we should default to
the VMX form.

2021-10-12  Bill Schmidt  <wschmidt@linux.ibm.com>

gcc/
PR target/101985
* config/rs6000/altivec.h (vec_cpsgn): Swap operand order.
* config/rs6000/rs6000-overload.def (VEC_COPYSIGN): Use SKIP to
avoid generating an automatic #define of vec_cpsgn.  Use the
correct built-in for V4SFmode that doesn't depend on VSX.

gcc/testsuite/
PR target/101985
* gcc.target/powerpc/pr101985-1.c: New.
* gcc.target/powerpc/pr101985-2.c: New.
gcc/config/rs6000/altivec.h
gcc/config/rs6000/rs6000-overload.def
gcc/testsuite/gcc.target/powerpc/pr101985-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/pr101985-2.c [new file with mode: 0644]