76 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S --passes=slp-vectorizer -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s3 4define void @test(double %0) {5; CHECK-LABEL: define void @test(6; CHECK-SAME: double [[TMP0:%.*]]) {7; CHECK-NEXT: [[_THREAD:.*:]]8; CHECK-NEXT: [[TMP1:%.*]] = call double null(ptr null, ptr null, ptr null)9; CHECK-NEXT: [[TMP2:%.*]] = call double null(ptr null, ptr null, ptr null)10; CHECK-NEXT: br i1 false, label %[[BB3:.*]], label %[[BB7:.*]]11; CHECK: [[BB3]]:12; CHECK-NEXT: [[TMP4:%.*]] = call double null(ptr null, ptr null, ptr null)13; CHECK-NEXT: [[TMP5:%.*]] = insertelement <4 x double> <double poison, double 0.000000e+00, double poison, double 0.000000e+00>, double [[TMP0]], i32 214; CHECK-NEXT: [[TMP6:%.*]] = insertelement <4 x double> [[TMP5]], double [[TMP4]], i32 015; CHECK-NEXT: br label %[[BB7]]16; CHECK: [[BB7]]:17; CHECK-NEXT: [[TMP8:%.*]] = phi <4 x double> [ [[TMP6]], %[[BB3]] ], [ zeroinitializer, [[DOTTHREAD:%.*]] ]18; CHECK-NEXT: [[TMP9:%.*]] = insertelement <2 x double> poison, double [[TMP2]], i32 019; CHECK-NEXT: [[TMP10:%.*]] = insertelement <2 x double> [[TMP9]], double [[TMP1]], i32 120; CHECK-NEXT: [[TMP11:%.*]] = shufflevector <4 x double> [[TMP8]], <4 x double> poison, <6 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison>21; CHECK-NEXT: [[TMP13:%.*]] = shufflevector <2 x double> [[TMP10]], <2 x double> poison, <6 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison>22; CHECK-NEXT: [[TMP12:%.*]] = shufflevector <6 x double> [[TMP11]], <6 x double> [[TMP13]], <6 x i32> <i32 0, i32 1, i32 2, i32 3, i32 6, i32 7>23; CHECK-NEXT: br i1 false, label %[[DOTLR_PH272_PREHEADER:.*]], [[DOT_CRIT_EDGE:label %.*]]24; CHECK: [[_LR_PH272_PREHEADER:.*:]]25; CHECK-NEXT: br i1 false, [[DOT_CRIT_EDGE]], label %[[BB14:.*]]26; CHECK: [[BB14]]:27; CHECK-NEXT: [[TMP14:%.*]] = shufflevector <6 x double> [[TMP12]], <6 x double> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3>28; CHECK-NEXT: [[TMP15:%.*]] = shufflevector <4 x double> [[TMP14]], <4 x double> poison, <6 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison>29; CHECK-NEXT: [[TMP17:%.*]] = shufflevector <6 x double> [[TMP15]], <6 x double> <double 0x7FF8000000000000, double 0x7FF8000000000000, double undef, double undef, double undef, double undef>, <6 x i32> <i32 0, i32 1, i32 2, i32 3, i32 6, i32 7>30; CHECK-NEXT: br i1 false, label %[[BB18:.*]], [[DOT_CRIT_EDGE]]31; CHECK: [[BB18]]:32; CHECK-NEXT: [[TMP18:%.*]] = insertelement <6 x double> <double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double poison, double 0.000000e+00, double 0.000000e+00>, double [[TMP0]], i32 333; CHECK-NEXT: br [[DOT_CRIT_EDGE]]34; CHECK: [[__CRIT_EDGE:.*:]]35; CHECK-NEXT: [[TMP20:%.*]] = phi <6 x double> [ [[TMP12]], %[[BB7]] ], [ [[TMP18]], %[[BB18]] ], [ [[TMP17]], %[[BB14]] ], [ [[TMP12]], %[[DOTLR_PH272_PREHEADER]] ]36; CHECK-NEXT: ret void37;38.thread:39 %1 = call double null(ptr null, ptr null, ptr null)40 %2 = call double null(ptr null, ptr null, ptr null)41 br i1 false, label %3, label %542 433:44 %4 = call double null(ptr null, ptr null, ptr null)45 br label %546 475:48 %.1226 = phi double [ %4, %3 ], [ 0.000000e+00, %.thread ]49 %.1222 = phi double [ 0.000000e+00, %3 ], [ 0.000000e+00, %.thread ]50 %.1218 = phi double [ %0, %3 ], [ 0.000000e+00, %.thread ]51 %.1216 = phi double [ 0.000000e+00, %3 ], [ 0.000000e+00, %.thread ]52 br i1 false, label %.lr.ph272.preheader, label %._crit_edge53 54.lr.ph272.preheader:55 br i1 false, label %._crit_edge, label %656 576:58 %7 = fdiv double 0.000000e+00, 0.000000e+0059 %8 = fsub double 0.000000e+00, %760 %9 = fdiv double 0.000000e+00, 0.000000e+0061 %10 = fsub double 0.000000e+00, %962 br i1 false, label %11, label %._crit_edge63 6411:65 br label %._crit_edge66 67._crit_edge:68 %.2227.lcssa = phi double [ %.1226, %5 ], [ 0.000000e+00, %11 ], [ %.1226, %6 ], [ %.1226, %.lr.ph272.preheader ]69 %.2223.lcssa = phi double [ %.1222, %5 ], [ 0.000000e+00, %11 ], [ %.1222, %6 ], [ %.1222, %.lr.ph272.preheader ]70 %.2219.lcssa = phi double [ %.1218, %5 ], [ 0.000000e+00, %11 ], [ %.1218, %6 ], [ %.1218, %.lr.ph272.preheader ]71 %.2.lcssa = phi double [ %.1216, %5 ], [ %0, %11 ], [ %.1216, %6 ], [ %.1216, %.lr.ph272.preheader ]72 %.0213.lcssa = phi double [ %2, %5 ], [ 0.000000e+00, %11 ], [ %10, %6 ], [ %2, %.lr.ph272.preheader ]73 %.0211.lcssa = phi double [ %1, %5 ], [ 0.000000e+00, %11 ], [ %8, %6 ], [ %1, %.lr.ph272.preheader ]74 ret void75}76