> There's the znver4_sse_test reservation which matches the memory-less
> SSE compares but currently requires prefix_extra == 1.  The old
> znver automata in this case sometimes uses znver1-double instead of
> znver1-direct, but it's quite a maze.  The following simply drops
prefix_extra is used to determine instruction length (whether there is
extra byte for prefix)

I believe that the double versions are for the cases where zens
split long vectors to halves, but I also find it somewhat confusing.
> the prefix_extra requirement, but I have no idea what I'm doing here.
> There doesn't seem to be any documentation on the scheduler relevant
> attributes used, or at least I cannot find that.
> 
> Bootstrapped and tested on x86_64-unknown-linux-gnu, OK?
> 
>       PR target/119010
>       * config/i386/zn4zn5.md (znver4_sse_test): Drop test of
>       prefix_extra attribute.

Yes, this is OK. While znver4 halves AVX512, this is still improvement
over what we have and I don't thik it really matters to model the double
issue precisely here.
> ---
>  gcc/config/i386/zn4zn5.md | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/gcc/config/i386/zn4zn5.md b/gcc/config/i386/zn4zn5.md
> index fb856e9dc98..40e51456a46 100644
> --- a/gcc/config/i386/zn4zn5.md
> +++ b/gcc/config/i386/zn4zn5.md
> @@ -953,9 +953,8 @@
>  
>  (define_insn_reservation "znver4_sse_test" 1
>                        (and (eq_attr "cpu" "znver4,znver5")
> -                           (and (eq_attr "prefix_extra" "1")
> -                                (and (eq_attr "type" "ssecomi")
> -                                     (eq_attr "memory" "none"))))
> +                               (and (eq_attr "type" "ssecomi")
> +                                     (eq_attr "memory" "none")))
>                        "znver4-direct,znver4-fpu1|znver4-fpu2")
>  
>  (define_insn_reservation "znver4_sse_test_load" 6
> -- 
> 2.43.0
> 

Reply via email to