On 31/07/15 12:04, Ramana Radhakrishnan wrote:

On 31/07/15 11:49, Kyrill Tkachov wrote:
On 31/07/15 11:34, Ramana Radhakrishnan wrote:
So, we have a predicate that doesn't cover all the constraints - in this case 
aren't we forcing everything into operand0. What happens if we just delete this 
pattern instead of turning it into an insn_and_split - after all we have other 
parts of the backend where conditional negates and conditional moves will be 
caught and cond-exec probably post dates some of these if-then-else patterns.
Hmmm yes, I think operand 1 should be tightened to s_register_operand.
The reason I want this pattern is so that I can expand to it in patch 3/3 where 
I want to create
a conditional negate expression. However, I can't just emit a COND_EXEC at 
expand time. I found that
reload doesn't handle the dataflow through them properly. With this pattern I 
can carry the if_then_else
around and split it into the conditional negate only after reload when it's 
safe.
But don't we loose because the immediate alternatives have been lost ? i.e. the 
original pattern allowed us to express conditional negates where the else 
condition was a move of an immediate. Thus one didn't require an additional 
register. Or are you arguing that this is no longer required ?
I am arguing that this is no longer required. In the original pattern the cases 
where operand 1 is an
immediate just outputs:

mov%D4\\t%0, %1\;rsb%d4\\t%0, %2, #0
or
mvn%D4\\t%0, #%B1\;rsb%d4\\t%0, %2, #0
As I said not enough coffee ;) You'll end up getting an unconditional move 
followed by a conditional neg, so not terrible but may be a bit more work for 
LRA todo.

It doesn't do anything smart.
I can build SPEC2006 with and without this patch to check for suspect code 
differences, but I suspect
there won't be much that matches it.

A sanity check is fine - modulo that it's ok to go in.

As mentioned earlier I'll change operand 1 to be use the s_register_operand 
predicate and re-test.
Is that change ok as well?

Thanks,
Kyrill



regards
Ramana


Reply via email to