]> granicus.if.org Git - llvm/commit
Encode duplication factor from loop vectorization and loop unrolling to discriminator.
authorDehao Chen <dehao@google.com>
Fri, 10 Feb 2017 21:09:07 +0000 (21:09 +0000)
committerDehao Chen <dehao@google.com>
Fri, 10 Feb 2017 21:09:07 +0000 (21:09 +0000)
commitd0b28d942ddf860adde50d4c75da5468cfbcbbb6
treee3bb91bcc7ea1e1c2f218aa738552ec72c727d0f
parent2c44e216a85f66c71eddd0eeddeccd6f5d805836
Encode duplication factor from loop vectorization and loop unrolling to discriminator.

Summary:
This patch starts the implementation as discuss in the following RFC: http://lists.llvm.org/pipermail/llvm-dev/2016-October/106532.html

When optimization duplicates code that will scale down the execution count of a basic block, we will record the duplication factor as part of discriminator so that the offline process tool can find the duplication factor and collect the accurate execution frequency of the corresponding source code. Two important optimization that fall into this category is loop vectorization and loop unroll. This patch records the duplication factor for these 2 optimizations.

The recording will be guarded by a flag encode-duplication-in-discriminators, which is off by default.

Reviewers: probinson, aprantl, davidxl, hfinkel, echristo

Reviewed By: hfinkel

Subscribers: mehdi_amini, anemet, mzolotukhin, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294782 91177308-0d34-0410-b5e6-96231b3b80d8
16 files changed:
docs/LangRef.rst
include/llvm/IR/DebugInfoMetadata.h
include/llvm/IR/Function.h
lib/IR/Metadata.cpp
lib/Transforms/Utils/AddDiscriminators.cpp
lib/Transforms/Utils/LoopUnroll.cpp
lib/Transforms/Vectorize/LoopVectorize.cpp
test/Transforms/AddDiscriminators/basic.ll
test/Transforms/AddDiscriminators/call-nested.ll
test/Transforms/AddDiscriminators/call.ll
test/Transforms/AddDiscriminators/diamond.ll
test/Transforms/AddDiscriminators/first-only.ll
test/Transforms/AddDiscriminators/inlined.ll
test/Transforms/AddDiscriminators/multiple.ll
test/Transforms/AddDiscriminators/oneline.ll
test/Transforms/LoopVectorize/discriminator.ll [new file with mode: 0644]