> 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 >