Pushed as eda5a15909c315f0a4a7e76ad083f5f16cf1aef9

Thanks,

On Fri, Jun 27, 2025 at 11:24 AM Jeff Law <jeffreya...@gmail.com> wrote:
>
>
>
> On 6/27/25 7:59 AM, Oleg Endo wrote:
> >
> > On Fri, 2025-06-27 at 10:51 -0300, Raphael Moreira Zinsly wrote:
> >> A right shift of 31 will become 0 or 1, this can be checked for
> >> treg_set_expr_not_const01 to avoid matching addc_t_r as this
> >> can expand to a 3 insn sequence instead.
> >> This improves tests 023 to 026 from gcc.target/sh/pr54236-2.c, e.g.:
> >> test_023:
> >> shll    r5
> >> mov     #0,r1
> >> mov     r4,r0
> >> rts
> >> addc    r1,r0
> >>
> >> With this change:
> >> test_023:
> >> shll    r5
> >> movt    r0
> >> rts
> >> add     r4,r0
> >>
> >> We noticed this while evaluating a patch to improve how we handle
> >> selecting between two constants based on the output of a LT/GE 0
> >> test.
> >>
> >> gcc/ChangeLog:
> >>      * config/sh/predicates.md
> >>      (treg_set_expr_not_const01): call sh_recog_treg_set_expr_not_01
> >>      * config/sh/sh-protos.h
> >>      (sh_recog_treg_set_expr_not_01): New function
> >>      config/sh/sh.cc (sh_recog_treg_set_expr_not_01): Likewise
> >>
> >> gcc/testsuite/ChangeLog:
> >>      * gcc.target/sh/pr54236-2.c: Fix comments and expected output
> >
> > Assuming that this passes the usual regression tests, it looks OK to me.
> > Please apply.
> I ran it in my tester for Raphael.  So sh3/sh3eb linux crosses.  The
> sh4/sh4eb bootstraps won't fire off until Sun/Mon if I remember the
> scheduling correctly.
>
> jeff
>


-- 
Raphael Moreira Zinsly

Reply via email to