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