summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-devel/clang/files/clang-3.0-recognize-amd-k10-enable-sse4a.patch')
-rw-r--r--sys-devel/clang/files/clang-3.0-recognize-amd-k10-enable-sse4a.patch82
1 files changed, 82 insertions, 0 deletions
diff --git a/sys-devel/clang/files/clang-3.0-recognize-amd-k10-enable-sse4a.patch b/sys-devel/clang/files/clang-3.0-recognize-amd-k10-enable-sse4a.patch
new file mode 100644
index 000000000000..90f99abc344a
--- /dev/null
+++ b/sys-devel/clang/files/clang-3.0-recognize-amd-k10-enable-sse4a.patch
@@ -0,0 +1,82 @@
+--- llvm.orig/contrib/llvm/tools/clang/lib/Basic/Targets.cpp 2011/10/22 14:08:43 226633
++++ llvm/contrib/llvm/tools/clang/lib/Basic/Targets.cpp 2011/10/30 22:20:17 226951
+@@ -1282,6 +1282,7 @@
+ CK_K8SSE3,
+ CK_Opteron,
+ CK_OpteronSSE3,
++ CK_AMDFAM10,
+
+ /// This specification is deprecated and will be removed in the future.
+ /// Users should prefer \see CK_K8.
+@@ -1381,6 +1382,7 @@
+ .Case("k8-sse3", CK_K8SSE3)
+ .Case("opteron", CK_Opteron)
+ .Case("opteron-sse3", CK_OpteronSSE3)
++ .Case("amdfam10", CK_AMDFAM10)
+ .Case("x86-64", CK_x86_64)
+ .Case("geode", CK_Geode)
+ .Default(CK_Generic);
+@@ -1441,6 +1443,7 @@
+ case CK_K8SSE3:
+ case CK_Opteron:
+ case CK_OpteronSSE3:
++ case CK_AMDFAM10:
+ case CK_x86_64:
+ return true;
+ }
+@@ -1459,12 +1462,10 @@
+ Features["ssse3"] = false;
+ Features["sse41"] = false;
+ Features["sse42"] = false;
++ Features["sse4a"] = false;
+ Features["aes"] = false;
+ Features["avx"] = false;
+
+- // LLVM does not currently recognize this.
+- // Features["sse4a"] = false;
+-
+ // FIXME: This *really* should not be here.
+
+ // X86_64 always has SSE2.
+@@ -1561,6 +1562,11 @@
+ setFeatureEnabled(Features, "sse3", true);
+ setFeatureEnabled(Features, "3dnowa", true);
+ break;
++ case CK_AMDFAM10:
++ setFeatureEnabled(Features, "sse3", true);
++ setFeatureEnabled(Features, "sse4a", true);
++ setFeatureEnabled(Features, "3dnowa", true);
++ break;
+ case CK_C3_2:
+ setFeatureEnabled(Features, "mmx", true);
+ setFeatureEnabled(Features, "sse", true);
+@@ -1604,6 +1610,8 @@
+ else if (Name == "avx")
+ Features["avx"] = Features["sse"] = Features["sse2"] = Features["sse3"] =
+ Features["ssse3"] = Features["sse41"] = Features["sse42"] = true;
++ else if (Name == "sse4a")
++ Features["sse4a"] = true;
+ } else {
+ if (Name == "mmx")
+ Features["mmx"] = Features["3dnow"] = Features["3dnowa"] = false;
+@@ -1630,6 +1638,8 @@
+ Features["aes"] = false;
+ else if (Name == "avx")
+ Features["avx"] = false;
++ else if (Name == "sse4a")
++ Features["sse4a"] = false;
+ }
+
+ return true;
+@@ -1826,6 +1836,11 @@
+ Builder.defineMacro("__k8__");
+ Builder.defineMacro("__tune_k8__");
+ break;
++ case CK_AMDFAM10:
++ Builder.defineMacro("__amdfam10");
++ Builder.defineMacro("__amdfam10__");
++ Builder.defineMacro("__tune_amdfam10__");
++ break;
+ case CK_Geode:
+ Builder.defineMacro("__geode");
+ Builder.defineMacro("__geode__");