Index: contrib/llvm/tools/clang/lib/Basic/Targets.cpp =================================================================== --- contrib/llvm/tools/clang/lib/Basic/Targets.cpp (revision 243111) +++ contrib/llvm/tools/clang/lib/Basic/Targets.cpp (working copy) @@ -1716,53 +1716,43 @@ void X86TargetInfo::getDefaultFeatures(llvm::Strin break; case CK_Pentium3: case CK_Pentium3M: - setFeatureEnabled(Features, "mmx", true); setFeatureEnabled(Features, "sse", true); break; case CK_PentiumM: case CK_Pentium4: case CK_Pentium4M: case CK_x86_64: - setFeatureEnabled(Features, "mmx", true); setFeatureEnabled(Features, "sse2", true); break; case CK_Yonah: case CK_Prescott: case CK_Nocona: - setFeatureEnabled(Features, "mmx", true); setFeatureEnabled(Features, "sse3", true); break; case CK_Core2: - setFeatureEnabled(Features, "mmx", true); setFeatureEnabled(Features, "ssse3", true); break; case CK_Penryn: - setFeatureEnabled(Features, "mmx", true); setFeatureEnabled(Features, "sse4.1", true); break; case CK_Atom: - setFeatureEnabled(Features, "mmx", true); setFeatureEnabled(Features, "ssse3", true); break; case CK_Corei7: - setFeatureEnabled(Features, "mmx", true); setFeatureEnabled(Features, "sse4", true); break; case CK_Corei7AVX: - setFeatureEnabled(Features, "mmx", true); setFeatureEnabled(Features, "avx", true); setFeatureEnabled(Features, "aes", true); setFeatureEnabled(Features, "pclmul", true); break; case CK_CoreAVXi: - setFeatureEnabled(Features, "mmx", true); setFeatureEnabled(Features, "avx", true); setFeatureEnabled(Features, "aes", true); setFeatureEnabled(Features, "pclmul", true); setFeatureEnabled(Features, "rdrnd", true); break; case CK_CoreAVX2: - setFeatureEnabled(Features, "mmx", true); setFeatureEnabled(Features, "avx2", true); setFeatureEnabled(Features, "aes", true); setFeatureEnabled(Features, "pclmul", true); @@ -1807,23 +1797,32 @@ void X86TargetInfo::getDefaultFeatures(llvm::Strin setFeatureEnabled(Features, "3dnowa", true); break; case CK_AMDFAM10: - setFeatureEnabled(Features, "sse3", true); setFeatureEnabled(Features, "sse4a", true); setFeatureEnabled(Features, "3dnowa", true); + setFeatureEnabled(Features, "lzcnt", true); + setFeatureEnabled(Features, "popcnt", true); break; case CK_BTVER1: setFeatureEnabled(Features, "ssse3", true); setFeatureEnabled(Features, "sse4a", true); + setFeatureEnabled(Features, "lzcnt", true); + setFeatureEnabled(Features, "popcnt", true); break; case CK_BDVER1: + setFeatureEnabled(Features, "xop", true); + setFeatureEnabled(Features, "lzcnt", true); + setFeatureEnabled(Features, "aes", true); + setFeatureEnabled(Features, "pclmul", true); + break; case CK_BDVER2: - setFeatureEnabled(Features, "avx", true); setFeatureEnabled(Features, "xop", true); + setFeatureEnabled(Features, "lzcnt", true); setFeatureEnabled(Features, "aes", true); setFeatureEnabled(Features, "pclmul", true); + setFeatureEnabled(Features, "bmi", true); + setFeatureEnabled(Features, "fma", true); break; case CK_C3_2: - setFeatureEnabled(Features, "mmx", true); setFeatureEnabled(Features, "sse", true); break; } @@ -1882,12 +1881,12 @@ bool X86TargetInfo::setFeatureEnabled(llvm::String Features["ssse3"] = Features["sse41"] = Features["sse42"] = Features["popcnt"] = Features["avx"] = Features["fma"] = true; else if (Name == "fma4") - Features["mmx"] = Features["sse"] = Features["sse2"] = Features["sse3"] = + Features["mmx"] = Features["sse"] = Features["sse2"] = Features["sse3"] = Features["ssse3"] = Features["sse41"] = Features["sse42"] = Features["popcnt"] = Features["avx"] = Features["sse4a"] = Features["fma4"] = true; else if (Name == "xop") - Features["mmx"] = Features["sse"] = Features["sse2"] = Features["sse3"] = + Features["mmx"] = Features["sse"] = Features["sse2"] = Features["sse3"] = Features["ssse3"] = Features["sse41"] = Features["sse42"] = Features["popcnt"] = Features["avx"] = Features["sse4a"] = Features["fma4"] = Features["xop"] = true;