This commit is contained in:
Jay D Dee
2026-01-13 19:17:47 -05:00
parent 8f2f9ec3e9
commit b34565bfac
13 changed files with 117 additions and 58 deletions

View File

@@ -642,6 +642,15 @@ static inline void v128_memcpy( v128_t *dst, const v128_t *src, const int n )
#define v128_shuflr32(v) _mm_shuffle_epi32( v, 0x39 )
#define v128_shufll32(v) _mm_shuffle_epi32( v, 0x93 )
/* Zen6 AMD only
// Reverse bits in bytes
#if defined(__AVX512VL__) && defined(__AVX512BMM__)
#define v128_bitrev8 _mm_vbitrevb_epi8
#endif
*/
// Endian byte swap.
#if defined(__SSSE3__)

View File

@@ -409,6 +409,15 @@ static inline __m256i mm256_shuflr128_x8( const __m256i v, const int c )
{ return _mm256_alignr_epi8( v, v, c ); }
*/
/* Zen6 AMD only
// Reverse bits in bytes
#if defined(__AVX512VL__) && defined(__AVX512BMM__)
#define mm256_bitrev8 _mm256_vbitrevb_epi8
#endif
*/
// Reverse byte order in elements, endian bswap.
#define mm256_bswap_64( v ) _mm256_shuffle_epi8( v, V256_BSWAP64 )

View File

@@ -257,6 +257,15 @@ static inline void memcpy_512( __m512i *dst, const __m512i *src, const int n )
#endif
*/
/* Zen6 AMD only
// Reverse bits in bytes
#if defined(__AVX512BMM__)
#define mm512_bitrev8 _mm512_vbitrevb_epi8
#endif
*/
//
// Reverse byte order of packed elements, vectorized endian conversion.

View File

@@ -431,8 +431,10 @@ static inline uint32x4_t v128_shuflr32( uint32x4_t v )
static inline uint32x4_t v128_shufll32( uint32x4_t v )
{ return vextq_u32( v, v, 3 ); }
// reverse bits in bytes, nothing like it in x86_64
/* not used
// reverse bits in bytes, nothing like it in x86_64 until Zen6
#define v128_bitrev8 vrbitq_u8
*/
// reverse byte order
#define v128_bswap16(v) (uint16x8_t)vrev16q_u8( (uint8x16_t)(v) )