| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Both about 33% faster on Skylake
|
|
|
|
|
|
|
| |
It was only needed for one case which is easily hardcoded. Include
rotate.h in all the source files that actually use rotr/rotl but
implicitly picked it up via loadstor.h -> bswap.h -> rotate.h include
chain.
|
|
|
|
|
| |
Currently just a copy of the baseline compression function, but
compiled with BMI2 flags. On Skylake improves performance by about 40%.
|
| |
|
|
|
|
| |
Lack of these broke single file amalgamation (GH #1386)
|
|
|
|
|
|
| |
This breaks how we determine the ISA flags for amalgamation files.
The code for doing that is kind of a hack but I don't want to mess
with it right now, easier to just rename the ISA internally.
|
|
|
|
| |
Simplifies macro generation
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The problem with asm rol/ror is the compiler can't schedule effectively.
But we only need asm in the case when the rotation is variable, so distinguish
the two cases. If a compile time constant, then static_assert that the rotation
is in the correct range and do the straightforward expression knowing the compiler
will probably do the right thing. Otherwise do a tricky expression that both
GCC and Clang happen to have recognize. Avoid the reduction case; instead
require that the rotation be in range (this reverts 2b37c13dcf).
Remove the asm rotations (making this branch illnamed), because now both Clang
and GCC will create a roll without any extra help.
Remove the reduction/mask by the word size for the variable case. The compiler
can't optimize that it out well, but it's easy to ensure it is valid in the callers,
especially now that the variable input cases are easy to grep for.
|
|
|
|
|
|
| |
ISO C++ reserves names with double underscores in them
Closes #512
|
|
|
|
|
| |
Defined in build.h, all equal to BOTAN_DLL so ties into existing
system for exporting symbols.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While using marketing names like 2013, 2015 etc. is more convenient at
first sight, it requires keeping a table about all supported compiler
versions, as there is no formular to calculate between the
representations.
Keeping a list of compilers leads to the following issue: if one version
of Botan is released in 2017, requiring MSVS 2015 for one module, this
source can be compiled using MSVS 2015 and 2017 but not a future version
like 2019.
Also preview/development versions of MSVC that may use an intermediate
version number cannot be handled with the marketing name table because
they may be unknown to the general public.
|
| |
|
|
|
|
|
|
|
| |
function declaration is already hidden, fix some param names in doxygen
comments, fixes #1067
This work was sponsored by Ribose Inc (@riboseinc).
|
|\ |
|
| |
| |
| |
| | |
See GH #1037
|
| |
| |
| |
| |
| |
| |
| | |
Works everywhere but Apple Clang. Could handle this with a hack
to configure but running ARMv8 in 32-bit mode is rare and suboptimal,
and it would be better to deal with this using compile-time feature
detection.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Fix for new define syntax, remove old style casts.
Add some randomly generated longer SHA-256 vectors, previously had
precisely zero multiblock tests.
|
|/
|
|
| |
Based on patch from Jeffrey Walton in GH #841
|
| |
|
|
|
|
| |
Based on GH #807 and #808
|
| |
|
|
|
|
|
|
| |
Renames a couple of functions for somewhat better name consistency,
eg make_u32bit becomes make_uint32. The old typedefs remain for now
since probably lots of application code uses them.
|
|
|
|
|
|
|
| |
In some cases this can offer better optimization, via devirtualization.
And it lets the user know the class is not intended for derivation.
Some discussion in GH #402
|
| |
|
|
|
|
| |
Only user-visible change is the removal of get_byte.h
|
|
|
|
|
|
|
|
|
|
|
| |
The support problems from having static libraries not work in the
obvious way will be endless trouble. Instead have each set of
registrations tag along in a source file for the basic type, at the
cost of some extra ifdefs. On shared libs this is harmless -
everything is going into the shared object anyway. With static libs,
this means pulling in a single block cipher pulls in the text of all
the them. But that's still strictly better than the amalgamation
(which is really pulling in everything), and it works (unlike status quo).
|
| |
|
| |
|
|
|
|
|
| |
Update license header line to specify the terms and refer to the file,
neither of which it included before.
|
|
|
|
|
| |
Define some new functions for copying out arrays of words and use them
across hashes.
|
|
|