diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 3 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/mmx-cvt.ll | 6 |
2 files changed, 4 insertions, 5 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 7eecd2410fe..567eae52236 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -28965,7 +28965,8 @@ static SDValue combineBitcast(SDNode *N, SelectionDAG &DAG, isNullConstant(N0.getOperand(1))) { SDValue N00 = N0->getOperand(0); if (N00.getValueType().is128BitVector()) - return DAG.getNode(X86ISD::MOVDQ2Q, SDLoc(N00), VT, N00); + return DAG.getNode(X86ISD::MOVDQ2Q, SDLoc(N00), VT, + DAG.getBitcast(MVT::v2i64, N00)); } // Convert a bitcasted integer logic operation that has one bitcasted diff --git a/llvm/test/CodeGen/X86/mmx-cvt.ll b/llvm/test/CodeGen/X86/mmx-cvt.ll index 83cab9610bb..80876a87de7 100644 --- a/llvm/test/CodeGen/X86/mmx-cvt.ll +++ b/llvm/test/CodeGen/X86/mmx-cvt.ll @@ -195,8 +195,7 @@ define void @fptosi_v4f32_v4i32(<4 x float>, <1 x i64>*) nounwind { ; X86-NEXT: andl $-8, %esp ; X86-NEXT: subl $8, %esp ; X86-NEXT: movl 8(%ebp), %eax -; X86-NEXT: cvttps2dq %xmm0, %xmm0 -; X86-NEXT: movdq2q %xmm0, %mm0 +; X86-NEXT: cvttps2pi %xmm0, %mm0 ; X86-NEXT: paddd %mm0, %mm0 ; X86-NEXT: movq %mm0, (%esp) ; X86-NEXT: movl (%esp), %ecx @@ -209,8 +208,7 @@ define void @fptosi_v4f32_v4i32(<4 x float>, <1 x i64>*) nounwind { ; ; X64-LABEL: fptosi_v4f32_v4i32: ; X64: # BB#0: -; X64-NEXT: cvttps2dq %xmm0, %xmm0 -; X64-NEXT: movdq2q %xmm0, %mm0 +; X64-NEXT: cvttps2pi %xmm0, %mm0 ; X64-NEXT: paddd %mm0, %mm0 ; X64-NEXT: movq %mm0, (%rdi) ; X64-NEXT: retq |

