The first production version of the litesimd library.
The following functions are implemented to AVX2 and SSE4.2:
- Algorithm functions
- iota
- min, max
- for_each, for_each_backward
- for_each_index, for_each_index_backward
- Arithmetic operations
- add, mulhi, mullo, sub
- Bitwise operations
- bit_and, bit_not, bit_or, bit_xor
- Comparison operations
- equal_to, equal_to_bitmask, equal_to_first_index, equal_to_last_index
- greater, greater_bitmask, greater_first_index, greater_last_index
- bitmask_first_index, bitmask_last_index
- mask_to_bitmask
- Helper classes and compatibility
- vector, string, ostream operator<<
- Intravector operations
- horizontal
- Register manipulation
- blend
- get, set
- high_insert, low_insert
- SIMD type
- simd_type
And the following samples:
- binary_search: Benchmark lower_bound implementations
- boyer_moore_horspool: Substring search using SIMD (WIP: still slower than boost, but faster than std::string::find)
- bubble_sort: Classic bubble sort in SIMD style
- greater: Simple greater than sample (the same of readme)
- nway_tree: Another approach for same lower_bound search, using trees
- to_lower: ASCII to_lower benchmark