141 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 -mcpu=cascadelake < %s | FileCheck %s3 4@solid_ = external global [608 x i8]5 6define void @test(ptr noalias %0) {7; CHECK-LABEL: define void @test(8; CHECK-SAME: ptr noalias [[TMP0:%.*]]) #[[ATTR0:[0-9]+]] {9; CHECK-NEXT: [[_LR_PH1019:.*:]]10; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[TMP0]], i64 811; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[TMP0]], i64 3212; CHECK-NEXT: [[TMP3:%.*]] = getelementptr i8, ptr [[TMP0]], i64 12813; CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, ptr [[TMP0]], i64 20014; CHECK-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP0]], i64 20815; CHECK-NEXT: [[TMP6:%.*]] = getelementptr i8, ptr [[TMP0]], i64 23216; CHECK-NEXT: [[TMP7:%.*]] = getelementptr i8, ptr [[TMP0]], i64 28817; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[TMP0]], i64 32018; CHECK-NEXT: [[TMP9:%.*]] = getelementptr i8, ptr [[TMP0]], i64 30419; CHECK-NEXT: [[TMP10:%.*]] = getelementptr i8, ptr [[TMP0]], i64 42420; CHECK-NEXT: [[TMP11:%.*]] = getelementptr i8, ptr [[TMP0]], i64 48021; CHECK-NEXT: [[TMP12:%.*]] = getelementptr i8, ptr [[TMP0]], i64 50422; CHECK-NEXT: [[TMP13:%.*]] = getelementptr i8, ptr [[TMP0]], i64 63223; CHECK-NEXT: [[TMP14:%.*]] = getelementptr i8, ptr [[TMP0]], i64 72024; CHECK-NEXT: [[TMP15:%.*]] = load double, ptr [[TMP1]], align 825; CHECK-NEXT: [[TMP16:%.*]] = load double, ptr [[TMP2]], align 826; CHECK-NEXT: [[TMP17:%.*]] = fadd double [[TMP16]], [[TMP15]]27; CHECK-NEXT: [[TMP18:%.*]] = load double, ptr [[TMP3]], align 828; CHECK-NEXT: [[TMP19:%.*]] = load double, ptr [[TMP4]], align 829; CHECK-NEXT: [[TMP20:%.*]] = load double, ptr [[TMP5]], align 830; CHECK-NEXT: [[TMP21:%.*]] = load double, ptr [[TMP6]], align 831; CHECK-NEXT: [[TMP22:%.*]] = fadd double [[TMP21]], [[TMP20]]32; CHECK-NEXT: [[TMP23:%.*]] = load double, ptr [[TMP7]], align 833; CHECK-NEXT: [[TMP24:%.*]] = load double, ptr [[TMP8]], align 834; CHECK-NEXT: [[TMP25:%.*]] = load double, ptr [[TMP9]], align 835; CHECK-NEXT: [[TMP26:%.*]] = load double, ptr [[TMP10]], align 836; CHECK-NEXT: [[TMP27:%.*]] = load double, ptr [[TMP11]], align 837; CHECK-NEXT: [[TMP28:%.*]] = load double, ptr [[TMP12]], align 838; CHECK-NEXT: [[TMP29:%.*]] = fadd double [[TMP28]], [[TMP27]]39; CHECK-NEXT: [[TMP30:%.*]] = fmul double [[TMP22]], [[TMP18]]40; CHECK-NEXT: [[TMP31:%.*]] = fmul double [[TMP30]], 0.000000e+0041; CHECK-NEXT: [[TMP32:%.*]] = fsub double 0.000000e+00, [[TMP25]]42; CHECK-NEXT: [[TMP33:%.*]] = fmul double [[TMP32]], 0.000000e+0043; CHECK-NEXT: [[TMP34:%.*]] = fadd double [[TMP33]], 0.000000e+0044; CHECK-NEXT: [[TMP35:%.*]] = fmul double [[TMP34]], 0.000000e+0045; CHECK-NEXT: [[TMP36:%.*]] = fmul double [[TMP29]], [[TMP26]]46; CHECK-NEXT: [[TMP37:%.*]] = fmul double [[TMP36]], 0.000000e+0047; CHECK-NEXT: [[TMP38:%.*]] = fadd double [[TMP37]], 0.000000e+0048; CHECK-NEXT: [[TMP39:%.*]] = fsub double [[TMP17]], [[TMP19]]49; CHECK-NEXT: [[TMP40:%.*]] = fmul double [[TMP39]], [[TMP23]]50; CHECK-NEXT: [[TMP41:%.*]] = fmul double [[TMP40]], 0.000000e+0051; CHECK-NEXT: [[TMP42:%.*]] = load double, ptr [[TMP0]], align 852; CHECK-NEXT: [[TMP43:%.*]] = load double, ptr [[TMP13]], align 853; CHECK-NEXT: [[TMP44:%.*]] = fmul double [[TMP43]], [[TMP31]]54; CHECK-NEXT: [[TMP45:%.*]] = load double, ptr [[TMP14]], align 855; CHECK-NEXT: [[TMP46:%.*]] = fmul double [[TMP35]], 0.000000e+0056; CHECK-NEXT: [[TMP47:%.*]] = fadd double [[TMP44]], 0.000000e+0057; CHECK-NEXT: [[TMP48:%.*]] = fmul double [[TMP45]], [[TMP38]]58; CHECK-NEXT: [[TMP49:%.*]] = fmul double [[TMP45]], [[TMP41]]59; CHECK-NEXT: store double [[TMP46]], ptr getelementptr inbounds (i8, ptr @solid_, i64 384), align 860; CHECK-NEXT: store double [[TMP47]], ptr getelementptr inbounds (i8, ptr @solid_, i64 408), align 861; CHECK-NEXT: store double [[TMP48]], ptr getelementptr inbounds (i8, ptr @solid_, i64 392), align 862; CHECK-NEXT: store double [[TMP49]], ptr getelementptr inbounds (i8, ptr @solid_, i64 400), align 863; CHECK-NEXT: [[DOTNEG965:%.*]] = fmul double [[TMP48]], [[TMP24]]64; CHECK-NEXT: [[REASS_ADD993:%.*]] = fadd double [[DOTNEG965]], 0.000000e+0065; CHECK-NEXT: [[TMP50:%.*]] = fadd double [[TMP42]], [[REASS_ADD993]]66; CHECK-NEXT: [[TMP51:%.*]] = fsub double 0.000000e+00, [[TMP50]]67; CHECK-NEXT: store double [[TMP51]], ptr getelementptr inbounds (i8, ptr @solid_, i64 296), align 868; CHECK-NEXT: [[DOTNEG969:%.*]] = fmul double [[TMP49]], 0.000000e+0069; CHECK-NEXT: [[REASS_ADD996:%.*]] = fadd double [[DOTNEG969]], 0.000000e+0070; CHECK-NEXT: [[TMP52:%.*]] = fadd double [[TMP45]], [[REASS_ADD996]]71; CHECK-NEXT: [[TMP53:%.*]] = fsub double 0.000000e+00, [[TMP52]]72; CHECK-NEXT: store double [[TMP53]], ptr getelementptr inbounds (i8, ptr @solid_, i64 304), align 873; CHECK-NEXT: ret void74;75.lr.ph1019:76 %1 = getelementptr i8, ptr %0, i64 877 %2 = getelementptr i8, ptr %0, i64 3278 %3 = getelementptr i8, ptr %0, i64 12879 %4 = getelementptr i8, ptr %0, i64 20080 %5 = getelementptr i8, ptr %0, i64 20881 %6 = getelementptr i8, ptr %0, i64 23282 %7 = getelementptr i8, ptr %0, i64 28883 %8 = getelementptr i8, ptr %0, i64 32084 %9 = getelementptr i8, ptr %0, i64 30485 %10 = getelementptr i8, ptr %0, i64 42486 %11 = getelementptr i8, ptr %0, i64 48087 %12 = getelementptr i8, ptr %0, i64 50488 %13 = getelementptr i8, ptr %0, i64 63289 %14 = getelementptr i8, ptr %0, i64 72090 %15 = load double, ptr %1, align 891 %16 = load double, ptr %2, align 892 %17 = fadd double %16, %1593 %18 = load double, ptr %3, align 894 %19 = load double, ptr %4, align 895 %20 = load double, ptr %5, align 896 %21 = load double, ptr %6, align 897 %22 = fadd double %21, %2098 %23 = load double, ptr %7, align 899 %24 = load double, ptr %8, align 8100 %25 = load double, ptr %9, align 8101 %26 = load double, ptr %10, align 8102 %27 = load double, ptr %11, align 8103 %28 = load double, ptr %12, align 8104 %29 = fadd double %28, %27105 %30 = fmul double %22, %18106 %31 = fmul double %30, 0.000000e+00107 %32 = fsub double 0.000000e+00, %25108 %33 = fmul double %32, 0.000000e+00109 %34 = fadd double %33, 0.000000e+00110 %35 = fmul double %34, 0.000000e+00111 %36 = fmul double %29, %26112 %37 = fmul double %36, 0.000000e+00113 %38 = fadd double %37, 0.000000e+00114 %39 = fsub double %17, %19115 %40 = fmul double %39, %23116 %41 = fmul double %40, 0.000000e+00117 %42 = load double, ptr %0, align 8118 %43 = load double, ptr %13, align 8119 %44 = fmul double %43, %31120 %45 = load double, ptr %14, align 8121 %46 = fmul double %35, 0.000000e+00122 %47 = fadd double %44, 0.000000e+00123 %48 = fmul double %45, %38124 %49 = fmul double %45, %41125 store double %46, ptr getelementptr inbounds (i8, ptr @solid_, i64 384), align 8126 store double %47, ptr getelementptr inbounds (i8, ptr @solid_, i64 408), align 8127 store double %48, ptr getelementptr inbounds (i8, ptr @solid_, i64 392), align 8128 store double %49, ptr getelementptr inbounds (i8, ptr @solid_, i64 400), align 8129 %.neg965 = fmul double %48, %24130 %reass.add993 = fadd double %.neg965, 0.000000e+00131 %50 = fadd double %42, %reass.add993132 %51 = fsub double 0.000000e+00, %50133 store double %51, ptr getelementptr inbounds (i8, ptr @solid_, i64 296), align 8134 %.neg969 = fmul double %49, 0.000000e+00135 %reass.add996 = fadd double %.neg969, 0.000000e+00136 %52 = fadd double %45, %reass.add996137 %53 = fsub double 0.000000e+00, %52138 store double %53, ptr getelementptr inbounds (i8, ptr @solid_, i64 304), align 8139 ret void140}141