[llvm-commits] CVS: llvm/lib/Target/X86/X86InstrSSE.td

Evan Cheng evan.cheng at apple.com
Wed May 3 13:32:15 PDT 2006



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))),






More information about the llvm-commits mailing list