fn full_family_model()

in reverie-ptrace/src/timer.rs [48:72]


fn full_family_model(vendor: &str, fi: &FeatureInfo) -> (u8, u8) {
    let base_family_id = fi.family_id();
    let base_model_id = fi.model_id();
    let extended_model_id = fi.extended_model_id();
    let extended_family_id = fi.extended_family_id();
    let family_id = {
        let just_use_base = (vendor == AMD_VENDOR && base_family_id < 0xf)
            || (vendor == INTEL_VENDOR && base_family_id != 0xf);
        if just_use_base {
            base_family_id
        } else {
            base_family_id + extended_family_id
        }
    };
    let model_id = {
        let just_use_base = (vendor == AMD_VENDOR && base_family_id < 0xf)
            || (vendor == INTEL_VENDOR && base_family_id != 0xf && base_family_id != 0x6);
        if just_use_base {
            base_model_id
        } else {
            (extended_model_id << 4) | base_model_id
        }
    };
    (family_id, model_id)
}