Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Namespace Members | Data Fields | Globals | Examples

bmsse2.h File Reference

#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)


Define Documentation

#define VECT_AND_ARR dst,
src,
src_end   )     sse2_and_arr((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end))
 

Definition at line 587 of file bmsse2.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)
 

Definition at line 566 of file bmsse2.h.

#define VECT_BITCOUNT first,
last   )     sse2_bit_count((__m128i*) (first), (__m128i*) (last))
 

Definition at line 569 of file bmsse2.h.

#define VECT_BITCOUNT_AND first,
last,
mask   )     sse2_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_and)
 

Definition at line 572 of file bmsse2.h.

Referenced by bm::bit_block_and_count().

#define VECT_BITCOUNT_OR first,
last,
mask   )     sse2_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_or)
 

Definition at line 575 of file bmsse2.h.

Referenced by bm::bit_block_or_count().

#define VECT_BITCOUNT_SUB first,
last,
mask   )     sse2_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_sub)
 

Definition at line 581 of file bmsse2.h.

Referenced by bm::bit_block_sub_count().

#define VECT_BITCOUNT_XOR first,
last,
mask   )     sse2_bit_count_op((__m128i*) (first), (__m128i*) (last), (__m128i*) (mask), sse2_xor)
 

Definition at line 578 of file bmsse2.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 599 of file bmsse2.h.

Referenced by bm::bit_block_copy().

#define VECT_INVERT_ARR first,
last   )     sse2_invert_arr(first, last);
 

Definition at line 584 of file bmsse2.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 590 of file bmsse2.h.

Referenced by bm::bit_block_or().

#define VECT_SET_BLOCK dst,
dst_end,
value   )     sse2_set_block((__m128i*) dst, (__m128i*) (dst_end), (value))
 

Definition at line 602 of file bmsse2.h.

#define VECT_SUB_ARR dst,
src,
src_end   )     sse2_sub_arr((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end))
 

Definition at line 593 of file bmsse2.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 596 of file bmsse2.h.

Referenced by bm::bit_block_xor().

#define VECT_XOR_ARR_2_MASK dst,
src,
src_end,
mask   )     sse2_xor_arr_2_mask((__m128i*)(dst), (__m128i*)(src), (__m128i*)(src_end), mask)
 

Definition at line 563 of file bmsse2.h.


Function Documentation

BMFORCEINLINE __m128i sse2_and __m128i  a,
__m128i  b
 

Definition at line 472 of file bmsse2.h.

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 498 of file bmsse2.h.

BMFORCEINLINE __m128i sse2_or __m128i  a,
__m128i  b
 

Definition at line 478 of file bmsse2.h.

BMFORCEINLINE __m128i sse2_sub __m128i  a,
__m128i  b
 

Definition at line 491 of file bmsse2.h.

BMFORCEINLINE __m128i sse2_xor __m128i  a,
__m128i  b
 

Definition at line 485 of file bmsse2.h.


Generated on Sun Aug 5 14:12:30 2007 for BitMagic by  doxygen 1.4.1