aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkugan.vivekanandarajah <kuganv@linaro.org>2016-01-27 11:16:59 +1100
committerLinaro Code Review <review@review.linaro.org>2016-02-04 07:29:01 +0000
commitdf7e22a143d4246ee728ff46a5552dfa2b6811c8 (patch)
tree781fa276eaac2c5f63d5310886fc3678a144dede
parent1aed7845299cd504ff2cc0a9e6b25988c28012ed (diff)
gcc/
Backport from trunk r232566. 2016-01-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com> PR target/69135 * config/arm/vfp.md (l<vrint_pattern><su_optab><mode>si2): Set "conds" attribute to unconditional. Remove %? from output template. gcc/testsuite/ Backport from trunk r232566. 2016-01-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com> PR target/69135 * gcc.target/arm/pr69135_1.c: New test. Change-Id: I8a920fdf3188fd5ab911cdba6371ed3dcd8d8cbb
-rw-r--r--gcc/config/arm/vfp.md3
-rw-r--r--gcc/testsuite/gcc.target/arm/pr69135_1.c44
2 files changed, 46 insertions, 1 deletions
diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md
index c297ed927b0..83b251ff95c 100644
--- a/gcc/config/arm/vfp.md
+++ b/gcc/config/arm/vfp.md
@@ -1336,8 +1336,9 @@
[(match_operand:SDF 1
"register_operand" "<F_constraint>")] VCVT)))]
"TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 <vfp_double_cond>"
- "vcvt<vrint_variant>%?.<su>32.<V_if_elem>\\t%0, %<V_reg>1"
+ "vcvt<vrint_variant>.<su>32.<V_if_elem>\\t%0, %<V_reg>1"
[(set_attr "predicable" "no")
+ (set_attr "conds" "unconditional")
(set_attr "type" "f_cvtf2i")]
)
diff --git a/gcc/testsuite/gcc.target/arm/pr69135_1.c b/gcc/testsuite/gcc.target/arm/pr69135_1.c
new file mode 100644
index 00000000000..6fb9e0681ba
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr69135_1.c
@@ -0,0 +1,44 @@
+/* { dg-do assemble } */
+/* { dg-require-effective-target arm_v8_vfp_ok } */
+/* { dg-require-effective-target arm_arch_v8a_ok } */
+/* { dg-options "-O2 -ffast-math" } */
+/* { dg-add-options arm_v8_vfp } */
+/* { dg-add-options arm_arch_v8a } */
+
+int global;
+
+void
+lceil_float (float x, int b)
+{
+ if (b) global = __builtin_lceilf (x);
+}
+
+void
+lceil_double (double x, int b)
+{
+ if (b) global = __builtin_lceil (x);
+}
+
+void
+lfloor_float (float x, int b)
+{
+ if (b) global = __builtin_lfloorf (x);
+}
+
+void
+lfloor_double (double x, int b)
+{
+ if (b) global = __builtin_lfloor (x);
+}
+
+void
+lround_float (float x, int b)
+{
+ if (b) global = __builtin_lroundf (x);
+}
+
+void
+lround_double (double x, int b)
+{
+ if (b) global = __builtin_lround (x);
+}