]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
iterators.md (vrint_conds): New int attribute.
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Thu, 28 Nov 2013 16:36:07 +0000 (16:36 +0000)
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>
Thu, 28 Nov 2013 16:36:07 +0000 (16:36 +0000)
[gcc/]
2013-11-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

* config/arm/iterators.md (vrint_conds): New int attribute.
* config/arm/vfp.md (<vrint_pattern><SDF:mode>2): Set conds attribute.
(smax<mode>3): Likewise.
(smin<mode>3): Likewise.

[gcc/testsuite/]
2013-11-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

* gcc.target/arm/vrinta-ce.c: New testcase.

From-SVN: r205492

gcc/ChangeLog
gcc/config/arm/iterators.md
gcc/config/arm/vfp.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/vrinta-ce.c [new file with mode: 0644]

index f6db5c52aa7ebb90d6e211f2c97a9d7021ab2b50..21defb8a5d1490bf13f6c9fe091eaad22d89f1ae 100644 (file)
@@ -1,3 +1,10 @@
+2013-11-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * config/arm/iterators.md (vrint_conds): New int attribute.
+       * config/arm/vfp.md (<vrint_pattern><SDF:mode>2): Set conds attribute.
+       (smax<mode>3): Likewise.
+       (smin<mode>3): Likewise.
+
 2013-11-28  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * tree-core.h (tree_base): Document use of static_flag for SSA_NAME.
index 38777b89a8773901bf7b63b5e2eba2d624f092cb..66779a7b7fa36564017d18b15104a299c506654c 100644 (file)
                                   (UNSPEC_VRINTA "no") (UNSPEC_VRINTM "no")
                                   (UNSPEC_VRINTR "yes") (UNSPEC_VRINTX "yes")])
 
+(define_int_attr vrint_conds [(UNSPEC_VRINTZ "nocond") (UNSPEC_VRINTP "unconditional")
+                              (UNSPEC_VRINTA "unconditional") (UNSPEC_VRINTM "unconditional")
+                              (UNSPEC_VRINTR "nocond") (UNSPEC_VRINTX "nocond")])
+
 (define_int_attr nvrint_variant [(UNSPEC_NVRINTZ "z") (UNSPEC_NVRINTP "p")
                                 (UNSPEC_NVRINTA "a") (UNSPEC_NVRINTM "m")
                                 (UNSPEC_NVRINTX "x") (UNSPEC_NVRINTN "n")])
index 22b63251a87398f0756671c541e2bb51eefdd721..6d0515a92b190b0fbf8b3d632008c95a900d1b6f 100644 (file)
   "vrint<vrint_variant>%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1"
   [(set_attr "predicable" "<vrint_predicable>")
    (set_attr "predicable_short_it" "no")
-   (set_attr "type" "f_rint<vfp_type>")]
+   (set_attr "type" "f_rint<vfp_type>")
+   (set_attr "conds" "<vrint_conds>")]
 )
 
 ;; MIN_EXPR and MAX_EXPR eventually map to 'smin' and 'smax' in RTL.
                  (match_operand:SDF 2 "register_operand" "<F_constraint>")))]
   "TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 <vfp_double_cond>"
   "vmaxnm.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "type" "f_minmax<vfp_type>")]
+  [(set_attr "type" "f_minmax<vfp_type>")
+   (set_attr "conds" "unconditional")]
 )
 
 (define_insn "smin<mode>3"
                  (match_operand:SDF 2 "register_operand" "<F_constraint>")))]
   "TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 <vfp_double_cond>"
   "vminnm.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "type" "f_minmax<vfp_type>")]
+  [(set_attr "type" "f_minmax<vfp_type>")
+   (set_attr "conds" "unconditional")]
 )
 
 ;; Unimplemented insns:
index 73356216e19617241419aa943284d3f910633795..c6afcfa00e06a287a095571dee9deefa42e1e7c6 100644 (file)
@@ -1,3 +1,7 @@
+2013-11-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * gcc.target/arm/vrinta-ce.c: New testcase.
+
 2013-11-28  Richard Biener  <rguenther@suse.de>
 
        PR lto/59323
diff --git a/gcc/testsuite/gcc.target/arm/vrinta-ce.c b/gcc/testsuite/gcc.target/arm/vrinta-ce.c
new file mode 100644 (file)
index 0000000..71c5b3b
--- /dev/null
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_v8_vfp_ok } */
+/* { dg-options "-O2 -marm -march=armv8-a" } */
+/* { dg-add-options arm_v8_vfp } */
+
+double foo (double a)
+{
+  if (a > 3.0)
+    return  __builtin_round (a);
+
+  return 0.0;
+}
+
+/* { dg-final { scan-assembler-times "vrinta.f64\td\[0-9\]+" 1 } } */
+