70 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=slp-vectorizer -S -mtriple=x86_64-unknown-linux-gnu -mcpu=skylake < %s | FileCheck %s3 4define void @mainTest(i32 %param, ptr %vals, i32 %len) {5; CHECK-LABEL: @mainTest(6; CHECK-NEXT: bci_15.preheader:7; CHECK-NEXT: [[TMP0:%.*]] = insertelement <2 x i32> <i32 poison, i32 31>, i32 [[PARAM:%.*]], i32 08; CHECK-NEXT: br label [[BCI_15:%.*]]9; CHECK: bci_15:10; CHECK-NEXT: [[LOCAL_0_:%.*]] = phi i32 [ [[OP_RDX:%.*]], [[BCI_15]] ], [ [[PARAM]], [[BCI_15_PREHEADER:%.*]] ]11; CHECK-NEXT: [[LOCAL_4_:%.*]] = phi i32 [ [[V44:%.*]], [[BCI_15]] ], [ 31, [[BCI_15_PREHEADER]] ]12; CHECK-NEXT: [[TMP1:%.*]] = phi <2 x i32> [ [[TMP6:%.*]], [[BCI_15]] ], [ [[TMP0]], [[BCI_15_PREHEADER]] ]13; CHECK-NEXT: [[TMP2:%.*]] = shufflevector <2 x i32> [[TMP1]], <2 x i32> poison, <16 x i32> <i32 0, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>14; CHECK-NEXT: [[TMP3:%.*]] = add <16 x i32> [[TMP2]], <i32 -1, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>15; CHECK-NEXT: store atomic i32 [[LOCAL_0_]], ptr [[VALS:%.*]] unordered, align 416; CHECK-NEXT: [[TMP4:%.*]] = call i32 @llvm.vector.reduce.and.v16i32(<16 x i32> [[TMP3]])17; CHECK-NEXT: [[OP_RDX]] = and i32 [[TMP4]], [[LOCAL_4_]]18; CHECK-NEXT: [[V44]] = add i32 [[LOCAL_4_]], 1619; CHECK-NEXT: [[TMP5:%.*]] = insertelement <2 x i32> poison, i32 [[OP_RDX]], i32 020; CHECK-NEXT: [[TMP6]] = insertelement <2 x i32> [[TMP5]], i32 [[V44]], i32 121; CHECK-NEXT: br i1 true, label [[BCI_15]], label [[LOOPEXIT:%.*]]22; CHECK: loopexit:23; CHECK-NEXT: ret void24;25bci_15.preheader:26 br label %bci_1527 28bci_15: ; preds = %bci_15.preheader, %bci_1529 %local_0_ = phi i32 [ %v43, %bci_15 ], [ %param, %bci_15.preheader ]30 %local_4_ = phi i32 [ %v44, %bci_15 ], [ 31, %bci_15.preheader ]31 %v12 = add i32 %local_0_, -132 store atomic i32 %local_0_, ptr %vals unordered, align 433 %v13 = add i32 %local_4_, 134 %v14 = and i32 %local_4_, %v1235 %v15 = add i32 %local_4_, 236 %v16 = and i32 %v13, %v1437 %v17 = add i32 %local_4_, 338 %v18 = and i32 %v15, %v1639 %v19 = add i32 %local_4_, 440 %v20 = and i32 %v17, %v1841 %v21 = add i32 %local_4_, 542 %v22 = and i32 %v19, %v2043 %v23 = add i32 %local_4_, 644 %v24 = and i32 %v21, %v2245 %v25 = add i32 %local_4_, 746 %v26 = and i32 %v23, %v2447 %v27 = add i32 %local_4_, 848 %v28 = and i32 %v25, %v2649 %v29 = add i32 %local_4_, 950 %v30 = and i32 %v27, %v2851 %v31 = add i32 %local_4_, 1052 %v32 = and i32 %v29, %v3053 %v33 = add i32 %local_4_, 1154 %v34 = and i32 %v31, %v3255 %v35 = add i32 %local_4_, 1256 %v36 = and i32 %v33, %v3457 %v37 = add i32 %local_4_, 1358 %v38 = and i32 %v35, %v3659 %v39 = add i32 %local_4_, 1460 %v40 = and i32 %v37, %v3861 %v41 = add i32 %local_4_, 1562 %v42 = and i32 %v39, %v4063 %v43 = and i32 %v41, %v4264 %v44 = add i32 %local_4_, 1665 br i1 true, label %bci_15, label %loopexit66 67loopexit:68 ret void69}70