#include <emmintrin.h>
Include dependency graph for bmsse2.h:
This graph shows which files directly or indirectly include this file:
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) sse2_bit_count((__m128i*) (first), (__m128i*) (last)) |
#define | VECT_BITCOUNT_AND(first, last, mask) sse2_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_and) |
#define | VECT_BITCOUNT_OR(first, last, mask) sse2_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_or) |
#define | VECT_BITCOUNT_XOR(first, last, mask) sse2_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_xor) |
#define | VECT_BITCOUNT_SUB(first, last, mask) sse2_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 | |
BMFORCEINLINE void | sse2_xor_arr_2_mask (__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end, bm::word_t mask) |
XOR array elements to specified mask dst = *src ^ mask. | |
BMFORCEINLINE void | sse2_andnot_arr_2_mask (__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end, bm::word_t mask) |
Inverts array elements and NOT them to specified mask dst = ~*src & mask. | |
BMFORCEINLINE void | sse2_and_arr (__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end) |
AND array elements against another array dst &= *src. | |
BMFORCEINLINE void | sse2_or_arr (__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end) |
OR array elements against another array dst |= *src. | |
BMFORCEINLINE void | sse2_xor_arr (__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end) |
OR array elements against another array dst |= *src. | |
BMFORCEINLINE void | sse2_sub_arr (__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end) |
AND-NOT (SUB) array elements against another array dst &= ~*src. | |
BMFORCEINLINE void | sse2_set_block (__m128i *BMRESTRICT dst, __m128i *BMRESTRICT dst_end, bm::word_t value) |
SSE2 block memset dst = value. | |
BMFORCEINLINE void | sse2_copy_block (__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end) |
SSE2 block copy dst = *src. | |
BMFORCEINLINE void | sse2_invert_arr (bm::word_t *first, bm::word_t *last) |
Invert array elements dst = ~*dst or dst ^= *dst. | |
bm::id_t | sse2_bit_count (const __m128i *block, const __m128i *block_end) |
BMFORCEINLINE __m128i | sse2_and (__m128i a, __m128i b) |
BMFORCEINLINE __m128i | sse2_or (__m128i a, __m128i b) |
BMFORCEINLINE __m128i | sse2_xor (__m128i a, __m128i b) |
BMFORCEINLINE __m128i | sse2_sub (__m128i a, __m128i b) |
template<class Func> | |
bm::id_t | sse2_bit_count_op (const __m128i *BMRESTRICT block, const __m128i *BMRESTRICT block_end, const __m128i *BMRESTRICT mask_block, Func sse2_func) |
|
Definition at line 587 of file bmsse2.h. Referenced by bm::bit_block_and(). |
|
|
|
|
|
Definition at line 572 of file bmsse2.h. Referenced by bm::bit_block_and_count(). |
|
Definition at line 575 of file bmsse2.h. Referenced by bm::bit_block_or_count(). |
|
Definition at line 581 of file bmsse2.h. Referenced by bm::bit_block_sub_count(). |
|
Definition at line 578 of file bmsse2.h. Referenced by bm::bit_block_xor_count(). |
|
Definition at line 599 of file bmsse2.h. Referenced by bm::bit_block_copy(). |
|
Definition at line 584 of file bmsse2.h. Referenced by bm::bit_invert(). |
|
Definition at line 590 of file bmsse2.h. Referenced by bm::bit_block_or(). |
|
|
|
Definition at line 593 of file bmsse2.h. Referenced by bm::bit_block_sub(). |
|
Definition at line 596 of file bmsse2.h. Referenced by bm::bit_block_xor(). |
|
|
|
|
|
|
|
|
|
|
|
|