Don't performance load/op/store transformation if op produces a floating point
or vector result. X86 does not have load/mod/store variants of those
instructions.
llvm-svn: 29957
diff --git a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
index 9697f25..6605473 100644
--- a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
+++ b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
@@ -312,7 +312,9 @@
SDOperand N1 = I->getOperand(1);
SDOperand N2 = I->getOperand(2);
- if (!N1.hasOneUse())
+ if (MVT::isFloatingPoint(N1.getValueType()) &&
+ MVT::isVector(N1.getValueType()) &&
+ !N1.hasOneUse())
continue;
bool RModW = false;