Path: blob/main/system/lib/llvm-libc/include/llvm-libc-macros/endian-macros.h
6182 views
//===-- Definition of macros from endian.h --------------------------------===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#ifndef LLVM_LIBC_MACROS_ENDIAN_MACROS_H9#define LLVM_LIBC_MACROS_ENDIAN_MACROS_H1011#include "stdint-macros.h"1213#define LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__14#define BIG_ENDIAN __ORDER_BIG_ENDIAN__15#define BYTE_ORDER __BYTE_ORDER__1617#if BYTE_ORDER == LITTLE_ENDIAN1819#define htobe16(x) __builtin_bswap16((x))20#define htobe32(x) __builtin_bswap32((x))21#define htobe64(x) __builtin_bswap64((x))22#define htole16(x) __LLVM_LIBC_CAST(static_cast, uint16_t, x)23#define htole32(x) __LLVM_LIBC_CAST(static_cast, uint32_t, x)24#define htole64(x) __LLVM_LIBC_CAST(static_cast, uint64_t, x)25#define be16toh(x) __builtin_bswap16((x))26#define be32toh(x) __builtin_bswap32((x))27#define be64toh(x) __builtin_bswap64((x))28#define le16toh(x) __LLVM_LIBC_CAST(static_cast, uint16_t, x)29#define le32toh(x) __LLVM_LIBC_CAST(static_cast, uint32_t, x)30#define le64toh(x) __LLVM_LIBC_CAST(static_cast, uint64_t, x)3132#else3334#define htobe16(x) __LLVM_LIBC_CAST(static_cast, uint16_t, x)35#define htobe32(x) __LLVM_LIBC_CAST(static_cast, uint32_t, x)36#define htobe64(x) __LLVM_LIBC_CAST(static_cast, uint64_t, x)37#define htole16(x) __builtin_bswap16((x))38#define htole32(x) __builtin_bswap32((x))39#define htole64(x) __builtin_bswap64((x))40#define be16toh(x) __LLVM_LIBC_CAST(static_cast, uint16_t, x)41#define be32toh(x) __LLVM_LIBC_CAST(static_cast, uint32_t, x)42#define be64toh(x) __LLVM_LIBC_CAST(static_cast, uint64_t, x)43#define le16toh(x) __builtin_bswap16((x))44#define le32toh(x) __builtin_bswap32((x))45#define le64toh(x) __builtin_bswap64((x))4647#endif4849#endif // LLVM_LIBC_MACROS_ENDIAN_MACROS_H505152