[llvm-commits] CVS: llvm/lib/Target/X86/README.txt X86ISelLowering.cpp

Evan Cheng evan.cheng at apple.com
Thu Mar 23 22:41:23 PST 2006



Changes in directory llvm/lib/Target/X86:

README.txt updated: 1.71 -> 1.72
X86ISelLowering.cpp updated: 1.126 -> 1.127
---
Log message:

All v2f64 shuffle cases can be handled.

---
Diffs of the changes:  (+8 -1)

 README.txt          |    4 ++++
 X86ISelLowering.cpp |    5 ++++-
 2 files changed, 8 insertions(+), 1 deletion(-)


Index: llvm/lib/Target/X86/README.txt
diff -u llvm/lib/Target/X86/README.txt:1.71 llvm/lib/Target/X86/README.txt:1.72
--- llvm/lib/Target/X86/README.txt:1.71	Thu Mar 23 20:57:03 2006
+++ llvm/lib/Target/X86/README.txt	Fri Mar 24 00:40:32 2006
@@ -655,3 +655,7 @@
 
 Obviously it would have been better for the first mov (or any op) to store
 directly %esp[0] if there are no other uses.
+
+//===---------------------------------------------------------------------===//
+
+Add more vector shuffle special cases using unpckhps and unpcklps.


Index: llvm/lib/Target/X86/X86ISelLowering.cpp
diff -u llvm/lib/Target/X86/X86ISelLowering.cpp:1.126 llvm/lib/Target/X86/X86ISelLowering.cpp:1.127
--- llvm/lib/Target/X86/X86ISelLowering.cpp:1.126	Thu Mar 23 20:58:06 2006
+++ llvm/lib/Target/X86/X86ISelLowering.cpp	Fri Mar 24 00:40:32 2006
@@ -2329,7 +2329,10 @@
         return DAG.getNode(ISD::VECTOR_SHUFFLE, VT, V1,
                            DAG.getNode(ISD::UNDEF, V1.getValueType()),
                            PermMask);
-    } else if (NumElems == 2 || X86::isSHUFPMask(PermMask.Val)) {
+    } else if (NumElems == 2) {
+      // All v2f64 cases are handled.
+      return SDOperand();
+    } else if (X86::isSHUFPMask(PermMask.Val)) {
       SDOperand Elt = PermMask.getOperand(0);
       if (cast<ConstantSDNode>(Elt)->getValue() >= NumElems) {
         // Swap the operands and change mask.






More information about the llvm-commits mailing list