diff options
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; |