Since Zen-based CPUs, cpu_id_t::l3_cache is the size of the total L3 cache for the whole chip, while cpu_id_t::l1_cache and cpu_id_t::l2_cache are size for each instances.
This change provide L3 cache size per instance.
* Set CMAKE_C_FLAGS_DEBUG to display warnings during build
CI workflows are reporting warnings. Adding more C flags here help to avoid that.
* Add new types
* Add set_cpu_affinity function
* Add cpu_identify_all function
* Add cpu_request_core_type function
* Add cpuid_get_all_raw_data, cpuid_serialize_all_raw_data and cpuid_deserialize_all_raw_data functions
* Detect hybrid architecture for Intel CPUs
* Update cpuid_tool to detect all CPU logical cores
* Rename tests subdirectories for Intel Core
* Update all tests
Since e4309a6c4bc3ad875711a1599cba01a205b3103e, new fields are reported by cpuid_tool
* Add Intel Alder Lake
Fix#157
* Remove convert_instlatx64.c
This tool is not useful anymore because the cpuid_deserialize_raw_data_internal() function can natively parse them since 5667e1401c
* Fix affinity_mask computation
* Define _GNU_SOURCE in configure.ac
Forgotten in 4f80964db5
* Use dynamic raw array in cpu_raw_data_array_t
* Add cpu_affinity_mask_t type
* Improve set_cpu_affinity function
- Print a warning if logical CPU number is not supported on operating system
- Return a boolean value in case of success instead of an integer
* Improve cpu_identify_all and cpu_request_core_type functions
* Use dynamic array for cpu_types in system_id_t
This commit also adds cleanups, fixes and consistency
* Tests: update Ryzen 5 Matisse with all CPU cores
* Add affinity_mask_str_r function and address other comments
- Fixed cpuid_grow_raw_data_array and cpu_raw_data_array_t.logical_cpu_t with the correct type
- Added a note about hard limit of cpu_raw_data_array_t
- Fixed a typo in cpuid_deserialize_raw_data_internal
* Fix build on Windows
* Use popcount64 from libc when available
Without this, we get a compiler error on NetBSD because the one in
libc has a slightly different prototype.
libcpuid_util.c:78:12: error: conflicting types for 'popcount64'
78 | static int popcount64(uint64_t mask)
| ^~~~~~~~~~
In file included from /nix/store/155rj8nqh3xd80vpa8hl35p3hk7pacys-include-netbsd-8.0/include/string.h:98,
from libcpuid_util.c:30:
/nix/store/155rj8nqh3xd80vpa8hl35p3hk7pacys-include-netbsd-8.0/include/strings.h:61:14: note: previous declaration of 'popcount64' was here
61 | unsigned int popcount64(__uint64_t) __constfunc;
| ^~~~~~~~~~
* Return unsigned int from popcount64
Matches NetBSD libc, where popcount64 originates.
There were a lot of instances where there was additional code
written to detect certain features from the brand string
(e.g., does it have "Core (TM)"? if it has, does it have "i3"?).
It makes sense to only write code for detecting these features
in isolation, preventing the exponential blowup of possible
intel_code_t values (e.g. previously there were enum values
for CORE_{,IVY,HASWELL,BROADWELL,SKYLAKE}{,M}{3,5,7} - almost
20 separate enums items; these can now be expressed with the
respective bits (CORE_, _I_, _M_, _3, _5 and _7).
The change in matchtables is the addition of an extra field
after brand_code: it is called model_bits. The bits for each
vendor is defined in the beginning of recog_<<vendor>>.c
This is the first part of the overhaul, which handles the bits
detection and proper matchtables for Intel. Refactoring of
AMD detection code coming next...
- Expose intel_code_t and amd_code_t enums - they are no longer
limited to just recog_{intel,amd}.c.
- Add libcpuid_internal.h lists those enums and provides the,
cpu_ident_internal() function, which is the same as cpu_identify(),
but also has a third parameter - a internal_id_info_t structure,
which holds detection internals.
All of this is intended to be used in rdmsr, which needs to know
specifics on what CPU it is running.
Priously all fields in the matchtable were treated equal in importance.
With this change, the cache size a taken with half the weight in the decision.
Also add detection entries for some more recent Haswells, and the respective
tests. These are an i5 Haswell from a Mac Book Pro, and a i7 Haswel from
Thinkpad T540.
* set_warn_function renamed to cpuid_set_warn_function;
* Updated Doxygen documentation: added manpage output, generic mainpage intro, default module named correctly;
* Updated doxy libcpuid.h documentation, fixed some bugs;
* Warnings are now printed to stderr by default, not stdout;
* Some constants in AMD code did not reflected their meaning well, fixed;
* The cpuid_tool utility thoroughly redesigned; now a multiple-function program, perhaps close to the finalized state.
git-svn-id: https://svn.code.sf.net/p/libcpuid/code/HEAD/libcpuid@19 3b4be424-7ac5-41d7-8526-f4ddcb85d872