diff --git a/bench/abc/optimized/dauNpn2.ll b/bench/abc/optimized/dauNpn2.ll index ebbb521f192..dd113f1e9fc 100644 --- a/bench/abc/optimized/dauNpn2.ll +++ b/bench/abc/optimized/dauNpn2.ll @@ -3340,7 +3340,7 @@ define void @Dtt_PrintMulti(ptr noundef readonly captures(none) %0) local_unname br label %.preheader .preheader: ; preds = %1, %52 - %indvars.iv50 = phi i64 [ 0, %1 ], [ %indvars.iv.next51, %52 ] + %indvars.iv50 = phi i64 [ 0, %1 ], [ %indvars.iv.next51, %53 ] %6 = load i32, ptr %3, align 8, !tbaa !81 %7 = icmp sgt i32 %6, 0 br i1 %7, label %.lr.ph, label %._crit_edge.thread @@ -3379,7 +3379,7 @@ define void @Dtt_PrintMulti(ptr noundef readonly captures(none) %0) local_unname %25 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %24, i1 true) %26 = sub nuw nsw i32 32, %25 %27 = zext nneg i32 %26 to i64 - %28 = getelementptr inbounds nuw [13 x [15 x i32]], ptr %2, i64 0, i64 %indvars.iv50, i64 %27 + %28 = getelementptr inbounds nuw [15 x i32], ptr %9, i64 0, i64 %27 %29 = load i32, ptr %28, align 4, !tbaa !40 %30 = add nsw i32 %29, 1 store i32 %30, ptr %28, align 4, !tbaa !40 @@ -3409,27 +3409,28 @@ define void @Dtt_PrintMulti(ptr noundef readonly captures(none) %0) local_unname %41 = sitofp i32 %.1 to double %42 = fdiv double %37, %41 %43 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.26, double noundef %42) - br label %44 - -44: ; preds = %36, %51 - %indvars.iv46 = phi i64 [ 0, %36 ], [ %indvars.iv.next47, %51 ] - %45 = getelementptr inbounds nuw [13 x [15 x i32]], ptr %2, i64 0, i64 %indvars.iv50, i64 %indvars.iv46 - %46 = load i32, ptr %45, align 4, !tbaa !40 - %.not = icmp eq i32 %46, 0 - br i1 %.not, label %49, label %47 - -47: ; preds = %44 - %48 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27, i32 noundef %46) - br label %51 + %44 = getelementptr inbounds nuw [13 x [15 x i32]], ptr %2, i64 0, i64 %indvars.iv50 + br label %45 + +45: ; preds = %36, %51 + %indvars.iv46 = phi i64 [ 0, %36 ], [ %indvars.iv.next47, %52 ] + %46 = getelementptr inbounds nuw [15 x i32], ptr %44, i64 0, i64 %indvars.iv46 + %47 = load i32, ptr %46, align 4, !tbaa !40 + %.not = icmp eq i32 %47, 0 + br i1 %.not, label %50, label %48 + +48:; preds = %45 + %49 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27, i32 noundef %47) + br label %52 -49: ; preds = %44 +49: ; preds = %45 %50 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28, ptr noundef nonnull @.str.29) br label %51 -51: ; preds = %47, %49 +51: ; preds = %48, %49 %indvars.iv.next47 = add nuw nsw i64 %indvars.iv46, 1 %exitcond49.not = icmp eq i64 %indvars.iv.next47, 15 - br i1 %exitcond49.not, label %52, label %44, !llvm.loop !103 + br i1 %exitcond49.not, label %52, label %45, !llvm.loop !103 52: ; preds = %51 %putchar = tail call i32 @putchar(i32 10) diff --git a/bench/abc/optimized/extraBddMisc.ll b/bench/abc/optimized/extraBddMisc.ll index 5b4c93ea80c..65223643384 100644 --- a/bench/abc/optimized/extraBddMisc.ll +++ b/bench/abc/optimized/extraBddMisc.ll @@ -3716,45 +3716,48 @@ define void @Extra_GraphExperiment() local_unnamed_addr #0 { %4 = getelementptr inbounds nuw i8, ptr %1, i64 40 br label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %._crit_edge, %0 +.lr.ph.preheader: ; preds = %0, %._crit_edge %indvars.iv47 = phi i64 [ 0, %0 ], [ %indvars.iv.next48, %._crit_edge ] - %.03643 = phi ptr [ %3, %0 ], [ %15, %._crit_edge ] - %5 = load ptr, ptr %4, align 8, !tbaa !34 - tail call void @Cudd_Ref(ptr noundef %5) #19 - %6 = getelementptr inbounds nuw [5 x [5 x i32]], ptr @__const.Extra_GraphExperiment.Edges, i64 0, i64 %indvars.iv47, i64 0 + %.03643 = phi ptr [ @__const.Extra_GraphExperiment.Edges, %0 ], [ %17, %._crit_edge ] + %.03643 = phi ptr [ %3, %0 ], [ %16, %._crit_edge ] + %7 = load ptr, ptr %4, align 8, !tbaa !34 + tail call void @Cudd_Ref(ptr noundef %7) #19 %7 = load i32, ptr %6, align 4, !tbaa !31 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %8 = phi i32 [ %7, %.lr.ph.preheader ], [ %14, %.lr.ph ] - %.03542 = phi ptr [ %5, %.lr.ph.preheader ], [ %12, %.lr.ph ] - %9 = load ptr, ptr %4, align 8, !tbaa !34 - %10 = load ptr, ptr %2, align 8, !tbaa !63 - %11 = tail call ptr @cuddZddGetNode(ptr noundef nonnull %1, i32 noundef %8, ptr noundef %9, ptr noundef %10) #19 - tail call void @Cudd_Ref(ptr noundef %11) #19 - %12 = tail call ptr @Cudd_zddUnateProduct(ptr noundef nonnull %1, ptr noundef %.03542, ptr noundef %11) #19 + %.not3940 = icmp eq i32 %8, 0 + br i1 %.not3940, label %._crit_edge, label %.lr.ph + +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph + %8 = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %5 ] + %.03542 = phi i32 [ %1.lr.ph.preheader, %.lr.ph ], [ %8, %5 ] + %.03542 = phi ptr [ %13, %.lr.ph ], [ %7, %5 ] + %10 = load ptr, ptr %4, align 8, !tbaa !34 + %11 = load ptr, ptr %2, align 8, !tbaa !63 + %12 = tail call ptr @cuddZddGetNode(ptr noundef nonnull %1, i32 noundef %9, ptr noundef %10, ptr noundef %11) #19 tail call void @Cudd_Ref(ptr noundef %12) #19 + %13 = tail call ptr @Cudd_zddUnateProduct(ptr noundef nonnull %1, ptr noundef %.03542, ptr noundef %12) #19 + tail call void @Cudd_Ref(ptr noundef %13) #19 tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %.03542) #19 - tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %11) #19 + tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %12) #19 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %13 = getelementptr inbounds nuw [5 x [5 x i32]], ptr @__const.Extra_GraphExperiment.Edges, i64 0, i64 %indvars.iv47, i64 %indvars.iv.next + %13 = getelementptr inbounds nuw [5 x i32], ptr %6, i64 0, i64 %indvars.iv.next %14 = load i32, ptr %13, align 4, !tbaa !31 %.not39 = icmp eq i32 %14, 0 br i1 %.not39, label %._crit_edge, label %.lr.ph, !llvm.loop !82 -._crit_edge: ; preds = %.lr.ph - %15 = tail call ptr @Cudd_zddUnion(ptr noundef nonnull %1, ptr noundef %.03643, ptr noundef %12) #19 - tail call void @Cudd_Ref(ptr noundef %15) #19 +._crit_edge: ; preds = %.lr.ph, %5 + %.035.lcssa = phi ptr [ %7, %5 ], [ %13, %.lr.ph ] + %16 = tail call ptr @Cudd_zddUnion(ptr noundef nonnull %1, ptr noundef %.03643, ptr noundef %.035.lcssa) #19 + tail call void @Cudd_Ref(ptr noundef %16) #19 tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %.03643) #19 - tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %12) #19 + tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %.035.lcssa) #19 %indvars.iv.next48 = add nuw nsw i64 %indvars.iv47, 1 + %17 = getelementptr inbounds nuw [5 x [5 x i32]], ptr @__const.Extra_GraphExperiment.Edges, i64 0, i64 %indvars.iv.next48 %exitcond = icmp eq i64 %indvars.iv.next48, 4 br i1 %exitcond, label %16, label %.lr.ph.preheader, !llvm.loop !83 16: ; preds = %._crit_edge - %17 = tail call i32 @Cudd_zddPrintMinterm(ptr noundef nonnull %1, ptr noundef %15) #19 - tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %15) #19 + %17 = tail call i32 @Cudd_zddPrintMinterm(ptr noundef nonnull %1, ptr noundef %16) #19 + tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %16) #19 tail call void @Cudd_Quit(ptr noundef nonnull %1) #19 ret void } diff --git a/bench/abc/optimized/ifMap.ll b/bench/abc/optimized/ifMap.ll index 70095fc71b1..3fe9b919af8 100644 --- a/bench/abc/optimized/ifMap.ll +++ b/bench/abc/optimized/ifMap.ll @@ -298,12 +298,13 @@ define float @If_CutDelaySpecial(ptr noundef readonly captures(none) %0, ptr nou %10 = getelementptr i8, ptr %.val, i64 8 %.val.val = load ptr, ptr %10, align 8, !tbaa !11 %11 = sext i32 %2 to i64 + %12 = getelementptr inbounds [2 x [3 x float]], ptr @If_CutDelaySpecial.Pin2Pin, i64 0, i64 %11 %wide.trip.count = and i64 %8, 255 br label %12 12: ; preds = %.lr.ph, %18 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %18 ] - %.01518 = phi float [ 0xC415AF1D80000000, %.lr.ph ], [ %.015., %18 ] + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %19 ] + %.01518 = phi float [ 0xC415AF1D80000000, %.lr.ph ], [ %.015., %19 ] %13 = getelementptr inbounds nuw [0 x i32], ptr %4, i64 0, i64 %indvars.iv %14 = load i32, ptr %13, align 4, !tbaa !34 %15 = sext i32 %14 to i64 @@ -315,7 +316,7 @@ define float @If_CutDelaySpecial(ptr noundef readonly captures(none) %0, ptr nou 18: ; preds = %12 %19 = getelementptr inbounds nuw i8, ptr %17, i64 92 %20 = load float, ptr %19, align 4, !tbaa !36 - %21 = getelementptr inbounds [2 x [3 x float]], ptr @If_CutDelaySpecial.Pin2Pin, i64 0, i64 %11, i64 %indvars.iv + %21 = getelementptr inbounds nuw [3 x float], ptr %12, i64 0, i64 %indvars.iv %22 = load float, ptr %21, align 4, !tbaa !40 %23 = fadd float %20, %22 %24 = fcmp ogt float %.01518, %23 @@ -325,7 +326,7 @@ define float @If_CutDelaySpecial(ptr noundef readonly captures(none) %0, ptr nou br i1 %exitcond.not, label %.critedge, label %12, !llvm.loop !41 .critedge: ; preds = %12, %18, %3 - %.015.lcssa = phi float [ 0xC415AF1D80000000, %3 ], [ %.015., %18 ], [ %.01518, %12 ] + %.015.lcssa = phi float [ 0xC415AF1D80000000, %3 ], [ %.015., %19 ], [ %.01518, %13 ] ret float %.015.lcssa } diff --git a/bench/abc/optimized/mapperUtils.ll b/bench/abc/optimized/mapperUtils.ll index a94af332f70..f71f8acc7c2 100644 --- a/bench/abc/optimized/mapperUtils.ll +++ b/bench/abc/optimized/mapperUtils.ll @@ -600,12 +600,13 @@ define void @Map_MappingSetupTruthTablesLarge(ptr noundef captures(none) %0) loc br label %.preheader33 .preheader33: ; preds = %1, %4 - %indvars.iv41 = phi i64 [ 0, %1 ], [ %indvars.iv.next42, %4 ] + %indvars.iv41 = phi i64 [ 0, %1 ], [ %indvars.iv.next42, %3 ] + %invariant.gep = getelementptr inbounds nuw [32 x i32], ptr %0, i64 0, i64 %indvars.iv41 br label %2 2: ; preds = %.preheader33, %2 %indvars.iv = phi i64 [ 0, %.preheader33 ], [ %indvars.iv.next, %2 ] - %3 = getelementptr inbounds nuw [32 x i32], ptr %0, i64 %indvars.iv, i64 %indvars.iv41 + %3 = getelementptr inbounds nuw [32 x i32], ptr %invariant.gep, i64 %indvars.iv store i32 0, ptr %3, align 4, !tbaa !39 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 10 @@ -617,13 +618,13 @@ define void @Map_MappingSetupTruthTablesLarge(ptr noundef captures(none) %0) loc br i1 %exitcond44.not, label %.preheader31, label %.preheader33, !llvm.loop !55 .preheader31: ; preds = %4, %18 - %indvars.iv49 = phi i64 [ %indvars.iv.next50, %18 ], [ 0, %4 ] + %indvars.iv49 = phi i64 [ %indvars.iv.next50, %17 ], [ 0, %3 ] %5 = trunc nuw nsw i64 %indvars.iv49 to i32 %6 = shl nuw i32 1, %5 br label %7 7: ; preds = %.preheader31, %17 - %indvars.iv45 = phi i64 [ 0, %.preheader31 ], [ %indvars.iv.next46, %17 ] + %indvars.iv45 = phi i64 [ 0, %.preheader31 ], [ %indvars.iv.next46, %16 ] %8 = trunc nuw nsw i64 %indvars.iv45 to i32 %9 = shl nuw nsw i32 1, %8 %10 = and i32 %9, %5 @@ -651,14 +652,14 @@ define void @Map_MappingSetupTruthTablesLarge(ptr noundef captures(none) %0) loc br i1 %exitcond52.not, label %.preheader, label %.preheader31, !llvm.loop !57 .preheader: ; preds = %18, %23 - %indvars.iv57 = phi i64 [ %indvars.iv.next58, %23 ], [ 0, %18 ] + %indvars.iv57 = phi i64 [ %indvars.iv.next58, %22 ], [ 0, %17 ] br label %19 19: ; preds = %.preheader, %19 - %indvars.iv53 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next54, %19 ] + %indvars.iv53 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next54, %18 ] %20 = getelementptr inbounds nuw [32 x i32], ptr %0, i64 %indvars.iv53 %21 = load i32, ptr %20, align 4, !tbaa !39 - %22 = getelementptr inbounds nuw [32 x i32], ptr %0, i64 %indvars.iv53, i64 %indvars.iv57 + %22 = getelementptr inbounds nuw [32 x i32], ptr %19, i64 0, i64 %indvars.iv57 store i32 %21, ptr %22, align 4, !tbaa !39 %indvars.iv.next54 = add nuw nsw i64 %indvars.iv53, 1 %exitcond56.not = icmp eq i64 %indvars.iv.next54, 5 diff --git a/bench/abc/optimized/mpmLib.ll b/bench/abc/optimized/mpmLib.ll index df5b993ab3a..66c36b6e8c3 100644 --- a/bench/abc/optimized/mpmLib.ll +++ b/bench/abc/optimized/mpmLib.ll @@ -19,14 +19,15 @@ define noalias noundef ptr @Mpm_LibLutSetSimple(i32 noundef %0) local_unnamed_ad br label %7 7: ; preds = %.lr.ph, %11 - %indvars.iv18 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next19, %11 ] + %indvars.iv18 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next19, %12 ] %8 = getelementptr inbounds nuw [13 x i32], ptr %4, i64 0, i64 %indvars.iv18 store i32 20, ptr %8, align 4, !tbaa !10 - br label %9 + %9 = getelementptr inbounds nuw [13 x [13 x i32]], ptr %5, i64 0, i64 %indvars.iv18 + br label %10 9: ; preds = %7, %9 - %indvars.iv = phi i64 [ 0, %7 ], [ %indvars.iv.next, %9 ] - %10 = getelementptr inbounds nuw [13 x [13 x i32]], ptr %5, i64 0, i64 %indvars.iv18, i64 %indvars.iv + %indvars.iv = phi i64 [ 0, %7 ], [ %indvars.iv.next, %10 ] + %10 = getelementptr inbounds nuw [13 x i32], ptr %9, i64 0, i64 %indvars.iv store i32 1, ptr %10, align 4, !tbaa !10 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %indvars.iv18 diff --git a/bench/abseil-cpp/optimized/crc.ll b/bench/abseil-cpp/optimized/crc.ll index dab6074e3b7..9057f7921da 100644 --- a/bench/abseil-cpp/optimized/crc.ll +++ b/bench/abseil-cpp/optimized/crc.ll @@ -54,7 +54,7 @@ define dso_local void @_ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j( %10 = icmp eq i32 %.04754.us, 128 %11 = shl nuw nsw i32 %.04754.us, 1 %12 = zext nneg i32 %11 to i64 - %13 = getelementptr inbounds nuw [256 x i32], ptr %3, i64 %indvars.iv61, i64 %12 + %13 = getelementptr inbounds nuw [256 x i32], ptr %6, i64 0, i64 %12 %.046.in.us = select i1 %10, ptr %8, ptr %13 %.046.us = load i32, ptr %.046.in.us, align 4, !tbaa !4 %14 = and i32 %.046.us, 1 @@ -63,7 +63,7 @@ define dso_local void @_ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j( %16 = select i1 %.not53.us, i32 0, i32 %0 %.sink = xor i32 %15, %16 %17 = zext nneg i32 %.04754.us to i64 - %18 = getelementptr inbounds nuw [256 x i32], ptr %3, i64 %indvars.iv61, i64 %17 + %18 = getelementptr inbounds nuw [256 x i32], ptr %6, i64 0, i64 %17 store i32 %.sink, ptr %18, align 4, !tbaa !4 %19 = lshr i32 %.04754.us, 1 %.not50.us = icmp samesign ult i32 %.04754.us, 2 @@ -81,7 +81,7 @@ define dso_local void @_ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j( 22: ; preds = %.split %23 = shl nuw nsw i32 %.04754, 1 %24 = zext nneg i32 %23 to i64 - %25 = getelementptr inbounds nuw [256 x i32], ptr %3, i64 0, i64 %24 + %25 = getelementptr inbounds nuw [256 x i32], ptr %6, i64 0, i64 %24 %.046 = load i32, ptr %25, align 4, !tbaa !4 %26 = and i32 %.046, 1 %.not53 = icmp eq i32 %26, 0 @@ -91,13 +91,13 @@ define dso_local void @_ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j( 28: ; preds = %22 %29 = xor i32 %27, %0 %30 = zext nneg i32 %.04754 to i64 - %31 = getelementptr inbounds nuw [256 x i32], ptr %3, i64 0, i64 %30 + %31 = getelementptr inbounds nuw [256 x i32], ptr %6, i64 0, i64 %30 store i32 %29, ptr %31, align 4, !tbaa !4 br label %35 32: ; preds = %22 %33 = zext nneg i32 %.04754 to i64 - %34 = getelementptr inbounds nuw [256 x i32], ptr %3, i64 0, i64 %33 + %34 = getelementptr inbounds nuw [256 x i32], ptr %6, i64 0, i64 %33 store i32 %27, ptr %34, align 4, !tbaa !4 br label %35 @@ -122,7 +122,7 @@ define dso_local void @_ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j( %.04556 = phi i32 [ %38, %.loopexit ], [ 2, %.preheader.preheader ] %38 = shl i32 %.04556, 1 %39 = sext i32 %.04556 to i64 - %40 = getelementptr inbounds [256 x i32], ptr %3, i64 %indvars.iv61, i64 %39 + %40 = getelementptr inbounds [256 x i32], ptr %6, i64 0, i64 %39 %41 = or disjoint i32 %.04556, 1 %42 = zext i32 %41 to i64 %43 = zext i32 %38 to i64 @@ -132,10 +132,10 @@ define dso_local void @_ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j( %indvars.iv = phi i64 [ %42, %.preheader ], [ %indvars.iv.next, %44 ] %45 = load i32, ptr %40, align 4, !tbaa !4 %46 = sub nuw nsw i64 %indvars.iv, %39 - %47 = getelementptr inbounds nuw [256 x i32], ptr %3, i64 %indvars.iv61, i64 %46 + %47 = getelementptr inbounds nuw [256 x i32], ptr %6, i64 0, i64 %46 %48 = load i32, ptr %47, align 4, !tbaa !4 %49 = xor i32 %48, %45 - %50 = getelementptr inbounds nuw [256 x i32], ptr %3, i64 %indvars.iv61, i64 %indvars.iv + %50 = getelementptr inbounds nuw [256 x i32], ptr %6, i64 0, i64 %indvars.iv store i32 %49, ptr %50, align 4, !tbaa !4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %.not52 = icmp eq i64 %indvars.iv.next, %43 @@ -367,7 +367,7 @@ _ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j.exit.preheader: ; preds %38 = icmp eq i32 %.04754.us.i42, 128 %39 = shl nuw nsw i32 %.04754.us.i42, 1 %40 = zext nneg i32 %39 to i64 - %41 = getelementptr inbounds nuw [256 x i32], ptr %1, i64 %indvars.iv61.i40, i64 %40 + %41 = getelementptr inbounds nuw [256 x i32], ptr %34, i64 0, i64 %40 %.046.in.us.i43 = select i1 %38, ptr %36, ptr %41 %.046.us.i44 = load i32, ptr %.046.in.us.i43, align 4, !tbaa !4 %42 = and i32 %.046.us.i44, 1 @@ -376,7 +376,7 @@ _ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j.exit.preheader: ; preds %44 = select i1 %.not53.us.i45, i32 0, i32 -2097792136 %.sink.i46 = xor i32 %44, %43 %45 = zext nneg i32 %.04754.us.i42 to i64 - %46 = getelementptr inbounds nuw [256 x i32], ptr %1, i64 %indvars.iv61.i40, i64 %45 + %46 = getelementptr inbounds nuw [256 x i32], ptr %34, i64 0, i64 %45 store i32 %.sink.i46, ptr %46, align 4, !tbaa !4 %47 = lshr i32 %.04754.us.i42, 1 %.not50.us.i47 = icmp samesign ult i32 %.04754.us.i42, 2 @@ -394,7 +394,7 @@ _ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j.exit.preheader: ; preds 50: ; preds = %.split.i57 %51 = shl nuw nsw i32 %.04754.i58, 1 %52 = zext nneg i32 %51 to i64 - %53 = getelementptr inbounds nuw [256 x i32], ptr %1, i64 0, i64 %52 + %53 = getelementptr inbounds nuw [256 x i32], ptr %34, i64 0, i64 %52 %.046.i59 = load i32, ptr %53, align 4, !tbaa !4 %54 = and i32 %.046.i59, 1 %.not53.i60 = icmp eq i32 %54, 0 @@ -404,13 +404,13 @@ _ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j.exit.preheader: ; preds 56: ; preds = %50 %57 = xor i32 %55, -2097792136 %58 = zext nneg i32 %.04754.i58 to i64 - %59 = getelementptr inbounds nuw [256 x i32], ptr %1, i64 0, i64 %58 + %59 = getelementptr inbounds nuw [256 x i32], ptr %34, i64 0, i64 %58 store i32 %57, ptr %59, align 4, !tbaa !4 br label %63 60: ; preds = %50 %61 = zext nneg i32 %.04754.i58 to i64 - %62 = getelementptr inbounds nuw [256 x i32], ptr %1, i64 0, i64 %61 + %62 = getelementptr inbounds nuw [256 x i32], ptr %34, i64 0, i64 %61 store i32 %55, ptr %62, align 4, !tbaa !4 br label %63 @@ -440,7 +440,7 @@ _ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j.exit62.preheader: ; pre %.04556.i49 = phi i32 [ %66, %.loopexit.i53 ], [ 2, %.preheader.i48.preheader ] %66 = shl i32 %.04556.i49, 1 %67 = sext i32 %.04556.i49 to i64 - %68 = getelementptr inbounds [256 x i32], ptr %1, i64 %indvars.iv61.i40, i64 %67 + %68 = getelementptr inbounds [256 x i32], ptr %34, i64 0, i64 %67 %69 = or disjoint i32 %.04556.i49, 1 %70 = zext i32 %69 to i64 %71 = zext i32 %66 to i64 @@ -450,10 +450,10 @@ _ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j.exit62.preheader: ; pre %indvars.iv.i50 = phi i64 [ %70, %.preheader.i48 ], [ %indvars.iv.next.i51, %72 ] %73 = load i32, ptr %68, align 4, !tbaa !4 %74 = sub nuw nsw i64 %indvars.iv.i50, %67 - %75 = getelementptr inbounds nuw [256 x i32], ptr %1, i64 %indvars.iv61.i40, i64 %74 + %75 = getelementptr inbounds nuw [256 x i32], ptr %34, i64 0, i64 %74 %76 = load i32, ptr %75, align 4, !tbaa !4 %77 = xor i32 %76, %73 - %78 = getelementptr inbounds nuw [256 x i32], ptr %1, i64 %indvars.iv61.i40, i64 %indvars.iv.i50 + %78 = getelementptr inbounds nuw [256 x i32], ptr %34, i64 0, i64 %indvars.iv.i50 store i32 %77, ptr %78, align 4, !tbaa !4 %indvars.iv.next.i51 = add nuw nsw i64 %indvars.iv.i50, 1 %.not52.i52 = icmp eq i64 %indvars.iv.next.i51, %71 diff --git a/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll b/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll index d0c041e8970..344f6fc6b07 100644 --- a/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll +++ b/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll @@ -8963,19 +8963,17 @@ define hidden i64 @"_ZN6brotli3enc19context_map_entropy30ContextMapEntropy$LT$Al %. = zext i1 %not. to i64 %.0 = select i1 %2, i64 2, i64 %. %3 = getelementptr inbounds nuw i8, ptr %0, i64 528 - %4 = getelementptr inbounds nuw [3 x [2 x [16 x float]]], ptr %3, i64 0, i64 %.0, i64 0 + %4 = getelementptr inbounds nuw [3 x [2 x [16 x float]]], ptr %3, i64 0, i64 %.0 %5 = tail call { i16, i16 } @_ZN6brotli3enc19context_map_entropy18min_cost_speed_max17h9f7f213e0b3289f6E(ptr noalias noundef nonnull readonly align 4 %4, i64 noundef 16) %6 = extractvalue { i16, i16 } %5, 0 %7 = extractvalue { i16, i16 } %5, 1 - %.idx = shl nuw nsw i64 %.0, 7 - %8 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx - %9 = getelementptr inbounds nuw i8, ptr %8, i64 64 - %10 = tail call { i16, i16 } @_ZN6brotli3enc19context_map_entropy18min_cost_speed_max17h9f7f213e0b3289f6E(ptr noalias noundef nonnull readonly align 4 %9, i64 noundef 16) - %11 = extractvalue { i16, i16 } %10, 0 - %12 = extractvalue { i16, i16 } %10, 1 - %.sroa.7.0.insert.ext = zext i16 %12 to i64 + %8 = getelementptr inbounds nuw i8, ptr %4, i64 64 + %9 = tail call { i16, i16 } @_ZN6brotli3enc19context_map_entropy18min_cost_speed_max17h9f7f213e0b3289f6E(ptr noalias noundef nonnull readonly align 4 %8, i64 noundef 16) + %10 = extractvalue { i16, i16 } %9, 0 + %11 = extractvalue { i16, i16 } %9, 1 + %.sroa.7.0.insert.ext = zext i16 %11 to i64 %.sroa.7.0.insert.shift = shl nuw i64 %.sroa.7.0.insert.ext, 48 - %.sroa.5.0.insert.ext = zext i16 %11 to i64 + %.sroa.5.0.insert.ext = zext i16 %10 to i64 %.sroa.5.0.insert.shift = shl nuw nsw i64 %.sroa.5.0.insert.ext, 32 %.sroa.5.0.insert.insert = or disjoint i64 %.sroa.7.0.insert.shift, %.sroa.5.0.insert.shift %.sroa.3.0.insert.ext = zext i16 %7 to i64 @@ -9056,17 +9054,15 @@ define hidden i64 @"_ZN6brotli3enc19context_map_entropy30ContextMapEntropy$LT$Al %. = zext i1 %not. to i64 %.0 = select i1 %2, i64 2, i64 %. %3 = getelementptr inbounds nuw i8, ptr %0, i64 528 - %4 = getelementptr inbounds nuw [3 x [2 x [16 x float]]], ptr %3, i64 0, i64 %.0, i64 0 + %4 = getelementptr inbounds nuw [3 x [2 x [16 x float]]], ptr %3, i64 0, i64 %.0 %5 = tail call noundef float @_ZN6brotli3enc19context_map_entropy14min_cost_value17h2648fee81f427a00E(ptr noalias noundef nonnull readonly align 4 %4, i64 noundef 16) - %.idx = shl nuw nsw i64 %.0, 7 - %6 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx - %7 = getelementptr inbounds nuw i8, ptr %6, i64 64 - %8 = tail call noundef float @_ZN6brotli3enc19context_map_entropy14min_cost_value17h2648fee81f427a00E(ptr noalias noundef nonnull readonly align 4 %7, i64 noundef 16) - %9 = bitcast float %5 to i32 - %10 = bitcast float %8 to i32 - %.sroa.3.0.insert.ext = zext i32 %10 to i64 + %6 = getelementptr inbounds nuw i8, ptr %4, i64 64 + %7 = tail call noundef float @_ZN6brotli3enc19context_map_entropy14min_cost_value17h2648fee81f427a00E(ptr noalias noundef nonnull readonly align 4 %6, i64 noundef 16) + %8 = bitcast float %5 to i32 + %9 = bitcast float %7 to i32 + %.sroa.3.0.insert.ext = zext i32 %9 to i64 %.sroa.3.0.insert.shift = shl nuw i64 %.sroa.3.0.insert.ext, 32 - %.sroa.0.0.insert.ext = zext i32 %9 to i64 + %.sroa.0.0.insert.ext = zext i32 %8 to i64 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.3.0.insert.shift, %.sroa.0.0.insert.ext ret i64 %.sroa.0.0.insert.insert } @@ -9102,6 +9098,7 @@ define hidden void @"_ZN6brotli3enc19context_map_entropy30ContextMapEntropy$LT$A 13: ; preds = %4, %.loopexit %.sroa.0.037 = phi i64 [ 1, %4 ], [ %12, %.loopexit ] + %invariant.gep = getelementptr inbounds nuw [16 x float], ptr %8, i64 0, i64 %.sroa.0.037 br label %30 14: ; preds = %.loopexit @@ -9151,11 +9148,11 @@ define hidden void @"_ZN6brotli3enc19context_map_entropy30ContextMapEntropy$LT$A ret void 30: ; preds = %13, %36 - %31 = phi i1 [ true, %13 ], [ false, %36 ] - %.sroa.04.036.sroa.phi = phi ptr [ %.sroa.0, %13 ], [ %.sroa.5, %36 ] - %.sroa.04.036.sroa.phi39 = phi ptr [ %.sroa.042, %13 ], [ %.sroa.3, %36 ] - %.sroa.04.036 = phi i64 [ 0, %13 ], [ 1, %36 ] - %32 = getelementptr inbounds nuw [3 x [2 x [16 x float]]], ptr %7, i64 0, i64 %.0, i64 %.sroa.04.036, i64 %.sroa.0.037 + %31 = phi i1 [ true, %13 ], [ false, %35 ] + %.sroa.04.036.sroa.phi = phi ptr [ %.sroa.0, %13 ], [ %.sroa.5, %35 ] + %.sroa.04.036.sroa.phi39 = phi ptr [ %.sroa.042, %13 ], [ %.sroa.3, %35 ] + %.sroa.04.036 = phi i64 [ 0, %13 ], [ 1, %35 ] + %32 = getelementptr inbounds nuw [2 x [16 x float]], ptr %invariant.gep, i64 0, i64 %.sroa.04.036 %33 = load float, ptr %32, align 4, !noundef !13 %34 = load float, ptr %.sroa.04.036.sroa.phi39, align 4, !noundef !13 %35 = fcmp olt float %33, %34 diff --git a/bench/arrow/optimized/time.ll b/bench/arrow/optimized/time.ll index 2b97d7ee6ca..892d6b4c7ec 100644 --- a/bench/arrow/optimized/time.ll +++ b/bench/arrow/optimized/time.ll @@ -13,10 +13,11 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define { i32, i64 } @_ZN5arrow4util22GetTimestampConversionENS_8TimeUnit4typeES2_(i32 noundef %0, i32 noundef %1) local_unnamed_addr #0 { %3 = sext i32 %0 to i64 - %4 = sext i32 %1 to i64 - %5 = getelementptr inbounds [4 x [4 x %"struct.std::pair"]], ptr @_ZN5arrow4utilL25kTimestampConversionTableE, i64 0, i64 %3, i64 %4 - %.sroa.0.0.copyload = load i32, ptr %5, align 16 - %.sroa.22.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 8 + %4 = getelementptr inbounds [4 x [4 x %"struct.std::pair"]], ptr @_ZN5arrow4utilL25kTimestampConversionTableE, i64 0, i64 %3 + %5 = sext i32 %1 to i64 + %6 = getelementptr inbounds [4 x %"struct.std::pair"], ptr %4, i64 0, i64 %5 + %.sroa.0.0.copyload = load i32, ptr %6, align 16 + %.sroa.22.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 8 %.sroa.22.0.copyload = load i64, ptr %.sroa.22.0..sroa_idx, align 8 %.fca.0.insert = insertvalue { i32, i64 } poison, i32 %.sroa.0.0.copyload, 0 %.fca.1.insert = insertvalue { i32, i64 } %.fca.0.insert, i64 %.sroa.22.0.copyload, 1 @@ -32,12 +33,13 @@ define void @_ZN5arrow4util21ConvertTimestampValueERKSt10shared_ptrINS_8DataType %9 = getelementptr inbounds nuw i8, ptr %8, i64 72 %10 = load i32, ptr %9, align 8, !tbaa !11 %11 = sext i32 %7 to i64 - %12 = sext i32 %10 to i64 - %13 = getelementptr inbounds [4 x [4 x %"struct.std::pair"]], ptr @_ZN5arrow4utilL25kTimestampConversionTableE, i64 0, i64 %11, i64 %12 - %.sroa.0.0.copyload.i = load i32, ptr %13, align 16 - %.sroa.22.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %13, i64 8 + %12 = getelementptr inbounds [4 x [4 x %"struct.std::pair"]], ptr @_ZN5arrow4utilL25kTimestampConversionTableE, i64 0, i64 %11 + %13 = sext i32 %10 to i64 + %14 = getelementptr inbounds [4 x %"struct.std::pair"], ptr %12, i64 0, i64 %13 + %.sroa.0.0.copyload.i = load i32, ptr %14, align 16 + %.sroa.22.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %14, i64 8 %.sroa.22.0.copyload.i = load i64, ptr %.sroa.22.0..sroa_idx.i, align 8 - switch i32 %.sroa.0.0.copyload.i, label %20 [ + switch i32 %.sroa.0.0.copyload.i, label %21 [ i32 0, label %14 i32 1, label %17 ] diff --git a/bench/assimp/optimized/ASEParser.ll b/bench/assimp/optimized/ASEParser.ll index 5a4f8a2416b..2d2f8e830bc 100644 --- a/bench/assimp/optimized/ASEParser.ll +++ b/bench/assimp/optimized/ASEParser.ll @@ -11206,8 +11206,8 @@ define hidden void @_ZN6Assimp3ASE6Parser26ParseLV3MeshTFaceListBlockEjRNS0_4Mes %19 = icmp eq i8 %18, 42 br i1 %19, label %.lr.ph, label %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread -.lr.ph: ; preds = %.outer, %79 - %20 = phi ptr [ %80, %79 ], [ %17, %.outer ] +.lr.ph: ; preds = %.outer, %80 + %20 = phi ptr [ %80, %80 ], [ %17, %.outer ] %21 = getelementptr inbounds nuw i8, ptr %20, i64 1 store ptr %21, ptr %0, align 8 %22 = call i32 @strncmp(ptr noundef nonnull dereferenceable(11) @.str.181, ptr noundef nonnull dereferenceable(1) %21, i64 noundef 10) #32 @@ -11342,25 +11342,26 @@ _ZN6Assimp3ASE6Parser22ParseLV4MeshLongTripleEPjRj.exit: ; preds = %_ZN6Assimp3A %67 = call noundef ptr @_ZN6Assimp13DefaultLogger3getEv() call void @_ZN6Assimp6Logger4warnIJRA2048_cEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %67, ptr noundef nonnull align 1 dereferenceable(2048) %6) call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %6) #29 - br label %79 + br label %80 68: ; preds = %56 %69 = load i32, ptr %7, align 4 - %70 = getelementptr inbounds nuw %"struct.Assimp::ASE::Face", ptr %59, i64 %57, i32 1, i64 %13 - store i32 %69, ptr %70, align 4 - %71 = load i32, ptr %14, align 4 - %72 = load ptr, ptr %11, align 8 - %73 = getelementptr inbounds nuw %"struct.Assimp::ASE::Face", ptr %72, i64 %57, i32 1, i64 0, i64 1 - %74 = getelementptr i8, ptr %73, i64 %.idx - store i32 %71, ptr %74, align 4 - %75 = load i32, ptr %15, align 4 - %76 = load ptr, ptr %11, align 8 - %77 = getelementptr inbounds nuw %"struct.Assimp::ASE::Face", ptr %76, i64 %57, i32 1, i64 0, i64 2 - %78 = getelementptr i8, ptr %77, i64 %.idx - store i32 %75, ptr %78, align 4 - br label %79 - -79: ; preds = %68, %64 + %70 = getelementptr inbounds nuw %"struct.Assimp::ASE::Face", ptr %59, i64 %57, i32 1 + %71 = getelementptr inbounds nuw [8 x [3 x i32]], ptr %70, i64 0, i64 %13 + store i32 %69, ptr %71, align 4 + %72 = load i32, ptr %14, align 4 + %73 = load ptr, ptr %11, align 8 + %74 = getelementptr inbounds nuw %"struct.Assimp::ASE::Face", ptr %73, i64 %57, i32 1, i64 0, i64 1 + %75 = getelementptr i8, ptr %74, i64 %.idx + store i32 %72, ptr %75, align 4 + %76 = load i32, ptr %15, align 4 + %77 = load ptr, ptr %11, align 8 + %78 = getelementptr inbounds nuw %"struct.Assimp::ASE::Face", ptr %77, i64 %57, i32 1, i64 0, i64 2 + %79 = getelementptr i8, ptr %78, i64 %.idx + store i32 %76, ptr %79, align 4 + br label %80 + +80: ; preds = %68, %64 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #29 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #29 %80 = load ptr, ptr %0, align 8 @@ -11368,8 +11369,8 @@ _ZN6Assimp3ASE6Parser22ParseLV4MeshLongTripleEPjRj.exit: ; preds = %_ZN6Assimp3A %82 = icmp eq i8 %81, 42 br i1 %82, label %.lr.ph, label %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit -_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit: ; preds = %23, %.lr.ph, %79 - %83 = phi ptr [ %21, %23 ], [ %21, %.lr.ph ], [ %80, %79 ] +_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit: ; preds = %23, %.lr.ph, %80 + %83 = phi ptr [ %21, %23 ], [ %21, %.lr.ph ], [ %80, %80 ] %.pre32 = load i8, ptr %83, align 1 br label %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread @@ -11407,9 +11408,9 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread: ; preds = %_ZN6Assimp10TokenM br label %95 95: ; preds = %105, %.lr.ph.i - %96 = phi i32 [ %.promoted25.i, %.lr.ph.i ], [ %104, %105 ] - %97 = phi i8 [ %.promoted24.i, %.lr.ph.i ], [ %storemerge.i15, %105 ] - %98 = phi ptr [ %92, %.lr.ph.i ], [ %106, %105 ] + %96 = phi i32 [ %.promoted25.i, %.lr.ph.i ], [ %104, %106 ] + %97 = phi i8 [ %.promoted24.i, %.lr.ph.i ], [ %storemerge.i15, %106 ] + %98 = phi ptr [ %92, %.lr.ph.i ], [ %106, %106 ] %99 = load i8, ptr %98, align 1 switch i8 %99, label %_ZN6Assimp9IsLineEndIcEEbT_.exit.i [ i8 13, label %100 @@ -11428,10 +11429,10 @@ _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread: ; preds = %_ZN6Assimp10TokenM br label %_ZN6Assimp9IsLineEndIcEEbT_.exit.i _ZN6Assimp9IsLineEndIcEEbT_.exit.i: ; preds = %102, %100, %95 - %storemerge.i15 = phi i8 [ 1, %102 ], [ 0, %95 ], [ 0, %100 ] - %104 = phi i32 [ %103, %102 ], [ %96, %95 ], [ %96, %100 ] + %storemerge.i15 = phi i8 [ 1, %103 ], [ 0, %96 ], [ 0, %101 ] + %104 = phi i32 [ %103, %103 ], [ %96, %96 ], [ %96, %101 ] store i8 %storemerge.i15, ptr %16, align 4 - switch i8 %99, label %105 [ + switch i8 %99, label %106 [ i8 125, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit i8 123, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit i8 42, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit @@ -11463,8 +11464,8 @@ _ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit: ; preds = %_ZN6Assimp9IsLineEn br label %_ZN6Assimp9IsLineEndIcEEbT_.exit _ZN6Assimp9IsLineEndIcEEbT_.exit: ; preds = %109, %88, %86, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread, %112 - %storemerge = phi i8 [ 1, %112 ], [ 0, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread ], [ 0, %86 ], [ 0, %88 ], [ 0, %109 ] - %.11821 = phi i32 [ %.0.ph, %112 ], [ %.0.ph, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread ], [ %87, %86 ], [ %89, %88 ], [ %.0.ph, %109 ] + %storemerge = phi i8 [ 1, %113 ], [ 0, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread ], [ 0, %87 ], [ 0, %89 ], [ 0, %110 ] + %.11821 = phi i32 [ %.0.ph, %113 ], [ %.0.ph, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread ], [ %87, %87 ], [ %89, %89 ], [ %.0.ph, %110 ] store i8 %storemerge, ptr %16, align 4 %115 = getelementptr inbounds nuw i8, ptr %85, i64 1 store ptr %115, ptr %0, align 8 diff --git a/bench/boost/optimized/formatters_cache.ll b/bench/boost/optimized/formatters_cache.ll index 208734633b2..6bc3f16577b 100644 --- a/bench/boost/optimized/formatters_cache.ll +++ b/bench/boost/optimized/formatters_cache.ll @@ -312,10 +312,11 @@ _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatER br label %.body .preheader143: ; preds = %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit118, %109 - %indvars.iv167 = phi i64 [ %indvars.iv.next168, %109 ], [ 0, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit118 ] + %indvars.iv167 = phi i64 [ %indvars.iv.next168, %110 ], [ 0, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit118 ] %100 = getelementptr inbounds nuw [4 x i32], ptr @__const.formatters_cache.styles, i64 0, i64 %indvars.iv167 %101 = load i32, ptr %100, align 4, !tbaa !16 - br label %110 + %102 = getelementptr inbounds nuw [4 x [4 x %"class.icu_70::UnicodeString"]], ptr %.ptr69, i64 0, i64 %indvars.iv167 + br label %111 102: ; preds = %109 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3) #18 @@ -343,10 +344,10 @@ _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatER %111 = getelementptr inbounds nuw [4 x i32], ptr @__const.formatters_cache.styles, i64 0, i64 %indvars.iv163 %112 = load i32, ptr %111, align 4, !tbaa !16 %113 = invoke noundef ptr @_ZN6icu_7010DateFormat22createDateTimeInstanceENS0_6EStyleES1_RKNS_6LocaleE(i32 noundef %101, i32 noundef %112, ptr noundef nonnull align 8 dereferenceable(217) %1) - to label %114 unwind label %146 + to label %115 unwind label %146 114: ; preds = %110 - %115 = getelementptr inbounds nuw [4 x [4 x %"class.icu_70::UnicodeString"]], ptr %.ptr69, i64 0, i64 %indvars.iv167, i64 %indvars.iv163 + %115 = getelementptr inbounds nuw [4 x %"class.icu_70::UnicodeString"], ptr %102, i64 0, i64 %indvars.iv163 %116 = icmp eq ptr %113, null br i1 %116, label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.thread9.i129, label %121 @@ -369,7 +370,7 @@ _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_70 %125 = load ptr, ptr %113, align 8, !tbaa !8 %126 = getelementptr inbounds nuw i8, ptr %125, i64 16 %127 = load ptr, ptr %126, align 8 - %128 = invoke noundef ptr %127(ptr noundef nonnull align 8 dereferenceable(8) %113) + %128 = invoke noundef ptr %128(ptr noundef nonnull align 8 dereferenceable(8) %113) to label %.noexc.i124 unwind label %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122 .noexc.i124: ; preds = %124 @@ -381,11 +382,11 @@ _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_70 br i1 %130, label %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120, label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.i126 _ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120: ; preds = %.noexc3.i125, %121 - %.0.i.i.i121 = phi ptr [ %122, %121 ], [ %113, %.noexc3.i125 ] + %.0.i.i.i121 = phi ptr [ %122, %122 ], [ %113, %.noexc3.i125 ] %131 = load ptr, ptr %.0.i.i.i121, align 8, !tbaa !8 %132 = getelementptr inbounds nuw i8, ptr %131, i64 240 %133 = load ptr, ptr %132, align 8 - %134 = invoke noundef nonnull align 8 dereferenceable(64) ptr %133(ptr noundef nonnull align 8 dereferenceable(864) %.0.i.i.i121, ptr noundef nonnull align 8 dereferenceable(64) %115) + %134 = invoke noundef nonnull align 8 dereferenceable(64) ptr %134(ptr noundef nonnull align 8 dereferenceable(864) %.0.i.i.i121, ptr noundef nonnull align 8 dereferenceable(64) %115) to label %_ZNKSt14default_deleteIN6icu_7010DateFormatEEclEPS1_.exit.i.i123 unwind label %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122 _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.i126: ; preds = %.noexc3.i125 @@ -402,7 +403,7 @@ _ZNKSt14default_deleteIN6icu_7010DateFormatEEclEPS1_.exit.i.i123: ; preds = %_ZN %139 = load ptr, ptr %113, align 8, !tbaa !8 %140 = getelementptr inbounds nuw i8, ptr %139, i64 8 %141 = load ptr, ptr %140, align 8 - tail call void %141(ptr noundef nonnull align 8 dereferenceable(352) %113) #18 + tail call void %142(ptr noundef nonnull align 8 dereferenceable(352) %113) #18 br label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 _ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122: ; preds = %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120, %.noexc.i124, %124 @@ -411,7 +412,7 @@ _ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122: %143 = load ptr, ptr %113, align 8, !tbaa !8 %144 = getelementptr inbounds nuw i8, ptr %143, i64 8 %145 = load ptr, ptr %144, align 8 - tail call void %145(ptr noundef nonnull align 8 dereferenceable(352) %113) #18 + tail call void %146(ptr noundef nonnull align 8 dereferenceable(352) %113) #18 br label %.body _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134: ; preds = %_ZNKSt14default_deleteIN6icu_7010DateFormatEEclEPS1_.exit.i.i123, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.thread9.i129 @@ -487,7 +488,7 @@ _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatER br label %.body .body: ; preds = %163, %165, %167, %146, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122, %98, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i106, %61, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i - %.pn75 = phi { ptr, i32 } [ %62, %61 ], [ %57, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i ], [ %99, %98 ], [ %94, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i106 ], [ %147, %146 ], [ %142, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122 ], [ %168, %167 ], [ %166, %165 ], [ %164, %163 ] + %.pn75 = phi { ptr, i32 } [ %62, %61 ], [ %57, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i ], [ %99, %98 ], [ %94, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i106 ], [ %147, %147 ], [ %142, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122 ], [ %168, %168 ], [ %167, %166 ], [ %165, %164 ] call void @_ZN6icu_706LocaleD1Ev(ptr noundef nonnull align 8 dereferenceable(217) %23) #18 br label %169 @@ -500,7 +501,7 @@ _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatER br label %170 170: ; preds = %170, %169 - %.idx81 = phi i64 [ 1608, %169 ], [ %.add82, %170 ] + %.idx81 = phi i64 [ 1608, %170 ], [ %.add82, %171 ] %.add82 = add nsw i64 %.idx81, -64 %.ptr84 = getelementptr inbounds i8, ptr %0, i64 %.add82 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %.ptr84) #18 @@ -508,7 +509,7 @@ _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatER br i1 %171, label %.preheader142, label %170 .preheader142: ; preds = %170, %.preheader142 - %.idx87 = phi i64 [ %.add88, %.preheader142 ], [ 584, %170 ] + %.idx87 = phi i64 [ %.add88, %.preheader142 ], [ 584, %171 ] %.add88 = add nsw i64 %.idx87, -64 %.ptr90 = getelementptr inbounds i8, ptr %0, i64 %.add88 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %.ptr90) #18 diff --git a/bench/box2d/optimized/linux_joystick.ll b/bench/box2d/optimized/linux_joystick.ll index 8345c50a83b..9ecb0d4f314 100644 --- a/bench/box2d/optimized/linux_joystick.ll +++ b/bench/box2d/optimized/linux_joystick.ll @@ -773,12 +773,13 @@ define hidden i32 @_glfwPollJoystickLinux(ptr noundef %0, i32 noundef %1) local_ 61: ; preds = %60, %59, %52 %62 = load i32, ptr %50, align 4, !tbaa !93 %63 = sext i32 %62 to i64 - %64 = getelementptr inbounds nuw i8, ptr %50, i64 4 - %65 = load i32, ptr %64, align 4, !tbaa !93 - %66 = sext i32 %65 to i64 - %67 = getelementptr inbounds [3 x [3 x i8]], ptr @handleAbsEvent.stateMap, i64 0, i64 %63, i64 %66 - %68 = load i8, ptr %67, align 1, !tbaa !100 - tail call void @_glfwInputJoystickHat(ptr noundef nonnull %0, i32 noundef %43, i8 noundef signext %68) #13 + %64 = getelementptr inbounds [3 x [3 x i8]], ptr @handleAbsEvent.stateMap, i64 0, i64 %63 + %65 = getelementptr inbounds nuw i8, ptr %49, i64 4 + %66 = load i32, ptr %65, align 4, !tbaa !93 + %67 = sext i32 %66 to i64 + %68 = getelementptr inbounds [3 x i8], ptr %64, i64 0, i64 %67 + %69 = load i8, ptr %68, align 1, !tbaa !100 + tail call void @_glfwInputJoystickHat(ptr noundef nonnull %0, i32 noundef %43, i8 noundef signext %69) #13 br label %handleAbsEvent.exit 69: ; preds = %37 @@ -802,7 +803,7 @@ define hidden i32 @_glfwPollJoystickLinux(ptr noundef %0, i32 noundef %1) local_ br label %84 84: ; preds = %76, %69 - %.0.i = phi float [ %83, %76 ], [ %71, %69 ] + %.0.i = phi float [ %83, %77 ], [ %71, %70 ] tail call void @_glfwInputJoystickAxis(ptr noundef nonnull %0, i32 noundef %43, float noundef %.0.i) #13 br label %handleAbsEvent.exit @@ -889,12 +890,13 @@ define internal fastcc void @pollAbsState(ptr noundef %0) unnamed_addr #0 { 36: ; preds = %35, %34, %27 %37 = load i32, ptr %25, align 4, !tbaa !93 %38 = sext i32 %37 to i64 - %39 = getelementptr inbounds nuw i8, ptr %25, i64 4 - %40 = load i32, ptr %39, align 4, !tbaa !93 - %41 = sext i32 %40 to i64 - %42 = getelementptr inbounds [3 x [3 x i8]], ptr @handleAbsEvent.stateMap, i64 0, i64 %38, i64 %41 - %43 = load i8, ptr %42, align 1, !tbaa !100 - tail call void @_glfwInputJoystickHat(ptr noundef nonnull %0, i32 noundef %19, i8 noundef signext %43) #13 + %39 = getelementptr inbounds [3 x [3 x i8]], ptr @handleAbsEvent.stateMap, i64 0, i64 %38 + %40 = getelementptr inbounds nuw i8, ptr %25, i64 4 + %41 = load i32, ptr %40, align 4, !tbaa !93 + %42 = sext i32 %41 to i64 + %43 = getelementptr inbounds [3 x i8], ptr %39, i64 0, i64 %42 + %44 = load i8, ptr %43, align 1, !tbaa !100 + tail call void @_glfwInputJoystickHat(ptr noundef nonnull %0, i32 noundef %19, i8 noundef signext %44) #13 br label %handleAbsEvent.exit 44: ; preds = %17 @@ -917,7 +919,7 @@ define internal fastcc void @pollAbsState(ptr noundef %0) unnamed_addr #0 { br label %58 58: ; preds = %50, %44 - %.0.i = phi float [ %57, %50 ], [ %45, %44 ] + %.0.i = phi float [ %57, %51 ], [ %45, %45 ] tail call void @_glfwInputJoystickAxis(ptr noundef nonnull %0, i32 noundef %19, float noundef %.0.i) #13 br label %handleAbsEvent.exit diff --git a/bench/bullet3/optimized/btCollisionDispatcher.ll b/bench/bullet3/optimized/btCollisionDispatcher.ll index f47e562787f..e013196bdda 100644 --- a/bench/bullet3/optimized/btCollisionDispatcher.ll +++ b/bench/bullet3/optimized/btCollisionDispatcher.ll @@ -104,9 +104,11 @@ define dso_local void @_ZN21btCollisionDispatcherC2EP24btCollisionConfiguration( br label %.preheader .preheader: ; preds = %20, %25 - %indvars.iv26 = phi i64 [ 0, %20 ], [ %indvars.iv.next27, %25 ] - %24 = trunc nuw nsw i64 %indvars.iv26 to i32 - br label %28 + %indvars.iv26 = phi i64 [ 0, %20 ], [ %indvars.iv.next27, %27 ] + %24 = getelementptr inbounds nuw [36 x [36 x ptr]], ptr %22, i64 0, i64 %indvars.iv26 + %25 = getelementptr inbounds nuw [36 x [36 x ptr]], ptr %23, i64 0, i64 %indvars.iv26 + %26 = trunc nuw nsw i64 %indvars.iv26 to i32 + br label %30 25: ; preds = %42 %indvars.iv.next27 = add nuw nsw i64 %indvars.iv26, 1 @@ -119,27 +121,27 @@ define dso_local void @_ZN21btCollisionDispatcherC2EP24btCollisionConfiguration( br label %47 28: ; preds = %.preheader, %42 - %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %42 ] + %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %44 ] %29 = load ptr, ptr %8, align 8, !tbaa !23 %30 = load ptr, ptr %29, align 8, !tbaa !4 %31 = getelementptr inbounds nuw i8, ptr %30, i64 32 %32 = load ptr, ptr %31, align 8 %33 = trunc nuw nsw i64 %indvars.iv to i32 - %34 = invoke noundef ptr %32(ptr noundef nonnull align 8 dereferenceable(8) %29, i32 noundef %24, i32 noundef %33) - to label %35 unwind label %44 + %34 = invoke noundef ptr %34(ptr noundef nonnull align 8 dereferenceable(8) %29, i32 noundef %26, i32 noundef %33) + to label %37 unwind label %44 35: ; preds = %28 - %36 = getelementptr inbounds nuw [36 x [36 x ptr]], ptr %22, i64 0, i64 %indvars.iv26, i64 %indvars.iv + %36 = getelementptr inbounds nuw [36 x ptr], ptr %24, i64 0, i64 %indvars.iv store ptr %34, ptr %36, align 8, !tbaa !29 %37 = load ptr, ptr %8, align 8, !tbaa !23 %38 = load ptr, ptr %37, align 8, !tbaa !4 %39 = getelementptr inbounds nuw i8, ptr %38, i64 40 %40 = load ptr, ptr %39, align 8 - %41 = invoke noundef ptr %40(ptr noundef nonnull align 8 dereferenceable(8) %37, i32 noundef %24, i32 noundef %33) - to label %42 unwind label %44 + %41 = invoke noundef ptr %42(ptr noundef nonnull align 8 dereferenceable(8) %37, i32 noundef %26, i32 noundef %33) + to label %44 unwind label %44 42: ; preds = %35 - %43 = getelementptr inbounds nuw [36 x [36 x ptr]], ptr %23, i64 0, i64 %indvars.iv26, i64 %indvars.iv + %43 = getelementptr inbounds nuw [36 x ptr], ptr %25, i64 0, i64 %indvars.iv store ptr %41, ptr %43, align 8, !tbaa !29 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 36 @@ -154,7 +156,7 @@ define dso_local void @_ZN21btCollisionDispatcherC2EP24btCollisionConfiguration( ret void 47: ; preds = %44, %26 - %.pn = phi { ptr, i32 } [ %45, %44 ], [ %27, %26 ] + %.pn = phi { ptr, i32 } [ %45, %46 ], [ %27, %28 ] %48 = getelementptr inbounds nuw i8, ptr %0, i64 16 tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldED2Ev(ptr noundef nonnull align 8 dereferenceable(25) %48) #11 tail call void @_ZN12btDispatcherD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #11 @@ -315,9 +317,10 @@ declare void @_ZN12btDispatcherD2Ev(ptr noundef nonnull align 8 dereferenceable( define dso_local void @_ZN21btCollisionDispatcher27registerCollisionCreateFuncEiiP30btCollisionAlgorithmCreateFunc(ptr noundef nonnull writeonly align 8 captures(none) dereferenceable(20816) %0, i32 noundef %1, i32 noundef %2, ptr noundef %3) local_unnamed_addr #4 align 2 { %5 = getelementptr inbounds nuw i8, ptr %0, i64 72 %6 = sext i32 %1 to i64 - %7 = sext i32 %2 to i64 - %8 = getelementptr inbounds [36 x [36 x ptr]], ptr %5, i64 0, i64 %6, i64 %7 - store ptr %3, ptr %8, align 8, !tbaa !29 + %7 = getelementptr inbounds [36 x [36 x ptr]], ptr %5, i64 0, i64 %6 + %8 = sext i32 %2 to i64 + %9 = getelementptr inbounds [36 x ptr], ptr %7, i64 0, i64 %8 + store ptr %3, ptr %9, align 8, !tbaa !29 ret void } @@ -325,9 +328,10 @@ define dso_local void @_ZN21btCollisionDispatcher27registerCollisionCreateFuncEi define dso_local void @_ZN21btCollisionDispatcher31registerClosestPointsCreateFuncEiiP30btCollisionAlgorithmCreateFunc(ptr noundef nonnull writeonly align 8 captures(none) dereferenceable(20816) %0, i32 noundef %1, i32 noundef %2, ptr noundef %3) local_unnamed_addr #4 align 2 { %5 = getelementptr inbounds nuw i8, ptr %0, i64 10440 %6 = sext i32 %1 to i64 - %7 = sext i32 %2 to i64 - %8 = getelementptr inbounds [36 x [36 x ptr]], ptr %5, i64 0, i64 %6, i64 %7 - store ptr %3, ptr %8, align 8, !tbaa !29 + %7 = getelementptr inbounds [36 x [36 x ptr]], ptr %5, i64 0, i64 %6 + %8 = sext i32 %2 to i64 + %9 = getelementptr inbounds [36 x ptr], ptr %7, i64 0, i64 %8 + store ptr %3, ptr %9, align 8, !tbaa !29 ret void } @@ -721,14 +725,15 @@ define dso_local noundef ptr @_ZN21btCollisionDispatcher13findAlgorithmEPK24btCo %18 = sext i32 %17 to i64 %. = select i1 %8, i64 72, i64 10440 %19 = getelementptr inbounds nuw i8, ptr %0, i64 %. - %20 = getelementptr inbounds [36 x [36 x ptr]], ptr %19, i64 0, i64 %13, i64 %18 - %21 = load ptr, ptr %20, align 8, !tbaa !29 - %22 = load ptr, ptr %21, align 8, !tbaa !4 - %23 = getelementptr inbounds nuw i8, ptr %22, i64 16 - %24 = load ptr, ptr %23, align 8 - %25 = call noundef ptr %24(ptr noundef nonnull align 8 dereferenceable(9) %21, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull %1, ptr noundef nonnull %2) + %20 = getelementptr inbounds [36 x [36 x ptr]], ptr %19, i64 0, i64 %13 + %21 = getelementptr inbounds [36 x ptr], ptr %20, i64 0, i64 %18 + %22 = load ptr, ptr %21, align 8, !tbaa !29 + %23 = load ptr, ptr %22, align 8, !tbaa !4 + %24 = getelementptr inbounds nuw i8, ptr %23, i64 16 + %25 = load ptr, ptr %24, align 8 + %26 = call noundef ptr %25(ptr noundef nonnull align 8 dereferenceable(9) %22, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull %1, ptr noundef nonnull %2) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #11 - ret ptr %25 + ret ptr %26 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable diff --git a/bench/bullet3/optimized/btDeformableBodySolver.ll b/bench/bullet3/optimized/btDeformableBodySolver.ll index 37457e1cd84..be7d7de6b2b 100644 --- a/bench/bullet3/optimized/btDeformableBodySolver.ll +++ b/bench/bullet3/optimized/btDeformableBodySolver.ll @@ -12535,72 +12535,78 @@ _ZN11btSparseSdfILi3EE5ResetEv.exit: ; preds = %._crit_edge.i, %137 %159 = getelementptr inbounds nuw i8, ptr %.1, i64 268 store i32 %158, ptr %159, align 4, !tbaa !412 %160 = sext i32 %67 to i64 - %161 = sext i32 %73 to i64 - %162 = sext i32 %79 to i64 - %163 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %160, i64 %161, i64 %162 - %164 = load float, ptr %163, align 4, !tbaa !45 + %161 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %160 + %162 = sext i32 %73 to i64 + %163 = getelementptr inbounds [4 x [4 x float]], ptr %161, i64 0, i64 %162 + %164 = sext i32 %79 to i64 + %165 = getelementptr inbounds [4 x float], ptr %163, i64 0, i64 %164 + %166 = load float, ptr %165, align 4, !tbaa !45 %sext = add i64 %.sroa.5.0.insert.shift.i, 4294967296 %165 = ashr exact i64 %sext, 32 - %166 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %165, i64 %161, i64 %162 - %167 = load float, ptr %166, align 4, !tbaa !45 + %166 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %165 + %169 = getelementptr inbounds [4 x [4 x float]], ptr %166, i64 0, i64 %162 + %170 = getelementptr inbounds [4 x float], ptr %169, i64 0, i64 %164 + %171 = load float, ptr %170, align 4, !tbaa !45 %sext138 = add i64 %.sroa.5.0.insert.shift.i141, 4294967296 %168 = ashr exact i64 %sext138, 32 - %169 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %165, i64 %168, i64 %162 - %170 = load float, ptr %169, align 4, !tbaa !45 - %171 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %160, i64 %168, i64 %162 - %172 = load float, ptr %171, align 4, !tbaa !45 - %sext139 = add i64 %.sroa.5.0.insert.shift.i147, 4294967296 - %173 = ashr exact i64 %sext139, 32 - %174 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %160, i64 %161, i64 %173 + %169 = getelementptr inbounds [4 x [4 x float]], ptr %168, i64 0, i64 %168 + %174 = getelementptr inbounds [4 x float], ptr %169, i64 0, i64 %164 %175 = load float, ptr %174, align 4, !tbaa !45 - %176 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %165, i64 %161, i64 %173 - %177 = load float, ptr %176, align 4, !tbaa !45 - %178 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %165, i64 %168, i64 %173 - %179 = load float, ptr %178, align 4, !tbaa !45 - %180 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %160, i64 %168, i64 %173 + %176 = getelementptr inbounds [4 x [4 x float]], ptr %161, i64 0, i64 %172 + %177 = getelementptr inbounds [4 x float], ptr %176, i64 0, i64 %164 + %178 = load float, ptr %177, align 4, !tbaa !45 + %sext139 = add i64 %.sroa.5.0.insert.shift.i147, 4294967296 + %179 = ashr exact i64 %sext139, 32 + %180 = getelementptr inbounds [4 x float], ptr %163, i64 0, i64 %179 %181 = load float, ptr %180, align 4, !tbaa !45 - %182 = fsub float %167, %164 - %183 = fsub float %170, %172 - %184 = fsub float %177, %175 - %185 = fsub float %179, %181 - %186 = fsub float %172, %164 - %187 = fsub float %170, %167 - %188 = fsub float %181, %175 - %189 = fsub float %179, %177 - %190 = fsub float %175, %164 - %191 = fsub float %177, %167 - %192 = fsub float %181, %172 - %193 = fsub float %179, %170 - %194 = fsub float %183, %182 - %195 = tail call noundef float @llvm.fmuladd.f32(float %194, float %75, float %182) - %196 = fsub float %185, %184 - %197 = tail call noundef float @llvm.fmuladd.f32(float %196, float %75, float %184) - %198 = fsub float %197, %195 - %199 = tail call noundef float @llvm.fmuladd.f32(float %198, float %81, float %195) - %200 = fsub float %187, %186 - %201 = tail call noundef float @llvm.fmuladd.f32(float %200, float %69, float %186) - %202 = fsub float %189, %188 - %203 = tail call noundef float @llvm.fmuladd.f32(float %202, float %69, float %188) + %182 = getelementptr inbounds [4 x float], ptr %169, i64 0, i64 %179 + %183 = load float, ptr %182, align 4, !tbaa !45 + %184 = getelementptr inbounds [4 x float], ptr %173, i64 0, i64 %179 + %185 = load float, ptr %184, align 4, !tbaa !45 + %186 = getelementptr inbounds [4 x float], ptr %176, i64 0, i64 %179 + %187 = load float, ptr %186, align 4, !tbaa !45 + %188 = fsub float %171, %166 + %189 = fsub float %175, %178 + %190 = fsub float %183, %181 + %191 = fsub float %185, %187 + %192 = fsub float %178, %166 + %193 = fsub float %175, %171 + %194 = fsub float %187, %181 + %195 = fsub float %185, %183 + %196 = fsub float %181, %166 + %197 = fsub float %183, %171 + %198 = fsub float %187, %178 + %199 = fsub float %185, %175 + %200 = fsub float %189, %188 + %201 = tail call noundef float @llvm.fmuladd.f32(float %200, float %75, float %188) + %202 = fsub float %191, %190 + %203 = tail call noundef float @llvm.fmuladd.f32(float %202, float %75, float %190) %204 = fsub float %203, %201 %205 = tail call noundef float @llvm.fmuladd.f32(float %204, float %81, float %201) - %206 = fsub float %191, %190 - %207 = tail call noundef float @llvm.fmuladd.f32(float %206, float %69, float %190) - %208 = fsub float %193, %192 - %209 = tail call noundef float @llvm.fmuladd.f32(float %208, float %69, float %192) + %206 = fsub float %193, %192 + %207 = tail call noundef float @llvm.fmuladd.f32(float %206, float %69, float %192) + %208 = fsub float %195, %194 + %209 = tail call noundef float @llvm.fmuladd.f32(float %208, float %69, float %194) %210 = fsub float %209, %207 - %211 = tail call noundef float @llvm.fmuladd.f32(float %210, float %75, float %207) - %212 = fmul float %205, %205 - %213 = tail call float @llvm.fmuladd.f32(float %199, float %199, float %212) - %214 = tail call noundef float @llvm.fmuladd.f32(float %211, float %211, float %213) - %215 = fcmp ult float %214, 0x3D10000000000000 - br i1 %215, label %221, label %216 - -216: ; preds = %.loopexit - %sqrt.i = tail call float @llvm.sqrt.f32(float %214) - %217 = fdiv float 1.000000e+00, %sqrt.i - %218 = fmul float %199, %217 - %219 = fmul float %205, %217 - %220 = fmul float %211, %217 + %211 = tail call noundef float @llvm.fmuladd.f32(float %210, float %81, float %207) + %212 = fsub float %197, %196 + %213 = tail call noundef float @llvm.fmuladd.f32(float %212, float %69, float %196) + %214 = fsub float %199, %198 + %215 = tail call noundef float @llvm.fmuladd.f32(float %214, float %69, float %198) + %216 = fsub float %215, %213 + %217 = tail call noundef float @llvm.fmuladd.f32(float %216, float %75, float %213) + %218 = fmul float %211, %211 + %sqrt.i = tail call float @llvm.fmuladd.f32(float %205, float %205, float %218) + %220 = tail call noundef float @llvm.fmuladd.f32(float %217, float %217, float %sqrt.i) + %221 = fcmp ult float %220, 0x3D10000000000000 + br i1 %221, label %227, label %222 + +222: ; preds = %.loopexit + %sqrt.i = tail call float @llvm.sqrt.f32(float %220) + %223 = fdiv float 1.000000e+00, %sqrt.i + %224 = fmul float %205, %223 + %225 = fmul float %211, %223 + %226 = fmul float %217, %223 br label %_ZN9btVector313safeNormalizeEv.exit 221: ; preds = %.loopexit @@ -12608,21 +12614,21 @@ _ZN11btSparseSdfILi3EE5ResetEv.exit: ; preds = %._crit_edge.i, %137 store float 0.000000e+00, ptr %222, align 4, !tbaa !45 br label %_ZN9btVector313safeNormalizeEv.exit -_ZN9btVector313safeNormalizeEv.exit: ; preds = %216, %221 - %.sink7.i = phi float [ 1.000000e+00, %221 ], [ %218, %216 ] - %.sink6.i = phi float [ 0.000000e+00, %221 ], [ %219, %216 ] - %.sink.i = phi float [ 0.000000e+00, %221 ], [ %220, %216 ] +_ZN9btVector313safeNormalizeEv.exit: ; preds = %222, %221 + %.sink7.i = phi float [ 1.000000e+00, %227 ], [ %224, %222 ] + %.sink6.i = phi float [ 0.000000e+00, %227 ], [ %225, %222 ] + %.sink.i = phi float [ 0.000000e+00, %227 ], [ %226, %222 ] %223 = getelementptr inbounds nuw i8, ptr %3, i64 8 %224 = getelementptr inbounds nuw i8, ptr %3, i64 4 store float %.sink7.i, ptr %3, align 4, !tbaa !45 store float %.sink6.i, ptr %224, align 4, !tbaa !45 store float %.sink.i, ptr %223, align 4, !tbaa !45 - %225 = tail call noundef float @llvm.fmuladd.f32(float %182, float %69, float %164) - %226 = tail call noundef float @llvm.fmuladd.f32(float %183, float %69, float %172) + %225 = tail call noundef float @llvm.fmuladd.f32(float %188, float %69, float %166) + %226 = tail call noundef float @llvm.fmuladd.f32(float %189, float %69, float %178) %227 = fsub float %226, %225 %228 = tail call noundef float @llvm.fmuladd.f32(float %227, float %75, float %225) - %229 = tail call noundef float @llvm.fmuladd.f32(float %184, float %69, float %175) - %230 = tail call noundef float @llvm.fmuladd.f32(float %185, float %69, float %181) + %229 = tail call noundef float @llvm.fmuladd.f32(float %190, float %69, float %181) + %230 = tail call noundef float @llvm.fmuladd.f32(float %191, float %69, float %187) %231 = fsub float %230, %229 %232 = tail call noundef float @llvm.fmuladd.f32(float %231, float %75, float %229) %233 = fsub float %232, %228 @@ -16795,6 +16801,7 @@ define linkonce_odr dso_local void @_ZN11btSparseSdfILi3EE9BuildCellERNS0_4CellE %35 = trunc nuw nsw i64 %indvars.iv41 to i32 %36 = uitofp nneg i32 %35 to float %37 = call float @llvm.fmuladd.f32(float %34, float %36, float %22) + %invariant.gep36 = getelementptr inbounds nuw [4 x float], ptr %1, i64 0, i64 %indvars.iv44 br label %39 38: ; preds = %44 @@ -16808,6 +16815,7 @@ define linkonce_odr dso_local void @_ZN11btSparseSdfILi3EE9BuildCellERNS0_4CellE %41 = trunc nuw nsw i64 %indvars.iv37 to i32 %42 = uitofp nneg i32 %41 to float %43 = call float @llvm.fmuladd.f32(float %40, float %42, float %21) + %gep = getelementptr inbounds nuw [4 x [4 x float]], ptr %invariant.gep36, i64 0, i64 %indvars.iv40 br label %45 44: ; preds = %_ZN11btSparseSdfILi3EE15DistanceToShapeERK9btVector3PK16btCollisionShape.exit @@ -16848,7 +16856,7 @@ define linkonce_odr dso_local void @_ZN11btSparseSdfILi3EE9BuildCellERNS0_4CellE _ZN11btSparseSdfILi3EE15DistanceToShapeERK9btVector3PK16btCollisionShape.exit: ; preds = %45, %54 %.0.i = phi float [ %55, %54 ], [ 0.000000e+00, %45 ] call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) #27 - %56 = getelementptr inbounds nuw [4 x [4 x [4 x float]]], ptr %1, i64 0, i64 %indvars.iv, i64 %indvars.iv37, i64 %indvars.iv41 + %56 = getelementptr inbounds nuw [4 x [4 x [4 x float]]], ptr %gep, i64 0, i64 %indvars.iv store float %.0.i, ptr %56, align 4, !tbaa !45 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #27 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 diff --git a/bench/clamav/optimized/Ppmd7.ll b/bench/clamav/optimized/Ppmd7.ll index cf7cb44d356..98f34b3fdc9 100644 --- a/bench/clamav/optimized/Ppmd7.ll +++ b/bench/clamav/optimized/Ppmd7.ll @@ -290,25 +290,26 @@ define internal fastcc void @RestartModel(ptr noundef captures(none) initializes br i1 %exitcond87.not, label %.preheader67, label %.preheader68 .preheader: ; preds = %.preheader67, %70 - %indvars.iv92 = phi i64 [ 0, %.preheader67 ], [ %indvars.iv.next93, %70 ] - %63 = trunc i64 %indvars.iv92 to i16 - %64 = mul nuw nsw i16 %63, 40 - %65 = add nuw nsw i16 %64, 80 - br label %66 - -66: ; preds = %.preheader, %66 - %indvars.iv88 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next89, %66 ] - %67 = getelementptr inbounds nuw [25 x [16 x %struct.CPpmd_See]], ptr %49, i64 0, i64 %indvars.iv92, i64 %indvars.iv88 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 2 - store i8 3, ptr %68, align 2, !tbaa !44 - store i16 %65, ptr %67, align 2, !tbaa !45 - %69 = getelementptr inbounds nuw i8, ptr %67, i64 3 - store i8 4, ptr %69, align 1, !tbaa !46 + %indvars.iv92 = phi i64 [ 0, %.preheader67 ], [ %indvars.iv.next93, %71 ] + %63 = getelementptr inbounds nuw [25 x [16 x %struct.CPpmd_See]], ptr %49, i64 0, i64 %indvars.iv92 + %64 = trunc i64 %indvars.iv92 to i16 + %65 = mul nuw nsw i16 %64, 40 + %66 = add nuw nsw i16 %65, 80 + br label %67 + +67: ; preds = %.preheader, %67 + %indvars.iv88 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next89, %67 ] + %68 = getelementptr inbounds nuw [16 x %struct.CPpmd_See], ptr %63, i64 0, i64 %indvars.iv88 + %69 = getelementptr inbounds nuw i8, ptr %68, i64 2 + store i8 3, ptr %69, align 2, !tbaa !44 + store i16 %66, ptr %68, align 2, !tbaa !45 + %70 = getelementptr inbounds nuw i8, ptr %68, i64 3 + store i8 4, ptr %70, align 1, !tbaa !46 %indvars.iv.next89 = add nuw nsw i64 %indvars.iv88, 1 %exitcond91.not = icmp eq i64 %indvars.iv.next89, 16 - br i1 %exitcond91.not, label %70, label %66 + br i1 %exitcond91.not, label %70, label %67 -70: ; preds = %66 +70: ; preds = %67 %indvars.iv.next93 = add nuw nsw i64 %indvars.iv92, 1 %exitcond95.not = icmp eq i64 %indvars.iv.next93, 25 br i1 %exitcond95.not, label %71, label %.preheader diff --git a/bench/clamav/optimized/pe_icons.ll b/bench/clamav/optimized/pe_icons.ll index 5e48aee64e1..e5fc3285db9 100644 --- a/bench/clamav/optimized/pe_icons.ll +++ b/bench/clamav/optimized/pe_icons.ll @@ -1521,19 +1521,19 @@ define void @cli_icongroupset_add(ptr noundef %0, ptr noundef captures(none) %1, %5 = icmp ult i32 %2, 2 %6 = icmp ne ptr %3, null %or.cond = and i1 %5, %6 - br i1 %or.cond, label %7, label %45 + br i1 %or.cond, label %7, label %46 7: ; preds = %4 %8 = getelementptr inbounds nuw i8, ptr %3, i64 48 %9 = load ptr, ptr %8, align 8, !tbaa !30 %.not = icmp eq ptr %9, null - br i1 %.not, label %45, label %10 + br i1 %.not, label %46, label %10 10: ; preds = %7 %11 = getelementptr inbounds nuw i8, ptr %9, i64 224 %12 = load ptr, ptr %11, align 8, !tbaa !80 %.not40 = icmp eq ptr %12, null - br i1 %.not40, label %45, label %13 + br i1 %.not40, label %46, label %13 13: ; preds = %10 %14 = getelementptr inbounds nuw i8, ptr %12, i64 16 @@ -1541,7 +1541,7 @@ define void @cli_icongroupset_add(ptr noundef %0, ptr noundef captures(none) %1, %16 = getelementptr inbounds nuw [2 x i32], ptr %14, i64 0, i64 %15 %17 = load i32, ptr %16, align 4, !tbaa !60 %.not41 = icmp eq i32 %17, 0 - br i1 %.not41, label %45, label %18 + br i1 %.not41, label %46, label %18 18: ; preds = %13 %19 = load i8, ptr %0, align 1, !tbaa !73 @@ -1557,7 +1557,7 @@ define void @cli_icongroupset_add(ptr noundef %0, ptr noundef captures(none) %1, 24: ; preds = %21 %25 = getelementptr inbounds nuw [2 x [4 x i64]], ptr %1, i64 0, i64 %15 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %25, i8 -1, i64 32, i1 false) - br label %45 + br label %46 26: ; preds = %21, %18 %27 = getelementptr inbounds nuw [2 x ptr], ptr %12, i64 0, i64 %15 @@ -1585,20 +1585,21 @@ define void @cli_icongroupset_add(ptr noundef %0, ptr noundef captures(none) %1, .thread: ; preds = %33, %34 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.14, i32 noundef %2, ptr noundef nonnull %0) #13 - br label %45 + br label %46 37: ; preds = %34 %38 = and i64 %indvars.iv, 63 %39 = lshr i64 %indvars.iv, 6 %40 = shl nuw i64 1, %38 - %41 = and i64 %39, 67108863 - %42 = getelementptr inbounds nuw [2 x [4 x i64]], ptr %1, i64 0, i64 %15, i64 %41 - %43 = load i64, ptr %42, align 8, !tbaa !88 - %44 = or i64 %43, %40 - store i64 %44, ptr %42, align 8, !tbaa !88 - br label %45 - -45: ; preds = %.thread, %37, %4, %7, %10, %13, %24 + %41 = getelementptr inbounds nuw [2 x [4 x i64]], ptr %1, i64 0, i64 %15 + %42 = and i64 %39, 67108863 + %43 = getelementptr inbounds nuw [4 x i64], ptr %41, i64 0, i64 %42 + %44 = load i64, ptr %43, align 8, !tbaa !88 + %45 = or i64 %44, %40 + store i64 %45, ptr %43, align 8, !tbaa !88 + br label %46 + +46: ; preds = %.thread, %37, %4, %7, %10, %13, %24 ret void } diff --git a/bench/clap-rs/optimized/5651dp9k16h53y8x.ll b/bench/clap-rs/optimized/5651dp9k16h53y8x.ll index 7f14f8c250d..1218ee11bf6 100644 --- a/bench/clap-rs/optimized/5651dp9k16h53y8x.ll +++ b/bench/clap-rs/optimized/5651dp9k16h53y8x.ll @@ -3754,12 +3754,13 @@ define hidden { ptr, i64 } @_ZN8anstream7adapter5strip8next_str17h4bd4a530e0bdbd 15: ; preds = %.lr.ph.i.i %16 = zext nneg i8 %9 to i64 - %17 = getelementptr inbounds nuw [16 x [256 x i8]], ptr @anon.8a15c8b2664a73ecad88cbf6a449d693.0, i64 0, i64 %16, i64 %11 - %18 = load i8, ptr %17, align 1, !noalias !876, !noundef !10 + %17 = getelementptr inbounds nuw [16 x [256 x i8]], ptr @anon.8a15c8b2664a73ecad88cbf6a449d693.0, i64 0, i64 %16 + %18 = getelementptr inbounds nuw [256 x i8], ptr %17, i64 0, i64 %11 + %19 = load i8, ptr %18, align 1, !noalias !876, !noundef !10 br label %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i _ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i: ; preds = %15, %.lr.ph.i.i - %.0.i.i.i.i.i.i = phi i8 [ %18, %15 ], [ %13, %.lr.ph.i.i ] + %.0.i.i.i.i.i.i = phi i8 [ %19, %15 ], [ %13, %.lr.ph.i.i ] %19 = and i8 %.0.i.i.i.i.i.i, 15 %20 = lshr i8 %.0.i.i.i.i.i.i, 4 %.not.i.i.i.i.i = icmp eq i8 %19, 0 @@ -3770,7 +3771,7 @@ _ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i: ; pre br label %22 22: ; preds = %21, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i - %23 = phi i8 [ %19, %21 ], [ %9, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i ] + %23 = phi i8 [ %19, %22 ], [ %9, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i ] switch i8 %20, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" [ i8 12, label %24 i8 15, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" @@ -3830,12 +3831,12 @@ _ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i: ; pre br i1 %38, label %39, label %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 39: ; preds = %.lr.ph.i - %40 = getelementptr inbounds nuw [16 x [256 x i8]], ptr @anon.8a15c8b2664a73ecad88cbf6a449d693.0, i64 0, i64 12, i64 %35 + %40 = getelementptr inbounds nuw [256 x i8], ptr getelementptr inbounds nuw (i8, ptr @anon.8a15c8b2664a73ecad88cbf6a449d693.0, i64 3072), i64 0, i64 %35 %41 = load i8, ptr %40, align 1, !noalias !877, !noundef !10 br label %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 _ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46: ; preds = %39, %.lr.ph.i - %.0.i.i.i.i.i.i47 = phi i8 [ %41, %39 ], [ %37, %.lr.ph.i ] + %.0.i.i.i.i.i.i47 = phi i8 [ %41, %40 ], [ %37, %.lr.ph.i ] %42 = lshr i8 %.0.i.i.i.i.i.i47, 4 switch i8 %42, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" [ i8 12, label %43 @@ -3872,7 +3873,7 @@ _ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46: ; p br i1 %47, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread", label %.lr.ph.i "_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit": ; preds = %43, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" - %switch39 = phi i64 [ %.0.i1.i, %43 ], [ %spec.select.i.i.i.i, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" ] + %switch39 = phi i64 [ %.0.i1.i, %44 ], [ %spec.select.i.i.i.i, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" ] %.not38 = icmp ugt i64 %switch39, %31 br i1 %.not38, label %48, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread" diff --git a/bench/cmake/optimized/nghttp2_hd_huffman.ll b/bench/cmake/optimized/nghttp2_hd_huffman.ll index 2e5f85bf4f2..6087c5442da 100644 --- a/bench/cmake/optimized/nghttp2_hd_huffman.ll +++ b/bench/cmake/optimized/nghttp2_hd_huffman.ll @@ -203,55 +203,57 @@ define dso_local i64 @nghttp2_hd_huff_decode(ptr noundef captures(none) %0, ptr %8 = getelementptr inbounds nuw i8, ptr %1, i64 24 br label %9 -9: ; preds = %.lr.ph, %37 - %10 = phi i16 [ %7, %.lr.ph ], [ %31, %37 ] - %.02228 = phi ptr [ %2, %.lr.ph ], [ %11, %37 ] +9: ; preds = %.lr.ph, %39 + %10 = phi i16 [ %7, %.lr.ph ], [ %33, %39 ] + %.02228 = phi ptr [ %2, %.lr.ph ], [ %11, %39 ] %11 = getelementptr inbounds nuw i8, ptr %.02228, i64 1 %12 = load i8, ptr %.02228, align 1, !tbaa !4 %13 = and i16 %10, 511 %14 = zext nneg i16 %13 to i64 - %15 = zext i8 %12 to i32 - %16 = lshr i32 %15, 4 - %17 = zext nneg i32 %16 to i64 - %18 = getelementptr inbounds nuw [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %14, i64 %17 - %19 = load i16, ptr %18, align 2, !tbaa !29 - %.not25 = icmp sgt i16 %19, -1 - br i1 %.not25, label %25, label %20 - -20: ; preds = %9 - %21 = getelementptr inbounds nuw i8, ptr %18, i64 2 - %22 = load i8, ptr %21, align 2, !tbaa !31 - %23 = load ptr, ptr %8, align 8, !tbaa !32 - %24 = getelementptr inbounds nuw i8, ptr %23, i64 1 - store ptr %24, ptr %8, align 8, !tbaa !32 - store i8 %22, ptr %23, align 1, !tbaa !4 - br label %25 - -25: ; preds = %20, %9 - %26 = and i16 %19, 511 - %27 = zext nneg i16 %26 to i64 - %28 = and i32 %15, 15 - %29 = zext nneg i32 %28 to i64 - %30 = getelementptr inbounds nuw [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %27, i64 %29 - %31 = load i16, ptr %30, align 2, !tbaa !29 - %.not26 = icmp sgt i16 %31, -1 - br i1 %.not26, label %37, label %32 - -32: ; preds = %25 - %33 = getelementptr inbounds nuw i8, ptr %30, i64 2 - %34 = load i8, ptr %33, align 2, !tbaa !31 - %35 = load ptr, ptr %8, align 8, !tbaa !32 - %36 = getelementptr inbounds nuw i8, ptr %35, i64 1 - store ptr %36, ptr %8, align 8, !tbaa !32 - store i8 %34, ptr %35, align 1, !tbaa !4 - br label %37 - -37: ; preds = %32, %25 + %15 = getelementptr inbounds nuw [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %14 + %16 = zext i8 %12 to i32 + %17 = lshr i32 %16, 4 + %18 = zext nneg i32 %17 to i64 + %19 = getelementptr inbounds nuw [16 x %struct.nghttp2_huff_decode], ptr %15, i64 0, i64 %18 + %20 = load i16, ptr %19, align 2, !tbaa !29 + %.not25 = icmp sgt i16 %20, -1 + br i1 %.not25, label %26, label %21 + +21: ; preds = %9 + %22 = getelementptr inbounds nuw i8, ptr %19, i64 2 + %23 = load i8, ptr %22, align 2, !tbaa !31 + %24 = load ptr, ptr %8, align 8, !tbaa !32 + %25 = getelementptr inbounds nuw i8, ptr %24, i64 1 + store ptr %25, ptr %8, align 8, !tbaa !32 + store i8 %23, ptr %24, align 1, !tbaa !4 + br label %26 + +26:; preds = %21, %9 + %27 = and i16 %20, 511 + %28 = zext nneg i16 %27 to i64 + %29 = getelementptr inbounds nuw [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %28 + %30 = and i32 %16, 15 + %31 = zext nneg i32 %30 to i64 + %32 = getelementptr inbounds nuw [16 x %struct.nghttp2_huff_decode], ptr %29, i64 0, i64 %31 + %33 = load i16, ptr %32, align 2, !tbaa !29 + %.not26 = icmp sgt i16 %33, -1 + br i1 %.not26, label %39, label %34 + +34:; preds = %26 + %35 = getelementptr inbounds nuw i8, ptr %32, i64 2 + %36 = load i8, ptr %35, align 2, !tbaa !31 + %37 = load ptr, ptr %8, align 8, !tbaa !32 + %38 = getelementptr inbounds nuw i8, ptr %37, i64 1 + store ptr %38, ptr %8, align 8, !tbaa !32 + store i8 %36, ptr %37, align 1, !tbaa !4 + br label %39 + +39: ; preds = %34, %26 %.not = icmp eq ptr %11, %6 br i1 %.not, label %._crit_edge, label %9, !llvm.loop !33 -._crit_edge: ; preds = %37, %5 - %38 = phi i16 [ %7, %5 ], [ %31, %37 ] +._crit_edge: ; preds = %39, %5 + %38 = phi i16 [ %7, %5 ], [ %33, %39 ] store i16 %38, ptr %0, align 2, !tbaa !26 %.not23 = icmp ne i32 %4, 0 %39 = and i16 %38, 16384 diff --git a/bench/darktable/optimized/blend.ll b/bench/darktable/optimized/blend.ll index d169477c03f..08b00a0409b 100644 --- a/bench/darktable/optimized/blend.ll +++ b/bench/darktable/optimized/blend.ll @@ -338,43 +338,47 @@ define range(i32 0, 2) i32 @dt_develop_blendif_init_masking_profile(ptr noundef %21 = getelementptr inbounds nuw i8, ptr %1, i64 960 br label %.preheader33 -.preheader33: ; preds = %18, %22 - %.03037 = phi i64 [ 0, %18 ], [ %23, %22 ] +.preheader33: ; preds = %18, %24 + %.03037 = phi i64 [ 0, %18 ], [ %25, %24 ] + %22 = getelementptr inbounds nuw [4 x [4 x float]], ptr @__const.dt_develop_blendif_init_masking_profile.M, i64 0, i64 %.03039 + %23 = getelementptr inbounds nuw [4 x [4 x float]], ptr %20, i64 0, i64 %.03039 + %invariant.gep36 = getelementptr inbounds nuw [4 x float], ptr %21, i64 0, i64 %.03039 br label %.preheader -.preheader: ; preds = %.preheader33, %24 - %.02936 = phi i64 [ 0, %.preheader33 ], [ %27, %24 ] - br label %28 - -22: ; preds = %24 - %23 = add nuw nsw i64 %.03037, 1 - %exitcond39.not = icmp eq i64 %23, 3 - br i1 %exitcond39.not, label %.loopexit, label %.preheader33 - -24: ; preds = %28 - %25 = getelementptr inbounds nuw [4 x [4 x float]], ptr %20, i64 0, i64 %.03037, i64 %.02936 - store float %34, ptr %25, align 4, !tbaa !31 - %26 = getelementptr inbounds nuw [4 x [4 x float]], ptr %21, i64 0, i64 %.02936, i64 %.03037 - store float %34, ptr %26, align 4, !tbaa !31 - %27 = add nuw nsw i64 %.02936, 1 - %exitcond38.not = icmp eq i64 %27, 3 - br i1 %exitcond38.not, label %22, label %.preheader - -28: ; preds = %.preheader, %28 - %.035 = phi i64 [ 0, %.preheader ], [ %35, %28 ] - %.02834 = phi float [ 0.000000e+00, %.preheader ], [ %34, %28 ] - %29 = getelementptr inbounds nuw [4 x [4 x float]], ptr @__const.dt_develop_blendif_init_masking_profile.M, i64 0, i64 %.03037, i64 %.035 - %30 = load float, ptr %29, align 4, !tbaa !31 - %31 = getelementptr inbounds nuw [4 x [4 x float]], ptr %19, i64 0, i64 %.035, i64 %.02936 - %32 = load float, ptr %31, align 4, !tbaa !31 - %33 = fmul reassoc nsz arcp contract afn float %32, %30 +.preheader: ; preds = %.preheader33, %26 + %.02936 = phi i64 [ 0, %.preheader33 ], [ %28, %26 ] + %invariant.gep = getelementptr inbounds nuw [4 x float], ptr %19, i64 0, i64 %.02938 + br label %29 + +24:; preds = %26 + %25 = add nuw nsw i64 %.03039, 1 + %exitcond41.not = icmp eq i64 %25, 3 + br i1 %exitcond41.not, label %.loopexit, label %.preheader33 + +26: ; preds = %29 + %27 = getelementptr inbounds nuw [4 x float], ptr %23, i64 0, i64 %.02938 + store float %34, ptr %27, align 4, !tbaa !31 + %gep37 = getelementptr inbounds nuw [4 x [4 x float]], ptr %invariant.gep36, i64 0, i64 %.02938 + store float %34, ptr %gep37, align 4, !tbaa !31 + %28 = add nuw nsw i64 %.02938, 1 + %exitcond40.not = icmp eq i64 %28, 3 + br i1 %exitcond40.not, label %24, label %.preheader + +29: ; preds = %.preheader, %29 + %.02834 = phi i64 [ 0, %.preheader ], [ %35, %29 ] + %.02834 = phi float [ 0.000000e+00, %.preheader ], [ %34, %29 ] + %30 = getelementptr inbounds nuw [4 x float], ptr %22, i64 0, i64 %.035 + %31 = load float, ptr %30, align 4, !tbaa !31 + %gep = getelementptr inbounds nuw [4 x [4 x float]], ptr %invariant.gep, i64 0, i64 %.035 + %32 = load float, ptr %gep, align 4, !tbaa !31 + %33 = fmul reassoc nsz arcp contract afn float %32, %31 %34 = fadd reassoc nsz arcp contract afn float %33, %.02834 %35 = add nuw nsw i64 %.035, 1 %exitcond.not = icmp eq i64 %35, 3 - br i1 %exitcond.not, label %24, label %28 + br i1 %exitcond.not, label %26, label %29 -.loopexit: ; preds = %22, %16 - %.031 = phi i32 [ 0, %16 ], [ 1, %22 ] +.loopexit: ; preds = %24, %16 + %.031 = phi i32 [ 0, %16 ], [ 1, %24 ] ret i32 %.031 } diff --git a/bench/darktable/optimized/colordata.ll b/bench/darktable/optimized/colordata.ll index 12bb3240396..1c717ec5a5e 100644 --- a/bench/darktable/optimized/colordata.ll +++ b/bench/darktable/optimized/colordata.ll @@ -857,7 +857,7 @@ define noundef range(i32 0, 2) i32 @_ZN6LibRaw11adobe_coeffEjPKci(ptr noundef no br label %37 37: ; preds = %33, %95 - %indvars.iv79 = phi i64 [ 0, %33 ], [ %indvars.iv.next80, %95 ] + %indvars.iv79 = phi i64 [ 0, %33 ], [ %indvars.iv.next80, %97 ] %38 = getelementptr inbounds nuw [792 x %struct.anon], ptr @_ZZN6LibRaw11adobe_coeffEjPKciE5table, i64 0, i64 %indvars.iv79 %39 = load i32, ptr %38, align 8, !tbaa !75 %40 = icmp eq i32 %39, %1 @@ -939,13 +939,14 @@ define noundef range(i32 0, 2) i32 @_ZN6LibRaw11adobe_coeffEjPKci(ptr noundef no %.lhs.trunc.us = trunc i64 %indvars.iv87 to i8 %77 = udiv i8 %.lhs.trunc.us, 3 %78 = zext nneg i8 %77 to i64 - %79 = urem i8 %.lhs.trunc.us, 3 - %80 = zext nneg i8 %79 to i64 - %81 = getelementptr inbounds nuw [4 x [3 x float]], ptr %72, i64 0, i64 %78, i64 %80 - store float %76, ptr %81, align 4, !tbaa !83 - %82 = fpext reassoc nsz arcp contract afn float %76 to double - %83 = getelementptr inbounds nuw double, ptr %5, i64 %indvars.iv87 - store double %82, ptr %83, align 8, !tbaa !84 + %79 = getelementptr inbounds nuw [4 x [3 x float]], ptr %72, i64 0, i64 %78 + %80 = urem i8 %.lhs.trunc.us, 3 + %81 = zext nneg i8 %80 to i64 + %82 = getelementptr inbounds nuw [3 x float], ptr %79, i64 0, i64 %81 + store float %76, ptr %82, align 4, !tbaa !83 + %83 = fpext reassoc nsz arcp contract afn float %76 to double + %84 = getelementptr inbounds nuw double, ptr %5, i64 %indvars.iv87 + store double %83, ptr %84, align 8, !tbaa !84 %indvars.iv.next88 = add nuw nsw i64 %indvars.iv87, 1 %exitcond90.not = icmp eq i64 %indvars.iv.next88, 12 br i1 %exitcond90.not, label %93, label %.split.us, !llvm.loop !85 @@ -959,10 +960,11 @@ define noundef range(i32 0, 2) i32 @_ZN6LibRaw11adobe_coeffEjPKci(ptr noundef no %.lhs.trunc64 = trunc i64 %indvars.iv83 to i8 %88 = udiv i8 %.lhs.trunc64, 3 %89 = zext nneg i8 %88 to i64 - %90 = urem i8 %.lhs.trunc64, 3 - %91 = zext nneg i8 %90 to i64 - %92 = getelementptr inbounds nuw [4 x [3 x float]], ptr %72, i64 0, i64 %89, i64 %91 - store float %87, ptr %92, align 4, !tbaa !83 + %91 = getelementptr inbounds nuw [4 x [3 x float]], ptr %72, i64 0, i64 %90 + %92 = urem i8 %.lhs.trunc64, 3 + %93 = zext nneg i8 %92 to i64 + %94 = getelementptr inbounds nuw [3 x float], ptr %91, i64 0, i64 %93 + store float %88, ptr %94, align 4, !tbaa !83 %indvars.iv.next84 = add nuw nsw i64 %indvars.iv83, 1 %exitcond86.not = icmp eq i64 %indvars.iv.next84, 12 br i1 %exitcond86.not, label %.critedge61, label %.split, !llvm.loop !85 @@ -978,7 +980,7 @@ define noundef range(i32 0, 2) i32 @_ZN6LibRaw11adobe_coeffEjPKci(ptr noundef no br i1 %exitcond82.not, label %.critedge61, label %37, !llvm.loop !86 .critedge61: ; preds = %95, %.split, %67, %93, %4 - %.0 = phi i32 [ 1, %4 ], [ 1, %67 ], [ 1, %93 ], [ 1, %.split ], [ 0, %95 ] + %.0 = phi i32 [ 1, %4 ], [ 1, %67 ], [ 1, %95 ], [ 1, %.split ], [ 0, %97 ] call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %5) #9 ret i32 %.0 } diff --git a/bench/darktable/optimized/exif_gps.ll b/bench/darktable/optimized/exif_gps.ll index d64bd208cde..f5c3f775558 100644 --- a/bench/darktable/optimized/exif_gps.ll +++ b/bench/darktable/optimized/exif_gps.ll @@ -814,7 +814,9 @@ define void @_ZN6LibRaw10parse_exifEi(ptr noundef nonnull align 8 dereferenceabl .preheader129: ; preds = %356, %.loopexit %indvars.iv158 = phi i64 [ %indvars.iv.next159, %.loopexit ], [ 0, %356 ] %.061141 = phi ptr [ %370, %.loopexit ], [ %362, %356 ] - br label %363 + %363 = getelementptr inbounds nuw [3 x [4 x float]], ptr %55, i64 0, i64 %indvars.iv158 + %invariant.gep = getelementptr inbounds nuw [4 x float], ptr %55, i64 0, i64 %indvars.iv158 + br label %364 363: ; preds = %.preheader129, %371 %indvars.iv = phi i64 [ 0, %.preheader129 ], [ %indvars.iv.next, %371 ] @@ -823,9 +825,9 @@ define void @_ZN6LibRaw10parse_exifEi(ptr noundef nonnull align 8 dereferenceabl %364 = call i64 @strtol(ptr noundef nonnull captures(none) %.1138, ptr noundef null, i32 noundef 10) #10 %365 = trunc i64 %364 to i32 %366 = sitofp i32 %365 to float - %367 = getelementptr inbounds nuw [3 x [4 x float]], ptr %55, i64 0, i64 %indvars.iv158, i64 %indvars.iv + %367 = getelementptr inbounds nuw [4 x float], ptr %363, i64 0, i64 %indvars.iv store float %366, ptr %367, align 4, !tbaa !111 - %368 = getelementptr inbounds nuw [3 x [4 x float]], ptr %55, i64 0, i64 %indvars.iv, i64 %indvars.iv158 + %368 = getelementptr inbounds nuw [3 x [4 x float]], ptr %invariant.gep, i64 0, i64 %indvars.iv %369 = load float, ptr %368, align 4, !tbaa !111 %370 = call ptr @strtok_r(ptr noundef null, ptr noundef nonnull @.str.19, ptr noundef nonnull %9) #10 %.not98 = icmp eq ptr %370, null @@ -848,7 +850,7 @@ define void @_ZN6LibRaw10parse_exifEi(ptr noundef nonnull align 8 dereferenceabl .preheader: ; preds = %.preheader.preheader, %.preheader %indvars.iv154 = phi i64 [ %indvars.iv.next155, %.preheader ], [ 0, %.preheader.preheader ] - %377 = getelementptr inbounds nuw [3 x [4 x float]], ptr %55, i64 0, i64 %indvars.iv158, i64 %indvars.iv154 + %377 = getelementptr inbounds nuw [4 x float], ptr %363, i64 0, i64 %indvars.iv154 %378 = load float, ptr %377, align 4, !tbaa !111 %379 = fmul reassoc nsz arcp contract afn float %378, %376 store float %379, ptr %377, align 4, !tbaa !111 diff --git a/bench/darktable/optimized/identify_tools.ll b/bench/darktable/optimized/identify_tools.ll index 790ed271b37..23a76fd8011 100644 --- a/bench/darktable/optimized/identify_tools.ll +++ b/bench/darktable/optimized/identify_tools.ll @@ -45,7 +45,7 @@ define noundef signext range(i16 18761, 19790) i16 @_ZN6LibRaw16guess_byte_order %23 = phi i1 [ true, %.lr.ph ], [ false, %22 ] %indvars.iv.sroa.phi = phi ptr [ %.sroa.0, %.lr.ph ], [ %.sroa.5, %22 ] %indvars.iv = phi i64 [ 0, %.lr.ph ], [ 1, %22 ] - %24 = getelementptr inbounds nuw [4 x [2 x i8]], ptr %3, i64 0, i64 %20, i64 %indvars.iv + %24 = getelementptr inbounds nuw [2 x i8], ptr %21, i64 0, i64 %indvars.iv %25 = load i8, ptr %24, align 1, !tbaa !73 %26 = zext i8 %25 to i32 %27 = shl nuw nsw i32 %26, 8 @@ -54,7 +54,7 @@ define noundef signext range(i16 18761, 19790) i16 @_ZN6LibRaw16guess_byte_order %28 = load i8, ptr %.sroa.sel, align 1, !tbaa !73 %29 = zext i8 %28 to i32 %30 = or disjoint i32 %27, %29 - %31 = getelementptr inbounds nuw [4 x [2 x i8]], ptr %3, i64 0, i64 %13, i64 %indvars.iv + %31 = getelementptr inbounds nuw [2 x i8], ptr %14, i64 0, i64 %indvars.iv %32 = load i8, ptr %31, align 1, !tbaa !73 %33 = zext i8 %32 to i32 %34 = shl nuw nsw i32 %33, 8 @@ -112,6 +112,8 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a %8 = getelementptr inbounds nuw i8, ptr %0, i64 22 %9 = load i16, ptr %8, align 2, !tbaa !78 %10 = icmp ugt i16 %9, 2064 + %indvars.iv81.sroa.gep = getelementptr inbounds nuw i8, ptr %6, i64 4128 + %indvars.iv87.sroa.gep = getelementptr inbounds nuw i8, ptr %6, i64 4128 br i1 %10, label %._crit_edge.thread, label %.preheader54 .preheader54: ; preds = %5 @@ -124,7 +126,7 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a .preheader54.split.us: ; preds = %.preheader54, %._crit_edge.split.us.us %.not.us = phi i1 [ false, %._crit_edge.split.us.us ], [ true, %.preheader54 ] - %indvars.iv87 = phi i64 [ 1, %._crit_edge.split.us.us ], [ 0, %.preheader54 ] + %indvars.iv87 = phi ptr [ %indvars.iv87.sroa.gep, %._crit_edge.split.us.us ], [ %6, %.preheader54 ] %.04870.us = phi i64 [ %.149.lcssa.us, %._crit_edge.split.us.us ], [ 0, %.preheader54 ] %16 = load ptr, ptr %11, align 8, !tbaa !6 %17 = select i1 %.not.us, i32 %3, i32 %4 @@ -164,7 +166,7 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a %31 = shl i64 %.2.lcssa.us.us, %30 %32 = lshr i64 %31, %15 %33 = trunc i64 %32 to i16 - %34 = getelementptr inbounds nuw [2 x [2064 x i16]], ptr %6, i64 0, i64 %indvars.iv87, i64 %indvars.iv84 + %34 = getelementptr inbounds nuw [2064 x i16], ptr %indvars.iv87, i64 0, i64 %indvars.iv84 store i16 %33, ptr %34, align 2, !tbaa !80 %indvars.iv.next85 = add nuw nsw i64 %indvars.iv84, 1 %35 = zext i16 %28 to i64 @@ -252,7 +254,7 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a .preheader54.split: ; preds = %.preheader54, %._crit_edge.split %.not = phi i1 [ false, %._crit_edge.split ], [ true, %.preheader54 ] - %indvars.iv81 = phi i64 [ 1, %._crit_edge.split ], [ 0, %.preheader54 ] + %indvars.iv81 = phi ptr [ %indvars.iv81.sroa.gep, %._crit_edge.split ], [ %6, %.preheader54 ] %.04870 = phi i64 [ %.149.lcssa, %._crit_edge.split ], [ 0, %.preheader54 ] %81 = load ptr, ptr %11, align 8, !tbaa !6 %82 = select i1 %.not, i32 %3, i32 %4 @@ -293,7 +295,7 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a %97 = shl i64 %.2.lcssa, %96 %98 = lshr i64 %97, %15 %99 = trunc i64 %98 to i16 - %100 = getelementptr inbounds nuw [2 x [2064 x i16]], ptr %6, i64 0, i64 %indvars.iv81, i64 %indvars.iv + %100 = getelementptr inbounds nuw [2064 x i16], ptr %indvars.iv81, i64 0, i64 %indvars.iv store i16 %99, ptr %100, align 2, !tbaa !80 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count diff --git a/bench/darktable/optimized/libraw_c_api.ll b/bench/darktable/optimized/libraw_c_api.ll index e59d4fdf6ac..65d980386da 100644 --- a/bench/darktable/optimized/libraw_c_api.ll +++ b/bench/darktable/optimized/libraw_c_api.ll @@ -979,15 +979,16 @@ define float @libraw_get_rgb_cam(ptr noundef readonly captures(address_is_null) %6 = tail call i32 @llvm.smax.i32(i32 %1, i32 0) %7 = tail call i32 @llvm.umin.i32(i32 %6, i32 2) %8 = zext nneg i32 %7 to i64 - %9 = tail call i32 @llvm.smax.i32(i32 %2, i32 0) - %10 = tail call i32 @llvm.umin.i32(i32 %9, i32 3) - %11 = zext nneg i32 %10 to i64 - %12 = getelementptr inbounds nuw [3 x [4 x float]], ptr %5, i64 0, i64 %8, i64 %11 - %13 = load float, ptr %12, align 4, !tbaa !88 - br label %14 + %9 = getelementptr inbounds nuw [3 x [4 x float]], ptr %5, i64 0, i64 %8 + %10 = tail call i32 @llvm.smax.i32(i32 %2, i32 0) + %11 = tail call i32 @llvm.umin.i32(i32 %10, i32 3) + %12 = zext nneg i32 %11 to i64 + %13 = getelementptr inbounds nuw [4 x float], ptr %9, i64 0, i64 %12 + %14 = load float, ptr %13, align 4, !tbaa !88 + br label %15 14: ; preds = %3, %4 - %.0 = phi nsz float [ %13, %4 ], [ 2.200000e+01, %3 ] + %.0 = phi nsz float [ %14, %4 ], [ 2.200000e+01, %3 ] ret float %.0 } diff --git a/bench/duckdb/optimized/aria.ll b/bench/duckdb/optimized/aria.ll index 144af4a949e..c76bd890641 100644 --- a/bench/duckdb/optimized/aria.ll +++ b/bench/duckdb/optimized/aria.ll @@ -667,9 +667,11 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture br label %.preheader40 .preheader40: ; preds = %.preheader40.lr.ph, %15 - %indvars.iv49 = phi i64 [ %8, %.preheader40.lr.ph ], [ %indvars.iv.next50, %15 ] - %indvars.iv47 = phi i64 [ 0, %.preheader40.lr.ph ], [ %indvars.iv.next48, %15 ] - br label %10 + %indvars.iv49 = phi i64 [ %8, %.preheader40.lr.ph ], [ %indvars.iv.next50, %17 ] + %indvars.iv47 = phi i64 [ 0, %.preheader40.lr.ph ], [ %indvars.iv.next48, %17 ] + %9 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv47 + %10 = getelementptr inbounds [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv49 + br label %12 .preheader: ; preds = %15 %.not58 = icmp eq i8 %6, 1 @@ -681,13 +683,13 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture br label %17 10: ; preds = %.preheader40, %10 - %indvars.iv = phi i64 [ 0, %.preheader40 ], [ %indvars.iv.next, %10 ] - %11 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv47, i64 %indvars.iv - %12 = load i32, ptr %11, align 4, !tbaa !3 - %13 = getelementptr inbounds [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv49, i64 %indvars.iv + %indvars.iv = phi i64 [ 0, %.preheader40 ], [ %indvars.iv.next, %12 ] + %11 = getelementptr inbounds nuw [4 x i32], ptr %9, i64 0, i64 %indvars.iv %14 = load i32, ptr %13, align 4, !tbaa !3 - store i32 %14, ptr %11, align 4, !tbaa !3 - store i32 %12, ptr %13, align 4, !tbaa !3 + %15 = getelementptr inbounds nuw [4 x i32], ptr %10, i64 0, i64 %indvars.iv + %16 = load i32, ptr %15, align 4, !tbaa !3 + store i32 %16, ptr %13, align 4, !tbaa !3 + store i32 %14, ptr %15, align 4, !tbaa !3 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 br i1 %exitcond.not, label %15, label %10, !llvm.loop !13 @@ -699,7 +701,7 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture br i1 %16, label %.preheader40, label %.preheader, !llvm.loop !14 17: ; preds = %.lr.ph, %17 - %indvars.iv54 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next55, %17 ] + %indvars.iv54 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next55, %19 ] %18 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %9, i64 0, i64 %indvars.iv54 %19 = getelementptr inbounds nuw i8, ptr %18, i64 4 %20 = getelementptr inbounds nuw i8, ptr %18, i64 8 @@ -754,7 +756,7 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture br i1 %exitcond57.not, label %.loopexit, label %17, !llvm.loop !15 .loopexit: ; preds = %17, %5, %.preheader, %3 - %.0 = phi i32 [ %4, %3 ], [ 0, %.preheader ], [ 0, %5 ], [ 0, %17 ] + %.0 = phi i32 [ %4, %3 ], [ 0, %.preheader ], [ 0, %5 ], [ 0, %19 ] ret i32 %.0 } diff --git a/bench/ffmpeg/optimized/aptxdec.ll b/bench/ffmpeg/optimized/aptxdec.ll index ea234dfafea..6062d220545 100644 --- a/bench/ffmpeg/optimized/aptxdec.ll +++ b/bench/ffmpeg/optimized/aptxdec.ll @@ -45,6 +45,7 @@ define internal range(i32 -2147483648, 536870912) i32 @aptx_decode_frame(ptr nou %15 = load i32, ptr %14, align 4, !tbaa !29 %16 = icmp slt i32 %13, %15 %indvars.iv52.i.sroa.gep41 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %indvars.iv59.sroa.gep = getelementptr inbounds nuw i8, ptr %9, i64 16 br i1 %16, label %17, label %18 17: ; preds = %4 @@ -434,13 +435,14 @@ aptx_decode_samples.exit: ; preds = %aptx_decode_channel .preheader: ; preds = %aptx_decode_samples.exit, %241 %231 = phi i1 [ false, %241 ], [ true, %aptx_decode_samples.exit ] + %indvars.iv59.sroa.phi = phi ptr [ %indvars.iv59.sroa.gep, %241 ], [ %9, %aptx_decode_samples.exit ] %indvars.iv59 = phi i64 [ 1, %241 ], [ 0, %aptx_decode_samples.exit ] %232 = getelementptr inbounds nuw [8 x ptr], ptr %1, i64 0, i64 %indvars.iv59 br label %233 233: ; preds = %.preheader, %233 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %233 ] - %234 = getelementptr inbounds nuw [2 x [4 x i32]], ptr %9, i64 0, i64 %indvars.iv59, i64 %indvars.iv + %234 = getelementptr inbounds nuw [4 x i32], ptr %indvars.iv59.sroa.phi, i64 0, i64 %indvars.iv %235 = load i32, ptr %234, align 4, !tbaa !49 %236 = shl nsw i32 %235, 8 %237 = load ptr, ptr %232, align 8, !tbaa !60 diff --git a/bench/ffmpeg/optimized/msmpeg4_vc1_data.ll b/bench/ffmpeg/optimized/msmpeg4_vc1_data.ll index 6bc1eca81da..7e3b631da93 100644 --- a/bench/ffmpeg/optimized/msmpeg4_vc1_data.ll +++ b/bench/ffmpeg/optimized/msmpeg4_vc1_data.ll @@ -31,14 +31,20 @@ define internal void @msmp4_vc1_vlcs_init() #0 { %0 = alloca %struct.VLCInitState, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %0) #4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) @__const.msmp4_vc1_vlcs_init.state, i64 16, i1 false) - %1 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 4), i32 noundef 8, i32 noundef 4, ptr noundef nonnull @ff_msmp4_dc_tables, i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 - store ptr %1, ptr @ff_msmp4_dc_vlc, align 16, !tbaa !4 - %2 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 964), i32 noundef 8, i32 noundef 4, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 960), i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 - store ptr %2, ptr getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_vlc, i64 8), align 8, !tbaa !4 - %3 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 1924), i32 noundef 8, i32 noundef 4, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 1920), i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 - store ptr %3, ptr getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_vlc, i64 16), align 16, !tbaa !4 - %4 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 2884), i32 noundef 8, i32 noundef 4, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 2880), i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 - store ptr %4, ptr getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_vlc, i64 24), align 8, !tbaa !4 + %1 = getelementptr inbounds nuw [2 x [2 x [120 x [2 x i32]]]], ptr @ff_msmp4_dc_tables, i64 0, i64 0 + %2 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr @ff_msmp4_dc_vlc, i64 0, i64 0 + %3 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %4 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull %3, i32 noundef 8, i32 noundef 4, ptr noundef nonnull %1, i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 + store ptr %4, ptr %2, align 16, !tbaa !4 + %5 = getelementptr inbounds nuw i8, ptr %1, i64 960 + %6 = getelementptr inbounds nuw i8, ptr %1, i64 964 + %7 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull %6, i32 noundef 8, i32 noundef 4, ptr noundef nonnull %5, i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 + %8 = getelementptr inbounds nuw i8, ptr %2, i64 8 + store ptr %7, ptr %8, align 8, !tbaa !4 + %9 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 1924), i32 noundef 8, i32 noundef 4, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 1920), i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 + store ptr %9, ptr getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_vlc, i64 16), align 16, !tbaa !4 + %10 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 2884), i32 noundef 8, i32 noundef 4, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 2880), i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 + store ptr %10, ptr getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_vlc, i64 24), align 8, !tbaa !4 call void @ff_vlc_init_table_sparse(ptr noundef nonnull @ff_msmp4_mb_i_vlc, i32 noundef 536, i32 noundef 9, i32 noundef 64, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_mb_i_table, i64 2), i32 noundef 4, i32 noundef 2, ptr noundef nonnull @ff_msmp4_mb_i_table, i32 noundef 4, i32 noundef 2, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %0) #4 ret void diff --git a/bench/ffmpeg/optimized/pafvideo.ll b/bench/ffmpeg/optimized/pafvideo.ll index 94083e206c8..c712f6f1f9b 100644 --- a/bench/ffmpeg/optimized/pafvideo.ll +++ b/bench/ffmpeg/optimized/pafvideo.ll @@ -937,20 +937,17 @@ bytestream2_get_le16.exit171: ; preds = %191 %.3132 = add nuw nsw i32 %.1130242, %242 %.0114.in = select i1 %.not157, i8 %241, i8 %240 %243 = zext nneg i8 %.0114.in to i64 - %.not158231 = icmp eq i8 %.0114.in, 0 - br i1 %.not158231, label %._crit_edge, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %235 - %244 = getelementptr inbounds nuw [16 x [8 x i8]], ptr @block_sequences, i64 0, i64 %243, i64 0 + %244 = getelementptr inbounds nuw [16 x [8 x i8]], ptr @block_sequences, i64 0, i64 %243 %245 = load i8, ptr %244, align 8, !tbaa !47 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %copy_color_mask.exit - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %copy_color_mask.exit ] - %246 = phi i8 [ %245, %.lr.ph.preheader ], [ %356, %copy_color_mask.exit ] - %.3141234 = phi i8 [ %.1139240, %.lr.ph.preheader ], [ %.4142, %copy_color_mask.exit ] - %.3186233 = phi ptr [ %.1239, %.lr.ph.preheader ], [ %.4, %copy_color_mask.exit ] - %.3190232 = phi ptr [ %.1188238, %.lr.ph.preheader ], [ %.4191, %copy_color_mask.exit ] + %.not158231 = icmp eq i8 %245, 0 + br i1 %.not158231, label %._crit_edge, label %.lr.ph + +.lr.ph:; preds = %235, %copy_color_mask.exit + %246 = phi i64 [ %indvars.iv.next, %copy_color_mask.exit ], [ 0, %235 ] + %.3141234 = phi i8 [ %356, %copy_color_mask.exit ], [ %245, %235 ] + %.3186233 = phi i8 [ %.4142, %copy_color_mask.exit ], [ %.1139240, %235 ] + %.3190232 = phi ptr [ %.4, %copy_color_mask.exit ], [ %.1239, %235 ] + %.3190232 = phi ptr [ %.4191, %copy_color_mask.exit ], [ %.1188238, %235 ] %247 = load i32, ptr %127, align 8, !tbaa !28 %248 = shl nsw i32 %247, 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 @@ -1171,7 +1168,7 @@ copy_color_mask.exit: ; preds = %354, %285, %.lr.ph %.4191 = phi ptr [ %.3190232, %.lr.ph ], [ %.3190232, %285 ], [ %.5192, %354 ] %.4 = phi ptr [ %.3186233, %.lr.ph ], [ %.3186233, %285 ], [ %.5, %354 ] %.4142 = phi i8 [ %.3141234, %.lr.ph ], [ %.5143, %285 ], [ %.3141234, %354 ] - %355 = getelementptr inbounds nuw [16 x [8 x i8]], ptr @block_sequences, i64 0, i64 %243, i64 %indvars.iv.next + %355 = getelementptr inbounds nuw [8 x i8], ptr %244, i64 0, i64 %indvars.iv.next %356 = load i8, ptr %355, align 1, !tbaa !47 %.not158 = icmp eq i8 %356, 0 br i1 %.not158, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !69 diff --git a/bench/ffmpeg/optimized/vf_fftdnoiz.ll b/bench/ffmpeg/optimized/vf_fftdnoiz.ll index 082d4e017d0..bf9360ace06 100644 --- a/bench/ffmpeg/optimized/vf_fftdnoiz.ll +++ b/bench/ffmpeg/optimized/vf_fftdnoiz.ll @@ -1504,20 +1504,21 @@ generate_window_func.exit: ; preds = %600, %580, %578, %5 %indvars.iv263 = phi i64 [ %indvars.iv.next264, %._crit_edge224.us ], [ 0, %.preheader.lr.ph ] %616 = getelementptr inbounds nuw [257 x float], ptr %2, i64 0, i64 %indvars.iv263 %617 = load float, ptr %616, align 4, !tbaa !68 - br label %618 - -618: ; preds = %.preheader.us, %618 - %indvars.iv260 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next261, %618 ] - %619 = getelementptr inbounds nuw [257 x float], ptr %2, i64 0, i64 %indvars.iv260 - %620 = load float, ptr %619, align 4, !tbaa !68 - %621 = fmul nsz float %617, %620 - %622 = getelementptr inbounds nuw [256 x [256 x float]], ptr %615, i64 0, i64 %indvars.iv263, i64 %indvars.iv260 - store float %621, ptr %622, align 4, !tbaa !68 + %618 = getelementptr inbounds nuw [256 x [256 x float]], ptr %615, i64 0, i64 %indvars.iv263 + br label %619 + +619: ; preds = %.preheader.us, %619 + %indvars.iv260 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next261, %619 ] + %620 = getelementptr inbounds nuw [257 x float], ptr %2, i64 0, i64 %indvars.iv260 + %621 = load float, ptr %620, align 4, !tbaa !68 + %622 = fmul nsz float %617, %621 + %623 = getelementptr inbounds nuw [256 x float], ptr %618, i64 0, i64 %indvars.iv260 + store float %622, ptr %623, align 4, !tbaa !68 %indvars.iv.next261 = add nuw nsw i64 %indvars.iv260, 1 %exitcond.not = icmp eq i64 %indvars.iv.next261, %wide.trip.count266 - br i1 %exitcond.not, label %._crit_edge224.us, label %618, !llvm.loop !106 + br i1 %exitcond.not, label %._crit_edge224.us, label %619, !llvm.loop !106 -._crit_edge224.us: ; preds = %618 +._crit_edge224.us: ; preds = %619 %indvars.iv.next264 = add nuw nsw i64 %indvars.iv263, 1 %exitcond267.not = icmp eq i64 %indvars.iv.next264, %wide.trip.count266 br i1 %exitcond267.not, label %.thread184, label %.preheader.us, !llvm.loop !107 diff --git a/bench/flac/optimized/lpc.ll b/bench/flac/optimized/lpc.ll index 8b482abc144..74b5c877bce 100644 --- a/bench/flac/optimized/lpc.ll +++ b/bench/flac/optimized/lpc.ll @@ -538,9 +538,9 @@ define hidden void @FLAC__lpc_compute_lp_coefficients(ptr noundef readonly captu br label %8 8: ; preds = %49, %4 - %indvars.iv77 = phi i64 [ %indvars.iv.next78, %49 ], [ 0, %4 ] - %indvars.iv73 = phi i32 [ %indvars.iv.next74, %49 ], [ 1, %4 ] - %.049 = phi nsz double [ %52, %49 ], [ %6, %4 ] + %indvars.iv77 = phi i64 [ %indvars.iv.next78, %50 ], [ 0, %4 ] + %indvars.iv73 = phi i32 [ %indvars.iv.next74, %50 ], [ 1, %4 ] + %.049 = phi nsz double [ %52, %50 ], [ %6, %4 ] %umax = tail call i32 @llvm.umax.i32(i32 %indvars.iv73, i32 1) %exitcond81.not = icmp eq i64 %indvars.iv77, %wide.trip.count80 br i1 %exitcond81.not, label %.loopexit, label %9 @@ -618,16 +618,17 @@ define hidden void @FLAC__lpc_compute_lp_coefficients(ptr noundef readonly captu 41: ; preds = %._crit_edge59.thread, %._crit_edge59.thread86, %._crit_edge59 %42 = phi double [ %13, %._crit_edge59.thread ], [ %22, %._crit_edge59.thread86 ], [ %22, %._crit_edge59 ] + %43 = getelementptr inbounds nuw [32 x float], ptr %2, i64 %indvars.iv77 %wide.trip.count75 = zext i32 %umax to i64 br label %43 43: ; preds = %41, %43 - %indvars.iv70 = phi i64 [ 0, %41 ], [ %indvars.iv.next71, %43 ] + %indvars.iv70 = phi i64 [ 0, %41 ], [ %indvars.iv.next71, %44 ] %44 = getelementptr inbounds nuw [32 x double], ptr %5, i64 0, i64 %indvars.iv70 %45 = load double, ptr %44, align 8, !tbaa !18 %46 = fptrunc reassoc nsz arcp double %45 to float %47 = fneg reassoc nsz arcp float %46 - %48 = getelementptr inbounds nuw [32 x float], ptr %2, i64 %indvars.iv77, i64 %indvars.iv70 + %48 = getelementptr inbounds nuw [32 x float], ptr %43, i64 0, i64 %indvars.iv70 store float %47, ptr %48, align 4, !tbaa !7 %indvars.iv.next71 = add nuw nsw i64 %indvars.iv70, 1 %exitcond76 = icmp eq i64 %indvars.iv.next71, %wide.trip.count75 diff --git a/bench/folly/optimized/CompressionContextPoolSingletons.ll b/bench/folly/optimized/CompressionContextPoolSingletons.ll index c7d42aaca6d..8fd6260494b 100644 --- a/bench/folly/optimized/CompressionContextPoolSingletons.ll +++ b/bench/folly/optimized/CompressionContextPoolSingletons.ll @@ -1743,7 +1743,7 @@ _ZN5folly14AccessSpreaderISt6atomicE5stateEv.exit.i.i: ; preds = %5, %1 _ZN5folly11compression31CompressionCoreLocalContextPoolI11ZSTD_CCtx_sNS0_8contexts17ZSTD_CCtx_CreatorENS3_17ZSTD_CCtx_DeleterENS3_18ZSTD_CCtx_ResetterELm4EE5localEv.exit.i: ; preds = %12, %._crit_edge.i.i.i.i %17 = phi i32 [ %.pre.i.i.i.i, %._crit_edge.i.i.i.i ], [ %16, %12 ] %18 = zext i32 %17 to i64 - %19 = getelementptr inbounds nuw [257 x [256 x i8]], ptr @_ZZN5folly14AccessSpreaderISt6atomicE5stateEvE5state, i64 0, i64 4, i64 %18 + %19 = getelementptr inbounds nuw [256 x i8], ptr getelementptr inbounds nuw (i8, ptr @_ZZN5folly14AccessSpreaderISt6atomicE5stateEvE5state, i64 1024), i64 0, i64 %18 %20 = load atomic i8, ptr %19 monotonic, align 1, !noalias !84 %21 = zext i8 %20 to i64 %22 = getelementptr inbounds nuw [4 x %"class.folly::compression::CompressionCoreLocalContextPool::Storage"], ptr getelementptr inbounds nuw (i8, ptr @_ZN5folly11compression8contexts12_GLOBAL__N_124zstd_cctx_pool_singletonE, i64 64), i64 0, i64 %21 @@ -2081,7 +2081,7 @@ _ZN5folly14AccessSpreaderISt6atomicE5stateEv.exit.i.i: ; preds = %5, %1 _ZN5folly11compression31CompressionCoreLocalContextPoolI11ZSTD_DCtx_sNS0_8contexts17ZSTD_DCtx_CreatorENS3_17ZSTD_DCtx_DeleterENS3_18ZSTD_DCtx_ResetterELm16EE5localEv.exit.i: ; preds = %12, %._crit_edge.i.i.i.i %17 = phi i32 [ %.pre.i.i.i.i, %._crit_edge.i.i.i.i ], [ %16, %12 ] %18 = zext i32 %17 to i64 - %19 = getelementptr inbounds nuw [257 x [256 x i8]], ptr @_ZZN5folly14AccessSpreaderISt6atomicE5stateEvE5state, i64 0, i64 16, i64 %18 + %19 = getelementptr inbounds nuw [256 x i8], ptr getelementptr inbounds nuw (i8, ptr @_ZZN5folly14AccessSpreaderISt6atomicE5stateEvE5state, i64 4096), i64 0, i64 %18 %20 = load atomic i8, ptr %19 monotonic, align 1, !noalias !102 %21 = zext i8 %20 to i64 %22 = getelementptr inbounds nuw [16 x %"class.folly::compression::CompressionCoreLocalContextPool::Storage"], ptr getelementptr inbounds nuw (i8, ptr @_ZN5folly11compression8contexts12_GLOBAL__N_124zstd_dctx_pool_singletonE, i64 64), i64 0, i64 %21 diff --git a/bench/freetype/optimized/truetype.ll b/bench/freetype/optimized/truetype.ll index a6cd5d97cbf..91b61e395fa 100644 --- a/bench/freetype/optimized/truetype.ll +++ b/bench/freetype/optimized/truetype.ll @@ -21610,15 +21610,16 @@ tt_check_trickyness_family.exit.thread: ; preds = %49, %3 70: ; preds = %69, %68, %63 %.139.i = phi i8 [ %.03859.i, %68 ], [ %.03859.i, %69 ], [ 1, %63 ] %.0.i9 = phi i64 [ 1, %68 ], [ 2, %69 ], [ 0, %63 ] + %invariant.gep.i = getelementptr inbounds nuw [3 x %struct.tt_sfnt_id_rec_], ptr @tt_check_trickyness_sfnt_ids.sfnt_id, i64 0, i64 %.0.i9 br label %71 71: ; preds = %134, %70 - %indvars.iv.i10 = phi i64 [ 0, %70 ], [ %indvars.iv.next.i11, %134 ] - %.04157.i = phi i64 [ 0, %70 ], [ %.243.i, %134 ] + %indvars.iv.i10 = phi i64 [ 0, %70 ], [ %indvars.iv.next.i11, %133 ] + %.04157.i = phi i64 [ 0, %70 ], [ %.243.i, %133 ] %72 = load ptr, ptr %55, align 8, !tbaa !808 %73 = getelementptr inbounds nuw %struct.TT_TableRec_, ptr %72, i64 %indvars.iv70.i, i32 3 %74 = load i64, ptr %73, align 8, !tbaa !811 - %75 = getelementptr inbounds nuw [31 x [3 x %struct.tt_sfnt_id_rec_]], ptr @tt_check_trickyness_sfnt_ids.sfnt_id, i64 0, i64 %indvars.iv.i10, i64 %.0.i9 + %75 = getelementptr inbounds nuw [31 x [3 x %struct.tt_sfnt_id_rec_]], ptr %invariant.gep.i, i64 0, i64 %indvars.iv.i10 %76 = getelementptr inbounds nuw i8, ptr %75, i64 8 %77 = load i64, ptr %76, align 8, !tbaa !812 %78 = icmp eq i64 %74, %77 @@ -21637,7 +21638,7 @@ tt_check_trickyness_family.exit.thread: ; preds = %49, %3 %83 = getelementptr inbounds nuw %struct.TT_TableRec_, ptr %72, i64 %indvars.iv70.i %84 = load i64, ptr %83, align 8, !tbaa !809 %85 = load ptr, ptr %57, align 8, !tbaa !44 - %86 = tail call i32 %81(ptr noundef nonnull %0, i64 noundef %84, ptr noundef %85, ptr noundef null) #22 + %86 = tail call i32 %80(ptr noundef nonnull %0, i64 noundef %84, ptr noundef %85, ptr noundef null) #22 %.not10.i.i = icmp eq i32 %86, 0 br i1 %.not10.i.i, label %87, label %tt_get_sfnt_checksum.exit.i @@ -21657,16 +21658,16 @@ tt_check_trickyness_family.exit.thread: ; preds = %49, %3 br i1 %96, label %.lr.ph.i.i.i, label %.preheader.i.i.i .preheader.i.i.i: ; preds = %.lr.ph.i.i.i, %93 - %.023.lcssa.i.i.i = phi i64 [ %91, %93 ], [ %116, %.lr.ph.i.i.i ] - %.020.lcssa.i.i.i = phi i32 [ 0, %93 ], [ %115, %.lr.ph.i.i.i ] - %.019.lcssa.i.i.i = phi ptr [ %95, %93 ], [ %97, %.lr.ph.i.i.i ] + %.023.lcssa.i.i.i = phi i64 [ %91, %92 ], [ %116, %.lr.ph.i.i.i ] + %.020.lcssa.i.i.i = phi i32 [ 0, %92 ], [ %115, %.lr.ph.i.i.i ] + %.019.lcssa.i.i.i = phi ptr [ %95, %92 ], [ %97, %.lr.ph.i.i.i ] %.not2531.i.i.i = icmp eq i64 %.023.lcssa.i.i.i, 0 br i1 %.not2531.i.i.i, label %._crit_edge.i.i.i, label %.lr.ph36.i.i.i .lr.ph.i.i.i: ; preds = %93, %.lr.ph.i.i.i - %.01928.i.i.i = phi ptr [ %97, %.lr.ph.i.i.i ], [ %95, %93 ] - %.02027.i.i.i = phi i32 [ %115, %.lr.ph.i.i.i ], [ 0, %93 ] - %.02326.i.i.i = phi i64 [ %116, %.lr.ph.i.i.i ], [ %91, %93 ] + %.01928.i.i.i = phi ptr [ %97, %.lr.ph.i.i.i ], [ %95, %92 ] + %.02027.i.i.i = phi i32 [ %115, %.lr.ph.i.i.i ], [ 0, %92 ] + %.02326.i.i.i = phi i64 [ %116, %.lr.ph.i.i.i ], [ %91, %92 ] %97 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 4 %98 = load i8, ptr %.01928.i.i.i, align 1, !tbaa !224 %99 = zext i8 %98 to i32 @@ -21712,7 +21713,7 @@ tt_check_trickyness_family.exit.thread: ; preds = %49, %3 br label %tt_get_sfnt_checksum.exit.i tt_get_sfnt_checksum.exit.i: ; preds = %._crit_edge.i.i.i, %87, %82, %80, %79 - %.142.i = phi i64 [ %.04157.i, %79 ], [ 0, %80 ], [ 0, %82 ], [ %125, %._crit_edge.i.i.i ], [ 0, %87 ] + %.142.i = phi i64 [ %.04157.i, %78 ], [ 0, %79 ], [ 0, %81 ], [ %125, %._crit_edge.i.i.i ], [ 0, %86 ] %126 = load i64, ptr %75, align 16, !tbaa !816 %127 = icmp eq i64 %126, %.142.i %128 = getelementptr inbounds nuw [31 x i32], ptr %2, i64 0, i64 %indvars.iv.i10 @@ -21725,7 +21726,7 @@ tt_get_sfnt_checksum.exit.i: ; preds = %._crit_edge.i.i.i, br label %tt_get_sfnt_checksum.exit._crit_edge.i tt_get_sfnt_checksum.exit._crit_edge.i: ; preds = %130, %tt_get_sfnt_checksum.exit.i - %132 = phi i32 [ %131, %130 ], [ %129, %tt_get_sfnt_checksum.exit.i ] + %132 = phi i32 [ %131, %129 ], [ %129, %tt_get_sfnt_checksum.exit.i ] %133 = icmp eq i32 %132, 3 br i1 %133, label %tt_check_trickyness_family.exit.sink.split, label %134 @@ -21753,7 +21754,7 @@ tt_get_sfnt_checksum.exit._crit_edge.i: ; preds = %130, %tt_get_sfnt_c br i1 %exitcond79.not.i, label %tt_check_trickyness_family.exit.sink.split, label %.preheader.split.i, !llvm.loop !807 .preheader.split.i: ; preds = %.preheader.split.i.preheader, %138 - %indvars.iv76.i = phi i64 [ %indvars.iv.next77.i, %138 ], [ 0, %.preheader.split.i.preheader ] + %indvars.iv76.i = phi i64 [ %indvars.iv.next77.i, %137 ], [ 0, %.preheader.split.i.preheader ] %139 = trunc i64 %indvars.iv76.i to i32 %140 = add i32 %139, -16 %.not45.i = icmp ult i32 %140, 12 @@ -21767,12 +21768,12 @@ tt_get_sfnt_checksum.exit._crit_edge.i: ; preds = %130, %tt_get_sfnt_c br label %.preheader.split._crit_edge.i .preheader.split._crit_edge.i: ; preds = %143, %.preheader.split.i - %145 = phi i32 [ %144, %143 ], [ %142, %.preheader.split.i ] + %145 = phi i32 [ %144, %142 ], [ %142, %.preheader.split.i ] %146 = icmp eq i32 %145, 3 br i1 %146, label %tt_check_trickyness_family.exit.sink.split, label %138 tt_check_trickyness_family.exit.sink.split: ; preds = %tt_get_sfnt_checksum.exit._crit_edge.i, %62, %.preheader.split.us.i, %138, %.preheader.split._crit_edge.i - %.0.ph = phi i8 [ 1, %.preheader.split._crit_edge.i ], [ 0, %138 ], [ 1, %.preheader.split.us.i ], [ 0, %62 ], [ 1, %tt_get_sfnt_checksum.exit._crit_edge.i ] + %.0.ph = phi i8 [ 1, %.preheader.split._crit_edge.i ], [ 0, %137 ], [ 1, %.preheader.split.us.i ], [ 0, %62 ], [ 1, %tt_get_sfnt_checksum.exit._crit_edge.i ] call void @llvm.lifetime.end.p0(i64 124, ptr nonnull %2) #22 br label %tt_check_trickyness_family.exit diff --git a/bench/graphviz/optimized/mincross.ll b/bench/graphviz/optimized/mincross.ll index f99d2d824d3..23ce72e0836 100644 --- a/bench/graphviz/optimized/mincross.ll +++ b/bench/graphviz/optimized/mincross.ll @@ -5086,28 +5086,29 @@ define void @virtual_weight(ptr noundef readonly captures(none) %0) local_unname endpoint_class.exit: ; preds = %1, %12 %.0.i = phi i64 [ 2, %1 ], [ %16, %12 ] - %17 = icmp eq i32 %3, 2 - %.idx9 = select i1 %17, i64 0, i64 -64 - %18 = getelementptr inbounds i8, ptr %0, i64 %.idx9 - %19 = getelementptr inbounds nuw i8, ptr %18, i64 56 - %20 = load ptr, ptr %19, align 8, !tbaa !51 - %21 = getelementptr i8, ptr %20, i64 16 - %.val10 = load ptr, ptr %21, align 8, !tbaa !3 - %22 = getelementptr inbounds nuw i8, ptr %.val10, i64 216 - %23 = load i8, ptr %22, align 8, !tbaa !137 - %24 = icmp eq i8 %23, 1 - br i1 %24, label %endpoint_class.exit13, label %25 - -25: ; preds = %endpoint_class.exit - %26 = getelementptr inbounds nuw i8, ptr %.val10, i64 234 - %27 = load i8, ptr %26, align 2, !tbaa !201 - %28 = icmp slt i8 %27, 2 - %29 = zext i1 %28 to i64 + %17 = getelementptr inbounds nuw [3 x [3 x i32]], ptr @table, i64 0, i64 %.0.i + %18 = icmp eq i32 %3, 2 + %.idx9 = select i1 %18, i64 0, i64 -64 + %19 = getelementptr inbounds i8, ptr %0, i64 %.idx9 + %20 = getelementptr inbounds nuw i8, ptr %19, i64 56 + %21 = load ptr, ptr %20, align 8, !tbaa !51 + %22 = getelementptr i8, ptr %21, i64 16 + %.val10 = load ptr, ptr %22, align 8, !tbaa !3 + %23 = getelementptr inbounds nuw i8, ptr %.val10, i64 216 + %24 = load i8, ptr %23, align 8, !tbaa !137 + %25 = icmp eq i8 %24, 1 + br i1 %25, label %endpoint_class.exit13, label %26 + +26: ; preds = %endpoint_class.exit + %27 = getelementptr inbounds nuw i8, ptr %.val10, i64 234 + %28 = load i8, ptr %27, align 2, !tbaa !201 + %29 = icmp slt i8 %28, 2 + %30 = zext i1 %29 to i64 br label %endpoint_class.exit13 -endpoint_class.exit13: ; preds = %endpoint_class.exit, %25 - %.0.i12 = phi i64 [ 2, %endpoint_class.exit ], [ %29, %25 ] - %30 = getelementptr inbounds nuw [3 x [3 x i32]], ptr @table, i64 0, i64 %.0.i, i64 %.0.i12 +endpoint_class.exit13: ; preds = %endpoint_class.exit, %26 + %.0.i12 = phi i64 [ 2, %endpoint_class.exit ], [ %30, %26 ] + %30 = getelementptr inbounds nuw [3 x i32], ptr %17, i64 0, i64 %.0.i12 %31 = load i32, ptr %30, align 4, !tbaa !67 %32 = sdiv i32 2147483647, %31 %33 = getelementptr inbounds nuw i8, ptr %0, i64 16 diff --git a/bench/gromacs/optimized/boxdeformation.ll b/bench/gromacs/optimized/boxdeformation.ll index 92105373575..7aa8ec8f52d 100644 --- a/bench/gromacs/optimized/boxdeformation.ll +++ b/bench/gromacs/optimized/boxdeformation.ll @@ -877,8 +877,10 @@ define void @_ZN3gmx27setBoxDeformationFlowMatrixEPA3_KfS2_PA3_f(ptr noundef rea br label %.preheader .preheader: ; preds = %3, %5 - %indvars.iv16 = phi i64 [ 0, %3 ], [ %indvars.iv.next17, %5 ] - br label %6 + %indvars.iv16 = phi i64 [ 0, %3 ], [ %indvars.iv.next17, %6 ] + %invariant.gep = getelementptr inbounds nuw [3 x float], ptr %0, i64 0, i64 %indvars.iv16 + %4 = getelementptr inbounds nuw [3 x float], ptr %2, i64 %indvars.iv16 + br label %7 4: ; preds = %5 ret void @@ -889,14 +891,15 @@ define void @_ZN3gmx27setBoxDeformationFlowMatrixEPA3_KfS2_PA3_f(ptr noundef rea br i1 %exitcond19.not, label %4, label %.preheader, !llvm.loop !173 6: ; preds = %.preheader, %6 - %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %6 ] - %7 = getelementptr inbounds nuw [3 x float], ptr %0, i64 %indvars.iv, i64 %indvars.iv16 + %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %7 ] + %7 = getelementptr inbounds nuw [3 x float], ptr %invariant.gep, i64 %indvars.iv %8 = load float, ptr %7, align 4, !tbaa !125 - %9 = getelementptr inbounds nuw [3 x float], ptr %1, i64 %indvars.iv, i64 %indvars.iv - %10 = load float, ptr %9, align 4, !tbaa !125 - %11 = fdiv float %8, %10 - %12 = getelementptr inbounds nuw [3 x float], ptr %2, i64 %indvars.iv16, i64 %indvars.iv - store float %11, ptr %12, align 4, !tbaa !125 + %9 = getelementptr inbounds nuw [3 x float], ptr %1, i64 %indvars.iv + %10 = getelementptr inbounds nuw [3 x float], ptr %9, i64 0, i64 %indvars.iv + %11 = load float, ptr %10, align 4, !tbaa !125 + %12 = fdiv float %8, %11 + %13 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv + store float %12, ptr %13, align 4, !tbaa !125 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 br i1 %exitcond.not, label %5, label %6, !llvm.loop !174 diff --git a/bench/gromacs/optimized/hxprops.ll b/bench/gromacs/optimized/hxprops.ll index 6b7dc6996d6..e2f22858a4d 100644 --- a/bench/gromacs/optimized/hxprops.ll +++ b/bench/gromacs/optimized/hxprops.ll @@ -385,17 +385,18 @@ define noundef float @_Z3dipiPKiPA3_KfPK6t_atom(i32 noundef %0, ptr noundef read br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %20 - %indvars.iv17 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next18, %20 ] + %indvars.iv17 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next18, %21 ] %9 = getelementptr inbounds nuw i32, ptr %1, i64 %indvars.iv17 %10 = load i32, ptr %9, align 4, !tbaa !20 %11 = sext i32 %10 to i64 %12 = getelementptr inbounds %struct.t_atom, ptr %3, i64 %11, i32 1 %13 = load float, ptr %12, align 4, !tbaa !25 - br label %14 + %14 = getelementptr inbounds [3 x float], ptr %2, i64 %11 + br label %15 14: ; preds = %.lr.ph, %14 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %14 ] - %15 = getelementptr inbounds [3 x float], ptr %2, i64 %11, i64 %indvars.iv + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %15 ] + %15 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %indvars.iv %16 = load float, ptr %15, align 4, !tbaa !21 %17 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv %18 = load float, ptr %17, align 4, !tbaa !21 diff --git a/bench/gromacs/optimized/pbc_simd.ll b/bench/gromacs/optimized/pbc_simd.ll index c752916c28e..1c20afa3532 100644 --- a/bench/gromacs/optimized/pbc_simd.ll +++ b/bench/gromacs/optimized/pbc_simd.ll @@ -91,11 +91,12 @@ define void @_Z12set_pbc_simdPK5t_pbcPf(ptr noundef readonly captures(address_is 52: ; preds = %.lr.ph, %52 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %52 ] - %53 = getelementptr inbounds nuw [3 x [3 x float]], ptr %10, i64 0, i64 %indvars.iv, i64 %indvars.iv - %54 = load float, ptr %53, align 4, !tbaa !12 - %55 = fdiv float 1.000000e+00, %54 - %56 = getelementptr inbounds nuw [3 x float], ptr %3, i64 0, i64 %indvars.iv - store float %55, ptr %56, align 4, !tbaa !12 + %53 = getelementptr inbounds nuw [3 x [3 x float]], ptr %10, i64 0, i64 %indvars.iv + %54 = getelementptr inbounds nuw [3 x float], ptr %53, i64 0, i64 %indvars.iv + %55 = load float, ptr %54, align 4, !tbaa !12 + %56 = fdiv float 1.000000e+00, %55 + %57 = getelementptr inbounds nuw [3 x float], ptr %3, i64 0, i64 %indvars.iv + store float %56, ptr %57, align 4, !tbaa !12 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge.loopexit, label %52, !llvm.loop !14 diff --git a/bench/gromacs/optimized/sm_simple.ll b/bench/gromacs/optimized/sm_simple.ll index c0996f283b5..31f9a7f788a 100644 --- a/bench/gromacs/optimized/sm_simple.ll +++ b/bench/gromacs/optimized/sm_simple.ll @@ -2177,7 +2177,7 @@ define internal void @_ZL10evaluate_xRKN3gmx20SelMethodEvalContextEP13gmx_ana_po 12: ; preds = %12, %.lr.ph.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %12 ] - %13 = getelementptr inbounds nuw [3 x float], ptr %11, i64 %indvars.iv.i, i64 0 + %13 = getelementptr inbounds nuw [3 x float], ptr %11, i64 %indvars.iv.i %14 = load float, ptr %13, align 4, !tbaa !173 %15 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i store float %14, ptr %15, align 4, !tbaa !173 @@ -2202,12 +2202,13 @@ define internal void @_ZL10evaluate_yRKN3gmx20SelMethodEvalContextEP13gmx_ana_po .lr.ph.i: ; preds = %4 %11 = load ptr, ptr %1, align 8, !tbaa !191 + %invariant.gep.i = getelementptr inbounds nuw i8, ptr %11, i64 4 %wide.trip.count.i = zext nneg i32 %6 to i64 br label %12 12: ; preds = %12, %.lr.ph.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %12 ] - %13 = getelementptr inbounds nuw [3 x float], ptr %11, i64 %indvars.iv.i, i64 1 + %13 = getelementptr inbounds nuw [3 x float], ptr %invariant.gep.i, i64 %indvars.iv.i %14 = load float, ptr %13, align 4, !tbaa !173 %15 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i store float %14, ptr %15, align 4, !tbaa !173 @@ -2232,12 +2233,13 @@ define internal void @_ZL10evaluate_zRKN3gmx20SelMethodEvalContextEP13gmx_ana_po .lr.ph.i: ; preds = %4 %11 = load ptr, ptr %1, align 8, !tbaa !191 + %invariant.gep.i = getelementptr inbounds nuw i8, ptr %11, i64 8 %wide.trip.count.i = zext nneg i32 %6 to i64 br label %12 12: ; preds = %12, %.lr.ph.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %12 ] - %13 = getelementptr inbounds nuw [3 x float], ptr %11, i64 %indvars.iv.i, i64 2 + %13 = getelementptr inbounds nuw [3 x float], ptr %invariant.gep.i, i64 %indvars.iv.i %14 = load float, ptr %13, align 4, !tbaa !173 %15 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i store float %14, ptr %15, align 4, !tbaa !173 diff --git a/bench/grpc/optimized/executor.ll b/bench/grpc/optimized/executor.ll index 6f253bf8418..00335c9373b 100644 --- a/bench/grpc/optimized/executor.ll +++ b/bench/grpc/optimized/executor.ll @@ -2265,43 +2265,44 @@ declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #16 define void @_ZN9grpc_core8Executor3RunEP12grpc_closureN4absl12lts_202407226StatusENS_12ExecutorTypeENS_15ExecutorJobTypeE(ptr noundef %0, ptr noundef readonly captures(none) %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { %5 = alloca %"class.absl::lts_20240722::Status", align 8 %6 = sext i32 %2 to i64 - %7 = sext i32 %3 to i64 - %8 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr @_ZN9grpc_core12_GLOBAL__N_121executor_enqueue_fns_E, i64 0, i64 %6, i64 %7 - %9 = load ptr, ptr %8, align 8, !tbaa !91 - %10 = load i64, ptr %1, align 8, !tbaa !56 - store i64 %10, ptr %5, align 8, !tbaa !56 - %11 = and i64 %10, 1 - %.not.i.i = icmp eq i64 %11, 0 - br i1 %.not.i.i, label %12, label %_ZN4absl12lts_202407226StatusC2ERKS1_.exit - -12: ; preds = %4 - %13 = inttoptr i64 %10 to ptr - %14 = atomicrmw add ptr %13, i32 1 monotonic, align 4 + %7 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr @_ZN9grpc_core12_GLOBAL__N_121executor_enqueue_fns_E, i64 0, i64 %6 + %8 = sext i32 %3 to i64 + %9 = getelementptr inbounds nuw [2 x ptr], ptr %7, i64 0, i64 %8 + %10 = load ptr, ptr %9, align 8, !tbaa !91 + %11 = load i64, ptr %1, align 8, !tbaa !56 + store i64 %11, ptr %5, align 8, !tbaa !56 + %12 = and i64 %11, 1 + %.not.i.i = icmp eq i64 %12, 0 + br i1 %.not.i.i, label %13, label %_ZN4absl12lts_202407226StatusC2ERKS1_.exit + +13:; preds = %4 + %14 = inttoptr i64 %11 to ptr + %15 = atomicrmw add ptr %14, i32 1 monotonic, align 4 br label %_ZN4absl12lts_202407226StatusC2ERKS1_.exit -_ZN4absl12lts_202407226StatusC2ERKS1_.exit: ; preds = %4, %12 - invoke void %9(ptr noundef %0, ptr noundef nonnull %5) - to label %15 unwind label %23 +_ZN4absl12lts_202407226StatusC2ERKS1_.exit: ; preds = %4, %13 + invoke void %10(ptr noundef %0, ptr noundef nonnull %5) + to label %16 unwind label %23 -15: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit - %16 = load i64, ptr %5, align 8, !tbaa !56 - %17 = and i64 %16, 1 - %.not.i.i4 = icmp eq i64 %17, 0 - br i1 %.not.i.i4, label %18, label %_ZN4absl12lts_202407226StatusD2Ev.exit +20: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit + %17 = load i64, ptr %5, align 8, !tbaa !56 + %18 = and i64 %17, 1 + %.not.i.i4 = icmp eq i64 %18, 0 + br i1 %.not.i.i4, label %19, label %_ZN4absl12lts_202407226StatusD2Ev.exit -18: ; preds = %15 - %19 = inttoptr i64 %16 to ptr - invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %19) - to label %_ZN4absl12lts_202407226StatusD2Ev.exit unwind label %20 +19: ; preds = %16 + %20 = inttoptr i64 %17 to ptr + invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %20) + to label %_ZN4absl12lts_202407226StatusD2Ev.exit unwind label %21 -20: ; preds = %18 - %21 = landingpad { ptr, i32 } +21: ; preds = %19 + %22 = landingpad { ptr, i32 } catch ptr null - %22 = extractvalue { ptr, i32 } %21, 0 + %22 = extractvalue { ptr, i32 } %22, 0 call void @__clang_call_terminate(ptr %22) #29 unreachable -_ZN4absl12lts_202407226StatusD2Ev.exit: ; preds = %15, %18 +_ZN4absl12lts_202407226StatusD2Ev.exit: ; preds = %16, %19 ret void 23: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit diff --git a/bench/hermes/optimized/rustgen.ll b/bench/hermes/optimized/rustgen.ll index 531936a3a3f..cdfdaff0354 100644 --- a/bench/hermes/optimized/rustgen.ll +++ b/bench/hermes/optimized/rustgen.ll @@ -1402,11 +1402,12 @@ _ZN4llvh11raw_ostreamlsEPKc.exit73.i.i: ; preds = %if.then4.i.i68.i.i, %call22.i.i = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN4llvh4outsEv() #17 %73 = load i32, ptr %__begin2.sroa.0.04.i.i, align 8 %idxprom.i.i.i = sext i32 %73 to i64 + %arrayidx.i.i.i = getelementptr inbounds [7 x [2 x %"class.llvh::StringLiteral"]], ptr @_ZL9typeName_, i64 0, i64 %idxprom.i.i.i %optional.i.i.i = getelementptr inbounds nuw i8, ptr %__begin2.sroa.0.04.i.i, i64 40 %74 = load i8, ptr %optional.i.i.i, align 8 %75 = and i8 %74, 1 %idxprom2.i.i.i = zext nneg i8 %75 to i64 - %arrayidx3.i.i.i = getelementptr inbounds [7 x [2 x %"class.llvh::StringLiteral"]], ptr @_ZL9typeName_, i64 0, i64 %idxprom.i.i.i, i64 %idxprom2.i.i.i + %arrayidx3.i.i.i = getelementptr inbounds nuw [2 x %"class.llvh::StringLiteral"], ptr %arrayidx.i.i.i, i64 0, i64 %idxprom2.i.i.i %retval.sroa.0.0.copyload.i.i.i = load ptr, ptr %arrayidx3.i.i.i, align 16 %retval.sroa.2.0.arrayidx3.sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %arrayidx3.i.i.i, i64 8 %retval.sroa.2.0.copyload.i.i.i = load i64, ptr %retval.sroa.2.0.arrayidx3.sroa_idx.i.i.i, align 8 diff --git a/bench/hwloc/optimized/common-ps.ll b/bench/hwloc/optimized/common-ps.ll index de7442721f5..be41499e681 100644 --- a/bench/hwloc/optimized/common-ps.ll +++ b/bench/hwloc/optimized/common-ps.ll @@ -193,7 +193,7 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no 89: ; preds = %88, %66 %90 = and i64 %3, 1 %.not176 = icmp eq i64 %90, 0 - br i1 %.not176, label %177, label %91 + br i1 %.not176, label %178, label %91 91: ; preds = %89 %92 = call noalias dereferenceable_or_null(33) ptr @malloc(i64 noundef 33) #16 @@ -201,7 +201,7 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no %94 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %92, i64 noundef 33, ptr noundef nonnull @.str.6, i64 noundef %93) #15 %95 = call ptr @opendir(ptr noundef nonnull %92) %.not177 = icmp eq ptr %95, null - br i1 %.not177, label %176, label %96 + br i1 %.not177, label %177, label %96 96: ; preds = %91 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #15 @@ -243,8 +243,8 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no %113 = getelementptr inbounds nuw i8, ptr %2, i64 1116 br label %.outer -.outer: ; preds = %170, %110 - %.0145.ph = phi i32 [ %171, %170 ], [ 0, %110 ] +.outer: ; preds = %171, %110 + %.0145.ph = phi i32 [ %172, %171 ], [ 0, %110 ] br label %114 114: ; preds = %116, %.outer @@ -267,13 +267,13 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no store i64 %118, ptr %124, align 8, !tbaa !20 %125 = call noalias dereferenceable_or_null(61) ptr @malloc(i64 noundef 61) #16 %.not182 = icmp eq ptr %125, null - br i1 %.not182, label %152, label %126 + br i1 %.not182, label %153, label %126 126: ; preds = %121 %127 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %125, i64 noundef 61, ptr noundef nonnull @.str.7, ptr noundef nonnull %92, i64 noundef %118) #15 %128 = call i32 (ptr, i32, ...) @open(ptr noundef nonnull %125, i32 noundef 2) #15 %129 = icmp sgt i32 %128, -1 - br i1 %129, label %130, label %151 + br i1 %129, label %130, label %152 130: ; preds = %126 %131 = load ptr, ptr %109, align 8, !tbaa !18 @@ -287,132 +287,133 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no %137 = load ptr, ptr %109, align 8, !tbaa !18 %138 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %137, i64 %123, i32 3 store i8 0, ptr %138, align 4, !tbaa !12 - br label %144 + br label %145 139: ; preds = %130 %140 = icmp samesign ult i64 %133, 16 - br i1 %140, label %141, label %144 + br i1 %140, label %141, label %145 141: ; preds = %139 %142 = load ptr, ptr %109, align 8, !tbaa !18 - %143 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %142, i64 %123, i32 3, i64 %133 - store i8 0, ptr %143, align 1, !tbaa !12 - br label %144 - -144: ; preds = %139, %141, %136 - %145 = load ptr, ptr %109, align 8, !tbaa !18 - %146 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %145, i64 %123, i32 3, i64 15 - store i8 0, ptr %146, align 1, !tbaa !12 - %147 = load ptr, ptr %109, align 8, !tbaa !18 - %148 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %147, i64 %123, i32 3 - %149 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %148, i32 noundef 10) #17 - store ptr %149, ptr %8, align 8, !tbaa !14 - %.not183 = icmp eq ptr %149, null - br i1 %.not183, label %151, label %150 - -150: ; preds = %144 - store i8 0, ptr %149, align 1, !tbaa !12 - br label %151 - -151: ; preds = %144, %150, %126 - call void @free(ptr noundef nonnull %125) #15 + %143 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %142, i64 %123, i32 3 + %144 = getelementptr inbounds nuw [16 x i8], ptr %143, i64 0, i64 %133 + store i8 0, ptr %144, align 1, !tbaa !12 + br label %145 + +145:; preds = %139, %141, %136 + %146 = load ptr, ptr %109, align 8, !tbaa !18 + %147 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %146, i64 %123, i32 3, i64 15 + store i8 0, ptr %147, align 1, !tbaa !12 + %148 = load ptr, ptr %109, align 8, !tbaa !18 + %149 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %148, i64 %123, i32 3 + %150 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %149, i32 noundef 10) #17 + store ptr %150, ptr %8, align 8, !tbaa !14 + %.not183 = icmp eq ptr %150, null + br i1 %.not183, label %152, label %151 + +151: ; preds = %145 + store i8 0, ptr %150, align 1, !tbaa !12 br label %152 -152: ; preds = %151, %121 - %153 = trunc i64 %118 to i32 - br i1 %.not184, label %156, label %154 - -154: ; preds = %152 - %155 = call i32 @hwloc_linux_get_tid_last_cpu_location(ptr noundef %0, i32 noundef %153, ptr noundef nonnull %11) #15 - %.not186 = icmp eq i32 %155, 0 - br i1 %.not186, label %158, label %170 - -156: ; preds = %152 - %157 = call i32 @hwloc_linux_get_tid_cpubind(ptr noundef %0, i32 noundef %153, ptr noundef nonnull %11) #15 - %.not185 = icmp eq i32 %157, 0 - br i1 %.not185, label %158, label %170 - -158: ; preds = %156, %154 - %159 = call i32 @hwloc_bitmap_and(ptr noundef nonnull %11, ptr noundef nonnull %11, ptr noundef %1) #15 - %160 = call i32 @hwloc_bitmap_iszero(ptr noundef nonnull %11) #17 - %.not187 = icmp eq i32 %160, 0 - br i1 %.not187, label %161, label %170 - -161: ; preds = %158 - %162 = call noalias ptr @hwloc_bitmap_dup(ptr noundef nonnull %11) #15 - %163 = load ptr, ptr %109, align 8, !tbaa !18 - %164 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %163, i64 %123, i32 1 - store ptr %162, ptr %164, align 8, !tbaa !22 - %165 = call i32 @hwloc_bitmap_isequal(ptr noundef nonnull %11, ptr noundef %1) #17 - %.not188 = icmp eq i32 %165, 0 - br i1 %.not188, label %166, label %170 - -166: ; preds = %161 - %167 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %163, i64 %123, i32 2 - store i32 1, ptr %167, align 8, !tbaa !23 - %168 = load i32, ptr %112, align 8, !tbaa !24 - %169 = add i32 %168, 1 - store i32 %169, ptr %112, align 8, !tbaa !24 - br label %170 - -170: ; preds = %161, %166, %158, %156, %154 - %171 = add i32 %.0145.ph, 1 - %172 = load i32, ptr %113, align 4, !tbaa !25 - %173 = add i32 %172, 1 - store i32 %173, ptr %113, align 4, !tbaa !25 - %174 = icmp eq i32 %171, %spec.select195 - br i1 %174, label %.loopexit, label %.outer - -.loopexit: ; preds = %170, %114, %96, %106, %._crit_edge - %175 = call i32 @closedir(ptr noundef nonnull %95) +152: ; preds = %145, %151, %126 + call void @free(ptr noundef nonnull %125) #15 + br label %154 + +154: ; preds = %152, %121 + %154 = trunc i64 %118 to i32 + br i1 %.not184, label %157, label %155 + +155: ; preds = %153 + %156 = call i32 @hwloc_linux_get_tid_last_cpu_location(ptr noundef %0, i32 noundef %154, ptr noundef nonnull %11) #15 + %.not186 = icmp eq i32 %156, 0 + br i1 %.not186, label %159, label %171 + +157: ; preds = %153 + %158 = call i32 @hwloc_linux_get_tid_cpubind(ptr noundef %0, i32 noundef %154, ptr noundef nonnull %11) #15 + %.not185 = icmp eq i32 %158, 0 + br i1 %.not185, label %159, label %171 + +159: ; preds = %157, %155 + %160 = call i32 @hwloc_bitmap_and(ptr noundef nonnull %11, ptr noundef nonnull %11, ptr noundef %1) #15 + %161 = call i32 @hwloc_bitmap_iszero(ptr noundef nonnull %11) #17 + %.not187 = icmp eq i32 %161, 0 + br i1 %.not187, label %162, label %171 + +162:; preds = %159 + %165 = call noalias ptr @hwloc_bitmap_dup(ptr noundef nonnull %11) #17 + %164 = load ptr, ptr %109, align 8, !tbaa !18 + %165 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %164, i64 %123, i32 1 + store ptr %163, ptr %165, align 8, !tbaa !22 + %166 = call i32 @hwloc_bitmap_isequal(ptr noundef nonnull %11, ptr noundef %1) #17 + %.not188 = icmp eq i32 %166, 0 + br i1 %.not188, label %167, label %171 + +167:; preds = %162 + %168 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %164, i64 %123, i32 2 + store i32 1, ptr %168, align 8, !tbaa !23 + %169 = load i32, ptr %112, align 8, !tbaa !24 + %170 = add i32 %169, 1 + store i32 %170, ptr %112, align 8, !tbaa !24 + br label %171 + +171:; preds = %162, %167, %159, %157, %155 + %172 = add i32 %.0145.ph, 1 + %173 = load i32, ptr %113, align 4, !tbaa !25 + %174 = add i32 %173, 1 + store i32 %174, ptr %113, align 4, !tbaa !25 + %175 = icmp eq i32 %172, %spec.select195 + br i1 %175, label %.loopexit, label %.outer + +.loopexit: ; preds = %171, %114, %96, %106, %._crit_edge + %176 = call i32 @closedir(ptr noundef nonnull %95) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #15 - br label %176 - -176: ; preds = %.loopexit, %91 - call void @free(ptr noundef %92) #15 br label %177 -177: ; preds = %176, %89 - %178 = and i64 %3, 2 - %.not189 = icmp eq i64 %178, 0 - br i1 %.not189, label %181, label %179 - -179: ; preds = %177 - %180 = call i32 @hwloc_get_proc_last_cpu_location(ptr noundef %0, i32 noundef %10, ptr noundef nonnull %11, i32 noundef 0) #15 - %.not191 = icmp eq i32 %180, 0 - br i1 %.not191, label %183, label %191 - -181: ; preds = %177 - %182 = call i32 @hwloc_get_proc_cpubind(ptr noundef %0, i32 noundef %10, ptr noundef nonnull %11, i32 noundef 0) #15 - %.not190 = icmp eq i32 %182, 0 - br i1 %.not190, label %183, label %191 - -183: ; preds = %181, %179 - %184 = call i32 @hwloc_bitmap_and(ptr noundef nonnull %11, ptr noundef nonnull %11, ptr noundef %1) #15 - %185 = call i32 @hwloc_bitmap_iszero(ptr noundef nonnull %11) #17 - %.not192 = icmp eq i32 %185, 0 - br i1 %.not192, label %186, label %191 - -186: ; preds = %183 - %187 = call i32 @hwloc_bitmap_isequal(ptr noundef nonnull %11, ptr noundef %1) #17 - %.not193 = icmp eq i32 %187, 0 - %188 = zext i1 %.not193 to i32 - %189 = getelementptr inbounds nuw i8, ptr %2, i64 1112 - store i32 %188, ptr %189, align 8, !tbaa !26 - %190 = getelementptr inbounds nuw i8, ptr %2, i64 1096 - store ptr %11, ptr %190, align 8, !tbaa !27 - br label %192 +177: ; preds = %.loopexit, %91 + call void @free(ptr noundef %92) #15 + br label %178 + +178: ; preds = %177, %89 + %179 = and i64 %3, 2 + %.not189 = icmp eq i64 %179, 0 + br i1 %.not189, label %182, label %180 + +180: ; preds = %178 + %181 = call i32 @hwloc_get_proc_last_cpu_location(ptr noundef %0, i32 noundef %10, ptr noundef nonnull %11, i32 noundef 0) #15 + %.not191 = icmp eq i32 %181, 0 + br i1 %.not191, label %184, label %192 + +182: ; preds = %178 + %183 = call i32 @hwloc_get_proc_cpubind(ptr noundef %0, i32 noundef %10, ptr noundef nonnull %11, i32 noundef 0) #15 + %.not190 = icmp eq i32 %183, 0 + br i1 %.not190, label %184, label %192 + +184: ; preds = %182, %180 + %185 = call i32 @hwloc_bitmap_and(ptr noundef nonnull %11, ptr noundef nonnull %11, ptr noundef %1) #15 + %186 = call i32 @hwloc_bitmap_iszero(ptr noundef nonnull %11) #17 + %.not192 = icmp eq i32 %186, 0 + br i1 %.not191, label %187, label %192 + +187: ; preds = %184 + %188 = call i32 @hwloc_bitmap_isequal(ptr noundef nonnull %11, ptr noundef %1) #17 + %.not193 = icmp eq i32 %188, 0 + %189 = zext i1 %.not193 to i32 + %190 = getelementptr inbounds nuw i8, ptr %2, i64 1112 + store i32 %189, ptr %190, align 8, !tbaa !26 + %191 = getelementptr inbounds nuw i8, ptr %2, i64 1096 + store ptr %11, ptr %191, align 8, !tbaa !27 + br label %193 .sink.split: ; preds = %18, %12 tail call void @free(ptr noundef nonnull %13) #15 br label %191 -191: ; preds = %.sink.split, %183, %181, %179 +191: ; preds = %.sink.split, %184, %182, %180 call void @hwloc_bitmap_free(ptr noundef nonnull %11) #15 br label %192 -192: ; preds = %4, %191, %186 - %.0 = phi i32 [ -1, %191 ], [ 0, %186 ], [ -1, %4 ] +192: ; preds = %4, %191, %187 + %.0 = phi i32 [ -1, %192 ], [ 0, %187 ], [ -1, %4 ] ret i32 %.0 } diff --git a/bench/icu/optimized/cecal.ll b/bench/icu/optimized/cecal.ll index a0cbf2453c1..3359915afb2 100644 --- a/bench/icu/optimized/cecal.ll +++ b/bench/icu/optimized/cecal.ll @@ -106,10 +106,11 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #6 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define noundef i32 @_ZNK6icu_7710CECalendar14handleGetLimitE19UCalendarDateFieldsNS_8Calendar10ELimitTypeE(ptr nonnull readnone align 8 captures(none) %0, i32 noundef %1, i32 noundef %2) unnamed_addr #7 align 2 { %4 = zext i32 %1 to i64 - %5 = zext i32 %2 to i64 - %6 = getelementptr inbounds nuw [24 x [4 x i32]], ptr @_ZN6icu_77L6LIMITSE, i64 0, i64 %4, i64 %5 - %7 = load i32, ptr %6, align 4, !tbaa !6 - ret i32 %7 + %5 = getelementptr inbounds nuw [24 x [4 x i32]], ptr @_ZN6icu_77L6LIMITSE, i64 0, i64 %4 + %6 = zext i32 %2 to i64 + %7 = getelementptr inbounds nuw [4 x i32], ptr %5, i64 0, i64 %6 + %8 = load i32, ptr %7, align 4, !tbaa !6 + ret i32 %8 } ; Function Attrs: mustprogress uwtable diff --git a/bench/image-rs/optimized/5oy2v8fghrh79s8.ll b/bench/image-rs/optimized/5oy2v8fghrh79s8.ll index c9aebacdbee..c646474b4f2 100644 --- a/bench/image-rs/optimized/5oy2v8fghrh79s8.ll +++ b/bench/image-rs/optimized/5oy2v8fghrh79s8.ll @@ -6280,12 +6280,13 @@ define hidden void @"_ZN4core3ptr106drop_in_place$LT$alloc..vec..Vec$LT$$u5b$ima .lr.ph.i.i: ; preds = %1, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i" %.07.i.i = phi i64 [ %7, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i" ], [ 0, %1 ] + %9 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %3, i64 0, i64 %.07.i.i tail call void @llvm.experimental.noalias.scope.decl(metadata !1443) br label %9 9: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i", %.lr.ph.i.i %.07.i.i.i = phi i64 [ 0, %.lr.ph.i.i ], [ %11, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i" ] - %10 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %3, i64 0, i64 %.07.i.i, i64 %.07.i.i.i + %10 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %9, i64 0, i64 %.07.i.i.i %11 = add nuw nsw i64 %.07.i.i.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !1446) tail call void @llvm.experimental.noalias.scope.decl(metadata !1449) @@ -29267,12 +29268,13 @@ define hidden void @"_ZN4core3ptr63drop_in_place$LT$image..codecs..webp..lossles .lr.ph.i.i.i: ; preds = %"_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$u32$GT$$GT$17h88c6982753044a7aE.exit2", %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i.i" %.07.i.i.i = phi i64 [ %23, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i.i" ], [ 0, %"_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$u32$GT$$GT$17h88c6982753044a7aE.exit2" ] + %25 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %19, i64 0, i64 %.07.i.i.i tail call void @llvm.experimental.noalias.scope.decl(metadata !13988) br label %25 25: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i", %.lr.ph.i.i.i %.07.i.i.i.i = phi i64 [ 0, %.lr.ph.i.i.i ], [ %27, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i" ] - %26 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %19, i64 0, i64 %.07.i.i.i, i64 %.07.i.i.i.i + %26 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %25, i64 0, i64 %.07.i.i.i.i %27 = add nuw nsw i64 %.07.i.i.i.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !13991) tail call void @llvm.experimental.noalias.scope.decl(metadata !13994) @@ -34461,12 +34463,13 @@ define hidden void @"_ZN4core3ptr93drop_in_place$LT$$u5b$$u5b$image..codecs..web .lr.ph: ; preds = %2, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit" %.07 = phi i64 [ %4, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit" ], [ 0, %2 ] + %6 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %0, i64 0, i64 %.07 tail call void @llvm.experimental.noalias.scope.decl(metadata !16579) br label %6 6: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i", %.lr.ph %.07.i = phi i64 [ 0, %.lr.ph ], [ %8, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i" ] - %7 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %0, i64 0, i64 %.07, i64 %.07.i + %7 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %6, i64 0, i64 %.07.i %8 = add nuw nsw i64 %.07.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !16582) tail call void @llvm.experimental.noalias.scope.decl(metadata !16585) @@ -41957,12 +41960,13 @@ define hidden void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops .lr.ph.i: ; preds = %1, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i" %.07.i = phi i64 [ %7, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i" ], [ 0, %1 ] + %9 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %3, i64 0, i64 %.07.i tail call void @llvm.experimental.noalias.scope.decl(metadata !18141) br label %9 9: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i", %.lr.ph.i %.07.i.i = phi i64 [ 0, %.lr.ph.i ], [ %11, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i" ] - %10 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %3, i64 0, i64 %.07.i, i64 %.07.i.i + %10 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %9, i64 0, i64 %.07.i.i %11 = add nuw nsw i64 %.07.i.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !18144) tail call void @llvm.experimental.noalias.scope.decl(metadata !18147) diff --git a/bench/jq/optimized/jv_print.ll b/bench/jq/optimized/jv_print.ll index 385dbe7e8ff..d0aa531b975 100644 --- a/bench/jq/optimized/jv_print.ll +++ b/bench/jq/optimized/jv_print.ll @@ -81,7 +81,7 @@ define dso_local range(i32 0, 2) i32 @jq_set_colors(ptr noundef %0) local_unname 23: ; preds = %15 %24 = add nuw nsw i64 %13, 2 - %25 = getelementptr inbounds nuw [8 x [16 x i8]], ptr @color_bufs, i64 0, i64 %.138, i64 %24 + %25 = getelementptr inbounds nuw [16 x i8], ptr %16, i64 0, i64 %24 store i8 109, ptr %25, align 1, !tbaa !11 %26 = getelementptr inbounds nuw [8 x ptr], ptr @color_bufps, i64 0, i64 %.138 store ptr %16, ptr %26, align 8, !tbaa !9 diff --git a/bench/libigl/optimized/canonical_quaternions.ll b/bench/libigl/optimized/canonical_quaternions.ll index dc1c710512b..9b2ac440eb5 100644 --- a/bench/libigl/optimized/canonical_quaternions.ll +++ b/bench/libigl/optimized/canonical_quaternions.ll @@ -9,19 +9,21 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define dso_local noundef float @_ZN3igl19CANONICAL_VIEW_QUATIfEET_ii(i32 noundef %0, i32 noundef %1) local_unnamed_addr #0 { %3 = sext i32 %0 to i64 - %4 = sext i32 %1 to i64 - %5 = getelementptr inbounds [24 x [4 x float]], ptr @_ZN3iglL21CANONICAL_VIEW_QUAT_FE, i64 0, i64 %3, i64 %4 - %6 = load float, ptr %5, align 4, !tbaa !4 - ret float %6 + %4 = getelementptr inbounds [24 x [4 x float]], ptr @_ZN3iglL21CANONICAL_VIEW_QUAT_FE, i64 0, i64 %3 + %5 = sext i32 %1 to i64 + %6 = getelementptr inbounds [4 x float], ptr %4, i64 0, i64 %5 + %7 = load float, ptr %6, align 4, !tbaa !4 + ret float %7 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define dso_local noundef double @_ZN3igl19CANONICAL_VIEW_QUATIdEET_ii(i32 noundef %0, i32 noundef %1) local_unnamed_addr #0 { %3 = sext i32 %0 to i64 - %4 = sext i32 %1 to i64 - %5 = getelementptr inbounds [24 x [4 x double]], ptr @_ZN3iglL21CANONICAL_VIEW_QUAT_DE, i64 0, i64 %3, i64 %4 - %6 = load double, ptr %5, align 8, !tbaa !8 - ret double %6 + %4 = getelementptr inbounds [24 x [4 x double]], ptr @_ZN3iglL21CANONICAL_VIEW_QUAT_DE, i64 0, i64 %3 + %5 = sext i32 %1 to i64 + %6 = getelementptr inbounds [4 x double], ptr %4, i64 0, i64 %5 + %7 = load double, ptr %6, align 8, !tbaa !8 + ret double %7 } attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/libjpeg-turbo/optimized/jquant1.ll b/bench/libjpeg-turbo/optimized/jquant1.ll index f4b627724bc..4fba14f63d6 100644 --- a/bench/libjpeg-turbo/optimized/jquant1.ll +++ b/bench/libjpeg-turbo/optimized/jquant1.ll @@ -411,7 +411,7 @@ define internal void @start_pass_1_quant(ptr noundef initializes((156, 168)) %0, store i32 %9, ptr %10, align 4, !tbaa !74 %11 = getelementptr inbounds nuw i8, ptr %0, i64 112 %12 = load i32, ptr %11, align 8, !tbaa !69 - switch i32 %12, label %111 [ + switch i32 %12, label %113 [ i32 0, label %13 i32 1, label %20 i32 2, label %73 @@ -504,12 +504,14 @@ define internal void @start_pass_1_quant(ptr noundef initializes((156, 168)) %0, br label %.preheader.i.i .preheader.i.i: ; preds = %68, %.thread.i - %indvars.iv22.i.i = phi i64 [ 0, %.thread.i ], [ %indvars.iv.next23.i.i, %68 ] - br label %58 + %indvars.iv22.i.i = phi i64 [ 0, %.thread.i ], [ %indvars.iv.next23.i.i, %70 ] + %58 = getelementptr inbounds nuw [16 x [16 x i8]], ptr @base_dither_matrix, i64 0, i64 %indvars.iv22.i.i + %59 = getelementptr inbounds nuw [16 x i32], ptr %54, i64 %indvars.iv22.i.i + br label %60 58: ; preds = %58, %.preheader.i.i - %indvars.iv.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next.i.i, %58 ] - %59 = getelementptr inbounds nuw [16 x [16 x i8]], ptr @base_dither_matrix, i64 0, i64 %indvars.iv22.i.i, i64 %indvars.iv.i.i + %indvars.iv.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next.i.i, %60 ] + %59 = getelementptr inbounds nuw [16 x i8], ptr %58, i64 0, i64 %indvars.iv.i.i %60 = load i8, ptr %59, align 1, !tbaa !34 %61 = zext i8 %60 to i32 %62 = shl nuw nsw i32 %61, 1 @@ -518,7 +520,7 @@ define internal void @start_pass_1_quant(ptr noundef initializes((156, 168)) %0, %64 = sext i32 %narrow.i.i to i64 %65 = sdiv i64 %64, %57 %66 = trunc nsw i64 %65 to i32 - %67 = getelementptr inbounds nuw [16 x i32], ptr %54, i64 %indvars.iv22.i.i, i64 %indvars.iv.i.i + %67 = getelementptr inbounds nuw [16 x i32], ptr %59, i64 0, i64 %indvars.iv.i.i store i32 %66, ptr %67, align 4, !tbaa !54 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 16 @@ -574,11 +576,11 @@ make_odither_array.exit.i: ; preds = %make_odither_array. br label %89 89: ; preds = %89, %.lr.ph.i30 - %indvars.iv.i31 = phi i64 [ 0, %.lr.ph.i30 ], [ %indvars.iv.next.i32, %89 ] + %indvars.iv.i31 = phi i64 [ 0, %.lr.ph.i30 ], [ %indvars.iv.next.i32, %91 ] %90 = load ptr, ptr %88, align 8, !tbaa !39 %91 = getelementptr inbounds nuw i8, ptr %90, i64 8 %92 = load ptr, ptr %91, align 8, !tbaa !71 - %93 = tail call ptr %92(ptr noundef nonnull %0, i32 noundef 1, i64 noundef %84) #7 + %93 = tail call ptr %94(ptr noundef nonnull %0, i32 noundef 1, i64 noundef %84) #7 %94 = getelementptr inbounds nuw [4 x ptr], ptr %76, i64 0, i64 %indvars.iv.i31 store ptr %93, ptr %94, align 8, !tbaa !48 %indvars.iv.next.i32 = add nuw nsw i64 %indvars.iv.i31, 1 @@ -588,7 +590,7 @@ make_odither_array.exit.i: ; preds = %make_odither_array. br i1 %97, label %89, label %alloc_fs_workspace.exit, !llvm.loop !72 alloc_fs_workspace.exit: ; preds = %89, %.alloc_fs_workspace.exit_crit_edge - %98 = phi i32 [ %.pre, %.alloc_fs_workspace.exit_crit_edge ], [ %95, %89 ] + %98 = phi i32 [ %.pre, %.alloc_fs_workspace.exit_crit_edge ], [ %95, %91 ] %99 = getelementptr inbounds nuw i8, ptr %0, i64 136 %100 = load i32, ptr %99, align 8, !tbaa !70 %101 = add i32 %100, 2 @@ -614,7 +616,7 @@ alloc_fs_workspace.exit: ; preds = %89, %.alloc_fs_work %113 = getelementptr inbounds nuw i8, ptr %112, i64 40 store i32 48, ptr %113, align 8, !tbaa !31 %114 = load ptr, ptr %112, align 8, !tbaa !35 - tail call void %114(ptr noundef nonnull %0) #7 + tail call void %116(ptr noundef nonnull %0) #7 br label %create_odither_tables.exit create_odither_tables.exit: ; preds = %.lr.ph, %make_odither_array.exit.i, %79, %alloc_fs_workspace.exit, %33, %29, %18, %19, %111 diff --git a/bench/libwebp/optimized/filter_enc.ll b/bench/libwebp/optimized/filter_enc.ll index de9580f7ff3..3dfa2915f12 100644 --- a/bench/libwebp/optimized/filter_enc.ll +++ b/bench/libwebp/optimized/filter_enc.ll @@ -19,11 +19,12 @@ target triple = "x86_64-pc-linux-gnu" define hidden range(i32 0, 256) i32 @VP8FilterStrengthFromDelta(i32 noundef %0, i32 noundef %1) local_unnamed_addr #0 { %3 = tail call i32 @llvm.smin.i32(i32 %1, i32 63) %4 = sext i32 %0 to i64 - %5 = sext i32 %3 to i64 - %6 = getelementptr inbounds [8 x [64 x i8]], ptr @kLevelsFromDelta, i64 0, i64 %4, i64 %5 - %7 = load i8, ptr %6, align 1, !tbaa !3 - %8 = zext i8 %7 to i32 - ret i32 %8 + %5 = getelementptr inbounds [8 x [64 x i8]], ptr @kLevelsFromDelta, i64 0, i64 %4 + %6 = sext i32 %3 to i64 + %7 = getelementptr inbounds [64 x i8], ptr %5, i64 0, i64 %6 + %8 = load i8, ptr %7, align 1, !tbaa !3 + %9 = zext i8 %8 to i32 + ret i32 %9 } ; Function Attrs: nounwind uwtable @@ -141,12 +142,12 @@ GetMBSSIM.exit: ; preds = %47 %53 = getelementptr inbounds nuw i8, ptr %0, i64 24 br label %54 -54: ; preds = %.lr.ph, %115 - %.057 = phi i32 [ %16, %.lr.ph ], [ %116, %115 ] +54: ; preds = %.lr.ph, %116 + %.057 = phi i32 [ %16, %.lr.ph ], [ %117, %116 ] %55 = add nsw i32 %.057, %13 %56 = add i32 %55, -64 %or.cond = icmp ult i32 %56, -63 - br i1 %or.cond, label %115, label %57 + br i1 %or.cond, label %116, label %57 57: ; preds = %54 %58 = load ptr, ptr %2, align 8, !tbaa !18 @@ -258,19 +259,20 @@ DoFilter.exit: ; preds = %73, %76 GetMBSSIM.exit51: ; preds = %108 %110 = load ptr, ptr %19, align 8, !tbaa !6 - %111 = zext nneg i32 %55 to i64 - %112 = getelementptr inbounds nuw [4 x [64 x double]], ptr %110, i64 0, i64 %10, i64 %111 - %113 = load double, ptr %112, align 8, !tbaa !16 - %114 = fadd double %106, %113 - store double %114, ptr %112, align 8, !tbaa !16 - br label %115 - -115: ; preds = %54, %GetMBSSIM.exit51 - %116 = add nsw i32 %.057, %18 - %.not34 = icmp sgt i32 %116, %15 + %111 = getelementptr inbounds nuw [4 x [64 x double]], ptr %110, i64 0, i64 %10 + %112 = zext nneg i32 %55 to i64 + %113 = getelementptr inbounds nuw [64 x double], ptr %111, i64 0, i64 %112 + %114 = load double, ptr %113, align 8, !tbaa !16 + %115 = fadd double %106, %114 + store double %115, ptr %113, align 8, !tbaa !16 + br label %116 + +116:; preds = %54, %GetMBSSIM.exit51 + %117 = add nsw i32 %.057, %18 + %.not34 = icmp sgt i32 %117, %15 br i1 %.not34, label %.loopexit, label %54, !llvm.loop !50 -.loopexit: ; preds = %115, %GetMBSSIM.exit, %1 +.loopexit: ; preds = %116, %GetMBSSIM.exit, %1 ret void } @@ -298,7 +300,7 @@ define hidden void @VP8AdjustFilterStrength(ptr noundef readonly captures(none) %indvars.iv = phi i64 [ 1, %7 ], [ %indvars.iv.next, %11 ] %.03647 = phi i32 [ 0, %7 ], [ %.1, %11 ] %.04046 = phi double [ %10, %7 ], [ %.141, %11 ] - %12 = getelementptr inbounds nuw [4 x [64 x double]], ptr %5, i64 0, i64 %indvars.iv53, i64 %indvars.iv + %12 = getelementptr inbounds nuw [64 x double], ptr %8, i64 0, i64 %indvars.iv %13 = load double, ptr %12, align 8, !tbaa !16 %14 = fcmp ogt double %13, %.04046 %.141 = select i1 %14, double %13, double %.04046 @@ -328,41 +330,42 @@ define hidden void @VP8AdjustFilterStrength(ptr noundef readonly captures(none) %24 = getelementptr inbounds nuw i8, ptr %3, i64 24 %25 = load i32, ptr %24, align 8, !tbaa !54 %26 = sext i32 %25 to i64 - br label %27 - -27: ; preds = %.preheader, %45 - %indvars.iv57 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next58, %45 ] - %.03850 = phi i32 [ 0, %.preheader ], [ %spec.select, %45 ] - %28 = getelementptr inbounds nuw [4 x %struct.VP8SegmentInfo], ptr %23, i64 0, i64 %indvars.iv57 - %29 = getelementptr inbounds nuw i8, ptr %28, i64 688 - %30 = load i32, ptr %29, align 8, !tbaa !55 - %31 = getelementptr inbounds nuw i8, ptr %28, i64 226 - %32 = load i16, ptr %31, align 2, !tbaa !56 - %33 = zext i16 %32 to i32 - %34 = mul nsw i32 %30, %33 - %35 = ashr i32 %34, 3 - %36 = tail call i32 @llvm.smin.i32(i32 %35, i32 63) - %37 = sext i32 %36 to i64 - %38 = getelementptr inbounds [8 x [64 x i8]], ptr @kLevelsFromDelta, i64 0, i64 %26, i64 %37 - %39 = load i8, ptr %38, align 1, !tbaa !3 - %40 = zext i8 %39 to i32 - %41 = getelementptr inbounds nuw i8, ptr %28, i64 684 - %42 = load i32, ptr %41, align 4, !tbaa !20 - %43 = icmp slt i32 %42, %40 - br i1 %43, label %44, label %45 - -44: ; preds = %27 - store i32 %40, ptr %41, align 4, !tbaa !20 - br label %45 - -45: ; preds = %44, %27 - %46 = phi i32 [ %40, %44 ], [ %42, %27 ] - %spec.select = tail call i32 @llvm.smax.i32(i32 %.03850, i32 %46) + %27 = getelementptr inbounds [8 x [64 x i8]], ptr @kLevelsFromDelta, i64 0, i64 %26 + br label %28 + +28: ; preds = %.preheader, %46 + %.03850 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next58, %46 ] + %.03850 = phi i32 [ 0, %.preheader ], [ %spec.select, %46 ] + %29 = getelementptr inbounds nuw [4 x %struct.VP8SegmentInfo], ptr %23, i64 0, i64 %.03850 + %30 = getelementptr inbounds nuw i8, ptr %29, i64 688 + %31 = load i32, ptr %30, align 8, !tbaa !55 + %32 = getelementptr inbounds nuw i8, ptr %29, i64 226 + %33 = load i16, ptr %32, align 2, !tbaa !56 + %34 = zext i16 %33 to i32 + %35 = mul nsw i32 %31, %34 + %36 = ashr i32 %35, 3 + %37 = tail call i32 @llvm.smin.i32(i32 %36, i32 63) + %38 = sext i32 %37 to i64 + %39 = getelementptr inbounds [64 x i8], ptr %27, i64 0, i64 %38 + %40 = load i8, ptr %39, align 1, !tbaa !3 + %41 = zext i8 %40 to i32 + %42 = getelementptr inbounds nuw i8, ptr %29, i64 684 + %43 = load i32, ptr %42, align 4, !tbaa !20 + %44 = icmp slt i32 %43, %41 + br i1 %44, label %45, label %46 + +45:; preds = %28 + store i32 %41, ptr %42, align 4, !tbaa !20 + br label %46 + +46:; preds = %45, %28 + %47 = phi i32 [ %41, %45 ], [ %43, %28 ] + %spec.select = tail call i32 @llvm.smax.i32(i32 %.03850, i32 %47) %indvars.iv.next58 = add nuw nsw i64 %indvars.iv57, 1 %exitcond60.not = icmp eq i64 %indvars.iv.next58, 4 - br i1 %exitcond60.not, label %47, label %27, !llvm.loop !58 + br i1 %exitcond60.not, label %47, label %28, !llvm.loop !58 -47: ; preds = %45 +47: ; preds = %46 %48 = getelementptr inbounds nuw i8, ptr %3, i64 20 store i32 %spec.select, ptr %48, align 4, !tbaa !59 br label %.loopexit diff --git a/bench/libwebp/optimized/vp8_dec.ll b/bench/libwebp/optimized/vp8_dec.ll index e502243291f..afcd6483470 100644 --- a/bench/libwebp/optimized/vp8_dec.ll +++ b/bench/libwebp/optimized/vp8_dec.ll @@ -1196,7 +1196,7 @@ ParseResiduals.exit: ; preds = %145, %151 %168 = getelementptr inbounds nuw i8, ptr %0, i64 2920 %169 = load i32, ptr %168, align 8, !tbaa !73 %170 = icmp sgt i32 %169, 0 - br i1 %170, label %171, label %190 + br i1 %170, label %171, label %191 171: ; preds = %167 %172 = getelementptr inbounds nuw i8, ptr %0, i64 2840 @@ -1208,25 +1208,26 @@ ParseResiduals.exit: ; preds = %145, %151 %178 = getelementptr inbounds nuw i8, ptr %13, i64 798 %179 = load i8, ptr %178, align 2, !tbaa !82 %180 = zext i8 %179 to i64 - %181 = getelementptr inbounds nuw i8, ptr %13, i64 768 - %182 = load i8, ptr %181, align 4, !tbaa !83 - %183 = zext i8 %182 to i64 - %184 = getelementptr inbounds nuw [4 x [2 x %struct.VP8FInfo]], ptr %177, i64 0, i64 %180, i64 %183 - %185 = load i32, ptr %184, align 4 - store i32 %185, ptr %176, align 1 - %186 = getelementptr inbounds nuw i8, ptr %176, i64 2 - %187 = lshr i32 %185, 16 - %188 = trunc i32 %187 to i8 - %189 = or i8 %.0, %188 - store i8 %189, ptr %186, align 1, !tbaa !100 - br label %190 - -190: ; preds = %171, %167 - %191 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %192 = load i32, ptr %191, align 8, !tbaa !66 - %.not32 = icmp eq i32 %192, 0 - %193 = zext i1 %.not32 to i32 - ret i32 %193 + %181 = getelementptr inbounds nuw [4 x [2 x %struct.VP8FInfo]], ptr %177, i64 0, i64 %180 + %182 = getelementptr inbounds nuw i8, ptr %13, i64 768 + %183 = load i8, ptr %182, align 4, !tbaa !83 + %184 = zext i8 %183 to i64 + %185 = getelementptr inbounds nuw [2 x %struct.VP8FInfo], ptr %181, i64 0, i64 %184 + %186 = load i32, ptr %185, align 4 + store i32 %186, ptr %176, align 1 + %187 = getelementptr inbounds nuw i8, ptr %176, i64 2 + %188 = lshr i32 %186, 16 + %189 = trunc i32 %188 to i8 + %190 = or i8 %.0, %189 + store i8 %190, ptr %187, align 1, !tbaa !100 + br label %191 + +191: ; preds = %171, %167 + %192 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %193 = load i32, ptr %192, align 8, !tbaa !66 + %.not32 = icmp eq i32 %193, 0 + %194 = zext i1 %.not32 to i32 + ret i32 %194 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable diff --git a/bench/lief/optimized/aria.ll b/bench/lief/optimized/aria.ll index e4bdd2ad084..8c4e3cb5342 100644 --- a/bench/lief/optimized/aria.ll +++ b/bench/lief/optimized/aria.ll @@ -652,11 +652,13 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture br label %.preheader40 .preheader40: ; preds = %.preheader40.lr.ph, %15 - %indvars.iv49 = phi i64 [ %8, %.preheader40.lr.ph ], [ %indvars.iv.next50, %15 ] - %indvars.iv47 = phi i64 [ 0, %.preheader40.lr.ph ], [ %indvars.iv.next48, %15 ] - br label %10 + %indvars.iv49 = phi i64 [ %8, %.preheader40.lr.ph ], [ %indvars.iv.next50, %17 ] + %indvars.iv47 = phi i64 [ 0, %.preheader40.lr.ph ], [ %indvars.iv.next48, %17 ] + %9 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv47 + %10 = getelementptr inbounds [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv49 + br label %12 -.preheader: ; preds = %15 +.preheader: ; preds = %17 %.not58 = icmp eq i8 %6, 1 br i1 %.not58, label %.loopexit, label %.lr.ph @@ -666,13 +668,13 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture br label %17 10: ; preds = %.preheader40, %10 - %indvars.iv = phi i64 [ 0, %.preheader40 ], [ %indvars.iv.next, %10 ] - %11 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv47, i64 %indvars.iv - %12 = load i32, ptr %11, align 4, !tbaa !3 - %13 = getelementptr inbounds [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv49, i64 %indvars.iv + %indvars.iv = phi i64 [ 0, %.preheader40 ], [ %indvars.iv.next, %12 ] + %11 = getelementptr inbounds nuw [4 x i32], ptr %9, i64 0, i64 %indvars.iv %14 = load i32, ptr %13, align 4, !tbaa !3 - store i32 %14, ptr %11, align 4, !tbaa !3 - store i32 %12, ptr %13, align 4, !tbaa !3 + %15 = getelementptr inbounds nuw [4 x i32], ptr %10, i64 0, i64 %indvars.iv + %16 = load i32, ptr %15, align 4, !tbaa !3 + store i32 %16, ptr %13, align 4, !tbaa !3 + store i32 %14, ptr %15, align 4, !tbaa !3 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 br i1 %exitcond.not, label %15, label %10, !llvm.loop !13 @@ -684,53 +686,53 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture br i1 %16, label %.preheader40, label %.preheader, !llvm.loop !14 17: ; preds = %.lr.ph, %17 - %indvars.iv54 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next55, %17 ] + %indvars.iv54 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next55, %19 ] %18 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %9, i64 0, i64 %indvars.iv54 %19 = getelementptr inbounds nuw i8, ptr %18, i64 4 %20 = getelementptr inbounds nuw i8, ptr %18, i64 8 %21 = getelementptr inbounds nuw i8, ptr %18, i64 12 - %22 = load i32, ptr %19, align 4, !tbaa !3 - %23 = load i32, ptr %18, align 4, !tbaa !3 %24 = load i32, ptr %21, align 4, !tbaa !3 %25 = load i32, ptr %20, align 4, !tbaa !3 - %26 = tail call i32 @llvm.bswap.i32(i32 %25) - %27 = tail call i32 @llvm.fshl.i32(i32 %26, i32 %26, i32 16) - %28 = tail call i32 @llvm.bswap.i32(i32 %24) - %29 = xor i32 %27, %22 - %30 = tail call i32 @llvm.fshl.i32(i32 %23, i32 %23, i32 16) - %31 = tail call i32 @llvm.bswap.i32(i32 %29) - %32 = tail call i32 @llvm.fshl.i32(i32 %31, i32 %31, i32 16) - %33 = xor i32 %30, %32 - %34 = xor i32 %33, %28 - %35 = xor i32 %27, %24 - %36 = tail call i32 @llvm.fshl.i32(i32 %35, i32 %35, i32 16) - %37 = tail call i32 @llvm.bswap.i32(i32 %22) - %38 = xor i32 %30, %37 - %39 = xor i32 %36, %23 - %40 = xor i32 %39, %34 - store i32 %40, ptr %19, align 4, !tbaa !3 - %41 = tail call i32 @llvm.fshl.i32(i32 %36, i32 %36, i32 16) - %42 = xor i32 %34, %41 - %43 = tail call i32 @llvm.bswap.i32(i32 %42) - %44 = xor i32 %43, %22 - %45 = xor i32 %43, %22 - %46 = tail call i32 @llvm.fshl.i32(i32 %44, i32 %45, i32 16) - store i32 %46, ptr %18, align 4, !tbaa !3 - %47 = tail call i32 @llvm.fshl.i32(i32 %34, i32 %34, i32 16) - %48 = tail call i32 @llvm.bswap.i32(i32 %34) - %49 = xor i32 %38, %48 - %50 = xor i32 %49, %27 - store i32 %50, ptr %21, align 4, !tbaa !3 - %51 = tail call i32 @llvm.bswap.i32(i32 %38) - %52 = xor i32 %51, %47 - %53 = xor i32 %52, %28 - store i32 %53, ptr %20, align 4, !tbaa !3 + %26 = load i32, ptr %23, align 4, !tbaa !3 + %27 = load i32, ptr %22, align 4, !tbaa !3 + %28 = tail call i32 @llvm.bswap.i32(i32 %27) + %29 = tail call i32 @llvm.fshl.i32(i32 %28, i32 %28, i32 16) + %30 = tail call i32 @llvm.bswap.i32(i32 %26) + %31 = xor i32 %29, %24 + %32 = tail call i32 @llvm.fshl.i32(i32 %25, i32 %25, i32 16) + %33 = tail call i32 @llvm.bswap.i32(i32 %31) + %34 = tail call i32 @llvm.fshl.i32(i32 %33, i32 %33, i32 16) + %35 = xor i32 %32, %34 + %36 = xor i32 %35, %30 + %37 = xor i32 %29, %26 + %38 = tail call i32 @llvm.fshl.i32(i32 %37, i32 %37, i32 16) + %39 = tail call i32 @llvm.bswap.i32(i32 %24) + %40 = xor i32 %32, %39 + %41 = xor i32 %38, %25 + %42 = xor i32 %41, %36 + store i32 %42, ptr %21, align 4, !tbaa !3 + %43 = tail call i32 @llvm.fshl.i32(i32 %38, i32 %38, i32 16) + %44 = xor i32 %36, %43 + %45 = tail call i32 @llvm.bswap.i32(i32 %44) + %46 = xor i32 %45, %24 + %47 = xor i32 %45, %24 + %47 = tail call i32 @llvm.fshl.i32(i32 %46, i32 %47, i32 16) + store i32 %48, ptr %20, align 4, !tbaa !3 + %49 = tail call i32 @llvm.fshl.i32(i32 %36, i32 %36, i32 16) + %50 = tail call i32 @llvm.bswap.i32(i32 %36) + %51 = xor i32 %40, %50 + %52 = xor i32 %51, %29 + store i32 %52, ptr %23, align 4, !tbaa !3 + %53 = tail call i32 @llvm.bswap.i32(i32 %40) + %54 = xor i32 %53, %49 + %55 = xor i32 %54, %30 + store i32 %55, ptr %22, align 4, !tbaa !3 %indvars.iv.next55 = add nuw nsw i64 %indvars.iv54, 1 %exitcond57.not = icmp eq i64 %indvars.iv.next55, %wide.trip.count br i1 %exitcond57.not, label %.loopexit, label %17, !llvm.loop !15 .loopexit: ; preds = %17, %5, %.preheader, %3 - %.0 = phi i32 [ %4, %3 ], [ 0, %.preheader ], [ 0, %5 ], [ 0, %17 ] + %.0 = phi i32 [ %4, %3 ], [ 0, %.preheader ], [ 0, %5 ], [ 0, %19 ] ret i32 %.0 } diff --git a/bench/linux/optimized/forcedeth.ll b/bench/linux/optimized/forcedeth.ll index 8778df1144f..f74208a3a0c 100644 --- a/bench/linux/optimized/forcedeth.ll +++ b/bench/linux/optimized/forcedeth.ll @@ -8228,12 +8228,14 @@ define internal fastcc void @nv_gear_backoff_reseed(ptr %.3120.val) unnamed_addr %52 = load i32, ptr %4, align 4 %53 = zext i32 %52 to i64 %54 = add nsw i64 %51, -1 - %55 = getelementptr [8 x [15 x i32]], ptr @main_seedset, i64 0, i64 %53, i64 %54 + %55 = getelementptr [8 x [15 x i32]], ptr @main_seedset, i64 0, i64 %53 + %55 = getelementptr [15 x i32], ptr %.split, i64 0, i64 %54 %56 = load i32, ptr %55, align 4 %57 = and i32 %56, 1023 %58 = trunc i64 %51 to i32 %59 = shl i32 %58, 24 - %60 = getelementptr [8 x [15 x i32]], ptr @gear_seedset, i64 0, i64 %53, i64 %54 + %60 = getelementptr [8 x [15 x i32]], ptr @gear_seedset, i64 0, i64 %53 + %60 = getelementptr [15 x i32], ptr %.split1, i64 0, i64 %54 %61 = load i32, ptr %60, align 4 %62 = shl i32 %61, 12 %63 = and i32 %62, 4190208 diff --git a/bench/linux/optimized/intel_guc_submission.ll b/bench/linux/optimized/intel_guc_submission.ll index b3e42a4b432..52ec03a2c8b 100644 --- a/bench/linux/optimized/intel_guc_submission.ll +++ b/bench/linux/optimized/intel_guc_submission.ll @@ -2236,7 +2236,7 @@ define dso_local noundef range(i32 -12, 1) i32 @intel_guc_submission_setup(ptr n 147: ; preds = %.preheader %148 = add nuw nsw i64 %174, 1 - %149 = getelementptr [6 x [9 x ptr]], ptr %141, i64 0, i64 %143, i64 %148 + %149 = getelementptr [9 x ptr], ptr %144, i64 0, i64 %148 %150 = load ptr, ptr %149, align 8 %151 = icmp eq ptr %150, null br i1 %151, label %.preheader, label %.loopexit, !llvm.loop !46 @@ -5511,7 +5511,8 @@ define dso_local ptr @intel_guc_lookup_engine(ptr noundef readonly captures(none %7 = getelementptr i8, ptr %0, i64 3624 %8 = zext i8 %6 to i64 %9 = zext i8 %2 to i64 - %10 = getelementptr [6 x [9 x ptr]], ptr %7, i64 0, i64 %8, i64 %9 + %10 = getelementptr [6 x [9 x ptr]], ptr %7, i64 0, i64 %8 + %10 = getelementptr [9 x ptr], ptr %.split, i64 0, i64 %9 %11 = load ptr, ptr %10, align 8 ret ptr %11 } @@ -5553,7 +5554,8 @@ define dso_local noundef range(i32 -71, 1) i32 @intel_guc_engine_failure_process %27 = zext i8 %25 to i64 %28 = and i32 %19, 255 %29 = zext nneg i32 %28 to i64 - %30 = getelementptr [6 x [9 x ptr]], ptr %26, i64 0, i64 %27, i64 %29 + %30 = getelementptr [6 x [9 x ptr]], ptr %26, i64 0, i64 %27 + %30 = getelementptr [9 x ptr], ptr %.split, i64 0, i64 %29 %31 = load ptr, ptr %30, align 8 %32 = icmp eq ptr %31, null %33 = getelementptr i8, ptr %0, i64 -632 diff --git a/bench/llvm/optimized/PreISelIntrinsicLowering.ll b/bench/llvm/optimized/PreISelIntrinsicLowering.ll index aff67db9a3e..9989a2c4761 100644 --- a/bench/llvm/optimized/PreISelIntrinsicLowering.ll +++ b/bench/llvm/optimized/PreISelIntrinsicLowering.ll @@ -1906,7 +1906,7 @@ _ZL17lowerLoadRelativeRN4llvm8FunctionE.exit: ; preds = %518, %427, %431 %680 = call { i16, ptr } @_ZN4llvm3EVT6getEVTEPNS_4TypeEb(ptr noundef nonnull %663, i1 noundef zeroext false) #17 %681 = extractvalue { i16, ptr } %680, 0 %.not.i.i.i.i62 = icmp eq i16 %681, 0 - br i1 %.not.i.i.i.i62, label %692, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i + br i1 %.not.i.i.i.i62, label %693, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i: ; preds = %668 %682 = getelementptr inbounds nuw i8, ptr %677, i64 104 @@ -1914,7 +1914,7 @@ _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i: ; preds = %668 %684 = getelementptr inbounds nuw [234 x ptr], ptr %682, i64 0, i64 %683 %685 = load ptr, ptr %684, align 8, !tbaa !210 %.not.i.i.i = icmp eq ptr %685, null - br i1 %.not.i.i.i, label %692, label %686 + br i1 %.not.i.i.i, label %693, label %686 686: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i %.not.i7.i.i.i = icmp ult i32 %679, 496 @@ -1923,20 +1923,21 @@ _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i: ; preds = %668 _ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i: ; preds = %686 %687 = getelementptr inbounds nuw i8, ptr %677, i64 5486 %688 = zext nneg i32 %679 to i64 - %689 = getelementptr inbounds nuw [234 x [496 x i8]], ptr %687, i64 0, i64 %683, i64 %688 - %690 = load i8, ptr %689, align 1, !tbaa !212 - %691 = icmp eq i8 %690, 2 - br i1 %691, label %692, label %.thread.i60 - -692: ; preds = %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i, %668 - %693 = call noundef zeroext i1 @_ZN4llvm31lowerUnaryVectorIntrinsicAsLoopERNS_6ModuleEPNS_8CallInstE(ptr noundef nonnull align 8 dereferenceable(841) %1, ptr noundef nonnull %652) #17 - %694 = or i1 %.01528.i, %693 - %spec.select.i63 = select i1 %693, ptr %.029.i, ptr %650 + %689 = getelementptr inbounds nuw [234 x [496 x i8]], ptr %687, i64 0, i64 %683 + %690 = getelementptr inbounds nuw [496 x i8], ptr %689, i64 0, i64 %688 + %691 = load i8, ptr %690, align 1, !tbaa !212 + %692 = icmp eq i8 %691, 2 + br i1 %692, label %693, label %.thread.i60 + +693:; preds = %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i, %668 + %694 = call noundef zeroext i1 @_ZN4llvm31lowerUnaryVectorIntrinsicAsLoopERNS_6ModuleEPNS_8CallInstE(ptr noundef nonnull align 8 dereferenceable(841) %1, ptr noundef nonnull %652) #17 + %695 = or i1 %.01528.i, %694 + %spec.select.i63 = select i1 %694, ptr %.029.i, ptr %650 br label %.thread.i60 -.thread.i60: ; preds = %692, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i, %686, %654, %.critedge2.i59 - %.11623.i = phi i1 [ %.01528.i, %.critedge2.i59 ], [ %.01528.i, %654 ], [ %.01528.i, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i ], [ %.01528.i, %686 ], [ %694, %692 ] - %695 = phi ptr [ %650, %.critedge2.i59 ], [ %650, %654 ], [ %650, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i ], [ %650, %686 ], [ %spec.select.i63, %692 ] +.thread.i60: ; preds = %693, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i, %686, %654, %.critedge2.i59 + %.11623.i = phi i1 [ %.01528.i, %.critedge2.i59 ], [ %.01528.i, %654 ], [ %.01528.i, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i ], [ %.01528.i, %686 ], [ %695, %693 ] + %695 = phi ptr [ %650, %.critedge2.i59 ], [ %650, %654 ], [ %650, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i ], [ %650, %686 ], [ %spec.select.i63, %693 ] %696 = load ptr, ptr %643, align 8, !tbaa !102 %697 = icmp eq ptr %696, null br i1 %697, label %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit", label %.lr.ph.i56, !llvm.loop !214 diff --git a/bench/llvm/optimized/Process.ll b/bench/llvm/optimized/Process.ll index 637e8ed2763..d193890b874 100644 --- a/bench/llvm/optimized/Process.ll +++ b/bench/llvm/optimized/Process.ll @@ -1565,11 +1565,13 @@ define dso_local noundef zeroext i1 @_ZN4llvm3sys7Process15ColorNeedsFlushEv() l ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define dso_local noundef nonnull ptr @_ZN4llvm3sys7Process11OutputColorEcbb(i8 noundef signext %0, i1 noundef zeroext %1, i1 noundef zeroext %2) local_unnamed_addr #5 align 2 { %4 = zext i1 %2 to i64 - %5 = zext i1 %1 to i64 - %6 = and i8 %0, 15 - %7 = zext nneg i8 %6 to i64 - %8 = getelementptr inbounds nuw [2 x [2 x [16 x [11 x i8]]]], ptr @_ZL10colorcodes, i64 0, i64 %4, i64 %5, i64 %7 - ret ptr %8 + %5 = getelementptr inbounds nuw [2 x [2 x [16 x [11 x i8]]]], ptr @_ZL10colorcodes, i64 0, i64 %4 + %6 = zext i1 %1 to i64 + %7 = getelementptr inbounds nuw [2 x [16 x [11 x i8]]], ptr %5, i64 0, i64 %6 + %8 = and i8 %0, 15 + %9 = zext nneg i8 %8 to i64 + %10 = getelementptr inbounds nuw [16 x [11 x i8]], ptr %7, i64 0, i64 %9 + ret ptr %10 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable diff --git a/bench/llvm/optimized/X86InstrInfo.ll b/bench/llvm/optimized/X86InstrInfo.ll index 32d3e7cbce1..5cc47d7ad8a 100644 --- a/bench/llvm/optimized/X86InstrInfo.ll +++ b/bench/llvm/optimized/X86InstrInfo.ll @@ -8501,13 +8501,14 @@ define dso_local noundef i32 @_ZNK4llvm12X86InstrInfo30getFMA3OpcodeToCommuteOpe %or.cond15.i = and i1 %30, %33 %34 = select i1 %or.cond15.i, i64 1, i64 2 %35 = select i1 %or.cond.i, i64 0, i64 %34 - %36 = getelementptr inbounds nuw [3 x [3 x i32]], ptr @_ZZNK4llvm12X86InstrInfo30getFMA3OpcodeToCommuteOperandsERKNS_12MachineInstrEjjRKNS_17X86InstrFMA3GroupEE11FormMapping, i64 0, i64 %35, i64 %indvars.iv - %37 = load i32, ptr %36, align 4, !tbaa !85 - %38 = zext i32 %37 to i64 - %39 = getelementptr inbounds nuw [3 x i32], ptr %6, i64 0, i64 %38 - %40 = load i32, ptr %39, align 4, !tbaa !85 + %36 = getelementptr inbounds nuw [3 x [3 x i32]], ptr @_ZZNK4llvm12X86InstrInfo30getFMA3OpcodeToCommuteOperandsERKNS_12MachineInstrEjjRKNS_17X86InstrFMA3GroupEE11FormMapping, i64 0, i64 %35 + %37 = getelementptr inbounds nuw [3 x i32], ptr %36, i64 0, i64 %indvars.iv + %38 = load i32, ptr %37, align 4, !tbaa !85 + %39 = zext i32 %38 to i64 + %40 = getelementptr inbounds nuw [3 x i32], ptr %6, i64 0, i64 %39 + %41 = load i32, ptr %40, align 4, !tbaa !85 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #32 - ret i32 %40 + ret i32 %41 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/llvm/optimized/X86TargetMachine.ll b/bench/llvm/optimized/X86TargetMachine.ll index e8339aa2a9b..82862fe5a19 100644 --- a/bench/llvm/optimized/X86TargetMachine.ll +++ b/bench/llvm/optimized/X86TargetMachine.ll @@ -6450,14 +6450,15 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNK4llvm19TargetTransformInfo5Mo %11 = load ptr, ptr %6, align 8, !tbaa !408 %12 = getelementptr inbounds nuw i8, ptr %11, i64 395330 %13 = zext i16 %9 to i64 - %14 = zext i32 %1 to i64 - %15 = getelementptr inbounds nuw [234 x [5 x i16]], ptr %12, i64 0, i64 %13, i64 %14 - %16 = load i16, ptr %15, align 2, !tbaa !732 - %17 = trunc i16 %16 to i8 - %18 = icmp ult i8 %17, 16 - %.mask.i.i = and i8 %17, -16 - %19 = icmp eq i8 %.mask.i.i, 64 - %spec.select.i.i = or i1 %18, %19 + %14 = getelementptr inbounds nuw [234 x [5 x i16]], ptr %12, i64 0, i64 %13 + %15 = zext i32 %1 to i64 + %16 = getelementptr inbounds nuw [5 x i16], ptr %14, i64 0, i64 %15 + %17 = load i16, ptr %16, align 2, !tbaa !732 + %18 = trunc i16 %17 to i8 + %19 = icmp ult i8 %18, 16 + %.mask.i.i = and i8 %18, -16 + %20 = icmp eq i8 %.mask.i.i, 64 + %spec.select.i.i = or i1 %19, %20 br label %_ZNK4llvm16BasicTTIImplBaseINS_10X86TTIImplEE18isIndexedLoadLegalENS_19TargetTransformInfo14MemIndexedModeEPNS_4TypeERKNS_10DataLayoutE.exit _ZNK4llvm16BasicTTIImplBaseINS_10X86TTIImplEE18isIndexedLoadLegalENS_19TargetTransformInfo14MemIndexedModeEPNS_4TypeERKNS_10DataLayoutE.exit: ; preds = %3, %10 @@ -6480,11 +6481,12 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNK4llvm19TargetTransformInfo5Mo %11 = load ptr, ptr %6, align 8, !tbaa !408 %12 = getelementptr inbounds nuw i8, ptr %11, i64 395330 %13 = zext i16 %9 to i64 - %14 = zext i32 %1 to i64 - %15 = getelementptr inbounds nuw [234 x [5 x i16]], ptr %12, i64 0, i64 %13, i64 %14 - %16 = load i16, ptr %15, align 2, !tbaa !732 - %17 = and i16 %16, 11 - %spec.select.i.i = icmp eq i16 %17, 0 + %14 = getelementptr inbounds nuw [234 x [5 x i16]], ptr %12, i64 0, i64 %13 + %15 = zext i32 %1 to i64 + %16 = getelementptr inbounds nuw [5 x i16], ptr %14, i64 0, i64 %15 + %17 = load i16, ptr %16, align 2, !tbaa !732 + %18 = and i16 %17, 11 + %spec.select.i.i = icmp eq i16 %18, 0 br label %_ZNK4llvm16BasicTTIImplBaseINS_10X86TTIImplEE19isIndexedStoreLegalENS_19TargetTransformInfo14MemIndexedModeEPNS_4TypeERKNS_10DataLayoutE.exit _ZNK4llvm16BasicTTIImplBaseINS_10X86TTIImplEE19isIndexedStoreLegalENS_19TargetTransformInfo14MemIndexedModeEPNS_4TypeERKNS_10DataLayoutE.exit: ; preds = %3, %10 diff --git a/bench/lua/optimized/lstring.ll b/bench/lua/optimized/lstring.ll index 1e05f1cf3dd..a82052e74e3 100644 --- a/bench/lua/optimized/lstring.ll +++ b/bench/lua/optimized/lstring.ll @@ -308,35 +308,36 @@ define hidden void @luaS_clearcache(ptr noundef captures(none) %0) local_unnamed %3 = getelementptr inbounds nuw i8, ptr %0, i64 272 br label %.preheader -.preheader: ; preds = %1, %14 - %indvars.iv14 = phi i64 [ 0, %1 ], [ %indvars.iv.next15, %14 ] - br label %4 - -4: ; preds = %.preheader, %13 - %5 = phi i1 [ true, %.preheader ], [ false, %13 ] - %indvars.iv = phi i64 [ 0, %.preheader ], [ 1, %13 ] - %6 = getelementptr inbounds nuw [53 x [2 x ptr]], ptr %2, i64 0, i64 %indvars.iv14, i64 %indvars.iv - %7 = load ptr, ptr %6, align 8, !tbaa !30 - %8 = getelementptr inbounds nuw i8, ptr %7, i64 9 - %9 = load i8, ptr %8, align 1, !tbaa !33 - %10 = and i8 %9, 24 - %.not = icmp eq i8 %10, 0 - br i1 %.not, label %13, label %11 - -11: ; preds = %4 - %12 = load ptr, ptr %3, align 8, !tbaa !34 - store ptr %12, ptr %6, align 8, !tbaa !30 - br label %13 - -13: ; preds = %4, %11 - br i1 %5, label %4, label %14 - -14: ; preds = %13 +.preheader: ; preds = %1, %15 + %indvars.iv14 = phi i64 [ 0, %1 ], [ %indvars.iv.next15, %15 ] + %4 = getelementptr inbounds nuw [53 x [2 x ptr]], ptr %2, i64 0, i64 %indvars.iv14 + br label %5 + +5: ; preds = %.preheader, %14 + %indvars.iv = phi i1 [ true, %.preheader ], [ false, %14 ] + %indvars.iv = phi i64 [ 0, %.preheader ], [ 1, %14 ] + %7 = getelementptr inbounds nuw [2 x ptr], ptr %4, i64 0, i64 %indvars.iv + %8 = load ptr, ptr %7, align 8, !tbaa !30 + %9 = getelementptr inbounds nuw i8, ptr %8, i64 9 + %10 = load i8, ptr %9, align 1, !tbaa !33 + %11 = and i8 %10, 24 + %.not = icmp eq i8 %11, 0 + br i1 %.not, label %14, label %12 + +12:; preds = %5 + %13 = load ptr, ptr %3, align 8, !tbaa !34 + store ptr %13, ptr %7, align 8, !tbaa !30 + br label %14 + +14:; preds = %5, %12 + br i1 %6, label %5, label %15 + +15: ; preds = %14 %indvars.iv.next15 = add nuw nsw i64 %indvars.iv14, 1 %exitcond.not = icmp eq i64 %indvars.iv.next15, 53 br i1 %exitcond.not, label %15, label %.preheader -15: ; preds = %14 +15: ; preds = %15 ret void } @@ -356,16 +357,14 @@ define hidden void @luaS_init(ptr noundef %0) local_unnamed_addr #4 { tail call void @luaC_fix(ptr noundef %0, ptr noundef %7) #13 %9 = load ptr, ptr %8, align 8, !tbaa !34 %10 = getelementptr inbounds nuw i8, ptr %3, i64 552 - %invariant.gep = getelementptr inbounds i8, ptr %10, i64 8 br label %.preheader .preheader: ; preds = %1, %.preheader %indvars.iv21 = phi i64 [ 0, %1 ], [ %indvars.iv.next22, %.preheader ] - %11 = getelementptr inbounds nuw [53 x [2 x ptr]], ptr %10, i64 0, i64 %indvars.iv21, i64 0 + %11 = getelementptr inbounds nuw [53 x [2 x ptr]], ptr %10, i64 0, i64 %indvars.iv21 store ptr %9, ptr %11, align 8, !tbaa !30 - %.idx = shl nuw nsw i64 %indvars.iv21, 4 - %gep = getelementptr inbounds i8, ptr %invariant.gep, i64 %.idx - store ptr %9, ptr %gep, align 8, !tbaa !30 + %12 = getelementptr inbounds nuw i8, ptr %11, i64 8 + store ptr %9, ptr %12, align 8, !tbaa !30 %indvars.iv.next22 = add nuw nsw i64 %indvars.iv21, 1 %exitcond.not = icmp eq i64 %indvars.iv.next22, 53 br i1 %exitcond.not, label %12, label %.preheader diff --git a/bench/luau/optimized/AssemblyBuilderX64.ll b/bench/luau/optimized/AssemblyBuilderX64.ll index bab141136ed..399ec1bc8c5 100644 --- a/bench/luau/optimized/AssemblyBuilderX64.ll +++ b/bench/luau/optimized/AssemblyBuilderX64.ll @@ -2065,7 +2065,7 @@ define dso_local void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX643logENS1_10Operan %.sroa.9.0.extract.trunc = trunc i64 %.sroa.9.0.extract.shift to i8 %.sroa.12.0.extract.shift = lshr i64 %1, 32 %.sroa.12.0.extract.trunc = trunc nuw i64 %.sroa.12.0.extract.shift to i32 - switch i8 %.sroa.0.0.extract.trunc, label %61 [ + switch i8 %.sroa.0.0.extract.trunc, label %64 [ i8 0, label %3 i8 1, label %9 i8 2, label %58 @@ -2073,12 +2073,13 @@ define dso_local void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX643logENS1_10Operan 3: ; preds = %2 %4 = and i64 %.sroa.4.0.extract.shift, 7 - %5 = lshr i64 %1, 19 - %6 = and i64 %5, 31 - %7 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %4, i64 %6 - %8 = load ptr, ptr %7, align 8, !tbaa !64 - tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.93, ptr noundef %8) - br label %61 + %5 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %4 + %6 = lshr i64 %1, 19 + %7 = and i64 %6, 31 + %8 = getelementptr inbounds nuw [16 x ptr], ptr %5, i64 0, i64 %7 + %9 = load ptr, ptr %8, align 8, !tbaa !64 + tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.93, ptr noundef %9) + br label %64 9: ; preds = %2 %10 = icmp eq i8 %.sroa.4.0.extract.trunc, 0 @@ -2113,47 +2114,49 @@ define dso_local void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX643logENS1_10Operan 23: ; preds = %19, %18 tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.96) %.not25 = icmp eq i8 %.sroa.4.0.extract.trunc, -128 - br i1 %.not25, label %30, label %24 + br i1 %.not25, label %32, label %24 24: ; preds = %23 %25 = and i64 %.sroa.4.0.extract.shift, 7 - %26 = lshr i64 %1, 19 - %27 = and i64 %26, 31 - %28 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %25, i64 %27 - %29 = load ptr, ptr %28, align 8, !tbaa !64 - tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.93, ptr noundef %29) - br label %30 - -30: ; preds = %24, %23 - %31 = and i64 %1, 65280 - %.not26 = icmp eq i64 %31, 32768 - br i1 %.not26, label %39, label %32 - -32: ; preds = %30 - %33 = select i1 %.not25, ptr @.str.99, ptr @.str.98 - %34 = and i64 %.sroa.2.0.extract.shift, 7 - %35 = lshr i64 %1, 11 - %36 = and i64 %35, 31 - %37 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %34, i64 %36 - %38 = load ptr, ptr %37, align 8, !tbaa !64 - tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.97, ptr noundef nonnull %33, ptr noundef %38) - br label %39 - -39: ; preds = %32, %30 - %40 = lshr i8 %.sroa.9.0.extract.trunc, 4 - %.not16 = icmp eq i8 %40, 1 - br i1 %.not16, label %43, label %41 - -41: ; preds = %39 - %42 = zext nneg i8 %40 to i32 - tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.100, i32 noundef %42) - br label %43 - -43: ; preds = %41, %39 + %27 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %26 + %28 = lshr i64 %1, 19 + %29 = and i64 %28, 31 + %30 = getelementptr inbounds nuw [16 x ptr], ptr %27, i64 0, i64 %29 + %31 = load ptr, ptr %30, align 8, !tbaa !64 + tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.93, ptr noundef %31) + br label %32 + +32:; preds = %25, %24 + %33 = and i64 %1, 65280 + %.not26 = icmp eq i64 %33, 32768 + br i1 %.not26, label %42, label %34 + +34:; preds = %32 + %35 = select i1 %.not25, ptr @.str.99, ptr @.str.98 + %36 = and i64 %.sroa.2.0.extract.shift, 7 + %37 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %36 + %38 = lshr i64 %1, 11 + %39 = and i64 %38, 31 + %40 = getelementptr inbounds nuw [16 x ptr], ptr %37, i64 0, i64 %39 + %41 = load ptr, ptr %40, align 8, !tbaa !64 + tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.97, ptr noundef nonnull %35, ptr noundef %41) + br label %42 + +42:; preds = %34, %32 + %43 = lshr i8 %.sroa.9.0.extract.trunc, 4 + %.not16 = icmp eq i8 %43, 1 + br i1 %.not16, label %46, label %44 + +44: ; preds = %42 + %45 = zext nneg i8 %43 to i32 + tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.100, i32 noundef %45) + br label %46 + +46: ; preds = %44, %42 %.not17 = icmp ult i64 %1, 4294967296 br i1 %.not17, label %51, label %44 -44: ; preds = %43 +44: ; preds = %46 %or.cond = icmp ult i64 %1, 42949672960 br i1 %or.cond, label %45, label %46 @@ -2174,7 +2177,7 @@ define dso_local void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX643logENS1_10Operan tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.103, i32 noundef %50) br label %51 -51: ; preds = %45, %49, %48, %43 +51: ; preds = %45, %49, %48, %46 %52 = getelementptr inbounds nuw i8, ptr %0, i64 56 %53 = load i64, ptr %52, align 8, !tbaa !10 %54 = icmp eq i64 %53, 4611686018427387903 @@ -7119,11 +7122,12 @@ declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immar define dso_local noundef ptr @_ZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64E(ptr noundef nonnull readnone align 8 captures(none) dereferenceable(252) %0, i8 %1) local_unnamed_addr #10 align 2 { %3 = and i8 %1, 7 %4 = zext nneg i8 %3 to i64 - %5 = lshr i8 %1, 3 - %6 = zext nneg i8 %5 to i64 - %7 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %4, i64 %6 - %8 = load ptr, ptr %7, align 8, !tbaa !64 - ret ptr %8 + %5 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %4 + %6 = lshr i8 %1, 3 + %7 = zext nneg i8 %6 to i64 + %8 = getelementptr inbounds nuw [16 x ptr], ptr %5, i64 0, i64 %7 + %9 = load ptr, ptr %8, align 8, !tbaa !64 + ret ptr %9 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable diff --git a/bench/lvgl/optimized/lv_ime_pinyin.ll b/bench/lvgl/optimized/lv_ime_pinyin.ll index 522bfa7b41d..350eec9046f 100644 --- a/bench/lvgl/optimized/lv_ime_pinyin.ll +++ b/bench/lvgl/optimized/lv_ime_pinyin.ll @@ -1727,9 +1727,10 @@ define internal fastcc void @pinyin_page_proc(ptr noundef captures(none) %0, i16 br i1 %.not41, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %32 - %indvars.iv61 = phi i64 [ %indvars.iv.next62, %32 ], [ 0, %.lr.ph ] + %indvars.iv61 = phi i64 [ %indvars.iv.next62, %33 ], [ 0, %.lr.ph ] %31 = mul nuw nsw i64 %indvars.iv61, 3 - br label %38 + %32 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv61 + br label %39 32: ; preds = %38 %indvars.iv.next62 = add nuw nsw i64 %indvars.iv61, 1 @@ -1741,20 +1742,20 @@ define internal fastcc void @pinyin_page_proc(ptr noundef captures(none) %0, i16 br i1 %37, label %.lr.ph.split.us, label %.loopexit, !llvm.loop !42 38: ; preds = %38, %.lr.ph.split.us - %indvars.iv57 = phi i64 [ %indvars.iv.next58, %38 ], [ 0, %.lr.ph.split.us ] + %indvars.iv57 = phi i64 [ %indvars.iv.next58, %39 ], [ 0, %.lr.ph.split.us ] %39 = load ptr, ptr %7, align 8, !tbaa !41 %40 = getelementptr inbounds nuw i8, ptr %39, i64 %30 %41 = getelementptr inbounds nuw i8, ptr %40, i64 %31 %42 = getelementptr inbounds nuw i8, ptr %41, i64 %indvars.iv57 %43 = load i8, ptr %42, align 1, !tbaa !8 - %44 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv61, i64 %indvars.iv57 + %44 = getelementptr inbounds nuw [4 x i8], ptr %32, i64 0, i64 %indvars.iv57 store i8 %43, ptr %44, align 1, !tbaa !8 %indvars.iv.next58 = add nuw nsw i64 %indvars.iv57, 1 %exitcond60.not = icmp eq i64 %indvars.iv.next58, 3 br i1 %exitcond60.not, label %32, label %38, !llvm.loop !43 45: ; preds = %24, %45 - %indvars.iv = phi i64 [ 0, %24 ], [ %indvars.iv.next, %45 ] + %indvars.iv = phi i64 [ 0, %24 ], [ %indvars.iv.next, %46 ] %46 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv tail call void @lv_memset(ptr noundef nonnull %46, i8 noundef zeroext 0, i64 noundef 4) #6 store i8 32, ptr %46, align 4, !tbaa !8 @@ -1762,9 +1763,9 @@ define internal fastcc void @pinyin_page_proc(ptr noundef captures(none) %0, i16 %exitcond.not = icmp eq i64 %indvars.iv.next, 6 br i1 %exitcond.not, label %25, label %45, !llvm.loop !44 -.lr.ph.split: ; preds = %.lr.ph, %52 - %indvars.iv54 = phi i64 [ %indvars.iv.next55, %52 ], [ 0, %.lr.ph ] - %47 = phi i16 [ %54, %52 ], [ 0, %.lr.ph ] +.lr.ph.split: ; preds = %.lr.ph, %54 + %indvars.iv54 = phi i64 [ %indvars.iv.next55, %54 ], [ 0, %.lr.ph ] + %47 = phi i16 [ %54, %54 ], [ 0, %.lr.ph ] %48 = load i16, ptr %26, align 2, !tbaa !22 %49 = icmp ne i16 %48, %.034 %.not42 = icmp samesign ugt i16 %6, %47 @@ -1773,9 +1774,10 @@ define internal fastcc void @pinyin_page_proc(ptr noundef captures(none) %0, i16 50: ; preds = %.lr.ph.split %51 = mul nuw nsw i64 %indvars.iv54, 3 - br label %58 + %53 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv54 + br label %60 -52: ; preds = %58 +54: ; preds = %60 %indvars.iv.next55 = add nuw nsw i64 %indvars.iv54, 1 %53 = load i16, ptr %3, align 8, !tbaa !24 %54 = trunc nuw nsw i64 %indvars.iv.next55 to i16 @@ -1785,19 +1787,19 @@ define internal fastcc void @pinyin_page_proc(ptr noundef captures(none) %0, i16 br i1 %57, label %.lr.ph.split, label %.loopexit, !llvm.loop !42 58: ; preds = %50, %58 - %indvars.iv50 = phi i64 [ 0, %50 ], [ %indvars.iv.next51, %58 ] + %indvars.iv50 = phi i64 [ 0, %51 ], [ %indvars.iv.next51, %58 ] %59 = load ptr, ptr %7, align 8, !tbaa !41 %60 = getelementptr inbounds nuw i8, ptr %59, i64 %30 %61 = getelementptr inbounds nuw i8, ptr %60, i64 %51 %62 = getelementptr inbounds nuw i8, ptr %61, i64 %indvars.iv50 %63 = load i8, ptr %62, align 1, !tbaa !8 - %64 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv54, i64 %indvars.iv50 + %64 = getelementptr inbounds nuw [4 x i8], ptr %53, i64 0, i64 %indvars.iv50 store i8 %63, ptr %64, align 1, !tbaa !8 %indvars.iv.next51 = add nuw nsw i64 %indvars.iv50, 1 %exitcond53.not = icmp eq i64 %indvars.iv.next51, 3 - br i1 %exitcond53.not, label %52, label %58, !llvm.loop !43 + br i1 %exitcond53.not, label %54, label %58, !llvm.loop !43 -.loopexit: ; preds = %.lr.ph.split, %52, %32, %25, %16, %2 +.loopexit: ; preds = %.lr.ph.split, %54, %32, %25, %16, %2 ret void } @@ -2009,9 +2011,10 @@ pinyin_search_matching.exit: ; preds = %._crit_edge.us.i, % br i1 %exitcond38.not, label %.preheader28, label %50, !llvm.loop !49 .preheader: ; preds = %.preheader28, %55 - %indvars.iv44 = phi i64 [ %indvars.iv.next45, %55 ], [ 0, %.preheader28 ] + %indvars.iv44 = phi i64 [ %indvars.iv.next45, %56 ], [ 0, %.preheader28 ] %52 = mul nuw nsw i64 %indvars.iv44, 3 - br label %61 + %53 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv44 + br label %62 ._crit_edge: ; preds = %55, %.preheader28 %53 = getelementptr inbounds nuw i8, ptr %0, i64 72 @@ -2025,16 +2028,16 @@ pinyin_search_matching.exit: ; preds = %._crit_edge.us.i, % %57 = trunc nuw nsw i64 %indvars.iv.next45 to i16 %58 = icmp ugt i16 %56, %57 %59 = icmp samesign ult i64 %indvars.iv44, 5 - %60 = and i1 %59, %58 + %60 = and i1 %58, %58 br i1 %60, label %.preheader, label %._crit_edge, !llvm.loop !50 61: ; preds = %.preheader, %61 - %indvars.iv39 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next40, %61 ] + %indvars.iv39 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next40, %62 ] %62 = load ptr, ptr %45, align 8, !tbaa !41 %63 = getelementptr inbounds nuw i8, ptr %62, i64 %indvars.iv39 %64 = getelementptr inbounds nuw i8, ptr %63, i64 %52 %65 = load i8, ptr %64, align 1, !tbaa !8 - %66 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv44, i64 %indvars.iv39 + %66 = getelementptr inbounds nuw [4 x i8], ptr %53, i64 0, i64 %indvars.iv39 store i8 %65, ptr %66, align 1, !tbaa !8 %indvars.iv.next40 = add nuw nsw i64 %indvars.iv39, 1 %exitcond43.not = icmp eq i64 %indvars.iv.next40, 3 diff --git a/bench/lvgl/optimized/lv_matrix.ll b/bench/lvgl/optimized/lv_matrix.ll index 78e6acf3011..a26882ccbef 100644 --- a/bench/lvgl/optimized/lv_matrix.ll +++ b/bench/lvgl/optimized/lv_matrix.ll @@ -105,14 +105,15 @@ lv_matrix_is_identity_or_translation.exit.thread: ; preds = %3, %8, %12, %16, %2 br label %.preheader.i .preheader.i: ; preds = %52, %lv_matrix_is_identity_or_translation.exit.thread - %indvars.iv22.i = phi i64 [ 0, %lv_matrix_is_identity_or_translation.exit.thread ], [ %indvars.iv.next23.i, %52 ] + %indvars.iv22.i = phi i64 [ 0, %lv_matrix_is_identity_or_translation.exit.thread ], [ %indvars.iv.next23.i, %53 ] %46 = getelementptr inbounds nuw [3 x [3 x float]], ptr %0, i64 0, i64 %indvars.iv22.i %47 = load float, ptr %46, align 4, !tbaa !3 %48 = getelementptr inbounds nuw i8, ptr %46, i64 4 %49 = load float, ptr %48, align 4, !tbaa !3 %50 = getelementptr inbounds nuw i8, ptr %46, i64 8 %51 = load float, ptr %50, align 4, !tbaa !3 - br label %53 + %52 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i + br label %54 52: ; preds = %53 %indvars.iv.next23.i = add nuw nsw i64 %indvars.iv22.i, 1 @@ -120,7 +121,7 @@ lv_matrix_is_identity_or_translation.exit.thread: ; preds = %3, %8, %12, %16, %2 br i1 %exitcond25.not.i, label %lv_matrix_multiply.exit, label %.preheader.i, !llvm.loop !7 53: ; preds = %53, %.preheader.i - %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %53 ] + %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %54 ] %54 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv.i %55 = load float, ptr %54, align 4, !tbaa !3 %56 = getelementptr inbounds nuw [3 x float], ptr %40, i64 0, i64 %indvars.iv.i @@ -130,7 +131,7 @@ lv_matrix_is_identity_or_translation.exit.thread: ; preds = %3, %8, %12, %16, %2 %60 = getelementptr inbounds nuw [3 x float], ptr %43, i64 0, i64 %indvars.iv.i %61 = load float, ptr %60, align 4, !tbaa !3 %62 = tail call float @llvm.fmuladd.f32(float %51, float %61, float %59) - %63 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i, i64 %indvars.iv.i + %63 = getelementptr inbounds nuw [3 x float], ptr %52, i64 0, i64 %indvars.iv.i store float %62, ptr %63, align 4, !tbaa !3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 @@ -205,14 +206,15 @@ define void @lv_matrix_multiply(ptr noundef %0, ptr noundef readonly captures(no br label %.preheader .preheader: ; preds = %2, %14 - %indvars.iv22 = phi i64 [ 0, %2 ], [ %indvars.iv.next23, %14 ] + %indvars.iv22 = phi i64 [ 0, %2 ], [ %indvars.iv.next23, %15 ] %6 = getelementptr inbounds nuw [3 x [3 x float]], ptr %0, i64 0, i64 %indvars.iv22 %7 = load float, ptr %6, align 4, !tbaa !3 %8 = getelementptr inbounds nuw i8, ptr %6, i64 4 %9 = load float, ptr %8, align 4, !tbaa !3 %10 = getelementptr inbounds nuw i8, ptr %6, i64 8 %11 = load float, ptr %10, align 4, !tbaa !3 - br label %15 + %12 = getelementptr inbounds nuw [3 x [3 x float]], ptr %3, i64 0, i64 %indvars.iv22 + br label %16 12: ; preds = %14 %13 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %3, i64 noundef 36) #9 @@ -225,7 +227,7 @@ define void @lv_matrix_multiply(ptr noundef %0, ptr noundef readonly captures(no br i1 %exitcond25.not, label %12, label %.preheader, !llvm.loop !7 15: ; preds = %.preheader, %15 - %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %15 ] + %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %16 ] %16 = getelementptr inbounds nuw [3 x float], ptr %1, i64 0, i64 %indvars.iv %17 = load float, ptr %16, align 4, !tbaa !3 %18 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv @@ -235,7 +237,7 @@ define void @lv_matrix_multiply(ptr noundef %0, ptr noundef readonly captures(no %22 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv %23 = load float, ptr %22, align 4, !tbaa !3 %24 = tail call float @llvm.fmuladd.f32(float %11, float %23, float %21) - %25 = getelementptr inbounds nuw [3 x [3 x float]], ptr %3, i64 0, i64 %indvars.iv22, i64 %indvars.iv + %25 = getelementptr inbounds nuw [3 x float], ptr %12, i64 0, i64 %indvars.iv store float %24, ptr %25, align 4, !tbaa !3 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 @@ -278,7 +280,8 @@ define void @lv_matrix_scale(ptr noundef %0, float noundef %1, float noundef %2) %17 = load float, ptr %16, align 4, !tbaa !3 %18 = getelementptr inbounds nuw i8, ptr %14, i64 8 %19 = load float, ptr %18, align 4, !tbaa !3 - br label %21 + %20 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i + br label %22 20: ; preds = %21 %indvars.iv.next23.i = add nuw nsw i64 %indvars.iv22.i, 1 @@ -296,7 +299,7 @@ define void @lv_matrix_scale(ptr noundef %0, float noundef %1, float noundef %2) %28 = getelementptr inbounds nuw [3 x float], ptr %11, i64 0, i64 %indvars.iv.i %29 = load float, ptr %28, align 4, !tbaa !3 %30 = tail call float @llvm.fmuladd.f32(float %19, float %29, float %27) - %31 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i, i64 %indvars.iv.i + %31 = getelementptr inbounds nuw [3 x float], ptr %20, i64 0, i64 %indvars.iv.i store float %30, ptr %31, align 4, !tbaa !3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 @@ -347,7 +350,8 @@ define void @lv_matrix_rotate(ptr noundef %0, float noundef %1) local_unnamed_ad %21 = load float, ptr %20, align 4, !tbaa !3 %22 = getelementptr inbounds nuw i8, ptr %18, i64 8 %23 = load float, ptr %22, align 4, !tbaa !3 - br label %25 + %24 = getelementptr inbounds nuw [3 x [3 x float]], ptr %3, i64 0, i64 %indvars.iv22.i + br label %26 24: ; preds = %25 %indvars.iv.next23.i = add nuw nsw i64 %indvars.iv22.i, 1 @@ -365,7 +369,7 @@ define void @lv_matrix_rotate(ptr noundef %0, float noundef %1) local_unnamed_ad %32 = getelementptr inbounds nuw [3 x float], ptr %15, i64 0, i64 %indvars.iv.i %33 = load float, ptr %32, align 4, !tbaa !3 %34 = tail call float @llvm.fmuladd.f32(float %23, float %33, float %31) - %35 = getelementptr inbounds nuw [3 x [3 x float]], ptr %3, i64 0, i64 %indvars.iv22.i, i64 %indvars.iv.i + %35 = getelementptr inbounds nuw [3 x float], ptr %23, i64 0, i64 %indvars.iv.i store float %34, ptr %35, align 4, !tbaa !3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 @@ -423,7 +427,8 @@ define void @lv_matrix_skew(ptr noundef %0, float noundef %1, float noundef %2) %23 = load float, ptr %22, align 4, !tbaa !3 %24 = getelementptr inbounds nuw i8, ptr %20, i64 8 %25 = load float, ptr %24, align 4, !tbaa !3 - br label %27 + %26 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i + br label %28 26: ; preds = %27 %indvars.iv.next23.i = add nuw nsw i64 %indvars.iv22.i, 1 @@ -441,7 +446,7 @@ define void @lv_matrix_skew(ptr noundef %0, float noundef %1, float noundef %2) %34 = getelementptr inbounds nuw [3 x float], ptr %17, i64 0, i64 %indvars.iv.i %35 = load float, ptr %34, align 4, !tbaa !3 %36 = tail call float @llvm.fmuladd.f32(float %25, float %35, float %33) - %37 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i, i64 %indvars.iv.i + %37 = getelementptr inbounds nuw [3 x float], ptr %26, i64 0, i64 %indvars.iv.i store float %36, ptr %37, align 4, !tbaa !3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 diff --git a/bench/memcached/optimized/thread.ll b/bench/memcached/optimized/thread.ll index d0f533c5d8e..ff752f2d5a3 100644 --- a/bench/memcached/optimized/thread.ll +++ b/bench/memcached/optimized/thread.ll @@ -1132,7 +1132,7 @@ define dso_local void @threadlocal_stats_aggregate(ptr noundef initializes((0, 6 br label %39 39: ; preds = %.lr.ph, %215 - %indvars.iv123 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next124, %215 ] + %indvars.iv123 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next124, %218 ] %40 = load ptr, ptr @threads, align 8, !tbaa !4 %41 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %40, i64 %indvars.iv123, i32 9 %42 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull %41) #15 @@ -1287,65 +1287,70 @@ define dso_local void @threadlocal_stats_aggregate(ptr noundef initializes((0, 6 %162 = load i64, ptr %33, align 8, !tbaa !158 %163 = add i64 %162, %161 store i64 %163, ptr %33, align 8, !tbaa !158 - br label %164 + %164 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31 + br label %166 -164: ; preds = %39, %164 - %indvars.iv = phi i64 [ 0, %39 ], [ %indvars.iv.next, %164 ] - %165 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv - %166 = load i64, ptr %165, align 8, !tbaa !159 - %167 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %34, i64 0, i64 %indvars.iv +164: ; preds = %166 + %165 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 32 + br label %.preheader + +166: ; preds = %39, %166 + %indvars.iv = phi i64 [ 0, %39 ], [ %indvars.iv.next, %166 ] + %167 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv %168 = load i64, ptr %167, align 8, !tbaa !159 - %169 = add i64 %168, %166 - store i64 %169, ptr %167, align 8, !tbaa !159 - %170 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv, i32 1 - %171 = load i64, ptr %170, align 8, !tbaa !161 - %172 = getelementptr inbounds nuw i8, ptr %167, i64 8 + %169 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %34, i64 0, i64 %indvars.iv + %170 = load i64, ptr %169, align 8, !tbaa !159 + %171 = add i64 %170, %168 + store i64 %171, ptr %169, align 8, !tbaa !159 + %172 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv, i32 1 %173 = load i64, ptr %172, align 8, !tbaa !161 - %174 = add i64 %173, %171 - store i64 %174, ptr %172, align 8, !tbaa !161 - %175 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv, i32 2 - %176 = load i64, ptr %175, align 8, !tbaa !162 - %177 = getelementptr inbounds nuw i8, ptr %167, i64 16 + %174 = getelementptr inbounds nuw i8, ptr %169, i64 8 + %175 = load i64, ptr %174, align 8, !tbaa !161 + %176 = add i64 %175, %173 + store i64 %176, ptr %174, align 8, !tbaa !161 + %177 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv, i32 2 %178 = load i64, ptr %177, align 8, !tbaa !162 - %179 = add i64 %178, %176 - store i64 %179, ptr %177, align 8, !tbaa !162 - %180 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv, i32 3 - %181 = load i64, ptr %180, align 8, !tbaa !163 - %182 = getelementptr inbounds nuw i8, ptr %167, i64 24 + %179 = getelementptr inbounds nuw i8, ptr %169, i64 16 + %180 = load i64, ptr %179, align 8, !tbaa !162 + %181 = add i64 %180, %178 + store i64 %181, ptr %179, align 8, !tbaa !162 + %182 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv, i32 3 %183 = load i64, ptr %182, align 8, !tbaa !163 - %184 = add i64 %183, %181 - store i64 %184, ptr %182, align 8, !tbaa !163 - %185 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv, i32 4 - %186 = load i64, ptr %185, align 8, !tbaa !164 - %187 = getelementptr inbounds nuw i8, ptr %167, i64 32 + %184 = getelementptr inbounds nuw i8, ptr %169, i64 24 + %185 = load i64, ptr %184, align 8, !tbaa !163 + %186 = add i64 %185, %183 + store i64 %186, ptr %184, align 8, !tbaa !163 + %187 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv, i32 4 %188 = load i64, ptr %187, align 8, !tbaa !164 - %189 = add i64 %188, %186 - store i64 %189, ptr %187, align 8, !tbaa !164 - %190 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv, i32 5 - %191 = load i64, ptr %190, align 8, !tbaa !165 - %192 = getelementptr inbounds nuw i8, ptr %167, i64 40 + %189 = getelementptr inbounds nuw i8, ptr %169, i64 32 + %190 = load i64, ptr %189, align 8, !tbaa !164 + %191 = add i64 %190, %188 + store i64 %191, ptr %189, align 8, !tbaa !164 + %192 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv, i32 5 %193 = load i64, ptr %192, align 8, !tbaa !165 - %194 = add i64 %193, %191 - store i64 %194, ptr %192, align 8, !tbaa !165 - %195 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv, i32 6 - %196 = load i64, ptr %195, align 8, !tbaa !166 - %197 = getelementptr inbounds nuw i8, ptr %167, i64 48 + %194 = getelementptr inbounds nuw i8, ptr %169, i64 40 + %195 = load i64, ptr %194, align 8, !tbaa !165 + %196 = add i64 %195, %193 + store i64 %196, ptr %194, align 8, !tbaa !165 + %197 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv, i32 6 %198 = load i64, ptr %197, align 8, !tbaa !166 - %199 = add i64 %198, %196 - store i64 %199, ptr %197, align 8, !tbaa !166 - %200 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv, i32 7 - %201 = load i64, ptr %200, align 8, !tbaa !167 - %202 = getelementptr inbounds nuw i8, ptr %167, i64 56 + %199 = getelementptr inbounds nuw i8, ptr %169, i64 48 + %200 = load i64, ptr %199, align 8, !tbaa !166 + %201 = add i64 %200, %198 + store i64 %201, ptr %199, align 8, !tbaa !166 + %202 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv, i32 7 %203 = load i64, ptr %202, align 8, !tbaa !167 - %204 = add i64 %203, %201 - store i64 %204, ptr %202, align 8, !tbaa !167 + %204 = getelementptr inbounds nuw i8, ptr %169, i64 56 + %205 = load i64, ptr %204, align 8, !tbaa !167 + %206 = add i64 %205, %203 + store i64 %206, ptr %204, align 8, !tbaa !167 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 64 - br i1 %exitcond.not, label %.preheader, label %164, !llvm.loop !168 + br i1 %exitcond.not, label %.preheader, label %166, !llvm.loop !168 -.preheader: ; preds = %164, %.preheader - %indvars.iv119 = phi i64 [ %indvars.iv.next120, %.preheader ], [ 0, %164 ] - %205 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 32, i64 %indvars.iv119 +.preheader: ; preds = %.preheader, %207 + %indvars.iv119 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next120, %207 ] + %205 = getelementptr inbounds nuw [256 x i64], ptr %165, i64 0, i64 %indvars.iv119 %206 = load i64, ptr %205, align 8, !tbaa !57 %207 = getelementptr inbounds nuw [256 x i64], ptr %35, i64 0, i64 %indvars.iv119 %208 = load i64, ptr %207, align 8, !tbaa !57 diff --git a/bench/meshlab/optimized/cubemap.ll b/bench/meshlab/optimized/cubemap.ll index 5e754dc6bd8..8aa2bcc2c03 100644 --- a/bench/meshlab/optimized/cubemap.ll +++ b/bench/meshlab/optimized/cubemap.ll @@ -152,20 +152,21 @@ _ZN3vcg12glMultMatrixERKNS_8Matrix44IfEE.exit: ; preds = %13 %19 = load i32, ptr %18, align 4 call void @glBindTexture(i32 noundef 3553, i32 noundef %19) call void @glBegin(i32 noundef 7) - br label %20 + %20 = getelementptr inbounds nuw [6 x [4 x i32]], ptr @_ZL10cube_faces, i64 0, i64 %indvars.iv14 + br label %21 -20: ; preds = %17, %20 - %indvars.iv = phi i64 [ 0, %17 ], [ %indvars.iv.next, %20 ] - %21 = getelementptr inbounds nuw [4 x [2 x float]], ptr @_ZL8tex_vert, i64 0, i64 %indvars.iv - %22 = load float, ptr %21, align 8 - %23 = getelementptr inbounds nuw i8, ptr %21, i64 4 - %24 = load float, ptr %23, align 4 - call void @glTexCoord2f(float noundef %22, float noundef %24) - %25 = getelementptr inbounds nuw [6 x [4 x i32]], ptr @_ZL10cube_faces, i64 0, i64 %indvars.iv14, i64 %indvars.iv - %26 = load i32, ptr %25, align 4 - %27 = sext i32 %26 to i64 - %28 = getelementptr inbounds [8 x %"class.vcg::Point3"], ptr @_ZL13cube_vertices, i64 0, i64 %27 - call void @glVertex3fv(ptr noundef nonnull align 4 dereferenceable(12) %28) +21: ; preds = %17, %20 + %indvars.iv = phi i64 [ 0, %17 ], [ %indvars.iv.next, %21 ] + %22 = getelementptr inbounds nuw [4 x [2 x float]], ptr @_ZL8tex_vert, i64 0, i64 %indvars.iv + %23 = load float, ptr %21, align 8 + %24 = getelementptr inbounds nuw i8, ptr %22, i64 4 + %25 = load float, ptr %24, align 4 + call void @glTexCoord2f(float noundef %23, float noundef %25) + %26 = getelementptr inbounds nuw [4 x i32], ptr %20, i64 0, i64 %indvars.iv + %27 = load i32, ptr %26, align 4 + %28 = sext i32 %26 to i64 + %29 = getelementptr inbounds [8 x %"class.vcg::Point3"], ptr @_ZL13cube_vertices, i64 0, i64 %28 + call void @glVertex3fv(ptr noundef nonnull align 4 dereferenceable(12) %29) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 br i1 %exitcond.not, label %29, label %20, !llvm.loop !11 @@ -255,13 +256,14 @@ _ZNK3vcg8Matrix44IfE9transposeEv.exit.i: ; preds = %18 br label %19 19: ; preds = %_ZNK3vcg8Matrix44IfE9transposeEv.exit.i, %32 - %indvars.iv15 = phi i64 [ 0, %_ZNK3vcg8Matrix44IfE9transposeEv.exit.i ], [ %indvars.iv.next16, %32 ] + %indvars.iv15 = phi i64 [ 0, %_ZNK3vcg8Matrix44IfE9transposeEv.exit.i ], [ %indvars.iv.next16, %33 ] call void @glBegin(i32 noundef 7) + %20 = getelementptr inbounds nuw [6 x [4 x i32]], ptr @_ZL10cube_faces, i64 0, i64 %indvars.iv15 br label %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit _ZN3vcg8glNormalERKNS_6Point3IfEE.exit: ; preds = %19, %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit %indvars.iv = phi i64 [ 0, %19 ], [ %indvars.iv.next, %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit ] - %20 = getelementptr inbounds nuw [6 x [4 x i32]], ptr @_ZL10cube_faces, i64 0, i64 %indvars.iv15, i64 %indvars.iv + %20 = getelementptr inbounds nuw [4 x i32], ptr %20, i64 0, i64 %indvars.iv %21 = load i32, ptr %20, align 4 %22 = sext i32 %21 to i64 %23 = getelementptr inbounds [8 x %"class.vcg::Point3"], ptr @_ZL13cube_vertices, i64 0, i64 %22 diff --git a/bench/meshlab/optimized/filter_layer.ll b/bench/meshlab/optimized/filter_layer.ll index b1278bb3bef..e8643025a5c 100644 --- a/bench/meshlab/optimized/filter_layer.ll +++ b/bench/meshlab/optimized/filter_layer.ll @@ -26624,7 +26624,7 @@ define linkonce_odr void @_ZN3vcg3tri6AppendI6CMeshOS2_E13ImportFaceAdjERS2_RKS2 br label %17 17: ; preds = %.preheader74, %69 - %indvars.iv = phi i64 [ 0, %.preheader74 ], [ %indvars.iv.next, %69 ] + %indvars.iv = phi i64 [ 0, %.preheader74 ], [ %indvars.iv.next, %71 ] %18 = load ptr, ptr %3, align 8 %19 = getelementptr inbounds nuw i8, ptr %18, i64 273 %20 = load i8, ptr %19, align 1 @@ -26676,18 +26676,20 @@ _ZNK3vcg4face8FFAdjOcfINS_6Arity7INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9 %56 = sub i64 %14, %55 %57 = sdiv exact i64 %56, 48 %58 = load ptr, ptr %53, align 8 - %59 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %58, i64 %57, i32 1, i64 %indvars.iv - %60 = load i8, ptr %59, align 1 - %61 = load ptr, ptr %2, align 8 - %62 = getelementptr inbounds nuw i8, ptr %61, i64 240 - %63 = load ptr, ptr %61, align 8 - %64 = ptrtoint ptr %63 to i64 - %65 = sub i64 %16, %64 - %66 = sdiv exact i64 %65, 48 - %67 = load ptr, ptr %62, align 8 - %68 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %67, i64 %66, i32 1, i64 %indvars.iv - store i8 %60, ptr %68, align 1 - br label %69 + %59 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %58, i64 %57, i32 1 + %60 = getelementptr inbounds nuw [3 x i8], ptr %59, i64 0, i64 %indvars.iv + %61 = load i8, ptr %60, align 1 + %62 = load ptr, ptr %2, align 8 + %63 = getelementptr inbounds nuw i8, ptr %62, i64 240 + %64 = load ptr, ptr %62, align 8 + %65 = ptrtoint ptr %64 to i64 + %66 = sub i64 %16, %65 + %67 = sdiv exact i64 %66, 48 + %68 = load ptr, ptr %63, align 8 + %69 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %68, i64 %67, i32 1 + %70 = getelementptr inbounds nuw [3 x i8], ptr %69, i64 0, i64 %indvars.iv + store i8 %61, ptr %70, align 1 + br label %71 69: ; preds = %_ZNK3vcg4face8FFAdjOcfINS_6Arity7INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfEEEE4cFFpEi.exit, %40 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 @@ -26730,10 +26732,11 @@ _ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9 %91 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %90, i64 %89 %92 = getelementptr inbounds nuw [3 x ptr], ptr %91, i64 0, i64 %indvars.iv79 %93 = load ptr, ptr %92, align 8 - %94 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %90, i64 %89, i32 1, i64 %indvars.iv79 - %95 = load i8, ptr %94, align 1 - %96 = icmp eq ptr %93, null - br i1 %96, label %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge, label %97 + %94 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %90, i64 %89, i32 1 + %97 = getelementptr inbounds nuw [3 x i8], ptr %94, i64 0, i64 %indvars.iv79 + %98 = load i8, ptr %97, align 1 + %99 = icmp eq ptr %95, null + br i1 %99, label %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge, label %100 _ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge: ; preds = %81, %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit %.pre84 = load ptr, ptr %2, align 8 @@ -26752,21 +26755,22 @@ _ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9 %.pre85 = load ptr, ptr %2, align 8 br i1 %106, label %.thread, label %118 -.thread: ; preds = %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge, %97 - %107 = phi ptr [ %.pre84, %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge ], [ %.pre85, %97 ] - %108 = getelementptr inbounds nuw i8, ptr %107, i64 216 - %109 = load ptr, ptr %107, align 8 - %110 = ptrtoint ptr %109 to i64 - %111 = sub i64 %80, %110 - %112 = sdiv exact i64 %111, 48 - %113 = load ptr, ptr %108, align 8 - %114 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %113, i64 %112, i32 1, i64 %indvars.iv79 - %115 = load i8, ptr %114, align 1 - %.not.i = icmp eq i8 %115, -1 - br i1 %.not.i, label %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit, label %116 - -116: ; preds = %.thread - %117 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %113, i64 %112 +116: ; preds = %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge, %97 + %110 = phi ptr [ %.pre84, %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge ], [ %.pre85, %100 ] + %111 = getelementptr inbounds nuw i8, ptr %110, i64 216 + %112 = load ptr, ptr %110, align 8 + %113 = ptrtoint ptr %112 to i64 + %114 = sub i64 %82, %113 + %115 = sdiv exact i64 %114, 48 + %116 = load ptr, ptr %111, align 8 + %117 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %116, i64 %115, i32 1 + %118 = getelementptr inbounds nuw [3 x i8], ptr %117, i64 0, i64 %indvars.iv79 + %119 = load i8, ptr %118, align 1 + %.not.i = icmp eq i8 %119, -1 + br i1 %.not.i, label %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit, label %120 + +120: ; preds = %.thread + %121 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %116, i64 %115 br label %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split 118: ; preds = %97 @@ -26781,10 +26785,10 @@ _ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9 %127 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %126, i64 %125 br label %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split -_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split: ; preds = %118, %116 - %.sink104 = phi ptr [ %117, %116 ], [ %127, %118 ] - %.sink102 = phi ptr [ null, %116 ], [ %120, %118 ] - %.sink = phi i8 [ -1, %116 ], [ %95, %118 ] +_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split: ; preds = %118, %120 + %.sink104 = phi ptr [ %121, %120 ], [ %127, %122 ] + %.sink102 = phi ptr [ null, %120 ], [ %120, %122 ] + %.sink = phi i8 [ -1, %120 ], [ %98, %122 ] %128 = getelementptr inbounds nuw [3 x ptr], ptr %.sink104, i64 0, i64 %indvars.iv79 store ptr %.sink102, ptr %128, align 8 %129 = load ptr, ptr %2, align 8 @@ -26794,8 +26798,9 @@ _ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink. %133 = sub i64 %80, %132 %134 = sdiv exact i64 %133, 48 %135 = load ptr, ptr %130, align 8 - %136 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %135, i64 %134, i32 1, i64 %indvars.iv79 - store i8 %.sink, ptr %136, align 1 + %136 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %135, i64 %134, i32 1 + %141 = getelementptr inbounds nuw [3 x i8], ptr %136, i64 0, i64 %indvars.iv79 + store i8 %.sink, ptr %141, align 1 br label %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit _ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit: ; preds = %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split, %.thread diff --git a/bench/meshlab/optimized/mesh_model.ll b/bench/meshlab/optimized/mesh_model.ll index 0ec59e71c5c..8530a2c119a 100644 --- a/bench/meshlab/optimized/mesh_model.ll +++ b/bench/meshlab/optimized/mesh_model.ll @@ -4605,7 +4605,7 @@ define linkonce_odr void @_ZN3vcg3tri14UpdateTopologyI6CMeshOE8FaceFaceERS2_(ptr 6: ; preds = %1 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %2, i8 0, i64 24, i1 false) invoke void @_ZN3vcg3tri14UpdateTopologyI6CMeshOE14FillEdgeVectorERS2_RSt6vectorINS3_5PEdgeESaIS6_EEb(ptr noundef nonnull align 8 dereferenceable(1196) %0, ptr noundef nonnull align 8 dereferenceable(24) %2, i1 noundef zeroext true) - to label %7 unwind label %67 + to label %7 unwind label %68 7: ; preds = %6 %8 = load ptr, ptr %2, align 8 @@ -4623,11 +4623,11 @@ define linkonce_odr void @_ZN3vcg3tri14UpdateTopologyI6CMeshOE8FaceFaceERS2_(ptr %17 = shl nuw nsw i64 %16, 1 %18 = xor i64 %17, 126 invoke void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEElNS0_5__ops15_Iter_less_iterEEvT_SF_T0_T1_(ptr %8, ptr %10, i64 noundef %18) - to label %.noexc unwind label %67 + to label %.noexc unwind label %68 .noexc: ; preds = %11 invoke void @_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEEvT_SF_T0_(ptr %8, ptr %10) - to label %.noexc._ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit_crit_edge unwind label %67 + to label %.noexc._ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit_crit_edge unwind label %68 .noexc._ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit_crit_edge: ; preds = %.noexc %.pre = load ptr, ptr %2, align 8 @@ -4640,9 +4640,9 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEd br label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit: ; preds = %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader, %103 - %19 = phi ptr [ %104, %103 ], [ %.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] - %.sroa.023.0 = phi ptr [ %106, %103 ], [ %.sroa.028.0.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] - %.sroa.028.0 = phi ptr [ %.sroa.028.1, %103 ], [ %.sroa.028.0.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] + %19 = phi ptr [ %104, %105 ], [ %.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] + %.sroa.023.0 = phi ptr [ %106, %105 ], [ %.sroa.028.0.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] + %.sroa.028.0 = phi ptr [ %.sroa.028.1, %105 ], [ %.sroa.028.0.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] %20 = icmp eq ptr %.sroa.023.0, %19 br i1 %20, label %.critedge, label %21 @@ -4697,25 +4697,26 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEd %61 = sub i64 %59, %60 %62 = sdiv exact i64 %61, 48 %63 = load ptr, ptr %57, align 8 - %64 = sext i32 %55 to i64 - %65 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %63, i64 %62, i32 1, i64 %64 - store i8 %53, ptr %65, align 1 - %66 = icmp ult ptr %33, %31 - br i1 %66, label %.lr.ph, label %._crit_edge, !llvm.loop !50 - -67: ; preds = %.noexc, %11, %6 - %68 = landingpad { ptr, i32 } + %64 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %63, i64 %62, i32 1 + %65 = sext i32 %55 to i64 + %66 = getelementptr inbounds [3 x i8], ptr %64, i64 0, i64 %65 + store i8 %53, ptr %66, align 1 + %67 = icmp ult ptr %33, %31 + br i1 %67, label %.lr.ph, label %._crit_edge, !llvm.loop !50 + +68:; preds = %.noexc, %11, %6 + %69 = landingpad { ptr, i32 } cleanup %69 = load ptr, ptr %2, align 8 %.not.i.i.i = icmp eq ptr %69, null br i1 %.not.i.i.i, label %_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit, label %70 -70: ; preds = %67 +70: ; preds = %68 call void @_ZdlPv(ptr noundef nonnull %69) #29 br label %_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit -_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit: ; preds = %67, %70 - resume { ptr, i32 } %68 +_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit: ; preds = %68, %70 + resume { ptr, i32 } %69 ._crit_edge: ; preds = %.lr.ph, %.critedge %.sroa.012.0.lcssa = phi ptr [ %.sroa.028.0, %.critedge ], [ %33, %.lr.ph ] @@ -4750,9 +4751,10 @@ _ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit: ; preds %98 = sub i64 %96, %97 %99 = sdiv exact i64 %98, 48 %100 = load ptr, ptr %94, align 8 - %101 = sext i32 %92 to i64 - %102 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %100, i64 %99, i32 1, i64 %101 - store i8 %90, ptr %102, align 1 + %102 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %99, i64 %99, i32 1 + %103 = sext i32 %93 to i64 + %104 = getelementptr inbounds [3 x i8], ptr %102, i64 0, i64 %103 + store i8 %91, ptr %104, align 1 %.pre33 = load ptr, ptr %9, align 8 br label %103 @@ -4887,36 +4889,37 @@ define linkonce_odr void @_ZN3vcg3tri14UpdateTopologyI6CMeshOE10VertexFaceERS2_( %79 = sub i64 %37, %78 %80 = sdiv exact i64 %79, 48 %81 = load ptr, ptr %76, align 8 - %82 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %81, i64 %80, i32 1, i64 %indvars.iv - store i8 %74, ptr %82, align 1 - %83 = load ptr, ptr %39, align 8 - %84 = load ptr, ptr %83, align 8 - %85 = getelementptr inbounds nuw i8, ptr %84, i64 216 - %86 = load ptr, ptr %84, align 8 - %87 = ptrtoint ptr %83 to i64 - %88 = ptrtoint ptr %86 to i64 - %89 = sub i64 %87, %88 - %90 = sdiv exact i64 %89, 48 - %sext.i16 = shl i64 %90, 32 - %91 = load ptr, ptr %85, align 8 - %92 = ashr exact i64 %sext.i16, 28 - %93 = getelementptr inbounds i8, ptr %91, i64 %92 - store ptr %.sroa.018.040, ptr %93, align 8 - %94 = load ptr, ptr %39, align 8 - %95 = load ptr, ptr %94, align 8 - %96 = getelementptr inbounds nuw i8, ptr %95, i64 216 - %97 = load ptr, ptr %95, align 8 - %98 = ptrtoint ptr %94 to i64 - %99 = ptrtoint ptr %97 to i64 - %100 = sub i64 %98, %99 - %101 = sdiv exact i64 %100, 48 - %sext.i17 = shl i64 %101, 32 - %102 = load ptr, ptr %96, align 8 - %103 = ashr exact i64 %sext.i17, 28 - %104 = getelementptr inbounds i8, ptr %102, i64 %103 - %105 = getelementptr inbounds nuw i8, ptr %104, i64 8 - %106 = trunc nuw nsw i64 %indvars.iv to i32 - store i32 %106, ptr %105, align 4 + %82 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %81, i64 %80, i32 1 + %83 = getelementptr inbounds nuw [3 x i8], ptr %82, i64 0, i64 %indvars.iv + store i8 %74, ptr %83, align 1 + %84 = load ptr, ptr %39, align 8 + %85 = load ptr, ptr %84, align 8 + %86 = getelementptr inbounds nuw i8, ptr %84, i64 216 + %87 = load ptr, ptr %85, align 8 + %88 = ptrtoint ptr %84 to i64 + %89 = ptrtoint ptr %87 to i64 + %90 = sub i64 %88, %89 + %91 = sdiv exact i64 %90, 48 + %sext.i16 = shl i64 %91, 32 + %92 = load ptr, ptr %86, align 8 + %93 = ashr exact i64 %sext.i16, 28 + %94 = getelementptr inbounds i8, ptr %92, i64 %93 + store ptr %.sroa.018.040, ptr %94, align 8 + %95 = load ptr, ptr %39, align 8 + %96 = load ptr, ptr %95, align 8 + %97 = getelementptr inbounds nuw i8, ptr %95, i64 216 + %98 = load ptr, ptr %94, align 8 + %99 = ptrtoint ptr %95 to i64 + %100 = ptrtoint ptr %98 to i64 + %101 = sub i64 %99, %100 + %102 = sdiv exact i64 %101, 48 + %sext.i17 = shl i64 %102, 32 + %103 = load ptr, ptr %97, align 8 + %104 = ashr exact i64 %sext.i17, 28 + %105 = getelementptr inbounds i8, ptr %103, i64 %104 + %106 = getelementptr inbounds nuw i8, ptr %105, i64 8 + %107 = trunc nuw nsw i64 %indvars.iv to i32 + store i32 %107, ptr %106, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 br i1 %exitcond.not, label %.loopexit.loopexit, label %38, !llvm.loop !53 diff --git a/bench/meshoptimizer/optimized/spatialorder.ll b/bench/meshoptimizer/optimized/spatialorder.ll index 667095d0c73..9c82048334d 100644 --- a/bench/meshoptimizer/optimized/spatialorder.ll +++ b/bench/meshoptimizer/optimized/spatialorder.ll @@ -255,7 +255,7 @@ _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16compu %142 = load i32, ptr %141, align 4, !tbaa !16 %143 = and i32 %142, 1023 %144 = zext nneg i32 %143 to i64 - %145 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %8, i64 0, i64 %144, i64 0 + %145 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %8, i64 0, i64 %144 %146 = load i32, ptr %145, align 4, !tbaa !16 %147 = add i32 %146, 1 store i32 %147, ptr %145, align 4, !tbaa !16 @@ -266,8 +266,12 @@ _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16compu %exitcond.not.i47 = icmp eq i64 %150, %2 br i1 %exitcond.not.i47, label %.lr.ph.i50, label %.lr.ph.i46, !llvm.loop !21 -.lr.ph.i50: ; preds = %.lr.ph.i46, %.lr.ph.i50 - %.013.i51 = phi i64 [ %164, %.lr.ph.i50 ], [ 0, %.lr.ph.i46 ] +.lr.ph.i50: ; preds = %.lr.ph.i46 + %invariant.gep.i = getelementptr inbounds nuw i8, ptr %8, i64 4 + br label %150 + +150: ; preds = %150, %.lr.ph.i50 + %.013.i51 = phi i64 [ 0, %.lr.ph.i50 ], [ %163, %150 ] %151 = getelementptr inbounds nuw i32, ptr %136, i64 %.013.i51 %152 = load i32, ptr %151, align 4, !tbaa !16 %153 = zext i32 %152 to i64 @@ -276,7 +280,7 @@ _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16compu %156 = lshr i32 %155, 10 %157 = and i32 %156, 1023 %158 = zext nneg i32 %157 to i64 - %159 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %8, i64 0, i64 %158, i64 1 + %159 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %invariant.gep.i, i64 0, i64 %158 %160 = load i32, ptr %159, align 4, !tbaa !16 %161 = add i32 %160, 1 store i32 %161, ptr %159, align 4, !tbaa !16 @@ -285,11 +289,15 @@ _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16compu store i32 %152, ptr %163, align 4, !tbaa !16 %164 = add nuw i64 %.013.i51, 1 %exitcond.not.i52 = icmp eq i64 %164, %2 - br i1 %exitcond.not.i52, label %.lr.ph.i56, label %.lr.ph.i50, !llvm.loop !21 + br i1 %exitcond.not.i52, label %.lr.ph.i56, label %150, !llvm.loop !21 + +.lr.ph.i56: ; preds = %150 + %invariant.gep.i58 = getelementptr inbounds nuw i8, ptr %8, i64 8 + br label %164 -.lr.ph.i56: ; preds = %.lr.ph.i50, %.lr.ph.i56 - %.013.i57 = phi i64 [ %178, %.lr.ph.i56 ], [ 0, %.lr.ph.i50 ] - %165 = getelementptr inbounds nuw i32, ptr %0, i64 %.013.i57 +164: ; preds = %164, %.lr.ph.i57 + %.013.i59 = phi i64 [ 0, %.lr.ph.i57 ], [ %177, %164 ] + %165 = getelementptr inbounds nuw i32, ptr %0, i64 %.013.i59 %166 = load i32, ptr %165, align 4, !tbaa !16 %167 = zext i32 %166 to i64 %168 = getelementptr inbounds nuw i32, ptr %13, i64 %167 @@ -297,16 +305,16 @@ _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16compu %170 = lshr i32 %169, 20 %171 = and i32 %170, 1023 %172 = zext nneg i32 %171 to i64 - %173 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %8, i64 0, i64 %172, i64 2 + %173 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %invariant.gep.i58, i64 0, i64 %172 %174 = load i32, ptr %173, align 4, !tbaa !16 %175 = add i32 %174, 1 store i32 %175, ptr %173, align 4, !tbaa !16 %176 = zext i32 %174 to i64 %177 = getelementptr inbounds nuw i32, ptr %136, i64 %176 store i32 %166, ptr %177, align 4, !tbaa !16 - %178 = add nuw i64 %.013.i57, 1 + %178 = add nuw i64 %.013.i59, 1 %exitcond.not.i58 = icmp eq i64 %178, %2 - br i1 %exitcond.not.i58, label %.lr.ph64, label %.lr.ph.i56, !llvm.loop !21 + br i1 %exitcond.not.i58, label %.lr.ph64, label %164, !llvm.loop !21 179: ; preds = %4 %180 = landingpad { ptr, i32 } @@ -333,7 +341,7 @@ _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16compu br label %186 186: ; preds = %187, %._crit_edge65 - %.0.i = phi i64 [ 2, %._crit_edge65 ], [ %189, %187 ] + %.0.i = phi i64 [ 2, %._crit_edge68 ], [ %189, %186 ] %.not.i61 = icmp eq i64 %.0.i, 0 br i1 %.not.i61, label %_ZN17meshopt_AllocatorD2Ev.exit, label %187 @@ -342,8 +350,8 @@ _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16compu %189 = add i64 %.0.i, -1 %190 = getelementptr inbounds nuw [24 x ptr], ptr %7, i64 0, i64 %189 %191 = load ptr, ptr %190, align 8, !tbaa !4 - invoke void %188(ptr noundef %191) - to label %186 unwind label %192, !llvm.loop !23 + invoke void %187(ptr noundef %191) + to label %185 unwind label %192, !llvm.loop !23 192: ; preds = %187 %193 = landingpad { ptr, i32 } @@ -356,8 +364,8 @@ _ZN17meshopt_AllocatorD2Ev.exit: ; preds = %186 call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %7) #10 ret void -.lr.ph64: ; preds = %.lr.ph.i56, %.lr.ph64 - %.063 = phi i64 [ %200, %.lr.ph64 ], [ 0, %.lr.ph.i56 ] +.lr.ph64: ; preds = %164, %.lr.ph64 + %.063 = phi i64 [ %200, %.lr.ph67 ], [ 0, %164 ] %195 = trunc i64 %.063 to i32 %196 = getelementptr inbounds nuw i32, ptr %136, i64 %.063 %197 = load i32, ptr %196, align 4, !tbaa !16 @@ -369,7 +377,7 @@ _ZN17meshopt_AllocatorD2Ev.exit: ; preds = %186 br i1 %exitcond67.not, label %._crit_edge65, label %.lr.ph64, !llvm.loop !24 201: ; preds = %181, %179 - %.pn = phi { ptr, i32 } [ %182, %181 ], [ %180, %179 ] + %.pn = phi { ptr, i32 } [ %182, %180 ], [ %180, %178 ] call void @_ZN17meshopt_AllocatorD2Ev(ptr noundef nonnull align 8 dereferenceable(200) %7) #10 call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %7) #10 resume { ptr, i32 } %.pn diff --git a/bench/minetest/optimized/CGUIListBox.ll b/bench/minetest/optimized/CGUIListBox.ll index 4947234b6d3..8b442613953 100644 --- a/bench/minetest/optimized/CGUIListBox.ll +++ b/bench/minetest/optimized/CGUIListBox.ll @@ -5008,9 +5008,10 @@ entry: if.end: ; preds = %entry %conv.i18 = zext i32 %index to i64 %idxprom = zext nneg i32 %colorType to i64 - %arrayidx = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i18, i32 2, i64 %idxprom + %arrayidx = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i18, i32 2 + %arrayidx = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %arrayidx.split, i64 0, i64 %idxprom store i8 1, ptr %arrayidx, align 4, !tbaa !131 - %Color = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i18, i32 2, i64 %idxprom, i32 1 + %Color = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %arrayidx, i64 0, i64 %idxprom, i32 1 store i32 %color.coerce, ptr %Color, align 4, !tbaa !52 br label %return @@ -5055,7 +5056,8 @@ entry: if.end: ; preds = %entry %conv.i11 = zext i32 %index to i64 %idxprom = zext nneg i32 %colorType to i64 - %arrayidx = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2, i64 %idxprom + %arrayidx = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2 + %arrayidx = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %arrayidx.split, i64 0, i64 %idxprom store i8 0, ptr %arrayidx, align 4, !tbaa !131 br label %return @@ -5083,7 +5085,8 @@ entry: if.end: ; preds = %entry %conv.i11 = zext i32 %index to i64 %idxprom = zext nneg i32 %colorType to i64 - %arrayidx = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2, i64 %idxprom + %arrayidx = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2 + %arrayidx = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %arrayidx.split, i64 0, i64 %idxprom %3 = load i8, ptr %arrayidx, align 4, !tbaa !131, !range !70, !noundef !71 %tobool = icmp ne i8 %3, 0 br label %return @@ -5113,7 +5116,8 @@ entry: if.end: ; preds = %entry %conv.i11 = zext i32 %index to i64 %idxprom = zext nneg i32 %colorType to i64 - %Color = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2, i64 %idxprom, i32 1 + %Color = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2 + %Color = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %Color.split, i64 0, i64 %idxprom, i32 1 %3 = load i32, ptr %Color, align 8, !tbaa !52 br label %return diff --git a/bench/minetest/optimized/voxelalgorithms.ll b/bench/minetest/optimized/voxelalgorithms.ll index a985576de0f..7cfc4817b4c 100644 --- a/bench/minetest/optimized/voxelalgorithms.ll +++ b/bench/minetest/optimized/voxelalgorithms.ll @@ -4401,6 +4401,7 @@ for.cond1.preheader: ; preds = %for.cond.cleanup4, %add.i89 = mul i32 %mul622.i, %conv5.i %add.i104.reass = mul i32 %sub.i, %invariant.op %cmp21.not114 = icmp slt i32 %add.i89, %add.i104.reass + %arrayidx19.split = getelementptr inbounds nuw [16 x i8], ptr %light, i64 %indvars.iv120 br i1 %cmp21.not114, label %for.cond.cleanup4, label %for.cond1.preheader.split for.cond1.preheader.split: ; preds = %for.cond1.preheader @@ -4424,7 +4425,7 @@ for.body5: ; preds = %for.cond.cleanup22. %conv16.i = ashr exact i32 %sext, 16 %sub20.i = sub nsw i32 %conv16.i, %conv19.i %add21.i108 = add nsw i32 %sub20.i, %add.i104.reass - %arrayidx19 = getelementptr inbounds nuw [16 x i8], ptr %light, i64 %indvars.iv120, i64 %indvars.iv + %arrayidx19 = getelementptr inbounds nuw [16 x i8], ptr %arrayidx19.split, i64 0, i64 %indvars.iv %9 = load i8, ptr %arrayidx19, align 1, !tbaa !118, !range !99, !noundef !100 %add21.i = add nsw i32 %sub20.i, %add.i89 br label %for.body23 @@ -5989,6 +5990,7 @@ for.cond1.preheader.i: ; preds = %for.cond.cleanup4.i for.cond1.preheader.i.split: ; preds = %for.cond1.preheader.i %23 = load ptr, ptr %m_flags.i, align 8, !tbaa !164 + %arrayidx19.i.split = getelementptr inbounds nuw [16 x i8], ptr %lights, i64 %indvars.iv120.i br label %for.body5.i for.cond.cleanup4.i: ; preds = %for.cond.cleanup22.i.loopexit, %for.cond1.preheader.i @@ -6004,7 +6006,7 @@ for.body5.i: ; preds = %for.cond.cleanup22. %conv16.i.i = ashr exact i32 %sext.i, 16 %sub20.i.i = sub nsw i32 %conv16.i.i, %conv19.i.i %add21.i108.i = add nsw i32 %sub20.i.i, %add.i104.i.reass - %arrayidx19.i = getelementptr inbounds nuw [16 x i8], ptr %lights, i64 %indvars.iv120.i, i64 %indvars.iv.i + %arrayidx19.i = getelementptr inbounds nuw [16 x i8], ptr %arrayidx19.i.split, i64 0, i64 %indvars.iv.i %25 = load i8, ptr %arrayidx19.i, align 1, !tbaa !118, !range !99, !noundef !100 %add21.i.i = add nsw i32 %sub20.i.i, %add.i89.i br label %for.body23.i @@ -6079,6 +6081,7 @@ for.cond56.preheader: ; preds = %for.cond.cleanup59, %indvars.iv616 = phi i64 [ 0, %invoke.cont43 ], [ %indvars.iv.next617, %for.cond.cleanup59 ] %32 = trunc i64 %indvars.iv616 to i32 %ref.tmp62.sroa.6.0.insert.shift = shl nuw i32 %32, 16 + %arrayidx66.split = getelementptr inbounds nuw [16 x [16 x i8]], ptr %lights, i64 0, i64 %indvars.iv616 br label %for.body60 lpad34: ; preds = %for.body32 @@ -6104,7 +6107,7 @@ for.body60: ; preds = %invoke.cont67, %for %incdec.ptr.i.i557573 = phi ptr [ %_M_finish.i.promoted, %for.cond56.preheader ], [ %incdec.ptr.i.i558, %invoke.cont67 ] %add.ptr28.i.i563572 = phi ptr [ %_M_end_of_storage.i.promoted, %for.cond56.preheader ], [ %add.ptr28.i.i562, %invoke.cont67 ] %cond.i49.i.i568571 = phi ptr [ %data.promoted, %for.cond56.preheader ], [ %40, %invoke.cont67 ] - %arrayidx66 = getelementptr inbounds nuw [16 x [16 x i8]], ptr %lights, i64 0, i64 %indvars.iv616, i64 %indvars.iv + %arrayidx66 = getelementptr inbounds nuw [16 x i8], ptr %arrayidx66.split, i64 0, i64 %indvars.iv %cmp.not.i = icmp eq ptr %incdec.ptr.i.i557573, %add.ptr28.i.i563572 br i1 %cmp.not.i, label %if.else.i429, label %if.then.i @@ -6921,6 +6924,7 @@ entry: for.cond1.preheader: ; preds = %for.cond.cleanup4, %entry %indvars.iv83 = phi i64 [ 0, %entry ], [ %indvars.iv.next84, %for.cond.cleanup4 ] + %arrayidx7.split = getelementptr inbounds nuw [16 x i8], ptr %light, i64 %indvars.iv83 %.idx = shl i64 %indvars.iv83, 10 br label %for.body5 @@ -6934,7 +6938,7 @@ for.cond.cleanup4: ; preds = %for.cond.cleanup11 for.body5: ; preds = %for.cond.cleanup11, %for.cond1.preheader %indvars.iv80 = phi i64 [ 0, %for.cond1.preheader ], [ %indvars.iv.next81, %for.cond.cleanup11 ] - %arrayidx7 = getelementptr inbounds nuw [16 x i8], ptr %light, i64 %indvars.iv83, i64 %indvars.iv80 + %arrayidx7 = getelementptr inbounds nuw [16 x i8], ptr %arrayidx7.split, i64 0, i64 %indvars.iv80 %0 = load i8, ptr %arrayidx7, align 1, !tbaa !118, !range !99, !noundef !100 br label %for.body12 @@ -7175,6 +7179,7 @@ invoke.cont22: ; preds = %invoke.cont20 for.cond1.preheader.i: ; preds = %for.cond.cleanup4.i, %invoke.cont22 %indvars.iv83.i = phi i64 [ 0, %invoke.cont22 ], [ %indvars.iv.next84.i, %for.cond.cleanup4.i ] + %arrayidx7.i.split = getelementptr inbounds nuw [16 x i8], ptr %lights, i64 %indvars.iv83.i %.idx = shl i64 %indvars.iv83.i, 10 br label %for.body5.i @@ -7185,7 +7190,7 @@ for.cond.cleanup4.i: ; preds = %for.cond.cleanup11. for.body5.i: ; preds = %for.cond.cleanup11.i, %for.cond1.preheader.i %indvars.iv80.i = phi i64 [ 0, %for.cond1.preheader.i ], [ %indvars.iv.next81.i, %for.cond.cleanup11.i ] - %arrayidx7.i = getelementptr inbounds nuw [16 x i8], ptr %lights, i64 %indvars.iv83.i, i64 %indvars.iv80.i + %arrayidx7.i = getelementptr inbounds nuw [16 x i8], ptr %arrayidx7.i.split, i64 0, i64 %indvars.iv80.i %14 = load i8, ptr %arrayidx7.i, align 1, !tbaa !118, !range !99, !noundef !100 br label %for.body12.i @@ -7286,6 +7291,7 @@ for.cond29.preheader: ; preds = %for.cond.cleanup32, %indvars.iv381 = phi i64 [ 0, %invoke.cont24 ], [ %indvars.iv.next382, %for.cond.cleanup32 ] %31 = trunc i64 %indvars.iv381 to i32 %ref.tmp35.sroa.6.0.insert.shift = shl nuw i32 %31, 16 + %arrayidx39.split = getelementptr inbounds nuw [16 x [16 x i8]], ptr %lights, i64 0, i64 %indvars.iv381 br label %for.body33 while.cond.preheader: ; preds = %for.cond.cleanup32 @@ -7322,7 +7328,7 @@ for.cond.cleanup32: ; preds = %invoke.cont40 for.body33: ; preds = %invoke.cont40, %for.cond29.preheader %35 = phi ptr [ %.pre, %for.cond29.preheader ], [ %44, %invoke.cont40 ] %indvars.iv = phi i64 [ 0, %for.cond29.preheader ], [ %indvars.iv.next, %invoke.cont40 ] - %arrayidx39 = getelementptr inbounds nuw [16 x [16 x i8]], ptr %lights, i64 0, i64 %indvars.iv381, i64 %indvars.iv + %arrayidx39 = getelementptr inbounds nuw [16 x i8], ptr %arrayidx39.split, i64 0, i64 %indvars.iv %36 = load ptr, ptr %_M_end_of_storage.i, align 8, !tbaa !202 %cmp.not.i = icmp eq ptr %35, %36 br i1 %cmp.not.i, label %if.else.i, label %if.then.i230 diff --git a/bench/mitsuba3/optimized/struct.ll b/bench/mitsuba3/optimized/struct.ll index 2d2b1ecdf19..95a021ed89d 100644 --- a/bench/mitsuba3/optimized/struct.ll +++ b/bench/mitsuba3/optimized/struct.ll @@ -8132,9 +8132,10 @@ _ZN7mitsuba6detail14StructCompiler6const_IdEEN6asmjit9_abi_1_103x863MemET_.exit1 br label %.preheader.us .preheader.us: ; preds = %.preheader.us.preheader, %.split22.us.us - %.027.us = phi i64 [ %49, %.split22.us.us ], [ 0, %.preheader.us.preheader ] - %48 = icmp eq i64 %.027.us, 0 - br i1 %48, label %.preheader.split.us.us, label %.preheader.split.us30 + %.027.us = phi i64 [ %49, %.split24.us.us ], [ 0, %.preheader.us.preheader ] + %invariant.gep.us = getelementptr inbounds nuw [6 x float], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.to_srgb_coeffs, i64 0, i64 %.027.us + %48 = icmp eq i64 %.031.us, 0 + br i1 %48, label %.preheader.split.us.us, label %.preheader.split.us33 .split22.us.us: ; preds = %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us %49 = add nuw nsw i64 %.027.us, 1 @@ -8144,8 +8145,8 @@ _ZN7mitsuba6detail14StructCompiler6const_IdEEN6asmjit9_abi_1_103x863MemET_.exit1 .preheader.split.us.us: ; preds = %.preheader.us, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us %50 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us ], [ true, %.preheader.us ] %indvars.iv46 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us ], [ 0, %.preheader.us ] - %51 = getelementptr inbounds nuw [2 x [6 x float]], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.to_srgb_coeffs, i64 0, i64 %indvars.iv46, i64 0 - %52 = load float, ptr %51, align 8 + %51 = getelementptr inbounds nuw [2 x [6 x float]], ptr %invariant.gep.us, i64 0, i64 %indvars.iv46 + %52 = load float, ptr %51, align 4 %53 = load ptr, ptr %1, align 8, !noalias !373 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5), !noalias !373 store float %52, ptr %5, align 4, !noalias !376 @@ -8160,15 +8161,15 @@ _ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit. br i1 %50, label %.preheader.split.us.us, label %.split22.us.us, !llvm.loop !379 .preheader.split.us30: ; preds = %.preheader.us, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us - %57 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us ], [ true, %.preheader.us ] - %indvars.iv43 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us ], [ 0, %.preheader.us ] - %58 = getelementptr inbounds nuw [2 x [6 x float]], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.to_srgb_coeffs, i64 0, i64 %indvars.iv43, i64 %.027.us + %57 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us ], [ true, %.preheader.us ] + %indvars.iv43 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us ], [ 0, %.preheader.us ] + %58 = getelementptr inbounds nuw [2 x [6 x float]], ptr %invariant.gep.us, i64 0, i64 %indvars.iv46 %59 = load float, ptr %58, align 4 %60 = load ptr, ptr %1, align 8, !noalias !373 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5), !noalias !373 store float %59, ptr %5, align 4, !noalias !376 %61 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %60, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) - to label %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us unwind label %.split.split.us.split.us + to label %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us unwind label %.split.split.us.split.us _ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us: ; preds = %.preheader.split.us30 %..us24.us = select i1 %57, ptr %0, ptr %8 @@ -8188,14 +8189,15 @@ _ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit. br label %.split.us .preheader: ; preds = %.preheader.preheader, %.split22.us - %.027 = phi i64 [ %84, %.split22.us ], [ 0, %.preheader.preheader ] - %66 = icmp eq i64 %.027, 0 - br i1 %66, label %.preheader.split.us, label %.preheader.split + %.027 = phi i64 [ %84, %.split24.us ], [ 0, %.preheader.preheader ] + %invariant.gep20 = getelementptr inbounds nuw [5 x float], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.from_srgb_coeffs, i64 0, i64 %.027 + %64 = icmp eq i64 %.031, 0 + br i1 %64, label %.preheader.split.us, label %.preheader.split .preheader.split.us: ; preds = %.preheader, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us %67 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us ], [ true, %.preheader ] %indvars.iv40 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us ], [ 0, %.preheader ] - %68 = getelementptr inbounds nuw [2 x [5 x float]], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.from_srgb_coeffs, i64 0, i64 %indvars.iv40, i64 0 + %68 = getelementptr inbounds nuw [2 x [5 x float]], ptr %invariant.gep20, i64 0, i64 %indvars.iv40 %69 = load float, ptr %68, align 4 %70 = load ptr, ptr %1, align 8, !noalias !373 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5), !noalias !373 @@ -8218,7 +8220,7 @@ _ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit. .preheader.split: ; preds = %.preheader, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit %75 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit ], [ true, %.preheader ] %indvars.iv = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit ], [ 0, %.preheader ] - %76 = getelementptr inbounds nuw [2 x [5 x float]], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.from_srgb_coeffs, i64 0, i64 %indvars.iv, i64 %.027 + %76 = getelementptr inbounds nuw [2 x [5 x float]], ptr %invariant.gep20, i64 0, i64 %indvars.iv %77 = load float, ptr %76, align 4 %78 = load ptr, ptr %1, align 8, !noalias !373 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5), !noalias !373 @@ -8256,7 +8258,7 @@ _ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit: %88 = load ptr, ptr %87, align 8 %89 = getelementptr inbounds nuw i8, ptr %88, i64 48 %90 = load ptr, ptr %89, align 8 - %91 = call noundef i32 %90(ptr noundef nonnull align 8 dereferenceable(410) %87, ptr noundef nonnull align 4 dereferenceable(16) %11) + %91 = call noundef i32 %86(ptr noundef nonnull align 8 dereferenceable(410) %87, ptr noundef nonnull align 4 dereferenceable(16) %11) %92 = load ptr, ptr %1, align 8 %93 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %92, i32 noundef 1198, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %2) ret void diff --git a/bench/oiio/optimized/imageio.ll b/bench/oiio/optimized/imageio.ll index 35e09cac4eb..d53f2241c7c 100644 --- a/bench/oiio/optimized/imageio.ll +++ b/bench/oiio/optimized/imageio.ll @@ -9807,14 +9807,14 @@ _ZN11OpenImageIO6v3_1_09ImageSpec11auto_strideERlS2_S2_liii.exit: %33 = add nsw i32 %.04362.us.us.us.us.us.us, %13 br label %34 -34: ; preds = %97, %.preheader.us.us.us.us.us.us - %.04160.us.us.us.us.us.us = phi i32 [ 0, %.preheader.us.us.us.us.us.us ], [ %98, %97 ] - %.04259.us.us.us.us.us.us = phi ptr [ %.04461.us.us.us.us.us.us, %.preheader.us.us.us.us.us.us ], [ %99, %97 ] +34: ; preds = %98, %.preheader.us.us.us.us.us.us + %.04160.us.us.us.us.us.us = phi i32 [ 0, %.preheader.us.us.us.us.us.us ], [ %99, %98 ] + %.04259.us.us.us.us.us.us = phi ptr [ %.04461.us.us.us.us.us.us, %.preheader.us.us.us.us.us.us ], [ %100, %98 ] %35 = add nsw i32 %.04160.us.us.us.us.us.us, %12 %36 = icmp eq i32 %35, %9 %37 = icmp eq i32 %35, %10 %or.cond.us.us.us.us.us.us = or i1 %36, %37 - br i1 %or.cond.us.us.us.us.us.us, label %97, label %38 + br i1 %or.cond.us.us.us.us.us.us, label %98, label %38 38: ; preds = %34 %39 = and i32 %35, -4 @@ -9874,25 +9874,26 @@ _ZN11OpenImageIO6v3_1_03pvt19bluenoise_4chan_ptrEiiiii.exit.us.us.us.us.us.us: ; %85 = and i32 %.0.i.us.us.us.us.us.us, 255 %86 = and i32 %.015.i.us.us.us.us.us.us, 255 %87 = zext nneg i32 %86 to i64 - %88 = zext nneg i32 %85 to i64 - %89 = getelementptr inbounds nuw [256 x [256 x [4 x float]]], ptr @_ZN11OpenImageIO6v3_1_03pvt15bluenoise_tableE, i64 0, i64 %87, i64 %88 - %90 = and i32 %35, 3 - %91 = zext nneg i32 %90 to i64 - %92 = getelementptr inbounds nuw float, ptr %89, i64 %91 - %93 = load float, ptr %92, align 4, !tbaa !63 - %94 = fadd float %93, -5.000000e-01 - %95 = load float, ptr %.04259.us.us.us.us.us.us, align 4, !tbaa !63 - %96 = tail call float @llvm.fmuladd.f32(float %8, float %94, float %95) - store float %96, ptr %.04259.us.us.us.us.us.us, align 4, !tbaa !63 - br label %97 - -97: ; preds = %_ZN11OpenImageIO6v3_1_03pvt19bluenoise_4chan_ptrEiiiii.exit.us.us.us.us.us.us, %34 - %98 = add nuw nsw i32 %.04160.us.us.us.us.us.us, 1 - %99 = getelementptr inbounds nuw i8, ptr %.04259.us.us.us.us.us.us, i64 4 - %exitcond.not = icmp eq i32 %98, %0 + %88 = getelementptr inbounds nuw [256 x [256 x [4 x float]]], ptr @_ZN11OpenImageIO6v3_1_03pvt15bluenoise_tableE, i64 0, i64 %87 + %89 = zext nneg i32 %85 to i64 + %90 = getelementptr inbounds nuw [256 x [4 x float]], ptr %88, i64 0, i64 %89 + %91 = and i32 %35, 3 + %92 = zext nneg i32 %91 to i64 + %93 = getelementptr inbounds nuw float, ptr %90, i64 %92 + %94 = load float, ptr %93, align 4, !tbaa !63 + %95 = fadd float %94, -5.000000e-01 + %96 = load float, ptr %.04259.us.us.us.us.us.us, align 4, !tbaa !63 + %97 = tail call float @llvm.fmuladd.f32(float %8, float %95, float %96) + store float %97, ptr %.04259.us.us.us.us.us.us, align 4, !tbaa !63 + br label %98 + +98:; preds = %_ZN11OpenImageIO6v3_1_03pvt19bluenoise_4chan_ptrEiiiii.exit.us.us.us.us.us.us, %34 + %99 = add nuw nsw i32 %.04160.us.us.us.us.us.us, 1 + %100 = getelementptr inbounds nuw i8, ptr %.04259.us.us.us.us.us.us, i64 4 + %exitcond.not = icmp eq i32 %99, %0 br i1 %exitcond.not, label %._crit_edge.us.us.us.us.us.us, label %34, !llvm.loop !223 -._crit_edge.us.us.us.us.us.us: ; preds = %97 +._crit_edge.us.us.us.us.us.us: ; preds = %98 %100 = add nuw nsw i32 %.04362.us.us.us.us.us.us, 1 %101 = getelementptr inbounds i8, ptr %.04461.us.us.us.us.us.us, i64 %.055 %exitcond90.not = icmp eq i32 %100, %1 diff --git a/bench/oiio/optimized/psdinput.ll b/bench/oiio/optimized/psdinput.ll index a556632a757..55be22349a9 100644 --- a/bench/oiio/optimized/psdinput.ll +++ b/bench/oiio/optimized/psdinput.ll @@ -11412,8 +11412,9 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearE .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] %23 = phi i64 [ %21, %.lr.ph.preheader ], [ %27, %.lr.ph ] - %24 = getelementptr inbounds nuw [10 x [4 x ptr]], ptr @_ZN11OpenImageIO6v3_1_08PSDInput18mode_channel_namesE, i64 0, i64 %23, i64 %indvars.iv - %25 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRPKcEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(8) %24) + %24 = getelementptr inbounds nuw [10 x [4 x ptr]], ptr @_ZN11OpenImageIO6v3_1_08PSDInput18mode_channel_namesE, i64 0, i64 %23 + %25 = getelementptr inbounds nuw [4 x ptr], ptr %24, i64 0, i64 %indvars.iv + %26 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRPKcEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(8) %25) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %26 = load i16, ptr %17, align 2, !tbaa !171 %27 = zext i16 %26 to i64 diff --git a/bench/oniguruma/optimized/unicode.ll b/bench/oniguruma/optimized/unicode.ll index 4691b3dc65d..744e2ed05f7 100644 --- a/bench/oniguruma/optimized/unicode.ll +++ b/bench/oniguruma/optimized/unicode.ll @@ -1558,7 +1558,7 @@ define dso_local i32 @onigenc_unicode_get_case_fold_codes_by_str(ptr noundef rea %gep473 = getelementptr inbounds nuw i32, ptr getelementptr inbounds nuw (i8, ptr @OnigUnicodeFolds1, i64 8), i64 %158 %159 = zext nneg i32 %156 to i64 %160 = shl nuw nsw i64 %159, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %gep706, ptr nonnull align 4 %gep473, i64 %160, i1 false), !tbaa !17 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %gep706, ptr nonnull align 4 %gep473, i64 %160, i1 false), !tbaa !17 br label %._crit_edge477 ._crit_edge477: ; preds = %.lr.ph476, %152 @@ -1723,7 +1723,7 @@ define dso_local i32 @onigenc_unicode_get_case_fold_codes_by_str(ptr noundef rea %gep446 = getelementptr inbounds nuw i32, ptr getelementptr inbounds nuw (i8, ptr @OnigUnicodeFolds1, i64 8), i64 %221 %222 = zext nneg i32 %219 to i64 %223 = shl nuw nsw i64 %222, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %gep704, ptr nonnull align 4 %gep446, i64 %223, i1 false), !tbaa !17 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %gep704, ptr nonnull align 4 %gep446, i64 %223, i1 false), !tbaa !17 br label %._crit_edge450 ._crit_edge450: ; preds = %.lr.ph449, %215 @@ -1941,7 +1941,7 @@ define dso_local i32 @onigenc_unicode_get_case_fold_codes_by_str(ptr noundef rea %gep414 = getelementptr inbounds nuw i32, ptr getelementptr inbounds nuw (i8, ptr @OnigUnicodeFolds1, i64 8), i64 %315 %316 = zext nneg i32 %313 to i64 %317 = shl nuw nsw i64 %316, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %gep702, ptr nonnull align 4 %gep414, i64 %317, i1 false), !tbaa !17 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %gep702, ptr nonnull align 4 %gep414, i64 %317, i1 false), !tbaa !17 br label %._crit_edge418 ._crit_edge418: ; preds = %.lr.ph417, %309 @@ -2094,7 +2094,7 @@ define dso_local i32 @onigenc_unicode_get_case_fold_codes_by_str(ptr noundef rea %gep = getelementptr inbounds nuw i32, ptr getelementptr inbounds nuw (i8, ptr @OnigUnicodeFolds1, i64 8), i64 %379 %380 = zext nneg i32 %377 to i64 %381 = shl nuw nsw i64 %380, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %gep700, ptr nonnull align 4 %gep, i64 %381, i1 false), !tbaa !17 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %gep700, ptr nonnull align 4 %gep, i64 %381, i1 false), !tbaa !17 br label %._crit_edge ._crit_edge: ; preds = %.lr.ph390, %373 diff --git a/bench/open3d/optimized/ImageCPU.ll b/bench/open3d/optimized/ImageCPU.ll index 3ea72e1afdf..9543d1733bb 100644 --- a/bench/open3d/optimized/ImageCPU.ll +++ b/bench/open3d/optimized/ImageCPU.ll @@ -70474,7 +70474,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61: ; preds = %_ZN br label %.preheader .preheader: ; preds = %116, %136 - %indvars.iv69 = phi i64 [ 0, %116 ], [ %indvars.iv.next70, %136 ] + %indvars.iv69 = phi i64 [ 0, %116 ], [ %indvars.iv.next70, %137 ] + %119 = getelementptr inbounds nuw [3 x [4 x float]], ptr %0, i64 0, i64 %indvars.iv69 %.idx = shl nuw nsw i64 %indvars.iv69, 5 %invariant.gep = getelementptr inbounds nuw i8, ptr %118, i64 %.idx br label %137 @@ -70509,11 +70510,11 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61: ; preds = %_ZN br i1 %exitcond72.not, label %119, label %.preheader, !llvm.loop !1445 137: ; preds = %.preheader, %137 - %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %137 ] + %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %138 ] %gep = getelementptr inbounds nuw double, ptr %invariant.gep, i64 %indvars.iv %138 = load double, ptr %gep, align 8, !tbaa !69 %139 = fptrunc double %138 to float - %140 = getelementptr inbounds nuw [3 x [4 x float]], ptr %0, i64 0, i64 %indvars.iv69, i64 %indvars.iv + %140 = getelementptr inbounds nuw [4 x float], ptr %119, i64 0, i64 %indvars.iv store float %139, ptr %140, align 4, !tbaa !38 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 diff --git a/bench/open3d/optimized/ScalableTSDFVolume.ll b/bench/open3d/optimized/ScalableTSDFVolume.ll index 63cb0e9da06..5149672fd46 100644 --- a/bench/open3d/optimized/ScalableTSDFVolume.ll +++ b/bench/open3d/optimized/ScalableTSDFVolume.ll @@ -3326,14 +3326,12 @@ _ZNKSt8__detail15_Hashtable_baseIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIK br label %241 .preheader368: ; preds = %664 - switch i32 %.3107, label %.lr.ph [ - i32 255, label %.loopexit369 - i32 0, label %.loopexit369 - ] + %235 = getelementptr inbounds nuw [256 x [16 x i32]], ptr @_ZN12_GLOBAL__N_19tri_tableE, i64 0, i64 %232 + %236 = load i32, ptr %235, align 16, !tbaa !27 + %.not123418 = icmp eq i32 %236, -1 + br i1 %.not123418, label %.loopexit369, label %.lr.ph .lr.ph: ; preds = %.preheader368 - %235 = getelementptr inbounds nuw [256 x [16 x i32]], ptr @_ZN12_GLOBAL__N_19tri_tableE, i64 0, i64 %232, i64 0 - %236 = load i32, ptr %235, align 16, !tbaa !27 %237 = load ptr, ptr %0, align 8, !tbaa !191 %238 = getelementptr inbounds nuw i8, ptr %237, i64 120 %239 = getelementptr inbounds nuw i8, ptr %237, i64 128 @@ -4352,12 +4350,12 @@ _ZNSt10_HashtableIN5Eigen6MatrixIiLi4ELi1ELi0ELi4ELi1EEESt4pairIKS2_iENS0_17alig %668 = sext i32 %667 to i64 %669 = getelementptr inbounds [12 x i32], ptr %4, i64 0, i64 %668 %670 = add nuw nsw i64 %indvars.iv474, 2 - %671 = getelementptr inbounds nuw [256 x [16 x i32]], ptr @_ZN12_GLOBAL__N_19tri_tableE, i64 0, i64 %232, i64 %670 + %671 = getelementptr inbounds nuw [16 x i32], ptr %235, i64 0, i64 %670 %672 = load i32, ptr %671, align 4, !tbaa !27 %673 = sext i32 %672 to i64 %674 = getelementptr inbounds [12 x i32], ptr %4, i64 0, i64 %673 %675 = add nuw nsw i64 %indvars.iv474, 1 - %676 = getelementptr inbounds nuw [256 x [16 x i32]], ptr @_ZN12_GLOBAL__N_19tri_tableE, i64 0, i64 %232, i64 %675 + %676 = getelementptr inbounds nuw [16 x i32], ptr %235, i64 0, i64 %675 %677 = load i32, ptr %676, align 4, !tbaa !27 %678 = sext i32 %677 to i64 %679 = getelementptr inbounds [12 x i32], ptr %4, i64 0, i64 %678 @@ -4446,7 +4444,7 @@ _ZNSt6vectorIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESaIS2_EE17_M_realloc_insertIJ _ZNSt6vectorIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESaIS2_EE9push_backEOS2_.exit: ; preds = %_ZNSt6vectorIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i, %684 %707 = phi ptr [ %704, %_ZNSt6vectorIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i ], [ %686, %684 ] %indvars.iv.next475 = add nuw nsw i64 %indvars.iv474, 3 - %708 = getelementptr inbounds nuw [256 x [16 x i32]], ptr @_ZN12_GLOBAL__N_19tri_tableE, i64 0, i64 %232, i64 %indvars.iv.next475 + %708 = getelementptr inbounds nuw [16 x i32], ptr %235, i64 0, i64 %indvars.iv.next475 %709 = load i32, ptr %708, align 4, !tbaa !27 %.not123 = icmp eq i32 %709, -1 br i1 %.not123, label %.loopexit369, label %665, !llvm.loop !236 @@ -4461,7 +4459,7 @@ _ZNSt6vectorIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESaIS2_EE9push_backEOS2_.exit: cleanup br label %713 -.loopexit369: ; preds = %_ZNSt6vectorIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESaIS2_EE9push_backEOS2_.exit, %.preheader368, %.preheader368, %.thread354, %231, %231 +.loopexit369: ; preds = %_ZNSt6vectorIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESaIS2_EE9push_backEOS2_.exit, %.preheader368, %.thread354, %231, %231 call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %6) #32 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #32 %710 = add nuw nsw i32 %storemerge114420, 1 diff --git a/bench/opencc/optimized/bit-vector.ll b/bench/opencc/optimized/bit-vector.ll index 1429e993196..26f266b01e9 100644 --- a/bench/opencc/optimized/bit-vector.ll +++ b/bench/opencc/optimized/bit-vector.ll @@ -165,7 +165,7 @@ define noundef i64 @_ZNK6marisa8grimoire6vector9BitVector7select0Em(ptr noundef 10: ; preds = %2 %11 = zext i32 %9 to i64 - br label %141 + br label %142 12: ; preds = %2 %13 = lshr i32 %9, 9 @@ -348,16 +348,17 @@ define noundef i64 @_ZNK6marisa8grimoire6vector9BitVector7select0Em(ptr noundef %132 = lshr i64 %131, %129 %133 = and i64 %132, 255 %134 = sub i64 %.066, %133 - %135 = and i64 %130, 255 - %136 = getelementptr inbounds nuw [8 x [256 x i8]], ptr @_ZN6marisa8grimoire6vector12_GLOBAL__N_112SELECT_TABLEE, i64 0, i64 %134, i64 %135 - %137 = load i8, ptr %136, align 1, !tbaa !29 - %138 = zext i8 %137 to i64 - %139 = add i64 %108, %138 - %140 = add i64 %139, %129 - br label %141 - -141: ; preds = %107, %10 - %.065 = phi i64 [ %11, %10 ], [ %140, %107 ] + %135 = getelementptr inbounds nuw [8 x [256 x i8]], ptr @_ZN6marisa8grimoire6vector12_GLOBAL__N_112SELECT_TABLEE, i64 0, i64 %134 + %136 = and i64 %130, 255 + %137 = getelementptr inbounds nuw [256 x i8], ptr %135, i64 0, i64 %136 + %138 = load i8, ptr %137, align 1, !tbaa !29 + %139 = zext i8 %138 to i64 + %140 = add i64 %108, %139 + %141 = add i64 %140, %129 + br label %142 + +142:; preds = %107, %10 + %.065 = phi i64 [ %11, %10 ], [ %141, %107 ] ret i64 %.065 } @@ -374,7 +375,7 @@ define noundef i64 @_ZNK6marisa8grimoire6vector9BitVector7select1Em(ptr noundef 10: ; preds = %2 %11 = zext i32 %9 to i64 - br label %128 + br label %129 12: ; preds = %2 %13 = lshr i32 %9, 9 @@ -536,16 +537,17 @@ define noundef i64 @_ZNK6marisa8grimoire6vector9BitVector7select1Em(ptr noundef %119 = lshr i64 %118, %116 %120 = and i64 %119, 255 %121 = sub i64 %.063, %120 - %122 = and i64 %117, 255 - %123 = getelementptr inbounds nuw [8 x [256 x i8]], ptr @_ZN6marisa8grimoire6vector12_GLOBAL__N_112SELECT_TABLEE, i64 0, i64 %121, i64 %122 - %124 = load i8, ptr %123, align 1, !tbaa !29 - %125 = zext i8 %124 to i64 - %126 = add i64 %96, %125 - %127 = add i64 %126, %116 - br label %128 - -128: ; preds = %95, %10 - %.062 = phi i64 [ %11, %10 ], [ %127, %95 ] + %122 = getelementptr inbounds nuw [8 x [256 x i8]], ptr @_ZN6marisa8grimoire6vector12_GLOBAL__N_112SELECT_TABLEE, i64 0, i64 %121 + %123 = and i64 %117, 255 + %124 = getelementptr inbounds nuw [256 x i8], ptr %122, i64 0, i64 %123 + %125 = load i8, ptr %124, align 1, !tbaa !29 + %126 = zext i8 %125 to i64 + %127 = add i64 %96, %126 + %128 = add i64 %127, %116 + br label %129 + +129:; preds = %95, %10 + %.062 = phi i64 [ %11, %10 ], [ %128, %95 ] ret i64 %.062 } diff --git a/bench/opencv/optimized/AKAZEFeatures.ll b/bench/opencv/optimized/AKAZEFeatures.ll index 5dd34ef83db..d3e05693b03 100644 --- a/bench/opencv/optimized/AKAZEFeatures.ll +++ b/bench/opencv/optimized/AKAZEFeatures.ll @@ -9997,12 +9997,13 @@ define internal fastcc void @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3 br label %.preheader .preheader: ; preds = %0, %7 - %.0215 = phi i32 [ -6, %0 ], [ %8, %7 ] - %.0224 = phi i32 [ 0, %0 ], [ %.2, %7 ] + %.0215 = phi i32 [ -6, %0 ], [ %8, %8 ] + %.0224 = phi i32 [ 0, %0 ], [ %.2, %8 ] %3 = mul nsw i32 %.0215, %.0215 %4 = tail call i32 @llvm.abs.i32(i32 %.0215, i1 true) %5 = zext nneg i32 %4 to i64 - br label %9 + %6 = getelementptr inbounds nuw [7 x [7 x float]], ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E7gauss25, i64 0, i64 %5 + br label %10 6: ; preds = %7 ret void @@ -10013,8 +10014,8 @@ define internal fastcc void @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3 br i1 %exitcond6.not, label %6, label %.preheader, !llvm.loop !323 9: ; preds = %.preheader, %35 - %.0203 = phi i32 [ -6, %.preheader ], [ %36, %35 ] - %.12 = phi i32 [ %.0224, %.preheader ], [ %.2, %35 ] + %.0203 = phi i32 [ -6, %.preheader ], [ %36, %36 ] + %.12 = phi i32 [ %.0224, %.preheader ], [ %.2, %36 ] %10 = mul nsw i32 %.0203, %.0203 %11 = add nuw nsw i32 %10, %3 %12 = icmp samesign ult i32 %11, 36 @@ -10029,7 +10030,7 @@ define internal fastcc void @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %2) #24 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %2) invoke void @_ZN2cv5errorEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcS9_i(i32 noundef -215, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @__func__._ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_EN6gtableC2Ev, ptr noundef nonnull @.str.1, i32 noundef 1283) #26 - to label %16 unwind label %17 + to label %17 unwind label %17 16: ; preds = %15 unreachable @@ -10061,7 +10062,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS 25: ; preds = %13 %26 = tail call i32 @llvm.abs.i32(i32 %.0203, i1 true) %27 = zext nneg i32 %26 to i64 - %28 = getelementptr inbounds nuw [7 x [7 x float]], ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E7gauss25, i64 0, i64 %5, i64 %27 + %28 = getelementptr inbounds nuw [7 x float], ptr %6, i64 0, i64 %27 %29 = load float, ptr %28, align 4, !tbaa !8 %30 = sext i32 %.12 to i64 %31 = getelementptr inbounds [109 x float], ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E1g, i64 0, i64 %30 @@ -10074,7 +10075,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS br label %35 35: ; preds = %9, %25 - %.2 = phi i32 [ %34, %25 ], [ %.12, %9 ] + %.2 = phi i32 [ %34, %26 ], [ %.12, %10 ] %36 = add nsw i32 %.0203, 1 %exitcond.not = icmp eq i32 %36, 7 br i1 %exitcond.not, label %7, label %9, !llvm.loop !324 diff --git a/bench/opencv/optimized/ap3p.ll b/bench/opencv/optimized/ap3p.ll index 2b46290cc8f..10548bad7e0 100644 --- a/bench/opencv/optimized/ap3p.ll +++ b/bench/opencv/optimized/ap3p.ll @@ -618,44 +618,53 @@ _ZN12_GLOBAL__N_118polishQuarticRootsEPKdPdi.exit: ; preds = %._crit_edge.us.i, %359 = getelementptr inbounds nuw [4 x double], ptr %8, i64 0, i64 %indvars.iv542 store double %356, ptr %359, align 8, !tbaa !32 store double %.pre, ptr %355, align 8, !tbaa !32 - br label %.preheader.i - -.preheader.i: ; preds = %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i, %358 - %.05.i = phi i64 [ 0, %358 ], [ %366, %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i ] - br label %360 - -360: ; preds = %360, %.preheader.i - %.05.i.i = phi i64 [ %365, %360 ], [ 0, %.preheader.i ] - %361 = getelementptr inbounds nuw [3 x [3 x double]], ptr %3, i64 %indvars.iv542, i64 %.05.i, i64 %.05.i.i - %362 = getelementptr inbounds nuw [3 x [3 x double]], ptr %3, i64 %indvars.iv.next543, i64 %.05.i, i64 %.05.i.i - %363 = load double, ptr %361, align 8, !tbaa !32 - %364 = load double, ptr %362, align 8, !tbaa !32 - store double %364, ptr %361, align 8, !tbaa !32 - store double %363, ptr %362, align 8, !tbaa !32 - %365 = add nuw nsw i64 %.05.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %365, 3 - br i1 %exitcond.not.i.i, label %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i, label %360, !llvm.loop !39 - -_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i: ; preds = %360 - %366 = add nuw nsw i64 %.05.i, 1 - %exitcond.not.i237 = icmp eq i64 %366, 3 - br i1 %exitcond.not.i237, label %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit, label %.preheader.i, !llvm.loop !40 - -_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit: ; preds = %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i, %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit - %.05.i238 = phi i64 [ %371, %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit ], [ 0, %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i ] - %367 = getelementptr inbounds nuw [3 x double], ptr %4, i64 %indvars.iv542, i64 %.05.i238 - %368 = getelementptr inbounds nuw [3 x double], ptr %4, i64 %indvars.iv.next543, i64 %.05.i238 + %360 = getelementptr inbounds nuw [3 x [3 x double]], ptr %3, i64 %indvars.iv542 + %361 = getelementptr inbounds nuw [3 x [3 x double]], ptr %3, i64 %indvars.iv.next543 + br label %362 + +362:; preds = %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i, %358 + %.05.i = phi i64 [ 0, %358 ], [ %371, %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i ] + %363 = getelementptr inbounds nuw [3 x [3 x double]], ptr %360, i64 0, i64 %.05.i + %364 = getelementptr inbounds nuw [3 x [3 x double]], ptr %361, i64 0, i64 %.05.i + br label %365 + +365: ; preds = %365, %362 + %.05.i.i = phi i64 [ 0, %362 ], [ %370, %365 ] + %366 = getelementptr inbounds nuw [3 x double], ptr %363, i64 0, i64 %.05.i.i + %367 = getelementptr inbounds nuw [3 x double], ptr %364, i64 0, i64 %.05.i.i + %368 = load double, ptr %366, align 8, !tbaa !32 %369 = load double, ptr %367, align 8, !tbaa !32 - %370 = load double, ptr %368, align 8, !tbaa !32 - store double %370, ptr %367, align 8, !tbaa !32 - store double %369, ptr %368, align 8, !tbaa !32 - %371 = add nuw nsw i64 %.05.i238, 1 - %exitcond.not.i239 = icmp eq i64 %371, 3 - br i1 %exitcond.not.i239, label %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit, label %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit, !llvm.loop !39 - -_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit: ; preds = %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit - %372 = icmp sgt i64 %indvars.iv542, 1 - br i1 %372, label %354, label %.critedge, !llvm.loop !41 + store double %369, ptr %366, align 8, !tbaa !32 + store double %368, ptr %367, align 8, !tbaa !32 + %370 = add nuw nsw i64 %.05.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %370, 3 + br i1 %exitcond.not.i.i, label %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i, label %365, !llvm.loop !39 + +_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i: ; preds = %365 + %371 = add nuw nsw i64 %.05.i, 1 + %372 = icmp eq i64 %371, 3 + br i1 %372, label %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit, label %362, !llvm.loop !40 + +_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit: ; preds = %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i + %372 = getelementptr inbounds nuw [3 x double], ptr %4, i64 %indvars.iv542 + %373 = getelementptr inbounds nuw [3 x double], ptr %4, i64 %indvars.iv.next543 + br label %374 + +374: ; preds = %374, %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit + %.05.i238 = phi i64 [ 0, %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit ], [ %379, %374 ] + %375 = getelementptr inbounds nuw [3 x double], ptr %372, i64 0, i64 %.05.i238 + %376 = getelementptr inbounds nuw [3 x double], ptr %373, i64 0, i64 %.05.i238 + %377 = load double, ptr %375, align 8, !tbaa !32 + %378 = load double, ptr %376, align 8, !tbaa !32 + store double %378, ptr %375, align 8, !tbaa !32 + store double %377, ptr %376, align 8, !tbaa !32 + %379 = add nuw nsw i64 %.05.i238, 1 + %exitcond.not.i239 = icmp eq i64 %379, 3 + br i1 %exitcond.not.i239, label %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit, label %374, !llvm.loop !39 + +_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit: ; preds = %374 + %380 = icmp sgt i64 %indvars.iv542, 1 + br i1 %380, label %354, label %.critedge, !llvm.loop !41 .loopexit: ; preds = %.critedge, %_ZN12_GLOBAL__N_118polishQuarticRootsEPKdPdi.exit, %._crit_edge %.0233.lcssa550 = phi i32 [ %.1, %._crit_edge ], [ 0, %_ZN12_GLOBAL__N_118polishQuarticRootsEPKdPdi.exit ], [ %.1, %.critedge ] diff --git a/bench/opencv/optimized/trackerKCF.ll b/bench/opencv/optimized/trackerKCF.ll index b5c25d2f74e..e811f94f58a 100644 --- a/bench/opencv/optimized/trackerKCF.ll +++ b/bench/opencv/optimized/trackerKCF.ll @@ -7754,7 +7754,7 @@ _ZN2cv3MataSERKNS_7MatExprE.exit: ; preds = %10 ._crit_edge26: ; preds = %._crit_edge, %.preheader.lr.ph, %24 ret void -._crit_edge.loopexit: ; preds = %73 +._crit_edge.loopexit: ; preds = %74 %.pre = load i32, ptr %25, align 8, !tbaa !123 br label %._crit_edge @@ -7766,8 +7766,8 @@ _ZN2cv3MataSERKNS_7MatExprE.exit: ; preds = %10 %41 = icmp slt i64 %indvars.iv.next33, %40 br i1 %41, label %.preheader, label %._crit_edge26, !llvm.loop !186 -.lr.ph: ; preds = %.preheader, %73 - %indvars.iv29 = phi i64 [ %indvars.iv.next30, %73 ], [ 0, %.preheader ] +.lr.ph: ; preds = %.preheader, %74 + %indvars.iv29 = phi i64 [ %indvars.iv.next30, %74 ], [ 0, %.preheader ] %42 = load ptr, ptr %5, align 8, !tbaa !130 %43 = load ptr, ptr %7, align 8, !tbaa !131 %44 = load i64, ptr %43, align 8, !tbaa !83 @@ -7794,15 +7794,16 @@ _ZN2cv3MataSERKNS_7MatExprE.exit: ; preds = %10 %64 = call double @llvm.fmuladd.f64(double %63, double 1.024000e+03, double %58) %65 = fptoui double %64 to i32 %66 = zext i32 %65 to i64 - %67 = load ptr, ptr %31, align 8, !tbaa !130 - %68 = load ptr, ptr %32, align 8, !tbaa !131 - %69 = load i64, ptr %68, align 8, !tbaa !83 - %70 = mul i64 %69, %indvars.iv32 - %71 = getelementptr inbounds nuw i8, ptr %67, i64 %70 - %72 = getelementptr inbounds nuw %"class.cv::Vec.24", ptr %71, i64 %indvars.iv29 - br label %77 - -73: ; preds = %77 + %67 = getelementptr inbounds nuw [0 x [10 x float]], ptr @_ZN2cv6detail8tracking10ColorNamesE, i64 0, i64 %66 + %68 = load ptr, ptr %31, align 8, !tbaa !130 + %69 = load ptr, ptr %32, align 8, !tbaa !131 + %70 = load i64, ptr %69, align 8, !tbaa !83 + %71 = mul i64 %70, %indvars.iv32 + %72 = getelementptr inbounds nuw i8, ptr %68, i64 %71 + %73 = getelementptr inbounds nuw %"class.cv::Vec.24", ptr %72, i64 %indvars.iv29 + br label %78 + +74: ; preds = %78 %indvars.iv.next30 = add nuw nsw i64 %indvars.iv29, 1 %74 = load i32, ptr %28, align 4, !tbaa !124 %75 = sext i32 %74 to i64 @@ -7810,14 +7811,14 @@ _ZN2cv3MataSERKNS_7MatExprE.exit: ; preds = %10 br i1 %76, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !188 77: ; preds = %.lr.ph, %77 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %77 ] - %78 = getelementptr inbounds nuw [0 x [10 x float]], ptr @_ZN2cv6detail8tracking10ColorNamesE, i64 0, i64 %66, i64 %indvars.iv + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %78 ] + %78 = getelementptr inbounds nuw [10 x float], ptr %67, i64 0, i64 %indvars.iv %79 = load float, ptr %78, align 4, !tbaa !7 - %80 = getelementptr inbounds nuw [10 x float], ptr %72, i64 0, i64 %indvars.iv + %80 = getelementptr inbounds nuw [10 x float], ptr %73, i64 0, i64 %indvars.iv store float %79, ptr %80, align 4, !tbaa !7 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 10 - br i1 %exitcond.not, label %73, label %77, !llvm.loop !189 + br i1 %exitcond.not, label %74, label %77, !llvm.loop !189 } declare void @_ZNK2cv3Mat3mulERKNS_11_InputArrayEd(ptr dead_on_unwind writable sret(%"class.cv::MatExpr") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), double noundef) local_unnamed_addr #0 diff --git a/bench/openjdk/optimized/AlphaMath.ll b/bench/openjdk/optimized/AlphaMath.ll index 8b83dec0ed9..ba099c9f2d8 100644 --- a/bench/openjdk/optimized/AlphaMath.ll +++ b/bench/openjdk/optimized/AlphaMath.ll @@ -11,21 +11,22 @@ define hidden void @initAlphaTables() local_unnamed_addr #0 { br label %1 1: ; preds = %0, %11 - %indvars.iv44 = phi i64 [ 1, %0 ], [ %indvars.iv.next45, %11 ] + %indvars.iv44 = phi i64 [ 1, %0 ], [ %indvars.iv.next45, %12 ] %2 = mul nuw nsw i64 %indvars.iv44, 65793 - %3 = trunc i64 %2 to i32 - %4 = add i32 %3, 8388608 - %5 = trunc nuw nsw i64 %2 to i32 - br label %6 + %3 = getelementptr inbounds nuw [256 x [256 x i8]], ptr @mul8table, i64 0, i64 %indvars.iv44 + %4 = trunc i64 %2 to i32 + %5 = add i32 %4, 8388608 + %6 = trunc nuw nsw i64 %2 to i32 + br label %7 6: ; preds = %1, %6 - %indvars.iv = phi i64 [ 1, %1 ], [ %indvars.iv.next, %6 ] - %.03137 = phi i32 [ %4, %1 ], [ %10, %6 ] + %indvars.iv = phi i64 [ 1, %1 ], [ %indvars.iv.next, %7 ] + %.03137 = phi i32 [ %5, %1 ], [ %10, %7 ] %7 = lshr i32 %.03137, 24 %8 = trunc nuw i32 %7 to i8 - %9 = getelementptr inbounds nuw [256 x [256 x i8]], ptr @mul8table, i64 0, i64 %indvars.iv44, i64 %indvars.iv + %9 = getelementptr inbounds nuw [256 x i8], ptr %3, i64 0, i64 %indvars.iv store i8 %8, ptr %9, align 1 - %10 = add i32 %.03137, %5 + %10 = add i32 %.03137, %6 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 256 br i1 %exitcond.not, label %11, label %6, !llvm.loop !6 @@ -36,8 +37,8 @@ define hidden void @initAlphaTables() local_unnamed_addr #0 { br i1 %exitcond47.not, label %.preheader35, label %1, !llvm.loop !8 .preheader35: ; preds = %11, %._crit_edge - %indvars.iv52 = phi i64 [ %indvars.iv.next53, %._crit_edge ], [ 1, %11 ] - %indvar = phi i64 [ %indvar.next, %._crit_edge ], [ 0, %11 ] + %indvars.iv52 = phi i64 [ %indvars.iv.next53, %._crit_edge ], [ 1, %12 ] + %indvar = phi i64 [ %indvar.next, %._crit_edge ], [ 0, %12 ] %12 = mul nuw nsw i64 %indvar, 257 %gep = getelementptr i8, ptr getelementptr inbounds nuw (i8, ptr @div8table, i64 257), i64 %12 %13 = sub nsw i64 255, %indvar @@ -45,14 +46,15 @@ define hidden void @initAlphaTables() local_unnamed_addr #0 { %15 = lshr i32 %14, 1 %16 = or disjoint i32 %15, -16777216 %17 = udiv i32 %16, %14 - br label %18 + %19 = getelementptr inbounds nuw [256 x [256 x i8]], ptr @div8table, i64 0, i64 %indvars.iv52 + br label %20 18: ; preds = %.preheader35, %18 - %indvars.iv48 = phi i64 [ 0, %.preheader35 ], [ %indvars.iv.next49, %18 ] - %.040 = phi i32 [ 8388608, %.preheader35 ], [ %22, %18 ] + %indvars.iv48 = phi i64 [ 0, %.preheader35 ], [ %indvars.iv.next49, %20 ] + %.040 = phi i32 [ 8388608, %.preheader35 ], [ %22, %20 ] %19 = lshr i32 %.040, 24 %20 = trunc nuw i32 %19 to i8 - %21 = getelementptr inbounds nuw [256 x [256 x i8]], ptr @div8table, i64 0, i64 %indvars.iv52, i64 %indvars.iv48 + %21 = getelementptr inbounds nuw [256 x i8], ptr %19, i64 0, i64 %indvars.iv48 store i8 %20, ptr %21, align 1 %22 = add i32 %.040, %17 %indvars.iv.next49 = add nuw nsw i64 %indvars.iv48, 1 diff --git a/bench/openjdk/optimized/archiveBuilder.ll b/bench/openjdk/optimized/archiveBuilder.ll index 01a856bd344..47f2af2098b 100644 --- a/bench/openjdk/optimized/archiveBuilder.ll +++ b/bench/openjdk/optimized/archiveBuilder.ll @@ -3281,16 +3281,18 @@ _ZN27ResizeableResourceHashtableIPhS0_LN6AnyObj15allocation_typeE2EL8MEMFLAGS13E %115 = and i8 %113, 1 %116 = xor i8 %115, 1 %117 = zext nneg i8 %116 to i64 - %118 = zext i32 %107 to i64 - %119 = getelementptr inbounds nuw [2 x [23 x i32]], ptr %114, i64 0, i64 %117, i64 %118 - %120 = load i32, ptr %119, align 4 - %121 = add nsw i32 %120, 1 - store i32 %121, ptr %119, align 4 - %122 = getelementptr inbounds nuw i8, ptr %0, i64 836 - %123 = getelementptr inbounds nuw [2 x [23 x i32]], ptr %122, i64 0, i64 %117, i64 %118 - %124 = load i32, ptr %123, align 4 - %125 = add nsw i32 %124, %111 - store i32 %125, ptr %123, align 4 + %118 = getelementptr inbounds nuw [2 x [23 x i32]], ptr %114, i64 0, i64 %117 + %119 = zext i32 %107 to i64 + %120 = getelementptr inbounds nuw [23 x i32], ptr %118, i64 0, i64 %119 + %121 = load i32, ptr %120, align 4 + %122 = add nsw i32 %121, 1 + store i32 %122, ptr %120, align 4 + %123 = getelementptr inbounds nuw i8, ptr %0, i64 836 + %124 = getelementptr inbounds nuw [2 x [23 x i32]], ptr %123, i64 0, i64 %117 + %125 = getelementptr inbounds nuw [23 x i32], ptr %124, i64 0, i64 %119 + %126 = load i32, ptr %125, align 4 + %127 = add nsw i32 %126, %111 + store i32 %127, ptr %125, align 4 ret void } diff --git a/bench/openjdk/optimized/assembler_x86.ll b/bench/openjdk/optimized/assembler_x86.ll index f23f721e573..2a2e0c25dca 100644 --- a/bench/openjdk/optimized/assembler_x86.ll +++ b/bench/openjdk/optimized/assembler_x86.ll @@ -980,7 +980,7 @@ define hidden noundef zeroext i1 @_ZN9Assembler26query_compressed_disp_byteEibii %8 = and i64 %7, 134217728 %9 = icmp ne i64 %8, 0 %or.cond = and i1 %1, %9 - br i1 %or.cond, label %10, label %37 + br i1 %or.cond, label %10, label %38 10: ; preds = %6 switch i32 %3, label %switch.lookup [ @@ -1027,34 +1027,35 @@ define hidden noundef zeroext i1 @_ZN9Assembler26query_compressed_disp_byteEibii switch.lookup: ; preds = %20, %10, %13, %16, %22, %18 %.028 = phi i32 [ 0, %10 ], [ %15, %13 ], [ %.lobit32, %16 ], [ %.lobit, %18 ], [ %24, %22 ], [ %spec.select34, %20 ] %or.cond3 = icmp ult i32 %2, 3 - br i1 %or.cond3, label %25, label %37 + br i1 %or.cond3, label %25, label %38 25: ; preds = %switch.lookup %26 = add nsw i32 %.028, %3 %27 = sext i32 %26 to i64 - %28 = zext nneg i32 %2 to i64 - %29 = getelementptr inbounds [25 x [3 x i8]], ptr @_ZL11tuple_table, i64 0, i64 %27, i64 %28 - %30 = load i8, ptr %29, align 1 - %31 = zext i8 %30 to i32 - %32 = srem i32 %0, %31 - %33 = sdiv i32 %0, %31 - %34 = icmp eq i32 %32, 0 - br i1 %34, label %35, label %40 - -35: ; preds = %25 - %36 = add i32 %33, 128 - %or.cond5 = icmp ult i32 %36, 256 - %spec.select = select i1 %or.cond5, i32 %33, i32 %0 - br label %37 - -37: ; preds = %35, %switch.lookup, %6 - %.027 = phi i32 [ %0, %switch.lookup ], [ %0, %6 ], [ %spec.select, %35 ] - %38 = add i32 %.027, 128 - %39 = icmp ult i32 %38, 256 - br label %40 + %28 = getelementptr inbounds [25 x [3 x i8]], ptr @_ZL11tuple_table, i64 0, i64 %27 + %29 = zext nneg i32 %2 to i64 + %30 = getelementptr inbounds nuw [3 x i8], ptr %28, i64 0, i64 %29 + %31 = load i8, ptr %30, align 1 + %32 = zext i8 %31 to i32 + %33 = srem i32 %0, %32 + %34 = sdiv i32 %0, %32 + %35 = icmp eq i32 %33, 0 + br i1 %35, label %36, label %41 + +36:; preds = %25 + %37 = add i32 %34, 128 + %or.cond5 = icmp ult i32 %37, 256 + %spec.select = select i1 %or.cond5, i32 %34, i32 %0 + br label %38 + +40: ; preds = %36, %switch.lookup, %6 + %.0 = phi i32 [ %0, %switch.lookup ], [ %0, %6 ], [ %spec.select, %36 ] + %39 = add i32 %.027, 128 + %40 = icmp ult i32 %39, 256 + br label %41 -40: ; preds = %25, %37 - %.0 = phi i1 [ %39, %37 ], [ false, %25 ] +41: ; preds = %25, %38 + %.0 = phi i1 [ %40, %38 ], [ false, %25 ] ret i1 %.0 } @@ -1137,33 +1138,34 @@ switch.lookup: ; preds = %26, %12, %19, %22, 37: ; preds = %switch.lookup %38 = add nsw i32 %.020, %16 %39 = sext i32 %38 to i64 - %40 = zext nneg i32 %36 to i64 - %41 = getelementptr inbounds [25 x [3 x i8]], ptr @_ZL11tuple_table, i64 0, i64 %39, i64 %40 - %42 = load i8, ptr %41, align 1 - %43 = zext i8 %42 to i32 - %44 = load i32, ptr %1, align 4 - %45 = srem i32 %44, %43 - %46 = sdiv i32 %44, %43 - %47 = icmp eq i32 %45, 0 - br i1 %47, label %48, label %56 - -48: ; preds = %37 - %49 = add i32 %46, 128 - %50 = icmp ult i32 %49, 256 - br i1 %50, label %51, label %52 - -51: ; preds = %48 - store i32 %46, ptr %1, align 4 - br label %52 + %40 = getelementptr inbounds [25 x [3 x i8]], ptr @_ZL11tuple_table, i64 0, i64 %39 + %41 = zext nneg i32 %36 to i64 + %42 = getelementptr inbounds nuw [3 x i8], ptr %40, i64 0, i64 %41 + %43 = load i8, ptr %42, align 1 + %44 = zext i8 %43 to i32 + %45 = load i32, ptr %1, align 4 + %46 = srem i32 %45, %44 + %47 = sdiv i32 %45, %44 + %48 = icmp eq i32 %46, 0 + br i1 %48, label %49, label %57 + +49:; preds = %37 + %50 = add i32 %47, 128 + %51 = icmp ult i32 %50, 256 + br i1 %51, label %52, label %53 + +52:; preds = %49 + store i32 %47, ptr %1, align 4 + br label %53 -52: ; preds = %switch.lookup, %48, %51, %8, %5, %2 +52: ; preds = %switch.lookup, %49, %52, %8, %5, %2 %53 = load i32, ptr %1, align 4 %54 = add i32 %53, 128 %55 = icmp ult i32 %54, 256 br label %56 56: ; preds = %37, %52 - %.0 = phi i1 [ %55, %52 ], [ false, %37 ] + %.0 = phi i1 [ %55, %53 ], [ false, %37 ] ret i1 %.0 } diff --git a/bench/openjdk/optimized/castnode.ll b/bench/openjdk/optimized/castnode.ll index 85317f0c771..5ed504c98e5 100644 --- a/bench/openjdk/optimized/castnode.ll +++ b/bench/openjdk/optimized/castnode.ll @@ -1802,28 +1802,29 @@ define hidden noundef ptr @_ZNK15CheckCastPPNode5ValueEP8PhaseGVN(ptr noundef no %81 = getelementptr inbounds nuw [6 x i32], ptr @_ZN7TypePtr8ptr_dualE, i64 0, i64 %80 %82 = load i32, ptr %81, align 4 %83 = zext i32 %82 to i64 - %84 = getelementptr inbounds nuw i8, ptr %.pre38, i64 40 - %85 = load i32, ptr %84, align 8 - %86 = zext i32 %85 to i64 - %87 = getelementptr inbounds nuw [6 x i32], ptr @_ZN7TypePtr8ptr_dualE, i64 0, i64 %86 - %88 = load i32, ptr %87, align 4 - %89 = zext i32 %88 to i64 - %90 = getelementptr inbounds nuw [6 x [6 x i32]], ptr @_ZN7TypePtr8ptr_meetE, i64 0, i64 %83, i64 %89 - %91 = load i32, ptr %90, align 4 - %92 = zext i32 %91 to i64 - %93 = getelementptr inbounds nuw [6 x i32], ptr @_ZN7TypePtr8ptr_dualE, i64 0, i64 %92 - %94 = load i32, ptr %93, align 4 - %95 = load ptr, ptr %.pre38, align 8 - %96 = getelementptr inbounds nuw i8, ptr %95, i64 176 - %97 = load ptr, ptr %96, align 8 - %98 = tail call noundef ptr %97(ptr noundef nonnull align 8 dereferenceable(44) %.pre38, i32 noundef %94) #6 + %84 = getelementptr inbounds nuw [6 x [6 x i32]], ptr @_ZN7TypePtr8ptr_meetE, i64 0, i64 %83 + %85 = getelementptr inbounds nuw i8, ptr %.pre38, i64 40 + %86 = load i32, ptr %85, align 8 + %87 = zext i32 %86 to i64 + %88 = getelementptr inbounds nuw [6 x i32], ptr @_ZN7TypePtr8ptr_dualE, i64 0, i64 %87 + %89 = load i32, ptr %88, align 4 + %90 = zext i32 %89 to i64 + %91 = getelementptr inbounds nuw [6 x i32], ptr %84, i64 0, i64 %90 + %92 = load i32, ptr %91, align 4 + %93 = zext i32 %92 to i64 + %94 = getelementptr inbounds nuw [6 x i32], ptr @_ZN7TypePtr8ptr_dualE, i64 0, i64 %93 + %95 = load i32, ptr %94, align 4 + %96 = load ptr, ptr %.pre38, align 8 + %97 = getelementptr inbounds nuw i8, ptr %96, i64 176 + %98 = load ptr, ptr %97, align 8 + %99 = tail call noundef ptr %98(ptr noundef nonnull align 8 dereferenceable(44) %.pre38, i32 noundef %95) #6 br label %_ZNK18ConstraintCastNode5ValueEP8PhaseGVN.exit .fold.split: ; preds = %76 br label %_ZNK18ConstraintCastNode5ValueEP8PhaseGVN.exit _ZNK18ConstraintCastNode5ValueEP8PhaseGVN.exit: ; preds = %65, %60, %54, %._crit_edge.i, %34, %._crit_edge36, %79, %.fold.split, %76, %16, %6 - %.0 = phi ptr [ %14, %6 ], [ %17, %16 ], [ %98, %79 ], [ %.pre38, %._crit_edge36 ], [ %25, %76 ], [ %.pre38, %.fold.split ], [ %17, %34 ], [ %73, %65 ], [ %48, %60 ], [ %48, %54 ], [ %48, %._crit_edge.i ] + %.0 = phi ptr [ %14, %6 ], [ %17, %16 ], [ %99, %79 ], [ %.pre38, %._crit_edge36 ], [ %25, %76 ], [ %.pre38, %.fold.split ], [ %17, %34 ], [ %73, %65 ], [ %48, %60 ], [ %48, %54 ], [ %48, %._crit_edge.i ] ret ptr %.0 } diff --git a/bench/openjdk/optimized/img_globals.ll b/bench/openjdk/optimized/img_globals.ll index 048f9d9b70e..ca2d6b9322c 100644 --- a/bench/openjdk/optimized/img_globals.ll +++ b/bench/openjdk/optimized/img_globals.ll @@ -11,29 +11,31 @@ define void @make_uns_ordered_dither_array(ptr noundef captures(none) initialize .preheader52: ; preds = %2, %18 %.055 = phi i32 [ 1, %2 ], [ %19, %18 ] %3 = zext nneg i32 %.055 to i64 + %invariant.gep = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %3 br label %.preheader51 .preheader51: ; preds = %.preheader52, %17 %indvars.iv59 = phi i64 [ 0, %.preheader52 ], [ %indvars.iv.next60, %17 ] - %4 = add nuw nsw i64 %indvars.iv59, %3 + %4 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %indvars.iv59 + %gep = getelementptr inbounds nuw [8 x i8], ptr %invariant.gep, i64 %indvars.iv59 br label %5 5: ; preds = %.preheader51, %5 %indvars.iv = phi i64 [ 0, %.preheader51 ], [ %indvars.iv.next, %5 ] - %6 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %indvars.iv59, i64 %indvars.iv + %6 = getelementptr inbounds nuw [8 x i8], ptr %4, i64 0, i64 %indvars.iv %7 = load i8, ptr %6, align 1 %8 = shl i8 %7, 2 store i8 %8, ptr %6, align 1 %9 = or disjoint i8 %8, 1 %10 = add nuw nsw i64 %indvars.iv, %3 - %11 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %4, i64 %10 + %11 = getelementptr inbounds nuw [8 x i8], ptr %gep, i64 0, i64 %10 store i8 %9, ptr %11, align 1 %12 = load i8, ptr %6, align 1 %13 = add i8 %12, 2 - %14 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %indvars.iv59, i64 %10 + %14 = getelementptr inbounds nuw [8 x i8], ptr %4, i64 0, i64 %10 store i8 %13, ptr %14, align 1 %15 = add i8 %12, 3 - %16 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %4, i64 %indvars.iv + %16 = getelementptr inbounds nuw [8 x i8], ptr %gep, i64 0, i64 %indvars.iv store i8 %15, ptr %16, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %3 @@ -50,23 +52,24 @@ define void @make_uns_ordered_dither_array(ptr noundef captures(none) initialize br i1 %20, label %.preheader52, label %.preheader, !llvm.loop !9 .preheader: ; preds = %18, %28 - %indvars.iv68 = phi i64 [ %indvars.iv.next69, %28 ], [ 0, %18 ] - br label %21 - -21: ; preds = %.preheader, %21 - %indvars.iv64 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next65, %21 ] - %22 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %indvars.iv68, i64 %indvars.iv64 - %23 = load i8, ptr %22, align 1 - %24 = zext i8 %23 to i32 - %25 = mul nsw i32 %1, %24 - %26 = sdiv i32 %25, 64 - %27 = trunc i32 %26 to i8 - store i8 %27, ptr %22, align 1 + %indvars.iv68 = phi i64 [ %indvars.iv.next69, %29 ], [ 0, %18 ] + %21 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %indvars.iv68 + br label %22 + +22: ; preds = %.preheader, %22 + %indvars.iv64 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next65, %22 ] + %23 = getelementptr inbounds nuw [8 x i8], ptr %21, i64 0, i64 %indvars.iv64 + %24 = load i8, ptr %23, align 1 + %25 = zext i8 %24 to i32 + %26 = mul nsw i32 %1, %25 + %27 = sdiv i32 %26, 64 + %28 = trunc i32 %27 to i8 + store i8 %28, ptr %23, align 1 %indvars.iv.next65 = add nuw nsw i64 %indvars.iv64, 1 %exitcond67.not = icmp eq i64 %indvars.iv.next65, 8 - br i1 %exitcond67.not, label %28, label %21, !llvm.loop !10 + br i1 %exitcond67.not, label %28, label %22, !llvm.loop !10 -28: ; preds = %21 +28: ; preds = %22 %indvars.iv.next69 = add nuw nsw i64 %indvars.iv68, 1 %exitcond71.not = icmp eq i64 %indvars.iv.next69, 8 br i1 %exitcond71.not, label %29, label %.preheader, !llvm.loop !11 diff --git a/bench/openspiel/optimized/CalcTables.ll b/bench/openspiel/optimized/CalcTables.ll index 4650fa2865e..04389ce128e 100644 --- a/bench/openspiel/optimized/CalcTables.ll +++ b/bench/openspiel/optimized/CalcTables.ll @@ -502,35 +502,36 @@ _Z14CalcAllBoardsNP6boardsP12solvedBoards.exit: ; preds = %24 br label %29 29: ; preds = %.preheader, %42 - %indvars.iv64 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next65, %42 ] + %indvars.iv64 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next65, %43 ] %30 = getelementptr inbounds nuw [200 x %struct.deal], ptr %10, i64 0, i64 %indvars.iv64 %31 = load i32, ptr %30, align 4 %.idx = mul nuw nsw i64 %indvars.iv64, 216 %32 = getelementptr i8, ptr %28, i64 %.idx %33 = sext i32 %31 to i64 - br label %34 - -34: ; preds = %29, %34 - %indvars.iv60 = phi i64 [ 0, %29 ], [ %indvars.iv.next61, %34 ] - %35 = getelementptr inbounds nuw [13 x i32], ptr %32, i64 0, i64 %indvars.iv60 - %36 = load i32, ptr %35, align 4 - %37 = sub nsw i32 13, %36 - %38 = getelementptr inbounds nuw [4 x i32], ptr @rho, i64 0, i64 %indvars.iv60 - %39 = load i32, ptr %38, align 4 - %40 = sext i32 %39 to i64 - %41 = getelementptr inbounds [5 x [4 x i32]], ptr %1, i64 0, i64 %33, i64 %40 - store i32 %37, ptr %41, align 4 + %34 = getelementptr inbounds [5 x [4 x i32]], ptr %1, i64 0, i64 %33 + br label %35 + +35: ; preds = %29, %35 + %indvars.iv60 = phi i64 [ 0, %29 ], [ %indvars.iv.next61, %35 ] + %36 = getelementptr inbounds nuw [13 x i32], ptr %32, i64 0, i64 %indvars.iv60 + %37 = load i32, ptr %36, align 4 + %38 = sub nsw i32 13, %37 + %39 = getelementptr inbounds nuw [4 x i32], ptr @rho, i64 0, i64 %indvars.iv60 + %40 = load i32, ptr %39, align 4 + %41 = sext i32 %40 to i64 + %42 = getelementptr inbounds [4 x i32], ptr %34, i64 0, i64 %41 + store i32 %38, ptr %42, align 4 %indvars.iv.next61 = add nuw nsw i64 %indvars.iv60, 1 %exitcond63.not = icmp eq i64 %indvars.iv.next61, 4 - br i1 %exitcond63.not, label %42, label %34, !llvm.loop !13 + br i1 %exitcond63.not, label %42, label %35, !llvm.loop !13 -42: ; preds = %34 +42: ; preds = %35 %indvars.iv.next65 = add nuw nsw i64 %indvars.iv64, 1 %exitcond67.not = icmp eq i64 %indvars.iv.next65, 5 br i1 %exitcond67.not, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread, label %29, !llvm.loop !14 _Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread: ; preds = %42, %24, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit - %.032 = phi i32 [ %27, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit ], [ %25, %24 ], [ 1, %42 ] + %.032 = phi i32 [ %27, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit ], [ %25, %24 ], [ 1, %43 ] ret i32 %.032 } @@ -709,14 +710,15 @@ _Z14CalcAllBoardsNP6boardsP12solvedBoards.exit: ; preds = %49 br label %65 65: ; preds = %.preheader106.us, %71 - %indvars.iv156 = phi i64 [ 0, %.preheader106.us ], [ %indvars.iv.next157, %71 ] + %indvars.iv156 = phi i64 [ 0, %.preheader106.us ], [ %indvars.iv.next157, %72 ] %66 = add nuw nsw i64 %indvars.iv156, %63 %67 = getelementptr inbounds nuw [200 x %struct.deal], ptr %59, i64 0, i64 %66 %68 = load i32, ptr %67, align 4 %.idx.us = mul nuw nsw i64 %66, 216 %69 = getelementptr i8, ptr %60, i64 %.idx.us %70 = sext i32 %68 to i64 - br label %72 + %71 = getelementptr inbounds [5 x [4 x i32]], ptr %64, i64 0, i64 %70 + br label %73 71: ; preds = %72 %indvars.iv.next157 = add nuw nsw i64 %indvars.iv156, 1 @@ -724,14 +726,14 @@ _Z14CalcAllBoardsNP6boardsP12solvedBoards.exit: ; preds = %49 br i1 %exitcond160.not, label %._crit_edge124.us, label %65, !llvm.loop !19 72: ; preds = %72, %65 - %indvars.iv152 = phi i64 [ %indvars.iv.next153, %72 ], [ 0, %65 ] + %indvars.iv152 = phi i64 [ %indvars.iv.next153, %73 ], [ 0, %65 ] %73 = getelementptr inbounds nuw [13 x i32], ptr %69, i64 0, i64 %indvars.iv152 %74 = load i32, ptr %73, align 4 %75 = sub nsw i32 13, %74 %76 = getelementptr inbounds nuw [4 x i32], ptr @rho, i64 0, i64 %indvars.iv152 %77 = load i32, ptr %76, align 4 %78 = sext i32 %77 to i64 - %79 = getelementptr inbounds [5 x [4 x i32]], ptr %64, i64 0, i64 %70, i64 %78 + %79 = getelementptr inbounds [4 x i32], ptr %71, i64 0, i64 %78 store i32 %75, ptr %79, align 4 %indvars.iv.next153 = add nuw nsw i64 %indvars.iv152, 1 %exitcond155.not = icmp eq i64 %indvars.iv.next153, 4 @@ -763,7 +765,7 @@ _Z14CalcAllBoardsNP6boardsP12solvedBoards.exit: ; preds = %49 br i1 %89, label %.lr.ph, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread, !llvm.loop !22 .lr.ph: ; preds = %.preheader, %86 - %indvars.iv164 = phi i64 [ %indvars.iv.next165, %86 ], [ 0, %.preheader ] + %indvars.iv164 = phi i64 [ %indvars.iv.next165, %87 ], [ 0, %.preheader ] %90 = getelementptr inbounds nuw [200 x %struct.ddTableResults], ptr %85, i64 0, i64 %indvars.iv164 %91 = getelementptr inbounds nuw [40 x %struct.parResults], ptr %4, i64 0, i64 %indvars.iv164 %92 = call i32 @Par(ptr noundef nonnull %90, ptr noundef %91, i32 noundef %1) @@ -771,7 +773,7 @@ _Z14CalcAllBoardsNP6boardsP12solvedBoards.exit: ; preds = %49 br i1 %.not99, label %86, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread _Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread: ; preds = %.lr.ph, %86, %53, %.preheader106.lr.ph, %.preheader, %49, %._crit_edge, %._crit_edge126, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit, %13, %12 - %.079 = phi i32 [ -201, %12 ], [ -202, %13 ], [ %52, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit ], [ 1, %._crit_edge126 ], [ %50, %49 ], [ -101, %._crit_edge ], [ 1, %.preheader ], [ 1, %.preheader106.lr.ph ], [ 1, %53 ], [ %92, %.lr.ph ], [ 1, %86 ] + %.079 = phi i32 [ -201, %12 ], [ -202, %13 ], [ %52, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit ], [ 1, %._crit_edge126 ], [ %50, %49 ], [ -101, %._crit_edge ], [ 1, %.preheader ], [ 1, %.preheader106.lr.ph ], [ 1, %53 ], [ %92, %.lr.ph ], [ 1, %87 ] ret i32 %.079 } diff --git a/bench/openspiel/optimized/PBN.ll b/bench/openspiel/optimized/PBN.ll index a36b1f0ef69..9b7ac2dc1ae 100644 --- a/bench/openspiel/optimized/PBN.ll +++ b/bench/openspiel/optimized/PBN.ll @@ -65,9 +65,9 @@ define noundef range(i32 0, 2) i32 @_Z14ConvertFromPBNPKcPA4_j(ptr noundef reado br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %45 - %indvars.iv103 = phi i64 [ %indvars.iv101, %.lr.ph.preheader ], [ %indvars.iv.next104, %45 ] - %.07196 = phi i32 [ 0, %.lr.ph.preheader ], [ %.1, %45 ] - %.07295 = phi i32 [ 0, %.lr.ph.preheader ], [ %.173, %45 ] + %indvars.iv103 = phi i64 [ %indvars.iv101, %.lr.ph.preheader ], [ %indvars.iv.next104, %46 ] + %.07196 = phi i32 [ 0, %.lr.ph.preheader ], [ %.1, %46 ] + %.07295 = phi i32 [ 0, %.lr.ph.preheader ], [ %.173, %46 ] %13 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv103 %14 = load i8, ptr %13, align 1 %.not89 = icmp eq i8 %14, 0 @@ -76,7 +76,7 @@ define noundef range(i32 0, 2) i32 @_Z14ConvertFromPBNPKcPA4_j(ptr noundef reado 15: ; preds = %.lr.ph %16 = tail call noundef i32 @_Z6IsCardc(i8 noundef signext %14) %.not90 = icmp eq i32 %16, 0 - br i1 %.not90, label %40, label %17 + br i1 %.not90, label %41, label %17 17: ; preds = %15 switch i32 %.074, label %default.unreachable [ @@ -129,36 +129,37 @@ default.unreachable: ; preds = %17 %33 = zext i16 %32 to i32 %34 = shl nuw nsw i32 %33, 2 %35 = sext i32 %.0 to i64 - %36 = sext i32 %.07196 to i64 - %37 = getelementptr inbounds [4 x i32], ptr %1, i64 %35, i64 %36 - %38 = load i32, ptr %37, align 4 - %39 = or i32 %34, %38 - store i32 %39, ptr %37, align 4 - br label %45 - -40: ; preds = %15 - switch i8 %14, label %45 [ - i8 46, label %41 - i8 32, label %43 + %36 = getelementptr inbounds [4 x i32], ptr %1, i64 %35 + %37 = sext i32 %.07196 to i64 + %38 = getelementptr inbounds [4 x i32], ptr %36, i64 0, i64 %37 + %39 = load i32, ptr %38, align 4 + %40 = or i32 %34, %39 + store i32 %40, ptr %38, align 4 + br label %46 + +41:; preds = %15 + switch i8 %14, label %46 [ + i8 46, label %42 + i8 32, label %44 ] -41: ; preds = %40 +41: ; preds = %41 %42 = add nsw i32 %.07196, 1 br label %45 -43: ; preds = %40 +43: ; preds = %41 %44 = add nsw i32 %.07295, 1 br label %45 -45: ; preds = %40, %41, %43, %29 - %.173 = phi i32 [ %.07295, %29 ], [ %.07295, %41 ], [ %44, %43 ], [ %.07295, %40 ] - %.1 = phi i32 [ %.07196, %29 ], [ %42, %41 ], [ 0, %43 ], [ %.07196, %40 ] +45: ; preds = %41, %41, %43, %29 + %.173 = phi i32 [ %.07295, %29 ], [ %.07295, %42 ], [ %44, %44 ], [ %.07295, %41 ] + %.1 = phi i32 [ %.07196, %29 ], [ %42, %42 ], [ 0, %44 ], [ %.07196, %41 ] %indvars.iv.next104 = add nuw nsw i64 %indvars.iv103, 1 %exitcond.not = icmp eq i64 %indvars.iv.next104, 80 br i1 %exitcond.not, label %.critedge2, label %.lr.ph, !llvm.loop !6 .critedge2: ; preds = %45, %.lr.ph, %.critedge - %.070 = phi i32 [ 0, %.critedge ], [ 1, %.lr.ph ], [ 1, %45 ] + %.070 = phi i32 [ 0, %.critedge ], [ 1, %.lr.ph ], [ 1, %46 ] ret i32 %.070 } diff --git a/bench/openssl/optimized/quic_ackm.ll b/bench/openssl/optimized/quic_ackm.ll index fc70d3fd030..ea5bfb258bf 100644 --- a/bench/openssl/optimized/quic_ackm.ll +++ b/bench/openssl/optimized/quic_ackm.ll @@ -2441,104 +2441,105 @@ define ptr @ossl_ackm_get_ack_frame(ptr noundef %0, i32 noundef %1) local_unname .lr.ph.i: ; preds = %2 %13 = getelementptr inbounds nuw i8, ptr %0, i64 656 - br label %14 - -14: ; preds = %14, %.lr.ph.i - %.01922.i = phi ptr [ %.01920.i, %.lr.ph.i ], [ %.019.i, %14 ] - %.021.i = phi i64 [ 0, %.lr.ph.i ], [ %22, %14 ] - %15 = getelementptr inbounds nuw i8, ptr %.01922.i, i64 16 - %16 = load i64, ptr %15, align 8, !tbaa !104 - %17 = getelementptr inbounds [3 x [32 x %struct.ossl_quic_ack_range_st]], ptr %13, i64 0, i64 %4, i64 %.021.i - store i64 %16, ptr %17, align 8, !tbaa !63 - %18 = getelementptr inbounds nuw i8, ptr %.01922.i, i64 24 - %19 = load i64, ptr %18, align 8, !tbaa !107 - %20 = getelementptr inbounds nuw i8, ptr %17, i64 8 - store i64 %19, ptr %20, align 8, !tbaa !59 - %21 = getelementptr i8, ptr %.01922.i, i64 8 - %22 = add nuw nsw i64 %.021.i, 1 - %.019.i = load ptr, ptr %21, align 8, !tbaa !110 - %23 = icmp ne ptr %.019.i, null - %24 = icmp samesign ult i64 %.021.i, 2 - %25 = select i1 %23, i1 %24, i1 false - br i1 %25, label %14, label %ackm_fill_rx_ack_ranges.exit, !llvm.loop !111 - -ackm_fill_rx_ack_ranges.exit: ; preds = %14, %2 - %.0.lcssa.i = phi i64 [ 0, %2 ], [ %22, %14 ] - %26 = getelementptr inbounds nuw i8, ptr %0, i64 656 - %27 = getelementptr inbounds [3 x [32 x %struct.ossl_quic_ack_range_st]], ptr %26, i64 0, i64 %4 - store ptr %27, ptr %5, align 8, !tbaa !56 - %28 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 %.0.lcssa.i, ptr %28, align 8, !tbaa !62 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 2216 - %30 = getelementptr inbounds [3 x %struct.OSSL_TIME], ptr %29, i64 0, i64 %4 - %31 = load i64, ptr %30, align 8 - %.not = icmp eq i64 %31, 0 - br i1 %.not, label %37, label %32 - -32: ; preds = %ackm_fill_rx_ack_ranges.exit - %33 = icmp ugt i64 %10, %31 - %34 = icmp eq i32 %1, 2 - %or.cond = and i1 %34, %33 - br i1 %or.cond, label %35, label %37 - -35: ; preds = %32 - %36 = getelementptr inbounds nuw i8, ptr %5, i64 16 - %..i = sub nuw i64 %10, %31 - store i64 %..i, ptr %36, align 8, !tbaa !3 - br label %39 - -37: ; preds = %32, %ackm_fill_rx_ack_ranges.exit - %38 = getelementptr inbounds nuw i8, ptr %5, i64 16 - store i64 0, ptr %38, align 8, !tbaa !3 - br label %39 + %14 = getelementptr inbounds [3 x [32 x %struct.ossl_quic_ack_range_st]], ptr %13, i64 0, i64 %4 + br label %15 -39: ; preds = %37, %35 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 2240 - %41 = getelementptr inbounds [3 x i64], ptr %40, i64 0, i64 %4 - %42 = load i64, ptr %41, align 8, !tbaa !3 - %43 = getelementptr inbounds nuw i8, ptr %5, i64 24 - store i64 %42, ptr %43, align 8, !tbaa !112 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 2264 - %45 = getelementptr inbounds [3 x i64], ptr %44, i64 0, i64 %4 - %46 = load i64, ptr %45, align 8, !tbaa !3 - %47 = getelementptr inbounds nuw i8, ptr %5, i64 32 - store i64 %46, ptr %47, align 8, !tbaa !113 - %48 = getelementptr inbounds nuw i8, ptr %0, i64 2288 - %49 = getelementptr inbounds [3 x i64], ptr %48, i64 0, i64 %4 - %50 = load i64, ptr %49, align 8, !tbaa !3 - %51 = getelementptr inbounds nuw i8, ptr %5, i64 40 - store i64 %50, ptr %51, align 8, !tbaa !68 - %52 = getelementptr inbounds nuw i8, ptr %5, i64 48 - %53 = load i8, ptr %52, align 8 - %54 = or i8 %53, 1 - store i8 %54, ptr %52, align 8 - %55 = getelementptr inbounds nuw i8, ptr %0, i64 2312 - %56 = getelementptr inbounds [3 x i32], ptr %55, i64 0, i64 %4 - store i32 0, ptr %56, align 4, !tbaa !92 - %57 = getelementptr inbounds nuw i8, ptr %0, i64 464 - %58 = getelementptr inbounds [3 x i8], ptr %57, i64 0, i64 %4 - store i8 1, ptr %58, align 1, !tbaa !33 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 461 - %60 = getelementptr inbounds [3 x i8], ptr %59, i64 0, i64 %4 - store i8 0, ptr %60, align 1, !tbaa !33 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 2328 - %62 = getelementptr inbounds [3 x %struct.OSSL_TIME], ptr %61, i64 0, i64 %4 - store i64 -1, ptr %62, align 8, !tbaa !3 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 2384 - %64 = load ptr, ptr %63, align 8, !tbaa !108 - %.not.i39 = icmp eq ptr %64, null +39: ; preds = %39, %.lr.ph.i + %.01922.i = phi ptr [ %.01920.i, %.lr.ph.i ], [ %.019.i, %15 ] + %.021.i = phi i64 [ 0, %.lr.ph.i ], [ %23, %15 ] + %16 = getelementptr inbounds nuw i8, ptr %.01922.i, i64 16 + %17 = load i64, ptr %16, align 8, !tbaa !104 + %18 = getelementptr inbounds nuw [32 x %struct.ossl_quic_ack_range_st], ptr %14, i64 0, i64 %.021.i + store i64 %17, ptr %18, align 8, !tbaa !63 + %45 = getelementptr inbounds nuw i8, ptr %.01922.i, i64 24 + %46 = load i64, ptr %45, align 8, !tbaa !107 + %47 = getelementptr inbounds nuw i8, ptr %18, i64 8 + store i64 %46, ptr %47, align 8, !tbaa !59 + %48 = getelementptr i8, ptr %.01922.i, i64 8 + %23 = add nuw nsw i64 %.021.i, 1 + %50 = load ptr, ptr %48, align 8, !tbaa !110 + %24 = icmp ne ptr %50, null + %25 = icmp samesign ult i64 %.021.i, 2 + %26 = select i1 %24, i1 %25, i1 false + br i1 %26, label %15, label %ackm_fill_rx_ack_ranges.exit, !llvm.loop !111 + +ackm_fill_rx_ack_ranges.exit: ; preds = %15, %2 + %.0.lcssa.i = phi i64 [ 0, %2 ], [ %23, %15 ] + %56 = getelementptr inbounds nuw i8, ptr %0, i64 656 + %28 = getelementptr inbounds [3 x [32 x %struct.ossl_quic_ack_range_st]], ptr %56, i64 0, i64 %4 + store ptr %28, ptr %5, align 8, !tbaa !56 + %58 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 %.0.lcssa.i, ptr %58, align 8, !tbaa !62 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 2216 + %60 = getelementptr inbounds [3 x %struct.OSSL_TIME], ptr %59, i64 0, i64 %4 + %32 = load i64, ptr %60, align 8 + %.not = icmp eq i64 %32, 0 + br i1 %.not, label %38, label %33 + +33: ; preds = %ackm_fill_rx_ack_ranges.exit + %34 = icmp ugt i64 %10, %32 + %.not.i39 = icmp eq i32 %1, 2 + %or.cond = and i1 %35, %34 + br i1 %or.cond, label %36, label %38 + +36: ; preds = %33 + %37 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %..i = sub nuw i64 %10, %32 + store i64 %..i, ptr %37, align 8, !tbaa !3 + br label %40 + +38: ; preds = %33, %ackm_fill_rx_ack_ranges.exit + %39 = getelementptr inbounds nuw i8, ptr %5, i64 16 + store i64 0, ptr %39, align 8, !tbaa !3 + br label %40 + +40: ; preds = %38, %36 + %41 = getelementptr inbounds nuw i8, ptr %0, i64 2240 + %42 = getelementptr inbounds [3 x i64], ptr %41, i64 0, i64 %4 + %43 = load i64, ptr %42, align 8, !tbaa !3 + %44 = getelementptr inbounds nuw i8, ptr %5, i64 24 + store i64 %43, ptr %44, align 8, !tbaa !112 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 2264 + %46 = getelementptr inbounds [3 x i64], ptr %45, i64 0, i64 %4 + %47 = load i64, ptr %46, align 8, !tbaa !3 + %48 = getelementptr inbounds nuw i8, ptr %5, i64 32 + store i64 %47, ptr %48, align 8, !tbaa !113 + %49 = getelementptr inbounds nuw i8, ptr %0, i64 2288 + %50 = getelementptr inbounds [3 x i64], ptr %49, i64 0, i64 %4 + %51 = load i64, ptr %50, align 8, !tbaa !3 + %52 = getelementptr inbounds nuw i8, ptr %5, i64 40 + store i64 %51, ptr %52, align 8, !tbaa !68 + %53 = getelementptr inbounds nuw i8, ptr %5, i64 48 + %54 = load i8, ptr %53, align 8 + %55 = or i8 %54, 1 + store i8 %55, ptr %53, align 8 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 2312 + %57 = getelementptr inbounds [3 x i32], ptr %56, i64 0, i64 %4 + store i32 0, ptr %57, align 4, !tbaa !92 + %58 = getelementptr inbounds nuw i8, ptr %0, i64 464 + %59 = getelementptr inbounds [3 x i8], ptr %58, i64 0, i64 %4 + store i8 1, ptr %59, align 1, !tbaa !33 + %60 = getelementptr inbounds nuw i8, ptr %0, i64 461 + %61 = getelementptr inbounds [3 x i8], ptr %60, i64 0, i64 %4 + store i8 0, ptr %61, align 1, !tbaa !33 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 2328 + %63 = getelementptr inbounds [3 x %struct.OSSL_TIME], ptr %62, i64 0, i64 %4 + store i64 -1, ptr %63, align 8, !tbaa !3 + %64 = getelementptr inbounds nuw i8, ptr %0, i64 2384 + %65 = load ptr, ptr %64, align 8, !tbaa !108 + %.not.i39 = icmp eq ptr %65, null br i1 %.not.i39, label %ackm_set_flush_deadline.exit, label %ossl_ackm_get_ack_deadline.exit.i -ossl_ackm_get_ack_deadline.exit.i: ; preds = %39 - %65 = load i8, ptr %60, align 1, !tbaa !33 +ossl_ackm_get_ack_deadline.exit.i: ; preds = %40 + %65 = load i8, ptr %61, align 1, !tbaa !33 %.not.i.i = icmp eq i8 %65, 0 %spec.select.i = sext i1 %.not.i.i to i64 %66 = getelementptr inbounds nuw i8, ptr %0, i64 2392 %67 = load ptr, ptr %66, align 8, !tbaa !109 - tail call void %64(i64 %spec.select.i, i32 noundef %1, ptr noundef %67) #12 + tail call void %65(i64 %spec.select.i, i32 noundef %1, ptr noundef %67) #12 br label %ackm_set_flush_deadline.exit -ackm_set_flush_deadline.exit: ; preds = %39, %ossl_ackm_get_ack_deadline.exit.i +ackm_set_flush_deadline.exit: ; preds = %40, %ossl_ackm_get_ack_deadline.exit.i ret ptr %5 } diff --git a/bench/openssl/optimized/quic_cfq_test.ll b/bench/openssl/optimized/quic_cfq_test.ll index 94bb003665a..90ccf96e5a7 100644 --- a/bench/openssl/optimized/quic_cfq_test.ll +++ b/bench/openssl/optimized/quic_cfq_test.ll @@ -127,43 +127,45 @@ define internal range(i32 0, 2) i32 @test_cfq() #0 { %.not66 = icmp eq i32 %37, 0 br i1 %.not66, label %.loopexit, label %34 -.preheader76: ; preds = %34, %44 - %indvars.iv = phi i64 [ %indvars.iv.next, %44 ], [ 0, %34 ] - br label %38 - -38: ; preds = %.preheader76, %42 - %.15588 = phi i64 [ 0, %.preheader76 ], [ %43, %42 ] - %39 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv, i64 %.15588 - %40 = load ptr, ptr %39, align 8, !tbaa !15 - %.not65 = icmp eq ptr %40, null - br i1 %.not65, label %42, label %41 - -41: ; preds = %38 - tail call void @ossl_quic_cfq_mark_lost(ptr noundef %1, ptr noundef nonnull %40, i32 noundef -1) #3 - br label %42 - -42: ; preds = %38, %41 - %43 = add nuw nsw i64 %.15588, 1 - %exitcond97.not = icmp eq i64 %43, 10 - br i1 %exitcond97.not, label %44, label %38, !llvm.loop !18 - -44: ; preds = %42 +.preheader76: ; preds = %34, %45 + %indvars.iv = phi i64 [ %indvars.iv.next, %45 ], [ 0, %34 ] + %38 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv + br label %39 + +39: ; preds = %.preheader76, %43 + %.15588 = phi i64 [ 0, %.preheader76 ], [ %44, %43 ] + %40 = getelementptr inbounds nuw [10 x ptr], ptr %38, i64 0, i64 %.15588 + %41 = load ptr, ptr %40, align 8, !tbaa !15 + %.not65 = icmp eq ptr %41, null + br i1 %.not65, label %43, label %42 + +42: ; preds = %39 + tail call void @ossl_quic_cfq_mark_lost(ptr noundef %1, ptr noundef nonnull %41, i32 noundef -1) #3 + br label %43 + +43:; preds = %39, %42 + %44 = add nuw nsw i64 %.15588, 1 + %exitcond97.not = icmp eq i64 %44, 10 + br i1 %exitcond97.not, label %45, label %39, !llvm.loop !18 + +45: ; preds = %43 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond99.not = icmp eq i64 %indvars.iv.next, 3 br i1 %exitcond99.not, label %45, label %.preheader76, !llvm.loop !19 -45: ; preds = %44 +45: ; preds = %45 %46 = tail call fastcc i32 @check(ptr noundef %1) %.not62 = icmp eq i32 %46, 0 br i1 %.not62, label %.loopexit, label %.preheader74 .preheader74: ; preds = %45, %53 - %indvars.iv101 = phi i64 [ %indvars.iv.next102, %53 ], [ 0, %45 ] - br label %47 + %indvars.iv101 = phi i64 [ %indvars.iv.next102, %55 ], [ 0, %46 ] + %48 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv101 + br label %49 47: ; preds = %.preheader74, %51 - %.25690 = phi i64 [ 0, %.preheader74 ], [ %52, %51 ] - %48 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv101, i64 %.25690 + %.25690 = phi i64 [ 0, %.preheader74 ], [ %52, %53 ] + %48 = getelementptr inbounds nuw [10 x ptr], ptr %48, i64 0, i64 %.25690 %49 = load ptr, ptr %48, align 8, !tbaa !15 %.not64 = icmp eq ptr %49, null br i1 %.not64, label %51, label %50 @@ -188,14 +190,14 @@ define internal range(i32 0, 2) i32 @test_cfq() #0 { br i1 %exitcond105.not, label %.loopexit, label %.preheader, !llvm.loop !22 .preheader: ; preds = %53, %54 - %.492 = phi i32 [ %55, %54 ], [ 0, %53 ] + %.492 = phi i32 [ %55, %56 ], [ 0, %55 ] %56 = tail call ptr @ossl_quic_cfq_get_priority_head(ptr noundef %1, i32 noundef %.492) #3 %57 = tail call i32 @test_ptr_null(ptr noundef nonnull @.str.1, i32 noundef 164, ptr noundef nonnull @.str.14, ptr noundef %56) #3 %.not63 = icmp eq i32 %57, 0 br i1 %.not63, label %.loopexit, label %54 .loopexit: ; preds = %.preheader81, %14, %17, %20, %23, %26, %.preheader78, %54, %.preheader, %45, %29, %0 - %.057 = phi i32 [ 0, %45 ], [ 0, %29 ], [ 0, %0 ], [ 1, %54 ], [ 0, %.preheader ], [ 0, %.preheader78 ], [ 0, %26 ], [ 0, %23 ], [ 0, %20 ], [ 0, %17 ], [ 0, %14 ], [ 0, %.preheader81 ] + %.057 = phi i32 [ 0, %46 ], [ 0, %29 ], [ 0, %0 ], [ 1, %56 ], [ 0, %.preheader ], [ 0, %.preheader78 ], [ 0, %26 ], [ 0, %23 ], [ 0, %20 ], [ 0, %17 ], [ 0, %14 ], [ 0, %.preheader81 ] tail call void @ossl_quic_cfq_free(ptr noundef %1) #3 ret i32 %.057 } @@ -244,22 +246,26 @@ define internal fastcc range(i32 0, 2) i32 @check(ptr noundef %0) unnamed_addr # %indvars.iv = phi i64 [ 0, %1 ], [ %indvars.iv.next, %2 ] %4 = trunc nuw nsw i64 %indvars.iv to i32 %5 = tail call ptr @ossl_quic_cfq_get_priority_head(ptr noundef %0, i32 noundef %4) #3 - %6 = getelementptr inbounds nuw [3 x [11 x i32]], ptr @expect, i64 0, i64 %indvars.iv, i64 0 + %6 = getelementptr inbounds nuw [3 x [11 x i32]], ptr @expect, i64 0, i64 %indvars.iv %7 = load i32, ptr %6, align 4, !tbaa !6 %8 = icmp eq i32 %7, -1 br i1 %8, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %24, %3 - %.021.lcssa = phi ptr [ %5, %3 ], [ %26, %24 ] - %9 = tail call i32 @test_ptr_null(ptr noundef nonnull @.str.1, i32 noundef 78, ptr noundef nonnull @.str.15, ptr noundef %.021.lcssa) #3 - %.not26 = icmp eq i32 %9, 0 +._crit_edge: ; preds = %3 + %9 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv + br label %.lr.ph + +._crit_edge: ; preds = %26, %3 + %.021.lcssa = phi ptr [ %5, %3 ], [ %28, %26 ] + %10 = tail call i32 @test_ptr_null(ptr noundef nonnull @.str.1, i32 noundef 78, ptr noundef nonnull @.str.15, ptr noundef %.021.lcssa) #3 + %.not26 = icmp eq i32 %10, 0 br i1 %.not26, label %.loopexit, label %2 -.lr.ph: ; preds = %3, %24 - %10 = phi i32 [ %28, %24 ], [ %7, %3 ] - %.02030 = phi i64 [ %25, %24 ], [ 0, %3 ] - %.02129 = phi ptr [ %26, %24 ], [ %5, %3 ] - %11 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv, i64 %.02030 +.lr.ph: ; preds = %.lr.ph, %24 + %10 = phi i32 [ %7, %.lr.ph ], [ %30, %26 ] + %.02030 = phi i64 [ 0, %.lr.ph ], [ %27, %26 ] + %.02129 = phi ptr [ %5, %.lr.ph ], [ %28, %26 ] + %11 = getelementptr inbounds nuw [10 x ptr], ptr %9, i64 0, i64 %.02030 store ptr %.02129, ptr %11, align 8, !tbaa !15 %12 = tail call i32 @test_ptr(ptr noundef nonnull @.str.1, i32 noundef 86, ptr noundef nonnull @.str.15, ptr noundef %.02129) #3 %.not = icmp eq i32 %12, 0 @@ -288,13 +294,13 @@ define internal fastcc range(i32 0, 2) i32 @check(ptr noundef %0) unnamed_addr # 24: ; preds = %21 %25 = add i64 %.02030, 1 %26 = tail call ptr @ossl_quic_cfq_item_get_priority_next(ptr noundef %.02129, i32 noundef %4) #3 - %27 = getelementptr inbounds nuw [3 x [11 x i32]], ptr @expect, i64 0, i64 %indvars.iv, i64 %25 + %27 = getelementptr inbounds nuw [11 x i32], ptr %6, i64 0, i64 %25 %28 = load i32, ptr %27, align 4, !tbaa !6 %29 = icmp eq i32 %28, -1 br i1 %29, label %._crit_edge, label %.lr.ph .loopexit: ; preds = %2, %._crit_edge, %.lr.ph, %13, %18, %21 - %.022 = phi i32 [ 0, %21 ], [ 0, %18 ], [ 0, %13 ], [ 0, %.lr.ph ], [ 1, %2 ], [ 0, %._crit_edge ] + %.022 = phi i32 [ 0, %23 ], [ 0, %20 ], [ 0, %15 ], [ 0, %11 ], [ 1, %2 ], [ 0, %._crit_edge ] ret i32 %.022 } diff --git a/bench/openusd/optimized/av1_dx_iface.ll b/bench/openusd/optimized/av1_dx_iface.ll index 14aabb04d3b..356daede87b 100644 --- a/bench/openusd/optimized/av1_dx_iface.ll +++ b/bench/openusd/optimized/av1_dx_iface.ll @@ -3034,21 +3034,19 @@ define internal range(i32 0, 9) i32 @ctrl_get_tile_data(ptr noundef readonly cap %26 = getelementptr inbounds nuw i8, ptr %24, i64 431872 %27 = load i32, ptr %26, align 32 %28 = sext i32 %27 to i64 - %29 = getelementptr inbounds nuw i8, ptr %24, i64 431876 - %30 = load i32, ptr %29, align 4 - %31 = sext i32 %30 to i64 - %.idx = shl nsw i64 %28, 10 - %.idx18 = shl nsw i64 %31, 4 - %32 = getelementptr i8, ptr %25, i64 %.idx - %33 = getelementptr i8, ptr %32, i64 %.idx18 - %34 = getelementptr i8, ptr %33, i64 8 - %35 = load i64, ptr %34, align 8 - store i64 %35, ptr %17, align 8 - %36 = load i32, ptr %26, align 32 - %37 = sext i32 %36 to i64 - %38 = load i32, ptr %29, align 4 + %29 = getelementptr inbounds [64 x [64 x %struct.TileBufferDec]], ptr %25, i64 0, i64 %28 + %30 = getelementptr inbounds nuw i8, ptr %24, i64 431876 + %31 = load i32, ptr %30, align 4 + %32 = sext i32 %31 to i64 + %33 = getelementptr inbounds [64 x %struct.TileBufferDec], ptr %29, i64 0, i64 %32, i32 1 + %34 = load i64, ptr %33, align 8 + store i64 %34, ptr %17, align 8 + %35 = load i32, ptr %26, align 32 + %36 = sext i32 %35 to i64 + %37 = getelementptr inbounds [64 x [64 x %struct.TileBufferDec]], ptr %25, i64 0, i64 %36 + %36 = load i32, ptr %30, align 4 %39 = sext i32 %38 to i64 - %40 = getelementptr inbounds [64 x [64 x %struct.TileBufferDec]], ptr %25, i64 0, i64 %37, i64 %39 + %40 = getelementptr inbounds [64 x %struct.TileBufferDec], ptr %37, i64 0, i64 %39 %41 = load ptr, ptr %40, align 16 %42 = getelementptr inbounds nuw i8, ptr %17, i64 8 store ptr %41, ptr %42, align 8 diff --git a/bench/openusd/optimized/blockd.ll b/bench/openusd/optimized/blockd.ll index 691f9e7c29c..bde46f861fb 100644 --- a/bench/openusd/optimized/blockd.ll +++ b/bench/openusd/optimized/blockd.ll @@ -164,39 +164,41 @@ define hidden void @av1_reset_entropy_context(ptr noundef readonly captures(none .lr.ph: ; preds = %3 %10 = getelementptr inbounds nuw i8, ptr %0, i64 16 %11 = zext i8 %1 to i64 - %12 = add nuw nsw i32 %9, 1 - %wide.trip.count = zext nneg i32 %12 to i64 - br label %13 - -13: ; preds = %.lr.ph, %13 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %13 ] - %14 = getelementptr inbounds nuw [3 x %struct.macroblockd_plane], ptr %10, i64 0, i64 %indvars.iv - %15 = getelementptr inbounds nuw i8, ptr %14, i64 4 - %16 = load i32, ptr %15, align 4 - %17 = getelementptr inbounds nuw i8, ptr %14, i64 8 - %18 = load i32, ptr %17, align 8 - %19 = sext i32 %16 to i64 - %20 = sext i32 %18 to i64 - %21 = getelementptr inbounds [22 x [2 x [2 x i8]]], ptr @ss_size_lookup, i64 0, i64 %11, i64 %19, i64 %20 - %22 = load i8, ptr %21, align 1 - %23 = zext i8 %22 to i64 - %24 = getelementptr inbounds nuw [22 x i8], ptr @mi_size_wide, i64 0, i64 %23 - %25 = load i8, ptr %24, align 1 - %26 = getelementptr inbounds nuw [22 x i8], ptr @mi_size_high, i64 0, i64 %23 + %12 = getelementptr inbounds nuw [22 x [2 x [2 x i8]]], ptr @ss_size_lookup, i64 0, i64 %11 + %13 = add nuw nsw i32 %9, 1 + %wide.trip.count = zext nneg i32 %13 to i64 + br label %14 + +14: ; preds = %.lr.ph, %14 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %14 ] + %15 = getelementptr inbounds nuw [3 x %struct.macroblockd_plane], ptr %10, i64 0, i64 %indvars.iv + %16 = getelementptr inbounds nuw i8, ptr %15, i64 4 + %17 = load i32, ptr %16, align 4 + %18 = getelementptr inbounds nuw i8, ptr %15, i64 8 + %19 = load i32, ptr %18, align 8 + %20 = sext i32 %17 to i64 + %21 = getelementptr inbounds [2 x [2 x i8]], ptr %12, i64 0, i64 %20 + %22 = sext i32 %19 to i64 + %23 = getelementptr inbounds [2 x i8], ptr %21, i64 0, i64 %22 + %24 = load i8, ptr %23, align 1 + %25 = zext i8 %24 to i64 + %26 = getelementptr inbounds nuw [22 x i8], ptr @mi_size_wide, i64 0, i64 %25 %27 = load i8, ptr %26, align 1 - %28 = getelementptr inbounds nuw i8, ptr %14, i64 112 - %29 = load ptr, ptr %28, align 8 - %30 = zext i8 %25 to i64 - tail call void @llvm.memset.p0.i64(ptr align 1 %29, i8 0, i64 %30, i1 false) - %31 = getelementptr inbounds nuw i8, ptr %14, i64 120 - %32 = load ptr, ptr %31, align 8 - %33 = zext i8 %27 to i64 - tail call void @llvm.memset.p0.i64(ptr align 1 %32, i8 0, i64 %33, i1 false) + %28 = getelementptr inbounds nuw [22 x i8], ptr @mi_size_high, i64 0, i64 %25 + %29 = load i8, ptr %28, align 1 + %30 = getelementptr inbounds nuw i8, ptr %15, i64 112 + %31 = load ptr, ptr %30, align 8 + %32 = zext i8 %27 to i64 + tail call void @llvm.memset.p0.i64(ptr align 1 %31, i8 0, i64 %32, i1 false) + %33 = getelementptr inbounds nuw i8, ptr %15, i64 120 + %34 = load ptr, ptr %33, align 8 + %35 = zext i8 %29 to i64 + tail call void @llvm.memset.p0.i64(ptr align 1 %34, i8 0, i64 %35, i1 false) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge, label %13, !llvm.loop !4 + br i1 %exitcond.not, label %._crit_edge, label %14, !llvm.loop !4 -._crit_edge: ; preds = %13, %3 +._crit_edge: ; preds = %14, %3 ret void } diff --git a/bench/openusd/optimized/matrix2d.ll b/bench/openusd/optimized/matrix2d.ll index 87035457260..6216bf522e1 100644 --- a/bench/openusd/optimized/matrix2d.ll +++ b/bench/openusd/optimized/matrix2d.ll @@ -111,10 +111,12 @@ define void @_ZN32pxrInternal_v0_24__pxrReserved__10GfMatrix2dC2ERKSt6vectorIS1_ %8 = ptrtoint ptr %6 to i64 %9 = sub i64 %7, %8 %10 = sdiv exact i64 %9, 24 + %.01618.sroa.gep20 = getelementptr inbounds nuw i8, ptr %3, i64 16 br label %11 11: ; preds = %2, %.critedge2 %12 = phi i1 [ true, %2 ], [ false, %.critedge2 ] + %.01618.sroa.phi = phi ptr [ %3, %2 ], [ %.01618.sroa.gep20, %.critedge2 ] %.01618 = phi i64 [ 0, %2 ], [ 1, %.critedge2 ] %exitcond19.not = icmp eq i64 %.01618, %10 br i1 %exitcond19.not, label %.critedge, label %.preheader @@ -139,7 +141,7 @@ define void @_ZN32pxrInternal_v0_24__pxrReserved__10GfMatrix2dC2ERKSt6vectorIS1_ 23: ; preds = %21 %24 = getelementptr inbounds nuw double, ptr %16, i64 %.017 %25 = load double, ptr %24, align 8 - %26 = getelementptr inbounds nuw [2 x [2 x double]], ptr %3, i64 0, i64 %.01618, i64 %.017 + %26 = getelementptr inbounds nuw [2 x double], ptr %.01618.sroa.phi, i64 0, i64 %.017 store double %25, ptr %26, align 8 br i1 %22, label %21, label %.critedge2, !llvm.loop !4 @@ -178,10 +180,12 @@ define void @_ZN32pxrInternal_v0_24__pxrReserved__10GfMatrix2dC2ERKSt6vectorIS1_ %8 = ptrtoint ptr %6 to i64 %9 = sub i64 %7, %8 %10 = sdiv exact i64 %9, 24 + %.01618.sroa.gep20 = getelementptr inbounds nuw i8, ptr %3, i64 16 br label %11 11: ; preds = %2, %.critedge2 %12 = phi i1 [ true, %2 ], [ false, %.critedge2 ] + %.01618.sroa.phi = phi ptr [ %3, %2 ], [ %.01618.sroa.gep20, %.critedge2 ] %.01618 = phi i64 [ 0, %2 ], [ 1, %.critedge2 ] %exitcond19.not = icmp eq i64 %.01618, %10 br i1 %exitcond19.not, label %.critedge, label %.preheader @@ -207,7 +211,7 @@ define void @_ZN32pxrInternal_v0_24__pxrReserved__10GfMatrix2dC2ERKSt6vectorIS1_ %24 = getelementptr inbounds nuw float, ptr %16, i64 %.017 %25 = load float, ptr %24, align 4 %26 = fpext float %25 to double - %27 = getelementptr inbounds nuw [2 x [2 x double]], ptr %3, i64 0, i64 %.01618, i64 %.017 + %27 = getelementptr inbounds nuw [2 x double], ptr %.01618.sroa.phi, i64 0, i64 %.017 store double %26, ptr %27, align 8 br i1 %22, label %21, label %.critedge2, !llvm.loop !7 diff --git a/bench/openusd/optimized/seg_common.ll b/bench/openusd/optimized/seg_common.ll index dcae279b1c2..1ae02cc71ab 100644 --- a/bench/openusd/optimized/seg_common.ll +++ b/bench/openusd/optimized/seg_common.ll @@ -98,9 +98,10 @@ define hidden void @av1_set_segdata(ptr noundef writeonly captures(none) %0, i32 %5 = trunc i32 %3 to i16 %6 = getelementptr inbounds nuw i8, ptr %0, i64 4 %7 = sext i32 %1 to i64 - %8 = zext i8 %2 to i64 - %9 = getelementptr inbounds [8 x [8 x i16]], ptr %6, i64 0, i64 %7, i64 %8 - store i16 %5, ptr %9, align 2 + %8 = getelementptr inbounds [8 x [8 x i16]], ptr %6, i64 0, i64 %7 + %9 = zext i8 %2 to i64 + %10 = getelementptr inbounds nuw [8 x i16], ptr %8, i64 0, i64 %9 + store i16 %5, ptr %10, align 2 ret void } diff --git a/bench/ozz-animation/optimized/skinning_job.ll b/bench/ozz-animation/optimized/skinning_job.ll index f077bc25ec3..84940928329 100644 --- a/bench/ozz-animation/optimized/skinning_job.ll +++ b/bench/ozz-animation/optimized/skinning_job.ll @@ -7856,7 +7856,7 @@ define dso_local noundef zeroext i1 @_ZNK3ozz8geometry11SkinningJob3RunEv(ptr no %3 = load i32, ptr %0, align 8 %4 = icmp ne i32 %3, 0 %or.cond.not = select i1 %2, i1 %4, i1 false - br i1 %or.cond.not, label %5, label %25 + br i1 %or.cond.not, label %5, label %27 5: ; preds = %1 %6 = getelementptr inbounds nuw i8, ptr %0, i64 32 @@ -7877,12 +7877,14 @@ define dso_local noundef zeroext i1 @_ZNK3ozz8geometry11SkinningJob3RunEv(ptr no %20 = icmp ne i64 %19, 0 %21 = zext i1 %20 to i64 %22 = add nuw nsw i64 %21, %17 - %23 = getelementptr inbounds nuw [2 x [5 x [3 x ptr]]], ptr @_ZN3ozz8geometryL12kSkinningFctE, i64 0, i64 %9, i64 %13, i64 %22 - %24 = load ptr, ptr %23, align 8, !tbaa !578 - tail call void %24(ptr noundef nonnull align 8 dereferenceable(232) %0) - br label %25 - -25: ; preds = %1, %5 + %23 = getelementptr inbounds nuw [2 x [5 x [3 x ptr]]], ptr @_ZN3ozz8geometryL12kSkinningFctE, i64 0, i64 %9 + %24 = getelementptr inbounds nuw [5 x [3 x ptr]], ptr %23, i64 0, i64 %13 + %25 = getelementptr inbounds nuw [3 x ptr], ptr %24, i64 0, i64 %22 + %26 = load ptr, ptr %25, align 8, !tbaa !578 + tail call void %26(ptr noundef nonnull align 8 dereferenceable(232) %0) + br label %27 + +27: ; preds = %1, %5 ret i1 %2 } diff --git a/bench/pbrt-v4/optimized/color.ll b/bench/pbrt-v4/optimized/color.ll index 38b628a9d07..637b9b8aae2 100644 --- a/bench/pbrt-v4/optimized/color.ll +++ b/bench/pbrt-v4/optimized/color.ll @@ -311,77 +311,92 @@ _ZN4pbrt3RGBixEi.exit19: ; preds = %15, %17, %19 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %4, i8 0, i64 12, i1 false), !tbaa !26 %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 %54 = load ptr, ptr %53, align 8, !tbaa !30 - %55 = sext i32 %.sroa.speculated to i64 - %56 = sext i32 %.sroa.speculated67 to i64 - %57 = add nsw i32 %.sroa.speculated67, 1 - %58 = sext i32 %57 to i64 - %59 = fsub float 1.000000e+00, %41 - %60 = add nsw i32 %.sroa.speculated, 1 - %61 = sext i32 %60 to i64 - %62 = fsub float 1.000000e+00, %43 - %63 = add nuw nsw i64 %.0.i.i, 1 - %64 = fsub float 1.000000e+00, %52 - br label %71 - -65: ; preds = %71 - %66 = load float, ptr %4, align 4, !tbaa !26 - %67 = getelementptr inbounds nuw i8, ptr %4, i64 4 - %68 = load float, ptr %67, align 4, !tbaa !26 - %69 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %70 = load float, ptr %69, align 4, !tbaa !26 - %.sroa.0121.0.vec.insert124 = insertelement <2 x float> poison, float %66, i64 0 - %.sroa.0121.4.vec.insert126 = insertelement <2 x float> %.sroa.0121.0.vec.insert124, float %68, i64 1 + %55 = getelementptr inbounds nuw [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20 + %56 = getelementptr inbounds nuw [64 x [64 x [64 x [3 x float]]]], ptr %55, i64 0, i64 %.0.i.i + %57 = sext i32 %.sroa.speculated to i64 + %58 = getelementptr inbounds [64 x [64 x [3 x float]]], ptr %56, i64 0, i64 %57 + %59 = sext i32 %.sroa.speculated67 to i64 + %60 = getelementptr inbounds [64 x [3 x float]], ptr %58, i64 0, i64 %59 + %61 = add nsw i32 %.sroa.speculated67, 1 + %62 = sext i32 %61 to i64 + %63 = getelementptr inbounds [64 x [3 x float]], ptr %58, i64 0, i64 %62 + %64 = fsub float 1.000000e+00, %41 + %65 = add nsw i32 %.sroa.speculated, 1 + %66 = sext i32 %65 to i64 + %67 = getelementptr inbounds [64 x [64 x [3 x float]]], ptr %56, i64 0, i64 %66 + %68 = getelementptr inbounds [64 x [3 x float]], ptr %67, i64 0, i64 %59 + %67 = getelementptr inbounds [64 x [3 x float]], ptr %67, i64 0, i64 %62 + %70 = fsub float 1.000000e+00, %43 + %71 = add nuw nsw i64 %.0.i.i, 1 + %72 = getelementptr inbounds nuw [64 x [64 x [64 x [3 x float]]]], ptr %55, i64 0, i64 %71 + %73 = getelementptr inbounds [64 x [64 x [3 x float]]], ptr %72, i64 0, i64 %57 + %74 = getelementptr inbounds [64 x [3 x float]], ptr %73, i64 0, i64 %59 + %75 = getelementptr inbounds [64 x [3 x float]], ptr %73, i64 0, i64 %62 + %76 = getelementptr inbounds [64 x [64 x [3 x float]]], ptr %72, i64 0, i64 %66 + %77 = getelementptr inbounds [64 x [3 x float]], ptr %76, i64 0, i64 %59 + %78 = getelementptr inbounds [64 x [3 x float]], ptr %76, i64 0, i64 %62 + %79 = fsub float 1.000000e+00, %52 + br label %86 + +80: ; preds = %86 + %81 = load float, ptr %4, align 4, !tbaa !26 + %82 = getelementptr inbounds nuw i8, ptr %4, i64 4 + %83 = load float, ptr %82, align 4, !tbaa !26 + %84 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %85 = load float, ptr %84, align 4, !tbaa !26 + %.sroa.0121.0.vec.insert124 = insertelement <2 x float> poison, float %81, i64 0 + %.sroa.0121.4.vec.insert126 = insertelement <2 x float> %.sroa.0121.0.vec.insert124, float %83, i64 1 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %4) #30 br label %110 71: ; preds = %"_ZN4pbrt12FindIntervalIZNKS_18RGBToSpectrumTableclENS_3RGBEE3$_0EEmmRKT_.exit", %71 - %indvars.iv = phi i64 [ 0, %"_ZN4pbrt12FindIntervalIZNKS_18RGBToSpectrumTableclENS_3RGBEE3$_0EEmmRKT_.exit" ], [ %indvars.iv.next, %71 ] - %72 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %.0.i.i, i64 %55, i64 %56, i64 %indvars.iv + %indvars.iv = phi i64 [ 0, %"_ZN4pbrt12FindIntervalIZNKS_18RGBToSpectrumTableclENS_3RGBEE3$_0EEmmRKT_.exit" ], [ %indvars.iv.next, %86 ] + %72 = getelementptr inbounds nuw [3 x float], ptr %60, i64 0, i64 %indvars.iv %73 = load float, ptr %72, align 4, !tbaa !26 - %74 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %.0.i.i, i64 %55, i64 %58, i64 %indvars.iv - %75 = load float, ptr %74, align 4, !tbaa !26 - %76 = fmul float %59, %73 - %77 = fmul float %41, %75 - %78 = fadd float %76, %77 - %79 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %.0.i.i, i64 %61, i64 %56, i64 %indvars.iv - %80 = load float, ptr %79, align 4, !tbaa !26 - %81 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %.0.i.i, i64 %61, i64 %58, i64 %indvars.iv - %82 = load float, ptr %81, align 4, !tbaa !26 - %83 = fmul float %59, %80 - %84 = fmul float %41, %82 - %85 = fadd float %83, %84 - %86 = fmul float %62, %78 - %87 = fmul float %43, %85 - %88 = fadd float %86, %87 - %89 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %63, i64 %55, i64 %56, i64 %indvars.iv + %74 = getelementptr inbounds nuw [3 x float], ptr %63, i64 0, i64 %indvars.iv %90 = load float, ptr %89, align 4, !tbaa !26 - %91 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %63, i64 %55, i64 %58, i64 %indvars.iv - %92 = load float, ptr %91, align 4, !tbaa !26 - %93 = fmul float %59, %90 - %94 = fmul float %41, %92 - %95 = fadd float %93, %94 - %96 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %63, i64 %61, i64 %56, i64 %indvars.iv + %91 = fmul float %64, %88 + %92 = fmul float %41, %90 + %93 = fadd float %91, %92 + %94 = getelementptr inbounds nuw [3 x float], ptr %68, i64 0, i64 %indvars.iv + %95 = load float, ptr %94, align 4, !tbaa !26 + %96 = getelementptr inbounds nuw [3 x float], ptr %69, i64 0, i64 %indvars.iv %97 = load float, ptr %96, align 4, !tbaa !26 - %98 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %63, i64 %61, i64 %58, i64 %indvars.iv - %99 = load float, ptr %98, align 4, !tbaa !26 - %100 = fmul float %59, %97 - %101 = fmul float %41, %99 - %102 = fadd float %100, %101 - %103 = fmul float %62, %95 - %104 = fmul float %43, %102 - %105 = fadd float %103, %104 - %106 = fmul float %64, %88 - %107 = fmul float %52, %105 - %108 = fadd float %106, %107 - %109 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv - store float %108, ptr %109, align 4, !tbaa !26 + %98 = fmul float %64, %95 + %99 = fmul float %41, %97 + %100 = fadd float %98, %99 + %101 = fmul float %70, %93 + %102 = fmul float %43, %100 + %103 = fadd float %101, %102 + %104 = getelementptr inbounds nuw [3 x float], ptr %74, i64 0, i64 %indvars.iv + %105 = load float, ptr %104, align 4, !tbaa !26 + %106 = getelementptr inbounds nuw [3 x float], ptr %75, i64 0, i64 %indvars.iv + %107 = load float, ptr %106, align 4, !tbaa !26 + %108 = fmul float %64, %105 + %109 = fmul float %41, %107 + %110 = fadd float %108, %109 + %111 = getelementptr inbounds nuw [3 x float], ptr %77, i64 0, i64 %indvars.iv + %112 = load float, ptr %111, align 4, !tbaa !26 + %113 = getelementptr inbounds nuw [3 x float], ptr %78, i64 0, i64 %indvars.iv + %114 = load float, ptr %113, align 4, !tbaa !26 + %115 = fmul float %64, %112 + %116 = fmul float %41, %114 + %117 = fadd float %115, %116 + %118 = fmul float %70, %110 + %119 = fmul float %43, %117 + %120 = fadd float %118, %119 + %121 = fmul float %79, %103 + %122 = fmul float %52, %120 + %123 = fadd float %121, %122 + %124 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv + store float %123, ptr %124, align 4, !tbaa !26 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond.not, label %65, label %71, !llvm.loop !31 + br i1 %exitcond.not, label %80, label %71, !llvm.loop !31 -110: ; preds = %65, %7 - %.sroa.0121.0 = phi <2 x float> [ zeroinitializer, %7 ], [ %.sroa.0121.4.vec.insert126, %65 ] - %.sroa.5.0 = phi float [ %12, %7 ], [ %70, %65 ] +110: ; preds = %80, %7 + %.sroa.0121.0 = phi <2 x float> [ zeroinitializer, %7 ], [ %.sroa.0121.4.vec.insert126, %80 ] + %.sroa.5.0 = phi float [ %12, %7 ], [ %85, %80 ] %.fca.0.insert = insertvalue { <2 x float>, float } poison, <2 x float> %.sroa.0121.0, 0 %.fca.1.insert = insertvalue { <2 x float>, float } %.fca.0.insert, float %.sroa.5.0, 1 ret { <2 x float>, float } %.fca.1.insert diff --git a/bench/pbrt-v4/optimized/vecmath.ll b/bench/pbrt-v4/optimized/vecmath.ll index b96222eae6a..42310160a28 100644 --- a/bench/pbrt-v4/optimized/vecmath.ll +++ b/bench/pbrt-v4/optimized/vecmath.ll @@ -784,8 +784,9 @@ define linkonce_odr dso_local void @_ZN4pbrt6RotateEffNS_7Vector3IfEE(ptr dead_o br label %.preheader.i .preheader.i: ; preds = %8, %5 - %indvars.iv12.i = phi i64 [ 0, %5 ], [ %indvars.iv.next13.i, %8 ] - br label %9 + %indvars.iv12.i = phi i64 [ 0, %5 ], [ %indvars.iv.next13.i, %9 ] + %8 = getelementptr inbounds nuw [4 x [4 x float]], ptr %6, i64 0, i64 %indvars.iv12.i + br label %10 8: ; preds = %9 %indvars.iv.next13.i = add nuw nsw i64 %indvars.iv12.i, 1 @@ -793,10 +794,10 @@ define linkonce_odr dso_local void @_ZN4pbrt6RotateEffNS_7Vector3IfEE(ptr dead_o br i1 %exitcond15.not.i, label %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit, label %.preheader.i, !llvm.loop !58 9: ; preds = %9, %.preheader.i - %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %9 ] + %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %10 ] %10 = icmp eq i64 %indvars.iv12.i, %indvars.iv.i %11 = uitofp i1 %10 to float - %12 = getelementptr inbounds nuw [4 x [4 x float]], ptr %6, i64 0, i64 %indvars.iv12.i, i64 %indvars.iv.i + %12 = getelementptr inbounds nuw [4 x float], ptr %8, i64 0, i64 %indvars.iv.i store float %11, ptr %12, align 4, !tbaa !4 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 4 @@ -871,8 +872,9 @@ _ZN4pbrt12SquareMatrixILi4EEC2Ev.exit: ; preds = %8 br label %.preheader.i.i .preheader.i.i: ; preds = %61, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit - %indvars.iv12.i.i = phi i64 [ 0, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit ], [ %indvars.iv.next13.i.i, %61 ] - br label %62 + %indvars.iv12.i.i = phi i64 [ 0, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit ], [ %indvars.iv.next13.i.i, %63 ] + %62 = getelementptr inbounds nuw [4 x [4 x float]], ptr %7, i64 0, i64 %indvars.iv12.i.i + br label %64 61: ; preds = %62 %indvars.iv.next13.i.i = add nuw nsw i64 %indvars.iv12.i.i, 1 @@ -880,17 +882,17 @@ _ZN4pbrt12SquareMatrixILi4EEC2Ev.exit: ; preds = %8 br i1 %exitcond15.not.i.i, label %.preheader.i91, label %.preheader.i.i, !llvm.loop !58 62: ; preds = %62, %.preheader.i.i - %indvars.iv.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next.i.i, %62 ] + %indvars.iv.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next.i.i, %64 ] %63 = icmp eq i64 %indvars.iv12.i.i, %indvars.iv.i.i %64 = uitofp i1 %63 to float - %65 = getelementptr inbounds nuw [4 x [4 x float]], ptr %7, i64 0, i64 %indvars.iv12.i.i, i64 %indvars.iv.i.i + %65 = getelementptr inbounds nuw [4 x float], ptr %62, i64 0, i64 %indvars.iv.i.i store float %64, ptr %65, align 4, !tbaa !4, !alias.scope !61 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 4 br i1 %exitcond.not.i.i, label %61, label %62, !llvm.loop !60 .preheader.i91: ; preds = %61, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i - %indvars.iv16.i = phi i64 [ %indvars.iv.next17.i, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i ], [ 0, %61 ] + %indvars.iv16.i = phi i64 [ %indvars.iv.next17.i, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i ], [ 0, %63 ] %invariant.gep.i = getelementptr inbounds nuw float, ptr %6, i64 %indvars.iv16.i %66 = getelementptr inbounds nuw [4 x [4 x float]], ptr %7, i64 0, i64 %indvars.iv16.i br label %67 @@ -901,7 +903,7 @@ _ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i: ; preds = %67 br i1 %exitcond19.not.i, label %_ZN4pbrt9TransposeILi4EEENS_12SquareMatrixIXT_EEERKS2_.exit, label %.preheader.i91, !llvm.loop !64 67: ; preds = %67, %.preheader.i91 - %indvars.iv.i92 = phi i64 [ 0, %.preheader.i91 ], [ %indvars.iv.next.i93, %67 ] + %indvars.iv.i92 = phi i64 [ 0, %.preheader.i91 ], [ %indvars.iv.next.i93, %69 ] %gep.i = getelementptr inbounds nuw [4 x [4 x float]], ptr %invariant.gep.i, i64 0, i64 %indvars.iv.i92 %68 = load float, ptr %gep.i, align 4, !tbaa !4, !noalias !61 %69 = getelementptr inbounds nuw float, ptr %66, i64 %indvars.iv.i92 diff --git a/bench/php/optimized/in_body.ll b/bench/php/optimized/in_body.ll index 67e81cfbfa4..4982e3197b5 100644 --- a/bench/php/optimized/in_body.ll +++ b/bench/php/optimized/in_body.ll @@ -1134,11 +1134,12 @@ lxb_html_tree_node_is.exit.thread: ; preds = %10 br i1 %or.cond.i, label %36, label %lxb_html_tag_is_category.exit.backedge 36: ; preds = %lxb_html_tree_node_is.exit.thread - %37 = getelementptr inbounds nuw [196 x [8 x i32]], ptr @lxb_html_tag_res_cats, i64 0, i64 %15, i64 %18 - %38 = load i32, ptr %37, align 4, !tbaa !45 - %39 = and i32 %38, 2 - %.not27 = icmp eq i32 %39, 0 - br i1 %.not27, label %lxb_html_tag_is_category.exit.backedge, label %40 + %37 = getelementptr inbounds nuw [196 x [8 x i32]], ptr @lxb_html_tag_res_cats, i64 0, i64 %15 + %38 = getelementptr inbounds nuw [8 x i32], ptr %37, i64 0, i64 %18 + %39 = load i32, ptr %38, align 4, !tbaa !45 + %40 = and i32 %39, 2 + %.not27 = icmp eq i32 %40, 0 + br i1 %.not27, label %lxb_html_tag_is_category.exit.backedge, label %41 lxb_html_tag_is_category.exit.backedge: ; preds = %36, %lxb_html_tree_node_is.exit.thread %.not = icmp eq i64 %11, 0 @@ -1609,13 +1610,14 @@ lxb_html_tree_node_is.exit.thread: ; preds = %.lr.ph.preheader, % br i1 %or.cond.i, label %lxb_html_tag_is_category.exit, label %lxb_html_tag_is_category.exit.thread lxb_html_tag_is_category.exit: ; preds = %lxb_html_tree_node_is.exit.thread - %38 = getelementptr inbounds nuw [196 x [8 x i32]], ptr @lxb_html_tag_res_cats, i64 0, i64 %34, i64 %33 - %39 = load i32, ptr %38, align 4, !tbaa !45 - %40 = and i32 %39, 2 - %.not39 = icmp eq i32 %40, 0 - br i1 %.not39, label %lxb_html_tag_is_category.exit.thread, label %41 - -41: ; preds = %lxb_html_tag_is_category.exit + %38 = getelementptr inbounds nuw [196 x [8 x i32]], ptr @lxb_html_tag_res_cats, i64 0, i64 %34 + %39 = getelementptr inbounds nuw [8 x i32], ptr %38, i64 0, i64 %33 + %40 = load i32, ptr %39, align 4, !tbaa !45 + %41 = and i32 %40, 2 + %.not39 = icmp eq i32 %41, 0 + br i1 %.not39, label %lxb_html_tag_is_category.exit.thread, label %42 + +42: ; preds = %lxb_html_tag_is_category.exit %trunc = trunc nuw i64 %34 to i8 switch i8 %trunc, label %lxb_html_tree_node_is.exit35.thread [ i8 9, label %lxb_html_tree_node_is.exit33 @@ -1623,19 +1625,19 @@ lxb_html_tag_is_category.exit: ; preds = %lxb_html_tree_node_ i8 -111, label %lxb_html_tree_node_is.exit35 ] -lxb_html_tree_node_is.exit33: ; preds = %41 +lxb_html_tree_node_is.exit33: ; preds = %42 %42 = icmp ne i64 %33, 2 %.not.old.old = icmp eq i64 %35, 0 %or.cond44 = or i1 %42, %.not.old.old br i1 %or.cond44, label %lxb_html_tree_node_is.exit35.thread, label %.lr.ph.backedge -lxb_html_tree_node_is.exit34: ; preds = %41 +lxb_html_tree_node_is.exit34: ; preds = %42 %43 = icmp ne i64 %33, 2 %.not.old = icmp eq i64 %35, 0 %or.cond43 = or i1 %43, %.not.old br i1 %or.cond43, label %lxb_html_tree_node_is.exit35.thread, label %.lr.ph.backedge -lxb_html_tree_node_is.exit35: ; preds = %41 +lxb_html_tree_node_is.exit35: ; preds = %42 %44 = icmp ne i64 %33, 2 %.not = icmp eq i64 %35, 0 %or.cond = or i1 %44, %.not @@ -1658,7 +1660,7 @@ lxb_html_tag_is_category.exit.thread: ; preds = %lxb_html_tree_node_ %or.cond45 = select i1 %50, i1 %53, i1 false br i1 %or.cond45, label %.lr.ph._crit_edge, label %lxb_html_tree_node_is.exit.thread -lxb_html_tree_node_is.exit35.thread: ; preds = %lxb_html_tag_is_category.exit.thread, %lxb_html_tree_node_is.exit35, %lxb_html_tree_node_is.exit33, %lxb_html_tree_node_is.exit34, %41, %2, %32 +lxb_html_tree_node_is.exit35.thread: ; preds = %lxb_html_tag_is_category.exit.thread, %lxb_html_tree_node_is.exit35, %lxb_html_tree_node_is.exit33, %lxb_html_tree_node_is.exit34, %42, %2, %32 %54 = tail call ptr @lxb_html_tree_element_in_scope(ptr noundef %0, i64 noundef 145, i64 noundef 2, i32 noundef 32) #6 %.not30 = icmp eq ptr %54, null br i1 %.not30, label %56, label %55 @@ -1679,7 +1681,7 @@ lxb_html_tree_node_is.exit35.thread: ; preds = %lxb_html_tag_is_cat br label %62 62: ; preds = %56, %59 - %.029 = phi i1 [ %61, %59 ], [ true, %56 ] + %.029 = phi i1 [ %61, %59 ], [ true, %57 ] ret i1 %.029 } @@ -1780,13 +1782,14 @@ lxb_html_tree_node_is.exit40.thread: ; preds = %.lr.ph, %lxb_html_t br i1 %or.cond.i, label %lxb_html_tag_is_category.exit, label %lxb_html_tag_is_category.exit.thread lxb_html_tag_is_category.exit: ; preds = %lxb_html_tree_node_is.exit40.thread - %48 = getelementptr inbounds nuw [196 x [8 x i32]], ptr @lxb_html_tag_res_cats, i64 0, i64 %13, i64 %.pre - %49 = load i32, ptr %48, align 4, !tbaa !45 - %50 = and i32 %49, 2 - %.not52 = icmp eq i32 %50, 0 - br i1 %.not52, label %lxb_html_tag_is_category.exit.thread, label %51 - -51: ; preds = %lxb_html_tag_is_category.exit + %48 = getelementptr inbounds nuw [196 x [8 x i32]], ptr @lxb_html_tag_res_cats, i64 0, i64 %13 + %49 = getelementptr inbounds nuw [8 x i32], ptr %48, i64 0, i64 %.pre + %50 = load i32, ptr %49, align 4, !tbaa !45 + %51 = and i32 %50, 2 + %.not52 = icmp eq i32 %51, 0 + br i1 %.not52, label %lxb_html_tag_is_category.exit.thread, label %52 + +52: ; preds = %lxb_html_tag_is_category.exit %trunc = trunc nuw i64 %13 to i8 switch i8 %trunc, label %lxb_html_tree_node_is.exit47.thread [ i8 9, label %lxb_html_tree_node_is.exit45 diff --git a/bench/pocketpy/optimized/linalg.ll b/bench/pocketpy/optimized/linalg.ll index 91c3460f3e1..91f4a96a81a 100644 --- a/bench/pocketpy/optimized/linalg.ll +++ b/bench/pocketpy/optimized/linalg.ll @@ -14166,9 +14166,10 @@ _ZN4pkpy2VM10IndexErrorERKNS_3StrE.exit.i: ; preds = %.noexc28.i "_ZZN4pkpy6Mat3x39_registerEPNS_2VMEPNS_8PyObjectES4_ENK3$_9clES2_S4_S4_.exit": ; preds = %24, %_ZN4pkpy2VM10IndexErrorERKNS_3StrE.exit.i %38 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %39 = getelementptr inbounds [3 x [3 x float]], ptr %38, i64 0, i64 %27, i64 %31 + %39 = getelementptr inbounds [3 x [3 x float]], ptr %38, i64 0, i64 %27 + %40 = getelementptr inbounds [3 x float], ptr %39, i64 0, i64 %31 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) - %40 = load float, ptr %39, align 4 + %40 = load float, ptr %40, align 4 %41 = fpext float %40 to double store double %41, ptr %4, align 8 %42 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -14270,8 +14271,9 @@ _ZN4pkpy2VM10IndexErrorERKNS_3StrE.exit.i: ; preds = %.noexc29.i %38 = getelementptr inbounds nuw i8, ptr %1, i64 24 %39 = call noundef double @_ZN4pkpy18_py_cast__internalIdLb1EEET_PNS_2VMEPNS_8PyObjectE(ptr noundef nonnull %0, ptr noundef %3) %40 = fptrunc double %39 to float - %41 = getelementptr inbounds [3 x [3 x float]], ptr %38, i64 0, i64 %27, i64 %31 - store float %40, ptr %41, align 4 + %41 = getelementptr inbounds [3 x [3 x float]], ptr %38, i64 0, i64 %27 + %42 = getelementptr inbounds [3 x float], ptr %41, i64 0, i64 %31 + store float %40, ptr %42, align 4 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) ret void diff --git a/bench/postgres/optimized/dt_common.ll b/bench/postgres/optimized/dt_common.ll index b719ed12173..beae932b355 100644 --- a/bench/postgres/optimized/dt_common.ll +++ b/bench/postgres/optimized/dt_common.ll @@ -2978,7 +2978,7 @@ j2date.exit403: ; preds = %537, %540 619: ; preds = %.sink.split, %614, %609, %613, %616 %620 = load i32, ptr %3, align 4 %621 = icmp eq i32 %620, 2 - br i1 %621, label %622, label %655 + br i1 %621, label %622, label %656 622: ; preds = %619 %623 = and i32 %.0282.lcssa506, 14 @@ -3023,21 +3023,22 @@ j2date.exit403: ; preds = %537, %540 647: ; preds = %641, %643, %636 %648 = phi i64 [ 0, %636 ], [ 1, %641 ], [ %646, %643 ] - %649 = add nsw i32 %630, -1 - %650 = zext nneg i32 %649 to i64 - %651 = getelementptr inbounds nuw [2 x [13 x i32]], ptr @day_tab, i64 0, i64 %648, i64 %650 - %652 = load i32, ptr %651, align 4 - %653 = icmp sgt i32 %634, %652 - %654 = and i32 %.0282.lcssa506, 268435488 - %or.cond364.not = icmp eq i32 %654, 268435456 - %or.cond448 = select i1 %653, i1 true, i1 %or.cond364.not - br i1 %or.cond448, label %.thread417, label %655 - -655: ; preds = %647, %619 + %649 = getelementptr inbounds nuw [2 x [13 x i32]], ptr @day_tab, i64 0, i64 %648 + %650 = add nsw i32 %630, -1 + %651 = zext nneg i32 %650 to i64 + %652 = getelementptr inbounds nuw [13 x i32], ptr %649, i64 0, i64 %651 + %653 = load i32, ptr %652, align 4 + %654 = icmp sgt i32 %634, %653 + %655 = and i32 %.0282.lcssa506, 268435488 + %or.cond364.not = icmp eq i32 %655, 268435456 + %or.cond448 = select i1 %654, i1 true, i1 %or.cond364.not + br i1 %or.cond448, label %.thread417, label %656 + +656: ; preds = %647, %619 br label %.thread417 -.thread417: ; preds = %322, %319, %314, %306, %97, %105, %103, %100, %585, %35, %357, %583, %581, %167, %172, %175, %163, %159, %.thread442, %.thread430, %206, %DecodePosixTimezone.exit.thread, %.thread, %628, %632, %647, %610, %591, %655, %624 - %.2 = phi i32 [ -1, %206 ], [ %627, %624 ], [ 0, %655 ], [ -1, %591 ], [ -1, %610 ], [ -1, %647 ], [ -1, %632 ], [ -1, %628 ], [ -1, %.thread ], [ -1, %DecodePosixTimezone.exit.thread ], [ %.6.ph, %.thread430 ], [ -1, %.thread442 ], [ -1, %159 ], [ -1, %163 ], [ -1, %175 ], [ -1, %172 ], [ -1, %167 ], [ -1, %581 ], [ -1, %583 ], [ -1, %357 ], [ -1, %35 ], [ -1, %585 ], [ -1, %100 ], [ -1, %103 ], [ -1, %105 ], [ -1, %97 ], [ -1, %306 ], [ -1, %314 ], [ -1, %319 ], [ -1, %322 ] +.thread417: ; preds = %322, %319, %314, %306, %97, %105, %103, %100, %585, %35, %357, %583, %581, %167, %172, %175, %163, %159, %.thread442, %.thread430, %206, %DecodePosixTimezone.exit.thread, %.thread, %628, %632, %647, %610, %591, %656, %624 + %.2 = phi i32 [ -1, %206 ], [ %627, %624 ], [ 0, %656 ], [ -1, %591 ], [ -1, %610 ], [ -1, %647 ], [ -1, %632 ], [ -1, %628 ], [ -1, %.thread ], [ -1, %DecodePosixTimezone.exit.thread ], [ %.6.ph, %.thread430 ], [ -1, %.thread442 ], [ -1, %159 ], [ -1, %163 ], [ -1, %175 ], [ -1, %172 ], [ -1, %167 ], [ -1, %581 ], [ -1, %583 ], [ -1, %357 ], [ -1, %35 ], [ -1, %585 ], [ -1, %100 ], [ -1, %103 ], [ -1, %105 ], [ -1, %97 ], [ -1, %306 ], [ -1, %314 ], [ -1, %319 ], [ -1, %322 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #17 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #17 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #17 @@ -4612,17 +4613,18 @@ sub_0307: ; preds = %180, %.tail302.thre %363 = srem i32 %357, 400 %364 = icmp eq i32 %363, 0 %365 = zext i1 %364 to i64 - %366 = add i32 %355, -1 - %367 = sext i32 %366 to i64 - %368 = getelementptr inbounds [2 x [13 x i32]], ptr @day_tab, i64 0, i64 %365, i64 %367 - %369 = load i32, ptr %368, align 4 - %370 = icmp sgt i32 %356, %369 - br i1 %370, label %381, label %389 + %366 = getelementptr inbounds nuw [2 x [13 x i32]], ptr @day_tab, i64 0, i64 %365 + %367 = add i32 %355, -1 + %368 = sext i32 %367 to i64 + %369 = getelementptr inbounds [13 x i32], ptr %366, i64 0, i64 %368 + %370 = load i32, ptr %369, align 4 + %371 = icmp sgt i32 %356, %370 + br i1 %371, label %382, label %391 .thread392: ; preds = %360 %371 = add i32 %355, -1 %372 = sext i32 %371 to i64 - %373 = getelementptr inbounds [2 x [13 x i32]], ptr @day_tab, i64 0, i64 1, i64 %372 + %373 = getelementptr inbounds [13 x i32], ptr getelementptr inbounds nuw (i8, ptr @day_tab, i64 52), i64 0, i64 %372 %374 = load i32, ptr %373, align 4 %375 = icmp sgt i32 %356, %374 br i1 %375, label %.thread297, label %389 @@ -4630,7 +4632,7 @@ sub_0307: ; preds = %180, %.tail302.thre .thread: ; preds = %354 %376 = add i32 %355, -1 %377 = sext i32 %376 to i64 - %378 = getelementptr inbounds [2 x [13 x i32]], ptr @day_tab, i64 0, i64 0, i64 %377 + %378 = getelementptr inbounds [13 x i32], ptr @day_tab, i64 0, i64 %377 %379 = load i32, ptr %378, align 4 %380 = icmp sgt i32 %356, %379 br i1 %380, label %.thread297, label %389 @@ -4642,11 +4644,12 @@ sub_0307: ; preds = %180, %.tail302.thre br label %.thread297 .thread297: ; preds = %.thread392, %.thread, %381 - %385 = phi i64 [ %367, %381 ], [ %377, %.thread ], [ %372, %.thread392 ] - %386 = phi i64 [ %384, %381 ], [ 0, %.thread ], [ 1, %.thread392 ] - %387 = getelementptr inbounds [2 x [13 x i32]], ptr @day_tab, i64 0, i64 %386, i64 %385 - %388 = load i32, ptr %387, align 4 - store i32 %388, ptr %5, align 4 + %385 = phi i64 [ %368, %382 ], [ %377, %.thread ], [ %372, %.thread392 ] + %386 = phi i64 [ %384, %382 ], [ 0, %.thread ], [ 1, %.thread392 ] + %387 = getelementptr inbounds nuw [2 x [13 x i32]], ptr @day_tab, i64 0, i64 %386 + %389 = getelementptr inbounds [13 x i32], ptr %387, i64 0, i64 %386 + %390 = load i32, ptr %389, align 4 + store i32 %390, ptr %5, align 4 %.pre = load i32, ptr %4, align 4 %.pre388 = load i32, ptr %3, align 4 br label %389 @@ -4654,7 +4657,7 @@ sub_0307: ; preds = %180, %.tail302.thre 389: ; preds = %.thread392, %.thread, %.thread297, %362 %390 = phi i32 [ %.pre388, %.thread297 ], [ %357, %362 ], [ %357, %.thread ], [ %357, %.thread392 ] %391 = phi i32 [ %.pre, %.thread297 ], [ %355, %362 ], [ %355, %.thread ], [ %355, %.thread392 ] - %392 = phi i32 [ %388, %.thread297 ], [ %356, %362 ], [ %356, %.thread ], [ %356, %.thread392 ] + %392 = phi i32 [ %390, %.thread297 ], [ %356, %362 ], [ %356, %.thread ], [ %356, %.thread392 ] %.18 = phi i32 [ 1, %.thread297 ], [ %.17, %362 ], [ %.17, %.thread ], [ %.17, %.thread392 ] %393 = load i32, ptr %8, align 4 store i32 %393, ptr %13, align 8 @@ -4674,7 +4677,7 @@ sub_0307: ; preds = %180, %.tail302.thre br label %.loopexit316 .loopexit316: ; preds = %29, %10, %._crit_edge, %389, %242, %206, %198, %104, %246, %210, %202, %108 - %.0 = phi i32 [ %111, %108 ], [ %205, %202 ], [ %213, %210 ], [ %249, %246 ], [ 1, %104 ], [ 1, %198 ], [ 1, %206 ], [ 1, %242 ], [ %.0257.be, %._crit_edge ], [ %.18, %389 ], [ 1, %10 ], [ 1, %29 ] + %.0 = phi i32 [ %111, %108 ], [ %205, %202 ], [ %213, %210 ], [ %249, %246 ], [ 1, %104 ], [ 1, %198 ], [ 1, %206 ], [ 1, %242 ], [ %.0257.be, %._crit_edge ], [ %.18, %391 ], [ 1, %10 ], [ 1, %29 ] call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %13) #17 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #17 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #17 diff --git a/bench/postgres/optimized/localtime.ll b/bench/postgres/optimized/localtime.ll index 7c5d8e93e91..36612ed1332 100644 --- a/bench/postgres/optimized/localtime.ll +++ b/bench/postgres/optimized/localtime.ll @@ -2373,43 +2373,45 @@ define internal fastcc i32 @transtime(i32 noundef %0, ptr noundef nonnull readon .lr.ph: ; preds = %24 %54 = zext i1 %12 to i64 - %55 = add i32 %26, -1 - %56 = sext i32 %55 to i64 - %57 = getelementptr inbounds [2 x [12 x i32]], ptr @mon_lengths, i64 0, i64 %54, i64 %56 - %58 = load i32, ptr %57, align 4 - %59 = mul i32 %52, 7 - %60 = add i32 %.045, %59 - %61 = add i32 %60, -7 - br label %64 - -62: ; preds = %64 - %63 = add nuw nsw i32 %.04358, 1 - %exitcond.not = icmp eq i32 %63, %52 - br i1 %exitcond.not, label %._crit_edge, label %64, !llvm.loop !36 - -64: ; preds = %.lr.ph, %62 - %.04358 = phi i32 [ 1, %.lr.ph ], [ %63, %62 ] - %.14657 = phi i32 [ %.045, %.lr.ph ], [ %65, %62 ] - %65 = add i32 %.14657, 7 - %.not53 = icmp slt i32 %65, %58 - br i1 %.not53, label %62, label %._crit_edge - -._crit_edge: ; preds = %62, %64, %.._crit_edge_crit_edge - %.pre-phi = phi i32 [ %.pre, %.._crit_edge_crit_edge ], [ %55, %64 ], [ %55, %62 ] - %.146.lcssa = phi i32 [ %.045, %.._crit_edge_crit_edge ], [ %61, %62 ], [ %.14657, %64 ] - %66 = mul i32 %.146.lcssa, 86400 - %67 = icmp sgt i32 %.pre-phi, 0 - br i1 %67, label %.lr.ph64, label %.loopexit + %55 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @mon_lengths, i64 0, i64 %54 + %56 = add i32 %26, -1 + %57 = sext i32 %56 to i64 + %58 = getelementptr inbounds [12 x i32], ptr %55, i64 0, i64 %57 + %59 = load i32, ptr %58, align 4 + %60 = mul i32 %52, 7 + %61 = add i32 %.045, %60 + %62 = add i32 %61, -7 + br label %65 + +63:; preds = %65 + %64 = add nuw nsw i32 %.04358, 1 + %exitcond.not = icmp eq i32 %64, %52 + br i1 %exitcond.not, label %._crit_edge, label %65, !llvm.loop !36 + +65: ; preds = %.lr.ph, %63 + %.14657 = phi i32 [ 1, %.lr.ph ], [ %64, %63 ] + %.14657 = phi i32 [ %.045, %.lr.ph ], [ %66, %63 ] + %66 = add i32 %.14657, 7 + %.not53 = icmp slt i32 %66, %59 + br i1 %.not53, label %63, label %._crit_edge + +._crit_edge:; preds = %63, %65, %.._crit_edge_crit_edge + %.146.lcssa = phi i32 [ %.pre, %.._crit_edge_crit_edge ], [ %56, %65 ], [ %56, %63 ] + %.146.lcssa = phi i32 [ %.045, %.._crit_edge_crit_edge ], [ %62, %63 ], [ %.14657, %65 ] + %67 = mul i32 %.146.lcssa, 86400 + %68 = icmp sgt i32 %.pre-phi, 0 + br i1 %68, label %.lr.ph64, label %.loopexit .lr.ph64: ; preds = %._crit_edge %68 = zext i1 %12 to i64 + %70 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @mon_lengths, i64 0, i64 %69 %wide.trip.count = zext nneg i32 %.pre-phi to i64 br label %69 69: ; preds = %.lr.ph64, %69 - %indvars.iv = phi i64 [ 0, %.lr.ph64 ], [ %indvars.iv.next, %69 ] - %.162 = phi i32 [ %66, %.lr.ph64 ], [ %73, %69 ] - %70 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @mon_lengths, i64 0, i64 %68, i64 %indvars.iv + %indvars.iv = phi i64 [ 0, %.lr.ph64 ], [ %indvars.iv.next, %71 ] + %.162 = phi i32 [ %67, %.lr.ph64 ], [ %73, %71 ] + %70 = getelementptr inbounds nuw [12 x i32], ptr %70, i64 0, i64 %indvars.iv %71 = load i32, ptr %70, align 4 %72 = mul i32 %71, 86400 %73 = add i32 %72, %.162 @@ -2418,7 +2420,7 @@ define internal fastcc i32 @transtime(i32 noundef %0, ptr noundef nonnull readon br i1 %exitcond67.not, label %.loopexit, label %69, !llvm.loop !37 .loopexit: ; preds = %69, %._crit_edge, %14, %20, %11 - %.042 = phi i32 [ 0, %11 ], [ %23, %20 ], [ %spec.select54, %14 ], [ %66, %._crit_edge ], [ %73, %69 ] + %.042 = phi i32 [ 0, %11 ], [ %23, %20 ], [ %spec.select54, %14 ], [ %67, %._crit_edge ], [ %73, %71 ] %74 = getelementptr inbounds nuw i8, ptr %1, i64 16 %75 = load i32, ptr %74, align 4 %76 = add i32 %.042, %2 diff --git a/bench/postgres/optimized/tidbitmap.ll b/bench/postgres/optimized/tidbitmap.ll index 1719c3ca56c..6c13440d8d5 100644 --- a/bench/postgres/optimized/tidbitmap.ll +++ b/bench/postgres/optimized/tidbitmap.ll @@ -2527,14 +2527,14 @@ define dso_local ptr @tbm_shared_iterate(ptr noundef captures(ret: address, prov %15 = getelementptr inbounds nuw i8, ptr %3, i64 60 %16 = getelementptr inbounds nuw i8, ptr %3, i64 12 %17 = load i32, ptr %16, align 4 + %invariant.gep = getelementptr i8, ptr %5, i64 16 %.promoted = load i32, ptr %15, align 4 %18 = icmp slt i32 %.promoted, %17 br i1 %18, label %.lr.ph, label %.loopexit .lr.ph: ; preds = %1 %19 = getelementptr inbounds nuw i8, ptr %3, i64 64 - %invariant.gep = getelementptr i8, ptr %5, i64 16 - %.promoted91 = load i32, ptr %19, align 8 + %.promoted89 = load i32, ptr %19, align 8 %20 = sext i32 %.promoted to i64 %wide.trip.count = sext i32 %17 to i64 br label %21 @@ -2542,13 +2542,13 @@ define dso_local ptr @tbm_shared_iterate(ptr noundef captures(ret: address, prov 21: ; preds = %.lr.ph, %tbm_advance_schunkbit.exit.thread %22 = phi i32 [ %.promoted, %.lr.ph ], [ %39, %tbm_advance_schunkbit.exit.thread ] %indvars.iv = phi i64 [ %20, %.lr.ph ], [ %indvars.iv.next, %tbm_advance_schunkbit.exit.thread ] - %23 = phi i32 [ %.promoted91, %.lr.ph ], [ 0, %tbm_advance_schunkbit.exit.thread ] + %23 = phi i32 [ %.promoted89, %.lr.ph ], [ 0, %tbm_advance_schunkbit.exit.thread ] %24 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv %25 = load i32, ptr %24, align 4 %26 = sext i32 %25 to i64 - %smax.i = tail call i32 @llvm.smax.i32(i32 %23, i32 256) %.idx = mul nsw i64 %26, 48 %gep = getelementptr i8, ptr %invariant.gep, i64 %.idx + %smax.i = tail call i32 @llvm.smax.i32(i32 %23, i32 256) br label %27 27: ; preds = %28, %21 @@ -2560,8 +2560,7 @@ define dso_local ptr @tbm_shared_iterate(ptr noundef captures(ret: address, prov %29 = sdiv i32 %.010.i, 64 %30 = srem i32 %.010.i, 64 %31 = sext i32 %29 to i64 - %.idx84 = shl nsw i64 %31, 3 - %32 = getelementptr i8, ptr %gep, i64 %.idx84 + %32 = getelementptr inbounds [5 x i64], ptr %gep, i64 0, i64 %31 %33 = load i64, ptr %32, align 8 %34 = zext nneg i32 %30 to i64 %35 = shl nuw i64 1, %34 diff --git a/bench/postgres/optimized/xlogstats.ll b/bench/postgres/optimized/xlogstats.ll index 2de4755149c..82bdb6a0db2 100644 --- a/bench/postgres/optimized/xlogstats.ll +++ b/bench/postgres/optimized/xlogstats.ll @@ -145,19 +145,20 @@ XLogRecGetLen.exit: ; preds = %XLogRecGetLen.exit. %50 = and i8 %48, 7 %spec.select = select i1 %49, i8 %50, i8 %48 %51 = getelementptr inbounds nuw i8, ptr %0, i64 6168 - %52 = zext nneg i8 %spec.select to i64 - %53 = getelementptr inbounds nuw [256 x [16 x %struct.XLogRecStats]], ptr %51, i64 0, i64 %34, i64 %52 - %54 = load i64, ptr %53, align 8 - %55 = add i64 %54, 1 - store i64 %55, ptr %53, align 8 - %56 = getelementptr inbounds nuw i8, ptr %53, i64 8 - %57 = load i64, ptr %56, align 8 - %58 = add i64 %57, %38 - store i64 %58, ptr %56, align 8 - %59 = getelementptr inbounds nuw i8, ptr %53, i64 16 - %60 = load i64, ptr %59, align 8 - %61 = add i64 %60, %.2 - store i64 %61, ptr %59, align 8 + %52 = getelementptr inbounds nuw [256 x [16 x %struct.XLogRecStats]], ptr %51, i64 0, i64 %34 + %53 = zext nneg i8 %spec.select to i64 + %54 = getelementptr inbounds nuw [16 x %struct.XLogRecStats], ptr %52, i64 0, i64 %53 + %55 = load i64, ptr %54, align 8 + %56 = add i64 %55, 1 + store i64 %56, ptr %54, align 8 + %57 = getelementptr inbounds nuw i8, ptr %54, i64 8 + %58 = load i64, ptr %57, align 8 + %59 = add i64 %58, %38 + store i64 %59, ptr %57, align 8 + %60 = getelementptr inbounds nuw i8, ptr %54, i64 16 + %61 = load i64, ptr %60, align 8 + %62 = add i64 %61, %.2 + store i64 %62, ptr %60, align 8 ret void } diff --git a/bench/proj/optimized/defmodel.ll b/bench/proj/optimized/defmodel.ll index 7707daba1b6..09077ef7a5a 100644 --- a/bench/proj/optimized/defmodel.ll +++ b/bench/proj/optimized/defmodel.ll @@ -933,7 +933,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit: ; preds = %. 51: ; preds = %50 invoke void @__cxa_throw(ptr nonnull %49, ptr nonnull @_ZTIN16DeformationModel16ParsingExceptionE, ptr nonnull @_ZN16DeformationModel16ParsingExceptionD2Ev) #36 - to label %102 unwind label %53 + to label %104 unwind label %53 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i: ; preds = %48 %52 = landingpad { ptr, i32 } @@ -986,42 +986,44 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %53 br i1 %73, label %.lr.ph.i, label %._crit_edge.i .lr.ph.i: ; preds = %70 + %75 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @__const._ZN16DeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %74 %wide.trip.count.i = zext nneg i32 %36 to i64 - br label %80 - -._crit_edge.i: ; preds = %80, %70 - %.036.lcssa.i = phi i32 [ %72, %70 ], [ %84, %80 ] - %75 = add nsw i32 %36, -1 - %76 = zext nneg i32 %75 to i64 - %77 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @__const._ZN16DeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %74, i64 %76 - %78 = load i32, ptr %77, align 4, !tbaa !18 - %79 = icmp sgt i32 %39, %78 - br i1 %79, label %85, label %103 - -80: ; preds = %80, %.lr.ph.i - %indvars.iv.i = phi i64 [ 1, %.lr.ph.i ], [ %indvars.iv.next.i, %80 ] - %.03659.i = phi i32 [ %72, %.lr.ph.i ], [ %84, %80 ] - %81 = add nsw i64 %indvars.iv.i, -1 - %82 = getelementptr inbounds [2 x [12 x i32]], ptr @__const._ZN16DeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %74, i64 %81 - %83 = load i32, ptr %82, align 4, !tbaa !18 - %84 = add nsw i32 %83, %.03659.i + br label %82 + +._crit_edge.i: ; preds = %82, %70 + %.036.lcssa.i = phi i32 [ %72, %70 ], [ %86, %82 ] + %76 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @__const._ZN16DeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %74 + %77 = add nsw i32 %36, -1 + %78 = zext nneg i32 %77 to i64 + %79 = getelementptr inbounds nuw [12 x i32], ptr %76, i64 0, i64 %78 + %80 = load i32, ptr %79, align 4, !tbaa !18 + %81 = icmp sgt i32 %39, %80 + br i1 %81, label %87, label %105 + +82:; preds = %82, %.lr.ph.i + %.03659.i = phi i64 [ 1, %.lr.ph.i ], [ %indvars.iv.next.i, %82 ] + %.03659.i = phi i32 [ %72, %.lr.ph.i ], [ %86, %82 ] + %83 = add nsw i64 %.03659.i, -1 + %84 = getelementptr inbounds [12 x i32], ptr %75, i64 0, i64 %83 + %85 = load i32, ptr %84, align 4, !tbaa !18 + %86 = add nsw i32 %85, %.03659.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %._crit_edge.i, label %80, !llvm.loop !20 + br i1 %exitcond.not.i, label %._crit_edge.i, label %82, !llvm.loop !20 85: ; preds = %._crit_edge.i %86 = call ptr @__cxa_allocate_exception(i64 40) #37 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #37 invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull @.str.114, ptr noundef nonnull align 8 dereferenceable(32) %1) - to label %87 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i + to label %89 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i 87: ; preds = %85 invoke void @_ZN16DeformationModel16ParsingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %86, ptr noundef nonnull align 8 dereferenceable(32) %10) - to label %88 unwind label %90 + to label %90 unwind label %90 88: ; preds = %87 invoke void @__cxa_throw(ptr nonnull %86, ptr nonnull @_ZTIN16DeformationModel16ParsingExceptionE, ptr nonnull @_ZN16DeformationModel16ParsingExceptionD2Ev) #36 - to label %102 unwind label %90 + to label %104 unwind label %90 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i: ; preds = %85 %89 = landingpad { ptr, i32 } @@ -1030,7 +1032,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i: ; pre br label %.sink.split.i 90: ; preds = %88, %87 - %.0.i = phi i1 [ false, %88 ], [ true, %87 ] + %.0.i = phi i1 [ false, %90 ], [ true, %89 ] %91 = landingpad { ptr, i32 } cleanup %92 = load ptr, ptr %10, align 8, !tbaa !3 diff --git a/bench/proj/optimized/healpix.ll b/bench/proj/optimized/healpix.ll index 4718840b19f..83af2477e2e 100644 --- a/bench/proj/optimized/healpix.ll +++ b/bench/proj/optimized/healpix.ll @@ -968,27 +968,28 @@ _ZL10vector_subPKdS0_Pd.exit.critedge.i: ; preds = %80, %79, %78, %77, %85 = fsub double %.sroa.3.0.i, %.0.i.i br label %86 -86: ; preds = %94, %_ZL10vector_subPKdS0_Pd.exit.critedge.i - %87 = phi i1 [ true, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ false, %94 ] - %indvars.iv18.i.sroa.phi.i = phi ptr [ %.sroa.052.i, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ %.sroa.453.i, %94 ] - %indvars.iv18.i.i = phi i64 [ 0, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ 1, %94 ] - br label %88 - -88: ; preds = %88, %86 - %89 = phi i1 [ true, %86 ], [ false, %88 ] - %indvars.iv.i27.sroa.phi.sroa.speculated.i = phi double [ %84, %86 ], [ %85, %88 ] - %indvars.iv.i27.i = phi i64 [ 0, %86 ], [ 1, %88 ] - %90 = phi double [ 0.000000e+00, %86 ], [ %93, %88 ] - %91 = getelementptr inbounds nuw [2 x double], ptr %83, i64 %indvars.iv18.i.i, i64 %indvars.iv.i27.i - %92 = load double, ptr %91, align 8, !tbaa !56 - %93 = tail call double @llvm.fmuladd.f64(double %92, double %indvars.iv.i27.sroa.phi.sroa.speculated.i, double %90) - br i1 %89, label %88, label %94, !llvm.loop !63 - -94: ; preds = %88 - store double %93, ptr %indvars.iv18.i.sroa.phi.i, align 8, !tbaa !56 +86: ; preds = %95, %_ZL10vector_subPKdS0_Pd.exit.critedge.i + %87 = phi i1 [ true, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ false, %95 ] + %indvars.iv18.i.sroa.phi.i = phi ptr [ %.sroa.052.i, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ %.sroa.453.i, %95 ] + %indvars.iv18.i.i = phi i64 [ 0, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ 1, %95 ] + %88 = getelementptr inbounds nuw [2 x double], ptr %83, i64 %indvars.iv18.i.i + br label %89 + +89:; preds = %89, %86 + %indvars.iv.i27.sroa.phi.sroa.speculated.i = phi i1 [ true, %86 ], [ false, %89 ] + %indvars.iv.i27.i = phi double [ %84, %86 ], [ %85, %89 ] + %90 = phi i64 [ 0, %86 ], [ 1, %89 ] + %91 = phi double [ 0.000000e+00, %86 ], [ %94, %89 ] + %92 = getelementptr inbounds nuw [2 x double], ptr %88, i64 0, i64 %72 + %93 = load double, ptr %92, align 8, !tbaa !56 + %94 = tail call double @llvm.fmuladd.f64(double %93, double %72, double %91) + br i1 %90, label %89, label %95, !llvm.loop !63 + +95:; preds = %89 + store double %94, ptr %indvars.iv18.i.sroa.phi.i, align 8, !tbaa !56 br i1 %87, label %86, label %_ZL11dot_productPA2_KdPS_Pd.exit.i, !llvm.loop !64 -_ZL11dot_productPA2_KdPS_Pd.exit.i: ; preds = %94 +_ZL11dot_productPA2_KdPS_Pd.exit.i: ; preds = %95 %95 = sitofp i32 %81 to double %96 = tail call double @llvm.fmuladd.f64(double %95, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) %.sroa.052.i.0..sroa.052.i.0..sroa.052.i.0..sroa.052.0..i = load double, ptr %.sroa.052.i, align 16, !tbaa !56 @@ -1235,27 +1236,28 @@ _ZL10vector_subPKdS0_Pd.exit.critedge.i: ; preds = %62, %61, %60, %59, %67 = fsub double %.sroa.3.0.i, %.0.i.i br label %68 -68: ; preds = %76, %_ZL10vector_subPKdS0_Pd.exit.critedge.i - %69 = phi i1 [ true, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ false, %76 ] - %indvars.iv18.i.sroa.phi.i = phi ptr [ %.sroa.052.i, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ %.sroa.453.i, %76 ] - %indvars.iv18.i.i = phi i64 [ 0, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ 1, %76 ] - br label %70 - -70: ; preds = %70, %68 - %71 = phi i1 [ true, %68 ], [ false, %70 ] - %indvars.iv.i27.sroa.phi.sroa.speculated.i = phi double [ %66, %68 ], [ %67, %70 ] - %indvars.iv.i27.i = phi i64 [ 0, %68 ], [ 1, %70 ] - %72 = phi double [ 0.000000e+00, %68 ], [ %75, %70 ] - %73 = getelementptr inbounds nuw [2 x double], ptr %65, i64 %indvars.iv18.i.i, i64 %indvars.iv.i27.i - %74 = load double, ptr %73, align 8, !tbaa !56 - %75 = tail call double @llvm.fmuladd.f64(double %74, double %indvars.iv.i27.sroa.phi.sroa.speculated.i, double %72) - br i1 %71, label %70, label %76, !llvm.loop !63 - -76: ; preds = %70 - store double %75, ptr %indvars.iv18.i.sroa.phi.i, align 8, !tbaa !56 +68: ; preds = %77, %_ZL10vector_subPKdS0_Pd.exit.critedge.i + %69 = phi i1 [ true, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ false, %77 ] + %indvars.iv18.i.sroa.phi.i = phi ptr [ %.sroa.052.i, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ %.sroa.453.i, %77 ] + %indvars.iv18.i.i = phi i64 [ 0, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ 1, %77 ] + %70 = getelementptr inbounds nuw [2 x double], ptr %65, i64 %indvars.iv18.i.i + br label %71 + +71:; preds = %71, %68 + %indvars.iv.i27.sroa.phi.sroa.speculated.i = phi i1 [ true, %68 ], [ false, %71 ] + %indvars.iv.i27.i = phi double [ %66, %68 ], [ %67, %71 ] + %72 = phi i64 [ 0, %68 ], [ 1, %71 ] + %73 = phi double [ 0.000000e+00, %68 ], [ %76, %71 ] + %74 = getelementptr inbounds nuw [2 x double], ptr %70, i64 0, i64 %72 + %75 = load double, ptr %74, align 8, !tbaa !56 + %76 = tail call double @llvm.fmuladd.f64(double %75, double %72, double %73) + br i1 %72, label %71, label %77, !llvm.loop !63 + +77:; preds = %71 + store double %76, ptr %indvars.iv18.i.sroa.phi.i, align 8, !tbaa !56 br i1 %69, label %68, label %_ZL11dot_productPA2_KdPS_Pd.exit.i, !llvm.loop !64 -_ZL11dot_productPA2_KdPS_Pd.exit.i: ; preds = %76 +_ZL11dot_productPA2_KdPS_Pd.exit.i: ; preds = %77 %77 = sitofp i32 %63 to double %78 = tail call double @llvm.fmuladd.f64(double %77, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) %.sroa.052.i.0..sroa.052.i.0..sroa.052.i.0..sroa.052.0..i = load double, ptr %.sroa.052.i, align 16, !tbaa !56 @@ -1883,27 +1885,28 @@ _ZL10vector_subPKdS0_Pd.exit.critedge: ; preds = %121, %120, %119, %1 %126 = fsub double %1, %.sroa.30.0.ph78 br label %127 -127: ; preds = %135, %_ZL10vector_subPKdS0_Pd.exit.critedge - %128 = phi i1 [ true, %_ZL10vector_subPKdS0_Pd.exit.critedge ], [ false, %135 ] - %indvars.iv18.i.sroa.phi = phi ptr [ %.sroa.052, %_ZL10vector_subPKdS0_Pd.exit.critedge ], [ %.sroa.453, %135 ] - %indvars.iv18.i = phi i64 [ 0, %_ZL10vector_subPKdS0_Pd.exit.critedge ], [ 1, %135 ] - br label %129 - -129: ; preds = %129, %127 - %130 = phi i1 [ true, %127 ], [ false, %129 ] - %indvars.iv.i27.sroa.phi.sroa.speculated = phi double [ %125, %127 ], [ %126, %129 ] - %indvars.iv.i27 = phi i64 [ 0, %127 ], [ 1, %129 ] - %131 = phi double [ 0.000000e+00, %127 ], [ %134, %129 ] - %132 = getelementptr inbounds nuw [2 x double], ptr %124, i64 %indvars.iv18.i, i64 %indvars.iv.i27 - %133 = load double, ptr %132, align 8, !tbaa !56 - %134 = tail call double @llvm.fmuladd.f64(double %133, double %indvars.iv.i27.sroa.phi.sroa.speculated, double %131) - br i1 %130, label %129, label %135, !llvm.loop !63 - -135: ; preds = %129 - store double %134, ptr %indvars.iv18.i.sroa.phi, align 8, !tbaa !56 +127: ; preds = %136, %_ZL10vector_subPKdS0_Pd.exit.critedge + %128 = phi i1 [ true, %_ZL10vector_subPKdS0_Pd.exit.critedge ], [ false, %136 ] + %indvars.iv18.i.sroa.phi = phi ptr [ %.sroa.052, %_ZL10vector_subPKdS0_Pd.exit.critedge ], [ %.sroa.453, %136 ] + %indvars.iv18.i = phi i64 [ 0, %_ZL10vector_subPKdS0_Pd.exit.critedge ], [ 1, %136 ] + %129 = getelementptr inbounds nuw [2 x double], ptr %124, i64 %indvars.iv18.i + br label %130 + +130:; preds = %130, %127 + %indvars.iv.i27.sroa.phi.sroa.speculated = phi i1 [ true, %127 ], [ false, %130 ] + %indvars.iv.i27 = phi double [ %125, %127 ], [ %126, %130 ] + %131 = phi i64 [ 0, %127 ], [ 1, %130 ] + %132 = phi double [ 0.000000e+00, %127 ], [ %135, %130 ] + %133 = getelementptr inbounds nuw [2 x double], ptr %129, i64 0, i64 %131 + %134 = load double, ptr %133, align 8, !tbaa !56 + %135 = tail call double @llvm.fmuladd.f64(double %134, double %131, double %132) + br i1 %131, label %130, label %136, !llvm.loop !63 + +136:; preds = %130 + store double %135, ptr %indvars.iv18.i.sroa.phi, align 8, !tbaa !56 br i1 %128, label %127, label %_ZL11dot_productPA2_KdPS_Pd.exit, !llvm.loop !64 -_ZL11dot_productPA2_KdPS_Pd.exit: ; preds = %135 +_ZL11dot_productPA2_KdPS_Pd.exit: ; preds = %136 %136 = sitofp i32 %122 to double %137 = tail call double @llvm.fmuladd.f64(double %136, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) %.sroa.052.0..sroa.052.0. = load double, ptr %.sroa.052, align 16, !tbaa !56 diff --git a/bench/proj/optimized/test_defmodel.ll b/bench/proj/optimized/test_defmodel.ll index 99e37328e52..39a0260c56e 100644 --- a/bench/proj/optimized/test_defmodel.ll +++ b/bench/proj/optimized/test_defmodel.ll @@ -1707,7 +1707,7 @@ define internal fastcc noundef double @_ZN20TestDeformationModelL20ISO8601ToDeci 30: ; preds = %29 invoke void @__cxa_throw(ptr nonnull %28, ptr nonnull @_ZTIN20TestDeformationModel16ParsingExceptionE, ptr nonnull @_ZN20TestDeformationModel16ParsingExceptionD2Ev) #39 - to label %92 unwind label %32 + to label %94 unwind label %32 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread: ; preds = %27 %31 = landingpad { ptr, i32 } @@ -1760,42 +1760,44 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %32 br i1 %52, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %49 + %54 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @__const._ZN20TestDeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %53 %wide.trip.count = zext nneg i32 %15 to i64 - br label %59 + br label %61 -._crit_edge: ; preds = %59, %49 - %.036.lcssa = phi i32 [ %51, %49 ], [ %63, %59 ] - %54 = add nsw i32 %15, -1 - %55 = zext nneg i32 %54 to i64 - %56 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @__const._ZN20TestDeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %53, i64 %55 - %57 = load i32, ptr %56, align 4, !tbaa !19 - %58 = icmp sgt i32 %18, %57 - br i1 %58, label %64, label %79 - -59: ; preds = %.lr.ph, %59 - %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %59 ] - %.03659 = phi i32 [ %51, %.lr.ph ], [ %63, %59 ] - %60 = add nsw i64 %indvars.iv, -1 - %61 = getelementptr inbounds [2 x [12 x i32]], ptr @__const._ZN20TestDeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %53, i64 %60 - %62 = load i32, ptr %61, align 4, !tbaa !19 - %63 = add nsw i32 %62, %.03659 +._crit_edge: ; preds = %61, %49 + %.036.lcssa = phi i32 [ %51, %49 ], [ %65, %61 ] + %55 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @__const._ZN20TestDeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %53 + %56 = add nsw i32 %15, -1 + %57 = zext nneg i32 %56 to i64 + %58 = getelementptr inbounds nuw [12 x i32], ptr %55, i64 0, i64 %57 + %59 = load i32, ptr %58, align 4, !tbaa !19 + %60 = icmp sgt i32 %18, %59 + br i1 %60, label %66, label %81 + +61: ; preds = %.lr.ph, %61 + %.03659 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %61 ] + %.03659 = phi i32 [ %51, %.lr.ph ], [ %65, %61 ] + %62 = add nsw i64 %.03659, -1 + %63 = getelementptr inbounds [12 x i32], ptr %54, i64 0, i64 %62 + %64 = load i32, ptr %63, align 4, !tbaa !19 + %65 = add nsw i32 %64, %.03659 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge, label %59, !llvm.loop !21 + br i1 %exitcond.not, label %._crit_edge, label %61, !llvm.loop !21 64: ; preds = %._crit_edge %65 = call ptr @__cxa_allocate_exception(i64 40) #40 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #40 invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull @.str.135, ptr noundef nonnull align 8 dereferenceable(32) %0) - to label %66 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread + to label %68 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread 66: ; preds = %64 invoke void @_ZN20TestDeformationModel16ParsingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %65, ptr noundef nonnull align 8 dereferenceable(32) %9) - to label %67 unwind label %69 + to label %69 unwind label %69 67: ; preds = %66 invoke void @__cxa_throw(ptr nonnull %65, ptr nonnull @_ZTIN20TestDeformationModel16ParsingExceptionE, ptr nonnull @_ZN20TestDeformationModel16ParsingExceptionD2Ev) #39 - to label %92 unwind label %69 + to label %94 unwind label %69 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread: ; preds = %64 %68 = landingpad { ptr, i32 } @@ -1804,7 +1806,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread: ; preds br label %.sink.split 69: ; preds = %67, %66 - %.0 = phi i1 [ false, %67 ], [ true, %66 ] + %.0 = phi i1 [ false, %69 ], [ true, %68 ] %70 = landingpad { ptr, i32 } cleanup %71 = load ptr, ptr %9, align 8, !tbaa !4 diff --git a/bench/qemu/optimized/ahci.ll b/bench/qemu/optimized/ahci.ll index 286c12a8e7b..2539191d18b 100644 --- a/bench/qemu/optimized/ahci.ll +++ b/bench/qemu/optimized/ahci.ll @@ -642,42 +642,43 @@ trace_ahci_reset_port.exit: ; preds = %2, %9, %11, %17, %2 %.not = icmp eq ptr %36, null br i1 %.not, label %58, label %.preheader -.preheader: ; preds = %trace_ahci_reset_port.exit, %49 - %indvars.iv = phi i64 [ %indvars.iv.next, %49 ], [ 0, %trace_ahci_reset_port.exit ] +.preheader: ; preds = %trace_ahci_reset_port.exit, %50 + %indvars.iv = phi i64 [ %indvars.iv.next, %50 ], [ 0, %trace_ahci_reset_port.exit ] %37 = load ptr, ptr %0, align 16 - %38 = getelementptr inbounds %struct.AHCIDevice, ptr %37, i64 %5, i32 14, i64 %indvars.iv - %39 = getelementptr inbounds nuw i8, ptr %38, i64 108 - store i8 0, ptr %39, align 4 - %40 = getelementptr inbounds nuw i8, ptr %38, i64 107 - %41 = load i8, ptr %40, align 1, !range !9, !noundef !10 - %42 = trunc nuw i8 %41 to i1 - br i1 %42, label %43, label %49 - -43: ; preds = %.preheader - %44 = getelementptr inbounds nuw i8, ptr %38, i64 8 - %45 = load ptr, ptr %44, align 8 - %.not41 = icmp eq ptr %45, null - br i1 %.not41, label %.thread, label %46 - -46: ; preds = %43 - tail call void @blk_aio_cancel(ptr noundef nonnull %45) #14 - store ptr null, ptr %44, align 8 - %.pre = load i8, ptr %40, align 1, !range !9 - %47 = trunc nuw i8 %.pre to i1 - br i1 %47, label %.thread, label %49 - -.thread: ; preds = %43, %46 - %48 = getelementptr inbounds nuw i8, ptr %38, i64 24 - tail call void @qemu_sglist_destroy(ptr noundef nonnull %48) #14 - store i8 0, ptr %40, align 1 - br label %49 - -49: ; preds = %46, %.preheader, %.thread + %38 = getelementptr inbounds %struct.AHCIDevice, ptr %37, i64 %5, i32 14 + %39 = getelementptr inbounds nuw [32 x %struct.NCQTransferState], ptr %38, i64 0, i64 %indvars.iv + %40 = getelementptr inbounds nuw i8, ptr %39, i64 108 + store i8 0, ptr %40, align 4 + %41 = getelementptr inbounds nuw i8, ptr %39, i64 107 + %42 = load i8, ptr %41, align 1, !range !9, !noundef !10 + %43 = trunc nuw i8 %42 to i1 + br i1 %43, label %44, label %50 + +44: ; preds = %.preheader + %45 = getelementptr inbounds nuw i8, ptr %39, i64 8 + %46 = load ptr, ptr %45, align 8 + %.not41 = icmp eq ptr %46, null + br i1 %.not41, label %.thread, label %47 + +49: ; preds = %44 + tail call void @blk_aio_cancel(ptr noundef nonnull %46) #14 + store ptr null, ptr %45, align 8 + %.pre = load i8, ptr %41, align 1, !range !9 + %48 = trunc nuw i8 %.pre to i1 + br i1 %48, label %.thread, label %50 + +.thread: ; preds = %44, %47 + %49 = getelementptr inbounds nuw i8, ptr %39, i64 24 + tail call void @qemu_sglist_destroy(ptr noundef nonnull %49) #14 + store i8 0, ptr %41, align 1 + br label %50 + +50: ; preds = %47, %.preheader, %.thread %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 32 br i1 %exitcond.not, label %50, label %.preheader, !llvm.loop !13 -50: ; preds = %49 +50: ; preds = %50 %51 = load ptr, ptr %0, align 16 %52 = getelementptr inbounds %struct.AHCIDevice, ptr %51, i64 %5, i32 3 store i32 0, ptr %52, align 4 diff --git a/bench/qemu/optimized/job.ll b/bench/qemu/optimized/job.ll index dd00065ed26..5546076419e 100644 --- a/bench/qemu/optimized/job.ll +++ b/bench/qemu/optimized/job.ll @@ -237,32 +237,33 @@ define dso_local range(i32 -1, 1) i32 @job_apply_verb_locked(ptr noundef %0, i32 %10 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %6) #15 %11 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobVerb_lookup, i32 noundef %1) #15 %12 = zext nneg i32 %1 to i64 - %13 = zext i32 %6 to i64 - %14 = getelementptr inbounds nuw [8 x [11 x i8]], ptr @JobVerbTable, i64 0, i64 %12, i64 %13 - %15 = load i8, ptr %14, align 1, !range !4, !noundef !5 - %16 = trunc nuw i8 %15 to i1 - %17 = select i1 %16, ptr @.str.2, ptr @.str.3 - %18 = load i32, ptr @trace_events_enabled_count, align 4 - %.not.i.i = icmp eq i32 %18, 0 - br i1 %.not.i.i, label %trace_job_apply_verb.exit, label %19, !prof !6 - -19: ; preds = %9 - %20 = load i16, ptr @_TRACE_JOB_APPLY_VERB_DSTATE, align 2 - %.not8.i.i = icmp eq i16 %20, 0 - br i1 %.not8.i.i, label %trace_job_apply_verb.exit, label %21 - -21: ; preds = %19 - %22 = load i32, ptr @qemu_loglevel, align 4 - %23 = and i32 %22, 32768 - %.not9.i.i = icmp eq i32 %23, 0 - br i1 %.not9.i.i, label %trace_job_apply_verb.exit, label %24 + %13 = getelementptr inbounds nuw [8 x [11 x i8]], ptr @JobVerbTable, i64 0, i64 %12 + %14 = zext i32 %6 to i64 + %15 = getelementptr inbounds nuw [11 x i8], ptr %13, i64 0, i64 %14 + %16 = load i8, ptr %15, align 1, !range !4, !noundef !5 + %17 = trunc nuw i8 %16 to i1 + %18 = select i1 %17, ptr @.str.2, ptr @.str.3 + %19 = load i32, ptr @trace_events_enabled_count, align 4 + %.not.i.i = icmp eq i32 %19, 0 + br i1 %.not.i.i, label %trace_job_apply_verb.exit, label %20, !prof !6 -24: ; preds = %21 - %25 = load i8, ptr @message_with_timestamp, align 1, !range !4, !noundef !5 - %26 = trunc nuw i8 %25 to i1 - br i1 %26, label %27, label %33 +24: ; preds = %9 + %25 = load i16, ptr @_TRACE_JOB_APPLY_VERB_DSTATE, align 2 + %.not8.i.i = icmp eq i16 %25, 0 + br i1 %.not8.i.i, label %trace_job_apply_verb.exit, label %27 27: ; preds = %24 + %23 = load i32, ptr @qemu_loglevel, align 4 + %24 = and i32 %23, 32768 + %.not9.i.i = icmp eq i32 %24, 0 + br i1 %.not9.i.i, label %trace_job_apply_verb.exit, label %25 + +25: ; preds = %22 + %26 = load i8, ptr @message_with_timestamp, align 1, !range !4, !noundef !5 + %27 = trunc nuw i8 %26 to i1 + br i1 %27, label %28, label %34 + +28: ; preds = %25 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #15 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %4, i8 0, i64 16, i1 false), !annotation !7 %28 = call i32 @gettimeofday(ptr noundef nonnull %4, ptr noundef null) #15 @@ -270,16 +271,16 @@ define dso_local range(i32 -1, 1) i32 @job_apply_verb_locked(ptr noundef %0, i32 %30 = load i64, ptr %4, align 8 %31 = getelementptr inbounds nuw i8, ptr %4, i64 8 %32 = load i64, ptr %31, align 8 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.30, i32 noundef %29, i64 noundef %30, i64 noundef %32, ptr noundef nonnull %0, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %17) #15 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.30, i32 noundef %29, i64 noundef %30, i64 noundef %32, ptr noundef nonnull %0, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %18) #15 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #15 br label %trace_job_apply_verb.exit -33: ; preds = %24 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.31, ptr noundef nonnull %0, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %17) #15 +33: ; preds = %25 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.31, ptr noundef nonnull %0, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %18) #15 br label %trace_job_apply_verb.exit -trace_job_apply_verb.exit: ; preds = %9, %19, %21, %27, %33 - %34 = load i8, ptr %14, align 1, !range !4, !noundef !5 +trace_job_apply_verb.exit: ; preds = %9, %20, %22, %28, %33 + %34 = load i8, ptr %15, align 1, !range !4, !noundef !5 %35 = trunc nuw i8 %34 to i1 br i1 %35, label %40, label %36 @@ -287,7 +288,7 @@ trace_job_apply_verb.exit: ; preds = %9, %19, %21, %27, % %37 = load ptr, ptr %0, align 8 %38 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %6) #15 %39 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobVerb_lookup, i32 noundef %1) #15 - tail call void (ptr, ptr, i32, ptr, ptr, ...) @error_setg_internal(ptr noundef %2, ptr noundef nonnull @.str, i32 noundef 233, ptr noundef nonnull @__func__.job_apply_verb_locked, ptr noundef nonnull @.str.4, ptr noundef %37, ptr noundef %38, ptr noundef %39) #15 + tail call void (ptr, ptr, i32, ptr, ptr, ...) @error_setg_internal(ptr noundef %2, ptr noundef nonnull @.str, i32 noundef 233, ptr noundef nonnull @__func__.job_apply_verb_locked, ptr noundef nonnull @.str.4, ptr noundef %38, ptr noundef %39, ptr noundef %40) #15 br label %40 40: ; preds = %trace_job_apply_verb.exit, %36 @@ -758,34 +759,35 @@ define internal fastcc void @job_state_transition_locked(ptr noundef %0, i32 nou %9 = getelementptr inbounds nuw i8, ptr %0, i64 188 %10 = load i32, ptr %9, align 4 %11 = zext i32 %5 to i64 - %12 = zext nneg i32 %1 to i64 - %13 = getelementptr inbounds nuw [11 x [11 x i8]], ptr @JobSTT, i64 0, i64 %11, i64 %12 - %14 = load i8, ptr %13, align 1, !range !4, !noundef !5 - %15 = trunc nuw i8 %14 to i1 - %16 = select i1 %15, ptr @.str.2, ptr @.str.33 - %17 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %5) #15 - %18 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %1) #15 - %19 = load i32, ptr @trace_events_enabled_count, align 4 - %.not.i.i = icmp eq i32 %19, 0 - br i1 %.not.i.i, label %trace_job_state_transition.exit, label %20, !prof !6 - -20: ; preds = %8 - %21 = load i16, ptr @_TRACE_JOB_STATE_TRANSITION_DSTATE, align 2 - %.not9.i.i = icmp eq i16 %21, 0 - br i1 %.not9.i.i, label %trace_job_state_transition.exit, label %22 + %12 = getelementptr inbounds nuw [11 x [11 x i8]], ptr @JobSTT, i64 0, i64 %11 + %13 = zext nneg i32 %1 to i64 + %14 = getelementptr inbounds nuw [11 x i8], ptr %12, i64 0, i64 %13 + %15 = load i8, ptr %14, align 1, !range !4, !noundef !5 + %16 = trunc nuw i8 %15 to i1 + %17 = select i1 %16, ptr @.str.2, ptr @.str.33 + %18 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %5) #15 + %19 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %1) #15 + %20 = load i32, ptr @trace_events_enabled_count, align 4 + %.not.i.i = icmp eq i32 %20, 0 + br i1 %.not.i.i, label %trace_job_state_transition.exit, label %21, !prof !6 + +21: ; preds = %8 + %22 = load i16, ptr @_TRACE_JOB_STATE_TRANSITION_DSTATE, align 2 + %.not9.i.i = icmp eq i16 %22, 0 + br i1 %.not9.i.i, label %trace_job_state_transition.exit, label %23 + +20: ; preds = %21 + %21 = load i32, ptr @qemu_loglevel, align 4 + %25 = and i32 %21, 32768 + %.not10.i.i = icmp eq i32 %25, 0 + br i1 %.not10.i.i, label %trace_job_state_transition.exit, label %26 22: ; preds = %20 - %23 = load i32, ptr @qemu_loglevel, align 4 - %24 = and i32 %23, 32768 - %.not10.i.i = icmp eq i32 %24, 0 - br i1 %.not10.i.i, label %trace_job_state_transition.exit, label %25 + %23 = load i8, ptr @message_with_timestamp, align 1, !range !4, !noundef !5 + %28 = trunc nuw i8 %23 to i1 + br i1 %28, label %29, label %35 25: ; preds = %22 - %26 = load i8, ptr @message_with_timestamp, align 1, !range !4, !noundef !5 - %27 = trunc nuw i8 %26 to i1 - br i1 %27, label %28, label %34 - -28: ; preds = %25 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #15 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, i8 0, i64 16, i1 false), !annotation !7 %29 = call i32 @gettimeofday(ptr noundef nonnull %3, ptr noundef null) #15 @@ -793,16 +795,16 @@ define internal fastcc void @job_state_transition_locked(ptr noundef %0, i32 nou %31 = load i64, ptr %3, align 8 %32 = getelementptr inbounds nuw i8, ptr %3, i64 8 %33 = load i64, ptr %32, align 8 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.35, i32 noundef %30, i64 noundef %31, i64 noundef %33, ptr noundef nonnull %0, i32 noundef %10, ptr noundef nonnull %16, ptr noundef %17, ptr noundef %18) #15 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.35, i32 noundef %30, i64 noundef %31, i64 noundef %33, ptr noundef nonnull %0, i32 noundef %10, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %19) #15 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #15 br label %trace_job_state_transition.exit -34: ; preds = %25 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.36, ptr noundef nonnull %0, i32 noundef %10, ptr noundef nonnull %16, ptr noundef %17, ptr noundef %18) #15 +34: ; preds = %26 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.36, ptr noundef nonnull %0, i32 noundef %10, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %19) #15 br label %trace_job_state_transition.exit -trace_job_state_transition.exit: ; preds = %8, %20, %22, %28, %34 - %35 = load i8, ptr %13, align 1, !range !4, !noundef !5 +trace_job_state_transition.exit: ; preds = %8, %21, %23, %28, %34 + %35 = load i8, ptr %14, align 1, !range !4, !noundef !5 %36 = trunc nuw i8 %35 to i1 br i1 %36, label %38, label %37 diff --git a/bench/quantlib/optimized/exponentialfittinghestonengine.ll b/bench/quantlib/optimized/exponentialfittinghestonengine.ll index 7bf99aaddff..a1f68460a43 100644 --- a/bench/quantlib/optimized/exponentialfittinghestonengine.ll +++ b/bench/quantlib/optimized/exponentialfittinghestonengine.ll @@ -2560,6 +2560,7 @@ if.end345: ; preds = %if.then344, %land.l if.end349: ; preds = %cond.end300, %if.end345 %u.0 = phi double [ %167, %if.end345 ], [ %cond301, %cond.end300 ] %n.0 = phi i64 [ %n.1, %if.end345 ], [ 0, %cond.end300 ] + %arrayidx = getelementptr inbounds nuw [147 x [129 x double]], ptr @_ZN8QuantLib12_GLOBAL__N_17values4E, i64 0, i64 %n.0 br label %for.body for.cond.cleanup: ; preds = %invoke.cont359 @@ -2572,10 +2573,10 @@ for.body: ; preds = %if.end349, %invoke. %i.0452 = phi i64 [ 0, %if.end349 ], [ %add351, %invoke.cont359 ] %s.0451 = phi double [ 0.000000e+00, %if.end349 ], [ %170, %invoke.cont359 ] %add351 = add nuw nsw i64 %i.0452, 1 - %arrayidx352 = getelementptr inbounds nuw [147 x [129 x double]], ptr @_ZN8QuantLib12_GLOBAL__N_17values4E, i64 0, i64 %n.0, i64 %add351 + %arrayidx352 = getelementptr inbounds nuw [129 x double], ptr %arrayidx, i64 0, i64 %add351 %168 = load double, ptr %arrayidx352, align 8, !tbaa !77 %add354 = add nuw nsw i64 %i.0452, 65 - %arrayidx355 = getelementptr inbounds nuw [147 x [129 x double]], ptr @_ZN8QuantLib12_GLOBAL__N_17values4E, i64 0, i64 %n.0, i64 %add354 + %arrayidx355 = getelementptr inbounds nuw [129 x double], ptr %arrayidx, i64 0, i64 %add354 %169 = load double, ptr %arrayidx355, align 8, !tbaa !77 %mul357 = fmul double %u.0, %168 %call360 = invoke noundef double @_ZNK8QuantLib20AnalyticHestonEngine9AP_HelperclEd(ptr noundef nonnull align 8 dereferenceable(112) %helper, double noundef %mul357) diff --git a/bench/quantlib/optimized/perturbativebarrieroptionengine.ll b/bench/quantlib/optimized/perturbativebarrieroptionengine.ll index 16403323f85..5d2bedc22d9 100644 --- a/bench/quantlib/optimized/perturbativebarrieroptionengine.ll +++ b/bench/quantlib/optimized/perturbativebarrieroptionengine.ll @@ -7151,17 +7151,19 @@ if.then8: ; preds = %if.then6 %1 = tail call double @llvm.fmuladd.f64(double %a, double %a, double %mul10) %neg = fmul double %1, -5.000000e-01 %idxprom15 = zext nneg i32 %.sink172 to i64 + %invariant.gep188 = getelementptr inbounds [4 x double], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2XL, i64 0, i64 %idxprom15 %idxprom23 = zext nneg i32 %.sink172 to i64 + %invariant.gep190 = getelementptr inbounds [4 x double], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2WL, i64 0, i64 %idxprom23 br label %for.cond12.preheader for.cond12.preheader: ; preds = %if.then8, %for.inc31 %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE1I.0 = phi i32 [ 1, %if.then8 ], [ %inc, %for.inc31 ] %.lcssa157159 = phi double [ 0.000000e+00, %if.then8 ], [ %8, %for.inc31 ] %idxprom = zext nneg i32 %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE1I.0 to i64 - %arrayidx16 = getelementptr inbounds nuw [11 x [4 x double]], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2XL, i64 0, i64 %idxprom, i64 %idxprom15 + %arrayidx16 = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep188, i64 0, i64 %idxprom %2 = load double, ptr %arrayidx16, align 8, !tbaa !107 %idxprom21 = zext nneg i32 %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE1I.0 to i64 - %arrayidx24 = getelementptr inbounds nuw [11 x [4 x double]], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2WL, i64 0, i64 %idxprom21, i64 %idxprom23 + %arrayidx24 = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep190, i64 0, i64 %idxprom21 %3 = load double, ptr %arrayidx24, align 8, !tbaa !107 br label %for.body14 @@ -7419,15 +7421,17 @@ if.end104: ; preds = %_ZN8QuantLib12_GLOB %div105 = fmul double %call51, 5.000000e-01 %fneg135 = fneg double %39 %idxprom115 = zext nneg i32 %.sink172 to i64 + %invariant.gep = getelementptr inbounds [4 x double], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2XL, i64 0, i64 %idxprom115 + %invariant.gep186 = getelementptr inbounds [4 x double], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2WL, i64 0, i64 %idxprom115 br label %for.cond109.preheader for.cond109.preheader: ; preds = %if.end104, %for.inc152 %.pre163 = phi i32 [ 1, %if.end104 ], [ %inc153, %for.inc152 ] %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE3BVN.promoted = phi double [ %57, %if.end104 ], [ %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE3BVN.promoted160, %for.inc152 ] %idxprom113 = zext nneg i32 %.pre163 to i64 - %arrayidx116 = getelementptr inbounds nuw [11 x [4 x double]], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2XL, i64 0, i64 %idxprom113, i64 %idxprom115 + %arrayidx116 = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep, i64 0, i64 %idxprom113 %58 = load double, ptr %arrayidx116, align 8, !tbaa !107 - %arrayidx131 = getelementptr inbounds nuw [11 x [4 x double]], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2WL, i64 0, i64 %idxprom113, i64 %idxprom115 + %arrayidx131 = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep186, i64 0, i64 %idxprom113 br label %for.body111 for.body111: ; preds = %for.cond109.preheader, %for.inc149 diff --git a/bench/ruby/optimized/cp949.ll b/bench/ruby/optimized/cp949.ll index d63d72d80c5..01221766405 100644 --- a/bench/ruby/optimized/cp949.ll +++ b/bench/ruby/optimized/cp949.ll @@ -38,7 +38,7 @@ define internal range(i32 -2147483647, -2147483648) i32 @cp949_mbc_enc_len(ptr n 11: ; preds = %3 %12 = icmp eq i8 %8, -1 %13 = select i1 %12, i32 1, i32 -1 - br label %27 + br label %28 14: ; preds = %3 %15 = icmp eq ptr %4, %1 @@ -48,19 +48,20 @@ define internal range(i32 -2147483647, -2147483648) i32 @cp949_mbc_enc_len(ptr n %17 = getelementptr inbounds nuw [256 x i32], ptr @EncLen_CP949, i64 0, i64 %6 %18 = load i32, ptr %17, align 4, !tbaa !9 %19 = sub nsw i32 0, %18 - br label %27 + br label %28 20: ; preds = %14 - %21 = load i8, ptr %4, align 1, !tbaa !6 - %22 = zext i8 %21 to i64 - %23 = getelementptr inbounds nuw [2 x [256 x i8]], ptr @trans, i64 0, i64 %9, i64 %22 - %24 = load i8, ptr %23, align 1, !tbaa !6 - %25 = icmp eq i8 %24, -1 - %26 = select i1 %25, i32 2, i32 -1 - br label %27 - -27: ; preds = %20, %16, %11 - %.0 = phi i32 [ %13, %11 ], [ %19, %16 ], [ %26, %20 ] + %21 = getelementptr inbounds nuw [2 x [256 x i8]], ptr @trans, i64 0, i64 %9 + %22 = load i8, ptr %4, align 1, !tbaa !6 + %23 = zext i8 %22 to i64 + %24 = getelementptr inbounds nuw [256 x i8], ptr %21, i64 0, i64 %23 + %25 = load i8, ptr %24, align 1, !tbaa !6 + %26 = icmp eq i8 %25, -1 + %27 = select i1 %26, i32 2, i32 -1 + br label %28 + +28:; preds = %20, %16, %11 + %.0 = phi i32 [ %13, %11 ], [ %19, %16 ], [ %27, %20 ] ret i32 %.0 } diff --git a/bench/ruby/optimized/euc_tw.ll b/bench/ruby/optimized/euc_tw.ll index df712d6bd0b..4ede577d17c 100644 --- a/bench/ruby/optimized/euc_tw.ll +++ b/bench/ruby/optimized/euc_tw.ll @@ -37,7 +37,7 @@ define internal range(i32 -2147483647, -2147483648) i32 @euctw_mbc_enc_len(ptr n 11: ; preds = %3 %12 = icmp eq i8 %8, -1 %13 = select i1 %12, i32 1, i32 -1 - br label %53 + br label %56 14: ; preds = %3 %15 = icmp eq ptr %4, %1 @@ -47,57 +47,60 @@ define internal range(i32 -2147483647, -2147483648) i32 @euctw_mbc_enc_len(ptr n %17 = getelementptr inbounds nuw [256 x i32], ptr @EncLen_EUCTW, i64 0, i64 %6 %18 = load i32, ptr %17, align 4, !tbaa !9 %19 = sub nsw i32 0, %18 - br label %53 + br label %56 20: ; preds = %14 - %21 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %22 = load i8, ptr %4, align 1, !tbaa !6 - %23 = zext i8 %22 to i64 - %24 = getelementptr inbounds nuw [4 x [256 x i8]], ptr @trans, i64 0, i64 %9, i64 %23 - %25 = load i8, ptr %24, align 1, !tbaa !6 - %26 = sext i8 %25 to i64 - %27 = icmp slt i8 %25, 0 - br i1 %27, label %28, label %31 - -28: ; preds = %20 - %29 = icmp eq i8 %25, -1 - %30 = select i1 %29, i32 2, i32 -1 - br label %53 - -31: ; preds = %20 - %32 = icmp eq ptr %21, %1 - br i1 %32, label %53, label %33 - -33: ; preds = %31 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 3 - %35 = load i8, ptr %21, align 1, !tbaa !6 - %36 = zext i8 %35 to i64 - %37 = getelementptr inbounds nuw [4 x [256 x i8]], ptr @trans, i64 0, i64 %26, i64 %36 - %38 = load i8, ptr %37, align 1, !tbaa !6 - %39 = sext i8 %38 to i64 - %40 = icmp slt i8 %38, 0 - br i1 %40, label %41, label %44 - -41: ; preds = %33 - %42 = icmp eq i8 %38, -1 - %43 = select i1 %42, i32 3, i32 -1 - br label %53 - -44: ; preds = %33 - %45 = icmp eq ptr %34, %1 - br i1 %45, label %53, label %46 - -46: ; preds = %44 - %47 = load i8, ptr %34, align 1, !tbaa !6 - %48 = zext i8 %47 to i64 - %49 = getelementptr inbounds nuw [4 x [256 x i8]], ptr @trans, i64 0, i64 %39, i64 %48 - %50 = load i8, ptr %49, align 1, !tbaa !6 - %51 = icmp eq i8 %50, -1 - %52 = select i1 %51, i32 4, i32 -1 - br label %53 - -53: ; preds = %44, %31, %46, %41, %28, %16, %11 - %.0 = phi i32 [ %13, %11 ], [ %19, %16 ], [ %30, %28 ], [ %43, %41 ], [ %52, %46 ], [ -3, %31 ], [ -2, %44 ] + %21 = getelementptr inbounds nuw [4 x [256 x i8]], ptr @trans, i64 0, i64 %9 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %23 = load i8, ptr %4, align 1, !tbaa !6 + %24 = zext i8 %23 to i64 + %25 = getelementptr inbounds nuw [256 x i8], ptr %21, i64 0, i64 %24 + %26 = load i8, ptr %25, align 1, !tbaa !6 + %27 = sext i8 %26 to i64 + %28 = icmp slt i8 %26, 0 + br i1 %28, label %29, label %32 + +29:; preds = %20 + %30 = icmp eq i8 %26, -1 + %31 = select i1 %30, i32 2, i32 -1 + br label %56 + +32:; preds = %20 + %33 = icmp eq ptr %22, %1 + br i1 %33, label %56, label %34 + +34: ; preds = %32 + %35 = getelementptr inbounds nuw [4 x [256 x i8]], ptr @trans, i64 0, i64 %27 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 3 + %37 = load i8, ptr %22, align 1, !tbaa !6 + %38 = zext i8 %37 to i64 + %39 = getelementptr inbounds nuw [256 x i8], ptr %35, i64 0, i64 %38 + %40 = load i8, ptr %39, align 1, !tbaa !6 + %41 = sext i8 %40 to i64 + %42 = icmp slt i8 %40, 0 + br i1 %42, label %43, label %46 + +43:; preds = %34 + %44 = icmp eq i8 %40, -1 + %45 = select i1 %44, i32 3, i32 -1 + br label %56 + +46:; preds = %34 + %47 = icmp eq ptr %36, %1 + br i1 %47, label %56, label %48 + +48:; preds = %46 + %49 = getelementptr inbounds nuw [4 x [256 x i8]], ptr @trans, i64 0, i64 %41 + %50 = load i8, ptr %36, align 1, !tbaa !6 + %51 = zext i8 %50 to i64 + %52 = getelementptr inbounds nuw [256 x i8], ptr %49, i64 0, i64 %51 + %53 = load i8, ptr %52, align 1, !tbaa !6 + %54 = icmp eq i8 %53, -1 + %55 = select i1 %54, i32 4, i32 -1 + br label %56 + +56: ; preds = %46, %32, %48, %43, %29, %16, %11 + %.0 = phi i32 [ %13, %11 ], [ %19, %16 ], [ %31, %29 ], [ %45, %43 ], [ %55, %48 ], [ -3, %32 ], [ -2, %46 ] ret i32 %.0 } diff --git a/bench/ruby/optimized/regcomp.ll b/bench/ruby/optimized/regcomp.ll index c0f1717d9d4..70f3f0e1def 100644 --- a/bench/ruby/optimized/regcomp.ll +++ b/bench/ruby/optimized/regcomp.ll @@ -11185,11 +11185,12 @@ define internal fastcc range(i32 -6, 2) i32 @set_bm_skip(ptr noundef %0, ptr nou %52 = zext i8 %51 to i64 %53 = getelementptr i8, ptr %3, i64 %52 store i8 %49, ptr %53, align 1, !tbaa !34 + %invariant.gep.us = getelementptr [18 x i8], ptr %6, i64 0, i64 %indvars.iv29 br label %54 54: ; preds = %.lr.ph8.us, %54 %indvars.iv24 = phi i64 [ 0, %.lr.ph8.us ], [ %indvars.iv.next25, %54 ] - %55 = getelementptr [13 x [18 x i8]], ptr %6, i64 0, i64 %indvars.iv24, i64 %indvars.iv29 + %55 = getelementptr [13 x [18 x i8]], ptr %invariant.gep.us, i64 0, i64 %indvars.iv24 %56 = load i8, ptr %55, align 1, !tbaa !34 %57 = zext i8 %56 to i64 %58 = getelementptr i8, ptr %3, i64 %57 @@ -11221,7 +11222,7 @@ define internal fastcc range(i32 -6, 2) i32 @set_bm_skip(ptr noundef %0, ptr nou %66 = getelementptr inbounds nuw i8, ptr %59, i64 8 %67 = load i32, ptr %66, align 4, !tbaa !7 %68 = getelementptr [13 x [18 x i8]], ptr %6, i64 0, i64 %indvars.iv - %69 = call i32 %65(i32 noundef %67, ptr noundef %68, ptr noundef nonnull %9) #20 + %69 = call i32 %64(i32 noundef %67, ptr noundef %68, ptr noundef nonnull %9) #20 %.not76 = icmp eq i32 %69, %.071 br i1 %.not76, label %44, label %.loopexit @@ -11246,7 +11247,7 @@ define internal fastcc range(i32 -6, 2) i32 @set_bm_skip(ptr noundef %0, ptr nou br i1 %79, label %21, label %.loopexit, !llvm.loop !291 .loopexit: ; preds = %._crit_edge11, %64, %.lr.ph, %62, %.preheader4, %5 - %.0 = phi i32 [ -6, %5 ], [ 0, %.preheader4 ], [ 1, %62 ], [ 1, %.lr.ph ], [ 1, %64 ], [ 0, %._crit_edge11 ] + %.0 = phi i32 [ -6, %5 ], [ 0, %.preheader4 ], [ 1, %61 ], [ 1, %.lr.ph ], [ 1, %63 ], [ 0, %._crit_edge11 ] call void @llvm.lifetime.end.p0(i64 260, ptr nonnull %7) #20 call void @llvm.lifetime.end.p0(i64 234, ptr nonnull %6) #20 ret i32 %.0 diff --git a/bench/sdl/optimized/SDL_alsa_audio.ll b/bench/sdl/optimized/SDL_alsa_audio.ll index c4c17c0ce0e..af7a4556167 100644 --- a/bench/sdl/optimized/SDL_alsa_audio.ll +++ b/bench/sdl/optimized/SDL_alsa_audio.ll @@ -2243,10 +2243,9 @@ define internal fastcc range(i32 -1, 2) i32 @alsa_chmap_cfg(ptr noundef nonnull ._crit_edge.i.i: ; preds = %25 %31 = zext i32 %28 to i64 - %32 = shl nuw nsw i64 %31, 5 - %scevgep.i.i = getelementptr i8, ptr @sdl_channel_maps, i64 %32 + %32 = getelementptr inbounds nuw [9 x [8 x i32]], ptr @sdl_channel_maps, i64 0, i64 %31 %33 = shl nuw nsw i64 %31, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 16 %scevgep.i.i, i64 %33, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr nonnull align 16 %32, i64 %33, i1 false) %34 = load ptr, ptr %.03857.i.i, align 8 %35 = getelementptr inbounds nuw i8, ptr %34, i64 8 %36 = icmp eq i32 %28, 6 @@ -2372,10 +2371,9 @@ alsa_chmap_cfg_ordered_fixed_or_paired.exit.i: ; preds = %60 ._crit_edge.i5.i: ; preds = %72 %78 = zext i32 %75 to i64 - %79 = shl nuw nsw i64 %78, 5 - %scevgep.i6.i = getelementptr i8, ptr @sdl_channel_maps, i64 %79 + %79 = getelementptr inbounds nuw [9 x [8 x i32]], ptr @sdl_channel_maps, i64 0, i64 %78 %80 = shl nuw nsw i64 %78, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 16 %scevgep.i6.i, i64 %80, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr nonnull align 16 %79, i64 %80, i1 false) %81 = load ptr, ptr %.04573.i.i, align 8 %82 = getelementptr inbounds nuw i8, ptr %81, i64 8 %83 = icmp eq i32 %75, 6 @@ -2396,7 +2394,7 @@ alsa_chmap_cfg_ordered_fixed_or_paired.exit.i: ; preds = %60 br label %.lr.ph.i.i9.i .lr.ph.i.i9.i: ; preds = %._crit_edge.i.i14.i, %.lr.ph.i.preheader.i7.i - %indvars.iv.i.i10.i = phi i64 [ %indvars.iv.next.i.i15.i, %._crit_edge.i.i14.i ], [ 1, %.lr.ph.i.preheader.i7.i ] + %indvars.iv.i.i10.i = phi i64 [ %indvars.iv.next.i.i15.i, %._crit_edge.i.i13.i ], [ 1, %.lr.ph.i.preheader.i6.i ] %88 = getelementptr inbounds nuw i32, ptr %82, i64 %indvars.iv.i.i10.i %89 = load i32, ptr %88, align 4 br label %91 @@ -2407,7 +2405,7 @@ alsa_chmap_cfg_ordered_fixed_or_paired.exit.i: ; preds = %60 br i1 %.not17.i.i13.i, label %._crit_edge.i.i14.i, label %91, !llvm.loop !18 91: ; preds = %90, %.lr.ph.i.i9.i - %indvars.iv.i11.i = phi i64 [ %indvars.iv.next.i12.i, %90 ], [ 0, %.lr.ph.i.i9.i ] + %indvars.iv.i11.i = phi i64 [ %indvars.iv.next.i12.i, %90 ], [ 0, %.lr.ph.i.i8.i ] %92 = getelementptr inbounds nuw i32, ptr %82, i64 %indvars.iv.i11.i %93 = load i32, ptr %92, align 4 %94 = icmp eq i32 %93, %89 @@ -2423,7 +2421,7 @@ alsa_chmap_has_duplicate_position.exit.thread.i18.i: ; preds = %91 br i1 %95, label %alsa_chmap_has_duplicate_position.exit.i16.i, label %.lr.ph.i.i9.i, !llvm.loop !19 alsa_chmap_has_duplicate_position.exit.i16.i: ; preds = %._crit_edge.i.i14.i, %85, %.thread82.i.i - %96 = phi ptr [ %77, %.thread82.i.i ], [ %82, %85 ], [ %82, %._crit_edge.i.i14.i ] + %96 = phi ptr [ %77, %.thread82.i.i ], [ %82, %85 ], [ %82, %._crit_edge.i.i13.i ] call void (i32, ptr, ...) @SDL_LogDebug_REAL(i32 noundef 4, ptr noundef nonnull @.str.107) #8 %97 = load i32, ptr %16, align 4 %.not5264.i.i = icmp eq i32 %97, 0 @@ -2533,10 +2531,9 @@ alsa_chmap_cfg_ordered.exit.thread: ; preds = %110 ._crit_edge.i: ; preds = %124 %130 = zext i32 %127 to i64 - %131 = shl nuw nsw i64 %130, 5 - %scevgep.i = getelementptr i8, ptr @sdl_channel_maps, i64 %131 + %131 = getelementptr inbounds nuw [9 x [8 x i32]], ptr @sdl_channel_maps, i64 0, i64 %130 %132 = shl nuw nsw i64 %130, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %116, ptr align 16 %scevgep.i, i64 %132, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %116, ptr nonnull align 16 %131, i64 %132, i1 false) %133 = load ptr, ptr %.04677.i, align 8 %134 = getelementptr inbounds nuw i8, ptr %133, i64 8 %135 = icmp eq i32 %127, 6 diff --git a/bench/sdl/optimized/SDL_audioresample.ll b/bench/sdl/optimized/SDL_audioresample.ll index d31e476c78b..8977276e2fa 100644 --- a/bench/sdl/optimized/SDL_audioresample.ll +++ b/bench/sdl/optimized/SDL_audioresample.ll @@ -103,70 +103,72 @@ BesselI0.exit32.i.i: ; preds = %28 br i1 %exitcond.not.i.i, label %.preheader.i.i, label %18, !llvm.loop !6 .preheader.i.i: ; preds = %BesselI0.exit32.i.i, %98 - %indvars.iv46.i.i = phi i64 [ %indvars.iv.next47.i.i, %98 ], [ 0, %BesselI0.exit32.i.i ] - %51 = sub nuw nsw i64 7, %indvars.iv46.i.i - br label %52 - -52: ; preds = %52, %.preheader.i.i - %indvars.iv42.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next43.i.i, %52 ] - %53 = shl nuw nsw i64 %indvars.iv42.i.i, 3 - %54 = add nuw nsw i64 %53, %indvars.iv46.i.i - %55 = mul nuw nsw i64 %54, 3 - %56 = getelementptr inbounds nuw [121 x float], ptr %2, i64 0, i64 %55 - %57 = sub nuw nsw i64 4, %indvars.iv42.i.i - %58 = getelementptr inbounds nuw [8 x [10 x %union.Cubic]], ptr @ResamplerFilter, i64 0, i64 %indvars.iv46.i.i, i64 %57 - %59 = add nuw nsw i64 %indvars.iv42.i.i, 5 - %60 = getelementptr inbounds nuw [8 x [10 x %union.Cubic]], ptr @ResamplerFilter, i64 0, i64 %51, i64 %59 - %61 = load float, ptr %56, align 4 - %62 = getelementptr inbounds nuw i8, ptr %56, i64 4 - %63 = load float, ptr %62, align 4 - %64 = getelementptr inbounds nuw i8, ptr %56, i64 8 + %indvars.iv46.i.i = phi i64 [ %indvars.iv.next47.i.i, %100 ], [ 0, %BesselI0.exit32.i.i ] + %51 = getelementptr inbounds nuw [8 x [10 x %union.Cubic]], ptr @ResamplerFilter, i64 0, i64 %indvars.iv46.i.i + %52 = sub nuw nsw i64 7, %indvars.iv46.i.i + %53 = getelementptr inbounds nuw [8 x [10 x %union.Cubic]], ptr @ResamplerFilter, i64 0, i64 %52 + br label %54 + +54:; preds = %54, %.preheader.i.i + %indvars.iv42.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next43.i.i, %54 ] + %55 = shl nuw nsw i64 %indvars.iv42.i.i, 3 + %56 = add nuw nsw i64 %55, %indvars.iv46.i.i + %57 = mul nuw nsw i64 %56, 3 + %58 = getelementptr inbounds nuw [121 x float], ptr %2, i64 0, i64 %57 + %59 = sub nuw nsw i64 4, %indvars.iv42.i.i + %60 = getelementptr inbounds nuw [10 x %union.Cubic], ptr %51, i64 0, i64 %59 + %61 = add nuw nsw i64 %indvars.iv42.i.i, 5 + %62 = getelementptr inbounds nuw [10 x %union.Cubic], ptr %53, i64 0, i64 %61 + %63 = load float, ptr %58, align 4 + %64 = getelementptr inbounds nuw i8, ptr %58, i64 4 %65 = load float, ptr %64, align 4 - %66 = getelementptr inbounds nuw i8, ptr %56, i64 12 + %66 = getelementptr inbounds nuw i8, ptr %58, i64 8 %67 = load float, ptr %66, align 4 - store float %61, ptr %58, align 16 - %68 = fmul float %63, 9.000000e+00 - %69 = tail call float @llvm.fmuladd.f32(float %61, float -5.500000e+00, float %68) - %70 = tail call float @llvm.fmuladd.f32(float %65, float -4.500000e+00, float %69) - %71 = fadd float %67, %70 - %72 = getelementptr inbounds nuw i8, ptr %58, i64 4 - store float %71, ptr %72, align 4 - %73 = fmul float %63, -2.250000e+01 - %74 = tail call float @llvm.fmuladd.f32(float %61, float 9.000000e+00, float %73) - %75 = tail call float @llvm.fmuladd.f32(float %65, float 1.800000e+01, float %74) - %76 = tail call float @llvm.fmuladd.f32(float %67, float -4.500000e+00, float %75) - %77 = getelementptr inbounds nuw i8, ptr %58, i64 8 - store float %76, ptr %77, align 8 - %78 = fmul float %63, 1.350000e+01 - %79 = tail call float @llvm.fmuladd.f32(float %61, float -4.500000e+00, float %78) - %80 = tail call float @llvm.fmuladd.f32(float %65, float -1.350000e+01, float %79) - %81 = tail call float @llvm.fmuladd.f32(float %67, float 4.500000e+00, float %80) - %82 = getelementptr inbounds nuw i8, ptr %58, i64 12 - store float %81, ptr %82, align 4 - store float %67, ptr %60, align 16 - %83 = fmul float %65, 9.000000e+00 - %84 = tail call float @llvm.fmuladd.f32(float %67, float -5.500000e+00, float %83) - %85 = tail call float @llvm.fmuladd.f32(float %63, float -4.500000e+00, float %84) - %86 = fadd float %61, %85 - %87 = getelementptr inbounds nuw i8, ptr %60, i64 4 - store float %86, ptr %87, align 4 - %88 = fmul float %65, -2.250000e+01 - %89 = tail call float @llvm.fmuladd.f32(float %67, float 9.000000e+00, float %88) - %90 = tail call float @llvm.fmuladd.f32(float %63, float 1.800000e+01, float %89) - %91 = tail call float @llvm.fmuladd.f32(float %61, float -4.500000e+00, float %90) - %92 = getelementptr inbounds nuw i8, ptr %60, i64 8 - store float %91, ptr %92, align 8 - %93 = fmul float %65, 1.350000e+01 - %94 = tail call float @llvm.fmuladd.f32(float %67, float -4.500000e+00, float %93) - %95 = tail call float @llvm.fmuladd.f32(float %63, float -1.350000e+01, float %94) - %96 = tail call float @llvm.fmuladd.f32(float %61, float 4.500000e+00, float %95) - %97 = getelementptr inbounds nuw i8, ptr %60, i64 12 - store float %96, ptr %97, align 4 + %68 = getelementptr inbounds nuw i8, ptr %58, i64 12 + %69 = load float, ptr %68, align 4 + store float %63, ptr %60, align 16 + %70 = fmul float %65, 9.000000e+00 + %71 = tail call float @llvm.fmuladd.f32(float %63, float -5.500000e+00, float %70) + %72 = tail call float @llvm.fmuladd.f32(float %67, float -4.500000e+00, float %71) + %73 = fadd float %69, %72 + %74 = getelementptr inbounds nuw i8, ptr %60, i64 4 + store float %73, ptr %74, align 4 + %75 = fmul float %65, -2.250000e+01 + %76 = tail call float @llvm.fmuladd.f32(float %63, float 9.000000e+00, float %75) + %77 = tail call float @llvm.fmuladd.f32(float %67, float 1.800000e+01, float %76) + %78 = tail call float @llvm.fmuladd.f32(float %69, float -4.500000e+00, float %77) + %79 = getelementptr inbounds nuw i8, ptr %60, i64 8 + store float %78, ptr %79, align 8 + %80 = fmul float %65, 1.350000e+01 + %81 = tail call float @llvm.fmuladd.f32(float %63, float -4.500000e+00, float %80) + %82 = tail call float @llvm.fmuladd.f32(float %67, float -1.350000e+01, float %81) + %83 = tail call float @llvm.fmuladd.f32(float %69, float 4.500000e+00, float %82) + %84 = getelementptr inbounds nuw i8, ptr %60, i64 12 + store float %83, ptr %84, align 4 + store float %69, ptr %62, align 16 + %85 = fmul float %67, 9.000000e+00 + %86 = tail call float @llvm.fmuladd.f32(float %69, float -5.500000e+00, float %85) + %87 = tail call float @llvm.fmuladd.f32(float %65, float -4.500000e+00, float %86) + %88 = fadd float %63, %87 + %89 = getelementptr inbounds nuw i8, ptr %62, i64 4 + store float %88, ptr %89, align 4 + %90 = fmul float %67, -2.250000e+01 + %91 = tail call float @llvm.fmuladd.f32(float %69, float 9.000000e+00, float %90) + %92 = tail call float @llvm.fmuladd.f32(float %65, float 1.800000e+01, float %91) + %93 = tail call float @llvm.fmuladd.f32(float %63, float -4.500000e+00, float %92) + %94 = getelementptr inbounds nuw i8, ptr %62, i64 8 + store float %93, ptr %94, align 8 + %95 = fmul float %67, 1.350000e+01 + %96 = tail call float @llvm.fmuladd.f32(float %69, float -4.500000e+00, float %95) + %97 = tail call float @llvm.fmuladd.f32(float %65, float -1.350000e+01, float %96) + %98 = tail call float @llvm.fmuladd.f32(float %63, float 4.500000e+00, float %97) + %99 = getelementptr inbounds nuw i8, ptr %62, i64 12 + store float %98, ptr %99, align 4 %indvars.iv.next43.i.i = add nuw nsw i64 %indvars.iv42.i.i, 1 %exitcond45.not.i.i = icmp eq i64 %indvars.iv.next43.i.i, 5 - br i1 %exitcond45.not.i.i, label %98, label %52, !llvm.loop !7 + br i1 %exitcond45.not.i.i, label %98, label %54, !llvm.loop !7 -98: ; preds = %52 +98: ; preds = %54 %indvars.iv.next47.i.i = add nuw nsw i64 %indvars.iv46.i.i, 1 %exitcond49.not.i.i = icmp eq i64 %indvars.iv.next47.i.i, 8 br i1 %exitcond49.not.i.i, label %GenerateResamplerFilter.exit.i, label %.preheader.i.i, !llvm.loop !8 @@ -177,7 +179,7 @@ GenerateResamplerFilter.exit.i: ; preds = %98 br label %99 99: ; preds = %99, %GenerateResamplerFilter.exit.i - %indvars.iv.i = phi i64 [ 0, %GenerateResamplerFilter.exit.i ], [ %indvars.iv.next.i, %99 ] + %indvars.iv.i = phi i64 [ 0, %GenerateResamplerFilter.exit.i ], [ %indvars.iv.next.i, %101 ] %100 = getelementptr inbounds nuw [8 x ptr], ptr @ResampleFrame, i64 0, i64 %indvars.iv.i store ptr @ResampleFrame_Generic, ptr %100, align 8 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 diff --git a/bench/sdl/optimized/SDL_gamepad.ll b/bench/sdl/optimized/SDL_gamepad.ll index 4e401dea0df..c45c63dc3eb 100644 --- a/bench/sdl/optimized/SDL_gamepad.ll +++ b/bench/sdl/optimized/SDL_gamepad.ll @@ -678,7 +678,7 @@ define hidden void @SDL_GamepadSensorWatcher(i64 noundef %0, i32 noundef %1, i64 br i1 %.not27, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %5, %49 - %.028 = phi ptr [ %.0, %49 ], [ %.026, %5 ] + %.028 = phi ptr [ %.0, %51 ], [ %.026, %5 ] %8 = load ptr, ptr %.028, align 8 %9 = getelementptr inbounds nuw i8, ptr %8, i64 248 %10 = load ptr, ptr %9, align 8 @@ -698,15 +698,16 @@ define hidden void @SDL_GamepadSensorWatcher(i64 noundef %0, i32 noundef %1, i64 br label %17 17: ; preds = %26, %15 - %indvars.iv16.i = phi i64 [ 0, %15 ], [ %indvars.iv.next17.i, %26 ] + %indvars.iv16.i = phi i64 [ 0, %15 ], [ %indvars.iv.next17.i, %27 ] %18 = getelementptr inbounds nuw float, ptr %6, i64 %indvars.iv16.i store float 0.000000e+00, ptr %18, align 4 - br label %19 + %19 = getelementptr inbounds nuw [3 x [3 x float]], ptr %16, i64 0, i64 %indvars.iv16.i + br label %20 19: ; preds = %19, %17 - %indvars.iv.i = phi i64 [ 0, %17 ], [ %indvars.iv.next.i, %19 ] - %20 = phi float [ 0.000000e+00, %17 ], [ %25, %19 ] - %21 = getelementptr inbounds nuw [3 x [3 x float]], ptr %16, i64 0, i64 %indvars.iv16.i, i64 %indvars.iv.i + %indvars.iv.i = phi i64 [ 0, %17 ], [ %indvars.iv.next.i, %20 ] + %20 = phi float [ 0.000000e+00, %17 ], [ %25, %20 ] + %21 = getelementptr inbounds nuw [3 x float], ptr %19, i64 0, i64 %indvars.iv.i %22 = load float, ptr %21, align 4 %23 = getelementptr inbounds nuw float, ptr %3, i64 %indvars.iv.i %24 = load float, ptr %23, align 4 @@ -748,20 +749,21 @@ AdjustSensorOrientation.exit: ; preds = %26 br label %38 38: ; preds = %47, %36 - %indvars.iv16.i19 = phi i64 [ 0, %36 ], [ %indvars.iv.next17.i23, %47 ] + %indvars.iv16.i19 = phi i64 [ 0, %37 ], [ %indvars.iv.next17.i23, %49 ] %39 = getelementptr inbounds nuw float, ptr %7, i64 %indvars.iv16.i19 store float 0.000000e+00, ptr %39, align 4 - br label %40 + %41 = getelementptr inbounds nuw [3 x [3 x float]], ptr %38, i64 0, i64 %indvars.iv16.i19 + br label %42 40: ; preds = %40, %38 - %indvars.iv.i20 = phi i64 [ 0, %38 ], [ %indvars.iv.next.i21, %40 ] - %41 = phi float [ 0.000000e+00, %38 ], [ %46, %40 ] - %42 = getelementptr inbounds nuw [3 x [3 x float]], ptr %37, i64 0, i64 %indvars.iv16.i19, i64 %indvars.iv.i20 - %43 = load float, ptr %42, align 4 - %44 = getelementptr inbounds nuw float, ptr %3, i64 %indvars.iv.i20 + %indvars.iv.i20 = phi i64 [ 0, %39 ], [ %indvars.iv.next.i21, %42 ] + %41 = phi float [ 0.000000e+00, %39 ], [ %48, %42 ] + %42 = getelementptr inbounds nuw [3 x float], ptr %41, i64 0, i64 %indvars.iv.i20 %45 = load float, ptr %44, align 4 - %46 = call float @llvm.fmuladd.f32(float %43, float %45, float %41) - store float %46, ptr %39, align 4 + %46 = getelementptr inbounds nuw float, ptr %3, i64 %indvars.iv.i19 + %47 = load float, ptr %46, align 4 + %48 = call float @llvm.fmuladd.f32(float %45, float %47, float %43) + store float %48, ptr %40, align 4 %indvars.iv.next.i21 = add nuw nsw i64 %indvars.iv.i20, 1 %exitcond.not.i22 = icmp eq i64 %indvars.iv.next.i21, 3 br i1 %exitcond.not.i22, label %47, label %40, !llvm.loop !7 diff --git a/bench/slurm/optimized/cpu_frequency.ll b/bench/slurm/optimized/cpu_frequency.ll index ee2a9251380..220af47290a 100644 --- a/bench/slurm/optimized/cpu_frequency.ll +++ b/bench/slurm/optimized/cpu_frequency.ll @@ -495,8 +495,9 @@ define dso_local void @cpu_freq_init(ptr noundef readonly captures(none) %0) loc %176 = mul i32 %173, %175 %177 = add i32 %176, %166 %178 = load ptr, ptr @cpufreq, align 8 - %179 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %178, i64 %indvars.iv68, i32 3, i64 %indvars.iv.i.i - store i32 %177, ptr %179, align 4 + %179 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %178, i64 %indvars.iv68, i32 3 + %180 = getelementptr inbounds nuw [64 x i32], ptr %179, i64 0, i64 %indvars.iv.i.i + store i32 %177, ptr %180, align 4 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 63 br i1 %exitcond.not.i.i, label %180, label %174, !llvm.loop !11 @@ -524,17 +525,21 @@ define dso_local void @cpu_freq_init(ptr noundef readonly captures(none) %0) loc %.pre58.i = load ptr, ptr @cpufreq, align 8 br i1 %.not41.i, label %.loopexit.i, label %.lr.ph.i -.lr.ph.i: ; preds = %.preheader29.i, %199 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %199 ], [ 0, %.preheader29.i ] - %188 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %.pre58.i, i64 %indvars.iv68, i32 3, i64 %indvars.iv.i - %189 = load i32, ptr %188, align 4 - %190 = icmp ult i32 %.pre56.i, %189 - br i1 %190, label %.preheader.i, label %199 - -.preheader.i: ; preds = %.lr.ph.i - %191 = trunc nuw nsw i64 %indvars.iv.i to i32 - %192 = and i64 %indvars.iv.i, 4294967295 - %.not36.i = icmp samesign ult i64 %indvars.iv49.i, %192 +.lr.ph.i: ; preds = %.preheader29.i + %189 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %.pre58.i, i64 %indvars.iv68, i32 3 + br label %190 + +190: ; preds = %199, %.lr.ph.i + %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %203 ] + %191 = getelementptr inbounds nuw [64 x i32], ptr %189, i64 0, i64 %indvars.iv.i + %192 = load i32, ptr %191, align 4 + %193 = icmp ult i32 %.pre56.i, %192 + br i1 %193, label %.preheader.i, label %199 + +.preheader.i: ; preds = %190 + %194 = trunc nuw nsw i64 %indvars.iv.i to i32 + %195 = and i64 %indvars.iv.i, 4294967295 + %.not36.i = icmp samesign ult i64 %indvars.iv49.i, %195 br i1 %.not36.i, label %.loopexit.i, label %.lr.ph38.preheader.i .lr.ph38.preheader.i: ; preds = %.preheader.i @@ -545,19 +550,20 @@ define dso_local void @cpu_freq_init(ptr noundef readonly captures(none) %0) loc .lr.ph38.i: ; preds = %.lr.ph38.i, %.lr.ph38.preheader.i %indvars.iv51.i = phi i64 [ %indvars.iv49.i, %.lr.ph38.preheader.i ], [ %indvars.iv.next52.i, %.lr.ph38.i ] %194 = load ptr, ptr @cpufreq, align 8 - %195 = getelementptr inbounds %struct.cpu_freq_data, ptr %194, i64 %indvars.iv68, i32 3, i64 %indvars.iv51.i - %196 = load i32, ptr %195, align 4 - %197 = add nuw nsw i64 %indvars.iv51.i, 1 - %198 = getelementptr inbounds %struct.cpu_freq_data, ptr %194, i64 %indvars.iv68, i32 3, i64 %197 - store i32 %196, ptr %198, align 4 + %195 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %194, i64 %indvars.iv68, i32 3 + %199 = getelementptr inbounds [64 x i32], ptr %195, i64 0, i64 %indvars.iv51.i + %200 = load i32, ptr %199, align 4 + %201 = add nuw nsw i64 %indvars.iv51.i, 1 + %202 = getelementptr inbounds [64 x i32], ptr %198, i64 0, i64 %201 + store i32 %200, ptr %202, align 4 %indvars.iv.next52.i = add nsw i64 %indvars.iv51.i, -1 %.not.not.i = icmp sgt i64 %indvars.iv51.i, %193 br i1 %.not.not.i, label %.lr.ph38.i, label %.loopexit.loopexit.i, !llvm.loop !12 -199: ; preds = %.lr.ph.i +199: ; preds = %190 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %indvars.iv49.i - br i1 %exitcond.not.i, label %.loopexit.i, label %.lr.ph.i, !llvm.loop !13 + br i1 %exitcond.not.i, label %.loopexit.i, label %190, !llvm.loop !13 .loopexit.loopexit.i: ; preds = %.lr.ph38.i %.pre.i = load i32, ptr %3, align 4 @@ -565,12 +571,13 @@ define dso_local void @cpu_freq_init(ptr noundef readonly captures(none) %0) loc br label %.loopexit.i .loopexit.i: ; preds = %199, %.loopexit.loopexit.i, %.preheader.i, %.preheader29.i - %200 = phi ptr [ %.pre58.i, %.preheader.i ], [ %.pre58.i, %.preheader29.i ], [ %.pre57.i, %.loopexit.loopexit.i ], [ %.pre58.i, %199 ] - %201 = phi i32 [ %.pre56.i, %.preheader.i ], [ %.pre56.i, %.preheader29.i ], [ %.pre.i, %.loopexit.loopexit.i ], [ %.pre56.i, %199 ] - %.02533.i = phi i32 [ %191, %.preheader.i ], [ 0, %.preheader29.i ], [ %191, %.loopexit.loopexit.i ], [ %185, %199 ] - %202 = zext nneg i32 %.02533.i to i64 - %203 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %200, i64 %indvars.iv68, i32 3, i64 %202 - store i32 %201, ptr %203, align 4 + %200 = phi ptr [ %.pre58.i, %.preheader.i ], [ %.pre58.i, %.preheader29.i ], [ %.pre57.i, %.loopexit.loopexit.i ], [ %.pre58.i, %203 ] + %201 = phi i32 [ %.pre56.i, %.preheader.i ], [ %.pre56.i, %.preheader29.i ], [ %.pre.i, %.loopexit.loopexit.i ], [ %.pre56.i, %203 ] + %.02533.i = phi i32 [ %194, %.preheader.i ], [ 0, %.preheader29.i ], [ %194, %.loopexit.loopexit.i ], [ %185, %203 ] + %206 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %204, i64 %indvars.iv68, i32 3 + %207 = zext nneg i32 %.02533.i to i64 + %208 = getelementptr inbounds nuw [64 x i32], ptr %206, i64 0, i64 %207 + store i32 %205, ptr %208, align 4 %indvars.iv.next50.i = add nuw nsw i64 %indvars.iv49.i, 1 %exitcond55.not.i = icmp eq i64 %indvars.iv.next50.i, 63 br i1 %exitcond55.not.i, label %209, label %.preheader31.i, !llvm.loop !14 @@ -615,30 +622,30 @@ _cpu_freq_cpu_avail.exit: ; preds = %180, %204, %209 %.not61 = icmp eq i8 %220, 0 br i1 %.not61, label %.loopexit, label %.lr.ph55 -.lr.ph55: ; preds = %.preheader, %228 - %indvars.iv65 = phi i64 [ %indvars.iv.next66, %228 ], [ 0, %.preheader ] +.lr.ph55: ; preds = %.preheader, %233 + %indvars.iv65 = phi i64 [ %indvars.iv.next66, %233 ], [ 0, %.preheader ] %221 = call i32 @get_log_level() #10 %222 = icmp sgt i32 %221, 2 - br i1 %222, label %223, label %228 + br i1 %222, label %223, label %233 223: ; preds = %.lr.ph55 - %224 = load ptr, ptr @cpufreq, align 8 - %225 = getelementptr inbounds nuw i8, ptr %224, i64 4 - %226 = getelementptr inbounds nuw [64 x i32], ptr %225, i64 0, i64 %indvars.iv65 - %227 = load i32, ptr %226, align 4 - call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.19, i32 noundef %227) #10 - br label %228 - -228: ; preds = %.lr.ph55, %223 - %indvars.iv.next66 = add nuw nsw i64 %indvars.iv65, 1 %229 = load ptr, ptr @cpufreq, align 8 - %230 = getelementptr inbounds nuw i8, ptr %229, i64 1 - %231 = load i8, ptr %230, align 1 - %232 = zext i8 %231 to i64 - %233 = icmp samesign ult i64 %indvars.iv.next66, %232 - br i1 %233, label %.lr.ph55, label %.loopexit, !llvm.loop !15 + %230 = getelementptr inbounds nuw i8, ptr %229, i64 4 + %231 = getelementptr inbounds nuw [64 x i32], ptr %230, i64 0, i64 %indvars.iv65 + %232 = load i32, ptr %231, align 4 + call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.19, i32 noundef %232) #10 + br label %.loopexit -.loopexit: ; preds = %228, %.preheader, %_cpu_freq_cpu_avail.exit.thread, %215, %_cpu_freq_cpu_avail.exit, %.lr.ph58, %68 +.loopexit: ; preds = %.lr.ph55, %228 + %indvars.iv.next66 = add nuw nsw i64 %indvars.iv65, 1 + %234 = load ptr, ptr @cpufreq, align 8 + %235 = getelementptr inbounds nuw i8, ptr %234, i64 1 + %236 = load i8, ptr %235, align 1 + %237 = zext i8 %236 to i64 + %238 = icmp samesign ult i64 %indvars.iv.next66, %237 + br i1 %238, label %.lr.ph55, label %.loopexit, !llvm.loop !15 + +.loopexit: ; preds = %233, %.preheader, %_cpu_freq_cpu_avail.exit.thread, %220, %_cpu_freq_cpu_avail.exit, %.lr.ph58, %68 %indvars.iv.next69 = add nuw nsw i64 %indvars.iv68, 1 %234 = load i16, ptr @cpu_freq_count, align 2 %235 = zext i16 %234 to i64 @@ -1647,7 +1654,7 @@ define internal fastcc void @_cpu_freq_setup_data(ptr noundef captures(none) %0, 68: ; preds = %58 %69 = add i64 %65, 4294967295 %70 = and i64 %69, 4294967295 - %71 = getelementptr inbounds %struct.cpu_freq_data, ptr %63, i64 %14, i32 4, i64 %70 + %71 = getelementptr inbounds nuw [24 x i8], ptr %64, i64 0, i64 %70 %72 = load i8, ptr %71, align 1 %73 = icmp eq i8 %72, 10 br i1 %73, label %74, label %75 @@ -2594,23 +2601,25 @@ define dso_local i32 @_cpu_freq_freqspec_num(i32 noundef %0, i32 noundef %1) loc 81: ; preds = %77 %82 = tail call i32 @get_log_level() #10 %83 = icmp sgt i32 %82, 2 - br i1 %83, label %84, label %88 + br i1 %83, label %84, label %89 84: ; preds = %81 %85 = load ptr, ptr @cpufreq, align 8 - %86 = getelementptr inbounds %struct.cpu_freq_data, ptr %85, i64 %5, i32 3, i64 %indvars.iv.next - %87 = load i32, ptr %86, align 4 - tail call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.43, i32 noundef %0, i32 noundef %87) #10 - br label %88 - -88: ; preds = %84, %81 - %89 = load ptr, ptr @cpufreq, align 8 - %90 = getelementptr inbounds %struct.cpu_freq_data, ptr %89, i64 %5, i32 3, i64 %indvars.iv.next - %91 = load i32, ptr %90, align 4 + %86 = getelementptr inbounds %struct.cpu_freq_data, ptr %85, i64 %5, i32 3 + %87 = getelementptr inbounds nuw [64 x i32], ptr %86, i64 0, i64 %indvars.iv.next + %88 = load i32, ptr %87, align 4 + tail call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.43, i32 noundef %0, i32 noundef %88) #10 + br label %89 + +89:; preds = %84, %81 + %90 = load ptr, ptr @cpufreq, align 8 + %91 = getelementptr inbounds %struct.cpu_freq_data, ptr %90, i64 %5, i32 3 + %92 = getelementptr inbounds nuw [64 x i32], ptr %91, i64 0, i64 %indvars.iv.next + %93 = load i32, ptr %92, align 4 br label %.loopexit -.loopexit: ; preds = %73, %75, %10, %2, %4, %88, %62, %50, %39, %32, %29, %19, %16, %11 - %.047 = phi i32 [ %13, %11 ], [ %18, %16 ], [ %26, %19 ], [ %31, %29 ], [ %38, %32 ], [ %45, %39 ], [ %54, %50 ], [ %72, %62 ], [ %91, %88 ], [ -2, %4 ], [ -2, %2 ], [ -2, %10 ], [ -2, %73 ], [ %0, %75 ] +.loopexit: ; preds = %73, %75, %10, %2, %4, %89, %62, %50, %39, %32, %29, %19, %16, %11 + %.047 = phi i32 [ %13, %11 ], [ %18, %16 ], [ %26, %19 ], [ %31, %29 ], [ %38, %32 ], [ %45, %39 ], [ %54, %50 ], [ %72, %62 ], [ %93, %89 ], [ -2, %4 ], [ -2, %2 ], [ -2, %10 ], [ -2, %73 ], [ %0, %75 ] ret i32 %.047 } diff --git a/bench/slurm/optimized/proc_args.ll b/bench/slurm/optimized/proc_args.ll index bf7aaa7e2e9..7a917eb8d6e 100644 --- a/bench/slurm/optimized/proc_args.ll +++ b/bench/slurm/optimized/proc_args.ll @@ -1669,22 +1669,23 @@ define dso_local noundef zeroext i1 @verify_socket_core_thread_count(ptr noundef br label %.preheader .preheader: ; preds = %12, %20 - %indvars.iv60 = phi i64 [ 0, %12 ], [ %indvars.iv.next61, %20 ] - %.055 = phi ptr [ %0, %12 ], [ %21, %20 ] - br label %13 + %indvars.iv60 = phi i64 [ 0, %12 ], [ %indvars.iv.next61, %21 ] + %.055 = phi ptr [ %0, %12 ], [ %21, %21 ] + %13 = getelementptr inbounds nuw [3 x [48 x i8]], ptr %9, i64 0, i64 %indvars.iv60 + br label %14 13: ; preds = %.preheader, %15 - %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %15 ] - %.153 = phi ptr [ %.055, %.preheader ], [ %16, %15 ] + %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %16 ] + %.153 = phi ptr [ %.055, %.preheader ], [ %16, %16 ] %14 = load i8, ptr %.153, align 1 - switch i8 %14, label %15 [ + switch i8 %14, label %16 [ i8 0, label %.loopexit i8 58, label %.loopexit ] 15: ; preds = %13 %16 = getelementptr inbounds nuw i8, ptr %.153, i64 1 - %17 = getelementptr inbounds nuw [3 x [48 x i8]], ptr %9, i64 0, i64 %indvars.iv60, i64 %indvars.iv + %17 = getelementptr inbounds nuw [48 x i8], ptr %13, i64 0, i64 %indvars.iv store i8 %14, ptr %17, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 47 @@ -1695,8 +1696,8 @@ thread-pre-split: ; preds = %15 br label %.loopexit .loopexit: ; preds = %13, %13, %thread-pre-split - %.151 = phi ptr [ %16, %thread-pre-split ], [ %.153, %13 ], [ %.153, %13 ] - %18 = phi i8 [ %.pr, %thread-pre-split ], [ %14, %13 ], [ %14, %13 ] + %.151 = phi ptr [ %16, %thread-pre-split ], [ %.153, %14 ], [ %.153, %14 ] + %18 = phi i8 [ %.pr, %thread-pre-split ], [ %14, %14 ], [ %14, %14 ] %19 = icmp eq i8 %18, 0 br i1 %19, label %.split.loop.exit, label %20 @@ -1711,7 +1712,7 @@ thread-pre-split: ; preds = %15 br label %.split.loop.exit67 .split.loop.exit67: ; preds = %20, %.split.loop.exit - %.042.lcssa = phi i32 [ %22, %.split.loop.exit ], [ 3, %20 ] + %.042.lcssa = phi i32 [ %22, %.split.loop.exit ], [ 3, %21 ] %.not48 = icmp eq ptr %4, null br i1 %.not48, label %29, label %23 @@ -1778,7 +1779,7 @@ switch.lookup: ; preds = %23 br label %55 55: ; preds = %53, %10 - %.044 = phi i1 [ %54, %53 ], [ false, %10 ] + %.044 = phi i1 [ %54, %54 ], [ false, %10 ] call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %9) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #21 diff --git a/bench/spike/optimized/plic.ll b/bench/spike/optimized/plic.ll index a46fbb3daf2..28f4af4c8e7 100644 --- a/bench/spike/optimized/plic.ll +++ b/bench/spike/optimized/plic.ll @@ -1622,8 +1622,9 @@ define noundef zeroext i1 @_ZN6plic_t4loadEmmPh(ptr noundef nonnull align 8 dere br i1 %73, label %74, label %_ZN6plic_t13priority_readEmPj.exit 74: ; preds = %68 - %75 = getelementptr inbounds nuw %struct.plic_context_t, ptr %62, i64 %58, i32 4, i64 %69 - %76 = load i32, ptr %75, align 4, !tbaa !53 + %75 = getelementptr inbounds nuw %struct.plic_context_t, ptr %62, i64 %58, i32 4 + %76 = getelementptr inbounds nuw [32 x i32], ptr %75, i64 0, i64 %69 + %77 = load i32, ptr %76, align 4, !tbaa !53 br label %_ZN6plic_t13priority_readEmPj.exit 77: ; preds = %52 @@ -1639,34 +1640,34 @@ define noundef zeroext i1 @_ZN6plic_t4loadEmmPh(ptr noundef nonnull align 8 dere %85 = getelementptr inbounds nuw i8, ptr %0, i64 24 %86 = load ptr, ptr %85, align 8, !tbaa !28 %87 = load ptr, ptr %84, align 8, !tbaa !34 - %88 = ptrtoint ptr %86 to i64 %89 = ptrtoint ptr %87 to i64 - %90 = sub i64 %88, %89 - %91 = sdiv exact i64 %90, 1424 - %92 = icmp ult i64 %83, %91 - br i1 %92, label %93, label %_ZN6plic_t13priority_readEmPj.exit - -93: ; preds = %79 - %94 = getelementptr inbounds nuw %struct.plic_context_t, ptr %87, i64 %83 - switch i64 %82, label %_ZN6plic_t13priority_readEmPj.exit [ - i64 0, label %95 - i64 4, label %99 + %90 = ptrtoint ptr %88 to i64 + %91 = sub i64 %89, %90 + %92 = sdiv exact i64 %91, 1424 + %93 = icmp ult i64 %84, %92 + br i1 %93, label %94, label %_ZN6plic_t13priority_readEmPj.exit + +94: ; preds = %80 + %95 = getelementptr inbounds nuw %struct.plic_context_t, ptr %88, i64 %83 + switch i64 %83, label %_ZN6plic_t13priority_readEmPj.exit [ + i64 0, label %96 + i64 4, label %100 ] -95: ; preds = %93 - %96 = getelementptr inbounds nuw i8, ptr %94, i64 9 +95: ; preds = %94 + %96 = getelementptr inbounds nuw i8, ptr %95, i64 9 %97 = load i8, ptr %96, align 1, !tbaa !51 %98 = zext i8 %97 to i32 br label %_ZN6plic_t13priority_readEmPj.exit -99: ; preds = %93 - %100 = tail call noundef i32 @_ZN6plic_t13context_claimEP14plic_context_t(ptr noundef nonnull readonly align 8 dereferenceable(1204) %0, ptr noundef nonnull %94) +99: ; preds = %94 + %100 = tail call noundef i32 @_ZN6plic_t13context_claimEP14plic_context_t(ptr noundef nonnull readonly align 8 dereferenceable(1204) %0, ptr noundef nonnull %95) br label %_ZN6plic_t13priority_readEmPj.exit -_ZN6plic_t13priority_readEmPj.exit: ; preds = %46, %93, %99, %95, %74, %68, %38, %31, %24, %18, %79, %54, %77 - %.048 = phi i32 [ 0, %54 ], [ 0, %79 ], [ 0, %77 ], [ %28, %24 ], [ 0, %18 ], [ 0, %38 ], [ 0, %31 ], [ %76, %74 ], [ 0, %68 ], [ 0, %93 ], [ %100, %99 ], [ %98, %95 ], [ %49, %46 ] - %.040 = phi i1 [ false, %54 ], [ false, %79 ], [ false, %77 ], [ true, %24 ], [ true, %18 ], [ true, %38 ], [ true, %31 ], [ true, %74 ], [ true, %68 ], [ true, %93 ], [ true, %99 ], [ true, %95 ], [ true, %46 ] - %.039 = phi i64 [ %57, %54 ], [ %82, %79 ], [ %1, %77 ], [ %1, %24 ], [ %1, %18 ], [ %1, %38 ], [ %1, %31 ], [ %57, %74 ], [ %57, %68 ], [ %82, %93 ], [ 4, %99 ], [ 0, %95 ], [ %1, %46 ] +_ZN6plic_t13priority_readEmPj.exit: ; preds = %46, %94, %99, %95, %74, %68, %38, %31, %24, %18, %79, %54, %77 + %.048 = phi i32 [ 0, %54 ], [ 0, %80 ], [ 0, %78 ], [ %28, %24 ], [ 0, %18 ], [ 0, %38 ], [ 0, %31 ], [ %77, %74 ], [ 0, %68 ], [ 0, %94 ], [ %100, %100 ], [ %98, %96 ], [ %49, %46 ] + %.040 = phi i1 [ false, %54 ], [ false, %80 ], [ false, %78 ], [ true, %24 ], [ true, %18 ], [ true, %38 ], [ true, %31 ], [ true, %74 ], [ true, %68 ], [ true, %94 ], [ true, %100 ], [ true, %96 ], [ true, %46 ] + %.039 = phi i64 [ %57, %54 ], [ %82, %80 ], [ %1, %78 ], [ %1, %24 ], [ %1, %18 ], [ %1, %38 ], [ %1, %31 ], [ %57, %74 ], [ %57, %68 ], [ %82, %94 ], [ 4, %100 ], [ 0, %96 ], [ %1, %46 ] br label %.lr.ph.i47 .lr.ph.i47: ; preds = %.lr.ph.i47, %_ZN6plic_t13priority_readEmPj.exit diff --git a/bench/stb/optimized/stb_ds.ll b/bench/stb/optimized/stb_ds.ll index d792e3fe586..1b07555f827 100644 --- a/bench/stb/optimized/stb_ds.ll +++ b/bench/stb/optimized/stb_ds.ll @@ -985,10 +985,11 @@ define ptr @stbds_hmget_key_ts(ptr noundef readonly captures(address_is_null, re %25 = getelementptr inbounds nuw i8, ptr %19, i64 96 %26 = load ptr, ptr %25, align 8, !tbaa !13 %27 = lshr i64 %22, 3 - %28 = and i64 %22, 7 - %29 = getelementptr inbounds nuw %struct.stbds_hash_bucket, ptr %26, i64 %27, i32 1, i64 %28 - %30 = load i64, ptr %29, align 8, !tbaa !10 - br label %31 + %28 = getelementptr inbounds nuw %struct.stbds_hash_bucket, ptr %26, i64 %27, i32 1 + %29 = and i64 %22, 7 + %30 = getelementptr inbounds nuw [8 x i64], ptr %28, i64 0, i64 %29 + %31 = load i64, ptr %30, align 8, !tbaa !10 + br label %32 31: ; preds = %24, %21, %15 %storemerge30 = phi i64 [ -1, %15 ], [ %30, %24 ], [ -1, %21 ] @@ -1037,14 +1038,15 @@ define ptr @stbds_hmget_key(ptr noundef captures(address_is_null, ret: address, %24 = getelementptr inbounds nuw i8, ptr %18, i64 96 %25 = load ptr, ptr %24, align 8, !tbaa !13 %26 = lshr i64 %21, 3 - %27 = and i64 %21, 7 - %28 = getelementptr inbounds nuw %struct.stbds_hash_bucket, ptr %25, i64 %26, i32 1, i64 %27 - %29 = load i64, ptr %28, align 8, !tbaa !10 + %27 = getelementptr inbounds nuw %struct.stbds_hash_bucket, ptr %25, i64 %26, i32 1 + %28 = and i64 %21, 7 + %29 = getelementptr inbounds nuw [8 x i64], ptr %27, i64 0, i64 %28 + %30 = load i64, ptr %29, align 8, !tbaa !10 br label %stbds_hmget_key_ts.exit stbds_hmget_key_ts.exit: ; preds = %14, %20, %23, %7 %.pre-phi = phi i64 [ %15, %14 ], [ %15, %20 ], [ %15, %23 ], [ %.pre, %7 ] - %.0 = phi i64 [ -1, %14 ], [ -1, %20 ], [ %29, %23 ], [ -1, %7 ] + %.0 = phi i64 [ -1, %14 ], [ -1, %20 ], [ %30, %23 ], [ -1, %7 ] %.0.i = phi ptr [ %0, %14 ], [ %0, %20 ], [ %0, %23 ], [ %13, %7 ] %30 = getelementptr inbounds i8, ptr %.0.i, i64 %.pre-phi %31 = getelementptr inbounds i8, ptr %30, i64 -8 @@ -1929,11 +1931,11 @@ define noundef ptr @stbds_hmdel_key(ptr noundef returned captures(address_is_nul 46: ; preds = %42, %38 %.not = icmp eq i64 %27, %29 - br i1 %.not, label %66, label %53 + br i1 %.not, label %67, label %53 .thread: ; preds = %19 %.not91 = icmp eq i64 %27, %29 - br i1 %.not91, label %66, label %.thread92 + br i1 %.not91, label %67, label %.thread92 .thread92: ; preds = %.thread %47 = mul i64 %27, %1 @@ -1961,31 +1963,32 @@ define noundef ptr @stbds_hmdel_key(ptr noundef returned captures(address_is_nul %62 = load ptr, ptr %20, align 8, !tbaa !13 %63 = ashr i64 %.083, 3 %64 = and i64 %.083, 7 - %65 = getelementptr inbounds %struct.stbds_hash_bucket, ptr %62, i64 %63, i32 1, i64 %64 - store i64 %27, ptr %65, align 8, !tbaa !10 - br label %66 - -66: ; preds = %.thread, %61, %46 - %67 = load i64, ptr %11, align 8, !tbaa !3 - %68 = add i64 %67, -1 - store i64 %68, ptr %11, align 8, !tbaa !3 - %69 = load i64, ptr %30, align 8, !tbaa !21 - %70 = getelementptr inbounds nuw i8, ptr %13, i64 32 - %71 = load i64, ptr %70, align 8, !tbaa !24 - %72 = icmp ult i64 %69, %71 - br i1 %72, label %73, label %79 - -73: ; preds = %66 - %74 = getelementptr inbounds nuw i8, ptr %13, i64 8 - %75 = load i64, ptr %74, align 8, !tbaa !18 - %76 = icmp ugt i64 %75, 8 - br i1 %76, label %77, label %79 - -77: ; preds = %73 - %78 = lshr i64 %75, 1 + %65 = getelementptr inbounds %struct.stbds_hash_bucket, ptr %62, i64 %63, i32 1 + %66 = getelementptr inbounds nuw [8 x i64], ptr %65, i64 0, i64 %64 + store i64 %27, ptr %66, align 8, !tbaa !10 + br label %67 + +67:; preds = %.thread, %61, %46 + %68 = load i64, ptr %11, align 8, !tbaa !3 + %69 = add i64 %68, -1 + store i64 %69, ptr %11, align 8, !tbaa !3 + %70 = load i64, ptr %30, align 8, !tbaa !21 + %71 = getelementptr inbounds nuw i8, ptr %13, i64 32 + %72 = load i64, ptr %71, align 8, !tbaa !24 + %73 = icmp ult i64 %70, %72 + br i1 %73, label %74, label %80 + +74: ; preds = %67 + %75 = getelementptr inbounds nuw i8, ptr %13, i64 8 + %76 = load i64, ptr %75, align 8, !tbaa !18 + %77 = icmp ugt i64 %76, 8 + br i1 %77, label %78, label %80 + +78:; preds = %74 + %79 = lshr i64 %76, 1 br label %.sink.split -79: ; preds = %73, %66 +79: ; preds = %74, %67 %80 = load i64, ptr %33, align 8, !tbaa !20 %81 = getelementptr inbounds nuw i8, ptr %13, i64 48 %82 = load i64, ptr %81, align 8, !tbaa !23 @@ -1997,8 +2000,8 @@ define noundef ptr @stbds_hmdel_key(ptr noundef returned captures(address_is_nul %86 = load i64, ptr %85, align 8, !tbaa !18 br label %.sink.split -.sink.split: ; preds = %84, %77 - %.sink93 = phi i64 [ %78, %77 ], [ %86, %84 ] +.sink.split: ; preds = %84, %78 + %.sink93 = phi i64 [ %79, %78 ], [ %86, %85 ] %87 = tail call ptr @stbds_make_hash_index(i64 noundef %.sink93, ptr noundef nonnull %13) store ptr %87, ptr %12, align 8, !tbaa !37 tail call void @free(ptr noundef nonnull %13) #21 diff --git a/bench/stb/optimized/stb_image_resize2.ll b/bench/stb/optimized/stb_image_resize2.ll index 9e037dd1f41..f78a178f355 100644 --- a/bench/stb/optimized/stb_image_resize2.ll +++ b/bench/stb/optimized/stb_image_resize2.ll @@ -30256,7 +30256,7 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ store ptr %76, ptr %77, align 8, !tbaa !902 %78 = icmp eq i32 %.097, 0 %79 = icmp eq i32 %.097, 3 - switch i32 %.097, label %102 [ + switch i32 %.097, label %101 [ i32 3, label %80 i32 0, label %80 ] @@ -30287,19 +30287,20 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ %90 = getelementptr inbounds nuw i8, ptr %0, i64 472 %91 = load i32, ptr %90, align 8, !tbaa !966 %92 = icmp ult i32 %91, 5 - br i1 %92, label %93, label %96 + br i1 %92, label %98, label %93 93: ; preds = %89 - %94 = zext i1 %79 to i64 - %95 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr @__const.stbir__update_info_from_resize.decode_simple_scaled_or_not, i64 0, i64 %94, i64 %.095 - br label %117 + %94 = add i32 %91, -5 + %95 = urem i32 %94, 6 + %96 = zext nneg i32 %95 to i64 + %97 = getelementptr inbounds nuw [6 x [2 x [2 x ptr]]], ptr @__const.stbir__update_info_from_resize.decode_alphas_scaled_or_not, i64 0, i64 %96 + br label %98 -96: ; preds = %89 - %97 = add i32 %91, -5 - %98 = urem i32 %97, 6 - %99 = zext nneg i32 %98 to i64 - %100 = zext i1 %79 to i64 - %101 = getelementptr inbounds nuw [6 x [2 x [2 x ptr]]], ptr @__const.stbir__update_info_from_resize.decode_alphas_scaled_or_not, i64 0, i64 %99, i64 %100, i64 %.095 +96: ; preds = %89, %93 + %.sink = phi ptr [ %97, %93 ], [ @__const.stbir__update_info_from_resize.decode_simple_scaled_or_not, %89 ] + %99 = zext i1 %79 to i64 + %100 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr %.sink, i64 0, i64 %99 + %.099.in = getelementptr inbounds nuw [2 x ptr], ptr %100, i64 0, i64 %.095 br label %117 102: ; preds = %51 @@ -30318,16 +30319,17 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ %111 = add i32 %104, -5 %112 = urem i32 %111, 6 %113 = zext nneg i32 %112 to i64 + %113 = getelementptr inbounds nuw [6 x [5 x ptr]], ptr @__const.stbir__update_info_from_resize.decode_alphas, i64 0, i64 %112 %114 = add i32 %.097, -1 %115 = zext i32 %114 to i64 - %116 = getelementptr inbounds nuw [6 x [5 x ptr]], ptr @__const.stbir__update_info_from_resize.decode_alphas, i64 0, i64 %113, i64 %115 + %116 = getelementptr inbounds nuw [5 x ptr], ptr %113, i64 0, i64 %115 br label %117 -117: ; preds = %93, %96, %106, %110 - %.1100.in = phi ptr [ %109, %106 ], [ %116, %110 ], [ %95, %93 ], [ %101, %96 ] +117: ; preds = %105, %109, %98 + %.1100.in = phi ptr [ %.099.in, %98 ], [ %109, %105 ], [ %116, %109 ] %.1100 = load ptr, ptr %.1100.in, align 8, !tbaa !42 %118 = icmp eq i32 %.096, 3 - switch i32 %.096, label %140 [ + switch i32 %.096, label %139 [ i32 3, label %119 i32 0, label %119 ] @@ -30357,19 +30359,20 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ %128 = getelementptr inbounds nuw i8, ptr %0, i64 476 %129 = load i32, ptr %128, align 4, !tbaa !967 %130 = icmp ult i32 %129, 5 - br i1 %130, label %131, label %134 + br i1 %130, label %136, label %131 131: ; preds = %127 - %132 = zext i1 %118 to i64 - %133 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr @__const.stbir__update_info_from_resize.encode_simple_scaled_or_not, i64 0, i64 %132, i64 %.0 - br label %155 + %132 = add i32 %129, -5 + %133 = urem i32 %132, 6 + %134 = zext nneg i32 %133 to i64 + %135 = getelementptr inbounds nuw [6 x [2 x [2 x ptr]]], ptr @__const.stbir__update_info_from_resize.encode_alphas_scaled_or_not, i64 0, i64 %134 + br label %136 -134: ; preds = %127 - %135 = add i32 %129, -5 - %136 = urem i32 %135, 6 - %137 = zext nneg i32 %136 to i64 - %138 = zext i1 %118 to i64 - %139 = getelementptr inbounds nuw [6 x [2 x [2 x ptr]]], ptr @__const.stbir__update_info_from_resize.encode_alphas_scaled_or_not, i64 0, i64 %137, i64 %138, i64 %.0 +134: ; preds = %127, %131 + %.sink120 = phi ptr [ %135, %131 ], [ @__const.stbir__update_info_from_resize.encode_simple_scaled_or_not, %127 ] + %137 = zext i1 %118 to i64 + %138 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr %.sink120, i64 0, i64 %137 + %.098.in = getelementptr inbounds nuw [2 x ptr], ptr %138, i64 0, i64 %.0 br label %155 140: ; preds = %117 @@ -30388,13 +30391,14 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ %149 = add i32 %142, -5 %150 = urem i32 %149, 6 %151 = zext nneg i32 %150 to i64 + %151 = getelementptr inbounds nuw [6 x [5 x ptr]], ptr @__const.stbir__update_info_from_resize.encode_alphas, i64 0, i64 %150 %152 = add i32 %.096, -1 %153 = zext i32 %152 to i64 - %154 = getelementptr inbounds nuw [6 x [5 x ptr]], ptr @__const.stbir__update_info_from_resize.encode_alphas, i64 0, i64 %151, i64 %153 + %154 = getelementptr inbounds nuw [5 x ptr], ptr %151, i64 0, i64 %153 br label %155 -155: ; preds = %131, %134, %144, %148 - %.1.in = phi ptr [ %147, %144 ], [ %154, %148 ], [ %133, %131 ], [ %139, %134 ] +155: ; preds = %143, %147, %136 + %.1.in = phi ptr [ %.098.in, %136 ], [ %147, %143 ], [ %154, %147 ] %.1 = load ptr, ptr %.1.in, align 8, !tbaa !42 %156 = getelementptr inbounds nuw i8, ptr %0, i64 336 store i32 %.097, ptr %156, align 8, !tbaa !449 diff --git a/bench/tev/optimized/UberShader.ll b/bench/tev/optimized/UberShader.ll index 9021dfe319f..d053d08d5a0 100644 --- a/bench/tev/optimized/UberShader.ll +++ b/bench/tev/optimized/UberShader.ll @@ -1577,11 +1577,12 @@ define dso_local void @_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_(ptr br label %7 7: ; preds = %7, %3 - %.05.i = phi i64 [ 0, %3 ], [ %9, %7 ] - %8 = getelementptr inbounds nuw [3 x [3 x float]], ptr %5, i64 0, i64 %.05.i, i64 %.05.i - store float 0.000000e+00, ptr %8, align 4 - %9 = add nuw nsw i64 %.05.i, 1 - %exitcond.not.i = icmp eq i64 %9, 3 + %.05.i = phi i64 [ 0, %3 ], [ %10, %7 ] + %8 = getelementptr inbounds nuw [3 x [3 x float]], ptr %5, i64 0, i64 %.05.i + %9 = getelementptr inbounds nuw [3 x float], ptr %8, i64 0, i64 %.05.i + store float 0.000000e+00, ptr %9, align 4 + %10 = add nuw nsw i64 %.05.i, 1 + %exitcond.not.i = icmp eq i64 %10, 3 br i1 %exitcond.not.i, label %_ZN7nanogui6MatrixIfLm3EEC2Ef.exit, label %7, !llvm.loop !27 _ZN7nanogui6MatrixIfLm3EEC2Ef.exit: ; preds = %7 @@ -1593,12 +1594,13 @@ _ZN7nanogui6MatrixIfLm3EEC2Ef.exit: ; preds = %7 br label %11 11: ; preds = %11, %_ZN7nanogui6MatrixIfLm3EEC2Ef.exit - %.05.i.i = phi i64 [ 0, %_ZN7nanogui6MatrixIfLm3EEC2Ef.exit ], [ %13, %11 ] - %12 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %.05.i.i, i64 %.05.i.i - store float 0.000000e+00, ptr %12, align 4 - %13 = add nuw nsw i64 %.05.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %13, 3 - br i1 %exitcond.not.i.i, label %_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1_7TextureERKNS1_6MatrixIfLm3EEEfffbNS_8ETonemapERKNSt3__18optionalINS_3BoxIiLj2EEEEE.exit, label %11, !llvm.loop !27 + %.05.i.i = phi i64 [ 0, %_ZN7nanogui6MatrixIfLm3EEC2Ef.exit ], [ %15, %12 ] + %12 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %.05.i.i + %14 = getelementptr inbounds nuw [3 x float], ptr %12, i64 0, i64 %.05.i.i + store float 0.000000e+00, ptr %14, align 4 + %15 = add nuw nsw i64 %.05.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %15, 3 + br i1 %exitcond.not.i.i, label %_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1_7TextureERKNS1_6MatrixIfLm3EEEfffbNS_8ETonemapERKNSt3__18optionalINS_3BoxIiLj2EEEEE.exit, label %12, !llvm.loop !27 _ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1_7TextureERKNS1_6MatrixIfLm3EEEfffbNS_8ETonemapERKNSt3__18optionalINS_3BoxIiLj2EEEEE.exit: ; preds = %11 call void @_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1_7TextureERKNS1_6MatrixIfLm3EEES7_SB_fffbNS_8ETonemapENS_7EMetricERKNSt3__18optionalINS_3BoxIiLj2EEEEE(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 4 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef null, ptr noundef nonnull readonly align 4 dereferenceable(36) %5, ptr noundef null, ptr noundef nonnull align 4 dereferenceable(36) %4, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i1 noundef zeroext false, i32 noundef 0, i32 noundef 0, ptr noundef nonnull readonly align 4 dereferenceable(17) %6) @@ -1613,11 +1615,12 @@ define dso_local void @_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1 br label %13 13: ; preds = %13, %11 - %.05.i = phi i64 [ 0, %11 ], [ %15, %13 ] - %14 = getelementptr inbounds nuw [3 x [3 x float]], ptr %12, i64 0, i64 %.05.i, i64 %.05.i - store float 0.000000e+00, ptr %14, align 4 - %15 = add nuw nsw i64 %.05.i, 1 - %exitcond.not.i = icmp eq i64 %15, 3 + %.05.i = phi i64 [ 0, %11 ], [ %16, %13 ] + %14 = getelementptr inbounds nuw [3 x [3 x float]], ptr %12, i64 0, i64 %.05.i + %15 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %.05.i + store float 0.000000e+00, ptr %15, align 4 + %16 = add nuw nsw i64 %.05.i, 1 + %exitcond.not.i = icmp eq i64 %16, 3 br i1 %exitcond.not.i, label %_ZN7nanogui6MatrixIfLm3EEC2Ef.exit, label %13, !llvm.loop !27 _ZN7nanogui6MatrixIfLm3EEC2Ef.exit: ; preds = %13 diff --git a/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll b/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll index cf1f19ed564..1c46a198ded 100644 --- a/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll +++ b/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll @@ -747,25 +747,26 @@ define void @_RNvMNtCs8mTrBI1stz4_15turborepo_vt1006parserNtB2_6Parser7process(p %32 = getelementptr inbounds nuw [256 x i8], ptr @_RNvNtCscmPyG4XWoQZ_3vte5table13STATE_CHANGES, i64 0, i64 %31 %33 = load i8, ptr %32, align 1, !noalias !78, !noundef !4 %34 = icmp eq i8 %33, 0 - br i1 %34, label %35, label %38 + br i1 %34, label %35, label %39 35: ; preds = %30 - %36 = getelementptr inbounds nuw [16 x [256 x i8]], ptr @_RNvNtCscmPyG4XWoQZ_3vte5table13STATE_CHANGES, i64 0, i64 %23, i64 %31 - %37 = load i8, ptr %36, align 1, !noalias !78, !noundef !4 - br label %38 - -38: ; preds = %35, %30 - %.sroa.01.0.i = phi i8 [ %37, %35 ], [ %33, %30 ] - %39 = and i8 %.sroa.01.0.i, 15 - %40 = lshr i8 %.sroa.01.0.i, 4 - %41 = icmp eq i8 %39, 0 - br i1 %41, label %42, label %43 - -42: ; preds = %38 - call fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_actionNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBT_(ptr noalias noundef nonnull align 8 dereferenceable(1432) %7, ptr noalias noundef nonnull align 8 dereferenceable(344) %0, i8 noundef range(i8 0, 16) %40, i8 noundef %21) + %36 = getelementptr inbounds nuw [16 x [256 x i8]], ptr @_RNvNtCscmPyG4XWoQZ_3vte5table13STATE_CHANGES, i64 0, i64 %23 + %37 = getelementptr inbounds nuw [256 x i8], ptr %36, i64 0, i64 %31 + %38 = load i8, ptr %37, align 1, !noalias !78, !noundef !4 + br label %39 + +39: ; preds = %35, %30 + %.sroa.01.0.i = phi i8 [ %38, %35 ], [ %33, %30 ] + %40 = and i8 %.sroa.01.0.i, 15 + %41 = lshr i8 %.sroa.01.0.i, 4 + %42 = icmp eq i8 %40, 0 + br i1 %42, label %43, label %44 + +43:; preds = %39 + call fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_actionNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBT_(ptr noalias noundef nonnull align 8 dereferenceable(1432) %7, ptr noalias noundef nonnull align 8 dereferenceable(344) %0, i8 noundef range(i8 0, 16) %41, i8 noundef %21) br label %_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser7advanceNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBL_.exit -43: ; preds = %38 +43: ; preds = %39 %cond.i.i = icmp eq i8 %22, 13 br i1 %cond.i.i, label %46, label %44 @@ -778,7 +779,7 @@ define void @_RNvMNtCs8mTrBI1stz4_15turborepo_vt1006parserNtB2_6Parser7process(p br label %44 47: ; preds = %48, %44 - switch i8 %39, label %49 [ + switch i8 %40, label %50 [ i8 1, label %50 i8 5, label %50 i8 9, label %51 @@ -787,11 +788,11 @@ define void @_RNvMNtCs8mTrBI1stz4_15turborepo_vt1006parserNtB2_6Parser7process(p ] 48: ; preds = %44 - call fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_actionNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBT_(ptr noalias noundef nonnull align 8 dereferenceable(1432) %7, ptr noalias noundef nonnull align 8 dereferenceable(344) %0, i8 noundef range(i8 0, 16) %40, i8 noundef %21) + call fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_actionNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBT_(ptr noalias noundef nonnull align 8 dereferenceable(1432) %7, ptr noalias noundef nonnull align 8 dereferenceable(344) %0, i8 noundef range(i8 0, 16) %41, i8 noundef %21) br label %47 49: ; preds = %52, %51, %50, %47 - store i8 %39, ptr %8, align 8, !alias.scope !86, !noalias !89 + store i8 %40, ptr %8, align 8, !alias.scope !86, !noalias !89 br label %_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser7advanceNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBL_.exit 50: ; preds = %47, %47, %47 @@ -811,7 +812,7 @@ define void @_RNvMNtCs8mTrBI1stz4_15turborepo_vt1006parserNtB2_6Parser7process(p store i64 0, ptr %10, align 8, !alias.scope !99, !noalias !101 br label %49 -_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser7advanceNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBL_.exit: ; preds = %25, %42, %49 +_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser7advanceNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBL_.exit: ; preds = %25, %43, %49 %53 = icmp eq ptr %20, %5 br i1 %53, label %._crit_edge, label %19 } diff --git a/bench/verilator/optimized/V3PreProc.ll b/bench/verilator/optimized/V3PreProc.ll index fe372907807..5f860d8aab0 100644 --- a/bench/verilator/optimized/V3PreProc.ll +++ b/bench/verilator/optimized/V3PreProc.ll @@ -74101,15 +74101,16 @@ _ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit: ; preds = %91, %94 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %99, i64 -8 %.sroa.4.0.copyload = load i8, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !1367 %100 = zext i8 %.sroa.4.0.copyload to i64 - %101 = zext i8 %74 to i64 - %102 = getelementptr inbounds nuw [10 x [10 x i8]], ptr %22, i64 0, i64 %100, i64 %101 - %103 = load i8, ptr %102, align 1, !tbaa !1580 - %104 = call noundef i32 @_ZN9V3PreExpr5debugEv() - %105 = icmp sgt i32 %104, 8 - br i1 %105, label %106, label %144, !prof !797 - -106: ; preds = %_ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit - %107 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.62, i64 noundef 2) + %101 = getelementptr inbounds nuw [10 x [10 x i8]], ptr %22, i64 0, i64 %100 + %102 = zext i8 %74 to i64 + %103 = getelementptr inbounds nuw [10 x i8], ptr %101, i64 0, i64 %102 + %104 = load i8, ptr %103, align 1, !tbaa !1580 + %105 = call noundef i32 @_ZN9V3PreExpr5debugEv() + %106 = icmp sgt i32 %105, 8 + br i1 %106, label %107, label %145, !prof !797 + +107:; preds = %_ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit + %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.62, i64 noundef 2) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #45 call void @_ZN7V3Error7lineStrB5cxx11EPKci(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull @.str.263, i32 noundef 254) %108 = load ptr, ptr %4, align 8, !tbaa !114 @@ -74117,16 +74118,16 @@ _ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit: ; preds = %91, %94 %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef %108, i64 noundef %109) to label %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16 unwind label %136 -_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16: ; preds = %106 +_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16: ; preds = %107 %111 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull @.str.489, i64 noundef 11) to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 unwind label %136 _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17: ; preds = %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16 - %112 = zext i8 %103 to i64 + %112 = zext i8 %104 to i64 %113 = getelementptr inbounds nuw [5 x ptr], ptr @_ZZN9V3PreExpr11actionAsciiENS_8action_tEE5names, i64 0, i64 %112 %114 = load ptr, ptr %113, align 8, !tbaa !4 %115 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef %114) - to label %116 unwind label %136 + to label %117 unwind label %136 116: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 %117 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull @.str.490, i64 noundef 17) @@ -74136,7 +74137,7 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18: ; preds = %116 %118 = getelementptr inbounds nuw [10 x ptr], ptr @_ZZNK14V3PreExprToken5asciiEvE5names, i64 0, i64 %100 %119 = load ptr, ptr %118, align 8, !tbaa !4 %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef %119) - to label %121 unwind label %136 + to label %122 unwind label %136 121: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18 %122 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull @.str.491, i64 noundef 2) @@ -74148,7 +74149,7 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19: ; preds = %121 %125 = getelementptr inbounds nuw [10 x ptr], ptr @_ZZNK14V3PreExprToken5asciiEvE5names, i64 0, i64 %124 %126 = load ptr, ptr %125, align 8, !tbaa !4 %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef %126) - to label %128 unwind label %136 + to label %129 unwind label %136 128: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19 %129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull @.str.492, i64 noundef 2) @@ -74175,7 +74176,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23: ; preds = %_ZN call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #45 br label %144 -136: ; preds = %128, %121, %116, %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16, %106, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 +136: ; preds = %128, %121, %116, %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16, %107, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 %137 = landingpad { ptr, i32 } cleanup %138 = load ptr, ptr %4, align 8, !tbaa !114 @@ -74199,7 +74200,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26: ; preds = %_ZN br label %175 144: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23, %_ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit - switch i8 %103, label %._crit_edge.i.i [ + switch i8 %104, label %._crit_edge.i.i [ i8 2, label %145 i8 3, label %146 i8 1, label %.critedge @@ -74239,7 +74240,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26: ; preds = %_ZN store i64 0, ptr %159, align 8, !tbaa !115 store i8 0, ptr %158, align 8, !tbaa !27 invoke void @_ZN8FileLine10v3errorEndERNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEERKNS0_12basic_stringIcS3_S4_EE(ptr noundef nonnull align 8 dereferenceable(40) %154, ptr noundef nonnull align 8 dereferenceable(112) %156, ptr noundef nonnull align 8 dereferenceable(32) %5) - to label %160 unwind label %167 + to label %161 unwind label %167 160: ; preds = %._crit_edge.i.i %161 = load ptr, ptr %5, align 8, !tbaa !114 diff --git a/bench/wireshark/optimized/packet-ipmi-se.ll b/bench/wireshark/optimized/packet-ipmi-se.ll index 35d94eca916..b7fb4615953 100644 --- a/bench/wireshark/optimized/packet-ipmi-se.ll +++ b/bench/wireshark/optimized/packet-ipmi-se.ll @@ -2282,13 +2282,14 @@ define internal void @rs2d(ptr noundef %0, ptr readnone captures(none) %1, ptr n %14 = load ptr, ptr %13, align 8 %15 = load i32, ptr %14, align 4 %16 = tail call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef %2, ptr noundef %0, i32 noundef %12, i32 noundef 1, i32 noundef %15, ptr noundef null, ptr noundef nonnull @.str.1187, i32 noundef %indvars30) - %17 = trunc i64 %indvars.iv28 to i32 - %18 = or i32 %17, 2 - br label %19 + %17 = getelementptr [2 x [8 x ptr]], ptr @rs2d.bsel, i64 0, i64 %indvars.iv28 + %18 = trunc i64 %indvars.iv28 to i32 + %19 = or i32 %18, 2 + br label %20 19: ; preds = %.lr.ph, %25 %indvars.iv = phi i64 [ 7, %.lr.ph ], [ %indvars.iv.next, %25 ] - %20 = getelementptr [2 x [8 x ptr]], ptr @rs2d.bsel, i64 0, i64 %indvars.iv28, i64 %indvars.iv + %20 = getelementptr [8 x ptr], ptr %17, i64 0, i64 %indvars.iv %21 = load ptr, ptr %20, align 8 %.not = icmp eq ptr %21, null br i1 %.not, label %25, label %22 @@ -3582,8 +3583,8 @@ define internal fastcc void @add_events(ptr noundef %0, i32 noundef range(i32 1, br i1 %7, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %5, %28 - %indvars.iv35 = phi i64 [ %indvars.iv.next36, %28 ], [ 0, %5 ] - %.033 = phi i32 [ %29, %28 ], [ %1, %5 ] + %indvars.iv35 = phi i64 [ %indvars.iv.next36, %29 ], [ 0, %5 ] + %.033 = phi i32 [ %29, %29 ], [ %1, %5 ] %8 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.033) %9 = zext i8 %8 to i32 %10 = getelementptr [4 x ptr], ptr @add_events.tsel, i64 0, i64 %indvars.iv35 @@ -3591,11 +3592,12 @@ define internal fastcc void @add_events(ptr noundef %0, i32 noundef range(i32 1, %12 = load i32, ptr %11, align 4 %13 = trunc nuw nsw i64 %indvars.iv35 to i32 %14 = tail call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef %2, ptr noundef %0, i32 noundef %.033, i32 noundef 1, i32 noundef %12, ptr noundef null, ptr noundef nonnull @.str.1180, ptr noundef %4, i32 noundef %13) - br label %15 + %15 = getelementptr [4 x [8 x ptr]], ptr @add_events.bsel, i64 0, i64 %indvars.iv35 + br label %16 15: ; preds = %.lr.ph, %27 - %indvars.iv = phi i64 [ 7, %.lr.ph ], [ %indvars.iv.next, %27 ] - %16 = getelementptr [4 x [8 x ptr]], ptr @add_events.bsel, i64 0, i64 %indvars.iv35, i64 %indvars.iv + %indvars.iv = phi i64 [ 7, %.lr.ph ], [ %indvars.iv.next, %28 ] + %16 = getelementptr [8 x ptr], ptr %15, i64 0, i64 %indvars.iv %17 = load ptr, ptr %16, align 8 %.not = icmp eq ptr %17, null br i1 %.not, label %27, label %18 diff --git a/bench/wireshark/optimized/packet-rrc.ll b/bench/wireshark/optimized/packet-rrc.ll index 32b1c1a83ff..479f431e6d8 100644 --- a/bench/wireshark/optimized/packet-rrc.ll +++ b/bench/wireshark/optimized/packet-rrc.ll @@ -89207,10 +89207,11 @@ private_data_get_rlc_ciphering_sqn.exit: ; preds = %private_data_get_rb %53 = load i8, ptr %52, align 1, !range !6, !noundef !7 %54 = xor i8 %53, 1 %55 = zext i32 %48 to i64 - %56 = zext nneg i8 %54 to i64 - %57 = getelementptr [31 x [2 x i32]], ptr %30, i64 0, i64 %55, i64 %56 - store i32 %51, ptr %57, align 4 - br label %58 + %56 = getelementptr [31 x [2 x i32]], ptr %30, i64 0, i64 %55 + %57 = zext nneg i8 %54 to i64 + %58 = getelementptr [2 x i32], ptr %56, i64 0, i64 %57 + store i32 %51, ptr %58, align 4 + br label %59 58: ; preds = %private_data_get_ciphering_info.exit, %5, %private_data_get_rlc_ciphering_sqn.exit ret i32 %16 diff --git a/bench/wireshark/optimized/tvbuff_hpackhuff.ll b/bench/wireshark/optimized/tvbuff_hpackhuff.ll index f7efa126266..2f5a25b5012 100644 --- a/bench/wireshark/optimized/tvbuff_hpackhuff.ll +++ b/bench/wireshark/optimized/tvbuff_hpackhuff.ll @@ -16,51 +16,53 @@ define ptr @tvb_get_hpack_huffman_strbuf(ptr noundef %0, ptr noundef %1, i32 nou %.not24.i = icmp eq i32 %3, 0 br i1 %.not24.i, label %._crit_edge.thread.i, label %.lr.ph.i -.lr.ph.i: ; preds = %4, %32 - %9 = phi i16 [ %28, %32 ], [ 0, %4 ] - %.01926.i = phi ptr [ %10, %32 ], [ %5, %4 ] - %.02025.i = phi i64 [ %33, %32 ], [ %6, %4 ] +.lr.ph.i: ; preds = %4, %34 + %9 = phi i16 [ %30, %34 ], [ 0, %4 ] + %.01926.i = phi ptr [ %10, %34 ], [ %5, %4 ] + %.02025.i = phi i64 [ %35, %34 ], [ %6, %4 ] %10 = getelementptr i8, ptr %.01926.i, i64 1 %11 = load i8, ptr %.01926.i, align 1 %12 = and i16 %9, 511 %13 = zext nneg i16 %12 to i64 - %14 = zext i8 %11 to i32 - %15 = lshr i32 %14, 4 - %16 = zext nneg i32 %15 to i64 - %17 = getelementptr [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %13, i64 %16 - %18 = load i16, ptr %17, align 2 - %.not22.i = icmp sgt i16 %18, -1 - br i1 %.not22.i, label %22, label %19 - -19: ; preds = %.lr.ph.i - %20 = getelementptr inbounds nuw i8, ptr %17, i64 2 - %21 = load i8, ptr %20, align 2 - tail call void @wmem_strbuf_append_c(ptr noundef %8, i8 noundef signext %21) - br label %22 - -22: ; preds = %19, %.lr.ph.i - %23 = and i16 %18, 511 - %24 = zext nneg i16 %23 to i64 - %25 = and i32 %14, 15 - %26 = zext nneg i32 %25 to i64 - %27 = getelementptr [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %24, i64 %26 - %28 = load i16, ptr %27, align 2 - %.not23.i = icmp sgt i16 %28, -1 - br i1 %.not23.i, label %32, label %29 - -29: ; preds = %22 - %30 = getelementptr inbounds nuw i8, ptr %27, i64 2 - %31 = load i8, ptr %30, align 2 - tail call void @wmem_strbuf_append_c(ptr noundef %8, i8 noundef signext %31) - br label %32 - -32: ; preds = %29, %22 - %33 = add i64 %.02025.i, -1 - %.not.i = icmp eq i64 %33, 0 + %14 = getelementptr [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %13 + %15 = zext i8 %11 to i32 + %16 = lshr i32 %15, 4 + %17 = zext nneg i32 %16 to i64 + %18 = getelementptr [16 x %struct.nghttp2_huff_decode], ptr %14, i64 0, i64 %17 + %19 = load i16, ptr %18, align 2 + %.not22.i = icmp sgt i16 %19, -1 + br i1 %.not22.i, label %23, label %20 + +20: ; preds = %.lr.ph.i + %21 = getelementptr inbounds nuw i8, ptr %18, i64 2 + %22 = load i8, ptr %21, align 2 + tail call void @wmem_strbuf_append_c(ptr noundef %8, i8 noundef signext %22) + br label %23 + +23:; preds = %20, %.lr.ph.i + %24 = and i16 %19, 511 + %25 = zext nneg i16 %24 to i64 + %26 = getelementptr [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %25 + %27 = and i32 %15, 15 + %28 = zext nneg i32 %27 to i64 + %29 = getelementptr [16 x %struct.nghttp2_huff_decode], ptr %26, i64 0, i64 %28 + %30 = load i16, ptr %29, align 2 + %.not23.i = icmp sgt i16 %30, -1 + br i1 %.not23.i, label %34, label %31 + +31:; preds = %23 + %32 = getelementptr inbounds nuw i8, ptr %29, i64 2 + %33 = load i8, ptr %32, align 2 + tail call void @wmem_strbuf_append_c(ptr noundef %8, i8 noundef signext %33) + br label %34 + +34:; preds = %31, %23 + %35 = add i64 %.02025.i, -1 + %.not.i = icmp eq i64 %35, 0 br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !6 -._crit_edge.i: ; preds = %32 - %34 = and i16 %28, 16384 +._crit_edge.i: ; preds = %34 + %34 = and i16 %30, 16384 %35 = icmp eq i16 %34, 0 br i1 %35, label %._crit_edge.thread.i, label %get_hpack_huffman_strbuf.exit diff --git a/bench/yaml-cpp/optimized/stream.ll b/bench/yaml-cpp/optimized/stream.ll index 3fcd6d15374..ca6a72b9a37 100644 --- a/bench/yaml-cpp/optimized/stream.ll +++ b/bench/yaml-cpp/optimized/stream.ll @@ -114,12 +114,14 @@ define void @_ZN4YAML6StreamC2ERSi(ptr noundef nonnull align 8 dereferenceable(1 _ZN4YAML15IntroCharTypeOfEi.exit: ; preds = %24, %28, %29, %30, %31, %32, %33, %.fold.split.i %.0.i = phi i64 [ 1, %28 ], [ 2, %29 ], [ 3, %30 ], [ 4, %31 ], [ 5, %32 ], [ 7, %24 ], [ %..i, %33 ], [ 0, %.fold.split.i ] - %35 = getelementptr inbounds nuw [18 x [8 x i32]], ptr @_ZN4YAMLL18s_introTransitionsE, i64 0, i64 %22, i64 %.0.i - %36 = load i32, ptr %35, align 4, !tbaa !34 - %37 = getelementptr inbounds nuw [18 x [8 x i8]], ptr @_ZN4YAMLL17s_introUngetCountE, i64 0, i64 %22, i64 %.0.i - %38 = load i8, ptr %37, align 1, !tbaa !36 - %39 = icmp sgt i8 %38, 0 - br i1 %39, label %40, label %.loopexit + %35 = getelementptr inbounds nuw [18 x [8 x i32]], ptr @_ZN4YAMLL18s_introTransitionsE, i64 0, i64 %22 + %36 = getelementptr inbounds nuw [8 x i32], ptr %35, i64 0, i64 %.0.i + %37 = load i32, ptr %36, align 4, !tbaa !34 + %38 = getelementptr inbounds nuw [18 x [8 x i8]], ptr @_ZN4YAMLL17s_introUngetCountE, i64 0, i64 %22 + %39 = getelementptr inbounds nuw [8 x i8], ptr %38, i64 0, i64 %.0.i + %40 = load i8, ptr %39, align 1, !tbaa !36 + %41 = icmp sgt i8 %40, 0 + br i1 %41, label %42, label %.loopexit 40: ; preds = %_ZN4YAML15IntroCharTypeOfEi.exit %41 = load ptr, ptr %1, align 8, !tbaa !22 @@ -130,13 +132,13 @@ _ZN4YAML15IntroCharTypeOfEi.exit: ; preds = %24, %28, %29, %30, to label %.preheader.preheader unwind label %.loopexit.split-lp .preheader.preheader: ; preds = %40 - %45 = zext nneg i8 %38 to i32 + %45 = zext nneg i8 %40 to i32 %46 = sext i32 %25 to i64 br label %.preheader .preheader: ; preds = %.preheader.preheader, %54 - %indvars.iv = phi i64 [ %46, %.preheader.preheader ], [ %indvars.iv.next, %54 ] - %.043 = phi i32 [ %45, %.preheader.preheader ], [ %55, %54 ] + %indvars.iv = phi i64 [ %46, %.preheader.preheader ], [ %indvars.iv.next, %56 ] + %.043 = phi i32 [ %45, %.preheader.preheader ], [ %55, %56 ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 %47 = getelementptr inbounds [4 x i32], ptr %3, i64 0, i64 %indvars.iv.next %48 = load i32, ptr %47, align 4, !tbaa !33 @@ -146,7 +148,7 @@ _ZN4YAML15IntroCharTypeOfEi.exit: ; preds = %24, %28, %29, %30, 49: ; preds = %.preheader %50 = trunc i32 %48 to i8 %51 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7putbackEc(ptr noundef nonnull align 8 dereferenceable(16) %1, i8 noundef signext %50) - to label %54 unwind label %.loopexit37 + to label %56 unwind label %.loopexit37 52: ; preds = %21 %53 = landingpad { ptr, i32 } @@ -174,14 +176,14 @@ _ZN4YAML15IntroCharTypeOfEi.exit: ; preds = %24, %28, %29, %30, .loopexit: ; preds = %.loopexit.loopexit, %_ZN4YAML15IntroCharTypeOfEi.exit %.127 = phi i32 [ %25, %_ZN4YAML15IntroCharTypeOfEi.exit ], [ %57, %.loopexit.loopexit ] - %58 = zext i32 %36 to i64 + %58 = zext i32 %37 to i64 %59 = getelementptr inbounds nuw [19 x i8], ptr @_ZN4YAMLL17s_introFinalStateE, i64 0, i64 %58 %60 = load i8, ptr %59, align 1, !tbaa !39, !range !41, !noundef !42 %61 = trunc nuw i8 %60 to i1 br i1 %61, label %62, label %21, !llvm.loop !43 62: ; preds = %.loopexit - %switch.tableidx = add i32 %36, -4 + %switch.tableidx = add i32 %37, -4 %63 = icmp ult i32 %switch.tableidx, 8 br i1 %63, label %switch.lookup, label %65 @@ -192,61 +194,61 @@ switch.lookup: ; preds = %62 br label %65 65: ; preds = %62, %switch.lookup - %.sink = phi i32 [ %switch.load, %switch.lookup ], [ 0, %62 ] + %.sink = phi i32 [ %switch.load, %switch.lookup ], [ 0, %64 ] store i32 %.sink, ptr %5, align 4, !tbaa !44 %66 = getelementptr inbounds nuw i8, ptr %0, i64 80 %67 = getelementptr inbounds nuw i8, ptr %0, i64 48 %68 = getelementptr inbounds nuw i8, ptr %0, i64 104 - %69 = load ptr, ptr %68, align 8, !tbaa !45 - %70 = getelementptr inbounds nuw i8, ptr %0, i64 72 %71 = load ptr, ptr %70, align 8, !tbaa !45 - %72 = ptrtoint ptr %69 to i64 - %73 = ptrtoint ptr %71 to i64 - %74 = sub i64 %72, %73 - %75 = ashr exact i64 %74, 3 - %76 = icmp ne ptr %69, null - %.neg.i.i.i = sext i1 %76 to i64 - %77 = add nsw i64 %75, %.neg.i.i.i - %78 = shl nsw i64 %77, 9 - %79 = load ptr, ptr %66, align 8, !tbaa !46 - %80 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %81 = load ptr, ptr %80, align 8, !tbaa !47 - %82 = ptrtoint ptr %79 to i64 - %83 = ptrtoint ptr %81 to i64 - %84 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %85 = load ptr, ptr %84, align 8, !tbaa !48 - %86 = load ptr, ptr %67, align 8, !tbaa !46 - %87 = ptrtoint ptr %85 to i64 - %88 = ptrtoint ptr %86 to i64 - %89 = sub i64 %82, %83 - %90 = add i64 %89, %87 - %91 = add i64 %90, %78 - %.not36 = icmp eq i64 %91, %88 - br i1 %.not36, label %92, label %_ZNK4YAML6Stream11ReadAheadToEm.exit - -92: ; preds = %65 - %93 = invoke noundef zeroext i1 @_ZNK4YAML6Stream12_ReadAheadToEm(ptr noundef nonnull align 8 dereferenceable(136) %0, i64 noundef 0) - to label %_ZNK4YAML6Stream11ReadAheadToEm.exit unwind label %95 - -_ZNK4YAML6Stream11ReadAheadToEm.exit: ; preds = %65, %92 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %73 = load ptr, ptr %72, align 8, !tbaa !45 + %74 = ptrtoint ptr %71 to i62 + %75 = ptrtoint ptr %73 to i64 + %76 = sub i64 %74, %75 + %77 = ashr exact i64 %76, 3 + %78 = icmp ne ptr %71, null + %.neg.i.i.i = sext i1 %78 to i62 + %79 = add nsw i64 %77, %.neg.i.i.i + %80 = shl nsw i64 %79, 9 + %81 = load ptr, ptr %68, align 8, !tbaa !46 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %83 = load ptr, ptr %82, align 8, !tbaa !47 + %84 = ptrtoint ptr %81 to i64 + %85 = ptrtoint ptr %83 to i64 + %86 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %87 = load ptr, ptr %86, align 8, !tbaa !48 + %88 = load ptr, ptr %69, align 8, !tbaa !46 + %89 = ptrtoint ptr %87 to i62 + %90 = ptrtoint ptr %88 to i62 + %91 = sub i64 %84, %85 + %92 = add i64 %91, %89 + %93 = add i64 %92, %80 + %.not36 = icmp eq i64 %93, %90 + br i1 %.not36, label %94, label %_ZNK4YAML6Stream11ReadAheadToEm.exit + +94:; preds = %65 + %95 = invoke noundef zeroext i1 @_ZNK4YAML6Stream12_ReadAheadToEm(ptr noundef nonnull align 8 dereferenceable(136) %0, i64 noundef 0) + to label %_ZNK4YAML6Stream11ReadAheadToEm.exit unwind label %97 + +_ZNK4YAML6Stream11ReadAheadToEm.exit: ; preds = %67, %94 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #16 br label %94 94: ; preds = %8, %_ZNK4YAML6Stream11ReadAheadToEm.exit ret void -95: ; preds = %92 +95: ; preds = %94 %96 = landingpad { ptr, i32 } cleanup br label %97 97: ; preds = %.loopexit37, %.loopexit.split-lp, %52, %95 - %.pn.pn = phi { ptr, i32 } [ %96, %95 ], [ %53, %52 ], [ %lpad.loopexit, %.loopexit37 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %.pn.pn = phi { ptr, i32 } [ %96, %97 ], [ %53, %54 ], [ %lpad.loopexit, %.loopexit37 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #16 br label %98 98: ; preds = %97, %18 - %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %97 ], [ %19, %18 ] + %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %99 ], [ %19, %18 ] tail call void @_ZNSt5dequeIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %6) #16 resume { ptr, i32 } %.pn.pn.pn } diff --git a/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll b/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll index 0e8f9d7650b..3e7403e641d 100644 --- a/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll +++ b/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll @@ -18907,12 +18907,13 @@ define hidden void @"_ZN3vte15Parser$LT$_$GT$7advance17h0b335f80a3e540f3E.llvm.1 21: ; preds = %16 %22 = zext nneg i8 %6 to i64 - %23 = getelementptr inbounds nuw [16 x [256 x i8]], ptr @_ZN3vte5table13STATE_CHANGES17hc24d991888848aafE, i64 0, i64 %22, i64 %17 - %24 = load i8, ptr %23, align 1, !noundef !4 - br label %25 + %23 = getelementptr inbounds nuw [16 x [256 x i8]], ptr @_ZN3vte5table13STATE_CHANGES17hc24d991888848aafE, i64 0, i64 %22 + %24 = getelementptr inbounds nuw [256 x i8], ptr %23, i64 0, i64 %17 + %25 = load i8, ptr %24, align 1, !noundef !4 + br label %26 25: ; preds = %16, %21 - %.sroa.01.0 = phi i8 [ %24, %21 ], [ %19, %16 ] + %.sroa.01.0 = phi i8 [ %25, %21 ], [ %19, %16 ] %26 = and i8 %.sroa.01.0, 15 %27 = lshr i8 %.sroa.01.0, 4 %28 = icmp eq i8 %26, 0 @@ -18923,13 +18924,13 @@ define hidden void @"_ZN3vte15Parser$LT$_$GT$7advance17h0b335f80a3e540f3E.llvm.1 br label %"_ZN3vte15Parser$LT$_$GT$20perform_state_change17hbae91e61e0bc7f22E.exit" 30: ; preds = %25 - switch i8 %6, label %31 [ + switch i8 %6, label %32 [ i8 9, label %.sink.split.i i8 13, label %33 ] .sink.split.i: ; preds = %33, %30 - %.sink.i = phi i8 [ 8, %33 ], [ 14, %30 ] + %.sink.i = phi i8 [ 8, %34 ], [ 14, %31 ] tail call fastcc void @"_ZN3vte15Parser$LT$_$GT$14perform_action17h791f55af36fc1fb3E"(ptr noalias noundef nonnull align 8 dereferenceable(424) %0, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, i8 noundef %.sink.i, i8 noundef %2) br label %31 @@ -18941,7 +18942,7 @@ define hidden void @"_ZN3vte15Parser$LT$_$GT$7advance17h0b335f80a3e540f3E.llvm.1 br label %.sink.split.i 34: ; preds = %35, %31 - switch i8 %26, label %36 [ + switch i8 %26, label %37 [ i8 1, label %.sink.split6.i i8 5, label %.sink.split6.i i8 9, label %37 @@ -18954,7 +18955,7 @@ define hidden void @"_ZN3vte15Parser$LT$_$GT$7advance17h0b335f80a3e540f3E.llvm.1 br label %34 .sink.split6.i: ; preds = %38, %37, %34, %34, %34 - %.sink7.i = phi i8 [ 10, %38 ], [ 6, %37 ], [ 1, %34 ], [ 1, %34 ], [ 1, %34 ] + %.sink7.i = phi i8 [ 10, %39 ], [ 6, %38 ], [ 1, %35 ], [ 1, %35 ], [ 1, %35 ] tail call fastcc void @"_ZN3vte15Parser$LT$_$GT$14perform_action17h791f55af36fc1fb3E"(ptr noalias noundef nonnull align 8 dereferenceable(424) %0, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, i8 noundef %.sink7.i, i8 noundef %2) br label %36 diff --git a/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll b/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll index 484cb236ea0..cec65f6dec9 100644 --- a/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll +++ b/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll @@ -114324,17 +114324,18 @@ define { float, float } @_ZN4gpui5scene20TransformationMatrix5apply17hbe9a2a3129 %.sroa.0.0.ptr34 = getelementptr inbounds nuw i8, ptr %4, i64 %.sroa.0.0.idx33 %.sroa.0.0.add = add nuw nsw i64 %.sroa.0.0.idx33, 4 %16 = add nuw nsw i64 %.sroa.7.032, 1 + %17 = getelementptr inbounds nuw [2 x [2 x float]], ptr %0, i64 0, i64 %.sroa.7.032 %.sroa.0.0.ptr.promoted = load float, ptr %.sroa.0.0.ptr34, align 4 br label %17 17: ; preds = %17, %.split - %18 = phi float [ %.sroa.0.0.ptr.promoted, %.split ], [ %24, %17 ] - %.sroa.715.029 = phi i64 [ 0, %.split ], [ %19, %17 ] - %.sroa.013.0.idx28 = phi i64 [ 0, %.split ], [ %.sroa.013.0.add, %17 ] + %18 = phi float [ %.sroa.0.0.ptr.promoted, %.split ], [ %24, %18 ] + %.sroa.715.029 = phi i64 [ 0, %.split ], [ %19, %18 ] + %.sroa.013.0.idx28 = phi i64 [ 0, %.split ], [ %.sroa.013.0.add, %18 ] %19 = add nuw nsw i64 %.sroa.715.029, 1 %.sroa.013.0.add = add nuw nsw i64 %.sroa.013.0.idx28, 4 %.sroa.013.0.ptr30 = getelementptr inbounds nuw i8, ptr %5, i64 %.sroa.013.0.idx28 - %20 = getelementptr inbounds nuw [2 x [2 x float]], ptr %0, i64 0, i64 %.sroa.7.032, i64 %.sroa.715.029 + %20 = getelementptr inbounds nuw [2 x float], ptr %17, i64 0, i64 %.sroa.715.029 %21 = load float, ptr %20, align 4, !noundef !9 %22 = load float, ptr %.sroa.013.0.ptr30, align 4, !noundef !9 %23 = fmul float %21, %22 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..a02febd01ed 100755 --- a/scripts/setup_pre_commit_patch.sh +++ b/scripts/setup_pre_commit_patch.sh @@ -2,7 +2,7 @@ set -euo pipefail shopt -s inherit_errexit -export GITHUB_PATCH_ID="/llvm-project/commit/" +export GITHUB_PATCH_ID=llvm/llvm-project/pull/137297 export COMPTIME_MODE=0 # Please rebase manually