diff options
author | Eli Bendersky <eliben@google.com> | 2014-06-11 17:56:26 +0000 |
---|---|---|
committer | Eli Bendersky <eliben@google.com> | 2014-06-11 17:56:26 +0000 |
commit | 86483b3a0cc010040d051a69aee160262bed7d23 (patch) | |
tree | 5bd7e58b2d5022b5cdc1afb6817865c9b2b758f9 /clang/lib/CodeGen/CGStmt.cpp | |
parent | 364a6747aa06ead940783e99f09e4759d271bdb3 (diff) | |
download | bcm5719-llvm-86483b3a0cc010040d051a69aee160262bed7d23.tar.gz bcm5719-llvm-86483b3a0cc010040d051a69aee160262bed7d23.zip |
Add loop unroll pragma support
http://reviews.llvm.org/D4089
Patch by Mark Heffernan.
llvm-svn: 210667
Diffstat (limited to 'clang/lib/CodeGen/CGStmt.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGStmt.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGStmt.cpp b/clang/lib/CodeGen/CGStmt.cpp index cca16249000..22373cddf30 100644 --- a/clang/lib/CodeGen/CGStmt.cpp +++ b/clang/lib/CodeGen/CGStmt.cpp @@ -550,6 +550,12 @@ void CodeGenFunction::EmitCondBrHints(llvm::LLVMContext &Context, case LoopHintAttr::InterleaveCount: MetadataName = "llvm.vectorizer.unroll"; break; + case LoopHintAttr::Unroll: + MetadataName = "llvm.loopunroll.enable"; + break; + case LoopHintAttr::UnrollCount: + MetadataName = "llvm.loopunroll.count"; + break; } llvm::Value *Value; @@ -572,6 +578,14 @@ void CodeGenFunction::EmitCondBrHints(llvm::LLVMContext &Context, Name = llvm::MDString::get(Context, MetadataName); Value = llvm::ConstantInt::get(Int32Ty, ValueInt); break; + case LoopHintAttr::Unroll: + Name = llvm::MDString::get(Context, MetadataName); + Value = (ValueInt == 0) ? Builder.getFalse() : Builder.getTrue(); + break; + case LoopHintAttr::UnrollCount: + Name = llvm::MDString::get(Context, MetadataName); + Value = llvm::ConstantInt::get(Int32Ty, ValueInt); + break; } SmallVector<llvm::Value *, 2> OpValues; |