[ARM] PR target/69135: Mark ARMv8 vcvt instructions as unconditional
authorktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 19 Jan 2016 14:30:23 +0000 (14:30 +0000)
committerktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 19 Jan 2016 14:30:23 +0000 (14:30 +0000)
PR target/69135
* config/arm/vfp.md (l<vrint_pattern><su_optab><mode>si2): Set "conds"
attribute to unconditional.  Remove %? from output template.

* gcc.target/arm/pr69135_1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232566 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/vfp.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/pr69135_1.c [new file with mode: 0644]

index de730d4..bffbedf 100644 (file)
@@ -1,3 +1,9 @@
+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.
+
 2015-01-19  Wilco Dijkstra  <wdijkstr@arm.com>
            Jiong Wang  <jiong.wang@arm.com>
 
index cf3b202..ac5f3b8 100644 (file)
                         [(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")]
 )
 
index 057dc1e..f360afd 100644 (file)
@@ -1,3 +1,8 @@
+2016-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       PR target/69135
+       * gcc.target/arm/pr69135_1.c: New test.
+
 2015-01-19  Wilco Dijkstra  <wdijkstr@arm.com>
 
        * gcc.target/aarch64/ccmp_1.c: Add new tests.
diff --git a/gcc/testsuite/gcc.target/arm/pr69135_1.c b/gcc/testsuite/gcc.target/arm/pr69135_1.c
new file mode 100644 (file)
index 0000000..6fb9e06
--- /dev/null
@@ -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);
+}