std::experimental::simd implementation

Matthias Kretz m.kretz@gsi.de
Thu Nov 1 16:34:00 GMT 2018


I'm working on getting my code reorganized, refactored, and underscored for 
submission to libstdc++. You can find the current state at: https://
github.com/VcDevel/Vc/tree/mkretz/contribute_to_libstdc%2B%2B/experimental

I'll need a bit of help to get it ready:

* I'm sure there's a bit of internal machinery that I had to write that 
libstdc++ already has. Any idea how to deduplicate this? I have no idea about 
the libstdc++ internals.

* Naming conventions. I've started adding underscores, but I guess you'd like 
to have at least _M_ prefixes for data members? Where do I find the 
documentation?

* I have no idea how to integrate my tests. I have not even tried to 
understand how testing currently works in libstdc++, so that's at least one 
part... ;-)

* I reduced the number of source files. But 200k headers isn't pretty either. 
There's still some room for refactoring to get the size down (constexpr if is 
such a great help - and my (too late) discovery how to deduce value_type and 
size from a [[gnu::vector_size(N)]] builtin type) - I'm mostly focusing on 
this. (I'm down from more than 1MB total size.)

* I have a lot of x86 specific code (using intrinsics) to avoid missed 
optimization. I prefer to keep them in constexpr if blocks, as otherwise the 
boilerplate for extra functions just explodes. Is that acceptable?

So far.
Cheers,
  Matthias

-- 
──────────────────────────────────────────────────────────────────────────
 Dr. Matthias Kretz                                https://kretzfamily.de
 GSI Helmholtzzentrum für Schwerionenforschung             https://gsi.de
 SIMD easy and portable                     https://github.com/VcDevel/Vc
──────────────────────────────────────────────────────────────────────────


More information about the Libstdc++ mailing list