1
1
; 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
4
4
; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=X64-SSE
5
5
; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx | FileCheck %s --check-prefix=X64-AVX
6
6
7
7
define 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
23
23
;
24
24
; X64-SSE-LABEL: fptrunc_frommem2:
25
25
; X64-SSE: # %bb.0: # %entry
@@ -40,23 +40,23 @@ entry:
40
40
}
41
41
42
42
define 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
60
60
;
61
61
; X64-SSE-LABEL: fptrunc_frommem4:
62
62
; X64-SSE: # %bb.0: # %entry
@@ -79,29 +79,29 @@ entry:
79
79
}
80
80
81
81
define 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
105
105
;
106
106
; X64-SSE-LABEL: fptrunc_frommem8:
107
107
; X64-SSE: # %bb.0: # %entry
@@ -130,17 +130,17 @@ entry:
130
130
}
131
131
132
132
define <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
144
144
;
145
145
; X64-SSE-LABEL: fptrunc_frommem2_zext:
146
146
; X64-SSE: # %bb.0:
@@ -158,15 +158,15 @@ define <4 x float> @fptrunc_frommem2_zext(ptr %ld) {
158
158
}
159
159
160
160
define <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
165
165
;
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
170
170
;
171
171
; X64-SSE-LABEL: fptrunc_fromreg2_zext:
172
172
; X64-SSE: # %bb.0:
@@ -184,17 +184,17 @@ define <4 x float> @fptrunc_fromreg2_zext(<2 x double> %arg) {
184
184
185
185
; FIXME: For exact truncations we should be able to fold this.
186
186
define <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
198
198
;
199
199
; X64-SSE-LABEL: fptrunc_fromconst:
200
200
; X64-SSE: # %bb.0: # %entry
0 commit comments