aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/X86/X86TargetMachine.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2006-01-26 09:53:06 +0000
committerEvan Cheng <evan.cheng@apple.com>2006-01-26 09:53:06 +0000
commit97c7fc351e4dd73041bc7e47c8a144216a50a648 (patch)
tree058b2afbf458a63613f4a14107368640b541e0d0 /lib/Target/X86/X86TargetMachine.cpp
parentb0636041c88d9e7d63bb8840df7eb18b96175f58 (diff)
Added preliminary x86 subtarget support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25645 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86TargetMachine.cpp')
-rw-r--r--lib/Target/X86/X86TargetMachine.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/Target/X86/X86TargetMachine.cpp b/lib/Target/X86/X86TargetMachine.cpp
index 2893e3d491..3e501fffe8 100644
--- a/lib/Target/X86/X86TargetMachine.cpp
+++ b/lib/Target/X86/X86TargetMachine.cpp
@@ -26,7 +26,7 @@
#include <iostream>
using namespace llvm;
-X86VectorEnum llvm::X86Vector = NoSSE;
+X86VectorEnum llvm::X86Vector = AutoDetect;
bool llvm::X86ScalarSSE = false;
bool llvm::X86DAGIsel = false;
@@ -61,7 +61,7 @@ namespace {
clEnumValN(SSE2, "sse2", " Enable SSE and SSE2 support"),
clEnumValN(SSE3, "sse3", " Enable SSE, SSE2, and SSE3 support"),
clEnumValEnd),
- cl::location(X86Vector), cl::init(NoSSE));
+ cl::location(X86Vector), cl::init(AutoDetect));
// Register the target.
RegisterTarget<X86TargetMachine> X("x86", " IA-32 (Pentium and above)");
@@ -102,6 +102,16 @@ X86TargetMachine::X86TargetMachine(const Module &M,
FrameInfo(TargetFrameInfo::StackGrowsDown,
Subtarget.getStackAlignment(), -4),
JITInfo(*this) {
+ if (X86Vector == AutoDetect) {
+ X86Vector = NoSSE;
+ if (Subtarget.hasSSE())
+ X86Vector = SSE;
+ if (Subtarget.hasSSE2())
+ X86Vector = SSE2;
+ if (Subtarget.hasSSE3())
+ X86Vector = SSE3;
+ }
+
// Scalar SSE FP requires at least SSE2
X86ScalarSSE &= X86Vector >= SSE2;