62 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 32; RUN: opt -S -passes=slp-vectorizer -slp-threshold=-9999 -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s3; RUN: opt -S -passes=slp-vectorizer -slp-threshold=-9999 -mtriple=x86_64-unknown-linux-gnu\4; RUN: -slp-skip-early-profitability-check < %s | FileCheck %s --check-prefixes=FORCED5 6define void @foo() {7; CHECK-LABEL: define void @foo() {8; CHECK-NEXT: bb:9; CHECK-NEXT: br label [[BB1:%.*]]10; CHECK: bb1:11; CHECK-NEXT: [[TMP1:%.*]] = phi <2 x i32> [ zeroinitializer, [[BB:%.*]] ], [ [[TMP6:%.*]], [[BB4:%.*]] ]12; CHECK-NEXT: [[TMP2:%.*]] = shl <2 x i32> [[TMP1]], zeroinitializer13; CHECK-NEXT: [[TMP5:%.*]] = shufflevector <2 x i32> [[TMP2]], <2 x i32> [[TMP1]], <2 x i32> <i32 0, i32 3>14; CHECK-NEXT: [[TMP6]] = or <2 x i32> [[TMP5]], zeroinitializer15; CHECK-NEXT: [[TMP7:%.*]] = extractelement <2 x i32> [[TMP6]], i32 016; CHECK-NEXT: [[CALL:%.*]] = call i64 null(i32 [[TMP7]])17; CHECK-NEXT: br label [[BB4]]18; CHECK: bb4:19; CHECK-NEXT: br i1 false, label [[BB5:%.*]], label [[BB1]]20; CHECK: bb5:21; CHECK-NEXT: [[TMP8:%.*]] = phi <2 x i32> [ [[TMP2]], [[BB4]] ]22; CHECK-NEXT: ret void23;24; FORCED-LABEL: define void @foo() {25; FORCED-NEXT: bb:26; FORCED-NEXT: br label [[BB1:%.*]]27; FORCED: bb1:28; FORCED-NEXT: [[TMP1:%.*]] = phi <2 x i32> [ zeroinitializer, [[BB:%.*]] ], [ [[TMP6:%.*]], [[BB4:%.*]] ]29; FORCED-NEXT: [[TMP2:%.*]] = shl <2 x i32> [[TMP1]], zeroinitializer30; FORCED-NEXT: [[TMP5:%.*]] = shufflevector <2 x i32> [[TMP2]], <2 x i32> [[TMP1]], <2 x i32> <i32 0, i32 3>31; FORCED-NEXT: [[TMP6]] = or <2 x i32> [[TMP5]], zeroinitializer32; FORCED-NEXT: [[TMP7:%.*]] = extractelement <2 x i32> [[TMP6]], i32 033; FORCED-NEXT: [[CALL:%.*]] = call i64 null(i32 [[TMP7]])34; FORCED-NEXT: br label [[BB4]]35; FORCED: bb4:36; FORCED-NEXT: br i1 false, label [[BB5:%.*]], label [[BB1]]37; FORCED: bb5:38; FORCED-NEXT: [[TMP8:%.*]] = phi <2 x i32> [ [[TMP2]], [[BB4]] ]39; FORCED-NEXT: ret void40;41bb:42 br label %bb143 44bb1:45 %phi = phi i32 [ 0, %bb ], [ %or, %bb4 ]46 %phi2 = phi i32 [ 0, %bb ], [ %or3, %bb4 ]47 %and = and i32 0, 048 %shl = shl i32 %phi, %and49 %or = or i32 %shl, 050 %call = call i64 null(i32 %or)51 %or3 = or i32 %phi2, 052 br label %bb453 54bb4:55 br i1 false, label %bb5, label %bb156 57bb5:58 %phi6 = phi i32 [ %shl, %bb4 ]59 %phi7 = phi i32 [ %or3, %bb4 ]60 ret void61}62