diff options
author | Evan Cheng <evan.cheng@apple.com> | 2009-01-03 04:04:46 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2009-01-03 04:04:46 +0000 |
commit | 9a3ec1b208e60426fe289cedf8d22b47247b7937 (patch) | |
tree | fca4d91cd22938779061f218edb35ad611f478f3 /llvm/lib/Target/X86/X86Subtarget.cpp | |
parent | b536235293e654dfbd07f5d74ce044a451decf37 (diff) | |
download | bcm5719-llvm-9a3ec1b208e60426fe289cedf8d22b47247b7937.tar.gz bcm5719-llvm-9a3ec1b208e60426fe289cedf8d22b47247b7937.zip |
Fix PR3210: Detect more Intel processors. Patch by Torok Edwin.
llvm-svn: 61602
Diffstat (limited to 'llvm/lib/Target/X86/X86Subtarget.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86Subtarget.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86Subtarget.cpp b/llvm/lib/Target/X86/X86Subtarget.cpp index 33a7b453464..a7df68b19f8 100644 --- a/llvm/lib/Target/X86/X86Subtarget.cpp +++ b/llvm/lib/Target/X86/X86Subtarget.cpp @@ -11,10 +11,12 @@ // //===----------------------------------------------------------------------===// +#define DEBUG_TYPE "subtarget" #include "X86Subtarget.h" #include "X86GenSubtarget.inc" #include "llvm/Module.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/Debug.h" #include "llvm/Target/TargetMachine.h" #include "llvm/Target/TargetOptions.h" using namespace llvm; @@ -236,15 +238,23 @@ static const char *GetCurrentX86CPU() { case 9: case 13: return "pentium-m"; case 14: return "yonah"; - case 15: return "core2"; - case 23: return "penryn"; + case 15: + case 22: // Celeron M 540 + return "core2"; + case 23: // 45nm: Penryn , Wolfdale, Yorkfield (XE) + return "penryn"; default: return "i686"; } case 15: { switch (Model) { case 3: case 4: + case 6: // same as 4, but 65nm return (Em64T) ? "nocona" : "prescott"; + case 28: + // Intel Atom, and Core i7 both have this model. + // Atom has SSSE3, Core i7 has SSE4.2 + return "core2"; default: return (Em64T) ? "x86-64" : "pentium4"; } @@ -324,6 +334,9 @@ X86Subtarget::X86Subtarget(const Module &M, const std::string &FS, bool is64Bit) if (X86SSELevel < SSE2) X86SSELevel = SSE2; } + DOUT << "Subtarget features: SSELevel " << X86SSELevel + << ", 3DNowLevel " << X863DNowLevel + << ", 64bit " << HasX86_64 << "\n"; // Set the boolean corresponding to the current target triple, or the default // if one cannot be determined, to true. |