Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 1 | #include <stdio.h> |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 2 | #include <stdint.h> |
Marat Dukhan | 5355651 | 2018-02-25 09:01:27 +0100 | [diff] [blame] | 3 | #include <stdlib.h> |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 4 | #include <inttypes.h> |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 5 | |
| 6 | #include <cpuinfo.h> |
| 7 | |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 8 | |
| 9 | static const char* vendor_to_string(enum cpuinfo_vendor vendor) { |
Marat Dukhan | 2d37dc4 | 2017-09-25 01:32:37 -0700 | [diff] [blame] | 10 | switch (vendor) { |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 11 | case cpuinfo_vendor_unknown: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 12 | return "unknown"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 13 | case cpuinfo_vendor_intel: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 14 | return "Intel"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 15 | case cpuinfo_vendor_amd: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 16 | return "AMD"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 17 | case cpuinfo_vendor_arm: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 18 | return "ARM"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 19 | case cpuinfo_vendor_qualcomm: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 20 | return "Qualcomm"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 21 | case cpuinfo_vendor_apple: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 22 | return "Apple"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 23 | case cpuinfo_vendor_samsung: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 24 | return "Samsung"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 25 | case cpuinfo_vendor_nvidia: |
Marat Dukhan | 93982f2 | 2017-10-20 13:10:23 -0700 | [diff] [blame] | 26 | return "Nvidia"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 27 | case cpuinfo_vendor_mips: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 28 | return "MIPS"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 29 | case cpuinfo_vendor_ibm: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 30 | return "IBM"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 31 | case cpuinfo_vendor_ingenic: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 32 | return "Ingenic"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 33 | case cpuinfo_vendor_via: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 34 | return "VIA"; |
Marat Dukhan | 92dae31 | 2017-05-09 14:10:17 +0000 | [diff] [blame] | 35 | case cpuinfo_vendor_cavium: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 36 | return "Cavium"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 37 | default: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 38 | return NULL; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 39 | } |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 40 | } |
| 41 | |
| 42 | static const char* uarch_to_string(enum cpuinfo_uarch uarch) { |
| 43 | switch (uarch) { |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 44 | case cpuinfo_uarch_unknown: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 45 | return "unknown"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 46 | case cpuinfo_uarch_p5: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 47 | return "P5"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 48 | case cpuinfo_uarch_quark: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 49 | return "Quark"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 50 | case cpuinfo_uarch_p6: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 51 | return "P6"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 52 | case cpuinfo_uarch_dothan: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 53 | return "Dothan"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 54 | case cpuinfo_uarch_yonah: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 55 | return "Yonah"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 56 | case cpuinfo_uarch_conroe: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 57 | return "Conroe"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 58 | case cpuinfo_uarch_penryn: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 59 | return "Penryn"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 60 | case cpuinfo_uarch_nehalem: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 61 | return "Nehalem"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 62 | case cpuinfo_uarch_sandy_bridge: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 63 | return "Sandy Bridge"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 64 | case cpuinfo_uarch_ivy_bridge: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 65 | return "Ivy Bridge"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 66 | case cpuinfo_uarch_haswell: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 67 | return "Haswell"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 68 | case cpuinfo_uarch_broadwell: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 69 | return "Broadwell"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 70 | case cpuinfo_uarch_sky_lake: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 71 | return "Sky Lake"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 72 | case cpuinfo_uarch_kaby_lake: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 73 | return "Kaby Lake"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 74 | case cpuinfo_uarch_willamette: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 75 | return "Willamette"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 76 | case cpuinfo_uarch_prescott: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 77 | return "Prescott"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 78 | case cpuinfo_uarch_bonnell: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 79 | return "Bonnell"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 80 | case cpuinfo_uarch_saltwell: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 81 | return "Saltwell"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 82 | case cpuinfo_uarch_silvermont: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 83 | return "Silvermont"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 84 | case cpuinfo_uarch_airmont: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 85 | return "Airmont"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 86 | case cpuinfo_uarch_knights_ferry: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 87 | return "Knights Ferry"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 88 | case cpuinfo_uarch_knights_corner: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 89 | return "Knights Corner"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 90 | case cpuinfo_uarch_knights_landing: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 91 | return "Knights Landing"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 92 | case cpuinfo_uarch_knights_hill: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 93 | return "Knights Hill"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 94 | case cpuinfo_uarch_knights_mill: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 95 | return "Knights Mill"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 96 | case cpuinfo_uarch_k5: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 97 | return "K5"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 98 | case cpuinfo_uarch_k6: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 99 | return "K6"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 100 | case cpuinfo_uarch_k7: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 101 | return "K7"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 102 | case cpuinfo_uarch_k8: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 103 | return "K8"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 104 | case cpuinfo_uarch_k10: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 105 | return "K10"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 106 | case cpuinfo_uarch_bulldozer: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 107 | return "Bulldozer"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 108 | case cpuinfo_uarch_piledriver: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 109 | return "Piledriver"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 110 | case cpuinfo_uarch_steamroller: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 111 | return "Steamroller"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 112 | case cpuinfo_uarch_excavator: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 113 | return "Excavator"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 114 | case cpuinfo_uarch_zen: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 115 | return "Zen"; |
Marat Dukhan | e25187d | 2017-04-16 05:03:07 -0400 | [diff] [blame] | 116 | case cpuinfo_uarch_geode: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 117 | return "Geode"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 118 | case cpuinfo_uarch_bobcat: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 119 | return "Bobcat"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 120 | case cpuinfo_uarch_jaguar: |
Marat Dukhan | 818e199 | 2018-02-24 15:39:18 +0100 | [diff] [blame] | 121 | return "Jaguar"; |
| 122 | case cpuinfo_uarch_puma: |
| 123 | return "Puma"; |
Marat Dukhan | 3c98276 | 2017-05-08 06:16:45 +0000 | [diff] [blame] | 124 | case cpuinfo_uarch_xscale: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 125 | return "XScale"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 126 | case cpuinfo_uarch_arm7: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 127 | return "ARM7"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 128 | case cpuinfo_uarch_arm9: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 129 | return "ARM9"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 130 | case cpuinfo_uarch_arm11: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 131 | return "ARM11"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 132 | case cpuinfo_uarch_cortex_a5: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 133 | return "Cortex-A5"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 134 | case cpuinfo_uarch_cortex_a7: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 135 | return "Cortex-A7"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 136 | case cpuinfo_uarch_cortex_a8: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 137 | return "Cortex-A8"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 138 | case cpuinfo_uarch_cortex_a9: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 139 | return "Cortex-A9"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 140 | case cpuinfo_uarch_cortex_a12: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 141 | return "Cortex-A12"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 142 | case cpuinfo_uarch_cortex_a15: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 143 | return "Cortex-A15"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 144 | case cpuinfo_uarch_cortex_a17: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 145 | return "Cortex-A17"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 146 | case cpuinfo_uarch_cortex_a32: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 147 | return "Cortex-A32"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 148 | case cpuinfo_uarch_cortex_a35: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 149 | return "Cortex-A35"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 150 | case cpuinfo_uarch_cortex_a53: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 151 | return "Cortex-A53"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 152 | case cpuinfo_uarch_cortex_a57: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 153 | return "Cortex-A57"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 154 | case cpuinfo_uarch_cortex_a72: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 155 | return "Cortex-A72"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 156 | case cpuinfo_uarch_cortex_a73: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 157 | return "Cortex-A73"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 158 | case cpuinfo_uarch_scorpion: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 159 | return "Scorpion"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 160 | case cpuinfo_uarch_krait: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 161 | return "Krait"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 162 | case cpuinfo_uarch_kryo: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 163 | return "Kryo"; |
Marat Dukhan | 3c98276 | 2017-05-08 06:16:45 +0000 | [diff] [blame] | 164 | case cpuinfo_uarch_denver: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 165 | return "Denver"; |
Marat Dukhan | a750f2a | 2018-03-07 11:07:48 -0800 | [diff] [blame] | 166 | case cpuinfo_uarch_mongoose_m1: |
| 167 | return "Mongoose M1"; |
| 168 | case cpuinfo_uarch_mongoose_m2: |
| 169 | return "Mongoose M2"; |
| 170 | case cpuinfo_uarch_mongoose_m3: |
| 171 | return "Mongoose M3"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 172 | case cpuinfo_uarch_swift: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 173 | return "Swift"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 174 | case cpuinfo_uarch_cyclone: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 175 | return "Cyclone"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 176 | case cpuinfo_uarch_typhoon: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 177 | return "Typhoon"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 178 | case cpuinfo_uarch_twister: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 179 | return "Twister"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 180 | case cpuinfo_uarch_hurricane: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 181 | return "Hurricane"; |
Marat Dukhan | 92dae31 | 2017-05-09 14:10:17 +0000 | [diff] [blame] | 182 | case cpuinfo_uarch_thunderx: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 183 | return "ThunderX"; |
Marat Dukhan | 8871832 | 2017-08-24 10:12:20 -0700 | [diff] [blame] | 184 | case cpuinfo_uarch_pj4: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 185 | return "PJ4"; |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 186 | default: |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 187 | return NULL; |
| 188 | } |
| 189 | } |
| 190 | |
| 191 | int main(int argc, char** argv) { |
Marat Dukhan | 5355651 | 2018-02-25 09:01:27 +0100 | [diff] [blame] | 192 | if (!cpuinfo_initialize()) { |
| 193 | fprintf(stderr, "failed to initialize CPU information\n"); |
| 194 | exit(EXIT_FAILURE); |
| 195 | } |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 196 | #ifdef __ANDROID__ |
Marat Dukhan | 3040197 | 2017-09-26 18:35:52 -0700 | [diff] [blame] | 197 | printf("SoC name: %s\n", cpuinfo_get_package(0)->name); |
| 198 | printf("GPU name: %s\n", cpuinfo_get_package(0)->gpu_name); |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 199 | #else |
| 200 | printf("Packages:\n"); |
Marat Dukhan | 3040197 | 2017-09-26 18:35:52 -0700 | [diff] [blame] | 201 | for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) { |
| 202 | printf("\t%"PRIu32": %s\n", i, cpuinfo_get_package(i)->name); |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 203 | } |
| 204 | #endif |
Marat Dukhan | 2d37dc4 | 2017-09-25 01:32:37 -0700 | [diff] [blame] | 205 | printf("Cores:\n"); |
Marat Dukhan | 3040197 | 2017-09-26 18:35:52 -0700 | [diff] [blame] | 206 | for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) { |
| 207 | const struct cpuinfo_core* core = cpuinfo_get_core(i); |
| 208 | if (core->processor_count == 1) { |
Marat Dukhan | b2fc4ab | 2018-02-19 22:43:26 -0800 | [diff] [blame] | 209 | printf("\t%"PRIu32": 1 processor (%"PRIu32")", i, core->processor_start); |
Marat Dukhan | 2d37dc4 | 2017-09-25 01:32:37 -0700 | [diff] [blame] | 210 | } else { |
Marat Dukhan | b2fc4ab | 2018-02-19 22:43:26 -0800 | [diff] [blame] | 211 | printf("\t%"PRIu32": %"PRIu32" processors (%"PRIu32"-%"PRIu32")", |
Marat Dukhan | 3040197 | 2017-09-26 18:35:52 -0700 | [diff] [blame] | 212 | i, core->processor_count, core->processor_start, core->processor_start + core->processor_count - 1); |
Marat Dukhan | 2d37dc4 | 2017-09-25 01:32:37 -0700 | [diff] [blame] | 213 | } |
Marat Dukhan | b2fc4ab | 2018-02-19 22:43:26 -0800 | [diff] [blame] | 214 | const char* vendor_string = vendor_to_string(core->vendor); |
| 215 | const char* uarch_string = uarch_to_string(core->uarch); |
| 216 | if (vendor_string == NULL) { |
| 217 | printf(", vendor 0x%08"PRIx32" uarch 0x%08"PRIx32"\n", |
| 218 | (uint32_t) core->vendor, (uint32_t) core->uarch); |
| 219 | } |
| 220 | else if (uarch_string == NULL) { |
| 221 | printf(", %s uarch 0x%08"PRIx32"\n", |
| 222 | vendor_string, (uint32_t) core->uarch); |
| 223 | } |
| 224 | else { |
| 225 | printf(", %s %s\n", vendor_string, uarch_string); |
| 226 | } |
Marat Dukhan | 2d37dc4 | 2017-09-25 01:32:37 -0700 | [diff] [blame] | 227 | } |
Marat Dukhan | 12c8e07 | 2017-09-21 15:50:41 -0700 | [diff] [blame] | 228 | printf("Logical processors:\n"); |
Marat Dukhan | 3040197 | 2017-09-26 18:35:52 -0700 | [diff] [blame] | 229 | for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) { |
| 230 | const struct cpuinfo_processor* processor = cpuinfo_get_processor(i); |
Marat Dukhan | b2fc4ab | 2018-02-19 22:43:26 -0800 | [diff] [blame] | 231 | #if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64 |
| 232 | printf("\t%"PRIu32": APIC ID 0x%08"PRIx32"\n", i, processor->apic_id); |
| 233 | #else |
| 234 | printf("\t%"PRIu32"\n", i); |
| 235 | #endif |
Marat Dukhan | 547fa36 | 2017-03-03 02:47:26 -0500 | [diff] [blame] | 236 | } |
| 237 | } |