Skip to content

Commit c7d5595

Browse files
committed
[ARM] Pre-commit tests (NFC)
1 parent cc6a864 commit c7d5595

File tree

1 file changed

+180
-0
lines changed

1 file changed

+180
-0
lines changed
Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc -mtriple=armv7a < %s | FileCheck %s --check-prefix=ARM
3+
; RUN: llc -mtriple=armv6m < %s | FileCheck %s --check-prefix=THUMB
4+
; RUN: llc -mtriple=armv7m < %s | FileCheck %s --check-prefix=THUMB2
5+
6+
define i3 @sign_i3(i3 %a) {
7+
; ARM-LABEL: sign_i3:
8+
; ARM: @ %bb.0:
9+
; ARM-NEXT: sbfx r1, r0, #0, #3
10+
; ARM-NEXT: mvn r0, #0
11+
; ARM-NEXT: cmn r1, #1
12+
; ARM-NEXT: movwgt r0, #1
13+
; ARM-NEXT: bx lr
14+
;
15+
; THUMB-LABEL: sign_i3:
16+
; THUMB: @ %bb.0:
17+
; THUMB-NEXT: lsls r0, r0, #29
18+
; THUMB-NEXT: asrs r0, r0, #29
19+
; THUMB-NEXT: cmp r0, #0
20+
; THUMB-NEXT: bge .LBB0_2
21+
; THUMB-NEXT: @ %bb.1:
22+
; THUMB-NEXT: movs r0, #0
23+
; THUMB-NEXT: mvns r0, r0
24+
; THUMB-NEXT: bx lr
25+
; THUMB-NEXT: .LBB0_2:
26+
; THUMB-NEXT: movs r0, #1
27+
; THUMB-NEXT: bx lr
28+
;
29+
; THUMB2-LABEL: sign_i3:
30+
; THUMB2: @ %bb.0:
31+
; THUMB2-NEXT: sbfx r1, r0, #0, #3
32+
; THUMB2-NEXT: mov.w r0, #-1
33+
; THUMB2-NEXT: cmp.w r1, #-1
34+
; THUMB2-NEXT: it gt
35+
; THUMB2-NEXT: movgt r0, #1
36+
; THUMB2-NEXT: bx lr
37+
%c = icmp sgt i3 %a, -1
38+
%res = select i1 %c, i3 1, i3 -1
39+
ret i3 %res
40+
}
41+
42+
define i4 @sign_i4(i4 %a) {
43+
; ARM-LABEL: sign_i4:
44+
; ARM: @ %bb.0:
45+
; ARM-NEXT: sbfx r1, r0, #0, #4
46+
; ARM-NEXT: mvn r0, #0
47+
; ARM-NEXT: cmn r1, #1
48+
; ARM-NEXT: movwgt r0, #1
49+
; ARM-NEXT: bx lr
50+
;
51+
; THUMB-LABEL: sign_i4:
52+
; THUMB: @ %bb.0:
53+
; THUMB-NEXT: lsls r0, r0, #28
54+
; THUMB-NEXT: asrs r0, r0, #28
55+
; THUMB-NEXT: cmp r0, #0
56+
; THUMB-NEXT: bge .LBB1_2
57+
; THUMB-NEXT: @ %bb.1:
58+
; THUMB-NEXT: movs r0, #0
59+
; THUMB-NEXT: mvns r0, r0
60+
; THUMB-NEXT: bx lr
61+
; THUMB-NEXT: .LBB1_2:
62+
; THUMB-NEXT: movs r0, #1
63+
; THUMB-NEXT: bx lr
64+
;
65+
; THUMB2-LABEL: sign_i4:
66+
; THUMB2: @ %bb.0:
67+
; THUMB2-NEXT: sbfx r1, r0, #0, #4
68+
; THUMB2-NEXT: mov.w r0, #-1
69+
; THUMB2-NEXT: cmp.w r1, #-1
70+
; THUMB2-NEXT: it gt
71+
; THUMB2-NEXT: movgt r0, #1
72+
; THUMB2-NEXT: bx lr
73+
%c = icmp sgt i4 %a, -1
74+
%res = select i1 %c, i4 1, i4 -1
75+
ret i4 %res
76+
}
77+
78+
define i8 @sign_i8(i8 %a) {
79+
; ARM-LABEL: sign_i8:
80+
; ARM: @ %bb.0:
81+
; ARM-NEXT: sxtb r1, r0
82+
; ARM-NEXT: mvn r0, #0
83+
; ARM-NEXT: cmn r1, #1
84+
; ARM-NEXT: movwgt r0, #1
85+
; ARM-NEXT: bx lr
86+
;
87+
; THUMB-LABEL: sign_i8:
88+
; THUMB: @ %bb.0:
89+
; THUMB-NEXT: sxtb r0, r0
90+
; THUMB-NEXT: cmp r0, #0
91+
; THUMB-NEXT: bge .LBB2_2
92+
; THUMB-NEXT: @ %bb.1:
93+
; THUMB-NEXT: movs r0, #0
94+
; THUMB-NEXT: mvns r0, r0
95+
; THUMB-NEXT: bx lr
96+
; THUMB-NEXT: .LBB2_2:
97+
; THUMB-NEXT: movs r0, #1
98+
; THUMB-NEXT: bx lr
99+
;
100+
; THUMB2-LABEL: sign_i8:
101+
; THUMB2: @ %bb.0:
102+
; THUMB2-NEXT: sxtb r1, r0
103+
; THUMB2-NEXT: mov.w r0, #-1
104+
; THUMB2-NEXT: cmp.w r1, #-1
105+
; THUMB2-NEXT: it gt
106+
; THUMB2-NEXT: movgt r0, #1
107+
; THUMB2-NEXT: bx lr
108+
%c = icmp sgt i8 %a, -1
109+
%res = select i1 %c, i8 1, i8 -1
110+
ret i8 %res
111+
}
112+
113+
define i16 @sign_i16(i16 %a) {
114+
; ARM-LABEL: sign_i16:
115+
; ARM: @ %bb.0:
116+
; ARM-NEXT: sxth r1, r0
117+
; ARM-NEXT: mvn r0, #0
118+
; ARM-NEXT: cmn r1, #1
119+
; ARM-NEXT: movwgt r0, #1
120+
; ARM-NEXT: bx lr
121+
;
122+
; THUMB-LABEL: sign_i16:
123+
; THUMB: @ %bb.0:
124+
; THUMB-NEXT: sxth r0, r0
125+
; THUMB-NEXT: cmp r0, #0
126+
; THUMB-NEXT: bge .LBB3_2
127+
; THUMB-NEXT: @ %bb.1:
128+
; THUMB-NEXT: movs r0, #0
129+
; THUMB-NEXT: mvns r0, r0
130+
; THUMB-NEXT: bx lr
131+
; THUMB-NEXT: .LBB3_2:
132+
; THUMB-NEXT: movs r0, #1
133+
; THUMB-NEXT: bx lr
134+
;
135+
; THUMB2-LABEL: sign_i16:
136+
; THUMB2: @ %bb.0:
137+
; THUMB2-NEXT: sxth r1, r0
138+
; THUMB2-NEXT: mov.w r0, #-1
139+
; THUMB2-NEXT: cmp.w r1, #-1
140+
; THUMB2-NEXT: it gt
141+
; THUMB2-NEXT: movgt r0, #1
142+
; THUMB2-NEXT: bx lr
143+
%c = icmp sgt i16 %a, -1
144+
%res = select i1 %c, i16 1, i16 -1
145+
ret i16 %res
146+
}
147+
148+
define i32 @sign_i32(i32 %a) {
149+
; ARM-LABEL: sign_i32:
150+
; ARM: @ %bb.0:
151+
; ARM-NEXT: mvn r1, #0
152+
; ARM-NEXT: cmn r0, #1
153+
; ARM-NEXT: movwgt r1, #1
154+
; ARM-NEXT: mov r0, r1
155+
; ARM-NEXT: bx lr
156+
;
157+
; THUMB-LABEL: sign_i32:
158+
; THUMB: @ %bb.0:
159+
; THUMB-NEXT: cmp r0, #0
160+
; THUMB-NEXT: bge .LBB4_2
161+
; THUMB-NEXT: @ %bb.1:
162+
; THUMB-NEXT: movs r0, #0
163+
; THUMB-NEXT: mvns r0, r0
164+
; THUMB-NEXT: bx lr
165+
; THUMB-NEXT: .LBB4_2:
166+
; THUMB-NEXT: movs r0, #1
167+
; THUMB-NEXT: bx lr
168+
;
169+
; THUMB2-LABEL: sign_i32:
170+
; THUMB2: @ %bb.0:
171+
; THUMB2-NEXT: mov.w r1, #-1
172+
; THUMB2-NEXT: cmp.w r0, #-1
173+
; THUMB2-NEXT: it gt
174+
; THUMB2-NEXT: movgt r1, #1
175+
; THUMB2-NEXT: mov r0, r1
176+
; THUMB2-NEXT: bx lr
177+
%c = icmp sgt i32 %a, -1
178+
%res = select i1 %c, i32 1, i32 -1
179+
ret i32 %res
180+
}

0 commit comments

Comments
 (0)