Skip to content

Commit b2b99a4

Browse files
committed
[AVR] Add extra codegen test
1 parent 9d6df77 commit b2b99a4

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc < %s -O=3 -mtriple=avr-none -mcpu=attiny85 -verify-machineinstrs | FileCheck %s
3+
4+
@c = dso_local local_unnamed_addr global i8 0, align 1
5+
define dso_local void @mod(i16 noundef %0) local_unnamed_addr addrspace(1) {
6+
; CHECK-LABEL: mod:
7+
; CHECK: ; %bb.0:
8+
; CHECK-NEXT: push r14
9+
; CHECK-NEXT: push r16
10+
; CHECK-NEXT: push r17
11+
; CHECK-NEXT: cpi r24, 10
12+
; CHECK-NEXT: cpc r25, r1
13+
; CHECK-NEXT: brlo .LBB0_2
14+
; CHECK-NEXT: ; %bb.1:
15+
; CHECK-NEXT: ldi r18, 205
16+
; CHECK-NEXT: ldi r19, 204
17+
; CHECK-NEXT: ldi r20, 0
18+
; CHECK-NEXT: ldi r21, 0
19+
; CHECK-NEXT: movw r22, r24
20+
; CHECK-NEXT: mov r14, r24
21+
; CHECK-NEXT: movw r24, r20
22+
; CHECK-NEXT: rcall __mulsi3
23+
; CHECK-NEXT: movw r16, r24
24+
; CHECK-NEXT: lsr r17
25+
; CHECK-NEXT: ror r16
26+
; CHECK-NEXT: lsr r17
27+
; CHECK-NEXT: ror r16
28+
; CHECK-NEXT: lsr r17
29+
; CHECK-NEXT: ror r16
30+
; CHECK-NEXT: movw r24, r16
31+
; CHECK-NEXT: rcall mod
32+
; CHECK-NEXT: mov r24, r16
33+
; CHECK-NEXT: ldi r22, -10
34+
; CHECK-NEXT: rcall __mulqi3
35+
; CHECK-NEXT: add r24, r14
36+
; CHECK-NEXT: .LBB0_2:
37+
; CHECK-NEXT: ori r24, 48
38+
; CHECK-NEXT: sts c, r24
39+
; CHECK-NEXT: pop r17
40+
; CHECK-NEXT: pop r16
41+
; CHECK-NEXT: pop r14
42+
; CHECK-NEXT: ret
43+
%2 = icmp ugt i16 %0, 9
44+
%3 = trunc i16 %0 to i8
45+
br i1 %2, label %4, label %9
46+
4: ; preds = %1
47+
%5 = udiv i16 %0, 10
48+
%6 = trunc i16 %5 to i8
49+
%7 = mul i8 %6, -10
50+
tail call addrspace(1) void @mod(i16 noundef %5)
51+
%8 = add i8 %7, %3
52+
br label %9
53+
9: ; preds = %4, %1
54+
%10 = phi i8 [ %3, %1 ], [ %8, %4 ]
55+
%11 = or disjoint i8 %10, 48
56+
store i8 %11, ptr @c, align 1
57+
ret void
58+
}

0 commit comments

Comments
 (0)