110 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 22; RUN: opt -mtriple=x86_64-unknown-linux-gnu -passes=slp-vectorizer -S < %s | FileCheck %s3 4define void @test() {5; CHECK-LABEL: define void @test() {6; CHECK-NEXT: entry:7; CHECK-NEXT: [[IDX2:%.*]] = getelementptr [1000 x i64], ptr null, i64 0, i64 78; CHECK-NEXT: [[TMP0:%.*]] = load <8 x i64>, ptr [[IDX2]], align 89; CHECK-NEXT: [[TMP1:%.*]] = load <8 x i64>, ptr [[IDX2]], align 810; CHECK-NEXT: [[TMP3:%.*]] = load i64, ptr null, align 811; CHECK-NEXT: br label [[LOOP:%.*]]12; CHECK: loop:13; CHECK-NEXT: [[PHI1:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[OP_RDX25:%.*]], [[LOOP]] ]14; CHECK-NEXT: [[TMP6:%.*]] = phi <8 x i64> [ [[TMP0]], [[ENTRY]] ], [ [[TMP1]], [[LOOP]] ]15; CHECK-NEXT: [[TMP7:%.*]] = mul <8 x i64> [[TMP6]], splat (i64 4)16; CHECK-NEXT: [[TMP5:%.*]] = mul <8 x i64> [[TMP1]], splat (i64 2)17; CHECK-NEXT: [[RDX_OP:%.*]] = add <8 x i64> [[TMP7]], [[TMP5]]18; CHECK-NEXT: [[OP_RDX16:%.*]] = call i64 @llvm.vector.reduce.add.v8i64(<8 x i64> [[RDX_OP]])19; CHECK-NEXT: [[OP_RDX25]] = add i64 [[OP_RDX16]], [[TMP3]]20; CHECK-NEXT: br label [[LOOP]]21;22entry:23 %idx1 = getelementptr [1000 x i64], ptr null, i64 0, i64 924 %idx2 = getelementptr [1000 x i64], ptr null, i64 0, i64 725 %ld1 = load i64, ptr %idx2, align 826 %idx3 = getelementptr [1000 x i64], ptr null, i64 0, i64 827 %ld2 = load i64, ptr %idx3, align 1628 %ld3 = load i64, ptr %idx1, align 829 %idx4 = getelementptr [1000 x i64], ptr null, i64 0, i64 1030 %ld4 = load i64, ptr %idx4, align 1631 %idx5 = getelementptr [1000 x i64], ptr null, i64 0, i64 1132 %ld5 = load i64, ptr %idx5, align 833 %idx6 = getelementptr [1000 x i64], ptr null, i64 0, i64 1234 %ld6 = load i64, ptr %idx6, align 1635 %idx7 = getelementptr [1000 x i64], ptr null, i64 0, i64 1336 %ld7 = load i64, ptr %idx7, align 837 %idx8 = getelementptr [1000 x i64], ptr null, i64 0, i64 1438 %ld8 = load i64, ptr %idx8, align 1639 %0 = load i64, ptr %idx2, align 840 %1 = load i64, ptr %idx3, align 1641 %2 = load i64, ptr %idx1, align 842 %3 = load i64, ptr %idx4, align 1643 %4 = load i64, ptr %idx5, align 844 %5 = load i64, ptr %idx6, align 1645 %6 = load i64, ptr %idx7, align 846 %7 = load i64, ptr %idx8, align 1647 %8 = load i64, ptr null, align 848 br label %loop49 50loop: ; preds = %loop, %entry51 %9 = phi i64 [ %ld8, %entry ], [ %7, %loop ]52 %10 = phi i64 [ %ld7, %entry ], [ %6, %loop ]53 %11 = phi i64 [ %ld6, %entry ], [ %5, %loop ]54 %12 = phi i64 [ %ld5, %entry ], [ %4, %loop ]55 %13 = phi i64 [ %ld4, %entry ], [ %3, %loop ]56 %14 = phi i64 [ %ld3, %entry ], [ %2, %loop ]57 %15 = phi i64 [ %ld2, %entry ], [ %1, %loop ]58 %16 = phi i64 [ %ld1, %entry ], [ %0, %loop ]59 %phi1 = phi i64 [ 0, %entry ], [ %64, %loop ]60 %17 = add i64 %16, %1561 %18 = add i64 %17, %1462 %19 = add i64 %18, %1363 %20 = add i64 %19, %1264 %21 = add i64 %20, %1165 %22 = add i64 %21, %1066 %23 = add i64 %22, %967 %24 = add i64 %23, %1668 %25 = add i64 %24, %1569 %26 = add i64 %25, %1470 %27 = add i64 %26, %1371 %28 = add i64 %27, %1272 %29 = add i64 %28, %1173 %30 = add i64 %29, %1074 %31 = add i64 %30, %975 %32 = add i64 %31, %1676 %33 = add i64 %32, %1577 %34 = add i64 %33, %1478 %35 = add i64 %34, %1379 %36 = add i64 %35, %1280 %37 = add i64 %36, %1181 %38 = add i64 %37, %1082 %39 = add i64 %38, %983 %40 = add i64 %39, %1684 %41 = add i64 %40, %1585 %42 = add i64 %41, %1486 %43 = add i64 %42, %1387 %44 = add i64 %43, %1288 %45 = add i64 %44, %1189 %46 = add i64 %45, %1090 %47 = add i64 %46, %991 %48 = add i64 %47, %092 %49 = add i64 %48, %193 %50 = add i64 %49, %294 %51 = add i64 %50, %395 %52 = add i64 %51, %496 %53 = add i64 %52, %597 %54 = add i64 %53, %698 %55 = add i64 %54, %799 %56 = add i64 %55, %8100 %57 = add i64 %56, %0101 %58 = add i64 %57, %1102 %59 = add i64 %58, %2103 %60 = add i64 %59, %3104 %61 = add i64 %60, %4105 %62 = add i64 %61, %5106 %63 = add i64 %62, %6107 %64 = add i64 %63, %7108 br label %loop109}110