Changes in directory llvm/lib/Target/X86:
X86InstrSSE.td updated: 1.182 -> 1.183 --- Log message: Added missing patterns for UNPCKH* and PUNPCKH*. --- Diffs of the changes: (+20 -0) X86InstrSSE.td | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+) Index: llvm/lib/Target/X86/X86InstrSSE.td diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.182 llvm/lib/Target/X86/X86InstrSSE.td:1.183 --- llvm/lib/Target/X86/X86InstrSSE.td:1.182 Wed May 2 18:11:52 2007 +++ llvm/lib/Target/X86/X86InstrSSE.td Thu May 17 13:44:37 2007 @@ -170,6 +170,10 @@ return X86::isUNPCKL_v_undef_Mask(N); }]>; +def UNPCKH_v_undef_shuffle_mask : PatLeaf<(build_vector), [{ + return X86::isUNPCKH_v_undef_Mask(N); +}]>; + def PSHUFD_shuffle_mask : PatLeaf<(build_vector), [{ return X86::isPSHUFDMask(N); }], SHUFFLE_get_shuf_imm>; @@ -2266,6 +2270,22 @@ (PUNPCKLDQrr VR128:$src, VR128:$src)>, Requires<[HasSSE1]>; } +// vector_shuffle v1, <undef>, <2, 2, 3, 3, ...> +let AddedComplexity = 10 in { +def : Pat<(v4f32 (vector_shuffle VR128:$src, (undef), + UNPCKH_v_undef_shuffle_mask)), + (UNPCKHPSrr VR128:$src, VR128:$src)>, Requires<[HasSSE2]>; +def : Pat<(v16i8 (vector_shuffle VR128:$src, (undef), + UNPCKH_v_undef_shuffle_mask)), + (PUNPCKHBWrr VR128:$src, VR128:$src)>, Requires<[HasSSE2]>; +def : Pat<(v8i16 (vector_shuffle VR128:$src, (undef), + UNPCKH_v_undef_shuffle_mask)), + (PUNPCKHWDrr VR128:$src, VR128:$src)>, Requires<[HasSSE2]>; +def : Pat<(v4i32 (vector_shuffle VR128:$src, (undef), + UNPCKH_v_undef_shuffle_mask)), + (PUNPCKHDQrr VR128:$src, VR128:$src)>, Requires<[HasSSE1]>; +} + let AddedComplexity = 15 in { // vector_shuffle v1, v2 <0, 1, 4, 5> using MOVLHPS def : Pat<(v4i32 (vector_shuffle VR128:$src1, VR128:$src2, _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits