Vector Optimized Library of Kernels
3.1.2
Architecture-tuned implementations of math kernels
Loading...
Searching...
No Matches
volk_alloc.hh
Go to the documentation of this file.
1
/* -*- C++ -*- */
2
/*
3
* Copyright 2019 Free Software Foundation, Inc.
4
*
5
* This file is part of VOLK
6
*
7
* SPDX-License-Identifier: LGPL-3.0-or-later
8
*/
9
10
#ifndef INCLUDED_VOLK_ALLOC_H
11
#define INCLUDED_VOLK_ALLOC_H
12
13
#include <cstdlib>
14
#include <limits>
15
#include <new>
16
#include <vector>
17
18
#include <volk/volk.h>
19
20
namespace
volk
{
21
28
template
<
class
T>
29
struct
alloc
{
30
typedef
T
value_type
;
31
32
alloc
() =
default
;
33
34
template
<
class
U>
35
constexpr
alloc
(
alloc<U>
const
&)
noexcept
36
{
37
}
38
39
T*
allocate
(std::size_t n)
40
{
41
if
(n > std::numeric_limits<std::size_t>::max() /
sizeof
(T))
42
throw
std::bad_alloc();
43
44
if
(
auto
p =
static_cast<
T*
>
(
volk_malloc
(n *
sizeof
(T), volk_get_alignment())))
45
return
p;
46
47
throw
std::bad_alloc();
48
}
49
50
void
deallocate
(T* p, std::size_t)
noexcept
{
volk_free
(p); }
51
};
52
53
template
<
class
T,
class
U>
54
bool
operator==
(
alloc<T>
const
&,
alloc<U>
const
&)
55
{
56
return
true
;
57
}
58
59
template
<
class
T,
class
U>
60
bool
operator!=
(
alloc<T>
const
&,
alloc<U>
const
&)
61
{
62
return
false
;
63
}
64
65
73
template
<
class
T>
74
using
vector
= std::vector<T, alloc<T>>;
75
76
}
// namespace volk
77
#endif
// INCLUDED_VOLK_ALLOC_H
include
volk
volk_alloc.hh
Generated by
1.9.8