From SIMD Wrappers to SIMD Ranges (pt 2).
Joel Falcou, Denis Yaroshevskiy
This talk (pt2)
- TODO: link to pt2 slides
- Some plan thingy here
No Magic Compiler for this talk
- let's not assume that the compilers do much more
than today
- inlining/ collapsing instructions with exactaly
the same semantics
- std::unseq is not really a thing (yet?)
- there is some code in libc++ - that I coudn't do
anything with
Elephant in the ROOM (is this too long? I have no idea)
- _this is many slides_
- SVE/RVV don't know the compile time register
size
- Mention streaming extensions
- show how this affects find from part 1 (not
much)
- show how this affects inclusive_scan from part
1, it's tricky
- Why std::simd doesn't support this (super new)
- Why eve doesn't support this (the
sizeless_struct that is no more)
- How google highway manages to do it by splitting
meta information and intrinsics
- If a major compiler gives us a sizeless struct,
we promise to experiment
- DLLs approach
- One binary approach that is probably not modules
friendly
- Hey standard ppl, can we compile multiple
versions of the same function in std c++ please?
Importance of extensibility
Importance of tuning algorithms
- People will want to try things
- eve exposes unrolling/aligning/cardinal changes
Importance of knowing parameter limits
- How limiting sin inputs affects generated code
- Probably `__builtin_assume` won't be enough