diff options
author | Eli Bendersky <eliben@google.com> | 2014-06-25 15:42:16 +0000 |
---|---|---|
committer | Eli Bendersky <eliben@google.com> | 2014-06-25 15:42:16 +0000 |
commit | 713c1eaed4018e4c3ec5a64114a1c8bb4e240eb9 (patch) | |
tree | ea5d3a185aa12930e6841e7c8ed1d8c737017abb | |
parent | 3d34ffaa95ad22393234dd26b3622bd0ce6928cf (diff) | |
download | clang-713c1eaed4018e4c3ec5a64114a1c8bb4e240eb9.tar.gz clang-713c1eaed4018e4c3ec5a64114a1c8bb4e240eb9.tar.bz2 clang-713c1eaed4018e4c3ec5a64114a1c8bb4e240eb9.tar.xz |
Rename loop unrolling and loop vectorizer metadata to have a common prefix.
[Clang part]
These patches rename the loop unrolling and loop vectorizer metadata
such that they have a common 'llvm.loop.' prefix. Metadata name
changes:
llvm.vectorizer.* => llvm.loop.vectorizer.*
llvm.loopunroll.* => llvm.loop.unroll.*
This was a suggestion from an earlier review
(http://reviews.llvm.org/D4090) which added the loop unrolling
metadata.
Patch by Mark Heffernan.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211712 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/CGLoopInfo.cpp | 6 | ||||
-rw-r--r-- | lib/CodeGen/CGLoopInfo.h | 8 | ||||
-rw-r--r-- | lib/CodeGen/CGStmt.cpp | 12 | ||||
-rw-r--r-- | test/CodeGen/pragma-loop.cpp | 22 | ||||
-rw-r--r-- | test/OpenMP/simd_metadata.c | 5 |
5 files changed, 26 insertions, 27 deletions
diff --git a/lib/CodeGen/CGLoopInfo.cpp b/lib/CodeGen/CGLoopInfo.cpp index 7b154b2d27..1bc6d20158 100644 --- a/lib/CodeGen/CGLoopInfo.cpp +++ b/lib/CodeGen/CGLoopInfo.cpp @@ -31,7 +31,7 @@ static MDNode *createMetadata(LLVMContext &Ctx, const LoopAttributes &Attrs) { // Setting vectorizer.width if (Attrs.VectorizerWidth > 0) { - Value *Vals[] = { MDString::get(Ctx, "llvm.vectorizer.width"), + Value *Vals[] = { MDString::get(Ctx, "llvm.loop.vectorize.width"), ConstantInt::get(Type::getInt32Ty(Ctx), Attrs.VectorizerWidth) }; Args.push_back(MDNode::get(Ctx, Vals)); @@ -39,7 +39,7 @@ static MDNode *createMetadata(LLVMContext &Ctx, const LoopAttributes &Attrs) { // Setting vectorizer.unroll if (Attrs.VectorizerUnroll > 0) { - Value *Vals[] = { MDString::get(Ctx, "llvm.vectorizer.unroll"), + Value *Vals[] = { MDString::get(Ctx, "llvm.loop.vectorize.unroll"), ConstantInt::get(Type::getInt32Ty(Ctx), Attrs.VectorizerUnroll) }; Args.push_back(MDNode::get(Ctx, Vals)); @@ -47,7 +47,7 @@ static MDNode *createMetadata(LLVMContext &Ctx, const LoopAttributes &Attrs) { // Setting vectorizer.enable if (Attrs.VectorizerEnable != LoopAttributes::VecUnspecified) { - Value *Vals[] = { MDString::get(Ctx, "llvm.vectorizer.enable"), + Value *Vals[] = { MDString::get(Ctx, "llvm.loop.vectorize.enable"), ConstantInt::get(Type::getInt1Ty(Ctx), (Attrs.VectorizerEnable == LoopAttributes::VecEnable)) }; diff --git a/lib/CodeGen/CGLoopInfo.h b/lib/CodeGen/CGLoopInfo.h index f4a8dcae69..2461368336 100644 --- a/lib/CodeGen/CGLoopInfo.h +++ b/lib/CodeGen/CGLoopInfo.h @@ -37,16 +37,16 @@ struct LoopAttributes { /// \brief Generate llvm.loop.parallel metadata for loads and stores. bool IsParallel; - /// \brief Values of llvm.vectorizer.enable metadata. + /// \brief Values of llvm.loop.vectorize.enable metadata. enum LVEnableState { VecUnspecified, VecEnable, VecDisable }; - /// \brief llvm.vectorizer.enable + /// \brief llvm.loop.vectorize.enable LVEnableState VectorizerEnable; - /// \brief llvm.vectorizer.width + /// \brief llvm.loop.vectorize.width unsigned VectorizerWidth; - /// \brief llvm.vectorizer.unroll + /// \brief llvm.loop.vectorize.unroll unsigned VectorizerUnroll; }; diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp index cadfe399fa..3e49733a9c 100644 --- a/lib/CodeGen/CGStmt.cpp +++ b/lib/CodeGen/CGStmt.cpp @@ -534,7 +534,7 @@ void CodeGenFunction::EmitCondBrHints(llvm::LLVMContext &Context, if (Attrs.empty()) return; - // Add vectorize hints to the metadata on the conditional branch. + // Add vectorize and unroll hints to the metadata on the conditional branch. SmallVector<llvm::Value *, 2> Metadata(1); for (const auto *Attr : Attrs) { const LoopHintAttr *LH = dyn_cast<LoopHintAttr>(Attr); @@ -550,17 +550,17 @@ void CodeGenFunction::EmitCondBrHints(llvm::LLVMContext &Context, switch (Option) { case LoopHintAttr::Vectorize: case LoopHintAttr::VectorizeWidth: - MetadataName = "llvm.vectorizer.width"; + MetadataName = "llvm.loop.vectorize.width"; break; case LoopHintAttr::Interleave: case LoopHintAttr::InterleaveCount: - MetadataName = "llvm.vectorizer.unroll"; + MetadataName = "llvm.loop.vectorize.unroll"; break; case LoopHintAttr::Unroll: - MetadataName = "llvm.loopunroll.enable"; + MetadataName = "llvm.loop.unroll.enable"; break; case LoopHintAttr::UnrollCount: - MetadataName = "llvm.loopunroll.count"; + MetadataName = "llvm.loop.unroll.count"; break; } @@ -572,7 +572,7 @@ void CodeGenFunction::EmitCondBrHints(llvm::LLVMContext &Context, if (ValueInt == 1) { // FIXME: In the future I will modifiy the behavior of the metadata // so we can enable/disable vectorization and interleaving separately. - Name = llvm::MDString::get(Context, "llvm.vectorizer.enable"); + Name = llvm::MDString::get(Context, "llvm.loop.vectorize.enable"); Value = Builder.getTrue(); break; } diff --git a/test/CodeGen/pragma-loop.cpp b/test/CodeGen/pragma-loop.cpp index 2bb8860110..447a709514 100644 --- a/test/CodeGen/pragma-loop.cpp +++ b/test/CodeGen/pragma-loop.cpp @@ -109,21 +109,21 @@ void template_test(double *List, int Length) { } // CHECK: ![[LOOP_1]] = metadata !{metadata ![[LOOP_1]], metadata ![[UNROLLENABLE_1:.*]], metadata ![[WIDTH_4:.*]], metadata ![[INTERLEAVE_4:.*]], metadata ![[INTENABLE_1:.*]]} -// CHECK: ![[UNROLLENABLE_1]] = metadata !{metadata !"llvm.loopunroll.enable", i1 true} -// CHECK: ![[WIDTH_4]] = metadata !{metadata !"llvm.vectorizer.width", i32 4} -// CHECK: ![[INTERLEAVE_4]] = metadata !{metadata !"llvm.vectorizer.unroll", i32 4} -// CHECK: ![[INTENABLE_1]] = metadata !{metadata !"llvm.vectorizer.enable", i1 true} +// CHECK: ![[UNROLLENABLE_1]] = metadata !{metadata !"llvm.loop.unroll.enable", i1 true} +// CHECK: ![[WIDTH_4]] = metadata !{metadata !"llvm.loop.vectorize.width", i32 4} +// CHECK: ![[INTERLEAVE_4]] = metadata !{metadata !"llvm.loop.vectorize.unroll", i32 4} +// CHECK: ![[INTENABLE_1]] = metadata !{metadata !"llvm.loop.vectorize.enable", i1 true} // CHECK: ![[LOOP_2]] = metadata !{metadata ![[LOOP_2:.*]], metadata ![[UNROLLENABLE_0:.*]], metadata ![[INTERLEAVE_4:.*]], metadata ![[WIDTH_8:.*]]} -// CHECK: ![[UNROLLENABLE_0]] = metadata !{metadata !"llvm.loopunroll.enable", i1 false} -// CHECK: ![[WIDTH_8]] = metadata !{metadata !"llvm.vectorizer.width", i32 8} +// CHECK: ![[UNROLLENABLE_0]] = metadata !{metadata !"llvm.loop.unroll.enable", i1 false} +// CHECK: ![[WIDTH_8]] = metadata !{metadata !"llvm.loop.vectorize.width", i32 8} // CHECK: ![[LOOP_3]] = metadata !{metadata ![[LOOP_3]], metadata ![[UNROLL_8:.*]], metadata ![[INTERLEAVE_4:.*]], metadata ![[ENABLE_1:.*]]} -// CHECK: ![[UNROLL_8]] = metadata !{metadata !"llvm.loopunroll.count", i32 8} +// CHECK: ![[UNROLL_8]] = metadata !{metadata !"llvm.loop.unroll.count", i32 8} // CHECK: ![[LOOP_4]] = metadata !{metadata ![[LOOP_4]], metadata ![[INTERLEAVE_2:.*]], metadata ![[WIDTH_2:.*]]} -// CHECK: ![[INTERLEAVE_2]] = metadata !{metadata !"llvm.vectorizer.unroll", i32 2} -// CHECK: ![[WIDTH_2]] = metadata !{metadata !"llvm.vectorizer.width", i32 2} +// CHECK: ![[INTERLEAVE_2]] = metadata !{metadata !"llvm.loop.vectorize.unroll", i32 2} +// CHECK: ![[WIDTH_2]] = metadata !{metadata !"llvm.loop.vectorize.width", i32 2} // CHECK: ![[LOOP_5]] = metadata !{metadata ![[LOOP_5]], metadata ![[UNROLLENABLE_0:.*]], metadata ![[WIDTH_1:.*]]} -// CHECK: ![[WIDTH_1]] = metadata !{metadata !"llvm.vectorizer.width", i32 1} +// CHECK: ![[WIDTH_1]] = metadata !{metadata !"llvm.loop.vectorize.width", i32 1} // CHECK: ![[LOOP_6]] = metadata !{metadata ![[LOOP_6]], metadata ![[UNROLL_8:.*]], metadata ![[INTERLEAVE_2:.*]], metadata ![[WIDTH_2:.*]]} // CHECK: ![[LOOP_7]] = metadata !{metadata ![[LOOP_7]], metadata ![[UNROLL_8:.*]], metadata ![[INTERLEAVE_8:.*]], metadata ![[WIDTH_8:.*]]} -// CHECK: ![[INTERLEAVE_8]] = metadata !{metadata !"llvm.vectorizer.unroll", i32 8} +// CHECK: ![[INTERLEAVE_8]] = metadata !{metadata !"llvm.loop.vectorize.unroll", i32 8} // CHECK: ![[LOOP_8]] = metadata !{metadata ![[LOOP_8]], metadata ![[UNROLL_8:.*]], metadata ![[INTERLEAVE_2:.*]], metadata ![[WIDTH_2:.*]]} diff --git a/test/OpenMP/simd_metadata.c b/test/OpenMP/simd_metadata.c index 427461dc34..a0588adf7d 100644 --- a/test/OpenMP/simd_metadata.c +++ b/test/OpenMP/simd_metadata.c @@ -40,8 +40,8 @@ void h3(float *c, float *a, float *b, int size) // Metadata for h1: // CHECK: [[LOOP_H1_HEADER:![0-9]+]] = metadata !{metadata [[LOOP_H1_HEADER]], metadata [[LOOP_WIDTH_16:![0-9]+]], metadata [[LOOP_VEC_ENABLE:![0-9]+]]} -// CHECK: [[LOOP_WIDTH_16]] = metadata !{metadata !"llvm.vectorizer.width", i32 16} -// CHECK: [[LOOP_VEC_ENABLE]] = metadata !{metadata !"llvm.vectorizer.enable", i1 true} +// CHECK: [[LOOP_WIDTH_16]] = metadata !{metadata !"llvm.loop.vectorize.width", i32 16} +// CHECK: [[LOOP_VEC_ENABLE]] = metadata !{metadata !"llvm.loop.vectorize.enable", i1 true} // // Metadata for h2: // CHECK: [[LOOP_H2_HEADER]] = metadata !{metadata [[LOOP_H2_HEADER]], metadata [[LOOP_VEC_ENABLE]]} @@ -49,4 +49,3 @@ void h3(float *c, float *a, float *b, int size) // Metadata for h3: // CHECK: [[LOOP_H3_HEADER:![0-9]+]] = metadata !{metadata [[LOOP_H3_HEADER]], metadata [[LOOP_VEC_ENABLE]]} // - |