diff --git a/bench/abc/optimized/abcDetect.ll b/bench/abc/optimized/abcDetect.ll index d790b1f0274..676d7461a09 100644 --- a/bench/abc/optimized/abcDetect.ll +++ b/bench/abc/optimized/abcDetect.ll @@ -5698,7 +5698,7 @@ Abc_NtkFinSimOneWord.exit: ; preds = %.lr.ph.i238, %.lr.p 243: ; preds = %.lr.ph311, %367 %244 = phi ptr [ %.val230, %.lr.ph311 ], [ %.val230367, %367 ] %indvars.iv358 = phi i64 [ %242, %.lr.ph311 ], [ %indvars.iv.next359, %367 ] - %245 = phi i32 [ %233, %.lr.ph311 ], [ %372, %367 ] + %245 = phi i32 [ %233, %.lr.ph311 ], [ %.reass, %367 ] %.0309 = phi ptr [ null, %.lr.ph311 ], [ %.1, %367 ] %.0165308 = phi i32 [ %232, %.lr.ph311 ], [ %.1166, %367 ] %.0167307 = phi ptr [ %230, %.lr.ph311 ], [ %.1168, %367 ] @@ -5954,13 +5954,12 @@ Vec_IntPushTwo.exit: ; preds = %Vec_IntPush.exit.i, %.1166 = phi i32 [ %280, %.loopexit ], [ %.0165308, %Vec_IntPushTwo.exit ] %.1 = phi ptr [ %.0309, %.loopexit ], [ %320, %Vec_IntPushTwo.exit ] %indvars.iv.next359 = add nsw i64 %indvars.iv358, 2 - %368 = or disjoint i64 %indvars.iv.next359, 1 + %368 = trunc nsw i64 %indvars.iv358 to i32 + %.reass = add i32 %368, 3 %369 = getelementptr i8, ptr %.1168, i64 4 %.0167.val218 = load i32, ptr %369, align 4, !tbaa !37 - %370 = sext i32 %.0167.val218 to i64 - %371 = icmp slt i64 %368, %370 - %372 = trunc nsw i64 %368 to i32 - br i1 %371, label %243, label %.critedge14.loopexit, !llvm.loop !155 + %370 = icmp slt i32 %.reass, %.0167.val218 + br i1 %370, label %243, label %.critedge14.loopexit, !llvm.loop !155 .critedge14.loopexit: ; preds = %367 %.val228.pre = load i32, ptr %14, align 4, !tbaa !87 diff --git a/bench/abc/optimized/fraigVec.ll b/bench/abc/optimized/fraigVec.ll index 62c9b862ed4..71efeb0a639 100644 --- a/bench/abc/optimized/fraigVec.ll +++ b/bench/abc/optimized/fraigVec.ll @@ -633,30 +633,29 @@ define void @Fraig_NodeVecRemove(ptr noundef captures(none) %0, ptr noundef read ._crit_edge: ; preds = %12, %._crit_edge.loopexit.split.loop.exit, %2 %.0.lcssa = phi i32 [ 0, %2 ], [ %13, %._crit_edge.loopexit.split.loop.exit ], [ %4, %12 ] - %.121 = add nuw nsw i32 %.0.lcssa, 1 + %.121 = add nsw i32 %.0.lcssa, 1 %14 = icmp slt i32 %.121, %4 br i1 %14, label %.lr.ph25, label %._crit_edge26 .lr.ph25: ; preds = %._crit_edge %15 = getelementptr inbounds nuw i8, ptr %0, i64 8 %16 = load ptr, ptr %15, align 8, !tbaa !11 - %17 = zext i32 %.0.lcssa to i64 - %18 = add nuw nsw i64 %17, 1 + %17 = sext i32 %.0.lcssa to i64 + %18 = add nsw i64 %17, 1 br label %19 19: ; preds = %.lr.ph25, %19 - %indvars.iv28 = phi i64 [ %18, %.lr.ph25 ], [ %indvars.iv.next29, %19 ] - %.1.in22 = phi i32 [ %.0.lcssa, %.lr.ph25 ], [ %26, %19 ] - %20 = getelementptr inbounds nuw ptr, ptr %16, i64 %indvars.iv28 + %indvars.iv28 = phi i64 [ %17, %.lr.ph25 ], [ %indvars.iv.next29, %19 ] + %.1.in22 = phi i64 [ %18, %.lr.ph25 ], [ %indvars.iv.next30, %19 ] + %20 = getelementptr inbounds ptr, ptr %16, i64 %indvars.iv29 %21 = load ptr, ptr %20, align 8, !tbaa !12 - %22 = zext nneg i32 %.1.in22 to i64 - %23 = getelementptr inbounds nuw ptr, ptr %16, i64 %22 - store ptr %21, ptr %23, align 8, !tbaa !12 - %indvars.iv.next29 = add nuw nsw i64 %indvars.iv28, 1 - %24 = trunc nuw i64 %indvars.iv.next29 to i32 - %25 = icmp sgt i32 %4, %24 - %26 = trunc nuw i64 %indvars.iv28 to i32 - br i1 %25, label %19, label %._crit_edge26, !llvm.loop !25 + %22 = getelementptr inbounds ptr, ptr %16, i64 %indvars.iv31 + store ptr %21, ptr %22, align 8, !tbaa !12 + %indvars.iv.next30 = add nsw i64 %.1.in22, 1 + %indvars.iv.next29 = add nsw i64 %indvars.iv28, 1 + %24 = trunc i64 %indvars.iv.next30 to i32 + %25 = icmp eq i32 %4, %24 + br i1 %25, label %._crit_edge26, label %19, !llvm.loop !25 ._crit_edge26: ; preds = %19, %._crit_edge %27 = add nsw i32 %4, -1 diff --git a/bench/abc/optimized/giaIso.ll b/bench/abc/optimized/giaIso.ll index 2493d121999..07f2b596d70 100644 --- a/bench/abc/optimized/giaIso.ll +++ b/bench/abc/optimized/giaIso.ll @@ -2743,37 +2743,41 @@ define void @Gia_IsoAssignOneClass2(ptr noundef captures(none) %0) local_unnamed .lr.ph89: ; preds = %67 %71 = getelementptr inbounds nuw i8, ptr %3, i64 8 %72 = load ptr, ptr %71, align 8, !tbaa !39 - %73 = zext i32 %.04672 to i64 + %73 = sext i32 %.04672 to i64 br label %74 74: ; preds = %.lr.ph89, %74 %indvars.iv99 = phi i64 [ %73, %.lr.ph89 ], [ %indvars.iv.next100, %74 ] - %indvars.iv.next100 = add nuw nsw i64 %indvars.iv99, 2 - %75 = getelementptr inbounds nuw i32, ptr %72, i64 %indvars.iv.next100 + %indvars.iv.next100 = add nsw i64 %indvars.iv99, 2 + %75 = getelementptr inbounds i32, ptr %72, i64 %indvars.iv.next100 %76 = load i32, ptr %75, align 4, !tbaa !43 - %77 = getelementptr inbounds nuw i32, ptr %72, i64 %indvars.iv99 + %77 = getelementptr inbounds i32, ptr %72, i64 %indvars.iv99 store i32 %76, ptr %77, align 4, !tbaa !43 - %78 = getelementptr inbounds nuw i8, ptr %77, i64 12 + %78 = getelementptr i8, ptr %77, i64 12 %79 = load i32, ptr %78, align 4, !tbaa !43 - %80 = getelementptr inbounds nuw i8, ptr %77, i64 4 + %80 = getelementptr i8, ptr %77, i64 4 store i32 %79, ptr %80, align 4, !tbaa !43 %.val51 = load i32, ptr %4, align 4, !tbaa !37 %81 = add nsw i32 %.val51, -2 - %82 = trunc nuw i64 %indvars.iv.next100 to i32 - %83 = icmp sgt i32 %81, %82 + %82 = sext i32 %81 to i64 + %83 = icmp slt i64 %indvars.iv.next100, %82 br i1 %83, label %74, label %._crit_edge, !llvm.loop !91 -._crit_edge: ; preds = %74, %67 - %.147.lcssa = phi i32 [ %.04672, %67 ], [ %82, %74 ] - %.lcssa = phi i32 [ %69, %67 ], [ %81, %74 ] +._crit_edge: ; preds = %74 + %84 = trunc nsw i64 %indvars.iv.next100 to i32 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %67 + %.147.lcssa = phi i32 [ %.04672, %67 ], [ %84, %._crit_edge.loopexit ] + %.lcssa = phi i32 [ %69, %67 ], [ %81, %._crit_edge.loopexit ] store i32 %.lcssa, ptr %4, align 4, !tbaa !37 - %84 = lshr exact i32 %.147.lcssa, 1 + %85 = sdiv i32 %.147.lcssa, 2 %85 = getelementptr inbounds nuw i8, ptr %0, i64 24 %86 = load ptr, ptr %85, align 8, !tbaa !34 %87 = lshr i64 %68, 32 %88 = getelementptr inbounds nuw i32, ptr %86, i64 %87 %89 = load i32, ptr %88, align 4, !tbaa !43 - %90 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11, i32 noundef %84, i32 noundef %.163, i32 noundef %89) + %90 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11, i32 noundef %85, i32 noundef %.163, i32 noundef %89) ret void } diff --git a/bench/abc/optimized/sclLoad.ll b/bench/abc/optimized/sclLoad.ll index 258553b17df..73e54bf1358 100644 --- a/bench/abc/optimized/sclLoad.ll +++ b/bench/abc/optimized/sclLoad.ll @@ -104,26 +104,22 @@ Vec_FltStart.exit: ; preds = %6, %2 %42 = sitofp i32 %41 to float %43 = fdiv float %39, %42 %.06187 = add nuw nsw i32 %.06293, 1 - %44 = zext i32 %.06187 to i64 - %45 = icmp samesign ugt i64 %indvars.iv113, %44 + %44 = sext i32 %.06187 to i64 + %45 = icmp sgt i64 %indvars.iv113, %44 br i1 %45, label %.lr.ph89.preheader, label %.loopexit81 -.lr.ph89.preheader: ; preds = %38 - %46 = zext i32 %.06293 to i64 - %47 = add nuw nsw i64 %46, 1 - br label %.lr.ph89 - -.lr.ph89: ; preds = %.lr.ph89.preheader, %.lr.ph89 - %indvars.iv108 = phi i64 [ %47, %.lr.ph89.preheader ], [ %indvars.iv.next109, %.lr.ph89 ] - %48 = trunc i64 %indvars.iv108 to i32 - %49 = sub i32 %48, %.06293 - %50 = sitofp i32 %49 to float - %51 = tail call float @llvm.fmuladd.f32(float %43, float %50, float %.06791) - %52 = getelementptr inbounds nuw float, ptr %15, i64 %indvars.iv108 - store float %51, ptr %52, align 4, !tbaa !23 - %indvars.iv.next109 = add nuw nsw i64 %indvars.iv108, 1 - %exitcond112.not = icmp eq i64 %indvars.iv.next109, %indvars.iv113 - br i1 %exitcond112.not, label %.loopexit81, label %.lr.ph89, !llvm.loop !25 +.lr.ph89.preheader: ; preds = %38, %.lr.ph89 + %indvars.iv108 = phi i64 [ %indvars.iv.next109, %.lr.ph89 ], [ %44, %38 ] + %46 = trunc i64 %indvars.iv108 to i32 + %47 = sub i32 %46, %.06293 + %48 = sitofp i32 %47 to float + %49 = tail call float @llvm.fmuladd.f32(float %43, float %48, float %.06791) + %50 = getelementptr inbounds float, ptr %15, i64 %indvars.iv108 + store float %49, ptr %50, align 4, !tbaa !23 + %indvars.iv.next109 = add nsw i64 %indvars.iv108, 1 + %51 = and i64 %indvars.iv.next109, 4294967295 + %exitcond111.not = icmp eq i64 %51, %indvars.iv112 + br i1 %exitcond111.not, label %.loopexit81, label %.lr.ph89, !llvm.loop !25 .loopexit81: ; preds = %.lr.ph89, %38, %.lr.ph94 %.168 = phi float [ %.06791, %.lr.ph94 ], [ %36, %38 ], [ %36, %.lr.ph89 ] @@ -141,12 +137,12 @@ Vec_FltStart.exit: ; preds = %6, %2 %55 = getelementptr inbounds nuw i8, ptr %0, i64 12 %56 = load float, ptr %55, align 4, !tbaa !27 %57 = fmul float %54, %56 - %.198 = add nuw nsw i32 %.062.lcssa, 1 - %58 = icmp samesign ult i32 %.198, %.2.lcssa + %.198 = add nsw i32 %.062.lcssa, 1 + %58 = icmp slt i32 %.198, %.2.lcssa br i1 %58, label %.lr.ph100.preheader, label %.loopexit .lr.ph100.preheader: ; preds = %.critedge4 - %59 = zext i32 %.062.lcssa to i64 + %59 = zext nneg i32 %.062.lcssa to i64 %60 = add nuw nsw i64 %59, 1 %wide.trip.count121 = zext i32 %.2.lcssa to i64 br label %.lr.ph100 diff --git a/bench/abc/optimized/utilBSet.ll b/bench/abc/optimized/utilBSet.ll index 48c4ec158c3..bc6c7008da5 100644 --- a/bench/abc/optimized/utilBSet.ll +++ b/bench/abc/optimized/utilBSet.ll @@ -2413,9 +2413,10 @@ define void @Abc_TtPermGenTest() local_unnamed_addr #7 { br label %13 13: ; preds = %23, %12 + %indvars.iv28.i = phi i64 [ 4, %12 ], [ %indvars.iv.next29.i, %23 ] %indvars.iv23.i = phi i64 [ 5, %12 ], [ %indvars.iv.next24.i, %23 ] - %.05.i = phi i32 [ 4, %12 ], [ %24, %23 ] - %14 = zext nneg i32 %.05.i to i64 + %indvars41 = trunc i64 %indvars.iv28.i to i32 + %14 = and i64 %indvars.iv28.i, 4294967295 %15 = getelementptr i32, ptr %1, i64 %14 %16 = getelementptr i8, ptr %15, i64 -4 %17 = load i32, ptr %16, align 4, !tbaa !7 @@ -2425,7 +2426,7 @@ define void @Abc_TtPermGenTest() local_unnamed_addr #7 { .critedge.preheader.i: ; preds = %13 %19 = getelementptr i8, ptr %15, i64 -4 - %20 = icmp slt i32 %.05.i, 5 + %20 = icmp slt i32 %indvars41, 5 br i1 %20, label %.lr.ph.preheader.i, label %.critedge2.thread.i .critedge2.thread.i: ; preds = %.critedge.preheader.i @@ -2435,12 +2436,13 @@ define void @Abc_TtPermGenTest() local_unnamed_addr #7 { br label %Abc_TtPermGen.exit .lr.ph.preheader.i: ; preds = %.critedge.preheader.i - %22 = sext i32 %.05.i to i64 + %sext = shl i64 %indvars.iv28.i, 32 + %22 = ashr exact i64 %sext, 32 br label %.lr.ph.i 23: ; preds = %13 - %24 = add nsw i32 %.05.i, -1 - %.not39.i = icmp eq i32 %.05.i, 0 + %24 = add nsw i64 %indvars.iv28.i, -1 + %.not39.i = icmp eq i32 %indvars41, 0 %indvars.iv.next24.i = add nsw i64 %indvars.iv23.i, -1 br i1 %.not39.i, label %Abc_TtPermGen.exit, label %13, !llvm.loop !60 @@ -2467,14 +2469,14 @@ define void @Abc_TtPermGenTest() local_unnamed_addr #7 { %27 = load i32, ptr %gep, align 4, !tbaa !7 store i32 %27, ptr %19, align 4, !tbaa !7 store i32 %17, ptr %gep, align 4, !tbaa !7 - %.not52.i = icmp eq i32 %.05.i, 4 + %.not52.i = icmp eq i32 %indvars41, 4 br i1 %.not52.i, label %Abc_TtPermGen.exit, label %.lr.ph14.i .lr.ph14.i: ; preds = %.critedge2.i, %.lr.ph14.i %indvars.iv32.i = phi i64 [ %indvars.iv.next33.i, %.lr.ph14.i ], [ 5, %.critedge2.i ] - %indvars.iv30.i = phi i64 [ %indvars.iv.next31.i, %.lr.ph14.i ], [ %14, %.critedge2.i ] + %indvars.iv30.i = phi i64 [ %indvars.iv.next31.i, %.lr.ph14.i ], [ %indvars.iv28.i, %.critedge2.i ] %indvars.iv26.i = phi i64 [ %indvars.iv.next27.i, %.lr.ph14.i ], [ %indvars.iv23.i, %.critedge2.i ] - %28 = getelementptr inbounds nuw i32, ptr %1, i64 %indvars.iv30.i + %28 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv30.i %29 = load i32, ptr %28, align 4, !tbaa !7 %gep9.i = getelementptr i32, ptr %invariant.gep, i64 %indvars.iv32.i %30 = load i32, ptr %gep9.i, align 4, !tbaa !7 diff --git a/bench/abc/optimized/verCore.ll b/bench/abc/optimized/verCore.ll index 0735e2c3dba..1798924a7ea 100644 --- a/bench/abc/optimized/verCore.ll +++ b/bench/abc/optimized/verCore.ll @@ -2580,7 +2580,8 @@ Vec_PtrFree.exit378.i: ; preds = %127, %.critedge6.i %.val366500.pre.i = load ptr, ptr %37, align 8, !tbaa !62 %.phi.trans.insert600.i = getelementptr i8, ptr %.val366500.pre.i, i64 4 %.val366.val501.pre.i = load i32, ptr %.phi.trans.insert600.i, align 4, !tbaa !20 - %147 = and i64 %indvars.iv.next581.i, 4294967295 + %sext604.i = shl i64 %indvars.iv.next581.i, 32 + %147 = ashr exact i64 %sext604.i, 32 br label %.critedge8.preheader.i .critedge8.preheader.i: ; preds = %.critedge8.preheader.loopexit.i, %.critedge10.preheader.i @@ -2645,9 +2646,9 @@ Vec_PtrFree.exit378.i: ; preds = %127, %.critedge6.i %.val366602.i = phi ptr [ %.val366.i, %.critedge8.loopexit.i ], [ %.val366500.i, %.critedge8.preheader.i ] %indvars.iv586.i = phi i64 [ %indvars.iv.next587.i, %.critedge8.loopexit.i ], [ %.1273.lcssa.i, %.critedge8.preheader.i ] %.2282502.i = phi i32 [ %.3283.lcssa.i, %.critedge8.loopexit.i ], [ 0, %.critedge8.preheader.i ] - %indvars.iv.next587.i = add nuw nsw i64 %indvars.iv586.i, 1 + %indvars.iv.next587.i = add nsw i64 %indvars.iv586.i, 1 %.val345.i = load ptr, ptr %41, align 8, !tbaa !23 - %166 = getelementptr inbounds nuw ptr, ptr %.val345.i, i64 %indvars.iv586.i + %166 = getelementptr inbounds ptr, ptr %.val345.i, i64 %indvars.iv586.i %167 = load ptr, ptr %166, align 8, !tbaa !63 %168 = getelementptr inbounds nuw i8, ptr %167, i64 8 %169 = load ptr, ptr %168, align 8, !tbaa !77 diff --git a/bench/abseil-cpp/optimized/cord_test.ll b/bench/abseil-cpp/optimized/cord_test.ll index a4cc765cd95..0d9452ea004 100644 --- a/bench/abseil-cpp/optimized/cord_test.ll +++ b/bench/abseil-cpp/optimized/cord_test.ll @@ -193121,7 +193121,7 @@ _ZN4absl4CordD2Ev.exit442: ; preds = %813, %816 820: ; preds = %.preheader496, %_ZN4absl4CordD2Ev.exit444 %821 = phi ptr [ %822, %_ZN4absl4CordD2Ev.exit444 ], [ %141, %.preheader496 ] %822 = getelementptr inbounds i8, ptr %821, i64 -16 - %823 = load i8, ptr %822, align 1, !tbaa !24 + %823 = load i8, ptr %822, align 16, !tbaa !24 %824 = and i8 %823, 1 %.not.i443 = icmp eq i8 %824, 0 br i1 %.not.i443, label %_ZN4absl4CordD2Ev.exit444, label %825 diff --git a/bench/actix-rs/optimized/2nm6r5hc2u1hk1e1.ll b/bench/actix-rs/optimized/2nm6r5hc2u1hk1e1.ll index 4b237a7087b..e355658bc86 100644 --- a/bench/actix-rs/optimized/2nm6r5hc2u1hk1e1.ll +++ b/bench/actix-rs/optimized/2nm6r5hc2u1hk1e1.ll @@ -2448,10 +2448,10 @@ default.unreachable: ; preds = %14 18: ; preds = %14 %19 = getelementptr inbounds nuw i8, ptr %.sroa.013.032, i64 1 %20 = getelementptr inbounds nuw i8, ptr %.sroa.013.032, i64 16 - %21 = load i8, ptr %20, align 1, !alias.scope !527, !noalias !531, !noundef !34 + %21 = load i8, ptr %20, align 8, !alias.scope !527, !noalias !531, !noundef !34 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.14.i, ptr noundef nonnull readonly align 1 dereferenceable(7) %19, i64 7, i1 false), !alias.scope !533, !noalias !534 %.sroa.15.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.013.032, i64 8 - %.sroa.15.1.copyload.i = load ptr, ptr %.sroa.15.1..sroa_idx.i, align 1, !alias.scope !535, !noalias !534 + %.sroa.15.1.copyload.i = load ptr, ptr %.sroa.15.1..sroa_idx.i, align 8, !alias.scope !535, !noalias !534 %.sroa.16.16.insert.ext.i = zext i8 %21 to i64 br label %28 diff --git a/bench/annoy/optimized/annoymodule.ll b/bench/annoy/optimized/annoymodule.ll index 7535d63744a..d51dbaf3943 100644 --- a/bench/annoy/optimized/annoymodule.ll +++ b/bench/annoy/optimized/annoymodule.ll @@ -4919,7 +4919,7 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit110: ; preds = %_ZNSt6vectorIiSaIiE %.11930.i.i.i.i = phi i32 [ %172, %.preheader.i.i.i.i ], [ %163, %158 ] %.12129.i.i.i.i = phi ptr [ %171, %.preheader.i.i.i.i ], [ %164, %158 ] %.12428.i.i.i.i = phi ptr [ %170, %.preheader.i.i.i.i ], [ %91, %158 ] - %166 = load <8 x float>, ptr %.12428.i.i.i.i, align 1, !tbaa !118 + %166 = load <8 x float>, ptr %.12428.i.i.i.i, align 4, !tbaa !118 %167 = load <8 x float>, ptr %.12129.i.i.i.i, align 1, !tbaa !118 %168 = fmul nnan ninf nsz arcp contract afn <8 x float> %166, %167 %169 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i.i.i, %168 @@ -5649,7 +5649,7 @@ define linkonce_odr void @_ZN5Annoy7Angular12create_splitIifNS_12Kiss64RandomEEE %.031.i.i.i.i = phi <8 x float> [ %73, %.preheader.i.i.i.i ], [ zeroinitializer, %5 ] %.11930.i.i.i.i = phi i32 [ %75, %.preheader.i.i.i.i ], [ %1, %5 ] %.12129.i.i.i.i = phi ptr [ %74, %.preheader.i.i.i.i ], [ %61, %5 ] - %71 = load <8 x float>, ptr %.12129.i.i.i.i, align 1, !tbaa !118 + %71 = load <8 x float>, ptr %.12129.i.i.i.i, align 4, !tbaa !118 %72 = fmul nnan ninf nsz arcp contract afn <8 x float> %71, %71 %73 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i.i.i, %72 %74 = getelementptr i8, ptr %.12129.i.i.i.i, i64 32 @@ -5719,7 +5719,7 @@ _ZN5Annoy4Base9normalizeIfNS_7Angular4NodeIifEEEEvPT0_i.exit.i: ; preds = %.lr.p %.031.i.i.i89.i = phi <8 x float> [ %102, %.preheader.i.i.i88.i ], [ zeroinitializer, %_ZN5Annoy4Base9normalizeIfNS_7Angular4NodeIifEEEEvPT0_i.exit.i ] %.11930.i.i.i90.i = phi i32 [ %104, %.preheader.i.i.i88.i ], [ %1, %_ZN5Annoy4Base9normalizeIfNS_7Angular4NodeIifEEEEvPT0_i.exit.i ] %.12129.i.i.i91.i = phi ptr [ %103, %.preheader.i.i.i88.i ], [ %68, %_ZN5Annoy4Base9normalizeIfNS_7Angular4NodeIifEEEEvPT0_i.exit.i ] - %100 = load <8 x float>, ptr %.12129.i.i.i91.i, align 1, !tbaa !118 + %100 = load <8 x float>, ptr %.12129.i.i.i91.i, align 4, !tbaa !118 %101 = fmul nnan ninf nsz arcp contract afn <8 x float> %100, %100 %102 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i.i89.i, %101 %103 = getelementptr i8, ptr %.12129.i.i.i91.i, i64 32 @@ -5794,7 +5794,7 @@ _ZN5Annoy4Base9normalizeIfNS_7Angular4NodeIifEEEEvPT0_i.exit92.i: ; preds = %.lr %.031.i.i.i = phi <8 x float> [ %132, %.preheader.i.i.i ], [ zeroinitializer, %_ZN5Annoy4Base9normalizeIfNS_7Angular4NodeIifEEEEvPT0_i.exit92.i ] %.11930.i.i.i = phi i32 [ %134, %.preheader.i.i.i ], [ %1, %_ZN5Annoy4Base9normalizeIfNS_7Angular4NodeIifEEEEvPT0_i.exit92.i ] %.12129.i.i.i = phi ptr [ %133, %.preheader.i.i.i ], [ %61, %_ZN5Annoy4Base9normalizeIfNS_7Angular4NodeIifEEEEvPT0_i.exit92.i ] - %130 = load <8 x float>, ptr %.12129.i.i.i, align 1, !tbaa !118 + %130 = load <8 x float>, ptr %.12129.i.i.i, align 4, !tbaa !118 %131 = fmul nnan ninf nsz arcp contract afn <8 x float> %130, %130 %132 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i.i, %131 %133 = getelementptr i8, ptr %.12129.i.i.i, i64 32 @@ -5842,7 +5842,7 @@ _ZN5Annoy7Angular9init_nodeIifEEvPNS0_4NodeIT_T0_EEi.exit.i: ; preds = %.lr.ph.i %.031.i.i103.i = phi <8 x float> [ %155, %.preheader.i.i102.i ], [ zeroinitializer, %_ZN5Annoy7Angular9init_nodeIifEEvPNS0_4NodeIT_T0_EEi.exit.i ] %.11930.i.i104.i = phi i32 [ %157, %.preheader.i.i102.i ], [ %1, %_ZN5Annoy7Angular9init_nodeIifEEvPNS0_4NodeIT_T0_EEi.exit.i ] %.12129.i.i105.i = phi ptr [ %156, %.preheader.i.i102.i ], [ %68, %_ZN5Annoy7Angular9init_nodeIifEEvPNS0_4NodeIT_T0_EEi.exit.i ] - %153 = load <8 x float>, ptr %.12129.i.i105.i, align 1, !tbaa !118 + %153 = load <8 x float>, ptr %.12129.i.i105.i, align 4, !tbaa !118 %154 = fmul nnan ninf nsz arcp contract afn <8 x float> %153, %153 %155 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i103.i, %154 %156 = getelementptr i8, ptr %.12129.i.i105.i, i64 32 @@ -5935,7 +5935,7 @@ _ZN5Annoy7Angular9init_nodeIifEEvPNS0_4NodeIT_T0_EEi.exit106.i: ; preds = %.lr.p %.031.i.i116.i = phi <8 x float> [ %208, %.preheader.i.i115.i ], [ zeroinitializer, %205 ] %.11930.i.i117.i = phi i32 [ %210, %.preheader.i.i115.i ], [ %1, %205 ] %.12129.i.i118.i = phi ptr [ %209, %.preheader.i.i115.i ], [ %61, %205 ] - %206 = load <8 x float>, ptr %.12129.i.i118.i, align 1, !tbaa !118 + %206 = load <8 x float>, ptr %.12129.i.i118.i, align 4, !tbaa !118 %207 = fmul nnan ninf nsz arcp contract afn <8 x float> %206, %206 %208 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i116.i, %207 %209 = getelementptr i8, ptr %.12129.i.i118.i, i64 32 @@ -6036,7 +6036,7 @@ _ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit36.i.i: ; preds = %.lr.ph.i26.i.i %.11930.i49.i.i = phi i32 [ %264, %.preheader.i47.i.i ], [ %1, %_ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit36.i.i ] %.12129.i50.i.i = phi ptr [ %263, %.preheader.i47.i.i ], [ %257, %_ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit36.i.i ] %.12428.i51.i.i = phi ptr [ %262, %.preheader.i47.i.i ], [ %61, %_ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit36.i.i ] - %258 = load <8 x float>, ptr %.12428.i51.i.i, align 1, !tbaa !118 + %258 = load <8 x float>, ptr %.12428.i51.i.i, align 4, !tbaa !118 %259 = load <8 x float>, ptr %.12129.i50.i.i, align 1, !tbaa !118 %260 = fmul nnan ninf nsz arcp contract afn <8 x float> %258, %259 %261 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i48.i.i, %260 @@ -6110,7 +6110,7 @@ _ZN5Annoy7Angular8distanceIifEET0_PKNS0_4NodeIT_S2_EES7_i.exit.i: ; preds = %286 %.031.i.i159.i = phi <8 x float> [ %300, %.preheader.i.i158.i ], [ zeroinitializer, %297 ] %.11930.i.i160.i = phi i32 [ %302, %.preheader.i.i158.i ], [ %1, %297 ] %.12129.i.i161.i = phi ptr [ %301, %.preheader.i.i158.i ], [ %68, %297 ] - %298 = load <8 x float>, ptr %.12129.i.i161.i, align 1, !tbaa !118 + %298 = load <8 x float>, ptr %.12129.i.i161.i, align 4, !tbaa !118 %299 = fmul nnan ninf nsz arcp contract afn <8 x float> %298, %298 %300 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i159.i, %299 %301 = getelementptr i8, ptr %.12129.i.i161.i, i64 32 @@ -6206,7 +6206,7 @@ _ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit36.i126.i: ; preds = %.lr.ph.i26. %.11930.i49.i141.i = phi i32 [ %351, %.preheader.i47.i139.i ], [ %1, %_ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit36.i126.i ] %.12129.i50.i142.i = phi ptr [ %350, %.preheader.i47.i139.i ], [ %257, %_ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit36.i126.i ] %.12428.i51.i143.i = phi ptr [ %349, %.preheader.i47.i139.i ], [ %68, %_ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit36.i126.i ] - %345 = load <8 x float>, ptr %.12428.i51.i143.i, align 1, !tbaa !118 + %345 = load <8 x float>, ptr %.12428.i51.i143.i, align 4, !tbaa !118 %346 = load <8 x float>, ptr %.12129.i50.i142.i, align 1, !tbaa !118 %347 = fmul nnan ninf nsz arcp contract afn <8 x float> %345, %346 %348 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i48.i140.i, %347 @@ -6355,7 +6355,7 @@ _ZN5Annoy4Base11update_meanIfNS_7Angular4NodeIifEEEEvPT0_S6_T_ii.exit.i: ; preds %.031.i.i193.i = phi <8 x float> [ %424, %.preheader.i.i192.i ], [ zeroinitializer, %_ZN5Annoy4Base11update_meanIfNS_7Angular4NodeIifEEEEvPT0_S6_T_ii.exit.i ] %.11930.i.i194.i = phi i32 [ %426, %.preheader.i.i192.i ], [ %1, %_ZN5Annoy4Base11update_meanIfNS_7Angular4NodeIifEEEEvPT0_S6_T_ii.exit.i ] %.12129.i.i195.i = phi ptr [ %425, %.preheader.i.i192.i ], [ %61, %_ZN5Annoy4Base11update_meanIfNS_7Angular4NodeIifEEEEvPT0_S6_T_ii.exit.i ] - %422 = load <8 x float>, ptr %.12129.i.i195.i, align 1, !tbaa !118 + %422 = load <8 x float>, ptr %.12129.i.i195.i, align 4, !tbaa !118 %423 = fmul nnan ninf nsz arcp contract afn <8 x float> %422, %422 %424 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i193.i, %423 %425 = getelementptr i8, ptr %.12129.i.i195.i, i64 32 @@ -6434,7 +6434,7 @@ _ZN5Annoy4Base11update_meanIfNS_7Angular4NodeIifEEEEvPT0_S6_T_ii.exit202.i: ; pr %.031.i.i214.i = phi <8 x float> [ %460, %.preheader.i.i213.i ], [ zeroinitializer, %_ZN5Annoy4Base11update_meanIfNS_7Angular4NodeIifEEEEvPT0_S6_T_ii.exit202.i ] %.11930.i.i215.i = phi i32 [ %462, %.preheader.i.i213.i ], [ %1, %_ZN5Annoy4Base11update_meanIfNS_7Angular4NodeIifEEEEvPT0_S6_T_ii.exit202.i ] %.12129.i.i216.i = phi ptr [ %461, %.preheader.i.i213.i ], [ %68, %_ZN5Annoy4Base11update_meanIfNS_7Angular4NodeIifEEEEvPT0_S6_T_ii.exit202.i ] - %458 = load <8 x float>, ptr %.12129.i.i216.i, align 1, !tbaa !118 + %458 = load <8 x float>, ptr %.12129.i.i216.i, align 4, !tbaa !118 %459 = fmul nnan ninf nsz arcp contract afn <8 x float> %458, %458 %460 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i214.i, %459 %461 = getelementptr i8, ptr %.12129.i.i216.i, i64 32 @@ -6846,7 +6846,7 @@ define linkonce_odr void @_ZNK5Annoy10AnnoyIndexIifNS_7AngularENS_12Kiss64Random %.031.i.i = phi <8 x float> [ %24, %.preheader.i.i ], [ zeroinitializer, %6 ] %.11930.i.i = phi i32 [ %26, %.preheader.i.i ], [ %18, %6 ] %.12129.i.i = phi ptr [ %25, %.preheader.i.i ], [ %16, %6 ] - %22 = load <8 x float>, ptr %.12129.i.i, align 1, !tbaa !118 + %22 = load <8 x float>, ptr %.12129.i.i, align 4, !tbaa !118 %23 = fmul nnan ninf nsz arcp contract afn <8 x float> %22, %22 %24 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i, %23 %25 = getelementptr i8, ptr %.12129.i.i, i64 32 @@ -7407,7 +7407,7 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_.exit: ; pr %.031.i.i122 = phi <8 x float> [ %262, %.preheader.i.i121 ], [ zeroinitializer, %258 ] %.11930.i.i123 = phi i32 [ %264, %.preheader.i.i121 ], [ %255, %258 ] %.12129.i.i124 = phi ptr [ %263, %.preheader.i.i121 ], [ %16, %258 ] - %260 = load <8 x float>, ptr %.12129.i.i124, align 1, !tbaa !118 + %260 = load <8 x float>, ptr %.12129.i.i124, align 4, !tbaa !118 %261 = fmul nnan ninf nsz arcp contract afn <8 x float> %260, %260 %262 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i122, %261 %263 = getelementptr i8, ptr %.12129.i.i124, i64 32 @@ -7510,7 +7510,7 @@ _ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit36.i: ; preds = %.lr.ph.i26.i, %3 %.11930.i49.i = phi i32 [ %320, %.preheader.i47.i ], [ %255, %_ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit36.i ] %.12129.i50.i = phi ptr [ %319, %.preheader.i47.i ], [ %312, %_ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit36.i ] %.12428.i51.i = phi ptr [ %318, %.preheader.i47.i ], [ %16, %_ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit36.i ] - %314 = load <8 x float>, ptr %.12428.i51.i, align 1, !tbaa !118 + %314 = load <8 x float>, ptr %.12428.i51.i, align 4, !tbaa !118 %315 = load <8 x float>, ptr %.12129.i50.i, align 1, !tbaa !118 %316 = fmul nnan ninf nsz arcp contract afn <8 x float> %314, %315 %317 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i48.i, %316 @@ -11384,7 +11384,7 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit110: ; preds = %_ZNSt6vectorIiSaIiE %.11930.i.i.i.i = phi i32 [ %199, %.preheader.i.i.i.i ], [ %189, %184 ] %.12129.i.i.i.i = phi ptr [ %198, %.preheader.i.i.i.i ], [ %190, %184 ] %.12428.i.i.i.i = phi ptr [ %197, %.preheader.i.i.i.i ], [ %92, %184 ] - %193 = load <8 x float>, ptr %.12428.i.i.i.i, align 1, !tbaa !118 + %193 = load <8 x float>, ptr %.12428.i.i.i.i, align 16, !tbaa !118 %194 = load <8 x float>, ptr %.12129.i.i.i.i, align 1, !tbaa !118 %195 = fmul nnan ninf nsz arcp contract afn <8 x float> %193, %194 %196 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i.i.i, %195 @@ -12102,7 +12102,7 @@ define linkonce_odr void @_ZN5Annoy9Euclidean12create_splitIifNS_12Kiss64RandomE %.12133.i.i.i = phi ptr [ %105, %.preheader.i.i.i ], [ %98, %72 ] %.02332.i.i.i = phi <8 x float> [ %103, %.preheader.i.i.i ], [ zeroinitializer, %72 ] %.12731.i.i.i = phi i32 [ %106, %.preheader.i.i.i ], [ %1, %72 ] - %99 = load <8 x float>, ptr %.134.i.i.i, align 1, !tbaa !118 + %99 = load <8 x float>, ptr %.134.i.i.i, align 16, !tbaa !118 %100 = load <8 x float>, ptr %.12133.i.i.i, align 1, !tbaa !118 %101 = fsub nnan ninf nsz arcp contract afn <8 x float> %99, %100 %102 = fmul nnan ninf nsz arcp contract afn <8 x float> %101, %101 @@ -12159,7 +12159,7 @@ _ZN5Annoy9Euclidean8distanceIifEET0_PKNS_9Minkowski4NodeIT_S2_EES8_i.exit.i: ; p %.12133.i.i84.i = phi ptr [ %135, %.preheader.i.i82.i ], [ %98, %_ZN5Annoy9Euclidean8distanceIifEET0_PKNS_9Minkowski4NodeIT_S2_EES8_i.exit.i ] %.02332.i.i85.i = phi <8 x float> [ %133, %.preheader.i.i82.i ], [ zeroinitializer, %_ZN5Annoy9Euclidean8distanceIifEET0_PKNS_9Minkowski4NodeIT_S2_EES8_i.exit.i ] %.12731.i.i86.i = phi i32 [ %136, %.preheader.i.i82.i ], [ %1, %_ZN5Annoy9Euclidean8distanceIifEET0_PKNS_9Minkowski4NodeIT_S2_EES8_i.exit.i ] - %129 = load <8 x float>, ptr %.134.i.i83.i, align 1, !tbaa !118 + %129 = load <8 x float>, ptr %.134.i.i83.i, align 16, !tbaa !118 %130 = load <8 x float>, ptr %.12133.i.i84.i, align 1, !tbaa !118 %131 = fsub nnan ninf nsz arcp contract afn <8 x float> %129, %130 %132 = fmul nnan ninf nsz arcp contract afn <8 x float> %131, %131 @@ -12968,7 +12968,7 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_.exit: ; pr %.12133.i.i = phi ptr [ %243, %.preheader.i.i97 ], [ %235, %233 ] %.02332.i.i = phi <8 x float> [ %241, %.preheader.i.i97 ], [ zeroinitializer, %233 ] %.12731.i.i = phi i32 [ %244, %.preheader.i.i97 ], [ %234, %233 ] - %237 = load <8 x float>, ptr %.134.i.i, align 1, !tbaa !118 + %237 = load <8 x float>, ptr %.134.i.i, align 16, !tbaa !118 %238 = load <8 x float>, ptr %.12133.i.i, align 1, !tbaa !118 %239 = fsub nnan ninf nsz arcp contract afn <8 x float> %237, %238 %240 = fmul nnan ninf nsz arcp contract afn <8 x float> %239, %239 @@ -15565,7 +15565,7 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit108: ; preds = %_ZNSt6vectorIiSaIiE %.11930.i.i.i.i = phi i32 [ %199, %.preheader.i.i.i.i ], [ %189, %184 ] %.12129.i.i.i.i = phi ptr [ %198, %.preheader.i.i.i.i ], [ %190, %184 ] %.12428.i.i.i.i = phi ptr [ %197, %.preheader.i.i.i.i ], [ %92, %184 ] - %193 = load <8 x float>, ptr %.12428.i.i.i.i, align 1, !tbaa !118 + %193 = load <8 x float>, ptr %.12428.i.i.i.i, align 16, !tbaa !118 %194 = load <8 x float>, ptr %.12129.i.i.i.i, align 1, !tbaa !118 %195 = fmul nnan ninf nsz arcp contract afn <8 x float> %193, %194 %196 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i.i.i, %195 @@ -16283,7 +16283,7 @@ define linkonce_odr void @_ZN5Annoy9Manhattan12create_splitIifNS_12Kiss64RandomE %.12133.i.i.i = phi ptr [ %105, %.preheader.i.i.i ], [ %98, %72 ] %.02532.i.i.i = phi <8 x float> [ %103, %.preheader.i.i.i ], [ zeroinitializer, %72 ] %.12731.i.i.i = phi i32 [ %106, %.preheader.i.i.i ], [ %1, %72 ] - %99 = load <8 x float>, ptr %.134.i.i.i, align 1, !tbaa !118 + %99 = load <8 x float>, ptr %.134.i.i.i, align 16, !tbaa !118 %100 = load <8 x float>, ptr %.12133.i.i.i, align 1, !tbaa !118 %101 = fsub nnan ninf nsz arcp contract afn <8 x float> %99, %100 %102 = tail call <8 x float> @llvm.fabs.v8f32(<8 x float> %101) @@ -16340,7 +16340,7 @@ _ZN5Annoy9Manhattan8distanceIifEET0_PKNS_9Minkowski4NodeIT_S2_EES8_i.exit.i: ; p %.12133.i.i84.i = phi ptr [ %135, %.preheader.i.i82.i ], [ %98, %_ZN5Annoy9Manhattan8distanceIifEET0_PKNS_9Minkowski4NodeIT_S2_EES8_i.exit.i ] %.02532.i.i85.i = phi <8 x float> [ %133, %.preheader.i.i82.i ], [ zeroinitializer, %_ZN5Annoy9Manhattan8distanceIifEET0_PKNS_9Minkowski4NodeIT_S2_EES8_i.exit.i ] %.12731.i.i86.i = phi i32 [ %136, %.preheader.i.i82.i ], [ %1, %_ZN5Annoy9Manhattan8distanceIifEET0_PKNS_9Minkowski4NodeIT_S2_EES8_i.exit.i ] - %129 = load <8 x float>, ptr %.134.i.i83.i, align 1, !tbaa !118 + %129 = load <8 x float>, ptr %.134.i.i83.i, align 16, !tbaa !118 %130 = load <8 x float>, ptr %.12133.i.i84.i, align 1, !tbaa !118 %131 = fsub nnan ninf nsz arcp contract afn <8 x float> %129, %130 %132 = tail call <8 x float> @llvm.fabs.v8f32(<8 x float> %131) @@ -17152,7 +17152,7 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_.exit: ; pr %.12133.i.i = phi ptr [ %243, %.preheader.i.i96 ], [ %235, %233 ] %.02532.i.i = phi <8 x float> [ %241, %.preheader.i.i96 ], [ zeroinitializer, %233 ] %.12731.i.i = phi i32 [ %244, %.preheader.i.i96 ], [ %234, %233 ] - %237 = load <8 x float>, ptr %.134.i.i, align 1, !tbaa !118 + %237 = load <8 x float>, ptr %.134.i.i, align 16, !tbaa !118 %238 = load <8 x float>, ptr %.12133.i.i, align 1, !tbaa !118 %239 = fsub nnan ninf nsz arcp contract afn <8 x float> %237, %238 %240 = call <8 x float> @llvm.fabs.v8f32(<8 x float> %239) @@ -25048,7 +25048,7 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit110: ; preds = %_ZNSt6vectorIiSaIiE %.11930.i.i.i = phi i32 [ %198, %.preheader.i.i.i ], [ %189, %188 ] %.12129.i.i.i = phi ptr [ %197, %.preheader.i.i.i ], [ %190, %188 ] %.12428.i.i.i = phi ptr [ %196, %.preheader.i.i.i ], [ %91, %188 ] - %192 = load <8 x float>, ptr %.12428.i.i.i, align 1, !tbaa !118 + %192 = load <8 x float>, ptr %.12428.i.i.i, align 8, !tbaa !118 %193 = load <8 x float>, ptr %.12129.i.i.i, align 1, !tbaa !118 %194 = fmul nnan ninf nsz arcp contract afn <8 x float> %192, %193 %195 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i.i, %194 @@ -25739,7 +25739,7 @@ define linkonce_odr void @_ZN5Annoy10DotProduct12create_splitIifNS_12Kiss64Rando %.031.i.i.i = phi <8 x float> [ %79, %.preheader.i.i.i ], [ zeroinitializer, %5 ] %.11930.i.i.i = phi i32 [ %81, %.preheader.i.i.i ], [ %1, %5 ] %.12129.i.i.i = phi ptr [ %80, %.preheader.i.i.i ], [ %63, %5 ] - %77 = load <8 x float>, ptr %.12129.i.i.i, align 1, !tbaa !118 + %77 = load <8 x float>, ptr %.12129.i.i.i, align 8, !tbaa !118 %78 = fmul nnan ninf nsz arcp contract afn <8 x float> %77, %77 %79 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i.i, %78 %80 = getelementptr i8, ptr %.12129.i.i.i, i64 32 @@ -25820,7 +25820,7 @@ _ZN5Annoy10DotProduct9normalizeIfNS0_4NodeIifEEEEvPT0_i.exit.i: ; preds = %._cri %.031.i.i91.i = phi <8 x float> [ %115, %.preheader.i.i90.i ], [ zeroinitializer, %_ZN5Annoy10DotProduct9normalizeIfNS0_4NodeIifEEEEvPT0_i.exit.i ] %.11930.i.i92.i = phi i32 [ %117, %.preheader.i.i90.i ], [ %1, %_ZN5Annoy10DotProduct9normalizeIfNS0_4NodeIifEEEEvPT0_i.exit.i ] %.12129.i.i93.i = phi ptr [ %116, %.preheader.i.i90.i ], [ %72, %_ZN5Annoy10DotProduct9normalizeIfNS0_4NodeIifEEEEvPT0_i.exit.i ] - %113 = load <8 x float>, ptr %.12129.i.i93.i, align 1, !tbaa !118 + %113 = load <8 x float>, ptr %.12129.i.i93.i, align 8, !tbaa !118 %114 = fmul nnan ninf nsz arcp contract afn <8 x float> %113, %113 %115 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i91.i, %114 %116 = getelementptr i8, ptr %.12129.i.i93.i, i64 32 @@ -25903,7 +25903,7 @@ _ZN5Annoy10DotProduct9normalizeIfNS0_4NodeIifEEEEvPT0_i.exit94.i: ; preds = %._c %.031.i.i106.i = phi <8 x float> [ %152, %.preheader.i.i105.i ], [ zeroinitializer, %_ZN5Annoy10DotProduct9normalizeIfNS0_4NodeIifEEEEvPT0_i.exit94.i ] %.11930.i.i107.i = phi i32 [ %154, %.preheader.i.i105.i ], [ %1, %_ZN5Annoy10DotProduct9normalizeIfNS0_4NodeIifEEEEvPT0_i.exit94.i ] %.12129.i.i108.i = phi ptr [ %153, %.preheader.i.i105.i ], [ %63, %_ZN5Annoy10DotProduct9normalizeIfNS0_4NodeIifEEEEvPT0_i.exit94.i ] - %150 = load <8 x float>, ptr %.12129.i.i108.i, align 1, !tbaa !118 + %150 = load <8 x float>, ptr %.12129.i.i108.i, align 8, !tbaa !118 %151 = fmul nnan ninf nsz arcp contract afn <8 x float> %150, %150 %152 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i106.i, %151 %153 = getelementptr i8, ptr %.12129.i.i108.i, i64 32 @@ -25955,7 +25955,7 @@ _ZN5Annoy10DotProduct9init_nodeIifEEvPNS0_4NodeIT_T0_EEi.exit.i: ; preds = %.lr. %.031.i.i120.i = phi <8 x float> [ %178, %.preheader.i.i119.i ], [ zeroinitializer, %_ZN5Annoy10DotProduct9init_nodeIifEEvPNS0_4NodeIT_T0_EEi.exit.i ] %.11930.i.i121.i = phi i32 [ %180, %.preheader.i.i119.i ], [ %1, %_ZN5Annoy10DotProduct9init_nodeIifEEvPNS0_4NodeIT_T0_EEi.exit.i ] %.12129.i.i122.i = phi ptr [ %179, %.preheader.i.i119.i ], [ %72, %_ZN5Annoy10DotProduct9init_nodeIifEEvPNS0_4NodeIT_T0_EEi.exit.i ] - %176 = load <8 x float>, ptr %.12129.i.i122.i, align 1, !tbaa !118 + %176 = load <8 x float>, ptr %.12129.i.i122.i, align 8, !tbaa !118 %177 = fmul nnan ninf nsz arcp contract afn <8 x float> %176, %176 %178 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i120.i, %177 %179 = getelementptr i8, ptr %.12129.i.i122.i, i64 32 @@ -26056,7 +26056,7 @@ _ZN5Annoy10DotProduct9init_nodeIifEEvPNS0_4NodeIT_T0_EEi.exit123.i: ; preds = %. %.11930.i.i98 = phi i32 [ %245, %.preheader.i.i96 ], [ %1, %237 ] %.12129.i.i99 = phi ptr [ %244, %.preheader.i.i96 ], [ %238, %237 ] %.12428.i.i100 = phi ptr [ %243, %.preheader.i.i96 ], [ %63, %237 ] - %239 = load <8 x float>, ptr %.12428.i.i100, align 1, !tbaa !118 + %239 = load <8 x float>, ptr %.12428.i.i100, align 8, !tbaa !118 %240 = load <8 x float>, ptr %.12129.i.i99, align 1, !tbaa !118 %241 = fmul nnan ninf nsz arcp contract afn <8 x float> %239, %240 %242 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i97, %241 @@ -26116,7 +26116,7 @@ _ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit.i89: ; preds = %.lr.ph.i.i91, %2 %.031.i43.i82 = phi <8 x float> [ %271, %.preheader.i42.i81 ], [ zeroinitializer, %268 ] %.11930.i44.i83 = phi i32 [ %273, %.preheader.i42.i81 ], [ %1, %268 ] %.12129.i45.i84 = phi ptr [ %272, %.preheader.i42.i81 ], [ %63, %268 ] - %269 = load <8 x float>, ptr %.12129.i45.i84, align 1, !tbaa !118 + %269 = load <8 x float>, ptr %.12129.i45.i84, align 8, !tbaa !118 %270 = fmul nnan ninf nsz arcp contract afn <8 x float> %269, %269 %271 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i43.i82, %270 %272 = getelementptr i8, ptr %.12129.i45.i84, i64 32 @@ -26231,7 +26231,7 @@ _ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit63.i48: ; preds = %.lr.ph.i53.i67 %.11930.i76.i64 = phi i32 [ %335, %.preheader.i74.i62 ], [ %1, %326 ] %.12129.i77.i65 = phi ptr [ %334, %.preheader.i74.i62 ], [ %328, %326 ] %.12428.i78.i66 = phi ptr [ %333, %.preheader.i74.i62 ], [ %63, %326 ] - %329 = load <8 x float>, ptr %.12428.i78.i66, align 1, !tbaa !118 + %329 = load <8 x float>, ptr %.12428.i78.i66, align 8, !tbaa !118 %330 = load <8 x float>, ptr %.12129.i77.i65, align 1, !tbaa !118 %331 = fmul nnan ninf nsz arcp contract afn <8 x float> %329, %330 %332 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i75.i63, %331 @@ -26314,7 +26314,7 @@ _ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit79.i54: ; preds = %.lr.ph.i69.i57 %.11930.i.i38 = phi i32 [ %384, %.preheader.i.i36 ], [ %1, %376 ] %.12129.i.i39 = phi ptr [ %383, %.preheader.i.i36 ], [ %377, %376 ] %.12428.i.i = phi ptr [ %382, %.preheader.i.i36 ], [ %72, %376 ] - %378 = load <8 x float>, ptr %.12428.i.i, align 1, !tbaa !118 + %378 = load <8 x float>, ptr %.12428.i.i, align 8, !tbaa !118 %379 = load <8 x float>, ptr %.12129.i.i39, align 1, !tbaa !118 %380 = fmul nnan ninf nsz arcp contract afn <8 x float> %378, %379 %381 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i37, %380 @@ -26374,7 +26374,7 @@ _ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit.i29: ; preds = %.lr.ph.i.i31, %3 %.031.i43.i = phi <8 x float> [ %410, %.preheader.i42.i ], [ zeroinitializer, %407 ] %.11930.i44.i = phi i32 [ %412, %.preheader.i42.i ], [ %1, %407 ] %.12129.i45.i = phi ptr [ %411, %.preheader.i42.i ], [ %72, %407 ] - %408 = load <8 x float>, ptr %.12129.i45.i, align 1, !tbaa !118 + %408 = load <8 x float>, ptr %.12129.i45.i, align 8, !tbaa !118 %409 = fmul nnan ninf nsz arcp contract afn <8 x float> %408, %408 %410 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i43.i, %409 %411 = getelementptr i8, ptr %.12129.i45.i, i64 32 @@ -26489,7 +26489,7 @@ _ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit63.i: ; preds = %.lr.ph.i53.i, %4 %.11930.i76.i = phi i32 [ %474, %.preheader.i74.i ], [ %1, %465 ] %.12129.i77.i = phi ptr [ %473, %.preheader.i74.i ], [ %467, %465 ] %.12428.i78.i = phi ptr [ %472, %.preheader.i74.i ], [ %72, %465 ] - %468 = load <8 x float>, ptr %.12428.i78.i, align 1, !tbaa !118 + %468 = load <8 x float>, ptr %.12428.i78.i, align 8, !tbaa !118 %469 = load <8 x float>, ptr %.12129.i77.i, align 1, !tbaa !118 %470 = fmul nnan ninf nsz arcp contract afn <8 x float> %468, %469 %471 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i75.i, %470 @@ -26664,7 +26664,7 @@ _ZN5Annoy10DotProduct11update_meanIfNS0_4NodeIifEEEEvPT0_S5_T_ii.exit.i: ; preds %.031.i.i155.i = phi <8 x float> [ %565, %.preheader.i.i154.i ], [ zeroinitializer, %_ZN5Annoy10DotProduct11update_meanIfNS0_4NodeIifEEEEvPT0_S5_T_ii.exit.i ] %.11930.i.i156.i = phi i32 [ %567, %.preheader.i.i154.i ], [ %1, %_ZN5Annoy10DotProduct11update_meanIfNS0_4NodeIifEEEEvPT0_S5_T_ii.exit.i ] %.12129.i.i157.i = phi ptr [ %566, %.preheader.i.i154.i ], [ %63, %_ZN5Annoy10DotProduct11update_meanIfNS0_4NodeIifEEEEvPT0_S5_T_ii.exit.i ] - %563 = load <8 x float>, ptr %.12129.i.i157.i, align 1, !tbaa !118 + %563 = load <8 x float>, ptr %.12129.i.i157.i, align 8, !tbaa !118 %564 = fmul nnan ninf nsz arcp contract afn <8 x float> %563, %563 %565 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i155.i, %564 %566 = getelementptr i8, ptr %.12129.i.i157.i, i64 32 @@ -26762,7 +26762,7 @@ _ZN5Annoy10DotProduct11update_meanIfNS0_4NodeIifEEEEvPT0_S5_T_ii.exit171.i: ; pr %.031.i.i183.i = phi <8 x float> [ %612, %.preheader.i.i182.i ], [ zeroinitializer, %_ZN5Annoy10DotProduct11update_meanIfNS0_4NodeIifEEEEvPT0_S5_T_ii.exit171.i ] %.11930.i.i184.i = phi i32 [ %614, %.preheader.i.i182.i ], [ %1, %_ZN5Annoy10DotProduct11update_meanIfNS0_4NodeIifEEEEvPT0_S5_T_ii.exit171.i ] %.12129.i.i185.i = phi ptr [ %613, %.preheader.i.i182.i ], [ %72, %_ZN5Annoy10DotProduct11update_meanIfNS0_4NodeIifEEEEvPT0_S5_T_ii.exit171.i ] - %610 = load <8 x float>, ptr %.12129.i.i185.i, align 1, !tbaa !118 + %610 = load <8 x float>, ptr %.12129.i.i185.i, align 8, !tbaa !118 %611 = fmul nnan ninf nsz arcp contract afn <8 x float> %610, %610 %612 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i183.i, %611 %613 = getelementptr i8, ptr %.12129.i.i185.i, i64 32 @@ -27298,7 +27298,7 @@ define linkonce_odr void @_ZNK5Annoy10AnnoyIndexIifNS_10DotProductENS_12Kiss64Ra %.031.i.i = phi <8 x float> [ %26, %.preheader.i.i ], [ zeroinitializer, %6 ] %.11930.i.i = phi i32 [ %28, %.preheader.i.i ], [ %19, %6 ] %.12129.i.i = phi ptr [ %27, %.preheader.i.i ], [ %17, %6 ] - %24 = load <8 x float>, ptr %.12129.i.i, align 1, !tbaa !118 + %24 = load <8 x float>, ptr %.12129.i.i, align 8, !tbaa !118 %25 = fmul nnan ninf nsz arcp contract afn <8 x float> %24, %24 %26 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i, %25 %27 = getelementptr i8, ptr %.12129.i.i, i64 32 @@ -27867,7 +27867,7 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_.exit: ; pr %.11930.i.i125 = phi i32 [ %273, %.preheader.i.i123 ], [ %257, %264 ] %.12129.i.i126 = phi ptr [ %272, %.preheader.i.i123 ], [ %265, %264 ] %.12428.i.i127 = phi ptr [ %271, %.preheader.i.i123 ], [ %17, %264 ] - %267 = load <8 x float>, ptr %.12428.i.i127, align 1, !tbaa !118 + %267 = load <8 x float>, ptr %.12428.i.i127, align 8, !tbaa !118 %268 = load <8 x float>, ptr %.12129.i.i126, align 1, !tbaa !118 %269 = fmul nnan ninf nsz arcp contract afn <8 x float> %267, %268 %270 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i.i124, %269 @@ -27929,7 +27929,7 @@ _ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit.i: ; preds = %.lr.ph.i.i118, %28 %.031.i43.i = phi <8 x float> [ %301, %.preheader.i42.i ], [ zeroinitializer, %297 ] %.11930.i44.i = phi i32 [ %303, %.preheader.i42.i ], [ %257, %297 ] %.12129.i45.i = phi ptr [ %302, %.preheader.i42.i ], [ %17, %297 ] - %299 = load <8 x float>, ptr %.12129.i45.i, align 1, !tbaa !118 + %299 = load <8 x float>, ptr %.12129.i45.i, align 8, !tbaa !118 %300 = fmul nnan ninf nsz arcp contract afn <8 x float> %299, %299 %301 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i43.i, %300 %302 = getelementptr i8, ptr %.12129.i45.i, i64 32 @@ -28047,7 +28047,7 @@ _ZN5Annoy12_GLOBAL__N_13dotIfEET_PKS2_S4_i.exit63.i: ; preds = %.lr.ph.i53.i, %3 %.11930.i76.i = phi i32 [ %368, %.preheader.i74.i ], [ %257, %358 ] %.12129.i77.i = phi ptr [ %367, %.preheader.i74.i ], [ %360, %358 ] %.12428.i78.i = phi ptr [ %366, %.preheader.i74.i ], [ %17, %358 ] - %362 = load <8 x float>, ptr %.12428.i78.i, align 1, !tbaa !118 + %362 = load <8 x float>, ptr %.12428.i78.i, align 8, !tbaa !118 %363 = load <8 x float>, ptr %.12129.i77.i, align 1, !tbaa !118 %364 = fmul nnan ninf nsz arcp contract afn <8 x float> %362, %363 %365 = fadd nnan ninf nsz arcp contract afn <8 x float> %.031.i75.i, %364 diff --git a/bench/arrow/optimized/chunked_array.ll b/bench/arrow/optimized/chunked_array.ll index 5a6b3bf1e76..b8d51eeae10 100644 --- a/bench/arrow/optimized/chunked_array.ll +++ b/bench/arrow/optimized/chunked_array.ll @@ -2614,7 +2614,7 @@ define void @_ZNK5arrow12ChunkedArray5SliceEll(ptr dead_on_unwind noalias writab %41 = getelementptr inbounds nuw i8, ptr %6, i64 8 %42 = getelementptr inbounds nuw i8, ptr %6, i64 16 %43 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %44 = zext i32 %storemerge.lcssa85 to i64 + %44 = sext i32 %storemerge.lcssa85 to i64 br label %92 45: ; preds = %.critedge @@ -2737,7 +2737,7 @@ _ZNSt12__shared_ptrIN5arrow5ArrayELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit: ; pre %94 = getelementptr inbounds nuw %"class.std::shared_ptr.12", ptr %93, i64 %indvars.iv78 %95 = load ptr, ptr %94, align 8, !tbaa !45 invoke void @_ZNK5arrow5Array5SliceEll(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.12") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %95, i64 noundef %.175, i64 noundef %.02674) - to label %96 unwind label %145 + to label %96 unwind label %143 96: ; preds = %92 %97 = load ptr, ptr %41, align 8, !tbaa !36 @@ -2822,21 +2822,20 @@ _ZNSt12__shared_ptrIN5arrow5ArrayELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit46: ; p %133 = load i64, ptr %132, align 8, !tbaa !59 %.neg = add i64 %.175, %.02674 %134 = sub i64 %.neg, %133 - %indvars.iv.next79 = add nuw nsw i64 %indvars.iv78, 1 + %indvars.iv.next79 = add nsw i64 %indvars.iv78, 1 %135 = load ptr, ptr %17, align 8, !tbaa !36 %136 = ptrtoint ptr %135 to i64 %137 = ptrtoint ptr %127 to i64 %138 = sub i64 %136, %137 - %139 = lshr exact i64 %138, 4 - %140 = trunc i64 %139 to i32 - %141 = trunc nuw i64 %indvars.iv.next79 to i32 - %142 = icmp slt i32 %141, %140 - %143 = icmp sgt i64 %134, 0 - %144 = select i1 %142, i1 %143, i1 false - br i1 %144, label %92, label %.loopexit, !llvm.loop !178 - -145: ; preds = %92 - %146 = landingpad { ptr, i32 } + %sext = shl i64 %138, 28 + %139 = ashr i64 %sext, 32 + %140 = icmp slt i64 %indvars.iv.next79, %139 + %142 = icmp sgt i64 %134, 0 + %142 = select i1 %140, i1 %141, i1 false + br i1 %142, label %92, label %.loopexit, !llvm.loop !178 + +143: ; preds = %92 + %144 = landingpad { ptr, i32 } cleanup br label %149 @@ -2846,8 +2845,8 @@ _ZNSt12__shared_ptrIN5arrow5ArrayELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit46: ; p call void @_ZNSt12__shared_ptrIN5arrow5ArrayELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #20 br label %149 -149: ; preds = %147, %145 - %.pn = phi { ptr, i32 } [ %148, %147 ], [ %146, %145 ] +149: ; preds = %147, %143 + %.pn = phi { ptr, i32 } [ %148, %145 ], [ %144, %143 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #20 br label %.body @@ -2866,7 +2865,7 @@ _ZNSt12__shared_ptrIN5arrow5ArrayELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit46: ; p store ptr getelementptr inbounds nuw inrange(-16, 40) (i8, ptr @_ZTVSt23_Sp_counted_ptr_inplaceIN5arrow12ChunkedArrayESaIvELN9__gnu_cxx12_Lock_policyE2EE, i64 16), ptr %150, align 8, !tbaa !56, !noalias !179 %154 = getelementptr inbounds nuw i8, ptr %150, i64 16 invoke void @_ZSt10_ConstructIN5arrow12ChunkedArrayEJRSt6vectorISt10shared_ptrINS0_5ArrayEESaIS5_EERKS3_INS0_8DataTypeEEEEvPT_DpOT0_(ptr noundef nonnull %154, ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(16) %151) - to label %156 unwind label %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN5arrow12ChunkedArrayESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit11.i.i.i.i, !noalias !179 + to label %154 unwind label %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN5arrow12ChunkedArrayESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit11.i.i.i.i, !noalias !179 _ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN5arrow12ChunkedArrayESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit11.i.i.i.i: ; preds = %.noexc47 %155 = landingpad { ptr, i32 } @@ -2885,7 +2884,7 @@ _ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN5arrow12ChunkedArrayESaIv br i1 %.not4.i.i.i.i, label %_ZSt8_DestroyIPSt10shared_ptrIN5arrow5ArrayEES3_EvT_S5_RSaIT0_E.exit.i, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %156, %_ZSt8_DestroyISt10shared_ptrIN5arrow5ArrayEEEvPT_.exit.i.i.i.i - %.05.i.i.i.i = phi ptr [ %184, %_ZSt8_DestroyISt10shared_ptrIN5arrow5ArrayEEEvPT_.exit.i.i.i.i ], [ %158, %156 ] + %.05.i.i.i.i = phi ptr [ %184, %_ZSt8_DestroyISt10shared_ptrIN5arrow5ArrayEEEvPT_.exit.i.i.i.i ], [ %158, %154 ] %161 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 8 %162 = load ptr, ptr %161, align 8, !tbaa !43 %.not.i.i.i.i.i.i.i = icmp eq ptr %162, null @@ -2905,11 +2904,11 @@ _ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN5arrow12ChunkedArrayESaIv %170 = load ptr, ptr %162, align 8, !tbaa !56 %171 = getelementptr inbounds nuw i8, ptr %170, i64 16 %172 = load ptr, ptr %171, align 8 - call void %172(ptr noundef nonnull align 8 dereferenceable(16) %162) #20 + call void %170(ptr noundef nonnull align 8 dereferenceable(16) %162) #20 %173 = load ptr, ptr %162, align 8, !tbaa !56 %174 = getelementptr inbounds nuw i8, ptr %173, i64 24 %175 = load ptr, ptr %174, align 8 - call void %175(ptr noundef nonnull align 8 dereferenceable(16) %162) #20 + call void %173(ptr noundef nonnull align 8 dereferenceable(16) %162) #20 br label %_ZSt8_DestroyISt10shared_ptrIN5arrow5ArrayEEEvPT_.exit.i.i.i.i 176: ; preds = %163 @@ -2927,7 +2926,7 @@ _ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN5arrow12ChunkedArrayESaIv br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i: ; preds = %180, %178 - %.0.i.i.i.i.i.i.i.i.i = phi i32 [ %167, %178 ], [ %181, %180 ] + %.0.i.i.i.i.i.i.i.i.i = phi i32 [ %167, %176 ], [ %181, %178 ] %182 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i, 1 br i1 %182, label %183, label %_ZSt8_DestroyISt10shared_ptrIN5arrow5ArrayEEEvPT_.exit.i.i.i.i, !prof !44 @@ -2945,7 +2944,7 @@ _ZSt8_DestroyIPSt10shared_ptrIN5arrow5ArrayEES3_EvT_S5_RSaIT0_E.exitthread-pre-s br label %_ZSt8_DestroyIPSt10shared_ptrIN5arrow5ArrayEES3_EvT_S5_RSaIT0_E.exit.i _ZSt8_DestroyIPSt10shared_ptrIN5arrow5ArrayEES3_EvT_S5_RSaIT0_E.exit.i: ; preds = %_ZSt8_DestroyIPSt10shared_ptrIN5arrow5ArrayEES3_EvT_S5_RSaIT0_E.exitthread-pre-split.i, %156 - %185 = phi ptr [ %.pr.i, %_ZSt8_DestroyIPSt10shared_ptrIN5arrow5ArrayEES3_EvT_S5_RSaIT0_E.exitthread-pre-split.i ], [ %158, %156 ] + %185 = phi ptr [ %.pr.i, %_ZSt8_DestroyIPSt10shared_ptrIN5arrow5ArrayEES3_EvT_S5_RSaIT0_E.exitthread-pre-split.i ], [ %158, %154 ] %.not.i.i.i48 = icmp eq ptr %185, null br i1 %.not.i.i.i48, label %_ZNSt6vectorISt10shared_ptrIN5arrow5ArrayEESaIS3_EED2Ev.exit, label %186 @@ -2963,7 +2962,7 @@ _ZNSt6vectorISt10shared_ptrIN5arrow5ArrayEESaIS3_EED2Ev.exit: ; preds = %_ZSt8_D ret void .body: ; preds = %85, %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN5arrow12ChunkedArrayESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit11.i.i.i.i, %149, %91 - %.pn31 = phi { ptr, i32 } [ %.pn29, %91 ], [ %.pn, %149 ], [ %86, %85 ], [ %155, %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN5arrow12ChunkedArrayESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit11.i.i.i.i ] + %.pn31 = phi { ptr, i32 } [ %.pn29, %91 ], [ %.pn, %147 ], [ %86, %85 ], [ %155, %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN5arrow12ChunkedArrayESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit11.i.i.i.i ] call void @_ZNSt6vectorISt10shared_ptrIN5arrow5ArrayEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #20 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #20 br label %192 diff --git a/bench/bdwgc/optimized/gc.ll b/bench/bdwgc/optimized/gc.ll index 7014bf83a13..000fc8c47f3 100644 --- a/bench/bdwgc/optimized/gc.ll +++ b/bench/bdwgc/optimized/gc.ll @@ -15846,31 +15846,30 @@ GC_push_all.exit41: ; preds = %58, %49, %26 br label %GC_push_all.exit.sink.split 92: ; preds = %66 - %93 = tail call align 8 ptr @llvm.ptrmask.p0.i64(ptr nonnull %64, i64 -8) - %94 = icmp ult ptr %78, %93 - br i1 %94, label %95, label %GC_push_all.exit43 - -95: ; preds = %92 - %96 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 168), align 8, !tbaa !116 - %97 = getelementptr inbounds nuw i8, ptr %96, i64 16 - %98 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 160), align 8, !tbaa !117 - %99 = icmp ult ptr %97, %98 - br i1 %99, label %102, label %100 + %93 = icmp ult ptr %78, %64 + br i1 %93, label %94, label %GC_push_all.exit43 + +94: ; preds = %92 + %95 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 168), align 8, !tbaa !116 + %96 = getelementptr inbounds nuw i8, ptr %95, i64 16 + %97 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 160), align 8, !tbaa !117 + %98 = icmp ult ptr %96, %97 + br i1 %98, label %101, label %99 -100: ; preds = %95 +100: ; preds = %94 %101 = load ptr, ptr @GC_on_abort, align 8, !tbaa !12 - tail call void %101(ptr noundef nonnull @.str.52) #47 + tail call void %100(ptr noundef nonnull @.str.52) #47 tail call void @abort() #51 unreachable -102: ; preds = %95 - %103 = ptrtoint ptr %93 to i64 +102: ; preds = %94 + %103 = ptrtoint ptr %64 to i64 %104 = ptrtoint ptr %78 to i64 %105 = sub i64 %103, %104 - store ptr %78, ptr %97, align 8, !tbaa !122 - %106 = getelementptr inbounds nuw i8, ptr %96, i64 24 + store ptr %78, ptr %96, align 8, !tbaa !122 + %106 = getelementptr inbounds nuw i8, ptr %95, i64 24 store volatile i64 %105, ptr %106, align 8, !tbaa !124 - store volatile ptr %97, ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 168), align 8, !tbaa !116 + store volatile ptr %96, ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 168), align 8, !tbaa !116 br label %GC_push_all.exit43 GC_push_all.exit43: ; preds = %102, %92, %.lr.ph @@ -15903,7 +15902,7 @@ GC_push_all.exit43: ; preds = %102, %92, %.lr.ph 119: ; preds = %114 %120 = load ptr, ptr @GC_on_abort, align 8, !tbaa !12 - tail call void %120(ptr noundef nonnull @.str.52) #47 + tail call void %119(ptr noundef nonnull @.str.52) #47 tail call void @abort() #51 unreachable @@ -15915,9 +15914,9 @@ GC_push_all.exit43: ; preds = %102, %92, %.lr.ph br label %GC_push_all.exit.sink.split GC_push_all.exit.sink.split: ; preds = %22, %45, %88, %121 - %.sink59 = phi ptr [ %115, %121 ], [ %82, %88 ], [ %39, %45 ], [ %16, %22 ] - %.sink57 = phi i64 [ %124, %121 ], [ %91, %88 ], [ %48, %45 ], [ %25, %22 ] - %.sink = phi ptr [ %116, %121 ], [ %83, %88 ], [ %40, %45 ], [ %17, %22 ] + %.sink59 = phi ptr [ %115, %120 ], [ %82, %88 ], [ %39, %45 ], [ %16, %22 ] + %.sink57 = phi i64 [ %124, %120 ], [ %91, %88 ], [ %48, %45 ], [ %25, %22 ] + %.sink = phi ptr [ %116, %120 ], [ %83, %88 ], [ %40, %45 ], [ %17, %22 ] %125 = getelementptr inbounds nuw i8, ptr %.sink59, i64 24 store volatile i64 %.sink57, ptr %125, align 8, !tbaa !124 store volatile ptr %.sink, ptr getelementptr inbounds nuw (i8, ptr @GC_arrays, i64 168), align 8, !tbaa !116 diff --git a/bench/box2d/optimized/solver.ll b/bench/box2d/optimized/solver.ll index 886cb693a3a..a81a0020d86 100644 --- a/bench/box2d/optimized/solver.ll +++ b/bench/box2d/optimized/solver.ll @@ -1728,7 +1728,7 @@ define internal void @b2SolverTask(i32 %0, i32 %1, i32 %2, ptr noundef readonly .lr.ph233: ; preds = %._crit_edge228 %53 = shl i32 %.0140242, 16 %54 = add i32 %53, 65536 - %55 = zext i32 %.0148.lcssa to i64 + %55 = sext i32 %.0148.lcssa to i64 br label %122 56: ; preds = %.lr.ph227, %b2ExecuteMainStage.exit @@ -1850,7 +1850,7 @@ b2ExecuteMainStage.exit: ; preds = %56, %60, %._crit_ed br i1 %exitcond.not, label %._crit_edge228, label %56, !llvm.loop !230 ._crit_edge234.loopexit: ; preds = %b2ExecuteMainStage.exit181 - %108 = trunc nuw i64 %indvars.iv.next266 to i32 + %108 = trunc nsw i64 %indvars.iv.next266 to i32 br label %._crit_edge234 ._crit_edge234: ; preds = %._crit_edge234.loopexit, %._crit_edge228 @@ -1861,9 +1861,9 @@ b2ExecuteMainStage.exit: ; preds = %56, %60, %._crit_ed store float %111, ptr %34, align 4, !tbaa !231 %112 = add i32 %44, 65536 %113 = or i32 %.1149.lcssa, %112 - %114 = zext i32 %.1149.lcssa to i64 - %115 = getelementptr inbounds nuw %struct.b2SolverStage, ptr %12, i64 %114 - call fastcc void @b2ExecuteMainStage(ptr noundef nonnull %115, ptr noundef %8, i32 noundef %113) + %114 = sext i32 %.1149.lcssa to i64 + %115 = getelementptr inbounds %struct.b2SolverStage, ptr %12, i64 %114 + call fastcc void @b2ExecuteMainStage(ptr noundef %115, ptr noundef %8, i32 noundef %113) %116 = add nuw nsw i32 %.0243, 2 %117 = call float @b2GetMillisecondsAndReset(ptr noundef nonnull %5) #8 %118 = load float, ptr %35, align 4, !tbaa !232 @@ -1881,7 +1881,7 @@ b2ExecuteMainStage.exit: ; preds = %56, %60, %._crit_ed 122: ; preds = %.lr.ph233, %b2ExecuteMainStage.exit181 %indvars.iv265 = phi i64 [ %55, %.lr.ph233 ], [ %indvars.iv.next266, %b2ExecuteMainStage.exit181 ] %.0146231 = phi i32 [ 0, %.lr.ph233 ], [ %174, %b2ExecuteMainStage.exit181 ] - %123 = getelementptr inbounds nuw %struct.b2SolverStage, ptr %12, i64 %indvars.iv265 + %123 = getelementptr inbounds %struct.b2SolverStage, ptr %12, i64 %indvars.iv265 %124 = getelementptr inbounds nuw i8, ptr %123, i64 16 %125 = load i32, ptr %124, align 8, !tbaa !123 switch i32 %125, label %129 [ @@ -1896,7 +1896,7 @@ b2ExecuteMainStage.exit: ; preds = %56, %60, %._crit_ed br label %b2ExecuteMainStage.exit181 129: ; preds = %122 - %130 = trunc nuw i64 %indvars.iv265 to i32 + %130 = trunc nsw i64 %indvars.iv265 to i32 %131 = or i32 %54, %130 store atomic i32 %131, ptr %31 seq_cst, align 4 %132 = lshr i32 %131, 16 @@ -1993,7 +1993,7 @@ b2ExecuteStage.exit.i158: ; preds = %._crit_edge.i.i168, br label %b2ExecuteMainStage.exit181 b2ExecuteMainStage.exit181: ; preds = %122, %126, %._crit_edge.i162 - %indvars.iv.next266 = add nuw nsw i64 %indvars.iv265, 1 + %indvars.iv.next266 = add nsw i64 %indvars.iv265, 1 %174 = add nuw nsw i32 %.0146231, 1 %exitcond268.not = icmp eq i32 %174, %10 br i1 %exitcond268.not, label %._crit_edge234.loopexit, label %122, !llvm.loop !233 @@ -2011,8 +2011,8 @@ b2ExecuteMainStage.exit181: ; preds = %122, %126, %._crit_ 180: ; preds = %.lr.ph239, %b2ExecuteMainStage.exit207 %indvars.iv269 = phi i64 [ %114, %.lr.ph239 ], [ %indvars.iv.next270, %b2ExecuteMainStage.exit207 ] %.0145237 = phi i32 [ 0, %.lr.ph239 ], [ %232, %b2ExecuteMainStage.exit207 ] - %indvars.iv.next270 = add nuw nsw i64 %indvars.iv269, 1 - %181 = getelementptr inbounds nuw %struct.b2SolverStage, ptr %12, i64 %indvars.iv.next270 + %indvars.iv.next270 = add nsw i64 %indvars.iv269, 1 + %181 = getelementptr inbounds %struct.b2SolverStage, ptr %12, i64 %indvars.iv.next270 %182 = getelementptr inbounds nuw i8, ptr %181, i64 16 %183 = load i32, ptr %182, align 8, !tbaa !123 switch i32 %183, label %187 [ @@ -2027,7 +2027,7 @@ b2ExecuteMainStage.exit181: ; preds = %122, %126, %._crit_ br label %b2ExecuteMainStage.exit207 187: ; preds = %180 - %188 = trunc nuw i64 %indvars.iv.next270 to i32 + %188 = trunc nsw i64 %indvars.iv.next270 to i32 %189 = or i32 %121, %188 store atomic i32 %189, ptr %31 seq_cst, align 4 %190 = lshr i32 %189, 16 @@ -2605,15 +2605,29 @@ define internal void @b2FinalizeBodiesTask(i32 noundef %0, i32 noundef %1, i32 n br i1 %206, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph + %.val.us = load ptr, ptr %43, align 8, !tbaa !170 %.val165.us = load ptr, ptr %22, align 8, !tbaa !185 %211 = getelementptr inbounds nuw i64, ptr %.val165.us, i64 %210 + %invariant.gep = getelementptr i8, ptr %.val.us, i64 12 %.promoted = load i64, ptr %211, align 8, !tbaa !87 - %212 = or i64 %.promoted, %209 - store i64 %212, ptr %211, align 8, !tbaa !87 + br label %212 + +212: ; preds = %212, %.lr.ph.split.us + %213 = phi i64 [ %.promoted, %.lr.ph.split.us ], [ %215, %212 ] + %.0161194.us = phi i32 [ %.0161192, %.lr.ph.split.us ], [ %.0161.us, %212 ] + %214 = sext i32 %.0161194.us to i64 + %215 = or i64 %213, %209 + %gep = getelementptr %struct.b2Shape, ptr %invariant.gep, i64 %214 + %.0161.us = load i32, ptr %gep, align 4, !tbaa !100 + %.not.us = icmp eq i32 %.0161.us, -1 + br i1 %.not.us, label %._crit_edge.split.us, label %212, !llvm.loop !270 + +._crit_edge.split.us: ; preds = %212 + store i64 %215, ptr %211, align 8, !tbaa !87 br label %._crit_edge .lr.ph.split: ; preds = %.lr.ph, %243 - %.0161194 = phi i32 [ %.0161, %243 ], [ %.0161192, %.lr.ph ] + %.0161194 = phi i32 [ %.0161, %246 ], [ %.0161192, %.lr.ph ] %.val = load ptr, ptr %43, align 8, !tbaa !170 %213 = sext i32 %.0161194 to i64 %214 = getelementptr inbounds %struct.b2Shape, ptr %.val, i64 %213 @@ -2679,7 +2693,7 @@ define internal void @b2FinalizeBodiesTask(i32 noundef %0, i32 noundef %1, i32 n %.not = icmp eq i32 %.0161, -1 br i1 %.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !270 -._crit_edge: ; preds = %243, %.lr.ph.split.us, %203 +._crit_edge: ; preds = %243, %._crit_edge.split.us, %203 %indvars.iv.next = add nsw i64 %indvars.iv, 1 %lftr.wideiv = trunc i64 %indvars.iv.next to i32 %exitcond.not = icmp eq i32 %1, %lftr.wideiv diff --git a/bench/c3c/optimized/context.ll b/bench/c3c/optimized/context.ll index 25312a73e39..f565099e81d 100644 --- a/bench/c3c/optimized/context.ll +++ b/bench/c3c/optimized/context.ll @@ -92,17 +92,17 @@ define dso_local noundef zeroext i1 @context_set_module_from_filename(ptr nounde 19: ; preds = %._crit_edge.i tail call void @scratch_buffer_clear() #6 - %.02536.i = add nuw nsw i32 %.029.lcssa.i, 1 + %.02536.i = add nsw i32 %.029.lcssa.i, 1 %20 = icmp slt i32 %.02536.i, %.028.lcssa.i br i1 %20, label %.lr.ph39.preheader.i, label %filename_to_module_in_buffer.exit.thread .lr.ph39.preheader.i: ; preds = %19 - %21 = zext i32 %.02536.i to i64 + %21 = sext i32 %.02536.i to i64 br label %.lr.ph39.i .lr.ph39.i: ; preds = %char_is_letter.exit.thread.i, %.lr.ph39.preheader.i %indvars.iv41.i = phi i64 [ %21, %.lr.ph39.preheader.i ], [ %indvars.iv.next42.i, %char_is_letter.exit.thread.i ] - %22 = getelementptr inbounds nuw i8, ptr %8, i64 %indvars.iv41.i + %22 = getelementptr inbounds i8, ptr %8, i64 %indvars.iv41.i %23 = load i8, ptr %22, align 1 %switch.tableidx = add i8 %23, -65 %24 = icmp ult i8 %switch.tableidx, 58 @@ -129,14 +129,14 @@ switch.lookup: ; preds = %switch.hole_check char_is_letter.exit.thread.i: ; preds = %char_is_letter.exit.i, %switch.lookup %.0.i = phi i8 [ %switch.load, %switch.lookup ], [ %spec.select, %char_is_letter.exit.i ] tail call void @scratch_buffer_append_char(i8 noundef signext %.0.i) #6 - %indvars.iv.next42.i = add nuw nsw i64 %indvars.iv41.i, 1 - %28 = trunc nuw i64 %indvars.iv.next42.i to i32 - %29 = icmp sgt i32 %.028.lcssa.i, %28 - br i1 %29, label %.lr.ph39.i, label %filename_to_module_in_buffer.exit.thread, !llvm.loop !9 + %indvars.iv.next42.i = add nsw i64 %indvars.iv41.i, 1 + %28 = trunc i64 %indvars.iv.next42.i to i32 + %29 = icmp eq i32 %.028.lcssa.i, %28 + br i1 %29, label %filename_to_module_in_buffer.exit.thread, label %.lr.ph39.i, !llvm.loop !9 filename_to_module_in_buffer.exit.thread20: ; preds = %._crit_edge.i tail call void (ptr, ptr, ...) @sema_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.1, ptr noundef nonnull %8) #6 - br label %47 + br label %45 filename_to_module_in_buffer.exit.thread: ; preds = %char_is_letter.exit.thread.i, %19 store i32 64, ptr %2, align 4 @@ -165,27 +165,27 @@ fnv1a.exit: ; preds = %.lr.ph.i15, %filena %36 = call ptr @symtab_add(ptr noundef nonnull @scratch_buffer, i32 noundef %30, i32 noundef %.06.lcssa.i, ptr noundef nonnull %2) #6 %37 = load i32, ptr %2, align 4 %.not = icmp eq i32 %37, 64 - br i1 %.not, label %40, label %38 + br i1 %.not, label %38, label %36 + +36: ; preds = %fnv1a.exit + %37 = load ptr, ptr %7, align 8 + call void (ptr, ptr, ...) @sema_error(ptr noundef %0, ptr noundef nonnull @.str.2, ptr noundef %37) #6 + br label %45 38: ; preds = %fnv1a.exit - %39 = load ptr, ptr %7, align 8 - call void (ptr, ptr, ...) @sema_error(ptr noundef %0, ptr noundef nonnull @.str.2, ptr noundef %39) #6 - br label %47 - -40: ; preds = %fnv1a.exit - %41 = call ptr @calloc_arena(i64 noundef 24) #6 - %42 = getelementptr inbounds nuw i8, ptr %41, i64 8 - store i64 0, ptr %41, align 8 - store ptr %36, ptr %42, align 8 - %43 = load i32, ptr getelementptr inbounds nuw (i8, ptr @scratch_buffer, i64 65536), align 4 - %44 = getelementptr inbounds nuw i8, ptr %41, i64 16 - store i32 %43, ptr %44, align 8 - %45 = load ptr, ptr %3, align 8 - %46 = call fastcc zeroext i1 @create_module_or_check_name(ptr noundef %45, ptr noundef nonnull %41, ptr noundef null) - br label %47 - -47: ; preds = %40, %38, %filename_to_module_in_buffer.exit.thread20 - %.0 = phi i1 [ false, %38 ], [ %46, %40 ], [ false, %filename_to_module_in_buffer.exit.thread20 ] + %39 = call ptr @calloc_arena(i64 noundef 24) #6 + %40 = getelementptr inbounds nuw i8, ptr %39, i64 8 + store i64 0, ptr %39, align 8 + store ptr %34, ptr %40, align 8 + %41 = load i32, ptr getelementptr inbounds nuw (i8, ptr @scratch_buffer, i64 65536), align 4 + %42 = getelementptr inbounds nuw i8, ptr %39, i64 16 + store i32 %41, ptr %42, align 8 + %43 = load ptr, ptr %3, align 8 + %44 = call fastcc zeroext i1 @create_module_or_check_name(ptr noundef %43, ptr noundef nonnull %39, ptr noundef null) + br label %45 + +45:; preds = %38, %36, %filename_to_module_in_buffer.exit.thread20 + %.0 = phi i1 [ false, %36 ], [ %44, %38 ], [ false, %filename_to_module_in_buffer.exit.thread20 ] ret i1 %.0 } diff --git a/bench/cmake/optimized/trees.ll b/bench/cmake/optimized/trees.ll index f4d3812bd83..f9edc3dff14 100644 --- a/bench/cmake/optimized/trees.ll +++ b/bench/cmake/optimized/trees.ll @@ -1936,13 +1936,13 @@ gen_bitlen.exit: ; preds = %.outer.split.us.i, %exitcond.not.i127 = icmp eq i64 %indvars.iv.next.i126, 16 br i1 %exitcond.not.i127, label %.preheader.i128, label %368, !llvm.loop !73 -.lr.ph.i129: ; preds = %390, %.lr.ph.preheader.i - %indvars.iv23.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next24.i, %390 ] +.lr.ph.i129: ; preds = %392, %.lr.ph.preheader.i + %indvars.iv23.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next24.i, %392 ] %373 = getelementptr inbounds nuw %struct.ct_data_s, ptr %4, i64 %indvars.iv23.i %374 = getelementptr inbounds nuw i8, ptr %373, i64 2 %375 = load i16, ptr %374, align 2, !tbaa !26 %376 = icmp eq i16 %375, 0 - br i1 %376, label %390, label %377 + br i1 %376, label %392, label %377 377: ; preds = %.lr.ph.i129 %378 = zext i16 %375 to i32 @@ -1951,30 +1951,32 @@ gen_bitlen.exit: ; preds = %.outer.split.us.i, %381 = load i16, ptr %380, align 2, !tbaa !67 %382 = add i16 %381, 1 store i16 %382, ptr %380, align 2, !tbaa !67 - br label %383 - -383: ; preds = %383, %377 - %.07.i.i = phi i16 [ %381, %377 ], [ %386, %383 ] - %.06.i.i = phi i32 [ %378, %377 ], [ %388, %383 ] - %.0.i.i = phi i16 [ 0, %377 ], [ %387, %383 ] - %384 = and i16 %.07.i.i, 1 - %385 = or disjoint i16 %.0.i.i, %384 - %386 = lshr i16 %.07.i.i, 1 - %387 = shl i16 %385, 1 - %388 = add nsw i32 %.06.i.i, -1 - %389 = icmp samesign ugt i32 %.06.i.i, 1 - br i1 %389, label %383, label %bi_reverse.exit.i, !llvm.loop !74 - -bi_reverse.exit.i: ; preds = %383 - store i16 %385, ptr %373, align 2, !tbaa !26 - br label %390 - -390: ; preds = %bi_reverse.exit.i, %.lr.ph.i129 + %383 = zext i16 %381 to i32 + br label %384 + +384: ; preds = %384, %377 + %.06.i.i = phi i32 [ %383, %377 ], [ %387, %384 ] + %.0.i.i = phi i32 [ %378, %377 ], [ %389, %384 ] + %.0.i.i = phi i32 [ 0, %377 ], [ %388, %384 ] + %385 = and i32 %.07.i.i, 1 + %386 = or disjoint i32 %.0.i.i, %385 + %387 = lshr i32 %.07.i.i, 1 + %388 = shl i32 %386, 1 + %389 = add nsw i32 %.06.i.i, -1 + %390 = icmp samesign ugt i32 %.0.i.i, 1 + br i1 %390, label %384, label %bi_reverse.exit.i, !llvm.loop !74 + +bi_reverse.exit.i:; preds = %384 + %391 = trunc i32 %386 to i16 + store i16 %391, ptr %373, align 2, !tbaa !26 + br label %392 + +392: ; preds = %bi_reverse.exit.i, %.lr.ph.i129 %indvars.iv.next24.i = add nuw nsw i64 %indvars.iv23.i, 1 %exitcond26.not.i = icmp eq i64 %indvars.iv.next24.i, %wide.trip.count.i br i1 %exitcond26.not.i, label %gen_codes.exit, label %.lr.ph.i129, !llvm.loop !75 -gen_codes.exit: ; preds = %390, %.preheader.i128 +gen_codes.exit: ; preds = %392, %.preheader.i128 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #9 ret void } diff --git a/bench/cpython/optimized/_randommodule.ll b/bench/cpython/optimized/_randommodule.ll index 9d187d048a7..0a48c31a95f 100644 --- a/bench/cpython/optimized/_randommodule.ll +++ b/bench/cpython/optimized/_randommodule.ll @@ -544,13 +544,14 @@ define internal fastcc i32 @genrand_uint32(ptr noundef captures(none) %0) unname %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %4 = load i32, ptr %3, align 8, !tbaa !32 %5 = icmp sgt i32 %4, 623 - br i1 %5, label %.preheader43.preheader, label %53 + br i1 %5, label %.preheader43.preheader, label %52 .preheader43.preheader: ; preds = %1 %.pre = load i32, ptr %2, align 4, !tbaa !29 br label %.preheader43 .lr.ph.preheader: ; preds = %.preheader43 + %invariant.gep = getelementptr i8, ptr %0, i64 -888 %.phi.trans.insert = getelementptr i8, ptr %0, i64 928 %.pre51 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !29 br label %.lr.ph @@ -588,16 +589,16 @@ define internal fastcc i32 @genrand_uint32(ptr noundef captures(none) %0) unname %26 = load i32, ptr %25, align 4, !tbaa !29 %27 = and i32 %26, 2147483646 %28 = or disjoint i32 %27, %24 - %29 = getelementptr i8, ptr %23, i64 -908 + %29 = getelementptr i32, ptr %invariant.gep, i64 %indvars.iv47 %30 = load i32, ptr %29, align 4, !tbaa !29 %31 = lshr exact i32 %28, 1 %32 = and i32 %26, 1 %33 = zext nneg i32 %32 to i64 %34 = getelementptr [2 x i32], ptr @genrand_uint32.mag01, i64 0, i64 %33 %35 = load i32, ptr %34, align 4, !tbaa !29 + %35 = xor i32 %34, %29 %36 = xor i32 %35, %30 - %37 = xor i32 %36, %31 - store i32 %37, ptr %23, align 4, !tbaa !29 + store i32 %36, ptr %23, align 4, !tbaa !29 %exitcond50.not = icmp eq i64 %indvars.iv.next48, 623 br i1 %exitcond50.not, label %._crit_edge, label %.lr.ph, !llvm.loop !37 @@ -615,29 +616,29 @@ define internal fastcc i32 @genrand_uint32(ptr noundef captures(none) %0) unname %48 = zext nneg i32 %47 to i64 %49 = getelementptr [2 x i32], ptr @genrand_uint32.mag01, i64 0, i64 %48 %50 = load i32, ptr %49, align 4, !tbaa !29 + %50 = xor i32 %49, %44 %51 = xor i32 %50, %45 - %52 = xor i32 %51, %46 - store i32 %52, ptr %38, align 4, !tbaa !29 - br label %53 - -53: ; preds = %._crit_edge, %1 - %54 = phi i32 [ 0, %._crit_edge ], [ %4, %1 ] - %55 = add nsw i32 %54, 1 - store i32 %55, ptr %3, align 8, !tbaa !32 - %56 = sext i32 %54 to i64 - %57 = getelementptr i32, ptr %2, i64 %56 - %58 = load i32, ptr %57, align 4, !tbaa !29 - %59 = lshr i32 %58, 11 - %60 = xor i32 %59, %58 - %61 = shl i32 %60, 7 - %62 = and i32 %61, -1658038656 - %63 = xor i32 %62, %60 - %64 = shl i32 %63, 15 - %65 = and i32 %64, -272236544 - %66 = xor i32 %65, %63 - %67 = lshr i32 %66, 18 - %68 = xor i32 %67, %66 - ret i32 %68 + store i32 %51, ptr %37, align 4, !tbaa !29 + br label %52 + +52: ; preds = %._crit_edge, %1 + %53 = phi i32 [ 0, %._crit_edge ], [ %4, %1 ] + %54 = add nsw i32 %53, 1 + store i32 %54, ptr %3, align 8, !tbaa !32 + %55 = sext i32 %53 to i64 + %56 = getelementptr i32, ptr %2, i64 %55 + %57 = load i32, ptr %56, align 4, !tbaa !29 + %58 = lshr i32 %57, 11 + %59 = xor i32 %58, %57 + %60 = shl i32 %59, 7 + %61 = and i32 %60, -1658038656 + %62 = xor i32 %61, %59 + %63 = shl i32 %62, 15 + %64 = and i32 %63, -272236544 + %65 = xor i32 %64, %62 + %66 = lshr i32 %65, 18 + %67 = xor i32 %66, %65 + ret i32 %67 } declare ptr @PyFloat_FromDouble(double noundef) local_unnamed_addr #1 diff --git a/bench/darktable/optimized/AbstractLJpegDecoder.ll b/bench/darktable/optimized/AbstractLJpegDecoder.ll index 8c57585922d..10ff32657e6 100644 --- a/bench/darktable/optimized/AbstractLJpegDecoder.ll +++ b/bench/darktable/optimized/AbstractLJpegDecoder.ll @@ -640,16 +640,18 @@ _ZNK8rawspeed10ByteStream7peekU16Ev.exit: ; preds = %49 %55 = add nuw nsw i32 %37, 4 %56 = icmp samesign ule i32 %55, %26 tail call void @llvm.assume(i1 %56) - %57 = getelementptr inbounds nuw i8, ptr %.sroa.012.0.copyload.i10103, i64 %50 - %.0.copyload.i.i.i.i.i = load i16, ptr %57, align 1 - %58 = tail call i16 @llvm.bswap.i16(i16 %.0.copyload.i.i.i.i.i) - %spec.select.i.i.i.i.i = select i1 %54, i16 %.0.copyload.i.i.i.i.i, i16 %58 - %59 = zext i16 %spec.select.i.i.i.i.i to i64 - %60 = add nuw nsw i64 %59, %50 - %.not.i.i.i.i = icmp samesign ugt i64 %60, %29 - br i1 %.not.i.i.i.i, label %61, label %_ZN8rawspeed10ByteStream9getStreamEj.exit - -61: ; preds = %_ZNK8rawspeed10ByteStream7peekU16Ev.exit + %57 = icmp sgt i64 %indvars.iv.i.i, -3 + tail call void @llvm.assume(i1 %57) + %58 = getelementptr inbounds nuw i8, ptr %.sroa.012.0.copyload.i10103, i64 %50 + %.0.copyload.i.i.i.i.i = load i16, ptr %58, align 1 + %59 = tail call i16 @llvm.bswap.i16(i16 %.0.copyload.i.i.i.i.i) + %spec.select.i.i.i.i.i = select i1 %54, i16 %.0.copyload.i.i.i.i.i, i16 %59 + %60 = zext i16 %spec.select.i.i.i.i.i to i64 + %61 = add nuw nsw i64 %60, %50 + %.not.i.i.i.i = icmp samesign ugt i64 %61, %29 + br i1 %.not.i.i.i.i, label %62, label %_ZN8rawspeed10ByteStream9getStreamEj.exit + +62: ; preds = %_ZNK8rawspeed10ByteStream7peekU16Ev.exit tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.35, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed6Buffer10getSubViewEjj) #16, !noalias !82 unreachable @@ -684,10 +686,10 @@ _ZN8rawspeed10ByteStream9skipBytesEj.exit: ; preds = %_ZN8rawspeed10ByteS unreachable 69: ; preds = %66 - store ptr %57, ptr %2, align 8 + store ptr %58, ptr %2, align 8 %.sroa.8.sroa.9.0.insert.ext = zext i16 %53 to i64 %.sroa.8.sroa.9.0.insert.shift = shl nuw nsw i64 %.sroa.8.sroa.9.0.insert.ext, 32 - %.sroa.8.sroa.0.0.insert.insert = or disjoint i64 %.sroa.8.sroa.9.0.insert.shift, %59 + %.sroa.8.sroa.0.0.insert.insert = or disjoint i64 %.sroa.8.sroa.9.0.insert.shift, %60 store i64 %.sroa.8.sroa.0.0.insert.insert, ptr %.sroa.8.0..sroa_idx, align 8 store i32 2, ptr %.sroa.10.0..sroa_idx, align 8 tail call void @_ZN8rawspeed20AbstractLJpegDecoder8parseDHTENS_10ByteStreamE(ptr noundef nonnull align 8 dereferenceable(236) %0, ptr noundef nonnull byval(%"class.rawspeed::ByteStream") align 8 %2) @@ -710,10 +712,10 @@ _ZN8rawspeed10ByteStream9skipBytesEj.exit: ; preds = %_ZN8rawspeed10ByteS unreachable 76: ; preds = %73 - store ptr %57, ptr %3, align 8 + store ptr %58, ptr %3, align 8 %.sroa.8.sroa.9.0.insert.ext55 = zext i16 %53 to i64 %.sroa.8.sroa.9.0.insert.shift56 = shl nuw nsw i64 %.sroa.8.sroa.9.0.insert.ext55, 32 - %.sroa.8.sroa.0.0.insert.insert48 = or disjoint i64 %.sroa.8.sroa.9.0.insert.shift56, %59 + %.sroa.8.sroa.0.0.insert.insert48 = or disjoint i64 %.sroa.8.sroa.9.0.insert.shift56, %60 store i64 %.sroa.8.sroa.0.0.insert.insert48, ptr %.sroa.8.0..sroa_idx28, align 8 store i32 2, ptr %.sroa.10.0..sroa_idx34, align 8 tail call void @_ZN8rawspeed20AbstractLJpegDecoder8parseSOFENS_10ByteStreamEPNS_7SOFInfoE(ptr noundef nonnull align 8 dereferenceable(236) %0, ptr noundef nonnull byval(%"class.rawspeed::ByteStream") align 8 %3, ptr noundef nonnull %24) @@ -743,17 +745,17 @@ _ZN8rawspeed10ByteStream9skipBytesEj.exit: ; preds = %_ZN8rawspeed10ByteS unreachable 85: ; preds = %82 - store ptr %57, ptr %4, align 8 + store ptr %58, ptr %4, align 8 %.sroa.8.sroa.9.0.insert.ext59 = zext i16 %53 to i64 %.sroa.8.sroa.9.0.insert.shift60 = shl nuw nsw i64 %.sroa.8.sroa.9.0.insert.ext59, 32 - %.sroa.8.sroa.0.0.insert.insert51 = or disjoint i64 %.sroa.8.sroa.9.0.insert.shift60, %59 + %.sroa.8.sroa.0.0.insert.insert51 = or disjoint i64 %.sroa.8.sroa.9.0.insert.shift60, %60 store i64 %.sroa.8.sroa.0.0.insert.insert51, ptr %.sroa.8.0..sroa_idx30, align 8 store i32 2, ptr %.sroa.10.0..sroa_idx36, align 8 tail call void @_ZN8rawspeed20AbstractLJpegDecoder8parseSOSENS_10ByteStreamE(ptr noundef nonnull align 8 dereferenceable(236) %0, ptr noundef nonnull byval(%"class.rawspeed::ByteStream") align 8 %4) %86 = load ptr, ptr %0, align 8, !tbaa !6 %87 = getelementptr inbounds nuw i8, ptr %86, i64 24 %88 = load ptr, ptr %87, align 8 - %89 = tail call noundef zeroext i1 %88(ptr noundef nonnull align 8 dereferenceable(236) %0) + %89 = tail call noundef zeroext i1 %89(ptr noundef nonnull align 8 dereferenceable(236) %0) br i1 %89, label %.loopexit, label %.critedge 90: ; preds = %_ZN8rawspeed10ByteStream9skipBytesEj.exit @@ -776,7 +778,7 @@ _ZN8rawspeed10ByteStream9skipBytesEj.exit: ; preds = %_ZN8rawspeed10ByteS unreachable _ZN8rawspeed20AbstractLJpegDecoder8parseDRIENS_10ByteStreamE.exit: ; preds = %93 - %95 = getelementptr inbounds nuw i8, ptr %57, i64 2 + %95 = getelementptr inbounds nuw i8, ptr %58, i64 2 %.0.copyload.i.i.i.i.i.i.i24 = load i16, ptr %95, align 1 %96 = tail call i16 @llvm.bswap.i16(i16 %.0.copyload.i.i.i.i.i.i.i24) %spec.select.i.i.i.i.i.i.i = select i1 %54, i16 %.0.copyload.i.i.i.i.i.i.i24, i16 %96 @@ -784,22 +786,22 @@ _ZN8rawspeed20AbstractLJpegDecoder8parseDRIENS_10ByteStreamE.exit: ; preds = %93 br label %.critedge .critedge: ; preds = %_ZN8rawspeed10ByteStream9skipBytesEj.exit, %85, %_ZN8rawspeed20AbstractLJpegDecoder8parseDRIENS_10ByteStreamE.exit, %76, %69 - %.sroa.068.1 = phi i1 [ %.sroa.068.099, %_ZN8rawspeed10ByteStream9skipBytesEj.exit ], [ %.sroa.068.099, %69 ], [ %.sroa.068.099, %76 ], [ %.sroa.068.099, %85 ], [ true, %_ZN8rawspeed20AbstractLJpegDecoder8parseDRIENS_10ByteStreamE.exit ] - %.sroa.5.1 = phi i1 [ %.sroa.5.0100, %_ZN8rawspeed10ByteStream9skipBytesEj.exit ], [ true, %69 ], [ %.sroa.5.0100, %76 ], [ true, %85 ], [ %.sroa.5.0100, %_ZN8rawspeed20AbstractLJpegDecoder8parseDRIENS_10ByteStreamE.exit ] - %.sroa.7.1 = phi i8 [ %.sroa.7.0101, %_ZN8rawspeed10ByteStream9skipBytesEj.exit ], [ %.sroa.7.0101, %69 ], [ 1, %76 ], [ 1, %85 ], [ %.sroa.7.0101, %_ZN8rawspeed20AbstractLJpegDecoder8parseDRIENS_10ByteStreamE.exit ] - %.sroa.1070.1 = phi i8 [ %.sroa.1070.0102, %_ZN8rawspeed10ByteStream9skipBytesEj.exit ], [ 0, %69 ], [ 0, %76 ], [ 1, %85 ], [ %.sroa.1070.0102, %_ZN8rawspeed20AbstractLJpegDecoder8parseDRIENS_10ByteStreamE.exit ] + %.sroa.068.1 = phi i1 [ %.sroa.068.099, %_ZN8rawspeed10ByteStream9skipBytesEj.exit ], [ %.sroa.068.099, %70 ], [ %.sroa.068.099, %77 ], [ %.sroa.068.099, %86 ], [ true, %_ZN8rawspeed20AbstractLJpegDecoder8parseDRIENS_10ByteStreamE.exit ] + %.sroa.5.1 = phi i1 [ %.sroa.5.0100, %_ZN8rawspeed10ByteStream9skipBytesEj.exit ], [ true, %70 ], [ %.sroa.5.0100, %77 ], [ true, %86 ], [ %.sroa.5.0100, %_ZN8rawspeed20AbstractLJpegDecoder8parseDRIENS_10ByteStreamE.exit ] + %.sroa.7.1 = phi i8 [ %.sroa.7.0101, %_ZN8rawspeed10ByteStream9skipBytesEj.exit ], [ %.sroa.7.0101, %70 ], [ 1, %77 ], [ 1, %86 ], [ %.sroa.7.0101, %_ZN8rawspeed20AbstractLJpegDecoder8parseDRIENS_10ByteStreamE.exit ] + %.sroa.1070.1 = phi i8 [ %.sroa.1070.0102, %_ZN8rawspeed10ByteStream9skipBytesEj.exit ], [ 0, %70 ], [ 0, %77 ], [ 1, %86 ], [ %.sroa.1070.0102, %_ZN8rawspeed20AbstractLJpegDecoder8parseDRIENS_10ByteStreamE.exit ] %.sroa.012.0.copyload.i10 = load ptr, ptr %5, align 8 %.sroa.2.0.copyload.i12 = load i32, ptr %.sroa.2.0..sroa_idx.i, align 8 %.sroa.413.0.copyload.i14 = load i32, ptr %.sroa.413.0..sroa_idx.i, align 8 %97 = icmp sgt i32 %.sroa.2.0.copyload.i12, -1 - tail call void @llvm.assume(i1 %97) - %98 = icmp samesign uge i32 %.sroa.2.0.copyload.i12, %.sroa.413.0.copyload.i14 tail call void @llvm.assume(i1 %98) - %99 = icmp sgt i32 %.sroa.413.0.copyload.i14, -1 + %99 = icmp samesign uge i32 %.sroa.2.0.copyload.i12, %.sroa.413.0.copyload.i14 tail call void @llvm.assume(i1 %99) - %100 = sub nsw i32 %.sroa.2.0.copyload.i12, %.sroa.413.0.copyload.i14 - %101 = icmp ugt i32 %100, 1 - br i1 %101, label %_ZNK8rawspeed10ByteStream8peekByteEj.exit.i.lr.ph.i.i16, label %.loopexit.i15 + %100 = icmp sgt i32 %.sroa.413.0.copyload.i14, -1 + tail call void @llvm.assume(i1 %100) + %101 = sub nsw i32 %.sroa.2.0.copyload.i12, %.sroa.413.0.copyload.i14 + %102 = icmp ugt i32 %101, 1 + br i1 %102, label %_ZNK8rawspeed10ByteStream8peekByteEj.exit.i.lr.ph.i.i16, label %.loopexit.i15 .critedge7: ; preds = %_ZN8rawspeed20AbstractLJpegDecoder13getNextMarkerEb.exit23 %.old9 = trunc nuw i8 %.sroa.1070.0102 to i1 @@ -1665,7 +1667,7 @@ _ZN8rawspeed10ByteStream7getByteEv.exit48: ; preds = %_ZN8rawspeed10ByteS 79: ; preds = %.lr.ph, %74 %indvars.iv89 = phi i64 [ %72, %.lr.ph ], [ %indvars.iv.next90, %74 ] %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %74 ] - %.not.i.not.i.i.i.i.i49 = icmp samesign ult i64 %indvars.iv89, %19 + %.not.i.not.i.i.i.i.i49 = icmp ult i64 %indvars.iv89, %19 br i1 %.not.i.not.i.i.i.i.i49, label %_ZN8rawspeed10ByteStream7getByteEv.exit51, label %80 80: ; preds = %79 @@ -1682,7 +1684,7 @@ _ZN8rawspeed10ByteStream7getByteEv.exit51: ; preds = %79 %85 = zext i8 %.0.copyload.i.i.i.i.i.i50 to i32 %86 = getelementptr inbounds nuw [4 x %"struct.rawspeed::JpegComponentInfo"], ptr %2, i64 0, i64 %indvars.iv store i32 %85, ptr %86, align 4, !tbaa !211 - %.not.i.not.i.i.i.i.i52 = icmp samesign ult i64 %84, %19 + %.not.i.not.i.i.i.i.i52 = icmp ult i64 %84, %19 br i1 %.not.i.not.i.i.i.i.i52, label %_ZN8rawspeed10ByteStream7getByteEv.exit54, label %87 87: ; preds = %_ZN8rawspeed10ByteStream7getByteEv.exit51 @@ -1722,7 +1724,7 @@ _ZN8rawspeed10ByteStream7getByteEv.exit54: ; preds = %_ZN8rawspeed10ByteS unreachable 103: ; preds = %100 - %.not.i.not.i.i.i.i.i55 = icmp samesign ult i64 %91, %19 + %.not.i.not.i.i.i.i.i55 = icmp ult i64 %91, %19 br i1 %.not.i.not.i.i.i.i.i55, label %_ZN8rawspeed10ByteStream7getByteEv.exit57, label %104 104: ; preds = %103 @@ -1850,7 +1852,7 @@ _ZN8rawspeed10ByteStream7getByteEv.exit25: ; preds = %._crit_edge 39: ; preds = %.lr.ph, %60 %indvars.iv60 = phi i64 [ %28, %.lr.ph ], [ %indvars.iv.next61, %60 ] %.045 = phi i32 [ 0, %.lr.ph ], [ %62, %60 ] - %.not.i.not.i.i.i.i.i26 = icmp samesign ult i64 %indvars.iv60, %29 + %.not.i.not.i.i.i.i.i26 = icmp ult i64 %indvars.iv60, %29 br i1 %.not.i.not.i.i.i.i.i26, label %_ZN8rawspeed10ByteStream7getByteEv.exit28, label %40 40: ; preds = %39 @@ -1862,7 +1864,7 @@ _ZN8rawspeed10ByteStream7getByteEv.exit28: ; preds = %39 %.0.copyload.i.i.i.i.i.i27 = load i8, ptr %41, align 1 %42 = add nuw nsw i64 %indvars.iv60, 1 %43 = zext i8 %.0.copyload.i.i.i.i.i.i27 to i32 - %.not.i.not.i.i.i.i.i29 = icmp samesign ult i64 %42, %29 + %.not.i.not.i.i.i.i.i29 = icmp ult i64 %42, %29 br i1 %.not.i.not.i.i.i.i.i29, label %_ZN8rawspeed10ByteStream7getByteEv.exit31, label %44 44: ; preds = %_ZN8rawspeed10ByteStream7getByteEv.exit28 diff --git a/bench/darktable/optimized/IiqDecoder.ll b/bench/darktable/optimized/IiqDecoder.ll index edfa9f4a6b9..977b399e8a4 100644 --- a/bench/darktable/optimized/IiqDecoder.ll +++ b/bench/darktable/optimized/IiqDecoder.ll @@ -584,7 +584,7 @@ _ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE7reserveEm.exit: ; preds = %_ZNSt %98 = getelementptr inbounds nuw i8, ptr %.sroa.037.071, i64 4 %99 = load i32, ptr %98, align 4, !tbaa !18 %100 = sub i32 %97, %99 - %101 = zext nneg i32 %.sroa.9.072 to i64 + %101 = zext i32 %.sroa.9.072 to i64 %102 = zext i32 %100 to i64 %103 = add nuw nsw i64 %102, %101 %.not.i.i.i.i20 = icmp samesign ugt i64 %103, %84 @@ -604,9 +604,11 @@ _ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE7reserveEm.exit: ; preds = %_ZNSt %106 = add nuw nsw i32 %100, %.sroa.9.072 %107 = icmp samesign ule i32 %106, %2 tail call void @llvm.assume(i1 %107) - %108 = icmp sgt i32 %100, -1 + %108 = icmp sgt i32 %.sroa.9.072, -1 tail call void @llvm.assume(i1 %108) - %109 = getelementptr inbounds nuw i8, ptr %1, i64 %101 + %109 = icmp sgt i32 %100, -1 + tail call void @llvm.assume(i1 %109) + %110 = getelementptr inbounds nuw i8, ptr %1, i64 %101 %.sroa.2.8.insert.insert.i.i.i = or disjoint i64 %102, 244834610708480 %.not.i = icmp eq ptr %93, %94 br i1 %.not.i, label %114, label %110 @@ -615,7 +617,7 @@ _ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE7reserveEm.exit: ; preds = %_ZNSt %111 = load i32, ptr %.sroa.037.071, align 4, !tbaa !30 store i32 %111, ptr %93, align 8, !tbaa !31 %112 = getelementptr inbounds nuw i8, ptr %93, i64 8 - store ptr %109, ptr %112, align 8 + store ptr %110, ptr %112, align 8 %.sroa.448.0..sroa_idx = getelementptr inbounds nuw i8, ptr %93, i64 16 store i64 %.sroa.2.8.insert.insert.i.i.i, ptr %.sroa.448.0..sroa_idx, align 8 %.sroa.549.0..sroa_idx = getelementptr inbounds nuw i8, ptr %93, i64 24 @@ -658,7 +660,7 @@ _ZNKSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE12_M_check_lenEmPKc.exit.i.i: ; %128 = load i32, ptr %.sroa.037.071, align 4, !tbaa !30 store i32 %128, ptr %127, align 8, !tbaa !31 %129 = getelementptr inbounds nuw i8, ptr %127, i64 8 - store ptr %109, ptr %129, align 8 + store ptr %110, ptr %129, align 8 %.sroa.6.0..sroa_idx27 = getelementptr inbounds nuw i8, ptr %127, i64 16 store i64 %.sroa.2.8.insert.insert.i.i.i, ptr %.sroa.6.0..sroa_idx27, align 8 %.sroa.7.0..sroa_idx29 = getelementptr inbounds nuw i8, ptr %127, i64 24 @@ -691,9 +693,9 @@ _ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE17_M_realloc_insertIJRjNS0_10Byte br label %_ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE12emplace_backIJRjNS0_10ByteStreamEEEERS1_DpOT_.exit _ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE12emplace_backIJRjNS0_10ByteStreamEEEERS1_DpOT_.exit: ; preds = %_ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE17_M_realloc_insertIJRjNS0_10ByteStreamEEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i, %110 - %135 = phi ptr [ %132, %_ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE17_M_realloc_insertIJRjNS0_10ByteStreamEEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i ], [ %113, %110 ] - %136 = phi ptr [ %126, %_ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE17_M_realloc_insertIJRjNS0_10ByteStreamEEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i ], [ %95, %110 ] - %137 = phi ptr [ %134, %_ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE17_M_realloc_insertIJRjNS0_10ByteStreamEEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i ], [ %94, %110 ] + %135 = phi ptr [ %132, %_ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE17_M_realloc_insertIJRjNS0_10ByteStreamEEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i ], [ %113, %111 ] + %136 = phi ptr [ %126, %_ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE17_M_realloc_insertIJRjNS0_10ByteStreamEEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i ], [ %95, %111 ] + %137 = phi ptr [ %134, %_ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE17_M_realloc_insertIJRjNS0_10ByteStreamEEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i ], [ %94, %111 ] %138 = getelementptr inbounds nuw i8, ptr %.sroa.037.071, i64 8 %.sroa.034.0 = getelementptr inbounds nuw i8, ptr %.sroa.034.073, i64 8 %139 = load ptr, ptr %7, align 8, !tbaa !16 @@ -725,17 +727,17 @@ _ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EE12emplace_backIJRjNS0_10ByteStrea ret void 142: ; preds = %.loopexit, %.loopexit.split-lp, %140 - %143 = phi ptr [ %.promoted, %140 ], [ %93, %.loopexit ], [ %94, %.loopexit.split-lp ] - %144 = phi ptr [ %.promoted63, %140 ], [ %95, %.loopexit ], [ %95, %.loopexit.split-lp ] - %.pn.pn.pn = phi { ptr, i32 } [ %141, %140 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %143 = phi ptr [ %.promoted, %141 ], [ %93, %.loopexit ], [ %94, %.loopexit.split-lp ] + %144 = phi ptr [ %.promoted63, %141 ], [ %95, %.loopexit ], [ %95, %.loopexit.split-lp ] + %.pn.pn.pn = phi { ptr, i32 } [ %141, %141 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] %.not.i.i.i25 = icmp eq ptr %144, null br i1 %.not.i.i.i25, label %_ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EED2Ev.exit, label %145 145: ; preds = %142 - %146 = ptrtoint ptr %143 to i64 %147 = ptrtoint ptr %144 to i64 - %148 = sub i64 %146, %147 - tail call void @_ZdlPvm(ptr noundef nonnull %144, i64 noundef %148) #26 + %148 = ptrtoint ptr %145 to i64 + %149 = sub i64 %147, %148 + tail call void @_ZdlPvm(ptr noundef nonnull %145, i64 noundef %149) #26 br label %_ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EED2Ev.exit _ZNSt6vectorIN8rawspeed13PhaseOneStripESaIS1_EED2Ev.exit: ; preds = %142, %145 diff --git a/bench/duckdb/optimized/decode.ll b/bench/duckdb/optimized/decode.ll index 21d2a3165e8..e9965600b76 100644 --- a/bench/duckdb/optimized/decode.ll +++ b/bench/duckdb/optimized/decode.ll @@ -5424,8 +5424,9 @@ _ZN13duckdb_brotliL36EnsureCoumpoundDictionaryInitializedEPNS_24BrotliDecoderSta store i32 %512, ptr %510, align 4, !tbaa !60 %513 = getelementptr inbounds nuw i8, ptr %456, i64 8 store i32 %501, ptr %513, align 8, !tbaa !115 - %514 = and i64 %indvars.iv.i, 4294967295 - %515 = getelementptr inbounds nuw [16 x i32], ptr %490, i64 0, i64 %514 + %sext.i = shl i64 %indvars.iv.i, 32 + %514 = ashr exact i64 %sext.i, 32 + %515 = getelementptr inbounds [16 x i32], ptr %490, i64 0, i64 %514 %516 = load i32, ptr %515, align 4, !tbaa !39 %517 = sub nsw i32 %455, %516 %518 = getelementptr inbounds nuw i8, ptr %456, i64 12 @@ -6917,8 +6918,9 @@ _ZN13duckdb_brotliL36EnsureCoumpoundDictionaryInitializedEPNS_24BrotliDecoderSta store i32 %562, ptr %560, align 4, !tbaa !60 %563 = getelementptr inbounds nuw i8, ptr %506, i64 8 store i32 %551, ptr %563, align 8, !tbaa !115 - %564 = and i64 %indvars.iv.i, 4294967295 - %565 = getelementptr inbounds nuw [16 x i32], ptr %540, i64 0, i64 %564 + %sext.i = shl i64 %indvars.iv.i, 32 + %564 = ashr exact i64 %sext.i, 32 + %565 = getelementptr inbounds [16 x i32], ptr %540, i64 0, i64 %564 %566 = load i32, ptr %565, align 4, !tbaa !39 %567 = sub nsw i32 %505, %566 %568 = getelementptr inbounds nuw i8, ptr %506, i64 12 diff --git a/bench/eastl/optimized/EAString.ll b/bench/eastl/optimized/EAString.ll index 8cd9069eb1e..4b085cfdc0a 100644 --- a/bench/eastl/optimized/EAString.ll +++ b/bench/eastl/optimized/EAString.ll @@ -9603,7 +9603,7 @@ if.end31: ; preds = %for.body27, %if.end %7 = trunc i64 %t.1.idx to i32 %conv32 = add i32 %7, -1 store i32 %conv32, ptr %decimalPos, align 4 - %t.3.ptr73 = getelementptr inbounds nuw i8, ptr %buffer, i64 %t.1.idx + %t.3.ptr73 = getelementptr inbounds i8, ptr %buffer, i64 %t.1.idx %tobool3474 = icmp ne i32 %nDigitCountAfterDecimal, 0 %tobool3575 = fcmp une double %call12, 0.000000e+00 %8 = select i1 %tobool3474, i1 %tobool3575, i1 false @@ -9629,7 +9629,7 @@ while.body: ; preds = %while.body.preheade store i8 %conv40, ptr %t.3.ptr80, align 1 %dec42 = add nsw i32 %nDigitCountAfterDecimal.addr.076, -1 %dec43 = add nsw i32 %count.079, -1 - %t.3.ptr = getelementptr inbounds nuw i8, ptr %buffer, i64 %t.3.add60 + %t.3.ptr = getelementptr inbounds i8, ptr %buffer, i64 %t.3.add60 %tobool34 = icmp ne i32 %dec43, 0 %tobool35 = fcmp une double %call37, 0.000000e+00 %11 = select i1 %tobool34, i1 %tobool35, i1 false @@ -10124,7 +10124,7 @@ do.body.i: ; preds = %do.body.i, %if.end. %nValue.addr.0.i = phi i64 [ %conv, %if.end.i ], [ %div.i, %do.body.i ] %rem.i = urem i64 %nValue.addr.0.i, %conv.i %div.i = udiv i64 %nValue.addr.0.i, %conv.i - %cmp.i = icmp samesign ugt i64 %rem.i, 9 + %cmp.i = icmp ugt i64 %rem.i, 9 %1 = trunc i64 %rem.i to i16 %conv7.i = or disjoint i16 %1, 48 %conv4.i = add i16 %1, 87 @@ -10183,7 +10183,7 @@ do.body.i: ; preds = %do.body.i, %if.end. %rem.i = urem i64 %nValue.addr.0.i, %conv.i %conv1.i = trunc nuw i64 %rem.i to i32 %div.i = udiv i64 %nValue.addr.0.i, %conv.i - %cmp.i = icmp samesign ugt i64 %rem.i, 9 + %cmp.i = icmp ugt i64 %rem.i, 9 %add5.i = or disjoint i32 %conv1.i, 48 %add.i = add i32 %conv1.i, 87 %storemerge.i = select i1 %cmp.i, i32 %add.i, i32 %add5.i @@ -10274,7 +10274,7 @@ do.body.i: ; preds = %do.body.i, %entry %nValue.addr.0.i = phi i64 [ %conv, %entry ], [ %div.i, %do.body.i ] %rem.i = urem i64 %nValue.addr.0.i, %conv.i %div.i = udiv i64 %nValue.addr.0.i, %conv.i - %cmp.i = icmp samesign ugt i64 %rem.i, 9 + %cmp.i = icmp ugt i64 %rem.i, 9 %0 = trunc i64 %rem.i to i16 %conv7.i = or disjoint i16 %0, 48 %conv4.i = add i16 %0, 87 @@ -10317,7 +10317,7 @@ do.body.i: ; preds = %do.body.i, %entry %rem.i = urem i64 %nValue.addr.0.i, %conv.i %conv1.i = trunc nuw i64 %rem.i to i32 %div.i = udiv i64 %nValue.addr.0.i, %conv.i - %cmp.i = icmp samesign ugt i64 %rem.i, 9 + %cmp.i = icmp ugt i64 %rem.i, 9 %add5.i = or disjoint i32 %conv1.i, 48 %add.i = add i32 %conv1.i, 87 %storemerge.i = select i1 %cmp.i, i32 %add.i, i32 %add5.i @@ -12061,7 +12061,7 @@ if.then63: ; preds = %for.body if.end73: ; preds = %for.body %indvars.iv.next135 = add nuw nsw i64 %indvars.iv134, 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %arrayidx79 = getelementptr inbounds nuw i8, ptr %pResult, i64 %indvars.iv + %arrayidx79 = getelementptr inbounds i8, ptr %pResult, i64 %indvars.iv store i8 %9, ptr %arrayidx79, align 1 %exitcond142.not = icmp eq i64 %indvars.iv.next135, %wide.trip.count141 br i1 %exitcond142.not, label %if.end81, label %land.rhs, !llvm.loop !214 @@ -12167,15 +12167,17 @@ land.rhs145.preheader: ; preds = %if.end113, %if.end1 %nPrecision.addr.0175 = phi i32 [ %dec, %if.end140 ], [ %nPrecision, %if.end113 ] %nPositionResult.5174 = phi i32 [ %23, %if.end140 ], [ %inc114, %if.end113 ] %24 = sext i32 %nPositionResult.5174 to i64 + %25 = sext i32 %nPositionTemp.0 to i64 + %26 = sext i32 %nFirstTrailingZeroPosition.0 to i64 %smax160 = call i32 @llvm.smax.i32(i32 %nPositionResult.5174, i32 %nResultCapacity) %25 = sub i32 %smax160, %nPositionResult.5174 br label %land.rhs145 land.rhs145: ; preds = %land.rhs145.preheader, %if.end175 - %indvars.iv155 = phi i64 [ %idxprom82, %land.rhs145.preheader ], [ %indvars.iv.next156, %if.end175 ] + %indvars.iv155 = phi i64 [ %25, %land.rhs145.preheader ], [ %indvars.iv.next156, %if.end175 ] %indvars.iv153 = phi i64 [ %24, %land.rhs145.preheader ], [ %indvars.iv.next154, %if.end175 ] %i.2120 = phi i32 [ 0, %land.rhs145.preheader ], [ %inc183, %if.end175 ] - %arrayidx147 = getelementptr inbounds nuw i8, ptr %bufferTemp, i64 %indvars.iv155 + %arrayidx147 = getelementptr inbounds i8, ptr %bufferTemp, i64 %indvars.iv155 %26 = load i8, ptr %arrayidx147, align 1 %tobool148.not = icmp eq i8 %26, 0 br i1 %tobool148.not, label %if.end186.loopexit, label %for.body150 @@ -12212,14 +12214,13 @@ while.body171: ; preds = %land.rhs165 br i1 %cmp164, label %land.rhs165, label %return, !llvm.loop !217 if.end175: ; preds = %for.body150 - %indvars.iv.next156 = add nuw nsw i64 %indvars.iv155, 1 + %indvars.iv.next156 = add nsw i64 %indvars.iv155, 1 %indvars.iv.next154 = add nsw i64 %indvars.iv153, 1 %arrayidx181 = getelementptr inbounds i8, ptr %pResult, i64 %indvars.iv153 store i8 %26, ptr %arrayidx181, align 1 %inc183 = add nuw nsw i32 %i.2120, 1 %cmp142 = icmp slt i32 %inc183, %nPrecision.addr.0175 - %29 = trunc nuw i64 %indvars.iv.next156 to i32 - %cmp144 = icmp sgt i32 %nFirstTrailingZeroPosition.0, %29 + %cmp144 = icmp slt i64 %indvars.iv.next156, %26 %or.cond105 = select i1 %cmp142, i1 %cmp144, i1 false br i1 %or.cond105, label %land.rhs145, label %if.end186.loopexit, !llvm.loop !218 @@ -12480,7 +12481,7 @@ if.end73: ; preds = %for.body %indvars.iv.next144 = add nuw nsw i64 %indvars.iv143, 1 %conv77 = sext i8 %21 to i16 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %arrayidx80 = getelementptr inbounds nuw i16, ptr %pResult, i64 %indvars.iv + %arrayidx80 = getelementptr inbounds i16, ptr %pResult, i64 %indvars.iv store i16 %conv77, ptr %arrayidx80, align 2 %exitcond151.not = icmp eq i64 %indvars.iv.next144, %wide.trip.count150 br i1 %exitcond151.not, label %if.end82, label %land.rhs, !llvm.loop !220 @@ -12586,15 +12587,17 @@ land.rhs146.preheader: ; preds = %if.end114, %if.end1 %nPrecision.addr.0184 = phi i32 [ %dec, %if.end141 ], [ %nPrecision, %if.end114 ] %nPositionResult.5183 = phi i32 [ %35, %if.end141 ], [ %inc115, %if.end114 ] %36 = sext i32 %nPositionResult.5183 to i64 + %37 = sext i32 %nPositionTemp.0 to i64 + %38 = sext i32 %nFirstTrailingZeroPosition.0 to i64 %smax169 = call i32 @llvm.smax.i32(i32 %nPositionResult.5183, i32 %nResultCapacity) %37 = sub i32 %smax169, %nPositionResult.5183 br label %land.rhs146 land.rhs146: ; preds = %land.rhs146.preheader, %if.end176 - %indvars.iv164 = phi i64 [ %idxprom83, %land.rhs146.preheader ], [ %indvars.iv.next165, %if.end176 ] + %indvars.iv164 = phi i64 [ %37, %land.rhs146.preheader ], [ %indvars.iv.next165, %if.end176 ] %indvars.iv162 = phi i64 [ %36, %land.rhs146.preheader ], [ %indvars.iv.next163, %if.end176 ] %i.2123 = phi i32 [ 0, %land.rhs146.preheader ], [ %inc185, %if.end176 ] - %arrayidx148 = getelementptr inbounds nuw i8, ptr %bufferTemp, i64 %indvars.iv164 + %arrayidx148 = getelementptr inbounds i8, ptr %bufferTemp, i64 %indvars.iv164 %38 = load i8, ptr %arrayidx148, align 1 %tobool149.not = icmp eq i8 %38, 0 br i1 %tobool149.not, label %if.end188.loopexit, label %for.body151 @@ -12631,15 +12634,14 @@ while.body172: ; preds = %land.rhs166 br i1 %cmp165, label %land.rhs166, label %return, !llvm.loop !223 if.end176: ; preds = %for.body151 - %indvars.iv.next165 = add nuw nsw i64 %indvars.iv164, 1 + %indvars.iv.next165 = add nsw i64 %indvars.iv164, 1 %conv180 = sext i8 %38 to i16 %indvars.iv.next163 = add nsw i64 %indvars.iv162, 1 %arrayidx183 = getelementptr inbounds i16, ptr %pResult, i64 %indvars.iv162 store i16 %conv180, ptr %arrayidx183, align 2 %inc185 = add nuw nsw i32 %i.2123, 1 %cmp143 = icmp slt i32 %inc185, %nPrecision.addr.0184 - %41 = trunc nuw i64 %indvars.iv.next165 to i32 - %cmp145 = icmp sgt i32 %nFirstTrailingZeroPosition.0, %41 + %cmp145 = icmp slt i64 %indvars.iv.next165, %38 %or.cond105 = select i1 %cmp143, i1 %cmp145, i1 false br i1 %or.cond105, label %land.rhs146, label %if.end188.loopexit, !llvm.loop !224 @@ -12839,7 +12841,7 @@ if.end73: ; preds = %for.body %indvars.iv.next137 = add nuw nsw i64 %indvars.iv136, 1 %conv77 = sext i8 %11 to i32 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %arrayidx80 = getelementptr inbounds nuw i32, ptr %pResult, i64 %indvars.iv + %arrayidx80 = getelementptr inbounds i32, ptr %pResult, i64 %indvars.iv store i32 %conv77, ptr %arrayidx80, align 4 %exitcond144.not = icmp eq i64 %indvars.iv.next137, %wide.trip.count143 br i1 %exitcond144.not, label %if.end82, label %land.rhs, !llvm.loop !226 @@ -12945,15 +12947,17 @@ land.rhs146.preheader: ; preds = %if.end114, %if.end1 %nPrecision.addr.0177 = phi i32 [ %dec, %if.end141 ], [ %nPrecision, %if.end114 ] %nPositionResult.5176 = phi i32 [ %25, %if.end141 ], [ %inc115, %if.end114 ] %26 = sext i32 %nPositionResult.5176 to i64 + %27 = sext i32 %nPositionTemp.0 to i64 + %28 = sext i32 %nFirstTrailingZeroPosition.0 to i64 %smax162 = call i32 @llvm.smax.i32(i32 %nPositionResult.5176, i32 %nResultCapacity) %27 = sub i32 %smax162, %nPositionResult.5176 br label %land.rhs146 land.rhs146: ; preds = %land.rhs146.preheader, %if.end175 - %indvars.iv157 = phi i64 [ %idxprom83, %land.rhs146.preheader ], [ %indvars.iv.next158, %if.end175 ] + %indvars.iv157 = phi i64 [ %27, %land.rhs146.preheader ], [ %indvars.iv.next158, %if.end175 ] %indvars.iv155 = phi i64 [ %26, %land.rhs146.preheader ], [ %indvars.iv.next156, %if.end175 ] %i.2121 = phi i32 [ 0, %land.rhs146.preheader ], [ %inc184, %if.end175 ] - %arrayidx148 = getelementptr inbounds nuw i8, ptr %bufferTemp, i64 %indvars.iv157 + %arrayidx148 = getelementptr inbounds i8, ptr %bufferTemp, i64 %indvars.iv157 %28 = load i8, ptr %arrayidx148, align 1 %tobool149.not = icmp eq i8 %28, 0 br i1 %tobool149.not, label %if.end187.loopexit, label %for.body151 @@ -12990,15 +12994,14 @@ while.body171: ; preds = %land.rhs166 br i1 %cmp165, label %land.rhs166, label %return, !llvm.loop !229 if.end175: ; preds = %for.body151 - %indvars.iv.next158 = add nuw nsw i64 %indvars.iv157, 1 + %indvars.iv.next158 = add nsw i64 %indvars.iv157, 1 %conv179 = sext i8 %28 to i32 %indvars.iv.next156 = add nsw i64 %indvars.iv155, 1 %arrayidx182 = getelementptr inbounds i32, ptr %pResult, i64 %indvars.iv155 store i32 %conv179, ptr %arrayidx182, align 4 %inc184 = add nuw nsw i32 %i.2121, 1 %cmp143 = icmp slt i32 %inc184, %nPrecision.addr.0177 - %31 = trunc nuw i64 %indvars.iv.next158 to i32 - %cmp145 = icmp sgt i32 %nFirstTrailingZeroPosition.0, %31 + %cmp145 = icmp slt i64 %indvars.iv.next158, %28 %or.cond105 = select i1 %cmp143, i1 %cmp145, i1 false br i1 %or.cond105, label %land.rhs146, label %if.end187.loopexit, !llvm.loop !230 diff --git a/bench/faiss/optimized/Heap.ll b/bench/faiss/optimized/Heap.ll index 37c26db2c94..53ca83c0d1c 100644 --- a/bench/faiss/optimized/Heap.ll +++ b/bench/faiss/optimized/Heap.ll @@ -8718,7 +8718,8 @@ _ZN5faiss9heap_pushINS_4CMinIfiEEEEvmPNT_1TEPNS3_2TIES4_S6_.exit: ; preds = %_ZN br i1 %exitcond.not, label %._crit_edge, label %65, !llvm.loop !133 .preheader.loopexit: ; preds = %187 - %94 = and i64 %indvars.iv.next, 4294967295 + %sext = shl i64 %indvars.iv.next, 32 + %94 = ashr exact i64 %sext, 32 br label %.preheader .preheader: ; preds = %54, %.preheader.loopexit, %._crit_edge @@ -8903,9 +8904,9 @@ _ZN5faiss9heap_pushINS_4CMinIfiEEEEvmPNT_1TEPNS3_2TIES4_S6_.exit91: ; preds = %_ .lr.ph114: ; preds = %.lr.ph114.preheader, %.lr.ph114 %indvars.iv121 = phi i64 [ %indvars.iv.next122, %.lr.ph114 ], [ %.071.lcssa, %.lr.ph114.preheader ] - %191 = getelementptr inbounds nuw i64, ptr %98, i64 %indvars.iv121 + %191 = getelementptr inbounds i64, ptr %98, i64 %indvars.iv121 store i64 -1, ptr %191, align 8, !tbaa !15 - %192 = getelementptr inbounds nuw float, ptr %97, i64 %indvars.iv121 + %192 = getelementptr inbounds float, ptr %97, i64 %indvars.iv121 store float 0x47EFFFFFE0000000, ptr %192, align 4, !tbaa !18 %indvars.iv.next122 = add nuw nsw i64 %indvars.iv121, 1 %193 = load i64, ptr %5, align 8, !tbaa !15 @@ -9199,7 +9200,8 @@ _ZN5faiss9heap_pushINS_4CMaxIfiEEEEvmPNT_1TEPNS3_2TIES4_S6_.exit: ; preds = %_ZN br i1 %exitcond.not, label %._crit_edge, label %65, !llvm.loop !137 .preheader.loopexit: ; preds = %187 - %94 = and i64 %indvars.iv.next, 4294967295 + %sext = shl i64 %indvars.iv.next, 32 + %94 = ashr exact i64 %sext, 32 br label %.preheader .preheader: ; preds = %54, %.preheader.loopexit, %._crit_edge @@ -9384,9 +9386,9 @@ _ZN5faiss9heap_pushINS_4CMaxIfiEEEEvmPNT_1TEPNS3_2TIES4_S6_.exit91: ; preds = %_ .lr.ph114: ; preds = %.lr.ph114.preheader, %.lr.ph114 %indvars.iv121 = phi i64 [ %indvars.iv.next122, %.lr.ph114 ], [ %.071.lcssa, %.lr.ph114.preheader ] - %191 = getelementptr inbounds nuw i64, ptr %98, i64 %indvars.iv121 + %191 = getelementptr inbounds i64, ptr %98, i64 %indvars.iv121 store i64 -1, ptr %191, align 8, !tbaa !15 - %192 = getelementptr inbounds nuw float, ptr %97, i64 %indvars.iv121 + %192 = getelementptr inbounds float, ptr %97, i64 %indvars.iv121 store float 0xC7EFFFFFE0000000, ptr %192, align 4, !tbaa !18 %indvars.iv.next122 = add nuw nsw i64 %indvars.iv121, 1 %193 = load i64, ptr %5, align 8, !tbaa !15 @@ -9671,7 +9673,8 @@ _ZN5faiss9heap_pushINS_4CMinIiiEEEEvmPNT_1TEPNS3_2TIES4_S6_.exit: ; preds = %_ZN br i1 %exitcond.not, label %._crit_edge, label %65, !llvm.loop !141 .preheader.loopexit: ; preds = %185 - %93 = and i64 %indvars.iv.next, 4294967295 + %sext = shl i64 %indvars.iv.next, 32 + %93 = ashr exact i64 %sext, 32 br label %.preheader .preheader: ; preds = %51, %.preheader.loopexit, %._crit_edge @@ -9856,9 +9859,9 @@ _ZN5faiss9heap_pushINS_4CMinIiiEEEEvmPNT_1TEPNS3_2TIES4_S6_.exit94: ; preds = %_ .lr.ph118: ; preds = %.lr.ph118.preheader, %.lr.ph118 %indvars.iv125 = phi i64 [ %indvars.iv.next126, %.lr.ph118 ], [ %.071.lcssa, %.lr.ph118.preheader ] - %189 = getelementptr inbounds nuw i64, ptr %97, i64 %indvars.iv125 + %189 = getelementptr inbounds i64, ptr %97, i64 %indvars.iv125 store i64 -1, ptr %189, align 8, !tbaa !15 - %190 = getelementptr inbounds nuw i32, ptr %96, i64 %indvars.iv125 + %190 = getelementptr inbounds i32, ptr %96, i64 %indvars.iv125 store i32 2147483647, ptr %190, align 4, !tbaa !16 %indvars.iv.next126 = add nuw nsw i64 %indvars.iv125, 1 %191 = load i64, ptr %5, align 8, !tbaa !15 @@ -10143,7 +10146,8 @@ _ZN5faiss9heap_pushINS_4CMaxIiiEEEEvmPNT_1TEPNS3_2TIES4_S6_.exit: ; preds = %_ZN br i1 %exitcond.not, label %._crit_edge, label %65, !llvm.loop !146 .preheader.loopexit: ; preds = %185 - %93 = and i64 %indvars.iv.next, 4294967295 + %sext = shl i64 %indvars.iv.next, 32 + %93 = ashr exact i64 %sext, 32 br label %.preheader .preheader: ; preds = %51, %.preheader.loopexit, %._crit_edge @@ -10328,9 +10332,9 @@ _ZN5faiss9heap_pushINS_4CMaxIiiEEEEvmPNT_1TEPNS3_2TIES4_S6_.exit94: ; preds = %_ .lr.ph118: ; preds = %.lr.ph118.preheader, %.lr.ph118 %indvars.iv125 = phi i64 [ %indvars.iv.next126, %.lr.ph118 ], [ %.071.lcssa, %.lr.ph118.preheader ] - %189 = getelementptr inbounds nuw i64, ptr %97, i64 %indvars.iv125 + %189 = getelementptr inbounds i64, ptr %97, i64 %indvars.iv125 store i64 -1, ptr %189, align 8, !tbaa !15 - %190 = getelementptr inbounds nuw i32, ptr %96, i64 %indvars.iv125 + %190 = getelementptr inbounds i32, ptr %96, i64 %indvars.iv125 store i32 -2147483648, ptr %190, align 4, !tbaa !16 %indvars.iv.next126 = add nuw nsw i64 %indvars.iv125, 1 %191 = load i64, ptr %5, align 8, !tbaa !15 diff --git a/bench/ffmpeg/optimized/af_adeclick.ll b/bench/ffmpeg/optimized/af_adeclick.ll index d0c191a3c2b..831dc402185 100644 --- a/bench/ffmpeg/optimized/af_adeclick.ll +++ b/bench/ffmpeg/optimized/af_adeclick.ll @@ -1190,7 +1190,7 @@ define internal i32 @detect_clicks(ptr noundef readonly captures(none) %0, ptr r .preheader76: ; preds = %.preheader76.preheader, %._crit_edge %indvars.iv94 = phi i64 [ %21, %.preheader76.preheader ], [ %indvars.iv.next95, %._crit_edge ] - %22 = getelementptr inbounds nuw double, ptr %3, i64 %indvars.iv94 + %22 = getelementptr inbounds double, ptr %3, i64 %indvars.iv94 %.promoted = load double, ptr %22, align 8, !tbaa !65 br label %25 @@ -1217,7 +1217,7 @@ define internal i32 @detect_clicks(ptr noundef readonly captures(none) %0, ptr r br i1 %exitcond.not, label %._crit_edge, label %25, !llvm.loop !123 ._crit_edge: ; preds = %25 - %indvars.iv.next95 = add nuw nsw i64 %indvars.iv94, 1 + %indvars.iv.next95 = add nsw i64 %indvars.iv94, 1 %exitcond98.not = icmp eq i64 %indvars.iv.next95, %wide.trip.count97 br i1 %exitcond98.not, label %.preheader75, label %.preheader76, !llvm.loop !124 @@ -1712,13 +1712,13 @@ autocorrelation.exit.i139: ; preds = %autocorrelation.exi %173 = mul nuw nsw i64 %indvars.iv.i140, %151 %174 = getelementptr inbounds nuw i32, ptr %124, i64 %indvars.iv.i140 %175 = load i32, ptr %174, align 4, !tbaa !117 - %invariant.gep139.sink.i = getelementptr inbounds nuw double, ptr %147, i64 %indvars.iv.i140 - %invariant.gep.sink.i = getelementptr inbounds nuw double, ptr %147, i64 %173 + %invariant.gep139.sink.i = getelementptr double, ptr %147, i64 %indvars.iv.i140 + %invariant.gep.sink.i = getelementptr double, ptr %147, i64 %173 br label %176 176: ; preds = %185, %autocorrelation.exit.i139 %indvars.iv116.i = phi i64 [ %indvars.iv.i140, %autocorrelation.exit.i139 ], [ %indvars.iv.next117.i, %185 ] - %177 = getelementptr inbounds nuw i32, ptr %124, i64 %indvars.iv116.i + %177 = getelementptr inbounds i32, ptr %124, i64 %indvars.iv116.i %178 = load i32, ptr %177, align 4, !tbaa !117 %179 = sub nsw i32 %178, %175 %180 = tail call i32 @llvm.abs.i32(i32 %179, i1 true) @@ -1733,10 +1733,10 @@ autocorrelation.exit.i139: ; preds = %autocorrelation.exi 185: ; preds = %181, %176 %.sink146.i = phi double [ %184, %181 ], [ 0.000000e+00, %176 ] - %gep.i141 = getelementptr inbounds nuw double, ptr %invariant.gep.sink.i, i64 %indvars.iv116.i + %gep.i141 = getelementptr double, ptr %invariant.gep.sink.i, i64 %indvars.iv116.i store double %.sink146.i, ptr %gep.i141, align 8, !tbaa !65 %186 = mul nuw nsw i64 %indvars.iv116.i, %151 - %gep140.i = getelementptr inbounds nuw double, ptr %invariant.gep139.sink.i, i64 %186 + %gep140.i = getelementptr double, ptr %invariant.gep139.sink.i, i64 %186 store double %.sink146.i, ptr %gep140.i, align 8, !tbaa !65 %indvars.iv.next117.i = add nuw nsw i64 %indvars.iv116.i, 1 %exitcond.not.i142 = icmp eq i64 %indvars.iv.next117.i, %151 @@ -1878,9 +1878,9 @@ find_index.exit.i: ; preds = %.lr.ph.i88.i, %.loo .lr.ph73.us.i.i.i: ; preds = %._crit_edge74.us.i.i.i, %.lr.ph73.us.preheader.i.i.i %indvars.iv94.i.i.i = phi i64 [ %indvars.iv92.i.i.i, %.lr.ph73.us.preheader.i.i.i ], [ %indvars.iv.next95.i.i.i, %._crit_edge74.us.i.i.i ] %240 = mul nuw nsw i64 %indvars.iv94.i.i.i, %151 - %gep116.i.i.i = getelementptr inbounds nuw double, ptr %225, i64 %240 + %gep116.i.i.i = getelementptr double, ptr %225, i64 %240 %241 = load double, ptr %gep116.i.i.i, align 8, !tbaa !65 - %invariant.gep113.i.i.i = getelementptr inbounds nuw double, ptr %147, i64 %240 + %invariant.gep113.i.i.i = getelementptr double, ptr %147, i64 %240 br label %242 242: ; preds = %242, %.lr.ph73.us.i.i.i @@ -1893,7 +1893,7 @@ find_index.exit.i: ; preds = %.lr.ph.i88.i, %.loo %247 = load double, ptr %246, align 8, !tbaa !65 %gep112.i.i.i = getelementptr inbounds nuw double, ptr %invariant.gep111.i.i.i, i64 %indvars.iv87.i.i.i %248 = load double, ptr %gep112.i.i.i, align 8, !tbaa !65 - %gep114.i.i.i = getelementptr inbounds nuw double, ptr %invariant.gep113.i.i.i, i64 %indvars.iv87.i.i.i + %gep114.i.i.i = getelementptr double, ptr %invariant.gep113.i.i.i, i64 %indvars.iv87.i.i.i %249 = load double, ptr %gep114.i.i.i, align 8, !tbaa !65 %250 = fneg nsz double %248 %251 = fmul nsz double %247, %250 @@ -1995,16 +1995,17 @@ factorization.exit.i.i: ; preds = %._crit_edge80.i.i.i 283: ; preds = %283, %.lr.ph70.i.i %indvars.iv87.i.i = phi i64 [ %indvars.iv85.i.i, %.lr.ph70.i.i ], [ %indvars.iv.next88.i.i, %283 ] %284 = phi double [ %280, %.lr.ph70.i.i ], [ %290, %283 ] - %285 = mul nuw nsw i64 %indvars.iv87.i.i, %151 + %285 = mul nsw i64 %indvars.iv87.i.i, %151 %gep97.i.i = getelementptr double, ptr %invariant.gep96.i.i, i64 %285 %286 = load double, ptr %gep97.i.i, align 8, !tbaa !65 - %287 = getelementptr inbounds nuw double, ptr %122, i64 %indvars.iv87.i.i + %287 = getelementptr inbounds double, ptr %122, i64 %indvars.iv87.i.i %288 = load double, ptr %287, align 8, !tbaa !65 %289 = fneg nsz double %286 %290 = tail call nsz double @llvm.fmuladd.f64(double %289, double %288, double %284) store double %290, ptr %281, align 8, !tbaa !65 %indvars.iv.next88.i.i = add nuw nsw i64 %indvars.iv87.i.i, 1 - %exitcond90.not.i.i = icmp eq i64 %indvars.iv.next88.i.i, %151 + %lftr.wideiv.i.i = trunc i64 %indvars.iv.next88.i.i to i32 + %exitcond90.not.i.i = icmp eq i32 %131, %lftr.wideiv.i.i br i1 %exitcond90.not.i.i, label %.loopexit.i.i, label %283, !llvm.loop !151 .lr.ph.preheader: ; preds = %.loopexit.i.i diff --git a/bench/ffmpeg/optimized/celp_filters.ll b/bench/ffmpeg/optimized/celp_filters.ll index 327b00766de..f78e2b10b6a 100644 --- a/bench/ffmpeg/optimized/celp_filters.ll +++ b/bench/ffmpeg/optimized/celp_filters.ll @@ -125,13 +125,13 @@ define void @ff_celp_circ_addf(ptr noundef writeonly captures(none) %0, ptr noun .lr.ph25: ; preds = %.lr.ph25.preheader, %.lr.ph25 %indvars.iv27 = phi i64 [ %10, %.lr.ph25.preheader ], [ %indvars.iv.next28, %.lr.ph25 ] - %22 = getelementptr inbounds nuw float, ptr %1, i64 %indvars.iv27 + %22 = getelementptr inbounds float, ptr %1, i64 %indvars.iv27 %23 = load float, ptr %22, align 4, !tbaa !12 %24 = sub nsw i64 %indvars.iv27, %11 %25 = getelementptr inbounds float, ptr %2, i64 %24 %26 = load float, ptr %25, align 4, !tbaa !12 %27 = tail call nsz float @llvm.fmuladd.f32(float %4, float %26, float %23) - %28 = getelementptr inbounds nuw float, ptr %0, i64 %indvars.iv27 + %28 = getelementptr inbounds float, ptr %0, i64 %indvars.iv27 store float %27, ptr %28, align 4, !tbaa !12 %indvars.iv.next28 = add nuw nsw i64 %indvars.iv27, 1 %exitcond31.not = icmp eq i64 %indvars.iv.next28, %wide.trip.count30 @@ -415,7 +415,7 @@ define void @ff_celp_lp_synthesis_filterf(ptr noundef captures(none) %0, ptr nou %.0150.lcssa = phi i32 [ 0, %5 ], [ %90, %._crit_edge185.loopexit ] %.0148.lcssa = phi ptr [ %2, %5 ], [ %87, %._crit_edge185.loopexit ] %.0.lcssa = phi ptr [ %0, %5 ], [ %86, %._crit_edge185.loopexit ] - %91 = zext i32 %.0150.lcssa to i64 + %91 = zext nneg i32 %.0150.lcssa to i64 %92 = sub nsw i64 0, %91 %93 = getelementptr inbounds float, ptr %.0.lcssa, i64 %92 %94 = getelementptr inbounds float, ptr %.0148.lcssa, i64 %92 @@ -434,28 +434,32 @@ define void @ff_celp_lp_synthesis_filterf(ptr noundef captures(none) %0, ptr nou %wide.trip.count = zext i32 %96 to i64 br label %.lr.ph192 -.lr.ph196.split.us: ; preds = %.lr.ph196, %.lr.ph196.split.us - %indvars.iv214 = phi i64 [ %indvars.iv.next215, %.lr.ph196.split.us ], [ %91, %.lr.ph196 ] - %98 = getelementptr inbounds nuw float, ptr %94, i64 %indvars.iv214 - %99 = load float, ptr %98, align 4, !tbaa !12 - %100 = getelementptr inbounds nuw float, ptr %93, i64 %indvars.iv214 - store float %99, ptr %100, align 4, !tbaa !12 - %indvars.iv.next215 = add nuw nsw i64 %indvars.iv214, 1 - %101 = trunc nuw i64 %indvars.iv.next215 to i32 - %102 = icmp sgt i32 %3, %101 - br i1 %102, label %.lr.ph196.split.us, label %._crit_edge197, !llvm.loop !20 +.lr.ph196.split.us: ; preds = %.lr.ph196 + %98 = sext i32 %.0150.lcssa to i64 + %wide.trip.count218 = sext i32 %3 to i64 + br label %.lr.ph196.split.us + +.lr.ph196.split.us:; preds = %.lr.ph196.split.us, %.lr.ph196.split.us + %indvars.iv215 = phi i64 [ %98, %.lr.ph196.split.us.preheader ], [ %indvars.iv.next216, %.lr.ph196.split.us ] + %99 = getelementptr inbounds float, ptr %94, i64 %indvars.iv215 + %100 = load float, ptr %99, align 4, !tbaa !12 + %101 = getelementptr inbounds float, ptr %93, i64 %indvars.iv215 + store float %100, ptr %101, align 4, !tbaa !12 + %indvars.iv.next216 = add nsw i64 %indvars.iv215, 1 + %exitcond219.not = icmp eq i64 %indvars.iv.next216, %wide.trip.count218 + br i1 %exitcond219.not, label %._crit_edge197, label %.lr.ph196.split.us, !llvm.loop !20 .lr.ph192: ; preds = %.lr.ph192.preheader, %._crit_edge193 %indvars.iv209 = phi i64 [ %97, %.lr.ph192.preheader ], [ %indvars.iv.next210, %._crit_edge193 ] - %103 = getelementptr inbounds nuw float, ptr %94, i64 %indvars.iv209 + %103 = getelementptr inbounds float, ptr %94, i64 %indvars.iv209 %104 = load float, ptr %103, align 4, !tbaa !12 - %105 = getelementptr inbounds nuw float, ptr %93, i64 %indvars.iv209 + %105 = getelementptr inbounds float, ptr %93, i64 %indvars.iv209 store float %104, ptr %105, align 4, !tbaa !12 br label %106 106: ; preds = %.lr.ph192, %106 - %indvars.iv206 = phi i64 [ 1, %.lr.ph192 ], [ %indvars.iv.next207, %106 ] - %107 = phi float [ %104, %.lr.ph192 ], [ %113, %106 ] + %indvars.iv206 = phi i64 [ 1, %.lr.ph192 ], [ %indvars.iv.next207, %105 ] + %107 = phi float [ %104, %.lr.ph192 ], [ %113, %105 ] %gep = getelementptr float, ptr %invariant.gep, i64 %indvars.iv206 %108 = load float, ptr %gep, align 4, !tbaa !12 %109 = sub nsw i64 %indvars.iv209, %indvars.iv206 @@ -469,7 +473,7 @@ define void @ff_celp_lp_synthesis_filterf(ptr noundef captures(none) %0, ptr nou br i1 %exitcond.not, label %._crit_edge193, label %106, !llvm.loop !21 ._crit_edge193: ; preds = %106 - %indvars.iv.next210 = add nuw nsw i64 %indvars.iv209, 1 + %indvars.iv.next210 = add nsw i64 %indvars.iv209, 1 %exitcond213.not = icmp eq i64 %indvars.iv.next210, %wide.trip.count212 br i1 %exitcond213.not, label %._crit_edge197, label %.lr.ph192, !llvm.loop !20 diff --git a/bench/ffmpeg/optimized/lossless_videodsp.ll b/bench/ffmpeg/optimized/lossless_videodsp.ll index 7a3dfad19f6..46adfc22797 100644 --- a/bench/ffmpeg/optimized/lossless_videodsp.ll +++ b/bench/ffmpeg/optimized/lossless_videodsp.ll @@ -47,9 +47,9 @@ define internal void @add_bytes_c(ptr noundef captures(none) %0, ptr noundef rea .lr.ph22: ; preds = %.preheader, %.lr.ph22 %.121 = phi i64 [ %22, %.lr.ph22 ], [ %.0.lcssa, %.preheader ] - %17 = getelementptr inbounds nuw i8, ptr %1, i64 %.121 + %17 = getelementptr inbounds i8, ptr %1, i64 %.121 %18 = load i8, ptr %17, align 1, !tbaa !17 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 %.121 + %19 = getelementptr inbounds i8, ptr %0, i64 %.121 %20 = load i8, ptr %19, align 1, !tbaa !17 %21 = add i8 %20, %18 store i8 %21, ptr %19, align 1, !tbaa !17 @@ -135,7 +135,8 @@ define internal i32 @add_left_pred_c(ptr noundef writeonly captures(none) %0, pt br i1 %6, label %.lr.ph, label %.preheader .preheader.loopexit: ; preds = %.lr.ph - %7 = and i64 %indvars.iv.next, 4294967294 + %sext = shl i64 %indvars.iv.next, 32 + %7 = ashr exact i64 %sext, 32 br label %.preheader .preheader: ; preds = %.preheader.loopexit, %4 @@ -169,12 +170,12 @@ define internal i32 @add_left_pred_c(ptr noundef writeonly captures(none) %0, pt .lr.ph34: ; preds = %.preheader, %.lr.ph34 %indvars.iv39 = phi i64 [ %indvars.iv.next40, %.lr.ph34 ], [ %.0.lcssa, %.preheader ] %.12632 = phi i32 [ %26, %.lr.ph34 ], [ %.025.lcssa, %.preheader ] - %23 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv39 + %23 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv39 %24 = load i8, ptr %23, align 1, !tbaa !17 %25 = zext i8 %24 to i32 %26 = add nsw i32 %.12632, %25 %27 = trunc i32 %26 to i8 - %28 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv39 + %28 = getelementptr inbounds i8, ptr %0, i64 %indvars.iv39 store i8 %27, ptr %28, align 1, !tbaa !17 %indvars.iv.next40 = add nuw nsw i64 %indvars.iv39, 1 %exitcond.not = icmp eq i64 %indvars.iv.next40, %2 @@ -192,7 +193,8 @@ define internal i32 @add_left_pred_int16_c(ptr noundef writeonly captures(none) br i1 %7, label %.lr.ph, label %.preheader .preheader.loopexit: ; preds = %.lr.ph - %8 = and i64 %indvars.iv.next, 4294967294 + %sext = shl i64 %indvars.iv.next, 32 + %8 = ashr exact i64 %sext, 32 br label %.preheader .preheader: ; preds = %.preheader.loopexit, %5 @@ -228,13 +230,13 @@ define internal i32 @add_left_pred_int16_c(ptr noundef writeonly captures(none) .lr.ph37: ; preds = %.preheader, %.lr.ph37 %indvars.iv42 = phi i64 [ %indvars.iv.next43, %.lr.ph37 ], [ %.0.lcssa, %.preheader ] %.12935 = phi i32 [ %30, %.lr.ph37 ], [ %.028.lcssa, %.preheader ] - %26 = getelementptr inbounds nuw i16, ptr %1, i64 %indvars.iv42 + %26 = getelementptr inbounds i16, ptr %1, i64 %indvars.iv42 %27 = load i16, ptr %26, align 2, !tbaa !24 %28 = zext i16 %27 to i32 %29 = add i32 %.12935, %28 %30 = and i32 %29, %2 %31 = trunc i32 %30 to i16 - %32 = getelementptr inbounds nuw i16, ptr %0, i64 %indvars.iv42 + %32 = getelementptr inbounds i16, ptr %0, i64 %indvars.iv42 store i16 %31, ptr %32, align 2, !tbaa !24 %indvars.iv.next43 = add nuw nsw i64 %indvars.iv42, 1 %exitcond.not = icmp eq i64 %indvars.iv.next43, %3 diff --git a/bench/ffmpeg/optimized/mobiclip.ll b/bench/ffmpeg/optimized/mobiclip.ll index e91259c067d..9fd63d1a5d9 100644 --- a/bench/ffmpeg/optimized/mobiclip.ll +++ b/bench/ffmpeg/optimized/mobiclip.ll @@ -470,14 +470,14 @@ setup_qtables.exit203: ; preds = %207 .preheader270: ; preds = %.preheader270.lr.ph, %._crit_edge288 %219 = phi i32 [ %492, %._crit_edge288 ], [ %214, %.preheader270.lr.ph ] %220 = phi i32 [ %493, %._crit_edge288 ], [ %217, %.preheader270.lr.ph ] - %.0157290 = phi i32 [ %221, %._crit_edge288 ], [ 0, %.preheader270.lr.ph ] + %.0157290 = phi i32 [ %494, %._crit_edge288 ], [ 0, %.preheader270.lr.ph ] %.not182285 = icmp sgt i32 %220, 0 - %221 = add nuw nsw i32 %.0157290, 16 br i1 %.not182285, label %.lr.ph287, label %._crit_edge288 .lr.ph287: ; preds = %.preheader270 %222 = lshr exact i32 %.0157290, 1 %223 = or disjoint i32 %222, 4 + %223 = or disjoint i32 %.0157290, 8 br label %224 224: ; preds = %.lr.ph287, %add_pframe_coefficients.exit243 @@ -661,7 +661,7 @@ get_ue_golomb.exit: ; preds = %311, %301 .preheader: ; preds = %327, %336 %.0152284 = phi i32 [ %.0157290, %327 ], [ %337, %336 ] %.0154283 = phi i32 [ %331, %327 ], [ %385, %336 ] - %333 = or disjoint i32 %.0152284, 4 + %333 = add nuw nsw i32 %.0152284, 4 br label %339 334: ; preds = %336 @@ -671,7 +671,7 @@ get_ue_golomb.exit: ; preds = %311, %301 336: ; preds = %add_pframe_coefficients.exit %337 = add nuw nsw i32 %.0152284, 8 - %338 = icmp samesign ult i32 %337, %221 + %338 = icmp samesign ult i32 %.0152284, %223 br i1 %338, label %.preheader, label %334, !llvm.loop !72 339: ; preds = %.preheader, %add_pframe_coefficients.exit @@ -937,10 +937,11 @@ add_pframe_coefficients.exit243: ; preds = %488, %481, %.add_pf %.pre304 = load i32, ptr %13, align 4, !tbaa !28 br label %._crit_edge288 -._crit_edge288: ; preds = %.preheader270, %._crit_edge288.loopexit +._crit_edge288: ; preds = %._crit_edge288.loopexit, %.preheader270 %492 = phi i32 [ %.pre304, %._crit_edge288.loopexit ], [ %219, %.preheader270 ] %493 = phi i32 [ %490, %._crit_edge288.loopexit ], [ %220, %.preheader270 ] - %.not265 = icmp slt i32 %221, %492 + %494 = add nuw nsw i32 %.0157290, 16 + %.not265 = icmp slt i32 %494, %492 br i1 %.not265, label %.preheader270, label %.thread246, !llvm.loop !77 .thread246: ; preds = %._crit_edge, %._crit_edge288, %.preheader270.lr.ph, %.preheader271.lr.ph, %setup_qtables.exit, %setup_qtables.exit203 @@ -968,7 +969,7 @@ add_pframe_coefficients.exit243: ; preds = %488, %481, %.add_pf br label %setup_qtables.exit.thread setup_qtables.exit.thread: ; preds = %.lr.ph, %285, %get_ue_golomb.exit, %280, %311, %get_se_golomb.exit, %61, %498, %35, %29, %4, %504 - %.0153 = phi i32 [ 0, %504 ], [ -1094995529, %4 ], [ %33, %29 ], [ -1094995529, %35 ], [ %502, %498 ], [ -1094995529, %61 ], [ -1094995529, %get_se_golomb.exit ], [ -1094995529, %311 ], [ %283, %280 ], [ %287, %285 ], [ -1094995529, %get_ue_golomb.exit ], [ %124, %.lr.ph ] + %.0153 = phi i32 [ 0, %505 ], [ -1094995529, %4 ], [ %33, %29 ], [ -1094995529, %35 ], [ %503, %499 ], [ -1094995529, %61 ], [ -1094995529, %get_se_golomb.exit ], [ -1094995529, %311 ], [ %283, %280 ], [ %287, %285 ], [ -1094995529, %get_ue_golomb.exit ], [ %124, %.lr.ph ] ret i32 %.0153 } diff --git a/bench/ffmpeg/optimized/motionpixels.ll b/bench/ffmpeg/optimized/motionpixels.ll index f84cf294b74..33d1ddcb64e 100644 --- a/bench/ffmpeg/optimized/motionpixels.ll +++ b/bench/ffmpeg/optimized/motionpixels.ll @@ -198,7 +198,7 @@ define internal i32 @mp_decode_frame(ptr noundef %0, ptr noundef %1, ptr noundef br label %59 59: ; preds = %33, %59 - %.06178 = phi i32 [ %58, %33 ], [ 1, %59 ] + %.06178 = phi i32 [ %58, %33 ], [ %83, %59 ] %60 = load i32, ptr %44, align 8, !tbaa !55 %61 = load i32, ptr %40, align 8, !tbaa !53 %62 = load ptr, ptr %5, align 8, !tbaa !50 @@ -225,8 +225,9 @@ define internal i32 @mp_decode_frame(ptr noundef %0, ptr noundef %1, ptr noundef store i32 %82, ptr %44, align 8, !tbaa !55 call fastcc void @mp_read_changes_map(ptr noundef nonnull %11, ptr noundef %5, i32 noundef %70, i32 noundef 8, i32 noundef %.06178) call fastcc void @mp_read_changes_map(ptr noundef nonnull %11, ptr noundef %5, i32 noundef %80, i32 noundef 4, i32 noundef %.06178) - %83 = icmp eq i32 %.06178, 0 - br i1 %83, label %59, label %84, !llvm.loop !57 + %83 = add nuw nsw i32 %.06178, 1 + %exitcond.not = icmp eq i32 %83, 2 + br i1 %exitcond.not, label %84, label %59, !llvm.loop !57 84: ; preds = %59 %85 = load i32, ptr %44, align 8, !tbaa !55 diff --git a/bench/ffmpeg/optimized/snow_dwt.ll b/bench/ffmpeg/optimized/snow_dwt.ll index a0438a3136c..27580f15323 100644 --- a/bench/ffmpeg/optimized/snow_dwt.ll +++ b/bench/ffmpeg/optimized/snow_dwt.ll @@ -3498,15 +3498,17 @@ define internal fastcc range(i32 0, 4194304) i32 @w_c(ptr noundef readonly captu .preheader.lr.ph.us: ; preds = %.preheader.lr.ph.us.preheader, %._crit_edge10.us %indvars.iv33 = phi i64 [ %73, %.preheader.lr.ph.us.preheader ], [ %indvars.iv.next34, %._crit_edge10.us ] %.112.us = phi i32 [ %.07416, %.preheader.lr.ph.us.preheader ], [ %88, %._crit_edge10.us ] - %74 = and i64 %indvars.iv33, 1 - %.not84.us = icmp eq i64 %74, 0 - %75 = select i1 %.not84.us, i32 0, i32 %69 - %.not85.us = icmp samesign ult i64 %indvars.iv33, 2 - %76 = select i1 %.not85.us, i32 0, i32 %71 - %77 = add nsw i32 %75, %76 - %78 = getelementptr inbounds nuw [2 x [2 x [4 x [4 x i32]]]], ptr @w_c.scale, i64 0, i64 %62, i64 %64, i64 %indvars.iv37, i64 %indvars.iv33 - %79 = load i32, ptr %78, align 4, !tbaa !26 - %80 = sext i32 %77 to i64 + %74 = trunc nuw nsw i64 %indvars.iv33 to i32 + %75 = and i32 %74, 1 + %.not84.us = icmp eq i32 %75, 0 + %76 = select i1 %.not84.us, i32 0, i32 %69 + %77 = and i32 %74, 2 + %.not85.us = icmp eq i32 %77, 0 + %78 = select i1 %.not85.us, i32 0, i32 %71 + %79 = add nsw i32 %76, %78 + %80 = getelementptr inbounds nuw [2 x [2 x [4 x [4 x i32]]]], ptr @w_c.scale, i64 0, i64 %62, i64 %64, i64 %indvars.iv37, i64 %indvars.iv33 + %81 = load i32, ptr %80, align 4, !tbaa !26 + %82 = sext i32 %79 to i64 br label %.preheader.us 81: ; preds = %82 @@ -3515,12 +3517,12 @@ define internal fastcc range(i32 0, 4194304) i32 @w_c(ptr noundef readonly captu br i1 %exitcond32.not, label %._crit_edge10.us, label %.preheader.us, !llvm.loop !70 82: ; preds = %.preheader.us, %82 - %indvars.iv23 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next24, %82 ] - %.37.us = phi i32 [ %.29.us, %.preheader.us ], [ %88, %82 ] + %indvars.iv23 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next24, %84 ] + %.37.us = phi i32 [ %.29.us, %.preheader.us ], [ %88, %84 ] %83 = add nsw i64 %90, %indvars.iv23 %84 = getelementptr inbounds [1024 x i32], ptr %7, i64 0, i64 %83 %85 = load i32, ptr %84, align 4, !tbaa !26 - %86 = mul nsw i32 %79, %85 + %86 = mul nsw i32 %81, %85 %87 = call i32 @llvm.abs.i32(i32 %86, i1 true) %88 = add nuw nsw i32 %87, %.37.us %indvars.iv.next24 = add nuw nsw i64 %indvars.iv23, 1 @@ -3528,10 +3530,10 @@ define internal fastcc range(i32 0, 4194304) i32 @w_c(ptr noundef readonly captu br i1 %exitcond27.not, label %81, label %82, !llvm.loop !71 .preheader.us: ; preds = %.preheader.lr.ph.us, %81 - %indvars.iv28 = phi i64 [ 0, %.preheader.lr.ph.us ], [ %indvars.iv.next29, %81 ] - %.29.us = phi i32 [ %.112.us, %.preheader.lr.ph.us ], [ %88, %81 ] + %indvars.iv28 = phi i64 [ 0, %.preheader.lr.ph.us ], [ %indvars.iv.next29, %83 ] + %.29.us = phi i32 [ %.112.us, %.preheader.lr.ph.us ], [ %88, %83 ] %89 = mul nsw i64 %indvars.iv28, %72 - %90 = add nsw i64 %89, %80 + %90 = add nsw i64 %89, %82 br label %82 ._crit_edge10.us: ; preds = %81 diff --git a/bench/folly/optimized/Benchmark.ll b/bench/folly/optimized/Benchmark.ll index 7e70da22132..d53a62e86da 100644 --- a/bench/folly/optimized/Benchmark.ll +++ b/bench/folly/optimized/Benchmark.ll @@ -6354,7 +6354,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i .lr.ph.i.preheader.i: ; preds = %.preheader.i.i, %.lr.ph.i.i %.013.i1.i = phi ptr [ %346, %.lr.ph.i.i ], [ @_ZN5follyL13kTimeSuffixesE, %.preheader.i.i ] %346 = getelementptr inbounds nuw i8, ptr %.013.i1.i, i64 16 - %347 = load double, ptr %346, align 8, !tbaa !279, !noalias !277 + %347 = load double, ptr %346, align 16, !tbaa !279, !noalias !277 %348 = fcmp olt double %333, %347 br i1 %348, label %.lr.ph.i.i, label %.critedge.i.i, !llvm.loop !278 @@ -6415,7 +6415,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i .lr.ph.i.preheader.i86: ; preds = %.preheader.i.i82, %.lr.ph.i.i88 %.013.i1.i87 = phi ptr [ %366, %.lr.ph.i.i88 ], [ @_ZN5follyL15kMetricSuffixesE, %.preheader.i.i82 ] %366 = getelementptr inbounds nuw i8, ptr %.013.i1.i87, i64 16 - %367 = load double, ptr %366, align 8, !tbaa !279, !noalias !289 + %367 = load double, ptr %366, align 16, !tbaa !279, !noalias !289 %368 = fcmp olt double %353, %367 br i1 %368, label %.lr.ph.i.i88, label %.critedge.i.i83, !llvm.loop !278 @@ -6555,7 +6555,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i .lr.ph.i.preheader.i108: ; preds = %.preheader.i.i104, %.lr.ph.i.i110 %.013.i1.i109 = phi ptr [ %414, %.lr.ph.i.i110 ], [ @_ZN5follyL13kTimeSuffixesE, %.preheader.i.i104 ] %414 = getelementptr inbounds nuw i8, ptr %.013.i1.i109, i64 16 - %415 = load double, ptr %414, align 8, !tbaa !279, !noalias !299 + %415 = load double, ptr %414, align 16, !tbaa !279, !noalias !299 %416 = fcmp olt double %401, %415 br i1 %416, label %.lr.ph.i.i110, label %.critedge.i.i105, !llvm.loop !278 @@ -6616,7 +6616,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i .lr.ph.i.preheader.i124: ; preds = %.preheader.i.i120, %.lr.ph.i.i126 %.013.i1.i125 = phi ptr [ %434, %.lr.ph.i.i126 ], [ @_ZN5follyL15kMetricSuffixesE, %.preheader.i.i120 ] %434 = getelementptr inbounds nuw i8, ptr %.013.i1.i125, i64 16 - %435 = load double, ptr %434, align 8, !tbaa !279, !noalias !309 + %435 = load double, ptr %434, align 16, !tbaa !279, !noalias !309 %436 = fcmp olt double %421, %435 br i1 %436, label %.lr.ph.i.i126, label %.critedge.i.i121, !llvm.loop !278 @@ -64454,7 +64454,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i .lr.ph.i.preheader.i: ; preds = %.preheader.i.i, %.lr.ph.i.i %.013.i1.i = phi ptr [ %192, %.lr.ph.i.i ], [ @_ZN5follyL13kTimeSuffixesE, %.preheader.i.i ] %192 = getelementptr inbounds nuw i8, ptr %.013.i1.i, i64 16 - %193 = load double, ptr %192, align 8, !tbaa !279, !noalias !1381 + %193 = load double, ptr %192, align 16, !tbaa !279, !noalias !1381 %194 = fcmp olt double %179, %193 br i1 %194, label %.lr.ph.i.i, label %.critedge.i.i, !llvm.loop !278 @@ -64515,7 +64515,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i .lr.ph.i.preheader.i76: ; preds = %.preheader.i.i72, %.lr.ph.i.i78 %.013.i1.i77 = phi ptr [ %212, %.lr.ph.i.i78 ], [ @_ZN5follyL15kMetricSuffixesE, %.preheader.i.i72 ] %212 = getelementptr inbounds nuw i8, ptr %.013.i1.i77, i64 16 - %213 = load double, ptr %212, align 8, !tbaa !279, !noalias !1391 + %213 = load double, ptr %212, align 16, !tbaa !279, !noalias !1391 %214 = fcmp olt double %199, %213 br i1 %214, label %.lr.ph.i.i78, label %.critedge.i.i73, !llvm.loop !278 @@ -64656,7 +64656,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i .lr.ph.i.preheader.i100: ; preds = %.preheader.i.i96, %.lr.ph.i.i102 %.013.i1.i101 = phi ptr [ %262, %.lr.ph.i.i102 ], [ @_ZN5follyL13kTimeSuffixesE, %.preheader.i.i96 ] %262 = getelementptr inbounds nuw i8, ptr %.013.i1.i101, i64 16 - %263 = load double, ptr %262, align 8, !tbaa !279, !noalias !1401 + %263 = load double, ptr %262, align 16, !tbaa !279, !noalias !1401 %264 = fcmp olt double %249, %263 br i1 %264, label %.lr.ph.i.i102, label %.critedge.i.i97, !llvm.loop !278 @@ -64717,7 +64717,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i .lr.ph.i.preheader.i116: ; preds = %.preheader.i.i112, %.lr.ph.i.i118 %.013.i1.i117 = phi ptr [ %282, %.lr.ph.i.i118 ], [ @_ZN5follyL15kMetricSuffixesE, %.preheader.i.i112 ] %282 = getelementptr inbounds nuw i8, ptr %.013.i1.i117, i64 16 - %283 = load double, ptr %282, align 8, !tbaa !279, !noalias !1411 + %283 = load double, ptr %282, align 16, !tbaa !279, !noalias !1411 %284 = fcmp olt double %269, %283 br i1 %284, label %.lr.ph.i.i118, label %.critedge.i.i113, !llvm.loop !278 @@ -64988,7 +64988,7 @@ _ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESa .lr.ph.i.preheader.i143: ; preds = %382, %.lr.ph.i.i145 %.013.i1.i144 = phi ptr [ %389, %.lr.ph.i.i145 ], [ @_ZN5follyL13kTimeSuffixesE, %382 ] %389 = getelementptr inbounds nuw i8, ptr %.013.i1.i144, i64 16 - %390 = load double, ptr %389, align 8, !tbaa !279, !noalias !1415 + %390 = load double, ptr %389, align 16, !tbaa !279, !noalias !1415 %391 = fcmp olt double %385, %390 br i1 %391, label %.lr.ph.i.i145, label %.critedge.i.i140, !llvm.loop !278 @@ -65048,7 +65048,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit154: ; preds = %_Z .lr.ph.i.preheader.i160: ; preds = %406, %.lr.ph.i.i162 %.013.i1.i161 = phi ptr [ %413, %.lr.ph.i.i162 ], [ @_ZN5follyL15kMetricSuffixesE, %406 ] %413 = getelementptr inbounds nuw i8, ptr %.013.i1.i161, i64 16 - %414 = load double, ptr %413, align 8, !tbaa !279, !noalias !1420 + %414 = load double, ptr %413, align 16, !tbaa !279, !noalias !1420 %415 = fcmp olt double %409, %414 br i1 %415, label %.lr.ph.i.i162, label %.critedge.i.i157, !llvm.loop !278 diff --git a/bench/g2o/optimized/edge_se2_lotsofxy.ll b/bench/g2o/optimized/edge_se2_lotsofxy.ll index fc46395ab8a..5f5e2e21218 100644 --- a/bench/g2o/optimized/edge_se2_lotsofxy.ll +++ b/bench/g2o/optimized/edge_se2_lotsofxy.ll @@ -3705,7 +3705,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS %99 = load <2 x double>, ptr %98, align 1, !tbaa !117 %100 = fmul <2 x double> %68, %99 %101 = fadd <2 x double> %.0390405, %100 - %102 = add nuw nsw i64 %.0186413, 1 + %102 = add nsw i64 %.0186413, 1 %103 = icmp slt i64 %102, %.sroa.speculated br i1 %103, label %63, label %._crit_edge, !llvm.loop !274 @@ -3775,7 +3775,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS %145 = load <2 x double>, ptr %144, align 1, !tbaa !117 %146 = fmul <2 x double> %130, %145 %147 = fadd <2 x double> %.0394436, %146 - %148 = add nuw nsw i64 %.0185440, 1 + %148 = add nsw i64 %.0185440, 1 %149 = icmp slt i64 %148, %.sroa.speculated br i1 %149, label %125, label %._crit_edge442, !llvm.loop !275 @@ -3834,7 +3834,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS %184 = load <2 x double>, ptr %183, align 1, !tbaa !117 %185 = fmul <2 x double> %173, %184 %186 = fadd <2 x double> %.0399447, %185 - %187 = add nuw nsw i64 %.0184450, 1 + %187 = add nsw i64 %.0184450, 1 %188 = icmp slt i64 %187, %.sroa.speculated br i1 %188, label %168, label %._crit_edge452, !llvm.loop !276 @@ -3882,7 +3882,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS %215 = load <2 x double>, ptr %214, align 1, !tbaa !117 %216 = fmul <2 x double> %215, %208 %217 = fadd <2 x double> %.0396457, %216 - %218 = add nuw nsw i64 %.0183458, 1 + %218 = add nsw i64 %.0183458, 1 %219 = icmp slt i64 %218, %.sroa.speculated br i1 %219, label %203, label %._crit_edge460, !llvm.loop !277 @@ -3919,7 +3919,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS %238 = load <2 x double>, ptr %237, align 1, !tbaa !117 %239 = fmul <2 x double> %238, %235 %240 = fadd <2 x double> %.0387463, %239 - %241 = add nuw nsw i64 %.0182464, 1 + %241 = add nsw i64 %.0182464, 1 %242 = icmp slt i64 %241, %.sroa.speculated br i1 %242, label %230, label %._crit_edge466, !llvm.loop !278 @@ -3958,7 +3958,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS %258 = load double, ptr %256, align 8, !tbaa !81 %259 = fmul double %257, %258 %260 = fadd double %.0181468, %259 - %261 = add nuw nsw i64 %.0469, 1 + %261 = add nsw i64 %.0469, 1 %262 = icmp slt i64 %261, %.sroa.speculated br i1 %262, label %252, label %._crit_edge471, !llvm.loop !280 } @@ -6201,11 +6201,11 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS .lr.ph456: ; preds = %.preheader407 %174 = mul nsw i64 %.1207475, %.sroa.33.0.copyload - %175 = add nuw nsw i64 %.1207475, 1 + %175 = add nsw i64 %.1207475, 1 %176 = mul nsw i64 %175, %.sroa.33.0.copyload - %177 = add nuw nsw i64 %.1207475, 2 + %177 = add nsw i64 %.1207475, 2 %178 = mul nsw i64 %177, %.sroa.33.0.copyload - %179 = add nuw nsw i64 %.1207475, 3 + %179 = add nsw i64 %.1207475, 3 %180 = mul nsw i64 %179, %.sroa.33.0.copyload br label %183 @@ -6271,18 +6271,18 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS br i1 %213, label %.lr.ph469, label %._crit_edge457.._crit_edge470_crit_edge ._crit_edge457.._crit_edge470_crit_edge: ; preds = %._crit_edge457 - %.pre565 = add nuw nsw i64 %.1207475, 1 - %.pre567 = add nuw nsw i64 %.1207475, 2 - %.pre569 = add nuw nsw i64 %.1207475, 3 + %.pre565 = add nsw i64 %.1207475, 1 + %.pre567 = add nsw i64 %.1207475, 2 + %.pre569 = add nsw i64 %.1207475, 3 br label %._crit_edge470 .lr.ph469: ; preds = %._crit_edge457 %214 = mul nsw i64 %.1207475, %.sroa.33.0.copyload - %215 = add nuw nsw i64 %.1207475, 1 + %215 = add nsw i64 %.1207475, 1 %216 = mul nsw i64 %215, %.sroa.33.0.copyload - %217 = add nuw nsw i64 %.1207475, 2 + %217 = add nsw i64 %.1207475, 2 %218 = mul nsw i64 %217, %.sroa.33.0.copyload - %219 = add nuw nsw i64 %.1207475, 3 + %219 = add nsw i64 %.1207475, 3 %220 = mul nsw i64 %219, %.sroa.33.0.copyload br label %221 @@ -6343,7 +6343,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS %256 = load double, ptr %255, align 8, !tbaa !81 %257 = tail call double @llvm.fmuladd.f64(double %6, double %.0214.lcssa, double %256) store double %257, ptr %255, align 8, !tbaa !81 - %258 = add nuw nsw i64 %.1207475, 4 + %258 = add nsw i64 %.1207475, 4 %259 = icmp slt i64 %258, %11 br i1 %259, label %.preheader407, label %.preheader406, !llvm.loop !393 @@ -6353,7 +6353,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS .lr.ph481: ; preds = %.preheader405 %260 = mul nsw i64 %.2494, %.sroa.33.0.copyload - %261 = add nuw nsw i64 %.2494, 1 + %261 = add nsw i64 %.2494, 1 %262 = mul nsw i64 %261, %.sroa.33.0.copyload br label %265 @@ -6401,12 +6401,12 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS br i1 %283, label %.lr.ph490, label %._crit_edge482.._crit_edge491_crit_edge ._crit_edge482.._crit_edge491_crit_edge: ; preds = %._crit_edge482 - %.pre571 = add nuw nsw i64 %.2494, 1 + %.pre571 = add nsw i64 %.2494, 1 br label %._crit_edge491 .lr.ph490: ; preds = %._crit_edge482 %284 = mul nsw i64 %.2494, %.sroa.33.0.copyload - %285 = add nuw nsw i64 %.2494, 1 + %285 = add nsw i64 %.2494, 1 %286 = mul nsw i64 %285, %.sroa.33.0.copyload br label %287 @@ -6443,7 +6443,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS %306 = load double, ptr %305, align 8, !tbaa !81 %307 = tail call double @llvm.fmuladd.f64(double %6, double %.0210.lcssa, double %306) store double %307, ptr %305, align 8, !tbaa !81 - %308 = add nuw nsw i64 %.2494, 2 + %308 = add nsw i64 %.2494, 2 %309 = icmp slt i64 %308, %12 br i1 %309, label %.preheader405, label %.preheader404, !llvm.loop !396 @@ -6504,7 +6504,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS %332 = load double, ptr %331, align 8, !tbaa !81 %333 = tail call double @llvm.fmuladd.f64(double %6, double %.0.lcssa, double %332) store double %333, ptr %331, align 8, !tbaa !81 - %334 = add nuw nsw i64 %.3511, 1 + %334 = add nsw i64 %.3511, 1 %exitcond552.not = icmp eq i64 %334, %0 br i1 %exitcond552.not, label %._crit_edge512, label %.preheader, !llvm.loop !399 @@ -10942,7 +10942,7 @@ define linkonce_odr void @_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_d br i1 %exitcond99.not, label %._crit_edge.us87, label %62, !llvm.loop !603 ._crit_edge.us87: ; preds = %62 - %69 = add nuw nsw i64 %.285.us, 1 + %69 = add nsw i64 %.285.us, 1 %exitcond100.not = icmp eq i64 %69, %4 br i1 %exitcond100.not, label %._crit_edge86, label %.preheader.us, !llvm.loop !604 diff --git a/bench/g2o/optimized/vertex_ellipse.ll b/bench/g2o/optimized/vertex_ellipse.ll index 5c9f3321e94..e460a9af9f9 100644 --- a/bench/g2o/optimized/vertex_ellipse.ll +++ b/bench/g2o/optimized/vertex_ellipse.ll @@ -5454,11 +5454,11 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIlfNS .lr.ph456: ; preds = %.preheader407 %196 = mul nsw i64 %.1207475, %.sroa.33.0.copyload - %197 = add nuw nsw i64 %.1207475, 1 + %197 = add nsw i64 %.1207475, 1 %198 = mul nsw i64 %197, %.sroa.33.0.copyload - %199 = add nuw nsw i64 %.1207475, 2 + %199 = add nsw i64 %.1207475, 2 %200 = mul nsw i64 %199, %.sroa.33.0.copyload - %201 = add nuw nsw i64 %.1207475, 3 + %201 = add nsw i64 %.1207475, 3 %202 = mul nsw i64 %201, %.sroa.33.0.copyload br label %207 @@ -5535,18 +5535,18 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIlfNS br i1 %246, label %.lr.ph469, label %._crit_edge457.._crit_edge470_crit_edge ._crit_edge457.._crit_edge470_crit_edge: ; preds = %._crit_edge457 - %.pre565 = add nuw nsw i64 %.1207475, 1 - %.pre567 = add nuw nsw i64 %.1207475, 2 - %.pre569 = add nuw nsw i64 %.1207475, 3 + %.pre565 = add nsw i64 %.1207475, 1 + %.pre567 = add nsw i64 %.1207475, 2 + %.pre569 = add nsw i64 %.1207475, 3 br label %._crit_edge470 .lr.ph469: ; preds = %._crit_edge457 %247 = mul nsw i64 %.1207475, %.sroa.33.0.copyload - %248 = add nuw nsw i64 %.1207475, 1 + %248 = add nsw i64 %.1207475, 1 %249 = mul nsw i64 %248, %.sroa.33.0.copyload - %250 = add nuw nsw i64 %.1207475, 2 + %250 = add nsw i64 %.1207475, 2 %251 = mul nsw i64 %250, %.sroa.33.0.copyload - %252 = add nuw nsw i64 %.1207475, 3 + %252 = add nsw i64 %.1207475, 3 %253 = mul nsw i64 %252, %.sroa.33.0.copyload br label %254 @@ -5608,7 +5608,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIlfNS %290 = load float, ptr %289, align 4, !tbaa !6 %291 = tail call float @llvm.fmuladd.f32(float %6, float %.0214.lcssa, float %290) store float %291, ptr %289, align 4, !tbaa !6 - %292 = add nuw nsw i64 %.1207475, 4 + %292 = add nsw i64 %.1207475, 4 %293 = icmp slt i64 %292, %11 br i1 %293, label %.preheader407, label %.preheader406, !llvm.loop !412 @@ -5618,7 +5618,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIlfNS .lr.ph481: ; preds = %.preheader405 %294 = mul nsw i64 %.2494, %.sroa.33.0.copyload - %295 = add nuw nsw i64 %.2494, 1 + %295 = add nsw i64 %.2494, 1 %296 = mul nsw i64 %295, %.sroa.33.0.copyload br label %301 @@ -5673,12 +5673,12 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIlfNS br i1 %324, label %.lr.ph490, label %._crit_edge482.._crit_edge491_crit_edge ._crit_edge482.._crit_edge491_crit_edge: ; preds = %._crit_edge482 - %.pre571 = add nuw nsw i64 %.2494, 1 + %.pre571 = add nsw i64 %.2494, 1 br label %._crit_edge491 .lr.ph490: ; preds = %._crit_edge482 %325 = mul nsw i64 %.2494, %.sroa.33.0.copyload - %326 = add nuw nsw i64 %.2494, 1 + %326 = add nsw i64 %.2494, 1 %327 = mul nsw i64 %326, %.sroa.33.0.copyload br label %328 @@ -5716,7 +5716,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIlfNS %348 = load float, ptr %347, align 4, !tbaa !6 %349 = tail call float @llvm.fmuladd.f32(float %6, float %.0210.lcssa, float %348) store float %349, ptr %347, align 4, !tbaa !6 - %350 = add nuw nsw i64 %.2494, 2 + %350 = add nsw i64 %.2494, 2 %351 = icmp slt i64 %350, %12 br i1 %351, label %.preheader405, label %.preheader404, !llvm.loop !415 @@ -5781,7 +5781,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIlfNS %378 = load float, ptr %377, align 4, !tbaa !6 %379 = tail call float @llvm.fmuladd.f32(float %6, float %.0.lcssa, float %378) store float %379, ptr %377, align 4, !tbaa !6 - %380 = add nuw nsw i64 %.3511, 1 + %380 = add nsw i64 %.3511, 1 %exitcond552.not = icmp eq i64 %380, %0 br i1 %exitcond552.not, label %._crit_edge512, label %.preheader, !llvm.loop !418 @@ -10280,7 +10280,7 @@ define linkonce_odr void @_ZN5Eigen8internal13gemm_pack_lhsIflNS0_22const_blas_d br i1 %exitcond99.not, label %._crit_edge.us87, label %62, !llvm.loop !590 ._crit_edge.us87: ; preds = %62 - %69 = add nuw nsw i64 %.285.us, 1 + %69 = add nsw i64 %.285.us, 1 %exitcond100.not = icmp eq i64 %69, %4 br i1 %exitcond100.not, label %._crit_edge86, label %.preheader.us, !llvm.loop !591 diff --git a/bench/glslang/optimized/doc.ll b/bench/glslang/optimized/doc.ll index c26103bde0a..f0b0303bebf 100644 --- a/bench/glslang/optimized/doc.ll +++ b/bench/glslang/optimized/doc.ll @@ -5573,13 +5573,13 @@ define internal void @__cxx_global_array_dtor(ptr readnone captures(none) %0) #1 %4 = getelementptr inbounds i8, ptr %3, i64 -112 %5 = getelementptr inbounds i8, ptr %3, i64 -96 %6 = getelementptr inbounds i8, ptr %3, i64 -48 - %7 = load ptr, ptr %6, align 8 + %7 = load ptr, ptr %6, align 16 %.not.i.i.i.i.i = icmp eq ptr %7, null br i1 %.not.i.i.i.i.i, label %_ZNSt6vectorIbSaIbEED2Ev.exit.i.i, label %8 8: ; preds = %2 %9 = getelementptr inbounds i8, ptr %3, i64 -16 - %10 = load ptr, ptr %9, align 8 + %10 = load ptr, ptr %9, align 16 %11 = ptrtoint ptr %10 to i64 %12 = ptrtoint ptr %7 to i64 %13 = sub i64 %11, %12 @@ -5587,14 +5587,14 @@ define internal void @__cxx_global_array_dtor(ptr readnone captures(none) %0) #1 %15 = sub nsw i64 0, %14 %16 = getelementptr inbounds i64, ptr %10, i64 %15 tail call void @_ZdlPvm(ptr noundef %16, i64 noundef %13) #15 - store ptr null, ptr %6, align 8 + store ptr null, ptr %6, align 16 %.sroa.2.0..sroa_idx.i.i.i.i.i.i = getelementptr inbounds i8, ptr %3, i64 -40 store i32 0, ptr %.sroa.2.0..sroa_idx.i.i.i.i.i.i, align 8 %.sroa.31.0..sroa_idx.i.i.i.i.i.i = getelementptr inbounds i8, ptr %3, i64 -32 - store ptr null, ptr %.sroa.31.0..sroa_idx.i.i.i.i.i.i, align 8 + store ptr null, ptr %.sroa.31.0..sroa_idx.i.i.i.i.i.i, align 16 %.sroa.4.0..sroa_idx.i.i.i.i.i.i = getelementptr inbounds i8, ptr %3, i64 -24 store i32 0, ptr %.sroa.4.0..sroa_idx.i.i.i.i.i.i, align 8 - store ptr null, ptr %9, align 8 + store ptr null, ptr %9, align 16 br label %_ZNSt6vectorIbSaIbEED2Ev.exit.i.i _ZNSt6vectorIbSaIbEED2Ev.exit.i.i: ; preds = %8, %2 @@ -5613,13 +5613,13 @@ _ZNSt6vectorIbSaIbEED2Ev.exit.i.i: ; preds = %8, %2 br label %_ZNSt6vectorIPKcSaIS1_EED2Ev.exit.i.i _ZNSt6vectorIPKcSaIS1_EED2Ev.exit.i.i: ; preds = %19, %_ZNSt6vectorIbSaIbEED2Ev.exit.i.i - %25 = load ptr, ptr %5, align 8 + %25 = load ptr, ptr %5, align 16 %.not.i.i.i2.i.i = icmp eq ptr %25, null br i1 %.not.i.i.i2.i.i, label %_ZN3spv21InstructionParametersD2Ev.exit, label %26 26: ; preds = %_ZNSt6vectorIPKcSaIS1_EED2Ev.exit.i.i %27 = getelementptr inbounds i8, ptr %3, i64 -80 - %28 = load ptr, ptr %27, align 8 + %28 = load ptr, ptr %27, align 16 %29 = ptrtoint ptr %28 to i64 %30 = ptrtoint ptr %25 to i64 %31 = sub i64 %29, %30 diff --git a/bench/glslang/optimized/hlslParseHelper.ll b/bench/glslang/optimized/hlslParseHelper.ll index 78c59f75c9c..f22a2c17c63 100644 --- a/bench/glslang/optimized/hlslParseHelper.ll +++ b/bench/glslang/optimized/hlslParseHelper.ll @@ -3590,7 +3590,7 @@ switch.lookup: ; preds = %157 .lr.ph.i.i.i.i.i: ; preds = %363, %.lr.ph.preheader.i.i.i.i.i %.044.i.i.i.i.i = phi i64 [ %365, %363 ], [ %350, %.lr.ph.preheader.i.i.i.i.i ] %.02943.i.i.i.i.i = phi ptr [ %364, %363 ], [ %5, %.lr.ph.preheader.i.i.i.i.i ] - %.029.val.i.i.i.i.i = load i8, ptr %.02943.i.i.i.i.i, align 1 + %.029.val.i.i.i.i.i = load i8, ptr %.02943.i.i.i.i.i, align 4 %353 = trunc i8 %.029.val.i.i.i.i.i to i1 br i1 %353, label %354, label %"_ZZN7glslang16HlslParseContext12handleLvalueERKNS_10TSourceLocEPKcRPNS_12TIntermTypedEENK3$_0clEPNS_13TIntermSymbolEPNS_13TIntermBinaryE.exit" @@ -3602,7 +3602,7 @@ switch.lookup: ; preds = %157 357: ; preds = %354 %358 = getelementptr inbounds nuw i8, ptr %.02943.i.i.i.i.i, i64 2 - %.val30.i.i.i.i.i = load i8, ptr %358, align 1 + %.val30.i.i.i.i.i = load i8, ptr %358, align 2 %359 = trunc i8 %.val30.i.i.i.i.i to i1 br i1 %359, label %360, label %"_ZZN7glslang16HlslParseContext12handleLvalueERKNS_10TSourceLocEPKcRPNS_12TIntermTypedEENK3$_0clEPNS_13TIntermSymbolEPNS_13TIntermBinaryE.exit.loopexit.split.loop.exit208" @@ -39446,7 +39446,7 @@ _ZN7glslang17TSwizzleSelectorsIiE9push_backEi.exit: ; preds = %.lr.ph.split, %12 %indvars.iv.next662 = add nuw nsw i64 %indvars.iv661, 1 %1711 = getelementptr inbounds nuw i8, ptr %1710, i64 8 %1712 = load ptr, ptr %1711, align 8 - %1713 = getelementptr inbounds nuw ptr, ptr %1712, i64 %indvars.iv661 + %1713 = getelementptr inbounds ptr, ptr %1712, i64 %indvars.iv661 %1714 = load ptr, ptr %1713, align 8 %1715 = load ptr, ptr %1714, align 8 %1716 = getelementptr inbounds nuw i8, ptr %1715, i64 24 diff --git a/bench/graphviz/optimized/lu.ll b/bench/graphviz/optimized/lu.ll index 61f3e667f77..6ec1e376ce3 100644 --- a/bench/graphviz/optimized/lu.ll +++ b/bench/graphviz/optimized/lu.ll @@ -326,10 +326,12 @@ define void @lu_solve(ptr noundef captures(none) %0, ptr noundef readonly captur br i1 %exitcond59.not, label %.preheader.lr.ph, label %.preheader40, !llvm.loop !26 .preheader: ; preds = %.preheader.lr.ph, %._crit_edge47 + %indvars.iv66 = phi i64 [ %15, %.preheader.lr.ph ], [ %indvars.iv.next67, %._crit_edge47 ] %indvars.iv60 = phi i64 [ %14, %.preheader.lr.ph ], [ %indvars.iv.next61, %._crit_edge47 ] + %indvars.iv.next67 = add nsw i64 %indvars.iv66, -1 %indvars.iv.next61 = add nsw i64 %indvars.iv60, -1 - %26 = icmp slt i64 %indvars.iv60, %15 - %27 = getelementptr inbounds nuw i32, ptr %13, i64 %indvars.iv.next61 + %26 = icmp slt i64 %indvars.iv66, %14 + %27 = getelementptr inbounds nuw i32, ptr %13, i64 %indvars.iv.next67 %28 = load i32, ptr %27, align 4, !tbaa !16 %29 = sext i32 %28 to i64 %30 = getelementptr inbounds ptr, ptr %12, i64 %29 @@ -339,26 +341,26 @@ define void @lu_solve(ptr noundef captures(none) %0, ptr noundef readonly captur .lr.ph46: ; preds = %.preheader, %.lr.ph46 %indvars.iv62 = phi i64 [ %indvars.iv.next63, %.lr.ph46 ], [ %indvars.iv60, %.preheader ] %.145 = phi double [ %36, %.lr.ph46 ], [ 0.000000e+00, %.preheader ] - %32 = getelementptr inbounds nuw double, ptr %31, i64 %indvars.iv62 + %32 = getelementptr inbounds double, ptr %31, i64 %indvars.iv62 %33 = load double, ptr %32, align 8, !tbaa !14 - %34 = getelementptr inbounds nuw double, ptr %0, i64 %indvars.iv62 + %34 = getelementptr inbounds double, ptr %0, i64 %indvars.iv62 %35 = load double, ptr %34, align 8, !tbaa !14 %36 = tail call double @llvm.fmuladd.f64(double %33, double %35, double %.145) - %indvars.iv.next63 = add nuw nsw i64 %indvars.iv62, 1 - %37 = trunc nuw i64 %indvars.iv.next63 to i32 - %38 = icmp sgt i32 %2, %37 - br i1 %38, label %.lr.ph46, label %._crit_edge47, !llvm.loop !27 + %indvars.iv.next63 = add nsw i64 %indvars.iv62, 1 + %37 = trunc i64 %indvars.iv.next63 to i32 + %38 = icmp eq i32 %2, %37 + br i1 %38, label %._crit_edge47, label %.lr.ph46, !llvm.loop !27 ._crit_edge47: ; preds = %.lr.ph46, %.preheader %.1.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %36, %.lr.ph46 ] - %39 = getelementptr inbounds nuw double, ptr %0, i64 %indvars.iv.next61 + %39 = getelementptr inbounds nuw double, ptr %0, i64 %indvars.iv.next67 %40 = load double, ptr %39, align 8, !tbaa !14 %41 = fsub double %40, %.1.lcssa - %42 = getelementptr inbounds nuw double, ptr %31, i64 %indvars.iv.next61 + %42 = getelementptr inbounds nuw double, ptr %31, i64 %indvars.iv.next67 %43 = load double, ptr %42, align 8, !tbaa !14 %44 = fdiv double %41, %43 store double %44, ptr %39, align 8, !tbaa !14 - %45 = icmp samesign ugt i64 %indvars.iv60, 1 + %45 = icmp samesign ugt i64 %indvars.iv66, 1 br i1 %45, label %.preheader, label %._crit_edge52, !llvm.loop !28 ._crit_edge52: ; preds = %._crit_edge47, %3 diff --git a/bench/graphviz/optimized/maze.ll b/bench/graphviz/optimized/maze.ll index 1cb8445197b..2d028419d03 100644 --- a/bench/graphviz/optimized/maze.ll +++ b/bench/graphviz/optimized/maze.ll @@ -120,12 +120,13 @@ updateWt.exit: ; preds = %47, %53 br i1 %57, label %.lr.ph42, label %._crit_edge43 .lr.ph42: ; preds = %._crit_edge - %58 = zext i32 %.0.lcssa to i64 + %58 = sext i32 %.0.lcssa to i64 + %wide.trip.count54 = sext i32 %33 to i64 br i1 %.not.not, label %.lr.ph42.split, label %.lr.ph42.split.us .lr.ph42.split.us: ; preds = %.lr.ph42, %updateWt.exit34.us %indvars.iv46 = phi i64 [ %indvars.iv.next47, %updateWt.exit34.us ], [ %58, %.lr.ph42 ] - %59 = getelementptr inbounds nuw [6 x ptr], ptr %31, i64 0, i64 %indvars.iv46 + %59 = getelementptr inbounds [6 x ptr], ptr %31, i64 0, i64 %indvars.iv46 %60 = load ptr, ptr %59, align 8, !tbaa !31 %61 = getelementptr inbounds nuw i8, ptr %60, i64 12 %62 = load i32, ptr %61, align 4, !tbaa !11 @@ -150,14 +151,13 @@ updateWt.exit: ; preds = %47, %53 br label %updateWt.exit34.us updateWt.exit34.us: ; preds = %73, %.lr.ph42.split.us - %indvars.iv.next47 = add nuw nsw i64 %indvars.iv46, 1 - %76 = trunc nuw i64 %indvars.iv.next47 to i32 - %77 = icmp sgt i32 %33, %76 - br i1 %77, label %.lr.ph42.split.us, label %._crit_edge43, !llvm.loop !36 + %indvars.iv.next47 = add nsw i64 %indvars.iv46, 1 + %exitcond50.not = icmp eq i64 %indvars.iv.next47, %wide.trip.count54 + br i1 %exitcond50.not, label %._crit_edge43, label %.lr.ph42.split.us, !llvm.loop !36 .lr.ph42.split: ; preds = %.lr.ph42, %updateWt.exit34 %indvars.iv49 = phi i64 [ %indvars.iv.next50, %updateWt.exit34 ], [ %58, %.lr.ph42 ] - %78 = getelementptr inbounds nuw [6 x ptr], ptr %31, i64 0, i64 %indvars.iv49 + %78 = getelementptr inbounds [6 x ptr], ptr %31, i64 0, i64 %indvars.iv49 %79 = load ptr, ptr %78, align 8, !tbaa !31 %80 = icmp eq ptr %79, %2 br i1 %80, label %81, label %updateWt.exit34 @@ -186,10 +186,9 @@ updateWt.exit34.us: ; preds = %73, %.lr.ph42.split br label %updateWt.exit34 updateWt.exit34: ; preds = %94, %81, %.lr.ph42.split - %indvars.iv.next50 = add nuw nsw i64 %indvars.iv49, 1 - %97 = trunc nuw i64 %indvars.iv.next50 to i32 - %98 = icmp sgt i32 %33, %97 - br i1 %98, label %.lr.ph42.split, label %._crit_edge43, !llvm.loop !36 + %indvars.iv.next50 = add nsw i64 %indvars.iv49, 1 + %exitcond55.not = icmp eq i64 %indvars.iv.next50, %wide.trip.count54 + br i1 %exitcond55.not, label %._crit_edge43, label %.lr.ph42.split, !llvm.loop !36 ._crit_edge43: ; preds = %updateWt.exit, %updateWt.exit34.us, %updateWt.exit34, %._crit_edge ret void diff --git a/bench/gromacs/optimized/hxprops.ll b/bench/gromacs/optimized/hxprops.ll index 8ab234978b5..bab4e1584c5 100644 --- a/bench/gromacs/optimized/hxprops.ll +++ b/bench/gromacs/optimized/hxprops.ll @@ -876,7 +876,7 @@ sub_1: ; preds = %sub_0 br label %.lr.ph193.preheader .lr.ph193.preheader: ; preds = %113, %._crit_edge187.split.loop.exit254 - %.0116.lcssa = phi i32 [ %114, %._crit_edge187.split.loop.exit254 ], [ %47, %113 ] + %.0116.lcssa = phi i32 [ %114, %._crit_edge187.split.loop.exit256 ], [ %47, %113 ] %115 = zext nneg i32 %26 to i64 br label %.lr.ph193 @@ -930,14 +930,19 @@ sub_1: ; preds = %sub_0 %.1 = add nsw i32 %.0115.lcssa, %135 %invariant.gep = getelementptr i8, ptr %31, i64 -44 %136 = icmp slt i32 %spec.select, %.1 - br i1 %136, label %.lr.ph200.preheader, label %._crit_edge201 + br i1 %136, label %.lr.ph200.preheader, label %._crit_edge194.._crit_edge201_crit_edge + +._crit_edge194.._crit_edge201_crit_edge: ; preds = %._crit_edge194 + %.pre251 = sext i32 %.1 to i64 + br label %._crit_edge201 .lr.ph200.preheader: ; preds = %._crit_edge194 - %137 = call i32 @llvm.umax.i32(i32 %.0116.lcssa252, i32 1) - %umax = zext i32 %137 to i64 + %137 = sext i32 %spec.select to i64 + %wide.trip.count235 = sext i32 %.1 to i64 br label %.lr.ph200 -._crit_edge201: ; preds = %.lr.ph200, %._crit_edge194 +._crit_edge201: ; preds = %.lr.ph200, %._crit_edge194.._crit_edge201_crit_edge + %.pre-phi = phi i64 [ %.pre251, %._crit_edge194.._crit_edge201_crit_edge ], [ %wide.trip.count235, %.lr.ph200 ] %138 = sub nsw i32 %.1, %spec.select %139 = call i32 @llvm.smax.i32(i32 %138, i32 -1) %.sroa.speculated = add nsw i32 %139, 1 @@ -945,12 +950,11 @@ sub_1: ; preds = %sub_0 %141 = zext nneg i32 %spec.select to i64 %142 = getelementptr inbounds nuw %struct.t_bb, ptr %31, i64 %141, i32 11 %143 = load i32, ptr %142, align 4, !tbaa !49 - %144 = sext i32 %.1 to i64 - %145 = getelementptr inbounds %struct.t_bb, ptr %31, i64 %144, i32 11 - %146 = load i32, ptr %145, align 4, !tbaa !49 - %147 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %140, ptr noundef nonnull @.str.17, i32 noundef %.sroa.speculated, i32 noundef %143, i32 noundef %146) #23 - %148 = icmp eq i32 %.sroa.speculated, 0 - br i1 %148, label %157, label %.preheader170 + %144 = getelementptr inbounds %struct.t_bb, ptr %31, i64 %.pre-phi, i32 11 + %145 = load i32, ptr %144, align 4, !tbaa !49 + %146 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %140, ptr noundef nonnull @.str.17, i32 noundef %.sroa.speculated, i32 noundef %143, i32 noundef %145) #23 + %147 = icmp eq i32 %.sroa.speculated, 0 + br i1 %147, label %154, label %.preheader170 .preheader170: ; preds = %._crit_edge201 %.not168202 = icmp slt i32 %138, 0 @@ -963,30 +967,29 @@ sub_1: ; preds = %sub_0 br label %.lr.ph205 .lr.ph200: ; preds = %.lr.ph200.preheader, %.lr.ph200 - %indvars.iv232 = phi i64 [ %umax, %.lr.ph200.preheader ], [ %indvars.iv.next233, %.lr.ph200 ] + %indvars.iv232 = phi i64 [ %137, %.lr.ph200.preheader ], [ %indvars.iv.next233, %.lr.ph200 ] %gep = getelementptr %struct.t_bb, ptr %invariant.gep, i64 %indvars.iv232 %150 = load i32, ptr %gep, align 4, !tbaa !60 - %151 = getelementptr inbounds nuw %struct.t_bb, ptr %31, i64 %indvars.iv232, i32 12 + %151 = getelementptr inbounds %struct.t_bb, ptr %31, i64 %indvars.iv232, i32 12 store i32 %150, ptr %151, align 4, !tbaa !65 - %indvars.iv.next233 = add nuw nsw i64 %indvars.iv232, 1 - %152 = getelementptr inbounds nuw %struct.t_bb, ptr %31, i64 %indvars.iv.next233, i32 13 + %indvars.iv.next233 = add nsw i64 %indvars.iv232, 1 + %152 = getelementptr inbounds %struct.t_bb, ptr %31, i64 %indvars.iv.next233, i32 13 %153 = load i32, ptr %152, align 4, !tbaa !58 - %154 = getelementptr inbounds nuw %struct.t_bb, ptr %31, i64 %indvars.iv232, i32 18 + %154 = getelementptr inbounds %struct.t_bb, ptr %31, i64 %indvars.iv232, i32 18 store i32 %153, ptr %154, align 4, !tbaa !66 - %155 = trunc nuw i64 %indvars.iv.next233 to i32 - %156 = icmp sgt i32 %.1, %155 - br i1 %156, label %.lr.ph200, label %._crit_edge201, !llvm.loop !67 + %exitcond236.not = icmp eq i64 %indvars.iv.next233, %wide.trip.count235 + br i1 %exitcond236.not, label %._crit_edge201, label %.lr.ph200, !llvm.loop !67 -157: ; preds = %._crit_edge201 +154: ; preds = %._crit_edge201 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %12) #21 call void @_ZNSt10filesystem7__cxx114pathC2IA124_cS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef nonnull align 1 dereferenceable(124) @.str.14, i8 noundef zeroext 2) invoke void (i32, ptr, i32, ptr, ...) @_Z9gmx_fataliRKNSt10filesystem7__cxx114pathEiPKcz(i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(40) %12, i32 noundef 427, ptr noundef nonnull @.str.18) #25 - to label %158 unwind label %159 + to label %155 unwind label %159 -158: ; preds = %157 +158: ; preds = %154 unreachable -159: ; preds = %157 +159: ; preds = %154 %160 = landingpad { ptr, i32 } cleanup call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #21 diff --git a/bench/grpc/optimized/histogram_view.ll b/bench/grpc/optimized/histogram_view.ll index 885d9fe27df..a5f553ccc07 100644 --- a/bench/grpc/optimized/histogram_view.ll +++ b/bench/grpc/optimized/histogram_view.ll @@ -68,66 +68,72 @@ define noundef double @_ZNK9grpc_core13HistogramView22ThresholdForCountBelowEd(p %.0.lcssa = phi i32 [ 0, %2 ], [ %15, %._crit_edge.loopexit.split.loop.exit ], [ %4, %14 ] %.1 = phi double [ 0.000000e+00, %2 ], [ %12, %._crit_edge.loopexit.split.loop.exit ], [ %12, %14 ] %16 = fcmp oeq double %.1, %1 - %17 = zext i32 %.0.lcssa to i64 - br i1 %16, label %.preheader, label %38 + br i1 %16, label %.preheader, label %39 .preheader: ; preds = %._crit_edge %18 = getelementptr inbounds nuw i8, ptr %0, i64 24 %19 = load ptr, ptr %18, align 8 - %20 = add i32 %.0.lcssa, 1 - %smax = tail call i32 @llvm.smax.i32(i32 %4, i32 %20) - br label %21 - -21: ; preds = %.preheader, %24 - %indvars.iv38 = phi i64 [ %17, %.preheader ], [ %indvars.iv.next39, %24 ] - %indvars.iv.next39 = add nuw nsw i64 %indvars.iv38, 1 - %22 = trunc nuw i64 %indvars.iv.next39 to i32 - %23 = icmp sgt i32 %4, %22 - br i1 %23, label %24, label %27 - -24: ; preds = %21 - %25 = getelementptr inbounds nuw i64, ptr %19, i64 %indvars.iv.next39 + %19 = sext i32 %.0.lcssa to i64 + %20 = sext i32 %4 to i64 + %21 = add i32 %.0.lcssa, 1 + %smax = tail call i32 @llvm.smax.i32(i32 %4, i32 %21) + br label %22 + +22:; preds = %.preheader, %24 + %indvars.iv38 = phi i64 [ %19, %.preheader ], [ %indvars.iv.next39, %24 ] + %indvars.iv.next39 = add nsw i64 %indvars.iv38, 1 + %23 = icmp slt i64 %indvars.iv.next39, %20 + br i1 %23, label %24, label %.split.loop.exit44 + +24: ; preds = %22 + %25 = getelementptr inbounds i64, ptr %18, i64 %indvars.iv.next39 %26 = load i64, ptr %25, align 8, !tbaa !12 %.not = icmp eq i64 %26, 0 - br i1 %.not, label %21, label %27, !llvm.loop !17 + br i1 %.not, label %22, label %27, !llvm.loop !17 -27: ; preds = %24, %21 - %.024.lcssa = phi i32 [ %22, %24 ], [ %smax, %21 ] +27: ; preds = %24 + %27 = trunc nsw i64 %indvars.iv.next39 to i32 + br label %.split.loop.exit44 + +.split.loop.exit44: ; preds = %22, %.split.loop.exit + %.024.lcssa = phi i32 [ %27, %.split.loop.exit ], [ %smax, %22 ] %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 %29 = load ptr, ptr %28, align 8, !tbaa !18 - %30 = getelementptr inbounds nuw i32, ptr %29, i64 %17 - %31 = load i32, ptr %30, align 4, !tbaa !19 - %32 = zext nneg i32 %.024.lcssa to i64 - %33 = getelementptr inbounds nuw i32, ptr %29, i64 %32 - %34 = load i32, ptr %33, align 4, !tbaa !19 - %35 = add nsw i32 %34, %31 - %36 = sitofp i32 %35 to double - %37 = fmul double %36, 5.000000e-01 - br label %57 - -38: ; preds = %._crit_edge - %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %40 = load ptr, ptr %39, align 8, !tbaa !18 - %41 = getelementptr inbounds nuw i32, ptr %40, i64 %17 - %42 = load i32, ptr %41, align 4, !tbaa !19 - %43 = sitofp i32 %42 to double - %44 = getelementptr inbounds nuw i8, ptr %41, i64 4 - %45 = load i32, ptr %44, align 4, !tbaa !19 - %46 = sitofp i32 %45 to double - %47 = fsub double %46, %43 - %48 = fsub double %.1, %1 - %49 = fmul double %48, %47 - %50 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %51 = load ptr, ptr %50, align 8, !tbaa !11 - %52 = getelementptr inbounds nuw i64, ptr %51, i64 %17 - %53 = load i64, ptr %52, align 8, !tbaa !12 - %54 = uitofp i64 %53 to double - %55 = fdiv double %49, %54 - %56 = fsub double %46, %55 - br label %57 - -57: ; preds = %38, %27 - %.025 = phi double [ %37, %27 ], [ %56, %38 ] + %30 = zext nneg i32 %.0.lcssa to i64 + %31 = getelementptr inbounds nuw i32, ptr %29, i64 %30 + %32 = load i32, ptr %31, align 4, !tbaa !19 + %33 = sext i32 %.024.lcssa to i64 + %34 = getelementptr inbounds i32, ptr %29, i64 %33 + %35 = load i32, ptr %34, align 4, !tbaa !19 + %36 = add nsw i32 %35, %32 + %37 = sitofp i32 %36 to double + %38 = fmul double %37, 5.000000e-01 + br label %59 + +39: ; preds = %._crit_edge + %40 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %41 = load ptr, ptr %40, align 8, !tbaa !18 + %42 = zext nneg i32 %.0.lcssa to i64 + %43 = getelementptr inbounds nuw i32, ptr %41, i64 %42 + %44 = load i32, ptr %43, align 4, !tbaa !19 + %45 = sitofp i32 %44 to double + %46 = getelementptr inbounds nuw i8, ptr %43, i64 4 + %47 = load i32, ptr %46, align 4, !tbaa !19 + %48 = sitofp i32 %47 to double + %49 = fsub double %48, %45 + %50 = fsub double %.1, %1 + %51 = fmul double %50, %49 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %53 = load ptr, ptr %52, align 8, !tbaa !11 + %54 = getelementptr inbounds nuw i64, ptr %53, i64 %42 + %55 = load i64, ptr %54, align 8, !tbaa !12 + %56 = uitofp i64 %55 to double + %57 = fdiv double %51, %56 + %58 = fsub double %48, %57 + br label %59 + +59: ; preds = %39, %.split.loop.exit44 + %.025 = phi double [ %38, %.split.loop.exit44 ], [ %58, %39 ] ret double %.025 } @@ -181,68 +187,72 @@ _ZNK9grpc_core13HistogramView5CountEv.exit: ; preds = %8 ._crit_edge.loopexit.split.loop.exit.i: ; preds = %16 %23 = trunc nuw nsw i64 %indvars.iv.i8 to i32 - %.pre = and i64 %indvars.iv.i8, 4294967295 br label %._crit_edge.i ._crit_edge.i: ; preds = %22, %._crit_edge.loopexit.split.loop.exit.i - %.pre-phi = phi i64 [ %.pre, %._crit_edge.loopexit.split.loop.exit.i ], [ %wide.trip.count.i, %22 ] %.0.lcssa.i = phi i32 [ %23, %._crit_edge.loopexit.split.loop.exit.i ], [ %4, %22 ] %24 = fcmp oeq double %20, %15 br i1 %24, label %.preheader.i, label %43 .preheader.i: ; preds = %._crit_edge.i - %25 = add i32 %.0.lcssa.i, 1 - %smax.i = tail call i32 @llvm.smax.i32(i32 %4, i32 %25) - br label %26 - -26: ; preds = %29, %.preheader.i - %indvars.iv38.i = phi i64 [ %.pre-phi, %.preheader.i ], [ %indvars.iv.next39.i, %29 ] - %indvars.iv.next39.i = add nuw nsw i64 %indvars.iv38.i, 1 - %27 = trunc nuw i64 %indvars.iv.next39.i to i32 - %28 = icmp sgt i32 %4, %27 - br i1 %28, label %29, label %32 - -29: ; preds = %26 - %30 = getelementptr inbounds nuw i64, ptr %7, i64 %indvars.iv.next39.i + %25 = sext i32 %.0.lcssa.i to i64 + %26 = add i32 %.0.lcssa.i, 1 + %smax.i = tail call i32 @llvm.smax.i32(i32 %4, i32 %26) + br label %27 + +27: ; preds = %29, %.preheader.i + %indvars.iv38.i = phi i64 [ %25, %.preheader.i ], [ %indvars.iv.next39.i, %29 ] + %indvars.iv.next39.i = add nsw i64 %indvars.iv38.i, 1 + %28 = icmp slt i64 %indvars.iv.next39.i, %wide.trip.count.i + br i1 %28, label %29, label %.split.loop.exit44.i + +29: ; preds = %27 + %30 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.next39.i %31 = load i64, ptr %30, align 8, !tbaa !12 %.not.i = icmp eq i64 %31, 0 - br i1 %.not.i, label %26, label %32, !llvm.loop !17 + br i1 %.not.i, label %27, label %32, !llvm.loop !17 -32: ; preds = %29, %26 - %.024.lcssa.i = phi i32 [ %27, %29 ], [ %smax.i, %26 ] +32: ; preds = %29 + %32 = trunc nsw i64 %indvars.iv.next39.i to i32 + br label %.split.loop.exit44.i + +.split.loop.exit44.i: ; preds = %27, %.split.loop.exit.i + %.024.lcssa.i = phi i32 [ %32, %.split.loop.exit.i ], [ %smax.i, %27 ] %33 = getelementptr inbounds nuw i8, ptr %0, i64 8 %34 = load ptr, ptr %33, align 8, !tbaa !18 - %35 = getelementptr inbounds nuw i32, ptr %34, i64 %.pre-phi - %36 = load i32, ptr %35, align 4, !tbaa !19 - %37 = zext nneg i32 %.024.lcssa.i to i64 - %38 = getelementptr inbounds nuw i32, ptr %34, i64 %37 - %39 = load i32, ptr %38, align 4, !tbaa !19 - %40 = add nsw i32 %39, %36 - %41 = sitofp i32 %40 to double - %42 = fmul double %41, 5.000000e-01 + %35 = zext nneg i32 %.0.lcssa.i to i64 + %36 = getelementptr inbounds nuw i32, ptr %34, i64 %35 + %37 = load i32, ptr %36, align 4, !tbaa !19 + %38 = sext i32 %.024.lcssa.i to i64 + %39 = getelementptr inbounds i32, ptr %34, i64 %38 + %40 = load i32, ptr %39, align 4, !tbaa !19 + %41 = add nsw i32 %40, %37 + %42 = sitofp i32 %41 to double + %43 = fmul double %42, 5.000000e-01 br label %_ZNK9grpc_core13HistogramView22ThresholdForCountBelowEd.exit 43: ; preds = %._crit_edge.i %44 = getelementptr inbounds nuw i8, ptr %0, i64 8 %45 = load ptr, ptr %44, align 8, !tbaa !18 - %46 = getelementptr inbounds nuw i32, ptr %45, i64 %.pre-phi - %47 = load i32, ptr %46, align 4, !tbaa !19 - %48 = sitofp i32 %47 to double - %49 = getelementptr inbounds nuw i8, ptr %46, i64 4 - %50 = load i32, ptr %49, align 4, !tbaa !19 - %51 = sitofp i32 %50 to double - %52 = fsub double %51, %48 - %53 = fsub double %20, %15 - %54 = fmul double %53, %52 - %55 = getelementptr inbounds nuw i64, ptr %7, i64 %.pre-phi - %56 = load i64, ptr %55, align 8, !tbaa !12 - %57 = uitofp i64 %56 to double - %58 = fdiv double %54, %57 - %59 = fsub double %51, %58 + %47 = zext nneg i32 %.0.lcssa.i to i64 + %48 = getelementptr inbounds nuw i32, ptr %46, i64 %47 + %49 = load i32, ptr %48, align 4, !tbaa !19 + %50 = sitofp i32 %49 to double + %51 = getelementptr inbounds nuw i8, ptr %48, i64 4 + %52 = load i32, ptr %51, align 4, !tbaa !19 + %53 = sitofp i32 %52 to double + %53 = fsub double %53, %50 + %55 = fsub double %20, %15 + %56 = fmul double %55, %54 + %57 = getelementptr inbounds nuw i64, ptr %7, i64 %47 + %58 = load i64, ptr %57, align 8, !tbaa !12 + %59 = uitofp i64 %58 to double + %60 = fdiv double %56, %59 + %61 = fsub double %53, %60 br label %_ZNK9grpc_core13HistogramView22ThresholdForCountBelowEd.exit -_ZNK9grpc_core13HistogramView22ThresholdForCountBelowEd.exit: ; preds = %2, %43, %32, %_ZNK9grpc_core13HistogramView5CountEv.exit - %.0 = phi double [ 0.000000e+00, %_ZNK9grpc_core13HistogramView5CountEv.exit ], [ %42, %32 ], [ %59, %43 ], [ 0.000000e+00, %2 ] +_ZNK9grpc_core13HistogramView22ThresholdForCountBelowEd.exit: ; preds = %2, %43, %.split.loop.exit44.i, %_ZNK9grpc_core13HistogramView5CountEv.exit + %.0 = phi double [ 0.000000e+00, %_ZNK9grpc_core13HistogramView5CountEv.exit ], [ %43, %.split.loop.exit44.i ], [ %61, %44 ], [ 0.000000e+00, %2 ] ret double %.0 } diff --git a/bench/hdf5/optimized/H5Dbtree2.ll b/bench/hdf5/optimized/H5Dbtree2.ll index aab8dd26cc6..2ee7a096c46 100644 --- a/bench/hdf5/optimized/H5Dbtree2.ll +++ b/bench/hdf5/optimized/H5Dbtree2.ll @@ -1689,17 +1689,18 @@ define internal noundef i32 @H5D__bt2_filt_encode(ptr noundef %0, ptr noundef re .lr.ph.preheader: ; preds = %11 %19 = getelementptr inbounds nuw i8, ptr %1, i64 264 %20 = load i32, ptr %19, align 8, !tbaa !64 + %21 = zext i32 %20 to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %.03138 = phi ptr [ %22, %.lr.ph ], [ %16, %.lr.ph.preheader ] %.03237 = phi i64 [ %23, %.lr.ph ], [ 0, %.lr.ph.preheader ] - %.03336 = phi i32 [ %24, %.lr.ph ], [ %20, %.lr.ph.preheader ] - %21 = trunc i32 %.03336 to i8 + %.03336 = phi i64 [ %24, %.lr.ph ], [ %21, %.lr.ph.preheader ] + %21 = trunc i64 %.03336 to i8 %22 = getelementptr inbounds nuw i8, ptr %.03138, i64 1 store i8 %21, ptr %.03138, align 1, !tbaa !17 %23 = add nuw i64 %.03237, 1 - %24 = lshr i32 %.03336, 8 + %24 = lshr i64 %.03336, 8 %25 = load i64, ptr %17, align 8, !tbaa !81 %26 = icmp ult i64 %23, %25 br i1 %26, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !93 @@ -1747,16 +1748,16 @@ define internal noundef i32 @H5D__bt2_filt_encode(ptr noundef %0, ptr noundef re br i1 %.not45, label %.loopexit, label %.lr.ph44 .lr.ph44: ; preds = %._crit_edge, %59 - %51 = phi ptr [ %61, %59 ], [ %48, %._crit_edge ] - %indvars.iv = phi i64 [ %indvars.iv.next, %59 ], [ 0, %._crit_edge ] + %51 = phi ptr [ %61, %60 ], [ %48, %._crit_edge ] + %indvars.iv = phi i64 [ %indvars.iv.next, %60 ], [ 0, %._crit_edge ] %52 = getelementptr inbounds nuw [33 x i64], ptr %1, i64 0, i64 %indvars.iv %53 = load i64, ptr %52, align 8, !tbaa !43 br label %54 54: ; preds = %.lr.ph44, %54 - %.041 = phi ptr [ %51, %.lr.ph44 ], [ %56, %54 ] - %.02840 = phi i64 [ 0, %.lr.ph44 ], [ %57, %54 ] - %.03039 = phi i64 [ %53, %.lr.ph44 ], [ %58, %54 ] + %.041 = phi ptr [ %51, %.lr.ph44 ], [ %56, %55 ] + %.02840 = phi i64 [ 0, %.lr.ph44 ], [ %57, %55 ] + %.03039 = phi i64 [ %53, %.lr.ph44 ], [ %58, %55 ] %55 = trunc i64 %.03039 to i8 %56 = getelementptr inbounds nuw i8, ptr %.041, i64 1 store i8 %55, ptr %.041, align 1, !tbaa !17 diff --git a/bench/hdf5/optimized/H5Dearray.ll b/bench/hdf5/optimized/H5Dearray.ll index 72e7ea083a3..163eebcd761 100644 --- a/bench/hdf5/optimized/H5Dearray.ll +++ b/bench/hdf5/optimized/H5Dearray.ll @@ -2059,17 +2059,18 @@ define internal noundef i32 @H5D__earray_filt_encode(ptr noundef %0, ptr noundef .lr.ph.preheader: ; preds = %14 %19 = getelementptr inbounds nuw i8, ptr %.023, i64 8 %20 = load i32, ptr %19, align 8, !tbaa !56 + %21 = zext i32 %20 to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %.030 = phi ptr [ %22, %.lr.ph ], [ %17, %.lr.ph.preheader ] %.02129 = phi i64 [ %23, %.lr.ph ], [ 0, %.lr.ph.preheader ] - %.02228 = phi i32 [ %24, %.lr.ph ], [ %20, %.lr.ph.preheader ] - %21 = trunc i32 %.02228 to i8 + %.02228 = phi i64 [ %24, %.lr.ph ], [ %21, %.lr.ph.preheader ] + %21 = trunc i64 %.02228 to i8 %22 = getelementptr inbounds nuw i8, ptr %.030, i64 1 store i8 %21, ptr %.030, align 1, !tbaa !21 %23 = add nuw i64 %.02129, 1 - %24 = lshr i32 %.02228, 8 + %24 = lshr i64 %.02228, 8 %25 = load i64, ptr %13, align 8, !tbaa !87 %26 = icmp ult i64 %23, %25 br i1 %26, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !95 diff --git a/bench/hdf5/optimized/H5Pencdec.ll b/bench/hdf5/optimized/H5Pencdec.ll index f921ae2bc1e..a78aaa60170 100644 --- a/bench/hdf5/optimized/H5Pencdec.ll +++ b/bench/hdf5/optimized/H5Pencdec.ll @@ -540,41 +540,42 @@ define noundef i32 @H5P__encode_uint64_t(ptr noundef readonly captures(none) %0, 10: ; preds = %3 %11 = load ptr, ptr %1, align 8, !tbaa !13 %.not = icmp eq ptr %11, null - br i1 %.not, label %24, label %12 + br i1 %.not, label %25, label %12 12: ; preds = %10 %13 = getelementptr inbounds nuw i8, ptr %11, i64 1 store ptr %13, ptr %1, align 8, !tbaa !13 store i8 8, ptr %11, align 1, !tbaa !7 %14 = load i32, ptr %0, align 4, !tbaa !19 - %15 = load ptr, ptr %1, align 8, !tbaa !13 - br label %16 - -16: ; preds = %12, %16 - %.021 = phi ptr [ %15, %12 ], [ %18, %16 ] - %.01520 = phi i64 [ 0, %12 ], [ %19, %16 ] - %.01719 = phi i32 [ %14, %12 ], [ %20, %16 ] - %17 = trunc i32 %.01719 to i8 - %18 = getelementptr inbounds nuw i8, ptr %.021, i64 1 - store i8 %17, ptr %.021, align 1, !tbaa !7 - %19 = add nuw nsw i64 %.01520, 1 - %20 = lshr i32 %.01719, 8 - %exitcond.not = icmp eq i64 %19, 8 - br i1 %exitcond.not, label %21, label %16, !llvm.loop !22 - -21: ; preds = %16 - %22 = load ptr, ptr %1, align 8, !tbaa !13 - %23 = getelementptr inbounds nuw i8, ptr %22, i64 8 - store ptr %23, ptr %1, align 8, !tbaa !13 - br label %24 - -24: ; preds = %21, %10 - %25 = load i64, ptr %2, align 8, !tbaa !3 - %26 = add i64 %25, 9 - store i64 %26, ptr %2, align 8, !tbaa !3 - br label %27 + %15 = zext i32 %14 to i64 + %16 = load ptr, ptr %1, align 8, !tbaa !13 + br label %17 + +17: ; preds = %12, %17 + %.01520 = phi ptr [ %16, %12 ], [ %19, %17 ] + %.01719 = phi i64 [ 0, %12 ], [ %20, %17 ] + %.01719 = phi i64 [ %15, %12 ], [ %21, %17 ] + %18 = trunc i64 %.01719 to i8 + %19 = getelementptr inbounds nuw i8, ptr %.021, i64 1 + store i8 %18, ptr %.01520, align 1, !tbaa !7 + %20 = add nuw nsw i64 %.01719, 1 + %21 = lshr i64 %.01719, 8 + %exitcond.not = icmp eq i64 %20, 8 + br i1 %exitcond.not, label %22, label %17, !llvm.loop !22 + +22:; preds = %17 + %23 = load ptr, ptr %1, align 8, !tbaa !13 + %24 = getelementptr inbounds nuw i8, ptr %23, i64 8 + store ptr %24, ptr %1, align 8, !tbaa !13 + br label %25 + +25:; preds = %22, %10 + %26 = load i64, ptr %2, align 8, !tbaa !3 + %27 = add i64 %26, 9 + store i64 %27, ptr %2, align 8, !tbaa !3 + br label %28 -27: ; preds = %24, %3 +27: ; preds = %25, %3 ret i32 0 } diff --git a/bench/icu/optimized/collationiterator.ll b/bench/icu/optimized/collationiterator.ll index a122a5e556e..e2a53e508eb 100644 --- a/bench/icu/optimized/collationiterator.ll +++ b/bench/icu/optimized/collationiterator.ll @@ -5826,7 +5826,9 @@ _ZN6icu_7717CollationIterator8CEBuffer20ensureAppendCapacityEiR10UErrorCode.exit %187 = getelementptr inbounds nuw i8, ptr %0, i64 40 %188 = getelementptr inbounds nuw i8, ptr %0, i64 44 %189 = zext nneg i32 %.080 to i64 - br label %190 + %sext = shl i64 %indvars.iv172, 32 + %190 = ashr exact i64 %sext, 32 + br label %191 190: ; preds = %.lr.ph165, %_ZN6icu_7717CollationIterator8CEBuffer6appendElR10UErrorCode.exit137 %indvars.iv175 = phi i64 [ %189, %.lr.ph165 ], [ %indvars.iv.next176, %_ZN6icu_7717CollationIterator8CEBuffer6appendElR10UErrorCode.exit137 ] @@ -5857,7 +5859,7 @@ _ZN6icu_7717CollationIterator8CEBuffer20ensureAppendCapacityEiR10UErrorCode.exit br i1 %203, label %.preheader.i.i125, label %_ZN6icu_7717CollationIterator8CEBuffer6appendElR10UErrorCode.exit137 .preheader.i.i125: ; preds = %201, %.preheader.i.i125 - %.012.i.i126 = phi i32 [ %.113.i.i128, %.preheader.i.i125 ], [ %200, %201 ] + %.012.i.i126 = phi i32 [ %.113.i.i128, %.preheader.i.i125 ], [ %200, %202 ] %204 = icmp slt i32 %.012.i.i126, 1000 %.113.v.i.i127 = select i1 %204, i32 2, i32 1 %.113.i.i128 = shl nsw i32 %.012.i.i126, %.113.v.i.i127 @@ -5903,7 +5905,7 @@ _ZN6icu_7715MaybeStackArrayIlLi40EE6resizeEii.exit.i.i134: ; preds = %217, %211 br label %_ZN6icu_7717CollationIterator8CEBuffer6appendElR10UErrorCode.exit137 _ZN6icu_7717CollationIterator8CEBuffer20ensureAppendCapacityEiR10UErrorCode.exit.i136: ; preds = %_ZN6icu_7715MaybeStackArrayIlLi40EE6resizeEii.exit.i.i134, %199, %192 - %219 = phi i32 [ %.pre.i135, %_ZN6icu_7715MaybeStackArrayIlLi40EE6resizeEii.exit.i.i134 ], [ %197, %199 ], [ %197, %192 ] + %219 = phi i32 [ %.pre.i135, %_ZN6icu_7715MaybeStackArrayIlLi40EE6resizeEii.exit.i.i134 ], [ %197, %200 ], [ %197, %193 ] %220 = add nsw i32 %219, 1 store i32 %220, ptr %185, align 8, !tbaa !20 %221 = sext i32 %219 to i64 @@ -5919,21 +5921,20 @@ _ZN6icu_7717CollationIterator8CEBuffer20ensureAppendCapacityEiR10UErrorCode.exit br label %_ZN6icu_7717CollationIterator8CEBuffer6appendElR10UErrorCode.exit137 _ZN6icu_7717CollationIterator8CEBuffer6appendElR10UErrorCode.exit137: ; preds = %_ZN6icu_7717CollationIterator8CEBuffer20ensureAppendCapacityEiR10UErrorCode.exit.i136, %218, %201, %224 - %.185 = phi i32 [ %226, %224 ], [ %8, %201 ], [ %8, %218 ], [ %8, %_ZN6icu_7717CollationIterator8CEBuffer20ensureAppendCapacityEiR10UErrorCode.exit.i136 ] - %.1 = phi i32 [ %227, %224 ], [ 16, %201 ], [ 16, %218 ], [ 16, %_ZN6icu_7717CollationIterator8CEBuffer20ensureAppendCapacityEiR10UErrorCode.exit.i136 ] - %228 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv175 + %.185 = phi i32 [ %226, %225 ], [ %8, %202 ], [ %8, %219 ], [ %8, %_ZN6icu_7717CollationIterator8CEBuffer20ensureAppendCapacityEiR10UErrorCode.exit.i136 ] + %.1 = phi i32 [ %227, %225 ], [ 16, %202 ], [ 16, %219 ], [ 16, %_ZN6icu_7717CollationIterator8CEBuffer20ensureAppendCapacityEiR10UErrorCode.exit.i136 ] + %228 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv175 %229 = load i8, ptr %228, align 1, !tbaa !43 %230 = sext i8 %229 to i32 %231 = mul nsw i32 %230, 10 - %232 = getelementptr inbounds nuw i8, ptr %228, i64 1 + %232 = getelementptr i8, ptr %228, i64 1 %233 = load i8, ptr %232, align 1, !tbaa !43 %234 = sext i8 %233 to i32 %235 = add nsw i32 %231, %234 %indvars.iv.next176 = add nuw nsw i64 %indvars.iv175, 2 %.183.in = shl nsw i32 %235, 1 - %236 = trunc nuw i64 %indvars.iv.next176 to i32 - %237 = icmp slt i32 %236, %173 - br i1 %237, label %190, label %._crit_edge166, !llvm.loop !105 + %237 = icmp slt i64 %indvars.iv.next176, %190 + br i1 %237, label %191, label %._crit_edge166, !llvm.loop !105 ._crit_edge166: ; preds = %_ZN6icu_7717CollationIterator8CEBuffer6appendElR10UErrorCode.exit137, %183 %.084.lcssa = phi i32 [ %164, %183 ], [ %.185, %_ZN6icu_7717CollationIterator8CEBuffer6appendElR10UErrorCode.exit137 ] diff --git a/bench/icu/optimized/rbtz.ll b/bench/icu/optimized/rbtz.ll index e69d9c508f4..8472fc1a2ed 100644 --- a/bench/icu/optimized/rbtz.ll +++ b/bench/icu/optimized/rbtz.ll @@ -2952,17 +2952,21 @@ define void @_ZNK6icu_7717RuleBasedTimeZone16getTimeZoneRulesERPKNS_19InitialTim %37 = add nuw nsw i32 %.12334, 1 %38 = tail call noundef ptr @_ZNK6icu_777UVector9elementAtEi(ptr noundef nonnull align 8 dereferenceable(40) %36, i32 noundef %.12334) %indvars.iv.next43 = add nuw nsw i64 %indvars.iv42, 1 - %39 = getelementptr inbounds nuw ptr, ptr %2, i64 %indvars.iv42 + %39 = getelementptr inbounds ptr, ptr %2, i64 %indvars.iv42 store ptr %38, ptr %39, align 8, !tbaa !51 %40 = load i32, ptr %3, align 4, !tbaa !48 - %41 = trunc nuw i64 %indvars.iv.next43 to i32 - %42 = icmp sgt i32 %40, %41 + %41 = sext i32 %40 to i64 + %42 = icmp slt i64 %indvars.iv.next43, %41 %43 = icmp slt i32 %37, %33 %44 = select i1 %42, i1 %43, i1 false br i1 %44, label %.lr.ph36, label %.loopexit, !llvm.loop !56 -.loopexit: ; preds = %.lr.ph36, %31, %.loopexit31 - %.2 = phi i32 [ %.0, %.loopexit31 ], [ %.0, %31 ], [ %41, %.lr.ph36 ] +.loopexit: ; preds = %.lr.ph36 + %45 = trunc nsw i64 %indvars.iv.next43 to i32 + br label %.loopexit + +.loopexit: ; preds = %.loopexit.loopexit, %31, %.loopexit31 + %.2 = phi i32 [ %.0, %.loopexit31 ], [ %.0, %31 ], [ %45, %.loopexit.loopexit ] store i32 %.2, ptr %3, align 4, !tbaa !48 br label %45 diff --git a/bench/icu/optimized/reslist.ll b/bench/icu/optimized/reslist.ll index 5ad0aed0da3..e2e2cd5e008 100644 --- a/bench/icu/optimized/reslist.ll +++ b/bench/icu/optimized/reslist.ll @@ -4612,7 +4612,7 @@ _ZNK6icu_7713UnicodeString8endsWithERKS0_.exit: ; preds = %79 br label %.critedge .critedge: ; preds = %237, %.critedge.loopexit.split.loop.exit268, %.preheader - %.0128.lcssa = phi i32 [ 0, %.preheader ], [ %238, %.critedge.loopexit.split.loop.exit268 ], [ %8, %237 ] + %.0128.lcssa = phi i32 [ 0, %.preheader ], [ %238, %.critedge.loopexit.split.loop.exit270 ], [ %8, %237 ] %239 = getelementptr inbounds nuw i8, ptr %0, i64 80 %240 = load i16, ptr %239, align 8, !tbaa !4 %241 = and i16 %240, 1 @@ -4699,13 +4699,13 @@ _ZNK6icu_7713UnicodeString8endsWithERKS0_.exit: ; preds = %79 %275 = load i32, ptr %274, align 8 %276 = getelementptr inbounds nuw i8, ptr %0, i64 160 %.promoted = load i32, ptr %276, align 8 - %277 = zext i32 %.1129 to i64 + %277 = sext i32 %.1129 to i64 br label %278 278: ; preds = %.lr.ph224, %303 %indvars.iv245 = phi i64 [ %277, %.lr.ph224 ], [ %indvars.iv.next246, %303 ] %279 = phi i32 [ %.promoted, %.lr.ph224 ], [ %304, %303 ] - %280 = getelementptr inbounds nuw ptr, ptr %13, i64 %indvars.iv245 + %280 = getelementptr inbounds ptr, ptr %13, i64 %indvars.iv245 %281 = load ptr, ptr %280, align 8, !tbaa !146 %282 = getelementptr inbounds nuw i8, ptr %281, i64 9 %283 = load i8, ptr %282, align 1, !tbaa !17 @@ -4743,10 +4743,9 @@ _ZNK6icu_7713UnicodeString8endsWithERKS0_.exit: ; preds = %79 303: ; preds = %278, %301 %304 = phi i32 [ %279, %278 ], [ %302, %301 ] - %indvars.iv.next246 = add nuw nsw i64 %indvars.iv245, 1 - %305 = trunc nuw i64 %indvars.iv.next246 to i32 - %306 = icmp sgt i32 %8, %305 - br i1 %306, label %278, label %_ZN6icu_7710LocalArrayIP14StringResourceED2Ev.exit, !llvm.loop !155 + %indvars.iv.next246 = add nsw i64 %indvars.iv245, 1 + %exitcond249.not = icmp eq i64 %indvars.iv.next246, %9 + br i1 %exitcond249.not, label %_ZN6icu_7710LocalArrayIP14StringResourceED2Ev.exit, label %278, !llvm.loop !155 _ZN6icu_7710LocalArrayIP14StringResourceED2Ev.exit: ; preds = %266, %303, %.critedge5, %242, %199, %198, %138, %27, %7 call void @_ZdaPv(ptr noundef nonnull %13) #36 diff --git a/bench/image-rs/optimized/2mngkegtim1o10y3.ll b/bench/image-rs/optimized/2mngkegtim1o10y3.ll index d70fca3f709..608e477867a 100644 --- a/bench/image-rs/optimized/2mngkegtim1o10y3.ll +++ b/bench/image-rs/optimized/2mngkegtim1o10y3.ll @@ -14647,7 +14647,7 @@ define hidden void @_ZN3exr4meta6header6Header9write_all17habc56088bc3922ceE(ptr call void @llvm.lifetime.start.p0(i64 352, ptr nonnull %88), !noalias !1107 %273 = getelementptr inbounds nuw i8, ptr %.sroa.0.0937, i64 368 %274 = getelementptr inbounds nuw i8, ptr %.sroa.0.0937, i64 1024 - %.val.i = load float, ptr %274, align 4, !alias.scope !1109, !noalias !1104, !noundef !4 + %.val.i = load float, ptr %274, align 8, !alias.scope !1109, !noalias !1104, !noundef !4 %275 = getelementptr inbounds nuw i8, ptr %.sroa.0.0937, i64 1028 %.val752.i = load float, ptr %275, align 4, !alias.scope !1112, !noalias !1104, !noundef !4 store float %.val.i, ptr %124, align 8, !noalias !1107 @@ -14836,7 +14836,7 @@ define hidden void @_ZN3exr4meta6header6Header9write_all17habc56088bc3922ceE(ptr %332 = getelementptr inbounds nuw i8, ptr %.sroa.0.0937, i64 1036 %.val753.i = load float, ptr %332, align 4, !alias.scope !1109, !noalias !1104, !noundef !4 %333 = getelementptr inbounds nuw i8, ptr %.sroa.0.0937, i64 1040 - %.val754.i = load float, ptr %333, align 4, !alias.scope !1112, !noalias !1104, !noundef !4 + %.val754.i = load float, ptr %333, align 8, !alias.scope !1112, !noalias !1104, !noundef !4 store float %.val753.i, ptr %129, align 8, !noalias !1107 store float %.val754.i, ptr %130, align 4, !noalias !1107 store i64 22, ptr %80, align 8, !noalias !1107 @@ -15755,7 +15755,7 @@ define hidden void @_ZN3exr4meta6header6Header9write_all17habc56088bc3922ceE(ptr call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43), !noalias !1107 call void @llvm.lifetime.start.p0(i64 352, ptr nonnull %42), !noalias !1107 %634 = getelementptr inbounds nuw i8, ptr %.sroa.0.0937, i64 1048 - %635 = load i32, ptr %634, align 4, !alias.scope !1101, !noalias !1104, !noundef !4 + %635 = load i32, ptr %634, align 8, !alias.scope !1101, !noalias !1104, !noundef !4 %636 = getelementptr inbounds nuw i8, ptr %.sroa.0.0937, i64 1052 %637 = load i32, ptr %636, align 4, !alias.scope !1101, !noalias !1104, !noundef !4 store i32 %635, ptr %149, align 8, !noalias !1107 @@ -15928,7 +15928,7 @@ define hidden void @_ZN3exr4meta6header6Header9write_all17habc56088bc3922ceE(ptr %688 = getelementptr inbounds nuw i8, ptr %.sroa.0.0937, i64 1196 %689 = load i32, ptr %688, align 4, !alias.scope !1101, !noalias !1104, !noundef !4 %690 = getelementptr inbounds nuw i8, ptr %.sroa.0.0937, i64 1200 - %691 = load i32, ptr %690, align 4, !alias.scope !1101, !noalias !1104, !noundef !4 + %691 = load i32, ptr %690, align 8, !alias.scope !1101, !noalias !1104, !noundef !4 store i32 %689, ptr %154, align 8, !noalias !1107 store i32 %691, ptr %155, align 4, !noalias !1107 store i64 10, ptr %33, align 8, !noalias !1107 @@ -16434,7 +16434,7 @@ define hidden void @_ZN3exr4meta6header6Header9write_all17habc56088bc3922ceE(ptr 866: ; preds = %863, %860 %.0659.in.i = getelementptr inbounds nuw i8, ptr %.sroa.0.0937, i64 1416 - %.0659.i = load float, ptr %.0659.in.i, align 4, !alias.scope !1101, !noalias !1104, !noundef !4 + %.0659.i = load float, ptr %.0659.in.i, align 8, !alias.scope !1101, !noalias !1104, !noundef !4 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14), !noalias !1107 call void @llvm.lifetime.start.p0(i64 352, ptr nonnull %13), !noalias !1107 store float %.0659.i, ptr %165, align 8, !noalias !1107 diff --git a/bench/ipopt/optimized/IpDenseGenMatrix.ll b/bench/ipopt/optimized/IpDenseGenMatrix.ll index ced9a4aa588..b5ca62e3f14 100644 --- a/bench/ipopt/optimized/IpDenseGenMatrix.ll +++ b/bench/ipopt/optimized/IpDenseGenMatrix.ll @@ -1176,6 +1176,7 @@ define noundef zeroext i1 @_ZN5Ipopt14DenseGenMatrix21ComputeCholeskyFactorERKNS .preheader34.lr.ph: ; preds = %2 %13 = zext nneg i32 %7 to i64 + %wide.trip.count45 = zext nneg i32 %7 to i64 br label %.preheader34 .preheader34: ; preds = %.preheader34.lr.ph, %22 @@ -1205,18 +1206,18 @@ define noundef zeroext i1 @_ZN5Ipopt14DenseGenMatrix21ComputeCholeskyFactorERKNS 22: ; preds = %23 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond46.not = icmp eq i64 %indvars.iv.next, %13 + %exitcond46.not = icmp eq i64 %indvars.iv.next, %wide.trip.count45 br i1 %exitcond46.not, label %._crit_edge, label %.preheader34, !llvm.loop !99 23: ; preds = %.preheader34, %23 %indvars.iv41 = phi i64 [ %indvars.iv, %.preheader34 ], [ %indvars.iv.next42, %23 ] - %24 = add nuw nsw i64 %indvars.iv41, %14 - %25 = getelementptr inbounds nuw double, ptr %9, i64 %24 + %24 = add nsw i64 %indvars.iv41, %14 + %25 = getelementptr inbounds double, ptr %9, i64 %24 %26 = load double, ptr %25, align 8, !tbaa !47 - %27 = getelementptr inbounds nuw double, ptr %12, i64 %24 + %27 = getelementptr inbounds double, ptr %12, i64 %24 store double %26, ptr %27, align 8, !tbaa !47 %indvars.iv.next42 = add nuw nsw i64 %indvars.iv41, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next42, %13 + %exitcond.not = icmp eq i64 %indvars.iv.next42, %wide.trip.count45 br i1 %exitcond.not, label %22, label %23, !llvm.loop !100 .preheader: ; preds = %.preheader.lr.ph, %.preheader @@ -1262,6 +1263,7 @@ define noundef zeroext i1 @_ZN5Ipopt14DenseGenMatrix19ComputeEigenVectorsERKNS_1 %12 = getelementptr inbounds nuw i8, ptr %0, i64 80 %13 = load ptr, ptr %12, align 8, !tbaa !34 %14 = zext nneg i32 %8 to i64 + %wide.trip.count30 = zext nneg i32 %8 to i64 br label %.preheader .preheader: ; preds = %.preheader.lr.ph, %46 @@ -1330,18 +1332,18 @@ _ZN5Ipopt11DenseVector6ValuesEv.exit: ; preds = %23, %_ZNK5Ipopt16De 46: ; preds = %47 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond31.not = icmp eq i64 %indvars.iv.next, %14 + %exitcond31.not = icmp eq i64 %indvars.iv.next, %wide.trip.count30 br i1 %exitcond31.not, label %._crit_edge, label %.preheader, !llvm.loop !109 47: ; preds = %.preheader, %47 %indvars.iv26 = phi i64 [ %indvars.iv, %.preheader ], [ %indvars.iv.next27, %47 ] - %48 = add nuw nsw i64 %indvars.iv26, %15 - %49 = getelementptr inbounds nuw double, ptr %10, i64 %48 + %48 = add nsw i64 %indvars.iv26, %15 + %49 = getelementptr inbounds double, ptr %10, i64 %48 %50 = load double, ptr %49, align 8, !tbaa !47 - %51 = getelementptr inbounds nuw double, ptr %13, i64 %48 + %51 = getelementptr inbounds double, ptr %13, i64 %48 store double %50, ptr %51, align 8, !tbaa !47 %indvars.iv.next27 = add nuw nsw i64 %indvars.iv26, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next27, %14 + %exitcond.not = icmp eq i64 %indvars.iv.next27, %wide.trip.count30 br i1 %exitcond.not, label %46, label %47, !llvm.loop !110 } diff --git a/bench/ipopt/optimized/IpDenseSymMatrix.ll b/bench/ipopt/optimized/IpDenseSymMatrix.ll index 324dcc96b6c..59cf7d1c215 100644 --- a/bench/ipopt/optimized/IpDenseSymMatrix.ll +++ b/bench/ipopt/optimized/IpDenseSymMatrix.ll @@ -456,6 +456,7 @@ define void @_ZN5Ipopt14DenseSymMatrix9AddMatrixEdRKS0_d(ptr noundef nonnull ali %15 = getelementptr inbounds nuw i8, ptr %0, i64 88 %16 = load ptr, ptr %15, align 8, !tbaa !35 %17 = zext nneg i32 %12 to i64 + %wide.trip.count100 = zext nneg i32 %12 to i64 br label %.preheader .preheader: ; preds = %.preheader.lr.ph, %19 @@ -465,19 +466,19 @@ define void @_ZN5Ipopt14DenseSymMatrix9AddMatrixEdRKS0_d(ptr noundef nonnull ali 19: ; preds = %20 %indvars.iv.next93 = add nuw nsw i64 %indvars.iv92, 1 - %exitcond101.not = icmp eq i64 %indvars.iv.next93, %17 + %exitcond101.not = icmp eq i64 %indvars.iv.next93, %wide.trip.count100 br i1 %exitcond101.not, label %.loopexit, label %.preheader, !llvm.loop !56 20: ; preds = %.preheader, %20 %indvars.iv94 = phi i64 [ %indvars.iv92, %.preheader ], [ %indvars.iv.next95, %20 ] - %21 = add nuw nsw i64 %indvars.iv94, %18 - %22 = getelementptr inbounds nuw double, ptr %8, i64 %21 + %21 = add nsw i64 %indvars.iv94, %18 + %22 = getelementptr inbounds double, ptr %8, i64 %21 %23 = load double, ptr %22, align 8, !tbaa !55 %24 = fmul double %1, %23 - %25 = getelementptr inbounds nuw double, ptr %16, i64 %21 + %25 = getelementptr inbounds double, ptr %16, i64 %21 store double %24, ptr %25, align 8, !tbaa !55 %indvars.iv.next95 = add nuw nsw i64 %indvars.iv94, 1 - %exitcond98.not = icmp eq i64 %indvars.iv.next95, %17 + %exitcond98.not = icmp eq i64 %indvars.iv.next95, %wide.trip.count100 br i1 %exitcond98.not, label %19, label %20, !llvm.loop !57 26: ; preds = %6 @@ -492,6 +493,7 @@ define void @_ZN5Ipopt14DenseSymMatrix9AddMatrixEdRKS0_d(ptr noundef nonnull ali %29 = getelementptr inbounds nuw i8, ptr %0, i64 88 %30 = load ptr, ptr %29, align 8, !tbaa !35 %31 = zext nneg i32 %12 to i64 + %wide.trip.count80 = zext nneg i32 %12 to i64 br label %.preheader65 .preheader63: ; preds = %26 @@ -501,6 +503,7 @@ define void @_ZN5Ipopt14DenseSymMatrix9AddMatrixEdRKS0_d(ptr noundef nonnull ali %32 = getelementptr inbounds nuw i8, ptr %0, i64 88 %33 = load ptr, ptr %32, align 8, !tbaa !35 %34 = zext nneg i32 %12 to i64 + %wide.trip.count90 = zext nneg i32 %12 to i64 br label %.preheader62 .preheader62: ; preds = %.preheader62.lr.ph, %36 @@ -510,20 +513,20 @@ define void @_ZN5Ipopt14DenseSymMatrix9AddMatrixEdRKS0_d(ptr noundef nonnull ali 36: ; preds = %37 %indvars.iv.next83 = add nuw nsw i64 %indvars.iv82, 1 - %exitcond91.not = icmp eq i64 %indvars.iv.next83, %34 + %exitcond91.not = icmp eq i64 %indvars.iv.next83, %wide.trip.count90 br i1 %exitcond91.not, label %.loopexit, label %.preheader62, !llvm.loop !58 37: ; preds = %.preheader62, %37 %indvars.iv84 = phi i64 [ %indvars.iv82, %.preheader62 ], [ %indvars.iv.next85, %37 ] - %38 = add nuw nsw i64 %indvars.iv84, %35 - %39 = getelementptr inbounds nuw double, ptr %8, i64 %38 + %38 = add nsw i64 %indvars.iv84, %35 + %39 = getelementptr inbounds double, ptr %8, i64 %38 %40 = load double, ptr %39, align 8, !tbaa !55 - %41 = getelementptr inbounds nuw double, ptr %33, i64 %38 + %41 = getelementptr inbounds double, ptr %33, i64 %38 %42 = load double, ptr %41, align 8, !tbaa !55 %43 = tail call double @llvm.fmuladd.f64(double %1, double %40, double %42) store double %43, ptr %41, align 8, !tbaa !55 %indvars.iv.next85 = add nuw nsw i64 %indvars.iv84, 1 - %exitcond88.not = icmp eq i64 %indvars.iv.next85, %34 + %exitcond88.not = icmp eq i64 %indvars.iv.next85, %wide.trip.count90 br i1 %exitcond88.not, label %36, label %37, !llvm.loop !59 .preheader65: ; preds = %.preheader65.lr.ph, %45 @@ -533,21 +536,21 @@ define void @_ZN5Ipopt14DenseSymMatrix9AddMatrixEdRKS0_d(ptr noundef nonnull ali 45: ; preds = %46 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond81.not = icmp eq i64 %indvars.iv.next, %31 + %exitcond81.not = icmp eq i64 %indvars.iv.next, %wide.trip.count80 br i1 %exitcond81.not, label %.loopexit, label %.preheader65, !llvm.loop !60 46: ; preds = %.preheader65, %46 %indvars.iv76 = phi i64 [ %indvars.iv, %.preheader65 ], [ %indvars.iv.next77, %46 ] - %47 = add nuw nsw i64 %indvars.iv76, %44 - %48 = getelementptr inbounds nuw double, ptr %8, i64 %47 + %47 = add nsw i64 %indvars.iv76, %44 + %48 = getelementptr inbounds double, ptr %8, i64 %47 %49 = load double, ptr %48, align 8, !tbaa !55 - %50 = getelementptr inbounds nuw double, ptr %30, i64 %47 + %50 = getelementptr inbounds double, ptr %30, i64 %47 %51 = load double, ptr %50, align 8, !tbaa !55 %52 = fmul double %3, %51 %53 = tail call double @llvm.fmuladd.f64(double %1, double %49, double %52) store double %53, ptr %50, align 8, !tbaa !55 %indvars.iv.next77 = add nuw nsw i64 %indvars.iv76, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next77, %31 + %exitcond.not = icmp eq i64 %indvars.iv.next77, %wide.trip.count80 br i1 %exitcond.not, label %45, label %46, !llvm.loop !61 .loopexit: ; preds = %45, %36, %19, %.preheader66, %.preheader63, %.preheader61 @@ -592,6 +595,7 @@ define void @_ZN5Ipopt14DenseSymMatrix23HighRankUpdateTransposeEdRKNS_17MultiVec %24 = getelementptr inbounds nuw i8, ptr %6, i64 16 %25 = getelementptr inbounds nuw i8, ptr %0, i64 88 %26 = zext nneg i32 %15 to i64 + %wide.trip.count158 = zext nneg i32 %15 to i64 br label %.preheader125 .preheader124: ; preds = %5 @@ -607,6 +611,7 @@ define void @_ZN5Ipopt14DenseSymMatrix23HighRankUpdateTransposeEdRKNS_17MultiVec %33 = getelementptr inbounds nuw i8, ptr %8, i64 16 %34 = getelementptr inbounds nuw i8, ptr %0, i64 88 %35 = zext nneg i32 %15 to i64 + %wide.trip.count168 = zext nneg i32 %15 to i64 br label %.preheader .preheader: ; preds = %.preheader.lr.ph, %37 @@ -616,7 +621,7 @@ define void @_ZN5Ipopt14DenseSymMatrix23HighRankUpdateTransposeEdRKNS_17MultiVec 37: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit64 %indvars.iv.next161 = add nuw nsw i64 %indvars.iv160, 1 - %exitcond169.not = icmp eq i64 %indvars.iv.next161, %35 + %exitcond169.not = icmp eq i64 %indvars.iv.next161, %wide.trip.count168 br i1 %exitcond169.not, label %.loopexit, label %.preheader, !llvm.loop !62 38: ; preds = %.preheader, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit64 @@ -807,8 +812,8 @@ _ZNK5Ipopt6Vector3DotERKS0_.exit: ; preds = %.noexc61, %_ZNK5Ipo %.0.i = phi double [ %71, %_ZNK5Ipopt6Vector4Nrm2Ev.exit.i ], [ %111, %.noexc61 ] %112 = fmul double %1, %.0.i %113 = load ptr, ptr %34, align 8, !tbaa !35 - %114 = getelementptr inbounds nuw double, ptr %113, i64 %indvars.iv162 - %115 = getelementptr inbounds nuw double, ptr %114, i64 %36 + %114 = getelementptr double, ptr %113, i64 %indvars.iv162 + %115 = getelementptr double, ptr %114, i64 %36 store double %112, ptr %115, align 8, !tbaa !55 %.not.i.i62 = icmp eq ptr %.0.i4.i54, null br i1 %.not.i.i62, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit, label %116 @@ -845,7 +850,7 @@ _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit: ; preds = %121, %116, %_ZNK5Ip _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit64: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit, %129 %indvars.iv.next163 = add nuw nsw i64 %indvars.iv162, 1 - %exitcond166.not = icmp eq i64 %indvars.iv.next163, %35 + %exitcond166.not = icmp eq i64 %indvars.iv.next163, %wide.trip.count168 br i1 %exitcond166.not, label %37, label %38, !llvm.loop !93 133: ; preds = %72, %.noexc60, %106, %63 @@ -892,7 +897,7 @@ _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit66: ; preds = %140, %135, %.body 150: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit97 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond159.not = icmp eq i64 %indvars.iv.next, %26 + %exitcond159.not = icmp eq i64 %indvars.iv.next, %wide.trip.count158 br i1 %exitcond159.not, label %.loopexit, label %.preheader125, !llvm.loop !94 151: ; preds = %.preheader125, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit97 @@ -1082,8 +1087,8 @@ _ZNSt6vectorIPKN5Ipopt12TaggedObjectESaIS3_EED2Ev.exit8.i106: ; preds = %214, %_ _ZNK5Ipopt6Vector3DotERKS0_.exit93: ; preds = %.noexc92, %_ZNK5Ipopt6Vector4Nrm2Ev.exit.i85 %.0.i83 = phi double [ %184, %_ZNK5Ipopt6Vector4Nrm2Ev.exit.i85 ], [ %224, %.noexc92 ] %225 = load ptr, ptr %25, align 8, !tbaa !35 - %226 = getelementptr inbounds nuw double, ptr %225, i64 %indvars.iv154 - %227 = getelementptr inbounds nuw double, ptr %226, i64 %149 + %226 = getelementptr double, ptr %225, i64 %indvars.iv154 + %227 = getelementptr double, ptr %226, i64 %149 %228 = load double, ptr %227, align 8, !tbaa !55 %229 = fmul double %4, %228 %230 = call double @llvm.fmuladd.f64(double %1, double %.0.i83, double %229) @@ -1123,7 +1128,7 @@ _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit95: ; preds = %236, %231, %_ZNK5Ip _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit97: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit95, %244 %indvars.iv.next155 = add nuw nsw i64 %indvars.iv154, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next155, %26 + %exitcond.not = icmp eq i64 %indvars.iv.next155, %wide.trip.count158 br i1 %exitcond.not, label %150, label %151, !llvm.loop !101 248: ; preds = %185, %.noexc91, %219, %176 @@ -1333,13 +1338,13 @@ define noundef zeroext i1 @_ZNK5Ipopt14DenseSymMatrix19HasValidNumbersImplEv(ptr .lr.ph.preheader: ; preds = %12 %20 = mul nuw nsw i64 %indvars.iv28, %9 - %invariant.gep = getelementptr inbounds nuw double, ptr %8, i64 %20 + %invariant.gep = getelementptr double, ptr %8, i64 %20 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv25 = phi i64 [ %indvars.iv, %.lr.ph.preheader ], [ %indvars.iv.next26, %.lr.ph ] %.119 = phi double [ %18, %.lr.ph.preheader ], [ %22, %.lr.ph ] - %gep = getelementptr inbounds nuw double, ptr %invariant.gep, i64 %indvars.iv25 + %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv25 %21 = load double, ptr %gep, align 8, !tbaa !55 %22 = fadd double %.119, %21 %indvars.iv.next26 = add nuw nsw i64 %indvars.iv25, 1 diff --git a/bench/ipopt/optimized/IpLimMemQuasiNewtonUpdater.ll b/bench/ipopt/optimized/IpLimMemQuasiNewtonUpdater.ll index c81eb2fd7a4..8d59ee1198f 100644 --- a/bench/ipopt/optimized/IpLimMemQuasiNewtonUpdater.ll +++ b/bench/ipopt/optimized/IpLimMemQuasiNewtonUpdater.ll @@ -14394,14 +14394,15 @@ _ZN5Ipopt14DenseSymMatrix6ValuesEv.exit50: ; preds = %30 .preheader.preheader: ; preds = %_ZN5Ipopt14DenseSymMatrix6ValuesEv.exit50 %35 = zext nneg i32 %.035 to i64 %36 = zext nneg i32 %13 to i64 + %wide.trip.count122 = zext nneg i32 %.035 to i64 br label %.preheader .preheader: ; preds = %.preheader.preheader, %47 %indvars.iv = phi i64 [ 0, %.preheader.preheader ], [ %indvars.iv.next, %47 ] %37 = mul nuw nsw i64 %indvars.iv, %35 %38 = mul nuw nsw i64 %indvars.iv, %36 - %invariant.gep = getelementptr inbounds nuw double, ptr %33, i64 %37 - %invariant.gep135 = getelementptr inbounds nuw double, ptr %28, i64 %38 + %invariant.gep = getelementptr double, ptr %33, i64 %37 + %invariant.gep135 = getelementptr double, ptr %28, i64 %38 br label %48 39: ; preds = %11 @@ -14427,17 +14428,17 @@ _ZN5Ipopt14DenseSymMatrix6ValuesEv.exit50: ; preds = %30 47: ; preds = %48 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond123.not = icmp eq i64 %indvars.iv.next, %35 + %exitcond123.not = icmp eq i64 %indvars.iv.next, %wide.trip.count122 br i1 %exitcond123.not, label %.loopexit, label %.preheader, !llvm.loop !365 48: ; preds = %.preheader, %48 %indvars.iv118 = phi i64 [ %indvars.iv, %.preheader ], [ %indvars.iv.next119, %48 ] - %gep = getelementptr inbounds nuw double, ptr %invariant.gep, i64 %indvars.iv118 + %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv118 %49 = load double, ptr %gep, align 8, !tbaa !252 - %gep136 = getelementptr inbounds nuw double, ptr %invariant.gep135, i64 %indvars.iv118 + %gep136 = getelementptr double, ptr %invariant.gep135, i64 %indvars.iv118 store double %49, ptr %gep136, align 8, !tbaa !252 %indvars.iv.next119 = add nuw nsw i64 %indvars.iv118, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next119, %35 + %exitcond.not = icmp eq i64 %indvars.iv.next119, %wide.trip.count122 br i1 %exitcond.not, label %47, label %48, !llvm.loop !366 .loopexit: ; preds = %47, %_ZN5Ipopt14DenseSymMatrix6ValuesEv.exit50, %25 @@ -15359,8 +15360,8 @@ _ZN5Ipopt14DenseSymMatrix6ValuesEv.exit45: ; preds = %19 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %30 = mul nuw nsw i64 %indvars.iv.next, %29 %31 = mul nuw nsw i64 %indvars.iv, %29 - %invariant.gep = getelementptr inbounds nuw double, ptr %22, i64 %30 - %invariant.gep119 = getelementptr inbounds nuw double, ptr %25, i64 %31 + %invariant.gep = getelementptr double, ptr %22, i64 %30 + %invariant.gep119 = getelementptr double, ptr %25, i64 %31 br label %42 .preheader: ; preds = %41, %_ZN5Ipopt14DenseSymMatrix6ValuesEv.exit45 @@ -15393,11 +15394,11 @@ _ZN5Ipopt14DenseSymMatrix6ValuesEv.exit45: ; preds = %19 42: ; preds = %.preheader87, %42 %indvars.iv104 = phi i64 [ %indvars.iv, %.preheader87 ], [ %indvars.iv.next105, %42 ] %indvars.iv.next105 = add nuw nsw i64 %indvars.iv104, 1 - %gep = getelementptr inbounds nuw double, ptr %invariant.gep, i64 %indvars.iv.next105 + %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv.next105 %43 = load double, ptr %gep, align 8, !tbaa !252 - %gep120 = getelementptr inbounds nuw double, ptr %invariant.gep119, i64 %indvars.iv104 + %gep120 = getelementptr double, ptr %invariant.gep119, i64 %indvars.iv104 store double %43, ptr %gep120, align 8, !tbaa !252 - %44 = icmp samesign ult i64 %indvars.iv.next105, %28 + %44 = icmp slt i64 %indvars.iv.next105, %28 br i1 %44, label %42, label %41, !llvm.loop !394 ._crit_edge: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit60, %.preheader @@ -15716,14 +15717,15 @@ _ZN5Ipopt14DenseSymMatrix6ValuesEv.exit50: ; preds = %31 .preheader.preheader: ; preds = %_ZN5Ipopt14DenseSymMatrix6ValuesEv.exit50 %36 = zext nneg i32 %.035 to i64 %37 = zext nneg i32 %14 to i64 + %wide.trip.count122 = zext nneg i32 %.035 to i64 br label %.preheader .preheader: ; preds = %.preheader.preheader, %48 %indvars.iv = phi i64 [ 0, %.preheader.preheader ], [ %indvars.iv.next, %48 ] %38 = mul nuw nsw i64 %indvars.iv, %36 %39 = mul nuw nsw i64 %indvars.iv, %37 - %invariant.gep = getelementptr inbounds nuw double, ptr %34, i64 %38 - %invariant.gep135 = getelementptr inbounds nuw double, ptr %29, i64 %39 + %invariant.gep = getelementptr double, ptr %34, i64 %38 + %invariant.gep135 = getelementptr double, ptr %29, i64 %39 br label %49 40: ; preds = %12 @@ -15749,17 +15751,17 @@ _ZN5Ipopt14DenseSymMatrix6ValuesEv.exit50: ; preds = %31 48: ; preds = %49 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond123.not = icmp eq i64 %indvars.iv.next, %36 + %exitcond123.not = icmp eq i64 %indvars.iv.next, %wide.trip.count122 br i1 %exitcond123.not, label %.loopexit, label %.preheader, !llvm.loop !402 49: ; preds = %.preheader, %49 %indvars.iv118 = phi i64 [ %indvars.iv, %.preheader ], [ %indvars.iv.next119, %49 ] - %gep = getelementptr inbounds nuw double, ptr %invariant.gep, i64 %indvars.iv118 + %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv118 %50 = load double, ptr %gep, align 8, !tbaa !252 - %gep136 = getelementptr inbounds nuw double, ptr %invariant.gep135, i64 %indvars.iv118 + %gep136 = getelementptr double, ptr %invariant.gep135, i64 %indvars.iv118 store double %50, ptr %gep136, align 8, !tbaa !252 %indvars.iv.next119 = add nuw nsw i64 %indvars.iv118, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next119, %36 + %exitcond.not = icmp eq i64 %indvars.iv.next119, %wide.trip.count122 br i1 %exitcond.not, label %48, label %49, !llvm.loop !403 .loopexit: ; preds = %48, %_ZN5Ipopt14DenseSymMatrix6ValuesEv.exit50, %26 @@ -16116,8 +16118,8 @@ _ZN5Ipopt14DenseSymMatrix6ValuesEv.exit45: ; preds = %20 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %31 = mul nuw nsw i64 %indvars.iv.next, %30 %32 = mul nuw nsw i64 %indvars.iv, %30 - %invariant.gep = getelementptr inbounds nuw double, ptr %23, i64 %31 - %invariant.gep119 = getelementptr inbounds nuw double, ptr %26, i64 %32 + %invariant.gep = getelementptr double, ptr %23, i64 %31 + %invariant.gep119 = getelementptr double, ptr %26, i64 %32 br label %45 .preheader: ; preds = %44, %_ZN5Ipopt14DenseSymMatrix6ValuesEv.exit45 @@ -16152,11 +16154,11 @@ _ZN5Ipopt14DenseSymMatrix6ValuesEv.exit45: ; preds = %20 45: ; preds = %.preheader87, %45 %indvars.iv104 = phi i64 [ %indvars.iv, %.preheader87 ], [ %indvars.iv.next105, %45 ] %indvars.iv.next105 = add nuw nsw i64 %indvars.iv104, 1 - %gep = getelementptr inbounds nuw double, ptr %invariant.gep, i64 %indvars.iv.next105 + %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv.next105 %46 = load double, ptr %gep, align 8, !tbaa !252 - %gep120 = getelementptr inbounds nuw double, ptr %invariant.gep119, i64 %indvars.iv104 + %gep120 = getelementptr double, ptr %invariant.gep119, i64 %indvars.iv104 store double %46, ptr %gep120, align 8, !tbaa !252 - %47 = icmp samesign ult i64 %indvars.iv.next105, %29 + %47 = icmp slt i64 %indvars.iv.next105, %29 br i1 %47, label %45, label %44, !llvm.loop !415 ._crit_edge: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit60, %.preheader @@ -17028,7 +17030,7 @@ _ZN5Ipopt8SmartPtrINS_19DenseGenMatrixSpaceEED2Ev.exit: ; preds = %._crit_edge, .lr.ph: ; preds = %.preheader %65 = mul nuw nsw i64 %indvar, %45 - %invariant.gep = getelementptr inbounds nuw double, ptr %36, i64 %65 + %invariant.gep = getelementptr double, ptr %36, i64 %65 br label %66 66: ; preds = %.lr.ph, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit59 @@ -17217,7 +17219,7 @@ _ZNSt6vectorIPKN5Ipopt12TaggedObjectESaIS3_EED2Ev.exit8.i: ; preds = %129, %_ZNS _ZNK5Ipopt6Vector3DotERKS0_.exit: ; preds = %.noexc56, %_ZNK5Ipopt6Vector4Nrm2Ev.exit.i %.0.i = phi double [ %99, %_ZNK5Ipopt6Vector4Nrm2Ev.exit.i ], [ %139, %.noexc56 ] - %gep = getelementptr inbounds nuw double, ptr %invariant.gep, i64 %indvars.iv91 + %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv91 store double %.0.i, ptr %gep, align 8, !tbaa !252 %.not.i.i57 = icmp eq ptr %.0.i4.i48, null br i1 %.not.i.i57, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit, label %140 diff --git a/bench/libdeflate/optimized/deflate_compress.ll b/bench/libdeflate/optimized/deflate_compress.ll index 22476faa61a..adaa2e747f7 100644 --- a/bench/libdeflate/optimized/deflate_compress.ll +++ b/bench/libdeflate/optimized/deflate_compress.ll @@ -599,7 +599,7 @@ matchfinder_rebase_sse2.exit: ; preds = %.preheader201 118: ; preds = %.lr.ph222 %indvars.iv.next248 = add nuw nsw i64 %indvars.iv247, 1 - %119 = icmp samesign ult i64 %indvars.iv.next248, %108 + %119 = icmp ult i64 %indvars.iv.next248, %108 br i1 %119, label %.lr.ph222, label %lz_extend.exit101 .loopexit198: ; preds = %109 @@ -723,7 +723,7 @@ lz_extend.exit101: ; preds = %118, %lz_extend.exi 170: ; preds = %.lr.ph227 %indvars.iv.next253 = add nuw nsw i64 %indvars.iv252, 1 - %171 = icmp samesign ult i64 %indvars.iv.next253, %160 + %171 = icmp ult i64 %indvars.iv.next253, %160 br i1 %171, label %.lr.ph227, label %lz_extend.exit .loopexit: ; preds = %161 @@ -842,7 +842,7 @@ lz_extend.exit: ; preds = %170, %lz_extend.exi 219: ; preds = %.lr.ph %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %220 = icmp samesign ult i64 %indvars.iv.next, %209 + %220 = icmp ult i64 %indvars.iv.next, %209 br i1 %220, label %.lr.ph, label %ht_matchfinder_longest_match.exit .loopexit200: ; preds = %210 @@ -1397,7 +1397,7 @@ hc_matchfinder_slide_window.exit77: ; preds = %.preheader120 178: ; preds = %.lr.ph %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %179 = icmp samesign ult i64 %indvars.iv.next, %168 + %179 = icmp ult i64 %indvars.iv.next, %168 br i1 %179, label %.lr.ph, label %lz_extend.exit163.i .loopexit117: ; preds = %169 @@ -1567,7 +1567,7 @@ lz_extend.exit163.i: ; preds = %178, %lz_extend.exi 241: ; preds = %.lr.ph146 %indvars.iv.next173 = add nuw nsw i64 %indvars.iv172, 1 - %242 = icmp samesign ult i64 %indvars.iv.next173, %199 + %242 = icmp ult i64 %indvars.iv.next173, %199 br i1 %242, label %.lr.ph146, label %lz_extend.exit.i .loopexit: ; preds = %232 @@ -2371,7 +2371,7 @@ hc_matchfinder_slide_window.exit379.i: ; preds = %.preheader81 222: ; preds = %.lr.ph %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %223 = icmp samesign ult i64 %indvars.iv.next, %212 + %223 = icmp ult i64 %indvars.iv.next, %212 br i1 %223, label %.lr.ph, label %lz_extend.exit163.i323.i .loopexit78: ; preds = %213 @@ -2541,7 +2541,7 @@ lz_extend.exit163.i323.i: ; preds = %222, %lz_extend.exi 285: ; preds = %.lr.ph136 %indvars.iv.next225 = add nuw nsw i64 %indvars.iv224, 1 - %286 = icmp samesign ult i64 %indvars.iv.next225, %243 + %286 = icmp ult i64 %indvars.iv.next225, %243 br i1 %286, label %.lr.ph136, label %lz_extend.exit.i280.i .loopexit75: ; preds = %276 @@ -3000,7 +3000,7 @@ hc_matchfinder_slide_window.exit383.i: ; preds = %.preheader73 518: ; preds = %.lr.ph142 %indvars.iv.next230 = add nuw nsw i64 %indvars.iv229, 1 - %519 = icmp samesign ult i64 %indvars.iv.next230, %508 + %519 = icmp ult i64 %indvars.iv.next230, %508 br i1 %519, label %.lr.ph142, label %lz_extend.exit163.i228.i .loopexit70: ; preds = %509 @@ -3170,7 +3170,7 @@ lz_extend.exit163.i228.i: ; preds = %518, %lz_extend.exi 581: ; preds = %.lr.ph147 %indvars.iv.next235 = add nuw nsw i64 %indvars.iv234, 1 - %582 = icmp samesign ult i64 %indvars.iv.next235, %539 + %582 = icmp ult i64 %indvars.iv.next235, %539 br i1 %582, label %.lr.ph147, label %lz_extend.exit.i185.i .loopexit: ; preds = %572 @@ -3983,7 +3983,7 @@ hc_matchfinder_slide_window.exit379.i: ; preds = %.preheader106 222: ; preds = %.lr.ph %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %223 = icmp samesign ult i64 %indvars.iv.next, %212 + %223 = icmp ult i64 %indvars.iv.next, %212 br i1 %223, label %.lr.ph, label %lz_extend.exit163.i323.i .loopexit103: ; preds = %213 @@ -4153,7 +4153,7 @@ lz_extend.exit163.i323.i: ; preds = %222, %lz_extend.exi 285: ; preds = %.lr.ph177 %indvars.iv.next283 = add nuw nsw i64 %indvars.iv282, 1 - %286 = icmp samesign ult i64 %indvars.iv.next283, %243 + %286 = icmp ult i64 %indvars.iv.next283, %243 br i1 %286, label %.lr.ph177, label %lz_extend.exit.i280.i .loopexit100: ; preds = %276 @@ -4612,7 +4612,7 @@ hc_matchfinder_slide_window.exit383.i: ; preds = %.preheader98 518: ; preds = %.lr.ph183 %indvars.iv.next288 = add nuw nsw i64 %indvars.iv287, 1 - %519 = icmp samesign ult i64 %indvars.iv.next288, %508 + %519 = icmp ult i64 %indvars.iv.next288, %508 br i1 %519, label %.lr.ph183, label %lz_extend.exit163.i228.i .loopexit95: ; preds = %509 @@ -4782,7 +4782,7 @@ lz_extend.exit163.i228.i: ; preds = %518, %lz_extend.exi 581: ; preds = %.lr.ph188 %indvars.iv.next293 = add nuw nsw i64 %indvars.iv292, 1 - %582 = icmp samesign ult i64 %indvars.iv.next293, %539 + %582 = icmp ult i64 %indvars.iv.next293, %539 br i1 %582, label %.lr.ph188, label %lz_extend.exit.i185.i .loopexit84: ; preds = %572 @@ -5097,7 +5097,7 @@ hc_matchfinder_slide_window.exit387.i: ; preds = %.preheader92 729: ; preds = %.lr.ph196 %indvars.iv.next298 = add nuw nsw i64 %indvars.iv297, 1 - %730 = icmp samesign ult i64 %indvars.iv.next298, %719 + %730 = icmp ult i64 %indvars.iv.next298, %719 br i1 %730, label %.lr.ph196, label %lz_extend.exit163.i.i .loopexit89: ; preds = %720 @@ -5267,7 +5267,7 @@ lz_extend.exit163.i.i: ; preds = %729, %lz_extend.exi 792: ; preds = %.lr.ph201 %indvars.iv.next303 = add nuw nsw i64 %indvars.iv302, 1 - %793 = icmp samesign ult i64 %indvars.iv.next303, %750 + %793 = icmp ult i64 %indvars.iv.next303, %750 br i1 %793, label %.lr.ph201, label %lz_extend.exit.i.i .loopexit: ; preds = %783 @@ -6076,7 +6076,7 @@ adjust_max_and_nice_len.exit: ; preds = %100, %102 210: ; preds = %.lr.ph %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %211 = icmp samesign ult i64 %indvars.iv.next, %158 + %211 = icmp ult i64 %indvars.iv.next, %158 br i1 %211, label %.lr.ph, label %lz_extend.exit.i242 .loopexit327: ; preds = %201 @@ -6477,7 +6477,7 @@ adjust_max_and_nice_len.exit198: ; preds = %316, %318 406: ; preds = %.lr.ph348 %indvars.iv.next369 = add nuw nsw i64 %indvars.iv368, 1 - %407 = icmp samesign ult i64 %indvars.iv.next369, %354 + %407 = icmp ult i64 %indvars.iv.next369, %354 br i1 %407, label %.lr.ph348, label %lz_extend.exit.i.thread .loopexit: ; preds = %397 diff --git a/bench/libquic/optimized/quic_packet_creator.ll b/bench/libquic/optimized/quic_packet_creator.ll index b76419a667a..4f21db1697f 100644 --- a/bench/libquic/optimized/quic_packet_creator.ll +++ b/bench/libquic/optimized/quic_packet_creator.ll @@ -2091,7 +2091,7 @@ define void @_ZN3net17QuicPacketCreator12CopyToBufferENS_12QuicIOVectorEmmPc(ptr 18: ; preds = %.critedge %19 = load ptr, ptr %0, align 8, !tbaa !115 - %20 = zext i32 %.036.lcssa to i64 + %20 = zext nneg i32 %.036.lcssa to i64 %21 = getelementptr inbounds nuw %struct.iovec, ptr %19, i64 %20, i32 1 %22 = load i64, ptr %21, align 8, !tbaa !118 %23 = sub i64 %22, %.034.lcssa @@ -2106,31 +2106,33 @@ define void @_ZN3net17QuicPacketCreator12CopyToBufferENS_12QuicIOVectorEmmPc(ptr .lr.ph76.preheader: ; preds = %18 %27 = getelementptr inbounds nuw i8, ptr %3, i64 %.sroa.speculated %28 = sub i64 %2, %.sroa.speculated + %29 = sext i32 %.036.lcssa to i64 + %30 = add nsw i32 %7, -1 + %wide.trip.count83 = sext i32 %30 to i64 br label %.lr.ph76 -.thread: ; preds = %33, %18 +.thread: ; preds = %34, %18 %29 = tail call noundef zeroext i1 @_ZN7logging22ShouldCreateLogMessageEi(i32 noundef 2) br label %.critedge43 -.lr.ph76: ; preds = %.lr.ph76.preheader, %33 - %indvars.iv80 = phi i64 [ %20, %.lr.ph76.preheader ], [ %indvars.iv.next81, %33 ] - %30 = phi ptr [ %27, %.lr.ph76.preheader ], [ %39, %33 ] - %31 = phi i64 [ %28, %.lr.ph76.preheader ], [ %38, %33 ] - %indvars.iv.next81 = add nuw nsw i64 %indvars.iv80, 1 - %32 = trunc nuw i64 %indvars.iv.next81 to i32 - %.not40 = icmp sgt i32 %7, %32 - br i1 %.not40, label %33, label %40 - -33: ; preds = %.lr.ph76 - %34 = getelementptr inbounds nuw %struct.iovec, ptr %19, i64 %indvars.iv.next81 - %35 = load ptr, ptr %34, align 8, !tbaa !151 - %36 = getelementptr inbounds nuw i8, ptr %34, i64 8 - %37 = load i64, ptr %36, align 8, !tbaa !102 - %.sroa.speculated58 = tail call i64 @llvm.umin.i64(i64 %37, i64 %31) - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %30, ptr align 1 %35, i64 %.sroa.speculated58, i1 false) - %38 = sub i64 %31, %.sroa.speculated58 - %39 = getelementptr inbounds nuw i8, ptr %30, i64 %.sroa.speculated58 - %.not78 = icmp ugt i64 %31, %37 +.lr.ph76: ; preds = %.lr.ph76.preheader, %34 + %indvars.iv80 = phi i64 [ %29, %.lr.ph76.preheader ], [ %indvars.iv.next81, %34 ] + %30 = phi ptr [ %27, %.lr.ph76.preheader ], [ %40, %34 ] + %31 = phi i64 [ %28, %.lr.ph76.preheader ], [ %39, %34 ] + %exitcond84.not = icmp eq i64 %indvars.iv80, %wide.trip.count83 + br i1 %exitcond84.not, label %41, label %34 + +34:; preds = %.lr.ph76 + %indvars.iv.next81 = add nsw i64 %indvars.iv80, 1 + %35 = getelementptr inbounds %struct.iovec, ptr %19, i64 %indvars.iv.next81 + %36 = load ptr, ptr %35, align 8, !tbaa !151 + %37 = getelementptr inbounds nuw i8, ptr %35, i64 8 + %38 = load i64, ptr %37, align 8, !tbaa !102 + %.sroa.speculated58 = tail call i64 @llvm.umin.i64(i64 %38, i64 %31) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %32, ptr align 1 %36, i64 %.sroa.speculated58, i1 false) + %39 = sub i64 %33, %.sroa.speculated58 + %40 = getelementptr inbounds nuw i8, ptr %32, i64 %.sroa.speculated58 + %.not78 = icmp ugt i64 %33, %38 br i1 %.not78, label %.lr.ph76, label %.thread, !llvm.loop !152 40: ; preds = %.lr.ph76 diff --git a/bench/libwebp/optimized/cost_enc.ll b/bench/libwebp/optimized/cost_enc.ll index d4748574c12..e76a9c6a933 100644 --- a/bench/libwebp/optimized/cost_enc.ll +++ b/bench/libwebp/optimized/cost_enc.ll @@ -28,15 +28,15 @@ define hidden void @VP8CalculateLevelCosts(ptr noundef %0) local_unnamed_addr #0 br label %.preheader56 .preheader56: ; preds = %.preheader57, %52 - %indvars.iv81 = phi i64 [ 0, %.preheader57 ], [ %indvars.iv.next82, %52 ] + %indvars.iv81 = phi i64 [ 0, %.preheader57 ], [ %indvars.iv.next82, %53 ] br label %.preheader54 .preheader54: ; preds = %.preheader56, %44 - %indvars.iv69 = phi i64 [ 0, %.preheader56 ], [ %indvars.iv.next70, %44 ] + %indvars.iv69 = phi i64 [ 0, %.preheader56 ], [ %indvars.iv.next70, %45 ] br label %7 7: ; preds = %.preheader54, %43 - %indvars.iv65 = phi i64 [ 0, %.preheader54 ], [ %indvars.iv.next66, %43 ] + %indvars.iv65 = phi i64 [ 0, %.preheader54 ], [ %indvars.iv.next66, %44 ] %8 = getelementptr inbounds nuw [4 x [8 x [3 x [11 x i8]]]], ptr %4, i64 0, i64 %indvars.iv81, i64 %indvars.iv69, i64 %indvars.iv65 %9 = getelementptr inbounds nuw [4 x [8 x [3 x [68 x i16]]]], ptr %5, i64 0, i64 %indvars.iv81, i64 %indvars.iv69, i64 %indvars.iv65 %.not45 = icmp eq i64 %indvars.iv65, 0 @@ -80,14 +80,15 @@ define hidden void @VP8CalculateLevelCosts(ptr noundef %0) local_unnamed_addr #0 .lr.ph.preheader.i: ; preds = %21 %25 = getelementptr inbounds nuw i8, ptr %23, i64 2 %26 = load i16, ptr %25, align 2, !tbaa !9 - %27 = zext i16 %24 to i32 + %27 = zext i16 %26 to i32 + %28 = zext i16 %24 to i32 br label %.lr.ph.i .lr.ph.i: ; preds = %37, %.lr.ph.preheader.i - %indvars.iv.i = phi i64 [ 2, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %37 ] - %.01118.i = phi i32 [ 0, %.lr.ph.preheader.i ], [ %.1.i, %37 ] - %.01217.i = phi i16 [ %26, %.lr.ph.preheader.i ], [ %38, %37 ] - %.01316.i = phi i32 [ %27, %.lr.ph.preheader.i ], [ %39, %37 ] + %indvars.iv.i = phi i64 [ 2, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %38 ] + %.01118.i = phi i32 [ 0, %.lr.ph.preheader.i ], [ %.1.i, %38 ] + %.01217.i = phi i32 [ %27, %.lr.ph.preheader.i ], [ %38, %38 ] + %.01316.i = phi i32 [ %28, %.lr.ph.preheader.i ], [ %39, %38 ] %28 = and i32 %.01316.i, 1 %.not14.i = icmp eq i32 %28, 0 br i1 %.not14.i, label %37, label %29 @@ -95,7 +96,7 @@ define hidden void @VP8CalculateLevelCosts(ptr noundef %0) local_unnamed_addr #0 29: ; preds = %.lr.ph.i %30 = getelementptr inbounds nuw i8, ptr %8, i64 %indvars.iv.i %31 = load i8, ptr %30, align 1, !tbaa !8 - %32 = trunc i16 %.01217.i to i8 + %32 = trunc i32 %.01217.i to i8 %33 = and i8 %32, 1 %34 = sub nsw i8 0, %33 %.pn.in.i.i = xor i8 %31, %34 @@ -107,15 +108,15 @@ define hidden void @VP8CalculateLevelCosts(ptr noundef %0) local_unnamed_addr #0 br label %37 37: ; preds = %29, %.lr.ph.i - %.1.i = phi i32 [ %36, %29 ], [ %.01118.i, %.lr.ph.i ] - %38 = lshr i16 %.01217.i, 1 + %.1.i = phi i32 [ %36, %30 ], [ %.01118.i, %.lr.ph.i ] + %38 = lshr i32 %.01217.i, 1 %39 = lshr i32 %.01316.i, 1 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %.not.i = icmp samesign ult i32 %.01316.i, 2 br i1 %.not.i, label %VariableLevelCost.exit, label %.lr.ph.i, !llvm.loop !11 VariableLevelCost.exit: ; preds = %37, %21 - %.011.lcssa.i = phi i32 [ 0, %21 ], [ %.1.i, %37 ] + %.011.lcssa.i = phi i32 [ 0, %21 ], [ %.1.i, %38 ] %40 = add nsw i32 %18, %.011.lcssa.i %41 = trunc i32 %40 to i16 %42 = getelementptr inbounds nuw i16, ptr %9, i64 %indvars.iv @@ -135,14 +136,14 @@ VariableLevelCost.exit: ; preds = %37, %21 br i1 %exitcond72.not, label %.preheader, label %.preheader54, !llvm.loop !15 .preheader: ; preds = %44, %51 - %indvars.iv77 = phi i64 [ %indvars.iv.next78, %51 ], [ 0, %44 ] + %indvars.iv77 = phi i64 [ %indvars.iv.next78, %52 ], [ 0, %45 ] %45 = getelementptr inbounds nuw [17 x i8], ptr @VP8EncBands, i64 0, i64 %indvars.iv77 %46 = load i8, ptr %45, align 1, !tbaa !8 %47 = zext i8 %46 to i64 br label %48 48: ; preds = %.preheader, %48 - %indvars.iv73 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next74, %48 ] + %indvars.iv73 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next74, %49 ] %49 = getelementptr inbounds nuw [4 x [8 x [3 x [68 x i16]]]], ptr %5, i64 0, i64 %indvars.iv81, i64 %47, i64 %indvars.iv73 %50 = getelementptr inbounds nuw [4 x [16 x [3 x ptr]]], ptr %6, i64 0, i64 %indvars.iv81, i64 %indvars.iv77, i64 %indvars.iv73 store ptr %49, ptr %50, align 8, !tbaa !16 diff --git a/bench/llama.cpp/optimized/llama-kv-cache.ll b/bench/llama.cpp/optimized/llama-kv-cache.ll index 620794e8c00..1188aef6348 100644 --- a/bench/llama.cpp/optimized/llama-kv-cache.ll +++ b/bench/llama.cpp/optimized/llama-kv-cache.ll @@ -3389,12 +3389,12 @@ define void @_Z26llama_kv_cache_view_updateP19llama_kv_cache_viewRK14llama_kv_ca ._crit_edge136: ; preds = %._crit_edge124 %38 = icmp sgt i32 %.193, -1 - br i1 %38, label %83, label %._crit_edge136.thread + br i1 %38, label %82, label %._crit_edge136.thread 39: ; preds = %.lr.ph135, %._crit_edge124 %indvars.iv149 = phi i64 [ 0, %.lr.ph135 ], [ %indvars.iv.next150, %._crit_edge124 ] %.0133 = phi ptr [ %35, %.lr.ph135 ], [ %77, %._crit_edge124 ] - %.081132 = phi ptr [ %33, %.lr.ph135 ], [ %79, %._crit_edge124 ] + %.081132 = phi ptr [ %33, %.lr.ph135 ], [ %78, %._crit_edge124 ] %.084130 = phi i32 [ -1, %.lr.ph135 ], [ %.286, %._crit_edge124 ] %.088129 = phi i32 [ 0, %.lr.ph135 ], [ %.290, %._crit_edge124 ] %.092128 = phi i32 [ -1, %.lr.ph135 ], [ %.193, %._crit_edge124 ] @@ -3471,57 +3471,60 @@ define void @_Z26llama_kv_cache_view_updateP19llama_kv_cache_viewRK14llama_kv_ca %spec.select109 = add nuw nsw i32 %.095126, %69 %70 = load i32, ptr %37, align 4, !tbaa !168 %71 = icmp slt i32 %.080.lcssa, %70 - br i1 %71, label %.lr.ph123.preheader, label %._crit_edge124 + br i1 %71, label %.lr.ph123.preheader, label %._crit_edge.._crit_edge124_crit_edge + +._crit_edge.._crit_edge124_crit_edge: ; preds = %._crit_edge + %.pre155 = sext i32 %70 to i64 + br label %._crit_edge124 .lr.ph123.preheader: ; preds = %._crit_edge - %72 = zext i32 %.080.lcssa to i64 + %72 = sext i32 %.080.lcssa to i64 br label %.lr.ph123 .lr.ph123: ; preds = %.lr.ph123.preheader, %.lr.ph123 %indvars.iv145 = phi i64 [ %72, %.lr.ph123.preheader ], [ %indvars.iv.next146, %.lr.ph123 ] - %73 = getelementptr inbounds nuw i32, ptr %.081132, i64 %indvars.iv145 + %73 = getelementptr inbounds i32, ptr %.081132, i64 %indvars.iv145 store i32 -1, ptr %73, align 4, !tbaa !115 - %indvars.iv.next146 = add nuw nsw i64 %indvars.iv145, 1 + %indvars.iv.next146 = add nsw i64 %indvars.iv145, 1 %74 = load i32, ptr %37, align 4, !tbaa !168 - %75 = trunc nuw i64 %indvars.iv.next146 to i32 - %76 = icmp sgt i32 %74, %75 + %75 = sext i32 %74 to i64 + %76 = icmp slt i64 %indvars.iv.next146, %75 br i1 %76, label %.lr.ph123, label %._crit_edge124, !llvm.loop !177 -._crit_edge124: ; preds = %.lr.ph123, %._crit_edge - %.lcssa = phi i32 [ %70, %._crit_edge ], [ %74, %.lr.ph123 ] +._crit_edge124: ; preds = %.lr.ph123, %._crit_edge.._crit_edge124_crit_edge + %.lcssa = phi i64 [ %.pre155, %._crit_edge.._crit_edge124_crit_edge ], [ %75, %.lr.ph123 ] %indvars.iv.next150 = add nuw nsw i64 %indvars.iv149, 1 %77 = getelementptr inbounds nuw i8, ptr %.0133, i64 4 - %78 = sext i32 %.lcssa to i64 - %79 = getelementptr inbounds i32, ptr %.081132, i64 %78 - %80 = load i32, ptr %4, align 4, !tbaa !50 - %81 = sext i32 %80 to i64 - %82 = icmp slt i64 %indvars.iv.next150, %81 - br i1 %82, label %39, label %._crit_edge136, !llvm.loop !178 - -83: ; preds = %._crit_edge136 - %84 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %85 = load ptr, ptr %84, align 8, !tbaa !55 - %86 = load ptr, ptr %30, align 8, !tbaa !54 + %78 = getelementptr inbounds i32, ptr %.081132, i64 %.lcssa + %79 = load i32, ptr %4, align 4, !tbaa !50 + %80 = sext i32 %79 to i64 + %81 = icmp slt i64 %indvars.iv.next150, %80 + br i1 %81, label %39, label %._crit_edge136, !llvm.loop !178 + +82: ; preds = %._crit_edge136 + %83 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %84 = load ptr, ptr %83, align 8, !tbaa !55 + %85 = load ptr, ptr %30, align 8, !tbaa !54 + %86 = ptrtoint ptr %84 to i64 %87 = ptrtoint ptr %85 to i64 - %88 = ptrtoint ptr %86 to i64 - %89 = sub i64 %87, %88 - %90 = ashr exact i64 %89, 6 - %91 = zext nneg i32 %.193 to i64 - %92 = sub nsw i64 %90, %91 - %93 = zext i32 %.290 to i64 - %94 = icmp ugt i64 %92, %93 - br i1 %94, label %95, label %._crit_edge136.thread - -95: ; preds = %83 - %96 = trunc i64 %90 to i32 - %97 = sub i32 %96, %.193 + %88 = sub i64 %86, %87 + %89 = ashr exact i64 %88, 6 + %90 = zext nneg i32 %.193 to i64 + %91 = sub nsw i64 %89, %90 + %92 = zext i32 %.290 to i64 + %93 = icmp ugt i64 %91, %92 + br i1 %93, label %94, label %._crit_edge136.thread + +94: ; preds = %82 + %95 = trunc i64 %89 to i32 + %96 = sub i32 %95, %.193 br label %._crit_edge136.thread -._crit_edge136.thread: ; preds = %28, %95, %83, %._crit_edge136 - %.094.lcssa161 = phi i32 [ %44, %95 ], [ %44, %83 ], [ %44, %._crit_edge136 ], [ 0, %28 ] - %.095.lcssa160 = phi i32 [ %spec.select109, %95 ], [ %spec.select109, %83 ], [ %spec.select109, %._crit_edge136 ], [ 0, %28 ] - %.391 = phi i32 [ %97, %95 ], [ %.290, %83 ], [ %.290, %._crit_edge136 ], [ 0, %28 ] - %.387 = phi i32 [ %.193, %95 ], [ %.286, %83 ], [ %.286, %._crit_edge136 ], [ -1, %28 ] +._crit_edge136.thread: ; preds = %28, %94, %82, %._crit_edge136 + %.094.lcssa161 = phi i32 [ %44, %94 ], [ %44, %82 ], [ %44, %._crit_edge136 ], [ 0, %28 ] + %.095.lcssa160 = phi i32 [ %spec.select109, %94 ], [ %spec.select109, %82 ], [ %spec.select109, %._crit_edge136 ], [ 0, %28 ] + %.391 = phi i32 [ %96, %94 ], [ %.290, %82 ], [ %.290, %._crit_edge136 ], [ 0, %28 ] + %.387 = phi i32 [ %.193, %94 ], [ %.286, %82 ], [ %.286, %._crit_edge136 ], [ -1, %28 ] %98 = getelementptr inbounds nuw i8, ptr %0, i64 16 store i32 %.391, ptr %98, align 8, !tbaa !171 %99 = getelementptr inbounds nuw i8, ptr %0, i64 20 diff --git a/bench/llvm/optimized/DataFlowSanitizer.ll b/bench/llvm/optimized/DataFlowSanitizer.ll index 2eb9e6eabd3..d10029181ff 100644 --- a/bench/llvm/optimized/DataFlowSanitizer.ll +++ b/bench/llvm/optimized/DataFlowSanitizer.ll @@ -11448,7 +11448,7 @@ _ZSt4nextIN4llvm21ilist_iterator_w_bitsINS0_12ilist_detail12node_optionsINS0_11I br label %4132 4132: ; preds = %.critedge, %_ZSt4nextIN4llvm21ilist_iterator_w_bitsINS0_12ilist_detail12node_optionsINS0_11InstructionELb0ELb0EvLb1ENS0_10BasicBlockEEELb0ELb0EEEET_S8_NSt15iterator_traitsIS8_E15difference_typeE.exit - %.sroa.13.5 = phi i64 [ %.sroa.13.4, %_ZSt4nextIN4llvm21ilist_iterator_w_bitsINS0_12ilist_detail12node_optionsINS0_11InstructionELb0ELb0EvLb1ENS0_10BasicBlockEEELb0ELb0EEEET_S8_NSt15iterator_traitsIS8_E15difference_typeE.exit ], [ %.sroa.13.9.insert.mask, %.critedge ] + %.sroa.13.5 = phi i64 [ %.sroa.13.4, %_ZSt4nextIN4llvm21ilist_iterator_w_bitsINS0_12ilist_detail12node_optionsINS0_11InstructionELb0ELb0EvLb1ENS0_10BasicBlockEEELb0ELb0EEEET_S8_NSt15iterator_traitsIS8_E15difference_typeE.exit ], [ %.sroa.13.8.insert.mask, %.critedge ] %.sroa.0624.1.in = phi ptr [ %.sroa.0624.0.in, %_ZSt4nextIN4llvm21ilist_iterator_w_bitsINS0_12ilist_detail12node_optionsINS0_11InstructionELb0ELb0EvLb1ENS0_10BasicBlockEEELb0ELb0EEEET_S8_NSt15iterator_traitsIS8_E15difference_typeE.exit ], [ %4135, %.critedge ] %.sroa.0624.1 = load ptr, ptr %.sroa.0624.1.in, align 8, !tbaa !506 %4133 = getelementptr inbounds i8, ptr %.sroa.0624.1, i64 -24 @@ -11460,6 +11460,7 @@ _ZSt4nextIN4llvm21ilist_iterator_w_bitsINS0_12ilist_detail12node_optionsINS0_11I .critedge: ; preds = %4132, %4132 %4135 = getelementptr inbounds nuw i8, ptr %.sroa.0624.1, i64 8 + %.sroa.13.8.insert.mask = and i64 %.sroa.13.5, -65536 br label %4132, !llvm.loop !631 4136: ; preds = %4132 diff --git a/bench/llvm/optimized/OptionParserEmitter.ll b/bench/llvm/optimized/OptionParserEmitter.ll index c884ea57a44..32bf5a6e58c 100644 --- a/bench/llvm/optimized/OptionParserEmitter.ll +++ b/bench/llvm/optimized/OptionParserEmitter.ll @@ -7193,7 +7193,7 @@ _ZN4llvm11raw_ostreamlsENS_9StringRefE.exit212: ; preds = %339, %341, %342 %.270 = phi i32 [ %352, %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit224 ], [ %.0134.lcssa, %.lr.ph72.preheader ] %.013669 = phi ptr [ %385, %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit224 ], [ %.ptr97, %.lr.ph72.preheader ] %351 = load ptr, ptr %.013669, align 8, !tbaa !287 - %352 = add nuw nsw i32 %.270, 1 + %352 = add nsw i32 %.270, 1 %.not155 = icmp eq i32 %.270, 0 %353 = select i1 %.not155, i64 0, i64 3 %354 = load ptr, ptr %86, align 8, !tbaa !83 @@ -7258,10 +7258,11 @@ _ZN4llvm11raw_ostreamlsEPKc.exit216: ; preds = %360, %363, %364 _ZN4llvm11raw_ostreamlsENS_9StringRefE.exit224: ; preds = %379, %381, %382 %385 = getelementptr inbounds nuw i8, ptr %.013669, i64 8 %.not148 = icmp eq ptr %385, %.ptr98 - br i1 %.not148, label %_ZN4llvm11raw_ostreamlsEc.exit, label %.lr.ph72 + br i1 %.not148, label %.loopexit60, label %.lr.ph72 -.loopexit60: ; preds = %346, %._crit_edge67 - %386 = icmp eq i32 %.0134.lcssa, 0 +.loopexit60: ; preds = %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit224, %346, %._crit_edge67 + %.1 = phi i32 [ %.0134.lcssa, %._crit_edge67 ], [ %.0134.lcssa, %346 ], [ %352, %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit224 ] + %386 = icmp eq i32 %.1, 0 br i1 %386, label %387, label %_ZN4llvm11raw_ostreamlsEc.exit 387: ; preds = %.loopexit60 @@ -7280,7 +7281,7 @@ _ZN4llvm11raw_ostreamlsENS_9StringRefE.exit224: ; preds = %379, %381, %382 store i8 48, ptr %388, align 1, !tbaa !69 br label %_ZN4llvm11raw_ostreamlsEc.exit -_ZN4llvm11raw_ostreamlsEc.exit: ; preds = %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit224, %392, %390, %.loopexit60 +_ZN4llvm11raw_ostreamlsEc.exit: ; preds = %392, %390, %.loopexit60 %394 = load ptr, ptr %86, align 8, !tbaa !83 %395 = load ptr, ptr %88, align 8, !tbaa !88 %396 = ptrtoint ptr %394 to i64 @@ -7409,7 +7410,7 @@ _ZN4llvm11raw_ostreamlsENS_9StringRefE.exit241: ; preds = %438, %440, %441 %.214082 = phi i32 [ %451, %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit253 ], [ %.0138.lcssa, %.lr.ph84.preheader ] %.014281 = phi ptr [ %484, %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit253 ], [ %.ptr103, %.lr.ph84.preheader ] %450 = load ptr, ptr %.014281, align 8, !tbaa !287 - %451 = add nuw nsw i32 %.214082, 1 + %451 = add nsw i32 %.214082, 1 %.not153 = icmp eq i32 %.214082, 0 %452 = select i1 %.not153, i64 0, i64 3 %453 = load ptr, ptr %86, align 8, !tbaa !83 @@ -7474,10 +7475,11 @@ _ZN4llvm11raw_ostreamlsEPKc.exit245: ; preds = %459, %462, %463 _ZN4llvm11raw_ostreamlsENS_9StringRefE.exit253: ; preds = %478, %480, %481 %484 = getelementptr inbounds nuw i8, ptr %.014281, i64 8 %.not151 = icmp eq ptr %484, %.ptr104 - br i1 %.not151, label %_ZN4llvm11raw_ostreamlsEc.exit256, label %.lr.ph84 + br i1 %.not151, label %.loopexit, label %.lr.ph84 -.loopexit: ; preds = %445, %._crit_edge78 - %485 = icmp eq i32 %.0138.lcssa, 0 +.loopexit: ; preds = %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit253, %445, %._crit_edge78 + %.1139 = phi i32 [ %.0138.lcssa, %._crit_edge78 ], [ %.0138.lcssa, %445 ], [ %451, %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit253 ] + %485 = icmp eq i32 %.1139, 0 br i1 %485, label %486, label %_ZN4llvm11raw_ostreamlsEc.exit256 486: ; preds = %.loopexit @@ -7496,7 +7498,7 @@ _ZN4llvm11raw_ostreamlsENS_9StringRefE.exit253: ; preds = %478, %480, %481 store i8 48, ptr %487, align 1, !tbaa !69 br label %_ZN4llvm11raw_ostreamlsEc.exit256 -_ZN4llvm11raw_ostreamlsEc.exit256: ; preds = %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit253, %491, %489, %.loopexit +_ZN4llvm11raw_ostreamlsEc.exit256: ; preds = %491, %489, %.loopexit %493 = load ptr, ptr %86, align 8, !tbaa !83 %494 = load ptr, ptr %88, align 8, !tbaa !88 %495 = ptrtoint ptr %493 to i64 diff --git a/bench/lodepng/optimized/lodepng.ll b/bench/lodepng/optimized/lodepng.ll index 27525e1a9a8..a91d301b032 100644 --- a/bench/lodepng/optimized/lodepng.ll +++ b/bench/lodepng/optimized/lodepng.ll @@ -1757,11 +1757,11 @@ _ZL19huffmanDecodeSymbolP16LodePNGBitReaderPK11HuffmanTree.exit.i.i: ; preds = % 319: ; preds = %327, %307 %indvars.iv223.i.i = phi i64 [ %317, %307 ], [ %indvars.iv.next224.i.i, %327 ] %.0137199.i.i = phi i32 [ 0, %307 ], [ %328, %327 ] - %.not160.i.i = icmp samesign ult i64 %indvars.iv223.i.i, %215 + %.not160.i.i = icmp ult i64 %indvars.iv223.i.i, %215 br i1 %.not160.i.i, label %320, label %.loopexit.loopexit.i.i 320: ; preds = %319 - %321 = icmp samesign ult i64 %indvars.iv223.i.i, %214 + %321 = icmp ult i64 %indvars.iv223.i.i, %214 br i1 %321, label %322, label %324 322: ; preds = %320 @@ -1770,7 +1770,7 @@ _ZL19huffmanDecodeSymbolP16LodePNGBitReaderPK11HuffmanTree.exit.i.i: ; preds = % br label %327 324: ; preds = %320 - %325 = sub nuw nsw i64 %indvars.iv223.i.i, %214 + %325 = sub nuw i64 %indvars.iv223.i.i, %214 %326 = getelementptr inbounds nuw i32, ptr %208, i64 %325 store i32 %.0.i115.i, ptr %326, align 4, !tbaa !10 br label %327 @@ -1791,11 +1791,11 @@ _ZL19huffmanDecodeSymbolP16LodePNGBitReaderPK11HuffmanTree.exit.i.i: ; preds = % 334: ; preds = %342, %329 %indvars.iv218.i.i = phi i64 [ %332, %329 ], [ %indvars.iv.next219.i.i, %342 ] %.1138197.i.i = phi i32 [ 0, %329 ], [ %343, %342 ] - %.not159.i.i = icmp samesign ult i64 %indvars.iv218.i.i, %215 + %.not159.i.i = icmp ult i64 %indvars.iv218.i.i, %215 br i1 %.not159.i.i, label %335, label %.loopexit.loopexit202.i.i 335: ; preds = %334 - %336 = icmp samesign ult i64 %indvars.iv218.i.i, %214 + %336 = icmp ult i64 %indvars.iv218.i.i, %214 br i1 %336, label %337, label %339 337: ; preds = %335 @@ -1804,7 +1804,7 @@ _ZL19huffmanDecodeSymbolP16LodePNGBitReaderPK11HuffmanTree.exit.i.i: ; preds = % br label %342 339: ; preds = %335 - %340 = sub nuw nsw i64 %indvars.iv218.i.i, %214 + %340 = sub nuw i64 %indvars.iv218.i.i, %214 %341 = getelementptr inbounds nuw i32, ptr %208, i64 %340 store i32 0, ptr %341, align 4, !tbaa !10 br label %342 @@ -1825,11 +1825,11 @@ _ZL19huffmanDecodeSymbolP16LodePNGBitReaderPK11HuffmanTree.exit.i.i: ; preds = % 349: ; preds = %357, %344 %indvars.iv215.i.i = phi i64 [ %347, %344 ], [ %indvars.iv.next216.i.i, %357 ] %.2139195.i.i = phi i32 [ 0, %344 ], [ %358, %357 ] - %.not158.i.i = icmp samesign ult i64 %indvars.iv215.i.i, %215 + %.not158.i.i = icmp ult i64 %indvars.iv215.i.i, %215 br i1 %.not158.i.i, label %350, label %.loopexit.loopexit205.i.i 350: ; preds = %349 - %351 = icmp samesign ult i64 %indvars.iv215.i.i, %214 + %351 = icmp ult i64 %indvars.iv215.i.i, %214 br i1 %351, label %352, label %354 352: ; preds = %350 @@ -1838,7 +1838,7 @@ _ZL19huffmanDecodeSymbolP16LodePNGBitReaderPK11HuffmanTree.exit.i.i: ; preds = % br label %357 354: ; preds = %350 - %355 = sub nuw nsw i64 %indvars.iv215.i.i, %214 + %355 = sub nuw i64 %indvars.iv215.i.i, %214 %356 = getelementptr inbounds nuw i32, ptr %208, i64 %355 store i32 0, ptr %356, align 4, !tbaa !10 br label %357 diff --git a/bench/meshlab/optimized/shell.ll b/bench/meshlab/optimized/shell.ll index eaa8049f920..377a9bd3b86 100644 --- a/bench/meshlab/optimized/shell.ll +++ b/bench/meshlab/optimized/shell.ll @@ -17950,14 +17950,24 @@ _ZNSt6vectorIbSaIbEEC2EmRKbRKS0_.exit: ; preds = %7, %2 %98 = icmp ugt i64 %97, -9223372036854775808 %storemerge.idx.i.i.i.i.i44 = select i1 %98, i64 -8, i64 0 %storemerge.i.i.i.i.i45 = getelementptr inbounds i8, ptr %96, i64 %storemerge.idx.i.i.i.i.i44 - %storemerge.i.i.i.i.i45.promoted = load i64, ptr %storemerge.i.i.i.i.i45, align 8 %99 = and i64 %94, 63 %100 = shl nuw i64 1, %99 - %101 = or i64 %storemerge.i.i.i.i.i45.promoted, %100 - store i64 %101, ptr %storemerge.i.i.i.i.i45, align 8 - br label %102 + %storemerge.i.i.i.i.i45.promoted = load i64, ptr %storemerge.i.i.i.i.i45, align 8 + br label %101 + +101: ; preds = %.lr.ph147, %101 + %102 = phi i64 [ %storemerge.i.i.i.i.i45.promoted, %.lr.ph147 ], [ %103, %101 ] + %.sroa.087.0145 = phi ptr [ %87, %.lr.ph147 ], [ %104, %101 ] + %103 = or i64 %100, %102 + %104 = getelementptr inbounds nuw i8, ptr %.sroa.087.0145, i64 1 + %.not128 = icmp eq ptr %104, %89 + br i1 %.not128, label %._crit_edge148, label %101, !llvm.loop !293 + +._crit_edge148: ; preds = %101 + store i64 %103, ptr %storemerge.i.i.i.i.i45, align 8 + br label %105 -102: ; preds = %.lr.ph147, %._crit_edge143 +102: ; preds = %._crit_edge148, %._crit_edge143 br i1 %1, label %.preheader, label %104 .preheader: ; preds = %102 @@ -17974,9 +17984,9 @@ _ZNSt6vectorIbSaIbEEC2EmRKbRKS0_.exit: ; preds = %7, %2 br i1 %.not3.i9.i.i, label %_ZNSt13_Bit_iteratorppEv.exit.i.i, label %.loopexit _ZNSt13_Bit_iteratorppEv.exit.i.i: ; preds = %104, %_ZNSt13_Bit_iteratorppEv.exit.i.i - %.012.i.i = phi i64 [ %spec.select.i.i, %_ZNSt13_Bit_iteratorppEv.exit.i.i ], [ 0, %104 ] - %.sroa.5.011.i.i = phi i32 [ %spec.select8.i.i, %_ZNSt13_Bit_iteratorppEv.exit.i.i ], [ 0, %104 ] - %.sroa.03.010.i.i = phi ptr [ %spec.select7.i.i, %_ZNSt13_Bit_iteratorppEv.exit.i.i ], [ %.sroa.0113.0, %104 ] + %.012.i.i = phi i64 [ %spec.select.i.i, %_ZNSt13_Bit_iteratorppEv.exit.i.i ], [ 0, %107 ] + %.sroa.5.011.i.i = phi i32 [ %spec.select8.i.i, %_ZNSt13_Bit_iteratorppEv.exit.i.i ], [ 0, %107 ] + %.sroa.03.010.i.i = phi ptr [ %spec.select7.i.i, %_ZNSt13_Bit_iteratorppEv.exit.i.i ], [ %.sroa.0113.0, %107 ] %107 = zext nneg i32 %.sroa.5.011.i.i to i64 %108 = load i64, ptr %.sroa.03.010.i.i, align 8 %109 = xor i64 %108, -1 @@ -17991,7 +18001,7 @@ _ZNSt13_Bit_iteratorppEv.exit.i.i: ; preds = %104, %_ZNSt13_Bit_i %114 = icmp ne ptr %spec.select7.i.i, %.sroa.22.0 %115 = icmp ne i32 %spec.select8.i.i, %.sroa.28.0 %.not3.i.i.i = or i1 %115, %114 - br i1 %.not3.i.i.i, label %_ZNSt13_Bit_iteratorppEv.exit.i.i, label %_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_.exit.loopexit, !llvm.loop !293 + br i1 %.not3.i.i.i, label %_ZNSt13_Bit_iteratorppEv.exit.i.i, label %_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_.exit.loopexit, !llvm.loop !294 _ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_.exit.loopexit: ; preds = %_ZNSt13_Bit_iteratorppEv.exit.i.i %116 = trunc i64 %spec.select.i.i to i32 @@ -18037,14 +18047,14 @@ _ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RK br label %.critedge .critedge: ; preds = %122, %136, %117 - %141 = phi ptr [ %118, %117 ], [ %.pre, %136 ], [ %118, %122 ] - %.1 = phi i32 [ %.031151, %117 ], [ %140, %136 ], [ %.031151, %122 ] + %141 = phi ptr [ %118, %120 ], [ %.pre, %139 ], [ %118, %125 ] + %.1 = phi i32 [ %.031151, %120 ], [ %140, %139 ], [ %.031151, %125 ] %142 = getelementptr inbounds nuw i8, ptr %.sroa.073.0150, i64 120 %.not129 = icmp eq ptr %142, %141 - br i1 %.not129, label %.loopexit, label %117, !llvm.loop !294 + br i1 %.not129, label %.loopexit, label %117, !llvm.loop !295 .loopexit: ; preds = %.critedge, %104, %_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_.exit.loopexit, %.preheader - %.0 = phi i32 [ 0, %.preheader ], [ 0, %104 ], [ %116, %_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_.exit.loopexit ], [ %.1, %.critedge ] + %.0 = phi i32 [ 0, %.preheader ], [ 0, %107 ], [ %116, %_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_.exit.loopexit ], [ %.1, %.critedge ] %.not.i.i.i66 = icmp eq ptr %.sroa.0113.0, null br i1 %.not.i.i.i66, label %_ZNSt6vectorIbSaIbEED2Ev.exit70, label %143 @@ -18425,3 +18435,4 @@ attributes #30 = { nounwind willreturn memory(read) } !292 = distinct !{!292, !6} !293 = distinct !{!293, !6} !294 = distinct !{!294, !6} +!295 = distinct !{!295, !6} diff --git a/bench/miniaudio/optimized/unity.ll b/bench/miniaudio/optimized/unity.ll index 80afa74a296..b8978f0dd8f 100644 --- a/bench/miniaudio/optimized/unity.ll +++ b/bench/miniaudio/optimized/unity.ll @@ -102927,8 +102927,9 @@ ma_dr_mp3_bs_get_bits.exit335.i: ; preds = %._crit_edge.i324.i, br i1 %956, label %.preheader88.i.i, label %._crit_edge.i.i, !llvm.loop !1984 ._crit_edge.i.i: ; preds = %954 - %957 = and i64 %indvars.iv.next111.i.i, 4294967292 - %958 = getelementptr inbounds nuw i8, ptr %915, i64 %957 + %sext.i.i = shl i64 %indvars.iv.next111.i.i, 32 + %957 = ashr exact i64 %sext.i.i, 32 + %958 = getelementptr inbounds i8, ptr %915, i64 %957 br label %959 959: ; preds = %._crit_edge.i.i, %922 @@ -105779,7 +105780,7 @@ ma_dr_mp3d_DCT_II.exit: ; preds = %189 %265 = getelementptr i8, ptr %241, i64 -244 store float %264, ptr %265, align 4, !tbaa !339 %266 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 4 - %267 = load float, ptr %.0228229.i, align 4, !tbaa !339 + %267 = load float, ptr %.0228229.i, align 16, !tbaa !339 %268 = insertelement <4 x float> poison, float %267, i64 0 %269 = shufflevector <4 x float> %268, <4 x float> poison, <4 x i32> zeroinitializer %270 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 8 @@ -105796,7 +105797,7 @@ ma_dr_mp3d_DCT_II.exit: ; preds = %189 %281 = fmul <4 x float> %276, %273 %282 = fsub <4 x float> %280, %281 %283 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 12 - %284 = load float, ptr %270, align 4, !tbaa !339 + %284 = load float, ptr %270, align 8, !tbaa !339 %285 = insertelement <4 x float> poison, float %284, i64 0 %286 = shufflevector <4 x float> %285, <4 x float> poison, <4 x i32> zeroinitializer %287 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 16 @@ -105816,7 +105817,7 @@ ma_dr_mp3d_DCT_II.exit: ; preds = %189 %301 = fsub <4 x float> %299, %300 %302 = fadd <4 x float> %282, %301 %303 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 20 - %304 = load float, ptr %287, align 4, !tbaa !339 + %304 = load float, ptr %287, align 16, !tbaa !339 %305 = insertelement <4 x float> poison, float %304, i64 0 %306 = shufflevector <4 x float> %305, <4 x float> poison, <4 x i32> zeroinitializer %307 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 24 @@ -105836,7 +105837,7 @@ ma_dr_mp3d_DCT_II.exit: ; preds = %189 %321 = fsub <4 x float> %319, %320 %322 = fadd <4 x float> %302, %321 %323 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 28 - %324 = load float, ptr %307, align 4, !tbaa !339 + %324 = load float, ptr %307, align 8, !tbaa !339 %325 = insertelement <4 x float> poison, float %324, i64 0 %326 = shufflevector <4 x float> %325, <4 x float> poison, <4 x i32> zeroinitializer %327 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 32 @@ -105856,7 +105857,7 @@ ma_dr_mp3d_DCT_II.exit: ; preds = %189 %341 = fsub <4 x float> %339, %340 %342 = fadd <4 x float> %322, %341 %343 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 36 - %344 = load float, ptr %327, align 4, !tbaa !339 + %344 = load float, ptr %327, align 16, !tbaa !339 %345 = insertelement <4 x float> poison, float %344, i64 0 %346 = shufflevector <4 x float> %345, <4 x float> poison, <4 x i32> zeroinitializer %347 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 40 @@ -105876,7 +105877,7 @@ ma_dr_mp3d_DCT_II.exit: ; preds = %189 %361 = fsub <4 x float> %359, %360 %362 = fadd <4 x float> %342, %361 %363 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 44 - %364 = load float, ptr %347, align 4, !tbaa !339 + %364 = load float, ptr %347, align 8, !tbaa !339 %365 = insertelement <4 x float> poison, float %364, i64 0 %366 = shufflevector <4 x float> %365, <4 x float> poison, <4 x i32> zeroinitializer %367 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 48 @@ -105896,7 +105897,7 @@ ma_dr_mp3d_DCT_II.exit: ; preds = %189 %381 = fsub <4 x float> %379, %380 %382 = fadd <4 x float> %362, %381 %383 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 52 - %384 = load float, ptr %367, align 4, !tbaa !339 + %384 = load float, ptr %367, align 16, !tbaa !339 %385 = insertelement <4 x float> poison, float %384, i64 0 %386 = shufflevector <4 x float> %385, <4 x float> poison, <4 x i32> zeroinitializer %387 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 56 @@ -105916,7 +105917,7 @@ ma_dr_mp3d_DCT_II.exit: ; preds = %189 %401 = fsub <4 x float> %399, %400 %402 = fadd <4 x float> %382, %401 %403 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 60 - %404 = load float, ptr %387, align 4, !tbaa !339 + %404 = load float, ptr %387, align 8, !tbaa !339 %405 = insertelement <4 x float> poison, float %404, i64 0 %406 = shufflevector <4 x float> %405, <4 x float> poison, <4 x i32> zeroinitializer %407 = getelementptr inbounds nuw i8, ptr %.0228229.i, i64 64 diff --git a/bench/mitsuba3/optimized/rgb2spec_opt.ll b/bench/mitsuba3/optimized/rgb2spec_opt.ll index 64a3fbc76c8..233abd0b50c 100644 --- a/bench/mitsuba3/optimized/rgb2spec_opt.ll +++ b/bench/mitsuba3/optimized/rgb2spec_opt.ll @@ -286,19 +286,21 @@ define hidden void @_Z8LUPSolvePPdPiS_iS_(ptr noundef readonly captures(none) %0 br i1 %exitcond59.not, label %.preheader.preheader, label %.lr.ph46, !llvm.loop !13 .preheader: ; preds = %.preheader.preheader, %._crit_edge49 + %indvars.iv66 = phi i64 [ %8, %.preheader.preheader ], [ %indvars.iv.next67, %._crit_edge49 ] %indvars.iv60 = phi i64 [ %7, %.preheader.preheader ], [ %indvars.iv.next61, %._crit_edge49 ] + %indvars.iv.next67 = add nsw i64 %indvars.iv66, -1 %indvars.iv.next61 = add nsw i64 %indvars.iv60, -1 - %25 = icmp slt i64 %indvars.iv60, %8 + %25 = icmp slt i64 %indvars.iv66, %7 br i1 %25, label %.lr.ph48, label %.preheader.._crit_edge49_crit_edge .preheader.._crit_edge49_crit_edge: ; preds = %.preheader - %.phi.trans.insert = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next61 + %.phi.trans.insert = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next67 %.pre66 = load double, ptr %.phi.trans.insert, align 8 br label %._crit_edge49 .lr.ph48: ; preds = %.preheader - %26 = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv.next61 - %27 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next61 + %26 = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv.next67 + %27 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next67 %.pre = load double, ptr %27, align 8 br label %28 @@ -306,28 +308,28 @@ define hidden void @_Z8LUPSolvePPdPiS_iS_(ptr noundef readonly captures(none) %0 %29 = phi double [ %.pre, %.lr.ph48 ], [ %36, %28 ] %indvars.iv62 = phi i64 [ %indvars.iv60, %.lr.ph48 ], [ %indvars.iv.next63, %28 ] %30 = load ptr, ptr %26, align 8 - %31 = getelementptr inbounds nuw double, ptr %30, i64 %indvars.iv62 + %31 = getelementptr inbounds double, ptr %30, i64 %indvars.iv62 %32 = load double, ptr %31, align 8 - %33 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv62 + %33 = getelementptr inbounds double, ptr %4, i64 %indvars.iv62 %34 = load double, ptr %33, align 8 %35 = fmul contract double %32, %34 %36 = fsub contract double %29, %35 store double %36, ptr %27, align 8 - %indvars.iv.next63 = add nuw nsw i64 %indvars.iv62, 1 - %37 = trunc nuw i64 %indvars.iv.next63 to i32 - %38 = icmp sgt i32 %3, %37 - br i1 %38, label %28, label %._crit_edge49, !llvm.loop !14 + %indvars.iv.next63 = add nsw i64 %indvars.iv62, 1 + %37 = trunc i64 %indvars.iv.next63 to i32 + %38 = icmp eq i32 %3, %37 + br i1 %38, label %._crit_edge49, label %28, !llvm.loop !14 ._crit_edge49: ; preds = %28, %.preheader.._crit_edge49_crit_edge %39 = phi double [ %.pre66, %.preheader.._crit_edge49_crit_edge ], [ %36, %28 ] - %40 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next61 - %41 = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv.next61 + %40 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next67 + %41 = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv.next67 %42 = load ptr, ptr %41, align 8 - %43 = getelementptr inbounds nuw double, ptr %42, i64 %indvars.iv.next61 + %43 = getelementptr inbounds nuw double, ptr %42, i64 %indvars.iv.next67 %44 = load double, ptr %43, align 8 %45 = fdiv contract double %39, %44 store double %45, ptr %40, align 8 - %46 = icmp samesign ugt i64 %indvars.iv60, 1 + %46 = icmp samesign ugt i64 %indvars.iv66, 1 br i1 %46, label %.preheader, label %._crit_edge53, !llvm.loop !15 ._crit_edge53: ; preds = %._crit_edge49, %5 @@ -1231,16 +1233,17 @@ _Z13eval_residualPKdS0_Pd.exit: ; preds = %45 144: ; preds = %144, %.lr.ph48.i %145 = phi double [ %.pre.i, %.lr.ph48.i ], [ %151, %144 ] %indvars.iv62.i = phi i64 [ %indvars.iv60.i, %.lr.ph48.i ], [ %indvars.iv.next63.i, %144 ] - %146 = getelementptr inbounds nuw double, ptr %143, i64 %indvars.iv62.i + %146 = getelementptr inbounds double, ptr %143, i64 %indvars.iv62.i %147 = load double, ptr %146, align 8 - %148 = getelementptr inbounds nuw double, ptr %11, i64 %indvars.iv62.i + %148 = getelementptr inbounds double, ptr %11, i64 %indvars.iv62.i %149 = load double, ptr %148, align 8 %150 = fmul contract double %147, %149 %151 = fsub contract double %145, %150 store double %151, ptr %142, align 8 %indvars.iv.next63.i = add nuw nsw i64 %indvars.iv62.i, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next63.i, 3 - br i1 %exitcond.not, label %._crit_edge49.i, label %144, !llvm.loop !14 + %152 = and i64 %indvars.iv.next63.i, 4294967295 + %exitcond65.not.i = icmp eq i64 %152, 3 + br i1 %exitcond65.not.i, label %._crit_edge49.i, label %144, !llvm.loop !14 ._crit_edge49.i: ; preds = %144, %.preheader.._crit_edge49_crit_edge.i %152 = phi ptr [ %.pre, %.preheader.._crit_edge49_crit_edge.i ], [ %143, %144 ] @@ -1286,7 +1289,7 @@ _Z8LUPSolvePPdPiS_iS_.exit: ; preds = %._crit_edge49.i, %_ br label %178 178: ; preds = %.preheader, %178 - %indvars.iv61 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next62, %178 ] + %indvars.iv61 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next62, %179 ] %179 = getelementptr inbounds nuw double, ptr %1, i64 %indvars.iv61 %180 = load double, ptr %179, align 8 %181 = fmul contract double %177, %180 @@ -1881,7 +1884,7 @@ define internal void @main.omp_outlined(ptr noalias noundef readonly captures(no .lr.ph: ; preds = %.lr.ph.preheader, %65 %indvars.iv = phi i64 [ %57, %.lr.ph.preheader ], [ %indvars.iv.next, %65 ] %58 = load ptr, ptr %3, align 8, !llvm.access.group !31 - %59 = getelementptr inbounds nuw float, ptr %58, i64 %indvars.iv + %59 = getelementptr inbounds float, ptr %58, i64 %indvars.iv %60 = load float, ptr %59, align 4, !llvm.access.group !31 %61 = fpext float %60 to double store double %61, ptr %40, align 8, !llvm.access.group !31 @@ -1931,7 +1934,7 @@ define internal void @main.omp_outlined(ptr noalias noundef readonly captures(no %99 = getelementptr float, ptr %98, i64 %91 %100 = getelementptr i8, ptr %99, i64 8 store float %97, ptr %100, align 4, !llvm.access.group !31 - %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %indvars.iv.next = add nsw i64 %indvars.iv, 1 %101 = load i32, ptr %2, align 4, !llvm.access.group !31 %102 = sext i32 %101 to i64 %103 = icmp slt i64 %indvars.iv.next, %102 diff --git a/bench/nuttx/optimized/fs_files.ll b/bench/nuttx/optimized/fs_files.ll index eeadf4ea8c0..f49a0462e16 100644 --- a/bench/nuttx/optimized/fs_files.ll +++ b/bench/nuttx/optimized/fs_files.ll @@ -73,10 +73,10 @@ define ptr @files_fget(ptr noundef readonly captures(none) %0, i32 noundef %1) l %4 = sdiv i32 %1, 8 %5 = srem i32 %1, 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %3) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %3) #11, !srcloc !9 %6 = load i64, ptr %3, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 %8 = load ptr, ptr %7, align 8 %9 = sext i32 %4 to i64 @@ -87,7 +87,7 @@ define ptr @files_fget(ptr noundef readonly captures(none) %0, i32 noundef %1) l br i1 %.not.i.i, label %files_fget_by_index.exit, label %13 13: ; preds = %2 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget_by_index.exit files_fget_by_index.exit: ; preds = %2, %13 @@ -130,10 +130,10 @@ define i32 @file_allocate_from_tcb(ptr noundef %0, ptr noundef %1, i32 noundef % 26: ; preds = %37, %25 %indvars.iv = phi i64 [ %indvars.iv.next, %37 ], [ %.0, %25 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %9) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %9) #11, !srcloc !9 %27 = load i64, ptr %9, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %28 = load ptr, ptr %22, align 8 %29 = getelementptr inbounds ptr, ptr %28, i64 %indvars.iv56 %30 = load ptr, ptr %29, align 8 @@ -142,7 +142,7 @@ define i32 @file_allocate_from_tcb(ptr noundef %0, ptr noundef %1, i32 noundef % br i1 %.not.i.i, label %files_fget_by_index.exit, label %32 32: ; preds = %26 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget_by_index.exit files_fget_by_index.exit: ; preds = %26, %32 @@ -173,10 +173,10 @@ files_fget_by_index.exit: ; preds = %26, %32 47: ; preds = %42 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %8) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %8) #11, !srcloc !9 %48 = load i64, ptr %8, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %49 = load ptr, ptr %22, align 8 %50 = and i64 %indvars.iv.next57, 4294967295 %51 = getelementptr inbounds nuw ptr, ptr %49, i64 %50 @@ -186,7 +186,7 @@ files_fget_by_index.exit: ; preds = %26, %32 br i1 %.not.i.i44, label %files_fget_by_index.exit45, label %54 54: ; preds = %47 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget_by_index.exit45 files_fget_by_index.exit45.loopexit: ; preds = %files_fget_by_index.exit @@ -244,7 +244,7 @@ define internal fastcc range(i32 -24, 1) i32 @files_extend(ptr noundef captures( br i1 %13, label %48, label %.preheader60 .preheader60: ; preds = %10, %26 - %indvars.iv70.in = phi i32 [ %indvars.iv70, %26 ], [ %8, %10 ] + %indvars.iv70.in = phi i32 [ %indvars.iv.next71, %26 ], [ %8, %10 ] %indvars.iv = phi i64 [ %indvars.iv.next, %26 ], [ %6, %10 ] %14 = tail call noalias dereferenceable_or_null(192) ptr @zalloc(i64 noundef 192) #12 %15 = getelementptr inbounds nuw ptr, ptr %12, i64 %indvars.iv @@ -279,21 +279,21 @@ define internal fastcc range(i32 -24, 1) i32 @files_extend(ptr noundef captures( br label %48 26: ; preds = %.preheader60 - %indvars.iv70 = add i32 %indvars.iv70.in, 1 %indvars.iv.next = add nuw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %1 + %indvars.iv.next71 = add nuw i32 %indvars.iv70, 1 br i1 %exitcond.not, label %27, label %.preheader60, !llvm.loop !15 27: ; preds = %26 %28 = trunc nuw nsw i64 %indvars.iv to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %3) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %3) #11, !srcloc !9 %29 = load i64, ptr %3, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %30 = load i8, ptr %4, align 1 %31 = zext i8 %30 to i64 - %.not52 = icmp samesign ugt i64 %1, %31 + %.not52 = icmp ugt i64 %1, %31 br i1 %.not52, label %38, label %32 32: ; preds = %27 @@ -302,7 +302,7 @@ define internal fastcc range(i32 -24, 1) i32 @files_extend(ptr noundef captures( br i1 %.not.i, label %up_irq_restore.exit, label %34 34: ; preds = %32 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %up_irq_restore.exit up_irq_restore.exit: ; preds = %32, %34 @@ -311,6 +311,7 @@ up_irq_restore.exit: ; preds = %32, %34 .lr.ph: ; preds = %up_irq_restore.exit %35 = getelementptr inbounds nuw ptr, ptr %12, i64 %1 + %smax = call i32 @llvm.smax.i32(i32 %indvars.iv70, i32 %8) %.pre = load ptr, ptr %35, align 8 br label %36 @@ -318,7 +319,7 @@ up_irq_restore.exit: ; preds = %32, %34 %.063 = phi i32 [ %8, %.lr.ph ], [ %37, %36 ] call void @free(ptr noundef %.pre) %37 = add nuw i32 %.063, 1 - %exitcond73.not = icmp eq i32 %.063, %indvars.iv70.in + %exitcond73.not = icmp eq i32 %.063, %smax br i1 %exitcond73.not, label %._crit_edge, label %36, !llvm.loop !16 ._crit_edge: ; preds = %36, %up_irq_restore.exit @@ -345,7 +346,7 @@ up_irq_restore.exit: ; preds = %32, %34 br i1 %.not.i58, label %up_irq_restore.exit59, label %46 46: ; preds = %43 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %up_irq_restore.exit59 up_irq_restore.exit59: ; preds = %43, %46 @@ -397,10 +398,10 @@ define range(i32 -2147483648, 1) i32 @files_duplist(ptr noundef readonly capture 11: ; preds = %37, %.preheader.us.us %indvars.iv63 = phi i64 [ %indvars.iv.next64, %37 ], [ 0, %.preheader.us.us ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6) #11, !srcloc !9 %12 = load i64, ptr %6, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %13 = load ptr, ptr %9, align 8 %14 = getelementptr inbounds nuw ptr, ptr %13, i64 %indvars.iv67 %15 = load ptr, ptr %14, align 8 @@ -409,7 +410,7 @@ define range(i32 -2147483648, 1) i32 @files_duplist(ptr noundef readonly capture br i1 %.not.i.i.us.us.us.us, label %files_fget_by_index.exit.us.us.us.us, label %17 17: ; preds = %11 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget_by_index.exit.us.us.us.us files_fget_by_index.exit.us.us.us.us: ; preds = %17, %11 @@ -432,10 +433,10 @@ files_fget_by_index.exit.us.us.us.us: ; preds = %17, %11 27: ; preds = %.thread36.us.us.us.us call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %5) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %5) #11, !srcloc !9 %28 = load i64, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %29 = load ptr, ptr %10, align 8 %30 = getelementptr inbounds nuw ptr, ptr %29, i64 %indvars.iv67 %31 = load ptr, ptr %30, align 8 @@ -444,7 +445,7 @@ files_fget_by_index.exit.us.us.us.us: ; preds = %17, %11 br i1 %.not.i.i33.us.us.us.us, label %files_fget_by_index.exit34.us.us.us.us, label %33 33: ; preds = %27 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget_by_index.exit34.us.us.us.us files_fget_by_index.exit34.us.us.us.us: ; preds = %33, %27 @@ -474,10 +475,10 @@ files_fget_by_index.exit34.us.us.us.us: ; preds = %33, %27 %indvars.iv56 = phi i64 [ %indvars.iv.next57, %72 ], [ 0, %.preheader.us ] %43 = add nuw nsw i64 %indvars.iv56, %41 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6) #11, !srcloc !9 %44 = load i64, ptr %6, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %45 = load ptr, ptr %9, align 8 %46 = getelementptr inbounds nuw ptr, ptr %45, i64 %indvars.iv60 %47 = load ptr, ptr %46, align 8 @@ -486,7 +487,7 @@ files_fget_by_index.exit34.us.us.us.us: ; preds = %33, %27 br i1 %.not.i.i.us.us, label %files_fget_by_index.exit.us.us, label %49 49: ; preds = %42 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget_by_index.exit.us.us files_fget_by_index.exit.us.us: ; preds = %49, %42 @@ -511,10 +512,10 @@ files_fget_by_index.exit.us.us: ; preds = %49, %42 62: ; preds = %.thread36.us.us call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %5) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %5) #11, !srcloc !9 %63 = load i64, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %64 = load ptr, ptr %10, align 8 %65 = getelementptr inbounds nuw ptr, ptr %64, i64 %indvars.iv60 %66 = load ptr, ptr %65, align 8 @@ -523,7 +524,7 @@ files_fget_by_index.exit.us.us: ; preds = %49, %42 br i1 %.not.i.i33.us.us, label %files_fget_by_index.exit34.us.us, label %68 68: ; preds = %62 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget_by_index.exit34.us.us files_fget_by_index.exit34.us.us: ; preds = %68, %62 @@ -553,10 +554,10 @@ files_fget_by_index.exit34.us.us: ; preds = %68, %62 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %104 ] %78 = add nuw nsw i64 %indvars.iv, %76 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6) #11, !srcloc !9 %79 = load i64, ptr %6, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %80 = load ptr, ptr %9, align 8 %81 = getelementptr inbounds nuw ptr, ptr %80, i64 %indvars.iv53 %82 = load ptr, ptr %81, align 8 @@ -565,7 +566,7 @@ files_fget_by_index.exit34.us.us: ; preds = %68, %62 br i1 %.not.i.i, label %files_fget_by_index.exit, label %84 84: ; preds = %77 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget_by_index.exit files_fget_by_index.exit: ; preds = %77, %84 @@ -590,10 +591,10 @@ files_fget_by_index.exit: ; preds = %77, %84 94: ; preds = %.thread36 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %5) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %5) #11, !srcloc !9 %95 = load i64, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %96 = load ptr, ptr %10, align 8 %97 = getelementptr inbounds nuw ptr, ptr %96, i64 %indvars.iv53 %98 = load ptr, ptr %97, align 8 @@ -602,7 +603,7 @@ files_fget_by_index.exit: ; preds = %77, %84 br i1 %.not.i.i33, label %files_fget_by_index.exit34, label %100 100: ; preds = %94 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget_by_index.exit34 files_fget_by_index.exit34: ; preds = %94, %100 @@ -654,10 +655,10 @@ define range(i32 -11, 1) i32 @fs_getfilep(i32 noundef %0, ptr noundef writeonly 13: ; preds = %8 %14 = lshr i32 %0, 3 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %3) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %3) #11, !srcloc !9 %15 = load i64, ptr %3, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %16 = getelementptr inbounds nuw i8, ptr %4, i64 8 %17 = load ptr, ptr %16, align 8 %18 = zext nneg i32 %14 to i64 @@ -668,7 +669,7 @@ define range(i32 -11, 1) i32 @fs_getfilep(i32 noundef %0, ptr noundef writeonly br i1 %.not.i.i.i, label %files_fget.exit, label %22 22: ; preds = %13 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget.exit files_fget.exit: ; preds = %13, %22 @@ -734,10 +735,10 @@ define internal fastcc i32 @nx_dup3_from_tcb(ptr noundef %0, i32 noundef %1, i32 ._crit_edge: ; preds = %19, %20 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6) #11, !srcloc !9 %25 = load i64, ptr %6, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %26 = getelementptr inbounds nuw i8, ptr %10, i64 8 %27 = load ptr, ptr %26, align 8 %28 = zext nneg i32 %.pre to i64 @@ -748,7 +749,7 @@ define internal fastcc i32 @nx_dup3_from_tcb(ptr noundef %0, i32 noundef %1, i32 br i1 %.not.i.i.i, label %files_fget.exit, label %32 32: ; preds = %._crit_edge - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget.exit files_fget.exit: ; preds = %._crit_edge, %32 @@ -759,10 +760,10 @@ files_fget.exit: ; preds = %._crit_edge, %32 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %35, i8 0, i64 24, i1 false) %36 = lshr i32 %1, 3 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %5) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %5) #11, !srcloc !9 %37 = load i64, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %38 = load ptr, ptr %26, align 8 %39 = zext nneg i32 %36 to i64 %40 = getelementptr inbounds nuw ptr, ptr %38, i64 %39 @@ -772,7 +773,7 @@ files_fget.exit: ; preds = %._crit_edge, %32 br i1 %.not.i.i.i31, label %files_fget.exit32, label %43 43: ; preds = %files_fget.exit - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget.exit32 files_fget.exit32: ; preds = %files_fget.exit, %43 @@ -854,10 +855,10 @@ define i32 @nx_close_from_tcb(ptr noundef %0, i32 noundef %1) local_unnamed_addr 12: ; preds = %7 %13 = lshr i32 %1, 3 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %3) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %3) #11, !srcloc !9 %14 = load i64, ptr %3, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %15 = getelementptr inbounds nuw i8, ptr %5, i64 8 %16 = load ptr, ptr %15, align 8 %17 = zext nneg i32 %13 to i64 @@ -868,7 +869,7 @@ define i32 @nx_close_from_tcb(ptr noundef %0, i32 noundef %1) local_unnamed_addr br i1 %.not.i.i.i, label %files_fget.exit, label %21 21: ; preds = %12 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget.exit files_fget.exit: ; preds = %12, %21 @@ -918,10 +919,10 @@ define i32 @nx_close(i32 noundef %0) local_unnamed_addr #1 { 12: ; preds = %7 %13 = lshr i32 %0, 3 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %2) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %2) #11, !srcloc !9 %14 = load i64, ptr %2, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %15 = getelementptr inbounds nuw i8, ptr %5, i64 8 %16 = load ptr, ptr %15, align 8 %17 = zext nneg i32 %13 to i64 @@ -932,7 +933,7 @@ define i32 @nx_close(i32 noundef %0) local_unnamed_addr #1 { br i1 %.not.i.i.i.i, label %files_fget.exit.i, label %21 21: ; preds = %12 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget.exit.i files_fget.exit.i: ; preds = %21, %12 @@ -977,10 +978,10 @@ define range(i32 -1, -2147483648) i32 @close(i32 noundef %0) local_unnamed_addr 12: ; preds = %7 %13 = lshr i32 %0, 3 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %2) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %2) #11, !srcloc !9 %14 = load i64, ptr %2, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %15 = getelementptr inbounds nuw i8, ptr %5, i64 8 %16 = load ptr, ptr %15, align 8 %17 = zext nneg i32 %13 to i64 @@ -991,7 +992,7 @@ define range(i32 -1, -2147483648) i32 @close(i32 noundef %0) local_unnamed_addr br i1 %.not.i.i.i.i.i, label %files_fget.exit.i.i, label %21 21: ; preds = %12 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget.exit.i.i files_fget.exit.i.i: ; preds = %21, %12 @@ -1056,10 +1057,10 @@ define internal void @task_fssync(ptr noundef readonly captures(none) %0, ptr re 9: ; preds = %.preheader, %21 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %21 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) - call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %3) #10, !srcloc !9 + call void asm sideeffect "\09pushfq\0A\09popq $0\0A", "=*rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %3) #11, !srcloc !9 %10 = load i64, ptr %3, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) - call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !10 + call void asm sideeffect "cli", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !10 %11 = load ptr, ptr %8, align 8 %12 = getelementptr inbounds nuw ptr, ptr %11, i64 %indvars.iv15 %13 = load ptr, ptr %12, align 8 @@ -1068,7 +1069,7 @@ define internal void @task_fssync(ptr noundef readonly captures(none) %0, ptr re br i1 %.not.i.i, label %files_fget_by_index.exit, label %15 15: ; preds = %9 - call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !11 + call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 br label %files_fget_by_index.exit files_fget_by_index.exit: ; preds = %9, %15 @@ -1114,6 +1115,9 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #9 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #9 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smax.i32(i32, i32) #10 + attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+rdrnd,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+rdrnd,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+rdrnd,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -1124,9 +1128,10 @@ attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #7 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+rdrnd,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #8 = { allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+rdrnd,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #9 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #10 = { nounwind } -attributes #11 = { allocsize(0) } -attributes #12 = { nounwind allocsize(0) } +attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #11 = { nounwind } +attributes #12 = { allocsize(0) } +attributes #13 = { nounwind allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4, !5} diff --git a/bench/oiio/optimized/imagebufalgo.ll b/bench/oiio/optimized/imagebufalgo.ll index 0c289a2fb7b..2c108cb467d 100644 --- a/bench/oiio/optimized/imagebufalgo.ll +++ b/bench/oiio/optimized/imagebufalgo.ll @@ -47280,6 +47280,7 @@ define linkonce_odr hidden void @_ZN7kissfftIfN13kissfft_utils6traitsIfEEE15kf_b .preheader52.lr.ph.split.us: ; preds = %.preheader52.lr.ph %.not = icmp eq i32 %4, 1 %14 = zext nneg i32 %3 to i64 + %15 = zext nneg i32 %3 to i64 %wide.trip.count99 = zext nneg i32 %4 to i64 br i1 %.not, label %.preheader52.us.us75, label %.preheader52.us.us.preheader @@ -47311,7 +47312,7 @@ define linkonce_odr hidden void @_ZN7kissfftIfN13kissfft_utils6traitsIfEEE15kf_b %20 = getelementptr inbounds nuw %"class.std::complex", ptr %1, i64 %indvars.iv124 %21 = load i64, ptr %19, align 4, !tbaa !96 store i64 %21, ptr %20, align 4, !tbaa !96 - %22 = trunc nuw i64 %indvars.iv124 to i32 + %22 = trunc nsw i64 %indvars.iv124 to i32 %23 = mul i32 %22, %13 %24 = getelementptr inbounds nuw i8, ptr %20, i64 4 %25 = trunc i64 %21 to i32 @@ -47347,25 +47348,25 @@ define linkonce_odr hidden void @_ZN7kissfftIfN13kissfft_utils6traitsIfEEE15kf_b %47 = fsub float %43, %44 %48 = fadd float %46, %45 %49 = fcmp uno float %47, 0.000000e+00 - br i1 %49, label %50, label %_ZN7kissfftIfN13kissfft_utils6traitsIfEEE5C_MULERSt7complexIfERKS5_S8_.exit.us.us.us, !prof !897 + br i1 %49, label %51, label %_ZN7kissfftIfN13kissfft_utils6traitsIfEEE5C_MULERSt7complexIfERKS5_S8_.exit.us.us.us, !prof !897 -50: ; preds = %30 - %51 = fcmp uno float %48, 0.000000e+00 - br i1 %51, label %52, label %_ZN7kissfftIfN13kissfft_utils6traitsIfEEE5C_MULERSt7complexIfERKS5_S8_.exit.us.us.us, !prof !897 - -52: ; preds = %50 - %53 = tail call noundef <2 x float> @__mulsc3(float noundef %.sroa.0.0.vec.extract.i.i.us.us.us, float noundef %.sroa.0.4.vec.extract.i.i.us.us.us, float noundef %40, float noundef %42) #29 - %.sroa.0.0.vec.extract.i.i.i.us.us.us = extractelement <2 x float> %53, i64 0 - %.sroa.0.4.vec.extract.i.i.i.us.us.us = extractelement <2 x float> %53, i64 1 - %.pre = load float, ptr %20, align 4 - %.pre131 = load float, ptr %24, align 4 +52: ; preds = %30 + %52 = fcmp uno float %49, 0.000000e+00 + br i1 %52, label %53, label %_ZN7kissfftIfN13kissfft_utils6traitsIfEEE5C_MULERSt7complexIfERKS5_S8_.exit.us.us.us, !prof !897 + +53:; preds = %52 + %54 = tail call noundef <2 x float> @__mulsc3(float noundef %.sroa.0.0.vec.extract.i.i.us.us.us, float noundef %.sroa.0.4.vec.extract.i.i.us.us.us, float noundef %41, float noundef %43) #29 + %.sroa.0.0.vec.extract.i.i.i.us.us.us = extractelement <2 x float> %54, i64 0 + %.sroa.0.4.vec.extract.i.i.i.us.us.us = extractelement <2 x float> %54, i64 1 + %.pre = load float, ptr %21, align 4 + %.pre131 = load float, ptr %25, align 4 br label %_ZN7kissfftIfN13kissfft_utils6traitsIfEEE5C_MULERSt7complexIfERKS5_S8_.exit.us.us.us -_ZN7kissfftIfN13kissfft_utils6traitsIfEEE5C_MULERSt7complexIfERKS5_S8_.exit.us.us.us: ; preds = %52, %50, %30 - %54 = phi float [ %31, %30 ], [ %31, %50 ], [ %.pre131, %52 ] - %55 = phi float [ %32, %30 ], [ %32, %50 ], [ %.pre, %52 ] - %56 = phi float [ %47, %30 ], [ %47, %50 ], [ %.sroa.0.0.vec.extract.i.i.i.us.us.us, %52 ] - %57 = phi float [ %48, %30 ], [ %48, %50 ], [ %.sroa.0.4.vec.extract.i.i.i.us.us.us, %52 ] +_ZN7kissfftIfN13kissfft_utils6traitsIfEEE5C_MULERSt7complexIfERKS5_S8_.exit.us.us.us: ; preds = %53, %51, %30 + %54 = phi float [ %31, %31 ], [ %31, %51 ], [ %.pre131, %53 ] + %55 = phi float [ %32, %31 ], [ %32, %51 ], [ %.pre, %53 ] + %56 = phi float [ %47, %31 ], [ %47, %51 ], [ %.sroa.0.0.vec.extract.i.i.i.us.us.us, %53 ] + %57 = phi float [ %48, %31 ], [ %48, %51 ], [ %.sroa.0.4.vec.extract.i.i.i.us.us.us, %53 ] %58 = fadd float %56, %55 %59 = fadd float %57, %54 store float %58, ptr %20, align 4 @@ -47375,7 +47376,7 @@ _ZN7kissfftIfN13kissfft_utils6traitsIfEEE5C_MULERSt7complexIfERKS5_S8_.exit.us.u br i1 %exitcond123.not, label %._crit_edge.us.us.us, label %30, !llvm.loop !903 ._crit_edge.us.us.us: ; preds = %_ZN7kissfftIfN13kissfft_utils6traitsIfEEE5C_MULERSt7complexIfERKS5_S8_.exit.us.us.us - %indvars.iv.next125 = add nuw nsw i64 %indvars.iv124, %14 + %indvars.iv.next125 = add nuw nsw i64 %indvars.iv124, %15 %60 = add nuw nsw i32 %.14358.us.us.us, 1 %exitcond127.not = icmp eq i32 %60, %4 br i1 %exitcond127.not, label %._crit_edge61.split.us.us.us, label %.lr.ph57.us.us.us, !llvm.loop !904 @@ -47396,7 +47397,7 @@ _ZN7kissfftIfN13kissfft_utils6traitsIfEEE5C_MULERSt7complexIfERKS5_S8_.exit.us.u %66 = load i64, ptr %64, align 4, !tbaa !96 store i64 %66, ptr %65, align 4, !tbaa !96 %indvars.iv.next91 = add nuw nsw i64 %indvars.iv90, 1 - %exitcond107.not = icmp eq i64 %indvars.iv.next91, %14 + %exitcond107.not = icmp eq i64 %indvars.iv.next91, %15 br i1 %exitcond107.not, label %._crit_edge, label %.preheader52.us.us75, !llvm.loop !905 ._crit_edge: ; preds = %._crit_edge61.split.us.us.us, %.preheader52.us.us75, %.preheader52.lr.ph, %5 diff --git a/bench/open3d/optimized/ColoredICP.ll b/bench/open3d/optimized/ColoredICP.ll index 9d3cc30ecdd..55c826bcdc7 100644 --- a/bench/open3d/optimized/ColoredICP.ll +++ b/bench/open3d/optimized/ColoredICP.ll @@ -5017,11 +5017,11 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS .lr.ph456: ; preds = %.preheader407 %174 = mul nsw i64 %.1207475, %.sroa.33.0.copyload - %175 = add nuw nsw i64 %.1207475, 1 + %175 = add nsw i64 %.1207475, 1 %176 = mul nsw i64 %175, %.sroa.33.0.copyload - %177 = add nuw nsw i64 %.1207475, 2 + %177 = add nsw i64 %.1207475, 2 %178 = mul nsw i64 %177, %.sroa.33.0.copyload - %179 = add nuw nsw i64 %.1207475, 3 + %179 = add nsw i64 %.1207475, 3 %180 = mul nsw i64 %179, %.sroa.33.0.copyload br label %183 @@ -5087,18 +5087,18 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS br i1 %213, label %.lr.ph469, label %._crit_edge457.._crit_edge470_crit_edge ._crit_edge457.._crit_edge470_crit_edge: ; preds = %._crit_edge457 - %.pre565 = add nuw nsw i64 %.1207475, 1 - %.pre567 = add nuw nsw i64 %.1207475, 2 - %.pre569 = add nuw nsw i64 %.1207475, 3 + %.pre565 = add nsw i64 %.1207475, 1 + %.pre567 = add nsw i64 %.1207475, 2 + %.pre569 = add nsw i64 %.1207475, 3 br label %._crit_edge470 .lr.ph469: ; preds = %._crit_edge457 %214 = mul nsw i64 %.1207475, %.sroa.33.0.copyload - %215 = add nuw nsw i64 %.1207475, 1 + %215 = add nsw i64 %.1207475, 1 %216 = mul nsw i64 %215, %.sroa.33.0.copyload - %217 = add nuw nsw i64 %.1207475, 2 + %217 = add nsw i64 %.1207475, 2 %218 = mul nsw i64 %217, %.sroa.33.0.copyload - %219 = add nuw nsw i64 %.1207475, 3 + %219 = add nsw i64 %.1207475, 3 %220 = mul nsw i64 %219, %.sroa.33.0.copyload br label %221 @@ -5159,7 +5159,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS %256 = load double, ptr %255, align 8, !tbaa !35 %257 = tail call double @llvm.fmuladd.f64(double %6, double %.0214.lcssa, double %256) store double %257, ptr %255, align 8, !tbaa !35 - %258 = add nuw nsw i64 %.1207475, 4 + %258 = add nsw i64 %.1207475, 4 %259 = icmp slt i64 %258, %11 br i1 %259, label %.preheader407, label %.preheader406, !llvm.loop !253 @@ -5169,7 +5169,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS .lr.ph481: ; preds = %.preheader405 %260 = mul nsw i64 %.2494, %.sroa.33.0.copyload - %261 = add nuw nsw i64 %.2494, 1 + %261 = add nsw i64 %.2494, 1 %262 = mul nsw i64 %261, %.sroa.33.0.copyload br label %265 @@ -5217,12 +5217,12 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS br i1 %283, label %.lr.ph490, label %._crit_edge482.._crit_edge491_crit_edge ._crit_edge482.._crit_edge491_crit_edge: ; preds = %._crit_edge482 - %.pre571 = add nuw nsw i64 %.2494, 1 + %.pre571 = add nsw i64 %.2494, 1 br label %._crit_edge491 .lr.ph490: ; preds = %._crit_edge482 %284 = mul nsw i64 %.2494, %.sroa.33.0.copyload - %285 = add nuw nsw i64 %.2494, 1 + %285 = add nsw i64 %.2494, 1 %286 = mul nsw i64 %285, %.sroa.33.0.copyload br label %287 @@ -5259,7 +5259,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS %306 = load double, ptr %305, align 8, !tbaa !35 %307 = tail call double @llvm.fmuladd.f64(double %6, double %.0210.lcssa, double %306) store double %307, ptr %305, align 8, !tbaa !35 - %308 = add nuw nsw i64 %.2494, 2 + %308 = add nsw i64 %.2494, 2 %309 = icmp slt i64 %308, %12 br i1 %309, label %.preheader405, label %.preheader404, !llvm.loop !256 @@ -5320,7 +5320,7 @@ define linkonce_odr void @_ZN5Eigen8internal29general_matrix_vector_productIldNS %332 = load double, ptr %331, align 8, !tbaa !35 %333 = tail call double @llvm.fmuladd.f64(double %6, double %.0.lcssa, double %332) store double %333, ptr %331, align 8, !tbaa !35 - %334 = add nuw nsw i64 %.3511, 1 + %334 = add nsw i64 %.3511, 1 %exitcond552.not = icmp eq i64 %334, %0 br i1 %exitcond552.not, label %._crit_edge512, label %.preheader, !llvm.loop !259 diff --git a/bench/openblas/optimized/lapacke_ctp_trans.ll b/bench/openblas/optimized/lapacke_ctp_trans.ll index a645b75eff9..6ca72392323 100644 --- a/bench/openblas/optimized/lapacke_ctp_trans.ll +++ b/bench/openblas/optimized/lapacke_ctp_trans.ll @@ -74,16 +74,16 @@ define void @LAPACKE_ctp_trans(i32 noundef %0, i8 noundef signext %1, i8 noundef %indvars.iv88 = phi i64 [ 1, %.preheader69.lr.ph ], [ %indvars.iv.next89, %.loopexit70 ] %.05975 = phi i32 [ %., %.preheader69.lr.ph ], [ %32, %.loopexit70 ] %32 = add nuw nsw i32 %.05975, 1 - %33 = mul nuw nsw i32 %32, %.05975 - %34 = lshr i32 %33, 1 - %35 = zext nneg i32 %34 to i64 - %invariant.gep = getelementptr inbounds nuw { float, float }, ptr %4, i64 %35 + %33 = mul nsw i32 %32, %.05975 + %34 = sdiv i32 %33, 2 + %35 = sext i32 %34 to i64 + %invariant.gep = getelementptr { float, float }, ptr %4, i64 %35 br label %36 36: ; preds = %.lr.ph, %36 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %36 ] - %.0.neg74 = phi i32 [ 0, %.lr.ph ], [ %.0.neg, %36 ] - %gep = getelementptr inbounds nuw { float, float }, ptr %invariant.gep, i64 %indvars.iv + %.0.neg74 = phi i32 [ 0, %.lr.ph ], [ %50, %36 ] + %gep = getelementptr { float, float }, ptr %invariant.gep, i64 %indvars.iv %37 = load float, ptr %gep, align 4 %38 = getelementptr inbounds nuw i8, ptr %gep, i64 4 %39 = load float, ptr %38, align 4 @@ -99,14 +99,15 @@ define void @LAPACKE_ctp_trans(i32 noundef %0, i8 noundef signext %1, i8 noundef store float %37, ptr %47, align 4 store float %39, ptr %48, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.0.neg = xor i32 %42, -1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %indvars.iv88 + %49 = trunc i64 %indvars.iv to i32 + %50 = xor i32 %49, -1 + %exitcond.not = icmp eq i64 %indvars.iv.next, %indvars.iv87 br i1 %exitcond.not, label %.loopexit70, label %36, !llvm.loop !5 49: ; preds = %.lr.ph80, %._crit_edge %indvars.iv93 = phi i64 [ %31, %.lr.ph80 ], [ %indvars.iv.next94, %._crit_edge ] %.160.neg79 = phi i32 [ 0, %.lr.ph80 ], [ %.160.neg, %._crit_edge ] - %.16078 = phi i32 [ 0, %.lr.ph80 ], [ %70, %._crit_edge ] + %.16078 = phi i32 [ 0, %.lr.ph80 ], [ %72, %._crit_edge ] %50 = add nuw nsw i32 %.16078, %. %51 = icmp slt i32 %50, %3 br i1 %51, label %.lr.ph77, label %._crit_edge @@ -119,32 +120,32 @@ define void @LAPACKE_ctp_trans(i32 noundef %0, i8 noundef signext %1, i8 noundef br label %55 55: ; preds = %.lr.ph77, %55 - %indvars.iv95 = phi i64 [ %indvars.iv93, %.lr.ph77 ], [ %indvars.iv.next96, %55 ] + %indvars.iv95 = phi i64 [ %indvars.iv93, %.lr.ph77 ], [ %indvars.iv.next95, %57 ] %56 = trunc nuw nsw i64 %indvars.iv95 to i32 %57 = add i32 %54, %56 %58 = sext i32 %57 to i64 %59 = getelementptr inbounds { float, float }, ptr %4, i64 %58 - %60 = load float, ptr %59, align 4 - %61 = getelementptr inbounds nuw i8, ptr %59, i64 4 %62 = load float, ptr %61, align 4 - %indvars.iv.next96 = add nuw nsw i64 %indvars.iv95, 1 - %63 = mul i64 %indvars.iv.next96, %indvars.iv95 - %64 = trunc i64 %63 to i32 - %65 = lshr i32 %64, 1 - %66 = add nuw nsw i32 %65, %.16078 - %67 = zext nneg i32 %66 to i64 - %68 = getelementptr inbounds nuw { float, float }, ptr %5, i64 %67 - %69 = getelementptr inbounds nuw i8, ptr %68, i64 4 - store float %60, ptr %68, align 4 - store float %62, ptr %69, align 4 - %exitcond98.not = icmp eq i64 %indvars.iv.next96, %wide.trip.count - br i1 %exitcond98.not, label %._crit_edge, label %55, !llvm.loop !6 - -._crit_edge: ; preds = %55, %49 - %70 = add nuw nsw i32 %.16078, 1 + %63 = getelementptr inbounds nuw i8, ptr %61, i64 4 + %64 = load float, ptr %63, align 4 + %indvars.iv.next95 = add nuw nsw i64 %indvars.iv94, 1 + %65 = mul i64 %indvars.iv.next95, %indvars.iv94 + %66 = trunc i64 %65 to i32 + %67 = lshr i32 %66, 1 + %68 = add nuw nsw i32 %67, %.16078 + %69 = zext nneg i32 %68 to i64 + %70 = getelementptr inbounds nuw { float, float }, ptr %5, i64 %69 + %71 = getelementptr inbounds nuw i8, ptr %70, i64 4 + store float %62, ptr %70, align 4 + store float %64, ptr %71, align 4 + %exitcond97.not = icmp eq i64 %indvars.iv.next95, %wide.trip.count + br i1 %exitcond97.not, label %._crit_edge, label %55, !llvm.loop !6 + +._crit_edge: ; preds = %57, %51 + %72 = add nuw nsw i32 %.16078, 1 %.160.neg = xor i32 %.16078, -1 %indvars.iv.next94 = add nuw nsw i64 %indvars.iv93, 1 - %exitcond99.not = icmp eq i32 %70, %28 + %exitcond99.not = icmp eq i32 %72, %28 br i1 %exitcond99.not, label %.loopexit, label %49, !llvm.loop !7 .loopexit: ; preds = %.loopexit70, %._crit_edge, %.preheader71, %.preheader, %16, %19, %9, %6 diff --git a/bench/openblas/optimized/lapacke_dtp_trans.ll b/bench/openblas/optimized/lapacke_dtp_trans.ll index f3f9efac2a3..5ef23a146c7 100644 --- a/bench/openblas/optimized/lapacke_dtp_trans.ll +++ b/bench/openblas/optimized/lapacke_dtp_trans.ll @@ -74,16 +74,16 @@ define void @LAPACKE_dtp_trans(i32 noundef %0, i8 noundef signext %1, i8 noundef %indvars.iv88 = phi i64 [ 1, %.preheader69.lr.ph ], [ %indvars.iv.next89, %.loopexit70 ] %.05975 = phi i32 [ %., %.preheader69.lr.ph ], [ %32, %.loopexit70 ] %32 = add nuw nsw i32 %.05975, 1 - %33 = mul nuw nsw i32 %32, %.05975 - %34 = lshr i32 %33, 1 - %35 = zext nneg i32 %34 to i64 - %invariant.gep = getelementptr inbounds nuw double, ptr %4, i64 %35 + %33 = mul nsw i32 %32, %.05975 + %34 = sdiv i32 %33, 2 + %35 = sext i32 %34 to i64 + %invariant.gep = getelementptr double, ptr %4, i64 %35 br label %36 36: ; preds = %.lr.ph, %36 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %36 ] - %.0.neg74 = phi i32 [ 0, %.lr.ph ], [ %.0.neg, %36 ] - %gep = getelementptr inbounds nuw double, ptr %invariant.gep, i64 %indvars.iv + %.0.neg74 = phi i32 [ 0, %.lr.ph ], [ %47, %36 ] + %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv %37 = load double, ptr %gep, align 8, !tbaa !5 %38 = add nsw i32 %.0.neg74, %.05975 %39 = add i32 %25, %.0.neg74 @@ -95,8 +95,9 @@ define void @LAPACKE_dtp_trans(i32 noundef %0, i8 noundef signext %1, i8 noundef %45 = getelementptr inbounds double, ptr %5, i64 %44 store double %37, ptr %45, align 8, !tbaa !5 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.0.neg = xor i32 %40, -1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %indvars.iv88 + %46 = trunc i64 %indvars.iv to i32 + %47 = xor i32 %46, -1 + %exitcond.not = icmp eq i64 %indvars.iv.next, %indvars.iv87 br i1 %exitcond.not, label %.loopexit70, label %36, !llvm.loop !9 46: ; preds = %.lr.ph80, %._crit_edge @@ -115,7 +116,7 @@ define void @LAPACKE_dtp_trans(i32 noundef %0, i8 noundef signext %1, i8 noundef br label %52 52: ; preds = %.lr.ph77, %52 - %indvars.iv95 = phi i64 [ %indvars.iv93, %.lr.ph77 ], [ %indvars.iv.next96, %52 ] + %indvars.iv95 = phi i64 [ %indvars.iv93, %.lr.ph77 ], [ %indvars.iv.next96, %54 ] %53 = trunc nuw nsw i64 %indvars.iv95 to i32 %54 = add i32 %51, %53 %55 = sext i32 %54 to i64 diff --git a/bench/openblas/optimized/sscal_k.ll b/bench/openblas/optimized/sscal_k.ll index 4b33782ae6a..a2d84843f96 100644 --- a/bench/openblas/optimized/sscal_k.ll +++ b/bench/openblas/optimized/sscal_k.ll @@ -31,8 +31,8 @@ define noundef i32 @sscal_k(i64 noundef %0, i64 noundef %1, i64 noundef %2, floa br i1 %20, label %.lr.ph133, label %.loopexit .lr.ph133: ; preds = %19, %.lr.ph133 - %.1132 = phi i64 [ %24, %.lr.ph133 ], [ %.0, %19 ] - %.181131 = phi i64 [ %25, %.lr.ph133 ], [ %.080, %19 ] + %.1132 = phi i64 [ %24, %.lr.ph134 ], [ %.0, %19 ] + %.181131 = phi i64 [ %25, %.lr.ph134 ], [ %.080, %19 ] %21 = getelementptr inbounds float, ptr %4, i64 %.1132 %22 = load float, ptr %21, align 4, !tbaa !3 %23 = fmul float %3, %22 @@ -59,8 +59,9 @@ define noundef i32 @sscal_k(i64 noundef %0, i64 noundef %1, i64 noundef %2, floa br label %.lr.ph3.i .preheader.i: ; preds = %.lr.ph.i - %33 = and i64 %indvars.iv.next.i, 4294967264 - %34 = icmp samesign ugt i64 %27, %33 + %sext.i = shl i64 %indvars.iv.next.i, 32 + %33 = ashr exact i64 %sext.i, 32 + %34 = icmp sgt i64 %27, %33 br i1 %34, label %.lr.ph3.i.preheader, label %sscal_kernel_16.exit .lr.ph.i: ; preds = %29, %.lr.ph.i @@ -79,7 +80,7 @@ define noundef i32 @sscal_k(i64 noundef %0, i64 noundef %1, i64 noundef %2, floa .lr.ph3.i: ; preds = %.lr.ph3.i.preheader, %.lr.ph3.i %indvars.iv5.i = phi i64 [ %indvars.iv.next6.i, %.lr.ph3.i ], [ %indvars.iv5.i.ph, %.lr.ph3.i.preheader ] - %42 = getelementptr inbounds nuw float, ptr %4, i64 %indvars.iv5.i + %42 = getelementptr inbounds float, ptr %4, i64 %indvars.iv5.i %43 = load <16 x float>, ptr %42, align 1, !tbaa !9 %44 = fmul <16 x float> %31, %43 store <16 x float> %44, ptr %42, align 1, !tbaa !9 @@ -92,7 +93,7 @@ sscal_kernel_16.exit: ; preds = %.lr.ph3.i, %.prehea br i1 %.not138, label %.loopexit, label %.lr.ph135 .lr.ph135: ; preds = %sscal_kernel_16.exit, %.lr.ph135 - %.2134 = phi i64 [ %49, %.lr.ph135 ], [ %27, %sscal_kernel_16.exit ] + %.2134 = phi i64 [ %49, %.lr.ph136 ], [ %27, %sscal_kernel_16.exit ] %46 = getelementptr inbounds float, ptr %4, i64 %.2134 %47 = load float, ptr %46, align 4, !tbaa !3 %48 = fmul float %3, %47 @@ -129,8 +130,8 @@ sscal_kernel_16.exit: ; preds = %.lr.ph3.i, %.prehea br i1 %60, label %.lr.ph126, label %.loopexit 61: ; preds = %.lr.ph122, %61 - %.3121 = phi i64 [ 0, %.lr.ph122 ], [ %64, %61 ] - %.282120 = phi i64 [ 0, %.lr.ph122 ], [ %65, %61 ] + %.3121 = phi i64 [ 0, %.lr.ph123 ], [ %64, %61 ] + %.282120 = phi i64 [ 0, %.lr.ph123 ], [ %65, %61 ] %62 = getelementptr inbounds float, ptr %4, i64 %.3121 store float 0.000000e+00, ptr %62, align 4, !tbaa !3 %63 = getelementptr float, ptr %62, i64 %5 @@ -141,12 +142,12 @@ sscal_kernel_16.exit: ; preds = %.lr.ph3.i, %.prehea br i1 %66, label %61, label %.preheader.loopexit, !llvm.loop !13 .lr.ph126: ; preds = %.preheader, %.lr.ph126 - %.4125 = phi i64 [ %68, %.lr.ph126 ], [ %.3.lcssa, %.preheader ] - %.383124 = phi i64 [ %69, %.lr.ph126 ], [ %.282.lcssa, %.preheader ] + %.4125 = phi i64 [ %68, %.lr.ph127 ], [ %.3.lcssa, %.preheader ] + %.383124 = phi i64 [ %69, %.lr.ph127 ], [ %.282.lcssa, %.preheader ] %67 = getelementptr inbounds float, ptr %4, i64 %.4125 store float 0.000000e+00, ptr %67, align 4, !tbaa !3 %68 = add nsw i64 %.4125, %5 - %69 = add nuw nsw i64 %.383124, 1 + %69 = add nsw i64 %.383124, 1 %exitcond145.not = icmp eq i64 %69, %0 br i1 %exitcond145.not, label %.loopexit, label %.lr.ph126, !llvm.loop !14 @@ -224,9 +225,10 @@ sscal_kernel_16.exit: ; preds = %.lr.ph3.i, %.prehea br label %.lr.ph3.i104 .preheader.i101: ; preds = %.lr.ph.i98 - %102 = and i64 %indvars.iv.next.i100, 4294967264 - %103 = icmp samesign ugt i64 %83, %102 - br i1 %103, label %.lr.ph3.i104.preheader, label %sscal_kernel_16.exit107 + %sext.i102 = shl i64 %indvars.iv.next.i100, 32 + %102 = ashr exact i64 %sext.i102, 32 + %103 = icmp sgt i64 %83, %102 + br i1 %103, label %.lr.ph3.i105.preheader, label %sscal_kernel_16.exit108 .lr.ph.i98: ; preds = %98, %.lr.ph.i98 %indvars.iv.i99 = phi i64 [ %indvars.iv.next.i100, %.lr.ph.i98 ], [ 0, %98 ] @@ -243,8 +245,8 @@ sscal_kernel_16.exit: ; preds = %.lr.ph3.i, %.prehea br i1 %110, label %.lr.ph.i98, label %.preheader.i101, !llvm.loop !10 .lr.ph3.i104: ; preds = %.lr.ph3.i104.preheader, %.lr.ph3.i104 - %indvars.iv5.i105 = phi i64 [ %indvars.iv.next6.i106, %.lr.ph3.i104 ], [ %indvars.iv5.i105.ph, %.lr.ph3.i104.preheader ] - %111 = getelementptr inbounds nuw float, ptr %4, i64 %indvars.iv5.i105 + %indvars.iv5.i105 = phi i64 [ %indvars.iv.next6.i106, %.lr.ph3.i105 ], [ %indvars.iv5.i105.ph, %.lr.ph3.i105.preheader ] + %111 = getelementptr inbounds float, ptr %4, i64 %indvars.iv5.i105 %112 = load <16 x float>, ptr %111, align 1, !tbaa !9 %113 = fmul <16 x float> %100, %112 store <16 x float> %113, ptr %111, align 1, !tbaa !9 @@ -257,7 +259,7 @@ sscal_kernel_16.exit107: ; preds = %.lr.ph3.i104, %.pre br i1 %.not136, label %.loopexit, label %.lr.ph128 .lr.ph128: ; preds = %sscal_kernel_16.exit107, %.lr.ph128 - %.8127 = phi i64 [ %118, %.lr.ph128 ], [ %83, %sscal_kernel_16.exit107 ] + %.8127 = phi i64 [ %118, %.lr.ph129 ], [ %83, %sscal_kernel_16.exit108 ] %115 = getelementptr inbounds float, ptr %4, i64 %.8127 %116 = load float, ptr %115, align 4, !tbaa !3 %117 = fmul float %3, %116 diff --git a/bench/opencv/optimized/descriptor_database.ll b/bench/opencv/optimized/descriptor_database.ll index 99aaa080526..f45b0543f3f 100644 --- a/bench/opencv/optimized/descriptor_database.ll +++ b/bench/opencv/optimized/descriptor_database.ll @@ -5893,7 +5893,8 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resize br label %49 ._crit_edge.loopexit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %44 = and i64 %indvars.iv.next, 4294967295 + %sext = shl i64 %indvars.iv.next, 32 + %44 = ashr exact i64 %sext, 32 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm.exit @@ -6236,7 +6237,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i29, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #26 - %indvars.iv.next53 = add nuw nsw i64 %indvars.iv52, 1 + %indvars.iv.next53 = add nsw i64 %indvars.iv52, 1 %156 = getelementptr inbounds nuw i8, ptr %.sroa.032.046, i64 40 %.not41 = icmp eq ptr %156, %46 br i1 %.not41, label %._crit_edge50, label %103 diff --git a/bench/opencv/optimized/lrn_layer.ll b/bench/opencv/optimized/lrn_layer.ll index fb19e226f4f..d2d7ca898e4 100644 --- a/bench/opencv/optimized/lrn_layer.ll +++ b/bench/opencv/optimized/lrn_layer.ll @@ -2030,37 +2030,39 @@ define linkonce_odr hidden noundef i64 @_ZNK2cv3dnn12LRNLayerImpl8getFLOPSERKSt6 br i1 %.not71.us, label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us, label %.lr.ph.i.us.preheader .lr.ph.i.us.preheader: ; preds = %.preheader.i.us - %wide.trip.count107 = and i64 %35, 2147483647 + %sext.i.us = shl i64 %34, 30 + %wide.trip.count.i.us = ashr i64 %sext.i.us, 32 br label %.lr.ph.i.us -.lr.ph.i.us: ; preds = %.lr.ph.i.us.preheader, %.lr.ph.i.us - %indvars.iv.i.us = phi i64 [ %indvars.iv.next.i.us, %.lr.ph.i.us ], [ 2, %.lr.ph.i.us.preheader ] - %.0231.i.us = phi i32 [ %39, %.lr.ph.i.us ], [ 1, %.lr.ph.i.us.preheader ] +.lr.ph.i.us: ; preds = %.lr.ph.i.us, %.lr.ph.preheader.i.us + %indvars.iv.i.us = phi i64 [ 2, %.lr.ph.preheader.i.us ], [ %indvars.iv.next.i.us, %.lr.ph.i.us ] + %.0231.i.us = phi i32 [ 1, %.lr.ph.preheader.i.us ], [ %39, %.lr.ph.i.us ] %37 = getelementptr inbounds nuw i32, ptr %24, i64 %indvars.iv.i.us %38 = load i32, ptr %37, align 4, !tbaa !76 %39 = mul nsw i32 %38, %.0231.i.us %indvars.iv.next.i.us = add nuw nsw i64 %indvars.iv.i.us, 1 - %exitcond108.not = icmp eq i64 %indvars.iv.next.i.us, %wide.trip.count107 + %exitcond108.not = icmp eq i64 %indvars.iv.next.i.us, %wide.trip.count.i.us br i1 %exitcond108.not, label %.lr.ph.i39.us.preheader, label %.lr.ph.i.us, !llvm.loop !78 .lr.ph.i39.us.preheader: ; preds = %.lr.ph.i.us %40 = mul nsw i32 %39, %28 - %wide.trip.count109 = and i64 %35, 2147483647 - br label %.lr.ph.i39.us - -.lr.ph.i39.us: ; preds = %.lr.ph.i39.us.preheader, %.lr.ph.i39.us - %indvars.iv.i40.us = phi i64 [ %indvars.iv.next.i42.us, %.lr.ph.i39.us ], [ 2, %.lr.ph.i39.us.preheader ] - %.0231.i41.us = phi i32 [ %43, %.lr.ph.i39.us ], [ 1, %.lr.ph.i39.us.preheader ] - %41 = getelementptr inbounds nuw i32, ptr %24, i64 %indvars.iv.i40.us + %sext.i39.us = shl i64 %34, 30 + %wide.trip.count.i40.us = ashr i64 %sext.i39.us, 32 + br label %.lr.ph.i41.us + +.lr.ph.i41.us: ; preds = %.lr.ph.i41.us, %.lr.ph.i39.us.preheader + %.0231.i41.us = phi i64 [ 2, %.lr.ph.preheader.i38.us ], [ %indvars.iv.next.i44.us, %.lr.ph.i41.us ] + %.0231.i43.us = phi i32 [ 1, %.lr.ph.preheader.i38.us ], [ %43, %.lr.ph.i41.us ] + %41 = getelementptr inbounds nuw i32, ptr %24, i64 %indvars.iv.i42.us %42 = load i32, ptr %41, align 4, !tbaa !76 - %43 = mul nsw i32 %42, %.0231.i41.us - %indvars.iv.next.i42.us = add nuw nsw i64 %indvars.iv.i40.us, 1 - %exitcond110.not = icmp eq i64 %indvars.iv.next.i42.us, %wide.trip.count109 - br i1 %exitcond110.not, label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us, label %.lr.ph.i39.us, !llvm.loop !78 - -_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us: ; preds = %.lr.ph.i39.us, %.preheader.i.us, %.lr.ph.split.us - %44 = phi i32 [ 0, %.lr.ph.split.us ], [ %28, %.preheader.i.us ], [ %40, %.lr.ph.i39.us ] - %.024.i37.us = phi i32 [ 0, %.lr.ph.split.us ], [ 1, %.preheader.i.us ], [ %43, %.lr.ph.i39.us ] + %43 = mul nsw i32 %42, %.0231.i43.us + %indvars.iv.next.i42.us = add nuw nsw i64 %indvars.iv.i42.us, 1 + %exitcond110.not = icmp eq i64 %indvars.iv.next.i42.us, %wide.trip.count.i40.us + br i1 %exitcond110.not, label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us, label %.lr.ph.i41.us, !llvm.loop !78 + +_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us: ; preds = %.lr.ph.i41.us, %.preheader.i.us, %.lr.ph.split.us + %44 = phi i32 [ 0, %.lr.ph.split.us ], [ %28, %.preheader.i.us ], [ %40, %.lr.ph.i41.us ] + %.024.i37.us = phi i32 [ 0, %.lr.ph.split.us ], [ 1, %.preheader.i.us ], [ %43, %.lr.ph.i41.us ] %45 = shl nsw i32 %26, 2 %46 = mul nsw i32 %45, %.024.i37.us %47 = add nsw i32 %46, %44 @@ -2090,28 +2092,29 @@ _ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us: ; preds = %.l br i1 %.not73.us, label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit52.us, label %.lr.ph.i48.us.preheader .lr.ph.i48.us.preheader: ; preds = %.preheader.i45.us - %wide.trip.count111 = and i64 %60, 2147483647 - br label %.lr.ph.i48.us - -.lr.ph.i48.us: ; preds = %.lr.ph.i48.us.preheader, %.lr.ph.i48.us - %indvars.iv.i49.us = phi i64 [ %indvars.iv.next.i51.us, %.lr.ph.i48.us ], [ 2, %.lr.ph.i48.us.preheader ] - %.0231.i50.us = phi i32 [ %64, %.lr.ph.i48.us ], [ 1, %.lr.ph.i48.us.preheader ] - %62 = getelementptr inbounds nuw i32, ptr %24, i64 %indvars.iv.i49.us + %sext.i51.us = shl i64 %59, 30 + %wide.trip.count.i52.us = ashr i64 %sext.i51.us, 32 + br label %.lr.ph.i53.us + +.lr.ph.i53.us:; preds = %.lr.ph.i53.us, %.lr.ph.i48.us.preheader + %.0231.i50.us = phi i64 [ 2, %.lr.ph.preheader.i50.us ], [ %indvars.iv.next.i56.us, %.lr.ph.i53.us ] + %.0231.i55.us = phi i32 [ 1, %.lr.ph.preheader.i50.us ], [ %64, %.lr.ph.i53.us ] + %62 = getelementptr inbounds nuw i32, ptr %24, i64 %indvars.iv.i54.us %63 = load i32, ptr %62, align 4, !tbaa !76 - %64 = mul nsw i32 %63, %.0231.i50.us - %indvars.iv.next.i51.us = add nuw nsw i64 %indvars.iv.i49.us, 1 - %exitcond112.not = icmp eq i64 %indvars.iv.next.i51.us, %wide.trip.count111 - br i1 %exitcond112.not, label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit52.us, label %.lr.ph.i48.us, !llvm.loop !78 + %64 = mul nsw i32 %63, %.0231.i55.us + %indvars.iv.next.i51.us = add nuw nsw i64 %indvars.iv.i54.us, 1 + %exitcond112.not = icmp eq i64 %indvars.iv.next.i51.us, %wide.trip.count.i52.us + br i1 %exitcond112.not, label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit52.us, label %.lr.ph.i53.us, !llvm.loop !78 -_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit52.us: ; preds = %.lr.ph.i48.us, %.preheader.i45.us, %52 - %.024.i46.us = phi i32 [ 0, %52 ], [ 1, %.preheader.i45.us ], [ %64, %.lr.ph.i48.us ] +_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit52.us: ; preds = %.lr.ph.i53.us, %.preheader.i45.us, %52 + %.024.i46.us = phi i32 [ 0, %52 ], [ 1, %.preheader.i48.us ], [ %64, %.lr.ph.i53.us ] %65 = mul nsw i32 %.024.i46.us, %55 %66 = sext i32 %65 to i64 %67 = add nsw i64 %50, %66 br label %68 68: ; preds = %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit52.us, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us - %.2.us = phi i64 [ %67, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit52.us ], [ %50, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit43.us ] + %.2.us = phi i64 [ %67, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit58.us ], [ %50, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit46.us ] %indvars.iv.next114 = add nuw i64 %indvars.iv113, 1 %exitcond117.not = icmp eq i64 %indvars.iv.next114, %12 br i1 %exitcond117.not, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !79 @@ -2151,12 +2154,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS resume { ptr, i32 } %72 ._crit_edge: ; preds = %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit61, %68 - %.022.lcssa = phi i64 [ %.2.us, %68 ], [ %94, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit61 ] + %.022.lcssa = phi i64 [ %.2.us, %68 ], [ %94, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit70 ] ret i64 %.022.lcssa .lr.ph.split: ; preds = %.lr.ph, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit61 - %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit61 ], [ 0, %.lr.ph ] - %.02286 = phi i64 [ %94, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit61 ], [ 0, %.lr.ph ] + %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit70 ], [ 0, %.lr.ph ] + %.02286 = phi i64 [ %94, %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit70 ], [ 0, %.lr.ph ] %79 = getelementptr inbounds nuw %"class.std::vector.24", ptr %8, i64 %indvars.iv %.val33 = load ptr, ptr %79, align 8, !tbaa !77 %80 = getelementptr i8, ptr %79, i64 8 @@ -2186,25 +2189,26 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS br i1 %.not70, label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit61, label %.lr.ph.i57.preheader .lr.ph.i57.preheader: ; preds = %.preheader.i54 - %wide.trip.count = and i64 %86, 2147483647 - br label %.lr.ph.i57 + %sext.i63 = shl i64 %85, 30 + %wide.trip.count.i64 = ashr i64 %sext.i63, 32 + br label %.lr.ph.i65 88: ; preds = %82 tail call void @_ZN2cv6detail17check_failed_autoEiiRKNS0_12CheckContextE(i32 noundef 0, i32 noundef %87, ptr noundef nonnull align 8 dereferenceable(48) @_ZZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEiiE15__cv_check__172) #25 unreachable -.lr.ph.i57: ; preds = %.lr.ph.i57.preheader, %.lr.ph.i57 - %indvars.iv.i58 = phi i64 [ %indvars.iv.next.i60, %.lr.ph.i57 ], [ 0, %.lr.ph.i57.preheader ] - %.0231.i59 = phi i32 [ %91, %.lr.ph.i57 ], [ 1, %.lr.ph.i57.preheader ] +.lr.ph.i57: ; preds = %.lr.ph.i57, %.lr.ph.i57.preheader + %indvars.iv.i58 = phi i64 [ 0, %.lr.ph.preheader.i62 ], [ %indvars.iv.next.i60, %.lr.ph.i65 ] + %.0231.i59 = phi i32 [ 1, %.lr.ph.preheader.i62 ], [ %91, %.lr.ph.i65 ] %89 = getelementptr inbounds nuw i32, ptr %.val33, i64 %indvars.iv.i58 %90 = load i32, ptr %89, align 4, !tbaa !76 %91 = mul nsw i32 %90, %.0231.i59 %indvars.iv.next.i60 = add nuw nsw i64 %indvars.iv.i58, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next.i60, %wide.trip.count + %exitcond.not = icmp eq i64 %indvars.iv.next.i60, %wide.trip.count.i64 br i1 %exitcond.not, label %_ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit61, label %.lr.ph.i57, !llvm.loop !78 _ZN2cv3dnn14dnn4_v20241223L5totalERKSt6vectorIiSaIiEEii.exit61: ; preds = %.lr.ph.i57, %.lr.ph.split, %.preheader.i54 - %.024.i55 = phi i32 [ 0, %.lr.ph.split ], [ 1, %.preheader.i54 ], [ %91, %.lr.ph.i57 ] + %.024.i55 = phi i32 [ 0, %.lr.ph.split ], [ 1, %.preheader.i60 ], [ %91, %.lr.ph.i65 ] %92 = mul nsw i32 %20, %.024.i55 %93 = sext i32 %92 to i64 %94 = add nsw i64 %.02286, %93 diff --git a/bench/opencv/optimized/matrix_sparse.ll b/bench/opencv/optimized/matrix_sparse.ll index 4d67c8e2652..6f56bea8c33 100644 --- a/bench/opencv/optimized/matrix_sparse.ll +++ b/bench/opencv/optimized/matrix_sparse.ll @@ -319,13 +319,14 @@ define void @_ZN2cv9SparseMat3HdrC2EiPKii(ptr noundef nonnull align 8 dereferenc %32 = getelementptr i8, ptr %0, i64 %31 %scevgep = getelementptr i8, ptr %32, i64 88 %33 = shl nuw nsw i32 %.0.lcssa27, 2 - %narrow = sub nuw nsw i32 128, %33 - %34 = zext nneg i32 %narrow to i64 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 0, i64 %34, i1 false), !tbaa !23 + %34 = xor i32 %33, 124 + %narrow = add nuw nsw i32 %34, 4 + %35 = zext nneg i32 %narrow to i64 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 0, i64 %35, i1 false), !tbaa !23 br label %_ZNKSt6vectorImSaImEE12_M_check_lenEmPKc.exit.i 35: ; preds = %.lr.ph, %35 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %35 ] + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %36 ] %36 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv %37 = load i32, ptr %36, align 4, !tbaa !23 %38 = getelementptr inbounds nuw [32 x i32], ptr %28, i64 0, i64 %indvars.iv @@ -347,7 +348,7 @@ _ZNSt6vectorIhSaIhEE5clearEv.exit.i: ; preds = %_ZNKSt6vectorImSaIm store ptr %42, ptr %41, align 8, !tbaa !27 store ptr %42, ptr %40, align 8, !tbaa !28 invoke void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %25) - to label %43 unwind label %45 + to label %44 unwind label %45 43: ; preds = %_ZNSt6vectorIhSaIhEE5clearEv.exit.i %44 = getelementptr inbounds nuw i8, ptr %0, i64 24 diff --git a/bench/openjdk/optimized/c1_ValueMap.ll b/bench/openjdk/optimized/c1_ValueMap.ll index ea7d4060e4e..7256e645804 100644 --- a/bench/openjdk/optimized/c1_ValueMap.ll +++ b/bench/openjdk/optimized/c1_ValueMap.ll @@ -375,14 +375,14 @@ _ZN13GrowableArrayIP13ValueMapEntryE8allocateEv.exit.i: ; preds = %_ZN8ValueMap9 .lr.ph19.preheader.i: ; preds = %.preheader16.i %49 = zext nneg i32 %.0.lcssa.i to i64 - %50 = shl nuw nsw i64 %49, 3 - %scevgep = getelementptr i8, ptr %45, i64 %50 - %51 = xor i32 %.0.lcssa.i, -1 - %52 = add nsw i32 %.0.i.i.i.i.i, %51 - %53 = zext i32 %52 to i64 - %54 = shl nuw nsw i64 %53, 3 - %55 = add nuw nsw i64 %54, 8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep, i8 0, i64 %55, i1 false) + %50 = zext nneg i32 %.0.i.i.i.i.i to i64 + %51 = shl nuw nsw i64 %49, 3 + %scevgep = getelementptr i8, ptr %45, i64 %51 + %52 = add nuw nsw i64 %49, 1 + %53 = tail call i64 @llvm.umax.i64(i64 %52, i64 %50) + %54 = sub nsw i64 %53, %49 + %55 = shl nsw i64 %54, 3 + tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %55, i1 false) br label %_ZN26GrowableArrayWithAllocatorIP13ValueMapEntry13GrowableArrayIS1_EE4pushERKS1_.exit .lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i @@ -4416,12 +4416,12 @@ _ZN13GrowableArrayIP10BlockBeginE8allocateEv.exit: ; preds = %7, %11, %15 .lr.ph19: ; preds = %.lr.ph19.preheader, %.lr.ph19 %indvars.iv21 = phi i64 [ %24, %.lr.ph19.preheader ], [ %indvars.iv.next22, %.lr.ph19 ] - %35 = getelementptr inbounds nuw ptr, ptr %.0.i, i64 %indvars.iv21 + %35 = getelementptr inbounds ptr, ptr %.0.i, i64 %indvars.iv21 store ptr null, ptr %35, align 8 %indvars.iv.next22 = add nuw nsw i64 %indvars.iv21, 1 %36 = load i32, ptr %3, align 4 - %37 = trunc nuw i64 %indvars.iv.next22 to i32 - %38 = icmp sgt i32 %36, %37 + %37 = sext i32 %36 to i64 + %38 = icmp slt i64 %indvars.iv.next22, %37 br i1 %38, label %.lr.ph19, label %.preheader, !llvm.loop !35 39: ; preds = %.preheader @@ -4450,6 +4450,9 @@ declare i32 @llvm.ctpop.i32(i32) #4 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immarg) #5 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.umax.i64(i64, i64) #4 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #6 diff --git a/bench/openjdk/optimized/jfrJdkJfrEvent.ll b/bench/openjdk/optimized/jfrJdkJfrEvent.ll index b2ea67f6882..67f14b7a6d6 100644 --- a/bench/openjdk/optimized/jfrJdkJfrEvent.ll +++ b/bench/openjdk/optimized/jfrJdkJfrEvent.ll @@ -244,14 +244,14 @@ _ZN13GrowableArrayIPKvE8allocateEv.exit.i: ; preds = %59 .lr.ph19.preheader.i: ; preds = %.preheader16.i %72 = zext nneg i32 %.0.lcssa.i to i64 - %73 = shl nuw nsw i64 %72, 3 - %scevgep = getelementptr i8, ptr %68, i64 %73 - %74 = xor i32 %.0.lcssa.i, -1 - %75 = add nsw i32 %.0.i.i.i.i.i, %74 - %76 = zext i32 %75 to i64 - %77 = shl nuw nsw i64 %76, 3 - %78 = add nuw nsw i64 %77, 8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep, i8 0, i64 %78, i1 false) + %73 = zext nneg i32 %.0.i.i.i.i.i to i64 + %74 = shl nuw nsw i64 %72, 3 + %scevgep = getelementptr i8, ptr %68, i64 %74 + %75 = add nuw nsw i64 %72, 1 + %76 = call i64 @llvm.umax.i64(i64 %75, i64 %73) + %77 = sub nsw i64 %76, %72 + %78 = shl nsw i64 %77, 3 + call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %78, i1 false) br label %_ZN26GrowableArrayWithAllocatorIPKv13GrowableArrayIS1_EE6appendERKS1_.exit.i .lr.ph.i31: ; preds = %.lr.ph.i31.preheader, %.lr.ph.i31 @@ -1271,6 +1271,9 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #8 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immarg) #9 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.umax.i64(i64, i64) #7 + attributes #0 = { mustprogress nounwind uwtable "frame-pointer"="all" "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" } attributes #1 = { "frame-pointer"="all" "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" } attributes #2 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "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/openjdk/optimized/shenandoahSupport.ll b/bench/openjdk/optimized/shenandoahSupport.ll index 6718b2861ef..2106e6cd9df 100644 --- a/bench/openjdk/optimized/shenandoahSupport.ll +++ b/bench/openjdk/optimized/shenandoahSupport.ll @@ -13191,14 +13191,14 @@ _ZN13GrowableArrayIP4NodeE8allocateEv.exit.i: ; preds = %_ZN7PhiNodeC2EP4Nod .lr.ph19.preheader.i: ; preds = %.preheader16.i %369 = zext nneg i32 %.0.lcssa.i to i64 - %370 = shl nuw nsw i64 %369, 3 - %scevgep = getelementptr i8, ptr %365, i64 %370 - %371 = xor i32 %.0.lcssa.i, -1 - %372 = add nsw i32 %.0.i.i.i.i.i, %371 - %373 = zext i32 %372 to i64 - %374 = shl nuw nsw i64 %373, 3 - %375 = add nuw nsw i64 %374, 8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep, i8 0, i64 %375, i1 false) + %370 = zext nneg i32 %.0.i.i.i.i.i to i64 + %371 = shl nuw nsw i64 %369, 3 + %scevgep = getelementptr i8, ptr %365, i64 %371 + %372 = add nuw nsw i64 %369, 1 + %373 = call i64 @llvm.umax.i64(i64 %372, i64 %370) + %374 = sub nsw i64 %373, %369 + %375 = shl nsw i64 %374, 3 + call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %375, i1 false) br label %_ZN26GrowableArrayWithAllocatorIP4Node13GrowableArrayIS1_EE4pushERKS1_.exit .lr.ph.i505: ; preds = %.lr.ph.i505.preheader, %.lr.ph.i505 @@ -17696,7 +17696,7 @@ _ZN16Unique_Node_List6memberEP4Node.exit: ; preds = %244 .critedge.backedge: ; preds = %_ZNK4Type11make_oopptrEv.exit13.i58, %204, %199, %194, %.lr.ph89, %_ZN16Unique_Node_List6memberEP4Node.exit %256 = load i32, ptr %93, align 8 %257 = zext i32 %256 to i64 - %.not = icmp samesign ult i64 %indvars.iv.next98, %257 + %.not = icmp ult i64 %indvars.iv.next98, %257 br i1 %.not, label %.lr.ph89, label %_ZN16Unique_Node_List4pushEP4Node.exit54._crit_edge, !llvm.loop !68 .critedge2: ; preds = %244, %select.unfold72, %_ZN16Unique_Node_List6memberEP4Node.exit @@ -22459,6 +22459,9 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #10 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #10 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.umax.i64(i64, i64) #9 + attributes #0 = { mustprogress nounwind uwtable "frame-pointer"="all" "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" } attributes #1 = { "frame-pointer"="all" "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" } attributes #2 = { noreturn "frame-pointer"="all" "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/openspiel/optimized/random_uci_bot.ll b/bench/openspiel/optimized/random_uci_bot.ll index f8917a763f3..e0260984ab1 100644 --- a/bench/openspiel/optimized/random_uci_bot.ll +++ b/bench/openspiel/optimized/random_uci_bot.ll @@ -672,7 +672,8 @@ _ZN4absl7debian210StartsWithENS0_11string_viewES1_.exit.thread: ; preds = %_ZN4a ._crit_edge.loopexit: ; preds = %.lr.ph, %111 %.026.lcssa.ph.in = phi i64 [ %indvars.iv, %.lr.ph ], [ %indvars.iv.next, %111 ] - %119 = and i64 %.026.lcssa.ph.in, 4294967295 + %sext191 = shl i64 %.026.lcssa.ph.in, 32 + %119 = ashr exact i64 %sext191, 32 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader131 @@ -729,7 +730,7 @@ _ZNSt10unique_ptrIN10open_spiel5StateESt14default_deleteIS1_EED2Ev.exit47: ; pre .lr.ph166: ; preds = %.preheader, %147 %indvars.iv187 = phi i64 [ %indvars.iv.next188, %147 ], [ %.026.lcssa, %.preheader ] %140 = phi ptr [ %149, %147 ], [ %134, %.preheader ] - %141 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %140, i64 %indvars.iv187 + %141 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %140, i64 %indvars.iv187 %142 = invoke noundef i64 @_ZNK10open_spiel5chess10ChessState17ParseMoveToActionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(528) %126, ptr noundef nonnull align 8 dereferenceable(32) %141) to label %143 unwind label %.loopexit126 @@ -1063,7 +1064,7 @@ _ZN4absl7debian210StartsWithENS0_11string_viewES1_.exit69.thread120: ; preds = % to label %.invoke unwind label %.loopexit234 .invoke: ; preds = %.invoke212, %266 - %268 = phi ptr [ %267, %266 ], [ %62, %.invoke212 ] + %268 = phi ptr [ %267, %266 ], [ %62, %.invoke213 ] %269 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %268, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit.backedge unwind label %.loopexit234 @@ -1160,8 +1161,8 @@ _ZNSt10unique_ptrIN10open_spiel5StateESt14default_deleteIS1_EED2Ev.exit81: ; pre ret void 310: ; preds = %.loopexit234, %.loopexit.split-lp235, %166, %255, %257 - %.sroa.0105.2 = phi ptr [ %.sroa.0105.5, %166 ], [ %.0.ph, %255 ], [ %.0.ph, %257 ], [ %.0.ph, %.loopexit.split-lp235 ], [ %.0.ph, %.loopexit234 ] - %.pn36 = phi { ptr, i32 } [ %.pn33.pn, %166 ], [ %.pn31, %255 ], [ %.pn31, %257 ], [ %lpad.loopexit236, %.loopexit234 ], [ %lpad.loopexit.split-lp237, %.loopexit.split-lp235 ] + %.sroa.0105.2 = phi ptr [ %.sroa.0105.5, %166 ], [ %.0.ph, %255 ], [ %.0.ph, %257 ], [ %.0.ph, %.loopexit.split-lp236 ], [ %.0.ph, %.loopexit235 ] + %.pn36 = phi { ptr, i32 } [ %.pn33.pn, %166 ], [ %.pn31, %255 ], [ %.pn31, %257 ], [ %lpad.loopexit236, %.loopexit235 ], [ %lpad.loopexit.split-lp237, %.loopexit.split-lp236 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #20 call void @_ZNSt10shared_ptrIKN10open_spiel4GameEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #20 %.not.i82 = icmp eq ptr %.sroa.0105.2, null diff --git a/bench/openssl/optimized/extensions_srvr.ll b/bench/openssl/optimized/extensions_srvr.ll index 807b08f7b33..d84b8c74600 100644 --- a/bench/openssl/optimized/extensions_srvr.ll +++ b/bench/openssl/optimized/extensions_srvr.ll @@ -1035,48 +1035,52 @@ define range(i32 0, 2) i32 @tls_parse_ctos_use_srtp(ptr noundef %0, ptr noundef %30 = getelementptr inbounds nuw i8, ptr %0, i64 2968 store ptr null, ptr %30, align 8, !tbaa !105 %31 = tail call i32 @OPENSSL_sk_num(ptr noundef %29) #12 - %.not2972 = icmp eq i32 %23, 0 - br i1 %.not2972, label %._crit_edge, label %PACKET_get_net_2.exit39 - -PACKET_get_net_2.exit39: ; preds = %26, %.loopexit - %.02675 = phi i32 [ %.2, %.loopexit ], [ %31, %26 ] - %.sroa.0.074 = phi ptr [ %39, %.loopexit ], [ %17, %26 ] - %.sroa.5.073 = phi i64 [ %40, %.loopexit ], [ %24, %26 ] - %32 = load i8, ptr %.sroa.0.074, align 1, !tbaa !11 - %33 = zext i8 %32 to i64 - %34 = shl nuw nsw i64 %33, 8 - %35 = getelementptr inbounds nuw i8, ptr %.sroa.0.074, i64 1 - %36 = load i8, ptr %35, align 1, !tbaa !11 - %37 = zext i8 %36 to i64 - %38 = or disjoint i64 %34, %37 - %39 = getelementptr inbounds nuw i8, ptr %.sroa.0.074, i64 2 - %40 = add i64 %.sroa.5.073, -2 - %41 = icmp sgt i32 %.02675, 0 - br i1 %41, label %.lr.ph, label %.loopexit - -.lr.ph: ; preds = %PACKET_get_net_2.exit39, %47 - %.02571 = phi i32 [ %48, %47 ], [ 0, %PACKET_get_net_2.exit39 ] - %42 = tail call ptr @OPENSSL_sk_value(ptr noundef %29, i32 noundef %.02571) #12 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 8 - %44 = load i64, ptr %43, align 8, !tbaa !106 - %45 = icmp eq i64 %44, %38 - br i1 %45, label %46, label %47 + br label %32 -46: ; preds = %.lr.ph - store ptr %42, ptr %30, align 8, !tbaa !105 - br label %.loopexit +46: ; preds = %.loopexit, %26 + %.sroa.5.0 = phi i64 [ %24, %26 ], [ %41, %.loopexit ] + %.sroa.0.0 = phi ptr [ %17, %26 ], [ %40, %.loopexit ] + %.026 = phi i32 [ %31, %26 ], [ %.2, %.loopexit ] + switch i64 %.sroa.5.0, label %PACKET_get_net_2.exit39 [ + i64 0, label %50 + i64 1, label %.sink.split + ] + +PACKET_get_net_2.exit39: ; preds = %32 + %33 = load i8, ptr %.sroa.0.0, align 1, !tbaa !11 + %34 = zext i8 %33 to i64 + %35 = shl nuw nsw i64 %34, 8 + %36 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 1 + %37 = load i8, ptr %36, align 1, !tbaa !11 + %38 = zext i8 %37 to i64 + %39 = or disjoint i64 %35, %38 + %40 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 2 + %41 = add i64 %.sroa.5.0, -2 + %42 = icmp sgt i32 %.026, 0 + br i1 %42, label %.lr.ph, label %.loopexit + +.lr.ph: ; preds = %PACKET_get_net_2.exit39, %48 + %.02571 = phi i32 [ %49, %48 ], [ 0, %PACKET_get_net_2.exit39 ] + %43 = tail call ptr @OPENSSL_sk_value(ptr noundef %29, i32 noundef %.02571) #12 + %44 = getelementptr inbounds nuw i8, ptr %43, i64 8 + %45 = load i64, ptr %44, align 8, !tbaa !106 + %46 = icmp eq i64 %45, %39 + br i1 %46, label %47, label %48 47: ; preds = %.lr.ph - %48 = add nuw nsw i32 %.02571, 1 - %exitcond.not = icmp eq i32 %48, %.02675 + store ptr %43, ptr %30, align 8, !tbaa !105 + br label %.loopexit + +48: ; preds = %.lr.ph + %49 = add nuw nsw i32 %.02571, 1 + %exitcond.not = icmp eq i32 %49, %.026 br i1 %exitcond.not, label %.loopexit, label %.lr.ph, !llvm.loop !108 -.loopexit: ; preds = %47, %PACKET_get_net_2.exit39, %46 - %.2 = phi i32 [ %.02571, %46 ], [ %.02675, %PACKET_get_net_2.exit39 ], [ %.02675, %47 ] - %.not29 = icmp eq i64 %40, 0 - br i1 %.not29, label %._crit_edge, label %PACKET_get_net_2.exit39, !llvm.loop !109 +.loopexit: ; preds = %48, %PACKET_get_net_2.exit39, %47 + %.2 = phi i32 [ %.02571, %47 ], [ %.026, %PACKET_get_net_2.exit39 ], [ %.026, %48 ] + br label %46, !llvm.loop !109 -._crit_edge: ; preds = %.loopexit, %26 +._crit_edge: ; preds = %32 %.val.i.i40 = load i64, ptr %9, align 8, !tbaa !3 %.not.i.i = icmp eq i64 %.val.i.i40, 0 br i1 %.not.i.i, label %.sink.split, label %49 @@ -1100,16 +1104,16 @@ PACKET_get_net_2.exit39: ; preds = %26, %.loopexit %.not32 = icmp eq i64 %53, %54 br i1 %.not32, label %59, label %.sink.split -.sink.split: ; preds = %56, %49, %._crit_edge, %11, %8, %20 - %.sink80 = phi i32 [ 497, %20 ], [ 497, %8 ], [ 497, %11 ], [ 534, %._crit_edge ], [ 540, %49 ], [ 540, %56 ] - %.sink = phi i32 [ 353, %20 ], [ 353, %8 ], [ 353, %11 ], [ 353, %._crit_edge ], [ 352, %49 ], [ 352, %56 ] +.sink.split: ; preds = %46, %56, %49, %._crit_edge, %11, %8, %20 + %.sink80 = phi i32 [ 497, %20 ], [ 497, %8 ], [ 497, %11 ], [ 534, %50 ], [ 540, %51 ], [ 540, %58 ], [ 509, %32 ] + %.sink = phi i32 [ 353, %20 ], [ 353, %8 ], [ 353, %11 ], [ 353, %50 ], [ 352, %51 ], [ 352, %58 ], [ 353, %32 ] tail call void @ERR_new() #12 tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef %.sink80, ptr noundef nonnull @__func__.tls_parse_ctos_use_srtp) #12 tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %0, i32 noundef 50, i32 noundef %.sink, ptr noundef null) #12 br label %59 59: ; preds = %.sink.split, %56, %5 - %.0 = phi i32 [ 1, %5 ], [ 1, %56 ], [ 0, %.sink.split ] + %.0 = phi i32 [ 1, %5 ], [ 1, %58 ], [ 0, %.sink.split ] ret i32 %.0 } diff --git a/bench/openvdb/optimized/PoissonSolver.ll b/bench/openvdb/optimized/PoissonSolver.ll index 0e5cfa31a50..56536380eb1 100644 --- a/bench/openvdb/optimized/PoissonSolver.ll +++ b/bench/openvdb/optimized/PoissonSolver.ll @@ -179079,7 +179079,7 @@ for.body5: ; preds = %for.body5.lr.ph, %f %arrayidx.i = getelementptr inbounds nuw i32, ptr %arrayidx.i3.i11, i64 %indvars.iv %12 = load i32, ptr %arrayidx.i, align 4 %13 = zext i32 %12 to i64 - %cmp7 = icmp samesign ult i64 %indvars.iv57, %13 + %cmp7 = icmp ult i64 %indvars.iv57, %13 br i1 %cmp7, label %for.inc, label %if.end if.end: ; preds = %for.body5 @@ -179883,7 +179883,7 @@ for.body5: ; preds = %for.body5.lr.ph, %f %arrayidx.i = getelementptr inbounds nuw i32, ptr %arrayidx.i3.i14, i64 %indvars.iv %11 = load i32, ptr %arrayidx.i, align 4 %12 = zext i32 %11 to i64 - %cmp7 = icmp samesign ugt i64 %indvars.iv51, %12 + %cmp7 = icmp ugt i64 %indvars.iv51, %12 br i1 %cmp7, label %for.inc, label %if.end if.end: ; preds = %for.body5 @@ -180619,7 +180619,7 @@ while.body.i.i.i.i.i.i.i: ; preds = %while.body.i.i.i.i. %add.ptr.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i32, ptr %__first.addr.013.i.i.i.i.i.i.i, i64 %shr.i.i.i.i.i.i.i %10 = load i32, ptr %add.ptr.i.i.i.i.i.i.i.i.i, align 4 %11 = zext i32 %10 to i64 - %cmp.i.i.i.i.i.i.i.i = icmp samesign ugt i64 %indvars.iv.i.i, %11 + %cmp.i.i.i.i.i.i.i.i = icmp ugt i64 %indvars.iv.i.i, %11 %incdec.ptr.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i.i.i.i.i.i.i, i64 4 %12 = xor i64 %shr.i.i.i.i.i.i.i, -1 %sub2.i.i.i.i.i.i.i = add nsw i64 %__len.012.i.i.i.i.i.i.i, %12 @@ -180890,7 +180890,7 @@ while.body.i.i.i.i.i.i.i55: ; preds = %while.body.i.i.i.i. %add.ptr.i.i.i.i.i.i.i.i.i61 = getelementptr inbounds nuw i32, ptr %__first.addr.013.i.i.i.i.i.i.i56, i64 %shr.i.i.i.i.i.i.i58 %53 = load i32, ptr %add.ptr.i.i.i.i.i.i.i.i.i61, align 4 %54 = zext i32 %53 to i64 - %cmp.i.i.i.i.i.i.i.i64 = icmp samesign ugt i64 %indvars.iv.i.i43, %54 + %cmp.i.i.i.i.i.i.i.i64 = icmp ugt i64 %indvars.iv.i.i43, %54 %incdec.ptr.i.i.i.i.i.i.i65 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i.i.i.i.i.i.i61, i64 4 %55 = xor i64 %shr.i.i.i.i.i.i.i58, -1 %sub2.i.i.i.i.i.i.i66 = add nsw i64 %__len.012.i.i.i.i.i.i.i57, %55 diff --git a/bench/pbrt-v4/optimized/rgb2spec_opt.ll b/bench/pbrt-v4/optimized/rgb2spec_opt.ll index 8ea4126294c..442f7f5c2f1 100644 --- a/bench/pbrt-v4/optimized/rgb2spec_opt.ll +++ b/bench/pbrt-v4/optimized/rgb2spec_opt.ll @@ -368,22 +368,24 @@ define dso_local void @_Z8LUPSolvePPdPKiPKdiS_(ptr noundef readonly captures(non br i1 %exitcond.not, label %._crit_edge, label %17, !llvm.loop !20 .preheader: ; preds = %.preheader.preheader, %._crit_edge49 + %indvars.iv67 = phi i64 [ %8, %.preheader.preheader ], [ %indvars.iv.next68, %._crit_edge49 ] %indvars.iv61 = phi i64 [ %7, %.preheader.preheader ], [ %indvars.iv.next62, %._crit_edge49 ] + %indvars.iv.next68 = add nsw i64 %indvars.iv67, -1 %indvars.iv.next62 = add nsw i64 %indvars.iv61, -1 - %25 = icmp slt i64 %indvars.iv61, %8 + %25 = icmp slt i64 %indvars.iv67, %7 br i1 %25, label %.lr.ph48, label %.preheader.._crit_edge49_crit_edge .preheader.._crit_edge49_crit_edge: ; preds = %.preheader - %.phi.trans.insert = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next62 + %.phi.trans.insert = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next68 %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !4 - %.phi.trans.insert67 = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv.next62 + %.phi.trans.insert67 = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv.next68 %.pre68 = load ptr, ptr %.phi.trans.insert67, align 8, !tbaa !13 br label %._crit_edge49 .lr.ph48: ; preds = %.preheader - %26 = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv.next62 + %26 = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv.next68 %27 = load ptr, ptr %26, align 8, !tbaa !13 - %28 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next62 + %28 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next68 %.promoted50 = load double, ptr %28, align 8, !tbaa !4 br label %36 @@ -393,28 +395,28 @@ define dso_local void @_Z8LUPSolvePPdPKiPKdiS_(ptr noundef readonly captures(non ._crit_edge49: ; preds = %36, %.preheader.._crit_edge49_crit_edge %29 = phi ptr [ %.pre68, %.preheader.._crit_edge49_crit_edge ], [ %27, %36 ] %30 = phi double [ %.pre, %.preheader.._crit_edge49_crit_edge ], [ %43, %36 ] - %31 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next62 - %32 = getelementptr inbounds nuw double, ptr %29, i64 %indvars.iv.next62 + %31 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv.next68 + %32 = getelementptr inbounds nuw double, ptr %29, i64 %indvars.iv.next68 %33 = load double, ptr %32, align 8, !tbaa !4 %34 = fdiv double %30, %33 store double %34, ptr %31, align 8, !tbaa !4 - %35 = icmp samesign ugt i64 %indvars.iv61, 1 + %35 = icmp samesign ugt i64 %indvars.iv67, 1 br i1 %35, label %.preheader, label %._crit_edge54, !llvm.loop !21 36: ; preds = %.lr.ph48, %36 %indvars.iv63 = phi i64 [ %indvars.iv61, %.lr.ph48 ], [ %indvars.iv.next64, %36 ] %37 = phi double [ %.promoted50, %.lr.ph48 ], [ %43, %36 ] - %38 = getelementptr inbounds nuw double, ptr %27, i64 %indvars.iv63 + %38 = getelementptr inbounds double, ptr %27, i64 %indvars.iv63 %39 = load double, ptr %38, align 8, !tbaa !4 - %40 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv63 + %40 = getelementptr inbounds double, ptr %4, i64 %indvars.iv63 %41 = load double, ptr %40, align 8, !tbaa !4 %42 = fmul double %39, %41 %43 = fsub double %37, %42 store double %43, ptr %28, align 8, !tbaa !4 - %indvars.iv.next64 = add nuw nsw i64 %indvars.iv63, 1 - %44 = trunc nuw i64 %indvars.iv.next64 to i32 - %45 = icmp sgt i32 %3, %44 - br i1 %45, label %36, label %._crit_edge49, !llvm.loop !22 + %indvars.iv.next64 = add nsw i64 %indvars.iv63, 1 + %44 = trunc i64 %indvars.iv.next64 to i32 + %45 = icmp eq i32 %3, %44 + br i1 %45, label %._crit_edge49, label %36, !llvm.loop !22 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable @@ -1351,31 +1353,32 @@ _Z12LUPDecomposePPdidPi.exit: ; preds = %.loopexit.i 150: ; preds = %150, %.lr.ph48.i %indvars.iv63.i = phi i64 [ %indvars.iv61.i, %.lr.ph48.i ], [ %indvars.iv.next64.i, %150 ] %151 = phi double [ %.promoted50.i, %.lr.ph48.i ], [ %157, %150 ] - %152 = getelementptr inbounds nuw double, ptr %141, i64 %indvars.iv63.i + %152 = getelementptr inbounds double, ptr %141, i64 %indvars.iv63.i %153 = load double, ptr %152, align 8, !tbaa !4 - %154 = getelementptr inbounds nuw double, ptr %11, i64 %indvars.iv63.i + %154 = getelementptr inbounds double, ptr %11, i64 %indvars.iv63.i %155 = load double, ptr %154, align 8, !tbaa !4 %156 = fmul double %153, %155 %157 = fsub double %151, %156 store double %157, ptr %142, align 8, !tbaa !4 %indvars.iv.next64.i = add nuw nsw i64 %indvars.iv63.i, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next64.i, 3 - br i1 %exitcond.not, label %._crit_edge49.i, label %150, !llvm.loop !22 - -158: ; preds = %_Z8LUPSolvePPdPKiPKdiS_.exit - %159 = load double, ptr %1, align 8, !tbaa !4 - %160 = load double, ptr %16, align 8, !tbaa !4 - %161 = fcmp olt double %159, %160 - %162 = select i1 %161, double %160, double %159 - %163 = load double, ptr %17, align 8, !tbaa !4 - %164 = fcmp olt double %162, %163 - %165 = select i1 %164, double %163, double %162 - %166 = fcmp ogt double %165, 2.000000e+02 - br i1 %166, label %.preheader, label %.loopexit - -.preheader: ; preds = %158 - %167 = fdiv double 2.000000e+02, %165 - br label %177 + %158 = and i64 %indvars.iv.next64.i, 4294967295 + %exitcond66.not.i = icmp eq i64 %158, 3 + br i1 %exitcond66.not.i, label %._crit_edge49.i, label %150, !llvm.loop !22 + +159:; preds = %_Z8LUPSolvePPdPKiPKdiS_.exit + %160 = load double, ptr %1, align 8, !tbaa !4 + %161 = load double, ptr %16, align 8, !tbaa !4 + %162 = fcmp olt double %160, %161 + %163 = select i1 %162, double %161, double %160 + %164 = load double, ptr %17, align 8, !tbaa !4 + %165 = fcmp olt double %163, %164 + %166 = select i1 %165, double %164, double %163 + %167 = fcmp ogt double %166, 2.000000e+02 + br i1 %167, label %.preheader, label %.loopexit + +.preheader:; preds = %159 + %168 = fdiv double 2.000000e+02, %166 + br label %178 _Z8LUPSolvePPdPKiPKdiS_.exit: ; preds = %._crit_edge49.i, %_Z8LUPSolvePPdPKiPKdiS_.exit %indvars.iv = phi i64 [ %indvars.iv.next, %_Z8LUPSolvePPdPKiPKdiS_.exit ], [ 0, %._crit_edge49.i ] @@ -1392,19 +1395,19 @@ _Z8LUPSolvePPdPKiPKdiS_.exit: ; preds = %._crit_edge49.i, %_ %176 = fadd double %.03453, %175 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond60.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond60.not, label %158, label %_Z8LUPSolvePPdPKiPKdiS_.exit, !llvm.loop !34 + br i1 %exitcond60.not, label %159, label %_Z8LUPSolvePPdPKiPKdiS_.exit, !llvm.loop !34 177: ; preds = %.preheader, %177 - %indvars.iv61 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next62, %177 ] + %indvars.iv61 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next62, %178 ] %178 = getelementptr inbounds nuw double, ptr %1, i64 %indvars.iv61 %179 = load double, ptr %178, align 8, !tbaa !4 - %180 = fmul double %167, %179 + %180 = fmul double %168, %179 store double %180, ptr %178, align 8, !tbaa !4 %indvars.iv.next62 = add nuw nsw i64 %indvars.iv61, 1 %exitcond64.not = icmp eq i64 %indvars.iv.next62, 3 br i1 %exitcond64.not, label %.loopexit, label %177, !llvm.loop !35 -.loopexit: ; preds = %177, %158 +.loopexit: ; preds = %177, %159 %181 = fcmp olt double %176, 0x3EB0C6F7A0B5ED8D call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #35 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #35 @@ -3070,7 +3073,7 @@ define internal void @"_ZNSt17_Function_handlerIFvlEZ4mainE3$_0E9_M_invokeERKSt9 %indvars.iv.i.i.i = phi i64 [ %31, %.lr.ph.preheader.i.i.i ], [ %indvars.iv.next.i.i.i, %.lr.ph.i.i.i ] %34 = load ptr, ptr %16, align 8, !tbaa !144 %35 = load ptr, ptr %34, align 8, !tbaa !114 - %36 = getelementptr inbounds nuw float, ptr %35, i64 %indvars.iv.i.i.i + %36 = getelementptr inbounds float, ptr %35, i64 %indvars.iv.i.i.i %37 = load float, ptr %36, align 4, !tbaa !116 %38 = fpext float %37 to double %39 = sext i32 %33 to i64 diff --git a/bench/postgres/optimized/gistscan.ll b/bench/postgres/optimized/gistscan.ll index b6e045d8a1c..b4f73b66a72 100644 --- a/bench/postgres/optimized/gistscan.ll +++ b/bench/postgres/optimized/gistscan.ll @@ -3,8 +3,6 @@ source_filename = "bench/postgres/original/gistscan.ll" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-linux-gnu" -%struct.FormData_pg_attribute = type { i32, %struct.nameData, i32, i16, i16, i32, i16, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i32 } -%struct.nameData = type { [64 x i8] } %struct.ScanKeyData = type { i32, i16, i16, i32, i32, %struct.FmgrInfo, i64 } %struct.FmgrInfo = type { ptr, i32, i16, i8, i8, i8, ptr, ptr, ptr } %struct.IndexOrderByDistance = type { double, i8 } @@ -195,9 +193,9 @@ define dso_local void @gistrescan(ptr noundef %0, ptr noundef readonly captures( %62 = sext i32 %61 to i64 %63 = shl nsw i64 %62, 4 %64 = getelementptr i8, ptr %60, i64 %63 - %65 = getelementptr i8, ptr %64, i64 24 - %66 = getelementptr %struct.FormData_pg_attribute, ptr %65, i64 %indvars.iv149 - %67 = getelementptr i8, ptr %66, i64 -32 + %65 = mul i64 %indvars.iv149, 100 + %66 = getelementptr i8, ptr %64, i64 -8 + %67 = getelementptr i8, ptr %66, i64 %65 %68 = load i32, ptr %67, align 4 tail call void @TupleDescInitEntry(ptr noundef %57, i16 noundef signext %58, ptr noundef null, i32 noundef %68, i32 noundef -1, i32 noundef 0) #6 %indvars.iv.next150 = add nuw nsw i64 %indvars.iv149, 1 diff --git a/bench/postgres/optimized/numeric.ll b/bench/postgres/optimized/numeric.ll index 449b6d38caa..020cc0888e5 100644 --- a/bench/postgres/optimized/numeric.ll +++ b/bench/postgres/optimized/numeric.ll @@ -1362,87 +1362,96 @@ define internal fastcc range(i32 -1, 2) i32 @cmp_abs(ptr noundef readonly captur %.043.lcssa116123 = phi i32 [ %.043.lcssa116.ph, %.critedge2.thread ], [ %.043.lcssa, %.critedge2 ] %30 = getelementptr inbounds nuw i8, ptr %0, i64 32 %31 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %32 = zext i32 %.043.lcssa116123 to i64 - %33 = zext i32 %.042.lcssa124 to i64 + %32 = sext i32 %.043.lcssa116123 to i64 + %33 = sext i32 %.042.lcssa124 to i64 %smax98 = tail call i32 @llvm.smax.i32(i32 %.043.lcssa116123, i32 %.pre125) + %wide.trip.count102 = sext i32 %smax98 to i64 br label %34 -34: ; preds = %.preheader53, %41 - %indvars.iv96 = phi i64 [ %33, %.preheader53 ], [ %indvars.iv.next97, %41 ] - %indvars.iv94 = phi i64 [ %32, %.preheader53 ], [ %indvars.iv.next95, %41 ] - %35 = trunc nuw i64 %indvars.iv94 to i32 - %36 = icmp sgt i32 %.pre125, %35 - %37 = trunc nuw i64 %indvars.iv96 to i32 - br i1 %36, label %38, label %.critedge4 - -38: ; preds = %34 - %39 = load i32, ptr %1, align 8 - %40 = icmp sgt i32 %39, %37 - br i1 %40, label %41, label %.critedge4 - -41: ; preds = %38 - %42 = load ptr, ptr %30, align 8 - %indvars.iv.next95 = add nuw nsw i64 %indvars.iv94, 1 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 %indvars.iv94 - %44 = load i8, ptr %43, align 1 - %45 = load ptr, ptr %31, align 8 - %indvars.iv.next97 = add nuw nsw i64 %indvars.iv96, 1 - %46 = getelementptr inbounds nuw i8, ptr %45, i64 %indvars.iv96 - %47 = load i8, ptr %46, align 1 - %.not49 = icmp eq i8 %44, %47 - br i1 %.not49, label %34, label %48, !llvm.loop !18 - -48: ; preds = %41 - %49 = icmp ugt i8 %44, %47 - %. = select i1 %49, i32 1, i32 -1 - br label %.loopexit +34: ; preds = %.preheader53, %39 + %indvars.iv96 = phi i64 [ %33, %.preheader53 ], [ %indvars.iv.next97, %39 ] + %indvars.iv94 = phi i64 [ %32, %.preheader53 ], [ %indvars.iv.next95, %39 ] + %exitcond103.not = icmp eq i64 %indvars.iv94, %wide.trip.count102 + br i1 %exitcond103.not, label %.preheader, label %35 -.critedge4: ; preds = %38, %34, %.critedge2 - %.pre126 = phi i32 [ %.pre, %.critedge2 ], [ %.pre125, %34 ], [ %.pre125, %38 ] - %.144 = phi i32 [ %.043.lcssa, %.critedge2 ], [ %35, %38 ], [ %smax98, %34 ] - %.1 = phi i32 [ %.042.lcssa, %.critedge2 ], [ %37, %34 ], [ %37, %38 ] - %50 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %51 = sext i32 %.144 to i64 - %smax105 = tail call i32 @llvm.smax.i32(i32 %.144, i32 %.pre126) - %wide.trip.count106 = sext i32 %smax105 to i64 - br label %52 +.critedge4: ; preds = %34 + %36 = load i32, ptr %1, align 8 + %37 = sext i32 %36 to i64 + %38 = icmp slt i64 %indvars.iv96, %37 + br i1 %38, label %39, label %.critedge4.loopexit.split.loop.exit136 + +39: ; preds = %35 + %40 = load ptr, ptr %30, align 8 + %indvars.iv.next95 = add nsw i64 %indvars.iv94, 1 + %41 = getelementptr inbounds i8, ptr %40, i64 %indvars.iv94 + %42 = load i8, ptr %41, align 1 + %43 = load ptr, ptr %31, align 8 + %indvars.iv.next97 = add nsw i64 %indvars.iv96, 1 + %44 = getelementptr inbounds i8, ptr %43, i64 %indvars.iv96 + %45 = load i8, ptr %44, align 1 + %.not49 = icmp eq i8 %42, %45 + br i1 %.not49, label %34, label %46, !llvm.loop !18 -52: ; preds = %56, %.critedge4 - %indvars.iv102 = phi i64 [ %indvars.iv.next103, %56 ], [ %51, %.critedge4 ] - %exitcond107.not = icmp eq i64 %indvars.iv102, %wide.trip.count106 - br i1 %exitcond107.not, label %.preheader, label %56 - -.preheader: ; preds = %52 - %53 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %54 = load i32, ptr %1, align 8 - %55 = sext i32 %.1 to i64 - %smax111 = tail call i32 @llvm.smax.i32(i32 %.1, i32 %54) - %wide.trip.count112 = sext i32 %smax111 to i64 - br label %60 - -56: ; preds = %52 - %57 = load ptr, ptr %50, align 8 - %indvars.iv.next103 = add nsw i64 %indvars.iv102, 1 - %58 = getelementptr inbounds i8, ptr %57, i64 %indvars.iv102 - %59 = load i8, ptr %58, align 1 - %.not48 = icmp eq i8 %59, 0 - br i1 %.not48, label %52, label %.loopexit, !llvm.loop !19 - -60: ; preds = %.preheader, %61 - %indvars.iv108 = phi i64 [ %55, %.preheader ], [ %indvars.iv.next109, %61 ] - %exitcond113.not = icmp eq i64 %indvars.iv108, %wide.trip.count112 - br i1 %exitcond113.not, label %.loopexit, label %61 - -61: ; preds = %60 - %62 = load ptr, ptr %53, align 8 - %indvars.iv.next109 = add nsw i64 %indvars.iv108, 1 - %63 = getelementptr inbounds i8, ptr %62, i64 %indvars.iv108 - %64 = load i8, ptr %63, align 1 - %.not = icmp eq i8 %64, 0 - br i1 %.not, label %60, label %.loopexit, !llvm.loop !20 - -.loopexit: ; preds = %13, %24, %56, %60, %61, %48 - %.0 = phi i32 [ %., %48 ], [ 0, %60 ], [ -1, %61 ], [ 1, %56 ], [ -1, %24 ], [ 1, %13 ] +52: ; preds = %39 + %47 = icmp ugt i8 %42, %45 + %. = select i1 %47, i32 1, i32 -1 + br label %.loopexit + +.preheader: ; preds = %34 + %48 = trunc nsw i64 %indvars.iv96 to i32 + br label %.critedge4 + +.critedge4.loopexit.split.loop.exit136:; preds = %.critedge4 + %49 = trunc nsw i64 %indvars.iv96 to i32 + %50 = trunc nsw i64 %indvars.iv94 to i32 + br label %.critedge4 + +.critedge4:; preds = %.preheader, %.critedge4.loopexit.split.loop.exit136, %.critedge2 + %.pre128 = phi i32 [ %.pre, %.critedge2 ], [ %.pre127, %.critedge4.loopexit.split.loop.exit136 ], [ %.pre127, %.critedge4.loopexit.split.loop.exit ] + %.144 = phi i32 [ %.043.lcssa, %.critedge2 ], [ %50, %.critedge4.loopexit.split.loop.exit136 ], [ %smax98, %.critedge4.loopexit.split.loop.exit ] + %.1 = phi i32 [ %.042.lcssa, %.critedge2 ], [ %49, %.critedge4.loopexit.split.loop.exit136 ], [ %48, %.critedge4.loopexit.split.loop.exit ] + %51 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %52 = sext i32 %.144 to i64 + %smax107 = tail call i32 @llvm.smax.i32(i32 %.144, i32 %.pre128) + %wide.trip.count108 = sext i32 %smax107 to i64 + br label %53 + +53:; preds = %57, %.critedge4 + %indvars.iv104 = phi i64 [ %indvars.iv.next105, %57 ], [ %52, %.critedge4 ] + %exitcond109.not = icmp eq i64 %indvars.iv104, %wide.trip.count108 + br i1 %exitcond109.not, label %.preheader, label %57 + +.preheader:; preds = %53 + %54 = getelementptr inbounds nuw i8, ptr %1, i64 32 + %55 = load i32, ptr %1, align 8 + %56 = sext i32 %.1 to i64 + %smax113 = tail call i32 @llvm.smax.i32(i32 %.1, i32 %55) + %wide.trip.count114 = sext i32 %smax113 to i64 + br label %61 + +57: ; preds = %53 + %58 = load ptr, ptr %51, align 8 + %indvars.iv.next105 = add nsw i64 %indvars.iv104, 1 + %59 = getelementptr inbounds i8, ptr %58, i64 %indvars.iv104 + %60 = load i8, ptr %59, align 1 + %.not48 = icmp eq i8 %60, 0 + br i1 %.not48, label %53, label %.loopexit, !llvm.loop !19 + +61: ; preds = %.preheader, %62 + %indvars.iv110 = phi i64 [ %56, %.preheader ], [ %indvars.iv.next111, %62 ] + %exitcond115.not = icmp eq i64 %indvars.iv110, %wide.trip.count114 + br i1 %exitcond115.not, label %.loopexit, label %62 + +62: ; preds = %61 + %63 = load ptr, ptr %54, align 8 + %indvars.iv.next111 = add nsw i64 %indvars.iv110, 1 + %64 = getelementptr inbounds i8, ptr %63, i64 %indvars.iv110 + %65 = load i8, ptr %64, align 1 + %.not = icmp eq i8 %65, 0 + br i1 %.not, label %61, label %.loopexit, !llvm.loop !20 + +.loopexit: ; preds = %13, %24, %57, %61, %62, %46 + %.0 = phi i32 [ %., %46 ], [ 0, %61 ], [ -1, %62 ], [ 1, %57 ], [ -1, %24 ], [ 1, %13 ] ret i32 %.0 } diff --git a/bench/postgres/optimized/regcomp.ll b/bench/postgres/optimized/regcomp.ll index c470c1c34f8..cc770657e46 100644 --- a/bench/postgres/optimized/regcomp.ll +++ b/bench/postgres/optimized/regcomp.ll @@ -10603,12 +10603,12 @@ check_in_colors_match.exit167.thread.i.i: ; preds = %check_in_colors_mat .split.loop.exit203.i.i: ; preds = %3384, %.split.loop.exit.i.i %.069.lcssa.i.i = phi i32 [ %3385, %.split.loop.exit.i.i ], [ 258, %3384 ] %3386 = zext nneg i32 %.069.lcssa.i.i to i64 - %umax.i.i = tail call i32 @llvm.umax.i32(i32 %.069.lcssa.i.i, i32 257) - %wide.trip.count.i.i = zext i32 %umax.i.i to i64 + %umax.i.i = tail call i32 @llvm.smax.i32(i32 %.069.lcssa.i.i, i32 257) + %wide.trip.count.i.i = zext nneg i32 %umax.i.i to i64 br label %3387 3387: ; preds = %3388, %.split.loop.exit203.i.i - %indvars.iv186.i.i = phi i64 [ %indvars.iv.next187.i.i, %3388 ], [ %3386, %.split.loop.exit203.i.i ] + %indvars.iv186.i.i = phi i64 [ %indvars.iv.next187.i.i, %3388 ], [ %3386, %.split.loop.exit200.i.i ] %exitcond189.not.i.i = icmp eq i64 %indvars.iv186.i.i, %wide.trip.count.i.i br i1 %exitcond189.not.i.i, label %split.i.i, label %3388 @@ -10625,16 +10625,14 @@ check_in_colors_match.exit167.thread.i.i: ; preds = %check_in_colors_mat br label %split.i.i, !llvm.loop !75 split.i.i: ; preds = %3387, %._crit_edge199.i.i - %.pre-phi.i.i = phi i64 [ %.pre200.i.i, %._crit_edge199.i.i ], [ %wide.trip.count.i.i, %3387 ] - %.068.lcssa.i.i = phi i32 [ %3392, %._crit_edge199.i.i ], [ %umax.i.i, %3387 ] - %umax193.i.i = tail call i32 @llvm.umax.i32(i32 %.068.lcssa.i.i, i32 257) - %wide.trip.count194.i.i = zext i32 %umax193.i.i to i64 + %.pre-phi.i.i = phi i64 [ %.pre200.i.i, %._crit_edge196.i.i ], [ %wide.trip.count.i.i, %3387 ] + %.068.lcssa.i.i = phi i32 [ %3392, %._crit_edge196.i.i ], [ %umax.i.i, %3387 ] br label %3393 3393: ; preds = %3394, %split.i.i - %indvars.iv190.i.i = phi i64 [ %indvars.iv.next191.i.i, %3394 ], [ %.pre-phi.i.i, %split.i.i ] - %exitcond195.not.i.i = icmp eq i64 %indvars.iv190.i.i, %wide.trip.count194.i.i - br i1 %exitcond195.not.i.i, label %3398, label %3394 + %indvars.iv190.i.i = phi i64 [ %indvars.iv.next191.i.i, %3395 ], [ %.pre-phi.i.i, %split.i.i ] + %exitcond195.not.i.i = icmp samesign ult i64 %indvars.iv190.i.i, 257 + br i1 %exitcond195.not.i.i, label %3395, label %3399 3394: ; preds = %3393 %indvars.iv.next191.i.i = add nuw nsw i64 %indvars.iv190.i.i, 1 @@ -10647,7 +10645,7 @@ split.i.i: ; preds = %3387, %._crit_edge1 %3399 = add nsw i32 %.069.lcssa.i.i, -1 %3400 = getelementptr inbounds nuw i8, ptr %0, i64 124 store i32 %3399, ptr %3400, align 4 - %3401 = add nsw i32 %.068.lcssa.i.i, -1 + %3401 = add i32 %.068.lcssa.i.i, -1 %3402 = getelementptr inbounds nuw i8, ptr %0, i64 128 store i32 %3401, ptr %3402, align 8 %3403 = load i32, ptr %2, align 8 @@ -10661,8 +10659,8 @@ split.i.i: ; preds = %3387, %._crit_edge1 br i1 %3406, label %.lr.ph184.i.i, label %._crit_edge.i.i227 .lr.ph184.i.i: ; preds = %.thread.i.i226, %3411 - %3407 = phi i32 [ %3412, %3411 ], [ %3405, %.thread.i.i226 ] - %indvars.iv196.i.i = phi i64 [ %indvars.iv.next197.i.i, %3411 ], [ 0, %.thread.i.i226 ] + %3407 = phi i32 [ %3412, %3412 ], [ %3405, %.thread.i.i226 ] + %indvars.iv196.i.i = phi i64 [ %indvars.iv.next197.i.i, %3412 ], [ 0, %.thread.i.i226 ] %3408 = getelementptr inbounds nuw ptr, ptr %3366, i64 %indvars.iv196.i.i %3409 = load ptr, ptr %3408, align 8 %.not80.i.i = icmp eq ptr %3409, null @@ -10674,7 +10672,7 @@ split.i.i: ; preds = %3387, %._crit_edge1 br label %3411 3411: ; preds = %3410, %.lr.ph184.i.i - %3412 = phi i32 [ %3407, %.lr.ph184.i.i ], [ %.pre.i.i228, %3410 ] + %3412 = phi i32 [ %3407, %.lr.ph184.i.i ], [ %.pre.i.i228, %3411 ] %indvars.iv.next197.i.i = add nuw nsw i64 %indvars.iv196.i.i, 1 %3413 = sext i32 %3412 to i64 %3414 = icmp slt i64 %indvars.iv.next197.i.i, %3413 @@ -10708,7 +10706,7 @@ checkmatchall.exit.i: ; preds = %3220, %3212, %3204, br label %3420 3420: ; preds = %3421, %3417 - %.pn15.i = phi ptr [ %3419, %3417 ], [ %.0.i, %3421 ] + %.pn15.i = phi ptr [ %3419, %3418 ], [ %.0.i, %3422 ] %.0.in.i = getelementptr inbounds nuw i8, ptr %.pn15.i, i64 24 %.0.i = load ptr, ptr %.0.in.i, align 8 %.not14.i212 = icmp eq ptr %.0.i, null @@ -10722,7 +10720,7 @@ checkmatchall.exit.i: ; preds = %3220, %3212, %3204, br i1 %3425, label %analyze.exit, label %3420, !llvm.loop !79 analyze.exit: ; preds = %.loopexit.i, %3421, %pushfwd.exit, %3156, %checkmatchall.exit.i - %.012.i = phi i64 [ 0, %pushfwd.exit ], [ 4096, %3156 ], [ 0, %checkmatchall.exit.i ], [ 2048, %3421 ], [ 0, %.loopexit.i ] + %.012.i = phi i64 [ 0, %pushfwd.exit ], [ 4096, %3156 ], [ 0, %checkmatchall.exit.i ], [ 2048, %3422 ], [ 0, %.loopexit.i ] ret i64 %.012.i } @@ -20404,7 +20402,7 @@ element.exit.thread187.i: ; preds = %44 63: ; preds = %60, %56 %64 = getelementptr inbounds nuw i8, ptr %.01825.i.i, i64 16 - %65 = load ptr, ptr %64, align 8 + %65 = load ptr, ptr %64, align 16 %.not.i144.i = icmp eq ptr %65, null br i1 %.not.i144.i, label %element.exit.thread.i, label %56, !llvm.loop !102 @@ -20492,7 +20490,7 @@ element.exit153.thread193.i: ; preds = %86 105: ; preds = %102, %98 %106 = getelementptr inbounds nuw i8, ptr %.01825.i148.i, i64 16 - %107 = load ptr, ptr %106, align 8 + %107 = load ptr, ptr %106, align 16 %.not.i149.i = icmp eq ptr %107, null br i1 %.not.i149.i, label %element.exit153.thread.i, label %98, !llvm.loop !102 @@ -20923,7 +20921,7 @@ element.exit.thread70: ; preds = %283 302: ; preds = %299, %295 %303 = getelementptr inbounds nuw i8, ptr %.01825.i, i64 16 - %304 = load ptr, ptr %303, align 8 + %304 = load ptr, ptr %303, align 16 %.not.i30 = icmp eq ptr %304, null br i1 %.not.i30, label %element.exit.thread, label %295, !llvm.loop !102 @@ -23709,7 +23707,7 @@ newarc.exit: ; preds = %107, %119, %.loopex 125: ; preds = %newarc.exit, %92 %.0.i175 = phi i16 [ %.0.i176179, %92 ], [ %.0.i, %newarc.exit ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not106.not = icmp samesign ult i64 %indvars.iv, %41 + %.not106.not = icmp ult i64 %indvars.iv, %41 br i1 %.not106.not, label %.lr.ph183, label %.thread153.loopexit.loopexit, !llvm.loop !114 .thread153.loopexit.loopexit: ; preds = %125 @@ -23963,7 +23961,7 @@ newarc.exit: ; preds = %107, %119, %.loopex %240 = getelementptr inbounds %struct.colormaprange, ptr %136, i64 %239 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %240, ptr noundef nonnull align 4 dereferenceable(12) %.2130176.i, i64 12, i1 false) %241 = getelementptr inbounds nuw i8, ptr %.2130176.i, i64 12 - %242 = add nuw nsw i32 %.2177.i, 1 + %242 = add nsw i32 %.2177.i, 1 %243 = load i32, ptr %130, align 8 %244 = icmp slt i32 %242, %243 br i1 %244, label %.lr.ph179.i, label %._crit_edge180.i, !llvm.loop !117 @@ -29045,7 +29043,7 @@ element.exit.thread21: ; preds = %4 25: ; preds = %22, %18 %26 = getelementptr inbounds nuw i8, ptr %.01825.i, i64 16 - %27 = load ptr, ptr %26, align 8 + %27 = load ptr, ptr %26, align 16 %.not.i = icmp eq ptr %27, null br i1 %.not.i, label %element.exit.thread, label %18, !llvm.loop !102 @@ -30531,7 +30529,7 @@ define internal fastcc zeroext i1 @checkmatchall_recurse(ptr noundef readonly ca %66 = getelementptr i8, ptr %16, i64 %indvars.iv91 %scevgep = getelementptr i8, ptr %66, i64 1 %narrow = sub nuw nsw i64 257, %indvars.iv91 - tail call void @llvm.memset.p0.i64(ptr align 1 %scevgep, i8 1, i64 %narrow, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %scevgep, i8 1, i64 %narrow, i1 false) br label %.thread70 .thread70: ; preds = %44, %42, %33, %63, %18, %.lr.ph88.preheader, %64, %._crit_edge @@ -30593,7 +30591,7 @@ declare i32 @llvm.smin.i32(i32, i32) #19 declare i32 @llvm.umin.i32(i32, i32) #19 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #19 +declare i32 @llvm.smax.i32(i32, i32) #19 attributes #0 = { nounwind 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" } attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } diff --git a/bench/quantlib/optimized/knuthuniformrng.ll b/bench/quantlib/optimized/knuthuniformrng.ll index 9cfb4ac976e..2f337916e2a 100644 --- a/bench/quantlib/optimized/knuthuniformrng.ll +++ b/bench/quantlib/optimized/knuthuniformrng.ll @@ -362,14 +362,11 @@ for.body: ; preds = %entry, %for.body %exitcond.not = icmp eq i64 %indvars.iv.next, 100 br i1 %exitcond.not, label %for.cond4.preheader, label %for.body, !llvm.loop !28 -for.cond18.preheader.loopexit: ; preds = %for.body6 - %3 = zext nneg i32 %n to i64 - br label %for.cond18.preheader - -for.cond18.preheader: ; preds = %for.cond4.preheader, %for.cond18.preheader.loopexit - %j.1.lcssa = phi i64 [ %3, %for.cond18.preheader.loopexit ], [ 100, %for.cond4.preheader ] +for.cond18.preheader.loopexit: ; preds = %for.body6, %for.cond4.preheader + %j.1.lcssa = phi i32 [ 100, %for.cond4.preheader ], [ %n, %for.body6 ] %invariant.gep49 = getelementptr i8, ptr %1, i64 -800 %invariant.gep51 = getelementptr i8, ptr %1, i64 -296 + %3 = zext nneg i32 %j.1.lcssa to i64 br label %for.body20 for.body6: ; preds = %for.body6.lr.ph, %for.body6 @@ -390,13 +387,14 @@ for.body6: ; preds = %for.body6.lr.ph, %f for.body37.lr.ph: ; preds = %for.body20 %invariant.gep60 = getelementptr i8, ptr %0, i64 -296 + %6 = sext i32 %indvars.iv75 to i64 br label %for.body37 for.body20: ; preds = %for.cond18.preheader, %for.body20 - %indvars.iv75.in = phi i64 [ %j.1.lcssa, %for.cond18.preheader ], [ %indvars.iv75, %for.body20 ] + %indvars.iv75.in = phi i32 [ %j.1.lcssa, %for.cond18.preheader ], [ %indvars.iv75, %for.body20 ] %indvars.iv69 = phi i64 [ 0, %for.cond18.preheader ], [ %indvars.iv.next70, %for.body20 ] - %indvars.iv67 = phi i64 [ %j.1.lcssa, %for.cond18.preheader ], [ %indvars.iv.next68, %for.body20 ] - %indvars.iv75 = add nuw nsw i64 %indvars.iv75.in, 1 + %indvars.iv67 = phi i64 [ %3, %for.cond18.preheader ], [ %indvars.iv.next68, %for.body20 ] + %indvars.iv75 = add nuw i32 %indvars.iv75.in, 1 %gep50 = getelementptr double, ptr %invariant.gep49, i64 %indvars.iv67 %6 = load double, ptr %gep50, align 8, !tbaa !18 %gep52 = getelementptr double, ptr %invariant.gep51, i64 %indvars.iv67 @@ -414,7 +412,7 @@ for.body20: ; preds = %for.cond18.preheade for.body37: ; preds = %for.body37.lr.ph, %for.body37 %indvars.iv79 = phi i64 [ 37, %for.body37.lr.ph ], [ %indvars.iv.next80, %for.body37 ] - %indvars.iv77 = phi i64 [ %indvars.iv75, %for.body37.lr.ph ], [ %indvars.iv.next78, %for.body37 ] + %indvars.iv77 = phi i64 [ %6, %for.body37.lr.ph ], [ %indvars.iv.next78, %for.body37 ] %gep59 = getelementptr double, ptr %invariant.gep49, i64 %indvars.iv77 %8 = load double, ptr %gep59, align 8, !tbaa !18 %gep61 = getelementptr double, ptr %invariant.gep60, i64 %indvars.iv79 @@ -478,12 +476,12 @@ for.body37.lr.ph.i: ; preds = %for.body20.i br label %for.body37.i for.body20.i: ; preds = %for.body6.i, %for.body20.i - %indvars.iv75.in.i = phi i64 [ %indvars.iv75.i, %for.body20.i ], [ 1009, %for.body6.i ] %indvars.iv69.i = phi i64 [ %indvars.iv.next70.i, %for.body20.i ], [ 0, %for.body6.i ] - %indvars.iv75.i = add nuw nsw i64 %indvars.iv75.in.i, 1 - %gep50.i = getelementptr double, ptr %invariant.gep.i, i64 %indvars.iv75.in.i + %indvars.iv67.i = phi i64 [ %indvars.iv.next68.i, %for.body20.i ], [ 1009, %for.body6.i ] + %indvars.iv.next68.i = add nuw nsw i64 %indvars.iv67.i, 1 + %gep50.i = getelementptr double, ptr %invariant.gep.i, i64 %indvars.iv67.i %5 = load double, ptr %gep50.i, align 8, !tbaa !18 - %gep52.i = getelementptr double, ptr %invariant.gep47.i, i64 %indvars.iv75.in.i + %gep52.i = getelementptr double, ptr %invariant.gep47.i, i64 %indvars.iv67.i %6 = load double, ptr %gep52.i, align 8, !tbaa !18 %add.i32.i = fadd double %5, %6 %conv.i33.i = fptosi double %add.i32.i to i32 diff --git a/bench/quiche-rs/optimized/4epksim1e613ria3d5gxmneiw.ll b/bench/quiche-rs/optimized/4epksim1e613ria3d5gxmneiw.ll index 4169fd17e3f..6959be44b1a 100644 --- a/bench/quiche-rs/optimized/4epksim1e613ria3d5gxmneiw.ll +++ b/bench/quiche-rs/optimized/4epksim1e613ria3d5gxmneiw.ll @@ -1714,8 +1714,8 @@ _ZN5serde3ser5impls9format_u817h78a6d5d3fdacc8aaE.exit.i: ; preds = %43, %41, %2 52: ; preds = %_ZN5serde3ser5impls9format_u817h78a6d5d3fdacc8aaE.exit11.i, %_ZN5serde3ser5impls9format_u817h78a6d5d3fdacc8aaE.exit.i %.pn.add26.i = phi i64 [ 1, %_ZN5serde3ser5impls9format_u817h78a6d5d3fdacc8aaE.exit.i ], [ %.pn.add.i, %_ZN5serde3ser5impls9format_u817h78a6d5d3fdacc8aaE.exit11.i ] %.sroa.03.025.i = phi i64 [ %.sroa.07.0.i.i, %_ZN5serde3ser5impls9format_u817h78a6d5d3fdacc8aaE.exit.i ], [ %99, %_ZN5serde3ser5impls9format_u817h78a6d5d3fdacc8aaE.exit11.i ] - %53 = add nuw nsw i64 %.sroa.03.025.i, 1 - %54 = icmp samesign ugt i64 %.sroa.03.025.i, 14 + %53 = add i64 %.sroa.03.025.i, 1 + %54 = icmp ugt i64 %53, 15 br i1 %54, label %101, label %58, !prof !18 55: ; preds = %_ZN5serde3ser5impls9format_u817h78a6d5d3fdacc8aaE.exit11.i @@ -1802,7 +1802,8 @@ _ZN5serde3ser5impls9format_u817h78a6d5d3fdacc8aaE.exit.i: ; preds = %43, %41, %2 %90 = load i8, ptr %89, align 1, !noalias !157, !noundef !16 %91 = getelementptr inbounds nuw i8, ptr %60, i64 1 store i8 %90, ptr %91, align 1, !alias.scope !154, !noalias !144 - %92 = icmp samesign ult i64 %.sroa.03.025.i, 12 + %notsub.i = add nsw i64 %.sroa.03.025.i, -15 + %92 = icmp samesign ult i64 %notsub.i, -3 br i1 %92, label %94, label %98 93: ; preds = %85 @@ -1822,7 +1823,7 @@ _ZN5serde3ser5impls9format_u817h78a6d5d3fdacc8aaE.exit.i: ; preds = %43, %41, %2 _ZN5serde3ser5impls9format_u817h78a6d5d3fdacc8aaE.exit11.i: ; preds = %94, %80, %71 %.sroa.07.0.i10.i = phi i64 [ 4, %94 ], [ 3, %80 ], [ 2, %71 ] - %99 = add nuw nsw i64 %.sroa.07.0.i10.i, %.sroa.03.025.i + %99 = add nsw i64 %.sroa.07.0.i10.i, %.sroa.03.025.i %.pn.add.i = add nuw nsw i64 %.pn.add26.i, 1 %100 = icmp eq i64 %.pn.add.i, 4 br i1 %100, label %55, label %52 diff --git a/bench/raylib/optimized/rtextures.ll b/bench/raylib/optimized/rtextures.ll index 73b1c9dd0a6..6ae577cb97c 100644 --- a/bench/raylib/optimized/rtextures.ll +++ b/bench/raylib/optimized/rtextures.ll @@ -8799,33 +8799,34 @@ define internal fastcc range(i32 0, 2) i32 @stbi_write_jpg_core(ptr noundef nonn .preheader280.us: ; preds = %.preheader280.lr.ph, %._crit_edge.us %indvars.iv367 = phi i32 [ %indvars.iv.next368, %._crit_edge.us ], [ 8, %.preheader280.lr.ph ] - %.2236306.us = phi i32 [ %198, %._crit_edge.us ], [ 0, %.preheader280.lr.ph ] - %.2239305.us = phi i32 [ %199, %._crit_edge.us ], [ 0, %.preheader280.lr.ph ] - %.2243304.us = phi i32 [ %200, %._crit_edge.us ], [ 0, %.preheader280.lr.ph ] + %.2236306.us = phi i32 [ %199, %._crit_edge.us ], [ 0, %.preheader280.lr.ph ] + %.2239305.us = phi i32 [ %198, %._crit_edge.us ], [ 0, %.preheader280.lr.ph ] + %.2243304.us = phi i32 [ %201, %._crit_edge.us ], [ 0, %.preheader280.lr.ph ] %.1248303.us = phi i32 [ %237, %._crit_edge.us ], [ 0, %.preheader280.lr.ph ] br label %161 161: ; preds = %.preheader280.us, %.split296.us307 - %.3300.us = phi i32 [ %.2236306.us, %.preheader280.us ], [ %198, %.split296.us307 ] - %.3240299.us = phi i32 [ %.2239305.us, %.preheader280.us ], [ %199, %.split296.us307 ] - %.3244298.us = phi i32 [ %.2243304.us, %.preheader280.us ], [ %200, %.split296.us307 ] - %.1246297.us = phi i32 [ 0, %.preheader280.us ], [ %201, %.split296.us307 ] + %.3300.us = phi i32 [ %.2236306.us, %.preheader280.us ], [ %199, %.split296.us307 ] + %.3240299.us = phi i32 [ %.2239305.us, %.preheader280.us ], [ %198, %.split296.us307 ] + %.3244298.us = phi i32 [ %.2243304.us, %.preheader280.us ], [ %201, %.split296.us307 ] + %.1246297.us = phi i32 [ 0, %.preheader280.us ], [ %163, %.split296.us307 ] call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %27) #54 call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %28) #54 call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %29) #54 %162 = load i32, ptr @stbi__flip_vertically_on_write, align 4 %.fr = freeze i32 %162 %.not264.us = icmp eq i32 %.fr, 0 + %163 = add nuw nsw i32 %.1246297.us, 8 br i1 %.not264.us, label %.split.us.us, label %.split.us313 .split.us313: ; preds = %161, %168 %.2294.us308 = phi i32 [ %169, %168 ], [ %.1248303.us, %161 ] - %.4293.us309 = phi i32 [ %167, %168 ], [ 0, %161 ] + %.4293.us309 = phi i64 [ %indvars.iv.next364, %168 ], [ 0, %161 ] %163 = call i32 @llvm.smin.i32(i32 %.2294.us308, i32 %159) %164 = sub nsw i32 %159, %163 %165 = mul nsw i32 %164, %1 - %166 = sext i32 %.4293.us309 to i64 - %167 = add i32 %.4293.us309, 8 + %sext392 = shl i64 %.4293.us309, 32 + %167 = ashr exact i64 %sext392, 32 br label %170 168: ; preds = %170 @@ -8834,7 +8835,7 @@ define internal fastcc range(i32 0, 2) i32 @stbi_write_jpg_core(ptr noundef nonn br i1 %exitcond369.not, label %.split296.us307, label %.split.us313 170: ; preds = %170, %.split.us313 - %indvars.iv363 = phi i64 [ %indvars.iv.next364, %170 ], [ %166, %.split.us313 ] + %indvars.iv363 = phi i64 [ %indvars.iv.next364, %170 ], [ %167, %.split.us313 ] %.2228292.us311 = phi i32 [ %197, %170 ], [ %.1246297.us, %.split.us313 ] %171 = call i32 @llvm.smin.i32(i32 %.2228292.us311, i32 %160) %172 = add i32 %171, %165 @@ -8867,28 +8868,26 @@ define internal fastcc range(i32 0, 2) i32 @stbi_write_jpg_core(ptr noundef nonn store float %195, ptr %196, align 4 %197 = add nuw nsw i32 %.2228292.us311, 1 %indvars.iv.next364 = add nsw i64 %indvars.iv363, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next364 to i32 - %exitcond366.not = icmp eq i32 %167, %lftr.wideiv - br i1 %exitcond366.not, label %168, label %170 - -.split296.us307: ; preds = %168, %207 - %198 = call fastcc i32 @stbiw__jpg_processDU(ptr noundef %0, ptr noundef %20, ptr noundef %21, ptr noundef %27, i32 noundef 8, ptr noundef %15, i32 noundef %.3300.us, ptr noundef nonnull @stbi_write_jpg_core.YDC_HT, ptr noundef nonnull @stbi_write_jpg_core.YAC_HT) - %199 = call fastcc i32 @stbiw__jpg_processDU(ptr noundef %0, ptr noundef %20, ptr noundef %21, ptr noundef %28, i32 noundef 8, ptr noundef %16, i32 noundef %.3240299.us, ptr noundef nonnull @stbi_write_jpg_core.UVDC_HT, ptr noundef nonnull @stbi_write_jpg_core.UVAC_HT) - %200 = call fastcc i32 @stbiw__jpg_processDU(ptr noundef %0, ptr noundef %20, ptr noundef %21, ptr noundef %29, i32 noundef 8, ptr noundef %16, i32 noundef %.3244298.us, ptr noundef nonnull @stbi_write_jpg_core.UVDC_HT, ptr noundef nonnull @stbi_write_jpg_core.UVAC_HT) + %198 = icmp samesign ult i32 %197, %163 + br i1 %198, label %170, label %168 + +.split296.us307: ; preds = %168, %206 + %199 = call fastcc i32 @stbiw__jpg_processDU(ptr noundef %0, ptr noundef %20, ptr noundef %21, ptr noundef %27, i32 noundef 8, ptr noundef %15, i32 noundef %.3300.us, ptr noundef nonnull @stbi_write_jpg_core.YDC_HT, ptr noundef nonnull @stbi_write_jpg_core.YAC_HT) + %198 = call fastcc i32 @stbiw__jpg_processDU(ptr noundef %0, ptr noundef %20, ptr noundef %21, ptr noundef %28, i32 noundef 8, ptr noundef %16, i32 noundef %.3240299.us, ptr noundef nonnull @stbi_write_jpg_core.UVDC_HT, ptr noundef nonnull @stbi_write_jpg_core.UVAC_HT) + %199 = call fastcc i32 @stbiw__jpg_processDU(ptr noundef %0, ptr noundef %20, ptr noundef %21, ptr noundef %29, i32 noundef 8, ptr noundef %16, i32 noundef %.3244298.us, ptr noundef nonnull @stbi_write_jpg_core.UVDC_HT, ptr noundef nonnull @stbi_write_jpg_core.UVAC_HT) call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %29) #54 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %28) #54 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %27) #54 - %201 = add nuw nsw i32 %.1246297.us, 8 - %202 = icmp slt i32 %201, %1 + %202 = icmp slt i32 %163, %1 br i1 %202, label %161, label %._crit_edge.us .split.us.us: ; preds = %161, %207 - %.2294.us.us = phi i32 [ %208, %207 ], [ %.1248303.us, %161 ] - %.4293.us.us = phi i32 [ %206, %207 ], [ 0, %161 ] + %.2294.us.us = phi i32 [ %208, %206 ], [ %.1248303.us, %161 ] + %.4293.us.us = phi i64 [ %indvars.iv.next370, %206 ], [ 0, %161 ] %203 = call i32 @llvm.smin.i32(i32 %.2294.us.us, i32 %159) %204 = mul nsw i32 %203, %1 - %205 = sext i32 %.4293.us.us to i64 - %206 = add i32 %.4293.us.us, 8 + %sext393 = shl i64 %.4293.us.us, 32 + %205 = ashr exact i64 %sext393, 32 br label %209 207: ; preds = %209 @@ -8897,8 +8896,8 @@ define internal fastcc range(i32 0, 2) i32 @stbi_write_jpg_core(ptr noundef nonn br i1 %exitcond375.not, label %.split296.us307, label %.split.us.us 209: ; preds = %209, %.split.us.us - %indvars.iv370 = phi i64 [ %indvars.iv.next371, %209 ], [ %205, %.split.us.us ] - %.2228292.us.us = phi i32 [ %236, %209 ], [ %.1246297.us, %.split.us.us ] + %indvars.iv370 = phi i64 [ %indvars.iv.next371, %208 ], [ %205, %.split.us.us ] + %.2228292.us.us = phi i32 [ %236, %208 ], [ %.1246297.us, %.split.us.us ] %210 = call i32 @llvm.smin.i32(i32 %.2228292.us.us, i32 %160) %211 = add i32 %210, %204 %212 = mul i32 %211, %3 @@ -8930,9 +8929,8 @@ define internal fastcc range(i32 0, 2) i32 @stbi_write_jpg_core(ptr noundef nonn store float %234, ptr %235, align 4 %236 = add nuw nsw i32 %.2228292.us.us, 1 %indvars.iv.next371 = add nsw i64 %indvars.iv370, 1 - %lftr.wideiv373 = trunc i64 %indvars.iv.next371 to i32 - %exitcond374.not = icmp eq i32 %206, %lftr.wideiv373 - br i1 %exitcond374.not, label %207, label %209 + %236 = icmp samesign ult i32 %235, %163 + br i1 %236, label %208, label %207 ._crit_edge.us: ; preds = %.split296.us307 %237 = add nuw nsw i32 %.1248303.us, 8 @@ -9051,7 +9049,7 @@ define internal fastcc range(i32 0, 2) i32 @stbi_write_jpg_core(ptr noundef nonn br label %299 297: ; preds = %299 - %298 = add nuw nsw i32 %.1317.us, 1 + %298 = add nuw i32 %.1317.us, 1 %exitcond383.not = icmp eq i32 %298, %indvars.iv381 br i1 %exitcond383.not, label %247, label %290 @@ -39758,16 +39756,16 @@ define internal void @stbi__YCbCr_to_RGB_simd(ptr noundef writeonly captures(non 57: ; preds = %.lr.ph107, %57 %indvars.iv110 = phi i64 [ %56, %.lr.ph107 ], [ %indvars.iv.next111, %57 ] %.2106 = phi ptr [ %.0, %.lr.ph107 ], [ %95, %57 ] - %58 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv110 + %58 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv110 %59 = load i8, ptr %58, align 1 %60 = zext i8 %59 to i32 %61 = shl nuw nsw i32 %60, 20 %62 = or disjoint i32 %61, 524288 - %63 = getelementptr inbounds nuw i8, ptr %3, i64 %indvars.iv110 + %63 = getelementptr inbounds i8, ptr %3, i64 %indvars.iv110 %64 = load i8, ptr %63, align 1 %65 = zext i8 %64 to i32 %66 = add nsw i32 %65, -128 - %67 = getelementptr inbounds nuw i8, ptr %2, i64 %indvars.iv110 + %67 = getelementptr inbounds i8, ptr %2, i64 %indvars.iv110 %68 = load i8, ptr %67, align 1 %69 = zext i8 %68 to i32 %70 = add nsw i32 %69, -128 diff --git a/bench/rust-analyzer-rs/optimized/1n6t6n716s6vtscg.ll b/bench/rust-analyzer-rs/optimized/1n6t6n716s6vtscg.ll index 0c071751c33..4f033df16ef 100644 --- a/bench/rust-analyzer-rs/optimized/1n6t6n716s6vtscg.ll +++ b/bench/rust-analyzer-rs/optimized/1n6t6n716s6vtscg.ll @@ -7916,9 +7916,9 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t br i1 %8, label %.thread, label %.lr.ph .lr.ph: ; preds = %3, %29 - %.sroa.10.033 = phi i64 [ %9, %29 ], [ %5, %3 ] - %.sroa.014.032 = phi ptr [ %12, %29 ], [ %1, %3 ] - %.sroa.7.031 = phi i64 [ %13, %29 ], [ 0, %3 ] + %.sroa.10.033 = phi i64 [ %9, %24 ], [ %5, %3 ] + %.sroa.014.032 = phi ptr [ %12, %24 ], [ %1, %3 ] + %.sroa.7.031 = phi i64 [ %13, %24 ], [ 0, %3 ] %9 = add i64 %.sroa.10.033, -1 %10 = icmp eq ptr %.sroa.014.032, %7 br i1 %10, label %.thread, label %11 @@ -7943,8 +7943,8 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %narrow.i.i = tail call i8 @llvm.umin.i8(i8 %15, i8 2) switch i8 %narrow.i.i, label %default.unreachable [ i8 0, label %16 - i8 1, label %22 - i8 2, label %27 + i8 1, label %27 + i8 2, label %22 ] default.unreachable: ; preds = %11 @@ -7964,25 +7964,22 @@ default.unreachable: ; preds = %11 unreachable 22: ; preds = %11 - %23 = getelementptr inbounds nuw i8, ptr %.sroa.014.032, i64 8 - %24 = load ptr, ptr %23, align 8, !alias.scope !2377, !noalias !2378, !nonnull !4, !align !144, !noundef !4 - %25 = getelementptr inbounds nuw i8, ptr %.sroa.014.032, i64 16 - %26 = load i64, ptr %25, align 8, !alias.scope !2377, !noalias !2378, !noundef !4 - br label %29 + %23 = getelementptr inbounds nuw i8, ptr %.sroa.014.032, i64 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.6.i, ptr noundef nonnull readonly align 1 dereferenceable(7) %23, i64 7, i1 false), !alias.scope !2381, !noalias !2382 + br label %.sink.split -27: ; preds = %11 - %28 = getelementptr inbounds nuw i8, ptr %.sroa.014.032, i64 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.6.i, ptr noundef nonnull readonly align 1 dereferenceable(7) %28, i64 7, i1 false), !alias.scope !2381, !noalias !2382 +27: ; preds = %11, %22 + %.sroa.0.0.i13.ph = phi i8 [ %14, %22 ], [ 25, %11 ] %.sroa.7.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.014.032, i64 8 - %.sroa.7.1.copyload.i = load ptr, ptr %.sroa.7.1..sroa_idx.i, align 1, !alias.scope !2383, !noalias !2382 + %.sroa.7.1.copyload.i = load ptr, ptr %.sroa.7.1..sroa_idx.i, align 8, !alias.scope !2383, !noalias !2382 %.sroa.9.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.014.032, i64 16 - %.sroa.9.1.copyload.i = load i64, ptr %.sroa.9.1..sroa_idx.i, align 1, !alias.scope !2383, !noalias !2382 + %.sroa.9.1.copyload.i = load i64, ptr %.sroa.9.1..sroa_idx.i, align 8, !alias.scope !2383, !noalias !2382 br label %29 -29: ; preds = %27, %22, %16 - %.sroa.9.0.i = phi i64 [ %26, %22 ], [ %.sroa.9.1.copyload.i, %27 ], [ %.val1.i.i, %16 ] - %.sroa.7.0.i = phi ptr [ %24, %22 ], [ %.sroa.7.1.copyload.i, %27 ], [ %.val.i.i, %16 ] - %.sroa.0.0.i13 = phi i8 [ 25, %22 ], [ %14, %27 ], [ 24, %16 ] +29: ; preds = %27, %16 + %.sroa.9.0.i = phi i64 [ %.val1.i.i, %16 ], [ %.sroa.9.1.copyload.i, %.sink.split ] + %.sroa.7.0.i = phi ptr [ %.val.i.i, %16 ], [ %.sroa.7.1.copyload.i, %.sink.split ] + %.sroa.0.0.i13 = phi i8 [ 24, %16 ], [ %.sroa.0.0.i13.ph, %.sink.split ] call void @llvm.lifetime.start.p0(i64 7, ptr nonnull %.sroa.06.sroa.4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.06.sroa.4, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.6.i, i64 7, i1 false) call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.6.i) @@ -16001,7 +15998,7 @@ define hidden void @"_ZN69_$LT$hir_def..hir..type_ref..ConstRef$u20$as$u20$core. %.sroa.0.070.i.i.i.i = phi ptr [ %27, %.lr.ph.i.i.i.i ], [ %4, %20 ] %.sroa.11.069.i.i.i.i = phi i64 [ %26, %.lr.ph.i.i.i.i ], [ 16, %20 ] %.068.i.i.i.i = phi i64 [ %25, %.lr.ph.i.i.i.i ], [ %19, %20 ] - %.val.i.i.i.i.i.i = load i64, ptr %.sroa.0.070.i.i.i.i, align 1, !alias.scope !4749, !noalias !4754 + %.val.i.i.i.i.i.i = load i64, ptr %.sroa.0.070.i.i.i.i, align 8, !alias.scope !4749, !noalias !4754 %23 = tail call i64 @llvm.fshl.i64(i64 %.068.i.i.i.i, i64 %.068.i.i.i.i, i64 5) %24 = xor i64 %.val.i.i.i.i.i.i, %23 %25 = mul i64 %24, 5871781006564002453 @@ -16029,7 +16026,7 @@ _ZN4core4hash6Hasher10write_i12817h0052ff63c2cb73a0E.exit.i: ; preds = %.lr.ph.i %.sroa.0.070.i.i.i = phi ptr [ %35, %.lr.ph.i.i.i ], [ %3, %28 ] %.sroa.11.069.i.i.i = phi i64 [ %34, %.lr.ph.i.i.i ], [ 16, %28 ] %.068.i.i.i = phi i64 [ %33, %.lr.ph.i.i.i ], [ %19, %28 ] - %.val.i.i.i.i.i = load i64, ptr %.sroa.0.070.i.i.i, align 1, !alias.scope !4767, !noalias !4772 + %.val.i.i.i.i.i = load i64, ptr %.sroa.0.070.i.i.i, align 8, !alias.scope !4767, !noalias !4772 %31 = tail call i64 @llvm.fshl.i64(i64 %.068.i.i.i, i64 %.068.i.i.i, i64 5) %32 = xor i64 %.val.i.i.i.i.i, %31 %33 = mul i64 %32, 5871781006564002453 @@ -19985,7 +19982,7 @@ define hidden void @"_ZN76_$LT$hir_def..hir..type_ref..LiteralConstRef$u20$as$u2 %.sroa.0.070.i.i.i = phi ptr [ %19, %.lr.ph.i.i.i ], [ %4, %12 ] %.sroa.11.069.i.i.i = phi i64 [ %18, %.lr.ph.i.i.i ], [ 16, %12 ] %.068.i.i.i = phi i64 [ %17, %.lr.ph.i.i.i ], [ %10, %12 ] - %.val.i.i.i.i.i = load i64, ptr %.sroa.0.070.i.i.i, align 1, !alias.scope !5946, !noalias !5951 + %.val.i.i.i.i.i = load i64, ptr %.sroa.0.070.i.i.i, align 8, !alias.scope !5946, !noalias !5951 %15 = tail call i64 @llvm.fshl.i64(i64 %.068.i.i.i, i64 %.068.i.i.i, i64 5) %16 = xor i64 %.val.i.i.i.i.i, %15 %17 = mul i64 %16, 5871781006564002453 @@ -20013,7 +20010,7 @@ _ZN4core4hash6Hasher10write_i12817h0052ff63c2cb73a0E.exit: ; preds = %.lr.ph.i.i %.sroa.0.070.i.i = phi ptr [ %27, %.lr.ph.i.i ], [ %3, %20 ] %.sroa.11.069.i.i = phi i64 [ %26, %.lr.ph.i.i ], [ 16, %20 ] %.068.i.i = phi i64 [ %25, %.lr.ph.i.i ], [ %10, %20 ] - %.val.i.i.i.i = load i64, ptr %.sroa.0.070.i.i, align 1, !alias.scope !5962, !noalias !5967 + %.val.i.i.i.i = load i64, ptr %.sroa.0.070.i.i, align 8, !alias.scope !5962, !noalias !5967 %23 = tail call i64 @llvm.fshl.i64(i64 %.068.i.i, i64 %.068.i.i, i64 5) %24 = xor i64 %.val.i.i.i.i, %23 %25 = mul i64 %24, 5871781006564002453 diff --git a/bench/rust-analyzer-rs/optimized/2jezmucvqvfiuhvx.ll b/bench/rust-analyzer-rs/optimized/2jezmucvqvfiuhvx.ll index 1b2830ba997..1929271c1c2 100644 --- a/bench/rust-analyzer-rs/optimized/2jezmucvqvfiuhvx.ll +++ b/bench/rust-analyzer-rs/optimized/2jezmucvqvfiuhvx.ll @@ -14028,9 +14028,9 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t br i1 %8, label %.thread, label %.lr.ph .lr.ph: ; preds = %3, %29 - %.sroa.10.033 = phi i64 [ %9, %29 ], [ %5, %3 ] - %.sroa.014.032 = phi ptr [ %12, %29 ], [ %1, %3 ] - %.sroa.7.031 = phi i64 [ %13, %29 ], [ 0, %3 ] + %.sroa.10.033 = phi i64 [ %9, %24 ], [ %5, %3 ] + %.sroa.014.032 = phi ptr [ %12, %24 ], [ %1, %3 ] + %.sroa.7.031 = phi i64 [ %13, %24 ], [ 0, %3 ] %9 = add i64 %.sroa.10.033, -1 %10 = icmp eq ptr %.sroa.014.032, %7 br i1 %10, label %.thread, label %11 @@ -14055,8 +14055,8 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %narrow.i.i = tail call i8 @llvm.umin.i8(i8 %15, i8 2) switch i8 %narrow.i.i, label %default.unreachable [ i8 0, label %16 - i8 1, label %22 - i8 2, label %27 + i8 1, label %27 + i8 2, label %22 ] default.unreachable: ; preds = %11 @@ -14076,25 +14076,22 @@ default.unreachable: ; preds = %11 unreachable 22: ; preds = %11 - %23 = getelementptr inbounds nuw i8, ptr %.sroa.014.032, i64 8 - %24 = load ptr, ptr %23, align 8, !alias.scope !3932, !noalias !3933, !nonnull !20, !align !21, !noundef !20 - %25 = getelementptr inbounds nuw i8, ptr %.sroa.014.032, i64 16 - %26 = load i64, ptr %25, align 8, !alias.scope !3932, !noalias !3933, !noundef !20 - br label %29 + %23 = getelementptr inbounds nuw i8, ptr %.sroa.014.032, i64 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.6.i, ptr noundef nonnull readonly align 1 dereferenceable(7) %23, i64 7, i1 false), !alias.scope !3936, !noalias !3937 + br label %.sink.split -27: ; preds = %11 - %28 = getelementptr inbounds nuw i8, ptr %.sroa.014.032, i64 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.6.i, ptr noundef nonnull readonly align 1 dereferenceable(7) %28, i64 7, i1 false), !alias.scope !3936, !noalias !3937 +27: ; preds = %11, %22 + %.sroa.0.0.i13.ph = phi i8 [ %14, %22 ], [ 25, %11 ] %.sroa.7.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.014.032, i64 8 - %.sroa.7.1.copyload.i = load ptr, ptr %.sroa.7.1..sroa_idx.i, align 1, !alias.scope !3938, !noalias !3937 + %.sroa.7.1.copyload.i = load ptr, ptr %.sroa.7.1..sroa_idx.i, align 8, !alias.scope !3938, !noalias !3937 %.sroa.9.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.014.032, i64 16 - %.sroa.9.1.copyload.i = load i64, ptr %.sroa.9.1..sroa_idx.i, align 1, !alias.scope !3938, !noalias !3937 + %.sroa.9.1.copyload.i = load i64, ptr %.sroa.9.1..sroa_idx.i, align 8, !alias.scope !3938, !noalias !3937 br label %29 -29: ; preds = %27, %22, %16 - %.sroa.9.0.i = phi i64 [ %26, %22 ], [ %.sroa.9.1.copyload.i, %27 ], [ %.val1.i.i, %16 ] - %.sroa.7.0.i = phi ptr [ %24, %22 ], [ %.sroa.7.1.copyload.i, %27 ], [ %.val.i.i, %16 ] - %.sroa.0.0.i13 = phi i8 [ 25, %22 ], [ %14, %27 ], [ 24, %16 ] +29: ; preds = %27, %16 + %.sroa.9.0.i = phi i64 [ %.val1.i.i, %16 ], [ %.sroa.9.1.copyload.i, %.sink.split ] + %.sroa.7.0.i = phi ptr [ %.val.i.i, %16 ], [ %.sroa.7.1.copyload.i, %.sink.split ] + %.sroa.0.0.i13 = phi i8 [ 24, %16 ], [ %.sroa.0.0.i13.ph, %.sink.split ] call void @llvm.lifetime.start.p0(i64 7, ptr nonnull %.sroa.06.sroa.4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.06.sroa.4, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.6.i, i64 7, i1 false) call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.6.i) diff --git a/bench/rust-analyzer-rs/optimized/4tstt0w6z5grnfcy.ll b/bench/rust-analyzer-rs/optimized/4tstt0w6z5grnfcy.ll index ffa566a1413..e1d9eec730a 100644 --- a/bench/rust-analyzer-rs/optimized/4tstt0w6z5grnfcy.ll +++ b/bench/rust-analyzer-rs/optimized/4tstt0w6z5grnfcy.ll @@ -10776,9 +10776,9 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t br i1 %8, label %.thread, label %.lr.ph .lr.ph: ; preds = %3, %29 - %.sroa.10.034 = phi i64 [ %9, %29 ], [ %5, %3 ] - %.sroa.013.033 = phi ptr [ %12, %29 ], [ %1, %3 ] - %.sroa.7.032 = phi i64 [ %13, %29 ], [ 0, %3 ] + %.sroa.10.034 = phi i64 [ %9, %24 ], [ %5, %3 ] + %.sroa.013.033 = phi ptr [ %12, %24 ], [ %1, %3 ] + %.sroa.7.032 = phi i64 [ %13, %24 ], [ 0, %3 ] %9 = add i64 %.sroa.10.034, -1 %10 = icmp eq ptr %.sroa.013.033, %7 br i1 %10, label %.thread, label %11 @@ -10803,8 +10803,8 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %narrow.i.i = tail call i8 @llvm.umin.i8(i8 %15, i8 2) switch i8 %narrow.i.i, label %default.unreachable [ i8 0, label %16 - i8 1, label %22 - i8 2, label %27 + i8 1, label %.sink.split + i8 2, label %22 ] default.unreachable: ; preds = %11 @@ -10824,35 +10824,32 @@ default.unreachable: ; preds = %11 unreachable 22: ; preds = %11 - %23 = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 8 - %24 = load ptr, ptr %23, align 8, !alias.scope !3279, !noalias !3280, !nonnull !16, !align !670, !noundef !16 - %25 = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 16 - %26 = load i64, ptr %25, align 8, !alias.scope !3279, !noalias !3280, !noundef !16 - br label %29 + %23 = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.63.i, ptr noundef nonnull readonly align 1 dereferenceable(7) %23, i64 7, i1 false), !noalias !3283 + br label %.sink.split -27: ; preds = %11 - %28 = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.63.i, ptr noundef nonnull readonly align 1 dereferenceable(7) %28, i64 7, i1 false), !noalias !3283 +.sink.split:; preds = %11, %22 + %.sroa.02.0.i.ph = phi i8 [ %14, %22 ], [ 25, %11 ] %.sroa.74.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 8 - %.sroa.74.1.copyload.i = load ptr, ptr %.sroa.74.1..sroa_idx.i, align 1, !alias.scope !3284, !noalias !3283 + %.sroa.74.1.copyload.i = load ptr, ptr %.sroa.74.1..sroa_idx.i, align 8, !alias.scope !3284, !noalias !3283 %.sroa.9.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 16 - %.sroa.9.1.copyload.i = load i64, ptr %.sroa.9.1..sroa_idx.i, align 1, !alias.scope !3284, !noalias !3283 + %.sroa.9.1.copyload.i = load i64, ptr %.sroa.9.1..sroa_idx.i, align 8, !alias.scope !3284, !noalias !3283 br label %29 -29: ; preds = %27, %22, %16 - %.sroa.02.0.i = phi i8 [ 25, %22 ], [ %14, %27 ], [ 24, %16 ] - %.sroa.74.0.i = phi ptr [ %24, %22 ], [ %.sroa.74.1.copyload.i, %27 ], [ %.val.i.i, %16 ] - %.sroa.9.0.i = phi i64 [ %26, %22 ], [ %.sroa.9.1.copyload.i, %27 ], [ %.val1.i.i, %16 ] +29: ; preds = %.sink.split, %16 + %.sroa.02.0.i = phi i8 [ 24, %16 ], [ %.sroa.02.0.i.ph, %.sink.split ] + %.sroa.74.0.i = phi ptr [ %.val.i.i, %16 ], [ %.sroa.74.1.copyload.i, %.sink.split ] + %.sroa.9.0.i = phi i64 [ %.val1.i.i, %16 ], [ %.sroa.9.1.copyload.i, %.sink.split ] %30 = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 24 %31 = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 28 %32 = load i32, ptr %31, align 4, !alias.scope !3285, !noalias !3288, !noundef !16 %33 = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 32 - %34 = load i32, ptr %33, align 4, !alias.scope !3285, !noalias !3288, !noundef !16 + %34 = load i32, ptr %33, align 8, !alias.scope !3285, !noalias !3288, !noundef !16 %35 = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 36 %36 = load i32, ptr %35, align 4, !alias.scope !3285, !noalias !3288, !noundef !16 %37 = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 40 - %38 = load i32, ptr %37, align 4, !alias.scope !3285, !noalias !3288, !noundef !16 - %.val.i1.i = load i32, ptr %30, align 4, !range !676, !alias.scope !3285, !noalias !3288, !noundef !16 + %38 = load i32, ptr %37, align 8, !alias.scope !3285, !noalias !3288, !noundef !16 + %.val.i1.i = load i32, ptr %30, align 8, !range !676, !alias.scope !3285, !noalias !3288, !noundef !16 call void @llvm.lifetime.start.p0(i64 7, ptr nonnull %.sroa.06.sroa.4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.06.sroa.4, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.63.i, i64 7, i1 false) call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.63.i) diff --git a/bench/rust-analyzer-rs/optimized/84mgk0fwp2eksq1.ll b/bench/rust-analyzer-rs/optimized/84mgk0fwp2eksq1.ll index 7d99f2a113f..4064830a121 100644 --- a/bench/rust-analyzer-rs/optimized/84mgk0fwp2eksq1.ll +++ b/bench/rust-analyzer-rs/optimized/84mgk0fwp2eksq1.ll @@ -10841,9 +10841,9 @@ default.unreachable: ; preds = %"_ZN53_$LT$smol_str %42 = getelementptr inbounds nuw i8, ptr %.sroa.016.071, i64 1 %.sroa.617.i.sroa.0.0.copyload = load i56, ptr %42, align 1, !noalias !3317 %.sroa.718.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.016.071, i64 8 - %.sroa.718.1.copyload.i = load ptr, ptr %.sroa.718.1..sroa_idx.i, align 1, !alias.scope !3318, !noalias !3317 + %.sroa.718.1.copyload.i = load ptr, ptr %.sroa.718.1..sroa_idx.i, align 8, !alias.scope !3318, !noalias !3317 %.sroa.919.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.016.071, i64 16 - %.sroa.919.1.copyload.i = load i64, ptr %.sroa.919.1..sroa_idx.i, align 1, !alias.scope !3318, !noalias !3317 + %.sroa.919.1.copyload.i = load i64, ptr %.sroa.919.1..sroa_idx.i, align 8, !alias.scope !3318, !noalias !3317 %43 = zext nneg i8 %28 to i64 br label %"_ZN53_$LT$smol_str..Repr$u20$as$u20$core..clone..Clone$GT$5clone17h618261f33d488897E.exit.i" @@ -10893,9 +10893,9 @@ default.unreachable: ; preds = %"_ZN53_$LT$smol_str %59 = getelementptr inbounds nuw i8, ptr %.sroa.016.071, i64 1 %.sroa.6.i.sroa.0.0.copyload = load i56, ptr %59, align 1, !noalias !3317 %.sroa.7.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.016.071, i64 8 - %.sroa.7.1.copyload.i = load ptr, ptr %.sroa.7.1..sroa_idx.i, align 1, !alias.scope !3327, !noalias !3317 + %.sroa.7.1.copyload.i = load ptr, ptr %.sroa.7.1..sroa_idx.i, align 8, !alias.scope !3327, !noalias !3317 %.sroa.9.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.016.071, i64 16 - %.sroa.9.1.copyload.i = load i64, ptr %.sroa.9.1..sroa_idx.i, align 1, !alias.scope !3327, !noalias !3317 + %.sroa.9.1.copyload.i = load i64, ptr %.sroa.9.1..sroa_idx.i, align 8, !alias.scope !3327, !noalias !3317 %60 = zext nneg i8 %45 to i64 br label %"_ZN53_$LT$smol_str..Repr$u20$as$u20$core..clone..Clone$GT$5clone17h618261f33d488897E.exit8.i" @@ -10910,8 +10910,8 @@ default.unreachable: ; preds = %"_ZN53_$LT$smol_str %narrow.i9.i = tail call i8 @llvm.umin.i8(i8 %61, i8 2) switch i8 %narrow.i9.i, label %default.unreachable [ i8 0, label %62 - i8 1, label %68 - i8 2, label %73 + i8 1, label %78 + i8 2, label %68 ] 62: ; preds = %"_ZN53_$LT$smol_str..Repr$u20$as$u20$core..clone..Clone$GT$5clone17h618261f33d488897E.exit8.i" @@ -10928,25 +10928,22 @@ default.unreachable: ; preds = %"_ZN53_$LT$smol_str unreachable 68: ; preds = %"_ZN53_$LT$smol_str..Repr$u20$as$u20$core..clone..Clone$GT$5clone17h618261f33d488897E.exit8.i" - %69 = getelementptr inbounds nuw i8, ptr %.sroa.016.071, i64 32 - %70 = load ptr, ptr %69, align 8, !alias.scope !3333, !noalias !3334, !nonnull !23, !align !363, !noundef !23 - %71 = getelementptr inbounds nuw i8, ptr %.sroa.016.071, i64 40 - %72 = load i64, ptr %71, align 8, !alias.scope !3333, !noalias !3334, !noundef !23 - br label %"_ZN53_$LT$smol_str..Repr$u20$as$u20$core..clone..Clone$GT$5clone17h618261f33d488897E.exit14.i" + %69 = getelementptr inbounds nuw i8, ptr %.sroa.016.071, i64 25 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.620.i, ptr noundef nonnull readonly align 1 dereferenceable(7) %69, i64 7, i1 false), !noalias !3317 + br label %73 -73: ; preds = %"_ZN53_$LT$smol_str..Repr$u20$as$u20$core..clone..Clone$GT$5clone17h618261f33d488897E.exit8.i" - %74 = getelementptr inbounds nuw i8, ptr %.sroa.016.071, i64 25 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.620.i, ptr noundef nonnull readonly align 1 dereferenceable(7) %74, i64 7, i1 false), !noalias !3317 +73: ; preds = %"_ZN53_$LT$smol_str..Repr$u20$as$u20$core..clone..Clone$GT$5clone17h618261f33d488897E.exit8.i", %68 + %.sroa.0.0.i15.ph = phi i8 [ %21, %68 ], [ 25, %"_ZN53_$LT$smol_str..Repr$u20$as$u20$core..clone..Clone$GT$5clone17h618261f33d488897E.exit8.i" ] %.sroa.721.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.016.071, i64 32 - %.sroa.721.1.copyload.i = load ptr, ptr %.sroa.721.1..sroa_idx.i, align 1, !alias.scope !3336, !noalias !3317 + %.sroa.721.1.copyload.i = load ptr, ptr %.sroa.721.1..sroa_idx.i, align 8, !alias.scope !3336, !noalias !3317 %.sroa.922.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.016.071, i64 40 - %.sroa.922.1.copyload.i = load i64, ptr %.sroa.922.1..sroa_idx.i, align 1, !alias.scope !3336, !noalias !3317 + %.sroa.922.1.copyload.i = load i64, ptr %.sroa.922.1..sroa_idx.i, align 8, !alias.scope !3336, !noalias !3317 br label %"_ZN53_$LT$smol_str..Repr$u20$as$u20$core..clone..Clone$GT$5clone17h618261f33d488897E.exit14.i" -"_ZN53_$LT$smol_str..Repr$u20$as$u20$core..clone..Clone$GT$5clone17h618261f33d488897E.exit14.i": ; preds = %73, %68, %62 - %.sroa.0.0.i15 = phi i8 [ 25, %68 ], [ %21, %73 ], [ 24, %62 ] - %.sroa.721.0.i = phi ptr [ %70, %68 ], [ %.sroa.721.1.copyload.i, %73 ], [ %.val.i10.i, %62 ] - %.sroa.922.0.i = phi i64 [ %72, %68 ], [ %.sroa.922.1.copyload.i, %73 ], [ %.val1.i11.i, %62 ] +"_ZN53_$LT$smol_str..Repr$u20$as$u20$core..clone..Clone$GT$5clone17h618261f33d488897E.exit14.i": ; preds = %73, %62 + %.sroa.0.0.i15 = phi i8 [ 24, %62 ], [ %.sroa.0.0.i15.ph, %"_ZN53_$LT$smol_str..Repr$u20$as$u20$core..clone..Clone$GT$5clone17h618261f33d488897E.exit14.i.sink.split" ] + %.sroa.721.0.i = phi ptr [ %.val.i10.i, %62 ], [ %.sroa.721.1.copyload.i, %"_ZN53_$LT$smol_str..Repr$u20$as$u20$core..clone..Clone$GT$5clone17h618261f33d488897E.exit14.i.sink.split" ] + %.sroa.922.0.i = phi i64 [ %.val1.i11.i, %62 ], [ %.sroa.922.1.copyload.i, %"_ZN53_$LT$smol_str..Repr$u20$as$u20$core..clone..Clone$GT$5clone17h618261f33d488897E.exit14.i.sink.split" ] %.sroa.026.1.insert.ext = zext i56 %.sroa.6.i.sroa.0.2 to i64 %.sroa.026.1.insert.shift = shl nuw i64 %.sroa.026.1.insert.ext, 8 %.sroa.026.1.insert.insert = or disjoint i64 %.sroa.015.0.i, %.sroa.026.1.insert.shift @@ -10997,16 +10994,16 @@ default.unreachable: ; preds = %"_ZN53_$LT$smol_str to label %"_ZN61_$LT$cfg..cfg_expr..CfgExpr$u20$as$u20$core..clone..Clone$GT$5clone17h67645bf403a59871E.exit" unwind label %83 "_ZN61_$LT$cfg..cfg_expr..CfgExpr$u20$as$u20$core..clone..Clone$GT$5clone17h67645bf403a59871E.exit": ; preds = %.noexc13, %.noexc, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit", %17, %77 - %.sroa.18.1 = phi i64 [ %.sroa.18.2, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.18.061, %.noexc ], [ %.sroa.18.061, %.noexc13 ], [ %.sroa.18.061, %17 ], [ %.sroa.18.061, %77 ] - %.sroa.17.1 = phi ptr [ %.sroa.17.2, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.17.062, %.noexc ], [ %.sroa.17.062, %.noexc13 ], [ %.sroa.17.062, %17 ], [ %.sroa.17.062, %77 ] - %.sroa.11.sroa.4.1 = phi ptr [ %.sroa.17.2, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.11.sroa.4.063, %.noexc ], [ %.sroa.11.sroa.4.063, %.noexc13 ], [ %.sroa.11.sroa.4.063, %17 ], [ %.sroa.11.sroa.4.063, %77 ] - %.sroa.11.sroa.5.1 = phi i64 [ %.sroa.18.2, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.11.sroa.5.064, %.noexc ], [ %.sroa.11.sroa.5.064, %.noexc13 ], [ %.sroa.11.sroa.5.064, %17 ], [ %.sroa.11.sroa.5.064, %77 ] - %.sroa.721.sroa.0.1 = phi ptr [ %.sroa.737.0, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.721.sroa.0.0.copyload39, %.noexc ], [ %.sroa.721.sroa.0.0.copyload, %.noexc13 ], [ %.sroa.721.sroa.0.065, %17 ], [ %.sroa.721.sroa.0.065, %77 ] - %.sroa.721.sroa.6.1 = phi i64 [ %.sroa.1038.0, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.721.sroa.6.0.copyload41, %.noexc ], [ %.sroa.721.sroa.6.0.copyload, %.noexc13 ], [ %.sroa.721.sroa.6.066, %17 ], [ %.sroa.721.sroa.6.066, %77 ] - %.sroa.724.0 = phi i8 [ %.sroa.12.0, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ 29, %.noexc ], [ 30, %.noexc13 ], [ 27, %17 ], [ 31, %77 ] - %.sroa.017.1 = phi ptr [ %.sroa.026.2, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.017.0.copyload20, %.noexc ], [ %.sroa.017.0.copyload19, %.noexc13 ], [ %.sroa.017.067, %17 ], [ %78, %77 ] - %.sroa.6.i.sroa.0.1 = phi i56 [ %.sroa.6.i.sroa.0.3, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.6.i.sroa.0.070, %.noexc ], [ %.sroa.6.i.sroa.0.070, %.noexc13 ], [ %.sroa.6.i.sroa.0.070, %17 ], [ %.sroa.6.i.sroa.0.070, %77 ] - %.sroa.617.i.sroa.0.1 = phi i56 [ %.sroa.617.i.sroa.0.3, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.617.i.sroa.0.072, %.noexc ], [ %.sroa.617.i.sroa.0.072, %.noexc13 ], [ %.sroa.617.i.sroa.0.072, %17 ], [ %.sroa.617.i.sroa.0.072, %77 ] + %.sroa.18.1 = phi i64 [ %.sroa.18.2, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.18.061, %.noexc ], [ %.sroa.18.061, %.noexc13 ], [ %.sroa.18.061, %17 ], [ %.sroa.18.061, %72 ] + %.sroa.17.1 = phi ptr [ %.sroa.17.2, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.17.062, %.noexc ], [ %.sroa.17.062, %.noexc13 ], [ %.sroa.17.062, %17 ], [ %.sroa.17.062, %72 ] + %.sroa.11.sroa.4.1 = phi ptr [ %.sroa.17.2, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.11.sroa.4.063, %.noexc ], [ %.sroa.11.sroa.4.063, %.noexc13 ], [ %.sroa.11.sroa.4.063, %17 ], [ %.sroa.11.sroa.4.063, %72 ] + %.sroa.11.sroa.5.1 = phi i64 [ %.sroa.18.2, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.11.sroa.5.064, %.noexc ], [ %.sroa.11.sroa.5.064, %.noexc13 ], [ %.sroa.11.sroa.5.064, %17 ], [ %.sroa.11.sroa.5.064, %72 ] + %.sroa.721.sroa.0.1 = phi ptr [ %.sroa.737.0, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.721.sroa.0.0.copyload39, %.noexc ], [ %.sroa.721.sroa.0.0.copyload, %.noexc13 ], [ %.sroa.721.sroa.0.065, %17 ], [ %.sroa.721.sroa.0.065, %72 ] + %.sroa.721.sroa.6.1 = phi i64 [ %.sroa.1038.0, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.721.sroa.6.0.copyload41, %.noexc ], [ %.sroa.721.sroa.6.0.copyload, %.noexc13 ], [ %.sroa.721.sroa.6.066, %17 ], [ %.sroa.721.sroa.6.066, %72 ] + %.sroa.724.0 = phi i8 [ %.sroa.12.0, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ 29, %.noexc ], [ 30, %.noexc13 ], [ 27, %17 ], [ 31, %72 ] + %.sroa.017.1 = phi ptr [ %.sroa.026.2, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.017.0.copyload20, %.noexc ], [ %.sroa.017.0.copyload19, %.noexc13 ], [ %.sroa.017.067, %17 ], [ %78, %72 ] + %.sroa.6.i.sroa.0.1 = phi i56 [ %.sroa.6.i.sroa.0.3, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.6.i.sroa.0.070, %.noexc ], [ %.sroa.6.i.sroa.0.070, %.noexc13 ], [ %.sroa.6.i.sroa.0.070, %17 ], [ %.sroa.6.i.sroa.0.070, %72 ] + %.sroa.617.i.sroa.0.1 = phi i56 [ %.sroa.617.i.sroa.0.3, %"_ZN61_$LT$cfg..cfg_expr..CfgAtom$u20$as$u20$core..clone..Clone$GT$5clone17h7a4a4c235f7e6035E.exit" ], [ %.sroa.617.i.sroa.0.072, %.noexc ], [ %.sroa.617.i.sroa.0.072, %.noexc13 ], [ %.sroa.617.i.sroa.0.072, %17 ], [ %.sroa.617.i.sroa.0.072, %72 ] %79 = getelementptr inbounds nuw [0 x { [6 x i64] }], ptr %9, i64 0, i64 %.sroa.7.069 store ptr %.sroa.017.1, ptr %79, align 8 %.sroa.06.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %79, i64 8 @@ -11035,7 +11032,7 @@ default.unreachable: ; preds = %"_ZN53_$LT$smol_str cleanup store i64 %.sroa.7.069, ptr %11, align 8 invoke void @"_ZN4core3ptr66drop_in_place$LT$alloc..vec..Vec$LT$cfg..cfg_expr..CfgExpr$GT$$GT$17h45b6769799566e5eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #19 - to label %84 unwind label %81 + to label %79 unwind label %81 84: ; preds = %83 resume { ptr, i32 } %lpad.loopexit diff --git a/bench/rustfmt-rs/optimized/3n0n7c4xrusd0kzl.ll b/bench/rustfmt-rs/optimized/3n0n7c4xrusd0kzl.ll index 463a61396b7..13e54f3fcab 100644 --- a/bench/rustfmt-rs/optimized/3n0n7c4xrusd0kzl.ll +++ b/bench/rustfmt-rs/optimized/3n0n7c4xrusd0kzl.ll @@ -16002,9 +16002,9 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %53 = getelementptr inbounds nuw i8, ptr %.sroa.013.044, i64 60 %54 = load i32, ptr %53, align 4, !alias.scope !3172, !noalias !3156 %.sroa.5.i.sroa.4.2..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %.sroa.013.044, i64 64 - %.sroa.5.i.sroa.4.2.copyload.i.i = load ptr, ptr %.sroa.5.i.sroa.4.2..sroa_idx.i.i, align 4, !alias.scope !3172, !noalias !3156 + %.sroa.5.i.sroa.4.2.copyload.i.i = load ptr, ptr %.sroa.5.i.sroa.4.2..sroa_idx.i.i, align 8, !alias.scope !3172, !noalias !3156 %.sroa.5.i.sroa.5.2..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %.sroa.013.044, i64 72 - %.sroa.5.i.sroa.5.2.copyload.i.i = load i32, ptr %.sroa.5.i.sroa.5.2..sroa_idx.i.i, align 4, !alias.scope !3172, !noalias !3156 + %.sroa.5.i.sroa.5.2.copyload.i.i = load i32, ptr %.sroa.5.i.sroa.5.2..sroa_idx.i.i, align 8, !alias.scope !3172, !noalias !3156 %55 = zext i32 %.sroa.5.i.sroa.5.2.copyload.i.i to i64 br label %"_ZN66_$LT$alloc..borrow..Cow$LT$B$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h5a08b671c45b4bc6E.exit.i.i" @@ -16181,7 +16181,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t ret void 17: ; preds = %14 - %.val.i = load i32, ptr %.sroa.013.028, align 4, !alias.scope !3184, !noalias !3189, !noundef !4 + %.val.i = load i32, ptr %.sroa.013.028, align 8, !alias.scope !3184, !noalias !3189, !noundef !4 %18 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 4 %.val3.i = load i32, ptr %18, align 4, !alias.scope !3191, !noalias !3189, !noundef !4 store i32 %.val.i, ptr %4, align 8 @@ -16605,11 +16605,11 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %18 = getelementptr inbounds nuw i8, ptr %.sroa.013.031, i64 40 %19 = getelementptr inbounds nuw i8, ptr %.sroa.013.031, i64 16 %20 = getelementptr inbounds nuw i8, ptr %.sroa.013.031, i64 32 - %.val8.i = load i8, ptr %20, align 1, !range !3215, !alias.scope !3231, !noalias !3234, !noundef !4 + %.val8.i = load i8, ptr %20, align 8, !range !3215, !alias.scope !3231, !noalias !3234, !noundef !4 %21 = getelementptr inbounds nuw i8, ptr %.sroa.013.031, i64 33 %.val9.i = load i8, ptr %21, align 1, !range !3215, !alias.scope !3231, !noalias !3234, !noundef !4 %22 = getelementptr inbounds nuw i8, ptr %.sroa.013.031, i64 34 - %.val10.i = load i8, ptr %22, align 1, !range !139, !alias.scope !3231, !noalias !3234, !noundef !4 + %.val10.i = load i8, ptr %22, align 2, !range !139, !alias.scope !3231, !noalias !3234, !noundef !4 %23 = getelementptr inbounds nuw [0 x { [5 x i64] }], ptr %6, i64 0, i64 %.sroa.7.030 store ptr %.val.i, ptr %23, align 8 %.sroa.07.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %23, i64 8 @@ -16983,7 +16983,7 @@ _RNvXsr_NtCs2al5CLA23zg_9rustc_ast11tokenstreamNtB5_14AttributesDataNtNtCs9nhK3F %.sroa.618.1 = phi i64 [ %.sroa.618.0.copyload19, %.noexc ], [ %.sroa.0.0.i.i.i.i, %_RNvXsr_NtCs2al5CLA23zg_9rustc_ast11tokenstreamNtB5_14AttributesDataNtNtCs9nhK3FOW46N_4core5clone5Clone5clone.exit.i.i ], [ %.sroa.618.041, %15 ] %.sroa.720.1 = phi i64 [ %27, %.noexc ], [ %40, %_RNvXsr_NtCs2al5CLA23zg_9rustc_ast11tokenstreamNtB5_14AttributesDataNtNtCs9nhK3FOW46N_4core5clone5Clone5clone.exit.i.i ], [ %.sroa.720.043, %15 ] %42 = getelementptr inbounds nuw i8, ptr %.sroa.015.042, i64 24 - %.val.i = load i8, ptr %42, align 1, !range !3215, !alias.scope !3254, !noalias !3274, !noundef !4 + %.val.i = load i8, ptr %42, align 8, !range !3215, !alias.scope !3254, !noalias !3274, !noundef !4 %43 = getelementptr inbounds nuw [0 x { [4 x i64] }], ptr %7, i64 0, i64 %.sroa.7.039 store i8 %.sroa.016.0, ptr %43, align 8 %.sroa.07.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %43, i64 1 @@ -18325,7 +18325,7 @@ _RNvXs6f_NtCs2al5CLA23zg_9rustc_ast3astNtB6_12InlineAsmSymNtNtCs9nhK3FOW46N_4cor %.sroa.019.sroa.0.0 = phi i32 [ %29, %"_ZN65_$LT$rustc_ast..ptr..P$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17he1c47e7d99fd7b85E.exit.i.i" ], [ %42, %129 ], [ %51, %"_ZN65_$LT$rustc_ast..ptr..P$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17he1c47e7d99fd7b85E.exit9.i.i" ], [ %68, %139 ], [ %.sroa.019.sroa.0.0.extract.trunc, %"_ZN65_$LT$rustc_ast..ptr..P$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17he1c47e7d99fd7b85E.exit17.i.i" ], [ %.sroa.019.sroa.0.0.extract.trunc40, %_RNvXs6f_NtCs2al5CLA23zg_9rustc_ast3astNtB6_12InlineAsmSymNtNtCs9nhK3FOW46N_4core5clone5Clone5clone.exit.i.i ] %.sroa.019.sroa.9.0 = phi i32 [ %31, %"_ZN65_$LT$rustc_ast..ptr..P$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17he1c47e7d99fd7b85E.exit.i.i" ], [ %44, %129 ], [ %53, %"_ZN65_$LT$rustc_ast..ptr..P$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17he1c47e7d99fd7b85E.exit9.i.i" ], [ %70, %139 ], [ %.sroa.019.sroa.9.0.extract.trunc, %"_ZN65_$LT$rustc_ast..ptr..P$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17he1c47e7d99fd7b85E.exit17.i.i" ], [ %.sroa.019.sroa.9.0.extract.trunc42, %_RNvXs6f_NtCs2al5CLA23zg_9rustc_ast3astNtB6_12InlineAsmSymNtNtCs9nhK3FOW46N_4core5clone5Clone5clone.exit.i.i ] %148 = getelementptr inbounds nuw i8, ptr %.sroa.018.0121, i64 40 - %.val.i = load i64, ptr %148, align 4, !alias.scope !3353, !noalias !3406 + %.val.i = load i64, ptr %148, align 8, !alias.scope !3353, !noalias !3406 %149 = getelementptr inbounds nuw [0 x { [6 x i64] }], ptr %15, i64 0, i64 %.sroa.7.0119 %.sroa.019.sroa.9.0.insert.ext = zext i32 %.sroa.019.sroa.9.0 to i64 %.sroa.019.sroa.9.0.insert.shift = shl nuw i64 %.sroa.019.sroa.9.0.insert.ext, 32 @@ -18411,7 +18411,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %19 = getelementptr inbounds nuw i8, ptr %.sroa.015.041, i64 56 %20 = add nuw nsw i64 %.sroa.7.038, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !3407) - %.val.i = load i64, ptr %.sroa.015.041, align 4, !alias.scope !3407, !noalias !3410 + %.val.i = load i64, ptr %.sroa.015.041, align 8, !alias.scope !3407, !noalias !3410 %21 = getelementptr inbounds nuw i8, ptr %.sroa.015.041, i64 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !3412) %22 = load i64, ptr %21, align 8, !range !3415, !alias.scope !3416, !noalias !3417, !noundef !4 diff --git a/bench/slurm/optimized/env.ll b/bench/slurm/optimized/env.ll index 5bdeecc597c..203ee8a2602 100644 --- a/bench/slurm/optimized/env.ll +++ b/bench/slurm/optimized/env.ll @@ -13,7 +13,7 @@ define dso_local noundef zeroext i1 @load_env(ptr noundef %0, ptr noundef writeo 4: ; preds = %13, %3 %5 = phi i8 [ %15, %13 ], [ %.pre, %3 ] %indvars.iv178 = phi i32 [ %indvars.iv.next179, %13 ], [ 2, %3 ] - %indvars.iv166 = phi i64 [ %indvars.iv.next167, %13 ], [ 1, %3 ] + %indvars.iv166 = phi i32 [ %indvars.iv.next167, %13 ], [ 1, %3 ] %indvars.iv = phi i64 [ %indvars.iv.next, %13 ], [ 0, %3 ] %.not = icmp eq i8 %5, 0 br i1 %.not, label %.critedge, label %6 @@ -33,7 +33,7 @@ define dso_local noundef zeroext i1 @load_env(ptr noundef %0, ptr noundef writeo %14 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv.next %15 = load i8, ptr %14, align 1 %.not117 = icmp eq i8 %15, 0 - %indvars.iv.next167 = add nuw i64 %indvars.iv166, 1 + %indvars.iv.next167 = add nuw i32 %indvars.iv166, 1 %indvars.iv.next179 = add i32 %indvars.iv178, 1 br i1 %.not117, label %.critedge119, label %4, !llvm.loop !8 @@ -44,7 +44,7 @@ define dso_local noundef zeroext i1 @load_env(ptr noundef %0, ptr noundef writeo 17: ; preds = %29, %.critedge %18 = phi i8 [ %28, %29 ], [ %5, %.critedge ] %indvars.iv181 = phi i32 [ %indvars.iv.next182, %29 ], [ %indvars.iv178, %.critedge ] - %indvars.iv169 = phi i64 [ %indvars.iv.next170, %29 ], [ %indvars.iv166, %.critedge ] + %indvars.iv169 = phi i32 [ %indvars.iv.next170, %29 ], [ %indvars.iv166, %.critedge ] %indvars.iv159 = phi i64 [ %indvars.iv.next160, %29 ], [ %indvars.iv, %.critedge ] %.not101 = icmp eq i8 %18, 0 br i1 %.not101, label %.critedge2, label %19 @@ -68,7 +68,7 @@ define dso_local noundef zeroext i1 @load_env(ptr noundef %0, ptr noundef writeo 29: ; preds = %26 %30 = icmp eq i8 %18, 61 - %indvars.iv.next170 = add i64 %indvars.iv169, 1 + %indvars.iv.next170 = add i32 %indvars.iv169, 1 %indvars.iv.next182 = add i32 %indvars.iv181, 1 br i1 %30, label %.critedge2, label %17, !llvm.loop !11 @@ -80,7 +80,7 @@ define dso_local noundef zeroext i1 @load_env(ptr noundef %0, ptr noundef writeo 32: ; preds = %41, %.critedge2 %33 = phi i8 [ %43, %41 ], [ %.pre200, %.critedge2 ] %indvars.iv184 = phi i32 [ %indvars.iv.next185, %41 ], [ %indvars.iv181, %.critedge2 ] - %indvars.iv172 = phi i64 [ %indvars.iv.next173, %41 ], [ %indvars.iv169, %.critedge2 ] + %indvars.iv172 = phi i32 [ %indvars.iv.next173, %41 ], [ %indvars.iv169, %.critedge2 ] %indvars.iv163 = phi i64 [ %indvars.iv.next164, %41 ], [ %indvars.iv159, %.critedge2 ] %.not104 = icmp eq i8 %33, 0 br i1 %.not104, label %.critedge119, label %34 @@ -100,7 +100,7 @@ define dso_local noundef zeroext i1 @load_env(ptr noundef %0, ptr noundef writeo %42 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv.next164 %43 = load i8, ptr %42, align 1 %.not116 = icmp eq i8 %43, 0 - %indvars.iv.next173 = add i64 %indvars.iv172, 1 + %indvars.iv.next173 = add i32 %indvars.iv172, 1 %indvars.iv.next185 = add i32 %indvars.iv184, 1 br i1 %.not116, label %.critedge119, label %32, !llvm.loop !12 @@ -109,25 +109,26 @@ define dso_local noundef zeroext i1 @load_env(ptr noundef %0, ptr noundef writeo br i1 %.not106, label %44, label %.critedge119 44: ; preds = %.critedge4 - %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv172 + %45 = sext i32 %indvars.iv172 to i64 + %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 %45 %.pre201 = load i8, ptr %.phi.trans.insert, align 1 br label %45 45: ; preds = %56, %44 - %46 = phi i8 [ %58, %56 ], [ %.pre201, %44 ] - %indvars.iv187 = phi i32 [ %indvars.iv.next188, %56 ], [ %indvars.iv184, %44 ] - %indvars.iv175 = phi i64 [ %indvars.iv.next176, %56 ], [ %indvars.iv172, %44 ] + %46 = phi i8 [ %58, %57 ], [ %.pre201, %44 ] + %indvars.iv187 = phi i32 [ %indvars.iv.next188, %57 ], [ %indvars.iv184, %44 ] + %indvars.iv175 = phi i64 [ %indvars.iv.next176, %57 ], [ %45, %44 ] %cond = icmp eq i8 %46, 0 br i1 %cond, label %.preheader.loopexit, label %51 .preheader.loopexit: ; preds = %45 - %47 = trunc nuw i64 %indvars.iv175 to i32 + %47 = trunc nsw i64 %indvars.iv175 to i32 br label %.preheader .preheader: ; preds = %.preheader.loopexit, %.critedge6 %.087151 = phi i32 [ %47, %.preheader.loopexit ], [ %59, %.critedge6 ] - %48 = zext i32 %.087151 to i64 - %scevgep = getelementptr nuw i8, ptr %0, i64 %48 + %49 = sext i32 %.087151 to i64 + %scevgep = getelementptr i8, ptr %0, i64 %49 %strlen = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %scevgep) %49 = trunc i64 %strlen to i32 %50 = add i32 %.087151, %49 @@ -142,24 +143,24 @@ define dso_local noundef zeroext i1 @load_env(ptr noundef %0, ptr noundef writeo br i1 %.not108, label %.critedge6, label %56 56: ; preds = %51 - %indvars.iv.next176 = add nuw nsw i64 %indvars.iv175, 1 - %57 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv.next176 + %indvars.iv.next176 = add nsw i64 %indvars.iv175, 1 + %57 = getelementptr inbounds i8, ptr %0, i64 %indvars.iv.next176 %58 = load i8, ptr %57, align 1 %.not115 = icmp eq i8 %58, 0 %indvars.iv.next188 = add i32 %indvars.iv187, 1 br i1 %.not115, label %.critedge119, label %45, !llvm.loop !13 .critedge6: ; preds = %51 - %59 = trunc nuw i64 %indvars.iv175 to i32 + %59 = trunc nsw i64 %indvars.iv175 to i32 switch i8 %46, label %.preheader [ i8 39, label %60 i8 34, label %60 ] 60: ; preds = %.critedge6, %.critedge6 - %61 = add nuw nsw i32 %59, 1 - %62 = zext nneg i32 %61 to i64 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 %62 + %61 = add nsw i32 %59, 1 + %63 = sext i32 %61 to i64 + %63 = getelementptr inbounds i8, ptr %0, i64 %63 %64 = load i8, ptr %63, align 1 %.not110139 = icmp eq i8 %64, 0 br i1 %.not110139, label %._crit_edge, label %.lr.ph.preheader @@ -169,8 +170,8 @@ define dso_local noundef zeroext i1 @load_env(ptr noundef %0, ptr noundef writeo br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %69 - %indvars.iv191 = phi i64 [ %65, %.lr.ph.preheader ], [ %indvars.iv.next192, %69 ] - %66 = phi i8 [ %64, %.lr.ph.preheader ], [ %71, %69 ] + %indvars.iv191 = phi i64 [ %65, %.lr.ph.preheader ], [ %indvars.iv.next192, %70 ] + %66 = phi i8 [ %64, %.lr.ph.preheader ], [ %71, %70 ] %67 = icmp eq i8 %66, %46 br i1 %67, label %.preheader121, label %69 @@ -190,7 +191,7 @@ define dso_local noundef zeroext i1 @load_env(ptr noundef %0, ptr noundef writeo br label %.critedge119 73: ; preds = %.preheader121, %76 - %indvars.iv194 = phi i64 [ %indvars.iv191, %.preheader121 ], [ %indvars.iv.next195, %76 ] + %indvars.iv194 = phi i64 [ %indvars.iv191, %.preheader121 ], [ %indvars.iv.next195, %77 ] %indvars.iv.next195 = add nsw i64 %indvars.iv194, 1 %74 = getelementptr inbounds i8, ptr %0, i64 %indvars.iv.next195 %75 = load i8, ptr %74, align 1 @@ -206,15 +207,15 @@ define dso_local noundef zeroext i1 @load_env(ptr noundef %0, ptr noundef writeo br i1 %.not114, label %.critedge119, label %73, !llvm.loop !15 .loopexit: ; preds = %73, %.preheader - %.188 = phi i32 [ %.087151, %.preheader ], [ %61, %73 ] - %.186 = phi i32 [ %50, %.preheader ], [ %68, %73 ] - %81 = sub nsw i64 %indvars.iv159, %indvars.iv - %sext = shl i64 %81, 32 - %82 = ashr exact i64 %sext, 32 - %83 = tail call ptr @xstrndup(ptr noundef nonnull %16, i64 noundef %82) #5 - store ptr %83, ptr %1, align 8 - %84 = sext i32 %.188 to i64 - %85 = getelementptr inbounds i8, ptr %0, i64 %84 + %.188 = phi i64 [ %49, %.preheader ], [ %63, %74 ] + %.186 = phi i32 [ %.087151, %.preheader ], [ %62, %74 ] + %.186 = phi i32 [ %51, %.preheader ], [ %69, %74 ] + %82 = sub nsw i64 %indvars.iv159, %indvars.iv + %sext = shl i64 %82, 32 + %83 = ashr exact i64 %sext, 32 + %84 = tail call ptr @xstrndup(ptr noundef nonnull %16, i64 noundef %83) #5 + store ptr %84, ptr %1, align 8 + %85 = getelementptr inbounds i8, ptr %0, i64 %.188 %86 = sub nsw i32 %.186, %.188 %87 = sext i32 %86 to i64 %88 = tail call ptr @xstrndup(ptr noundef nonnull %85, i64 noundef %87) #5 @@ -222,7 +223,7 @@ define dso_local noundef zeroext i1 @load_env(ptr noundef %0, ptr noundef writeo br label %.critedge119 .critedge119: ; preds = %13, %26, %32, %41, %56, %76, %._crit_edge, %.critedge4, %.loopexit - %.083 = phi i1 [ true, %.loopexit ], [ false, %.critedge4 ], [ false, %._crit_edge ], [ false, %76 ], [ false, %56 ], [ false, %41 ], [ false, %32 ], [ false, %26 ], [ false, %13 ] + %.083 = phi i1 [ true, %.loopexit ], [ false, %.critedge4 ], [ false, %._crit_edge ], [ false, %77 ], [ false, %57 ], [ false, %41 ], [ false, %32 ], [ false, %26 ], [ false, %13 ] ret i1 %.083 } diff --git a/bench/slurm/optimized/hostlist.ll b/bench/slurm/optimized/hostlist.ll index e78e662fbd8..893726896db 100644 --- a/bench/slurm/optimized/hostlist.ll +++ b/bench/slurm/optimized/hostlist.ll @@ -1870,7 +1870,7 @@ _test_box.exit.thread: ; preds = %.preheader.i, %_tes %161 = and i64 %indvars.iv.next240, 4294967295 %162 = getelementptr inbounds nuw i8, ptr %2, i64 %161 store i8 120, ptr %162, align 1 - %.6208 = add nuw i64 %indvars.iv239, 2 + %.6208 = add i64 %indvars.iv239, 2 %163 = and i64 %.6208, 4294967295 %smax255 = tail call i32 @llvm.smax.i32(i32 %.0, i32 1) %wide.trip.count256 = zext nneg i32 %smax255 to i64 @@ -8143,7 +8143,7 @@ hostlist_parse_int_to_array.exit77: ; preds = %.lr.ph.i73 %64 = getelementptr inbounds nuw i8, ptr %2, i64 %63 store i8 45, ptr %64, align 1 %.384 = add nuw i32 %.160, 1 - %65 = zext i32 %.384 to i64 + %65 = sext i32 %.384 to i64 %wide.trip.count97 = zext i16 %4 to i64 br label %66 @@ -8157,16 +8157,17 @@ hostlist_parse_int_to_array.exit77: ; preds = %.lr.ph.i73 %70 = sext i32 %69 to i64 %71 = getelementptr inbounds i8, ptr %67, i64 %70 %72 = load i8, ptr %71, align 1 - %73 = getelementptr inbounds nuw i8, ptr %2, i64 %indvars.iv90 + %73 = getelementptr inbounds i8, ptr %2, i64 %indvars.iv90 store i8 %72, ptr %73, align 1 - %indvars.iv.next91 = add nuw nsw i64 %indvars.iv90, 1 + %indvars.iv.next91 = add nsw i64 %indvars.iv90, 1 %exitcond98.not = icmp eq i64 %indvars.iv.next93, %wide.trip.count97 br i1 %exitcond98.not, label %74, label %66, !llvm.loop !84 74: ; preds = %66 - %75 = trunc nuw i64 %indvars.iv.next91 to i32 - %76 = and i64 %indvars.iv.next91, 4294967295 - %77 = getelementptr inbounds nuw i8, ptr %2, i64 %76 + %75 = trunc nsw i64 %indvars.iv.next91 to i32 + %sext = shl i64 %indvars.iv.next91, 32 + %76 = ashr exact i64 %sext, 32 + %77 = getelementptr inbounds i8, ptr %2, i64 %76 store i8 0, ptr %77, align 1 call void @llvm.stackrestore.p0(ptr %55) br label %85 diff --git a/bench/sqlite/optimized/shell.ll b/bench/sqlite/optimized/shell.ll index d608a3d7d41..912b5a4c77e 100644 --- a/bench/sqlite/optimized/shell.ll +++ b/bench/sqlite/optimized/shell.ll @@ -9382,7 +9382,7 @@ thread-pre-split.i.i: ; preds = %269 .lr.ph136.i.i: ; preds = %.preheader.i.i %.not.i70.i = icmp eq i32 %.090125.i.i, 0 - %wide.trip.count159.i.i = zext i32 %.090125.i.i to i64 + %wide.trip.count159.i.i = sext i32 %.090125.i.i to i64 br label %310 .preheader115.i.i: ; preds = %.preheader115.i.i, %.preheader115.preheader.i.i @@ -9419,17 +9419,17 @@ thread-pre-split.i.i: ; preds = %269 ._crit_edge.i.i38: ; preds = %.lr.ph.i.i37, %310 %.193.lcssa.i.i = phi i32 [ 0, %310 ], [ %.193130.i.i, %.lr.ph.i.i37 ] - %318 = icmp samesign ult i32 %.193.lcssa.i.i, %.090125.i.i + %318 = icmp slt i32 %.193.lcssa.i.i, %.090125.i.i br i1 %318, label %.lr.ph135.preheader.i.i, label %.loopexit114.i.i .lr.ph135.preheader.i.i: ; preds = %._crit_edge.i.i38 - %319 = zext i32 %.193.lcssa.i.i to i64 + %319 = sext i32 %.193.lcssa.i.i to i64 br label %.lr.ph135.i.i .lr.ph135.i.i: ; preds = %.lr.ph135.i.i, %.lr.ph135.preheader.i.i %indvars.iv156.i.i = phi i64 [ %319, %.lr.ph135.preheader.i.i ], [ %indvars.iv.next157.i.i, %.lr.ph135.i.i ] - %indvars.iv.next157.i.i = add nuw nsw i64 %indvars.iv156.i.i, 1 - %320 = getelementptr inbounds nuw i32, ptr %296, i64 %indvars.iv.next157.i.i + %indvars.iv.next157.i.i = add nsw i64 %indvars.iv156.i.i, 1 + %320 = getelementptr inbounds i32, ptr %296, i64 %indvars.iv.next157.i.i %321 = load i32, ptr %320, align 4, !tbaa !36 %322 = add nsw i32 %321, 1 store i32 %322, ptr %320, align 4, !tbaa !36 @@ -21796,7 +21796,7 @@ import_cleanup.exit2939: ; preds = %1368, %1370, %1372 %1385 = getelementptr inbounds nuw i8, ptr %1366, i64 %indvars.iv4351 store i8 44, ptr %1385, align 1, !tbaa !25 %indvars.iv.next4352 = add nuw nsw i64 %indvars.iv4351, 2 - %1386 = getelementptr inbounds nuw i8, ptr %1385, i64 1 + %1386 = getelementptr i8, ptr %1385, i64 1 store i8 63, ptr %1386, align 1, !tbaa !25 %1387 = add nuw nsw i32 %.323593990, 1 %exitcond4355.not = icmp eq i32 %1387, %.02355 @@ -23501,7 +23501,7 @@ sub_13711: ; preds = %sub_13707, %.tail37 .preheader: ; preds = %2200 %2203 = trunc nuw nsw i64 %indvars.iv4491 to i32 %2204 = add nuw nsw i32 %2203, 1 - %2205 = icmp samesign ult i32 %2204, %.02122.lcssa.ph + %2205 = icmp slt i32 %2204, %.02122.lcssa.ph br i1 %2205, label %.lr.ph4195, label %shell_check_oom.exit3047 .lr.ph4195: ; preds = %.preheader, %.lr.ph4195 @@ -33529,7 +33529,7 @@ define internal fastcc void @decimal_result(ptr noundef %0, ptr noundef captures %.0.lcssa96 = phi i32 [ %.058, %.critedge ], [ 1, %37 ], [ 1, %46 ] %.045.lcssa95 = phi i32 [ %48, %.critedge ], [ 0, %37 ], [ %41, %46 ] %50 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %51 = zext i32 %.045.lcssa95 to i64 + %51 = sext i32 %.045.lcssa95 to i64 %52 = zext nneg i32 %.047 to i64 %53 = add nuw i32 %.0.lcssa96, %.047 %wide.trip.count79 = zext i32 %53 to i64 @@ -33539,13 +33539,13 @@ define internal fastcc void @decimal_result(ptr noundef %0, ptr noundef captures %indvars.iv74 = phi i64 [ %52, %.lr.ph66 ], [ %indvars.iv.next75, %54 ] %indvars.iv72 = phi i64 [ %51, %.lr.ph66 ], [ %indvars.iv.next73, %54 ] %55 = load ptr, ptr %50, align 8, !tbaa !57 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 %indvars.iv72 + %56 = getelementptr inbounds i8, ptr %55, i64 %indvars.iv72 %57 = load i8, ptr %56, align 1, !tbaa !25 %58 = add i8 %57, 48 %indvars.iv.next75 = add nuw nsw i64 %indvars.iv74, 1 - %59 = getelementptr inbounds nuw i8, ptr %16, i64 %indvars.iv74 + %59 = getelementptr inbounds i8, ptr %16, i64 %indvars.iv74 store i8 %58, ptr %59, align 1, !tbaa !25 - %indvars.iv.next73 = add nuw nsw i64 %indvars.iv72, 1 + %indvars.iv.next73 = add nsw i64 %indvars.iv72, 1 %exitcond80.not = icmp eq i64 %indvars.iv.next75, %wide.trip.count79 br i1 %exitcond80.not, label %._crit_edge, label %54, !llvm.loop !701 @@ -33563,23 +33563,24 @@ define internal fastcc void @decimal_result(ptr noundef %0, ptr noundef captures store i8 46, ptr %64, align 1, !tbaa !25 %65 = getelementptr inbounds nuw i8, ptr %1, i64 16 %66 = sext i32 %62 to i64 - %67 = and i64 %.146.lcssa, 4294967295 + %sext = shl i64 %.146.lcssa, 32 + %67 = ashr exact i64 %sext, 32 br label %68 68: ; preds = %68, %61 %indvars.iv83 = phi i64 [ %indvars.iv.next84, %68 ], [ %67, %61 ] %indvars.iv81 = phi i64 [ %indvars.iv.next82, %68 ], [ %66, %61 ] %69 = load ptr, ptr %65, align 8, !tbaa !57 - %70 = getelementptr inbounds nuw i8, ptr %69, i64 %indvars.iv83 + %70 = getelementptr inbounds i8, ptr %69, i64 %indvars.iv83 %71 = load i8, ptr %70, align 1, !tbaa !25 %72 = add i8 %71, 48 %indvars.iv.next82 = add nsw i64 %indvars.iv81, 1 %73 = getelementptr inbounds i8, ptr %16, i64 %indvars.iv81 store i8 %72, ptr %73, align 1, !tbaa !25 - %indvars.iv.next84 = add nuw nsw i64 %indvars.iv83, 1 + %indvars.iv.next84 = add nsw i64 %indvars.iv83, 1 %74 = load i32, ptr %13, align 4, !tbaa !61 - %75 = trunc nuw i64 %indvars.iv.next84 to i32 - %76 = icmp sgt i32 %74, %75 + %75 = sext i32 %74 to i64 + %76 = icmp slt i64 %indvars.iv.next84, %75 br i1 %76, label %68, label %.loopexit.loopexit, !llvm.loop !702 .loopexit.loopexit: ; preds = %68 @@ -46099,7 +46100,7 @@ strappend.exit: ; preds = %.lr.ph.i %.0811.i20 = phi ptr [ @.str.356, %14 ], [ %18, %.lr.ph.i18 ] %18 = getelementptr inbounds nuw i8, ptr %.0811.i20, i64 1 %indvars.iv.next.i21 = add nuw nsw i64 %indvars.iv.i19, 1 - %19 = getelementptr inbounds nuw i8, ptr %3, i64 %indvars.iv.i19 + %19 = getelementptr inbounds i8, ptr %3, i64 %indvars.iv.i19 store i8 %17, ptr %19, align 1, !tbaa !25 %20 = load i8, ptr %18, align 1, !tbaa !25 %exitcond27 = icmp eq i64 %indvars.iv.next.i21, %wide.trip.count @@ -46993,7 +46994,7 @@ strappend.exit: ; preds = %.lr.ph.i %.0811.i36 = phi ptr [ @.str.461, %23 ], [ %27, %.lr.ph.i34 ] %27 = getelementptr inbounds nuw i8, ptr %.0811.i36, i64 1 %indvars.iv.next.i37 = add nuw nsw i64 %indvars.iv.i35, 1 - %28 = getelementptr inbounds nuw i8, ptr %6, i64 %indvars.iv.i35 + %28 = getelementptr inbounds i8, ptr %6, i64 %indvars.iv.i35 store i8 %26, ptr %28, align 1, !tbaa !25 %29 = load i8, ptr %27, align 1, !tbaa !25 %exitcond60 = icmp eq i64 %indvars.iv.next.i37, %wide.trip.count @@ -47021,7 +47022,7 @@ strappend.exit39: ; preds = %.lr.ph.i34 %.0811.i42.add = add nuw nsw i64 %.0811.i42.idx, 1 %.ptr = getelementptr inbounds nuw i8, ptr @.str.462, i64 %.0811.i42.add %indvars.iv.next.i43 = add nuw nsw i64 %indvars.iv.i41, 1 - %36 = getelementptr inbounds nuw i8, ptr %6, i64 %indvars.iv.i41 + %36 = getelementptr inbounds i8, ptr %6, i64 %indvars.iv.i41 store i8 %35, ptr %36, align 1, !tbaa !25 %37 = load i8, ptr %.ptr, align 1, !tbaa !25 %exitcond61 = icmp eq i64 %.0811.i42.add, 7 diff --git a/bench/stb/optimized/stb_image_write.ll b/bench/stb/optimized/stb_image_write.ll index 08f2f3e04c1..b55610426aa 100644 --- a/bench/stb/optimized/stb_image_write.ll +++ b/bench/stb/optimized/stb_image_write.ll @@ -5755,33 +5755,34 @@ define range(i32 0, 2) i32 @stbi_write_jpg_core(ptr noundef readonly captures(no .preheader268.us: ; preds = %.preheader268.lr.ph, %._crit_edge.us %indvars.iv355 = phi i32 [ %indvars.iv.next356, %._crit_edge.us ], [ 8, %.preheader268.lr.ph ] - %.2236294.us = phi i32 [ %220, %._crit_edge.us ], [ 0, %.preheader268.lr.ph ] - %.2239293.us = phi i32 [ %221, %._crit_edge.us ], [ 0, %.preheader268.lr.ph ] - %.2243292.us = phi i32 [ %222, %._crit_edge.us ], [ 0, %.preheader268.lr.ph ] + %.2236294.us = phi i32 [ %221, %._crit_edge.us ], [ 0, %.preheader268.lr.ph ] + %.2239293.us = phi i32 [ %222, %._crit_edge.us ], [ 0, %.preheader268.lr.ph ] + %.2243292.us = phi i32 [ %223, %._crit_edge.us ], [ 0, %.preheader268.lr.ph ] %.1248291.us = phi i32 [ %259, %._crit_edge.us ], [ 0, %.preheader268.lr.ph ] br label %183 183: ; preds = %.preheader268.us, %.split284.us295 - %.3288.us = phi i32 [ %.2236294.us, %.preheader268.us ], [ %220, %.split284.us295 ] - %.3240287.us = phi i32 [ %.2239293.us, %.preheader268.us ], [ %221, %.split284.us295 ] - %.3244286.us = phi i32 [ %.2243292.us, %.preheader268.us ], [ %222, %.split284.us295 ] - %.1246285.us = phi i32 [ 0, %.preheader268.us ], [ %223, %.split284.us295 ] + %.3288.us = phi i32 [ %.2236294.us, %.preheader268.us ], [ %221, %.split284.us295 ] + %.3240287.us = phi i32 [ %.2239293.us, %.preheader268.us ], [ %222, %.split284.us295 ] + %.3244286.us = phi i32 [ %.2243292.us, %.preheader268.us ], [ %223, %.split284.us295 ] + %.1246285.us = phi i32 [ 0, %.preheader268.us ], [ %185, %.split284.us295 ] call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %37) #26 call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %38) #26 call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %39) #26 %184 = load i32, ptr @stbi__flip_vertically_on_write, align 4, !tbaa !3 %.fr = freeze i32 %184 %.not264.us = icmp eq i32 %.fr, 0 + %185 = add nuw nsw i32 %.1246285.us, 8 br i1 %.not264.us, label %.split.us.us, label %.split.us301 .split.us301: ; preds = %183, %190 %.2282.us296 = phi i32 [ %191, %190 ], [ %.1248291.us, %183 ] - %.4281.us297 = phi i32 [ %189, %190 ], [ 0, %183 ] + %.4281.us297 = phi i64 [ %indvars.iv.next352, %190 ], [ 0, %183 ] %185 = call i32 @llvm.smin.i32(i32 %.2282.us296, i32 %181) %186 = sub nsw i32 %181, %185 %187 = mul nsw i32 %186, %1 - %188 = sext i32 %.4281.us297 to i64 - %189 = add i32 %.4281.us297, 8 + %sext380 = shl i64 %.4281.us297, 32 + %189 = ashr exact i64 %sext380, 32 br label %192 190: ; preds = %192 @@ -5790,7 +5791,7 @@ define range(i32 0, 2) i32 @stbi_write_jpg_core(ptr noundef readonly captures(no br i1 %exitcond357.not, label %.split284.us295, label %.split.us301, !llvm.loop !78 192: ; preds = %192, %.split.us301 - %indvars.iv351 = phi i64 [ %indvars.iv.next352, %192 ], [ %188, %.split.us301 ] + %indvars.iv351 = phi i64 [ %indvars.iv.next352, %192 ], [ %189, %.split.us301 ] %.2228280.us299 = phi i32 [ %219, %192 ], [ %.1246285.us, %.split.us301 ] %193 = call i32 @llvm.smin.i32(i32 %.2228280.us299, i32 %182) %194 = add i32 %193, %187 @@ -5823,28 +5824,26 @@ define range(i32 0, 2) i32 @stbi_write_jpg_core(ptr noundef readonly captures(no store float %217, ptr %218, align 4, !tbaa !23 %219 = add nuw nsw i32 %.2228280.us299, 1 %indvars.iv.next352 = add nsw i64 %indvars.iv351, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next352 to i32 - %exitcond354.not = icmp eq i32 %189, %lftr.wideiv - br i1 %exitcond354.not, label %190, label %192, !llvm.loop !79 - -.split284.us295: ; preds = %190, %229 - %220 = call i32 @stbiw__jpg_processDU(ptr noundef nonnull %0, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %37, i32 noundef 8, ptr noundef nonnull %23, i32 noundef %.3288.us, ptr noundef nonnull @__const.stbi_write_jpg_core.YDC_HT, ptr noundef nonnull @__const.stbi_write_jpg_core.YAC_HT) - %221 = call i32 @stbiw__jpg_processDU(ptr noundef nonnull %0, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %38, i32 noundef 8, ptr noundef nonnull %24, i32 noundef %.3240287.us, ptr noundef nonnull @__const.stbi_write_jpg_core.UVDC_HT, ptr noundef nonnull @__const.stbi_write_jpg_core.UVAC_HT) - %222 = call i32 @stbiw__jpg_processDU(ptr noundef nonnull %0, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %39, i32 noundef 8, ptr noundef nonnull %24, i32 noundef %.3244286.us, ptr noundef nonnull @__const.stbi_write_jpg_core.UVDC_HT, ptr noundef nonnull @__const.stbi_write_jpg_core.UVAC_HT) + %220 = icmp samesign ult i32 %219, %185 + br i1 %220, label %192, label %190, !llvm.loop !79 + +.split284.us295: ; preds = %190, %228 + %221 = call i32 @stbiw__jpg_processDU(ptr noundef nonnull %0, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %37, i32 noundef 8, ptr noundef nonnull %23, i32 noundef %.3288.us, ptr noundef nonnull @__const.stbi_write_jpg_core.YDC_HT, ptr noundef nonnull @__const.stbi_write_jpg_core.YAC_HT) + %220 = call i32 @stbiw__jpg_processDU(ptr noundef nonnull %0, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %38, i32 noundef 8, ptr noundef nonnull %24, i32 noundef %.3240287.us, ptr noundef nonnull @__const.stbi_write_jpg_core.UVDC_HT, ptr noundef nonnull @__const.stbi_write_jpg_core.UVAC_HT) + %221 = call i32 @stbiw__jpg_processDU(ptr noundef nonnull %0, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %39, i32 noundef 8, ptr noundef nonnull %24, i32 noundef %.3244286.us, ptr noundef nonnull @__const.stbi_write_jpg_core.UVDC_HT, ptr noundef nonnull @__const.stbi_write_jpg_core.UVAC_HT) call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %39) #26 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %38) #26 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %37) #26 - %223 = add nuw nsw i32 %.1246285.us, 8 - %224 = icmp slt i32 %223, %1 + %224 = icmp slt i32 %185, %1 br i1 %224, label %183, label %._crit_edge.us, !llvm.loop !80 .split.us.us: ; preds = %183, %229 - %.2282.us.us = phi i32 [ %230, %229 ], [ %.1248291.us, %183 ] - %.4281.us.us = phi i32 [ %228, %229 ], [ 0, %183 ] + %.2282.us.us = phi i32 [ %230, %228 ], [ %.1248291.us, %183 ] + %.4281.us.us = phi i64 [ %indvars.iv.next358, %228 ], [ 0, %183 ] %225 = call i32 @llvm.smin.i32(i32 %.2282.us.us, i32 %181) %226 = mul nsw i32 %225, %1 - %227 = sext i32 %.4281.us.us to i64 - %228 = add i32 %.4281.us.us, 8 + %sext381 = shl i64 %.4281.us.us, 32 + %227 = ashr exact i64 %sext381, 32 br label %231 229: ; preds = %231 @@ -5853,8 +5852,8 @@ define range(i32 0, 2) i32 @stbi_write_jpg_core(ptr noundef readonly captures(no br i1 %exitcond363.not, label %.split284.us295, label %.split.us.us, !llvm.loop !78 231: ; preds = %231, %.split.us.us - %indvars.iv358 = phi i64 [ %indvars.iv.next359, %231 ], [ %227, %.split.us.us ] - %.2228280.us.us = phi i32 [ %258, %231 ], [ %.1246285.us, %.split.us.us ] + %indvars.iv358 = phi i64 [ %indvars.iv.next359, %230 ], [ %227, %.split.us.us ] + %.2228280.us.us = phi i32 [ %258, %230 ], [ %.1246285.us, %.split.us.us ] %232 = call i32 @llvm.smin.i32(i32 %.2228280.us.us, i32 %182) %233 = add i32 %232, %226 %234 = mul i32 %233, %3 @@ -5886,9 +5885,8 @@ define range(i32 0, 2) i32 @stbi_write_jpg_core(ptr noundef readonly captures(no store float %256, ptr %257, align 4, !tbaa !23 %258 = add nuw nsw i32 %.2228280.us.us, 1 %indvars.iv.next359 = add nsw i64 %indvars.iv358, 1 - %lftr.wideiv361 = trunc i64 %indvars.iv.next359 to i32 - %exitcond362.not = icmp eq i32 %228, %lftr.wideiv361 - br i1 %exitcond362.not, label %229, label %231, !llvm.loop !79 + %258 = icmp samesign ult i32 %257, %185 + br i1 %258, label %230, label %228, !llvm.loop !79 ._crit_edge.us: ; preds = %.split284.us295 %259 = add nuw nsw i32 %.1248291.us, 8 @@ -6007,7 +6005,7 @@ define range(i32 0, 2) i32 @stbi_write_jpg_core(ptr noundef readonly captures(no br label %321 319: ; preds = %321 - %320 = add nuw nsw i32 %.1305.us, 1 + %320 = add nuw i32 %.1305.us, 1 %exitcond371.not = icmp eq i32 %320, %indvars.iv369 br i1 %exitcond371.not, label %269, label %312, !llvm.loop !85 diff --git a/bench/stockfish/optimized/uci.ll b/bench/stockfish/optimized/uci.ll index cac499680d8..37c28299668 100644 --- a/bench/stockfish/optimized/uci.ll +++ b/bench/stockfish/optimized/uci.ll @@ -3074,7 +3074,7 @@ define linkonce_odr dso_local noundef i64 @_ZN9Stockfish5perftILb1EEEmRNS_8Posit %.02629.us = phi ptr [ %24, %.lr.ph.split.us ], [ %4, %.lr.ph ] %15 = add i64 %.02530.us, 1 %16 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9StockfishlsERSoNS_8SyncCoutE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef 0) #21 - %.sroa.0.0.copyload.us = load i16, ptr %.02629.us, align 4 + %.sroa.0.0.copyload.us = load i16, ptr %.02629.us, align 8 %17 = load i8, ptr %14, align 8 %18 = trunc i8 %17 to i1 call void @_ZN9Stockfish3UCI4moveB5cxx11ENS_4MoveEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, i16 %.sroa.0.0.copyload.us, i1 noundef zeroext %18) @@ -3094,7 +3094,7 @@ define linkonce_odr dso_local noundef i64 @_ZN9Stockfish5perftILb1EEEmRNS_8Posit .lr.ph.split.split.us: ; preds = %.lr.ph.split, %.lr.ph.split.split.us %.02530.us31 = phi i64 [ %30, %.lr.ph.split.split.us ], [ 0, %.lr.ph.split ] %.02629.us32 = phi ptr [ %39, %.lr.ph.split.split.us ], [ %4, %.lr.ph.split ] - %.sroa.02.0.copyload.us = load i16, ptr %.02629.us32, align 4 + %.sroa.02.0.copyload.us = load i16, ptr %.02629.us32, align 8 %25 = call noundef zeroext i1 @_ZNK9Stockfish8Position11gives_checkENS_4MoveE(ptr noundef nonnull align 8 dereferenceable(865) %0, i16 %.sroa.02.0.copyload.us) #21 call void @_ZN9Stockfish8Position7do_moveENS_4MoveERNS_9StateInfoEb(ptr noundef nonnull align 8 dereferenceable(865) %0, i16 %.sroa.02.0.copyload.us, ptr noundef nonnull align 64 dereferenceable(11264) %3, i1 noundef zeroext %25) #21 %26 = call noundef ptr @_ZN9Stockfish8generateILNS_7GenTypeE5EEEPNS_7ExtMoveERKNS_8PositionES3_(ptr noundef nonnull align 8 dereferenceable(865) %0, ptr noundef nonnull align 8 dereferenceable(2056) %5) #21 @@ -3103,10 +3103,10 @@ define linkonce_odr dso_local noundef i64 @_ZN9Stockfish5perftILb1EEEmRNS_8Posit %28 = sub i64 %27, %13 %29 = ashr exact i64 %28, 3 %30 = add i64 %29, %.02530.us31 - %.sroa.01.0.copyload.us = load i16, ptr %.02629.us32, align 4 + %.sroa.01.0.copyload.us = load i16, ptr %.02629.us32, align 8 call void @_ZN9Stockfish8Position9undo_moveENS_4MoveE(ptr noundef nonnull align 8 dereferenceable(865) %0, i16 %.sroa.01.0.copyload.us) #21 %31 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9StockfishlsERSoNS_8SyncCoutE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef 0) #21 - %.sroa.0.0.copyload.us33 = load i16, ptr %.02629.us32, align 4 + %.sroa.0.0.copyload.us33 = load i16, ptr %.02629.us32, align 8 %32 = load i8, ptr %14, align 8 %33 = trunc i8 %32 to i1 call void @_ZN9Stockfish3UCI4moveB5cxx11ENS_4MoveEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, i16 %.sroa.0.0.copyload.us33, i1 noundef zeroext %33) @@ -3123,15 +3123,15 @@ define linkonce_odr dso_local noundef i64 @_ZN9Stockfish5perftILb1EEEmRNS_8Posit .lr.ph.split.split: ; preds = %.lr.ph.split, %.lr.ph.split.split %.02530 = phi i64 [ %42, %.lr.ph.split.split ], [ 0, %.lr.ph.split ] %.02629 = phi ptr [ %51, %.lr.ph.split.split ], [ %4, %.lr.ph.split ] - %.sroa.02.0.copyload = load i16, ptr %.02629, align 4 + %.sroa.02.0.copyload = load i16, ptr %.02629, align 8 %40 = call noundef zeroext i1 @_ZNK9Stockfish8Position11gives_checkENS_4MoveE(ptr noundef nonnull align 8 dereferenceable(865) %0, i16 %.sroa.02.0.copyload) #21 call void @_ZN9Stockfish8Position7do_moveENS_4MoveERNS_9StateInfoEb(ptr noundef nonnull align 8 dereferenceable(865) %0, i16 %.sroa.02.0.copyload, ptr noundef nonnull align 64 dereferenceable(11264) %3, i1 noundef zeroext %40) #21 %41 = call noundef i64 @_ZN9Stockfish5perftILb0EEEmRNS_8PositionEi(ptr noundef nonnull align 8 dereferenceable(865) %0, i32 noundef %11) %42 = add i64 %41, %.02530 - %.sroa.01.0.copyload = load i16, ptr %.02629, align 4 + %.sroa.01.0.copyload = load i16, ptr %.02629, align 8 call void @_ZN9Stockfish8Position9undo_moveENS_4MoveE(ptr noundef nonnull align 8 dereferenceable(865) %0, i16 %.sroa.01.0.copyload) #21 %43 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9StockfishlsERSoNS_8SyncCoutE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef 0) #21 - %.sroa.0.0.copyload = load i16, ptr %.02629, align 4 + %.sroa.0.0.copyload = load i16, ptr %.02629, align 8 %44 = load i8, ptr %14, align 8 %45 = trunc i8 %44 to i1 call void @_ZN9Stockfish3UCI4moveB5cxx11ENS_4MoveEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, i16 %.sroa.0.0.copyload, i1 noundef zeroext %45) @@ -3171,7 +3171,7 @@ define linkonce_odr dso_local noundef i64 @_ZN9Stockfish5perftILb0EEEmRNS_8Posit .lr.ph.split.us: ; preds = %.lr.ph, %.lr.ph.split.us %.023.us = phi i64 [ %17, %.lr.ph.split.us ], [ 0, %.lr.ph ] %.01922.us = phi ptr [ %18, %.lr.ph.split.us ], [ %4, %.lr.ph ] - %.sroa.01.0.copyload.us = load i16, ptr %.01922.us, align 4 + %.sroa.01.0.copyload.us = load i16, ptr %.01922.us, align 8 %12 = call noundef zeroext i1 @_ZNK9Stockfish8Position11gives_checkENS_4MoveE(ptr noundef nonnull align 8 dereferenceable(865) %0, i16 %.sroa.01.0.copyload.us) #21 call void @_ZN9Stockfish8Position7do_moveENS_4MoveERNS_9StateInfoEb(ptr noundef nonnull align 8 dereferenceable(865) %0, i16 %.sroa.01.0.copyload.us, ptr noundef nonnull align 64 dereferenceable(11264) %3, i1 noundef zeroext %12) #21 %13 = call noundef ptr @_ZN9Stockfish8generateILNS_7GenTypeE5EEEPNS_7ExtMoveERKNS_8PositionES3_(ptr noundef nonnull align 8 dereferenceable(865) %0, ptr noundef nonnull align 8 dereferenceable(2056) %5) #21 @@ -3180,7 +3180,7 @@ define linkonce_odr dso_local noundef i64 @_ZN9Stockfish5perftILb0EEEmRNS_8Posit %15 = sub i64 %14, %11 %16 = ashr exact i64 %15, 3 %17 = add i64 %16, %.023.us - %.sroa.0.0.copyload.us = load i16, ptr %.01922.us, align 4 + %.sroa.0.0.copyload.us = load i16, ptr %.01922.us, align 8 call void @_ZN9Stockfish8Position9undo_moveENS_4MoveE(ptr noundef nonnull align 8 dereferenceable(865) %0, i16 %.sroa.0.0.copyload.us) #21 %18 = getelementptr inbounds nuw i8, ptr %.01922.us, i64 8 %.not.us = icmp eq ptr %18, %7 @@ -3189,12 +3189,12 @@ define linkonce_odr dso_local noundef i64 @_ZN9Stockfish5perftILb0EEEmRNS_8Posit .lr.ph.split: ; preds = %.lr.ph, %.lr.ph.split %.023 = phi i64 [ %21, %.lr.ph.split ], [ 0, %.lr.ph ] %.01922 = phi ptr [ %22, %.lr.ph.split ], [ %4, %.lr.ph ] - %.sroa.01.0.copyload = load i16, ptr %.01922, align 4 + %.sroa.01.0.copyload = load i16, ptr %.01922, align 8 %19 = call noundef zeroext i1 @_ZNK9Stockfish8Position11gives_checkENS_4MoveE(ptr noundef nonnull align 8 dereferenceable(865) %0, i16 %.sroa.01.0.copyload) #21 call void @_ZN9Stockfish8Position7do_moveENS_4MoveERNS_9StateInfoEb(ptr noundef nonnull align 8 dereferenceable(865) %0, i16 %.sroa.01.0.copyload, ptr noundef nonnull align 64 dereferenceable(11264) %3, i1 noundef zeroext %19) #21 %20 = call noundef i64 @_ZN9Stockfish5perftILb0EEEmRNS_8PositionEi(ptr noundef nonnull align 8 dereferenceable(865) %0, i32 noundef %9) %21 = add i64 %20, %.023 - %.sroa.0.0.copyload = load i16, ptr %.01922, align 4 + %.sroa.0.0.copyload = load i16, ptr %.01922, align 8 call void @_ZN9Stockfish8Position9undo_moveENS_4MoveE(ptr noundef nonnull align 8 dereferenceable(865) %0, i16 %.sroa.0.0.copyload) #21 %22 = getelementptr inbounds nuw i8, ptr %.01922, i64 8 %.not = icmp eq ptr %22, %7 diff --git a/bench/sundials/optimized/sunnonlinsol_fixedpoint.ll b/bench/sundials/optimized/sunnonlinsol_fixedpoint.ll index 5c0d7a1fb59..beaa74b37ba 100644 --- a/bench/sundials/optimized/sunnonlinsol_fixedpoint.ll +++ b/bench/sundials/optimized/sunnonlinsol_fixedpoint.ll @@ -376,7 +376,7 @@ define i32 @SUNNonlinSolSolve_FixedPoint(ptr noundef %0, ptr readnone captures(n .lr.ph13.i: ; preds = %.lr.ph16.i, %.lr.ph13.i %indvars.iv56.i = phi i64 [ %indvars.iv.next57.i, %.lr.ph13.i ], [ %indvars.iv54.i, %.lr.ph16.i ] %142 = mul nuw nsw i64 %indvars.iv56.i, %89 - %gep128.i = getelementptr inbounds nuw double, ptr %128, i64 %142 + %gep128.i = getelementptr double, ptr %128, i64 %142 %143 = load double, ptr %gep128.i, align 8, !tbaa !51 %144 = getelementptr i8, ptr %gep128.i, i64 8 %145 = load double, ptr %144, align 8, !tbaa !51 @@ -592,7 +592,8 @@ define i32 @SUNNonlinSolSolve_FixedPoint(ptr noundef %0, ptr readnone captures(n store double %229, ptr %230, align 8, !tbaa !51 %231 = getelementptr inbounds nuw ptr, ptr %47, i64 %wide.trip.count108.i store ptr %53, ptr %231, align 8, !tbaa !50 - %232 = add nuw nsw i64 %wide.trip.count108.i, 1 + %232 = add nuw i32 %spec.select.i, 2 + %232 = sext i32 %.244.i to i64 %233 = zext nneg i32 %191 to i64 br label %.lr.ph48.i @@ -602,22 +603,22 @@ define i32 @SUNNonlinSolSolve_FixedPoint(ptr noundef %0, ptr readnone captures(n %234 = getelementptr inbounds nuw double, ptr %51, i64 %indvars.iv112.i %235 = load double, ptr %234, align 8, !tbaa !51 %236 = fmul double %228, %235 - %237 = getelementptr inbounds nuw double, ptr %45, i64 %indvars.iv110.i + %237 = getelementptr inbounds double, ptr %45, i64 %indvars.iv110.i store double %236, ptr %237, align 8, !tbaa !51 %238 = getelementptr inbounds nuw i32, ptr %33, i64 %indvars.iv112.i %239 = load i32, ptr %238, align 4, !tbaa !49 %240 = sext i32 %239 to i64 %241 = getelementptr inbounds ptr, ptr %39, i64 %240 %242 = load ptr, ptr %241, align 8, !tbaa !50 - %243 = getelementptr inbounds nuw ptr, ptr %47, i64 %indvars.iv110.i + %243 = getelementptr inbounds ptr, ptr %47, i64 %indvars.iv110.i store ptr %242, ptr %243, align 8, !tbaa !50 %indvars.iv.next113.i = add nsw i64 %indvars.iv112.i, -1 - %indvars.iv.next111.i = add nuw nsw i64 %indvars.iv110.i, 1 + %indvars.iv.next111.i = add nsw i64 %indvars.iv110.i, 1 %.not139.i = icmp eq i64 %indvars.iv112.i, 0 br i1 %.not139.i, label %.loopexit.loopexit.i, label %.lr.ph48.i .loopexit.loopexit.i: ; preds = %.lr.ph48.i - %244 = trunc nuw i64 %indvars.iv.next111.i to i32 + %244 = trunc nsw i64 %indvars.iv.next111.i to i32 br label %.loopexit.i .loopexit.i: ; preds = %.loopexit.loopexit.i, %.thread124.i, %._crit_edge42.thread.i, %._crit_edge42.i diff --git a/bench/syn/optimized/2khi0xu1ufmhwoo.ll b/bench/syn/optimized/2khi0xu1ufmhwoo.ll index 8f933e3ef26..bde54b1ab34 100644 --- a/bench/syn/optimized/2khi0xu1ufmhwoo.ll +++ b/bench/syn/optimized/2khi0xu1ufmhwoo.ll @@ -297,7 +297,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %19 = add nuw nsw i64 %.sroa.7.027, 1 %20 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 184 %21 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 176 - %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 4, !alias.scope !71, !noalias !76 + %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 8, !alias.scope !71, !noalias !76 store i32 %.sroa.0.0.copyload.i.i, ptr %13, align 8 %22 = getelementptr inbounds nuw [0 x { [23 x i64] }], ptr %8, i64 0, i64 %.sroa.7.027 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(184) %22, ptr noundef nonnull align 8 dereferenceable(184) %4, i64 184, i1 false) @@ -363,7 +363,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %19 = add nuw nsw i64 %.sroa.7.027, 1 %20 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 128 %21 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 120 - %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 4, !alias.scope !78, !noalias !83 + %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 8, !alias.scope !78, !noalias !83 store i32 %.sroa.0.0.copyload.i.i, ptr %13, align 8 %22 = getelementptr inbounds nuw [0 x { [16 x i64] }], ptr %8, i64 0, i64 %.sroa.7.027 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %22, ptr noundef nonnull align 8 dereferenceable(128) %4, i64 128, i1 false) @@ -429,7 +429,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %19 = add nuw nsw i64 %.sroa.7.027, 1 %20 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 304 %21 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 296 - %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 4, !alias.scope !85, !noalias !90 + %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 8, !alias.scope !85, !noalias !90 store i32 %.sroa.0.0.copyload.i.i, ptr %13, align 8 %22 = getelementptr inbounds nuw [0 x { [38 x i64] }], ptr %8, i64 0, i64 %.sroa.7.027 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(304) %22, ptr noundef nonnull align 8 dereferenceable(304) %4, i64 304, i1 false) @@ -690,9 +690,9 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t 22: ; preds = %15 %23 = getelementptr inbounds nuw i8, ptr %.sroa.013.035, i64 8 - %24 = load i32, ptr %23, align 4, !range !103, !alias.scope !137, !noalias !142, !noundef !4 + %24 = load i32, ptr %23, align 8, !range !103, !alias.scope !137, !noalias !142, !noundef !4 %25 = getelementptr inbounds nuw i8, ptr %.sroa.013.035, i64 16 - %26 = load i8, ptr %25, align 4, !range !109, !alias.scope !144, !noalias !142, !noundef !4 + %26 = load i8, ptr %25, align 8, !range !109, !alias.scope !144, !noalias !142, !noundef !4 %27 = getelementptr inbounds nuw i8, ptr %.sroa.013.035, i64 12 %28 = load i32, ptr %27, align 4, !range !103, !alias.scope !145, !noalias !142, !noundef !4 br label %32 @@ -723,7 +723,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.07.sroa.7, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.8.i.i, i64 7, i1 false) call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.8.i.i) %33 = getelementptr inbounds nuw i8, ptr %.sroa.013.035, i64 40 - %.sroa.0.0.copyload.i.i = load i32, ptr %33, align 4, !alias.scope !151, !noalias !154 + %.sroa.0.0.copyload.i.i = load i32, ptr %33, align 8, !alias.scope !151, !noalias !154 %34 = getelementptr inbounds nuw [0 x { [6 x i64] }], ptr %7, i64 0, i64 %.sroa.7.034 store i64 %.sroa.01.0.i.i, ptr %34, align 8 %.sroa.07.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %34, i64 8 @@ -854,7 +854,7 @@ default.unreachable: ; preds = %18 29: ; preds = %.noexc14, %.noexc13, %.noexc %.sroa.016.0 = phi i64 [ 17, %.noexc ], [ 18, %.noexc13 ], [ %.sroa.016.0.copyload17, %.noexc14 ] %30 = getelementptr inbounds nuw i8, ptr %.sroa.015.035, i64 480 - %.sroa.0.0.copyload.i.i = load i32, ptr %30, align 4, !alias.scope !167, !noalias !170 + %.sroa.0.0.copyload.i.i = load i32, ptr %30, align 8, !alias.scope !167, !noalias !170 %31 = getelementptr inbounds nuw [0 x { [61 x i64] }], ptr %10, i64 0, i64 %.sroa.7.033 store i64 %.sroa.016.0, ptr %31, align 8 %.sroa.07.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %31, i64 8 @@ -925,7 +925,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %19 = add nuw nsw i64 %.sroa.7.027, 1 %20 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 304 %21 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 296 - %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 4, !alias.scope !171, !noalias !176 + %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 8, !alias.scope !171, !noalias !176 store i32 %.sroa.0.0.copyload.i.i, ptr %13, align 8 %22 = getelementptr inbounds nuw [0 x { [38 x i64] }], ptr %8, i64 0, i64 %.sroa.7.027 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(304) %22, ptr noundef nonnull align 8 dereferenceable(304) %4, i64 304, i1 false) @@ -1015,9 +1015,9 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t 22: ; preds = %17 %23 = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 8 - %24 = load i32, ptr %23, align 4, !range !103, !alias.scope !193, !noalias !198, !noundef !4 + %24 = load i32, ptr %23, align 8, !range !103, !alias.scope !193, !noalias !198, !noundef !4 %25 = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 16 - %26 = load i8, ptr %25, align 4, !range !109, !alias.scope !200, !noalias !198, !noundef !4 + %26 = load i8, ptr %25, align 8, !range !109, !alias.scope !200, !noalias !198, !noundef !4 %27 = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 12 %28 = load i32, ptr %27, align 4, !range !103, !alias.scope !201, !noalias !198, !noundef !4 br label %"_ZN62_$LT$proc_macro2..imp..Ident$u20$as$u20$core..clone..Clone$GT$5clone17h7906ede68e37604cE.llvm.1271834235494842624.exit.i.i" @@ -1074,7 +1074,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4), !noalias !184 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !184 %38 = getelementptr inbounds nuw i8, ptr %.sroa.013.033, i64 96 - %.sroa.0.0.copyload.i.i = load i64, ptr %38, align 4, !alias.scope !207, !noalias !210 + %.sroa.0.0.copyload.i.i = load i64, ptr %38, align 8, !alias.scope !207, !noalias !210 %39 = getelementptr inbounds nuw [0 x { [13 x i64] }], ptr %9, i64 0, i64 %.sroa.7.032 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %39, ptr noundef nonnull align 8 dereferenceable(96) %.sroa.014, i64 96, i1 false) %.sroa.07.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %39, i64 96 @@ -1171,7 +1171,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t 25: ; preds = %.noexc13, %.noexc %.sroa.015.0 = phi i64 [ 17, %.noexc ], [ %.sroa.015.0.copyload16, %.noexc13 ] %26 = getelementptr inbounds nuw i8, ptr %.sroa.014.035, i64 320 - %.sroa.0.0.copyload.i.i = load i32, ptr %26, align 4, !alias.scope !223, !noalias !226 + %.sroa.0.0.copyload.i.i = load i32, ptr %26, align 8, !alias.scope !223, !noalias !226 %27 = getelementptr inbounds nuw [0 x { [41 x i64] }], ptr %9, i64 0, i64 %.sroa.7.033 store i64 %.sroa.015.0, ptr %27, align 8 %.sroa.07.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %27, i64 8 @@ -1242,7 +1242,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %19 = add nuw nsw i64 %.sroa.7.027, 1 %20 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 336 %21 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 328 - %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 4, !alias.scope !227, !noalias !232 + %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 8, !alias.scope !227, !noalias !232 store i32 %.sroa.0.0.copyload.i.i, ptr %13, align 8 %22 = getelementptr inbounds nuw [0 x { [42 x i64] }], ptr %8, i64 0, i64 %.sroa.7.027 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(336) %22, ptr noundef nonnull align 8 dereferenceable(336) %4, i64 336, i1 false) @@ -1377,7 +1377,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %19 = add nuw nsw i64 %.sroa.7.027, 1 %20 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 240 %21 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 232 - %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 4, !alias.scope !238, !noalias !243 + %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 8, !alias.scope !238, !noalias !243 store i32 %.sroa.0.0.copyload.i.i, ptr %13, align 8 %22 = getelementptr inbounds nuw [0 x { [30 x i64] }], ptr %8, i64 0, i64 %.sroa.7.027 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(240) %22, ptr noundef nonnull align 8 dereferenceable(240) %4, i64 240, i1 false) @@ -1435,9 +1435,9 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t 15: ; preds = %.lr.ph tail call void @llvm.experimental.noalias.scope.decl(metadata !245) %16 = getelementptr inbounds nuw i8, ptr %.sroa.013.031, i64 240 - %.sroa.0.0.copyload.i.i = load i32, ptr %16, align 4, !alias.scope !248, !noalias !251 + %.sroa.0.0.copyload.i.i = load i32, ptr %16, align 8, !alias.scope !248, !noalias !251 %17 = getelementptr inbounds nuw i8, ptr %.sroa.013.031, i64 232 - %.sroa.0.0.copyload.i3.i = load i64, ptr %17, align 4, !alias.scope !253, !noalias !251 + %.sroa.0.0.copyload.i3.i = load i64, ptr %17, align 8, !alias.scope !253, !noalias !251 call void @llvm.lifetime.start.p0(i64 232, ptr nonnull %4), !noalias !256 invoke void @"_ZN3syn3gen5clone64_$LT$impl$u20$core..clone..Clone$u20$for$u20$syn..attr..Meta$GT$5clone17hbcf479d369776f31E"(ptr noalias noundef nonnull sret({ i64, [28 x i64] }) align 8 captures(none) dereferenceable(232) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(256) %.sroa.013.031) to label %18 unwind label %24 @@ -1559,7 +1559,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %28 = getelementptr inbounds nuw i8, ptr %.sroa.016.059, i64 28 %29 = load i8, ptr %28, align 4, !range !268, !alias.scope !269, !noalias !272, !noundef !4 %30 = getelementptr inbounds nuw i8, ptr %.sroa.016.059, i64 24 - %31 = load i32, ptr %30, align 4, !alias.scope !269, !noalias !272, !noundef !4 + %31 = load i32, ptr %30, align 8, !alias.scope !269, !noalias !272, !noundef !4 %32 = icmp eq i32 %31, 0 br i1 %32, label %"_ZN90_$LT$proc_macro..bridge..Group$LT$TokenStream$C$Span$GT$$u20$as$u20$core..clone..Clone$GT$5clone17habd860b8e2d1be14E.exit.i.i", label %33 @@ -1571,7 +1571,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %storemerge.i.i.i = phi i32 [ 0, %26 ], [ %34, %33 ] %.val3.i.i.i.i = load i32, ptr %27, align 4, !range !103, !alias.scope !274, !noalias !277, !noundef !4 %35 = getelementptr inbounds nuw i8, ptr %.sroa.016.059, i64 16 - %.val.i.i.i.i = load i64, ptr %35, align 4, !alias.scope !274, !noalias !277 + %.val.i.i.i.i = load i64, ptr %35, align 8, !alias.scope !274, !noalias !277 %36 = inttoptr i64 %.val.i.i.i.i to ptr %.sroa.822.sroa.0.0.extract.trunc.i = trunc i32 %storemerge.i.i.i to i8 %37 = lshr i32 %storemerge.i.i.i, 8 @@ -1612,9 +1612,9 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t 50: ; preds = %48 %51 = getelementptr inbounds nuw i8, ptr %.sroa.016.059, i64 8 - %.val1.i.i.i = load i32, ptr %51, align 4, !range !103, !alias.scope !287, !noalias !290, !noundef !4 + %.val1.i.i.i = load i32, ptr %51, align 8, !range !103, !alias.scope !287, !noalias !290, !noundef !4 %52 = getelementptr inbounds nuw i8, ptr %.sroa.016.059, i64 16 - %53 = load i8, ptr %52, align 4, !range !109, !alias.scope !287, !noalias !290, !noundef !4 + %53 = load i8, ptr %52, align 8, !range !109, !alias.scope !287, !noalias !290, !noundef !4 %54 = getelementptr inbounds nuw i8, ptr %.sroa.016.059, i64 12 %.val.i.i.i = load i32, ptr %54, align 4, !range !103, !alias.scope !287, !noalias !290, !noundef !4 br label %"_ZN62_$LT$proc_macro2..imp..Ident$u20$as$u20$core..clone..Clone$GT$5clone17h7906ede68e37604cE.exit.i" @@ -1676,9 +1676,9 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %75 = load i8, ptr %74, align 4, !range !115, !alias.scope !305, !noalias !308, !noundef !4 %76 = getelementptr inbounds nuw i8, ptr %.sroa.016.059, i64 29 %77 = load i8, ptr %76, align 1, !alias.scope !305, !noalias !308 - %.val3.i.i.i = load i32, ptr %73, align 4, !range !103, !alias.scope !305, !noalias !308, !noundef !4 + %.val3.i.i.i = load i32, ptr %73, align 8, !range !103, !alias.scope !305, !noalias !308, !noundef !4 %78 = getelementptr inbounds nuw i8, ptr %.sroa.016.059, i64 24 - %79 = load i32, ptr %78, align 4, !alias.scope !305, !noalias !308, !noundef !4 + %79 = load i32, ptr %78, align 8, !alias.scope !305, !noalias !308, !noundef !4 %80 = getelementptr inbounds nuw i8, ptr %.sroa.016.059, i64 20 %.val.i.i7.i = load i32, ptr %80, align 4, !range !103, !alias.scope !305, !noalias !308, !noundef !4 br label %"_ZN64_$LT$proc_macro2..imp..Literal$u20$as$u20$core..clone..Clone$GT$5clone17he46c9d8993ac83a1E.exit.i" @@ -1815,7 +1815,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %19 = add nuw nsw i64 %.sroa.7.027, 1 %20 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 336 %21 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 328 - %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 4, !alias.scope !312, !noalias !317 + %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 8, !alias.scope !312, !noalias !317 store i32 %.sroa.0.0.copyload.i.i, ptr %13, align 8 %22 = getelementptr inbounds nuw [0 x { [42 x i64] }], ptr %8, i64 0, i64 %.sroa.7.027 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(336) %22, ptr noundef nonnull align 8 dereferenceable(336) %4, i64 336, i1 false) @@ -1881,7 +1881,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %19 = add nuw nsw i64 %.sroa.7.027, 1 %20 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 248 %21 = getelementptr inbounds nuw i8, ptr %.sroa.013.028, i64 240 - %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 4, !alias.scope !319, !noalias !324 + %.sroa.0.0.copyload.i.i = load i32, ptr %21, align 8, !alias.scope !319, !noalias !324 store i32 %.sroa.0.0.copyload.i.i, ptr %13, align 8 %22 = getelementptr inbounds nuw [0 x { [31 x i64] }], ptr %8, i64 0, i64 %.sroa.7.027 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(248) %22, ptr noundef nonnull align 8 dereferenceable(248) %4, i64 248, i1 false) diff --git a/bench/tinygltf/optimized/tiny_gltf.ll b/bench/tinygltf/optimized/tiny_gltf.ll index 6377b82e354..eb636dffcf2 100644 --- a/bench/tinygltf/optimized/tiny_gltf.ll +++ b/bench/tinygltf/optimized/tiny_gltf.ll @@ -10123,33 +10123,34 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZL19stbi_write_jpg_coreP19s .preheader280.us: ; preds = %.preheader280.lr.ph, %._crit_edge.us %indvars.iv367 = phi i32 [ %indvars.iv.next368, %._crit_edge.us ], [ 8, %.preheader280.lr.ph ] - %.2236306.us = phi i32 [ %198, %._crit_edge.us ], [ 0, %.preheader280.lr.ph ] - %.2239305.us = phi i32 [ %199, %._crit_edge.us ], [ 0, %.preheader280.lr.ph ] - %.2243304.us = phi i32 [ %200, %._crit_edge.us ], [ 0, %.preheader280.lr.ph ] + %.2236306.us = phi i32 [ %199, %._crit_edge.us ], [ 0, %.preheader280.lr.ph ] + %.2239305.us = phi i32 [ %198, %._crit_edge.us ], [ 0, %.preheader280.lr.ph ] + %.2243304.us = phi i32 [ %201, %._crit_edge.us ], [ 0, %.preheader280.lr.ph ] %.1248303.us = phi i32 [ %237, %._crit_edge.us ], [ 0, %.preheader280.lr.ph ] br label %161 161: ; preds = %.preheader280.us, %.split296.us307 - %.3300.us = phi i32 [ %.2236306.us, %.preheader280.us ], [ %198, %.split296.us307 ] - %.3240299.us = phi i32 [ %.2239305.us, %.preheader280.us ], [ %199, %.split296.us307 ] - %.3244298.us = phi i32 [ %.2243304.us, %.preheader280.us ], [ %200, %.split296.us307 ] - %.1246297.us = phi i32 [ 0, %.preheader280.us ], [ %201, %.split296.us307 ] + %.3300.us = phi i32 [ %.2236306.us, %.preheader280.us ], [ %199, %.split296.us307 ] + %.3240299.us = phi i32 [ %.2239305.us, %.preheader280.us ], [ %198, %.split296.us307 ] + %.3244298.us = phi i32 [ %.2243304.us, %.preheader280.us ], [ %201, %.split296.us307 ] + %.1246297.us = phi i32 [ 0, %.preheader280.us ], [ %163, %.split296.us307 ] call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %27) #55 call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %28) #55 call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %29) #55 %162 = load i32, ptr @_ZL30stbi__flip_vertically_on_write, align 4, !tbaa !8 %.fr = freeze i32 %162 %.not264.us = icmp eq i32 %.fr, 0 + %163 = add nuw nsw i32 %.1246297.us, 8 br i1 %.not264.us, label %.split.us.us, label %.split.us313 .split.us313: ; preds = %161, %168 %.2294.us308 = phi i32 [ %169, %168 ], [ %.1248303.us, %161 ] - %.4293.us309 = phi i32 [ %167, %168 ], [ 0, %161 ] + %.4293.us309 = phi i64 [ %indvars.iv.next364, %168 ], [ 0, %161 ] %163 = call i32 @llvm.smin.i32(i32 %.2294.us308, i32 %159) %164 = sub nsw i32 %159, %163 %165 = mul nsw i32 %164, %1 - %166 = sext i32 %.4293.us309 to i64 - %167 = add i32 %.4293.us309, 8 + %sext392 = shl i64 %.4293.us309, 32 + %167 = ashr exact i64 %sext392, 32 br label %170 168: ; preds = %170 @@ -10158,7 +10159,7 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZL19stbi_write_jpg_coreP19s br i1 %exitcond369.not, label %.split296.us307, label %.split.us313, !llvm.loop !130 170: ; preds = %170, %.split.us313 - %indvars.iv363 = phi i64 [ %indvars.iv.next364, %170 ], [ %166, %.split.us313 ] + %indvars.iv363 = phi i64 [ %indvars.iv.next364, %170 ], [ %167, %.split.us313 ] %.2228292.us311 = phi i32 [ %197, %170 ], [ %.1246297.us, %.split.us313 ] %171 = call i32 @llvm.smin.i32(i32 %.2228292.us311, i32 %160) %172 = add i32 %171, %165 @@ -10191,28 +10192,26 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZL19stbi_write_jpg_coreP19s store float %195, ptr %196, align 4, !tbaa !43 %197 = add nuw nsw i32 %.2228292.us311, 1 %indvars.iv.next364 = add nsw i64 %indvars.iv363, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next364 to i32 - %exitcond366.not = icmp eq i32 %167, %lftr.wideiv - br i1 %exitcond366.not, label %168, label %170, !llvm.loop !131 - -.split296.us307: ; preds = %168, %207 - %198 = call fastcc noundef i32 @_ZL20stbiw__jpg_processDUP19stbi__write_contextPiS1_PfiS2_iPA2_KtS5_(ptr noundef %0, ptr noundef %20, ptr noundef %21, ptr noundef %27, i32 noundef 8, ptr noundef %15, i32 noundef %.3300.us, ptr noundef nonnull @_ZZL19stbi_write_jpg_coreP19stbi__write_contextiiiPKviE6YDC_HT, ptr noundef nonnull @_ZZL19stbi_write_jpg_coreP19stbi__write_contextiiiPKviE6YAC_HT) - %199 = call fastcc noundef i32 @_ZL20stbiw__jpg_processDUP19stbi__write_contextPiS1_PfiS2_iPA2_KtS5_(ptr noundef %0, ptr noundef %20, ptr noundef %21, ptr noundef %28, i32 noundef 8, ptr noundef %16, i32 noundef %.3240299.us, ptr noundef nonnull @_ZZL19stbi_write_jpg_coreP19stbi__write_contextiiiPKviE7UVDC_HT, ptr noundef nonnull @_ZZL19stbi_write_jpg_coreP19stbi__write_contextiiiPKviE7UVAC_HT) - %200 = call fastcc noundef i32 @_ZL20stbiw__jpg_processDUP19stbi__write_contextPiS1_PfiS2_iPA2_KtS5_(ptr noundef %0, ptr noundef %20, ptr noundef %21, ptr noundef %29, i32 noundef 8, ptr noundef %16, i32 noundef %.3244298.us, ptr noundef nonnull @_ZZL19stbi_write_jpg_coreP19stbi__write_contextiiiPKviE7UVDC_HT, ptr noundef nonnull @_ZZL19stbi_write_jpg_coreP19stbi__write_contextiiiPKviE7UVAC_HT) + %198 = icmp samesign ult i32 %197, %163 + br i1 %198, label %170, label %168, !llvm.loop !131 + +.split296.us307: ; preds = %168, %206 + %199 = call fastcc noundef i32 @_ZL20stbiw__jpg_processDUP19stbi__write_contextPiS1_PfiS2_iPA2_KtS5_(ptr noundef %0, ptr noundef %20, ptr noundef %21, ptr noundef %27, i32 noundef 8, ptr noundef %15, i32 noundef %.3300.us, ptr noundef nonnull @_ZZL19stbi_write_jpg_coreP19stbi__write_contextiiiPKviE6YDC_HT, ptr noundef nonnull @_ZZL19stbi_write_jpg_coreP19stbi__write_contextiiiPKviE6YAC_HT) + %198 = call fastcc noundef i32 @_ZL20stbiw__jpg_processDUP19stbi__write_contextPiS1_PfiS2_iPA2_KtS5_(ptr noundef %0, ptr noundef %20, ptr noundef %21, ptr noundef %28, i32 noundef 8, ptr noundef %16, i32 noundef %.3240299.us, ptr noundef nonnull @_ZZL19stbi_write_jpg_coreP19stbi__write_contextiiiPKviE7UVDC_HT, ptr noundef nonnull @_ZZL19stbi_write_jpg_coreP19stbi__write_contextiiiPKviE7UVAC_HT) + %199 = call fastcc noundef i32 @_ZL20stbiw__jpg_processDUP19stbi__write_contextPiS1_PfiS2_iPA2_KtS5_(ptr noundef %0, ptr noundef %20, ptr noundef %21, ptr noundef %29, i32 noundef 8, ptr noundef %16, i32 noundef %.3244298.us, ptr noundef nonnull @_ZZL19stbi_write_jpg_coreP19stbi__write_contextiiiPKviE7UVDC_HT, ptr noundef nonnull @_ZZL19stbi_write_jpg_coreP19stbi__write_contextiiiPKviE7UVAC_HT) call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %29) #55 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %28) #55 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %27) #55 - %201 = add nuw nsw i32 %.1246297.us, 8 - %202 = icmp slt i32 %201, %1 + %202 = icmp slt i32 %163, %1 br i1 %202, label %161, label %._crit_edge.us, !llvm.loop !132 .split.us.us: ; preds = %161, %207 - %.2294.us.us = phi i32 [ %208, %207 ], [ %.1248303.us, %161 ] - %.4293.us.us = phi i32 [ %206, %207 ], [ 0, %161 ] + %.2294.us.us = phi i32 [ %208, %206 ], [ %.1248303.us, %161 ] + %.4293.us.us = phi i64 [ %indvars.iv.next370, %206 ], [ 0, %161 ] %203 = call i32 @llvm.smin.i32(i32 %.2294.us.us, i32 %159) %204 = mul nsw i32 %203, %1 - %205 = sext i32 %.4293.us.us to i64 - %206 = add i32 %.4293.us.us, 8 + %sext393 = shl i64 %.4293.us.us, 32 + %205 = ashr exact i64 %sext393, 32 br label %209 207: ; preds = %209 @@ -10221,8 +10220,8 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZL19stbi_write_jpg_coreP19s br i1 %exitcond375.not, label %.split296.us307, label %.split.us.us, !llvm.loop !130 209: ; preds = %209, %.split.us.us - %indvars.iv370 = phi i64 [ %indvars.iv.next371, %209 ], [ %205, %.split.us.us ] - %.2228292.us.us = phi i32 [ %236, %209 ], [ %.1246297.us, %.split.us.us ] + %indvars.iv370 = phi i64 [ %indvars.iv.next371, %208 ], [ %205, %.split.us.us ] + %.2228292.us.us = phi i32 [ %236, %208 ], [ %.1246297.us, %.split.us.us ] %210 = call i32 @llvm.smin.i32(i32 %.2228292.us.us, i32 %160) %211 = add i32 %210, %204 %212 = mul i32 %211, %3 @@ -10254,9 +10253,8 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZL19stbi_write_jpg_coreP19s store float %234, ptr %235, align 4, !tbaa !43 %236 = add nuw nsw i32 %.2228292.us.us, 1 %indvars.iv.next371 = add nsw i64 %indvars.iv370, 1 - %lftr.wideiv373 = trunc i64 %indvars.iv.next371 to i32 - %exitcond374.not = icmp eq i32 %206, %lftr.wideiv373 - br i1 %exitcond374.not, label %207, label %209, !llvm.loop !131 + %236 = icmp samesign ult i32 %235, %163 + br i1 %236, label %208, label %206, !llvm.loop !131 ._crit_edge.us: ; preds = %.split296.us307 %237 = add nuw nsw i32 %.1248303.us, 8 @@ -10375,7 +10373,7 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZL19stbi_write_jpg_coreP19s br label %299 297: ; preds = %299 - %298 = add nuw nsw i32 %.1317.us, 1 + %298 = add nuw i32 %.1317.us, 1 %exitcond383.not = icmp eq i32 %298, %indvars.iv381 br i1 %exitcond383.not, label %247, label %290, !llvm.loop !137 @@ -114674,16 +114672,16 @@ define internal void @_ZL23stbi__YCbCr_to_RGB_simdPhPKhS1_S1_ii(ptr noundef writ 58: ; preds = %.lr.ph107, %58 %indvars.iv110 = phi i64 [ %57, %.lr.ph107 ], [ %indvars.iv.next111, %58 ] %.2106 = phi ptr [ %.0, %.lr.ph107 ], [ %96, %58 ] - %59 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv110 + %59 = getelementptr inbounds i8, ptr %1, i64 %indvars.iv110 %60 = load i8, ptr %59, align 1, !tbaa !21 %61 = zext i8 %60 to i32 %62 = shl nuw nsw i32 %61, 20 %63 = or disjoint i32 %62, 524288 - %64 = getelementptr inbounds nuw i8, ptr %3, i64 %indvars.iv110 + %64 = getelementptr inbounds i8, ptr %3, i64 %indvars.iv110 %65 = load i8, ptr %64, align 1, !tbaa !21 %66 = zext i8 %65 to i32 %67 = add nsw i32 %66, -128 - %68 = getelementptr inbounds nuw i8, ptr %2, i64 %indvars.iv110 + %68 = getelementptr inbounds i8, ptr %2, i64 %indvars.iv110 %69 = load i8, ptr %68, align 1, !tbaa !21 %70 = zext i8 %69 to i32 %71 = add nsw i32 %70, -128 diff --git a/bench/tinympc/optimized/cartpole_example.ll b/bench/tinympc/optimized/cartpole_example.ll index e1d1a17d787..fa485de9879 100644 --- a/bench/tinympc/optimized/cartpole_example.ll +++ b/bench/tinympc/optimized/cartpole_example.ll @@ -1544,7 +1544,7 @@ define linkonce_odr dso_local void @_ZN5Eigen8internal29general_matrix_vector_pr %99 = load <2 x double>, ptr %98, align 1, !tbaa !13 %100 = fmul <2 x double> %68, %99 %101 = fadd <2 x double> %.0390405, %100 - %102 = add nuw nsw i64 %.0186413, 1 + %102 = add nsw i64 %.0186413, 1 %103 = icmp slt i64 %102, %.sroa.speculated br i1 %103, label %63, label %._crit_edge, !llvm.loop !107 @@ -1614,7 +1614,7 @@ define linkonce_odr dso_local void @_ZN5Eigen8internal29general_matrix_vector_pr %145 = load <2 x double>, ptr %144, align 1, !tbaa !13 %146 = fmul <2 x double> %130, %145 %147 = fadd <2 x double> %.0394436, %146 - %148 = add nuw nsw i64 %.0185440, 1 + %148 = add nsw i64 %.0185440, 1 %149 = icmp slt i64 %148, %.sroa.speculated br i1 %149, label %125, label %._crit_edge442, !llvm.loop !108 @@ -1673,7 +1673,7 @@ define linkonce_odr dso_local void @_ZN5Eigen8internal29general_matrix_vector_pr %184 = load <2 x double>, ptr %183, align 1, !tbaa !13 %185 = fmul <2 x double> %173, %184 %186 = fadd <2 x double> %.0399447, %185 - %187 = add nuw nsw i64 %.0184450, 1 + %187 = add nsw i64 %.0184450, 1 %188 = icmp slt i64 %187, %.sroa.speculated br i1 %188, label %168, label %._crit_edge452, !llvm.loop !109 @@ -1721,7 +1721,7 @@ define linkonce_odr dso_local void @_ZN5Eigen8internal29general_matrix_vector_pr %215 = load <2 x double>, ptr %214, align 1, !tbaa !13 %216 = fmul <2 x double> %215, %208 %217 = fadd <2 x double> %.0396457, %216 - %218 = add nuw nsw i64 %.0183458, 1 + %218 = add nsw i64 %.0183458, 1 %219 = icmp slt i64 %218, %.sroa.speculated br i1 %219, label %203, label %._crit_edge460, !llvm.loop !110 @@ -1758,7 +1758,7 @@ define linkonce_odr dso_local void @_ZN5Eigen8internal29general_matrix_vector_pr %238 = load <2 x double>, ptr %237, align 1, !tbaa !13 %239 = fmul <2 x double> %238, %235 %240 = fadd <2 x double> %.0387463, %239 - %241 = add nuw nsw i64 %.0182464, 1 + %241 = add nsw i64 %.0182464, 1 %242 = icmp slt i64 %241, %.sroa.speculated br i1 %242, label %230, label %._crit_edge466, !llvm.loop !111 @@ -1797,7 +1797,7 @@ define linkonce_odr dso_local void @_ZN5Eigen8internal29general_matrix_vector_pr %258 = load double, ptr %256, align 8, !tbaa !7 %259 = fmul double %257, %258 %260 = fadd double %.0181468, %259 - %261 = add nuw nsw i64 %.0469, 1 + %261 = add nsw i64 %.0469, 1 %262 = icmp slt i64 %261, %.sroa.speculated br i1 %262, label %252, label %._crit_edge471, !llvm.loop !113 } diff --git a/bench/tomlplusplus/optimized/toml.ll b/bench/tomlplusplus/optimized/toml.ll index c03ca373574..85988faeb22 100644 --- a/bench/tomlplusplus/optimized/toml.ll +++ b/bench/tomlplusplus/optimized/toml.ll @@ -43594,7 +43594,7 @@ define linkonce_odr { ptr, i32 } @_ZSt12__to_chars_iIhENSt9enable_ifIXsr5__or_IS 9: ; preds = %7 %10 = add i32 %3, -2 %11 = tail call i32 @llvm.fshl.i32(i32 %10, i32 %10, i32 31) - switch i32 %11, label %108 [ + switch i32 %11, label %109 [ i32 7, label %12 i32 4, label %_ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i i32 3, label %70 @@ -43765,12 +43765,13 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %9 .lr.ph.i36: ; preds = %.lr.ph.i36, %.lr.ph.preheader.i35 %indvars.iv.i = phi i64 [ %102, %.lr.ph.preheader.i35 ], [ %indvars.iv.next.i, %.lr.ph.i36 ] - %.01317.i = phi i8 [ %2, %.lr.ph.preheader.i35 ], [ %106, %.lr.ph.i36 ] - %103 = and i8 %.01317.i, 1 - %104 = or disjoint i8 %103, 48 - %105 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv.i - store i8 %104, ptr %105, align 1, !tbaa !15 - %106 = lshr i8 %.01317.i, 1 + %.01317.i = phi i32 [ %5, %.lr.ph.preheader.i35 ], [ %107, %.lr.ph.i36 ] + %103 = trunc nuw i32 %.01317.i to i8 + %104 = and i8 %103, 1 + %105 = or disjoint i8 %104, 48 + %106 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv.i + store i8 %105, ptr %106, align 1, !tbaa !15 + %107 = lshr i32 %.01317.i, 1 %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 %107 = and i64 %indvars.iv.next.i, 4294967295 %.not.i = icmp eq i64 %107, 0 @@ -43778,23 +43779,23 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %9 108: ; preds = %9 %109 = mul nsw i32 %3, %3 - %110 = mul i32 %109, %3 %111 = mul i32 %110, %3 - %112 = icmp ugt i32 %3, %5 - br i1 %112, label %_ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.thread.i, label %.lr.ph.i.i42 - -.lr.ph.i.i42: ; preds = %108, %124 - %.02230.i.i = phi i32 [ %125, %124 ], [ %5, %108 ] - %.02329.i.i = phi i32 [ %126, %124 ], [ 1, %108 ] - %113 = icmp samesign ult i32 %.02230.i.i, %109 - br i1 %113, label %114, label %116 - -114: ; preds = %.lr.ph.i.i42 - %115 = add i32 %.02329.i.i, 1 + %112 = mul i32 %111, %3 + %113 = icmp ugt i32 %3, %5 + br i1 %113, label %_ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.thread.i, label %.lr.ph.i.i42 + +.lr.ph.i.i42:; preds = %109, %125 + %.02329.i.i = phi i32 [ %126, %125 ], [ %5, %109 ] + %.02329.i.i = phi i32 [ %127, %125 ], [ 1, %109 ] + %114 = icmp samesign ult i32 %.02230.i.i, %110 + br i1 %114, label %115, label %117 + +115:; preds = %.lr.ph.i.i42 + %116 = add i32 %.02329.i.i, 1 br label %_ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i43 116: ; preds = %.lr.ph.i.i42 - %117 = icmp ult i32 %.02230.i.i, %110 + %117 = icmp ult i32 %.02230.i.i, %111 br i1 %117, label %118, label %120 118: ; preds = %116 @@ -43802,7 +43803,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %9 br label %_ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i43 120: ; preds = %116 - %121 = icmp ult i32 %.02230.i.i, %111 + %121 = icmp ult i32 %.02230.i.i, %112 br i1 %121, label %122, label %124 122: ; preds = %120 @@ -43810,13 +43811,13 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %9 br label %_ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i43 124: ; preds = %120 - %125 = udiv i32 %.02230.i.i, %111 + %125 = udiv i32 %.02230.i.i, %112 %126 = add i32 %.02329.i.i, 4 %127 = icmp ult i32 %125, %3 br i1 %127, label %_ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i43, label %.lr.ph.i.i42, !llvm.loop !88 -_ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i43: ; preds = %124, %122, %118, %114 - %.0.i.i44 = phi i32 [ %115, %114 ], [ %119, %118 ], [ %123, %122 ], [ %126, %124 ] +_ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i43: ; preds = %124, %122, %118, %115 + %.0.i.i44 = phi i32 [ %116, %115 ], [ %119, %119 ], [ %123, %123 ], [ %126, %125 ] %128 = ptrtoint ptr %1 to i64 %129 = ptrtoint ptr %0 to i64 %130 = sub i64 %128, %129 @@ -44111,13 +44112,13 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %53, %51, %.lr.ph.i. .lr.ph.i42: ; preds = %.lr.ph.i42, %.lr.ph.preheader.i41 %indvars.iv.i = phi i64 [ %136, %.lr.ph.preheader.i41 ], [ %indvars.iv.next.i, %.lr.ph.i42 ] - %.01317.i = phi i16 [ %2, %.lr.ph.preheader.i41 ], [ %141, %.lr.ph.i42 ] - %137 = trunc i16 %.01317.i to i8 + %.01317.i = phi i32 [ %5, %.lr.ph.preheader.i41 ], [ %141, %.lr.ph.i42 ] + %137 = trunc i32 %.01317.i to i8 %138 = and i8 %137, 1 %139 = or disjoint i8 %138, 48 %140 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv.i store i8 %139, ptr %140, align 1, !tbaa !15 - %141 = lshr i16 %.01317.i, 1 + %141 = lshr i32 %.01317.i, 1 %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 %142 = and i64 %indvars.iv.next.i, 4294967295 %.not.i = icmp eq i64 %142, 0 @@ -47164,7 +47165,7 @@ _ZNK4toml2v34impl12utf8_decoder16needs_more_inputEv.exit26.thread.i: ; preds = % .lr.ph.i.i: ; preds = %.lr.ph.i.i, %.lr.ph.preheader.i.i %.12734.i.i = phi ptr [ %31, %.lr.ph.i.i ], [ %2, %.lr.ph.preheader.i.i ] %.03033.i.i = phi <2 x i64> [ %30, %.lr.ph.i.i ], [ zeroinitializer, %.lr.ph.preheader.i.i ] - %29 = load <2 x i64>, ptr %.12734.i.i, align 1, !tbaa !15 + %29 = load <2 x i64>, ptr %.12734.i.i, align 16, !tbaa !15 %30 = or <2 x i64> %29, %.03033.i.i %31 = getelementptr inbounds nuw i8, ptr %.12734.i.i, i64 16 %32 = icmp ult ptr %31, %25 @@ -47809,7 +47810,7 @@ _ZNK4toml2v34impl12utf8_decoder16needs_more_inputEv.exit35.thread.i: ; preds = % .lr.ph.i.i: ; preds = %.lr.ph.i.i, %.lr.ph.preheader.i.i %.12734.i.i = phi ptr [ %78, %.lr.ph.i.i ], [ %2, %.lr.ph.preheader.i.i ] %.03033.i.i = phi <2 x i64> [ %77, %.lr.ph.i.i ], [ zeroinitializer, %.lr.ph.preheader.i.i ] - %76 = load <2 x i64>, ptr %.12734.i.i, align 1, !tbaa !15 + %76 = load <2 x i64>, ptr %.12734.i.i, align 16, !tbaa !15 %77 = or <2 x i64> %76, %.03033.i.i %78 = getelementptr inbounds nuw i8, ptr %.12734.i.i, i64 16 %79 = icmp ult ptr %78, %72 diff --git a/bench/velox/optimized/MapZipWith.ll b/bench/velox/optimized/MapZipWith.ll index 5e0149a558e..14fbfe9f06c 100644 --- a/bench/velox/optimized/MapZipWith.ll +++ b/bench/velox/optimized/MapZipWith.ll @@ -34357,7 +34357,8 @@ if.end32.preheader.i: ; preds = %_ZNK8facebook5velox br label %if.end32.i for.cond.preheader.loopexit.i: ; preds = %if.end32.i - %69 = and i64 %umax, 4294967295 + %sext.i = shl i64 %umax, 32 + %69 = ashr exact i64 %sext.i, 32 br label %for.cond.preheader.i for.cond.preheader.i: ; preds = %for.cond.preheader.loopexit.i, %_ZNK8facebook5velox13DecodedVector5indexEi.exit63 @@ -34404,7 +34405,7 @@ for.body.i: ; preds = %for.body.i, %for.bo %77 = phi i32 [ %.pre109.i, %for.body.preheader.i ], [ %inc40.i, %for.body.i ] %indvars.iv102.i = phi i64 [ %leftIndex.0.lcssa.i, %for.body.preheader.i ], [ %indvars.iv.next103.i, %for.body.i ] %78 = load ptr, ptr %56, align 8 - %add.ptr.i66.i = getelementptr inbounds nuw i32, ptr %78, i64 %indvars.iv102.i + %add.ptr.i66.i = getelementptr inbounds i32, ptr %78, i64 %indvars.iv102.i %79 = load i32, ptr %add.ptr.i66.i, align 4 %idxprom38.i = sext i32 %77 to i64 %arrayidx39.i = getelementptr inbounds i32, ptr %61, i64 %idxprom38.i @@ -34441,7 +34442,7 @@ for.body45.i: ; preds = %for.body45.i, %for. %and3.i.i80.i = and i8 %86, %85 store i8 %and3.i.i80.i, ptr %arrayidx2.i.i79.i, align 1 %87 = load ptr, ptr %57, align 8 - %add.ptr.i81.i = getelementptr inbounds nuw i32, ptr %87, i64 %indvars.iv105.i + %add.ptr.i81.i = getelementptr inbounds i32, ptr %87, i64 %indvars.iv105.i %88 = load i32, ptr %add.ptr.i81.i, align 4 %89 = load i32, ptr %63, align 4 %idxprom48.i = sext i32 %89 to i64 @@ -34926,7 +34927,8 @@ if.end32.preheader.i: ; preds = %_ZNK8facebook5velox br label %if.end32.i for.cond.preheader.loopexit.i: ; preds = %if.end32.i - %69 = and i64 %umax, 4294967295 + %sext.i = shl i64 %umax, 32 + %69 = ashr exact i64 %sext.i, 32 br label %for.cond.preheader.i for.cond.preheader.i: ; preds = %for.cond.preheader.loopexit.i, %_ZNK8facebook5velox13DecodedVector5indexEi.exit63 @@ -34973,7 +34975,7 @@ for.body.i: ; preds = %for.body.i, %for.bo %77 = phi i32 [ %.pre30.i, %for.body.preheader.i ], [ %inc40.i, %for.body.i ] %indvars.iv23.i = phi i64 [ %leftIndex.0.lcssa.i, %for.body.preheader.i ], [ %indvars.iv.next24.i, %for.body.i ] %78 = load ptr, ptr %56, align 8 - %add.ptr.i65.i = getelementptr inbounds nuw i32, ptr %78, i64 %indvars.iv23.i + %add.ptr.i65.i = getelementptr inbounds i32, ptr %78, i64 %indvars.iv23.i %79 = load i32, ptr %add.ptr.i65.i, align 4 %idxprom38.i = sext i32 %77 to i64 %arrayidx39.i = getelementptr inbounds i32, ptr %61, i64 %idxprom38.i @@ -35010,7 +35012,7 @@ for.body45.i: ; preds = %for.body45.i, %for. %and3.i.i79.i = and i8 %86, %85 store i8 %and3.i.i79.i, ptr %arrayidx2.i.i78.i, align 1 %87 = load ptr, ptr %57, align 8 - %add.ptr.i80.i = getelementptr inbounds nuw i32, ptr %87, i64 %indvars.iv26.i + %add.ptr.i80.i = getelementptr inbounds i32, ptr %87, i64 %indvars.iv26.i %88 = load i32, ptr %add.ptr.i80.i, align 4 %89 = load i32, ptr %63, align 4 %idxprom48.i = sext i32 %89 to i64 diff --git a/bench/velox/optimized/PrestoSerializer.ll b/bench/velox/optimized/PrestoSerializer.ll index 1ff11aa3786..b04baac3ec3 100644 --- a/bench/velox/optimized/PrestoSerializer.ll +++ b/bench/velox/optimized/PrestoSerializer.ll @@ -52111,12 +52111,17 @@ for.cond15.preheader.loopexit.i: ; preds = %for.body5.i for.cond15.preheader.i: ; preds = %for.cond15.preheader.loopexit.i, %for.cond2.preheader.i %i.1.lcssa.i = phi i32 [ %i.0.lcssa.i, %for.cond2.preheader.i ], [ %23, %for.cond15.preheader.loopexit.i ] %cmp1626.i = icmp slt i32 %i.1.lcssa.i, %conv16 - br i1 %cmp1626.i, label %for.body17.i, label %_ZN8facebook5velox4bits6negateEPci.exit + br i1 %cmp1626.i, label %for.body17.preheader.i, label %_ZN8facebook5velox4bits6negateEPci.exit + +for.body17.preheader.i: ; preds = %for.cond15.preheader.i + %24 = zext nneg i32 %i.1.lcssa.i to i64 + %wide.trip.count.i36 = zext i32 %conv16 to i64 + br label %for.body17.i for.body5.i: ; preds = %for.body5.i, %for.body5.preheader.i %indvars.iv36.i = phi i64 [ %18, %for.body5.preheader.i ], [ %indvars.iv.next37.i, %for.body5.i ] %indvars.iv34.i = phi i64 [ %19, %for.body5.preheader.i ], [ %indvars.iv.next35.i, %for.body5.i ] - %24 = lshr exact i64 %indvars.iv36.i, 3 + %24 = lshr i64 %indvars.iv36.i, 3 %arrayidx.i35 = getelementptr inbounds nuw i8, ptr %add.ptr, i64 %24 %25 = load i8, ptr %arrayidx.i35, align 1 %26 = xor i8 %25, -1 @@ -52126,37 +52131,43 @@ for.body5.i: ; preds = %for.body5.i, %for.b %indvars.iv.next37.i = add nuw nsw i64 %indvars.iv36.i, 8 br i1 %cmp4.not.i, label %for.cond15.preheader.loopexit.i, label %for.body5.i, !llvm.loop !382 -for.body17.i: ; preds = %for.cond15.preheader.i, %_ZN8facebook5velox4bits6setBitIcEEvPT_jb.exit.i - %i.227.i = phi i32 [ %inc.i, %_ZN8facebook5velox4bits6setBitIcEEvPT_jb.exit.i ], [ %i.1.lcssa.i, %for.cond15.preheader.i ] - %27 = lshr i32 %i.227.i, 3 - %div2.i.i = zext nneg i32 %27 to i64 +for.body17.i: ; preds = %_ZN8facebook5velox4bits6setBitIcEEvPT_jb.exit.i, %for.body17.preheader.i + %i.227.i = phi i64 [ %24, %for.body17.preheader.i ], [ %indvars.iv.next43.i, %_ZN8facebook5velox4bits6setBitIcEEvPT_jb.exit.i ] + %27 = lshr i64 %i.227.i, 3 %arrayidx.i.i = getelementptr inbounds nuw i8, ptr %add.ptr, i64 %div2.i.i %28 = load i8, ptr %arrayidx.i.i, align 1 %conv13.i.i = zext i8 %28 to i32 - %and.i.i = and i32 %i.227.i, 7 + %29 = trunc nuw nsw i64 %i.227.i to i32 + %and.i.i = and i32 %29, 7 %shl.i.i = shl nuw nsw i32 1, %and.i.i %and3.i.i = and i32 %shl.i.i, %conv13.i.i %tobool.i.not.i = icmp eq i32 %and3.i.i, 0 br i1 %tobool.i.not.i, label %cond.true.i.i, label %cond.false.i.i cond.true.i.i: ; preds = %for.body17.i - %29 = trunc nuw i32 %shl.i.i to i8 - %conv1.i.i.i = or i8 %28, %29 + %idxprom.i.i.i = and i64 %27, 536870911 + %arrayidx.i.i.i = getelementptr inbounds nuw i8, ptr %add.ptr, i64 %idxprom.i.i.i + %30 = load i8, ptr %arrayidx.i.i.i, align 1 + %31 = trunc nuw i32 %shl.i.i to i8 + %conv1.i.i.i = or i8 %30, %31 + store i8 %conv1.i.i.i, ptr %arrayidx.i.i.i, align 1 br label %_ZN8facebook5velox4bits6setBitIcEEvPT_jb.exit.i cond.false.i.i: ; preds = %for.body17.i - %idxprom.i4.i.i = zext nneg i32 %and.i.i to i64 + %idxprom.i4.i.i = and i64 %i.227.i, 7 %arrayidx.i5.i.i = getelementptr inbounds nuw [8 x i8], ptr @_ZN8facebook5velox4bitsL13kZeroBitmasksE, i64 0, i64 %idxprom.i4.i.i %30 = load i8, ptr %arrayidx.i5.i.i, align 1 - %and3.i.i.i = and i8 %30, %28 + %and3.i.i.i = and i64 %27, 536870911 + %arrayidx2.i.i.i = getelementptr inbounds nuw i8, ptr %add.ptr, i64 %idxprom1.i.i.i + %33 = load i8, ptr %arrayidx2.i.i.i, align 1 + %and3.i.i.i = and i8 %33, %32 + store i8 %and3.i.i.i, ptr %arrayidx2.i.i.i, align 1 br label %_ZN8facebook5velox4bits6setBitIcEEvPT_jb.exit.i _ZN8facebook5velox4bits6setBitIcEEvPT_jb.exit.i: ; preds = %cond.false.i.i, %cond.true.i.i - %storemerge.i = phi i8 [ %and3.i.i.i, %cond.false.i.i ], [ %conv1.i.i.i, %cond.true.i.i ] - store i8 %storemerge.i, ptr %arrayidx.i.i, align 1 - %inc.i = add nuw nsw i32 %i.227.i, 1 - %exitcond.not.i36 = icmp eq i32 %inc.i, %conv16 - br i1 %exitcond.not.i36, label %_ZN8facebook5velox4bits6negateEPci.exit, label %for.body17.i, !llvm.loop !383 + %indvars.iv.next43.i = add nuw nsw i64 %indvars.iv42.i, 1 + %exitcond.not.i37 = icmp eq i64 %indvars.iv.next43.i, %wide.trip.count.i36 + br i1 %exitcond.not.i37, label %_ZN8facebook5velox4bits6negateEPci.exit, label %for.body17.i, !llvm.loop !383 _ZN8facebook5velox4bits6negateEPci.exit: ; preds = %_ZN8facebook5velox4bits6setBitIcEEvPT_jb.exit.i, %for.cond15.preheader.i %mul18 = shl nsw i64 %conv.i, 3 @@ -52169,7 +52180,7 @@ if.then21: ; preds = %_ZN8facebook5velox4 %vtable.i40 = load ptr, ptr %31, align 8 %vfn.i41 = getelementptr inbounds nuw i8, ptr %vtable.i40, i64 24 %32 = load ptr, ptr %vfn.i41, align 8 - %call.i42 = tail call noundef zeroext i1 %32(ptr noundef nonnull align 8 dereferenceable(64) %31) + %call.i42 = tail call noundef zeroext i1 %35(ptr noundef nonnull align 8 dereferenceable(64) %31) br i1 %call.i42, label %if.then.i44, label %_ZNK8facebook5velox6Buffer9asMutableImEEPT_v.exit45 if.then.i44: ; preds = %if.then21 @@ -52183,7 +52194,7 @@ _ZNK8facebook5velox6Buffer9asMutableImEEPT_v.exit45: ; preds = %if.then21 %vtable.i49 = load ptr, ptr %34, align 8 %vfn.i50 = getelementptr inbounds nuw i8, ptr %vtable.i49, i64 24 %35 = load ptr, ptr %vfn.i50, align 8 - %call.i51 = tail call noundef zeroext i1 %35(ptr noundef nonnull align 8 dereferenceable(64) %34) + %call.i51 = tail call noundef zeroext i1 %38(ptr noundef nonnull align 8 dereferenceable(64) %34) br i1 %call.i51, label %if.then.i53, label %_ZNK8facebook5velox6Buffer9asMutableImEEPT_v.exit54 if.then.i53: ; preds = %_ZNK8facebook5velox6Buffer9asMutableImEEPT_v.exit45 diff --git a/bench/velox/optimized/SparseHll.ll b/bench/velox/optimized/SparseHll.ll index 64cf9a30852..d90fabeb3bb 100644 --- a/bench/velox/optimized/SparseHll.ll +++ b/bench/velox/optimized/SparseHll.ll @@ -497,7 +497,8 @@ while.cond52.preheader: ; preds = %if.end51 br i1 %cmp5478, label %while.body55.preheader, label %while.cond64.preheader while.body55.preheader: ; preds = %while.cond52.preheader - %5 = and i64 %indvars.iv.next, 4294967295 + %sext = shl i64 %indvars.iv.next, 32 + %5 = ashr exact i64 %sext, 32 br label %while.body55 while.body: ; preds = %invoke.cont, %if.end51 @@ -559,7 +560,8 @@ while.cond64.preheader: ; preds = %while.body55, %whil while.body67.preheader: ; preds = %invoke.cont, %while.cond64.preheader %pos.2.lcssa118 = phi i64 [ %pos.2.lcssa.in, %while.cond64.preheader ], [ 0, %invoke.cont ] %rightPos.0.lcssa113117 = phi i64 [ %4, %while.cond64.preheader ], [ 0, %invoke.cont ] - %9 = and i64 %pos.2.lcssa118, 4294967295 + %sext119 = shl i64 %pos.2.lcssa118, 32 + %9 = ashr exact i64 %sext119, 32 br label %while.body67 while.body55: ; preds = %while.body55.preheader, %while.body55 @@ -568,8 +570,8 @@ while.body55: ; preds = %while.body55.prehea %indvars.iv.next95 = add nuw nsw i64 %indvars.iv94, 1 %add.ptr2.i44 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv94 %10 = load i32, ptr %add.ptr2.i44, align 4 - %indvars.iv.next93 = add nuw nsw i64 %indvars.iv92, 1 - %add.ptr.i45 = getelementptr inbounds nuw i32, ptr %merged.sroa.0.0, i64 %indvars.iv92 + %indvars.iv.next93 = add nsw i64 %indvars.iv92, 1 + %add.ptr.i45 = getelementptr inbounds i32, ptr %merged.sroa.0.0, i64 %indvars.iv92 store i32 %10, ptr %add.ptr.i45, align 4 %cmp54 = icmp ugt i64 %sub.ptr.div.i, %indvars.iv.next95 br i1 %cmp54, label %while.body55, label %while.cond64.preheader, !llvm.loop !8 @@ -580,15 +582,17 @@ while.body67: ; preds = %while.body67.prehea %indvars.iv.next102 = add nuw nsw i64 %indvars.iv101, 1 %arrayidx70 = getelementptr inbounds i32, ptr %otherEntries, i64 %indvars.iv101 %11 = load i32, ptr %arrayidx70, align 4 - %indvars.iv.next100 = add nuw nsw i64 %indvars.iv99, 1 - %add.ptr.i46 = getelementptr inbounds nuw i32, ptr %merged.sroa.0.0, i64 %indvars.iv99 + %indvars.iv.next100 = add nsw i64 %indvars.iv99, 1 + %add.ptr.i46 = getelementptr inbounds i32, ptr %merged.sroa.0.0, i64 %indvars.iv99 store i32 %11, ptr %add.ptr.i46, align 4 %cmp66 = icmp ugt i64 %otherSize, %indvars.iv.next102 br i1 %cmp66, label %while.body67, label %while.end74, !llvm.loop !9 while.end74: ; preds = %while.body67, %while.cond64.preheader %pos.3.lcssa.in = phi i64 [ %pos.2.lcssa.in, %while.cond64.preheader ], [ %indvars.iv.next100, %while.body67 ] - %conv76 = and i64 %pos.3.lcssa.in, 4294967295 + %pos.3.lcssa = trunc i64 %pos.3.lcssa.in to i32 + %sext120 = shl i64 %pos.3.lcssa.in, 32 + %conv76 = ashr exact i64 %sext120, 32 %cmp.i47 = icmp ult i64 %sub.ptr.div.i, %conv76 br i1 %cmp.i47, label %if.then.i, label %if.else.i @@ -602,7 +606,7 @@ if.else.i: ; preds = %while.end74 br i1 %cmp4.i, label %if.then5.i, label %_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit if.then5.i: ; preds = %if.else.i - %add.ptr6.i = getelementptr inbounds nuw i32, ptr %1, i64 %conv76 + %add.ptr6.i = getelementptr inbounds i32, ptr %1, i64 %conv76 %tobool.not.i.i = icmp eq ptr %0, %add.ptr6.i br i1 %tobool.not.i.i, label %_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit, label %if.then.i.i48 @@ -611,19 +615,22 @@ if.then.i.i48: ; preds = %if.then5.i br label %_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit _ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit: ; preds = %if.then.i, %if.else.i, %if.then5.i, %if.then.i.i48 - %12 = and i64 %pos.3.lcssa.in, 4294967295 - %cmp7889.not = icmp eq i64 %12, 0 - br i1 %cmp7889.not, label %_ZNSt6vectorIjSaIjEED2Ev.exit55, label %for.body + %cmp7889 = icmp sgt i32 %pos.3.lcssa, 0 + br i1 %cmp7889, label %for.body, label %_ZNSt6vectorIjSaIjEED2Ev.exit55 -for.body: ; preds = %_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit, %for.body - %indvars.iv106 = phi i64 [ %indvars.iv.next107, %for.body ], [ 0, %_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit ] +for.body: ; preds = %_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit + %wide.trip.count = and i64 %pos.3.lcssa.in, 2147483647 + br label %for.body + +for.body: ; preds = %for.body.preheader, %for.body + %indvars.iv106 = phi i64 [ 0, %for.body.preheader ], [ %indvars.iv.next107, %for.body ] %add.ptr.i50 = getelementptr inbounds nuw i32, ptr %merged.sroa.0.0, i64 %indvars.iv106 %13 = load i32, ptr %add.ptr.i50, align 4 %14 = load ptr, ptr %add.ptr.i, align 8 %add.ptr2.i52 = getelementptr inbounds nuw i32, ptr %14, i64 %indvars.iv106 store i32 %13, ptr %add.ptr2.i52, align 4 %indvars.iv.next107 = add nuw nsw i64 %indvars.iv106, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next107, %conv76 + %exitcond.not = icmp eq i64 %indvars.iv.next107, %wide.trip.count br i1 %exitcond.not, label %_ZNSt6vectorIjSaIjEED2Ev.exit55, label %for.body, !llvm.loop !10 _ZNSt6vectorIjSaIjEED2Ev.exit55: ; preds = %for.body, %_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit diff --git a/bench/velox/optimized/Variant.ll b/bench/velox/optimized/Variant.ll index 0e3e27a163f..ab302208748 100644 --- a/bench/velox/optimized/Variant.ll +++ b/bench/velox/optimized/Variant.ll @@ -7147,13 +7147,14 @@ for.inc.i: ; preds = %for.body.i for.end.i: ; preds = %for.inc.i, %if.then5.i %i.027.in.i = phi i64 [ %indvars.iv.i, %if.then5.i ], [ %sub.ptr.div.i.i, %for.inc.i ] %elementTypeKind.0.i = phi i8 [ %3, %if.then5.i ], [ 33, %for.inc.i ] - %conv1032.i = and i64 %i.027.in.i, 4294967295 + %sext.i = shl i64 %i.027.in.i, 32 + %conv1032.i = ashr exact i64 %sext.i, 32 %cmp1233.i = icmp ugt i64 %sub.ptr.div.i.i, %conv1032.i br i1 %cmp1233.i, label %for.body13.i, label %_ZN8facebook5velox7variant19verifyArrayElementsERKSt6vectorIS1_SaIS1_EE.exit for.body13.i: ; preds = %for.end.i, %for.inc26.i %indvars.iv39.i = phi i64 [ %indvars.iv.next40.i, %for.inc26.i ], [ %conv1032.i, %for.end.i ] - %add.ptr.i20.i = getelementptr inbounds nuw %"class.facebook::velox::variant", ptr %0, i64 %indvars.iv39.i + %add.ptr.i20.i = getelementptr inbounds %"class.facebook::velox::variant", ptr %0, i64 %indvars.iv39.i %ptr_.i21.i = getelementptr inbounds nuw i8, ptr %add.ptr.i20.i, i64 8 %4 = load ptr, ptr %ptr_.i21.i, align 8 %cmp.i22.i = icmp eq ptr %4, null @@ -7169,7 +7170,7 @@ if.then23.i: ; preds = %if.then17.i unreachable for.inc26.i: ; preds = %if.then17.i, %for.body13.i - %indvars.iv.next40.i = add nuw i64 %indvars.iv39.i, 1 + %indvars.iv.next40.i = add i64 %indvars.iv39.i, 1 %exitcond.not = icmp eq i64 %indvars.iv.next40.i, %sub.ptr.div.i.i br i1 %exitcond.not, label %_ZN8facebook5velox7variant19verifyArrayElementsERKSt6vectorIS1_SaIS1_EE.exit, label %for.body13.i, !llvm.loop !102 @@ -8709,13 +8710,14 @@ for.inc: ; preds = %for.body for.end: ; preds = %for.inc, %if.then5 %i.027.in = phi i64 [ %indvars.iv, %if.then5 ], [ %sub.ptr.div.i, %for.inc ] %elementTypeKind.0 = phi i8 [ %3, %if.then5 ], [ 33, %for.inc ] - %conv1032 = and i64 %i.027.in, 4294967295 + %sext = shl i64 %i.027.in, 32 + %conv1032 = ashr exact i64 %sext, 32 %cmp1233 = icmp ugt i64 %sub.ptr.div.i, %conv1032 br i1 %cmp1233, label %for.body13, label %if.end29 for.body13: ; preds = %for.end, %for.inc26 %indvars.iv39 = phi i64 [ %indvars.iv.next40, %for.inc26 ], [ %conv1032, %for.end ] - %add.ptr.i20 = getelementptr inbounds nuw %"class.facebook::velox::variant", ptr %0, i64 %indvars.iv39 + %add.ptr.i20 = getelementptr inbounds %"class.facebook::velox::variant", ptr %0, i64 %indvars.iv39 %ptr_.i21 = getelementptr inbounds nuw i8, ptr %add.ptr.i20, i64 8 %4 = load ptr, ptr %ptr_.i21, align 8 %cmp.i22 = icmp eq ptr %4, null diff --git a/bench/yalantinglibs/optimized/conformance.struct_pb.ll b/bench/yalantinglibs/optimized/conformance.struct_pb.ll index bd76ea5f115..11ff01f2e86 100644 --- a/bench/yalantinglibs/optimized/conformance.struct_pb.ll +++ b/bench/yalantinglibs/optimized/conformance.struct_pb.ll @@ -1628,12 +1628,13 @@ if.end81: ; preds = %_ZN9struct_pb8inter _ZN9struct_pb13UnknownFieldsD2Ev.exit: ; preds = %if.end81 %12 = load i8, ptr %11, align 1 %tobool.i = trunc i8 %12 to i1 - %add89 = select i1 %tobool.i, i64 4, i64 2 - %add90 = add i64 %add89, %total.6 + %add89 = select i1 %tobool.i, i64 2, i64 0 + %add90 = add i64 %total.6, 2 + %add89 = add i64 %add88, %total.0.i br label %if.end91 if.end91: ; preds = %_ZN9struct_pb13UnknownFieldsD2Ev.exit, %if.end81 - %total.7 = phi i64 [ %add90, %_ZN9struct_pb13UnknownFieldsD2Ev.exit ], [ %total.6, %if.end81 ] + %total.7 = phi i64 [ %add89, %_ZN9struct_pb13UnknownFieldsD2Ev.exit ], [ %total.6, %if.end81 ] %print_unknown_fields = getelementptr inbounds nuw i8, ptr %t, i64 96 %13 = load i8, ptr %print_unknown_fields, align 8 %tobool = trunc i8 %13 to i1 @@ -1983,7 +1984,7 @@ _ZN9struct_pb8internal16serialize_varintEPcRmmm.exit19.i: ; preds = %_ZN9struct_ br label %_ZN9struct_pb13UnknownFieldsD2Ev.exit230 _ZN9struct_pb13UnknownFieldsD2Ev.exit230: ; preds = %_ZN9struct_pb13UnknownFieldsD2Ev.exit, %_ZN9struct_pb8internal16serialize_varintEPcRmmm.exit19.i - %add66 = add i64 %total.0.i, %inc2.i201 + %add66 = add i64 %inc2.i201, %add89 br label %if.end67 if.end67: ; preds = %_ZN9struct_pb13UnknownFieldsD2Ev.exit230, %if.end53 diff --git a/bench/yosys/optimized/genrtlil.ll b/bench/yosys/optimized/genrtlil.ll index 3c0f249be83..d23f4cf6845 100644 --- a/bench/yosys/optimized/genrtlil.ll +++ b/bench/yosys/optimized/genrtlil.ll @@ -1244,11 +1244,10 @@ _ZN5Yosys5RTLIL8IdStringD2Ev.exit41: ; preds = %_ZN5Yosys5RTLIL8IdS %146 = ptrtoint ptr %144 to i64 %147 = ptrtoint ptr %145 to i64 %148 = sub i64 %146, %147 - %149 = lshr exact i64 %148, 3 - %150 = trunc i64 %149 to i32 - %151 = trunc nuw i64 %indvars.iv.next98 to i32 - %152 = icmp slt i32 %151, %150 - br i1 %152, label %69, label %._crit_edge, !llvm.loop !67 + %sext = shl i64 %148, 29 + %149 = ashr i64 %sext, 32 + %150 = icmp slt i64 %indvars.iv.next98, %149 + br i1 %150, label %69, label %._crit_edge, !llvm.loop !67 153: ; preds = %69 %154 = landingpad { ptr, i32 } @@ -1283,12 +1282,12 @@ _ZN5Yosys5RTLIL8IdStringD2Ev.exit41: ; preds = %_ZN5Yosys5RTLIL8IdS br i1 %.0, label %.thread48, label %157 .thread48: ; preds = %.thread52, %156 - %.pn.pn51 = phi { ptr, i32 } [ %lpad.phi, %156 ], [ %155, %.thread52 ] + %.pn.pn51 = phi { ptr, i32 } [ %lpad.phi, %154 ], [ %155, %.thread52 ] call void @_ZdlPvm(ptr noundef nonnull %76, i64 noundef 32) #34 br label %157 157: ; preds = %156, %.thread48, %153 - %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn51, %.thread48 ], [ %lpad.phi, %156 ], [ %154, %153 ] + %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn51, %.thread48 ], [ %lpad.phi, %154 ], [ %154, %151 ] %.not.i.i.i42 = icmp eq ptr %73, null br i1 %.not.i.i.i42, label %.body, label %158 @@ -1337,7 +1336,7 @@ _ZN5Yosys5RTLIL8IdStringD2Ev.exit44: ; preds = %._crit_edge79.threa ret void .body: ; preds = %158, %157, %43 - %.pn.pn.pn.pn = phi { ptr, i32 } [ %44, %43 ], [ %.pn.pn.pn, %157 ], [ %.pn.pn.pn, %158 ] + %.pn.pn.pn.pn = phi { ptr, i32 } [ %44, %43 ], [ %.pn.pn.pn, %155 ], [ %.pn.pn.pn, %156 ] call void @_ZN5Yosys5RTLIL8IdStringD2Ev(ptr noundef nonnull align 4 dereferenceable(4) %3) #30 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #30 resume { ptr, i32 } %.pn.pn.pn.pn diff --git a/bench/zfp/optimized/encode4d.ll b/bench/zfp/optimized/encode4d.ll index dbb639b786b..fed49707099 100644 --- a/bench/zfp/optimized/encode4d.ll +++ b/bench/zfp/optimized/encode4d.ll @@ -1224,7 +1224,7 @@ stream_write_bit.exit60.i: ; preds = %61, %.lr.ph99.i 63: ; preds = %stream_write_bit.exit60.i %indvars.iv.next153.i = add nuw nsw i64 %indvars.iv152.i, 1 %64 = icmp ne i32 %52, 0 - %65 = icmp samesign ult i64 %indvars.iv152.i, 254 + %65 = icmp ult i64 %indvars.iv152.i, 254 %66 = and i1 %65, %64 br i1 %66, label %.lr.ph99.i, label %stream_write_bit.exit60._crit_edge.loopexit.i @@ -1239,9 +1239,9 @@ stream_write_bit.exit60._crit_edge.i: ; preds = %stream_write_bit.ex %.sroa.13.5.i = phi i64 [ %.sroa.13.7.i, %46 ], [ %.sroa.13.8.i, %stream_write_bit.exit60._crit_edge.loopexit.i ] %.sroa.19.5.i = phi ptr [ %.sroa.19.7.i, %46 ], [ %.sroa.19.8.i, %stream_write_bit.exit60._crit_edge.loopexit.i ] %.4.i = phi i32 [ %37, %46 ], [ %52, %stream_write_bit.exit60._crit_edge.loopexit.i ] - %67 = add nuw i32 %.2.lcssa.i, 1 + %67 = add i32 %.2.lcssa.i, 1 %68 = icmp ne i32 %.4.i, 0 - %69 = icmp ult i32 %.2.lcssa.i, 255 + %69 = icmp ult i32 %67, 256 %70 = select i1 %68, i1 %69, i1 false br i1 %70, label %.lr.ph116.i, label %stream_write_bit.exit59._crit_edge.i @@ -1376,8 +1376,8 @@ stream_write_bit.exit43.i: ; preds = %102, %.lr.ph110.i 104: ; preds = %stream_write_bit.exit43.i %105 = add i32 %.1109.i, -1 - %106 = icmp ult i32 %.137108.i, 255 - br i1 %106, label %.lr.ph96.preheader.i, label %.critedge2.thread.i.loopexit53 + %106 = icmp samesign ult i32 %.137108.i, 255 + br i1 %106, label %.lr.ph96.preheader.i, label %.critedge.i .lr.ph96.preheader.i: ; preds = %104 %107 = zext nneg i32 %.137108.i to i64 @@ -1415,21 +1415,17 @@ stream_write_bit.exit44.i: ; preds = %116, %.lr.ph96.i %exitcond134.not.i = icmp eq i64 %indvars.iv.next132.i, 255 br i1 %exitcond134.not.i, label %.critedge.i, label %.lr.ph96.i -.critedge2.thread.i.loopexit53: ; preds = %104 - %119 = add nuw i32 %.137108.i, 1 - br label %.critedge.i - .critedge2.i: ; preds = %stream_write_bit.exit44.i %120 = trunc nuw nsw i64 %indvars.iv131.i to i32 - %121 = add nuw i32 %120, 1 - %122 = icmp samesign ult i64 %indvars.iv131.i, 255 + %121 = add i32 %120, 1 + %122 = icmp ult i32 %121, 256 br i1 %122, label %.lr.ph110.i, label %.critedge.i -.critedge.i: ; preds = %.critedge2.i, %stream_write_bit.exit43.i, %118, %.critedge2.thread.i.loopexit53, %.preheader80.i - %.137.lcssa.i = phi i32 [ %.036122.i, %.preheader80.i ], [ %119, %.critedge2.thread.i.loopexit53 ], [ 256, %118 ], [ %.137108.i, %stream_write_bit.exit43.i ], [ %121, %.critedge2.i ] - %.sroa.15.3.i = phi i64 [ %.sroa.15.6.i, %.preheader80.i ], [ %.sroa.15.7.i, %.critedge2.thread.i.loopexit53 ], [ %.sroa.15.8.i, %118 ], [ %.sroa.15.7.i, %stream_write_bit.exit43.i ], [ %.sroa.15.8.i, %.critedge2.i ] - %.sroa.0.3.i34 = phi i64 [ %.sroa.0.6.i31, %.preheader80.i ], [ %.sroa.0.7.i35, %.critedge2.thread.i.loopexit53 ], [ %.sroa.0.8.i37, %118 ], [ %.sroa.0.7.i35, %stream_write_bit.exit43.i ], [ %.sroa.0.8.i37, %.critedge2.i ] - %.sroa.21.3.i = phi ptr [ %.sroa.21.6.i, %.preheader80.i ], [ %.sroa.21.7.i, %.critedge2.thread.i.loopexit53 ], [ %.sroa.21.8.i, %118 ], [ %.sroa.21.7.i, %stream_write_bit.exit43.i ], [ %.sroa.21.8.i, %.critedge2.i ] +.critedge.i: ; preds = %104, %.critedge2.i, %stream_write_bit.exit43.i, %118, %.preheader80.i + %.137.lcssa.i = phi i32 [ %.036122.i, %.preheader80.i ], [ 256, %118 ], [ 256, %104 ], [ %.137108.i, %stream_write_bit.exit43.i ], [ %121, %.critedge2.i ] + %.sroa.15.3.i = phi i64 [ %.sroa.15.6.i, %.preheader80.i ], [ %.sroa.15.8.i, %118 ], [ %.sroa.15.7.i, %104 ], [ %.sroa.15.7.i, %stream_write_bit.exit43.i ], [ %.sroa.15.8.i, %.critedge2.i ] + %.sroa.0.3.i34 = phi i64 [ %.sroa.0.6.i31, %.preheader80.i ], [ %.sroa.0.8.i37, %118 ], [ %.sroa.0.7.i35, %104 ], [ %.sroa.0.7.i35, %stream_write_bit.exit43.i ], [ %.sroa.0.8.i37, %.critedge2.i ] + %.sroa.21.3.i = phi ptr [ %.sroa.21.6.i, %.preheader80.i ], [ %.sroa.21.8.i, %118 ], [ %.sroa.21.7.i, %104 ], [ %.sroa.21.7.i, %stream_write_bit.exit43.i ], [ %.sroa.21.8.i, %.critedge2.i ] %indvars.iv.next136.i = add nsw i64 %indvars.iv135.i, -1 %123 = icmp ugt i64 %indvars.iv135.i, %75 br i1 %123, label %.preheader81.i, label %encode_many_ints_prec_uint64.exit diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..705e5ee2d94 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/123518 export COMPTIME_MODE=0 # Please rebase manually