Skip to content

Commit 15443bd

Browse files
committed
[X86] Add some initial scheduling tests for generic x86 instructions
These will be using inline asm to ensure we have coverage that we're unlikely to get from lowering of basic ir. Currently waiting for D39728 to land to add support for scheduler comments for inline asm. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317698 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent d44ed28 commit 15443bd

File tree

2 files changed

+1085
-0
lines changed

2 files changed

+1085
-0
lines changed

test/CodeGen/X86/schedule-x86_32.ll

Lines changed: 348 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,348 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=i686 | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC
3+
; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=atom | FileCheck %s --check-prefix=CHECK --check-prefix=ATOM
4+
; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=slm | FileCheck %s --check-prefix=CHECK --check-prefix=SLM
5+
; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=sandybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY
6+
; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=ivybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY
7+
; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=haswell | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
8+
; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=broadwell | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL
9+
; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=skylake | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE
10+
; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=skx | FileCheck %s --check-prefix=CHECK --check-prefix=SKX
11+
; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=btver2 | FileCheck %s --check-prefix=CHECK --check-prefix=BTVER2
12+
; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1
13+
14+
define i8 @test_aaa(i8 %a0) optsize {
15+
; GENERIC-LABEL: test_aaa:
16+
; GENERIC: # BB#0:
17+
; GENERIC-NEXT: movb {{[0-9]+}}(%esp), %al
18+
; GENERIC-NEXT: #APP
19+
; GENERIC-NEXT: aaa
20+
; GENERIC-NEXT: #NO_APP
21+
; GENERIC-NEXT: retl
22+
;
23+
; ATOM-LABEL: test_aaa:
24+
; ATOM: # BB#0:
25+
; ATOM-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [1:1.00]
26+
; ATOM-NEXT: #APP
27+
; ATOM-NEXT: aaa
28+
; ATOM-NEXT: #NO_APP
29+
; ATOM-NEXT: retl # sched: [79:39.50]
30+
;
31+
; SLM-LABEL: test_aaa:
32+
; SLM: # BB#0:
33+
; SLM-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [3:1.00]
34+
; SLM-NEXT: #APP
35+
; SLM-NEXT: aaa
36+
; SLM-NEXT: #NO_APP
37+
; SLM-NEXT: retl # sched: [4:1.00]
38+
;
39+
; SANDY-LABEL: test_aaa:
40+
; SANDY: # BB#0:
41+
; SANDY-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:0.50]
42+
; SANDY-NEXT: #APP
43+
; SANDY-NEXT: aaa
44+
; SANDY-NEXT: #NO_APP
45+
; SANDY-NEXT: retl # sched: [5:1.00]
46+
;
47+
; HASWELL-LABEL: test_aaa:
48+
; HASWELL: # BB#0:
49+
; HASWELL-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [1:0.50]
50+
; HASWELL-NEXT: #APP
51+
; HASWELL-NEXT: aaa
52+
; HASWELL-NEXT: #NO_APP
53+
; HASWELL-NEXT: retl # sched: [5:0.50]
54+
;
55+
; BROADWELL-LABEL: test_aaa:
56+
; BROADWELL: # BB#0:
57+
; BROADWELL-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:0.50]
58+
; BROADWELL-NEXT: #APP
59+
; BROADWELL-NEXT: aaa
60+
; BROADWELL-NEXT: #NO_APP
61+
; BROADWELL-NEXT: retl # sched: [6:0.50]
62+
;
63+
; SKYLAKE-LABEL: test_aaa:
64+
; SKYLAKE: # BB#0:
65+
; SKYLAKE-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:0.50]
66+
; SKYLAKE-NEXT: #APP
67+
; SKYLAKE-NEXT: aaa
68+
; SKYLAKE-NEXT: #NO_APP
69+
; SKYLAKE-NEXT: retl # sched: [6:0.50]
70+
;
71+
; SKX-LABEL: test_aaa:
72+
; SKX: # BB#0:
73+
; SKX-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:0.50]
74+
; SKX-NEXT: #APP
75+
; SKX-NEXT: aaa
76+
; SKX-NEXT: #NO_APP
77+
; SKX-NEXT: retl # sched: [6:0.50]
78+
;
79+
; BTVER2-LABEL: test_aaa:
80+
; BTVER2: # BB#0:
81+
; BTVER2-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:1.00]
82+
; BTVER2-NEXT: #APP
83+
; BTVER2-NEXT: aaa
84+
; BTVER2-NEXT: #NO_APP
85+
; BTVER2-NEXT: retl # sched: [4:1.00]
86+
;
87+
; ZNVER1-LABEL: test_aaa:
88+
; ZNVER1: # BB#0:
89+
; ZNVER1-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [8:0.50]
90+
; ZNVER1-NEXT: #APP
91+
; ZNVER1-NEXT: aaa
92+
; ZNVER1-NEXT: #NO_APP
93+
; ZNVER1-NEXT: retl # sched: [1:0.50]
94+
%1 = tail call i8 asm "aaa", "=r,r"(i8 %a0) nounwind
95+
ret i8 %1
96+
}
97+
98+
define i8 @test_aad(i16 %a0) optsize {
99+
; GENERIC-LABEL: test_aad:
100+
; GENERIC: # BB#0:
101+
; GENERIC-NEXT: movzwl {{[0-9]+}}(%esp), %eax
102+
; GENERIC-NEXT: #APP
103+
; GENERIC-NEXT: aad
104+
; GENERIC-NEXT: #NO_APP
105+
; GENERIC-NEXT: retl
106+
;
107+
; ATOM-LABEL: test_aad:
108+
; ATOM: # BB#0:
109+
; ATOM-NEXT: movzwl {{[0-9]+}}(%esp), %eax # sched: [1:1.00]
110+
; ATOM-NEXT: #APP
111+
; ATOM-NEXT: aad
112+
; ATOM-NEXT: #NO_APP
113+
; ATOM-NEXT: retl # sched: [79:39.50]
114+
;
115+
; SLM-LABEL: test_aad:
116+
; SLM: # BB#0:
117+
; SLM-NEXT: movzwl {{[0-9]+}}(%esp), %eax # sched: [4:1.00]
118+
; SLM-NEXT: #APP
119+
; SLM-NEXT: aad
120+
; SLM-NEXT: #NO_APP
121+
; SLM-NEXT: retl # sched: [4:1.00]
122+
;
123+
; SANDY-LABEL: test_aad:
124+
; SANDY: # BB#0:
125+
; SANDY-NEXT: movzwl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
126+
; SANDY-NEXT: #APP
127+
; SANDY-NEXT: aad
128+
; SANDY-NEXT: #NO_APP
129+
; SANDY-NEXT: retl # sched: [5:1.00]
130+
;
131+
; HASWELL-LABEL: test_aad:
132+
; HASWELL: # BB#0:
133+
; HASWELL-NEXT: movzwl {{[0-9]+}}(%esp), %eax # sched: [4:0.50]
134+
; HASWELL-NEXT: #APP
135+
; HASWELL-NEXT: aad
136+
; HASWELL-NEXT: #NO_APP
137+
; HASWELL-NEXT: retl # sched: [5:0.50]
138+
;
139+
; BROADWELL-LABEL: test_aad:
140+
; BROADWELL: # BB#0:
141+
; BROADWELL-NEXT: movzwl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
142+
; BROADWELL-NEXT: #APP
143+
; BROADWELL-NEXT: aad
144+
; BROADWELL-NEXT: #NO_APP
145+
; BROADWELL-NEXT: retl # sched: [6:0.50]
146+
;
147+
; SKYLAKE-LABEL: test_aad:
148+
; SKYLAKE: # BB#0:
149+
; SKYLAKE-NEXT: movzwl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
150+
; SKYLAKE-NEXT: #APP
151+
; SKYLAKE-NEXT: aad
152+
; SKYLAKE-NEXT: #NO_APP
153+
; SKYLAKE-NEXT: retl # sched: [6:0.50]
154+
;
155+
; SKX-LABEL: test_aad:
156+
; SKX: # BB#0:
157+
; SKX-NEXT: movzwl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
158+
; SKX-NEXT: #APP
159+
; SKX-NEXT: aad
160+
; SKX-NEXT: #NO_APP
161+
; SKX-NEXT: retl # sched: [6:0.50]
162+
;
163+
; BTVER2-LABEL: test_aad:
164+
; BTVER2: # BB#0:
165+
; BTVER2-NEXT: movzwl {{[0-9]+}}(%esp), %eax # sched: [4:1.00]
166+
; BTVER2-NEXT: #APP
167+
; BTVER2-NEXT: aad
168+
; BTVER2-NEXT: #NO_APP
169+
; BTVER2-NEXT: retl # sched: [4:1.00]
170+
;
171+
; ZNVER1-LABEL: test_aad:
172+
; ZNVER1: # BB#0:
173+
; ZNVER1-NEXT: movzwl {{[0-9]+}}(%esp), %eax # sched: [8:0.50]
174+
; ZNVER1-NEXT: #APP
175+
; ZNVER1-NEXT: aad
176+
; ZNVER1-NEXT: #NO_APP
177+
; ZNVER1-NEXT: retl # sched: [1:0.50]
178+
%1 = tail call i8 asm "aad", "=r,r"(i16 %a0) nounwind
179+
ret i8 %1
180+
}
181+
182+
define i16 @test_aam(i8 %a0) optsize {
183+
; GENERIC-LABEL: test_aam:
184+
; GENERIC: # BB#0:
185+
; GENERIC-NEXT: movb {{[0-9]+}}(%esp), %al
186+
; GENERIC-NEXT: #APP
187+
; GENERIC-NEXT: aam
188+
; GENERIC-NEXT: #NO_APP
189+
; GENERIC-NEXT: retl
190+
;
191+
; ATOM-LABEL: test_aam:
192+
; ATOM: # BB#0:
193+
; ATOM-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [1:1.00]
194+
; ATOM-NEXT: #APP
195+
; ATOM-NEXT: aam
196+
; ATOM-NEXT: #NO_APP
197+
; ATOM-NEXT: retl # sched: [79:39.50]
198+
;
199+
; SLM-LABEL: test_aam:
200+
; SLM: # BB#0:
201+
; SLM-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [3:1.00]
202+
; SLM-NEXT: #APP
203+
; SLM-NEXT: aam
204+
; SLM-NEXT: #NO_APP
205+
; SLM-NEXT: retl # sched: [4:1.00]
206+
;
207+
; SANDY-LABEL: test_aam:
208+
; SANDY: # BB#0:
209+
; SANDY-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:0.50]
210+
; SANDY-NEXT: #APP
211+
; SANDY-NEXT: aam
212+
; SANDY-NEXT: #NO_APP
213+
; SANDY-NEXT: retl # sched: [5:1.00]
214+
;
215+
; HASWELL-LABEL: test_aam:
216+
; HASWELL: # BB#0:
217+
; HASWELL-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [1:0.50]
218+
; HASWELL-NEXT: #APP
219+
; HASWELL-NEXT: aam
220+
; HASWELL-NEXT: #NO_APP
221+
; HASWELL-NEXT: retl # sched: [5:0.50]
222+
;
223+
; BROADWELL-LABEL: test_aam:
224+
; BROADWELL: # BB#0:
225+
; BROADWELL-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:0.50]
226+
; BROADWELL-NEXT: #APP
227+
; BROADWELL-NEXT: aam
228+
; BROADWELL-NEXT: #NO_APP
229+
; BROADWELL-NEXT: retl # sched: [6:0.50]
230+
;
231+
; SKYLAKE-LABEL: test_aam:
232+
; SKYLAKE: # BB#0:
233+
; SKYLAKE-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:0.50]
234+
; SKYLAKE-NEXT: #APP
235+
; SKYLAKE-NEXT: aam
236+
; SKYLAKE-NEXT: #NO_APP
237+
; SKYLAKE-NEXT: retl # sched: [6:0.50]
238+
;
239+
; SKX-LABEL: test_aam:
240+
; SKX: # BB#0:
241+
; SKX-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:0.50]
242+
; SKX-NEXT: #APP
243+
; SKX-NEXT: aam
244+
; SKX-NEXT: #NO_APP
245+
; SKX-NEXT: retl # sched: [6:0.50]
246+
;
247+
; BTVER2-LABEL: test_aam:
248+
; BTVER2: # BB#0:
249+
; BTVER2-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:1.00]
250+
; BTVER2-NEXT: #APP
251+
; BTVER2-NEXT: aam
252+
; BTVER2-NEXT: #NO_APP
253+
; BTVER2-NEXT: retl # sched: [4:1.00]
254+
;
255+
; ZNVER1-LABEL: test_aam:
256+
; ZNVER1: # BB#0:
257+
; ZNVER1-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [8:0.50]
258+
; ZNVER1-NEXT: #APP
259+
; ZNVER1-NEXT: aam
260+
; ZNVER1-NEXT: #NO_APP
261+
; ZNVER1-NEXT: retl # sched: [1:0.50]
262+
%1 = tail call i16 asm "aam", "=r,r"(i8 %a0) nounwind
263+
ret i16 %1
264+
}
265+
266+
define i8 @test_aas(i8 %a0) optsize {
267+
; GENERIC-LABEL: test_aas:
268+
; GENERIC: # BB#0:
269+
; GENERIC-NEXT: movb {{[0-9]+}}(%esp), %al
270+
; GENERIC-NEXT: #APP
271+
; GENERIC-NEXT: aas
272+
; GENERIC-NEXT: #NO_APP
273+
; GENERIC-NEXT: retl
274+
;
275+
; ATOM-LABEL: test_aas:
276+
; ATOM: # BB#0:
277+
; ATOM-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [1:1.00]
278+
; ATOM-NEXT: #APP
279+
; ATOM-NEXT: aas
280+
; ATOM-NEXT: #NO_APP
281+
; ATOM-NEXT: retl # sched: [79:39.50]
282+
;
283+
; SLM-LABEL: test_aas:
284+
; SLM: # BB#0:
285+
; SLM-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [3:1.00]
286+
; SLM-NEXT: #APP
287+
; SLM-NEXT: aas
288+
; SLM-NEXT: #NO_APP
289+
; SLM-NEXT: retl # sched: [4:1.00]
290+
;
291+
; SANDY-LABEL: test_aas:
292+
; SANDY: # BB#0:
293+
; SANDY-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:0.50]
294+
; SANDY-NEXT: #APP
295+
; SANDY-NEXT: aas
296+
; SANDY-NEXT: #NO_APP
297+
; SANDY-NEXT: retl # sched: [5:1.00]
298+
;
299+
; HASWELL-LABEL: test_aas:
300+
; HASWELL: # BB#0:
301+
; HASWELL-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [1:0.50]
302+
; HASWELL-NEXT: #APP
303+
; HASWELL-NEXT: aas
304+
; HASWELL-NEXT: #NO_APP
305+
; HASWELL-NEXT: retl # sched: [5:0.50]
306+
;
307+
; BROADWELL-LABEL: test_aas:
308+
; BROADWELL: # BB#0:
309+
; BROADWELL-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:0.50]
310+
; BROADWELL-NEXT: #APP
311+
; BROADWELL-NEXT: aas
312+
; BROADWELL-NEXT: #NO_APP
313+
; BROADWELL-NEXT: retl # sched: [6:0.50]
314+
;
315+
; SKYLAKE-LABEL: test_aas:
316+
; SKYLAKE: # BB#0:
317+
; SKYLAKE-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:0.50]
318+
; SKYLAKE-NEXT: #APP
319+
; SKYLAKE-NEXT: aas
320+
; SKYLAKE-NEXT: #NO_APP
321+
; SKYLAKE-NEXT: retl # sched: [6:0.50]
322+
;
323+
; SKX-LABEL: test_aas:
324+
; SKX: # BB#0:
325+
; SKX-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:0.50]
326+
; SKX-NEXT: #APP
327+
; SKX-NEXT: aas
328+
; SKX-NEXT: #NO_APP
329+
; SKX-NEXT: retl # sched: [6:0.50]
330+
;
331+
; BTVER2-LABEL: test_aas:
332+
; BTVER2: # BB#0:
333+
; BTVER2-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [5:1.00]
334+
; BTVER2-NEXT: #APP
335+
; BTVER2-NEXT: aas
336+
; BTVER2-NEXT: #NO_APP
337+
; BTVER2-NEXT: retl # sched: [4:1.00]
338+
;
339+
; ZNVER1-LABEL: test_aas:
340+
; ZNVER1: # BB#0:
341+
; ZNVER1-NEXT: movb {{[0-9]+}}(%esp), %al # sched: [8:0.50]
342+
; ZNVER1-NEXT: #APP
343+
; ZNVER1-NEXT: aas
344+
; ZNVER1-NEXT: #NO_APP
345+
; ZNVER1-NEXT: retl # sched: [1:0.50]
346+
%1 = tail call i8 asm "aas", "=r,r"(i8 %a0) nounwind
347+
ret i8 %1
348+
}

0 commit comments

Comments
 (0)