11; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2- ; RUN: llc < %s -mtriple=i686-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=X32 -SSE
3- ; RUN: llc < %s -mtriple=i686-unknown -mattr=+avx | FileCheck %s --check-prefix=X32 -AVX
2+ ; RUN: llc < %s -mtriple=i686-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=X86 -SSE
3+ ; RUN: llc < %s -mtriple=i686-unknown -mattr=+avx | FileCheck %s --check-prefix=X86 -AVX
44; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=X64-SSE
55; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx | FileCheck %s --check-prefix=X64-AVX
66
77define void @fptrunc_frommem2 (ptr %in , ptr %out ) {
8- ; X32 -SSE-LABEL: fptrunc_frommem2:
9- ; X32 -SSE: # %bb.0: # %entry
10- ; X32 -SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
11- ; X32 -SSE-NEXT: movl {{[0-9]+}}(%esp), %ecx
12- ; X32 -SSE-NEXT: cvtpd2ps (%ecx), %xmm0
13- ; X32 -SSE-NEXT: movlpd %xmm0, (%eax)
14- ; X32 -SSE-NEXT: retl
15- ;
16- ; X32 -AVX-LABEL: fptrunc_frommem2:
17- ; X32 -AVX: # %bb.0: # %entry
18- ; X32 -AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
19- ; X32 -AVX-NEXT: movl {{[0-9]+}}(%esp), %ecx
20- ; X32 -AVX-NEXT: vcvtpd2psx (%ecx), %xmm0
21- ; X32 -AVX-NEXT: vmovlpd %xmm0, (%eax)
22- ; X32 -AVX-NEXT: retl
8+ ; X86 -SSE-LABEL: fptrunc_frommem2:
9+ ; X86 -SSE: # %bb.0: # %entry
10+ ; X86 -SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
11+ ; X86 -SSE-NEXT: movl {{[0-9]+}}(%esp), %ecx
12+ ; X86 -SSE-NEXT: cvtpd2ps (%ecx), %xmm0
13+ ; X86 -SSE-NEXT: movlpd %xmm0, (%eax)
14+ ; X86 -SSE-NEXT: retl
15+ ;
16+ ; X86 -AVX-LABEL: fptrunc_frommem2:
17+ ; X86 -AVX: # %bb.0: # %entry
18+ ; X86 -AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
19+ ; X86 -AVX-NEXT: movl {{[0-9]+}}(%esp), %ecx
20+ ; X86 -AVX-NEXT: vcvtpd2psx (%ecx), %xmm0
21+ ; X86 -AVX-NEXT: vmovlpd %xmm0, (%eax)
22+ ; X86 -AVX-NEXT: retl
2323;
2424; X64-SSE-LABEL: fptrunc_frommem2:
2525; X64-SSE: # %bb.0: # %entry
@@ -40,23 +40,23 @@ entry:
4040}
4141
4242define void @fptrunc_frommem4 (ptr %in , ptr %out ) {
43- ; X32 -SSE-LABEL: fptrunc_frommem4:
44- ; X32 -SSE: # %bb.0: # %entry
45- ; X32 -SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
46- ; X32 -SSE-NEXT: movl {{[0-9]+}}(%esp), %ecx
47- ; X32 -SSE-NEXT: cvtpd2ps 16(%ecx), %xmm0
48- ; X32 -SSE-NEXT: cvtpd2ps (%ecx), %xmm1
49- ; X32 -SSE-NEXT: unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm0[0]
50- ; X32 -SSE-NEXT: movupd %xmm1, (%eax)
51- ; X32 -SSE-NEXT: retl
52- ;
53- ; X32 -AVX-LABEL: fptrunc_frommem4:
54- ; X32 -AVX: # %bb.0: # %entry
55- ; X32 -AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
56- ; X32 -AVX-NEXT: movl {{[0-9]+}}(%esp), %ecx
57- ; X32 -AVX-NEXT: vcvtpd2psy (%ecx), %xmm0
58- ; X32 -AVX-NEXT: vmovupd %xmm0, (%eax)
59- ; X32 -AVX-NEXT: retl
43+ ; X86 -SSE-LABEL: fptrunc_frommem4:
44+ ; X86 -SSE: # %bb.0: # %entry
45+ ; X86 -SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
46+ ; X86 -SSE-NEXT: movl {{[0-9]+}}(%esp), %ecx
47+ ; X86 -SSE-NEXT: cvtpd2ps 16(%ecx), %xmm0
48+ ; X86 -SSE-NEXT: cvtpd2ps (%ecx), %xmm1
49+ ; X86 -SSE-NEXT: unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm0[0]
50+ ; X86 -SSE-NEXT: movupd %xmm1, (%eax)
51+ ; X86 -SSE-NEXT: retl
52+ ;
53+ ; X86 -AVX-LABEL: fptrunc_frommem4:
54+ ; X86 -AVX: # %bb.0: # %entry
55+ ; X86 -AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
56+ ; X86 -AVX-NEXT: movl {{[0-9]+}}(%esp), %ecx
57+ ; X86 -AVX-NEXT: vcvtpd2psy (%ecx), %xmm0
58+ ; X86 -AVX-NEXT: vmovupd %xmm0, (%eax)
59+ ; X86 -AVX-NEXT: retl
6060;
6161; X64-SSE-LABEL: fptrunc_frommem4:
6262; X64-SSE: # %bb.0: # %entry
@@ -79,29 +79,29 @@ entry:
7979}
8080
8181define void @fptrunc_frommem8 (ptr %in , ptr %out ) {
82- ; X32 -SSE-LABEL: fptrunc_frommem8:
83- ; X32 -SSE: # %bb.0: # %entry
84- ; X32 -SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
85- ; X32 -SSE-NEXT: movl {{[0-9]+}}(%esp), %ecx
86- ; X32 -SSE-NEXT: cvtpd2ps 16(%ecx), %xmm0
87- ; X32 -SSE-NEXT: cvtpd2ps (%ecx), %xmm1
88- ; X32 -SSE-NEXT: unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm0[0]
89- ; X32 -SSE-NEXT: cvtpd2ps 48(%ecx), %xmm0
90- ; X32 -SSE-NEXT: cvtpd2ps 32(%ecx), %xmm2
91- ; X32 -SSE-NEXT: unpcklpd {{.*#+}} xmm2 = xmm2[0],xmm0[0]
92- ; X32 -SSE-NEXT: movupd %xmm2, 16(%eax)
93- ; X32 -SSE-NEXT: movupd %xmm1, (%eax)
94- ; X32 -SSE-NEXT: retl
95- ;
96- ; X32 -AVX-LABEL: fptrunc_frommem8:
97- ; X32 -AVX: # %bb.0: # %entry
98- ; X32 -AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
99- ; X32 -AVX-NEXT: movl {{[0-9]+}}(%esp), %ecx
100- ; X32 -AVX-NEXT: vcvtpd2psy (%ecx), %xmm0
101- ; X32 -AVX-NEXT: vcvtpd2psy 32(%ecx), %xmm1
102- ; X32 -AVX-NEXT: vmovupd %xmm1, 16(%eax)
103- ; X32 -AVX-NEXT: vmovupd %xmm0, (%eax)
104- ; X32 -AVX-NEXT: retl
82+ ; X86 -SSE-LABEL: fptrunc_frommem8:
83+ ; X86 -SSE: # %bb.0: # %entry
84+ ; X86 -SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
85+ ; X86 -SSE-NEXT: movl {{[0-9]+}}(%esp), %ecx
86+ ; X86 -SSE-NEXT: cvtpd2ps 16(%ecx), %xmm0
87+ ; X86 -SSE-NEXT: cvtpd2ps (%ecx), %xmm1
88+ ; X86 -SSE-NEXT: unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm0[0]
89+ ; X86 -SSE-NEXT: cvtpd2ps 48(%ecx), %xmm0
90+ ; X86 -SSE-NEXT: cvtpd2ps 32(%ecx), %xmm2
91+ ; X86 -SSE-NEXT: unpcklpd {{.*#+}} xmm2 = xmm2[0],xmm0[0]
92+ ; X86 -SSE-NEXT: movupd %xmm2, 16(%eax)
93+ ; X86 -SSE-NEXT: movupd %xmm1, (%eax)
94+ ; X86 -SSE-NEXT: retl
95+ ;
96+ ; X86 -AVX-LABEL: fptrunc_frommem8:
97+ ; X86 -AVX: # %bb.0: # %entry
98+ ; X86 -AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
99+ ; X86 -AVX-NEXT: movl {{[0-9]+}}(%esp), %ecx
100+ ; X86 -AVX-NEXT: vcvtpd2psy (%ecx), %xmm0
101+ ; X86 -AVX-NEXT: vcvtpd2psy 32(%ecx), %xmm1
102+ ; X86 -AVX-NEXT: vmovupd %xmm1, 16(%eax)
103+ ; X86 -AVX-NEXT: vmovupd %xmm0, (%eax)
104+ ; X86 -AVX-NEXT: retl
105105;
106106; X64-SSE-LABEL: fptrunc_frommem8:
107107; X64-SSE: # %bb.0: # %entry
@@ -130,17 +130,17 @@ entry:
130130}
131131
132132define <4 x float > @fptrunc_frommem2_zext (ptr %ld ) {
133- ; X32 -SSE-LABEL: fptrunc_frommem2_zext:
134- ; X32 -SSE: # %bb.0:
135- ; X32 -SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
136- ; X32 -SSE-NEXT: cvtpd2ps (%eax), %xmm0
137- ; X32 -SSE-NEXT: retl
138- ;
139- ; X32 -AVX-LABEL: fptrunc_frommem2_zext:
140- ; X32 -AVX: # %bb.0:
141- ; X32 -AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
142- ; X32 -AVX-NEXT: vcvtpd2psx (%eax), %xmm0
143- ; X32 -AVX-NEXT: retl
133+ ; X86 -SSE-LABEL: fptrunc_frommem2_zext:
134+ ; X86 -SSE: # %bb.0:
135+ ; X86 -SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
136+ ; X86 -SSE-NEXT: cvtpd2ps (%eax), %xmm0
137+ ; X86 -SSE-NEXT: retl
138+ ;
139+ ; X86 -AVX-LABEL: fptrunc_frommem2_zext:
140+ ; X86 -AVX: # %bb.0:
141+ ; X86 -AVX-NEXT: movl {{[0-9]+}}(%esp), %eax
142+ ; X86 -AVX-NEXT: vcvtpd2psx (%eax), %xmm0
143+ ; X86 -AVX-NEXT: retl
144144;
145145; X64-SSE-LABEL: fptrunc_frommem2_zext:
146146; X64-SSE: # %bb.0:
@@ -158,15 +158,15 @@ define <4 x float> @fptrunc_frommem2_zext(ptr %ld) {
158158}
159159
160160define <4 x float > @fptrunc_fromreg2_zext (<2 x double > %arg ) {
161- ; X32 -SSE-LABEL: fptrunc_fromreg2_zext:
162- ; X32 -SSE: # %bb.0:
163- ; X32 -SSE-NEXT: cvtpd2ps %xmm0, %xmm0
164- ; X32 -SSE-NEXT: retl
161+ ; X86 -SSE-LABEL: fptrunc_fromreg2_zext:
162+ ; X86 -SSE: # %bb.0:
163+ ; X86 -SSE-NEXT: cvtpd2ps %xmm0, %xmm0
164+ ; X86 -SSE-NEXT: retl
165165;
166- ; X32 -AVX-LABEL: fptrunc_fromreg2_zext:
167- ; X32 -AVX: # %bb.0:
168- ; X32 -AVX-NEXT: vcvtpd2ps %xmm0, %xmm0
169- ; X32 -AVX-NEXT: retl
166+ ; X86 -AVX-LABEL: fptrunc_fromreg2_zext:
167+ ; X86 -AVX: # %bb.0:
168+ ; X86 -AVX-NEXT: vcvtpd2ps %xmm0, %xmm0
169+ ; X86 -AVX-NEXT: retl
170170;
171171; X64-SSE-LABEL: fptrunc_fromreg2_zext:
172172; X64-SSE: # %bb.0:
@@ -184,17 +184,17 @@ define <4 x float> @fptrunc_fromreg2_zext(<2 x double> %arg) {
184184
185185; FIXME: For exact truncations we should be able to fold this.
186186define <4 x float > @fptrunc_fromconst () {
187- ; X32 -SSE-LABEL: fptrunc_fromconst:
188- ; X32 -SSE: # %bb.0: # %entry
189- ; X32 -SSE-NEXT: cvtpd2ps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1
190- ; X32 -SSE-NEXT: cvtpd2ps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
191- ; X32 -SSE-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]
192- ; X32 -SSE-NEXT: retl
193- ;
194- ; X32 -AVX-LABEL: fptrunc_fromconst:
195- ; X32 -AVX: # %bb.0: # %entry
196- ; X32 -AVX-NEXT: vcvtpd2psy {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
197- ; X32 -AVX-NEXT: retl
187+ ; X86 -SSE-LABEL: fptrunc_fromconst:
188+ ; X86 -SSE: # %bb.0: # %entry
189+ ; X86 -SSE-NEXT: cvtpd2ps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm1
190+ ; X86 -SSE-NEXT: cvtpd2ps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
191+ ; X86 -SSE-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]
192+ ; X86 -SSE-NEXT: retl
193+ ;
194+ ; X86 -AVX-LABEL: fptrunc_fromconst:
195+ ; X86 -AVX: # %bb.0: # %entry
196+ ; X86 -AVX-NEXT: vcvtpd2psy {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
197+ ; X86 -AVX-NEXT: retl
198198;
199199; X64-SSE-LABEL: fptrunc_fromconst:
200200; X64-SSE: # %bb.0: # %entry
0 commit comments