mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 11:37:35 +00:00
94 lines
2.9 KiB
C
94 lines
2.9 KiB
C
// Copyright 2024 Justine Alexandra Roberts Tunney
|
|
//
|
|
// Permission to use, copy, modify, and/or distribute this software for
|
|
// any purpose with or without fee is hereby granted, provided that the
|
|
// above copyright notice and this permission notice appear in all copies.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
|
// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
|
// AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
|
// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
|
// PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
// PERFORMANCE OF THIS SOFTWARE.
|
|
#include "libc/intrin/x86.h"
|
|
|
|
/**
|
|
* Returns microarchitecture name, e.g.
|
|
*
|
|
* puts(__cpu_march(__cpu_model.__cpu_subtype));
|
|
*
|
|
*/
|
|
const char *__cpu_march(unsigned subtype) {
|
|
switch (subtype) {
|
|
case INTEL_COREI7_NEHALEM:
|
|
return "nehalem";
|
|
case INTEL_COREI7_WESTMERE:
|
|
return "westmere";
|
|
case INTEL_COREI7_SANDYBRIDGE:
|
|
return "sandybridge";
|
|
case AMDFAM10H_BARCELONA:
|
|
return "amdfam10";
|
|
case AMDFAM10H_SHANGHAI:
|
|
return "amdfam10";
|
|
case AMDFAM10H_ISTANBUL:
|
|
return "amdfam10";
|
|
case AMDFAM15H_BDVER1:
|
|
return "bdver2";
|
|
case AMDFAM15H_BDVER2:
|
|
return "bdver2";
|
|
case AMDFAM15H_BDVER3:
|
|
return "bdver3";
|
|
case AMDFAM15H_BDVER4:
|
|
return "bdver4";
|
|
case AMDFAM17H_ZNVER1:
|
|
return "znver2";
|
|
case INTEL_COREI7_IVYBRIDGE:
|
|
return "ivybridge";
|
|
case INTEL_COREI7_HASWELL:
|
|
return "haswell";
|
|
case INTEL_COREI7_BROADWELL:
|
|
return "broadwell";
|
|
case INTEL_COREI7_SKYLAKE:
|
|
return "skylake";
|
|
case INTEL_COREI7_SKYLAKE_AVX512:
|
|
return "skylake-avx512";
|
|
case INTEL_COREI7_CANNONLAKE:
|
|
return "cannonlake";
|
|
case INTEL_COREI7_ICELAKE_CLIENT:
|
|
return "icelake-client";
|
|
case INTEL_COREI7_ICELAKE_SERVER:
|
|
return "icelake-server";
|
|
case AMDFAM17H_ZNVER2:
|
|
return "znver2";
|
|
case INTEL_COREI7_CASCADELAKE:
|
|
return "cascadelake";
|
|
case INTEL_COREI7_TIGERLAKE:
|
|
return "tigerlake";
|
|
case INTEL_COREI7_COOPERLAKE:
|
|
return "cooperlake";
|
|
case INTEL_COREI7_SAPPHIRERAPIDS:
|
|
return "sapphirerapids";
|
|
case INTEL_COREI7_ALDERLAKE:
|
|
return "alderlake";
|
|
case AMDFAM19H_ZNVER3:
|
|
return "znver3";
|
|
case INTEL_COREI7_ROCKETLAKE:
|
|
return "rocketlake";
|
|
case AMDFAM19H_ZNVER4:
|
|
return "znver4";
|
|
case INTEL_COREI7_GRANITERAPIDS:
|
|
return "graniterapids";
|
|
case INTEL_COREI7_GRANITERAPIDS_D:
|
|
return "graniterapids-d";
|
|
case INTEL_COREI7_ARROWLAKE:
|
|
return "arrowlake";
|
|
case INTEL_COREI7_ARROWLAKE_S:
|
|
return "arrowlake-s";
|
|
case INTEL_COREI7_PANTHERLAKE:
|
|
return "pantherlake";
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|