#include <mmintrin.h>#include <emmintrin.h>#include <smmintrin.h>#include "bmdef.h"#include "bmsse_util.h"

Go to the source code of this file.
Namespaces | |
| namespace | bm |
Defines | |
| #define | VECT_XOR_ARR_2_MASK(dst, src, src_end, mask) sse2_xor_arr_2_mask((__m128i*)(dst), (__m128i*)(src), (__m128i*)(src_end), mask) |
| #define | VECT_ANDNOT_ARR_2_MASK(dst, src, src_end, mask) sse2_andnot_arr_2_mask((__m128i*)(dst), (__m128i*)(src), (__m128i*)(src_end), mask) |
| #define | VECT_BITCOUNT(first, last) sse4_bit_count((__m128i*) (first), (__m128i*) (last)) |
| #define | VECT_BITCOUNT_AND(first, last, mask) sse4_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_and) |
| #define | VECT_BITCOUNT_OR(first, last, mask) sse4_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_or) |
| #define | VECT_BITCOUNT_XOR(first, last, mask) sse4_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_xor) |
| #define | VECT_BITCOUNT_SUB(first, last, mask) sse4_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_sub) |
| #define | VECT_INVERT_ARR(first, last) sse2_invert_arr(first, last); |
| #define | VECT_AND_ARR(dst, src, src_end) sse2_and_arr((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end)) |
| #define | VECT_OR_ARR(dst, src, src_end) sse2_or_arr((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end)) |
| #define | VECT_SUB_ARR(dst, src, src_end) sse2_sub_arr((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end)) |
| #define | VECT_XOR_ARR(dst, src, src_end) sse2_xor_arr((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end)) |
| #define | VECT_COPY_BLOCK(dst, src, src_end) sse2_copy_block((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end)) |
| #define | VECT_SET_BLOCK(dst, dst_end, value) sse2_set_block((__m128i*) dst, (__m128i*) (dst_end), (value)) |
Functions | |
| bm::id_t | bm::sse4_bit_count (const __m128i *block, const __m128i *block_end) |
| BMFORCEINLINE unsigned | bm::op_xor (unsigned a, unsigned b) |
| BMFORCEINLINE unsigned | bm::op_or (unsigned a, unsigned b) |
| BMFORCEINLINE unsigned | bm::op_and (unsigned a, unsigned b) |
| template<class Func > | |
| bm::id_t | bm::sse4_bit_count_op (const __m128i *BMRESTRICT block, const __m128i *BMRESTRICT block_end, const __m128i *BMRESTRICT mask_block, Func sse2_func) |
| bm::id_t | bm::sse4_bit_block_calc_count_change (const __m128i *BMRESTRICT block, const __m128i *BMRESTRICT block_end, unsigned *BMRESTRICT bit_count) |
| #define VECT_AND_ARR | ( | dst, | |||
| src, | |||||
| src_end | ) | sse2_and_arr((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end)) |
Definition at line 213 of file bmsse4.h.
Referenced by bm::bit_block_and().
| #define VECT_ANDNOT_ARR_2_MASK | ( | dst, | |||
| src, | |||||
| src_end, | |||||
| mask | ) | sse2_andnot_arr_2_mask((__m128i*)(dst), (__m128i*)(src), (__m128i*)(src_end), mask) |
| #define VECT_BITCOUNT | ( | first, | |||
| last | ) | sse4_bit_count((__m128i*) (first), (__m128i*) (last)) |
Definition at line 195 of file bmsse4.h.
Referenced by bm::bit_block_calc_count().
| #define VECT_BITCOUNT_AND | ( | first, | |||
| last, | |||||
| mask | ) | sse4_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_and) |
Definition at line 198 of file bmsse4.h.
Referenced by bm::bit_block_and_count().
| #define VECT_BITCOUNT_OR | ( | first, | |||
| last, | |||||
| mask | ) | sse4_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_or) |
Definition at line 201 of file bmsse4.h.
Referenced by bm::bit_block_or_count().
| #define VECT_BITCOUNT_SUB | ( | first, | |||
| last, | |||||
| mask | ) | sse4_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_sub) |
Definition at line 207 of file bmsse4.h.
Referenced by bm::bit_block_sub_count().
| #define VECT_BITCOUNT_XOR | ( | first, | |||
| last, | |||||
| mask | ) | sse4_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_xor) |
Definition at line 204 of file bmsse4.h.
Referenced by bm::bit_block_xor_count().
| #define VECT_COPY_BLOCK | ( | dst, | |||
| src, | |||||
| src_end | ) | sse2_copy_block((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end)) |
Definition at line 225 of file bmsse4.h.
Referenced by bm::bit_block_copy().
| #define VECT_INVERT_ARR | ( | first, | |||
| last | ) | sse2_invert_arr(first, last); |
Definition at line 210 of file bmsse4.h.
Referenced by bm::bit_invert().
| #define VECT_OR_ARR | ( | dst, | |||
| src, | |||||
| src_end | ) | sse2_or_arr((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end)) |
Definition at line 216 of file bmsse4.h.
Referenced by bm::bit_block_or().
| #define VECT_SET_BLOCK | ( | dst, | |||
| dst_end, | |||||
| value | ) | sse2_set_block((__m128i*) dst, (__m128i*) (dst_end), (value)) |
| #define VECT_SUB_ARR | ( | dst, | |||
| src, | |||||
| src_end | ) | sse2_sub_arr((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end)) |
Definition at line 219 of file bmsse4.h.
Referenced by bm::bit_block_sub().
| #define VECT_XOR_ARR | ( | dst, | |||
| src, | |||||
| src_end | ) | sse2_xor_arr((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end)) |
Definition at line 222 of file bmsse4.h.
Referenced by bm::bit_block_xor().
1.6.1