Hi Robin, > Was this with --param=partial-vector-usage=1 or something else? I'd > really like to see an example of a loop where this is worse than e.g. an > LMUL4 loop with small VL. Maybe that would help us steer the > implementation and codegen.
We tried adding a -param=vect-partial-vector-usage=3 option, requiring full vectors in the main loop and LMUL<=1 partial vectors in the epilogue. (Yes we didn't use length control for the main loop. I had a bad memory.) Actually we were comparing "M8/M4 main loop + M1 epilogue" with the plain -mrvv-max-lmul=m1 (not m4 or m8), and the regressions refer to results of that comparsion. We didn't perform that kind of test, but I guess the m1 epilogue scheme would not be worse than plain m4 or m8 on our design. The reason why we use plain m1 as the reference is that m1 actually performs pretty well for many cases on our non-Ovlt design. However we wanted to do better than m1, especially for scenarios we can almost be sure that would be a performance gain (e.g. fixed-length loops that can naturally fit into larger vectors, which the earlier m1-dynamic scheme was mainly targeting). Regards, Bohan
