aboutsummaryrefslogtreecommitdiffstats
path: root/src/utils/loadstor.h
Commit message (Collapse)AuthorAgeFilesLines
* Doxygenlloyd2010-06-211-6/+217
|
* Move the get_byte template to its own header, because many fileslloyd2010-02-021-10/+1
| | | | including loadstor.h actually just needed get_byte and nothing else.
* Add a static_cast<byte>() around get_byte just to keep VC++ quiet.lloyd2009-12-231-1/+3
|
* Deal with unknown or mixed endian architectures properly. If known littlelloyd2009-12-231-22/+18
| | | | | | or big endian, for large loads always memcpy, then go back and swap as needed. Otherwise (unknown or mixed endian) just load one at a time as usual.
* Un-internal loadstor.h (and its header deps, rotate.h andlloyd2009-12-211-3/+1
| | | | | | | | | | | | | | bswap.h); too many external apps rely on loadstor.h existing. Define 64-bit generic bswap in terms of 32-bit bswap, since it's not much slower if 32-bit is also generic, and much faster if it's not. This may be quite helpful on 32-bit x86 in particular. Change formulation of generic 32-bit bswap. It may be faster or slower depending on the CPU, especially the latency and throuput of rotate instructions, but should be faster on an ideally superscalar processor with rotate instructions (ie, what I expect future CPUs to look more like).
* Make many more headers internal-only.lloyd2009-12-161-3/+3
| | | | | | | | | | | | | Fixes for the amalgamation generator for internal headers. Remove BOTAN_DLL exporting macros from all internal-only headers; the classes/functions there don't need to be exported, and avoiding the PIC/GOT indirection can be a big win. Add missing BOTAN_DLLs where necessary, mostly gfpmath and cvc For GCC, use -fvisibility=hidden and set BOTAN_DLL to the visibility __attribute__ to export those classes/functions.
* Use memcpy for bulk loads if algorithm endianness matches CPU endianess.lloyd2009-11-101-0/+9
|
* Tick to 1.9.3-devlloyd2009-11-061-13/+13
| | | | | Rename BOTAN_UNALIGNED_LOADSTOR_OK to BOTAN_UNALIGNED_MEMORY_ACCESS_OK which is somewhat more clear as to the point.
* Add a new looping load_be / load_le for loading large arrays at once, andlloyd2009-10-291-0/+46
| | | | | | | | change some of the hash functions to use it as low hanging fruit. Probably could use further optimization (just unrolls x4 currently), but merely having it as syntax is good as it allows optimizing many functions at once (eg using SSE2 to do 4-way byteswaps).
* Add new store_[l|b]e variants taking 8 values.lloyd2009-10-231-16/+108
| | | | | | Add new load options that are passed a number of variables by reference, setting them all at once. Will allow for batching operations (eg using SIMD operations to do 128-bit wide bswaps) for future optimizations.
* Add some basic prefetching support (only supported with GNU C++ or thingslloyd2009-09-291-0/+1
| | | | | that claim to be by defining __GNUG__ (such as Intel C++)) in new utils header prefetch.h
* Thomas Moschny passed along a request from the Fedora packagers which camelloyd2009-03-301-17/+19
| | | | | | | | | | | | | | | up during the Fedora submission review, that each source file include some text about the license. One handy Perl script later and each file now has the line Distributed under the terms of the Botan license after the copyright notices. While I was in there modifying every file anyway, I also stripped out the remainder of the block comments (lots of astericks before and after the text); this is stylistic thing I picked up when I was first learning C++ but in retrospect it is not a good style as the structure makes it harder to modify comments (with the result that comments become fewer, shorter and are less likely to be updated, which are not good things).
* More headers (loadstore, mem_ops, rotate, types) for util modulelloyd2008-09-281-0/+279