[cfe-commits] clang and 3dnow(a)
Alexander Best
arundel at FreeBSD.ORG
Sat Apr 16 18:09:51 PDT 2011
On Fri Apr 15 11, Dimitry Andric wrote:
> On 2011-04-15 01:41, Alexander Best wrote:
> >per coincidence i discovered the following contrary behavior between gcc
> >and
> >clang:
> >
> >-mno-mmx implies -mno-3dnow under gcc. under clang -mno-mmx will *not*
> >imply
> >-mno-3dnow!
> >
> >is this a clang design feature or a bug? fixing it would be trivial (see
> >attached patch).
>
> I don't think it was intentionally designed, nor that it is a bug. It
> it just arbitrary what you disable when you specify '-mno-mmx'.
>
> However, it would probably be nice if clang emulated gcc's behaviour
> here.
here's an updated patch against clang tot.
>
> Adding cfe-commits@ in the loop, to see if the clang guys think this is
> desirable.
>
>
> diff --git a/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
> b/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
> index 55321f2..1af7c52 100644
> --- a/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
> +++ b/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
> @@ -1133,8 +1133,9 @@ bool
> X86TargetInfo::setFeatureEnabled(llvm::StringMap<bool> &Features,
> Features["avx"] = true;
> } else {
> if (Name == "mmx")
> - Features["mmx"] = Features["sse"] = Features["sse2"] =
> Features["sse3"] =
> - Features["ssse3"] = Features["sse41"] = Features["sse42"] = false;
> + Features["mmx"] = Features["3dnow"] = Features["3dnowa"] =
> + Features["sse"] = Features["sse2"] = Features["sse3"] =
> + Features["ssse3"] = Features["sse41"] = Features["sse42"] = false;
> else if (Name == "sse")
> Features["sse"] = Features["sse2"] = Features["sse3"] =
> Features["ssse3"] = Features["sse41"] = Features["sse42"] = false;
--
a13x
-------------- next part --------------
Index: tools/clang/lib/Basic/Targets.cpp
===================================================================
--- tools/clang/lib/Basic/Targets.cpp (revision 129652)
+++ tools/clang/lib/Basic/Targets.cpp (working copy)
@@ -1146,7 +1146,8 @@
Features["avx"] = true;
} else {
if (Name == "mmx")
- Features["mmx"] = Features["sse"] = Features["sse2"] = Features["sse3"] =
+ Features["mmx"] = Features["3dnow"] = Features["3dnowa"] =
+ Features["sse"] = Features["sse2"] = Features["sse3"] =
Features["ssse3"] = Features["sse41"] = Features["sse42"] = false;
else if (Name == "sse")
Features["sse"] = Features["sse2"] = Features["sse3"] =
@@ -1159,12 +1160,10 @@
Features["sse42"] = false;
else if (Name == "ssse3")
Features["ssse3"] = Features["sse41"] = Features["sse42"] = false;
- else if (Name == "sse4")
+ else if (Name == "sse4" || Name == "sse4.1")
Features["sse41"] = Features["sse42"] = false;
else if (Name == "sse4.2")
Features["sse42"] = false;
- else if (Name == "sse4.1")
- Features["sse41"] = Features["sse42"] = false;
else if (Name == "3dnow")
Features["3dnow"] = Features["3dnowa"] = false;
else if (Name == "3dnowa")
More information about the cfe-commits
mailing list