[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / CodeGen / AVR / cmp.ll
blobb3224087a6893d4e6d32e4c07696722d531b0945
1 ; RUN: llc < %s -march=avr | FileCheck %s
3 declare void @f1(i8)
4 declare void @f2(i8)
5 define void @cmp8(i8 %a, i8 %b) {
6 ; CHECK-LABEL: cmp8:
7 ; CHECK: cp
8 ; CHECK-NOT: cpc
9   %cmp = icmp eq i8 %a, %b
10   br i1 %cmp, label %if.then, label %if.else
11 if.then:
12   tail call void @f1(i8 %a)
13   br label %if.end
14 if.else:
15   tail call void @f2(i8 %b)
16   br label %if.end
17 if.end:
18   ret void
21 declare void @f3(i16)
22 declare void @f4(i16)
23 define void @cmp16(i16 %a, i16 %b) {
24 ; CHECK-LABEL: cmp16:
25 ; CHECK: cp
26 ; CHECK-NEXT: cpc
27   %cmp = icmp eq i16 %a, %b
28   br i1 %cmp, label %if.then, label %if.else
29 if.then:
30   tail call void @f3(i16 %a)
31   br label %if.end
32 if.else:
33   tail call void @f4(i16 %b)
34   br label %if.end
35 if.end:
36   ret void
39 declare void @f5(i32)
40 declare void @f6(i32)
41 define void @cmp32(i32 %a, i32 %b) {
42 ; CHECK-LABEL: cmp32:
43 ; CHECK: cp
44 ; CHECK-NEXT: cpc
45 ; CHECK-NEXT: cpc
46 ; CHECK-NEXT: cpc
47   %cmp = icmp eq i32 %a, %b
48   br i1 %cmp, label %if.then, label %if.else
49 if.then:
50   tail call void @f5(i32 %a)
51   br label %if.end
52 if.else:
53   tail call void @f6(i32 %b)
54   br label %if.end
55 if.end:
56   ret void
59 declare void @f7(i64)
60 declare void @f8(i64)
61 define void @cmp64(i64 %a, i64 %b) {
62 ; CHECK-LABEL: cmp64:
63 ; CHECK: cp
64 ; CHECK-NEXT: cpc
65 ; CHECK-NEXT: cpc
66 ; CHECK-NEXT: cpc
67 ; CHECK-NEXT: cpc
68 ; CHECK-NEXT: cpc
69 ; CHECK-NEXT: cpc
70 ; CHECK-NEXT: cpc
71   %cmp = icmp eq i64 %a, %b
72   br i1 %cmp, label %if.then, label %if.else
73 if.then:
74   tail call void @f7(i64 %a)
75   br label %if.end
76 if.else:
77   tail call void @f8(i64 %b)
78   br label %if.end
79 if.end:
80   ret void
83 declare void @f9()
84 declare void @f10()
86 define void @tst8(i8 %a) {
87 ; CHECK-LABEL: tst8:
88 ; CHECK: tst r24
89 ; CHECK-NEXT: brmi
90   %cmp = icmp sgt i8 %a, -1
91   br i1 %cmp, label %if.then, label %if.else
92 if.then:
93   tail call void @f9()
94   br label %if.end
95 if.else:
96   tail call void @f10()
97   br label %if.end
98 if.end:
99   ret void
102 define void @tst16(i16 %a) {
103 ; CHECK-LABEL: tst16:
104 ; CHECK: tst r25
105 ; CHECK-NEXT: brmi
106   %cmp = icmp sgt i16 %a, -1
107   br i1 %cmp, label %if.then, label %if.else
108 if.then:
109   tail call void @f9()
110   br label %if.end
111 if.else:
112   tail call void @f10()
113   br label %if.end
114 if.end:
115   ret void
118 define void @tst32(i32 %a) {
119 ; CHECK-LABEL: tst32:
120 ; CHECK: tst r25
121 ; CHECK-NEXT: brmi
122   %cmp = icmp sgt i32 %a, -1
123   br i1 %cmp, label %if.then, label %if.else
124 if.then:
125   tail call void @f9()
126   br label %if.end
127 if.else:
128   tail call void @f10()
129   br label %if.end
130 if.end:
131   ret void
134 define void @tst64(i64 %a) {
135 ; CHECK-LABEL: tst64:
136 ; CHECK: tst r25
137 ; CHECK-NEXT: brmi
138   %cmp = icmp sgt i64 %a, -1
139   br i1 %cmp, label %if.then, label %if.else
140 if.then:
141   tail call void @f9()
142   br label %if.end
143 if.else:
144   tail call void @f10()
145   br label %if.end
146 if.end:
147   ret void