diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2016-01-19 14:30:23 +0000 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@gcc.gnu.org> | 2016-01-19 14:30:23 +0000 |
commit | 962801c550a859cc05fd761fac09ade6beb5e34a (patch) | |
tree | 4fe4979a0aadcae5f02ec5165a898600c262e4bb /gcc | |
parent | 078fe40a489e7a4f62553feab15288066906d146 (diff) | |
download | gcc-962801c550a859cc05fd761fac09ade6beb5e34a.zip gcc-962801c550a859cc05fd761fac09ade6beb5e34a.tar.gz gcc-962801c550a859cc05fd761fac09ade6beb5e34a.tar.bz2 |
[ARM] PR target/69135: Mark ARMv8 vcvt instructions as unconditional
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.
From-SVN: r232566
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/arm/vfp.md | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/pr69135_1.c | 44 |
4 files changed, 57 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index de730d4..bffbedf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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> diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md index cf3b202..ac5f3b8 100644 --- a/gcc/config/arm/vfp.md +++ b/gcc/config/arm/vfp.md @@ -1334,8 +1334,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/ChangeLog b/gcc/testsuite/ChangeLog index 057dc1e..f360afd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 0000000..6fb9e06 --- /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); +} |