From ccea167db53f52b2cda639cd184655b86dbf3952 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 24 Jan 2011 03:42:46 +0000 Subject: [PATCH] fix a missing shuffle pattern, PR9009. Patch by Artiom Myaskouvskey! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124102 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86InstrSSE.td | 3 +++ test/CodeGen/X86/sse2.ll | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/lib/Target/X86/X86InstrSSE.td b/lib/Target/X86/X86InstrSSE.td index e9bfbeb0b63..77f733626fa 100644 --- a/lib/Target/X86/X86InstrSSE.td +++ b/lib/Target/X86/X86InstrSSE.td @@ -5799,6 +5799,9 @@ def : Pat<(X86Movlps VR128:$src1, def : Pat<(v4f32 (X86Movlps VR128:$src1, VR128:$src2)), (MOVSDrr VR128:$src1, (EXTRACT_SUBREG (v4f32 VR128:$src2), sub_sd))>; +def : Pat<(v4i32 (X86Movlps VR128:$src1, VR128:$src2)), + (MOVSDrr VR128:$src1, (EXTRACT_SUBREG (v4i32 VR128:$src2), sub_sd))>; + // Shuffle with MOVLPD def : Pat<(v2f64 (X86Movlpd VR128:$src1, (load addr:$src2))), (MOVLPDrm VR128:$src1, addr:$src2)>; diff --git a/test/CodeGen/X86/sse2.ll b/test/CodeGen/X86/sse2.ll index a9d718d2df0..8fcfdff2896 100644 --- a/test/CodeGen/X86/sse2.ll +++ b/test/CodeGen/X86/sse2.ll @@ -205,3 +205,12 @@ define <2 x double> @test16(<4 x double> * nocapture %srcA, <2 x double>* nocap ret <2 x double> %i7 } +; PR9009 +define fastcc void @test17() nounwind { +entry: + %0 = insertelement <4 x i32> undef, i32 undef, i32 1 + %1 = shufflevector <4 x i32> , <4 x i32> %0, <4 x i32> + %2 = bitcast <4 x i32> %1 to <4 x float> + store <4 x float> %2, <4 x float> * undef + ret void +} -- 2.11.0