aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPat Haugen <pthaugen@us.ibm.com>2017-03-17 16:42:29 +0000
committerPat Haugen <pthaugen@us.ibm.com>2017-03-17 16:42:29 +0000
commitadd6d6aeca600ea745c08c26ef28a7c993ca8b86 (patch)
treeef4bfcc2578bf44fdd1dc23c78935fb2c241e08d
parentad918fa0936f78e879ba8a2ae6292b9acbf104aa (diff)
PR target/79951
* config/rs6000/rs6000.md (copysign<mode>3_fcpsgn): Test for VECTOR_UNIT_VSX_P (<MODE>mode) too. * gcc.target/powerpc/pr79951.c: New. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@246228 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.md2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr79951.c10
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index eb0e150d051..2ea7fe8d61a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-03-17 Pat Haugen <pthaugen@us.ibm.com>
+
+ PR target/79951
+ * config/rs6000/rs6000.md (copysign<mode>3_fcpsgn): Test
+ for VECTOR_UNIT_VSX_P (<MODE>mode) too.
+
2017-03-17 Bernd Schmidt <bschmidt@redhat.com>
* reload.c (find_reloads): When reloading a nonoffsettable address,
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 000d84033c3..164fc2c33c6 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -4831,7 +4831,7 @@
(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>")
(match_operand:SFDF 2 "gpc_reg_operand" "<Ff>,<Fv>")]
UNSPEC_COPYSIGN))]
- "TARGET_<MODE>_FPR && TARGET_CMPB"
+ "TARGET_<MODE>_FPR && (TARGET_CMPB || VECTOR_UNIT_VSX_P (<MODE>mode))"
"@
fcpsgn %0,%2,%1
xscpsgndp %x0,%x2,%x1"
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4162ca23eed..7178b8e4f51 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-03-17 Pat Haugen <pthaugen@us.ibm.com>
+
+ PR target/79951
+ * gcc.target/powerpc/pr79951.c: New.
+
2017-03-17 Bernd Schmidt <bschmidt@redhat.com>
PR rtl-optimization/79910
diff --git a/gcc/testsuite/gcc.target/powerpc/pr79951.c b/gcc/testsuite/gcc.target/powerpc/pr79951.c
new file mode 100644
index 00000000000..67837444b20
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr79951.c
@@ -0,0 +1,10 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
+/* { dg-options "-mcpu=power8 -S -mno-cmpb" } */
+
+float testf (float x, float y)
+{
+ return __builtin_copysignf (x, y);
+}
+