56 return std::numeric_limits<std::size_t>::max() /
sizeof(T);
63 std::cerr <<
"Allocator: allocate " << num <<
" element(s)"
64 <<
" of size " <<
sizeof(T) << std::endl;
66 pointer ret =
reinterpret_cast<pointer>(
operator new(num*
sizeof(T)) );
68 std::cerr <<
" allocated at: " << (
void*)ret << std::endl;
77 std::cerr <<
"Allocator: construct " << p << std::endl;
83 std::cerr <<
"done." << std::endl;
91 std::cerr <<
"Allocator: destroy " << p << std::endl;
95 std::cerr <<
"done." << std::endl;
103 std::cerr <<
"Allocator: deallocate " << num <<
" element(s)"
104 <<
" of size " <<
sizeof(T)
105 <<
" at: " <<
static_cast<void*
>(p) << std::endl;
107 operator delete(
static_cast<void*
>(p), num*
sizeof(T));
109 std::cerr <<
"done." << std::endl;
114 void *
operator new(
size_t size,
void *ptr) { return ::operator
new(size, ptr);}
115 void *
operator new[](
size_t size,
void *ptr) { return ::operator
new(size, ptr);}
116 void *
operator new(
size_t size) {
return _mm_malloc(size, 16); }
117 void *
operator new[](
size_t size) {
return _mm_malloc(size, 16); }
118 void operator delete(
void *ptr, size_t) { _mm_free(ptr); }
119 void operator delete[](
void *ptr, size_t) { _mm_free(ptr); }
123 template <
class T1,
class T2>
128 template <
class T1,
class T2>
142 typedef std::vector<T, SimdAlloc<T> >
TSimd;
pointer allocate(size_type num, const void *=0)
const T & const_reference
void deallocate(pointer p, size_type num)
void construct(pointer p, const T &value)
pointer address(reference value) const
size_type max_size() const
const_pointer address(const_reference value) const
std::ptrdiff_t difference_type
SimdAlloc(const SimdAlloc &)
SimdAlloc(const SimdAlloc< U > &)
nsL1::vector< fvec >::TSimd vector_fvec
bool operator==(const SimdAlloc< T1 > &, const SimdAlloc< T2 > &)
bool operator!=(const SimdAlloc< T1 > &, const SimdAlloc< T2 > &)
std::vector< T, SimdAlloc< T > > TSimd