Remove DAG combiner patch to fold vector splats. Instcombiner does it now.
authorBob Wilson <bob.wilson@apple.com>
Fri, 29 Oct 2010 22:03:02 +0000 (22:03 +0000)
committerBob Wilson <bob.wilson@apple.com>
Fri, 29 Oct 2010 22:03:02 +0000 (22:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117720 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/DAGCombiner.cpp
test/CodeGen/ARM/vmla.ll

index d09ae2d20efe3c42ff82b35578feca9a9a920282..602d5bfcaf462f381453c7fcd13959ad6a1a0751 100644 (file)
@@ -6362,11 +6362,6 @@ SDValue DAGCombiner::visitVECTOR_SHUFFLE(SDNode *N) {
         V = ConvInput.getNode();
     }
 
-    // Fold a splat of a splat.
-    ShuffleVectorSDNode *SVV = dyn_cast<ShuffleVectorSDNode>(V);
-    if (SVV && SVV->isSplat())
-      return N0;
-
     if (V->getOpcode() == ISD::BUILD_VECTOR) {
       assert(V->getNumOperands() == NumElts &&
              "BUILD_VECTOR has wrong number of operands");
index 1f76d7377f559c43a9685ef8f6c177f84a5702ab..9c6b210be797698c85550e9b26e33da682731df6 100644 (file)
@@ -213,19 +213,3 @@ entry:
   %4 = add <2 x i64> %arg0_uint64x2_t, %3
   ret <2 x i64> %4
 }
-
-; Redundant vector splats should be removed.  Radar 8597790.
-define void @fold_splat(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) nounwind {
-; CHECK: fold_splat
-; CHECK-NOT: vdup
-; CHECK: vmla.i32
-  %tmp1 = load <4 x i32>* %a, align 16
-  %tmp3 = load <4 x i32>* %b, align 16
-  %tmp5 = load <4 x i32>* %c, align 16
-  %tmp6 = shufflevector <4 x i32> %tmp5, <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
-  %tmp7 = shufflevector <4 x i32> %tmp6, <4 x i32> undef, <4 x i32> zeroinitializer
-  %tmp8 = mul <4 x i32> %tmp3, %tmp7
-  %tmp9 = add <4 x i32> %tmp1, %tmp8
-  store <4 x i32> %tmp9, <4 x i32>* %a, align 16
-  ret void
-}