aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamar Christina <tamar.christina@arm.com>2017-10-26 06:42:41 +0000
committerTamar Christina <tnfchris@gcc.gnu.org>2017-10-26 06:42:41 +0000
commit1013465feaf83fd7503711c03a0c1013a7a37ca4 (patch)
tree08ccf143fd3c242e17024f9e6a3412efba87a5fe
parentc3ef5fda143585ca19dff5a977b6aa87b7a17566 (diff)
downloadgcc-1013465feaf83fd7503711c03a0c1013a7a37ca4.zip
gcc-1013465feaf83fd7503711c03a0c1013a7a37ca4.tar.gz
gcc-1013465feaf83fd7503711c03a0c1013a7a37ca4.tar.bz2
re PR target/81800 (On aarch64 ilp32 lrint should not be inlined as two instructions)
2017-10-26 Tamar Christina <tamar.christina@arm.com> PR target/81800 * config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2): Add flag_trapping_math and flag_fp_int_builtin_inexact. gcc/testsuite/ 2017-10-26 Tamar Christina <tamar.christina@arm.com> * gcc.target/aarch64/inline-lrint_2.c (dg-options): Add -fno-trapping-math. From-SVN: r254098
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/aarch64/aarch64.md4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/aarch64/inline-lrint_2.c2
4 files changed, 14 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5e297fb..ad54a57 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-10-26 Tamar Christina <tamar.christina@arm.com>
+
+ PR target/81800
+ * config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2): Add flag_trapping_math
+ and flag_fp_int_builtin_inexact.
+
2017-10-25 Palmer Dabbelt <palmer@dabbelt.com>
* config/riscv/riscv.md (ZERO_EXTEND_LOAD): Define.
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index 389f2f9..eee836b 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -5155,7 +5155,9 @@
(define_expand "lrint<GPF:mode><GPI:mode>2"
[(match_operand:GPI 0 "register_operand")
(match_operand:GPF 1 "register_operand")]
- "TARGET_FLOAT"
+ "TARGET_FLOAT
+ && ((GET_MODE_SIZE (<GPF:MODE>mode) <= GET_MODE_SIZE (<GPI:MODE>mode))
+ || !flag_trapping_math || flag_fp_int_builtin_inexact)"
{
rtx cvt = gen_reg_rtx (<GPF:MODE>mode);
emit_insn (gen_rint<GPF:mode>2 (cvt, operands[1]));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cf7095e..8dcf461 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,9 @@
2017-10-26 Tamar Christina <tamar.christina@arm.com>
+ * gcc.target/aarch64/inline-lrint_2.c (dg-options): Add -fno-trapping-math.
+
+2017-10-26 Tamar Christina <tamar.christina@arm.com>
+
* gcc.target/aarch64/advsimd-intrinsics/vect-dot-qi.h: New.
* gcc.target/aarch64/advsimd-intrinsics/vdot-compile.c: New.
* gcc.target/aarch64/advsimd-intrinsics/vect-dot-s8.c: New.
diff --git a/gcc/testsuite/gcc.target/aarch64/inline-lrint_2.c b/gcc/testsuite/gcc.target/aarch64/inline-lrint_2.c
index 6080e18..bd0c73c 100644
--- a/gcc/testsuite/gcc.target/aarch64/inline-lrint_2.c
+++ b/gcc/testsuite/gcc.target/aarch64/inline-lrint_2.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-require-effective-target ilp32 } */
-/* { dg-options "-O3 -fno-math-errno" } */
+/* { dg-options "-O3 -fno-math-errno -fno-trapping-math" } */
#include "lrint-matherr.h"