On Thu, Jul 11, 2024 at 04:29:19PM +0200, Stefan Schulze Frielinghaus wrote:
> During machine reorg we optimize backward jumps and transform insns as
> e.g.
> 
> (jump_insn 118 117 119 (set (pc)
>         (if_then_else (ne (reg:CCRAW 33 %cc)
>                 (const_int 8 [0x8]))
>             (label_ref 134)
>             (pc))) "dec_math_1.f90":204:8 discrim 1 2161 {*cjump_64}
>      (expr_list:REG_DEAD (reg:CCRAW 33 %cc)
>         (int_list:REG_BR_PROB 719407028 (nil)))
>  -> 134)
> 
> into
> 
> (jump_insn 118 117 432 (set (pc)
>         (if_then_else (ne (reg:CCRAW 33 %cc)
>                 (const_int 8 [0x8]))
>             (pc)
>             (label_ref 433))) "dec_math_1.f90":204:8 discrim 1 -1
>      (expr_list:REG_DEAD (reg:CCRAW 33 %cc)
>         (int_list:REG_BR_PROB 719407028 (nil)))
>  -> 433)
> 
> The latter is not recognized anymore since *icjump_64 only matches
> CC_REGNUM against zero.  Fixed by aligning *cjump_64 and *icjump_64.
> 
> gcc/ChangeLog:
> 
>       * config/s390/s390.md (*icjump_64): Allow raw CC comparisons,
>       i.e., any constant integer between 0 and 15 for CC comparisons.
> ---
>  Bootstrap and regtest or still running.  Assuming no regressions, ok
>  for {mainline,11,12,13,14}?  Would be great to see this in 14.2 RC :)

I didn't have the schedule for 11.5 RC in mind which is tomorrow and the
release a week afterwards.  I hope this is still appropriate for 11.5?

Cheers,
Stefan

> 
>  gcc/config/s390/s390.md | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
> index f5d7003dfad..d3931b09417 100644
> --- a/gcc/config/s390/s390.md
> +++ b/gcc/config/s390/s390.md
> @@ -9556,7 +9556,8 @@
>  (define_insn "*icjump_64"
>    [(set (pc)
>          (if_then_else
> -          (match_operator 1 "s390_comparison" [(reg CC_REGNUM) (const_int 
> 0)])
> +          (match_operator 1 "s390_comparison" [(reg CC_REGNUM)
> +                                            (match_operand 2 
> "const_int_operand" "")])
>            (pc)
>            (label_ref (match_operand 0 "" ""))))]
>    ""
> -- 
> 2.45.2
> 

Reply via email to