On Mon, May 13, 2019 at 08:27:15AM -0600, Jeff Law wrote:
> sh3-linux-gnu and sh3eb-linux-gnu:

I test sh2 and sh4, but not sh3 :-)

> Tests that now fail, but worked before (3 tests):
> 
> gcc.target/sh/pr51244-11.c scan-assembler-not subc|and|bra
> gcc.target/sh/pr51244-11.c scan-assembler-times bf\t0f 1
> gcc.target/sh/pr51244-11.c scan-assembler-times bt\t0f 1
> 
> Previously we'd match this pattern:
> 
> (define_insn "*cset_zero"
>   [(set (match_operand:SI 0 "arith_reg_dest" "=r")
>         (if_then_else:SI (match_operand:SI 1 "cbranch_treg_value")
>                          (match_operand:SI 2 "arith_reg_operand" "0")
>                          (const_int 0)))]
>   "TARGET_SH1 && TARGET_ZDCBRANCH"
> 
> After your change we no longer try to do so.
> 
> I really don't care about the SH port.  But isn't this really a symptom
> of a larger problem.  Namely that by not generating if-then-else you've
> hosed every target that implements conditional moves via if-then-else
> constructs?

I tested on 30-something targets (all *-linux), and only mips64 regressed
a little, everything else improved.  So the current tuning is better than
what it was before.  No doubt it can be improved though!

This is only if-then-else for a single bit, fwiw.

I'll build some sh3-linux if I find a cycle or two.


Segher

Reply via email to