diff options
author | Jian Li <jian.y.li@intel.com> | 2014-09-03 18:54:26 +0800 |
---|---|---|
committer | Yong Chen <yong.a.chen@intel.com> | 2014-09-03 21:46:36 +0800 |
commit | 602ce0336c0ff5109923cee9b4426e913e718605 (patch) | |
tree | 79be91d882fd840cd52daa996111d073e2556da7 /tools | |
parent | ea6b1c5af978698f266f352c8a6f00ec3677e7e5 (diff) | |
download | libbcc-602ce0336c0ff5109923cee9b4426e913e718605.tar.gz |
Set x86 SSE features explicitly in bcc
Change-Id: Ia31393f08703f9474fee31fc03de7888fca78413
Signed-off-by: Yong Chen <yong.a.chen@intel.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/bcc/Main.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tools/bcc/Main.cpp b/tools/bcc/Main.cpp index 959f9e6..6b9b13d 100644 --- a/tools/bcc/Main.cpp +++ b/tools/bcc/Main.cpp @@ -125,6 +125,30 @@ bool ConfigCompiler(RSCompilerDriver &pRSCD) { return false; } + // llvm3.5 has removed the auto-detect feature for x86 subtarget, + // so set features explicitly in bcc. + if ((config->getTriple().find("i686") != std::string::npos) || + (config->getTriple().find("x86_64") != std::string::npos)) { + std::vector<std::string> fv; + +#if defined(__SSE3__) + fv.push_back("+sse3"); +#endif +#if defined(__SSSE3__) + fv.push_back("+ssse3"); +#endif +#if defined(__SSE4_1__) + fv.push_back("+sse4.1"); +#endif +#if defined(__SSE4_2__) + fv.push_back("+sse4.2"); +#endif + + if (fv.size()) { + config->setFeatureString(fv); + } + } + switch (OptOptLevel) { case '0': config->setOptimizationLevel(llvm::CodeGenOpt::None); break; case '1': config->setOptimizationLevel(llvm::CodeGenOpt::Less); break; |