From: Kalle Raiskila Date: Mon, 21 Jun 2010 14:42:19 +0000 (+0000) Subject: Fix the lowering of VECTOR_SHUFFLE on SPU to handle splats. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=91fdee125cc95c322064a6f1ad8fba169f7ecebe;p=oota-llvm.git Fix the lowering of VECTOR_SHUFFLE on SPU to handle splats. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106419 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/CellSPU/SPUISelLowering.cpp b/lib/Target/CellSPU/SPUISelLowering.cpp index 148cb46c97f..ba281cd463c 100644 --- a/lib/Target/CellSPU/SPUISelLowering.cpp +++ b/lib/Target/CellSPU/SPUISelLowering.cpp @@ -1791,7 +1791,7 @@ static SDValue LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) { } else { rotate = false; } - } else if (PrevElt == 0) { + } else if (i == 0) { // First time through, need to keep track of previous element PrevElt = SrcElt; } else { diff --git a/test/CodeGen/CellSPU/shuffles.ll b/test/CodeGen/CellSPU/shuffles.ll index 20ac5705586..85b16506e95 100644 --- a/test/CodeGen/CellSPU/shuffles.ll +++ b/test/CodeGen/CellSPU/shuffles.ll @@ -5,6 +5,11 @@ define <4 x float> @shuffle(<4 x float> %param1, <4 x float> %param2) { ; CHECK: shufb {{\$., \$4, \$3, \$.}} %val= shufflevector <4 x float> %param1, <4 x float> %param2, <4 x i32> ret <4 x float> %val - } +define <4 x float> @splat(float %param1) { + %vec = insertelement <1 x float> undef, float %param1, i32 0 + %val= shufflevector <1 x float> %vec, <1 x float> undef, <4 x i32> + ret <4 x float> %val +} +