154 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 -slp-threshold=-1000 < %s | FileCheck %s3 4define void @e(ptr %c, i64 %0) {5; CHECK-LABEL: define void @e(6; CHECK-SAME: ptr [[C:%.*]], i64 [[TMP0:%.*]]) {7; CHECK-NEXT: [[ENTRY:.*:]]8; CHECK-NEXT: [[TMP1:%.*]] = load ptr, ptr [[C]], align 89; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr i8, ptr [[TMP1]], i64 9610; CHECK-NEXT: [[ARRAYIDX5:%.*]] = getelementptr i8, ptr [[TMP1]], i64 10411; CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[ARRAYIDX]], align 812; CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr [[C]], align 813; CHECK-NEXT: [[TMP18:%.*]] = load <2 x ptr>, ptr [[ARRAYIDX5]], align 814; CHECK-NEXT: [[TMP4:%.*]] = shufflevector <2 x ptr> [[TMP18]], <2 x ptr> poison, <2 x i32> <i32 1, i32 0>15; CHECK-NEXT: [[TMP5:%.*]] = insertelement <2 x ptr> poison, ptr [[TMP3]], i32 016; CHECK-NEXT: [[TMP6:%.*]] = shufflevector <2 x ptr> [[TMP5]], <2 x ptr> poison, <2 x i32> zeroinitializer17; CHECK-NEXT: [[TMP7:%.*]] = insertelement <6 x ptr> poison, ptr [[TMP2]], i32 218; CHECK-NEXT: [[TMP8:%.*]] = insertelement <6 x ptr> [[TMP7]], ptr [[TMP1]], i32 319; CHECK-NEXT: [[TMP19:%.*]] = shufflevector <2 x ptr> [[TMP4]], <2 x ptr> poison, <6 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison>20; CHECK-NEXT: [[TMP20:%.*]] = shufflevector <6 x ptr> [[TMP8]], <6 x ptr> [[TMP19]], <6 x i32> <i32 6, i32 7, i32 2, i32 3, i32 4, i32 5>21; CHECK-NEXT: [[TMP21:%.*]] = shufflevector <2 x ptr> [[TMP6]], <2 x ptr> poison, <6 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison>22; CHECK-NEXT: [[TMP10:%.*]] = shufflevector <6 x ptr> [[TMP20]], <6 x ptr> [[TMP21]], <6 x i32> <i32 0, i32 1, i32 2, i32 3, i32 6, i32 7>23; CHECK-NEXT: [[TMP11:%.*]] = ptrtoint <6 x ptr> [[TMP10]] to <6 x i64>24; CHECK-NEXT: [[TMP12:%.*]] = shufflevector <6 x i64> [[TMP11]], <6 x i64> poison, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 3, i32 3, i32 3, i32 3, i32 3, i32 4, i32 4, i32 4, i32 4, i32 5, i32 5, i32 5>25; CHECK-NEXT: [[TMP13:%.*]] = insertelement <32 x i64> poison, i64 [[TMP0]], i32 026; CHECK-NEXT: [[TMP14:%.*]] = shufflevector <32 x i64> [[TMP13]], <32 x i64> poison, <32 x i32> zeroinitializer27; CHECK-NEXT: [[TMP15:%.*]] = or <32 x i64> [[TMP14]], [[TMP12]]28; CHECK-NEXT: [[TMP16:%.*]] = icmp ult <32 x i64> [[TMP15]], splat (i64 16)29; CHECK-NEXT: [[TMP17:%.*]] = call i1 @llvm.vector.reduce.or.v32i1(<32 x i1> [[TMP16]])30; CHECK-NEXT: br i1 [[TMP17]], label %[[FOR_BODY:.*]], label %[[VECTOR_PH:.*]]31; CHECK: [[VECTOR_PH]]:32; CHECK-NEXT: ret void33; CHECK: [[FOR_BODY]]:34; CHECK-NEXT: ret void35;36entry:37 %1 = load ptr, ptr %c, align 838 %arrayidx = getelementptr i8, ptr %1, i64 9639 %arrayidx1 = getelementptr i8, ptr %1, i64 11240 %2 = load ptr, ptr %arrayidx1, align 841 %arrayidx5 = getelementptr i8, ptr %1, i64 10442 %3 = load ptr, ptr %arrayidx5, align 843 %4 = load ptr, ptr %arrayidx, align 844 %5 = load ptr, ptr %c, align 845 %6 = ptrtoint ptr %5 to i6446 %7 = ptrtoint ptr %5 to i6447 %8 = ptrtoint ptr %1 to i6448 %9 = ptrtoint ptr %4 to i6449 %10 = ptrtoint ptr %3 to i6450 %11 = ptrtoint ptr %2 to i6451 %12 = or i64 %0, %1152 %dc64 = icmp ult i64 %12, 1653 %13 = or i64 %0, %1154 %dc65 = icmp ult i64 %13, 1655 %cr66 = or i1 %dc64, %dc6556 %14 = or i64 %0, %1157 %dc67 = icmp ult i64 %14, 1658 %cr68 = or i1 %cr66, %dc6759 %15 = or i64 %0, %1160 %dc69 = icmp ult i64 %15, 1661 %cr70 = or i1 %cr68, %dc6962 %16 = or i64 %0, %1163 %dc71 = icmp ult i64 %16, 1664 %cr72 = or i1 %cr70, %dc7165 %17 = or i64 %0, %1166 %dc73 = icmp ult i64 %17, 1667 %cr74 = or i1 %cr72, %dc7368 %18 = or i64 %0, %1169 %dc75 = icmp ult i64 %18, 1670 %cr76 = or i1 %cr74, %dc7571 %19 = or i64 %0, %1072 %dc77 = icmp ult i64 %19, 1673 %cr78 = or i1 %cr76, %dc7774 %20 = or i64 %0, %1075 %dc79 = icmp ult i64 %20, 1676 %cr80 = or i1 %cr78, %dc7977 %21 = or i64 %0, %1078 %dc81 = icmp ult i64 %21, 1679 %cr82 = or i1 %cr80, %dc8180 %22 = or i64 %0, %1081 %dc83 = icmp ult i64 %22, 1682 %cr84 = or i1 %cr82, %dc8383 %23 = or i64 %0, %1084 %dc85 = icmp ult i64 %23, 1685 %cr86 = or i1 %cr84, %dc8586 %24 = or i64 %0, %1087 %dc87 = icmp ult i64 %24, 1688 %cr88 = or i1 %cr86, %dc8789 %25 = or i64 %0, %1090 %dc89 = icmp ult i64 %25, 1691 %cr90 = or i1 %cr88, %dc8992 %26 = or i64 %0, %993 %dc91 = icmp ult i64 %26, 1694 %cr92 = or i1 %cr90, %dc9195 %27 = or i64 %0, %996 %dc93 = icmp ult i64 %27, 1697 %cr94 = or i1 %cr92, %dc9398 %28 = or i64 %0, %999 %dc95 = icmp ult i64 %28, 16100 %cr96 = or i1 %cr94, %dc95101 %29 = or i64 %0, %9102 %dc97 = icmp ult i64 %29, 16103 %cr98 = or i1 %cr96, %dc97104 %30 = or i64 %0, %9105 %dc99 = icmp ult i64 %30, 16106 %cr100 = or i1 %cr98, %dc99107 %31 = or i64 %0, %9108 %dc101 = icmp ult i64 %31, 16109 %cr102 = or i1 %cr100, %dc101110 %32 = or i64 %0, %8111 %dc103 = icmp ult i64 %32, 16112 %cr104 = or i1 %cr102, %dc103113 %33 = or i64 %0, %8114 %dc105 = icmp ult i64 %33, 16115 %cr106 = or i1 %cr104, %dc105116 %34 = or i64 %0, %8117 %dc107 = icmp ult i64 %34, 16118 %cr108 = or i1 %cr106, %dc107119 %35 = or i64 %0, %8120 %dc109 = icmp ult i64 %35, 16121 %cr110 = or i1 %cr108, %dc109122 %36 = or i64 %0, %8123 %dc111 = icmp ult i64 %36, 16124 %cr112 = or i1 %cr110, %dc111125 %37 = or i64 %0, %7126 %dc113 = icmp ult i64 %37, 16127 %cr114 = or i1 %cr112, %dc113128 %38 = or i64 %0, %7129 %dc115 = icmp ult i64 %38, 16130 %cr116 = or i1 %cr114, %dc115131 %39 = or i64 %0, %7132 %dc117 = icmp ult i64 %39, 16133 %cr118 = or i1 %cr116, %dc117134 %40 = or i64 %0, %7135 %dc119 = icmp ult i64 %40, 16136 %cr120 = or i1 %cr118, %dc119137 %41 = or i64 %0, %6138 %dc121 = icmp ult i64 %41, 16139 %cr122 = or i1 %cr120, %dc121140 %42 = or i64 %0, %6141 %dc123 = icmp ult i64 %42, 16142 %cr124 = or i1 %cr122, %dc123143 %43 = or i64 %0, %6144 %dc125 = icmp ult i64 %43, 16145 %cr126 = or i1 %cr124, %dc125146 br i1 %cr126, label %for.body, label %vector.ph147 148vector.ph:149 ret void150 151for.body:152 ret void153}154