aboutsummaryrefslogtreecommitdiffstats
path: root/src/block/noekeon_simd
Commit message (Collapse)AuthorAgeFilesLines
* Fairly huge update that replaces the old secmem types with std::vectorlloyd2012-05-181-2/+2
| | | | | | using a custom allocator. Currently our allocator just does new/delete with a memset before deletion, and the mmap and mlock allocators have been removed.
* Split the SIMD implementations into their own modules and choose onelloyd2011-05-241-1/+1
| | | | at config time.
* Fix location of online docs in readmelloyd2011-04-151-2/+12
| | | | | | | | | | Some fixes for the Windows installer config Remove the SIMD rotate overloads; VC 2010 does not like passing a __m128i by value, which is required to match the template overload for the regular rotates. Could change it to a const reference, but I would worry this would inhibit compiler optimizations. Only used in one place (Noekeon), so just use the long expressions there.
* Use size_t rather than u32bit for the blocks argument of encrypt_nlloyd2010-10-122-6/+6
|
* s/u32bit/size_t/ for block cipher parallelism querieslloyd2010-10-121-1/+1
|
* Completely remove the second parameter to SecureVector which specifieslloyd2010-09-141-2/+2
| | | | | | | | | | | | | | | | | | | | the initial/default length of the array, update all users to instead pass the value to the constructor. This is a old vestigal thing from a class (SecureBuffer) that used this compile-time constant in order to store the values in an array. However this was changed way back in 2002 to use the same allocator hooks as the rest of the containers, so the only advantage to using the length field was that the initial length was set and didn't have to be set in the constructor which was midly convenient. However this directly conflicts with the desire to be able to (eventually) use std::vector with a custom allocator, since of course vector doesn't support this. Fortunately almost all of the uses are in classes which have only a single constructor, so there is little to no duplication by instead initializing the size in the constructor.
* Only call the scalar versions if we actually have leftover blocks tolloyd2010-06-221-2/+4
| | | | process
* In IDEA, Noekeon, Serpent, XTEA, provide and use ro accessor functionslloyd2010-06-211-0/+4
| | | | | for getting access to the key schedule, instead of giving the key schedule protected status, which is much harder tu audit.
* More Doxygen fixeslloyd2010-06-151-2/+2
|
* Change BlockCipher::parallelism() to return the native parallelism oflloyd2010-05-251-1/+1
| | | | | | | | | | | | | | | | | | | | the implementation rather than the preferred one. Update all implementations. Add a new function parallel_bytes() which returns parallelism() * BLOCK_SIZE * BUILD_TIME_CONSTANT This is because i noticed all current calls of parallelism() just multiplied the result by the block size already, so this simplified that code. The build time constant is set to 4, which was the previous default return value of parallelism(). However the SIMD versions returned 2*native paralellism rather than 4*, so this increases the buffer sizes used for those algorithms. The constant multiple lives in buildh.in and build.h, and is named BOTAN_BLOCK_CIPHER_PAR_MULT.
* Set parallelism defaults.lloyd2010-02-251-0/+2
| | | | | | | | Default unless specified is now 4. For SIMD code, use 2x the number of blocks which are processed in parallel using SIMD by that cipher. It may make sense to increase this to 4x or even more, further experimentation is necessary.
* Add SIMD version of Noekeon. On a Core2, about 2.7x faster using SIMD_SSE2lloyd2010-01-123-0/+197
and 1.6x faster using SIMD_Scalar.