From d4aa5f46b4bd5d72b928b921b8e6775c6ef72576 Mon Sep 17 00:00:00 2001 From: Andreas Zwinkau Date: Thu, 25 Nov 2010 10:13:03 +0000 Subject: [PATCH] AMD autodetection extended [r28155] --- ir/be/ia32/ia32_architecture.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/ir/be/ia32/ia32_architecture.c b/ir/be/ia32/ia32_architecture.c index 47fe7e0ca..0cd495d89 100644 --- a/ir/be/ia32/ia32_architecture.c +++ b/ir/be/ia32/ia32_architecture.c @@ -589,9 +589,19 @@ static void auto_detect_Intel(const struct cpu_info_t info) { static void auto_detect_AMD(const struct cpu_info_t info) { cpu_support auto_arch = cpu_generic; - /* TODO find documentation on the cpu_family bits - for now we fall back to arch_k6. */ - auto_arch = arch_k6; + switch (info.cpu_family) { + case 4: + auto_arch = arch_i486; break; + case 5: + case 6: // actually, 6 means K7 family + auto_arch = arch_k6; break; + case 15: + if (info.cpu_ext_family == 0 || info.cpu_ext_family == 1) { + auto_arch = arch_k8; break; + } /* else fallthrough to panic */ + default: + panic("Unknown cpu family for arch autodetection: %X\n", info.cpu_family); + } if (info.edx_features & (1<<23)) auto_arch |= arch_feature_mmx; if (info.edx_features & (1<<25)) auto_arch |= arch_feature_sse1; -- 2.20.1