diff --git a/xbyak/xbyak_util.h b/xbyak/xbyak_util.h
index 649bb4c..6ff9aab 100644
--- a/xbyak/xbyak_util.h
+++ b/xbyak/xbyak_util.h
@@ -385,7 +385,6 @@
 		const unsigned int& EDX = data[3];
 		getCpuid(0, data);
 		const unsigned int maxNum = EAX;
-		unsigned int maxLeaf7Subleafs;
 		static const char intel[] = "ntel";
 		static const char amd[] = "cAMD";
 		if (ECX == get32bitAsBE(amd)) {
@@ -450,7 +449,6 @@
 #endif
 				{
 					getCpuidEx(7, 0, data);
-					maxLeaf7Subleafs = EAX;
 					if (EBX & (1U << 16)) type_ |= tAVX512F;
 					if (type_ & tAVX512F) {
 						if (EBX & (1U << 17)) type_ |= tAVX512DQ;
@@ -472,18 +470,12 @@
 						if (EDX & (1U << 3)) type_ |= tAVX512_4FMAPS;
 						if (EDX & (1U << 8)) type_ |= tAVX512_VP2INTERSECT;
 					}
-					if (maxLeaf7Subleafs >= 1) {
-						getCpuidEx(7, 1, data); // EAX=07H, ECX=1
-						if (type_ & tAVX512F) {
-							if (EAX & (1U << 5)) type_ |= tAVX512_BF16;
-						}
-					}
 				}
 			}
 		}
 		if (maxNum >= 7) {
 			getCpuidEx(7, 0, data);
-			maxLeaf7Subleafs = EAX;
+			const uint32_t maxNumSubLeaves = EAX;
 			if (type_ & tAVX && (EBX & (1U << 5))) type_ |= tAVX2;
 			if (EBX & (1U << 3)) type_ |= tBMI1;
 			if (EBX & (1U << 8)) type_ |= tBMI2;
@@ -499,9 +491,12 @@
 			if (EDX & (1U << 24)) type_ |= tAMX_TILE;
 			if (EDX & (1U << 25)) type_ |= tAMX_INT8;
 			if (EDX & (1U << 22)) type_ |= tAMX_BF16;
-			if (maxLeaf7Subleafs >= 1) {
+			if (maxNumSubLeaves >= 1) {
 				getCpuidEx(7, 1, data);
 				if (EAX & (1U << 4)) type_ |= tAVX_VNNI;
+				if (type_ & tAVX512F) {
+					if (EAX & (1U << 5)) type_ |= tAVX512_BF16;
+				}
 			}
 		}
 		setFamily();
