annotate test/CodeGen/AVR/div.ll @ 128:c347d3398279 default tip

fix
author mir3636
date Wed, 06 Dec 2017 14:37:17 +0900
parents 1172e4bd9c6f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
1 ; RUN: llc -mattr=mul,movw < %s -march=avr | FileCheck %s
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
3 ; Unsigned 8-bit division
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
4 define i8 @udiv8(i8 %a, i8 %b) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
5 ; CHECK-LABEL: div8:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
6 ; CHECK: call __udivmodqi4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
7 ; CHECK-NEXT: ret
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
8
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
9 %quotient = udiv i8 %a, %b
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
10 ret i8 %quotient
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
11 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
12
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
13 ; Signed 8-bit division
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
14 define i8 @sdiv8(i8 %a, i8 %b) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
15 ; CHECK-LABEL: sdiv8:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
16 ; CHECK: call __divmodqi4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
17 ; CHECK-NEXT: ret
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19 %quotient = sdiv i8 %a, %b
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
20 ret i8 %quotient
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23 ; Unsigned 16-bit division
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
24 define i16 @udiv16(i16 %a, i16 %b) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
25 ; CHECK-LABEL: udiv16:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26 ; CHECK: call __udivmodhi4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27 ; CHECK-NEXT: movw r24, r22
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28 ; CHECK-NEXT: ret
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29 %quot = udiv i16 %a, %b
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30 ret i16 %quot
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
32
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
33 ; Signed 16-bit division
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
34 define i16 @sdiv16(i16 %a, i16 %b) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
35 ; CHECK-LABEL: sdiv16:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
36 ; CHECK: call __divmodhi4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
37 ; CHECK-NEXT: movw r24, r22
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
38 ; CHECK-NEXT: ret
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
39 %quot = sdiv i16 %a, %b
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
40 ret i16 %quot
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
41 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
42
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
43 ; Unsigned 32-bit division
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
44 define i32 @udiv32(i32 %a, i32 %b) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
45 ; CHECK-LABEL: udiv32:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
46 ; CHECK: call __udivmodsi4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
47 ; CHECK-NEXT: movw r22, r18
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
48 ; CHECK-NEXT: movw r24, r20
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
49 ; CHECK-NEXT: ret
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
50 %quot = udiv i32 %a, %b
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
51 ret i32 %quot
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
52 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
53
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
54 ; Signed 32-bit division
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
55 define i32 @sdiv32(i32 %a, i32 %b) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
56 ; CHECK-LABEL: sdiv32:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
57 ; CHECK: call __divmodsi4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
58 ; CHECK-NEXT: movw r22, r18
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
59 ; CHECK-NEXT: movw r24, r20
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
60 ; CHECK-NEXT: ret
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
61 %quot = sdiv i32 %a, %b
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
62 ret i32 %quot
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
63 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
64