Commit 962801c5 by Kyrylo Tkachov Committed by Kyrylo Tkachov

[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
parent 078fe40a
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> 2015-01-19 Wilco Dijkstra <wdijkstr@arm.com>
Jiong Wang <jiong.wang@arm.com> Jiong Wang <jiong.wang@arm.com>
......
...@@ -1334,8 +1334,9 @@ ...@@ -1334,8 +1334,9 @@
[(match_operand:SDF 1 [(match_operand:SDF 1
"register_operand" "<F_constraint>")] VCVT)))] "register_operand" "<F_constraint>")] VCVT)))]
"TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 <vfp_double_cond>" "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 "predicable" "no")
(set_attr "conds" "unconditional")
(set_attr "type" "f_cvtf2i")] (set_attr "type" "f_cvtf2i")]
) )
......
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> 2015-01-19 Wilco Dijkstra <wdijkstr@arm.com>
* gcc.target/aarch64/ccmp_1.c: Add new tests. * gcc.target/aarch64/ccmp_1.c: Add new tests.
......
/* { 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);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment