[llvm] r295538 - Increases full-unroll threshold.

Bill Seurer via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 27 12:57:29 PST 2017


Any progress on this?  The one buildbot has been failing solid now for 
over a week.  Maybe disable the test until the problem is identified and 
fixed?

On 02/21/2017 02:52 PM, Andrew Adams wrote:
> Sorry, probably a false alarm. I think this commit just exposed a
> preexisting issue by unrolling that test fully. I changed the test to
> use loops with a smaller total trip count and now it's breaking at an
> earlier commit instead. I'll continue my bisection search.
>
> - Andrew
>
> On Tue, Feb 21, 2017 at 12:34 PM, Andrew Adams <andrew.b.adams at gmail.com
> <mailto:andrew.b.adams at gmail.com>> wrote:
>
>     FWIW, this commit broke the Halide buildbots too. One of the tests
>     started producing a different output. I don't *think* there's
>     undefined behavior in the test, but I could be wrong. I'll
>     investigate further and open a bug if appropriate.
>
>     - Andrew
>
>     On Tue, Feb 21, 2017 at 10:12 AM, Dehao Chen via llvm-commits
>     <llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>>
>     wrote:
>
>         This is weird:
>
>         * comparing with
>         http://lab.llvm.org:8011/builders/clang-ppc64le-linux-lnt/builds/3128
>         <http://lab.llvm.org:8011/builders/clang-ppc64le-linux-lnt/builds/3128>
>         and
>         http://lab.llvm.org:8011/builders/clang-ppc64le-linux-lnt/builds/3129
>         <http://lab.llvm.org:8011/builders/clang-ppc64le-linux-lnt/builds/3129>,
>         step #10 fails at 3128, while fixed at 3129
>         * oggenc was not built O3, so my patch should not change the codegen
>         of that binary.
>         * comparing at test.log between 2 builds yields very different
>         log data.
>         * this is the only failing report for this patch.
>
>         So my question is, is it possible that there is some configuration
>         change for that bot between 3128 and 3129?
>
>         Thanks,
>         Dehao
>
>         On Mon, Feb 20, 2017 at 1:40 PM, Bill Seurer
>         <seurer at linux.vnet.ibm.com <mailto:seurer at linux.vnet.ibm.com>>
>         wrote:
>         > This change breaks one of the tests from the testsuite when
>         run by lnt on
>         > powerpcle.  See
>         >
>         http://lab.llvm.org:8011/builders/clang-ppc64le-linux-lnt/builds/3129
>         <http://lab.llvm.org:8011/builders/clang-ppc64le-linux-lnt/builds/3129>
>         >
>         > Some info from a local run I did:
>         >
>         > ---------------------------------------------------------------
>         >>>> =========
>         >>>>
>         '/home/seurer/sandbox/test-2017-02-20_19-32-13/MultiSource/Applications/oggenc/oggenc'
>         >>>> Program
>         > ---------------------------------------------------------------
>         >
>         > TEST-PASS: compile
>         >
>         /home/seurer/sandbox/test-2017-02-20_19-32-13/MultiSource/Applications/oggenc/oggenc
>         > TEST-RESULT-compile-success: pass
>         > TEST-RESULT-compile-hash: de7b7004f7c0796635bcfacf44886a6a
>         > TEST-RESULT-compile-time: user 19.615300
>         > TEST-RESULT-compile-real-time: real 19.785200
>         >
>         > TEST-FAIL: exec
>         >
>         /home/seurer/sandbox/test-2017-02-20_19-32-13/MultiSource/Applications/oggenc/oggenc
>         > TEST-RESULT-exec-time: user       0.1646
>         > TEST-RESULT-exec-real-time: real       0.1680
>         >
>         >
>         >
>         > On 02/17/2017 08:46 PM, Dehao Chen via llvm-commits wrote:
>         >>
>         >> Author: dehao
>         >> Date: Fri Feb 17 21:46:51 2017
>         >> New Revision: 295538
>         >>
>         >> URL: http://llvm.org/viewvc/llvm-project?rev=295538&view=rev
>         <http://llvm.org/viewvc/llvm-project?rev=295538&view=rev>
>         >> Log:
>         >> Increases full-unroll threshold.
>         >>
>         >> Summary:
>         >> The default threshold for fully unroll is too conservative.
>         This patch
>         >> doubles the full-unroll threshold
>         >>
>         >> This change will affect the following speccpu2006 benchmarks
>         (performance
>         >> numbers were collected from Intel Sandybridge):
>         >>
>         >> Performance:
>         >>
>         >> 403     0.11%
>         >> 433     0.51%
>         >> 445     0.48%
>         >> 447     3.50%
>         >> 453     1.49%
>         >> 464     0.75%
>         >>
>         >> Code size:
>         >>
>         >> 403     0.56%
>         >> 433     0.96%
>         >> 445     2.16%
>         >> 447     2.96%
>         >> 453     0.94%
>         >> 464     8.02%
>         >>
>         >> The compiler time overhead is similar with code size.
>         >>
>         >> Reviewers: davidxl, mkuper, mzolotukhin, hfinkel, chandlerc
>         >>
>         >> Reviewed By: hfinkel, chandlerc
>         >>
>         >> Subscribers: mehdi_amini, zzheng, efriedma, haicheng, hfinkel,
>         >> llvm-commits
>         >>
>         >> Differential Revision: https://reviews.llvm.org/D28368
>         <https://reviews.llvm.org/D28368>
>         >>
>         >> Modified:
>         >>      llvm/trunk/include/llvm/Transforms/Scalar.h
>         >>      llvm/trunk/include/llvm/Transforms/Scalar/LoopUnrollPass.h
>         >>      llvm/trunk/lib/Passes/PassBuilder.cpp
>         >>      llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
>         >>      llvm/trunk/lib/Transforms/Scalar/LoopUnrollPass.cpp
>         >>
>         llvm/trunk/test/Transforms/LoopVectorize/X86/metadata-enable.ll
>         >>
>         >> Modified: llvm/trunk/include/llvm/Transforms/Scalar.h
>         >> URL:
>         >>
>         http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Scalar.h?rev=295538&r1=295537&r2=295538&view=diff
>         <http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Scalar.h?rev=295538&r1=295537&r2=295538&view=diff>
>         >>
>         >>
>         ==============================================================================
>         >> --- llvm/trunk/include/llvm/Transforms/Scalar.h (original)
>         >> +++ llvm/trunk/include/llvm/Transforms/Scalar.h Fri Feb 17
>         21:46:51 2017
>         >> @@ -181,11 +181,11 @@ Pass *createLoopInstSimplifyPass();
>         >>   //
>         >>   // LoopUnroll - This pass is a simple loop unrolling pass.
>         >>   //
>         >> -Pass *createLoopUnrollPass(int Threshold = -1, int Count = -1,
>         >> +Pass *createLoopUnrollPass(int OptLevel = 2, int Threshold =
>         -1, int
>         >> Count = -1,
>         >>                              int AllowPartial = -1, int
>         Runtime = -1,
>         >>                              int UpperBound = -1);
>         >>   // Create an unrolling pass for full unrolling that uses
>         exact trip
>         >> count only.
>         >> -Pass *createSimpleLoopUnrollPass();
>         >> +Pass *createSimpleLoopUnrollPass(int OptLevel);
>         >>
>         >>
>         //===----------------------------------------------------------------------===//
>         >>   //
>         >>
>         >> Modified:
>         llvm/trunk/include/llvm/Transforms/Scalar/LoopUnrollPass.h
>         >> URL:
>         >>
>         http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Scalar/LoopUnrollPass.h?rev=295538&r1=295537&r2=295538&view=diff
>         <http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Scalar/LoopUnrollPass.h?rev=295538&r1=295537&r2=295538&view=diff>
>         >>
>         >>
>         ==============================================================================
>         >> ---
>         llvm/trunk/include/llvm/Transforms/Scalar/LoopUnrollPass.h
>         (original)
>         >> +++
>         llvm/trunk/include/llvm/Transforms/Scalar/LoopUnrollPass.h Fri
>         Feb 17
>         >> 21:46:51 2017
>         >> @@ -18,9 +18,10 @@ namespace llvm {
>         >>     class LoopUnrollPass : public PassInfoMixin<LoopUnrollPass> {
>         >>     const bool AllowPartialUnrolling;
>         >> +  const int OptLevel;
>         >>   -  explicit LoopUnrollPass(bool AllowPartialUnrolling)
>         >> -      : AllowPartialUnrolling(AllowPartialUnrolling) {}
>         >> +  explicit LoopUnrollPass(bool AllowPartialUnrolling, int
>         OptLevel)
>         >> +      : AllowPartialUnrolling(AllowPartialUnrolling),
>         OptLevel(OptLevel)
>         >> {}
>         >>     public:
>         >>     /// Create an instance of the loop unroll pass that will
>         support both
>         >> full
>         >> @@ -28,16 +29,16 @@ public:
>         >>     ///
>         >>     /// This uses the target information (or flags) to
>         control the
>         >> thresholds for
>         >>     /// different unrolling stategies but supports all of them.
>         >> -  static LoopUnrollPass create() {
>         >> -    return LoopUnrollPass(/*AllowPartialUnrolling*/ true);
>         >> +  static LoopUnrollPass create(int OptLevel = 2) {
>         >> +    return LoopUnrollPass(/*AllowPartialUnrolling*/ true,
>         OptLevel);
>         >>     }
>         >>       /// Create an instance of the loop unroll pass that
>         only does full
>         >> loop
>         >>     /// unrolling.
>         >>     ///
>         >>     /// This will disable any runtime or partial unrolling.
>         >> -  static LoopUnrollPass createFull() {
>         >> -    return LoopUnrollPass(/*AllowPartialUnrolling*/ false);
>         >> +  static LoopUnrollPass createFull(int OptLevel = 2) {
>         >> +    return LoopUnrollPass(/*AllowPartialUnrolling*/ false,
>         OptLevel);
>         >>     }
>         >>       PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM,
>         >>
>         >> Modified: llvm/trunk/lib/Passes/PassBuilder.cpp
>         >> URL:
>         >>
>         http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassBuilder.cpp?rev=295538&r1=295537&r2=295538&view=diff
>         <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassBuilder.cpp?rev=295538&r1=295537&r2=295538&view=diff>
>         >>
>         >>
>         ==============================================================================
>         >> --- llvm/trunk/lib/Passes/PassBuilder.cpp (original)
>         >> +++ llvm/trunk/lib/Passes/PassBuilder.cpp Fri Feb 17 21:46:51
>         2017
>         >> @@ -334,7 +334,7 @@ PassBuilder::buildFunctionSimplification
>         >>     LPM2.addPass(IndVarSimplifyPass());
>         >>     LPM2.addPass(LoopIdiomRecognizePass());
>         >>     LPM2.addPass(LoopDeletionPass());
>         >> -  LPM2.addPass(LoopUnrollPass::createFull());
>         >> +  LPM2.addPass(LoopUnrollPass::createFull(Level));
>         >>       // We provide the opt remark emitter pass for LICM to
>         use. We only
>         >> need to do
>         >>     // this once as it is immutable.
>         >> @@ -605,7 +605,7 @@ PassBuilder::buildPerModuleDefaultPipeli
>         >>     // FIXME: It would be really good to use a
>         loop-integrated instruction
>         >>     // combiner for cleanup here so that the unrolling and
>         LICM can be
>         >> pipelined
>         >>     // across the loop nests.
>         >> -
>         >>
>         OptimizePM.addPass(createFunctionToLoopPassAdaptor(LoopUnrollPass::create()));
>         >> +
>         >>
>         OptimizePM.addPass(createFunctionToLoopPassAdaptor(LoopUnrollPass::create(Level)));
>         >>     OptimizePM.addPass(InstCombinePass());
>         >>
>         >>
>         OptimizePM.addPass(RequireAnalysisPass<OptimizationRemarkEmitterAnalysis,
>         >> Function>());
>         >>
>          OptimizePM.addPass(createFunctionToLoopPassAdaptor(LICMPass()));
>         >>
>         >> Modified: llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
>         >> URL:
>         >>
>         http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp?rev=295538&r1=295537&r2=295538&view=diff
>         <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp?rev=295538&r1=295537&r2=295538&view=diff>
>         >>
>         >>
>         ==============================================================================
>         >> --- llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
>         (original)
>         >> +++ llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp Fri
>         Feb 17
>         >> 21:46:51 2017
>         >> @@ -320,7 +320,7 @@ void PassManagerBuilder::addFunctionSimp
>         >>       MPM.add(createCFGSimplificationPass());
>         >>     }
>         >>     if (!DisableUnrollLoops)
>         >> -    MPM.add(createSimpleLoopUnrollPass());    // Unroll
>         small loops
>         >> +    MPM.add(createSimpleLoopUnrollPass(OptLevel));    //
>         Unroll small
>         >> loops
>         >>     addExtensionsToPM(EP_LoopOptimizerEnd, MPM);
>         >>       if (OptLevel > 1) {
>         >> @@ -366,7 +366,7 @@ void PassManagerBuilder::addFunctionSimp
>         >>           // BBVectorize may have significantly shortened a
>         loop body;
>         >> unroll again.
>         >>         if (!DisableUnrollLoops)
>         >> -        MPM.add(createLoopUnrollPass());
>         >> +        MPM.add(createLoopUnrollPass(OptLevel));
>         >>       }
>         >>     }
>         >>   @@ -612,7 +612,7 @@ void PassManagerBuilder::populateModuleP
>         >>           // BBVectorize may have significantly shortened a
>         loop body;
>         >> unroll again.
>         >>         if (!DisableUnrollLoops)
>         >> -        MPM.add(createLoopUnrollPass());
>         >> +        MPM.add(createLoopUnrollPass(OptLevel));
>         >>       }
>         >>     }
>         >>   @@ -621,7 +621,7 @@ void PassManagerBuilder::populateModuleP
>         >>     addInstructionCombiningPass(MPM);
>         >>       if (!DisableUnrollLoops) {
>         >> -    MPM.add(createLoopUnrollPass());    // Unroll small loops
>         >> +    MPM.add(createLoopUnrollPass(OptLevel));    // Unroll
>         small loops
>         >>         // LoopUnroll may generate some redundency to cleanup.
>         >>       addInstructionCombiningPass(MPM);
>         >> @@ -772,11 +772,11 @@ void PassManagerBuilder::addLTOOptimizat
>         >>       PM.add(createLoopInterchangePass());
>         >>       if (!DisableUnrollLoops)
>         >> -    PM.add(createSimpleLoopUnrollPass());   // Unroll small
>         loops
>         >> +    PM.add(createSimpleLoopUnrollPass(OptLevel));   //
>         Unroll small loops
>         >>     PM.add(createLoopVectorizePass(true, LoopVectorize));
>         >>     // The vectorizer may have significantly shortened a loop
>         body; unroll
>         >> again.
>         >>     if (!DisableUnrollLoops)
>         >> -    PM.add(createLoopUnrollPass());
>         >> +    PM.add(createLoopUnrollPass(OptLevel));
>         >>       // Now that we've optimized loops (in particular loop
>         induction
>         >> variables),
>         >>     // we may have exposed more scalar opportunities. Run
>         parts of the
>         >> scalar
>         >>
>         >> Modified: llvm/trunk/lib/Transforms/Scalar/LoopUnrollPass.cpp
>         >> URL:
>         >>
>         http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopUnrollPass.cpp?rev=295538&r1=295537&r2=295538&view=diff
>         <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopUnrollPass.cpp?rev=295538&r1=295537&r2=295538&view=diff>
>         >>
>         >>
>         ==============================================================================
>         >> --- llvm/trunk/lib/Transforms/Scalar/LoopUnrollPass.cpp
>         (original)
>         >> +++ llvm/trunk/lib/Transforms/Scalar/LoopUnrollPass.cpp Fri
>         Feb 17
>         >> 21:46:51 2017
>         >> @@ -131,13 +131,14 @@ static const unsigned NoThreshold = UINT
>         >>   /// Gather the various unrolling parameters based on the
>         defaults,
>         >> compiler
>         >>   /// flags, TTI overrides and user specified parameters.
>         >>   static TargetTransformInfo::UnrollingPreferences
>         >> gatherUnrollingPreferences(
>         >> -    Loop *L, const TargetTransformInfo &TTI, Optional<unsigned>
>         >> UserThreshold,
>         >> -    Optional<unsigned> UserCount, Optional<bool>
>         UserAllowPartial,
>         >> -    Optional<bool> UserRuntime, Optional<bool> UserUpperBound) {
>         >> +    Loop *L, const TargetTransformInfo &TTI, int OptLevel,
>         >> +    Optional<unsigned> UserThreshold, Optional<unsigned>
>         UserCount,
>         >> +    Optional<bool> UserAllowPartial, Optional<bool> UserRuntime,
>         >> +    Optional<bool> UserUpperBound) {
>         >>     TargetTransformInfo::UnrollingPreferences UP;
>         >>       // Set up the defaults
>         >> -  UP.Threshold = 150;
>         >> +  UP.Threshold = OptLevel > 2 ? 300 : 150;
>         >>     UP.MaxPercentThresholdBoost = 400;
>         >>     UP.OptSizeThreshold = 0;
>         >>     UP.PartialThreshold = 150;
>         >> @@ -927,7 +928,7 @@ static bool computeUnrollCount(
>         >>   static bool tryToUnrollLoop(Loop *L, DominatorTree &DT,
>         LoopInfo *LI,
>         >>                               ScalarEvolution *SE, const
>         >> TargetTransformInfo &TTI,
>         >>                               AssumptionCache &AC,
>         >> OptimizationRemarkEmitter &ORE,
>         >> -                            bool PreserveLCSSA,
>         >> +                            bool PreserveLCSSA, int OptLevel,
>         >>                               Optional<unsigned> ProvidedCount,
>         >>                               Optional<unsigned>
>         ProvidedThreshold,
>         >>                               Optional<bool>
>         ProvidedAllowPartial,
>         >> @@ -947,7 +948,7 @@ static bool tryToUnrollLoop(Loop *L, Dom
>         >>     bool NotDuplicatable;
>         >>     bool Convergent;
>         >>     TargetTransformInfo::UnrollingPreferences UP =
>         >> gatherUnrollingPreferences(
>         >> -      L, TTI, ProvidedThreshold, ProvidedCount,
>         ProvidedAllowPartial,
>         >> +      L, TTI, OptLevel, ProvidedThreshold, ProvidedCount,
>         >> ProvidedAllowPartial,
>         >>         ProvidedRuntime, ProvidedUpperBound);
>         >>     // Exit early if unrolling is disabled.
>         >>     if (UP.Threshold == 0 && (!UP.Partial ||
>         UP.PartialThreshold == 0))
>         >> @@ -1047,16 +1048,17 @@ namespace {
>         >>   class LoopUnroll : public LoopPass {
>         >>   public:
>         >>     static char ID; // Pass ID, replacement for typeid
>         >> -  LoopUnroll(Optional<unsigned> Threshold = None,
>         >> +  LoopUnroll(int OptLevel = 2, Optional<unsigned> Threshold
>         = None,
>         >>                Optional<unsigned> Count = None,
>         >>                Optional<bool> AllowPartial = None,
>         Optional<bool> Runtime
>         >> = None,
>         >>                Optional<bool> UpperBound = None)
>         >> -      : LoopPass(ID), ProvidedCount(std::move(Count)),
>         >> +      : LoopPass(ID), OptLevel(OptLevel),
>         >> ProvidedCount(std::move(Count)),
>         >>           ProvidedThreshold(Threshold),
>         >> ProvidedAllowPartial(AllowPartial),
>         >>           ProvidedRuntime(Runtime),
>         ProvidedUpperBound(UpperBound) {
>         >>       initializeLoopUnrollPass(*PassRegistry::getPassRegistry());
>         >>     }
>         >>   +  int OptLevel;
>         >>     Optional<unsigned> ProvidedCount;
>         >>     Optional<unsigned> ProvidedThreshold;
>         >>     Optional<bool> ProvidedAllowPartial;
>         >> @@ -1081,7 +1083,7 @@ public:
>         >>       OptimizationRemarkEmitter ORE(&F);
>         >>       bool PreserveLCSSA = mustPreserveAnalysisID(LCSSAID);
>         >>   -    return tryToUnrollLoop(L, DT, LI, SE, TTI, AC, ORE,
>         PreserveLCSSA,
>         >> +    return tryToUnrollLoop(L, DT, LI, SE, TTI, AC, ORE,
>         PreserveLCSSA,
>         >> OptLevel,
>         >>                              ProvidedCount, ProvidedThreshold,
>         >>                              ProvidedAllowPartial,
>         ProvidedRuntime,
>         >>                              ProvidedUpperBound);
>         >> @@ -1107,21 +1109,22 @@ INITIALIZE_PASS_DEPENDENCY(LoopPass)
>         >>   INITIALIZE_PASS_DEPENDENCY(TargetTransformInfoWrapperPass)
>         >>   INITIALIZE_PASS_END(LoopUnroll, "loop-unroll", "Unroll
>         loops", false,
>         >> false)
>         >>   -Pass *llvm::createLoopUnrollPass(int Threshold, int Count, int
>         >> AllowPartial,
>         >> -                                 int Runtime, int UpperBound) {
>         >> +Pass *llvm::createLoopUnrollPass(int OptLevel, int
>         Threshold, int Count,
>         >> +                                 int AllowPartial, int Runtime,
>         >> +                                 int UpperBound) {
>         >>     // TODO: It would make more sense for this function to
>         take the
>         >> optionals
>         >>     // directly, but that's dangerous since it would silently
>         break out of
>         >> tree
>         >>     // callers.
>         >> -  return new LoopUnroll(Threshold == -1 ? None :
>         >> Optional<unsigned>(Threshold),
>         >> -                        Count == -1 ? None :
>         Optional<unsigned>(Count),
>         >> -                        AllowPartial == -1 ? None
>         >> -                                           :
>         >> Optional<bool>(AllowPartial),
>         >> -                        Runtime == -1 ? None :
>         Optional<bool>(Runtime),
>         >> -                        UpperBound == -1 ? None :
>         >> Optional<bool>(UpperBound));
>         >> +  return new LoopUnroll(
>         >> +      OptLevel, Threshold == -1 ? None :
>         Optional<unsigned>(Threshold),
>         >> +      Count == -1 ? None : Optional<unsigned>(Count),
>         >> +      AllowPartial == -1 ? None : Optional<bool>(AllowPartial),
>         >> +      Runtime == -1 ? None : Optional<bool>(Runtime),
>         >> +      UpperBound == -1 ? None : Optional<bool>(UpperBound));
>         >>   }
>         >>   -Pass *llvm::createSimpleLoopUnrollPass() {
>         >> -  return llvm::createLoopUnrollPass(-1, -1, 0, 0, 0);
>         >> +Pass *llvm::createSimpleLoopUnrollPass(int OptLevel) {
>         >> +  return llvm::createLoopUnrollPass(OptLevel, -1, -1, 0, 0, 0);
>         >>   }
>         >>     PreservedAnalyses LoopUnrollPass::run(Loop &L,
>         LoopAnalysisManager
>         >> &AM,
>         >> @@ -1153,10 +1156,10 @@ PreservedAnalyses LoopUnrollPass::run(Lo
>         >>     Optional<bool> AllowPartialParam, RuntimeParam,
>         UpperBoundParam;
>         >>     if (!AllowPartialUnrolling)
>         >>       AllowPartialParam = RuntimeParam = UpperBoundParam = false;
>         >> -  bool Changed = tryToUnrollLoop(&L, AR.DT, &AR.LI
>         <http://AR.LI>, &AR.SE <http://AR.SE>, AR.TTI,
>         >> AR.AC <http://AR.AC>, *ORE,
>         >> -                                 /*PreserveLCSSA*/ true,
>         /*Count*/ None,
>         >> -                                 /*Threshold*/ None,
>         AllowPartialParam,
>         >> -                                 RuntimeParam, UpperBoundParam);
>         >> +  bool Changed = tryToUnrollLoop(
>         >> +      &L, AR.DT, &AR.LI <http://AR.LI>, &AR.SE
>         <http://AR.SE>, AR.TTI, AR.AC <http://AR.AC>, *ORE,
>         >> +      /*PreserveLCSSA*/ true, OptLevel, /*Count*/ None,
>         >> +      /*Threshold*/ None, AllowPartialParam, RuntimeParam,
>         >> UpperBoundParam);
>         >>     if (!Changed)
>         >>       return PreservedAnalyses::all();
>         >>
>         >> Modified:
>         llvm/trunk/test/Transforms/LoopVectorize/X86/metadata-enable.ll
>         >> URL:
>         >>
>         http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/X86/metadata-enable.ll?rev=295538&r1=295537&r2=295538&view=diff
>         <http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/X86/metadata-enable.ll?rev=295538&r1=295537&r2=295538&view=diff>
>         >>
>         >>
>         ==============================================================================
>         >> ---
>         llvm/trunk/test/Transforms/LoopVectorize/X86/metadata-enable.ll
>         >> (original)
>         >> +++
>         llvm/trunk/test/Transforms/LoopVectorize/X86/metadata-enable.ll Fri
>         >> Feb 17 21:46:51 2017
>         >> @@ -1,13 +1,14 @@
>         >>   ; RUN: opt < %s -mcpu=corei7 -O1 -S -unroll-allow-partial=0
>         | FileCheck
>         >> %s --check-prefix=O1
>         >>   ; RUN: opt < %s -mcpu=corei7 -O2 -S -unroll-allow-partial=0
>         | FileCheck
>         >> %s --check-prefix=O2
>         >> -; RUN: opt < %s -mcpu=corei7 -O3 -S -unroll-allow-partial=0
>         | FileCheck
>         >> %s --check-prefix=O3
>         >> +; RUN: opt < %s -mcpu=corei7 -O3 -S -unroll-threshold=150
>         >> -unroll-allow-partial=0 | FileCheck %s --check-prefix=O3
>         >> +; RUN: opt < %s -mcpu=corei7 -O3 -S -unroll-allow-partial=0
>         | FileCheck
>         >> %s --check-prefix=O3DEFAULT
>         >>   ; RUN: opt < %s -mcpu=corei7 -Os -S -unroll-allow-partial=0
>         | FileCheck
>         >> %s --check-prefix=Os
>         >>   ; RUN: opt < %s -mcpu=corei7 -Oz -S -unroll-allow-partial=0
>         | FileCheck
>         >> %s --check-prefix=Oz
>         >>   ; RUN: opt < %s -mcpu=corei7 -O1 -vectorize-loops -S
>         >> -unroll-allow-partial=0 | FileCheck %s --check-prefix=O1VEC
>         >>   ; RUN: opt < %s -mcpu=corei7 -Oz -vectorize-loops -S
>         >> -unroll-allow-partial=0 | FileCheck %s --check-prefix=OzVEC
>         >>   ; RUN: opt < %s -mcpu=corei7 -O1 -loop-vectorize -S
>         >> -unroll-allow-partial=0 | FileCheck %s --check-prefix=O1VEC2
>         >>   ; RUN: opt < %s -mcpu=corei7 -Oz -loop-vectorize -S
>         >> -unroll-allow-partial=0 | FileCheck %s --check-prefix=OzVEC2
>         >> -; RUN: opt < %s -mcpu=corei7 -O3 -disable-loop-vectorization -S
>         >> -unroll-allow-partial=0 | FileCheck %s --check-prefix=O3DIS
>         >> +; RUN: opt < %s -mcpu=corei7 -O3 -unroll-threshold=150
>         >> -disable-loop-vectorization -S -unroll-allow-partial=0 |
>         FileCheck %s
>         >> --check-prefix=O3DIS
>         >>     ; This file tests the llvm.loop.vectorize.enable metadata
>         forcing
>         >>   ; vectorization even when optimization levels are too low,
>         or when
>         >> @@ -25,6 +26,9 @@ target triple = "x86_64-unknown-linux-gn
>         >>   ; O3-LABEL: @enabled(
>         >>   ; O3: store <4 x i32>
>         >>   ; O3: ret i32
>         >> +; O3DEFAULT-LABEL: @enabled(
>         >> +; O3DEFAULT: store <4 x i32>
>         >> +; O3DEFAULT: ret i32
>         >>   ; Pragma always wins!
>         >>   ; O3DIS-LABEL: @enabled(
>         >>   ; O3DIS: store <4 x i32>
>         >> @@ -77,6 +81,9 @@ for.end:
>         >>   ; O3-LABEL: @nopragma(
>         >>   ; O3: store <4 x i32>
>         >>   ; O3: ret i32
>         >> +; O3DEFAULT-LABEL: @nopragma(
>         >> +; O3DEFAULT: store <4 x i32>
>         >> +; O3DEFAULT: ret i32
>         >>   ; O3DIS-LABEL: @nopragma(
>         >>   ; O3DIS-NOT: store <4 x i32>
>         >>   ; O3DIS: ret i32
>         >> @@ -128,6 +135,9 @@ for.end:
>         >>   ; O3-LABEL: @disabled(
>         >>   ; O3-NOT: store <4 x i32>
>         >>   ; O3: ret i32
>         >> +; O3DEFAULT-LABEL: @disabled(
>         >> +; O3DEFAULT: store <4 x i32>
>         >> +; O3DEFAULT: ret i32
>         >>   ; O3DIS-LABEL: @disabled(
>         >>   ; O3DIS-NOT: store <4 x i32>
>         >>   ; O3DIS: ret i32
>         >>
>         >>
>         >> _______________________________________________
>         >> llvm-commits mailing list
>         >> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
>         >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>         <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
>         >
>         >
>         _______________________________________________
>         llvm-commits mailing list
>         llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
>         http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>         <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
>
>
>


-- 

-Bill Seurer



More information about the llvm-commits mailing list