Something of an fs infra library (Intel AVX2 accelerated) for C++17
arkana::ark: A useful infra library collection (header-only library)
- intrinsics.h: Type conversion, Bit-manipulation, Multi-precision arithmetic helper
- cpuid.h: CPU feature flag loader
- uint128.h: Unsigned 128 bit integer and bitwise-, arithmetic-, and comparing- operators
- xmm.h: Typed SSE/AVX integer vector operation wraper library (vu32x4, vu16x16, etc)
- lutgen.h: Compile-time LUT generation helper
- hexilit.h: Compile-time hexadecimal-integer parser
- base64.h: Compile-time base64 decoder
arkana::camellia: Camellia Encryption Algorithm (ECB-mode: RFC 3713 / CTR-mode: RFC 5528)
- camellia-ref.h: Reference implementation
- camellia-avx2.h: AVX2 LUT accelerated implementation (approx. 2x faster than ref-impl)
- camellia-avx2aesni.h: AVX2-AESNI accelerated implementation (based on "Block Ciphers: Fast Implementations on x86-64 Architecture" -- Oulu : J. Kivilinna, 2013) (approx. 6x faster than ref-impl)
arkana::crc32: CRC-32 (ISO 3309)
- crc32-ref.h: Reference implementation
- crc32-ia32.h: IA32 loop-unrolling implementation (approx. 6x faster than ref-impl)
- crc32-avx2.h: AVX2 LUT accelerated implementation (approx. 7x faster than ref-impl)
- crc32-avx2clmul.h: pclmul accelerated implementation (based on "Fast CRC Computation for Generic Polynomials Using PCLMULQDQ Instruction" -- V. Gopal, E. Ozturk, J. Guilford, et al., 2009) (approx. 20x faster than ref-impl)
arkana::sha2: SHA-1, SHA-2(SHA-256,SHA-224,SHA-512,SHA-384,SHA-512/224,SHA-512/256) (NIST FIPS PUB 180-4)
- sha2-ref.h: Reference implementation
- sha2-avx2.h: AVX2 accelerated implementation (based on "Fast SHA-256 Implementations on Intel® Architecture Processors" -- J. Guilford, K. Yap, V. Gopal, 2012)
- Tests for arkana.lib (using googletest)
- Include
arkana.lib.vcxproj
into your solution. - Reference it from your project.
Do cmake
.
MIT License Copyright (c) 2020-2022 ttsuki