Changes in directory llvm/lib/Target/X86:
X86InstrSSE.td updated: 1.114 -> 1.115
---
Log message:
Use movsd to shuffle in the lowest two elements of a v4f32 / v4i32 vector when
movlps cannot be used (e.g. when load from m64 has multiple uses).
---
Diffs of the changes: (+8 -0)
X86InstrSSE.td | 8 ++++++++
1 files changed, 8 insertions(+)
Index: llvm/lib/Target/X86/X86InstrSSE.td
diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.114
llvm/lib/Target/X86/X86InstrSSE.td:1.115
--- llvm/lib/Target/X86/X86InstrSSE.td:1.114 Tue Apr 25 12:48:41 2006
+++ llvm/lib/Target/X86/X86InstrSSE.td Wed May 3 15:32:03 2006
@@ -2481,6 +2481,14 @@
MOVL_shuffle_mask)),
(v2i64 (MOVLPDrr VR128:$src1, VR128:$src2))>, Requires<[HasSSE2]>;
+// vector_shuffle v1, v2 <4, 5, 2, 3> using MOVLPDrr (movsd)
+def : Pat<(v4f32 (vector_shuffle VR128:$src1, VR128:$src2,
+ MOVLP_shuffle_mask)),
+ (v4f32 (MOVLPDrr VR128:$src1, VR128:$src2))>, Requires<[HasSSE2]>;
+def : Pat<(v4i32 (vector_shuffle VR128:$src1, VR128:$src2,
+ MOVLP_shuffle_mask)),
+ (v4i32 (MOVLPDrr VR128:$src1, VR128:$src2))>, Requires<[HasSSE2]>;
+
// Set lowest element and zero upper elements.
def : Pat<(bc_v2i64 (vector_shuffle immAllZerosV,
(v2f64 (scalar_to_vector (loadf64 addr:$src))),
_______________________________________________
llvm-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits