aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/X86/X86ISelLowering.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2006-03-22 19:16:21 +0000
committerEvan Cheng <evan.cheng@apple.com>2006-03-22 19:16:21 +0000
commit1bffadd7fb1edc89c4d171075dd1de954955ea70 (patch)
tree077b7856a5da4e0815a46acd93df7245a697a946 /lib/Target/X86/X86ISelLowering.cpp
parent6bf9791d5196bf5a66309d3b7c27b87a3d60ab72 (diff)
- Supposely movlhps is faster / better than unpcklpd.
- Don't forget pshufd is only available with sse2. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26956 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86ISelLowering.cpp')
-rw-r--r--lib/Target/X86/X86ISelLowering.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp
index d26d7879a4..bea938a1ee 100644
--- a/lib/Target/X86/X86ISelLowering.cpp
+++ b/lib/Target/X86/X86ISelLowering.cpp
@@ -2242,7 +2242,7 @@ SDOperand X86TargetLowering::LowerOperation(SDOperand Op, SelectionDAG &DAG) {
return DAG.getNode(ISD::VECTOR_SHUFFLE, VT, V1,
DAG.getNode(ISD::UNDEF, V1.getValueType()),
PermMask);
- } else if (X86::isPSHUFDMask(PermMask.Val)) {
+ } else if (Subtarget->hasSSE2() && X86::isPSHUFDMask(PermMask.Val)) {
if (V2.getOpcode() == ISD::UNDEF)
// Leave the VECTOR_SHUFFLE alone. It matches PSHUFD.
return SDOperand();
@@ -2375,5 +2375,6 @@ bool X86TargetLowering::isLegalAddressImmediate(GlobalValue *GV) const {
/// By default, if a target supports the VECTOR_SHUFFLE node, all mask values
/// are assumed to be legal.
bool X86TargetLowering::isShuffleMaskLegal(SDOperand Mask) const {
- return (X86::isSplatMask(Mask.Val) || X86::isPSHUFDMask(Mask.Val));
+ return (X86::isSplatMask(Mask.Val) ||
+ (Subtarget->hasSSE2() && X86::isPSHUFDMask(Mask.Val)));
}