aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorXianmiao Qu <xianmiao_qu@c-sky.com>2018-11-12 02:36:45 +0000
committerXianmiao Qu <xianmiao@gcc.gnu.org>2018-11-12 02:36:45 +0000
commit31fad58fbb30f1fd37c57417d0e12a0cf13316b5 (patch)
tree36a799d029974cbe0451332d728c4da4f22ebcff /gcc
parent9510b56378a931af22c6dcccb8cf62105d0a69ba (diff)
downloadgcc-31fad58fbb30f1fd37c57417d0e12a0cf13316b5.zip
gcc-31fad58fbb30f1fd37c57417d0e12a0cf13316b5.tar.gz
gcc-31fad58fbb30f1fd37c57417d0e12a0cf13316b5.tar.bz2
csky.md (*fpuv2_nmulsf3_1, [...]): Handle -frounding-math.
2018-11-11 Xianmiao Qu <xianmiao_qu@c-sky.com> gcc/ * config/csky/csky.md (*fpuv2_nmulsf3_1, *fpuv2_nmuldf3_1): Handle -frounding-math. gcc/testsuite * gcc.target/csky/fnmul-1.c: New. * gcc.target/csky/fnmul-2.c: New. * gcc.target/csky/fnmul-3.c: New. * gcc.target/csky/fnmul-4.c: New. From-SVN: r266024
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/csky/csky_insn_fpu.md4
-rw-r--r--gcc/testsuite/ChangeLog7
-rwxr-xr-xgcc/testsuite/gcc.target/csky/fnmul-1.c17
-rwxr-xr-xgcc/testsuite/gcc.target/csky/fnmul-2.c19
-rwxr-xr-xgcc/testsuite/gcc.target/csky/fnmul-3.c17
-rwxr-xr-xgcc/testsuite/gcc.target/csky/fnmul-4.c17
7 files changed, 84 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 958cff1..066ef79 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2018-11-11 Xianmiao Qu <xianmiao_qu@c-sky.com>
+
+ * config/csky/csky.md (*fpuv2_nmulsf3_1, *fpuv2_nmuldf3_1): Handle
+ -frounding-math.
+
2018-11-11 Sandra Loosemore <sandra@codesourcery.com>
PR c++/43105
diff --git a/gcc/config/csky/csky_insn_fpu.md b/gcc/config/csky/csky_insn_fpu.md
index d188ef2..0598203 100644
--- a/gcc/config/csky/csky_insn_fpu.md
+++ b/gcc/config/csky/csky_insn_fpu.md
@@ -131,7 +131,7 @@
[(set (match_operand:SF 0 "register_operand" "=v")
(mult:SF (neg:SF (match_operand:SF 1 "register_operand" "%v"))
(match_operand:SF 2 "register_operand" "v")))]
- "CSKY_ISA_FEATURE (fpv2_sf)"
+ "CSKY_ISA_FEATURE (fpv2_sf) && !flag_rounding_math"
"fnmuls\t%0, %1, %2")
(define_insn "*fpuv2_nmulsf3_2"
@@ -145,7 +145,7 @@
[(set (match_operand:DF 0 "register_operand" "=v")
(mult:DF (neg:DF (match_operand:DF 1 "register_operand" "%v"))
(match_operand:DF 2 "register_operand" "v")))]
- "CSKY_ISA_FEATURE (fpv2_df)"
+ "CSKY_ISA_FEATURE (fpv2_df) && !flag_rounding_math"
"fnmuld\t%0, %1, %2")
(define_insn "*fpuv2_nmuldf3_2"
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index dd2cc13..31ad101 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2018-11-11 Xianmiao Qu <xianmiao_qu@c-sky.com>
+
+ * gcc.target/csky/fnmul-1.c: New.
+ * gcc.target/csky/fnmul-2.c: New.
+ * gcc.target/csky/fnmul-3.c: New.
+ * gcc.target/csky/fnmul-4.c: New.
+
2018-11-11 Uros Bizjak <ubizjak@gmail.com>
PR target/87928
diff --git a/gcc/testsuite/gcc.target/csky/fnmul-1.c b/gcc/testsuite/gcc.target/csky/fnmul-1.c
new file mode 100755
index 0000000..7e4f77a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/csky/fnmul-1.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-mcpu=ck810f -mhard-float -O2" } */
+
+double
+fnmuld (double a, double b)
+{
+ /* { dg-final { scan-assembler "fnmuld" } } */
+ return -a * b;
+}
+
+float
+fnmuls (float a, float b)
+{
+ /* { dg-final { scan-assembler "fnmuls" } } */
+ return -a * b;
+}
+
diff --git a/gcc/testsuite/gcc.target/csky/fnmul-2.c b/gcc/testsuite/gcc.target/csky/fnmul-2.c
new file mode 100755
index 0000000..f12ebc1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/csky/fnmul-2.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-mcpu=ck810f -mhard-float -O2 -frounding-math" } */
+
+double
+fnmuld (double a, double b)
+{
+ /* { dg-final { scan-assembler "fnegd" } } */
+ /* { dg-final { scan-assembler "fmuld" } } */
+ return -a * b;
+}
+
+float
+fnmuls (float a, float b)
+{
+ /* { dg-final { scan-assembler "fnegs" } } */
+ /* { dg-final { scan-assembler "fmuls" } } */
+ return -a * b;
+}
+
diff --git a/gcc/testsuite/gcc.target/csky/fnmul-3.c b/gcc/testsuite/gcc.target/csky/fnmul-3.c
new file mode 100755
index 0000000..558e23c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/csky/fnmul-3.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-mcpu=ck810f -mhard-float -O2" } */
+
+double
+fnmuld (double a, double b)
+{
+ /* { dg-final { scan-assembler "fnmuld" } } */
+ return -(a * b);
+}
+
+float
+fnmuls (float a, float b)
+{
+ /* { dg-final { scan-assembler "fnmuls" } } */
+ return -(a * b);
+}
+
diff --git a/gcc/testsuite/gcc.target/csky/fnmul-4.c b/gcc/testsuite/gcc.target/csky/fnmul-4.c
new file mode 100755
index 0000000..fa186bb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/csky/fnmul-4.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-mcpu=ck810f -mhard-float -O2 -frounding-math" } */
+
+double
+fnmuld (double a, double b)
+{
+ /* { dg-final { scan-assembler "fnmuld" } } */
+ return -(a * b);
+}
+
+float
+fnmuls (float a, float b)
+{
+ /* { dg-final { scan-assembler "fnmuls" } } */
+ return -(a * b);
+}
+