# bmsse2.h File Reference

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

bm::id_t | bm::sse2_bit_count (const __m128i *block, const __m128i *block_end)
template<class Func >
bm::id_t | bm::sse2_bit_count_op (const __m128i *BMRESTRICT block, const __m128i *BMRESTRICT block_end, const __m128i *BMRESTRICT mask_block, Func sse2_func)
bm::id_t | bm::sse2_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 214 of file bmsse2.h.

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

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

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

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

Definition at line 202 of file bmsse2.h.

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

Definition at line 208 of file bmsse2.h.

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

Definition at line 205 of file bmsse2.h.

#define VECT_COPY_BLOCK | ( | dst,
|  | src,
|  | src_end |  | ) | sse2_copy_block((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end))

Definition at line 226 of file bmsse2.h.

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

Definition at line 211 of file bmsse2.h.

#define VECT_OR_ARR | ( | dst,
|  | src,
|  | src_end |  | ) | sse2_or_arr((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end))

Definition at line 217 of file bmsse2.h.

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

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

#define VECT_XOR_ARR | ( | dst,
|  | src,
|  | src_end |  | ) | sse2_xor_arr((__m128i*) dst, (__m128i*) (src), (__m128i*) (src_end))

Definition at line 223 of file bmsse2.h.

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