Browse Source

Fixed a theoretical edge case in AVX512VL support detection.

Barinzaya 10 months ago
parent
commit
ff35a59548
1 changed files with 5 additions and 1 deletions
  1. 5 1
      core/sys/info/cpu_intel.odin

+ 5 - 1
core/sys/info/cpu_intel.odin

@@ -128,7 +128,11 @@ init_cpu_features :: proc "c" () {
 		try_set(&set, .avx512_er,   27, ebx7)
 		try_set(&set, .avx512_er,   27, ebx7)
 		try_set(&set, .avx512_cd,   28, ebx7)
 		try_set(&set, .avx512_cd,   28, ebx7)
 		try_set(&set, .avx512_bw,   30, ebx7)
 		try_set(&set, .avx512_bw,   30, ebx7)
-		try_set(&set, .avx512_vl,   31, ebx7)
+
+		// XMM/YMM are also required for 128/256-bit instructions
+		if os_supports_avx {
+			try_set(&set, .avx512_vl, 31, ebx7)
+		}
 
 
 		try_set(&set, .avx512_vbmi,       1, ecx7)
 		try_set(&set, .avx512_vbmi,       1, ecx7)
 		try_set(&set, .avx512_vbmi2,      6, ecx7)
 		try_set(&set, .avx512_vbmi2,      6, ecx7)