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