]> git.proxmox.com Git - ceph.git/blame - ceph/src/dpdk/lib/librte_eal/common/include/generic/rte_memcpy.h
bump version to 12.2.12-pve1
[ceph.git] / ceph / src / dpdk / lib / librte_eal / common / include / generic / rte_memcpy.h
CommitLineData
7c673cae
FG
1/*-
2 * BSD LICENSE
3 *
4 * Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * * Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the
16 * distribution.
17 * * Neither the name of Intel Corporation nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34#ifndef _RTE_MEMCPY_H_
35#define _RTE_MEMCPY_H_
36
37/**
38 * @file
39 *
40 * Functions for vectorised implementation of memcpy().
41 */
42
43/**
44 * Copy 16 bytes from one location to another using optimised
45 * instructions. The locations should not overlap.
46 *
47 * @param dst
48 * Pointer to the destination of the data.
49 * @param src
50 * Pointer to the source data.
51 */
52static inline void
53rte_mov16(uint8_t *dst, const uint8_t *src);
54
55/**
56 * Copy 32 bytes from one location to another using optimised
57 * instructions. The locations should not overlap.
58 *
59 * @param dst
60 * Pointer to the destination of the data.
61 * @param src
62 * Pointer to the source data.
63 */
64static inline void
65rte_mov32(uint8_t *dst, const uint8_t *src);
66
67#ifdef __DOXYGEN__
68
69/**
70 * Copy 48 bytes from one location to another using optimised
71 * instructions. The locations should not overlap.
72 *
73 * @param dst
74 * Pointer to the destination of the data.
75 * @param src
76 * Pointer to the source data.
77 */
78static inline void
79rte_mov48(uint8_t *dst, const uint8_t *src);
80
81#endif /* __DOXYGEN__ */
82
83/**
84 * Copy 64 bytes from one location to another using optimised
85 * instructions. The locations should not overlap.
86 *
87 * @param dst
88 * Pointer to the destination of the data.
89 * @param src
90 * Pointer to the source data.
91 */
92static inline void
93rte_mov64(uint8_t *dst, const uint8_t *src);
94
95/**
96 * Copy 128 bytes from one location to another using optimised
97 * instructions. The locations should not overlap.
98 *
99 * @param dst
100 * Pointer to the destination of the data.
101 * @param src
102 * Pointer to the source data.
103 */
104static inline void
105rte_mov128(uint8_t *dst, const uint8_t *src);
106
107/**
108 * Copy 256 bytes from one location to another using optimised
109 * instructions. The locations should not overlap.
110 *
111 * @param dst
112 * Pointer to the destination of the data.
113 * @param src
114 * Pointer to the source data.
115 */
116static inline void
117rte_mov256(uint8_t *dst, const uint8_t *src);
118
119#ifdef __DOXYGEN__
120
121/**
122 * Copy bytes from one location to another. The locations must not overlap.
123 *
124 * @note This is implemented as a macro, so it's address should not be taken
125 * and care is needed as parameter expressions may be evaluated multiple times.
126 *
127 * @param dst
128 * Pointer to the destination of the data.
129 * @param src
130 * Pointer to the source data.
131 * @param n
132 * Number of bytes to copy.
133 * @return
134 * Pointer to the destination data.
135 */
136static void *
137rte_memcpy(void *dst, const void *src, size_t n);
138
139#endif /* __DOXYGEN__ */
140
141#endif /* _RTE_MEMCPY_H_ */