forked from OSchip/llvm-project
[X86] Fix a place where we created MOVQ2DQ with a DstVT other than v2i64.
The type profile and isel pattern have this type declared as being MVT::v2i64. But isel skips the explicit type check due to the type profile.
This commit is contained in:
parent
efc5857b0b
commit
1ecf39d607
|
@ -30002,10 +30002,14 @@ void X86TargetLowering::ReplaceNodeResults(SDNode *N,
|
|||
}
|
||||
|
||||
if (DstVT.isVector() && SrcVT == MVT::x86mmx) {
|
||||
// FIXME: Use v4f32 for SSE1?
|
||||
assert(Subtarget.hasSSE2() && "Requires SSE2");
|
||||
assert(getTypeAction(*DAG.getContext(), DstVT) == TypeWidenVector &&
|
||||
"Unexpected type action!");
|
||||
EVT WideVT = getTypeToTransformTo(*DAG.getContext(), DstVT);
|
||||
SDValue Res = DAG.getNode(X86ISD::MOVQ2DQ, dl, WideVT, N->getOperand(0));
|
||||
SDValue Res = DAG.getNode(X86ISD::MOVQ2DQ, dl, MVT::v2i64,
|
||||
N->getOperand(0));
|
||||
Res = DAG.getBitcast(WideVT, Res);
|
||||
Results.push_back(Res);
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue