Skip to content

Commit 147c9b8

Browse files
committed
Update sdiv-pow2-thumb-size.ll
1 parent 5a0106a commit 147c9b8

File tree

1 file changed

+41
-117
lines changed

1 file changed

+41
-117
lines changed

llvm/test/CodeGen/ARM/sdiv-pow2-thumb-size.ll

Lines changed: 41 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
21
; RUN: llc -mtriple=thumbv8 %s -o - | FileCheck %s --check-prefixes=CHECK,T2
32
; RUN: llc -mtriple=thumbv8m.main %s -o - | FileCheck %s --check-prefixes=CHECK,T2
43
; RUN: llc -mtriple=thumbv8m.base %s -o - | FileCheck %s --check-prefixes=CHECK,T1
@@ -14,23 +13,11 @@
1413

1514
; Test sdiv i16
1615
define dso_local signext i16 @f0(i16 signext %F) local_unnamed_addr #0 {
17-
; CHECK-LABEL: f0:
18-
; CHECK: @ %bb.0: @ %entry
19-
; CHECK-NEXT: movs r1, #2
20-
; CHECK-NEXT: sdiv r0, r0, r1
21-
; CHECK-NEXT: sxth r0, r0
22-
; CHECK-NEXT: bx lr
23-
;
24-
; V6M-LABEL: f0:
25-
; V6M: @ %bb.0: @ %entry
26-
; V6M-NEXT: movs r1, #255
27-
; V6M-NEXT: lsls r1, r1, #8
28-
; V6M-NEXT: ands r1, r0
29-
; V6M-NEXT: lsrs r1, r1, #15
30-
; V6M-NEXT: adds r0, r0, r1
31-
; V6M-NEXT: sxth r0, r0
32-
; V6M-NEXT: asrs r0, r0, #1
33-
; V6M-NEXT: bx lr
16+
; CHECK-LABEL: f0
17+
; CHECK: movs r1, #2
18+
; CHECK-NEXT: sdiv r0, r0, r1
19+
; CHECK-NEXT: sxth r0, r0
20+
; CHECK-NEXT: bx lr
3421

3522
entry:
3623
%0 = sdiv i16 %F, 2
@@ -39,19 +26,10 @@ entry:
3926

4027
; Same as above, but now with i32
4128
define dso_local i32 @f1(i32 %F) local_unnamed_addr #0 {
42-
; CHECK-LABEL: f1:
43-
; CHECK: @ %bb.0: @ %entry
44-
; CHECK-NEXT: movs r1, #4
45-
; CHECK-NEXT: sdiv r0, r0, r1
46-
; CHECK-NEXT: bx lr
47-
;
48-
; V6M-LABEL: f1:
49-
; V6M: @ %bb.0: @ %entry
50-
; V6M-NEXT: asrs r1, r0, #31
51-
; V6M-NEXT: lsrs r1, r1, #30
52-
; V6M-NEXT: adds r0, r0, r1
53-
; V6M-NEXT: asrs r0, r0, #2
54-
; V6M-NEXT: bx lr
29+
; CHECK-LABEL: f1
30+
; CHECK: movs r1, #4
31+
; CHECK-NEXT: sdiv r0, r0, r1
32+
; CHECK-NEXT: bx lr
5533

5634
entry:
5735
%div = sdiv i32 %F, 4
@@ -60,18 +38,10 @@ entry:
6038

6139
; The immediate is not a power of 2, so we expect a sdiv.
6240
define dso_local i32 @f2(i32 %F) local_unnamed_addr #0 {
63-
; CHECK-LABEL: f2:
64-
; CHECK: @ %bb.0: @ %entry
65-
; CHECK-NEXT: movs r1, #5
66-
; CHECK-NEXT: sdiv r0, r0, r1
67-
; CHECK-NEXT: bx lr
68-
;
69-
; V6M-LABEL: f2:
70-
; V6M: @ %bb.0: @ %entry
71-
; V6M-NEXT: push {r7, lr}
72-
; V6M-NEXT: movs r1, #5
73-
; V6M-NEXT: bl __divsi3
74-
; V6M-NEXT: pop {r7, pc}
41+
; CHECK-LABEL: f2
42+
; CHECK: movs r1, #5
43+
; CHECK-NEXT: sdiv r0, r0, r1
44+
; CHECK-NEXT: bx lr
7545

7646
entry:
7747
%div = sdiv i32 %F, 5
@@ -81,28 +51,8 @@ entry:
8151
; Try a larger power of 2 immediate: immediates larger than
8252
; 128 don't give any code size savings.
8353
define dso_local i32 @f3(i32 %F) local_unnamed_addr #0 {
84-
; T2-LABEL: f3:
85-
; T2: @ %bb.0: @ %entry
86-
; T2-NEXT: asrs r1, r0, #31
87-
; T2-NEXT: add.w r0, r0, r1, lsr #24
88-
; T2-NEXT: asrs r0, r0, #8
89-
; T2-NEXT: bx lr
90-
;
91-
; T1-LABEL: f3:
92-
; T1: @ %bb.0: @ %entry
93-
; T1-NEXT: asrs r1, r0, #31
94-
; T1-NEXT: lsrs r1, r1, #24
95-
; T1-NEXT: adds r0, r0, r1
96-
; T1-NEXT: asrs r0, r0, #8
97-
; T1-NEXT: bx lr
98-
;
99-
; V6M-LABEL: f3:
100-
; V6M: @ %bb.0: @ %entry
101-
; V6M-NEXT: asrs r1, r0, #31
102-
; V6M-NEXT: lsrs r1, r1, #24
103-
; V6M-NEXT: adds r0, r0, r1
104-
; V6M-NEXT: asrs r0, r0, #8
105-
; V6M-NEXT: bx lr
54+
; CHECK-LABEL: f3
55+
; CHECK-NOT: sdiv
10656
entry:
10757
%div = sdiv i32 %F, 256
10858
ret i32 %div
@@ -115,65 +65,39 @@ attributes #0 = { minsize norecurse nounwind optsize readnone }
11565
; the sdiv to sdiv, but to the faster instruction sequence.
11666

11767
define dso_local signext i16 @f4(i16 signext %F) {
118-
; T2-LABEL: f4:
119-
; T2: @ %bb.0: @ %entry
120-
; T2-NEXT: and r1, r0, #32768
121-
; T2-NEXT: add.w r0, r0, r1, lsr #15
122-
; T2-NEXT: sxth r0, r0
123-
; T2-NEXT: asrs r0, r0, #1
124-
; T2-NEXT: bx lr
125-
;
126-
; T1-LABEL: f4:
127-
; T1: @ %bb.0: @ %entry
128-
; T1-NEXT: movw r1, #65280
129-
; T1-NEXT: ands r1, r0
130-
; T1-NEXT: lsrs r1, r1, #15
131-
; T1-NEXT: adds r0, r0, r1
132-
; T1-NEXT: sxth r0, r0
133-
; T1-NEXT: asrs r0, r0, #1
134-
; T1-NEXT: bx lr
135-
;
136-
; V6M-LABEL: f4:
137-
; V6M: @ %bb.0: @ %entry
138-
; V6M-NEXT: movs r1, #255
139-
; V6M-NEXT: lsls r1, r1, #8
140-
; V6M-NEXT: ands r1, r0
141-
; V6M-NEXT: lsrs r1, r1, #15
142-
; V6M-NEXT: adds r0, r0, r1
143-
; V6M-NEXT: sxth r0, r0
144-
; V6M-NEXT: asrs r0, r0, #1
145-
; V6M-NEXT: bx lr
146-
68+
; T2-LABEL: f4
69+
; T2: uxth r1, r0
70+
; T2-NEXT: add.w r0, r0, r1, lsr #15
71+
; T2-NEXT: sxth r0, r0
72+
; T2-NEXT: asrs r0, r0, #1
73+
; T2-NEXT: bx lr
74+
75+
; T1-LABEL: f4
76+
; T1: uxth r1, r0
77+
; T1-NEXT: lsrs r1, r1, #15
78+
; T1-NEXT: adds r0, r0, r1
79+
; T1-NEXT: sxth r0, r0
80+
; T1-NEXT: asrs r0, r0, #1
81+
; T1-NEXT: bx lr
14782

14883
entry:
14984
%0 = sdiv i16 %F, 2
15085
ret i16 %0
15186
}
15287

15388
define dso_local i32 @f5(i32 %F) {
154-
; T2-LABEL: f5:
155-
; T2: @ %bb.0: @ %entry
156-
; T2-NEXT: asrs r1, r0, #31
157-
; T2-NEXT: add.w r0, r0, r1, lsr #30
158-
; T2-NEXT: asrs r0, r0, #2
159-
; T2-NEXT: bx lr
160-
;
161-
; T1-LABEL: f5:
162-
; T1: @ %bb.0: @ %entry
163-
; T1-NEXT: asrs r1, r0, #31
164-
; T1-NEXT: lsrs r1, r1, #30
165-
; T1-NEXT: adds r0, r0, r1
166-
; T1-NEXT: asrs r0, r0, #2
167-
; T1-NEXT: bx lr
168-
;
169-
; V6M-LABEL: f5:
170-
; V6M: @ %bb.0: @ %entry
171-
; V6M-NEXT: asrs r1, r0, #31
172-
; V6M-NEXT: lsrs r1, r1, #30
173-
; V6M-NEXT: adds r0, r0, r1
174-
; V6M-NEXT: asrs r0, r0, #2
175-
; V6M-NEXT: bx lr
176-
89+
; T2-LABEL: f5
90+
; T2: asrs r1, r0, #31
91+
; T2-NEXT: add.w r0, r0, r1, lsr #30
92+
; T2-NEXT: asrs r0, r0, #2
93+
; T2-NEXT: bx lr
94+
95+
; T1-LABEL: f5
96+
; T1: asrs r1, r0, #31
97+
; T1-NEXT: lsrs r1, r1, #30
98+
; T1-NEXT: adds r0, r0, r1
99+
; T1-NEXT: asrs r0, r0, #2
100+
; T1-NEXT: bx lr
177101

178102
entry:
179103
%div = sdiv i32 %F, 4

0 commit comments

Comments
 (0)