forked from OSchip/llvm-project
If both operands are loads from stores in memory we can't use movlpd/movlps
since one needs to be a register operand. Just use movss instead of forcing an operand into a register. Fixes PR9239 llvm-svn: 126072
This commit is contained in:
parent
a32b8d7801
commit
ac6b001f56
|
|
@ -5472,6 +5472,10 @@ SDValue getMOVLP(SDValue &Op, DebugLoc &dl, SelectionDAG &DAG, bool HasSSE2) {
|
|||
if (MayFoldVectorLoad(V1) && MayFoldIntoStore(Op))
|
||||
CanFoldLoad = true;
|
||||
|
||||
// Both of them can't be memory operations though.
|
||||
if (MayFoldVectorLoad(V1) && MayFoldVectorLoad(V2))
|
||||
CanFoldLoad = false;
|
||||
|
||||
if (CanFoldLoad) {
|
||||
if (HasSSE2 && NumElems == 2)
|
||||
return getTargetShuffleNode(X86ISD::MOVLPD, dl, VT, V1, V2, DAG);
|
||||
|
|
|
|||
Loading…
Reference in New Issue