]> granicus.if.org Git - llvm/commitdiff
[X86] Add isel pattern to match VZEXT_MOVL and a v2i64 scalar_to_vector bitcasted...
authorCraig Topper <craig.topper@intel.com>
Thu, 15 Aug 2019 06:46:30 +0000 (06:46 +0000)
committerCraig Topper <craig.topper@intel.com>
Thu, 15 Aug 2019 06:46:30 +0000 (06:46 +0000)
We already had the pattern for just the scalar to vector and bitcast,
but not the case where we wanted zeroes in the high half of the xmm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@368972 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrMMX.td
test/CodeGen/X86/mmx-cvt.ll

index 82cad92c53a3c2e8fc155dab227605d52e9890b1..54d4757dbd212e9d464f4763885f003535f54cd8 100644 (file)
@@ -577,6 +577,10 @@ def : Pat<(x86mmx (MMX_X86movdq2q VR128:$src)),
 def : Pat<(x86mmx (MMX_X86movdq2q (v2i64 (nonvolatile_load addr:$src)))),
           (x86mmx (MMX_MOVQ64rm addr:$src))>;
 
+def : Pat<(v2i64 (X86vzmovl (scalar_to_vector
+                             (i64 (bitconvert (x86mmx VR64:$src)))))),
+          (MMX_MOVQ2DQrr VR64:$src)>;
+
 // Misc.
 let SchedRW = [SchedWriteShuffle.MMX] in {
 let Uses = [EDI], Predicates = [HasMMX, HasSSE1,Not64BitMode] in
index 6a42490c69fd4f9be8fe925f1ec1bbe854f4536a..5f6a8885b614996a2c63161f5f9627c6a026f945 100644 (file)
@@ -346,8 +346,7 @@ define <4 x float> @cvt_v2i32_v2f32(<1 x i64>*) nounwind {
 ; X64:       # %bb.0:
 ; X64-NEXT:    movq (%rdi), %mm0
 ; X64-NEXT:    paddd %mm0, %mm0
-; X64-NEXT:    movq %mm0, %rax
-; X64-NEXT:    movq %rax, %xmm0
+; X64-NEXT:    movq2dq %mm0, %xmm0
 ; X64-NEXT:    cvtdq2ps %xmm0, %xmm0
 ; X64-NEXT:    retq
   %2 = bitcast <1 x i64>* %0 to x86_mmx*