diff options
Diffstat (limited to 'lib/zstd/common/mem.h')
-rw-r--r-- | lib/zstd/common/mem.h | 259 |
1 files changed, 0 insertions, 259 deletions
diff --git a/lib/zstd/common/mem.h b/lib/zstd/common/mem.h deleted file mode 100644 index dcdd586a9f..0000000000 --- a/lib/zstd/common/mem.h +++ /dev/null @@ -1,259 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */ -/* - * Copyright (c) Yann Collet, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under both the BSD-style license (found in the - * LICENSE file in the root directory of this source tree) and the GPLv2 (found - * in the COPYING file in the root directory of this source tree). - * You may select, at your option, one of the above-listed licenses. - */ - -#ifndef MEM_H_MODULE -#define MEM_H_MODULE - -/*-**************************************** -* Dependencies -******************************************/ -#include <asm/unaligned.h> /* get_unaligned, put_unaligned* */ -#include <linux/compiler.h> /* inline */ -#include <linux/swab.h> /* swab32, swab64 */ -#include <linux/types.h> /* size_t, ptrdiff_t */ -#include "debug.h" /* DEBUG_STATIC_ASSERT */ - -/*-**************************************** -* Compiler specifics -******************************************/ -#define MEM_STATIC static inline - -/*-************************************************************** -* Basic Types -*****************************************************************/ -typedef uint8_t BYTE; -typedef uint16_t U16; -typedef int16_t S16; -typedef uint32_t U32; -typedef int32_t S32; -typedef uint64_t U64; -typedef int64_t S64; - -/*-************************************************************** -* Memory I/O API -*****************************************************************/ -/*=== Static platform detection ===*/ -MEM_STATIC unsigned MEM_32bits(void); -MEM_STATIC unsigned MEM_64bits(void); -MEM_STATIC unsigned MEM_isLittleEndian(void); - -/*=== Native unaligned read/write ===*/ -MEM_STATIC U16 MEM_read16(const void* memPtr); -MEM_STATIC U32 MEM_read32(const void* memPtr); -MEM_STATIC U64 MEM_read64(const void* memPtr); -MEM_STATIC size_t MEM_readST(const void* memPtr); - -MEM_STATIC void MEM_write16(void* memPtr, U16 value); -MEM_STATIC void MEM_write32(void* memPtr, U32 value); -MEM_STATIC void MEM_write64(void* memPtr, U64 value); - -/*=== Little endian unaligned read/write ===*/ -MEM_STATIC U16 MEM_readLE16(const void* memPtr); -MEM_STATIC U32 MEM_readLE24(const void* memPtr); -MEM_STATIC U32 MEM_readLE32(const void* memPtr); -MEM_STATIC U64 MEM_readLE64(const void* memPtr); -MEM_STATIC size_t MEM_readLEST(const void* memPtr); - -MEM_STATIC void MEM_writeLE16(void* memPtr, U16 val); -MEM_STATIC void MEM_writeLE24(void* memPtr, U32 val); -MEM_STATIC void MEM_writeLE32(void* memPtr, U32 val32); -MEM_STATIC void MEM_writeLE64(void* memPtr, U64 val64); -MEM_STATIC void MEM_writeLEST(void* memPtr, size_t val); - -/*=== Big endian unaligned read/write ===*/ -MEM_STATIC U32 MEM_readBE32(const void* memPtr); -MEM_STATIC U64 MEM_readBE64(const void* memPtr); -MEM_STATIC size_t MEM_readBEST(const void* memPtr); - -MEM_STATIC void MEM_writeBE32(void* memPtr, U32 val32); -MEM_STATIC void MEM_writeBE64(void* memPtr, U64 val64); -MEM_STATIC void MEM_writeBEST(void* memPtr, size_t val); - -/*=== Byteswap ===*/ -MEM_STATIC U32 MEM_swap32(U32 in); -MEM_STATIC U64 MEM_swap64(U64 in); -MEM_STATIC size_t MEM_swapST(size_t in); - -/*-************************************************************** -* Memory I/O Implementation -*****************************************************************/ -MEM_STATIC unsigned MEM_32bits(void) -{ - return sizeof(size_t) == 4; -} - -MEM_STATIC unsigned MEM_64bits(void) -{ - return sizeof(size_t) == 8; -} - -#if defined(__LITTLE_ENDIAN) -#define MEM_LITTLE_ENDIAN 1 -#else -#define MEM_LITTLE_ENDIAN 0 -#endif - -MEM_STATIC unsigned MEM_isLittleEndian(void) -{ - return MEM_LITTLE_ENDIAN; -} - -MEM_STATIC U16 MEM_read16(const void *memPtr) -{ - return get_unaligned((const U16 *)memPtr); -} - -MEM_STATIC U32 MEM_read32(const void *memPtr) -{ - return get_unaligned((const U32 *)memPtr); -} - -MEM_STATIC U64 MEM_read64(const void *memPtr) -{ - return get_unaligned((const U64 *)memPtr); -} - -MEM_STATIC size_t MEM_readST(const void *memPtr) -{ - return get_unaligned((const size_t *)memPtr); -} - -MEM_STATIC void MEM_write16(void *memPtr, U16 value) -{ - put_unaligned(value, (U16 *)memPtr); -} - -MEM_STATIC void MEM_write32(void *memPtr, U32 value) -{ - put_unaligned(value, (U32 *)memPtr); -} - -MEM_STATIC void MEM_write64(void *memPtr, U64 value) -{ - put_unaligned(value, (U64 *)memPtr); -} - -/*=== Little endian r/w ===*/ - -MEM_STATIC U16 MEM_readLE16(const void *memPtr) -{ - return get_unaligned_le16(memPtr); -} - -MEM_STATIC void MEM_writeLE16(void *memPtr, U16 val) -{ - put_unaligned_le16(val, memPtr); -} - -MEM_STATIC U32 MEM_readLE24(const void *memPtr) -{ - return MEM_readLE16(memPtr) + (((const BYTE *)memPtr)[2] << 16); -} - -MEM_STATIC void MEM_writeLE24(void *memPtr, U32 val) -{ - MEM_writeLE16(memPtr, (U16)val); - ((BYTE *)memPtr)[2] = (BYTE)(val >> 16); -} - -MEM_STATIC U32 MEM_readLE32(const void *memPtr) -{ - return get_unaligned_le32(memPtr); -} - -MEM_STATIC void MEM_writeLE32(void *memPtr, U32 val32) -{ - put_unaligned_le32(val32, memPtr); -} - -MEM_STATIC U64 MEM_readLE64(const void *memPtr) -{ - return get_unaligned_le64(memPtr); -} - -MEM_STATIC void MEM_writeLE64(void *memPtr, U64 val64) -{ - put_unaligned_le64(val64, memPtr); -} - -MEM_STATIC size_t MEM_readLEST(const void *memPtr) -{ - if (MEM_32bits()) - return (size_t)MEM_readLE32(memPtr); - else - return (size_t)MEM_readLE64(memPtr); -} - -MEM_STATIC void MEM_writeLEST(void *memPtr, size_t val) -{ - if (MEM_32bits()) - MEM_writeLE32(memPtr, (U32)val); - else - MEM_writeLE64(memPtr, (U64)val); -} - -/*=== Big endian r/w ===*/ - -MEM_STATIC U32 MEM_readBE32(const void *memPtr) -{ - return get_unaligned_be32(memPtr); -} - -MEM_STATIC void MEM_writeBE32(void *memPtr, U32 val32) -{ - put_unaligned_be32(val32, memPtr); -} - -MEM_STATIC U64 MEM_readBE64(const void *memPtr) -{ - return get_unaligned_be64(memPtr); -} - -MEM_STATIC void MEM_writeBE64(void *memPtr, U64 val64) -{ - put_unaligned_be64(val64, memPtr); -} - -MEM_STATIC size_t MEM_readBEST(const void *memPtr) -{ - if (MEM_32bits()) - return (size_t)MEM_readBE32(memPtr); - else - return (size_t)MEM_readBE64(memPtr); -} - -MEM_STATIC void MEM_writeBEST(void *memPtr, size_t val) -{ - if (MEM_32bits()) - MEM_writeBE32(memPtr, (U32)val); - else - MEM_writeBE64(memPtr, (U64)val); -} - -MEM_STATIC U32 MEM_swap32(U32 in) -{ - return swab32(in); -} - -MEM_STATIC U64 MEM_swap64(U64 in) -{ - return swab64(in); -} - -MEM_STATIC size_t MEM_swapST(size_t in) -{ - if (MEM_32bits()) - return (size_t)MEM_swap32((U32)in); - else - return (size_t)MEM_swap64((U64)in); -} - -#endif /* MEM_H_MODULE */ |