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 } |
