diff options
author | Evan Cheng <evan.cheng@apple.com> | 2006-03-22 19:16:21 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2006-03-22 19:16:21 +0000 |
commit | 1bffadd7fb1edc89c4d171075dd1de954955ea70 (patch) | |
tree | 077b7856a5da4e0815a46acd93df7245a697a946 /lib/Target/X86/X86ISelLowering.cpp | |
parent | 6bf9791d5196bf5a66309d3b7c27b87a3d60ab72 (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.cpp | 5 |
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))); } |