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 llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits