I’ll link to a table for the stepping ids but maybe your programmers would be interested in the features table so they know what instructions a particular processor supports, that is if they are working at that low of a level. Even if not, this is interesting to know.
This site has both those tables:
https://www.felixcloutier.com/x86/cpuid
For some of the information you are looking for in particular, this site says:
The brand index method (introduced with Pentium® III Xeon® processors) provides an entry point into a brand identification table that is maintained in memory by system software and is accessible from system- and user-level code... Software can then use this index to locate the brand identification string for the processor in the brand identification table.
Then refer to Table 3-14 unless you have software already that can interpret it.
Loading EAX with 01H might be all your programmers need though because in return you’ll get model, family and processor type in EAX like so:
Then the value in EBX will be the cache line size (second byte of EBX) the brand index (low byte of EBX) and an APIC ID (high byte of EBX).
You can check these values using something like this:
unsigned eax, ebx, ecx, edx;
if (__get_cpuid(0x00, &eax, &ebx, &ecx, &edx) == 0) {
// cpuid not supported
}
if (eax < 0x14) {
// leaf 0x14 not supported
}
__cpuid_count(0x14, 0x00, eax, ebx, ecx, edx);
if ((ebx & 0x10) == 0) {
// PTWRITE not supported
}