Skip to content

Commit 32d976b

Browse files
committed
[NFC][X86] Fix check prefixes and autogenerate fold-pcmpeqd-2.ll test
Being affected by (sub %x, c) -> (add %x, (sub 0, c)) patch in an uncertain way. llvm-svn: 361483
1 parent 28afd8d commit 32d976b

File tree

1 file changed

+168
-8
lines changed

1 file changed

+168
-8
lines changed

llvm/test/CodeGen/X86/fold-pcmpeqd-2.ll

Lines changed: 168 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,184 @@
1-
; RUN: llc < %s -mtriple=i386-apple-darwin -mcpu=yonah -regalloc=basic | FileCheck %s
2-
; RUN: llc < %s -mtriple=x86_64-apple-darwin -regalloc=basic | FileCheck %s
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc < %s -mtriple=i386-apple-darwin -mcpu=yonah -regalloc=basic | FileCheck %s --check-prefixes=ALL,X32
3+
; RUN: llc < %s -mtriple=x86_64-apple-darwin -regalloc=basic | FileCheck %s --check-prefixes=ALL,X64
34

45
; This testcase should need to spill the -1 value on both x86-32 and x86-64,
56
; so it shouldn't use pcmpeqd to materialize an all-ones vector; it
67
; should use a constant-pool load instead.
78
;
89
; RAGreedy defeats the test by splitting live ranges.
910

10-
; Constant pool all-ones vector:
11-
; CHECK: .space 16,255
12-
13-
; No pcmpeqd instructions, everybody uses the constant pool.
14-
; CHECK-LABEL: program_1:
15-
; CHECK-NOT: pcmpeqd
11+
; There should be no pcmpeqd instructions, everybody should the constant pool.
1612

1713
%struct.__ImageExecInfo = type <{ <4 x i32>, <4 x float>, <2 x i64>, i8*, i8*, i8*, i32, i32, i32, i32, i32 }>
1814
%struct._cl_image_format_t = type <{ i32, i32, i32 }>
1915
%struct._image2d_t = type <{ i8*, %struct._cl_image_format_t, i32, i32, i32, i32, i32, i32 }>
2016

2117
define void @program_1(%struct._image2d_t* %dest, %struct._image2d_t* %t0, <4 x float> %p0, <4 x float> %p1, <4 x float> %p4, <4 x float> %p5, <4 x float> %p6) nounwind {
18+
; X32-LABEL: program_1:
19+
; X32: ## %bb.0: ## %entry
20+
; X32-NEXT: cmpl $0, 0
21+
; X32-NEXT: jle LBB0_2
22+
; X32-NEXT: ## %bb.1: ## %forcond
23+
; X32-NEXT: cmpl $0, 0
24+
; X32-NEXT: jg LBB0_3
25+
; X32-NEXT: LBB0_2: ## %ifthen
26+
; X32-NEXT: retl
27+
; X32-NEXT: LBB0_3: ## %forbody
28+
; X32-NEXT: pushl %esi
29+
; X32-NEXT: subl $88, %esp
30+
; X32-NEXT: movaps {{.*#+}} xmm1 = [1.28E+2,1.28E+2,1.28E+2,1.28E+2]
31+
; X32-NEXT: minps LCPI0_3, %xmm1
32+
; X32-NEXT: cvttps2dq %xmm1, %xmm0
33+
; X32-NEXT: cvtdq2ps %xmm0, %xmm0
34+
; X32-NEXT: subps %xmm0, %xmm1
35+
; X32-NEXT: movaps %xmm1, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
36+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
37+
; X32-NEXT: mulps LCPI0_3, %xmm0
38+
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
39+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
40+
; X32-NEXT: addps LCPI0_1, %xmm0
41+
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
42+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
43+
; X32-NEXT: mulps %xmm1, %xmm0
44+
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
45+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
46+
; X32-NEXT: addps LCPI0_2, %xmm0
47+
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
48+
; X32-NEXT: movdqa {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
49+
; X32-NEXT: psubd LCPI0_4, %xmm0
50+
; X32-NEXT: movdqa %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
51+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
52+
; X32-NEXT: mulps LCPI0_3, %xmm0
53+
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
54+
; X32-NEXT: xorps %xmm0, %xmm0
55+
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
56+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
57+
; X32-NEXT: mulps %xmm0, %xmm0
58+
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
59+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
60+
; X32-NEXT: mulps LCPI0_3, %xmm0
61+
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
62+
; X32-NEXT: xorps %xmm0, %xmm0
63+
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
64+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
65+
; X32-NEXT: cmpunordps %xmm0, %xmm0
66+
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
67+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
68+
; X32-NEXT: minps LCPI0_3, %xmm0
69+
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
70+
; X32-NEXT: xorps %xmm0, %xmm0
71+
; X32-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
72+
; X32-NEXT: movl $0, (%esp)
73+
; X32-NEXT: xorl %esi, %esi
74+
; X32-NEXT: xorps %xmm3, %xmm3
75+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
76+
; X32-NEXT: movdqa {{[-0-9]+}}(%e{{[sb]}}p), %xmm1 ## 16-byte Reload
77+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm2 ## 16-byte Reload
78+
; X32-NEXT: calll *%esi
79+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
80+
; X32-NEXT: minps LCPI0_3, %xmm0
81+
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
82+
; X32-NEXT: pxor %xmm1, %xmm1
83+
; X32-NEXT: psubd {{[-0-9]+}}(%e{{[sb]}}p), %xmm1 ## 16-byte Folded Reload
84+
; X32-NEXT: movdqa {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
85+
; X32-NEXT: psubd LCPI0_4, %xmm0
86+
; X32-NEXT: movdqa %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
87+
; X32-NEXT: movdqa {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
88+
; X32-NEXT: por %xmm1, %xmm0
89+
; X32-NEXT: movdqa %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
90+
; X32-NEXT: pxor %xmm0, %xmm0
91+
; X32-NEXT: movdqa %xmm0, {{[0-9]+}}(%esp)
92+
; X32-NEXT: movl $0, (%esp)
93+
; X32-NEXT: xorps %xmm3, %xmm3
94+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
95+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm1 ## 16-byte Reload
96+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm2 ## 16-byte Reload
97+
; X32-NEXT: calll *%esi
98+
; X32-NEXT: ud2
99+
;
100+
; X64-LABEL: program_1:
101+
; X64: ## %bb.0: ## %entry
102+
; X64-NEXT: cmpl $0, 0
103+
; X64-NEXT: jle LBB0_2
104+
; X64-NEXT: ## %bb.1: ## %forcond
105+
; X64-NEXT: cmpl $0, 0
106+
; X64-NEXT: jg LBB0_3
107+
; X64-NEXT: LBB0_2: ## %ifthen
108+
; X64-NEXT: retq
109+
; X64-NEXT: LBB0_3: ## %forbody
110+
; X64-NEXT: pushq %rbx
111+
; X64-NEXT: subq $64, %rsp
112+
; X64-NEXT: xorps %xmm0, %xmm0
113+
; X64-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) ## 16-byte Spill
114+
; X64-NEXT: movaps {{.*#+}} xmm1 = [1.28E+2,1.28E+2,1.28E+2,1.28E+2]
115+
; X64-NEXT: minps {{.*}}(%rip), %xmm1
116+
; X64-NEXT: cvttps2dq %xmm1, %xmm0
117+
; X64-NEXT: cvtdq2ps %xmm0, %xmm0
118+
; X64-NEXT: subps %xmm0, %xmm1
119+
; X64-NEXT: movaps %xmm1, (%rsp) ## 16-byte Spill
120+
; X64-NEXT: movaps (%rsp), %xmm0 ## 16-byte Reload
121+
; X64-NEXT: mulps {{.*}}(%rip), %xmm0
122+
; X64-NEXT: movaps %xmm0, (%rsp) ## 16-byte Spill
123+
; X64-NEXT: movaps (%rsp), %xmm0 ## 16-byte Reload
124+
; X64-NEXT: addps {{.*}}(%rip), %xmm0
125+
; X64-NEXT: movaps %xmm0, (%rsp) ## 16-byte Spill
126+
; X64-NEXT: movaps (%rsp), %xmm0 ## 16-byte Reload
127+
; X64-NEXT: mulps %xmm1, %xmm0
128+
; X64-NEXT: movaps %xmm0, (%rsp) ## 16-byte Spill
129+
; X64-NEXT: movaps (%rsp), %xmm0 ## 16-byte Reload
130+
; X64-NEXT: addps {{.*}}(%rip), %xmm0
131+
; X64-NEXT: movaps %xmm0, (%rsp) ## 16-byte Spill
132+
; X64-NEXT: movdqa (%rsp), %xmm0 ## 16-byte Reload
133+
; X64-NEXT: psubd {{.*}}(%rip), %xmm0
134+
; X64-NEXT: movdqa %xmm0, (%rsp) ## 16-byte Spill
135+
; X64-NEXT: movaps (%rsp), %xmm0 ## 16-byte Reload
136+
; X64-NEXT: mulps {{.*}}(%rip), %xmm0
137+
; X64-NEXT: movaps %xmm0, (%rsp) ## 16-byte Spill
138+
; X64-NEXT: xorps %xmm0, %xmm0
139+
; X64-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) ## 16-byte Spill
140+
; X64-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 16-byte Reload
141+
; X64-NEXT: mulps %xmm0, %xmm0
142+
; X64-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) ## 16-byte Spill
143+
; X64-NEXT: movaps (%rsp), %xmm0 ## 16-byte Reload
144+
; X64-NEXT: mulps {{.*}}(%rip), %xmm0
145+
; X64-NEXT: movaps %xmm0, (%rsp) ## 16-byte Spill
146+
; X64-NEXT: xorps %xmm0, %xmm0
147+
; X64-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) ## 16-byte Spill
148+
; X64-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 16-byte Reload
149+
; X64-NEXT: cmpunordps %xmm0, %xmm0
150+
; X64-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) ## 16-byte Spill
151+
; X64-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 16-byte Reload
152+
; X64-NEXT: minps {{.*}}(%rip), %xmm0
153+
; X64-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) ## 16-byte Spill
154+
; X64-NEXT: xorl %ebx, %ebx
155+
; X64-NEXT: xorps %xmm3, %xmm3
156+
; X64-NEXT: xorps %xmm4, %xmm4
157+
; X64-NEXT: movaps (%rsp), %xmm0 ## 16-byte Reload
158+
; X64-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 ## 16-byte Reload
159+
; X64-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 ## 16-byte Reload
160+
; X64-NEXT: xorl %edi, %edi
161+
; X64-NEXT: callq *%rbx
162+
; X64-NEXT: movaps (%rsp), %xmm0 ## 16-byte Reload
163+
; X64-NEXT: minps {{.*}}(%rip), %xmm0
164+
; X64-NEXT: movaps %xmm0, (%rsp) ## 16-byte Spill
165+
; X64-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 16-byte Reload
166+
; X64-NEXT: psubd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 16-byte Folded Reload
167+
; X64-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) ## 16-byte Spill
168+
; X64-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 16-byte Reload
169+
; X64-NEXT: psubd {{.*}}(%rip), %xmm0
170+
; X64-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) ## 16-byte Spill
171+
; X64-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 16-byte Reload
172+
; X64-NEXT: orps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 16-byte Folded Reload
173+
; X64-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) ## 16-byte Spill
174+
; X64-NEXT: xorps %xmm3, %xmm3
175+
; X64-NEXT: xorps %xmm4, %xmm4
176+
; X64-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 16-byte Reload
177+
; X64-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 ## 16-byte Reload
178+
; X64-NEXT: movaps (%rsp), %xmm2 ## 16-byte Reload
179+
; X64-NEXT: xorl %edi, %edi
180+
; X64-NEXT: callq *%rbx
181+
; X64-NEXT: ud2
22182
entry:
23183
%tmp3.i = load i32, i32* null ; <i32> [#uses=1]
24184
%cmp = icmp slt i32 0, %tmp3.i ; <i1> [#uses=1]

0 commit comments

Comments
 (0)