bmsse4.h File Reference

#include <mmintrin.h>
#include <emmintrin.h>
#include <smmintrin.h>
#include "bmdef.h"
#include "bmsse_util.h"
Include dependency graph for bmsse4.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)   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 Documentation

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

Definition at line 219 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)

Definition at line 198 of file bmsse4.h.

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

Definition at line 201 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 204 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 207 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 213 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 210 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 231 of file bmsse4.h.

Referenced by bm::bit_block_copy().

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

Definition at line 216 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 222 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))

Definition at line 234 of file bmsse4.h.

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

Definition at line 225 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 228 of file bmsse4.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 195 of file bmsse4.h.


Generated on Sun Apr 25 09:37:33 2010 for BitMagic by  doxygen 1.6.1