Mercurial > vec
comparison src/cpu.c @ 31:bf6ad516f1e6
Backed out changeset c6c99ab1088a
author | Paper <paper@tflc.us> |
---|---|
date | Fri, 25 Apr 2025 17:40:33 -0400 |
parents | c6c99ab1088a |
children | 8b5e0974fd41 |
comparison
equal
deleted
inserted
replaced
30:641d8c79b1da | 31:bf6ad516f1e6 |
---|---|
360 static inline int vec_CPU_have_AVX512F(void) | 360 static inline int vec_CPU_have_AVX512F(void) |
361 { | 361 { |
362 if (vec_CPU_OSSavesYMM && (vec_CPU_CPUIDMaxFunction >= 7)) { | 362 if (vec_CPU_OSSavesYMM && (vec_CPU_CPUIDMaxFunction >= 7)) { |
363 int a, b, c, d; | 363 int a, b, c, d; |
364 VEC_CPU_CPUID(7, a, b, c, d); | 364 VEC_CPU_CPUID(7, a, b, c, d); |
365 return b & 0x00010000; | 365 return b & 0x00000020; |
366 (void)a, (void)c, (void)d; | |
367 } | |
368 return 0; | |
369 } | |
370 | |
371 static inline int vec_CPU_have_AVX512DQ(void) | |
372 { | |
373 if (vec_CPU_OSSavesYMM && (vec_CPU_CPUIDMaxFunction >= 7)) { | |
374 int a, b, c, d; | |
375 VEC_CPU_CPUID(7, a, b, c, d); | |
376 return b & 0x00020000; | |
377 (void)a, (void)c, (void)d; | |
378 } | |
379 return 0; | |
380 } | |
381 | |
382 static inline int vec_CPU_have_AVX512BW(void) | |
383 { | |
384 if (vec_CPU_OSSavesYMM && (vec_CPU_CPUIDMaxFunction >= 7)) { | |
385 int a, b, c, d; | |
386 VEC_CPU_CPUID(7, a, b, c, d); | |
387 return b & 0x40000000; | |
388 (void)a, (void)c, (void)d; | 366 (void)a, (void)c, (void)d; |
389 } | 367 } |
390 return 0; | 368 return 0; |
391 } | 369 } |
392 | 370 |
511 vec_CPU_features |= VEC_CPU_HAS_AVX; | 489 vec_CPU_features |= VEC_CPU_HAS_AVX; |
512 if (vec_CPU_have_AVX2()) | 490 if (vec_CPU_have_AVX2()) |
513 vec_CPU_features |= VEC_CPU_HAS_AVX2; | 491 vec_CPU_features |= VEC_CPU_HAS_AVX2; |
514 if (vec_CPU_have_AVX512F()) | 492 if (vec_CPU_have_AVX512F()) |
515 vec_CPU_features |= VEC_CPU_HAS_AVX512F; | 493 vec_CPU_features |= VEC_CPU_HAS_AVX512F; |
516 if (vec_CPU_have_AVX512BW()) | |
517 vec_CPU_features |= VEC_CPU_HAS_AVX512BW; | |
518 if (vec_CPU_have_AVX512DQ()) | |
519 vec_CPU_features |= VEC_CPU_HAS_AVX512DQ; | |
520 if (vec_CPU_have_NEON()) | 494 if (vec_CPU_have_NEON()) |
521 vec_CPU_features |= VEC_CPU_HAS_NEON; | 495 vec_CPU_features |= VEC_CPU_HAS_NEON; |
522 } | 496 } |
523 return vec_CPU_features; | 497 return vec_CPU_features; |
524 } | 498 } |