mirror of https://github.com/F-Stack/f-stack.git
113 lines
2.6 KiB
C
113 lines
2.6 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright(c) 2010-2014 Intel Corporation
|
|
*/
|
|
|
|
#ifndef _RTE_MEMCPY_H_
|
|
#define _RTE_MEMCPY_H_
|
|
|
|
/**
|
|
* @file
|
|
*
|
|
* Functions for vectorised implementation of memcpy().
|
|
*/
|
|
|
|
/**
|
|
* Copy 16 bytes from one location to another using optimised
|
|
* instructions. The locations should not overlap.
|
|
*
|
|
* @param dst
|
|
* Pointer to the destination of the data.
|
|
* @param src
|
|
* Pointer to the source data.
|
|
*/
|
|
static inline void
|
|
rte_mov16(uint8_t *dst, const uint8_t *src);
|
|
|
|
/**
|
|
* Copy 32 bytes from one location to another using optimised
|
|
* instructions. The locations should not overlap.
|
|
*
|
|
* @param dst
|
|
* Pointer to the destination of the data.
|
|
* @param src
|
|
* Pointer to the source data.
|
|
*/
|
|
static inline void
|
|
rte_mov32(uint8_t *dst, const uint8_t *src);
|
|
|
|
#ifdef __DOXYGEN__
|
|
|
|
/**
|
|
* Copy 48 bytes from one location to another using optimised
|
|
* instructions. The locations should not overlap.
|
|
*
|
|
* @param dst
|
|
* Pointer to the destination of the data.
|
|
* @param src
|
|
* Pointer to the source data.
|
|
*/
|
|
static inline void
|
|
rte_mov48(uint8_t *dst, const uint8_t *src);
|
|
|
|
#endif /* __DOXYGEN__ */
|
|
|
|
/**
|
|
* Copy 64 bytes from one location to another using optimised
|
|
* instructions. The locations should not overlap.
|
|
*
|
|
* @param dst
|
|
* Pointer to the destination of the data.
|
|
* @param src
|
|
* Pointer to the source data.
|
|
*/
|
|
static inline void
|
|
rte_mov64(uint8_t *dst, const uint8_t *src);
|
|
|
|
/**
|
|
* Copy 128 bytes from one location to another using optimised
|
|
* instructions. The locations should not overlap.
|
|
*
|
|
* @param dst
|
|
* Pointer to the destination of the data.
|
|
* @param src
|
|
* Pointer to the source data.
|
|
*/
|
|
static inline void
|
|
rte_mov128(uint8_t *dst, const uint8_t *src);
|
|
|
|
/**
|
|
* Copy 256 bytes from one location to another using optimised
|
|
* instructions. The locations should not overlap.
|
|
*
|
|
* @param dst
|
|
* Pointer to the destination of the data.
|
|
* @param src
|
|
* Pointer to the source data.
|
|
*/
|
|
static inline void
|
|
rte_mov256(uint8_t *dst, const uint8_t *src);
|
|
|
|
#ifdef __DOXYGEN__
|
|
|
|
/**
|
|
* Copy bytes from one location to another. The locations must not overlap.
|
|
*
|
|
* @note This is implemented as a macro, so it's address should not be taken
|
|
* and care is needed as parameter expressions may be evaluated multiple times.
|
|
*
|
|
* @param dst
|
|
* Pointer to the destination of the data.
|
|
* @param src
|
|
* Pointer to the source data.
|
|
* @param n
|
|
* Number of bytes to copy.
|
|
* @return
|
|
* Pointer to the destination data.
|
|
*/
|
|
static void *
|
|
rte_memcpy(void *dst, const void *src, size_t n);
|
|
|
|
#endif /* __DOXYGEN__ */
|
|
|
|
#endif /* _RTE_MEMCPY_H_ */
|