[InstCombine] Signed saturation patterns
[llvm-core.git] / test / CodeGen / AVR / branch-relaxation.ll
blobe415b059692e7bee2498539f74c041392483c3b9
1 ; RUN: llc < %s -march=avr | FileCheck %s
3 ; CHECK-LABEL: relax_breq
4 ; CHECK: cpi     r{{[0-9]+}}, 0
5 ; CHECK: brne    LBB0_1
6 ; CHECK: rjmp    LBB0_2
7 ; LBB0_1:
9 define i8 @relax_breq(i1 %a) {
10 entry-block:
11   br i1 %a, label %hello, label %finished
13 hello:
14   call void asm sideeffect "nop", ""()
15   call void asm sideeffect "nop", ""()
16   call void asm sideeffect "nop", ""()
17   call void asm sideeffect "nop", ""()
18   call void asm sideeffect "nop", ""()
19   call void asm sideeffect "nop", ""()
20   call void asm sideeffect "nop", ""()
21   call void asm sideeffect "nop", ""()
22   call void asm sideeffect "nop", ""()
23   call void asm sideeffect "nop", ""()
24   call void asm sideeffect "nop", ""()
25   call void asm sideeffect "nop", ""()
26   call void asm sideeffect "nop", ""()
27   call void asm sideeffect "nop", ""()
28   call void asm sideeffect "nop", ""()
29   call void asm sideeffect "nop", ""()
30   call void asm sideeffect "nop", ""()
31   call void asm sideeffect "nop", ""()
32   call void asm sideeffect "nop", ""()
33   call void asm sideeffect "nop", ""()
34   call void asm sideeffect "nop", ""()
35   call void asm sideeffect "nop", ""()
36   call void asm sideeffect "nop", ""()
37   call void asm sideeffect "nop", ""()
38   call void asm sideeffect "nop", ""()
39   call void asm sideeffect "nop", ""()
40   call void asm sideeffect "nop", ""()
41   call void asm sideeffect "nop", ""()
42   call void asm sideeffect "nop", ""()
43   call void asm sideeffect "nop", ""()
44   call void asm sideeffect "nop", ""()
45   call void asm sideeffect "nop", ""()
46   call void asm sideeffect "nop", ""()
47   call void asm sideeffect "nop", ""()
48   call void asm sideeffect "nop", ""()
49   call void asm sideeffect "nop", ""()
50   call void asm sideeffect "nop", ""()
51   call void asm sideeffect "nop", ""()
52   call void asm sideeffect "nop", ""()
53   call void asm sideeffect "nop", ""()
54   call void asm sideeffect "nop", ""()
55   call void asm sideeffect "nop", ""()
56   call void asm sideeffect "nop", ""()
57   call void asm sideeffect "nop", ""()
58   call void asm sideeffect "nop", ""()
59   call void asm sideeffect "nop", ""()
60   call void asm sideeffect "nop", ""()
61   call void asm sideeffect "nop", ""()
62   call void asm sideeffect "nop", ""()
63   call void asm sideeffect "nop", ""()
64   br label %finished
65 finished:
66   ret i8 3
69 ; CHECK-LABEL: no_relax_breq
70 ; CHECK: cpi     r{{[0-9]+}}, 0
71 ; CHECK: breq    [[END_BB:LBB[0-9]+_[0-9]+]]
72 ; CHECK: nop
73 ; ...
74 ; LBB0_1:
75 define i8 @no_relax_breq(i1 %a) {
76 entry-block:
77   br i1 %a, label %hello, label %finished
79 hello:
80   ; There are not enough NOPs to require relaxation.
81   call void asm sideeffect "nop", ""()
82   call void asm sideeffect "nop", ""()
83   call void asm sideeffect "nop", ""()
84   call void asm sideeffect "nop", ""()
85   call void asm sideeffect "nop", ""()
86   call void asm sideeffect "nop", ""()
87   call void asm sideeffect "nop", ""()
88   call void asm sideeffect "nop", ""()
89   call void asm sideeffect "nop", ""()
90   call void asm sideeffect "nop", ""()
91   call void asm sideeffect "nop", ""()
92   br label %finished
93 finished:
94   ret i8 3