Transform: Byte+Nibble Transpose/Shuffle
This commit is contained in:
51
transpose.c
51
transpose.c
@ -170,17 +170,17 @@ static inline uint64_t xgetbv (int ctr) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#define AVX512F 0x000
|
||||
#define AVX512DQ 0x001
|
||||
#define AVX512IFMA 0x002
|
||||
#define AVX512PF 0x004
|
||||
#define AVX512ER 0x008
|
||||
#define AVX512CD 0x010
|
||||
#define AVX512BW 0x020
|
||||
#define AVX512VL 0x040
|
||||
#define AVX512VNNI 0x080
|
||||
#define AVX512VBMI 0x100
|
||||
#define AVX512VBMI2 0x200
|
||||
#define AVX512F 0x001
|
||||
#define AVX512DQ 0x002
|
||||
#define AVX512IFMA 0x004
|
||||
#define AVX512PF 0x008
|
||||
#define AVX512ER 0x010
|
||||
#define AVX512CD 0x020
|
||||
#define AVX512BW 0x040
|
||||
#define AVX512VL 0x080
|
||||
#define AVX512VNNI 0x100
|
||||
#define AVX512VBMI 0x200
|
||||
#define AVX512VBMI2 0x400
|
||||
|
||||
#define IS_SSE 0x10
|
||||
#define IS_SSE2 0x20
|
||||
@ -253,21 +253,20 @@ unsigned cpuini(unsigned cpuisa) { if(cpuisa) _cpuisa = cpuisa; return _cpuisa;
|
||||
char *cpustr(unsigned cpuisa) {
|
||||
if(!cpuisa) cpuisa = _cpuisa;
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
if(cpuisa >= IS_AVX512)
|
||||
switch(cpuisa & 0x7ff) {
|
||||
case AVX512VBMI2:return "avx512vbmi2";
|
||||
case AVX512VBMI: return "avx512vbmi";
|
||||
case AVX512VNNI: return "avx512vnni";
|
||||
case AVX512VL: return "avx512vl";
|
||||
case AVX512BW: return "avx512bw";
|
||||
case AVX512CD: return "avx512cd";
|
||||
case AVX512ER: return "avx512er";
|
||||
case AVX512PF: return "avx512pf";
|
||||
case AVX512IFMA: return "avx512ifma";
|
||||
case AVX512DQ: return "avx512dq";
|
||||
case AVX512F: return "avx512f";
|
||||
default: return "avx512";
|
||||
}
|
||||
if(cpuisa >= IS_AVX512) {
|
||||
if(cpuisa & AVX512VBMI2) return "avx512vbmi2";
|
||||
if(cpuisa & AVX512VBMI) return "avx512vbmi";
|
||||
if(cpuisa & AVX512VNNI) return "avx512vnni";
|
||||
if(cpuisa & AVX512VL) return "avx512vl";
|
||||
if(cpuisa & AVX512BW) return "avx512bw";
|
||||
if(cpuisa & AVX512CD) return "avx512cd";
|
||||
if(cpuisa & AVX512ER) return "avx512er";
|
||||
if(cpuisa & AVX512PF) return "avx512pf";
|
||||
if(cpuisa & AVX512IFMA) return "avx512ifma";
|
||||
if(cpuisa & AVX512DQ) return "avx512dq";
|
||||
if(cpuisa & AVX512F) return "avx512f";
|
||||
return "avx512";
|
||||
}
|
||||
else if(cpuisa >= IS_AVX2) return "avx2";
|
||||
else if(cpuisa >= IS_AVX)
|
||||
switch(cpuisa&0xf) {
|
||||
|
||||
Reference in New Issue
Block a user