Skip to content

Commit 0a15981

Browse files
committedOct 19, 2019
[MSP430] Shift Amount Threshold in DAGCombine (Baseline Tests); NFC
Patch by: @JoanLluch (Joan LLuch) Differential Revision: https://reviews.llvm.org/D69099 llvm-svn: 375345
1 parent b5088aa commit 0a15981

File tree

1 file changed

+178
-0
lines changed

1 file changed

+178
-0
lines changed
 
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc -mtriple=msp430-- < %s | FileCheck %s
3+
4+
define i16 @testSimplifySetCC_0(i16 %a) {
5+
; CHECK-LABEL: testSimplifySetCC_0:
6+
; CHECK: ; %bb.0: ; %entry
7+
; CHECK-NEXT: and #32, r12
8+
; CHECK-NEXT: clrc
9+
; CHECK-NEXT: rrc r12
10+
; CHECK-NEXT: rra r12
11+
; CHECK-NEXT: rra r12
12+
; CHECK-NEXT: rra r12
13+
; CHECK-NEXT: rra r12
14+
; CHECK-NEXT: ret
15+
entry:
16+
%and = and i16 %a, 32
17+
%cmp = icmp ne i16 %and, 0
18+
%conv = zext i1 %cmp to i16
19+
ret i16 %conv
20+
}
21+
22+
define i16 @testSimplifySetCC_1(i16 %a) {
23+
; CHECK-LABEL: testSimplifySetCC_1:
24+
; CHECK: ; %bb.0: ; %entry
25+
; CHECK-NEXT: and #32, r12
26+
; CHECK-NEXT: clrc
27+
; CHECK-NEXT: rrc r12
28+
; CHECK-NEXT: rra r12
29+
; CHECK-NEXT: rra r12
30+
; CHECK-NEXT: rra r12
31+
; CHECK-NEXT: rra r12
32+
; CHECK-NEXT: ret
33+
entry:
34+
%and = and i16 %a, 32
35+
%cmp = icmp eq i16 %and, 32
36+
%conv = zext i1 %cmp to i16
37+
ret i16 %conv
38+
}
39+
40+
define i16 @testSiymplifySelect(i16 %a) {
41+
; CHECK-LABEL: testSiymplifySelect:
42+
; CHECK: ; %bb.0: ; %entry
43+
; CHECK-NEXT: mov r12, r13
44+
; CHECK-NEXT: clr r12
45+
; CHECK-NEXT: bit #2048, r13
46+
; CHECK-NEXT: jeq .LBB2_2
47+
; CHECK-NEXT: ; %bb.1: ; %entry
48+
; CHECK-NEXT: mov #3, r12
49+
; CHECK-NEXT: .LBB2_2: ; %entry
50+
; CHECK-NEXT: ret
51+
entry:
52+
%and = and i16 %a, 2048
53+
%cmp = icmp eq i16 %and, 0
54+
%cond = select i1 %cmp, i16 0, i16 3
55+
ret i16 %cond
56+
}
57+
58+
define i16 @testExtendSignBit(i16 %a) {
59+
; CHECK-LABEL: testExtendSignBit:
60+
; CHECK: ; %bb.0: ; %entry
61+
; CHECK-NEXT: inv r12
62+
; CHECK-NEXT: swpb r12
63+
; CHECK-NEXT: mov.b r12, r12
64+
; CHECK-NEXT: clrc
65+
; CHECK-NEXT: rrc r12
66+
; CHECK-NEXT: rra r12
67+
; CHECK-NEXT: rra r12
68+
; CHECK-NEXT: rra r12
69+
; CHECK-NEXT: rra r12
70+
; CHECK-NEXT: rra r12
71+
; CHECK-NEXT: rra r12
72+
; CHECK-NEXT: ret
73+
entry:
74+
%cmp = icmp sgt i16 %a, -1
75+
%cond = select i1 %cmp, i16 1, i16 0
76+
ret i16 %cond
77+
}
78+
79+
define i16 @testShiftAnd_0(i16 %a) {
80+
; CHECK-LABEL: testShiftAnd_0:
81+
; CHECK: ; %bb.0: ; %entry
82+
; CHECK-NEXT: swpb r12
83+
; CHECK-NEXT: sxt r12
84+
; CHECK-NEXT: rra r12
85+
; CHECK-NEXT: rra r12
86+
; CHECK-NEXT: rra r12
87+
; CHECK-NEXT: rra r12
88+
; CHECK-NEXT: rra r12
89+
; CHECK-NEXT: rra r12
90+
; CHECK-NEXT: rra r12
91+
; CHECK-NEXT: ret
92+
entry:
93+
%cmp = icmp slt i16 %a, 0
94+
%cond = select i1 %cmp, i16 -1, i16 0
95+
ret i16 %cond
96+
}
97+
98+
define i16 @testShiftAnd_1(i16 %a) {
99+
; CHECK-LABEL: testShiftAnd_1:
100+
; CHECK: ; %bb.0: ; %entry
101+
; CHECK-NEXT: swpb r12
102+
; CHECK-NEXT: mov.b r12, r12
103+
; CHECK-NEXT: clrc
104+
; CHECK-NEXT: rrc r12
105+
; CHECK-NEXT: rra r12
106+
; CHECK-NEXT: rra r12
107+
; CHECK-NEXT: rra r12
108+
; CHECK-NEXT: rra r12
109+
; CHECK-NEXT: rra r12
110+
; CHECK-NEXT: rra r12
111+
; CHECK-NEXT: ret
112+
entry:
113+
%cmp = icmp slt i16 %a, 0
114+
%cond = select i1 %cmp, i16 1, i16 0
115+
ret i16 %cond
116+
}
117+
118+
define i16 @testShiftAnd_2(i16 %a) {
119+
; CHECK-LABEL: testShiftAnd_2:
120+
; CHECK: ; %bb.0: ; %entry
121+
; CHECK-NEXT: swpb r12
122+
; CHECK-NEXT: mov.b r12, r12
123+
; CHECK-NEXT: clrc
124+
; CHECK-NEXT: rrc r12
125+
; CHECK-NEXT: rra r12
126+
; CHECK-NEXT: rra r12
127+
; CHECK-NEXT: rra r12
128+
; CHECK-NEXT: rra r12
129+
; CHECK-NEXT: rra r12
130+
; CHECK-NEXT: and #2, r12
131+
; CHECK-NEXT: ret
132+
entry:
133+
%cmp = icmp slt i16 %a, 0
134+
%cond = select i1 %cmp, i16 2, i16 0
135+
ret i16 %cond
136+
}
137+
138+
define i16 @testShiftAnd_3(i16 %a) {
139+
; CHECK-LABEL: testShiftAnd_3:
140+
; CHECK: ; %bb.0: ; %entry
141+
; CHECK-NEXT: swpb r12
142+
; CHECK-NEXT: sxt r12
143+
; CHECK-NEXT: rra r12
144+
; CHECK-NEXT: rra r12
145+
; CHECK-NEXT: rra r12
146+
; CHECK-NEXT: rra r12
147+
; CHECK-NEXT: rra r12
148+
; CHECK-NEXT: rra r12
149+
; CHECK-NEXT: rra r12
150+
; CHECK-NEXT: and #3, r12
151+
; CHECK-NEXT: ret
152+
entry:
153+
%cmp = icmp slt i16 %a, 0
154+
%cond = select i1 %cmp, i16 3, i16 0
155+
ret i16 %cond
156+
}
157+
158+
define i16 @testShiftAnd_4(i16 %a, i16 %b) {
159+
; CHECK-LABEL: testShiftAnd_4:
160+
; CHECK: ; %bb.0: ; %entry
161+
; CHECK-NEXT: mov r12, r14
162+
; CHECK-NEXT: mov #1, r12
163+
; CHECK-NEXT: cmp r14, r13
164+
; CHECK-NEXT: jl .LBB8_2
165+
; CHECK-NEXT: ; %bb.1: ; %entry
166+
; CHECK-NEXT: clr r12
167+
; CHECK-NEXT: .LBB8_2: ; %entry
168+
; CHECK-NEXT: add r12, r12
169+
; CHECK-NEXT: add r12, r12
170+
; CHECK-NEXT: add r12, r12
171+
; CHECK-NEXT: add r12, r12
172+
; CHECK-NEXT: add r12, r12
173+
; CHECK-NEXT: ret
174+
entry:
175+
%cmp = icmp sgt i16 %a, %b
176+
%cond = select i1 %cmp, i16 32, i16 0
177+
ret i16 %cond
178+
}

0 commit comments

Comments
 (0)
Please sign in to comment.