Created
December 15, 2024 21:07
-
-
Save ryancdotorg/40e8576a91d9e1bd8e1280490432bf42 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#pragma once | |
/* automatically generated */ | |
#define U64H2BE(V) __extension__({ \ | |
uint64_t _v = (V); \ | |
uint8_t _t[8]; \ | |
_t[0] = (_v & UINT64_C(0xFF00000000000000)) >> 56; \ | |
_t[1] = (_v & UINT64_C(0x00FF000000000000)) >> 48; \ | |
_t[2] = (_v & UINT64_C(0x0000FF0000000000)) >> 40; \ | |
_t[3] = (_v & UINT64_C(0x000000FF00000000)) >> 32; \ | |
_t[4] = (_v & UINT64_C(0x00000000FF000000)) >> 24; \ | |
_t[5] = (_v & UINT64_C(0x0000000000FF0000)) >> 16; \ | |
_t[6] = (_v & UINT64_C(0x000000000000FF00)) >> 8; \ | |
_t[7] = (_v & UINT64_C(0x00000000000000FF)) >> 0; \ | |
*((uint64_t*)_t); \ | |
}) | |
#define U64BE2H(V) __extension__({ \ | |
uint64_t _v = (V); \ | |
uint8_t *_t = (uint8_t*)&_v; \ | |
uint64_t _r = 0; \ | |
_r |= ((uint64_t)_t[0]) << 56; \ | |
_r |= ((uint64_t)_t[1]) << 48; \ | |
_r |= ((uint64_t)_t[2]) << 40; \ | |
_r |= ((uint64_t)_t[3]) << 32; \ | |
_r |= ((uint64_t)_t[4]) << 24; \ | |
_r |= ((uint64_t)_t[5]) << 16; \ | |
_r |= ((uint64_t)_t[6]) << 8; \ | |
_r |= ((uint64_t)_t[7]) << 0; \ | |
_r; \ | |
}) | |
#define U64H2LE(V) __extension__({ \ | |
uint64_t _v = (V); \ | |
uint8_t _t[8]; \ | |
_t[0] = (_v & UINT64_C(0x00000000000000FF)) >> 0; \ | |
_t[1] = (_v & UINT64_C(0x000000000000FF00)) >> 8; \ | |
_t[2] = (_v & UINT64_C(0x0000000000FF0000)) >> 16; \ | |
_t[3] = (_v & UINT64_C(0x00000000FF000000)) >> 24; \ | |
_t[4] = (_v & UINT64_C(0x000000FF00000000)) >> 32; \ | |
_t[5] = (_v & UINT64_C(0x0000FF0000000000)) >> 40; \ | |
_t[6] = (_v & UINT64_C(0x00FF000000000000)) >> 48; \ | |
_t[7] = (_v & UINT64_C(0xFF00000000000000)) >> 56; \ | |
*((uint64_t*)_t); \ | |
}) | |
#define U64LE2H(V) __extension__({ \ | |
uint64_t _v = (V); \ | |
uint8_t *_t = (uint8_t*)&_v; \ | |
uint64_t _r = 0; \ | |
_r |= ((uint64_t)_t[0]) << 0; \ | |
_r |= ((uint64_t)_t[1]) << 8; \ | |
_r |= ((uint64_t)_t[2]) << 16; \ | |
_r |= ((uint64_t)_t[3]) << 24; \ | |
_r |= ((uint64_t)_t[4]) << 32; \ | |
_r |= ((uint64_t)_t[5]) << 40; \ | |
_r |= ((uint64_t)_t[6]) << 48; \ | |
_r |= ((uint64_t)_t[7]) << 56; \ | |
_r; \ | |
}) | |
#define U32H2BE(V) __extension__({ \ | |
uint32_t _v = (V); \ | |
uint8_t _t[4]; \ | |
_t[0] = (_v & UINT32_C(0xFF000000)) >> 24; \ | |
_t[1] = (_v & UINT32_C(0x00FF0000)) >> 16; \ | |
_t[2] = (_v & UINT32_C(0x0000FF00)) >> 8; \ | |
_t[3] = (_v & UINT32_C(0x000000FF)) >> 0; \ | |
*((uint32_t*)_t); \ | |
}) | |
#define U32BE2H(V) __extension__({ \ | |
uint32_t _v = (V); \ | |
uint8_t *_t = (uint8_t*)&_v; \ | |
uint32_t _r = 0; \ | |
_r |= ((uint32_t)_t[0]) << 24; \ | |
_r |= ((uint32_t)_t[1]) << 16; \ | |
_r |= ((uint32_t)_t[2]) << 8; \ | |
_r |= ((uint32_t)_t[3]) << 0; \ | |
_r; \ | |
}) | |
#define U32H2LE(V) __extension__({ \ | |
uint32_t _v = (V); \ | |
uint8_t _t[4]; \ | |
_t[0] = (_v & UINT32_C(0x000000FF)) >> 0; \ | |
_t[1] = (_v & UINT32_C(0x0000FF00)) >> 8; \ | |
_t[2] = (_v & UINT32_C(0x00FF0000)) >> 16; \ | |
_t[3] = (_v & UINT32_C(0xFF000000)) >> 24; \ | |
*((uint32_t*)_t); \ | |
}) | |
#define U32LE2H(V) __extension__({ \ | |
uint32_t _v = (V); \ | |
uint8_t *_t = (uint8_t*)&_v; \ | |
uint32_t _r = 0; \ | |
_r |= ((uint32_t)_t[0]) << 0; \ | |
_r |= ((uint32_t)_t[1]) << 8; \ | |
_r |= ((uint32_t)_t[2]) << 16; \ | |
_r |= ((uint32_t)_t[3]) << 24; \ | |
_r; \ | |
}) | |
#define _U64_H_4321(V) U64H2BE(V) | |
#define _U64_4321_H(V) U64BE2H(V) | |
#define _U64_H_1234(V) U64H2LE(V) | |
#define _U64_1234_H(V) U64LE2H(V) | |
#define _U32_H_4321(V) U32H2BE(V) | |
#define _U32_4321_H(V) U32BE2H(V) | |
#define _U32_H_1234(V) U32H2LE(V) | |
#define _U32_1234_H(V) U32LE2H(V) | |
#define UWSH2LE(V) CONCAT(_U,HASH_WORD_BITS,_H_,__ORDER_LITTLE_ENDIAN__)(V) | |
#define UWSH2BE(V) CONCAT(_U,HASH_WORD_BITS,_H_,__ORDER_BIG_ENDIAN__)(V) | |
#define UWSH2DE(V) CONCAT(_U,HASH_WORD_BITS,_H_,HASH_ENDIAN)(V) | |
#define U32H2DE(V) CONCAT(_U32_H_,HASH_ENDIAN)(V) | |
#define U64H2DE(V) CONCAT(_U64_H_,HASH_ENDIAN)(V) | |
#define UWSLE2H(V) CONCAT(_U,HASH_WORD_BITS,_,__ORDER_LITTLE_ENDIAN__,_H)(V) | |
#define UWSBE2H(V) CONCAT(_U,HASH_WORD_BITS,_,__ORDER_BIG_ENDIAN__,_H)(V) | |
#define UWSDE2H(V) CONCAT(_U,HASH_WORD_BITS,_,HASH_ENDIAN,_H)(V) | |
#define U32DE2H(V) CONCAT(_U32_,HASH_ENDIAN,_H)(V) | |
#define U64DE2H(V) CONCAT(_U64_,HASH_ENDIAN,_H)(V) | |
#define STORWSH(D, V) (*((uintWS_t*)(D)) = (V)) | |
#define STOR32H(D, V) (*((uint32_t*)(D)) = (V)) | |
#define STOR64H(D, V) (*((uint64_t*)(D)) = (V)) | |
#define STORWSDE(D, V) (*((uintWS_t*)(D)) = UWSH2DE((V))) | |
#define STORWSBE(D, V) (*((uintWS_t*)(D)) = UWSH2BE((V))) | |
#define STORWSLE(D, V) (*((uintWS_t*)(D)) = UWSH2LE((V))) | |
#define STOR64DE(D, V) (*((uint64_t*)(D)) = U64H2DE((V))) | |
#define STOR64BE(D, V) (*((uint64_t*)(D)) = U64H2BE((V))) | |
#define STOR64LE(D, V) (*((uint64_t*)(D)) = U64H2LE((V))) | |
#define STOR32DE(D, V) (*((uint32_t*)(D)) = U32H2DE((V))) | |
#define STOR32BE(D, V) (*((uint32_t*)(D)) = U32H2BE((V))) | |
#define STOR32LE(D, V) (*((uint32_t*)(D)) = U32H2LE((V))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment