[PATCH, FT32] initial support
Paolo Bonzini
bonzini@gnu.org
Tue Feb 3 14:44:00 GMT 2015
On 03/02/2015 07:05, Andrew Pinski wrote:
> Likewise of:
> +(define_insn "abssi2"
> + [(set (match_operand:SI 0 "register_operand" "=r")
> + (abs:SI (match_operand:SI 1 "register_operand" "r")))
> + (clobber (match_scratch:SI 2 "=&r"))]
> + ""
> + "ashr.l\t%2,%1,31\;xor.l\t%0,%1,%2\;sub.l\t%0,%0,%2")
>
optabs.c's expand_abs_nojump already knows this trick:
/* If this machine has expensive jumps, we can do integer absolute
value of X as (((signed) x >> (W-1)) ^ x) - ((signed) x >> (W-1)),
where W is the width of MODE. */
So if you define BRANCH_COST to be 2 or more there should be no need for
this pattern at all.
Paolo
More information about the Gcc-patches
mailing list