Skip to content

Commit e05dc45

Browse files
committedMay 31, 2016
[X86][SSE] Add load-folding patterns for (V)CVTDQ2PD (PR27291)
Added patterns for (V)CVTDQ2PD -> 2f64 loading from a 64-bit source. llvm-svn: 271269
1 parent c893070 commit e05dc45

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed
 

‎llvm/lib/Target/X86/X86InstrSSE.td

+4
Original file line numberDiff line numberDiff line change
@@ -2199,6 +2199,8 @@ let Predicates = [HasAVX] in {
21992199
(VCVTDQ2PDrr VR128:$src)>;
22002200
def : Pat<(v2f64 (X86cvtdq2pd (bc_v4i32 (loadv2i64 addr:$src)))),
22012201
(VCVTDQ2PDrm addr:$src)>;
2202+
def : Pat<(v2f64 (X86cvtdq2pd (bc_v4i32 (v2i64 (scalar_to_vector (loadi64 addr:$src)))))),
2203+
(VCVTDQ2PDrm addr:$src)>;
22022204

22032205
def : Pat<(v4f64 (sint_to_fp (v4i32 VR128:$src))),
22042206
(VCVTDQ2PDYrr VR128:$src)>;
@@ -2212,6 +2214,8 @@ let Predicates = [HasSSE2] in {
22122214
(CVTDQ2PDrr VR128:$src)>;
22132215
def : Pat<(v2f64 (X86cvtdq2pd (bc_v4i32 (loadv2i64 addr:$src)))),
22142216
(CVTDQ2PDrm addr:$src)>;
2217+
def : Pat<(v2f64 (X86cvtdq2pd (bc_v4i32 (v2i64 (scalar_to_vector (loadi64 addr:$src)))))),
2218+
(CVTDQ2PDrm addr:$src)>;
22152219
} // Predicates = [HasSSE2]
22162220

22172221
// Convert packed double to packed single

‎llvm/test/CodeGen/X86/vec_int_to_fp.ll

+2-4
Original file line numberDiff line numberDiff line change
@@ -1836,14 +1836,12 @@ define <2 x double> @sitofp_load_2i64_to_2f64(<2 x i64> *%a) {
18361836
define <2 x double> @sitofp_load_2i32_to_2f64(<2 x i32> *%a) {
18371837
; SSE-LABEL: sitofp_load_2i32_to_2f64:
18381838
; SSE: # BB#0:
1839-
; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
1840-
; SSE-NEXT: cvtdq2pd %xmm0, %xmm0
1839+
; SSE-NEXT: cvtdq2pd (%rdi), %xmm0
18411840
; SSE-NEXT: retq
18421841
;
18431842
; AVX-LABEL: sitofp_load_2i32_to_2f64:
18441843
; AVX: # BB#0:
1845-
; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
1846-
; AVX-NEXT: vcvtdq2pd %xmm0, %xmm0
1844+
; AVX-NEXT: vcvtdq2pd (%rdi), %xmm0
18471845
; AVX-NEXT: retq
18481846
%ld = load <2 x i32>, <2 x i32> *%a
18491847
%cvt = sitofp <2 x i32> %ld to <2 x double>

0 commit comments

Comments
 (0)
Please sign in to comment.