re PR target/81800 (On aarch64 ilp32 lrint should not be inlined as two instructions)
authorTamar Christina <tamar.christina@arm.com>
Thu, 26 Oct 2017 06:42:41 +0000 (06:42 +0000)
committerTamar Christina <tnfchris@gcc.gnu.org>
Thu, 26 Oct 2017 06:42:41 +0000 (06:42 +0000)
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

gcc/ChangeLog
gcc/config/aarch64/aarch64.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/inline-lrint_2.c

index 5e297fb..ad54a57 100644 (file)
@@ -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.
index 389f2f9..eee836b 100644 (file)
 (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]));
index cf7095e..8dcf461 100644 (file)
@@ -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.
index 6080e18..bd0c73c 100644 (file)
@@ -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"