Skip to content

Commit ec99bf2

Browse files
committed
[NFC][Codegen][X86] Autogenerate check lines in shift-i256.ll
1 parent 3bb5ddd commit ec99bf2

File tree

1 file changed

+327
-5
lines changed

1 file changed

+327
-5
lines changed

llvm/test/CodeGen/X86/shift-i256.ll

Lines changed: 327 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
12
; RUN: llc < %s -mtriple=i686-- | FileCheck %s
2-
; RUN: llc < %s -mtriple=x86_64-- -O0 | FileCheck %s -check-prefix=CHECK-X64
3-
; RUN: llc < %s -mtriple=x86_64-- -O2 | FileCheck %s -check-prefix=CHECK-X64
3+
; RUN: llc < %s -mtriple=x86_64-- -O0 | FileCheck %s -check-prefixes=CHECK-X64,CHECK-X64-O0
4+
; RUN: llc < %s -mtriple=x86_64-- -O2 | FileCheck %s -check-prefixes=CHECK-X64,CHECK-X64-O2
45

56
; CHECK-LABEL: shift1
67
define void @shift1(i256 %x, i256 %a, ptr nocapture %r) nounwind readnone {
@@ -10,12 +11,333 @@ entry:
1011
ret void
1112
}
1213

13-
; CHECK-LABEL: shift2
1414
define i256 @shift2(i256 %c) nounwind
15+
; CHECK-LABEL: shift2:
16+
; CHECK: # %bb.0:
17+
; CHECK-NEXT: pushl %ebp
18+
; CHECK-NEXT: pushl %ebx
19+
; CHECK-NEXT: pushl %edi
20+
; CHECK-NEXT: pushl %esi
21+
; CHECK-NEXT: subl $32, %esp
22+
; CHECK-NEXT: movzbl {{[0-9]+}}(%esp), %eax
23+
; CHECK-NEXT: movb %al, %ah
24+
; CHECK-NEXT: addb $64, %ah
25+
; CHECK-NEXT: movl $1, %edi
26+
; CHECK-NEXT: xorl %edx, %edx
27+
; CHECK-NEXT: movb %ah, %cl
28+
; CHECK-NEXT: shldl %cl, %edi, %edx
29+
; CHECK-NEXT: movl $1, %ebx
30+
; CHECK-NEXT: shll %cl, %ebx
31+
; CHECK-NEXT: testb $32, %ah
32+
; CHECK-NEXT: movl %ebx, %ebp
33+
; CHECK-NEXT: jne .LBB1_2
34+
; CHECK-NEXT: # %bb.1:
35+
; CHECK-NEXT: movl %edx, %ebp
36+
; CHECK-NEXT: .LBB1_2:
37+
; CHECK-NEXT: movl %eax, %edx
38+
; CHECK-NEXT: addb $-128, %dl
39+
; CHECK-NEXT: xorl %esi, %esi
40+
; CHECK-NEXT: movl %edx, %ecx
41+
; CHECK-NEXT: shldl %cl, %edi, %esi
42+
; CHECK-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
43+
; CHECK-NEXT: movl $1, %esi
44+
; CHECK-NEXT: shll %cl, %esi
45+
; CHECK-NEXT: testb $32, %dl
46+
; CHECK-NEXT: je .LBB1_4
47+
; CHECK-NEXT: # %bb.3:
48+
; CHECK-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
49+
; CHECK-NEXT: xorl %esi, %esi
50+
; CHECK-NEXT: .LBB1_4:
51+
; CHECK-NEXT: cmpb $64, %dl
52+
; CHECK-NEXT: movl $0, (%esp) # 4-byte Folded Spill
53+
; CHECK-NEXT: jb .LBB1_6
54+
; CHECK-NEXT: # %bb.5:
55+
; CHECK-NEXT: movl %ebp, (%esp) # 4-byte Spill
56+
; CHECK-NEXT: xorl %esi, %esi
57+
; CHECK-NEXT: .LBB1_6:
58+
; CHECK-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
59+
; CHECK-NEXT: testb $32, %ah
60+
; CHECK-NEXT: movl $0, %ebp
61+
; CHECK-NEXT: jne .LBB1_8
62+
; CHECK-NEXT: # %bb.7:
63+
; CHECK-NEXT: movl %ebx, %ebp
64+
; CHECK-NEXT: .LBB1_8:
65+
; CHECK-NEXT: movb $-64, %cl
66+
; CHECK-NEXT: subb %al, %cl
67+
; CHECK-NEXT: movl $1, %esi
68+
; CHECK-NEXT: xorl %ebx, %ebx
69+
; CHECK-NEXT: shrdl %cl, %ebx, %esi
70+
; CHECK-NEXT: testb $32, %cl
71+
; CHECK-NEXT: movl $0, %ebx
72+
; CHECK-NEXT: jne .LBB1_10
73+
; CHECK-NEXT: # %bb.9:
74+
; CHECK-NEXT: movl %esi, %ebx
75+
; CHECK-NEXT: .LBB1_10:
76+
; CHECK-NEXT: cmpb $64, %dl
77+
; CHECK-NEXT: jb .LBB1_12
78+
; CHECK-NEXT: # %bb.11:
79+
; CHECK-NEXT: movl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
80+
; CHECK-NEXT: movl %ebp, %ebx
81+
; CHECK-NEXT: .LBB1_12:
82+
; CHECK-NEXT: xorl %esi, %esi
83+
; CHECK-NEXT: movl %eax, %ecx
84+
; CHECK-NEXT: shldl %cl, %edi, %esi
85+
; CHECK-NEXT: movl $1, %ebp
86+
; CHECK-NEXT: shll %cl, %ebp
87+
; CHECK-NEXT: testb $32, %al
88+
; CHECK-NEXT: je .LBB1_14
89+
; CHECK-NEXT: # %bb.13:
90+
; CHECK-NEXT: movl %ebp, %esi
91+
; CHECK-NEXT: xorl %ebp, %ebp
92+
; CHECK-NEXT: .LBB1_14:
93+
; CHECK-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
94+
; CHECK-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
95+
; CHECK-NEXT: movl %eax, %ecx
96+
; CHECK-NEXT: subb $64, %cl
97+
; CHECK-NEXT: jb .LBB1_16
98+
; CHECK-NEXT: # %bb.15:
99+
; CHECK-NEXT: xorl %ebp, %ebp
100+
; CHECK-NEXT: .LBB1_16:
101+
; CHECK-NEXT: negb %cl
102+
; CHECK-NEXT: movl $1, %esi
103+
; CHECK-NEXT: xorl %ebx, %ebx
104+
; CHECK-NEXT: shrdl %cl, %ebx, %esi
105+
; CHECK-NEXT: testb $32, %cl
106+
; CHECK-NEXT: movl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
107+
; CHECK-NEXT: jne .LBB1_18
108+
; CHECK-NEXT: # %bb.17:
109+
; CHECK-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
110+
; CHECK-NEXT: .LBB1_18:
111+
; CHECK-NEXT: movl %eax, %ecx
112+
; CHECK-NEXT: addb $-64, %cl
113+
; CHECK-NEXT: xorl %esi, %esi
114+
; CHECK-NEXT: shldl %cl, %edi, %esi
115+
; CHECK-NEXT: movl $1, %ebx
116+
; CHECK-NEXT: shll %cl, %ebx
117+
; CHECK-NEXT: testb $32, %cl
118+
; CHECK-NEXT: je .LBB1_20
119+
; CHECK-NEXT: # %bb.19:
120+
; CHECK-NEXT: movl %ebx, %esi
121+
; CHECK-NEXT: xorl %ebx, %ebx
122+
; CHECK-NEXT: .LBB1_20:
123+
; CHECK-NEXT: cmpb $64, %al
124+
; CHECK-NEXT: movl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
125+
; CHECK-NEXT: jb .LBB1_22
126+
; CHECK-NEXT: # %bb.21:
127+
; CHECK-NEXT: movl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
128+
; CHECK-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
129+
; CHECK-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
130+
; CHECK-NEXT: .LBB1_22:
131+
; CHECK-NEXT: testb %dl, %dl
132+
; CHECK-NEXT: movl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
133+
; CHECK-NEXT: movl $0, %edx
134+
; CHECK-NEXT: je .LBB1_24
135+
; CHECK-NEXT: # %bb.23:
136+
; CHECK-NEXT: movl (%esp), %ecx # 4-byte Reload
137+
; CHECK-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
138+
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
139+
; CHECK-NEXT: .LBB1_24:
140+
; CHECK-NEXT: movb $-128, %cl
141+
; CHECK-NEXT: subb %al, %cl
142+
; CHECK-NEXT: movl $1, %ebx
143+
; CHECK-NEXT: xorl %esi, %esi
144+
; CHECK-NEXT: shrdl %cl, %esi, %ebx
145+
; CHECK-NEXT: testb $32, %cl
146+
; CHECK-NEXT: movl $0, %esi
147+
; CHECK-NEXT: jne .LBB1_26
148+
; CHECK-NEXT: # %bb.25:
149+
; CHECK-NEXT: movl %ebx, %esi
150+
; CHECK-NEXT: .LBB1_26:
151+
; CHECK-NEXT: cmpb $64, %cl
152+
; CHECK-NEXT: jb .LBB1_28
153+
; CHECK-NEXT: # %bb.27:
154+
; CHECK-NEXT: xorl %esi, %esi
155+
; CHECK-NEXT: .LBB1_28:
156+
; CHECK-NEXT: movl %ebp, (%esp) # 4-byte Spill
157+
; CHECK-NEXT: testb %cl, %cl
158+
; CHECK-NEXT: je .LBB1_30
159+
; CHECK-NEXT: # %bb.29:
160+
; CHECK-NEXT: movl %esi, %edi
161+
; CHECK-NEXT: .LBB1_30:
162+
; CHECK-NEXT: testb %al, %al
163+
; CHECK-NEXT: movl $0, %ebp
164+
; CHECK-NEXT: jne .LBB1_31
165+
; CHECK-NEXT: # %bb.32:
166+
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
167+
; CHECK-NEXT: js .LBB1_33
168+
; CHECK-NEXT: .LBB1_34:
169+
; CHECK-NEXT: movl $0, %eax
170+
; CHECK-NEXT: jne .LBB1_35
171+
; CHECK-NEXT: .LBB1_36:
172+
; CHECK-NEXT: movl $0, %edi
173+
; CHECK-NEXT: js .LBB1_37
174+
; CHECK-NEXT: jmp .LBB1_39
175+
; CHECK-NEXT: .LBB1_31:
176+
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
177+
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
178+
; CHECK-NEXT: jns .LBB1_34
179+
; CHECK-NEXT: .LBB1_33:
180+
; CHECK-NEXT: movl $0, %ebp
181+
; CHECK-NEXT: movl %eax, %edi
182+
; CHECK-NEXT: movl $0, %eax
183+
; CHECK-NEXT: je .LBB1_36
184+
; CHECK-NEXT: .LBB1_35:
185+
; CHECK-NEXT: movl %edi, %eax
186+
; CHECK-NEXT: movl $0, %edi
187+
; CHECK-NEXT: jns .LBB1_39
188+
; CHECK-NEXT: .LBB1_37:
189+
; CHECK-NEXT: je .LBB1_39
190+
; CHECK-NEXT: # %bb.38:
191+
; CHECK-NEXT: movl %edx, %edi
192+
; CHECK-NEXT: .LBB1_39:
193+
; CHECK-NEXT: movl $0, %edx
194+
; CHECK-NEXT: jns .LBB1_42
195+
; CHECK-NEXT: # %bb.40:
196+
; CHECK-NEXT: je .LBB1_42
197+
; CHECK-NEXT: # %bb.41:
198+
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
199+
; CHECK-NEXT: .LBB1_42:
200+
; CHECK-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
201+
; CHECK-NEXT: movl $0, %ebx
202+
; CHECK-NEXT: je .LBB1_44
203+
; CHECK-NEXT: # %bb.43:
204+
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
205+
; CHECK-NEXT: .LBB1_44:
206+
; CHECK-NEXT: movl %eax, %ebp
207+
; CHECK-NEXT: movl $0, %ecx
208+
; CHECK-NEXT: jns .LBB1_46
209+
; CHECK-NEXT: # %bb.45:
210+
; CHECK-NEXT: movl $0, %ebx
211+
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
212+
; CHECK-NEXT: .LBB1_46:
213+
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax
214+
; CHECK-NEXT: movl $0, %esi
215+
; CHECK-NEXT: je .LBB1_48
216+
; CHECK-NEXT: # %bb.47:
217+
; CHECK-NEXT: movl %ecx, %esi
218+
; CHECK-NEXT: .LBB1_48:
219+
; CHECK-NEXT: jns .LBB1_50
220+
; CHECK-NEXT: # %bb.49:
221+
; CHECK-NEXT: movl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
222+
; CHECK-NEXT: movl $0, (%esp) # 4-byte Folded Spill
223+
; CHECK-NEXT: .LBB1_50:
224+
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
225+
; CHECK-NEXT: movl %ecx, 4(%eax)
226+
; CHECK-NEXT: movl (%esp), %ecx # 4-byte Reload
227+
; CHECK-NEXT: movl %ecx, (%eax)
228+
; CHECK-NEXT: movl %esi, 20(%eax)
229+
; CHECK-NEXT: movl %ebx, 12(%eax)
230+
; CHECK-NEXT: movl %edx, 28(%eax)
231+
; CHECK-NEXT: movl %edi, 24(%eax)
232+
; CHECK-NEXT: movl %ebp, 16(%eax)
233+
; CHECK-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
234+
; CHECK-NEXT: movl %ecx, 8(%eax)
235+
; CHECK-NEXT: addl $32, %esp
236+
; CHECK-NEXT: popl %esi
237+
; CHECK-NEXT: popl %edi
238+
; CHECK-NEXT: popl %ebx
239+
; CHECK-NEXT: popl %ebp
240+
; CHECK-NEXT: retl $4
241+
;
242+
; CHECK-X64-O0-LABEL: shift2:
243+
; CHECK-X64-O0: # %bb.0:
244+
; CHECK-X64-O0-NEXT: pushq %r14
245+
; CHECK-X64-O0-NEXT: pushq %rbx
246+
; CHECK-X64-O0-NEXT: movq %rdi, %rax
247+
; CHECK-X64-O0-NEXT: movb %sil, %r11b
248+
; CHECK-X64-O0-NEXT: movb $-128, %cl
249+
; CHECK-X64-O0-NEXT: subb %r11b, %cl
250+
; CHECK-X64-O0-NEXT: movb %cl, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
251+
; CHECK-X64-O0-NEXT: xorl %edx, %edx
252+
; CHECK-X64-O0-NEXT: movl %edx, %esi
253+
; CHECK-X64-O0-NEXT: movl $1, %r14d
254+
; CHECK-X64-O0-NEXT: movq %r14, %r8
255+
; CHECK-X64-O0-NEXT: shrdq %cl, %rsi, %r8
256+
; CHECK-X64-O0-NEXT: movb {{[-0-9]+}}(%r{{[sb]}}p), %cl # 1-byte Reload
257+
; CHECK-X64-O0-NEXT: testb $64, %cl
258+
; CHECK-X64-O0-NEXT: cmovneq %rsi, %r8
259+
; CHECK-X64-O0-NEXT: movb %r11b, %bl
260+
; CHECK-X64-O0-NEXT: addb $-128, %bl
261+
; CHECK-X64-O0-NEXT: movb %bl, %cl
262+
; CHECK-X64-O0-NEXT: movq %rsi, %rdx
263+
; CHECK-X64-O0-NEXT: shldq %cl, %r14, %rdx
264+
; CHECK-X64-O0-NEXT: movb %r11b, %cl
265+
; CHECK-X64-O0-NEXT: movq %rsi, %r10
266+
; CHECK-X64-O0-NEXT: shldq %cl, %r14, %r10
267+
; CHECK-X64-O0-NEXT: movb %r11b, %cl
268+
; CHECK-X64-O0-NEXT: movq %r14, %r9
269+
; CHECK-X64-O0-NEXT: shlq %cl, %r9
270+
; CHECK-X64-O0-NEXT: testb $64, %r11b
271+
; CHECK-X64-O0-NEXT: cmovneq %r9, %r10
272+
; CHECK-X64-O0-NEXT: cmovneq %rsi, %r9
273+
; CHECK-X64-O0-NEXT: movb %bl, %cl
274+
; CHECK-X64-O0-NEXT: shlq %cl, %r14
275+
; CHECK-X64-O0-NEXT: movq %r14, %rcx
276+
; CHECK-X64-O0-NEXT: testb $64, %bl
277+
; CHECK-X64-O0-NEXT: cmovneq %rcx, %rdx
278+
; CHECK-X64-O0-NEXT: cmovneq %rsi, %rcx
279+
; CHECK-X64-O0-NEXT: testb %r11b, %r11b
280+
; CHECK-X64-O0-NEXT: cmovnsq %r8, %rcx
281+
; CHECK-X64-O0-NEXT: cmoveq %rsi, %rcx
282+
; CHECK-X64-O0-NEXT: cmovnsq %rsi, %rdx
283+
; CHECK-X64-O0-NEXT: cmoveq %rsi, %rdx
284+
; CHECK-X64-O0-NEXT: movq %rsi, %r8
285+
; CHECK-X64-O0-NEXT: cmovnsq %r10, %r8
286+
; CHECK-X64-O0-NEXT: cmovnsq %r9, %rsi
287+
; CHECK-X64-O0-NEXT: movq %r8, 8(%rdi)
288+
; CHECK-X64-O0-NEXT: movq %rsi, (%rdi)
289+
; CHECK-X64-O0-NEXT: movq %rdx, 24(%rdi)
290+
; CHECK-X64-O0-NEXT: movq %rcx, 16(%rdi)
291+
; CHECK-X64-O0-NEXT: popq %rbx
292+
; CHECK-X64-O0-NEXT: popq %r14
293+
; CHECK-X64-O0-NEXT: retq
294+
;
295+
; CHECK-X64-O2-LABEL: shift2:
296+
; CHECK-X64-O2: # %bb.0:
297+
; CHECK-X64-O2-NEXT: pushq %rbx
298+
; CHECK-X64-O2-NEXT: movq %rdi, %rax
299+
; CHECK-X64-O2-NEXT: movb $-128, %cl
300+
; CHECK-X64-O2-NEXT: subb %sil, %cl
301+
; CHECK-X64-O2-NEXT: xorl %r8d, %r8d
302+
; CHECK-X64-O2-NEXT: movl $1, %edi
303+
; CHECK-X64-O2-NEXT: movl $1, %r10d
304+
; CHECK-X64-O2-NEXT: shrdq %cl, %r8, %r10
305+
; CHECK-X64-O2-NEXT: testb $64, %cl
306+
; CHECK-X64-O2-NEXT: cmovneq %r8, %r10
307+
; CHECK-X64-O2-NEXT: leal -128(%rsi), %edx
308+
; CHECK-X64-O2-NEXT: xorl %r9d, %r9d
309+
; CHECK-X64-O2-NEXT: movl %edx, %ecx
310+
; CHECK-X64-O2-NEXT: shldq %cl, %rdi, %r9
311+
; CHECK-X64-O2-NEXT: xorl %r11d, %r11d
312+
; CHECK-X64-O2-NEXT: movl %esi, %ecx
313+
; CHECK-X64-O2-NEXT: shldq %cl, %rdi, %r11
314+
; CHECK-X64-O2-NEXT: movl $1, %ebx
315+
; CHECK-X64-O2-NEXT: shlq %cl, %rbx
316+
; CHECK-X64-O2-NEXT: testb $64, %sil
317+
; CHECK-X64-O2-NEXT: cmovneq %rbx, %r11
318+
; CHECK-X64-O2-NEXT: cmovneq %r8, %rbx
319+
; CHECK-X64-O2-NEXT: movl %edx, %ecx
320+
; CHECK-X64-O2-NEXT: shlq %cl, %rdi
321+
; CHECK-X64-O2-NEXT: testb $64, %dl
322+
; CHECK-X64-O2-NEXT: cmovneq %rdi, %r9
323+
; CHECK-X64-O2-NEXT: cmovneq %r8, %rdi
324+
; CHECK-X64-O2-NEXT: testb %sil, %sil
325+
; CHECK-X64-O2-NEXT: cmovnsq %r10, %rdi
326+
; CHECK-X64-O2-NEXT: cmoveq %r8, %rdi
327+
; CHECK-X64-O2-NEXT: cmovnsq %r8, %r9
328+
; CHECK-X64-O2-NEXT: cmoveq %r8, %r9
329+
; CHECK-X64-O2-NEXT: cmovsq %r8, %r11
330+
; CHECK-X64-O2-NEXT: cmovsq %r8, %rbx
331+
; CHECK-X64-O2-NEXT: movq %r11, 8(%rax)
332+
; CHECK-X64-O2-NEXT: movq %rbx, (%rax)
333+
; CHECK-X64-O2-NEXT: movq %r9, 24(%rax)
334+
; CHECK-X64-O2-NEXT: movq %rdi, 16(%rax)
335+
; CHECK-X64-O2-NEXT: popq %rbx
336+
; CHECK-X64-O2-NEXT: retq
15337
{
16338
%b = shl i256 1, %c ; %c must not be a constant
17339
; Special case when %c is 0:
18-
; CHECK-X64: testb [[REG:%(bpl|r[0-9]+b)]], {{%(bpl|r[0-9]+b)}}
19-
; CHECK-X64: cmoveq
20340
ret i256 %b
21341
}
342+
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
343+
; CHECK-X64: {{.*}}

0 commit comments

Comments
 (0)