Initial vectorization support for svml calls (short vector math library).

Differential Revision: https://reviews.llvm.org/D19544

llvm-svn: 277167
This commit is contained in:
Matt Masten 2016-07-29 16:44:24 +00:00
parent a6669a1e05
commit 6731dead22
4 changed files with 9 additions and 3 deletions

View File

@ -228,7 +228,7 @@ CODEGENOPT(EmitCodeView, 1, 0)
ENUM_CODEGENOPT(Inlining, InliningMethod, 2, NoInlining)
// Vector functions library to use.
ENUM_CODEGENOPT(VecLib, VectorLibrary, 1, NoLibrary)
ENUM_CODEGENOPT(VecLib, VectorLibrary, 2, NoLibrary)
/// The default TLS model to use.
ENUM_CODEGENOPT(DefaultTLSModel, TLSModel, 2, GeneralDynamicTLSModel)

View File

@ -51,8 +51,9 @@ public:
};
enum VectorLibrary {
NoLibrary, // Don't use any vector library.
Accelerate // Use the Accelerate framework.
NoLibrary, // Don't use any vector library.
Accelerate, // Use the Accelerate framework.
SVML // Intel short vector math library.
};

View File

@ -263,6 +263,9 @@ static TargetLibraryInfoImpl *createTLII(llvm::Triple &TargetTriple,
case CodeGenOptions::Accelerate:
TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::Accelerate);
break;
case CodeGenOptions::SVML:
TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::SVML);
break;
default:
break;
}

View File

@ -459,6 +459,8 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
StringRef Name = A->getValue();
if (Name == "Accelerate")
Opts.setVecLib(CodeGenOptions::Accelerate);
else if (Name == "SVML")
Opts.setVecLib(CodeGenOptions::SVML);
else if (Name == "none")
Opts.setVecLib(CodeGenOptions::NoLibrary);
else