Opened 9 years ago
Last modified 7 years ago
#9237 new Bugs
Vectorizer friendly code
Reported by: | Domagoj Šarić | Owned by: | John Maddock |
---|---|---|---|
Milestone: | To Be Determined | Component: | multiprecision |
Version: | Boost 1.54.0 | Severity: | Optimization |
Keywords: | Cc: |
Description
- use aligned storage (also statically attributed as such, with compiler specific attributes, not just allocated as aligned)
- mind vectorcall and its ability to pass and return tuples! http://blogs.msdn.com/b/vcblog/archive/2013/07/12/introducing-vector-calling-convention.aspx
- use native/builtin arbitrary sized vectors
http://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html http://clang.llvm.org/docs/LanguageExtensions.html#vectors-and-extended-vectors
Change History (2)
comment:1 by , 9 years ago
comment:2 by , 7 years ago
Sorry, still had no time to revisit this (and answer the questions above), however I ran into this recently: https://gcc.gnu.org/onlinedocs/gcc/Integer-Overflow-Builtins.html http://clang.llvm.org/docs/LanguageExtensions.html#checked-arithmetic-builtins and thought you may find it useful (while on the topic of compiler extensions)...
Note:
See TracTickets
for help on using tickets.
Can you please explain what you had in mind here? Note that cpp_int's are not simply arrays, so cannot be passed by value using a
__vectorcall
as far as I can see.Use of builtin vector types might be interesting, but the only operations I can see being easily vectorised are the bitwise operations? I suspect the problems may outweigh the benefits here: for example gcc only supports array sizes that are powers of 2, I'm not certain the arrays support 64-bit chunks either...