diff options
Diffstat (limited to 'llvm/test/Transforms/SimpleLoopUnswitch/exponential-switch-unswitch.ll')
-rw-r--r-- | llvm/test/Transforms/SimpleLoopUnswitch/exponential-switch-unswitch.ll | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/exponential-switch-unswitch.ll b/llvm/test/Transforms/SimpleLoopUnswitch/exponential-switch-unswitch.ll index 312c741ae89..35d431e5ee2 100644 --- a/llvm/test/Transforms/SimpleLoopUnswitch/exponential-switch-unswitch.ll +++ b/llvm/test/Transforms/SimpleLoopUnswitch/exponential-switch-unswitch.ll @@ -17,6 +17,13 @@ ; RUN: -unswitch-num-initial-unscaled-candidates=0 -unswitch-siblings-toplevel-div=16 \ ; RUN: -passes='loop(unswitch<nontrivial>),print<loops>' -disable-output 2>&1 | FileCheck %s --check-prefixes=LOOP1 ; +; RUN: opt < %s -enable-unswitch-cost-multiplier=true \ +; RUN: -unswitch-num-initial-unscaled-candidates=0 -unswitch-siblings-toplevel-div=1 \ +; RUN: -passes='loop-mssa(unswitch<nontrivial>),print<loops>' -disable-output 2>&1 | FileCheck %s --check-prefixes=LOOP1 +; +; RUN: opt < %s -enable-unswitch-cost-multiplier=true \ +; RUN: -unswitch-num-initial-unscaled-candidates=0 -unswitch-siblings-toplevel-div=16 \ +; RUN: -passes='loop-mssa(unswitch<nontrivial>),print<loops>' -disable-output 2>&1 | FileCheck %s --check-prefixes=LOOP1 ; ; With relaxed candidates multiplier (unscaled candidates == 8) we should allow ; some unswitches to happen until siblings multiplier starts kicking in: @@ -26,6 +33,11 @@ ; RUN: -passes='loop(unswitch<nontrivial>),print<loops>' -disable-output 2>&1 | \ ; RUN: sort -b -k 1 | FileCheck %s --check-prefixes=LOOP-RELAX ; +; RUN: opt < %s -enable-unswitch-cost-multiplier=true \ +; RUN: -unswitch-num-initial-unscaled-candidates=8 -unswitch-siblings-toplevel-div=1 \ +; RUN: -passes='loop-mssa(unswitch<nontrivial>),print<loops>' -disable-output 2>&1 | \ +; RUN: sort -b -k 1 | FileCheck %s --check-prefixes=LOOP-RELAX +; ; With relaxed candidates multiplier (unscaled candidates == 8) and with relaxed ; siblings multiplier for top-level loops (toplevel-div == 8) we should get ; considerably more copies of the loop (especially top-level ones). @@ -35,12 +47,20 @@ ; RUN: -passes='loop(unswitch<nontrivial>),print<loops>' -disable-output 2>&1 | \ ; RUN: sort -b -k 1 | FileCheck %s --check-prefixes=LOOP-RELAX2 ; +; RUN: opt < %s -enable-unswitch-cost-multiplier=true \ +; RUN: -unswitch-num-initial-unscaled-candidates=8 -unswitch-siblings-toplevel-div=8 \ +; RUN: -passes='loop-mssa(unswitch<nontrivial>),print<loops>' -disable-output 2>&1 | \ +; RUN: sort -b -k 1 | FileCheck %s --check-prefixes=LOOP-RELAX2 +; ; We get hundreds of copies of the loop when cost multiplier is disabled: ; ; RUN: opt < %s -enable-unswitch-cost-multiplier=false \ ; RUN: -passes='loop(unswitch<nontrivial>),print<loops>' -disable-output 2>&1 | \ ; RUN: sort -b -k 1 | FileCheck %s --check-prefixes=LOOP-MAX ; +; RUN: opt < %s -enable-unswitch-cost-multiplier=false \ +; RUN: -passes='loop-mssa(unswitch<nontrivial>),print<loops>' -disable-output 2>&1 | \ +; RUN: sort -b -k 1 | FileCheck %s --check-prefixes=LOOP-MAX ; Single loop nest, not unswitched ; LOOP1: Loop at depth 1 containing: |