Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AVR / branch-relaxation.ll
blob3958cca8f2075860eac916c2e2e6f385fe71ca6b
1 ; RUN: llc < %s -march=avr | FileCheck %s
2 ; RUN: llc < %s -march=avr -mcpu=avr5 | FileCheck -check-prefix=AVR5 %s
4 ; CHECK-LABEL: relax_breq
5 ; CHECK: cpi     r{{[0-9]+}}, 0
6 ; CHECK: brne    .LBB0_1
7 ; CHECK: rjmp    .LBB0_2
8 ; CHECK: .LBB0_1:
9 ; CHECK: nop
10 ; CHECK: .LBB0_2:
12 ; AVR5-LABEL: relax_breq
13 ; AVR5:         andi    r24, 1
14 ; AVR5:         cpi     r24, 0
15 ; AVR5:         brne    .LBB0_1
16 ; AVR5:         rjmp    .LBB0_2
17 ; AVR5:       .LBB0_1:
18 ; AVR5:         nop
19 ; AVR5:       .LBB0_2:
21 define i8 @relax_breq(i1 %a) {
22 entry-block:
23   br i1 %a, label %hello, label %finished
25 hello:
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   call void asm sideeffect "nop", ""()
65   call void asm sideeffect "nop", ""()
66   call void asm sideeffect "nop", ""()
67   call void asm sideeffect "nop", ""()
68   call void asm sideeffect "nop", ""()
69   call void asm sideeffect "nop", ""()
70   call void asm sideeffect "nop", ""()
71   call void asm sideeffect "nop", ""()
72   call void asm sideeffect "nop", ""()
73   call void asm sideeffect "nop", ""()
74   call void asm sideeffect "nop", ""()
75   call void asm sideeffect "nop", ""()
76   br label %finished
77 finished:
78   ret i8 3
81 ; CHECK-LABEL: no_relax_breq
82 ; CHECK: cpi     r{{[0-9]+}}, 0
83 ; CHECK: breq    [[END_BB:.LBB[0-9]+_[0-9]+]]
84 ; CHECK: nop
85 ; CHECK: [[END_BB]]
87 ; AVR5-LABEL: no_relax_breq
88 ; AVR5:         cpi     r{{[0-9]+}}, 0
89 ; AVR5:         breq    [[END_BB:.LBB[0-9]+_[0-9]+]]
90 ; AVR5:         nop
91 ; AVR5:       [[END_BB]]
93 define i8 @no_relax_breq(i1 %a) {
94 entry-block:
95   br i1 %a, label %hello, label %finished
97 hello:
98   ; There are not enough NOPs to require relaxation.
99   call void asm sideeffect "nop", ""()
100   call void asm sideeffect "nop", ""()
101   call void asm sideeffect "nop", ""()
102   call void asm sideeffect "nop", ""()
103   call void asm sideeffect "nop", ""()
104   call void asm sideeffect "nop", ""()
105   call void asm sideeffect "nop", ""()
106   call void asm sideeffect "nop", ""()
107   call void asm sideeffect "nop", ""()
108   call void asm sideeffect "nop", ""()
109   call void asm sideeffect "nop", ""()
110   br label %finished
111 finished:
112   ret i8 3