forked from OSchip/llvm-project
[X86] Use getHostCPUFeatures when 'native' is specified for cpu.
This is necessary because not aall Sandybridge, Ivybrige, Haswell, and Broadwell CPUs support AVX. Currently we modify the CPU name back to Nehalem for this case, but that turns off additional features for these CPUs. llvm-svn: 233672
This commit is contained in:
parent
1214bdcb8c
commit
a8bd6008ee
|
@ -1566,6 +1566,17 @@ static void AddGoldPlugin(const ToolChain &ToolChain, const ArgList &Args,
|
|||
static void getX86TargetFeatures(const Driver &D, const llvm::Triple &Triple,
|
||||
const ArgList &Args,
|
||||
std::vector<const char *> &Features) {
|
||||
// If -march=native, autodetect the feature list.
|
||||
if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
|
||||
if (StringRef(A->getValue()) == "native") {
|
||||
llvm::StringMap<bool> HostFeatures;
|
||||
if (llvm::sys::getHostCPUFeatures(HostFeatures))
|
||||
for (auto &F : HostFeatures)
|
||||
Features.push_back(Args.MakeArgString((F.second ? "+" : "-") +
|
||||
F.first()));
|
||||
}
|
||||
}
|
||||
|
||||
if (Triple.getArchName() == "x86_64h") {
|
||||
// x86_64h implies quite a few of the more modern subtarget features
|
||||
// for Haswell class CPUs, but not all of them. Opt-out of a few.
|
||||
|
|
Loading…
Reference in New Issue