diff --git a/cpuid.c b/cpuid.c
index 8ec64047b4dee62d4547e8ee8a799bb8eb7e1bba..7a0899f285dc790531e4168afac15e25839c57ac 100644
--- a/cpuid.c
+++ b/cpuid.c
@@ -16,7 +16,7 @@ void cpuid(unsigned infoa, unsigned infoc, unsigned *eax, unsigned *ebx, unsigne
 }
 
 int main(void) {
-unsigned eax, ebx, ecx, edx;
+unsigned eax, ebx, ecx, edx, maxl;
 int off;
 #define LLEN 50
 #define LNUM 50
@@ -27,6 +27,8 @@ char buf[LLEN*LNUM];
 
 memset(buf,32,LLEN*LNUM);
 
+cpuid(0,0,&maxl,&ebx,&ecx,&edx);
+
 cpuid(0x80000001,0,&eax,&ebx,&ecx,&edx);
 
 BPRINT(0,0,"x86_64     : %d", (int) getbits(edx,29,1));
@@ -65,12 +67,18 @@ BPRINT(3,1, "AVX512-4fmaps      : %d", (int) getbits(edx,3,1));
 BPRINT(4,1, "AVX512vp2intersect : %d", (int) getbits(edx,8,1));
 BPRINT(5,1, "AVX512fp16         : %d", (int) getbits(edx,23,1));
 
+BPRINT(12,1, "AMX-bf16           : %d", (int) getbits(edx,22,1));
+BPRINT(20,1, "AMX-tile           : %d", (int) getbits(edx,24,1));
+BPRINT(11,1, "AMX-int8           : %d", (int) getbits(edx,25,1));
+
 cpuid(7,1,&eax,&ebx,&ecx,&edx);
 BPRINT(6,1, "AVX512bf16         : %d", (int) getbits(eax,5,1));
 
-cpuid(0x1E,1,&eax,&ebx,&ecx,&edx);
-BPRINT(11,1,"AMX-int8           : %d", (int) getbits(eax,0,1));
-BPRINT(12,1,"AMX-bf16           : %d", (int) getbits(eax,1,1));
+if (maxl >= 0x1E) cpuid(0x1E,1,&eax,&ebx,&ecx,&edx);
+else eax=0;
+
+//BPRINT(11,1,"AMX-int8           : %d", (int) getbits(eax,0,1));
+//BPRINT(12,1,"AMX-bf16           : %d", (int) getbits(eax,1,1));
 BPRINT(13,1,"AMX-complex        : %d", (int) getbits(eax,2,1));
 BPRINT(14,1,"AMX-fp16           : %d", (int) getbits(eax,3,1));
 BPRINT(15,1,"AMX-fp8            : %d", (int) getbits(eax,4,1));