File tree 2 files changed +6
-4
lines changed
2 files changed +6
-4
lines changed Original file line number Diff line number Diff line change @@ -2199,6 +2199,8 @@ let Predicates = [HasAVX] in {
2199
2199
(VCVTDQ2PDrr VR128:$src)>;
2200
2200
def : Pat<(v2f64 (X86cvtdq2pd (bc_v4i32 (loadv2i64 addr:$src)))),
2201
2201
(VCVTDQ2PDrm addr:$src)>;
2202
+ def : Pat<(v2f64 (X86cvtdq2pd (bc_v4i32 (v2i64 (scalar_to_vector (loadi64 addr:$src)))))),
2203
+ (VCVTDQ2PDrm addr:$src)>;
2202
2204
2203
2205
def : Pat<(v4f64 (sint_to_fp (v4i32 VR128:$src))),
2204
2206
(VCVTDQ2PDYrr VR128:$src)>;
@@ -2212,6 +2214,8 @@ let Predicates = [HasSSE2] in {
2212
2214
(CVTDQ2PDrr VR128:$src)>;
2213
2215
def : Pat<(v2f64 (X86cvtdq2pd (bc_v4i32 (loadv2i64 addr:$src)))),
2214
2216
(CVTDQ2PDrm addr:$src)>;
2217
+ def : Pat<(v2f64 (X86cvtdq2pd (bc_v4i32 (v2i64 (scalar_to_vector (loadi64 addr:$src)))))),
2218
+ (CVTDQ2PDrm addr:$src)>;
2215
2219
} // Predicates = [HasSSE2]
2216
2220
2217
2221
// Convert packed double to packed single
Original file line number Diff line number Diff line change @@ -1836,14 +1836,12 @@ define <2 x double> @sitofp_load_2i64_to_2f64(<2 x i64> *%a) {
1836
1836
define <2 x double > @sitofp_load_2i32_to_2f64 (<2 x i32 > *%a ) {
1837
1837
; SSE-LABEL: sitofp_load_2i32_to_2f64:
1838
1838
; SSE: # BB#0:
1839
- ; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
1840
- ; SSE-NEXT: cvtdq2pd %xmm0, %xmm0
1839
+ ; SSE-NEXT: cvtdq2pd (%rdi), %xmm0
1841
1840
; SSE-NEXT: retq
1842
1841
;
1843
1842
; AVX-LABEL: sitofp_load_2i32_to_2f64:
1844
1843
; AVX: # BB#0:
1845
- ; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
1846
- ; AVX-NEXT: vcvtdq2pd %xmm0, %xmm0
1844
+ ; AVX-NEXT: vcvtdq2pd (%rdi), %xmm0
1847
1845
; AVX-NEXT: retq
1848
1846
%ld = load <2 x i32 >, <2 x i32 > *%a
1849
1847
%cvt = sitofp <2 x i32 > %ld to <2 x double >
You can’t perform that action at this time.
0 commit comments