[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / LoopUnroll / ARM / dont-unroll-loopdec.ll
blob32aceb4a5e6c1930d471da9edc189fbb9688c3aa
1 ; RUN: opt -mtriple=thumbv8.1m.main -mattr=+mve.fp -loop-unroll -S < %s | FileCheck %s
3 ; CHECK-LABEL:  foo
4 ; CHECK:        5:
5 ; CHECK:        6:                 ; preds = %6, %5
6 ; CHECK:        15:                ; preds = %6
7 ; CHECK:          br label %16
8 ; CHECK:        16:                ; preds = %15, %3
9 ; CHECK:          ret void
10 ; CHECK:        }
12 define void @foo(i8* nocapture, i8* nocapture readonly, i32) {
13   %4 = icmp sgt i32 %2, 0
14   br i1 %4, label %5, label %16
16 ; <label>:5:
17   br label %6
19 ; <label>:6:
20   %7 = phi i32 [ %13, %6 ], [ %2, %5 ]
21   %8 = phi i8* [ %10, %6 ], [ %1, %5 ]
22   %9 = phi i8* [ %12, %6 ], [ %0, %5 ]
23   %10 = getelementptr inbounds i8, i8* %8, i32 1
24   %11 = load i8, i8* %8, align 1
25   %12 = getelementptr inbounds i8, i8* %9, i32 1
26   store i8 %11, i8* %9, align 1
28   %13 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %7, i32 1)
30   %14 = icmp sgt i32 %7, 1
31   br i1 %14, label %6, label %15
33 ; <label>:15:
34   br label %16
36 ; <label>:16:
37   ret void
40 declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32)