On Mon, Aug 4, 2025 at 1:14 PM Tomasz Kaminski <tkami...@redhat.com> wrote:
> > > On Mon, Aug 4, 2025 at 1:08 PM Luc Grosheintz <luc.groshei...@gmail.com> > wrote: > >> Hi Tomasz, >> >> Thank you for the review! Sorry about the missing parens, even after >> "Ctrl+F"ing each of the emails I can't find the requires clause (the >> two I found both need the parens). >> > I was mentioning this one, but it is possible that I am wrong on this one, > I haven't yet checked it, as I was planning to do it during full review. > template<array _Extents> > requires (__all_dynamic<_Extents>()) > class _StaticExtents<_Extents>; > But regardless, I will make that change locally if it does work, so you do > not > need to update patch series for it. > Parenthesis seem to be indeed required here, so my comment was a red herring. > >> Do you think it's possible to merge this series before the other two >> outstanding patch series? There's some risk of collision; making changes >> to this patch series is much more time consuming than rebasing (and >> retesting the other two patch series). >> > This sounds very reasonable. I will prepare a stack of patches in your > suggested > order locally, and push them once they are approved. But it still make > >> >> Thank you, >> > Thank you for your continued contributions. > >> Luc >> >> On 8/4/25 12:43, Tomasz Kaminski wrote: >> > Hi, >> > >> > I this time I made a quick pass through all changes, before commenting >> on >> > first commits, >> > and they look solid to me, and I haven't noticed anything I would like >> to >> > change (except parentheses >> > around requires, but I will handle that locally). I will try to do a >> full >> > review during this week. >> > >> > Regards, >> > Tomasz >> > >> > On Sun, Aug 3, 2025 at 10:59 PM Luc Grosheintz < >> luc.groshei...@gmail.com> >> > wrote: >> > >> >> The combined effect of this sequence of change is: >> >> >> >> * a reduction in the number of template instantiations, by >> >> - avoiding needless dependency of IndexType, >> >> - special formulas for low-rank extents, >> >> - special formulas for (nearly) fully dynamic extents. >> >> >> >> * improved code quality, by >> >> - precomputing partial products of the static extents, >> >> - special cases for low-rank extents, >> >> - rewriting the condition E[i] == dynamic_extent in a more >> >> optimizer friendly manner. >> >> - effectively loop-unrolling extents::operator==. >> >> >> >> While simplistic micro-benchmarking shows the effectiveness of these >> >> changes, likely the stronger argument is presented in each commit: >> >> a) each change removes needless complexity, >> >> b) before/after examples of generated code show the effectiveness. >> >> >> >> Luc Grosheintz (8): >> >> libstdc++: Reduce template instantiations in <mdspan>. >> >> libstdc++: Precompute products of static extents. >> >> libstdc++: Improve low-rank layout_{left,right}::stride. >> >> libstdc++: Improve fully dynamic extents in mdspan. >> >> libstdc++: Improve nearly fully dynamic extents in mdspan. >> >> libstdc++: Reduce indirection in extents::extent. >> >> libstdc++: Improve extents::operator==. >> >> libstdc++: Replace numeric_limit with __int_traits in mdspan. >> >> >> >> libstdc++-v3/include/std/mdspan | 282 >> +++++++++++++----- >> >> .../mdspan/extents/class_mandates_neg.cc | 3 + >> >> 2 files changed, 208 insertions(+), 77 deletions(-) >> >> >> >> -- >> >> 2.50.0 >> >> >> >> >> > >> >>