#include #include #include #include #if defined __AVX2__ inline void hw_simd_json_fprint256_num(FILE *file, __m256i var) { uint8_t *val = (uint8_t*)&var; fprintf(file, "%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x " "%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x" , val[ 0], val[ 1], val[ 2], val[ 3], val[ 4], val[ 5], val[ 6], val[ 7] , val[ 8], val[ 9], val[10], val[11], val[12], val[13], val[14], val[15] , val[16], val[17], val[18], val[19], val[20], val[21], val[22], val[23] , val[24], val[25], val[26], val[27], val[28], val[29], val[30], val[31]); } #endif//__AVX2__ #if defined __AVX2__ inline void hw_simd_json_fprint128_num(FILE *file, __m128i var) { uint8_t *val = (uint8_t*)&var; fprintf(file, "%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x" , val[ 0], val[ 1], val[ 2], val[ 3], val[ 4], val[ 5], val[ 6], val[ 7] , val[ 8], val[ 9], val[10], val[11], val[12], val[13], val[14], val[15]); } #endif//__AVX2__ #if defined __AVX2__ inline void hw_simd_json_print256_num(__m256i var) { hw_simd_json_fprint256_num(stdout, var); } #endif//__AVX2__ #if defined __AVX2__ inline void hw_simd_json_print128_num(__m128i var) { hw_simd_json_fprint128_num(stdout, var); } #endif//__AVX2__ inline void hw_simd_json_print_bits_8(uint8_t v) { char *digits = "01"; int i = 0; for (i = 0; i < 8; ++i) { printf("%c", digits[(v >> i) & 1]); } } inline void hw_simd_json_print_bits_16(uint16_t v) { char *digits = "01"; int i = 0; for (i = 0; i < 16; ++i) { printf("%c", digits[(v >> i) & 1]); } } inline void hw_simd_json_print_bits_32(uint32_t v) { char *digits = "01"; int i = 0; for (i = 0; i < 32; ++i) { printf("%c", digits[(v >> i) & 1]); } } inline void hw_simd_json_print_bits_64(uint64_t v) { char *digits = "01"; int i = 0; for (i = 0; i < 64; ++i) { printf("%c", digits[(v >> i) & 1]); } } #if defined __AVX2__ inline void hw_simd_json_print_bits_128(__m128i v) { int i = 0; for (i = 0; i < 2; ++i) { if (i > 0) { printf("-"); } hw_simd_json_print_bits_64(_mm_extract_epi64(v, i)); } } #endif//__AVX2__ #if defined __AVX2__ inline void hw_simd_json_print_bits_256(__m256i v) { int i = 0; for (i = 0; i < 4; ++i) { if (i > 0) { printf("-"); } hw_simd_json_print_bits_64(_mm256_extract_epi64(v, i)); } } #endif//__AVX2__