|
1 | 1 | ; RUN: llc < %s -march=avr | FileCheck %s
|
| 2 | +; RUN: llc < %s -mtriple=avr -mcpu=attiny10 | FileCheck --check-prefix=TINY %s |
2 | 3 |
|
3 | 4 | declare void @f1(i8)
|
4 | 5 | declare void @f2(i8)
|
@@ -202,3 +203,98 @@ if.else:
|
202 | 203 | if.end:
|
203 | 204 | ret void
|
204 | 205 | }
|
| 206 | + |
| 207 | +define i16 @cmp_i16_gt_0(i16 %0) { |
| 208 | +; CHECK-LABEL: cmp_i16_gt_0: |
| 209 | +; CHECK: ; %bb.0: |
| 210 | +; CHECK-NEXT: ldi r18, 1 |
| 211 | +; CHECK-NEXT: cp r1, r24 |
| 212 | +; CHECK-NEXT: cpc r1, r25 |
| 213 | +; CHECK-NEXT: brlt .LBB11_2 |
| 214 | +; CHECK-NEXT: ; %bb.1: |
| 215 | +; CHECK-NEXT: mov r18, r1 |
| 216 | +; CHECK-NEXT: .LBB11_2: |
| 217 | +; CHECK-NEXT: mov r24, r18 |
| 218 | +; CHECK-NEXT: clr r25 |
| 219 | +; CHECK-NEXT: ret |
| 220 | +; |
| 221 | +; TINY-LABEL: cmp_i16_gt_0: |
| 222 | +; TINY: ; %bb.0: |
| 223 | +; TINY-NEXT: ldi r20, 1 |
| 224 | +; TINY-NEXT: cp r17, r24 |
| 225 | +; TINY-NEXT: cpc r17, r25 |
| 226 | +; TINY-NEXT: brlt .LBB11_2 |
| 227 | +; TINY-NEXT: ; %bb.1: |
| 228 | +; TINY-NEXT: mov r20, r17 |
| 229 | +; TINY-NEXT: .LBB11_2: |
| 230 | +; TINY-NEXT: mov r24, r20 |
| 231 | +; TINY-NEXT: clr r25 |
| 232 | +; TINY-NEXT: ret |
| 233 | + %2 = icmp sgt i16 %0, 0 |
| 234 | + %3 = zext i1 %2 to i16 |
| 235 | + ret i16 %3 |
| 236 | +} |
| 237 | + |
| 238 | +define i16 @cmp_i16_gt_126(i16 %0) { |
| 239 | +; CHECK-LABEL: cmp_i16_gt_126: |
| 240 | +; CHECK: ; %bb.0: |
| 241 | +; CHECK-NEXT: ldi r18, 1 |
| 242 | +; CHECK-NEXT: cpi r24, 127 |
| 243 | +; CHECK-NEXT: cpc r25, r1 |
| 244 | +; CHECK-NEXT: brge .LBB12_2 |
| 245 | +; CHECK-NEXT: ; %bb.1: |
| 246 | +; CHECK-NEXT: mov r18, r1 |
| 247 | +; CHECK-NEXT: .LBB12_2: |
| 248 | +; CHECK-NEXT: mov r24, r18 |
| 249 | +; CHECK-NEXT: clr r25 |
| 250 | +; CHECK-NEXT: ret |
| 251 | +; |
| 252 | +; TINY-LABEL: cmp_i16_gt_126: |
| 253 | +; TINY: ; %bb.0: |
| 254 | +; TINY-NEXT: ldi r20, 1 |
| 255 | +; TINY-NEXT: cpi r24, 127 |
| 256 | +; TINY-NEXT: cpc r25, r17 |
| 257 | +; TINY-NEXT: brge .LBB12_2 |
| 258 | +; TINY-NEXT: ; %bb.1: |
| 259 | +; TINY-NEXT: mov r20, r17 |
| 260 | +; TINY-NEXT: .LBB12_2: |
| 261 | +; TINY-NEXT: mov r24, r20 |
| 262 | +; TINY-NEXT: clr r25 |
| 263 | +; TINY-NEXT: ret |
| 264 | + %2 = icmp sgt i16 %0, 126 |
| 265 | + %3 = zext i1 %2 to i16 |
| 266 | + ret i16 %3 |
| 267 | +} |
| 268 | + |
| 269 | +define i16 @cmp_i16_gt_1023(i16 %0) { |
| 270 | +; CHECK-LABEL: cmp_i16_gt_1023: |
| 271 | +; CHECK: ; %bb.0: |
| 272 | +; CHECK-NEXT: ldi r19, 4 |
| 273 | +; CHECK-NEXT: ldi r18, 1 |
| 274 | +; CHECK-NEXT: cp r24, r1 |
| 275 | +; CHECK-NEXT: cpc r25, r19 |
| 276 | +; CHECK-NEXT: brge .LBB13_2 |
| 277 | +; CHECK-NEXT: ; %bb.1: |
| 278 | +; CHECK-NEXT: mov r18, r1 |
| 279 | +; CHECK-NEXT: .LBB13_2: |
| 280 | +; CHECK-NEXT: mov r24, r18 |
| 281 | +; CHECK-NEXT: clr r25 |
| 282 | +; CHECK-NEXT: ret |
| 283 | +; |
| 284 | +; TINY-LABEL: cmp_i16_gt_1023: |
| 285 | +; TINY: ; %bb.0: |
| 286 | +; TINY-NEXT: ldi r21, 4 |
| 287 | +; TINY-NEXT: ldi r20, 1 |
| 288 | +; TINY-NEXT: cp r24, r17 |
| 289 | +; TINY-NEXT: cpc r25, r21 |
| 290 | +; TINY-NEXT: brge .LBB13_2 |
| 291 | +; TINY-NEXT: ; %bb.1: |
| 292 | +; TINY-NEXT: mov r20, r17 |
| 293 | +; TINY-NEXT: .LBB13_2: |
| 294 | +; TINY-NEXT: mov r24, r20 |
| 295 | +; TINY-NEXT: clr r25 |
| 296 | +; TINY-NEXT: ret |
| 297 | + %2 = icmp sgt i16 %0, 1023 |
| 298 | + %3 = zext i1 %2 to i16 |
| 299 | + ret i16 %3 |
| 300 | +} |
0 commit comments