summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86Subtarget.cpp
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2007-03-23 23:46:48 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2007-03-23 23:46:48 +0000
commit8aae2d7e1ce024c96c2c0ca16c29629703c3c1c3 (patch)
treed2aab94e107008095d115d38089b7b2df6c40fde /llvm/lib/Target/X86/X86Subtarget.cpp
parent3ab6e72143c877dce13abd0b2d3095f8d80d29c5 (diff)
downloadbcm5719-llvm-8aae2d7e1ce024c96c2c0ca16c29629703c3c1c3.tar.gz
bcm5719-llvm-8aae2d7e1ce024c96c2c0ca16c29629703c3c1c3.zip
Autodetect MMX & SSE stuff for AMD processors
llvm-svn: 35292
Diffstat (limited to 'llvm/lib/Target/X86/X86Subtarget.cpp')
-rw-r--r--llvm/lib/Target/X86/X86Subtarget.cpp21
1 files changed, 11 insertions, 10 deletions
diff --git a/llvm/lib/Target/X86/X86Subtarget.cpp b/llvm/lib/Target/X86/X86Subtarget.cpp
index 89f69d9feb3..cd6fb034e09 100644
--- a/llvm/lib/Target/X86/X86Subtarget.cpp
+++ b/llvm/lib/Target/X86/X86Subtarget.cpp
@@ -106,19 +106,20 @@ void X86Subtarget::AutoDetectSubtargetFeatures() {
if (X86::GetCpuIDAndInfo(0, &EAX, text.u+0, text.u+2, text.u+1))
return;
-
- // FIXME: support for AMD family of processors.
- if (memcmp(text.c, "GenuineIntel", 12) == 0) {
- X86::GetCpuIDAndInfo(0x1, &EAX, &EBX, &ECX, &EDX);
- if ((EDX >> 23) & 0x1) X86SSELevel = MMX;
- if ((EDX >> 25) & 0x1) X86SSELevel = SSE1;
- if ((EDX >> 26) & 0x1) X86SSELevel = SSE2;
- if (ECX & 0x1) X86SSELevel = SSE3;
+ X86::GetCpuIDAndInfo(0x1, &EAX, &EBX, &ECX, &EDX);
+
+ if ((EDX >> 23) & 0x1) X86SSELevel = MMX;
+ if ((EDX >> 25) & 0x1) X86SSELevel = SSE1;
+ if ((EDX >> 26) & 0x1) X86SSELevel = SSE2;
+ if (ECX & 0x1) X86SSELevel = SSE3;
+ if (memcmp(text.c, "GenuineIntel", 12) == 0) {
X86::GetCpuIDAndInfo(0x80000001, &EAX, &EBX, &ECX, &EDX);
HasX86_64 = (EDX >> 29) & 0x1;
- }
+ } else if (memcmp(text.c, "AuthenticAMD", 12) == 0) {
+ // FIXME: Correctly check for 64-bit stuff
+ }
}
static const char *GetCurrentX86CPU() {
@@ -203,10 +204,10 @@ static const char *GetCurrentX86CPU() {
}
case 15:
switch (Model) {
+ case 1: return "opteron";
case 5: return "athlon-fx"; // also opteron
default: return "athlon64";
}
-
default:
return "generic";
}
OpenPOWER on IntegriCloud