On Fri, 10 Feb 2012, Richard Henderson wrote:
> Seeing as how Uros is starting to go down the path of cleaning up the
> flags handling for x86, I thought I'd go ahead and knock up the idea
> that I've been tossing around to help automate the process of building
> patterns that match both clobbering the flags and setting the flags to
> a comparison.

Sometimes the destination too unless there's overlap, but I
don't know how often that matters.

> This is far from complete, but it at least shows the direction.

Yes, nice!

> What I know is missing off the top of my head are:

>  (2) Can't be usefully used with define_insn_and_split, and no way to tell.
>      This problem should simply be documented in the .texi file as user error.

Not sure I see the problem or the impact of the absence.  Would
it help if there was a way to match_dup the clobber/set?  Maybe
as a match_op_flags, the same as match_flags but with the first
argument being an assigning operand number.  You probably
wouldn't want to use this very often.)

>  (3) Can't be used for x86 add patterns, as the "clobber" version wants the
>      freedom to use "lea" and the "set flags" version cannot.  And there are
>      different sets of constraints if lea may be used or not.

Other targets too, but as it's warty for x86 I hope eventually
this'll see improvement...

> Comments?

Er... very interesting!  (The kind of patch you want to play
around with to have any further insightful comments.)

So I can use match_{operand,whatever} in the second, optional
operand to match_flags?  No, wait, no use to have anything but
a match_dup, hm.

I don't see where it'd make sense to have anything else but the
default, absent argument.  Example?

brgds, H-P

Reply via email to