92 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 62; RUN: opt -passes=slp-vectorizer -S -slp-threshold=-99999 -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s3 4define i32 @test() {5; CHECK-LABEL: define i32 @test() {6; CHECK-NEXT: [[BB:.*]]:7; CHECK-NEXT: br label %[[BB1:.*]]8; CHECK: [[BB1]]:9; CHECK-NEXT: [[TMP0:%.*]] = phi <4 x i32> [ [[TMP16:%.*]], %[[BB24:.*]] ], [ <i32 poison, i32 poison, i32 0, i32 0>, %[[BB]] ]10; CHECK-NEXT: [[TMP1:%.*]] = phi <4 x i32> [ [[TMP13:%.*]], %[[BB24]] ], [ <i32 poison, i32 poison, i32 0, i32 0>, %[[BB]] ]11; CHECK-NEXT: br i1 false, label %[[BB4:.*]], label %[[BB11:.*]]12; CHECK: [[BB4]]:13; CHECK-NEXT: [[TMP2:%.*]] = phi <2 x double> [ zeroinitializer, %[[BB1]] ]14; CHECK-NEXT: [[TMP3:%.*]] = phi <4 x i32> [ [[TMP0]], %[[BB1]] ]15; CHECK-NEXT: br label %[[BB19:.*]]16; CHECK: [[BB11]]:17; CHECK-NEXT: br i1 false, label %[[BB12:.*]], label %[[BB16:.*]]18; CHECK: [[BB12]]:19; CHECK-NEXT: [[TMP4:%.*]] = or <4 x i32> [[TMP1]], <i32 poison, i32 poison, i32 0, i32 0>20; CHECK-NEXT: br label %[[BB13:.*]]21; CHECK: [[BB13]]:22; CHECK-NEXT: [[TMP5:%.*]] = phi <4 x i32> [ [[TMP4]], %[[BB12]] ]23; CHECK-NEXT: br label %[[BB16]]24; CHECK: [[BB16]]:25; CHECK-NEXT: [[TMP6:%.*]] = phi <4 x i32> [ <i32 poison, i32 poison, i32 0, i32 0>, %[[BB11]] ], [ [[TMP5]], %[[BB13]] ]26; CHECK-NEXT: br label %[[BB19]]27; CHECK: [[BB19]]:28; CHECK-NEXT: [[PHI22:%.*]] = phi double [ 0.000000e+00, %[[BB4]] ], [ 0.000000e+00, %[[BB16]] ]29; CHECK-NEXT: [[TMP7:%.*]] = phi <4 x i32> [ <i32 poison, i32 poison, i32 0, i32 0>, %[[BB4]] ], [ [[TMP6]], %[[BB16]] ]30; CHECK-NEXT: [[TMP8:%.*]] = or <4 x i32> [[TMP7]], <i32 poison, i32 poison, i32 0, i32 0>31; CHECK-NEXT: br label %[[BB24]]32; CHECK: [[BB24]]:33; CHECK-NEXT: [[TMP9:%.*]] = lshr <4 x i32> [[TMP8]], <i32 poison, i32 poison, i32 0, i32 0>34; CHECK-NEXT: [[TMP10:%.*]] = and <4 x i32> [[TMP9]], <i32 poison, i32 poison, i32 -1, i32 0>35; CHECK-NEXT: [[TMP11:%.*]] = shufflevector <4 x i32> [[TMP0]], <4 x i32> <i32 poison, i32 poison, i32 0, i32 poison>, <4 x i32> <i32 0, i32 1, i32 6, i32 3>36; CHECK-NEXT: [[TMP12:%.*]] = shufflevector <4 x i32> [[TMP10]], <4 x i32> <i32 poison, i32 poison, i32 0, i32 poison>, <4 x i32> <i32 0, i32 1, i32 6, i32 3>37; CHECK-NEXT: [[TMP13]] = lshr <4 x i32> [[TMP11]], [[TMP12]]38; CHECK-NEXT: [[TMP14:%.*]] = lshr <4 x i32> [[TMP11]], [[TMP10]]39; CHECK-NEXT: [[TMP15:%.*]] = or <4 x i32> [[TMP11]], [[TMP10]]40; CHECK-NEXT: [[TMP16]] = shufflevector <4 x i32> [[TMP14]], <4 x i32> [[TMP15]], <4 x i32> <i32 poison, i32 poison, i32 6, i32 3>41; CHECK-NEXT: br label %[[BB1]]42;43bb:44 br label %bb145 46bb1:47 %phi = phi i32 [ %lshr25, %bb24 ], [ 0, %bb ]48 %phi2 = phi i32 [ %or26, %bb24 ], [ 0, %bb ]49 %phi3 = phi i32 [ 0, %bb24 ], [ 0, %bb ]50 br i1 false, label %bb4, label %bb1151 52bb4:53 %phi6 = phi i32 [ poison, %bb1 ]54 %phi7 = phi i32 [ poison, %bb1 ]55 %phi9 = phi i32 [ %phi2, %bb1 ]56 %phi10 = phi i32 [ %phi, %bb1 ]57 %0 = phi <2 x double> [ zeroinitializer, %bb1 ]58 br label %bb1959 60bb11:61 br i1 false, label %bb12, label %bb1662 63bb12:64 %or = or i32 0, %phi365 br label %bb1366 67bb13:68 %phi14 = phi i32 [ %phi, %bb12 ]69 %phi15 = phi i32 [ %or, %bb12 ]70 br label %bb1671 72bb16:73 %phi17 = phi i32 [ 0, %bb11 ], [ %phi14, %bb13 ]74 %phi18 = phi i32 [ 0, %bb11 ], [ %phi15, %bb13 ]75 br label %bb1976 77bb19:78 %phi20 = phi i32 [ 0, %bb4 ], [ %phi17, %bb16 ]79 %phi21 = phi i32 [ 0, %bb4 ], [ %phi18, %bb16 ]80 %phi22 = phi double [ 0.000000e+00, %bb4 ], [ 0.000000e+00, %bb16 ]81 %or23 = or i32 %phi21, 082 br label %bb2483 84bb24:85 %lshr = lshr i32 %phi20, 086 %and = and i32 %lshr, 087 %lshr25 = lshr i32 %phi, %and88 %or26 = or i32 0, %or2389 br label %bb190}91 92