diff --git a/bench/abc/optimized/abcFx.c.ll b/bench/abc/optimized/abcFx.c.ll index f0fe356cb3a..eca07c5cd19 100644 --- a/bench/abc/optimized/abcFx.c.ll +++ b/bench/abc/optimized/abcFx.c.ll @@ -2105,47 +2105,47 @@ define i32 @Fx_ManDivFindCubeFree(ptr nocapture noundef readonly %0, ptr nocaptu %12 = getelementptr i8, ptr %1, i64 4 %.val96 = load i32, ptr %12, align 4 %13 = sext i32 %.val96 to i64 - %.idx151 = shl nsw i64 %13, 2 - %14 = getelementptr inbounds i8, ptr %.val85, i64 %.idx151 + %.idx150 = shl nsw i64 %13, 2 + %14 = getelementptr inbounds i8, ptr %.val85, i64 %.idx150 %15 = getelementptr inbounds i8, ptr %2, i64 4 store i32 0, ptr %15, align 4 %16 = icmp sgt i32 %.val94, 1 %17 = icmp sgt i32 %.val96, 1 %18 = select i1 %16, i1 %17, i1 false - br i1 %18, label %.lr.ph, label %.preheader135 + br i1 %18, label %.lr.ph, label %.preheader134 .lr.ph: ; preds = %4 %.phi.trans.insert.i99 = getelementptr inbounds i8, ptr %2, i64 8 br label %20 -.preheader135: ; preds = %94, %4 +.preheader134: ; preds = %94, %4 %.073.lcssa = phi ptr [ %8, %4 ], [ %.174, %94 ] %.071.lcssa = phi i32 [ 0, %4 ], [ %.172, %94 ] %.068.lcssa = phi i32 [ 0, %4 ], [ %.169, %94 ] %.065.lcssa = phi i32 [ 1, %4 ], [ %.166, %94 ] %.064.lcssa = phi ptr [ %6, %4 ], [ %.1, %94 ] %19 = icmp ult ptr %.064.lcssa, %11 - br i1 %19, label %.lr.ph148, label %.preheader + br i1 %19, label %.lr.ph147, label %.preheader -.lr.ph148: ; preds = %.preheader135 +.lr.ph147: ; preds = %.preheader134 %.phi.trans.insert.i106 = getelementptr inbounds i8, ptr %2, i64 8 br label %99 20: ; preds = %.lr.ph, %94 - %.064142 = phi ptr [ %6, %.lr.ph ], [ %.1, %94 ] - %.065141 = phi i32 [ 1, %.lr.ph ], [ %.166, %94 ] - %.068140 = phi i32 [ 0, %.lr.ph ], [ %.169, %94 ] - %.071139 = phi i32 [ 0, %.lr.ph ], [ %.172, %94 ] - %.073138 = phi ptr [ %8, %.lr.ph ], [ %.174, %94 ] - %21 = load i32, ptr %.064142, align 4 - %22 = load i32, ptr %.073138, align 4 + %.064141 = phi ptr [ %6, %.lr.ph ], [ %.1, %94 ] + %.065140 = phi i32 [ 1, %.lr.ph ], [ %.166, %94 ] + %.068139 = phi i32 [ 0, %.lr.ph ], [ %.169, %94 ] + %.071138 = phi i32 [ 0, %.lr.ph ], [ %.172, %94 ] + %.073137 = phi ptr [ %8, %.lr.ph ], [ %.174, %94 ] + %21 = load i32, ptr %.064141, align 4 + %22 = load i32, ptr %.073137, align 4 %23 = icmp eq i32 %21, %22 br i1 %23, label %24, label %28 24: ; preds = %20 - %25 = getelementptr inbounds i8, ptr %.064142, i64 4 - %26 = getelementptr inbounds i8, ptr %.073138, i64 4 - %27 = add nsw i32 %.071139, 1 + %25 = getelementptr inbounds i8, ptr %.064141, i64 4 + %26 = getelementptr inbounds i8, ptr %.073137, i64 4 + %27 = add nsw i32 %.071138, 1 br label %94 28: ; preds = %20 @@ -2153,9 +2153,9 @@ define i32 @Fx_ManDivFindCubeFree(ptr nocapture noundef readonly %0, ptr nocaptu br i1 %29, label %30, label %62 30: ; preds = %28 - %31 = getelementptr inbounds i8, ptr %.064142, i64 4 + %31 = getelementptr inbounds i8, ptr %.064141, i64 4 %32 = shl nsw i32 %21, 1 - %33 = add nsw i32 %32, %.068140 + %33 = add nsw i32 %32, %.068139 %34 = load i32, ptr %15, align 4 %35 = load i32, ptr %2, align 8 %36 = icmp eq i32 %34, %35 @@ -2223,9 +2223,9 @@ Vec_IntPush.exit: ; preds = %.Vec_IntGrow.exit10 62: ; preds = %28 %.val91 = load i32, ptr %15, align 4 %63 = icmp eq i32 %.val91, 0 - %spec.select = select i1 %63, i32 1, i32 %.068140 - %spec.select82 = select i1 %63, i32 0, i32 %.065141 - %64 = getelementptr inbounds i8, ptr %.073138, i64 4 + %spec.select = select i1 %63, i32 1, i32 %.068139 + %spec.select82 = select i1 %63, i32 0, i32 %.065140 + %64 = getelementptr inbounds i8, ptr %.073137, i64 4 %65 = shl nsw i32 %22, 1 %66 = add nsw i32 %spec.select82, %65 %67 = load i32, ptr %2, align 8 @@ -2292,28 +2292,28 @@ Vec_IntPush.exit104: ; preds = %.Vec_IntGrow.exit10 br label %94 94: ; preds = %Vec_IntPush.exit, %Vec_IntPush.exit104, %24 - %.174 = phi ptr [ %26, %24 ], [ %.073138, %Vec_IntPush.exit ], [ %64, %Vec_IntPush.exit104 ] - %.172 = phi i32 [ %27, %24 ], [ %.071139, %Vec_IntPush.exit ], [ %.071139, %Vec_IntPush.exit104 ] - %.169 = phi i32 [ %.068140, %24 ], [ %.068140, %Vec_IntPush.exit ], [ %spec.select, %Vec_IntPush.exit104 ] - %.166 = phi i32 [ %.065141, %24 ], [ %.065141, %Vec_IntPush.exit ], [ %spec.select82, %Vec_IntPush.exit104 ] - %.1 = phi ptr [ %25, %24 ], [ %31, %Vec_IntPush.exit ], [ %.064142, %Vec_IntPush.exit104 ] + %.174 = phi ptr [ %26, %24 ], [ %.073137, %Vec_IntPush.exit ], [ %64, %Vec_IntPush.exit104 ] + %.172 = phi i32 [ %27, %24 ], [ %.071138, %Vec_IntPush.exit ], [ %.071138, %Vec_IntPush.exit104 ] + %.169 = phi i32 [ %.068139, %24 ], [ %.068139, %Vec_IntPush.exit ], [ %spec.select, %Vec_IntPush.exit104 ] + %.166 = phi i32 [ %.065140, %24 ], [ %.065140, %Vec_IntPush.exit ], [ %spec.select82, %Vec_IntPush.exit104 ] + %.1 = phi ptr [ %25, %24 ], [ %31, %Vec_IntPush.exit ], [ %.064141, %Vec_IntPush.exit104 ] %95 = icmp ult ptr %.1, %11 %96 = icmp ult ptr %.174, %14 %97 = select i1 %95, i1 %96, i1 false - br i1 %97, label %20, label %.preheader135, !llvm.loop !31 + br i1 %97, label %20, label %.preheader134, !llvm.loop !31 -.preheader: ; preds = %Vec_IntPush.exit111, %.preheader135 +.preheader: ; preds = %Vec_IntPush.exit111, %.preheader134 %98 = icmp ult ptr %.073.lcssa, %14 - br i1 %98, label %.lr.ph150, label %._crit_edge + br i1 %98, label %.lr.ph149, label %._crit_edge -.lr.ph150: ; preds = %.preheader +.lr.ph149: ; preds = %.preheader %.phi.trans.insert.i113 = getelementptr inbounds i8, ptr %2, i64 8 br label %133 -99: ; preds = %.lr.ph148, %Vec_IntPush.exit111 - %.2147 = phi ptr [ %.064.lcssa, %.lr.ph148 ], [ %100, %Vec_IntPush.exit111 ] - %100 = getelementptr inbounds i8, ptr %.2147, i64 4 - %101 = load i32, ptr %.2147, align 4 +99: ; preds = %.lr.ph147, %Vec_IntPush.exit111 + %.2146 = phi ptr [ %.064.lcssa, %.lr.ph147 ], [ %100, %Vec_IntPush.exit111 ] + %100 = getelementptr inbounds i8, ptr %.2146, i64 4 + %101 = load i32, ptr %.2146, align 4 %102 = shl nsw i32 %101, 1 %103 = add nsw i32 %102, %.068.lcssa %104 = load i32, ptr %15, align 4 @@ -2381,10 +2381,10 @@ Vec_IntPush.exit111: ; preds = %.Vec_IntGrow.exit10 %132 = icmp ult ptr %100, %11 br i1 %132, label %99, label %.preheader, !llvm.loop !32 -133: ; preds = %.lr.ph150, %Vec_IntPush.exit118 - %.275149 = phi ptr [ %.073.lcssa, %.lr.ph150 ], [ %134, %Vec_IntPush.exit118 ] - %134 = getelementptr inbounds i8, ptr %.275149, i64 4 - %135 = load i32, ptr %.275149, align 4 +133: ; preds = %.lr.ph149, %Vec_IntPush.exit118 + %.275148 = phi ptr [ %.073.lcssa, %.lr.ph149 ], [ %134, %Vec_IntPush.exit118 ] + %134 = getelementptr inbounds i8, ptr %.275148, i64 4 + %135 = load i32, ptr %.275148, align 4 %136 = shl nsw i32 %135, 1 %137 = add nsw i32 %136, %.065.lcssa %138 = load i32, ptr %15, align 4 @@ -2456,116 +2456,118 @@ Vec_IntPush.exit118: ; preds = %.Vec_IntGrow.exit10 %.val90 = load i32, ptr %15, align 4 switch i32 %.val90, label %.fold.split [ i32 0, label %167 - i32 1, label %Vec_IntDrop.exit.thread157 + i32 1, label %Vec_IntDrop.exit.thread156 i32 3, label %168 ] 167: ; preds = %._crit_edge %puts = tail call i32 @puts(ptr nonnull dereferenceable(1) @str.2) - br label %Vec_IntDrop.exit.thread157 + br label %Vec_IntDrop.exit.thread156 168: ; preds = %._crit_edge %169 = getelementptr i8, ptr %2, i64 8 %.val = load ptr, ptr %169, align 8 %170 = load i32, ptr %.val, align 4 - %171 = getelementptr inbounds i8, ptr %.val, i64 4 - %172 = load i32, ptr %171, align 4 - %173 = xor i32 %172, %170 - %.mask = and i32 %173, -2 - %174 = icmp eq i32 %.mask, 2 - %175 = getelementptr inbounds i8, ptr %.val, i64 8 - %176 = load i32, ptr %175, align 4 - br i1 %174, label %177, label %195 - -177: ; preds = %168 - %178 = xor i32 %176, %170 - %179 = and i32 %178, 1 - %180 = icmp eq i32 %179, 0 + %171 = ashr i32 %170, 1 + %172 = getelementptr inbounds i8, ptr %.val, i64 4 + %173 = load i32, ptr %172, align 4 + %174 = ashr i32 %173, 1 + %175 = xor i32 %174, %171 + %176 = icmp eq i32 %175, 1 + %177 = getelementptr inbounds i8, ptr %.val, i64 8 + %178 = load i32, ptr %177, align 4 + br i1 %176, label %179, label %197 + +179: ; preds = %168 + %180 = xor i32 %178, %170 + %181 = and i32 %180, 1 + %182 = icmp eq i32 %181, 0 store i32 2, ptr %15, align 4 - br i1 %180, label %.lr.ph.i, label %.lr.ph.i119 + br i1 %182, label %.lr.ph.i, label %.lr.ph.i119 -.lr.ph.i: ; preds = %177, %.lr.ph.i - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.lr.ph.i ], [ 0, %177 ] - %181 = load ptr, ptr %169, align 8 +.lr.ph.i: ; preds = %179, %.lr.ph.i + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.lr.ph.i ], [ 0, %179 ] + %183 = load ptr, ptr %169, align 8 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %182 = getelementptr inbounds i32, ptr %181, i64 %indvars.iv.next.i - %183 = load i32, ptr %182, align 4 - %184 = getelementptr inbounds i32, ptr %181, i64 %indvars.iv.i - store i32 %183, ptr %184, align 4 - %185 = load i32, ptr %15, align 4 - %186 = sext i32 %185 to i64 - %187 = icmp slt i64 %indvars.iv.next.i, %186 - br i1 %187, label %.lr.ph.i, label %Vec_IntDrop.exit, !llvm.loop !34 - -.lr.ph.i119: ; preds = %177, %.lr.ph.i119 - %indvars.iv.i120 = phi i64 [ %indvars.iv.next.i121, %.lr.ph.i119 ], [ 1, %177 ] - %188 = load ptr, ptr %169, align 8 + %184 = getelementptr inbounds i32, ptr %183, i64 %indvars.iv.next.i + %185 = load i32, ptr %184, align 4 + %186 = getelementptr inbounds i32, ptr %183, i64 %indvars.iv.i + store i32 %185, ptr %186, align 4 + %187 = load i32, ptr %15, align 4 + %188 = sext i32 %187 to i64 + %189 = icmp slt i64 %indvars.iv.next.i, %188 + br i1 %189, label %.lr.ph.i, label %Vec_IntDrop.exit, !llvm.loop !34 + +.lr.ph.i119: ; preds = %179, %.lr.ph.i119 + %indvars.iv.i120 = phi i64 [ %indvars.iv.next.i121, %.lr.ph.i119 ], [ 1, %179 ] + %190 = load ptr, ptr %169, align 8 %indvars.iv.next.i121 = add nuw nsw i64 %indvars.iv.i120, 1 - %189 = getelementptr inbounds i32, ptr %188, i64 %indvars.iv.next.i121 - %190 = load i32, ptr %189, align 4 - %191 = getelementptr inbounds i32, ptr %188, i64 %indvars.iv.i120 - store i32 %190, ptr %191, align 4 - %192 = load i32, ptr %15, align 4 - %193 = sext i32 %192 to i64 - %194 = icmp slt i64 %indvars.iv.next.i121, %193 - br i1 %194, label %.lr.ph.i119, label %Vec_IntDrop.exit, !llvm.loop !34 - -195: ; preds = %168 - %196 = xor i32 %176, %172 - %.mask132 = and i32 %196, -2 - %197 = icmp eq i32 %.mask132, 2 - br i1 %197, label %198, label %Vec_IntDrop.exit.thread157 - -198: ; preds = %195 - %199 = and i32 %173, 1 - %200 = icmp eq i32 %199, 0 + %191 = getelementptr inbounds i32, ptr %190, i64 %indvars.iv.next.i121 + %192 = load i32, ptr %191, align 4 + %193 = getelementptr inbounds i32, ptr %190, i64 %indvars.iv.i120 + store i32 %192, ptr %193, align 4 + %194 = load i32, ptr %15, align 4 + %195 = sext i32 %194 to i64 + %196 = icmp slt i64 %indvars.iv.next.i121, %195 + br i1 %196, label %.lr.ph.i119, label %Vec_IntDrop.exit, !llvm.loop !34 + +197: ; preds = %168 + %198 = ashr i32 %178, 1 + %199 = xor i32 %198, %174 + %200 = icmp eq i32 %199, 1 + br i1 %200, label %201, label %Vec_IntDrop.exit.thread156 + +201: ; preds = %197 + %202 = xor i32 %173, %170 + %203 = and i32 %202, 1 + %204 = icmp eq i32 %203, 0 store i32 2, ptr %15, align 4 - br i1 %200, label %.lr.ph.i123, label %Vec_IntDrop.exit.thread + br i1 %204, label %.lr.ph.i123, label %Vec_IntDrop.exit.thread -.lr.ph.i123: ; preds = %198, %.lr.ph.i123 - %indvars.iv.i124 = phi i64 [ %indvars.iv.next.i125, %.lr.ph.i123 ], [ 1, %198 ] - %201 = load ptr, ptr %169, align 8 +.lr.ph.i123: ; preds = %201, %.lr.ph.i123 + %indvars.iv.i124 = phi i64 [ %indvars.iv.next.i125, %.lr.ph.i123 ], [ 1, %201 ] + %205 = load ptr, ptr %169, align 8 %indvars.iv.next.i125 = add nuw nsw i64 %indvars.iv.i124, 1 - %202 = getelementptr inbounds i32, ptr %201, i64 %indvars.iv.next.i125 - %203 = load i32, ptr %202, align 4 - %204 = getelementptr inbounds i32, ptr %201, i64 %indvars.iv.i124 - store i32 %203, ptr %204, align 4 - %205 = load i32, ptr %15, align 4 - %206 = sext i32 %205 to i64 - %207 = icmp slt i64 %indvars.iv.next.i125, %206 - br i1 %207, label %.lr.ph.i123, label %Vec_IntDrop.exit, !llvm.loop !34 + %206 = getelementptr inbounds i32, ptr %205, i64 %indvars.iv.next.i125 + %207 = load i32, ptr %206, align 4 + %208 = getelementptr inbounds i32, ptr %205, i64 %indvars.iv.i124 + store i32 %207, ptr %208, align 4 + %209 = load i32, ptr %15, align 4 + %210 = sext i32 %209 to i64 + %211 = icmp slt i64 %indvars.iv.next.i125, %210 + br i1 %211, label %.lr.ph.i123, label %Vec_IntDrop.exit, !llvm.loop !34 Vec_IntDrop.exit: ; preds = %.lr.ph.i123, %.lr.ph.i119, %.lr.ph.i - %.val87 = phi i32 [ %185, %.lr.ph.i ], [ %192, %.lr.ph.i119 ], [ %205, %.lr.ph.i123 ] - %208 = icmp eq i32 %.val87, 2 - br i1 %208, label %Vec_IntDrop.exit.Vec_IntDrop.exit.thread_crit_edge, label %Vec_IntDrop.exit.thread157 + %.val87 = phi i32 [ %187, %.lr.ph.i ], [ %194, %.lr.ph.i119 ], [ %209, %.lr.ph.i123 ] + %212 = icmp eq i32 %.val87, 2 + br i1 %212, label %Vec_IntDrop.exit.Vec_IntDrop.exit.thread_crit_edge, label %Vec_IntDrop.exit.thread156 Vec_IntDrop.exit.Vec_IntDrop.exit.thread_crit_edge: ; preds = %Vec_IntDrop.exit %.val93.pre = load ptr, ptr %169, align 8 br label %Vec_IntDrop.exit.thread -Vec_IntDrop.exit.thread: ; preds = %198, %Vec_IntDrop.exit.Vec_IntDrop.exit.thread_crit_edge - %.val93 = phi ptr [ %.val93.pre, %Vec_IntDrop.exit.Vec_IntDrop.exit.thread_crit_edge ], [ %.val, %198 ] - %209 = load i32, ptr %.val, align 4 - %210 = ashr i32 %209, 1 - %211 = load i32, ptr %171, align 4 - %212 = ashr i32 %211, 1 - %spec.select83 = tail call i32 @llvm.smin.i32(i32 %210, i32 %212) - %spec.select84 = tail call i32 @llvm.smax.i32(i32 %210, i32 %212) - %213 = shl nsw i32 %spec.select83, 1 - store i32 %213, ptr %.val93, align 4 - %214 = shl nsw i32 %spec.select84, 1 - %215 = or disjoint i32 %214, 1 +Vec_IntDrop.exit.thread: ; preds = %201, %Vec_IntDrop.exit.Vec_IntDrop.exit.thread_crit_edge + %.val93 = phi ptr [ %.val93.pre, %Vec_IntDrop.exit.Vec_IntDrop.exit.thread_crit_edge ], [ %.val, %201 ] + %213 = load i32, ptr %.val, align 4 + %214 = ashr i32 %213, 1 + %215 = load i32, ptr %172, align 4 + %216 = ashr i32 %215, 1 + %spec.select83 = tail call i32 @llvm.smin.i32(i32 %214, i32 %216) + %spec.select84 = tail call i32 @llvm.smax.i32(i32 %214, i32 %216) + %217 = shl nsw i32 %spec.select83, 1 + store i32 %217, ptr %.val93, align 4 + %218 = shl nsw i32 %spec.select84, 1 + %219 = or disjoint i32 %218, 1 %.val92 = load ptr, ptr %169, align 8 - %216 = getelementptr inbounds i8, ptr %.val92, i64 4 - store i32 %215, ptr %216, align 4 - br label %Vec_IntDrop.exit.thread157 + %220 = getelementptr inbounds i8, ptr %.val92, i64 4 + store i32 %219, ptr %220, align 4 + br label %Vec_IntDrop.exit.thread156 .fold.split: ; preds = %._crit_edge - br label %Vec_IntDrop.exit.thread157 + br label %Vec_IntDrop.exit.thread156 -Vec_IntDrop.exit.thread157: ; preds = %195, %._crit_edge, %.fold.split, %167, %Vec_IntDrop.exit.thread, %Vec_IntDrop.exit - %.0 = phi i32 [ %.071.lcssa, %Vec_IntDrop.exit ], [ %.071.lcssa, %Vec_IntDrop.exit.thread ], [ %.071.lcssa, %167 ], [ -1, %._crit_edge ], [ %.071.lcssa, %.fold.split ], [ %.071.lcssa, %195 ] +Vec_IntDrop.exit.thread156: ; preds = %197, %._crit_edge, %.fold.split, %167, %Vec_IntDrop.exit.thread, %Vec_IntDrop.exit + %.0 = phi i32 [ %.071.lcssa, %Vec_IntDrop.exit ], [ %.071.lcssa, %Vec_IntDrop.exit.thread ], [ %.071.lcssa, %167 ], [ -1, %._crit_edge ], [ %.071.lcssa, %.fold.split ], [ %.071.lcssa, %197 ] ret i32 %.0 } diff --git a/bench/abc/optimized/abcOrchestration.c.ll b/bench/abc/optimized/abcOrchestration.c.ll index 8bf08ff1499..a5e863c28d9 100644 --- a/bench/abc/optimized/abcOrchestration.c.ll +++ b/bench/abc/optimized/abcOrchestration.c.ll @@ -6443,10 +6443,10 @@ define noalias noundef ptr @Abc_ManResubQuit2_1(ptr nocapture noundef readonly % %32 = getelementptr inbounds i8, ptr %17, i64 20 %33 = load i32, ptr %32, align 4 %34 = lshr i32 %33, 7 + %35 = and i32 %34, 1 br i1 %or.cond, label %Dec_GraphAddNodeAnd.exit, label %Dec_GraphAddNodeOr.exit Dec_GraphAddNodeOr.exit: ; preds = %5 - %35 = and i32 %34, 1 %36 = getelementptr inbounds i8, ptr %21, i64 20 %37 = load i32, ptr %36, align 4 %38 = lshr i32 %37, 7 @@ -6459,87 +6459,86 @@ Dec_GraphAddNodeOr.exit: ; preds = %5 %44 = or disjoint i32 %43, 16384 %45 = xor i32 %35, 3 %46 = xor i32 %39, 5 - br label %61 + br label %60 Dec_GraphAddNodeAnd.exit: ; preds = %5 - %47 = xor i32 %34, %29 - %48 = and i32 %47, 1 - %49 = or disjoint i32 %48, 2 - %50 = getelementptr inbounds i8, ptr %21, i64 20 - %51 = load i32, ptr %50, align 4 - %52 = lshr i32 %51, 7 - %53 = trunc i64 %19 to i32 - %54 = xor i32 %52, %53 - %55 = and i32 %54, 1 - %56 = or disjoint i32 %55, 4 - %57 = getelementptr inbounds i8, ptr %9, i64 80 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %57, i8 0, i64 16, i1 false) - %58 = shl nuw nsw i32 %48, 15 - %59 = shl nuw nsw i32 %55, 16 - %60 = or disjoint i32 %59, %58 - br label %61 - -61: ; preds = %Dec_GraphAddNodeAnd.exit, %Dec_GraphAddNodeOr.exit - %.sink68 = phi i32 [ %49, %Dec_GraphAddNodeAnd.exit ], [ %45, %Dec_GraphAddNodeOr.exit ] - %.sink67 = phi i32 [ %56, %Dec_GraphAddNodeAnd.exit ], [ %46, %Dec_GraphAddNodeOr.exit ] - %.sink = phi i32 [ %60, %Dec_GraphAddNodeAnd.exit ], [ %44, %Dec_GraphAddNodeOr.exit ] + %47 = xor i32 %35, %30 + %48 = or disjoint i32 %47, 2 + %49 = getelementptr inbounds i8, ptr %21, i64 20 + %50 = load i32, ptr %49, align 4 + %51 = lshr i32 %50, 7 + %52 = trunc i64 %19 to i32 + %53 = xor i32 %51, %52 + %54 = and i32 %53, 1 + %55 = or disjoint i32 %54, 4 + %56 = getelementptr inbounds i8, ptr %9, i64 80 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %56, i8 0, i64 16, i1 false) + %57 = shl nuw nsw i32 %47, 15 + %58 = shl nuw nsw i32 %54, 16 + %59 = or disjoint i32 %58, %57 + br label %60 + +60: ; preds = %Dec_GraphAddNodeAnd.exit, %Dec_GraphAddNodeOr.exit + %.sink68 = phi i32 [ %48, %Dec_GraphAddNodeAnd.exit ], [ %45, %Dec_GraphAddNodeOr.exit ] + %.sink67 = phi i32 [ %55, %Dec_GraphAddNodeAnd.exit ], [ %46, %Dec_GraphAddNodeOr.exit ] + %.sink = phi i32 [ %59, %Dec_GraphAddNodeAnd.exit ], [ %44, %Dec_GraphAddNodeOr.exit ] %.sroa.015.0 = phi i32 [ 6, %Dec_GraphAddNodeAnd.exit ], [ 7, %Dec_GraphAddNodeOr.exit ] - %62 = getelementptr inbounds i8, ptr %9, i64 72 - store i32 %.sink68, ptr %62, align 8 - %63 = getelementptr inbounds i8, ptr %9, i64 76 - store i32 %.sink67, ptr %63, align 4 - %64 = getelementptr inbounds i8, ptr %9, i64 88 - store i32 %.sink, ptr %64, align 8 + %61 = getelementptr inbounds i8, ptr %9, i64 72 + store i32 %.sink68, ptr %61, align 8 + %62 = getelementptr inbounds i8, ptr %9, i64 76 + store i32 %.sink67, ptr %62, align 4 + %63 = getelementptr inbounds i8, ptr %9, i64 88 + store i32 %.sink, ptr %63, align 8 %.not42 = icmp eq i32 %4, 0 store i32 5, ptr %7, align 8 - %65 = getelementptr inbounds i8, ptr %9, i64 96 - %66 = getelementptr inbounds i8, ptr %9, i64 104 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %66, i8 0, i64 16, i1 false) + %64 = getelementptr inbounds i8, ptr %9, i64 96 + %65 = getelementptr inbounds i8, ptr %9, i64 104 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %65, i8 0, i64 16, i1 false) br i1 %.not42, label %Dec_GraphAddNodeAnd.exit65, label %Dec_GraphAddNodeOr.exit58 -Dec_GraphAddNodeOr.exit58: ; preds = %61 - %67 = getelementptr inbounds i8, ptr %9, i64 100 - %68 = getelementptr inbounds i8, ptr %9, i64 112 - %69 = shl nuw nsw i32 %28, 15 - %70 = shl nuw nsw i32 %.sroa.015.0, 16 - %71 = and i32 %70, 65536 - %72 = or disjoint i32 %71, %69 - %73 = or disjoint i32 %72, 16384 - store i32 %73, ptr %68, align 8 - %74 = xor i32 %28, 1 - store i32 %74, ptr %65, align 8 - %75 = xor i32 %.sroa.015.0, 1 - store i32 %75, ptr %67, align 4 - br label %82 - -Dec_GraphAddNodeAnd.exit65: ; preds = %61 - store i32 %28, ptr %65, align 8 - %76 = getelementptr inbounds i8, ptr %9, i64 100 - store i32 %.sroa.015.0, ptr %76, align 4 - %77 = getelementptr inbounds i8, ptr %9, i64 112 - %78 = shl nuw nsw i32 %28, 15 - %79 = shl nuw nsw i32 %.sroa.015.0, 16 - %80 = and i32 %79, 65536 - %81 = or disjoint i32 %80, %78 - store i32 %81, ptr %77, align 8 - br label %82 - -82: ; preds = %Dec_GraphAddNodeAnd.exit65, %Dec_GraphAddNodeOr.exit58 +Dec_GraphAddNodeOr.exit58: ; preds = %60 + %66 = getelementptr inbounds i8, ptr %9, i64 100 + %67 = getelementptr inbounds i8, ptr %9, i64 112 + %68 = shl nuw nsw i32 %28, 15 + %69 = shl nuw nsw i32 %.sroa.015.0, 16 + %70 = and i32 %69, 65536 + %71 = or disjoint i32 %70, %68 + %72 = or disjoint i32 %71, 16384 + store i32 %72, ptr %67, align 8 + %73 = xor i32 %28, 1 + store i32 %73, ptr %64, align 8 + %74 = xor i32 %.sroa.015.0, 1 + store i32 %74, ptr %66, align 4 + br label %81 + +Dec_GraphAddNodeAnd.exit65: ; preds = %60 + store i32 %28, ptr %64, align 8 + %75 = getelementptr inbounds i8, ptr %9, i64 100 + store i32 %.sroa.015.0, ptr %75, align 4 + %76 = getelementptr inbounds i8, ptr %9, i64 112 + %77 = shl nuw nsw i32 %28, 15 + %78 = shl nuw nsw i32 %.sroa.015.0, 16 + %79 = and i32 %78, 65536 + %80 = or disjoint i32 %79, %77 + store i32 %80, ptr %76, align 8 + br label %81 + +81: ; preds = %Dec_GraphAddNodeAnd.exit65, %Dec_GraphAddNodeOr.exit58 %.sroa.017.0 = phi i32 [ 9, %Dec_GraphAddNodeOr.exit58 ], [ 8, %Dec_GraphAddNodeAnd.exit65 ] - %83 = getelementptr inbounds i8, ptr %calloc.i, i64 24 - store i32 %.sroa.017.0, ptr %83, align 8 - %84 = getelementptr inbounds i8, ptr %0, i64 20 - %85 = load i32, ptr %84, align 4 - %86 = and i32 %85, 128 - %.not43 = icmp eq i32 %86, 0 - br i1 %.not43, label %89, label %87 + %82 = getelementptr inbounds i8, ptr %calloc.i, i64 24 + store i32 %.sroa.017.0, ptr %82, align 8 + %83 = getelementptr inbounds i8, ptr %0, i64 20 + %84 = load i32, ptr %83, align 4 + %85 = and i32 %84, 128 + %.not43 = icmp eq i32 %85, 0 + br i1 %.not43, label %88, label %86 -87: ; preds = %82 - %88 = xor i32 %.sroa.017.0, 1 - store i32 %88, ptr %83, align 8 - br label %89 +86: ; preds = %81 + %87 = xor i32 %.sroa.017.0, 1 + store i32 %87, ptr %82, align 8 + br label %88 -89: ; preds = %87, %82 +88: ; preds = %86, %81 ret ptr %calloc.i } @@ -6584,10 +6583,10 @@ define noalias noundef ptr @Abc_ManResubQuit3_1(ptr nocapture noundef readonly % %31 = getelementptr inbounds i8, ptr %14, i64 20 %32 = load i32, ptr %31, align 4 %33 = lshr i32 %32, 7 + %34 = and i32 %33, 1 br i1 %or.cond, label %Dec_GraphAddNodeAnd.exit109, label %Dec_GraphAddNodeOr.exit Dec_GraphAddNodeOr.exit: ; preds = %6 - %34 = and i32 %33, 1 %35 = getelementptr inbounds i8, ptr %18, i64 20 %36 = load i32, ptr %35, align 4 %37 = lshr i32 %36, 7 @@ -6638,7 +6637,7 @@ Dec_GraphAddNodeOr.exit96: ; preds = %Dec_GraphAddNodeOr. store i32 %68, ptr %60, align 8 %69 = xor i32 %55, 7 store i32 %69, ptr %62, align 4 - br label %141 + br label %140 Dec_GraphAddNodeAnd.exit: ; preds = %Dec_GraphAddNodeOr.exit %70 = trunc i64 %24 to i32 @@ -6648,8 +6647,8 @@ Dec_GraphAddNodeAnd.exit: ; preds = %Dec_GraphAddNodeOr. %74 = getelementptr inbounds i8, ptr %22, i64 20 %75 = load i32, ptr %74, align 4 %76 = lshr i32 %75, 7 - %77 = xor i32 %76, %49 - %78 = and i32 %77, 1 + %77 = and i32 %76, 1 + %78 = xor i32 %77, %50 %79 = or disjoint i32 %78, 4 %80 = getelementptr inbounds i8, ptr %10, i64 120 %81 = getelementptr inbounds i8, ptr %10, i64 128 @@ -6662,141 +6661,140 @@ Dec_GraphAddNodeAnd.exit: ; preds = %Dec_GraphAddNodeOr. %85 = shl nuw nsw i32 %72, 16 %86 = or disjoint i32 %85, %84 store i32 %86, ptr %83, align 8 - br label %141 + br label %140 Dec_GraphAddNodeAnd.exit109: ; preds = %6 - %87 = xor i32 %33, %28 - %88 = and i32 %87, 1 - %89 = getelementptr inbounds i8, ptr %18, i64 20 - %90 = load i32, ptr %89, align 4 - %91 = lshr i32 %90, 7 - %92 = trunc i64 %16 to i32 - %93 = xor i32 %91, %92 - %94 = and i32 %93, 1 - %95 = or disjoint i32 %94, 2 - %96 = getelementptr inbounds i8, ptr %10, i64 96 - %97 = getelementptr inbounds i8, ptr %10, i64 104 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %97, i8 0, i64 16, i1 false) - store i32 %88, ptr %96, align 8 - %98 = getelementptr inbounds i8, ptr %10, i64 100 - store i32 %95, ptr %98, align 4 - %99 = getelementptr inbounds i8, ptr %10, i64 112 - %100 = shl nuw nsw i32 %88, 15 - %101 = shl nuw nsw i32 %94, 16 - %102 = or disjoint i32 %101, %100 - store i32 %102, ptr %99, align 8 - %103 = trunc i64 %20 to i32 - %104 = and i32 %103, 1 - %.not81 = icmp eq i32 %104, 0 - %105 = and i64 %24, 1 - %.not82 = icmp eq i64 %105, 0 + %87 = xor i32 %34, %29 + %88 = getelementptr inbounds i8, ptr %18, i64 20 + %89 = load i32, ptr %88, align 4 + %90 = lshr i32 %89, 7 + %91 = trunc i64 %16 to i32 + %92 = xor i32 %90, %91 + %93 = and i32 %92, 1 + %94 = or disjoint i32 %93, 2 + %95 = getelementptr inbounds i8, ptr %10, i64 96 + %96 = getelementptr inbounds i8, ptr %10, i64 104 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %96, i8 0, i64 16, i1 false) + store i32 %87, ptr %95, align 8 + %97 = getelementptr inbounds i8, ptr %10, i64 100 + store i32 %94, ptr %97, align 4 + %98 = getelementptr inbounds i8, ptr %10, i64 112 + %99 = shl nuw nsw i32 %87, 15 + %100 = shl nuw nsw i32 %93, 16 + %101 = or disjoint i32 %100, %99 + store i32 %101, ptr %98, align 8 + %102 = trunc i64 %20 to i32 + %103 = and i32 %102, 1 + %.not81 = icmp eq i32 %103, 0 + %104 = and i64 %24, 1 + %.not82 = icmp eq i64 %104, 0 %or.cond142 = or i1 %.not81, %.not82 - %106 = getelementptr inbounds i8, ptr %26, i64 20 - %107 = load i32, ptr %106, align 4 - %108 = lshr i32 %107, 7 + %105 = getelementptr inbounds i8, ptr %26, i64 20 + %106 = load i32, ptr %105, align 4 + %107 = lshr i32 %106, 7 br i1 %or.cond142, label %Dec_GraphAddNodeAnd.exit123, label %Dec_GraphAddNodeOr.exit116 Dec_GraphAddNodeOr.exit116: ; preds = %Dec_GraphAddNodeAnd.exit109 - %109 = and i32 %108, 1 - %110 = getelementptr inbounds i8, ptr %22, i64 20 - %111 = load i32, ptr %110, align 4 - %112 = lshr i32 %111, 7 - %113 = and i32 %112, 1 - %114 = getelementptr inbounds i8, ptr %10, i64 120 - %115 = getelementptr inbounds i8, ptr %10, i64 128 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %115, i8 0, i64 16, i1 false) - %116 = getelementptr inbounds i8, ptr %10, i64 124 - %117 = getelementptr inbounds i8, ptr %10, i64 136 - %118 = shl nuw nsw i32 %113, 15 - %119 = shl nuw nsw i32 %109, 16 - %120 = or disjoint i32 %119, %118 - %121 = or disjoint i32 %120, 16384 - store i32 %121, ptr %117, align 8 - %122 = xor i32 %113, 5 - store i32 %122, ptr %114, align 8 - %123 = xor i32 %109, 7 - store i32 %123, ptr %116, align 4 - br label %141 + %108 = and i32 %107, 1 + %109 = getelementptr inbounds i8, ptr %22, i64 20 + %110 = load i32, ptr %109, align 4 + %111 = lshr i32 %110, 7 + %112 = and i32 %111, 1 + %113 = getelementptr inbounds i8, ptr %10, i64 120 + %114 = getelementptr inbounds i8, ptr %10, i64 128 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %114, i8 0, i64 16, i1 false) + %115 = getelementptr inbounds i8, ptr %10, i64 124 + %116 = getelementptr inbounds i8, ptr %10, i64 136 + %117 = shl nuw nsw i32 %112, 15 + %118 = shl nuw nsw i32 %108, 16 + %119 = or disjoint i32 %118, %117 + %120 = or disjoint i32 %119, 16384 + store i32 %120, ptr %116, align 8 + %121 = xor i32 %112, 5 + store i32 %121, ptr %113, align 8 + %122 = xor i32 %108, 7 + store i32 %122, ptr %115, align 4 + br label %140 Dec_GraphAddNodeAnd.exit123: ; preds = %Dec_GraphAddNodeAnd.exit109 - %124 = trunc i64 %24 to i32 - %125 = xor i32 %108, %124 - %126 = and i32 %125, 1 - %127 = or disjoint i32 %126, 6 - %128 = getelementptr inbounds i8, ptr %22, i64 20 - %129 = load i32, ptr %128, align 4 - %130 = lshr i32 %129, 7 + %123 = trunc i64 %24 to i32 + %124 = xor i32 %107, %123 + %125 = and i32 %124, 1 + %126 = or disjoint i32 %125, 6 + %127 = getelementptr inbounds i8, ptr %22, i64 20 + %128 = load i32, ptr %127, align 4 + %129 = lshr i32 %128, 7 + %130 = and i32 %129, 1 %131 = xor i32 %130, %103 - %132 = and i32 %131, 1 - %133 = or disjoint i32 %132, 4 - %134 = getelementptr inbounds i8, ptr %10, i64 120 - %135 = getelementptr inbounds i8, ptr %10, i64 128 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %135, i8 0, i64 16, i1 false) - store i32 %133, ptr %134, align 8 - %136 = getelementptr inbounds i8, ptr %10, i64 124 - store i32 %127, ptr %136, align 4 - %137 = getelementptr inbounds i8, ptr %10, i64 136 - %138 = shl nuw nsw i32 %132, 15 - %139 = shl nuw nsw i32 %126, 16 - %140 = or disjoint i32 %139, %138 - store i32 %140, ptr %137, align 8 - br label %141 - -141: ; preds = %Dec_GraphAddNodeOr.exit116, %Dec_GraphAddNodeAnd.exit123, %Dec_GraphAddNodeOr.exit96, %Dec_GraphAddNodeAnd.exit + %132 = or disjoint i32 %131, 4 + %133 = getelementptr inbounds i8, ptr %10, i64 120 + %134 = getelementptr inbounds i8, ptr %10, i64 128 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %134, i8 0, i64 16, i1 false) + store i32 %132, ptr %133, align 8 + %135 = getelementptr inbounds i8, ptr %10, i64 124 + store i32 %126, ptr %135, align 4 + %136 = getelementptr inbounds i8, ptr %10, i64 136 + %137 = shl nuw nsw i32 %131, 15 + %138 = shl nuw nsw i32 %125, 16 + %139 = or disjoint i32 %138, %137 + store i32 %139, ptr %136, align 8 + br label %140 + +140: ; preds = %Dec_GraphAddNodeOr.exit116, %Dec_GraphAddNodeAnd.exit123, %Dec_GraphAddNodeOr.exit96, %Dec_GraphAddNodeAnd.exit %.sroa.032.0 = phi i32 [ 11, %Dec_GraphAddNodeOr.exit96 ], [ 10, %Dec_GraphAddNodeAnd.exit ], [ 11, %Dec_GraphAddNodeOr.exit116 ], [ 10, %Dec_GraphAddNodeAnd.exit123 ] %.sroa.034.0 = phi i32 [ 9, %Dec_GraphAddNodeOr.exit96 ], [ 9, %Dec_GraphAddNodeAnd.exit ], [ 8, %Dec_GraphAddNodeOr.exit116 ], [ 8, %Dec_GraphAddNodeAnd.exit123 ] %.not85 = icmp eq i32 %5, 0 store i32 7, ptr %8, align 8 - %142 = getelementptr inbounds i8, ptr %10, i64 144 - %143 = getelementptr inbounds i8, ptr %10, i64 152 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %143, i8 0, i64 16, i1 false) + %141 = getelementptr inbounds i8, ptr %10, i64 144 + %142 = getelementptr inbounds i8, ptr %10, i64 152 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %142, i8 0, i64 16, i1 false) br i1 %.not85, label %Dec_GraphAddNodeAnd.exit137, label %Dec_GraphAddNodeOr.exit130 -Dec_GraphAddNodeOr.exit130: ; preds = %141 - %144 = getelementptr inbounds i8, ptr %10, i64 148 - %145 = getelementptr inbounds i8, ptr %10, i64 160 - %146 = shl nuw nsw i32 %.sroa.034.0, 15 - %147 = and i32 %146, 32768 - %148 = shl nuw nsw i32 %.sroa.032.0, 16 - %149 = and i32 %148, 65536 - %150 = or disjoint i32 %149, %147 - %151 = or disjoint i32 %150, 16384 - store i32 %151, ptr %145, align 8 - %152 = xor i32 %.sroa.034.0, 1 - store i32 %152, ptr %142, align 8 - %153 = xor i32 %.sroa.032.0, 1 - store i32 %153, ptr %144, align 4 - br label %161 - -Dec_GraphAddNodeAnd.exit137: ; preds = %141 - store i32 %.sroa.034.0, ptr %142, align 8 - %154 = getelementptr inbounds i8, ptr %10, i64 148 - store i32 %.sroa.032.0, ptr %154, align 4 - %155 = getelementptr inbounds i8, ptr %10, i64 160 - %156 = shl nuw nsw i32 %.sroa.034.0, 15 - %157 = and i32 %156, 32768 - %158 = shl nuw nsw i32 %.sroa.032.0, 16 - %159 = and i32 %158, 65536 - %160 = or disjoint i32 %157, %159 - store i32 %160, ptr %155, align 8 - br label %161 - -161: ; preds = %Dec_GraphAddNodeAnd.exit137, %Dec_GraphAddNodeOr.exit130 +Dec_GraphAddNodeOr.exit130: ; preds = %140 + %143 = getelementptr inbounds i8, ptr %10, i64 148 + %144 = getelementptr inbounds i8, ptr %10, i64 160 + %145 = shl nuw nsw i32 %.sroa.034.0, 15 + %146 = and i32 %145, 32768 + %147 = shl nuw nsw i32 %.sroa.032.0, 16 + %148 = and i32 %147, 65536 + %149 = or disjoint i32 %148, %146 + %150 = or disjoint i32 %149, 16384 + store i32 %150, ptr %144, align 8 + %151 = xor i32 %.sroa.034.0, 1 + store i32 %151, ptr %141, align 8 + %152 = xor i32 %.sroa.032.0, 1 + store i32 %152, ptr %143, align 4 + br label %160 + +Dec_GraphAddNodeAnd.exit137: ; preds = %140 + store i32 %.sroa.034.0, ptr %141, align 8 + %153 = getelementptr inbounds i8, ptr %10, i64 148 + store i32 %.sroa.032.0, ptr %153, align 4 + %154 = getelementptr inbounds i8, ptr %10, i64 160 + %155 = shl nuw nsw i32 %.sroa.034.0, 15 + %156 = and i32 %155, 32768 + %157 = shl nuw nsw i32 %.sroa.032.0, 16 + %158 = and i32 %157, 65536 + %159 = or disjoint i32 %156, %158 + store i32 %159, ptr %154, align 8 + br label %160 + +160: ; preds = %Dec_GraphAddNodeAnd.exit137, %Dec_GraphAddNodeOr.exit130 %.sroa.036.0 = phi i32 [ 13, %Dec_GraphAddNodeOr.exit130 ], [ 12, %Dec_GraphAddNodeAnd.exit137 ] - %162 = getelementptr inbounds i8, ptr %calloc.i, i64 24 - store i32 %.sroa.036.0, ptr %162, align 8 - %163 = getelementptr inbounds i8, ptr %0, i64 20 - %164 = load i32, ptr %163, align 4 - %165 = and i32 %164, 128 - %.not86 = icmp eq i32 %165, 0 - br i1 %.not86, label %168, label %166 - -166: ; preds = %161 - %167 = xor i32 %.sroa.036.0, 1 - store i32 %167, ptr %162, align 8 - br label %168 - -168: ; preds = %166, %161 + %161 = getelementptr inbounds i8, ptr %calloc.i, i64 24 + store i32 %.sroa.036.0, ptr %161, align 8 + %162 = getelementptr inbounds i8, ptr %0, i64 20 + %163 = load i32, ptr %162, align 4 + %164 = and i32 %163, 128 + %.not86 = icmp eq i32 %164, 0 + br i1 %.not86, label %167, label %165 + +165: ; preds = %160 + %166 = xor i32 %.sroa.036.0, 1 + store i32 %166, ptr %161, align 8 + br label %167 + +167: ; preds = %165, %160 ret ptr %calloc.i } diff --git a/bench/abc/optimized/abcRestruct.c.ll b/bench/abc/optimized/abcRestruct.c.ll index 8190ac91c30..1c9201b1351 100644 --- a/bench/abc/optimized/abcRestruct.c.ll +++ b/bench/abc/optimized/abcRestruct.c.ll @@ -2011,24 +2011,24 @@ define range(i32 0, -2147483648) i32 @Abc_NodeEvaluateDsd_rec(ptr noundef %0, pt %7 = alloca i32, align 4 %8 = ptrtoint ptr %2 to i64 %9 = trunc i64 %8 to i32 - %10 = and i64 %8, -2 - %11 = inttoptr i64 %10 to ptr - %12 = tail call i32 @Dsd_NodeReadType(ptr noundef %11) #19 - %.fr587 = freeze i32 %12 - %13 = icmp eq i32 %.fr587, 2 - br i1 %13, label %14, label %21 - -14: ; preds = %6 - %15 = and i32 %9, 1 - %16 = tail call ptr @Dsd_NodeReadFunc(ptr noundef %11) #19 + %10 = and i32 %9, 1 + %11 = and i64 %8, -2 + %12 = inttoptr i64 %11 to ptr + %13 = tail call i32 @Dsd_NodeReadType(ptr noundef %12) #19 + %.fr587 = freeze i32 %13 + %14 = icmp eq i32 %.fr587, 2 + br i1 %14, label %15, label %21 + +15: ; preds = %6 + %16 = tail call ptr @Dsd_NodeReadFunc(ptr noundef %12) #19 %17 = load i32, ptr %16, align 8 %18 = shl i32 %17, 1 %19 = and i32 %18, 2147483646 - %20 = or disjoint i32 %19, %15 + %20 = or disjoint i32 %19, %10 br label %1099 21: ; preds = %6 - %22 = tail call i32 @Dsd_NodeReadDecsNum(ptr noundef %11) #19 + %22 = tail call i32 @Dsd_NodeReadDecsNum(ptr noundef %12) #19 %23 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #21 %24 = add i32 %22, -1 %or.cond.i = icmp ult i32 %24, 15 @@ -2049,7 +2049,7 @@ Vec_IntAlloc.exit: ; preds = %21, %26 %30 = phi ptr [ %29, %26 ], [ null, %21 ] %31 = getelementptr inbounds i8, ptr %23, i64 8 store ptr %30, ptr %31, align 8 - %32 = tail call i32 @Dsd_NodeReadDecsNum(ptr noundef %11) #19 + %32 = tail call i32 @Dsd_NodeReadDecsNum(ptr noundef %12) #19 %33 = icmp sgt i32 %32, 0 br i1 %33, label %.lr.ph, label %.critedge @@ -2060,7 +2060,7 @@ Vec_IntAlloc.exit: ; preds = %21, %26 .lr.ph.split.us: ; preds = %.lr.ph, %Vec_IntPush.exit.us %.0371578.us = phi i32 [ %68, %Vec_IntPush.exit.us ], [ 0, %.lr.ph ] - %36 = tail call ptr @Dsd_NodeReadDec(ptr noundef %11, i32 noundef %.0371578.us) #19 + %36 = tail call ptr @Dsd_NodeReadDec(ptr noundef %12, i32 noundef %.0371578.us) #19 %.not.us = icmp eq ptr %36, null br i1 %.not.us, label %.critedge, label %37 @@ -2133,7 +2133,7 @@ Vec_IntPush.exit.us: ; preds = %Vec_IntGrow.exit.i. %67 = getelementptr inbounds i32, ptr %64, i64 %66 store i32 %38, ptr %67, align 4 %68 = add nuw nsw i32 %.0371578.us, 1 - %69 = tail call i32 @Dsd_NodeReadDecsNum(ptr noundef %11) #19 + %69 = tail call i32 @Dsd_NodeReadDecsNum(ptr noundef %12) #19 %70 = icmp slt i32 %68, %69 br i1 %70, label %.lr.ph.split.us, label %.critedge, !llvm.loop !20 @@ -2141,7 +2141,7 @@ Vec_IntPush.exit.us: ; preds = %Vec_IntGrow.exit.i. %71 = phi ptr [ %99, %Abc_NodeEdgeDsdPushOrdered.exit ], [ %30, %.lr.ph ] %72 = phi i32 [ %80, %Abc_NodeEdgeDsdPushOrdered.exit ], [ 0, %.lr.ph ] %.0371578 = phi i32 [ %102, %Abc_NodeEdgeDsdPushOrdered.exit ], [ 0, %.lr.ph ] - %73 = tail call ptr @Dsd_NodeReadDec(ptr noundef %11, i32 noundef %.0371578) #19 + %73 = tail call ptr @Dsd_NodeReadDec(ptr noundef %12, i32 noundef %.0371578) #19 %.not = icmp eq ptr %73, null br i1 %.not, label %.critedge, label %74 @@ -2212,7 +2212,7 @@ Abc_NodeEdgeDsdPushOrdered.exit: ; preds = %96, %84, %79 %101 = getelementptr inbounds i8, ptr %99, i64 %100 store i32 %75, ptr %101, align 4 %102 = add nuw nsw i32 %.0371578, 1 - %103 = tail call i32 @Dsd_NodeReadDecsNum(ptr noundef %11) #19 + %103 = tail call i32 @Dsd_NodeReadDecsNum(ptr noundef %12) #19 %104 = icmp slt i32 %102, %103 br i1 %104, label %.lr.ph.split, label %.critedge, !llvm.loop !20 @@ -2510,8 +2510,8 @@ Vec_IntFree.exit489: ; preds = %Abc_NodeEdgeDsdPush %262 = load i32, ptr %261, align 4 tail call void @free(ptr noundef nonnull %259) #19 tail call void @free(ptr noundef nonnull %23) #19 - %263 = xor i32 %262, %9 - %264 = and i32 %263, 1 + %263 = and i32 %262, 1 + %264 = xor i32 %263, %10 %265 = and i32 %262, 2147483646 %266 = or disjoint i32 %264, %265 br label %1099 @@ -3208,8 +3208,8 @@ Vec_IntFree.exit521: ; preds = %Abc_NodeEdgeDsdPush %654 = load i32, ptr %653, align 4 call void @free(ptr noundef nonnull %651) #19 call void @free(ptr noundef nonnull %23) #19 - %655 = xor i32 %654, %9 - %656 = and i32 %655, 1 + %655 = and i32 %654, 1 + %656 = xor i32 %655, %10 %657 = and i32 %654, 2147483646 %658 = or disjoint i32 %656, %657 br label %1099 @@ -3217,7 +3217,7 @@ Vec_IntFree.exit521: ; preds = %Abc_NodeEdgeDsdPush 659: ; preds = %.critedge %660 = getelementptr inbounds i8, ptr %1, i64 24 %661 = load ptr, ptr %660, align 8 - %662 = tail call ptr @Dsd_TreeGetPrimeFunction(ptr noundef %661, ptr noundef %11) #19 + %662 = tail call ptr @Dsd_TreeGetPrimeFunction(ptr noundef %661, ptr noundef %12) #19 tail call void @Cudd_Ref(ptr noundef %662) #19 %663 = load ptr, ptr %660, align 8 %664 = getelementptr inbounds i8, ptr %663, i64 344 @@ -3959,8 +3959,8 @@ Vec_IntFree.exit535: ; preds = %1086, %1088 Vec_IntFree.exit537: ; preds = %1089, %1091 call void @free(ptr noundef nonnull %23) #19 - %1092 = xor i32 %.sroa.031.0.i, %9 - %1093 = and i32 %1092, 1 + %1092 = and i32 %.sroa.031.0.i, 1 + %1093 = xor i32 %1092, %10 %1094 = and i32 %.sroa.031.0.i, 2147483646 %1095 = or disjoint i32 %1093, %1094 br label %1099 @@ -3978,8 +3978,8 @@ Vec_IntFree.exit539: ; preds = %1096, %1098 tail call void @free(ptr noundef nonnull %23) #19 br label %1099 -1099: ; preds = %Vec_IntFree.exit539, %Vec_IntFree.exit537, %Vec_IntFree.exit535, %710, %Vec_IntFree.exit521, %Vec_IntFree.exit511, %Vec_IntFree.exit489, %Vec_IntFree.exit479, %Vec_IntFree.exit, %14 - %.sroa.0366.0 = phi i32 [ %20, %14 ], [ 4012, %Vec_IntFree.exit ], [ 4012, %Vec_IntFree.exit479 ], [ %266, %Vec_IntFree.exit489 ], [ 4012, %Vec_IntFree.exit511 ], [ %658, %Vec_IntFree.exit521 ], [ 4012, %Vec_IntFree.exit535 ], [ %1095, %Vec_IntFree.exit537 ], [ 4012, %710 ], [ 4012, %Vec_IntFree.exit539 ] +1099: ; preds = %Vec_IntFree.exit539, %Vec_IntFree.exit537, %Vec_IntFree.exit535, %710, %Vec_IntFree.exit521, %Vec_IntFree.exit511, %Vec_IntFree.exit489, %Vec_IntFree.exit479, %Vec_IntFree.exit, %15 + %.sroa.0366.0 = phi i32 [ %20, %15 ], [ 4012, %Vec_IntFree.exit ], [ 4012, %Vec_IntFree.exit479 ], [ %266, %Vec_IntFree.exit489 ], [ 4012, %Vec_IntFree.exit511 ], [ %658, %Vec_IntFree.exit521 ], [ 4012, %Vec_IntFree.exit535 ], [ %1095, %Vec_IntFree.exit537 ], [ 4012, %710 ], [ 4012, %Vec_IntFree.exit539 ] ret i32 %.sroa.0366.0 } diff --git a/bench/abc/optimized/acecPool.c.ll b/bench/abc/optimized/acecPool.c.ll index 2f32cd89b2a..ad442da82f0 100644 --- a/bench/abc/optimized/acecPool.c.ll +++ b/bench/abc/optimized/acecPool.c.ll @@ -2534,8 +2534,8 @@ Vec_IntGrow.exit.sink.split.i: ; preds = %29, %31, %21, %23 %wide.trip.count.i = sext i32 %13 to i64 %34 = shl nsw i64 %33, 2 %scevgep = getelementptr i8, ptr %storemerge38, i64 %34 - %35 = sub nsw i64 %wide.trip.count.i, %33 - %36 = shl nsw i64 %35, 2 + %35 = shl nsw i64 %wide.trip.count.i, 2 + %36 = sub nsw i64 %35, %34 tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep, i8 0, i64 %36, i1 false) br label %Vec_IntFillExtra.exit diff --git a/bench/abc/optimized/cuddApprox.c.ll b/bench/abc/optimized/cuddApprox.c.ll index 273ca11536c..44d4b13e01a 100644 --- a/bench/abc/optimized/cuddApprox.c.ll +++ b/bench/abc/optimized/cuddApprox.c.ll @@ -2798,7 +2798,7 @@ define internal fastcc ptr @gatherInfoAux(ptr noundef %0, ptr noundef %1, i32 no 16: ; preds = %12, %11 %17 = load ptr, ptr %4, align 8 - br label %89 + br label %90 18: ; preds = %3 %19 = getelementptr inbounds i8, ptr %7, i64 16 @@ -2814,13 +2814,13 @@ define internal fastcc ptr @gatherInfoAux(ptr noundef %0, ptr noundef %1, i32 no %29 = xor i64 %28, %23 %30 = call fastcc ptr @gatherInfoAux(ptr noundef %25, ptr noundef nonnull %1, i32 noundef %2) %31 = icmp eq ptr %30, null - br i1 %31, label %89, label %32 + br i1 %31, label %90, label %32 32: ; preds = %18 %33 = inttoptr i64 %29 to ptr %34 = call fastcc ptr @gatherInfoAux(ptr noundef %33, ptr noundef nonnull %1, i32 noundef %2) %35 = icmp eq ptr %34, null - br i1 %35, label %89, label %36 + br i1 %35, label %90, label %36 36: ; preds = %32 %37 = getelementptr inbounds i8, ptr %30, i64 16 @@ -2840,64 +2840,65 @@ define internal fastcc ptr @gatherInfoAux(ptr noundef %0, ptr noundef %1, i32 no %48 = sext i32 %46 to i64 %49 = getelementptr inbounds %struct.NodeData, ptr %44, i64 %48 store ptr %49, ptr %4, align 8 - %50 = trunc i64 %5 to i16 - %51 = and i16 %50, 1 + %50 = trunc i64 %5 to i32 + %51 = and i32 %50, 1 %52 = getelementptr inbounds i8, ptr %49, i64 22 %53 = load i16, ptr %52, align 2 - %54 = add nuw nsw i16 %51, 1 - %55 = or i16 %53, %54 - store i16 %55, ptr %52, align 2 - %56 = load double, ptr %30, align 8 - %57 = fmul double %56, 5.000000e-01 - %58 = load ptr, ptr %4, align 8 - store double %57, ptr %58, align 8 - %59 = getelementptr inbounds i8, ptr %30, i64 8 - %60 = load double, ptr %59, align 8 - %61 = fmul double %60, 5.000000e-01 - %62 = load ptr, ptr %4, align 8 - %63 = getelementptr inbounds i8, ptr %62, i64 8 - store double %61, ptr %63, align 8 - %64 = xor i64 %29, %5 - %65 = and i64 %64, 1 - %.not38 = icmp eq i64 %65, 0 - br i1 %.not38, label %72, label %66 - -66: ; preds = %36 - %67 = getelementptr inbounds i8, ptr %34, i64 8 - %68 = load double, ptr %67, align 8 - %69 = fmul double %68, 5.000000e-01 - %70 = load double, ptr %62, align 8 - %71 = fadd double %70, %69 - store double %71, ptr %62, align 8 - br label %78 - -72: ; preds = %36 - %73 = load double, ptr %34, align 8 - %74 = fmul double %73, 5.000000e-01 - %75 = load double, ptr %62, align 8 - %76 = fadd double %75, %74 - store double %76, ptr %62, align 8 - %77 = getelementptr inbounds i8, ptr %34, i64 8 - br label %78 + %54 = trunc nuw nsw i32 %51 to i16 + %55 = add nuw nsw i16 %54, 1 + %56 = or i16 %53, %55 + store i16 %56, ptr %52, align 2 + %57 = load double, ptr %30, align 8 + %58 = fmul double %57, 5.000000e-01 + %59 = load ptr, ptr %4, align 8 + store double %58, ptr %59, align 8 + %60 = getelementptr inbounds i8, ptr %30, i64 8 + %61 = load double, ptr %60, align 8 + %62 = fmul double %61, 5.000000e-01 + %63 = load ptr, ptr %4, align 8 + %64 = getelementptr inbounds i8, ptr %63, i64 8 + store double %62, ptr %64, align 8 + %65 = trunc i64 %29 to i32 + %66 = and i32 %65, 1 + %.not38 = icmp eq i32 %66, %51 + br i1 %.not38, label %73, label %67 + +67: ; preds = %36 + %68 = getelementptr inbounds i8, ptr %34, i64 8 + %69 = load double, ptr %68, align 8 + %70 = fmul double %69, 5.000000e-01 + %71 = load double, ptr %63, align 8 + %72 = fadd double %71, %70 + store double %72, ptr %63, align 8 + br label %79 + +73: ; preds = %36 + %74 = load double, ptr %34, align 8 + %75 = fmul double %74, 5.000000e-01 + %76 = load double, ptr %63, align 8 + %77 = fadd double %76, %75 + store double %77, ptr %63, align 8 + %78 = getelementptr inbounds i8, ptr %34, i64 8 + br label %79 + +79: ; preds = %73, %67 + %.sink44 = phi ptr [ %78, %73 ], [ %34, %67 ] + %80 = load double, ptr %.sink44, align 8 + %81 = fmul double %80, 5.000000e-01 + %82 = load ptr, ptr %4, align 8 + %83 = getelementptr inbounds i8, ptr %82, i64 8 + %84 = load double, ptr %83, align 8 + %85 = fadd double %81, %84 + store double %85, ptr %83, align 8 + %86 = load ptr, ptr %8, align 8 + %87 = call i32 @st__insert(ptr noundef %86, ptr noundef nonnull %7, ptr noundef nonnull %82) #10 + %88 = icmp eq i32 %87, -10000 + %89 = load ptr, ptr %4, align 8 + %spec.select = select i1 %88, ptr null, ptr %89 + br label %90 -78: ; preds = %72, %66 - %.sink44 = phi ptr [ %77, %72 ], [ %34, %66 ] - %79 = load double, ptr %.sink44, align 8 - %80 = fmul double %79, 5.000000e-01 - %81 = load ptr, ptr %4, align 8 - %82 = getelementptr inbounds i8, ptr %81, i64 8 - %83 = load double, ptr %82, align 8 - %84 = fadd double %80, %83 - store double %84, ptr %82, align 8 - %85 = load ptr, ptr %8, align 8 - %86 = call i32 @st__insert(ptr noundef %85, ptr noundef nonnull %7, ptr noundef nonnull %81) #10 - %87 = icmp eq i32 %86, -10000 - %88 = load ptr, ptr %4, align 8 - %spec.select = select i1 %87, ptr null, ptr %88 - br label %89 - -89: ; preds = %78, %32, %18, %16 - %.0 = phi ptr [ %17, %16 ], [ null, %18 ], [ null, %32 ], [ %spec.select, %78 ] +90: ; preds = %79, %32, %18, %16 + %.0 = phi ptr [ %17, %16 ], [ null, %18 ], [ null, %32 ], [ %spec.select, %79 ] ret ptr %.0 } diff --git a/bench/abc/optimized/dauTree.c.ll b/bench/abc/optimized/dauTree.c.ll index b7cc687e9be..e9201437d45 100644 --- a/bench/abc/optimized/dauTree.c.ll +++ b/bench/abc/optimized/dauTree.c.ll @@ -3456,8 +3456,8 @@ define void @Dss_ManComputeTruth_rec(ptr noundef %0, ptr noundef %1, i32 noundef i32 2, label %37 i32 6, label %.preheader i32 5, label %.preheader141 - i32 3, label %59 - i32 4, label %63 + i32 3, label %58 + i32 4, label %62 ] .preheader141: ; preds = %6 @@ -3467,7 +3467,7 @@ define void @Dss_ManComputeTruth_rec(ptr noundef %0, ptr noundef %1, i32 noundef .lr.ph149: ; preds = %.preheader141 %23 = getelementptr inbounds i8, ptr %18, i64 8 - br label %107 + br label %106 .preheader: ; preds = %6 %24 = getelementptr inbounds i8, ptr %0, i64 32 @@ -3504,21 +3504,20 @@ define void @Dss_ManComputeTruth_rec(ptr noundef %0, ptr noundef %1, i32 noundef %46 = sext i32 %45 to i64 %47 = getelementptr inbounds ptr, ptr %44, i64 %46 %48 = load ptr, ptr %47, align 8 - %49 = xor i32 %42, %15 - %50 = and i32 %49, 1 - %.not.i = icmp eq i32 %50, 0 - %51 = icmp sgt i32 %13, 0 + %49 = and i32 %42, 1 + %.not.i = icmp eq i32 %16, %49 + %50 = icmp sgt i32 %13, 0 br i1 %.not.i, label %.preheader.i, label %.preheader14.i .preheader14.i: ; preds = %37 - br i1 %51, label %.lr.ph.preheader.i, label %Abc_TtCopy.exit + br i1 %50, label %.lr.ph.preheader.i, label %Abc_TtCopy.exit .lr.ph.preheader.i: ; preds = %.preheader14.i %wide.trip.count.i = zext nneg i32 %13 to i64 br label %.lr.ph.i .preheader.i: ; preds = %37 - br i1 %51, label %.lr.ph18.preheader.i, label %Abc_TtCopy.exit + br i1 %50, label %.lr.ph18.preheader.i, label %Abc_TtCopy.exit .lr.ph18.preheader.i: ; preds = %.preheader.i %wide.trip.count24.i = zext nneg i32 %13 to i64 @@ -3526,129 +3525,129 @@ define void @Dss_ManComputeTruth_rec(ptr noundef %0, ptr noundef %1, i32 noundef .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %.lr.ph.i ] - %52 = getelementptr inbounds i64, ptr %48, i64 %indvars.iv.i - %53 = load i64, ptr %52, align 8 - %54 = xor i64 %53, -1 - %55 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv.i - store i64 %54, ptr %55, align 8 + %51 = getelementptr inbounds i64, ptr %48, i64 %indvars.iv.i + %52 = load i64, ptr %51, align 8 + %53 = xor i64 %52, -1 + %54 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv.i + store i64 %53, ptr %54, align 8 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %Abc_TtCopy.exit, label %.lr.ph.i, !llvm.loop !45 .lr.ph18.i: ; preds = %.lr.ph18.i, %.lr.ph18.preheader.i %indvars.iv21.i = phi i64 [ 0, %.lr.ph18.preheader.i ], [ %indvars.iv.next22.i, %.lr.ph18.i ] - %56 = getelementptr inbounds i64, ptr %48, i64 %indvars.iv21.i - %57 = load i64, ptr %56, align 8 - %58 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv21.i - store i64 %57, ptr %58, align 8 + %55 = getelementptr inbounds i64, ptr %48, i64 %indvars.iv21.i + %56 = load i64, ptr %55, align 8 + %57 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv21.i + store i64 %56, ptr %57, align 8 %indvars.iv.next22.i = add nuw nsw i64 %indvars.iv21.i, 1 %exitcond25.not.i = icmp eq i64 %indvars.iv.next22.i, %wide.trip.count24.i br i1 %exitcond25.not.i, label %Abc_TtCopy.exit, label %.lr.ph18.i, !llvm.loop !13 -59: ; preds = %6 - %60 = icmp sgt i32 %13, 0 - br i1 %60, label %.lr.ph.preheader.i95, label %Abc_TtConst1.exit +58: ; preds = %6 + %59 = icmp sgt i32 %13, 0 + br i1 %59, label %.lr.ph.preheader.i95, label %Abc_TtConst1.exit -.lr.ph.preheader.i95: ; preds = %59 - %61 = zext nneg i32 %13 to i64 - %62 = shl nuw nsw i64 %61, 3 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %3, i8 -1, i64 %62, i1 false) +.lr.ph.preheader.i95: ; preds = %58 + %60 = zext nneg i32 %13 to i64 + %61 = shl nuw nsw i64 %60, 3 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %3, i8 -1, i64 %61, i1 false) br label %Abc_TtConst1.exitthread-pre-split -63: ; preds = %6 - %64 = icmp sgt i32 %13, 0 - br i1 %64, label %.lr.ph.preheader.i96, label %Abc_TtConst1.exit +62: ; preds = %6 + %63 = icmp sgt i32 %13, 0 + br i1 %63, label %.lr.ph.preheader.i96, label %Abc_TtConst1.exit -.lr.ph.preheader.i96: ; preds = %63 - %65 = zext nneg i32 %13 to i64 - %66 = shl nuw nsw i64 %65, 3 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %3, i8 0, i64 %66, i1 false) +.lr.ph.preheader.i96: ; preds = %62 + %64 = zext nneg i32 %13 to i64 + %65 = shl nuw nsw i64 %64, 3 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %3, i8 0, i64 %65, i1 false) br label %Abc_TtConst1.exitthread-pre-split Abc_TtConst1.exitthread-pre-split: ; preds = %.lr.ph.preheader.i95, %.lr.ph.preheader.i96 %.val91144.pr = load i32, ptr %19, align 4 br label %Abc_TtConst1.exit -Abc_TtConst1.exit: ; preds = %Abc_TtConst1.exitthread-pre-split, %63, %59 - %.val91144 = phi i32 [ %.val91144.pr, %Abc_TtConst1.exitthread-pre-split ], [ %20, %63 ], [ %20, %59 ] - %67 = getelementptr inbounds i8, ptr %0, i64 32 +Abc_TtConst1.exit: ; preds = %Abc_TtConst1.exitthread-pre-split, %62, %58 + %.val91144 = phi i32 [ %.val91144.pr, %Abc_TtConst1.exitthread-pre-split ], [ %20, %62 ], [ %20, %58 ] + %66 = getelementptr inbounds i8, ptr %0, i64 32 %.not159 = icmp ult i32 %.val91144, 134217728 br i1 %.not159, label %.critedge, label %.lr.ph .lr.ph: ; preds = %Abc_TtConst1.exit - %68 = getelementptr inbounds i8, ptr %18, i64 8 - %69 = icmp sgt i32 %13, 0 + %67 = getelementptr inbounds i8, ptr %18, i64 8 + %68 = icmp sgt i32 %13, 0 %wide.trip.count.i104 = zext nneg i32 %13 to i64 - br label %70 + br label %69 -70: ; preds = %.lr.ph, %Abc_TtAnd.exit +69: ; preds = %.lr.ph, %Abc_TtAnd.exit %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %Abc_TtAnd.exit ] - %71 = load ptr, ptr %67, align 8 - %72 = getelementptr i8, ptr %71, i64 8 - %.val94 = load ptr, ptr %72, align 8 - %73 = getelementptr inbounds [0 x i32], ptr %68, i64 0, i64 %indvars.iv - %74 = load i32, ptr %73, align 4 - %75 = ashr i32 %74, 1 - %76 = sext i32 %75 to i64 - %77 = getelementptr inbounds ptr, ptr %.val94, i64 %76 - %78 = load ptr, ptr %77, align 8 - %79 = and i32 %74, 1 - %80 = ptrtoint ptr %78 to i64 - %81 = zext nneg i32 %79 to i64 - %.not88 = icmp eq i64 %80, %81 - br i1 %.not88, label %.critedge, label %82 - -82: ; preds = %70 - %83 = xor i64 %80, %81 - %84 = inttoptr i64 %83 to ptr - call void @Dss_ManComputeTruth_rec(ptr noundef nonnull %0, ptr noundef nonnull %84, i32 noundef %2, ptr noundef nonnull %7, ptr noundef %4, ptr noundef %5) - %85 = load i32, ptr %19, align 4 - %86 = and i32 %85, 7 - %87 = icmp eq i32 %86, 3 - br i1 %87, label %88, label %94 - -88: ; preds = %82 - br i1 %69, label %.lr.ph.i99, label %Abc_TtAnd.exit - -.lr.ph.i99: ; preds = %88, %.lr.ph.i99 - %indvars.iv.i100 = phi i64 [ %indvars.iv.next.i101, %.lr.ph.i99 ], [ 0, %88 ] - %89 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv.i100 - %90 = load i64, ptr %89, align 8 - %91 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.i100 - %92 = load i64, ptr %91, align 8 - %93 = and i64 %92, %90 - store i64 %93, ptr %89, align 8 + %70 = load ptr, ptr %66, align 8 + %71 = getelementptr i8, ptr %70, i64 8 + %.val94 = load ptr, ptr %71, align 8 + %72 = getelementptr inbounds [0 x i32], ptr %67, i64 0, i64 %indvars.iv + %73 = load i32, ptr %72, align 4 + %74 = ashr i32 %73, 1 + %75 = sext i32 %74 to i64 + %76 = getelementptr inbounds ptr, ptr %.val94, i64 %75 + %77 = load ptr, ptr %76, align 8 + %78 = and i32 %73, 1 + %79 = ptrtoint ptr %77 to i64 + %80 = zext nneg i32 %78 to i64 + %.not88 = icmp eq i64 %79, %80 + br i1 %.not88, label %.critedge, label %81 + +81: ; preds = %69 + %82 = xor i64 %79, %80 + %83 = inttoptr i64 %82 to ptr + call void @Dss_ManComputeTruth_rec(ptr noundef nonnull %0, ptr noundef nonnull %83, i32 noundef %2, ptr noundef nonnull %7, ptr noundef %4, ptr noundef %5) + %84 = load i32, ptr %19, align 4 + %85 = and i32 %84, 7 + %86 = icmp eq i32 %85, 3 + br i1 %86, label %87, label %93 + +87: ; preds = %81 + br i1 %68, label %.lr.ph.i99, label %Abc_TtAnd.exit + +.lr.ph.i99: ; preds = %87, %.lr.ph.i99 + %indvars.iv.i100 = phi i64 [ %indvars.iv.next.i101, %.lr.ph.i99 ], [ 0, %87 ] + %88 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv.i100 + %89 = load i64, ptr %88, align 8 + %90 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.i100 + %91 = load i64, ptr %90, align 8 + %92 = and i64 %91, %89 + store i64 %92, ptr %88, align 8 %indvars.iv.next.i101 = add nuw nsw i64 %indvars.iv.i100, 1 %exitcond.not.i102 = icmp eq i64 %indvars.iv.next.i101, %wide.trip.count.i104 br i1 %exitcond.not.i102, label %Abc_TtAnd.exit, label %.lr.ph.i99, !llvm.loop !46 -94: ; preds = %82 - br i1 %69, label %.lr.ph.i105, label %Abc_TtAnd.exit - -.lr.ph.i105: ; preds = %94, %.lr.ph.i105 - %indvars.iv.i106 = phi i64 [ %indvars.iv.next.i107, %.lr.ph.i105 ], [ 0, %94 ] - %95 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv.i106 - %96 = load i64, ptr %95, align 8 - %97 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.i106 - %98 = load i64, ptr %97, align 8 - %99 = xor i64 %98, %96 - store i64 %99, ptr %95, align 8 +93: ; preds = %81 + br i1 %68, label %.lr.ph.i105, label %Abc_TtAnd.exit + +.lr.ph.i105: ; preds = %93, %.lr.ph.i105 + %indvars.iv.i106 = phi i64 [ %indvars.iv.next.i107, %.lr.ph.i105 ], [ 0, %93 ] + %94 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv.i106 + %95 = load i64, ptr %94, align 8 + %96 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.i106 + %97 = load i64, ptr %96, align 8 + %98 = xor i64 %97, %95 + store i64 %98, ptr %94, align 8 %indvars.iv.next.i107 = add nuw nsw i64 %indvars.iv.i106, 1 %exitcond.not.i108 = icmp eq i64 %indvars.iv.next.i107, %wide.trip.count.i104 br i1 %exitcond.not.i108, label %Abc_TtAnd.exit, label %.lr.ph.i105, !llvm.loop !47 -Abc_TtAnd.exit: ; preds = %.lr.ph.i105, %.lr.ph.i99, %94, %88 +Abc_TtAnd.exit: ; preds = %.lr.ph.i105, %.lr.ph.i99, %93, %87 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %.val91 = load i32, ptr %19, align 4 - %100 = lshr i32 %.val91, 27 - %101 = zext nneg i32 %100 to i64 - %102 = icmp ult i64 %indvars.iv.next, %101 - br i1 %102, label %70, label %.critedge, !llvm.loop !48 + %99 = lshr i32 %.val91, 27 + %100 = zext nneg i32 %99 to i64 + %101 = icmp ult i64 %indvars.iv.next, %100 + br i1 %101, label %69, label %.critedge, !llvm.loop !48 -.critedge: ; preds = %70, %Abc_TtAnd.exit, %Abc_TtConst1.exit +.critedge: ; preds = %69, %Abc_TtAnd.exit, %Abc_TtConst1.exit %.not89 = icmp ne i32 %16, 0 - %103 = icmp sgt i32 %13, 0 - %or.cond = select i1 %.not89, i1 %103, i1 false + %102 = icmp sgt i32 %13, 0 + %or.cond = select i1 %.not89, i1 %102, i1 false br i1 %or.cond, label %.lr.ph.preheader.i109, label %Abc_TtCopy.exit .lr.ph.preheader.i109: ; preds = %.critedge @@ -3657,48 +3656,48 @@ Abc_TtAnd.exit: ; preds = %.lr.ph.i105, %.lr.p .lr.ph.i111: ; preds = %.lr.ph.i111, %.lr.ph.preheader.i109 %indvars.iv.i112 = phi i64 [ 0, %.lr.ph.preheader.i109 ], [ %indvars.iv.next.i113, %.lr.ph.i111 ] - %104 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv.i112 - %105 = load i64, ptr %104, align 8 - %106 = xor i64 %105, -1 - store i64 %106, ptr %104, align 8 + %103 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv.i112 + %104 = load i64, ptr %103, align 8 + %105 = xor i64 %104, -1 + store i64 %105, ptr %103, align 8 %indvars.iv.next.i113 = add nuw nsw i64 %indvars.iv.i112, 1 %exitcond.not.i114 = icmp eq i64 %indvars.iv.next.i113, %wide.trip.count.i110 br i1 %exitcond.not.i114, label %Abc_TtCopy.exit, label %.lr.ph.i111, !llvm.loop !49 -107: ; preds = %.lr.ph149, %119 - %indvars.iv168 = phi i64 [ 0, %.lr.ph149 ], [ %indvars.iv.next169, %119 ] - %108 = load ptr, ptr %22, align 8 - %109 = getelementptr i8, ptr %108, i64 8 - %.val93 = load ptr, ptr %109, align 8 - %110 = getelementptr inbounds [0 x i32], ptr %23, i64 0, i64 %indvars.iv168 - %111 = load i32, ptr %110, align 4 - %112 = ashr i32 %111, 1 - %113 = sext i32 %112 to i64 - %114 = getelementptr inbounds ptr, ptr %.val93, i64 %113 - %115 = load ptr, ptr %114, align 8 - %116 = and i32 %111, 1 - %117 = ptrtoint ptr %115 to i64 - %118 = zext nneg i32 %116 to i64 - %.not86 = icmp eq i64 %117, %118 - br i1 %.not86, label %.critedge2, label %119 - -119: ; preds = %107 - %120 = xor i64 %117, %118 - %121 = inttoptr i64 %120 to ptr - %122 = getelementptr inbounds [3 x [64 x i64]], ptr %8, i64 0, i64 %indvars.iv168 - call void @Dss_ManComputeTruth_rec(ptr noundef nonnull %0, ptr noundef nonnull %121, i32 noundef %2, ptr noundef nonnull %122, ptr noundef %4, ptr noundef %5) +106: ; preds = %.lr.ph149, %118 + %indvars.iv168 = phi i64 [ 0, %.lr.ph149 ], [ %indvars.iv.next169, %118 ] + %107 = load ptr, ptr %22, align 8 + %108 = getelementptr i8, ptr %107, i64 8 + %.val93 = load ptr, ptr %108, align 8 + %109 = getelementptr inbounds [0 x i32], ptr %23, i64 0, i64 %indvars.iv168 + %110 = load i32, ptr %109, align 4 + %111 = ashr i32 %110, 1 + %112 = sext i32 %111 to i64 + %113 = getelementptr inbounds ptr, ptr %.val93, i64 %112 + %114 = load ptr, ptr %113, align 8 + %115 = and i32 %110, 1 + %116 = ptrtoint ptr %114 to i64 + %117 = zext nneg i32 %115 to i64 + %.not86 = icmp eq i64 %116, %117 + br i1 %.not86, label %.critedge2, label %118 + +118: ; preds = %106 + %119 = xor i64 %116, %117 + %120 = inttoptr i64 %119 to ptr + %121 = getelementptr inbounds [3 x [64 x i64]], ptr %8, i64 0, i64 %indvars.iv168 + call void @Dss_ManComputeTruth_rec(ptr noundef nonnull %0, ptr noundef nonnull %120, i32 noundef %2, ptr noundef nonnull %121, ptr noundef %4, ptr noundef %5) %indvars.iv.next169 = add nuw nsw i64 %indvars.iv168, 1 %.val90 = load i32, ptr %19, align 4 - %123 = lshr i32 %.val90, 27 - %124 = zext nneg i32 %123 to i64 - %125 = icmp ult i64 %indvars.iv.next169, %124 - br i1 %125, label %107, label %.critedge2, !llvm.loop !50 + %122 = lshr i32 %.val90, 27 + %123 = zext nneg i32 %122 to i64 + %124 = icmp ult i64 %indvars.iv.next169, %123 + br i1 %124, label %106, label %.critedge2, !llvm.loop !50 -.critedge2: ; preds = %107, %119, %.preheader141 - %126 = getelementptr inbounds i8, ptr %8, i64 512 - %127 = getelementptr inbounds i8, ptr %8, i64 1024 - %128 = icmp slt i32 %13, 1 - br i1 %128, label %Abc_TtCopy.exit, label %.lr.ph.preheader.i115 +.critedge2: ; preds = %106, %118, %.preheader141 + %125 = getelementptr inbounds i8, ptr %8, i64 512 + %126 = getelementptr inbounds i8, ptr %8, i64 1024 + %127 = icmp slt i32 %13, 1 + br i1 %127, label %Abc_TtCopy.exit, label %.lr.ph.preheader.i115 .lr.ph.preheader.i115: ; preds = %.critedge2 %wide.trip.count.i116 = zext nneg i32 %13 to i64 @@ -3706,18 +3705,18 @@ Abc_TtAnd.exit: ; preds = %.lr.ph.i105, %.lr.p .lr.ph.i117: ; preds = %.lr.ph.i117, %.lr.ph.preheader.i115 %indvars.iv.i118 = phi i64 [ 0, %.lr.ph.preheader.i115 ], [ %indvars.iv.next.i119, %.lr.ph.i117 ] - %129 = getelementptr inbounds i64, ptr %8, i64 %indvars.iv.i118 - %130 = load i64, ptr %129, align 8 - %131 = getelementptr inbounds i64, ptr %126, i64 %indvars.iv.i118 - %132 = load i64, ptr %131, align 8 - %133 = and i64 %132, %130 - %134 = xor i64 %130, -1 - %135 = getelementptr inbounds i64, ptr %127, i64 %indvars.iv.i118 - %136 = load i64, ptr %135, align 8 - %137 = and i64 %136, %134 - %138 = or i64 %137, %133 - %139 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv.i118 - store i64 %138, ptr %139, align 8 + %128 = getelementptr inbounds i64, ptr %8, i64 %indvars.iv.i118 + %129 = load i64, ptr %128, align 8 + %130 = getelementptr inbounds i64, ptr %125, i64 %indvars.iv.i118 + %131 = load i64, ptr %130, align 8 + %132 = and i64 %131, %129 + %133 = xor i64 %129, -1 + %134 = getelementptr inbounds i64, ptr %126, i64 %indvars.iv.i118 + %135 = load i64, ptr %134, align 8 + %136 = and i64 %135, %133 + %137 = or i64 %136, %132 + %138 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv.i118 + store i64 %137, ptr %138, align 8 %indvars.iv.next.i119 = add nuw nsw i64 %indvars.iv.i118, 1 %exitcond.not.i120 = icmp eq i64 %indvars.iv.next.i119, %wide.trip.count.i116 br i1 %exitcond.not.i120, label %Abc_TtMux.exit, label %.lr.ph.i117, !llvm.loop !51 @@ -3728,56 +3727,56 @@ Abc_TtMux.exit: ; preds = %.lr.ph.i117 .lr.ph.i123: ; preds = %Abc_TtMux.exit, %.lr.ph.i123 %indvars.iv.i124 = phi i64 [ %indvars.iv.next.i125, %.lr.ph.i123 ], [ 0, %Abc_TtMux.exit ] - %140 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv.i124 - %141 = load i64, ptr %140, align 8 - %142 = xor i64 %141, -1 - store i64 %142, ptr %140, align 8 + %139 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv.i124 + %140 = load i64, ptr %139, align 8 + %141 = xor i64 %140, -1 + store i64 %141, ptr %139, align 8 %indvars.iv.next.i125 = add nuw nsw i64 %indvars.iv.i124, 1 %exitcond.not.i126 = icmp eq i64 %indvars.iv.next.i125, %wide.trip.count.i116 br i1 %exitcond.not.i126, label %Abc_TtCopy.exit, label %.lr.ph.i123, !llvm.loop !49 -143: ; preds = %.lr.ph187 - %144 = load ptr, ptr %24, align 8 - %145 = getelementptr i8, ptr %144, i64 8 - %.val92 = load ptr, ptr %145, align 8 - %146 = getelementptr inbounds [0 x i32], ptr %26, i64 0, i64 %indvars.iv.next172 - %147 = load i32, ptr %146, align 4 - %148 = ashr i32 %147, 1 - %149 = sext i32 %148 to i64 - %150 = getelementptr inbounds ptr, ptr %.val92, i64 %149 - %151 = load ptr, ptr %150, align 8 - %152 = and i32 %147, 1 - %153 = ptrtoint ptr %151 to i64 - %154 = zext nneg i32 %152 to i64 - %.not = icmp eq i64 %153, %154 +142: ; preds = %.lr.ph187 + %143 = load ptr, ptr %24, align 8 + %144 = getelementptr i8, ptr %143, i64 8 + %.val92 = load ptr, ptr %144, align 8 + %145 = getelementptr inbounds [0 x i32], ptr %26, i64 0, i64 %indvars.iv.next172 + %146 = load i32, ptr %145, align 4 + %147 = ashr i32 %146, 1 + %148 = sext i32 %147 to i64 + %149 = getelementptr inbounds ptr, ptr %.val92, i64 %148 + %150 = load ptr, ptr %149, align 8 + %151 = and i32 %146, 1 + %152 = ptrtoint ptr %150 to i64 + %153 = zext nneg i32 %151 to i64 + %.not = icmp eq i64 %152, %153 br i1 %.not, label %.critedge4, label %.lr.ph187, !llvm.loop !52 -.lr.ph187: ; preds = %.lr.ph154, %143 - %155 = phi i64 [ %154, %143 ], [ %36, %.lr.ph154 ] - %156 = phi i64 [ %153, %143 ], [ %35, %.lr.ph154 ] - %indvars.iv171186 = phi i64 [ %indvars.iv.next172, %143 ], [ 0, %.lr.ph154 ] - %157 = xor i64 %156, %155 - %158 = inttoptr i64 %157 to ptr - %159 = getelementptr inbounds [12 x [64 x i64]], ptr %9, i64 0, i64 %indvars.iv171186 - call void @Dss_ManComputeTruth_rec(ptr noundef nonnull %0, ptr noundef nonnull %158, i32 noundef %2, ptr noundef nonnull %159, ptr noundef %4, ptr noundef %5) +.lr.ph187: ; preds = %.lr.ph154, %142 + %154 = phi i64 [ %153, %142 ], [ %36, %.lr.ph154 ] + %155 = phi i64 [ %152, %142 ], [ %35, %.lr.ph154 ] + %indvars.iv171186 = phi i64 [ %indvars.iv.next172, %142 ], [ 0, %.lr.ph154 ] + %156 = xor i64 %155, %154 + %157 = inttoptr i64 %156 to ptr + %158 = getelementptr inbounds [12 x [64 x i64]], ptr %9, i64 0, i64 %indvars.iv171186 + call void @Dss_ManComputeTruth_rec(ptr noundef nonnull %0, ptr noundef nonnull %157, i32 noundef %2, ptr noundef nonnull %158, ptr noundef %4, ptr noundef %5) %indvars.iv.next172 = add nuw nsw i64 %indvars.iv171186, 1 %.val = load i32, ptr %19, align 4 - %160 = lshr i32 %.val, 27 - %161 = zext nneg i32 %160 to i64 - %162 = icmp ult i64 %indvars.iv.next172, %161 - br i1 %162, label %143, label %.critedge4, !llvm.loop !52 - -.critedge4: ; preds = %.lr.ph187, %143, %.lr.ph154, %.preheader - %.val.lcssa = phi i32 [ %20, %.preheader ], [ %20, %.lr.ph154 ], [ %.val, %143 ], [ %.val, %.lr.ph187 ] - %.lcssa = phi i32 [ %25, %.preheader ], [ %25, %.lr.ph154 ], [ %160, %143 ], [ %160, %.lr.ph187 ] - %163 = lshr i32 %.val.lcssa, 19 - %164 = and i32 %163, 63 - %165 = zext nneg i32 %164 to i64 - %166 = getelementptr inbounds i64, ptr %18, i64 %165 - call void @Dau_DsdTruthCompose_rec(ptr noundef %166, ptr noundef nonnull %9, ptr noundef %3, i32 noundef %.lcssa, i32 noundef %13) #29 + %159 = lshr i32 %.val, 27 + %160 = zext nneg i32 %159 to i64 + %161 = icmp ult i64 %indvars.iv.next172, %160 + br i1 %161, label %142, label %.critedge4, !llvm.loop !52 + +.critedge4: ; preds = %.lr.ph187, %142, %.lr.ph154, %.preheader + %.val.lcssa = phi i32 [ %20, %.preheader ], [ %20, %.lr.ph154 ], [ %.val, %142 ], [ %.val, %.lr.ph187 ] + %.lcssa = phi i32 [ %25, %.preheader ], [ %25, %.lr.ph154 ], [ %159, %142 ], [ %159, %.lr.ph187 ] + %162 = lshr i32 %.val.lcssa, 19 + %163 = and i32 %162, 63 + %164 = zext nneg i32 %163 to i64 + %165 = getelementptr inbounds i64, ptr %18, i64 %164 + call void @Dau_DsdTruthCompose_rec(ptr noundef %165, ptr noundef nonnull %9, ptr noundef %3, i32 noundef %.lcssa, i32 noundef %13) #29 %.not85 = icmp ne i32 %16, 0 - %167 = icmp sgt i32 %13, 0 - %or.cond137 = select i1 %.not85, i1 %167, i1 false + %166 = icmp sgt i32 %13, 0 + %or.cond137 = select i1 %.not85, i1 %166, i1 false br i1 %or.cond137, label %.lr.ph.preheader.i128, label %Abc_TtCopy.exit .lr.ph.preheader.i128: ; preds = %.critedge4 @@ -3786,10 +3785,10 @@ Abc_TtMux.exit: ; preds = %.lr.ph.i117 .lr.ph.i130: ; preds = %.lr.ph.i130, %.lr.ph.preheader.i128 %indvars.iv.i131 = phi i64 [ 0, %.lr.ph.preheader.i128 ], [ %indvars.iv.next.i132, %.lr.ph.i130 ] - %168 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv.i131 - %169 = load i64, ptr %168, align 8 - %170 = xor i64 %169, -1 - store i64 %170, ptr %168, align 8 + %167 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv.i131 + %168 = load i64, ptr %167, align 8 + %169 = xor i64 %168, -1 + store i64 %169, ptr %167, align 8 %indvars.iv.next.i132 = add nuw nsw i64 %indvars.iv.i131, 1 %exitcond.not.i133 = icmp eq i64 %indvars.iv.next.i132, %wide.trip.count.i129 br i1 %exitcond.not.i133, label %Abc_TtCopy.exit, label %.lr.ph.i130, !llvm.loop !49 @@ -3857,7 +3856,7 @@ define ptr @Dss_ManComputeTruth(ptr noundef %0, i32 noundef %1, i32 noundef %2, %38 = load i32, ptr %37, align 4 %39 = and i32 %38, 7 %40 = icmp eq i32 %39, 2 - br i1 %40, label %41, label %57 + br i1 %40, label %41, label %56 41: ; preds = %34 %42 = load i32, ptr %3, align 4 @@ -3865,21 +3864,20 @@ define ptr @Dss_ManComputeTruth(ptr noundef %0, i32 noundef %1, i32 noundef %2, %44 = sext i32 %43 to i64 %45 = getelementptr inbounds ptr, ptr %19, i64 %44 %46 = load ptr, ptr %45, align 8 - %47 = xor i32 %42, %1 - %48 = and i32 %47, 1 - %.not.i = icmp eq i32 %48, 0 - %49 = icmp sgt i32 %25, 0 + %47 = and i32 %42, 1 + %.not.i = icmp eq i32 %13, %47 + %48 = icmp sgt i32 %25, 0 br i1 %.not.i, label %.preheader.i, label %.preheader14.i .preheader14.i: ; preds = %41 - br i1 %49, label %.lr.ph.preheader.i24, label %Abc_TtConst0.exit + br i1 %48, label %.lr.ph.preheader.i24, label %Abc_TtConst0.exit .lr.ph.preheader.i24: ; preds = %.preheader14.i %wide.trip.count.i = zext nneg i32 %25 to i64 br label %.lr.ph.i .preheader.i: ; preds = %41 - br i1 %49, label %.lr.ph18.preheader.i, label %Abc_TtConst0.exit + br i1 %48, label %.lr.ph18.preheader.i, label %Abc_TtConst0.exit .lr.ph18.preheader.i: ; preds = %.preheader.i %wide.trip.count24.i = zext nneg i32 %25 to i64 @@ -3887,30 +3885,30 @@ define ptr @Dss_ManComputeTruth(ptr noundef %0, i32 noundef %1, i32 noundef %2, .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i24 %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i24 ], [ %indvars.iv.next.i, %.lr.ph.i ] - %50 = getelementptr inbounds i64, ptr %46, i64 %indvars.iv.i - %51 = load i64, ptr %50, align 8 - %52 = xor i64 %51, -1 - %53 = getelementptr inbounds i64, ptr %21, i64 %indvars.iv.i - store i64 %52, ptr %53, align 8 + %49 = getelementptr inbounds i64, ptr %46, i64 %indvars.iv.i + %50 = load i64, ptr %49, align 8 + %51 = xor i64 %50, -1 + %52 = getelementptr inbounds i64, ptr %21, i64 %indvars.iv.i + store i64 %51, ptr %52, align 8 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %Abc_TtConst0.exit, label %.lr.ph.i, !llvm.loop !45 .lr.ph18.i: ; preds = %.lr.ph18.i, %.lr.ph18.preheader.i %indvars.iv21.i = phi i64 [ 0, %.lr.ph18.preheader.i ], [ %indvars.iv.next22.i, %.lr.ph18.i ] - %54 = getelementptr inbounds i64, ptr %46, i64 %indvars.iv21.i - %55 = load i64, ptr %54, align 8 - %56 = getelementptr inbounds i64, ptr %21, i64 %indvars.iv21.i - store i64 %55, ptr %56, align 8 + %53 = getelementptr inbounds i64, ptr %46, i64 %indvars.iv21.i + %54 = load i64, ptr %53, align 8 + %55 = getelementptr inbounds i64, ptr %21, i64 %indvars.iv21.i + store i64 %54, ptr %55, align 8 %indvars.iv.next22.i = add nuw nsw i64 %indvars.iv21.i, 1 %exitcond25.not.i = icmp eq i64 %indvars.iv.next22.i, %wide.trip.count24.i br i1 %exitcond25.not.i, label %Abc_TtConst0.exit, label %.lr.ph18.i, !llvm.loop !13 -57: ; preds = %34 +56: ; preds = %34 call void @Dss_ManComputeTruth_rec(ptr noundef nonnull %0, ptr noundef %17, i32 noundef %2, ptr noundef %21, ptr noundef %3, ptr noundef nonnull %5) br label %Abc_TtConst0.exit -Abc_TtConst0.exit: ; preds = %.lr.ph.i, %.lr.ph18.i, %.preheader.i, %.preheader14.i, %.lr.ph.preheader.i23, %30, %.lr.ph.preheader.i, %26, %57 +Abc_TtConst0.exit: ; preds = %.lr.ph.i, %.lr.ph18.i, %.preheader.i, %.preheader14.i, %.lr.ph.preheader.i23, %30, %.lr.ph.preheader.i, %26, %56 ret ptr %21 } diff --git a/bench/abc/optimized/giaIf.c.ll b/bench/abc/optimized/giaIf.c.ll index bce50cd5533..9e7b14ba15b 100644 --- a/bench/abc/optimized/giaIf.c.ll +++ b/bench/abc/optimized/giaIf.c.ll @@ -11155,20 +11155,22 @@ Vec_IntGrow.exit.i124: ; preds = %440, %438 Vec_IntPush.exit125: ; preds = %.Vec_IntGrow.exit10_crit_edge.i119, %Vec_IntGrow.exit.i124, %452 %454 = phi ptr [ %.pre.i121, %.Vec_IntGrow.exit10_crit_edge.i119 ], [ %453, %452 ], [ %442, %Vec_IntGrow.exit.i124 ] %455 = sub nsw i32 0, %341 - %456 = load i32, ptr %196, align 4 - %457 = add nsw i32 %456, 1 - store i32 %457, ptr %196, align 4 - %458 = sext i32 %456 to i64 - %459 = getelementptr inbounds i32, ptr %454, i64 %458 - store i32 %455, ptr %459, align 4 - %460 = load i64, ptr %16, align 4 - %461 = trunc i64 %460 to i32 - %462 = lshr i32 %461, 12 - %463 = xor i32 %340, %462 - %464 = xor i32 %463, %34 - %465 = and i32 %464, 1 - %466 = xor i32 %465, %339 - ret i32 %466 + %456 = and i32 %340, 1 + %457 = icmp ne i32 %35, %456 + %458 = zext i1 %457 to i32 + %459 = load i32, ptr %196, align 4 + %460 = add nsw i32 %459, 1 + store i32 %460, ptr %196, align 4 + %461 = sext i32 %459 to i64 + %462 = getelementptr inbounds i32, ptr %454, i64 %461 + store i32 %455, ptr %462, align 4 + %463 = load i64, ptr %16, align 4 + %464 = trunc i64 %463 to i32 + %465 = lshr i32 %464, 12 + %466 = and i32 %465, 1 + %467 = xor i32 %466, %458 + %468 = xor i32 %467, %339 + ret i32 %468 } ; Function Attrs: nounwind uwtable diff --git a/bench/abc/optimized/giaTtopt.cpp.ll b/bench/abc/optimized/giaTtopt.cpp.ll index fb6cbd9d35d..cf13a465b1f 100644 --- a/bench/abc/optimized/giaTtopt.cpp.ll +++ b/bench/abc/optimized/giaTtopt.cpp.ll @@ -11795,7 +11795,7 @@ define linkonce_odr noundef i32 @_ZN5Ttopt18TruthTableLevelTSM10BDDFindTSMEii(pt %.not133 = icmp eq ptr %116, %117 br i1 %.not133, label %.loopexit, label %.lr.ph -122: ; preds = %146 +122: ; preds = %147 %123 = add i32 %.088114, 1 %124 = zext i32 %123 to i64 %125 = icmp ugt i64 %121, %124 @@ -11814,33 +11814,34 @@ define linkonce_odr noundef i32 @_ZN5Ttopt18TruthTableLevelTSM10BDDFindTSMEii(pt %134 = load i64, ptr %133, align 8 %135 = zext nneg i32 %131 to i64 %136 = lshr i64 %134, %135 - %137 = xor i64 %136, %100 - %138 = getelementptr inbounds i64, ptr %103, i64 %132 - %139 = load i64, ptr %138, align 8 - %140 = lshr i64 %139, %135 - %141 = and i64 %88, %140 - %142 = and i64 %141, %106 - %143 = and i64 %137, %142 - %.not100 = icmp eq i64 %143, 0 - br i1 %.not100, label %144, label %146 - -144: ; preds = %.lr.ph - %145 = shl i32 %128, 1 + %137 = and i64 %136, %88 + %138 = xor i64 %137, %101 + %139 = getelementptr inbounds i64, ptr %103, i64 %132 + %140 = load i64, ptr %139, align 8 + %141 = lshr i64 %140, %135 + %142 = and i64 %88, %141 + %143 = and i64 %142, %106 + %144 = and i64 %138, %143 + %.not100 = icmp eq i64 %144, 0 + br i1 %.not100, label %145, label %147 + +145: ; preds = %.lr.ph + %146 = shl i32 %128, 1 br label %.loopexit -146: ; preds = %.lr.ph - %147 = xor i64 %137, -1 - %148 = and i64 %142, %147 - %.not101 = icmp eq i64 %148, 0 - br i1 %.not101, label %149, label %122 +147: ; preds = %.lr.ph + %148 = xor i64 %138, %88 + %149 = and i64 %148, %143 + %.not101 = icmp eq i64 %149, 0 + br i1 %.not101, label %150, label %122 -149: ; preds = %146 - %150 = shl i32 %128, 1 - %151 = or disjoint i32 %150, 1 +150: ; preds = %147 + %151 = shl i32 %128, 1 + %152 = or disjoint i32 %151, 1 br label %.loopexit -.loopexit: ; preds = %122, %56, %8, %.critedge, %.preheader108, %.preheader, %108, %85, %149, %144, %.split.us - %.0 = phi i32 [ %84, %.split.us ], [ %151, %149 ], [ %145, %144 ], [ -2, %85 ], [ -1, %108 ], [ -3, %.preheader ], [ -3, %.preheader108 ], [ %32, %.critedge ], [ -1, %8 ], [ -3, %56 ], [ -3, %122 ] +.loopexit: ; preds = %122, %56, %8, %.critedge, %.preheader108, %.preheader, %108, %85, %150, %145, %.split.us + %.0 = phi i32 [ %84, %.split.us ], [ %152, %150 ], [ %146, %145 ], [ -2, %85 ], [ -1, %108 ], [ -3, %.preheader ], [ -3, %.preheader108 ], [ %32, %.critedge ], [ -1, %8 ], [ -3, %56 ], [ -3, %122 ] ret i32 %.0 } diff --git a/bench/abc/optimized/ifDsd.c.ll b/bench/abc/optimized/ifDsd.c.ll index e1eb0568877..5a0a657ea0f 100644 --- a/bench/abc/optimized/ifDsd.c.ll +++ b/bench/abc/optimized/ifDsd.c.ll @@ -6497,8 +6497,8 @@ Vec_PtrGrow.exit.sink.split.i: ; preds = %62, %50 %66 = load ptr, ptr %64, align 8 %67 = shl nsw i64 %65, 3 %scevgep = getelementptr i8, ptr %66, i64 %67 - %68 = sub nsw i64 %wide.trip.count.i, %65 - %69 = shl nsw i64 %68, 3 + %68 = shl nsw i64 %wide.trip.count.i, 3 + %69 = sub nsw i64 %68, %67 tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %69, i1 false) store i32 %33, ptr %34, align 4 br label %Vec_PtrFillExtra.exit @@ -8147,8 +8147,8 @@ define void @If_DsdManComputeTruth_rec(ptr noundef %0, i32 noundef %1, ptr nound %16 = and i32 %.val95, 7 switch i32 %16, label %Abc_TtCopy.exit [ i32 2, label %25 - i32 3, label %55 - i32 4, label %61 + i32 3, label %54 + i32 4, label %60 i32 5, label %.preheader i32 6, label %.preheader144 ] @@ -8204,21 +8204,20 @@ define void @If_DsdManComputeTruth_rec(ptr noundef %0, i32 noundef %1, ptr nound %42 = load ptr, ptr %41, align 8 %43 = getelementptr inbounds i8, ptr %0, i64 16 %44 = load i32, ptr %43, align 8 - %45 = xor i32 %35, %1 - %46 = and i32 %45, 1 - %.not.i = icmp eq i32 %46, 0 - %47 = icmp sgt i32 %44, 0 + %45 = and i32 %35, 1 + %.not.i = icmp eq i32 %9, %45 + %46 = icmp sgt i32 %44, 0 br i1 %.not.i, label %.preheader.i, label %.preheader14.i .preheader14.i: ; preds = %34 - br i1 %47, label %.lr.ph.preheader.i, label %Abc_TtCopy.exit + br i1 %46, label %.lr.ph.preheader.i, label %Abc_TtCopy.exit .lr.ph.preheader.i: ; preds = %.preheader14.i %wide.trip.count.i = zext nneg i32 %44 to i64 br label %.lr.ph.i .preheader.i: ; preds = %34 - br i1 %47, label %.lr.ph18.preheader.i, label %Abc_TtCopy.exit + br i1 %46, label %.lr.ph18.preheader.i, label %Abc_TtCopy.exit .lr.ph18.preheader.i: ; preds = %.preheader.i %wide.trip.count24.i = zext nneg i32 %44 to i64 @@ -8226,300 +8225,300 @@ define void @If_DsdManComputeTruth_rec(ptr noundef %0, i32 noundef %1, ptr nound .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %.lr.ph.i ] - %48 = getelementptr inbounds i64, ptr %42, i64 %indvars.iv.i - %49 = load i64, ptr %48, align 8 - %50 = xor i64 %49, -1 - %51 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i - store i64 %50, ptr %51, align 8 + %47 = getelementptr inbounds i64, ptr %42, i64 %indvars.iv.i + %48 = load i64, ptr %47, align 8 + %49 = xor i64 %48, -1 + %50 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i + store i64 %49, ptr %50, align 8 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %Abc_TtCopy.exit, label %.lr.ph.i, !llvm.loop !63 .lr.ph18.i: ; preds = %.lr.ph18.i, %.lr.ph18.preheader.i %indvars.iv21.i = phi i64 [ 0, %.lr.ph18.preheader.i ], [ %indvars.iv.next22.i, %.lr.ph18.i ] - %52 = getelementptr inbounds i64, ptr %42, i64 %indvars.iv21.i - %53 = load i64, ptr %52, align 8 - %54 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv21.i - store i64 %53, ptr %54, align 8 + %51 = getelementptr inbounds i64, ptr %42, i64 %indvars.iv21.i + %52 = load i64, ptr %51, align 8 + %53 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv21.i + store i64 %52, ptr %53, align 8 %indvars.iv.next22.i = add nuw nsw i64 %indvars.iv21.i, 1 %exitcond25.not.i = icmp eq i64 %indvars.iv.next22.i, %wide.trip.count24.i br i1 %exitcond25.not.i, label %Abc_TtCopy.exit, label %.lr.ph18.i, !llvm.loop !35 -55: ; preds = %5 - %56 = getelementptr inbounds i8, ptr %0, i64 16 - %57 = load i32, ptr %56, align 8 - %58 = icmp sgt i32 %57, 0 - br i1 %58, label %.lr.ph.preheader.i99, label %Abc_TtConst1.exit +54: ; preds = %5 + %55 = getelementptr inbounds i8, ptr %0, i64 16 + %56 = load i32, ptr %55, align 8 + %57 = icmp sgt i32 %56, 0 + br i1 %57, label %.lr.ph.preheader.i99, label %Abc_TtConst1.exit -.lr.ph.preheader.i99: ; preds = %55 - %59 = zext nneg i32 %57 to i64 - %60 = shl nuw nsw i64 %59, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %2, i8 -1, i64 %60, i1 false) +.lr.ph.preheader.i99: ; preds = %54 + %58 = zext nneg i32 %56 to i64 + %59 = shl nuw nsw i64 %58, 3 + tail call void @llvm.memset.p0.i64(ptr align 8 %2, i8 -1, i64 %59, i1 false) br label %Abc_TtConst1.exit -61: ; preds = %5 - %62 = getelementptr inbounds i8, ptr %0, i64 16 - %63 = load i32, ptr %62, align 8 - %64 = icmp sgt i32 %63, 0 - br i1 %64, label %.lr.ph.preheader.i100, label %Abc_TtConst1.exit - -.lr.ph.preheader.i100: ; preds = %61 - %65 = zext nneg i32 %63 to i64 - %66 = shl nuw nsw i64 %65, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %2, i8 0, i64 %66, i1 false) +60: ; preds = %5 + %61 = getelementptr inbounds i8, ptr %0, i64 16 + %62 = load i32, ptr %61, align 8 + %63 = icmp sgt i32 %62, 0 + br i1 %63, label %.lr.ph.preheader.i100, label %Abc_TtConst1.exit + +.lr.ph.preheader.i100: ; preds = %60 + %64 = zext nneg i32 %62 to i64 + %65 = shl nuw nsw i64 %64, 3 + tail call void @llvm.memset.p0.i64(ptr align 8 %2, i8 0, i64 %65, i1 false) br label %Abc_TtConst1.exit -Abc_TtConst1.exit: ; preds = %.lr.ph.preheader.i100, %61, %.lr.ph.preheader.i99, %55 - %67 = getelementptr inbounds i8, ptr %14, i64 8 +Abc_TtConst1.exit: ; preds = %.lr.ph.preheader.i100, %60, %.lr.ph.preheader.i99, %54 + %66 = getelementptr inbounds i8, ptr %14, i64 8 %.val98156 = load i32, ptr %15, align 4 %.not162 = icmp ult i32 %.val98156, 134217728 br i1 %.not162, label %.critedge, label %.lr.ph158 .lr.ph158: ; preds = %Abc_TtConst1.exit - %68 = getelementptr inbounds i8, ptr %0, i64 16 - br label %69 + %67 = getelementptr inbounds i8, ptr %0, i64 16 + br label %68 -69: ; preds = %.lr.ph158, %Abc_TtAnd.exit +68: ; preds = %.lr.ph158, %Abc_TtAnd.exit %indvars.iv172 = phi i64 [ 0, %.lr.ph158 ], [ %indvars.iv.next173, %Abc_TtAnd.exit ] - %70 = getelementptr inbounds [0 x i32], ptr %67, i64 0, i64 %indvars.iv172 - %71 = load i32, ptr %70, align 4 - %.not86 = icmp eq i32 %71, 0 - br i1 %.not86, label %.critedge, label %72 + %69 = getelementptr inbounds [0 x i32], ptr %66, i64 0, i64 %indvars.iv172 + %70 = load i32, ptr %69, align 4 + %.not86 = icmp eq i32 %70, 0 + br i1 %.not86, label %.critedge, label %71 -72: ; preds = %69 - call void @If_DsdManComputeTruth_rec(ptr noundef %0, i32 noundef %71, ptr noundef nonnull %6, ptr noundef %3, ptr noundef %4) +71: ; preds = %68 + call void @If_DsdManComputeTruth_rec(ptr noundef %0, i32 noundef %70, ptr noundef nonnull %6, ptr noundef %3, ptr noundef %4) %.val91 = load i32, ptr %15, align 4 - %73 = and i32 %.val91, 7 - %74 = icmp eq i32 %73, 3 - %75 = load i32, ptr %68, align 8 - %76 = icmp sgt i32 %75, 0 - br i1 %74, label %77, label %83 + %72 = and i32 %.val91, 7 + %73 = icmp eq i32 %72, 3 + %74 = load i32, ptr %67, align 8 + %75 = icmp sgt i32 %74, 0 + br i1 %73, label %76, label %82 -77: ; preds = %72 - br i1 %76, label %.lr.ph.preheader.i101, label %Abc_TtAnd.exit +76: ; preds = %71 + br i1 %75, label %.lr.ph.preheader.i101, label %Abc_TtAnd.exit -.lr.ph.preheader.i101: ; preds = %77 - %wide.trip.count.i102 = zext nneg i32 %75 to i64 +.lr.ph.preheader.i101: ; preds = %76 + %wide.trip.count.i102 = zext nneg i32 %74 to i64 br label %.lr.ph.i103 .lr.ph.i103: ; preds = %.lr.ph.i103, %.lr.ph.preheader.i101 %indvars.iv.i104 = phi i64 [ 0, %.lr.ph.preheader.i101 ], [ %indvars.iv.next.i105, %.lr.ph.i103 ] - %78 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i104 - %79 = load i64, ptr %78, align 8 - %80 = getelementptr inbounds i64, ptr %6, i64 %indvars.iv.i104 - %81 = load i64, ptr %80, align 8 - %82 = and i64 %81, %79 - store i64 %82, ptr %78, align 8 + %77 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i104 + %78 = load i64, ptr %77, align 8 + %79 = getelementptr inbounds i64, ptr %6, i64 %indvars.iv.i104 + %80 = load i64, ptr %79, align 8 + %81 = and i64 %80, %78 + store i64 %81, ptr %77, align 8 %indvars.iv.next.i105 = add nuw nsw i64 %indvars.iv.i104, 1 %exitcond.not.i106 = icmp eq i64 %indvars.iv.next.i105, %wide.trip.count.i102 br i1 %exitcond.not.i106, label %Abc_TtAnd.exit, label %.lr.ph.i103, !llvm.loop !88 -83: ; preds = %72 - br i1 %76, label %.lr.ph.preheader.i107, label %Abc_TtAnd.exit +82: ; preds = %71 + br i1 %75, label %.lr.ph.preheader.i107, label %Abc_TtAnd.exit -.lr.ph.preheader.i107: ; preds = %83 - %wide.trip.count.i108 = zext nneg i32 %75 to i64 +.lr.ph.preheader.i107: ; preds = %82 + %wide.trip.count.i108 = zext nneg i32 %74 to i64 br label %.lr.ph.i109 .lr.ph.i109: ; preds = %.lr.ph.i109, %.lr.ph.preheader.i107 %indvars.iv.i110 = phi i64 [ 0, %.lr.ph.preheader.i107 ], [ %indvars.iv.next.i111, %.lr.ph.i109 ] - %84 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i110 - %85 = load i64, ptr %84, align 8 - %86 = getelementptr inbounds i64, ptr %6, i64 %indvars.iv.i110 - %87 = load i64, ptr %86, align 8 - %88 = xor i64 %87, %85 - store i64 %88, ptr %84, align 8 + %83 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i110 + %84 = load i64, ptr %83, align 8 + %85 = getelementptr inbounds i64, ptr %6, i64 %indvars.iv.i110 + %86 = load i64, ptr %85, align 8 + %87 = xor i64 %86, %84 + store i64 %87, ptr %83, align 8 %indvars.iv.next.i111 = add nuw nsw i64 %indvars.iv.i110, 1 %exitcond.not.i112 = icmp eq i64 %indvars.iv.next.i111, %wide.trip.count.i108 br i1 %exitcond.not.i112, label %Abc_TtAnd.exit, label %.lr.ph.i109, !llvm.loop !89 -Abc_TtAnd.exit: ; preds = %.lr.ph.i109, %.lr.ph.i103, %83, %77 +Abc_TtAnd.exit: ; preds = %.lr.ph.i109, %.lr.ph.i103, %82, %76 %indvars.iv.next173 = add nuw nsw i64 %indvars.iv172, 1 %.val98 = load i32, ptr %15, align 4 - %89 = lshr i32 %.val98, 27 - %90 = zext nneg i32 %89 to i64 - %91 = icmp ult i64 %indvars.iv.next173, %90 - br i1 %91, label %69, label %.critedge, !llvm.loop !90 + %88 = lshr i32 %.val98, 27 + %89 = zext nneg i32 %88 to i64 + %90 = icmp ult i64 %indvars.iv.next173, %89 + br i1 %90, label %68, label %.critedge, !llvm.loop !90 -.critedge: ; preds = %69, %Abc_TtAnd.exit, %Abc_TtConst1.exit +.critedge: ; preds = %68, %Abc_TtAnd.exit, %Abc_TtConst1.exit %.not87 = icmp eq i32 %9, 0 - br i1 %.not87, label %Abc_TtCopy.exit, label %92 + br i1 %.not87, label %Abc_TtCopy.exit, label %91 -92: ; preds = %.critedge - %93 = getelementptr inbounds i8, ptr %0, i64 16 - %94 = load i32, ptr %93, align 8 - %95 = icmp sgt i32 %94, 0 - br i1 %95, label %.lr.ph.preheader.i113, label %Abc_TtCopy.exit +91: ; preds = %.critedge + %92 = getelementptr inbounds i8, ptr %0, i64 16 + %93 = load i32, ptr %92, align 8 + %94 = icmp sgt i32 %93, 0 + br i1 %94, label %.lr.ph.preheader.i113, label %Abc_TtCopy.exit -.lr.ph.preheader.i113: ; preds = %92 - %wide.trip.count.i114 = zext nneg i32 %94 to i64 +.lr.ph.preheader.i113: ; preds = %91 + %wide.trip.count.i114 = zext nneg i32 %93 to i64 br label %.lr.ph.i115 .lr.ph.i115: ; preds = %.lr.ph.i115, %.lr.ph.preheader.i113 %indvars.iv.i116 = phi i64 [ 0, %.lr.ph.preheader.i113 ], [ %indvars.iv.next.i117, %.lr.ph.i115 ] - %96 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i116 - %97 = load i64, ptr %96, align 8 - %98 = xor i64 %97, -1 - store i64 %98, ptr %96, align 8 + %95 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i116 + %96 = load i64, ptr %95, align 8 + %97 = xor i64 %96, -1 + store i64 %97, ptr %95, align 8 %indvars.iv.next.i117 = add nuw nsw i64 %indvars.iv.i116, 1 %exitcond.not.i118 = icmp eq i64 %indvars.iv.next.i117, %wide.trip.count.i114 br i1 %exitcond.not.i118, label %Abc_TtCopy.exit, label %.lr.ph.i115, !llvm.loop !91 -.lr.ph154: ; preds = %.preheader, %101 - %indvars.iv169 = phi i64 [ %indvars.iv.next170, %101 ], [ 0, %.preheader ] - %99 = getelementptr inbounds [0 x i32], ptr %24, i64 0, i64 %indvars.iv169 - %100 = load i32, ptr %99, align 4 - %.not84 = icmp eq i32 %100, 0 - br i1 %.not84, label %.critedge2, label %101 +.lr.ph154: ; preds = %.preheader, %100 + %indvars.iv169 = phi i64 [ %indvars.iv.next170, %100 ], [ 0, %.preheader ] + %98 = getelementptr inbounds [0 x i32], ptr %24, i64 0, i64 %indvars.iv169 + %99 = load i32, ptr %98, align 4 + %.not84 = icmp eq i32 %99, 0 + br i1 %.not84, label %.critedge2, label %100 -101: ; preds = %.lr.ph154 - %102 = getelementptr inbounds [3 x [64 x i64]], ptr %7, i64 0, i64 %indvars.iv169 - call void @If_DsdManComputeTruth_rec(ptr noundef %0, i32 noundef %100, ptr noundef nonnull %102, ptr noundef %3, ptr noundef %4) +100: ; preds = %.lr.ph154 + %101 = getelementptr inbounds [3 x [64 x i64]], ptr %7, i64 0, i64 %indvars.iv169 + call void @If_DsdManComputeTruth_rec(ptr noundef %0, i32 noundef %99, ptr noundef nonnull %101, ptr noundef %3, ptr noundef %4) %indvars.iv.next170 = add nuw nsw i64 %indvars.iv169, 1 %.val97 = load i32, ptr %15, align 4 - %103 = lshr i32 %.val97, 27 - %104 = zext nneg i32 %103 to i64 - %105 = icmp ult i64 %indvars.iv.next170, %104 - br i1 %105, label %.lr.ph154, label %.critedge2, !llvm.loop !92 - -.critedge2: ; preds = %.lr.ph154, %101, %.preheader - %106 = getelementptr inbounds i8, ptr %7, i64 512 - %107 = getelementptr inbounds i8, ptr %7, i64 1024 - %108 = getelementptr inbounds i8, ptr %0, i64 16 - %109 = load i32, ptr %108, align 8 - %110 = icmp sgt i32 %109, 0 - br i1 %110, label %.lr.ph.preheader.i119, label %Abc_TtMux.exit + %102 = lshr i32 %.val97, 27 + %103 = zext nneg i32 %102 to i64 + %104 = icmp ult i64 %indvars.iv.next170, %103 + br i1 %104, label %.lr.ph154, label %.critedge2, !llvm.loop !92 + +.critedge2: ; preds = %.lr.ph154, %100, %.preheader + %105 = getelementptr inbounds i8, ptr %7, i64 512 + %106 = getelementptr inbounds i8, ptr %7, i64 1024 + %107 = getelementptr inbounds i8, ptr %0, i64 16 + %108 = load i32, ptr %107, align 8 + %109 = icmp sgt i32 %108, 0 + br i1 %109, label %.lr.ph.preheader.i119, label %Abc_TtMux.exit .lr.ph.preheader.i119: ; preds = %.critedge2 - %wide.trip.count.i120 = zext nneg i32 %109 to i64 + %wide.trip.count.i120 = zext nneg i32 %108 to i64 br label %.lr.ph.i121 .lr.ph.i121: ; preds = %.lr.ph.i121, %.lr.ph.preheader.i119 %indvars.iv.i122 = phi i64 [ 0, %.lr.ph.preheader.i119 ], [ %indvars.iv.next.i123, %.lr.ph.i121 ] - %111 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.i122 - %112 = load i64, ptr %111, align 8 - %113 = getelementptr inbounds i64, ptr %106, i64 %indvars.iv.i122 - %114 = load i64, ptr %113, align 8 - %115 = and i64 %114, %112 - %116 = xor i64 %112, -1 - %117 = getelementptr inbounds i64, ptr %107, i64 %indvars.iv.i122 - %118 = load i64, ptr %117, align 8 - %119 = and i64 %118, %116 - %120 = or i64 %119, %115 - %121 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i122 - store i64 %120, ptr %121, align 8 + %110 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv.i122 + %111 = load i64, ptr %110, align 8 + %112 = getelementptr inbounds i64, ptr %105, i64 %indvars.iv.i122 + %113 = load i64, ptr %112, align 8 + %114 = and i64 %113, %111 + %115 = xor i64 %111, -1 + %116 = getelementptr inbounds i64, ptr %106, i64 %indvars.iv.i122 + %117 = load i64, ptr %116, align 8 + %118 = and i64 %117, %115 + %119 = or i64 %118, %114 + %120 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i122 + store i64 %119, ptr %120, align 8 %indvars.iv.next.i123 = add nuw nsw i64 %indvars.iv.i122, 1 %exitcond.not.i124 = icmp eq i64 %indvars.iv.next.i123, %wide.trip.count.i120 br i1 %exitcond.not.i124, label %Abc_TtMux.exit, label %.lr.ph.i121, !llvm.loop !93 Abc_TtMux.exit: ; preds = %.lr.ph.i121, %.critedge2 %.not85 = icmp eq i32 %9, 0 - br i1 %.not85, label %Abc_TtCopy.exit, label %122 + br i1 %.not85, label %Abc_TtCopy.exit, label %121 -122: ; preds = %Abc_TtMux.exit - %123 = load i32, ptr %108, align 8 - %124 = icmp sgt i32 %123, 0 - br i1 %124, label %.lr.ph.preheader.i125, label %Abc_TtCopy.exit +121: ; preds = %Abc_TtMux.exit + %122 = load i32, ptr %107, align 8 + %123 = icmp sgt i32 %122, 0 + br i1 %123, label %.lr.ph.preheader.i125, label %Abc_TtCopy.exit -.lr.ph.preheader.i125: ; preds = %122 - %wide.trip.count.i126 = zext nneg i32 %123 to i64 +.lr.ph.preheader.i125: ; preds = %121 + %wide.trip.count.i126 = zext nneg i32 %122 to i64 br label %.lr.ph.i127 .lr.ph.i127: ; preds = %.lr.ph.i127, %.lr.ph.preheader.i125 %indvars.iv.i128 = phi i64 [ 0, %.lr.ph.preheader.i125 ], [ %indvars.iv.next.i129, %.lr.ph.i127 ] - %125 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i128 - %126 = load i64, ptr %125, align 8 - %127 = xor i64 %126, -1 - store i64 %127, ptr %125, align 8 + %124 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i128 + %125 = load i64, ptr %124, align 8 + %126 = xor i64 %125, -1 + store i64 %126, ptr %124, align 8 %indvars.iv.next.i129 = add nuw nsw i64 %indvars.iv.i128, 1 %exitcond.not.i130 = icmp eq i64 %indvars.iv.next.i129, %wide.trip.count.i126 br i1 %exitcond.not.i130, label %Abc_TtCopy.exit, label %.lr.ph.i127, !llvm.loop !91 .lr.ph: ; preds = %.lr.ph191 - %128 = getelementptr inbounds [0 x i32], ptr %17, i64 0, i64 %indvars.iv.next - %129 = load i32, ptr %128, align 4 - %.not = icmp eq i32 %129, 0 + %127 = getelementptr inbounds [0 x i32], ptr %17, i64 0, i64 %indvars.iv.next + %128 = load i32, ptr %127, align 4 + %.not = icmp eq i32 %128, 0 br i1 %.not, label %.critedge4, label %.lr.ph191, !llvm.loop !94 .lr.ph191: ; preds = %.lr.ph.preheader, %.lr.ph - %130 = phi i32 [ %129, %.lr.ph ], [ %19, %.lr.ph.preheader ] + %129 = phi i32 [ %128, %.lr.ph ], [ %19, %.lr.ph.preheader ] %indvars.iv190 = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %.lr.ph.preheader ] - %131 = getelementptr inbounds [12 x [64 x i64]], ptr %8, i64 0, i64 %indvars.iv190 - call void @If_DsdManComputeTruth_rec(ptr noundef %0, i32 noundef %130, ptr noundef nonnull %131, ptr noundef %3, ptr noundef %4) + %130 = getelementptr inbounds [12 x [64 x i64]], ptr %8, i64 0, i64 %indvars.iv190 + call void @If_DsdManComputeTruth_rec(ptr noundef %0, i32 noundef %129, ptr noundef nonnull %130, ptr noundef %3, ptr noundef %4) %indvars.iv.next = add nuw nsw i64 %indvars.iv190, 1 %.val96 = load i32, ptr %15, align 4 - %132 = lshr i32 %.val96, 27 - %133 = zext nneg i32 %132 to i64 - %134 = icmp ult i64 %indvars.iv.next, %133 - br i1 %134, label %.lr.ph, label %.critedge4, !llvm.loop !94 + %131 = lshr i32 %.val96, 27 + %132 = zext nneg i32 %131 to i64 + %133 = icmp ult i64 %indvars.iv.next, %132 + br i1 %133, label %.lr.ph, label %.critedge4, !llvm.loop !94 .critedge4: ; preds = %.lr.ph191, %.lr.ph, %.lr.ph.preheader %.val96.lcssa = phi i32 [ %.val95, %.lr.ph.preheader ], [ %.val96, %.lr.ph ], [ %.val96, %.lr.ph191 ] - %.lcssa = phi i32 [ %18, %.lr.ph.preheader ], [ %132, %.lr.ph ], [ %132, %.lr.ph191 ] - %135 = getelementptr inbounds i8, ptr %0, i64 112 - %136 = zext nneg i32 %.lcssa to i64 - %137 = getelementptr inbounds [16 x ptr], ptr %135, i64 0, i64 %136 - %138 = load ptr, ptr %137, align 8 - %139 = and i32 %.val96.lcssa, 7 - %140 = icmp eq i32 %139, 6 - %141 = icmp ugt i32 %.val96.lcssa, 402653183 - %or.cond.i.i = and i1 %141, %140 - br i1 %or.cond.i.i, label %142, label %If_DsdObjTruth.exit - -142: ; preds = %.critedge4 - %143 = load i32, ptr %14, align 4 - %144 = getelementptr i8, ptr %0, i64 80 - %.val.i.i = load ptr, ptr %144, align 8 - %145 = sext i32 %143 to i64 - %146 = getelementptr inbounds i32, ptr %.val.i.i, i64 %145 - %147 = load i32, ptr %146, align 4 + %.lcssa = phi i32 [ %18, %.lr.ph.preheader ], [ %131, %.lr.ph ], [ %131, %.lr.ph191 ] + %134 = getelementptr inbounds i8, ptr %0, i64 112 + %135 = zext nneg i32 %.lcssa to i64 + %136 = getelementptr inbounds [16 x ptr], ptr %134, i64 0, i64 %135 + %137 = load ptr, ptr %136, align 8 + %138 = and i32 %.val96.lcssa, 7 + %139 = icmp eq i32 %138, 6 + %140 = icmp ugt i32 %.val96.lcssa, 402653183 + %or.cond.i.i = and i1 %140, %139 + br i1 %or.cond.i.i, label %141, label %If_DsdObjTruth.exit + +141: ; preds = %.critedge4 + %142 = load i32, ptr %14, align 4 + %143 = getelementptr i8, ptr %0, i64 80 + %.val.i.i = load ptr, ptr %143, align 8 + %144 = sext i32 %142 to i64 + %145 = getelementptr inbounds i32, ptr %.val.i.i, i64 %144 + %146 = load i32, ptr %145, align 4 br label %If_DsdObjTruth.exit -If_DsdObjTruth.exit: ; preds = %.critedge4.thread, %.critedge4, %142 - %148 = phi ptr [ %138, %142 ], [ %138, %.critedge4 ], [ %23, %.critedge4.thread ] - %.lcssa178 = phi i32 [ %.lcssa, %142 ], [ %.lcssa, %.critedge4 ], [ %18, %.critedge4.thread ] - %149 = phi i32 [ %147, %142 ], [ -1, %.critedge4 ], [ -1, %.critedge4.thread ] - %150 = getelementptr inbounds i8, ptr %148, i64 24 - %151 = load ptr, ptr %150, align 8 - %152 = getelementptr inbounds i8, ptr %148, i64 8 - %153 = load i32, ptr %152, align 8 - %154 = ashr i32 %149, %153 - %155 = sext i32 %154 to i64 - %156 = getelementptr inbounds ptr, ptr %151, i64 %155 - %157 = load ptr, ptr %156, align 8 - %158 = load i32, ptr %148, align 8 - %159 = getelementptr inbounds i8, ptr %148, i64 12 - %160 = load i32, ptr %159, align 4 - %161 = and i32 %160, %149 - %162 = mul nsw i32 %161, %158 - %163 = sext i32 %162 to i64 - %164 = getelementptr inbounds i64, ptr %157, i64 %163 - %165 = getelementptr inbounds i8, ptr %0, i64 16 - %166 = load i32, ptr %165, align 8 - call void @Dau_DsdTruthCompose_rec(ptr noundef %164, ptr noundef nonnull %8, ptr noundef %2, i32 noundef %.lcssa178, i32 noundef %166) #38 +If_DsdObjTruth.exit: ; preds = %.critedge4.thread, %.critedge4, %141 + %147 = phi ptr [ %137, %141 ], [ %137, %.critedge4 ], [ %23, %.critedge4.thread ] + %.lcssa178 = phi i32 [ %.lcssa, %141 ], [ %.lcssa, %.critedge4 ], [ %18, %.critedge4.thread ] + %148 = phi i32 [ %146, %141 ], [ -1, %.critedge4 ], [ -1, %.critedge4.thread ] + %149 = getelementptr inbounds i8, ptr %147, i64 24 + %150 = load ptr, ptr %149, align 8 + %151 = getelementptr inbounds i8, ptr %147, i64 8 + %152 = load i32, ptr %151, align 8 + %153 = ashr i32 %148, %152 + %154 = sext i32 %153 to i64 + %155 = getelementptr inbounds ptr, ptr %150, i64 %154 + %156 = load ptr, ptr %155, align 8 + %157 = load i32, ptr %147, align 8 + %158 = getelementptr inbounds i8, ptr %147, i64 12 + %159 = load i32, ptr %158, align 4 + %160 = and i32 %159, %148 + %161 = mul nsw i32 %160, %157 + %162 = sext i32 %161 to i64 + %163 = getelementptr inbounds i64, ptr %156, i64 %162 + %164 = getelementptr inbounds i8, ptr %0, i64 16 + %165 = load i32, ptr %164, align 8 + call void @Dau_DsdTruthCompose_rec(ptr noundef %163, ptr noundef nonnull %8, ptr noundef %2, i32 noundef %.lcssa178, i32 noundef %165) #38 %.not83 = icmp eq i32 %9, 0 - br i1 %.not83, label %Abc_TtCopy.exit, label %167 + br i1 %.not83, label %Abc_TtCopy.exit, label %166 -167: ; preds = %If_DsdObjTruth.exit - %168 = load i32, ptr %165, align 8 - %169 = icmp sgt i32 %168, 0 - br i1 %169, label %.lr.ph.preheader.i132, label %Abc_TtCopy.exit +166: ; preds = %If_DsdObjTruth.exit + %167 = load i32, ptr %164, align 8 + %168 = icmp sgt i32 %167, 0 + br i1 %168, label %.lr.ph.preheader.i132, label %Abc_TtCopy.exit -.lr.ph.preheader.i132: ; preds = %167 - %wide.trip.count.i133 = zext nneg i32 %168 to i64 +.lr.ph.preheader.i132: ; preds = %166 + %wide.trip.count.i133 = zext nneg i32 %167 to i64 br label %.lr.ph.i134 .lr.ph.i134: ; preds = %.lr.ph.i134, %.lr.ph.preheader.i132 %indvars.iv.i135 = phi i64 [ 0, %.lr.ph.preheader.i132 ], [ %indvars.iv.next.i136, %.lr.ph.i134 ] - %170 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i135 - %171 = load i64, ptr %170, align 8 - %172 = xor i64 %171, -1 - store i64 %172, ptr %170, align 8 + %169 = getelementptr inbounds i64, ptr %2, i64 %indvars.iv.i135 + %170 = load i64, ptr %169, align 8 + %171 = xor i64 %170, -1 + store i64 %171, ptr %169, align 8 %indvars.iv.next.i136 = add nuw nsw i64 %indvars.iv.i135, 1 %exitcond.not.i137 = icmp eq i64 %indvars.iv.next.i136, %wide.trip.count.i133 br i1 %exitcond.not.i137, label %Abc_TtCopy.exit, label %.lr.ph.i134, !llvm.loop !91 -Abc_TtCopy.exit: ; preds = %.lr.ph.i134, %.lr.ph.i127, %.lr.ph.i115, %.lr.ph.i, %.lr.ph18.i, %5, %167, %122, %92, %.preheader.i, %.preheader14.i, %If_DsdObjTruth.exit, %Abc_TtMux.exit, %.critedge +Abc_TtCopy.exit: ; preds = %.lr.ph.i134, %.lr.ph.i127, %.lr.ph.i115, %.lr.ph.i, %.lr.ph18.i, %5, %166, %121, %91, %.preheader.i, %.preheader14.i, %If_DsdObjTruth.exit, %Abc_TtMux.exit, %.critedge ret void } diff --git a/bench/abc/optimized/saigOutDec.c.ll b/bench/abc/optimized/saigOutDec.c.ll index 381cae8a63d..198fc7f143d 100644 --- a/bench/abc/optimized/saigOutDec.c.ll +++ b/bench/abc/optimized/saigOutDec.c.ll @@ -241,19 +241,19 @@ Vec_PtrPush.exit: ; preds = %.Vec_PtrGrow.exit11 br label %118 118: ; preds = %.lr.ph174, %.critedge4 - %.val115191 = phi i32 [ %.val115172, %.lr.ph174 ], [ %.val115, %.critedge4 ] - %indvars.iv183 = phi i64 [ 0, %.lr.ph174 ], [ %.pre, %.critedge4 ] - %indvars.iv178 = phi i64 [ 1, %.lr.ph174 ], [ %indvars.iv.next179, %.critedge4 ] + %.val115192 = phi i32 [ %.val115172, %.lr.ph174 ], [ %.val115, %.critedge4 ] + %indvars.iv184 = phi i64 [ 0, %.lr.ph174 ], [ %.pre, %.critedge4 ] + %indvars.iv179 = phi i64 [ 1, %.lr.ph174 ], [ %indvars.iv.next180, %.critedge4 ] %.val108 = load ptr, ptr %113, align 8 - %119 = getelementptr inbounds ptr, ptr %.val108, i64 %indvars.iv183 + %119 = getelementptr inbounds ptr, ptr %.val108, i64 %indvars.iv184 %120 = load ptr, ptr %119, align 8 %121 = load ptr, ptr %4, align 8 %.not = icmp ne ptr %120, %121 - %.pre = add nuw nsw i64 %indvars.iv183, 1 - %122 = sext i32 %.val115191 to i64 + %.pre = add nuw nsw i64 %indvars.iv184, 1 + %122 = sext i32 %.val115192 to i64 %123 = icmp slt i64 %.pre, %122 - %or.cond197 = select i1 %.not, i1 %123, i1 false - br i1 %or.cond197, label %.lr.ph171, label %.critedge4 + %or.cond199 = select i1 %.not, i1 %123, i1 false + br i1 %or.cond199, label %.lr.ph171, label %.critedge4 .lr.ph171: ; preds = %118 %124 = getelementptr i8, ptr %120, i64 36 @@ -261,9 +261,9 @@ Vec_PtrPush.exit: ; preds = %.Vec_PtrGrow.exit11 br label %126 126: ; preds = %.lr.ph171, %.loopexit - %indvars.iv180 = phi i64 [ %indvars.iv178, %.lr.ph171 ], [ %indvars.iv.next181, %.loopexit ] + %indvars.iv181 = phi i64 [ %indvars.iv179, %.lr.ph171 ], [ %indvars.iv.next182, %.loopexit ] %.val109 = load ptr, ptr %113, align 8 - %127 = getelementptr inbounds ptr, ptr %.val109, i64 %indvars.iv180 + %127 = getelementptr inbounds ptr, ptr %.val109, i64 %indvars.iv181 %128 = load ptr, ptr %127, align 8 %129 = load ptr, ptr %4, align 8 %.not98 = icmp eq ptr %128, %129 @@ -271,13 +271,13 @@ Vec_PtrPush.exit: ; preds = %.Vec_PtrGrow.exit11 130: ; preds = %126 %.val130 = load ptr, ptr %114, align 8 - %131 = getelementptr inbounds i32, ptr %.val130, i64 %indvars.iv183 + %131 = getelementptr inbounds i32, ptr %.val130, i64 %indvars.iv184 %132 = load i32, ptr %131, align 4 %.not99 = icmp eq i32 %132, 0 br i1 %.not99, label %133, label %.loopexit 133: ; preds = %130 - %134 = getelementptr inbounds i32, ptr %.val130, i64 %indvars.iv180 + %134 = getelementptr inbounds i32, ptr %.val130, i64 %indvars.iv181 %135 = load i32, ptr %134, align 4 %.not100 = icmp eq i32 %135, 0 br i1 %.not100, label %.preheader, label %.loopexit @@ -285,171 +285,173 @@ Vec_PtrPush.exit: ; preds = %.Vec_PtrGrow.exit11 .preheader: ; preds = %133 %136 = getelementptr i8, ptr %128, i64 36 %137 = getelementptr inbounds i8, ptr %128, i64 24 - br label %138 - -138: ; preds = %.preheader, %224 - %.094167 = phi i32 [ 0, %.preheader ], [ %225, %224 ] - %139 = lshr i32 %.094167, 1 - %140 = load ptr, ptr %32, align 8 + br label %140 + +138: ; preds = %140 + %139 = add nuw nsw i32 %.094167, 1 + %exitcond.not = icmp eq i32 %139, 3 + br i1 %exitcond.not, label %.loopexit, label %140, !llvm.loop !6 + +140: ; preds = %.preheader, %138 + %.094167 = phi i32 [ 0, %.preheader ], [ %139, %138 ] + %141 = and i32 %.094167, 1 + %142 = lshr i32 %.094167, 1 + %143 = load ptr, ptr %32, align 8 %.val123 = load i32, ptr %124, align 4 - %141 = sext i32 %.val123 to i64 - %142 = getelementptr inbounds i32, ptr %140, i64 %141 - %143 = load i32, ptr %142, align 4 - %144 = load i64, ptr %125, align 8 - %145 = trunc i64 %144 to i32 - %146 = lshr i32 %145, 3 - %147 = xor i32 %146, %.094167 - %148 = and i32 %147, 1 - %149 = shl nsw i32 %143, 1 - %150 = or disjoint i32 %148, %149 - store i32 %150, ptr %115, align 4 + %144 = sext i32 %.val123 to i64 + %145 = getelementptr inbounds i32, ptr %143, i64 %144 + %146 = load i32, ptr %145, align 4 + %147 = load i64, ptr %125, align 8 + %148 = trunc i64 %147 to i32 + %149 = lshr i32 %148, 3 + %150 = and i32 %149, 1 + %151 = shl nsw i32 %146, 1 + %152 = icmp ne i32 %141, %150 + %153 = zext i1 %152 to i32 + %154 = or disjoint i32 %151, %153 + store i32 %154, ptr %115, align 4 %.val124 = load i32, ptr %136, align 4 - %151 = sext i32 %.val124 to i64 - %152 = getelementptr inbounds i32, ptr %140, i64 %151 - %153 = load i32, ptr %152, align 4 - %154 = load i64, ptr %137, align 8 - %155 = trunc i64 %154 to i32 - %156 = lshr i32 %155, 3 - %157 = and i32 %156, 1 - %158 = shl nsw i32 %153, 1 - %159 = icmp ne i32 %139, %157 - %160 = zext i1 %159 to i32 - %161 = or disjoint i32 %158, %160 - store i32 %161, ptr %116, align 8 - %162 = call i32 @sat_solver_solve(ptr noundef %8, ptr noundef nonnull %5, ptr noundef nonnull %117, i64 noundef 0, i64 noundef 0, i64 noundef 0, i64 noundef 0) #9 - %163 = icmp eq i32 %162, -1 - br i1 %163, label %Vec_IntPush.exit148, label %224 - -Vec_IntPush.exit148: ; preds = %138 - %164 = call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #10 - %165 = getelementptr inbounds i8, ptr %164, i64 4 - store i32 0, ptr %165, align 4 - store i32 16, ptr %164, align 8 - %166 = call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #10 - %167 = getelementptr inbounds i8, ptr %164, i64 8 - store ptr %166, ptr %167, align 8 + %155 = sext i32 %.val124 to i64 + %156 = getelementptr inbounds i32, ptr %143, i64 %155 + %157 = load i32, ptr %156, align 4 + %158 = load i64, ptr %137, align 8 + %159 = trunc i64 %158 to i32 + %160 = lshr i32 %159, 3 + %161 = and i32 %160, 1 + %162 = shl nsw i32 %157, 1 + %163 = icmp ne i32 %142, %161 + %164 = zext i1 %163 to i32 + %165 = or disjoint i32 %162, %164 + store i32 %165, ptr %116, align 8 + %166 = call i32 @sat_solver_solve(ptr noundef %8, ptr noundef nonnull %5, ptr noundef nonnull %117, i64 noundef 0, i64 noundef 0, i64 noundef 0, i64 noundef 0) #9 + %167 = icmp eq i32 %166, -1 + br i1 %167, label %Vec_IntPush.exit148, label %138 + +Vec_IntPush.exit148: ; preds = %140 + %168 = call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #10 + %169 = getelementptr inbounds i8, ptr %168, i64 4 + store i32 0, ptr %169, align 4 + store i32 16, ptr %168, align 8 + %170 = call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #10 + %171 = getelementptr inbounds i8, ptr %168, i64 8 + store ptr %170, ptr %171, align 8 %.val125 = load i32, ptr %124, align 4 - %168 = load i64, ptr %125, align 8 - %169 = trunc i64 %168 to i32 - %170 = lshr i32 %169, 3 - %171 = xor i32 %170, %.094167 - %172 = and i32 %171, 1 - %173 = shl nsw i32 %.val125, 1 - %174 = or disjoint i32 %172, %173 - store i32 1, ptr %165, align 4 - store i32 %174, ptr %166, align 4 + %172 = load i64, ptr %125, align 8 + %173 = trunc i64 %172 to i32 + %174 = lshr i32 %173, 3 + %175 = and i32 %174, 1 + %176 = shl nsw i32 %.val125, 1 + %177 = icmp ne i32 %141, %175 + %178 = zext i1 %177 to i32 + %179 = or disjoint i32 %176, %178 + store i32 1, ptr %169, align 4 + store i32 %179, ptr %170, align 4 %.val126 = load i32, ptr %136, align 4 - %175 = load i64, ptr %137, align 8 - %176 = trunc i64 %175 to i32 - %177 = lshr i32 %176, 3 - %178 = and i32 %177, 1 - %179 = shl nsw i32 %.val126, 1 - %180 = icmp ne i32 %139, %178 - %181 = zext i1 %180 to i32 - %182 = or disjoint i32 %179, %181 - store i32 2, ptr %165, align 4 - %183 = getelementptr inbounds i8, ptr %166, i64 4 - store i32 %182, ptr %183, align 4 - %184 = load i32, ptr %17, align 4 - %185 = load i32, ptr %16, align 8 - %186 = icmp eq i32 %184, %185 - br i1 %186, label %187, label %.Vec_PtrGrow.exit11_crit_edge.i149 + %180 = load i64, ptr %137, align 8 + %181 = trunc i64 %180 to i32 + %182 = lshr i32 %181, 3 + %183 = and i32 %182, 1 + %184 = shl nsw i32 %.val126, 1 + %185 = icmp ne i32 %142, %183 + %186 = zext i1 %185 to i32 + %187 = or disjoint i32 %184, %186 + store i32 2, ptr %169, align 4 + %188 = getelementptr inbounds i8, ptr %170, i64 4 + store i32 %187, ptr %188, align 4 + %189 = load i32, ptr %17, align 4 + %190 = load i32, ptr %16, align 8 + %191 = icmp eq i32 %189, %190 + br i1 %191, label %192, label %.Vec_PtrGrow.exit11_crit_edge.i149 .Vec_PtrGrow.exit11_crit_edge.i149: ; preds = %Vec_IntPush.exit148 %.pre.i151 = load ptr, ptr %19, align 8 br label %Vec_PtrPush.exit155 -187: ; preds = %Vec_IntPush.exit148 - %188 = icmp slt i32 %184, 16 - br i1 %188, label %189, label %196 +192: ; preds = %Vec_IntPush.exit148 + %193 = icmp slt i32 %189, 16 + br i1 %193, label %194, label %201 -189: ; preds = %187 - %190 = load ptr, ptr %19, align 8 - %.not9.i.i153 = icmp eq ptr %190, null - br i1 %.not9.i.i153, label %193, label %191 +194: ; preds = %192 + %195 = load ptr, ptr %19, align 8 + %.not9.i.i153 = icmp eq ptr %195, null + br i1 %.not9.i.i153, label %198, label %196 -191: ; preds = %189 - %192 = call dereferenceable_or_null(128) ptr @realloc(ptr noundef nonnull %190, i64 noundef 128) #11 +196: ; preds = %194 + %197 = call dereferenceable_or_null(128) ptr @realloc(ptr noundef nonnull %195, i64 noundef 128) #11 br label %Vec_PtrGrow.exit.i154 -193: ; preds = %189 - %194 = call noalias dereferenceable_or_null(128) ptr @malloc(i64 noundef 128) #10 +198: ; preds = %194 + %199 = call noalias dereferenceable_or_null(128) ptr @malloc(i64 noundef 128) #10 br label %Vec_PtrGrow.exit.i154 -Vec_PtrGrow.exit.i154: ; preds = %193, %191 - %195 = phi ptr [ %192, %191 ], [ %194, %193 ] - store ptr %195, ptr %19, align 8 +Vec_PtrGrow.exit.i154: ; preds = %198, %196 + %200 = phi ptr [ %197, %196 ], [ %199, %198 ] + store ptr %200, ptr %19, align 8 store i32 16, ptr %16, align 8 br label %Vec_PtrPush.exit155 -196: ; preds = %187 - %197 = shl nuw nsw i32 %184, 1 - %198 = load ptr, ptr %19, align 8 - %.not9.i10.i152 = icmp eq ptr %198, null - %199 = zext nneg i32 %197 to i64 - %200 = shl nuw nsw i64 %199, 3 - br i1 %.not9.i10.i152, label %203, label %201 - -201: ; preds = %196 - %202 = call ptr @realloc(ptr noundef nonnull %198, i64 noundef %200) #11 - br label %205 - -203: ; preds = %196 - %204 = call noalias ptr @malloc(i64 noundef %200) #10 - br label %205 - -205: ; preds = %203, %201 - %206 = phi ptr [ %202, %201 ], [ %204, %203 ] - store ptr %206, ptr %19, align 8 - store i32 %197, ptr %16, align 8 +201: ; preds = %192 + %202 = shl nuw nsw i32 %189, 1 + %203 = load ptr, ptr %19, align 8 + %.not9.i10.i152 = icmp eq ptr %203, null + %204 = zext nneg i32 %202 to i64 + %205 = shl nuw nsw i64 %204, 3 + br i1 %.not9.i10.i152, label %208, label %206 + +206: ; preds = %201 + %207 = call ptr @realloc(ptr noundef nonnull %203, i64 noundef %205) #11 + br label %210 + +208: ; preds = %201 + %209 = call noalias ptr @malloc(i64 noundef %205) #10 + br label %210 + +210: ; preds = %208, %206 + %211 = phi ptr [ %207, %206 ], [ %209, %208 ] + store ptr %211, ptr %19, align 8 + store i32 %202, ptr %16, align 8 br label %Vec_PtrPush.exit155 -Vec_PtrPush.exit155: ; preds = %.Vec_PtrGrow.exit11_crit_edge.i149, %Vec_PtrGrow.exit.i154, %205 - %207 = phi ptr [ %.pre.i151, %.Vec_PtrGrow.exit11_crit_edge.i149 ], [ %206, %205 ], [ %195, %Vec_PtrGrow.exit.i154 ] - %208 = add nsw i32 %184, 1 - store i32 %208, ptr %17, align 4 - %209 = sext i32 %184 to i64 - %210 = getelementptr inbounds ptr, ptr %207, i64 %209 - store ptr %164, ptr %210, align 8 - br i1 %.not101, label %.loopexit, label %211 +Vec_PtrPush.exit155: ; preds = %.Vec_PtrGrow.exit11_crit_edge.i149, %Vec_PtrGrow.exit.i154, %210 + %212 = phi ptr [ %.pre.i151, %.Vec_PtrGrow.exit11_crit_edge.i149 ], [ %211, %210 ], [ %200, %Vec_PtrGrow.exit.i154 ] + %213 = add nsw i32 %189, 1 + store i32 %213, ptr %17, align 4 + %214 = sext i32 %189 to i64 + %215 = getelementptr inbounds ptr, ptr %212, i64 %214 + store ptr %168, ptr %215, align 8 + br i1 %.not101, label %.loopexit, label %216 -211: ; preds = %Vec_PtrPush.exit155 +216: ; preds = %Vec_PtrPush.exit155 %.val127 = load i32, ptr %124, align 4 - %212 = load i64, ptr %125, align 8 - %213 = trunc i64 %212 to i32 - %214 = lshr i32 %213, 3 - %215 = xor i32 %214, %.094167 - %216 = and i32 %215, 1 - %.not102 = icmp eq i32 %216, 0 - %217 = select i1 %.not102, i32 43, i32 45 + %217 = load i64, ptr %125, align 8 + %218 = trunc i64 %217 to i32 + %219 = lshr i32 %218, 3 + %220 = and i32 %219, 1 + %.not102 = icmp eq i32 %141, %220 + %221 = select i1 %.not102, i32 43, i32 45 %.val128 = load i32, ptr %136, align 4 - %218 = load i64, ptr %137, align 8 - %219 = trunc i64 %218 to i32 - %220 = lshr i32 %219, 3 - %221 = and i32 %220, 1 - %.not103 = icmp eq i32 %139, %221 - %222 = select i1 %.not103, i32 43, i32 45 - %223 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %.val127, i32 noundef %217, i32 noundef %.val128, i32 noundef %222) + %222 = load i64, ptr %137, align 8 + %223 = trunc i64 %222 to i32 + %224 = lshr i32 %223, 3 + %225 = and i32 %224, 1 + %.not103 = icmp eq i32 %142, %225 + %226 = select i1 %.not103, i32 43, i32 45 + %227 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %.val127, i32 noundef %221, i32 noundef %.val128, i32 noundef %226) br label %.loopexit -224: ; preds = %138 - %225 = add nuw nsw i32 %.094167, 1 - %exitcond.not = icmp eq i32 %225, 3 - br i1 %exitcond.not, label %.loopexit, label %138, !llvm.loop !6 - -.loopexit: ; preds = %224, %126, %Vec_PtrPush.exit155, %211, %130, %133 - %indvars.iv.next181 = add nuw nsw i64 %indvars.iv180, 1 +.loopexit: ; preds = %138, %126, %Vec_PtrPush.exit155, %216, %130, %133 + %indvars.iv.next182 = add nuw nsw i64 %indvars.iv181, 1 %.val116 = load i32, ptr %20, align 4 - %226 = trunc nuw i64 %indvars.iv.next181 to i32 - %227 = icmp sgt i32 %.val116, %226 - br i1 %227, label %126, label %.critedge4, !llvm.loop !7 + %228 = trunc nuw i64 %indvars.iv.next182 to i32 + %229 = icmp sgt i32 %.val116, %228 + br i1 %229, label %126, label %.critedge4, !llvm.loop !7 .critedge4: ; preds = %.loopexit, %118 - %.val115 = phi i32 [ %.val115191, %118 ], [ %.val116, %.loopexit ] - %228 = sext i32 %.val115 to i64 - %229 = icmp slt i64 %.pre, %228 - %indvars.iv.next179 = add nuw nsw i64 %indvars.iv178, 1 - br i1 %229, label %118, label %.critedge2.loopexit, !llvm.loop !8 + %.val115 = phi i32 [ %.val115192, %118 ], [ %.val116, %.loopexit ] + %230 = sext i32 %.val115 to i64 + %231 = icmp slt i64 %.pre, %230 + %indvars.iv.next180 = add nuw nsw i64 %indvars.iv179, 1 + br i1 %231, label %118, label %.critedge2.loopexit, !llvm.loop !8 .critedge2.loopexit: ; preds = %.critedge4 %.val117.pre = load i32, ptr %17, align 4 @@ -458,31 +460,31 @@ Vec_PtrPush.exit155: ; preds = %.Vec_PtrGrow.exit11 .critedge2: ; preds = %.critedge2.loopexit, %.critedge %.val118 = phi i32 [ %.val115, %.critedge2.loopexit ], [ %.val115172, %.critedge ] %.val117 = phi i32 [ %.val117.pre, %.critedge2.loopexit ], [ %.val114, %.critedge ] - %230 = sub nsw i32 %.val117, %.val114 - %231 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %.val118, i32 noundef %.val114, i32 noundef %230) + %232 = sub nsw i32 %.val117, %.val114 + %233 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %.val118, i32 noundef %.val114, i32 noundef %232) call void @sat_solver_delete(ptr noundef %8) #9 call void @Cnf_DataFree(ptr noundef %7) #9 - %232 = getelementptr inbounds i8, ptr %15, i64 8 - %233 = load ptr, ptr %232, align 8 - %.not.i156 = icmp eq ptr %233, null - br i1 %.not.i156, label %Vec_PtrFree.exit, label %234 + %234 = getelementptr inbounds i8, ptr %15, i64 8 + %235 = load ptr, ptr %234, align 8 + %.not.i156 = icmp eq ptr %235, null + br i1 %.not.i156, label %Vec_PtrFree.exit, label %236 -234: ; preds = %.critedge2 - call void @free(ptr noundef nonnull %233) #9 +236: ; preds = %.critedge2 + call void @free(ptr noundef nonnull %235) #9 br label %Vec_PtrFree.exit -Vec_PtrFree.exit: ; preds = %.critedge2, %234 +Vec_PtrFree.exit: ; preds = %.critedge2, %236 call void @free(ptr noundef nonnull %15) #9 - %235 = getelementptr inbounds i8, ptr %21, i64 8 - %236 = load ptr, ptr %235, align 8 - %.not.i157 = icmp eq ptr %236, null - br i1 %.not.i157, label %Vec_IntFree.exit, label %237 + %237 = getelementptr inbounds i8, ptr %21, i64 8 + %238 = load ptr, ptr %237, align 8 + %.not.i157 = icmp eq ptr %238, null + br i1 %.not.i157, label %Vec_IntFree.exit, label %239 -237: ; preds = %Vec_PtrFree.exit - call void @free(ptr noundef nonnull %236) #9 +239: ; preds = %Vec_PtrFree.exit + call void @free(ptr noundef nonnull %238) #9 br label %Vec_IntFree.exit -Vec_IntFree.exit: ; preds = %Vec_PtrFree.exit, %237 +Vec_IntFree.exit: ; preds = %Vec_PtrFree.exit, %239 call void @free(ptr noundef nonnull %21) #9 ret ptr %16 } diff --git a/bench/abc/optimized/saigRetStep.c.ll b/bench/abc/optimized/saigRetStep.c.ll index b44a56292c2..e5e386c1f3a 100644 --- a/bench/abc/optimized/saigRetStep.c.ll +++ b/bench/abc/optimized/saigRetStep.c.ll @@ -161,57 +161,64 @@ define ptr @Saig_ManRetimeNodeBwd(ptr noundef %0, ptr nocapture noundef readonly %18 = and i32 %17, 7 %19 = add nsw i32 %18, -7 %narrow.i = icmp ult i32 %19, -2 - br i1 %narrow.i, label %54, label %20 + br i1 %narrow.i, label %61, label %20 20: ; preds = %2 %21 = getelementptr i8, ptr %15, i64 8 %.val = load ptr, ptr %21, align 8 %22 = ptrtoint ptr %.val to i64 - %23 = getelementptr i8, ptr %15, i64 16 - %.val37 = load ptr, ptr %23, align 8 - %24 = ptrtoint ptr %.val37 to i64 - %25 = xor i64 %22, %13 - %26 = and i64 %25, 1 - %27 = xor i64 %24, %13 - %28 = and i64 %27, 1 - %29 = and i64 %13, 1 - %30 = xor i64 %29, %22 - %31 = inttoptr i64 %30 to ptr - %32 = tail call ptr @Aig_ObjCreateCo(ptr noundef nonnull %0, ptr noundef %31) #3 - %33 = getelementptr i8, ptr %0, i64 140 - %.val47 = load i32, ptr %33, align 4 - %34 = add nsw i32 %.val47, -1 - store i32 %34, ptr %32, align 8 - %35 = xor i64 %29, %24 - %36 = inttoptr i64 %35 to ptr - %37 = tail call ptr @Aig_ObjCreateCo(ptr noundef nonnull %0, ptr noundef %36) #3 - %.val46 = load i32, ptr %33, align 4 - %38 = add nsw i32 %.val46, -1 - store i32 %38, ptr %37, align 8 - %39 = tail call ptr @Aig_ObjCreateCi(ptr noundef nonnull %0) #3 - %40 = getelementptr i8, ptr %0, i64 136 - %.val49 = load i32, ptr %40, align 8 - %41 = add nsw i32 %.val49, -1 - store i32 %41, ptr %39, align 8 - %42 = tail call ptr @Aig_ObjCreateCi(ptr noundef nonnull %0) #3 - %.val48 = load i32, ptr %40, align 8 - %43 = add nsw i32 %.val48, -1 - store i32 %43, ptr %42, align 8 - %44 = ptrtoint ptr %39 to i64 - %45 = xor i64 %26, %44 - %46 = inttoptr i64 %45 to ptr - %47 = ptrtoint ptr %42 to i64 - %48 = xor i64 %28, %47 - %49 = inttoptr i64 %48 to ptr - %50 = getelementptr inbounds i8, ptr %0, i64 104 - %51 = load i32, ptr %50, align 8 - %52 = add nsw i32 %51, 2 - store i32 %52, ptr %50, align 8 - %53 = tail call ptr @Aig_And(ptr noundef nonnull %0, ptr noundef %46, ptr noundef %49) #3 - br label %54 - -54: ; preds = %2, %20 - %.0 = phi ptr [ %53, %20 ], [ null, %2 ] + %23 = and i64 %22, -2 + %24 = getelementptr i8, ptr %15, i64 16 + %.val37 = load ptr, ptr %24, align 8 + %25 = ptrtoint ptr %.val37 to i64 + %26 = and i64 %25, -2 + %27 = trunc i64 %22 to i32 + %28 = and i32 %27, 1 + %29 = trunc i64 %13 to i32 + %30 = and i32 %29, 1 + %31 = xor i32 %28, %30 + %32 = trunc i64 %25 to i32 + %33 = and i32 %32, 1 + %34 = xor i32 %33, %30 + %35 = zext nneg i32 %31 to i64 + %36 = or disjoint i64 %23, %35 + %37 = inttoptr i64 %36 to ptr + %38 = tail call ptr @Aig_ObjCreateCo(ptr noundef nonnull %0, ptr noundef %37) #3 + %39 = getelementptr i8, ptr %0, i64 140 + %.val47 = load i32, ptr %39, align 4 + %40 = add nsw i32 %.val47, -1 + store i32 %40, ptr %38, align 8 + %41 = zext nneg i32 %34 to i64 + %42 = or disjoint i64 %26, %41 + %43 = inttoptr i64 %42 to ptr + %44 = tail call ptr @Aig_ObjCreateCo(ptr noundef nonnull %0, ptr noundef %43) #3 + %.val46 = load i32, ptr %39, align 4 + %45 = add nsw i32 %.val46, -1 + store i32 %45, ptr %44, align 8 + %46 = tail call ptr @Aig_ObjCreateCi(ptr noundef nonnull %0) #3 + %47 = getelementptr i8, ptr %0, i64 136 + %.val49 = load i32, ptr %47, align 8 + %48 = add nsw i32 %.val49, -1 + store i32 %48, ptr %46, align 8 + %49 = tail call ptr @Aig_ObjCreateCi(ptr noundef nonnull %0) #3 + %.val48 = load i32, ptr %47, align 8 + %50 = add nsw i32 %.val48, -1 + store i32 %50, ptr %49, align 8 + %51 = ptrtoint ptr %46 to i64 + %52 = xor i64 %51, %35 + %53 = inttoptr i64 %52 to ptr + %54 = ptrtoint ptr %49 to i64 + %55 = xor i64 %54, %41 + %56 = inttoptr i64 %55 to ptr + %57 = getelementptr inbounds i8, ptr %0, i64 104 + %58 = load i32, ptr %57, align 8 + %59 = add nsw i32 %58, 2 + store i32 %59, ptr %57, align 8 + %60 = tail call ptr @Aig_And(ptr noundef nonnull %0, ptr noundef %53, ptr noundef %56) #3 + br label %61 + +61: ; preds = %2, %20 + %.0 = phi ptr [ %60, %20 ], [ null, %2 ] ret ptr %.0 } @@ -454,19 +461,19 @@ Saig_ManRetimeNodeFwd.exit.thread: ; preds = %Saig_ManRetimeNodeF %exitcond.not = icmp eq i32 %120, %1 br i1 %exitcond.not, label %.loopexit, label %.preheader70, !llvm.loop !6 -.preheaderthread-pre-split: ; preds = %179 +.preheaderthread-pre-split: ; preds = %186 %.val6189.pr = load i32, ptr %7, align 8 br label %.preheader .preheader: ; preds = %.preheader.lr.ph, %.preheaderthread-pre-split %.val6189 = phi i32 [ %.val6189.pr, %.preheaderthread-pre-split ], [ %15, %.preheader.lr.ph ] - %.293 = phi i32 [ %180, %.preheaderthread-pre-split ], [ 0, %.preheader.lr.ph ] + %.293 = phi i32 [ %187, %.preheaderthread-pre-split ], [ 0, %.preheader.lr.ph ] %121 = icmp sgt i32 %.val6189, 0 br i1 %121, label %.lr.ph91, label %.critedge2 .lr.ph91: ; preds = %.preheader, %Saig_ManRetimeNodeBwd.exit.thread %.val61119 = phi i32 [ %.val61, %Saig_ManRetimeNodeBwd.exit.thread ], [ %.val6189, %.preheader ] - %.190 = phi i32 [ %174, %Saig_ManRetimeNodeBwd.exit.thread ], [ 0, %.preheader ] + %.190 = phi i32 [ %181, %Saig_ManRetimeNodeBwd.exit.thread ], [ 0, %.preheader ] %122 = load ptr, ptr %8, align 8 %.val = load i32, ptr %9, align 4 %123 = add nsw i32 %.val, %.190 @@ -502,82 +509,89 @@ Saig_ManRetimeNodeBwd.exit: ; preds = %.lr.ph91 %142 = getelementptr i8, ptr %137, i64 8 %.val.i62 = load ptr, ptr %142, align 8 %143 = ptrtoint ptr %.val.i62 to i64 - %144 = getelementptr i8, ptr %137, i64 16 - %.val37.i = load ptr, ptr %144, align 8 - %145 = ptrtoint ptr %.val37.i to i64 - %146 = xor i64 %143, %135 - %147 = and i64 %146, 1 - %148 = xor i64 %145, %135 - %149 = and i64 %148, 1 - %150 = and i64 %135, 1 - %151 = xor i64 %150, %143 - %152 = inttoptr i64 %151 to ptr - %153 = tail call ptr @Aig_ObjCreateCo(ptr noundef nonnull %0, ptr noundef %152) #3 + %144 = and i64 %143, -2 + %145 = getelementptr i8, ptr %137, i64 16 + %.val37.i = load ptr, ptr %145, align 8 + %146 = ptrtoint ptr %.val37.i to i64 + %147 = and i64 %146, -2 + %148 = trunc i64 %143 to i32 + %149 = and i32 %148, 1 + %150 = trunc i64 %135 to i32 + %151 = and i32 %150, 1 + %152 = xor i32 %149, %151 + %153 = trunc i64 %146 to i32 + %154 = and i32 %153, 1 + %155 = xor i32 %154, %151 + %156 = zext nneg i32 %152 to i64 + %157 = or disjoint i64 %144, %156 + %158 = inttoptr i64 %157 to ptr + %159 = tail call ptr @Aig_ObjCreateCo(ptr noundef nonnull %0, ptr noundef %158) #3 %.val47.i = load i32, ptr %12, align 4 - %154 = add nsw i32 %.val47.i, -1 - store i32 %154, ptr %153, align 8 - %155 = xor i64 %150, %145 - %156 = inttoptr i64 %155 to ptr - %157 = tail call ptr @Aig_ObjCreateCo(ptr noundef nonnull %0, ptr noundef %156) #3 + %160 = add nsw i32 %.val47.i, -1 + store i32 %160, ptr %159, align 8 + %161 = zext nneg i32 %155 to i64 + %162 = or disjoint i64 %147, %161 + %163 = inttoptr i64 %162 to ptr + %164 = tail call ptr @Aig_ObjCreateCo(ptr noundef nonnull %0, ptr noundef %163) #3 %.val46.i = load i32, ptr %12, align 4 - %158 = add nsw i32 %.val46.i, -1 - store i32 %158, ptr %157, align 8 - %159 = tail call ptr @Aig_ObjCreateCi(ptr noundef nonnull %0) #3 + %165 = add nsw i32 %.val46.i, -1 + store i32 %165, ptr %164, align 8 + %166 = tail call ptr @Aig_ObjCreateCi(ptr noundef nonnull %0) #3 %.val49.i = load i32, ptr %13, align 8 - %160 = add nsw i32 %.val49.i, -1 - store i32 %160, ptr %159, align 8 - %161 = tail call ptr @Aig_ObjCreateCi(ptr noundef nonnull %0) #3 + %167 = add nsw i32 %.val49.i, -1 + store i32 %167, ptr %166, align 8 + %168 = tail call ptr @Aig_ObjCreateCi(ptr noundef nonnull %0) #3 %.val48.i = load i32, ptr %13, align 8 - %162 = add nsw i32 %.val48.i, -1 - store i32 %162, ptr %161, align 8 - %163 = ptrtoint ptr %159 to i64 - %164 = xor i64 %147, %163 - %165 = inttoptr i64 %164 to ptr - %166 = ptrtoint ptr %161 to i64 - %167 = xor i64 %149, %166 - %168 = inttoptr i64 %167 to ptr - %169 = load i32, ptr %7, align 8 - %170 = add nsw i32 %169, 2 - store i32 %170, ptr %7, align 8 - %171 = tail call ptr @Aig_And(ptr noundef nonnull %0, ptr noundef %165, ptr noundef %168) #3 - %172 = icmp eq ptr %171, null - br i1 %172, label %Saig_ManRetimeNodeBwd.exit.Saig_ManRetimeNodeBwd.exit.thread_crit_edge, label %173 + %169 = add nsw i32 %.val48.i, -1 + store i32 %169, ptr %168, align 8 + %170 = ptrtoint ptr %166 to i64 + %171 = xor i64 %170, %156 + %172 = inttoptr i64 %171 to ptr + %173 = ptrtoint ptr %168 to i64 + %174 = xor i64 %173, %161 + %175 = inttoptr i64 %174 to ptr + %176 = load i32, ptr %7, align 8 + %177 = add nsw i32 %176, 2 + store i32 %177, ptr %7, align 8 + %178 = tail call ptr @Aig_And(ptr noundef nonnull %0, ptr noundef %172, ptr noundef %175) #3 + %179 = icmp eq ptr %178, null + br i1 %179, label %Saig_ManRetimeNodeBwd.exit.Saig_ManRetimeNodeBwd.exit.thread_crit_edge, label %180 Saig_ManRetimeNodeBwd.exit.Saig_ManRetimeNodeBwd.exit.thread_crit_edge: ; preds = %Saig_ManRetimeNodeBwd.exit %.val61.pre = load i32, ptr %7, align 8 br label %Saig_ManRetimeNodeBwd.exit.thread -173: ; preds = %Saig_ManRetimeNodeBwd.exit - tail call void @Aig_ObjReplace(ptr noundef nonnull %0, ptr noundef nonnull %127, ptr noundef nonnull %171, i32 noundef 0) #3 +180: ; preds = %Saig_ManRetimeNodeBwd.exit + tail call void @Aig_ObjReplace(ptr noundef nonnull %0, ptr noundef nonnull %127, ptr noundef nonnull %178, i32 noundef 0) #3 br label %.critedge2 Saig_ManRetimeNodeBwd.exit.thread: ; preds = %Saig_ManRetimeNodeBwd.exit.Saig_ManRetimeNodeBwd.exit.thread_crit_edge, %.lr.ph91 %.val61 = phi i32 [ %.val61.pre, %Saig_ManRetimeNodeBwd.exit.Saig_ManRetimeNodeBwd.exit.thread_crit_edge ], [ %.val61119, %.lr.ph91 ] - %174 = add nuw nsw i32 %.190, 1 - %175 = icmp slt i32 %174, %.val61 - br i1 %175, label %.lr.ph91, label %.critedge2, !llvm.loop !8 - -.critedge2: ; preds = %Saig_ManRetimeNodeBwd.exit.thread, %.preheader, %173 - %.173 = phi i32 [ %.190, %173 ], [ 0, %.preheader ], [ %174, %Saig_ManRetimeNodeBwd.exit.thread ] - %176 = load ptr, ptr %14, align 8 - %177 = getelementptr i8, ptr %176, i64 4 - %.val60 = load i32, ptr %177, align 4 - %178 = icmp eq i32 %.173, %.val60 - br i1 %178, label %.loopexit, label %179 - -179: ; preds = %.critedge2 - %180 = add nuw nsw i32 %.293, 1 - %exitcond116.not = icmp eq i32 %180, %1 + %181 = add nuw nsw i32 %.190, 1 + %182 = icmp slt i32 %181, %.val61 + br i1 %182, label %.lr.ph91, label %.critedge2, !llvm.loop !8 + +.critedge2: ; preds = %Saig_ManRetimeNodeBwd.exit.thread, %.preheader, %180 + %.173 = phi i32 [ %.190, %180 ], [ 0, %.preheader ], [ %181, %Saig_ManRetimeNodeBwd.exit.thread ] + %183 = load ptr, ptr %14, align 8 + %184 = getelementptr i8, ptr %183, i64 4 + %.val60 = load i32, ptr %184, align 4 + %185 = icmp eq i32 %.173, %.val60 + br i1 %185, label %.loopexit, label %186 + +186: ; preds = %.critedge2 + %187 = add nuw nsw i32 %.293, 1 + %exitcond116.not = icmp eq i32 %187, %1 br i1 %exitcond116.not, label %.loopexit, label %.preheaderthread-pre-split, !llvm.loop !9 -.loopexit: ; preds = %.critedge, %119, %.critedge2, %179, %.preheader70.lr.ph.split.us, %.preheader.lr.ph.split.us, %20, %.preheader69 - %.150 = phi i32 [ 0, %.preheader69 ], [ 0, %20 ], [ %spec.select, %.preheader.lr.ph.split.us ], [ %spec.select133, %.preheader70.lr.ph.split.us ], [ %.293, %.critedge2 ], [ %1, %179 ], [ %.04984, %.critedge ], [ %1, %119 ] +.loopexit: ; preds = %.critedge, %119, %.critedge2, %186, %.preheader70.lr.ph.split.us, %.preheader.lr.ph.split.us, %20, %.preheader69 + %.150 = phi i32 [ 0, %.preheader69 ], [ 0, %20 ], [ %spec.select, %.preheader.lr.ph.split.us ], [ %spec.select133, %.preheader70.lr.ph.split.us ], [ %.293, %.critedge2 ], [ %1, %186 ], [ %.04984, %.critedge ], [ %1, %119 ] store i32 0, ptr %5, align 8 tail call void @Aig_ManFanoutStop(ptr noundef nonnull %0) #3 - %181 = tail call i32 @Aig_ManCleanup(ptr noundef nonnull %0) #3 - %182 = getelementptr inbounds i8, ptr %0, i64 104 - %183 = load i32, ptr %182, align 8 - tail call void @Aig_ManSetRegNum(ptr noundef nonnull %0, i32 noundef %183) #3 + %188 = tail call i32 @Aig_ManCleanup(ptr noundef nonnull %0) #3 + %189 = getelementptr inbounds i8, ptr %0, i64 104 + %190 = load i32, ptr %189, align 8 + tail call void @Aig_ManSetRegNum(ptr noundef nonnull %0, i32 noundef %190) #3 ret i32 %.150 } diff --git a/bench/abc/optimized/wlcGraft.c.ll b/bench/abc/optimized/wlcGraft.c.ll index ea1429bf08d..62574d3a43a 100644 --- a/bench/abc/optimized/wlcGraft.c.ll +++ b/bench/abc/optimized/wlcGraft.c.ll @@ -311,8 +311,8 @@ Abc_TtNot.exit.thread.us: ; preds = %.split.us Abc_TtNot.exit39.us: ; preds = %.lr.ph.i35.us, %Abc_TtNot.exit.thread.us %42 = phi i32 [ %41, %Abc_TtNot.exit.thread.us ], [ %37, %.lr.ph.i35.us ] - %43 = xor i32 %25, %32 - %44 = and i32 %43, 1 + %43 = and i32 %25, 1 + %44 = xor i32 %33, %43 %45 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %42, i32 noundef %44) %46 = load ptr, ptr @stdout, align 8 tail call void @Extra_PrintHex(ptr noundef %46, ptr noundef nonnull %30, i32 noundef 8) #19 @@ -1082,8 +1082,8 @@ Vec_MemHashLookup.exit: ; preds = %75, %.lr.ph.i44 %95 = sub nsw i32 %.val38, %.val39 %96 = tail call i32 @llvm.abs.i32(i32 %95, i1 true) %97 = add nuw nsw i32 %96, 1 - %98 = xor i32 %31, %38 - %99 = and i32 %98, 1 + %98 = and i32 %31, 1 + %99 = xor i32 %39, %98 %100 = tail call ptr @Wlc_ObjName(ptr noundef %0, i32 noundef %94) #19 %101 = trunc nuw nsw i64 %indvars.iv to i32 %102 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %94, i32 noundef %97, i32 noundef %101, i32 noundef %.pr, i32 noundef %99, ptr noundef %100) diff --git a/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll b/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll index 106087b8400..f8875241798 100644 --- a/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll +++ b/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll @@ -15037,13 +15037,17 @@ for.end: ; preds = %_ZN12_GLOBAL__N_110 br i1 %cmp.not.i, label %invoke.cont20, label %if.then.i if.then.i: ; preds = %for.end + %add.ptr19.idx = shl nsw i64 %erase_end.0546, 4 %shr.i.sink.i.i.i = lshr i64 %this.val.i.i, 1 - %sub.i.i = sub nsw i64 %shr.i.sink.i.i.i, %erase_end.0546 - %cmp3.not.i = icmp eq i64 %shr.i.sink.i.i.i, %erase_end.0546 + %gepdiff = sub nuw nsw i64 %add.ptr19.idx, %add.ptr.idx + %sub.ptr.div.i.i.i.i = lshr exact i64 %gepdiff, 4 + %add.i.i = add nuw nsw i64 %sub.ptr.div.i.i.i.i, %erase_begin.0547 + %sub.i.i = sub nsw i64 %shr.i.sink.i.i.i, %add.i.i + %cmp3.not.i = icmp eq i64 %shr.i.sink.i.i.i, %add.i.i br i1 %cmp3.not.i, label %.noexc81, label %for.body.i.preheader for.body.i.preheader: ; preds = %if.then.i - %add.ptr.i.i = getelementptr inbounds %"class.(anonymous namespace)::RefCounted", ptr %cond.i.i, i64 %erase_end.0546 + %add.ptr.i.i = getelementptr inbounds %"class.(anonymous namespace)::RefCounted", ptr %cond.i.i, i64 %add.i.i br label %for.body.i for.body.i: ; preds = %for.body.i.preheader, %_ZN4absl23inlined_vector_internal20IteratorValueAdapterISaIN12_GLOBAL__N_110RefCountedEESt13move_iteratorIPS3_EE10AssignNextES6_.exit.i @@ -15119,10 +15123,10 @@ _ZN4absl23inlined_vector_internal20IteratorValueAdapterISaIN12_GLOBAL__N_110RefC br i1 %exitcond.not.i, label %.noexc81, label %for.body.i, !llvm.loop !326 .noexc81: ; preds = %_ZN4absl23inlined_vector_internal20IteratorValueAdapterISaIN12_GLOBAL__N_110RefCountedEESt13move_iteratorIPS3_EE10AssignNextES6_.exit.i, %if.then.i - %sub9.i.i = sub nsw i64 %shr.i.sink.i.i.i, %sub + %sub9.i.i = sub nsw i64 %shr.i.sink.i.i.i, %sub.ptr.div.i.i.i.i %add.ptr10.i.i = getelementptr inbounds %"class.(anonymous namespace)::RefCounted", ptr %cond.i.i, i64 %sub9.i.i - call fastcc void @_ZN4absl23inlined_vector_internal14DestroyAdapterISaIN12_GLOBAL__N_110RefCountedEELb0EE15DestroyElementsERS4_PS3_m(ptr noundef %add.ptr10.i.i, i64 noundef %sub) - %shl.i.i.i = shl nuw nsw i64 %sub, 1 + call fastcc void @_ZN4absl23inlined_vector_internal14DestroyAdapterISaIN12_GLOBAL__N_110RefCountedEELb0EE15DestroyElementsERS4_PS3_m(ptr noundef %add.ptr10.i.i, i64 noundef %sub.ptr.div.i.i.i.i) + %shl.i.i.i = lshr exact i64 %gepdiff, 3 %26 = load i64, ptr %v, align 8 %sub.i.i.i = sub i64 %26, %shl.i.i.i store i64 %sub.i.i.i, ptr %v, align 8 diff --git a/bench/abseil-cpp/optimized/numbers.cc.ll b/bench/abseil-cpp/optimized/numbers.cc.ll index 41e8e81bd3d..cbb9e5e2f49 100644 --- a/bench/abseil-cpp/optimized/numbers.cc.ll +++ b/bench/abseil-cpp/optimized/numbers.cc.ll @@ -1288,9 +1288,10 @@ sw.bb41: ; preds = %_ZN4abslL10SplitToS store i24 %exp_dig.sroa.0.sroa.10.0.extract.trunc, ptr %arrayidx22, align 1 %add.ptr43 = getelementptr inbounds i8, ptr %out.1, i64 4 %retval.sroa.4.8.insert.ext.i = lshr i32 %conv4.i106.i, 8 + %exp_dig.sroa.14.9.extract.shift143 = and i32 %retval.sroa.4.8.insert.ext.i, 255 %exp_dig.sroa.14.9.extract.trunc144 = trunc i32 %retval.sroa.4.8.insert.ext.i to i8 - %exp_dig.sroa.14.9.extract.shift143176 = or i32 %retval.sroa.4.8.insert.ext.i, %add.i105.i - %conv45171.mask = and i32 %exp_dig.sroa.14.9.extract.shift143176, 255 + %add.i105.i.masked = and i32 %add.i105.i, 255 + %conv45171.mask = or i32 %exp_dig.sroa.14.9.extract.shift143, %add.i105.i.masked %cmp48.not = icmp eq i32 %conv45171.mask, 48 br i1 %cmp48.not, label %if.end60, label %if.then49 @@ -1300,8 +1301,7 @@ if.then49: ; preds = %sw.bb41 store i8 46, ptr %add.ptr43, align 1 %incdec.ptr52 = getelementptr inbounds i8, ptr %out.1, i64 6 store i8 %exp_dig.sroa.14.8.extract.trunc138, ptr %incdec.ptr50, align 1 - %15 = and i32 %conv4.i106.i, 65280 - %cmp55.not = icmp eq i32 %15, 12288 + %cmp55.not = icmp eq i32 %exp_dig.sroa.14.9.extract.shift143, 48 br i1 %cmp55.not, label %if.end60, label %if.then56 if.then56: ; preds = %if.then49 @@ -1336,8 +1336,8 @@ sw.bb64: ; preds = %_ZN4abslL10SplitToS while.cond: ; preds = %while.cond, %sw.bb64 %out.7 = phi ptr [ %add.ptr69, %sw.bb64 ], [ %arrayidx70, %while.cond ] %arrayidx70 = getelementptr inbounds i8, ptr %out.7, i64 -1 - %16 = load i8, ptr %arrayidx70, align 1 - switch i8 %16, label %if.end79.loopexit [ + %15 = load i8, ptr %arrayidx70, align 1 + switch i8 %15, label %if.end79.loopexit [ i8 48, label %while.cond i8 46, label %if.end79 ] @@ -1371,8 +1371,8 @@ sw.bb83: ; preds = %_ZN4abslL10SplitToS while.cond89: ; preds = %while.cond89, %sw.bb83 %out.9 = phi ptr [ %add.ptr88, %sw.bb83 ], [ %arrayidx90, %while.cond89 ] %arrayidx90 = getelementptr inbounds i8, ptr %out.9, i64 -1 - %17 = load i8, ptr %arrayidx90, align 1 - switch i8 %17, label %if.end101.loopexit [ + %16 = load i8, ptr %arrayidx90, align 1 + switch i8 %16, label %if.end101.loopexit [ i8 48, label %while.cond89 i8 46, label %if.end101 ] @@ -1401,8 +1401,8 @@ sw.bb105: ; preds = %_ZN4abslL10SplitToS while.cond111: ; preds = %while.cond111, %sw.bb105 %out.11 = phi ptr [ %add.ptr110, %sw.bb105 ], [ %arrayidx112, %while.cond111 ] %arrayidx112 = getelementptr inbounds i8, ptr %out.11, i64 -1 - %18 = load i8, ptr %arrayidx112, align 1 - switch i8 %18, label %if.end123.loopexit [ + %17 = load i8, ptr %arrayidx112, align 1 + switch i8 %17, label %if.end123.loopexit [ i8 48, label %while.cond111 i8 46, label %if.end123 ] @@ -1452,8 +1452,8 @@ sw.bb136: ; preds = %sw.bb133, %_ZN4absl while.cond140: ; preds = %while.cond140, %sw.bb136 %out.13 = phi ptr [ %add.ptr139, %sw.bb136 ], [ %arrayidx141, %while.cond140 ] %arrayidx141 = getelementptr inbounds i8, ptr %out.13, i64 -1 - %19 = load i8, ptr %arrayidx141, align 1 - %cmp143 = icmp eq i8 %19, 48 + %18 = load i8, ptr %arrayidx141, align 1 + %cmp143 = icmp eq i8 %18, 48 br i1 %cmp143, label %while.cond140, label %while.end146, !llvm.loop !5 while.end146: ; preds = %while.cond140 @@ -1476,8 +1476,8 @@ sw.epilog: ; preds = %_ZN4abslL10SplitToS while.cond155: ; preds = %while.cond155, %sw.epilog %out.14 = phi ptr [ %add.ptr154, %sw.epilog ], [ %arrayidx156, %while.cond155 ] %arrayidx156 = getelementptr inbounds i8, ptr %out.14, i64 -1 - %20 = load i8, ptr %arrayidx156, align 1 - switch i8 %20, label %if.end167.loopexit [ + %19 = load i8, ptr %arrayidx156, align 1 + switch i8 %19, label %if.end167.loopexit [ i8 48, label %while.cond155 i8 46, label %if.end167 ] @@ -1491,35 +1491,35 @@ if.end167: ; preds = %while.cond155, %if. store i8 101, ptr %out.15, align 1 %cmp169 = icmp sgt i32 %spec.select81.i, 0 %spec.select = select i1 %cmp169, i8 43, i8 45 - %spec.select205 = tail call i32 @llvm.abs.i32(i32 %spec.select81.i, i1 true) + %spec.select206 = tail call i32 @llvm.abs.i32(i32 %spec.select81.i, i1 true) store i8 %spec.select, ptr %incdec.ptr168, align 1 %out.16 = getelementptr inbounds i8, ptr %out.15, i64 2 - %cmp174 = icmp ugt i32 %spec.select205, 99 + %cmp174 = icmp ugt i32 %spec.select206, 99 br i1 %cmp174, label %if.then175, label %if.end181 if.then175: ; preds = %if.end167 - %div = udiv i32 %spec.select205, 100 + %div = udiv i32 %spec.select206, 100 %mul.neg = mul nsw i32 %div, -100 - %sub176 = add nsw i32 %mul.neg, %spec.select205 - %21 = trunc i32 %div to i8 - %conv179 = add i8 %21, 48 + %sub176 = add nsw i32 %mul.neg, %spec.select206 + %20 = trunc i32 %div to i8 + %conv179 = add i8 %20, 48 %incdec.ptr180 = getelementptr inbounds i8, ptr %out.15, i64 3 store i8 %conv179, ptr %out.16, align 1 br label %if.end181 if.end181: ; preds = %if.then175, %if.end167 %out.17 = phi ptr [ %incdec.ptr180, %if.then175 ], [ %out.16, %if.end167 ] - %exp.1 = phi i32 [ %sub176, %if.then175 ], [ %spec.select205, %if.end167 ] - %conv.i173 = zext i32 %exp.1 to i64 - %mul.i174 = mul nuw nsw i64 %conv.i173, 103 - %div4.i = lshr i64 %mul.i174, 10 + %exp.1 = phi i32 [ %sub176, %if.then175 ], [ %spec.select206, %if.end167 ] + %conv.i174 = zext i32 %exp.1 to i64 + %mul.i175 = mul nuw nsw i64 %conv.i174, 103 + %div4.i = lshr i64 %mul.i175, 10 %conv1.i = trunc nuw nsw i64 %div4.i to i32 %mul2.neg.i = mul i32 %conv1.i, 246 %sub.i = add i32 %mul2.neg.i, %exp.1 - %shl.i175 = shl i32 %sub.i, 8 - %add.i = add i32 %shl.i175, %conv1.i - %22 = trunc i32 %add.i to i16 - %conv4.i = add i16 %22, 12336 + %shl.i176 = shl i32 %sub.i, 8 + %add.i = add i32 %shl.i176, %conv1.i + %21 = trunc i32 %add.i to i16 + %conv4.i = add i16 %21, 12336 store i16 %conv4.i, ptr %out.17, align 1 %add.ptr182 = getelementptr inbounds i8, ptr %out.17, i64 2 store i8 0, ptr %add.ptr182, align 1 diff --git a/bench/actix-rs/optimized/1ghd7r3h0kcgux6d.ll b/bench/actix-rs/optimized/1ghd7r3h0kcgux6d.ll index a7376253ca5..439be761903 100644 --- a/bench/actix-rs/optimized/1ghd7r3h0kcgux6d.ll +++ b/bench/actix-rs/optimized/1ghd7r3h0kcgux6d.ll @@ -12993,11 +12993,11 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZN6brotli3enc6encode31Brotl cleanup br label %51 -.loopexit.split-lp: ; preds = %.invoke209, %.invoke, %58, %.noexc, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit", %.noexc96, %84, %.noexc100, %86, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit105", %.noexc107, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit113", %248, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit122" - %.sroa.17.0.ph = phi i64 [ %44, %58 ], [ %44, %.noexc ], [ %44, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit" ], [ %44, %.noexc96 ], [ %44, %86 ], [ %44, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit113" ], [ %44, %84 ], [ %44, %.noexc100 ], [ %44, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit105" ], [ %44, %.noexc107 ], [ %.sroa.17.1, %248 ], [ %.sroa.17.1, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit122" ], [ %.sroa.17.1, %.invoke ], [ %.sroa.17.1, %.invoke209 ] - %.sroa.0152.0.ph = phi ptr [ %42, %58 ], [ %42, %.noexc ], [ %42, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit" ], [ %42, %.noexc96 ], [ %42, %86 ], [ %42, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit113" ], [ %42, %84 ], [ %42, %.noexc100 ], [ %42, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit105" ], [ %42, %.noexc107 ], [ %.sroa.0152.1, %248 ], [ %.sroa.0152.1, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit122" ], [ %.sroa.0152.1, %.invoke ], [ %.sroa.0152.1, %.invoke209 ] - %.sroa.18.1.ph = phi i64 [ %35, %58 ], [ %35, %.noexc ], [ %35, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit" ], [ %35, %.noexc96 ], [ %35, %86 ], [ %111, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit113" ], [ %35, %84 ], [ %35, %.noexc100 ], [ %93, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit105" ], [ %93, %.noexc107 ], [ 131072, %248 ], [ %255, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit122" ], [ %.sroa.18.2, %.invoke ], [ %.sroa.18.2, %.invoke209 ] - %.sroa.0.1.ph = phi ptr [ %33, %58 ], [ %33, %.noexc ], [ %33, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit" ], [ %33, %.noexc96 ], [ %33, %86 ], [ %110, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit113" ], [ %33, %84 ], [ %33, %.noexc100 ], [ %91, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit105" ], [ %91, %.noexc107 ], [ %.sroa.0.2, %248 ], [ %253, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit122" ], [ %.sroa.0.2, %.invoke ], [ %.sroa.0.2, %.invoke209 ] +.loopexit.split-lp: ; preds = %.invoke208, %.invoke, %58, %.noexc, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit", %.noexc96, %84, %.noexc100, %86, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit105", %.noexc107, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit113", %248, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit122" + %.sroa.17.0.ph = phi i64 [ %44, %58 ], [ %44, %.noexc ], [ %44, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit" ], [ %44, %.noexc96 ], [ %44, %86 ], [ %44, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit113" ], [ %44, %84 ], [ %44, %.noexc100 ], [ %44, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit105" ], [ %44, %.noexc107 ], [ %.sroa.17.1, %248 ], [ %.sroa.17.1, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit122" ], [ %.sroa.17.1, %.invoke ], [ %.sroa.17.1, %.invoke208 ] + %.sroa.0152.0.ph = phi ptr [ %42, %58 ], [ %42, %.noexc ], [ %42, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit" ], [ %42, %.noexc96 ], [ %42, %86 ], [ %42, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit113" ], [ %42, %84 ], [ %42, %.noexc100 ], [ %42, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit105" ], [ %42, %.noexc107 ], [ %.sroa.0152.1, %248 ], [ %.sroa.0152.1, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit122" ], [ %.sroa.0152.1, %.invoke ], [ %.sroa.0152.1, %.invoke208 ] + %.sroa.18.1.ph = phi i64 [ %35, %58 ], [ %35, %.noexc ], [ %35, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit" ], [ %35, %.noexc96 ], [ %35, %86 ], [ %111, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit113" ], [ %35, %84 ], [ %35, %.noexc100 ], [ %93, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit105" ], [ %93, %.noexc107 ], [ 131072, %248 ], [ %255, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit122" ], [ %.sroa.18.2, %.invoke ], [ %.sroa.18.2, %.invoke208 ] + %.sroa.0.1.ph = phi ptr [ %33, %58 ], [ %33, %.noexc ], [ %33, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit" ], [ %33, %.noexc96 ], [ %33, %86 ], [ %110, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit113" ], [ %33, %84 ], [ %33, %.noexc100 ], [ %91, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit105" ], [ %91, %.noexc107 ], [ %.sroa.0.2, %248 ], [ %253, %"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u32$GT$$GT$17hf83d25d7f5021de7E.exit122" ], [ %.sroa.0.2, %.invoke ], [ %.sroa.0.2, %.invoke208 ] %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %51 @@ -13230,55 +13230,57 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZN6brotli3enc6encode31Brotl %142 = getelementptr inbounds i8, ptr %10, i64 8 %143 = getelementptr inbounds i8, ptr %0, i64 120 %144 = getelementptr inbounds i8, ptr %0, i64 124 - %145 = add i8 %1, -1 - %.052168 = icmp ult i8 %145, 2 - %spec.select = select i1 %129, i32 2, i32 1 br label %.backedge .backedge: ; preds = %.backedge.backedge, %"_ZN4core3ptr64drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u8$GT$$GT$17hdf879f8b599eb5ffE.exit111" - %146 = invoke fastcc noundef i32 @_ZN6brotli3enc6encode23InjectFlushOrPushOutput17h1d79dc163e9203f6E(ptr noalias noundef nonnull align 8 dereferenceable(5576) %0, ptr noalias noundef nonnull align 8 dereferenceable(8) %6, ptr noalias noundef nonnull align 1 %7, i64 noundef %8, ptr noalias noundef nonnull align 8 dereferenceable(8) %9, ptr noalias noundef nonnull align 8 dereferenceable(16) %10) - to label %147 unwind label %.loopexit - -147: ; preds = %.backedge - %148 = icmp eq i32 %146, 0 - br i1 %148, label %149, label %.backedge.backedge - -149: ; preds = %147 - %150 = load i64, ptr %126, align 8, !noundef !12 - %151 = icmp eq i64 %150, 0 - %152 = load i32, ptr %127, align 8, !range !1067 - %153 = icmp eq i32 %152, 0 - %or.cond188 = select i1 %151, i1 %153, i1 false - br i1 %or.cond188, label %154, label %243 - -154: ; preds = %149 - %155 = load i64, ptr %2, align 8, !noundef !12 - %156 = icmp eq i64 %155, 0 - %or.cond79 = and i1 %128, %156 - br i1 %or.cond79, label %243, label %157 - -157: ; preds = %154 - %.0.sroa.speculated.i118 = call noundef i64 @llvm.umin.i64(i64 %28, i64 %155) - %158 = icmp ule i64 %155, %28 - %.052 = and i1 %129, %158 - %159 = shl i64 %.0.sroa.speculated.i118, 1 - %160 = add i64 %159, 503 + %145 = invoke fastcc noundef i32 @_ZN6brotli3enc6encode23InjectFlushOrPushOutput17h1d79dc163e9203f6E(ptr noalias noundef nonnull align 8 dereferenceable(5576) %0, ptr noalias noundef nonnull align 8 dereferenceable(8) %6, ptr noalias noundef nonnull align 1 %7, i64 noundef %8, ptr noalias noundef nonnull align 8 dereferenceable(8) %9, ptr noalias noundef nonnull align 8 dereferenceable(16) %10) + to label %146 unwind label %.loopexit + +146: ; preds = %.backedge + %147 = icmp eq i32 %145, 0 + br i1 %147, label %148, label %.backedge.backedge + +148: ; preds = %146 + %149 = load i64, ptr %126, align 8, !noundef !12 + %150 = icmp eq i64 %149, 0 + %151 = load i32, ptr %127, align 8, !range !1067 + %152 = icmp eq i32 %151, 0 + %or.cond187 = select i1 %150, i1 %152, i1 false + br i1 %or.cond187, label %153, label %243 + +153: ; preds = %148 + %154 = load i64, ptr %2, align 8, !noundef !12 + %155 = icmp eq i64 %154, 0 + %or.cond79 = and i1 %128, %155 + br i1 %or.cond79, label %243, label %156 + +156: ; preds = %153 + %.0.sroa.speculated.i118 = call noundef i64 @llvm.umin.i64(i64 %28, i64 %154) + %157 = icmp ule i64 %154, %28 + %.052 = and i1 %129, %157 + %.051 = and i1 %130, %157 + %158 = shl i64 %.0.sroa.speculated.i118, 1 + %159 = add i64 %158, 503 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) - %161 = load i8, ptr %131, align 2, !noundef !12 - %162 = zext i8 %161 to i64 - store i64 %162, ptr %23, align 8 + %160 = load i8, ptr %131, align 2, !noundef !12 + %161 = zext i8 %160 to i64 + store i64 %161, ptr %23, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) store i64 0, ptr %22, align 8 - %or.cond = and i1 %130, %156 - br i1 %or.cond, label %.sink.split, label %163 + %or.cond = and i1 %130, %155 + br i1 %or.cond, label %.sink.split, label %162 -163: ; preds = %157 - %164 = load i64, ptr %6, align 8, !noundef !12 - %.not = icmp ugt i64 %160, %164 +162: ; preds = %156 + %163 = load i64, ptr %6, align 8, !noundef !12 + %.not = icmp ugt i64 %159, %163 br i1 %.not, label %166, label %167 -.sink.split: ; preds = %condstore.split, %157 - %spec.select.sink = phi i32 [ 1, %157 ], [ %spec.select, %condstore.split ] +164: ; preds = %condstore.split + %spec.select = select i1 %.052, i32 2, i32 1 + br label %.sink.split + +.sink.split: ; preds = %156, %164 + %spec.select.sink = phi i32 [ %spec.select, %164 ], [ 1, %156 ] store i32 %spec.select.sink, ptr %127, align 8 br label %165 @@ -13287,14 +13289,14 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZN6brotli3enc6encode31Brotl call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) br label %.backedge.backedge -.backedge.backedge: ; preds = %165, %147 +.backedge.backedge: ; preds = %165, %146 br label %.backedge -166: ; preds = %163 - invoke fastcc void @_ZN6brotli3enc6encode16GetBrotliStorage17h0ba27b2cd3f7f165E(ptr noalias noundef nonnull align 8 dereferenceable(5576) %0, i64 noundef %160) +166: ; preds = %162 + invoke fastcc void @_ZN6brotli3enc6encode16GetBrotliStorage17h0ba27b2cd3f7f165E(ptr noalias noundef nonnull align 8 dereferenceable(5576) %0, i64 noundef %159) to label %170 unwind label %.loopexit -167: ; preds = %163 +167: ; preds = %162 %168 = load i64, ptr %9, align 8, !noundef !12 %169 = icmp ugt i64 %168, %8 br i1 %169, label %.invoke, label %172 @@ -13308,7 +13310,7 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZN6brotli3enc6encode31Brotl %.sroa.8.0 = phi i64 [ %173, %172 ], [ %.val82, %170 ] %.sroa.0.0 = phi ptr [ %174, %172 ], [ %.val81, %170 ] %.not73 = icmp eq i64 %.sroa.8.0, 0 - br i1 %.not73, label %.invoke209, label %178, !prof !540 + br i1 %.not73, label %.invoke208, label %178, !prof !540 172: ; preds = %167 %173 = sub nuw i64 %8, %168 @@ -13330,16 +13332,16 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZN6brotli3enc6encode31Brotl %180 = trunc i16 %179 to i8 store i8 %180, ptr %.sroa.0.0, align 1 %.not74 = icmp eq i64 %.sroa.8.0, 1 - br i1 %.not74, label %.invoke209, label %184, !prof !540 + br i1 %.not74, label %.invoke208, label %184, !prof !540 -.invoke209: ; preds = %229, %226, %178, %171 +.invoke208: ; preds = %229, %226, %178, %171 %181 = phi i64 [ 0, %171 ], [ 1, %178 ], [ %211, %226 ], [ %230, %229 ] %182 = phi i64 [ 0, %171 ], [ 1, %178 ], [ %.sroa.8.0, %226 ], [ %.sroa.8.0, %229 ] %183 = phi ptr [ @anon.e9f42dff1fd369047582a93c3ee51670.149, %171 ], [ @anon.e9f42dff1fd369047582a93c3ee51670.150, %178 ], [ @anon.e9f42dff1fd369047582a93c3ee51670.152, %226 ], [ @anon.e9f42dff1fd369047582a93c3ee51670.153, %229 ] invoke void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %181, i64 noundef %182, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %183) #21 - to label %.cont210 unwind label %.loopexit.split-lp + to label %.cont209 unwind label %.loopexit.split-lp -.cont210: ; preds = %.invoke209 +.cont209: ; preds = %.invoke208 unreachable 184: ; preds = %178 @@ -13416,7 +13418,7 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZN6brotli3enc6encode31Brotl 226: ; preds = %228, %218, %217 %227 = icmp ult i64 %211, %.sroa.8.0 - br i1 %227, label %229, label %.invoke209, !prof !278 + br i1 %227, label %229, label %.invoke208, !prof !278 228: ; preds = %218 store i64 %224, ptr %142, align 8 @@ -13425,7 +13427,7 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZN6brotli3enc6encode31Brotl 229: ; preds = %226 %230 = add nuw nsw i64 %211, 1 %231 = icmp ult i64 %230, %.sroa.8.0 - br i1 %231, label %condstore.split, label %.invoke209, !prof !278 + br i1 %231, label %condstore.split, label %.invoke208, !prof !278 condstore.split: ; preds = %229 %232 = getelementptr inbounds [0 x i8], ptr %.sroa.0.0, i64 0, i64 %211 @@ -13440,10 +13442,10 @@ condstore.split: ; preds = %229 %240 = trunc i64 %210 to i8 %241 = and i8 %240, 7 store i8 %241, ptr %131, align 2 - %242 = and i1 %.052168, %158 - br i1 %242, label %.sink.split, label %165 + %242 = or i1 %.051, %.052 + br i1 %242, label %164, label %165 -243: ; preds = %149, %154 +243: ; preds = %148, %153 switch i64 %.sroa.18.2, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14998522591088738574.exit.i.i.i.i" [ i64 131072, label %244 i64 0, label %"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$9free_cell17h36581598870c7262E.exit" diff --git a/bench/actix-rs/optimized/2l54a10og4z99516.ll b/bench/actix-rs/optimized/2l54a10og4z99516.ll index e6c76c4e589..8c066c63b03 100644 --- a/bench/actix-rs/optimized/2l54a10og4z99516.ll +++ b/bench/actix-rs/optimized/2l54a10og4z99516.ll @@ -329,8 +329,8 @@ define hidden { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u %16 = shl i64 %1, 3 %17 = add i64 %16, -8 call void @llvm.memset.p0.i64(ptr align 4 %14, i8 0, i64 %17, i1 false) - %18 = add i64 %13, %1 - %19 = shl i64 %18, 3 + %18 = shl i64 %13, 3 + %19 = add i64 %18, %16 %20 = add i64 %19, -8 %scevgep = getelementptr i8, ptr %12, i64 %20 %21 = add i64 %1, -1 @@ -829,8 +829,8 @@ define hidden { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u %16 = shl i64 %1, 5 %17 = add i64 %16, -32 call void @llvm.memset.p0.i64(ptr align 2 %14, i8 0, i64 %17, i1 false) - %18 = add i64 %13, %1 - %19 = shl i64 %18, 5 + %18 = shl i64 %13, 5 + %19 = add i64 %18, %16 %20 = add i64 %19, -32 %scevgep = getelementptr i8, ptr %12, i64 %20 %21 = add i64 %1, -1 @@ -1319,8 +1319,8 @@ define hidden { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u %16 = shl i64 %1, 4 %17 = add i64 %16, -16 call void @llvm.memset.p0.i64(ptr align 4 %14, i8 0, i64 %17, i1 false) - %18 = add i64 %13, %1 - %19 = shl i64 %18, 4 + %18 = shl i64 %13, 4 + %19 = add i64 %18, %16 %20 = add i64 %19, -16 %scevgep = getelementptr i8, ptr %12, i64 %20 %21 = add i64 %1, -1 diff --git a/bench/arrow/optimized/array_nested.cc.ll b/bench/arrow/optimized/array_nested.cc.ll index 21f004f435e..589010d75c2 100644 --- a/bench/arrow/optimized/array_nested.cc.ll +++ b/bench/arrow/optimized/array_nested.cc.ll @@ -39895,8 +39895,8 @@ lpad16.i: ; preds = %_ZNSt10shared_ptrIN if.end18.i: ; preds = %invoke.cont9.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %non_null_fragments.i, i8 0, i64 24, i1 false), !noalias !366 - %cmp19229.i = icmp sgt i64 %1, 0 - br i1 %cmp19229.i, label %while.cond20.preheader.lr.ph.i, label %while.end41.i + %cmp19228.i = icmp sgt i64 %1, 0 + br i1 %cmp19228.i, label %while.cond20.preheader.lr.ph.i, label %while.end41.i while.cond20.preheader.lr.ph.i: ; preds = %if.end18.i %null_bitmap_data_.i.i = getelementptr inbounds i8, ptr %this, i64 24 @@ -39907,7 +39907,7 @@ while.cond20.preheader.lr.ph.i: ; preds = %if.end18.i br label %while.cond20.preheader.i while.cond20.preheader.i: ; preds = %if.end40.i, %while.cond20.preheader.lr.ph.i - %valid_begin.0230.i = phi i64 [ 0, %while.cond20.preheader.lr.ph.i ], [ %add.i, %if.end40.i ] + %valid_begin.0229.i = phi i64 [ 0, %while.cond20.preheader.lr.ph.i ], [ %add.i, %if.end40.i ] %35 = load ptr, ptr %null_bitmap_data_.i.i, align 8, !noalias !366 %36 = icmp eq ptr %35, null br i1 %36, label %land.rhs.i, label %while.cond20.preheader.split.us.i @@ -39919,13 +39919,13 @@ while.cond20.preheader.split.us.i: ; preds = %while.cond20.prehea %39 = load i32, ptr %list_size_.i89.i, align 8, !noalias !366 %.fr.i = freeze i32 %39 %cmp27.us.i = icmp eq i32 %.fr.i, 0 - %40 = add nsw i64 %valid_begin.0230.i, 1 - %smax235.i = call i64 @llvm.smax.i64(i64 %1, i64 %40) + %40 = add nsw i64 %valid_begin.0229.i, 1 + %smax234.i = call i64 @llvm.smax.i64(i64 %1, i64 %40) br i1 %cmp27.us.i, label %while.end.i, label %land.rhs.us.i land.rhs.us.i: ; preds = %while.cond20.preheader.split.us.i, %while.body28.us.i - %valid_end.0226.us.i = phi i64 [ %inc.us.i, %while.body28.us.i ], [ %valid_begin.0230.i, %while.cond20.preheader.split.us.i ] - %add.i84.us.i = add nsw i64 %valid_end.0226.us.i, %38 + %valid_end.0225.us.i = phi i64 [ %inc.us.i, %while.body28.us.i ], [ %valid_begin.0229.i, %while.cond20.preheader.split.us.i ] + %add.i84.us.i = add nsw i64 %valid_end.0225.us.i, %38 %shr.i.i.us.i = lshr i64 %add.i84.us.i, 3 %arrayidx.i.i.us.i = getelementptr inbounds i8, ptr %35, i64 %shr.i.i.us.i %41 = load i8, ptr %arrayidx.i.i.us.i, align 1 @@ -39938,8 +39938,8 @@ land.rhs.us.i: ; preds = %while.cond20.prehea br i1 %tobool.i.i.not.us.i, label %while.end.i, label %while.body28.us.i while.body28.us.i: ; preds = %land.rhs.us.i - %inc.us.i = add i64 %valid_end.0226.us.i, 1 - %exitcond.not = icmp eq i64 %inc.us.i, %smax235.i + %inc.us.i = add i64 %valid_end.0225.us.i, 1 + %exitcond.not = icmp eq i64 %inc.us.i, %smax234.i br i1 %exitcond.not, label %while.end.i, label %land.rhs.us.i, !llvm.loop !369 land.rhsthread-pre-split.i: ; preds = %while.body28.i @@ -39948,7 +39948,7 @@ land.rhsthread-pre-split.i: ; preds = %while.body28.i land.rhs.i: ; preds = %while.cond20.preheader.i, %land.rhsthread-pre-split.i %45 = phi ptr [ %.pr.i, %land.rhsthread-pre-split.i ], [ null, %while.cond20.preheader.i ] - %valid_end.0226.i = phi i64 [ %inc.i, %land.rhsthread-pre-split.i ], [ %valid_begin.0230.i, %while.cond20.preheader.i ] + %valid_end.0225.i = phi i64 [ %inc.i, %land.rhsthread-pre-split.i ], [ %valid_begin.0229.i, %while.cond20.preheader.i ] %cmp.not.i.i = icmp eq ptr %45, null %46 = load ptr, ptr %data_.i.i, align 8, !noalias !366 br i1 %cmp.not.i.i, label %if.end.i.i, label %if.then.i.i @@ -39956,7 +39956,7 @@ land.rhs.i: ; preds = %while.cond20.prehea if.then.i.i: ; preds = %land.rhs.i %offset.i83.i = getelementptr inbounds i8, ptr %46, i64 32 %47 = load i64, ptr %offset.i83.i, align 8 - %add.i84.i = add nsw i64 %47, %valid_end.0226.i + %add.i84.i = add nsw i64 %47, %valid_end.0225.i %shr.i.i.i = lshr i64 %add.i84.i, 3 %arrayidx.i.i.i = getelementptr inbounds i8, ptr %45, i64 %shr.i.i.i %48 = load i8, ptr %arrayidx.i.i.i, align 1 @@ -39979,21 +39979,21 @@ if.end.i.i: ; preds = %land.rhs.i ] if.then6.i.i: ; preds = %if.end.i.i - %call9.i86.i = invoke noundef zeroext i1 @_ZN5arrow8internal17IsNullSparseUnionERKNS_9ArrayDataEl(ptr noundef nonnull align 8 dereferenceable(104) %46, i64 noundef %valid_end.0226.i) + %call9.i86.i = invoke noundef zeroext i1 @_ZN5arrow8internal17IsNullSparseUnionERKNS_9ArrayDataEl(ptr noundef nonnull align 8 dereferenceable(104) %46, i64 noundef %valid_end.0225.i) to label %call9.i.noexc.i unwind label %lpad22.loopexit.i call9.i.noexc.i: ; preds = %if.then6.i.i br i1 %call9.i86.i, label %lor.rhs.i, label %while.body28.i if.then13.i.i: ; preds = %if.end.i.i - %call16.i87.i = invoke noundef zeroext i1 @_ZN5arrow8internal16IsNullDenseUnionERKNS_9ArrayDataEl(ptr noundef nonnull align 8 dereferenceable(104) %46, i64 noundef %valid_end.0226.i) + %call16.i87.i = invoke noundef zeroext i1 @_ZN5arrow8internal16IsNullDenseUnionERKNS_9ArrayDataEl(ptr noundef nonnull align 8 dereferenceable(104) %46, i64 noundef %valid_end.0225.i) to label %call16.i.noexc.i unwind label %lpad22.loopexit.i call16.i.noexc.i: ; preds = %if.then13.i.i br i1 %call16.i87.i, label %lor.rhs.i, label %while.body28.i if.then21.i.i: ; preds = %if.end.i.i - %call24.i88.i = invoke noundef zeroext i1 @_ZN5arrow8internal19IsNullRunEndEncodedERKNS_9ArrayDataEl(ptr noundef nonnull align 8 dereferenceable(104) %46, i64 noundef %valid_end.0226.i) + %call24.i88.i = invoke noundef zeroext i1 @_ZN5arrow8internal19IsNullRunEndEncodedERKNS_9ArrayDataEl(ptr noundef nonnull align 8 dereferenceable(104) %46, i64 noundef %valid_end.0225.i) to label %call24.i.noexc.i unwind label %lpad22.loopexit.i call24.i.noexc.i: ; preds = %if.then21.i.i @@ -40014,7 +40014,7 @@ lor.rhs.i: ; preds = %invoke.cont23.i, %c br i1 %cmp27.i, label %while.body28.i, label %while.end.i while.body28.i: ; preds = %lor.rhs.i, %invoke.cont23.i, %call24.i.noexc.i, %call16.i.noexc.i, %call9.i.noexc.i, %if.then.i.i - %inc.i = add nsw i64 %valid_end.0226.i, 1 + %inc.i = add nsw i64 %valid_end.0225.i, 1 %cmp21.i = icmp slt i64 %inc.i, %1 br i1 %cmp21.i, label %land.rhsthread-pre-split.i, label %while.end.i, !llvm.loop !370 @@ -40024,18 +40024,18 @@ lpad22.loopexit.i: ; preds = %if.then21.i.i, %if. br label %ehcleanup.i lpad22.loopexit.split-lp.loopexit.i: ; preds = %if.then30.i - %lpad.loopexit222.i = landingpad { ptr, i32 } + %lpad.loopexit221.i = landingpad { ptr, i32 } cleanup br label %ehcleanup.i lpad22.loopexit.split-lp.loopexit.split-lp.i: ; preds = %if.end55.i - %lpad.loopexit.split-lp223.i = landingpad { ptr, i32 } + %lpad.loopexit.split-lp222.i = landingpad { ptr, i32 } cleanup br label %ehcleanup.i while.end.i: ; preds = %while.body28.us.i, %land.rhs.us.i, %while.body28.i, %lor.rhs.i, %while.cond20.preheader.split.us.i - %.us-phi.i = phi i64 [ %smax235.i, %while.cond20.preheader.split.us.i ], [ %valid_end.0226.i, %lor.rhs.i ], [ %inc.i, %while.body28.i ], [ %smax235.i, %while.body28.us.i ], [ %valid_end.0226.us.i, %land.rhs.us.i ] - %cmp29.i = icmp slt i64 %valid_begin.0230.i, %.us-phi.i + %.us-phi.i = phi i64 [ %smax234.i, %while.cond20.preheader.split.us.i ], [ %valid_end.0225.i, %lor.rhs.i ], [ %inc.i, %while.body28.i ], [ %smax234.i, %while.body28.us.i ], [ %valid_end.0225.us.i, %land.rhs.us.i ] + %cmp29.i = icmp slt i64 %valid_begin.0229.i, %.us-phi.i br i1 %cmp29.i, label %if.then30.i, label %if.end40.i if.then30.i: ; preds = %while.end.i @@ -40043,13 +40043,13 @@ if.then30.i: ; preds = %while.end.i %59 = load ptr, ptr %data_.i.i, align 8, !noalias !366 %offset.i91.i = getelementptr inbounds i8, ptr %59, i64 32 %60 = load i64, ptr %offset.i91.i, align 8 - %add.i92.i = add nsw i64 %60, %valid_begin.0230.i + %add.i92.i = add nsw i64 %60, %valid_begin.0229.i %61 = load i32, ptr %list_size_.i89.i, align 8, !noalias !366 %conv.i94.i = sext i32 %61 to i64 %mul.i95.i = mul nsw i64 %add.i92.i, %conv.i94.i %add.i98.i = add nsw i64 %60, %.us-phi.i - %mul.i101221.i = sub i64 %add.i98.i, %add.i92.i - %sub.i102.i = mul i64 %mul.i101221.i, %conv.i94.i + %mul.i101.i = mul nsw i64 %add.i98.i, %conv.i94.i + %sub.i102.i = sub nsw i64 %mul.i101.i, %mul.i95.i invoke void @_ZNK5arrow5Array5SliceEll(ptr nonnull sret(%"class.std::shared_ptr.0") align 8 %ref.tmp31.i, ptr noundef nonnull align 8 dereferenceable(32) %58, i64 noundef %mul.i95.i, i64 noundef %sub.i102.i) to label %invoke.cont37.i unwind label %lpad22.loopexit.split-lp.loopexit.i @@ -40163,11 +40163,11 @@ if.end40.i: ; preds = %if.end8.sink.split. while.end41.loopexit.i: ; preds = %if.end40.i %.pre.i = load ptr, ptr %_M_finish.i.i.i, align 8, !noalias !366 - %.pre236.i = load ptr, ptr %non_null_fragments.i, align 8, !noalias !366 + %.pre235.i = load ptr, ptr %non_null_fragments.i, align 8, !noalias !366 br label %while.end41.i while.end41.i: ; preds = %while.end41.loopexit.i, %if.end18.i - %79 = phi ptr [ %.pre236.i, %while.end41.loopexit.i ], [ null, %if.end18.i ] + %79 = phi ptr [ %.pre235.i, %while.end41.loopexit.i ], [ null, %if.end18.i ] %80 = phi ptr [ %.pre.i, %while.end41.loopexit.i ], [ null, %if.end18.i ] %_M_finish.i.i = getelementptr inbounds i8, ptr %non_null_fragments.i, i64 8 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %80 to i64 @@ -40423,7 +40423,7 @@ if.then.i.i.i188.i: ; preds = %invoke.cont.i.i br label %cleanup57.i ehcleanup.i: ; preds = %lpad52.i, %lpad38.i, %lpad22.loopexit.split-lp.loopexit.split-lp.i, %lpad22.loopexit.split-lp.loopexit.i, %lpad22.loopexit.i - %.pn.i = phi { ptr, i32 } [ %78, %lpad38.i ], [ %104, %lpad52.i ], [ %lpad.loopexit.i, %lpad22.loopexit.i ], [ %lpad.loopexit222.i, %lpad22.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit.split-lp223.i, %lpad22.loopexit.split-lp.loopexit.split-lp.i ] + %.pn.i = phi { ptr, i32 } [ %78, %lpad38.i ], [ %104, %lpad52.i ], [ %lpad.loopexit.i, %lpad22.loopexit.i ], [ %lpad.loopexit221.i, %lpad22.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit.split-lp222.i, %lpad22.loopexit.split-lp.loopexit.split-lp.i ] call void @_ZNSt6vectorISt10shared_ptrIN5arrow5ArrayEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %non_null_fragments.i) #19 br label %ehcleanup58.i diff --git a/bench/arrow/optimized/bridge.cc.ll b/bench/arrow/optimized/bridge.cc.ll index f5d568def32..f949d7bf299 100644 --- a/bench/arrow/optimized/bridge.cc.ll +++ b/bench/arrow/optimized/bridge.cc.ll @@ -1382,8 +1382,8 @@ for.body.preheader.i: ; preds = %if.then6.i.i.i, %if %41 = load ptr, ptr %data_.i.i, align 8 %42 = shl i64 %32, 3 %scevgep = getelementptr i8, ptr %41, i64 %42 - %43 = sub i64 %sub.ptr.div.i, %32 - %44 = shl i64 %43, 3 + %43 = shl nsw i64 %sub.ptr.div.i, 3 + %44 = sub i64 %43, %42 call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %44, i1 false) br label %_ZN5arrow8internal16StaticVectorImplIP11ArrowSchemaLm4ENS0_18SmallVectorStorageIS3_Lm4EEEE6resizeEmRKS3_.exit @@ -2208,8 +2208,8 @@ for.body.preheader.i: ; preds = %if.then6.i.i.i, %if %13 = load ptr, ptr %data_.i.i, align 8 %14 = shl i64 %4, 3 %scevgep.i = getelementptr i8, ptr %13, i64 %14 - %15 = sub i64 %spec.select, %4 - %16 = shl i64 %15, 3 + %15 = shl nsw i64 %spec.select, 3 + %16 = sub i64 %15, %14 tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i, i8 0, i64 %16, i1 false) br label %_ZN5arrow8internal16StaticVectorImplIPKvLm3ENS0_18SmallVectorStorageIS3_Lm3EEEE6resizeEm.exit @@ -2318,8 +2318,8 @@ for.body.preheader.i40: ; preds = %if.then6.i.i.i54, % %31 = load ptr, ptr %data_.i.i41, align 8 %32 = shl i64 %22, 3 %scevgep.i42 = getelementptr i8, ptr %31, i64 %32 - %33 = sub i64 %inc.c, %22 - %34 = shl i64 %33, 3 + %33 = shl nsw i64 %inc.c, 3 + %34 = sub i64 %33, %32 tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i42, i8 0, i64 %34, i1 false) br label %_ZN5arrow8internal16StaticVectorImplIPKvLm3ENS0_18SmallVectorStorageIS3_Lm3EEEE6resizeEm.exit58 @@ -2588,8 +2588,8 @@ for.body.preheader.i142: ; preds = %if.then6.i.i.i156, %73 = load ptr, ptr %data_.i.i143, align 8 %74 = mul i64 %62, 80 %scevgep = getelementptr i8, ptr %73, i64 %74 - %75 = sub i64 %sub.ptr.div.i133, %62 - %76 = mul i64 %75, 80 + %75 = mul i64 %sub.ptr.div.i133, 80 + %76 = sub i64 %75, %74 tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %76, i1 false) br label %_ZN5arrow8internal16StaticVectorImplI10ArrowArrayLm1ENS0_18SmallVectorStorageIS2_Lm1EEEE6resizeEm.exit @@ -12676,8 +12676,8 @@ for.body.preheader.i: ; preds = %if.then6.i.i.i, %if %13 = load ptr, ptr %data_.i.i, align 8 %14 = mul i64 %2, 72 %scevgep = getelementptr i8, ptr %13, i64 %14 - %15 = sub i64 %sub.ptr.div.i, %2 - %16 = mul i64 %15, 72 + %15 = mul i64 %sub.ptr.div.i, 72 + %16 = sub i64 %15, %14 tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %16, i1 false) br label %_ZN5arrow8internal16StaticVectorImplI11ArrowSchemaLm1ENS0_18SmallVectorStorageIS2_Lm1EEEE6resizeEm.exit diff --git a/bench/assimp/optimized/MDLMaterialLoader.cpp.ll b/bench/assimp/optimized/MDLMaterialLoader.cpp.ll index 8023e178cdd..a2155d2ef63 100644 --- a/bench/assimp/optimized/MDLMaterialLoader.cpp.ll +++ b/bench/assimp/optimized/MDLMaterialLoader.cpp.ll @@ -687,8 +687,8 @@ if.then12: ; preds = %if.end9, %if.end9 br i1 %cmp.not, label %if.end53, label %for.cond.preheader for.cond.preheader: ; preds = %if.then12 - %cmp22166.not = icmp eq i32 %mul52, 0 - br i1 %cmp22166.not, label %if.end53, label %for.body + %cmp22162.not = icmp eq i32 %mul52, 0 + br i1 %cmp22162.not, label %if.end53, label %for.body for.body: ; preds = %for.cond.preheader, %for.body %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.cond.preheader ] @@ -735,11 +735,11 @@ if.end53: ; preds = %if.then12, %if.end5 if.then56: ; preds = %if.end53 %shr = lshr i32 %i.1, 2 %shr57 = lshr i32 %i.1, 4 + %add = add nuw nsw i32 %shr, %shr57 %shr58 = lshr i32 %i.1, 6 - %add = add i32 %shr57, %i.1 - %add59 = add i32 %add, %shr - %mul54164 = add i32 %add59, %shr58 - %add61 = shl i32 %mul54164, 1 + %add59 = add nuw nsw i32 %add, %shr58 + %shl60 = shl nuw i32 %add59, 1 + %add61 = add i32 %shl60, %mul54 store i32 %add61, ptr %piSkip, align 4 %idx.ext62 = zext i32 %add61 to i64 %add.ptr63 = getelementptr inbounds i8, ptr %szData, i64 %idx.ext62 @@ -768,44 +768,44 @@ if.then69: ; preds = %if.else65, %if.else br i1 %cmp.not, label %if.end137, label %for.cond79.preheader for.cond79.preheader: ; preds = %if.then69 - %cmp83169.not = icmp eq i32 %mul136, 0 - br i1 %cmp83169.not, label %if.end137, label %for.body84 + %cmp83165.not = icmp eq i32 %mul136, 0 + br i1 %cmp83165.not, label %if.end137, label %for.body84 for.body84: ; preds = %for.cond79.preheader, %for.body84 - %indvars.iv185 = phi i64 [ %indvars.iv.next186, %for.body84 ], [ 0, %for.cond79.preheader ] - %arrayidx87 = getelementptr inbounds %"struct.Assimp::MDL::ARGB4", ptr %szData, i64 %indvars.iv185 + %indvars.iv181 = phi i64 [ %indvars.iv.next182, %for.body84 ], [ 0, %for.cond79.preheader ] + %arrayidx87 = getelementptr inbounds %"struct.Assimp::MDL::ARGB4", ptr %szData, i64 %indvars.iv181 %val85.sroa.0.0.copyload = load i16, ptr %arrayidx87, align 2 %val85.sroa.0.0.copyload.tr = trunc i16 %val85.sroa.0.0.copyload to i8 %conv93 = shl i8 %val85.sroa.0.0.copyload.tr, 4 %24 = load ptr, ptr %pcData, align 8 - %a97 = getelementptr inbounds %struct.aiTexel, ptr %24, i64 %indvars.iv185, i32 3 + %a97 = getelementptr inbounds %struct.aiTexel, ptr %24, i64 %indvars.iv181, i32 3 store i8 %conv93, ptr %a97, align 1 %conv104 = and i8 %val85.sroa.0.0.copyload.tr, -16 %25 = load ptr, ptr %pcData, align 8 - %r108 = getelementptr inbounds %struct.aiTexel, ptr %25, i64 %indvars.iv185, i32 2 + %r108 = getelementptr inbounds %struct.aiTexel, ptr %25, i64 %indvars.iv181, i32 2 store i8 %conv104, ptr %r108, align 1 %26 = lshr i16 %val85.sroa.0.0.copyload, 4 %27 = trunc i16 %26 to i8 %conv115 = and i8 %27, -16 %28 = load ptr, ptr %pcData, align 8 - %g119 = getelementptr inbounds %struct.aiTexel, ptr %28, i64 %indvars.iv185, i32 1 + %g119 = getelementptr inbounds %struct.aiTexel, ptr %28, i64 %indvars.iv181, i32 1 store i8 %conv115, ptr %g119, align 1 %29 = lshr i16 %val85.sroa.0.0.copyload, 8 %30 = trunc nuw i16 %29 to i8 %conv125 = and i8 %30, -16 %31 = load ptr, ptr %pcData, align 8 - %arrayidx128 = getelementptr inbounds %struct.aiTexel, ptr %31, i64 %indvars.iv185 + %arrayidx128 = getelementptr inbounds %struct.aiTexel, ptr %31, i64 %indvars.iv181 store i8 %conv125, ptr %arrayidx128, align 1 - %indvars.iv.next186 = add nuw nsw i64 %indvars.iv185, 1 + %indvars.iv.next182 = add nuw nsw i64 %indvars.iv181, 1 %32 = load i32, ptr %pcNew, align 8 %33 = load i32, ptr %mHeight71, align 4 %mul82 = mul i32 %33, %32 %34 = zext i32 %mul82 to i64 - %cmp83 = icmp ult i64 %indvars.iv.next186, %34 + %cmp83 = icmp ult i64 %indvars.iv.next182, %34 br i1 %cmp83, label %for.body84, label %if.end137.loopexit, !llvm.loop !10 if.end137.loopexit: ; preds = %for.body84 - %35 = trunc nuw i64 %indvars.iv.next186 to i32 + %35 = trunc nuw i64 %indvars.iv.next182 to i32 br label %if.end137 if.end137: ; preds = %if.then69, %if.end137.loopexit, %for.cond79.preheader @@ -817,11 +817,11 @@ if.end137: ; preds = %if.then69, %if.end1 if.then140: ; preds = %if.end137 %shr141 = lshr i32 %i76.1, 2 %shr142 = lshr i32 %i76.1, 4 + %add143 = add nuw nsw i32 %shr141, %shr142 %shr144 = lshr i32 %i76.1, 6 - %add143 = add i32 %shr142, %i76.1 - %add145 = add i32 %add143, %shr141 - %mul138163 = add i32 %add145, %shr144 - %add147 = shl i32 %mul138163, 1 + %add145 = add nuw nsw i32 %add143, %shr144 + %shl146 = shl nuw i32 %add145, 1 + %add147 = add i32 %shl146, %mul138 store i32 %add147, ptr %piSkip, align 4 %idx.ext148 = zext i32 %add147 to i64 %add.ptr149 = getelementptr inbounds i8, ptr %szData, i64 %idx.ext148 @@ -850,41 +850,41 @@ if.then155: ; preds = %if.else151, %if.els br i1 %cmp.not, label %if.end198, label %for.cond165.preheader for.cond165.preheader: ; preds = %if.then155 - %cmp169173.not = icmp eq i32 %mul197, 0 - br i1 %cmp169173.not, label %if.end198, label %for.body170 + %cmp169169.not = icmp eq i32 %mul197, 0 + br i1 %cmp169169.not, label %if.end198, label %for.body170 for.body170: ; preds = %for.cond165.preheader, %for.body170 - %indvars.iv188 = phi i64 [ %indvars.iv.next189, %for.body170 ], [ 0, %for.cond165.preheader ] - %mul171 = mul nuw nsw i64 %indvars.iv188, 3 + %indvars.iv184 = phi i64 [ %indvars.iv.next185, %for.body170 ], [ 0, %for.cond165.preheader ] + %mul171 = mul nuw nsw i64 %indvars.iv184, 3 %idxprom172 = and i64 %mul171, 4294967295 %arrayidx173 = getelementptr inbounds i8, ptr %szData, i64 %idxprom172 %40 = load ptr, ptr %pcData, align 8 - %a177 = getelementptr inbounds %struct.aiTexel, ptr %40, i64 %indvars.iv188, i32 3 + %a177 = getelementptr inbounds %struct.aiTexel, ptr %40, i64 %indvars.iv184, i32 3 store i8 -1, ptr %a177, align 1 %incdec.ptr = getelementptr inbounds i8, ptr %arrayidx173, i64 1 %41 = load i8, ptr %arrayidx173, align 1 %42 = load ptr, ptr %pcData, align 8 - %arrayidx180 = getelementptr inbounds %struct.aiTexel, ptr %42, i64 %indvars.iv188 + %arrayidx180 = getelementptr inbounds %struct.aiTexel, ptr %42, i64 %indvars.iv184 store i8 %41, ptr %arrayidx180, align 1 %incdec.ptr182 = getelementptr inbounds i8, ptr %arrayidx173, i64 2 %43 = load i8, ptr %incdec.ptr, align 1 %44 = load ptr, ptr %pcData, align 8 - %g186 = getelementptr inbounds %struct.aiTexel, ptr %44, i64 %indvars.iv188, i32 1 + %g186 = getelementptr inbounds %struct.aiTexel, ptr %44, i64 %indvars.iv184, i32 1 store i8 %43, ptr %g186, align 1 %45 = load i8, ptr %incdec.ptr182, align 1 %46 = load ptr, ptr %pcData, align 8 - %r190 = getelementptr inbounds %struct.aiTexel, ptr %46, i64 %indvars.iv188, i32 2 + %r190 = getelementptr inbounds %struct.aiTexel, ptr %46, i64 %indvars.iv184, i32 2 store i8 %45, ptr %r190, align 1 - %indvars.iv.next189 = add nuw nsw i64 %indvars.iv188, 1 + %indvars.iv.next185 = add nuw nsw i64 %indvars.iv184, 1 %47 = load i32, ptr %pcNew, align 8 %48 = load i32, ptr %mHeight157, align 4 %mul168 = mul i32 %48, %47 %49 = zext i32 %mul168 to i64 - %cmp169 = icmp ult i64 %indvars.iv.next189, %49 + %cmp169 = icmp ult i64 %indvars.iv.next185, %49 br i1 %cmp169, label %for.body170, label %if.end198.loopexit, !llvm.loop !11 if.end198.loopexit: ; preds = %for.body170 - %50 = trunc nuw i64 %indvars.iv.next189 to i32 + %50 = trunc nuw i64 %indvars.iv.next185 to i32 br label %if.end198 if.end198: ; preds = %if.then155, %if.end198.loopexit, %for.cond165.preheader @@ -896,11 +896,11 @@ if.end198: ; preds = %if.then155, %if.end if.then201: ; preds = %if.end198 %shr202 = lshr i32 %i162.1, 2 %shr203 = lshr i32 %i162.1, 4 + %add204 = add nuw nsw i32 %shr202, %shr203 %shr205 = lshr i32 %i162.1, 6 - %add204 = add i32 %shr203, %i162.1 - %add206 = add i32 %add204, %shr202 - %mul199162 = add i32 %add206, %shr205 - %add208 = mul i32 %mul199162, 3 + %add206 = add nuw nsw i32 %add204, %shr205 + %mul207 = mul nuw i32 %add206, 3 + %add208 = add i32 %mul207, %mul199 store i32 %add208, ptr %piSkip, align 4 %idx.ext209 = zext i32 %add208 to i64 %add.ptr210 = getelementptr inbounds i8, ptr %szData, i64 %idx.ext209 @@ -930,43 +930,43 @@ if.then216: ; preds = %if.else212, %if.els br i1 %cmp.not, label %if.end262, label %for.cond226.preheader for.cond226.preheader: ; preds = %if.then216 - %cmp230181.not = icmp eq i32 %mul261, 0 - br i1 %cmp230181.not, label %if.end262, label %for.body231 + %cmp230177.not = icmp eq i32 %mul261, 0 + br i1 %cmp230177.not, label %if.end262, label %for.body231 for.body231: ; preds = %for.cond226.preheader, %for.body231 - %indvars.iv194 = phi i64 [ %indvars.iv.next195, %for.body231 ], [ 0, %for.cond226.preheader ] - %mul233 = shl nuw nsw i64 %indvars.iv194, 2 + %indvars.iv190 = phi i64 [ %indvars.iv.next191, %for.body231 ], [ 0, %for.cond226.preheader ] + %mul233 = shl nuw nsw i64 %indvars.iv190, 2 %idxprom234 = and i64 %mul233, 4294967292 %arrayidx235 = getelementptr inbounds i8, ptr %szData, i64 %idxprom234 %incdec.ptr236 = getelementptr inbounds i8, ptr %arrayidx235, i64 1 %55 = load i8, ptr %arrayidx235, align 1 %56 = load ptr, ptr %pcData, align 8 - %arrayidx239 = getelementptr inbounds %struct.aiTexel, ptr %56, i64 %indvars.iv194 + %arrayidx239 = getelementptr inbounds %struct.aiTexel, ptr %56, i64 %indvars.iv190 store i8 %55, ptr %arrayidx239, align 1 %incdec.ptr241 = getelementptr inbounds i8, ptr %arrayidx235, i64 2 %57 = load i8, ptr %incdec.ptr236, align 1 %58 = load ptr, ptr %pcData, align 8 - %g245 = getelementptr inbounds %struct.aiTexel, ptr %58, i64 %indvars.iv194, i32 1 + %g245 = getelementptr inbounds %struct.aiTexel, ptr %58, i64 %indvars.iv190, i32 1 store i8 %57, ptr %g245, align 1 %incdec.ptr246 = getelementptr inbounds i8, ptr %arrayidx235, i64 3 %59 = load i8, ptr %incdec.ptr241, align 1 %60 = load ptr, ptr %pcData, align 8 - %r250 = getelementptr inbounds %struct.aiTexel, ptr %60, i64 %indvars.iv194, i32 2 + %r250 = getelementptr inbounds %struct.aiTexel, ptr %60, i64 %indvars.iv190, i32 2 store i8 %59, ptr %r250, align 1 %61 = load i8, ptr %incdec.ptr246, align 1 %62 = load ptr, ptr %pcData, align 8 - %a254 = getelementptr inbounds %struct.aiTexel, ptr %62, i64 %indvars.iv194, i32 3 + %a254 = getelementptr inbounds %struct.aiTexel, ptr %62, i64 %indvars.iv190, i32 3 store i8 %61, ptr %a254, align 1 - %indvars.iv.next195 = add nuw nsw i64 %indvars.iv194, 1 + %indvars.iv.next191 = add nuw nsw i64 %indvars.iv190, 1 %63 = load i32, ptr %pcNew, align 8 %64 = load i32, ptr %mHeight218, align 4 %mul229 = mul i32 %64, %63 %65 = zext i32 %mul229 to i64 - %cmp230 = icmp ult i64 %indvars.iv.next195, %65 + %cmp230 = icmp ult i64 %indvars.iv.next191, %65 br i1 %cmp230, label %for.body231, label %if.end262.loopexit, !llvm.loop !12 if.end262.loopexit: ; preds = %for.body231 - %66 = trunc nuw i64 %indvars.iv.next195 to i32 + %66 = trunc nuw i64 %indvars.iv.next191 to i32 br label %if.end262 if.end262: ; preds = %if.then216, %if.end262.loopexit, %for.cond226.preheader @@ -978,11 +978,11 @@ if.end262: ; preds = %if.then216, %if.end if.then265: ; preds = %if.end262 %shr266 = lshr i32 %i223.1, 2 %shr267 = lshr i32 %i223.1, 4 + %add268 = add nuw nsw i32 %shr266, %shr267 %shr269 = lshr i32 %i223.1, 6 - %add268 = add i32 %shr267, %i223.1 - %add270 = add i32 %add268, %shr266 - %shl263161 = add i32 %add270, %shr269 - %add272 = shl i32 %shl263161, 2 + %add270 = add nuw nsw i32 %add268, %shr269 + %shl271 = shl i32 %add270, 2 + %add272 = add i32 %shl271, %shl263 store i32 %add272, ptr %piSkip, align 4 br label %if.end328 @@ -1000,56 +1000,56 @@ if.then284: ; preds = %if.then276 call void @_ZN6Assimp11MDLImporter13SearchPaletteEPPKh(ptr noundef nonnull align 8 dereferenceable(158) %this, ptr noundef nonnull %szColorMap) %69 = load i32, ptr %pcNew, align 8 %70 = load i32, ptr %mHeight278, align 4 - %mul288176 = mul i32 %70, %69 - %cmp289177.not = icmp eq i32 %mul288176, 0 - %.pre197 = load ptr, ptr %szColorMap, align 8 - br i1 %cmp289177.not, label %for.end318, label %for.body290 + %mul288172 = mul i32 %70, %69 + %cmp289173.not = icmp eq i32 %mul288172, 0 + %.pre193 = load ptr, ptr %szColorMap, align 8 + br i1 %cmp289173.not, label %for.end318, label %for.body290 for.body290: ; preds = %if.then284, %for.body290 - %indvars.iv191 = phi i64 [ %indvars.iv.next192, %for.body290 ], [ 0, %if.then284 ] - %arrayidx293 = getelementptr inbounds i8, ptr %szData, i64 %indvars.iv191 + %indvars.iv187 = phi i64 [ %indvars.iv.next188, %for.body290 ], [ 0, %if.then284 ] + %arrayidx293 = getelementptr inbounds i8, ptr %szData, i64 %indvars.iv187 %71 = load i8, ptr %arrayidx293, align 1 %conv294 = zext i8 %71 to i64 %mul295 = mul nuw nsw i64 %conv294, 3 - %arrayidx297 = getelementptr inbounds i8, ptr %.pre197, i64 %mul295 + %arrayidx297 = getelementptr inbounds i8, ptr %.pre193, i64 %mul295 %72 = load ptr, ptr %pcData, align 8 - %a301 = getelementptr inbounds %struct.aiTexel, ptr %72, i64 %indvars.iv191, i32 3 + %a301 = getelementptr inbounds %struct.aiTexel, ptr %72, i64 %indvars.iv187, i32 3 store i8 -1, ptr %a301, align 1 %incdec.ptr302 = getelementptr inbounds i8, ptr %arrayidx297, i64 1 %73 = load i8, ptr %arrayidx297, align 1 %74 = load ptr, ptr %pcData, align 8 - %r306 = getelementptr inbounds %struct.aiTexel, ptr %74, i64 %indvars.iv191, i32 2 + %r306 = getelementptr inbounds %struct.aiTexel, ptr %74, i64 %indvars.iv187, i32 2 store i8 %73, ptr %r306, align 1 %incdec.ptr307 = getelementptr inbounds i8, ptr %arrayidx297, i64 2 %75 = load i8, ptr %incdec.ptr302, align 1 %76 = load ptr, ptr %pcData, align 8 - %g311 = getelementptr inbounds %struct.aiTexel, ptr %76, i64 %indvars.iv191, i32 1 + %g311 = getelementptr inbounds %struct.aiTexel, ptr %76, i64 %indvars.iv187, i32 1 store i8 %75, ptr %g311, align 1 %77 = load i8, ptr %incdec.ptr307, align 1 %78 = load ptr, ptr %pcData, align 8 - %arrayidx314 = getelementptr inbounds %struct.aiTexel, ptr %78, i64 %indvars.iv191 + %arrayidx314 = getelementptr inbounds %struct.aiTexel, ptr %78, i64 %indvars.iv187 store i8 %77, ptr %arrayidx314, align 1 - %indvars.iv.next192 = add nuw nsw i64 %indvars.iv191, 1 + %indvars.iv.next188 = add nuw nsw i64 %indvars.iv187, 1 %79 = load i32, ptr %pcNew, align 8 %80 = load i32, ptr %mHeight278, align 4 %mul288 = mul i32 %80, %79 %81 = zext i32 %mul288 to i64 - %cmp289 = icmp ult i64 %indvars.iv.next192, %81 + %cmp289 = icmp ult i64 %indvars.iv.next188, %81 br i1 %cmp289, label %for.body290, label %for.end318.loopexit, !llvm.loop !13 for.end318.loopexit: ; preds = %for.body290 - %82 = trunc nuw i64 %indvars.iv.next192 to i32 + %82 = trunc nuw i64 %indvars.iv.next188 to i32 br label %for.end318 for.end318: ; preds = %for.end318.loopexit, %if.then284 %i282.0.lcssa = phi i32 [ 0, %if.then284 ], [ %82, %for.end318.loopexit ] - %cmp.not.i = icmp eq ptr %.pre197, @_ZL21g_aclrDefaultColorMap - %isnull.i = icmp eq ptr %.pre197, null + %cmp.not.i = icmp eq ptr %.pre193, @_ZL21g_aclrDefaultColorMap + %isnull.i = icmp eq ptr %.pre193, null %or.cond.i = or i1 %cmp.not.i, %isnull.i br i1 %or.cond.i, label %if.end323, label %delete.notnull.i delete.notnull.i: ; preds = %for.end318 - tail call void @_ZdaPv(ptr noundef %.pre197) #20 + tail call void @_ZdaPv(ptr noundef %.pre193) #20 br label %if.end323 if.else319: ; preds = %if.then276 diff --git a/bench/brotli/optimized/metablock.c.ll b/bench/brotli/optimized/metablock.c.ll index 5d2e86b8eb9..b8edca7e53f 100644 --- a/bench/brotli/optimized/metablock.c.ll +++ b/bench/brotli/optimized/metablock.c.ll @@ -131,6 +131,7 @@ for.cond2.preheader: ; preds = %entry, %for.end for.body4.lr.ph: ; preds = %for.cond2.preheader %2 = trunc nuw nsw i64 %indvars.iv to i32 %shl.i = shl nuw nsw i32 48, %2 + %add6.i = shl nuw nsw i32 67108860, %2 %notmask.i = shl nsw i32 -1, %2 %sub4.i.i = xor i32 %notmask.i, -1 %shl11.i = shl nuw nsw i32 124, %2 @@ -148,8 +149,7 @@ for.body4: ; preds = %for.body4.lr.ph, %i %3 = load i32, ptr %large_window, align 4 %add.i = add nuw nsw i32 %shl, 16 %add2.i = add nuw nsw i32 %add.i, %shl.i - %4 = add nuw nsw i32 %ndirect_msb.1359, 67108860 - %sub.i = shl nuw nsw i32 %4, %2 + %sub.i = add nuw i32 %add6.i, %shl %tobool.not.i = icmp eq i32 %3, 0 br i1 %tobool.not.i, label %BrotliInitDistanceParams.exit, label %if.else.i.i @@ -186,8 +186,8 @@ if.end.i.i: ; preds = %while.end.i.i %or28.i.i = or i32 %shl27.i.i, %sub4.i.i %add29.i.i = add nuw nsw i32 %shl, 17 %add31.i.i = add i32 %add29.i.i, %or28.i.i - %5 = shl i32 6, %shr17.i.i - %sub20.i.i = add i32 %5, -5 + %4 = shl i32 6, %shr17.i.i + %sub20.i.i = add i32 %4, -5 %add33.i.i = add i32 %sub20.i.i, %shl25.i.i %shl34.i.i = shl i32 %add33.i.i, %2 %add36.i.i = sub i32 %shl, %notmask.i @@ -220,8 +220,8 @@ if.end.thread.i: ; preds = %BrotliInitDistanceP for.body.lr.ph.i: ; preds = %if.end.i %cmp3.i = icmp ne i32 %orig_params.sroa.11.0.copyload, %shl - %6 = freeze i1 %cmp3.i - br i1 %6, label %for.body.us.preheader.i, label %for.body.i136 + %5 = freeze i1 %cmp3.i + br i1 %5, label %for.body.us.preheader.i, label %for.body.i136 for.body.us.preheader.i: ; preds = %if.end.thread.i, %for.body.lr.ph.i %conv19.us.i = zext nneg i32 %shl to i64 @@ -234,21 +234,21 @@ for.body.us.i: ; preds = %for.inc.us.i, %for. %i.051.us.i = phi i64 [ %inc.us.i, %for.inc.us.i ], [ 0, %for.body.us.preheader.i ] %arrayidx.us.i = getelementptr inbounds %struct.Command, ptr %cmds, i64 %i.051.us.i %copy_len_.i.us.i = getelementptr inbounds i8, ptr %arrayidx.us.i, i64 4 - %7 = load i32, ptr %copy_len_.i.us.i, align 4 - %and.i.us.i = and i32 %7, 33554431 + %6 = load i32, ptr %copy_len_.i.us.i, align 4 + %and.i.us.i = and i32 %6, 33554431 %tobool.not.us.i = icmp eq i32 %and.i.us.i, 0 br i1 %tobool.not.us.i, label %for.inc.us.i, label %land.lhs.true5.us.i land.lhs.true5.us.i: ; preds = %for.body.us.i %cmd_prefix_.us.i = getelementptr inbounds i8, ptr %arrayidx.us.i, i64 12 - %8 = load i16, ptr %cmd_prefix_.us.i, align 4 - %cmp6.us.i = icmp ugt i16 %8, 127 + %7 = load i16, ptr %cmd_prefix_.us.i, align 4 + %cmp6.us.i = icmp ugt i16 %7, 127 br i1 %cmp6.us.i, label %if.then8.us.i, label %for.inc.us.i if.then8.us.i: ; preds = %land.lhs.true5.us.i %dist_prefix_.i.us.i = getelementptr inbounds i8, ptr %arrayidx.us.i, i64 14 - %9 = load i16, ptr %dist_prefix_.i.us.i, align 2 - %conv.i.us.i = zext i16 %9 to i32 + %8 = load i16, ptr %dist_prefix_.i.us.i, align 2 + %conv.i.us.i = zext i16 %8 to i32 %and.i32.us.i = and i32 %conv.i.us.i, 1023 %cmp.i.us.i = icmp ult i32 %and.i32.us.i, %add.i.us.i br i1 %cmp.i.us.i, label %CommandRestoreDistanceCode.exit.us.i, label %if.else.i.us.i @@ -256,7 +256,7 @@ if.then8.us.i: ; preds = %land.lhs.true5.us.i if.else.i.us.i: ; preds = %if.then8.us.i %shr.i.us.i = lshr i32 %conv.i.us.i, 10 %dist_extra_.i.us.i = getelementptr inbounds i8, ptr %arrayidx.us.i, i64 8 - %10 = load i32, ptr %dist_extra_.i.us.i, align 4 + %9 = load i32, ptr %dist_extra_.i.us.i, align 4 %sub11.i.us.i = sub nsw i32 %and.i32.us.i, %orig_params.sroa.11.0.copyload %sub12.i.us.i = add nsw i32 %sub11.i.us.i, -16 %shr14.i.us.i = lshr i32 %sub12.i.us.i, %orig_params.sroa.0.0.copyload @@ -265,7 +265,7 @@ if.else.i.us.i: ; preds = %if.then8.us.i %add20.i.us.i = or disjoint i32 %and19.i.us.i, 2 %shl21.i.us.i = shl i32 %add20.i.us.i, %shr.i.us.i %sub22.i.us.i = add i32 %shl21.i.us.i, -4 - %add23.i.us.i = add i32 %sub22.i.us.i, %10 + %add23.i.us.i = add i32 %sub22.i.us.i, %9 %shl25.i.us.i = shl i32 %add23.i.us.i, %orig_params.sroa.0.0.copyload %add28.i.us.i = add nuw i32 %and18.i.us.i, %add.i.us.i %add29.i.us.i = add i32 %add28.i.us.i, %shl25.i.us.i @@ -284,8 +284,8 @@ if.end16.us.i: ; preds = %CommandRestoreDista if.else.i38.us.i: ; preds = %if.end16.us.i %add3.i.us.i = add nsw i64 %sub2.i.us.i, %conv12.us.i %conv.i48.us.i = trunc i64 %add3.i.us.i to i32 - %11 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %conv.i48.us.i, i1 true) - %sub4.i.us.i = sub nsw i32 30, %11 + %10 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %conv.i48.us.i, i1 true) + %sub4.i.us.i = sub nsw i32 30, %10 %conv5.i.us.i = zext i32 %sub4.i.us.i to i64 %and.i41.us.i = and i64 %add3.i.us.i, %conv8.i.us.i %shr.i42.us.i = lshr i64 %add3.i.us.i, %conv5.i.us.i @@ -307,11 +307,11 @@ if.end22.us.i: ; preds = %if.else.i38.us.i, % %and.us.i = and i32 %dist_prefix.0.us.i, 1023 %conv24.us.i = zext nneg i32 %and.us.i to i64 %arrayidx.i.us.i = getelementptr inbounds [544 x i32], ptr %call, i64 0, i64 %conv24.us.i - %12 = load i32, ptr %arrayidx.i.us.i, align 4 - %inc.i.us.i = add i32 %12, 1 + %11 = load i32, ptr %arrayidx.i.us.i, align 4 + %inc.i.us.i = add i32 %11, 1 store i32 %inc.i.us.i, ptr %arrayidx.i.us.i, align 4 - %13 = load i64, ptr %total_count_.i.i, align 8 - %inc1.i.us.i = add i64 %13, 1 + %12 = load i64, ptr %total_count_.i.i, align 8 + %inc1.i.us.i = add i64 %12, 1 store i64 %inc1.i.us.i, ptr %total_count_.i.i, align 8 %conv23.us.i = lshr i32 %dist_prefix.0.us.i, 10 %shr.us.i = and i32 %conv23.us.i, 63 @@ -330,29 +330,29 @@ for.body.i136: ; preds = %for.body.lr.ph.i, % %i.051.i = phi i64 [ %inc.i139, %for.inc.i ], [ 0, %for.body.lr.ph.i ] %arrayidx.i = getelementptr inbounds %struct.Command, ptr %cmds, i64 %i.051.i %copy_len_.i.i = getelementptr inbounds i8, ptr %arrayidx.i, i64 4 - %14 = load i32, ptr %copy_len_.i.i, align 4 - %and.i.i137 = and i32 %14, 33554431 + %13 = load i32, ptr %copy_len_.i.i, align 4 + %and.i.i137 = and i32 %13, 33554431 %tobool.not.i138 = icmp eq i32 %and.i.i137, 0 br i1 %tobool.not.i138, label %for.inc.i, label %land.lhs.true5.i land.lhs.true5.i: ; preds = %for.body.i136 %cmd_prefix_.i = getelementptr inbounds i8, ptr %arrayidx.i, i64 12 - %15 = load i16, ptr %cmd_prefix_.i, align 4 - %cmp6.i = icmp ugt i16 %15, 127 + %14 = load i16, ptr %cmd_prefix_.i, align 4 + %cmp6.i = icmp ugt i16 %14, 127 br i1 %cmp6.i, label %if.then8.i, label %for.inc.i if.then8.i: ; preds = %land.lhs.true5.i %dist_prefix_.i = getelementptr inbounds i8, ptr %arrayidx.i, i64 14 - %16 = load i16, ptr %dist_prefix_.i, align 2 - %conv23.i = zext i16 %16 to i32 + %15 = load i16, ptr %dist_prefix_.i, align 2 + %conv23.i = zext i16 %15 to i32 %and.i = and i32 %conv23.i, 1023 %conv24.i = zext nneg i32 %and.i to i64 %arrayidx.i.i = getelementptr inbounds [544 x i32], ptr %call, i64 0, i64 %conv24.i - %17 = load i32, ptr %arrayidx.i.i, align 4 - %inc.i.i140 = add i32 %17, 1 + %16 = load i32, ptr %arrayidx.i.i, align 4 + %inc.i.i140 = add i32 %16, 1 store i32 %inc.i.i140, ptr %arrayidx.i.i, align 4 - %18 = load i64, ptr %total_count_.i.i, align 8 - %inc1.i.i = add i64 %18, 1 + %17 = load i64, ptr %total_count_.i.i, align 8 + %inc1.i.i = add i64 %17, 1 store i64 %inc1.i.i, ptr %total_count_.i.i, align 8 %shr.i = lshr i32 %conv23.i, 10 %conv26.i = uitofp nneg i32 %shr.i to double @@ -406,29 +406,29 @@ for.body.i244: ; preds = %if.end.i238, %for.i %i.051.i246 = phi i64 [ %inc.i256, %for.inc.i254 ], [ 0, %if.end.i238 ] %arrayidx.i247 = getelementptr inbounds %struct.Command, ptr %cmds, i64 %i.051.i246 %copy_len_.i.i248 = getelementptr inbounds i8, ptr %arrayidx.i247, i64 4 - %19 = load i32, ptr %copy_len_.i.i248, align 4 - %and.i.i249 = and i32 %19, 33554431 + %18 = load i32, ptr %copy_len_.i.i248, align 4 + %and.i.i249 = and i32 %18, 33554431 %tobool.not.i250 = icmp eq i32 %and.i.i249, 0 br i1 %tobool.not.i250, label %for.inc.i254, label %land.lhs.true5.i251 land.lhs.true5.i251: ; preds = %for.body.i244 %cmd_prefix_.i252 = getelementptr inbounds i8, ptr %arrayidx.i247, i64 12 - %20 = load i16, ptr %cmd_prefix_.i252, align 4 - %cmp6.i253 = icmp ugt i16 %20, 127 + %19 = load i16, ptr %cmd_prefix_.i252, align 4 + %cmp6.i253 = icmp ugt i16 %19, 127 br i1 %cmp6.i253, label %if.then8.i258, label %for.inc.i254 if.then8.i258: ; preds = %land.lhs.true5.i251 %dist_prefix_.i259 = getelementptr inbounds i8, ptr %arrayidx.i247, i64 14 - %21 = load i16, ptr %dist_prefix_.i259, align 2 - %conv23.i260 = zext i16 %21 to i32 + %20 = load i16, ptr %dist_prefix_.i259, align 2 + %conv23.i260 = zext i16 %20 to i32 %and.i261 = and i32 %conv23.i260, 1023 %conv24.i262 = zext nneg i32 %and.i261 to i64 %arrayidx.i.i263 = getelementptr inbounds [544 x i32], ptr %call, i64 0, i64 %conv24.i262 - %22 = load i32, ptr %arrayidx.i.i263, align 4 - %inc.i.i264 = add i32 %22, 1 + %21 = load i32, ptr %arrayidx.i.i263, align 4 + %inc.i.i264 = add i32 %21, 1 store i32 %inc.i.i264, ptr %arrayidx.i.i263, align 4 - %23 = load i64, ptr %total_count_.i.i, align 8 - %inc1.i.i265 = add i64 %23, 1 + %22 = load i64, ptr %total_count_.i.i, align 8 + %inc1.i.i265 = add i64 %22, 1 store i64 %inc1.i.i265, ptr %total_count_.i.i, align 8 %shr.i266 = lshr i32 %conv23.i260, 10 %conv26.i267 = uitofp nneg i32 %shr.i266 to double @@ -457,13 +457,13 @@ if.then24: ; preds = %ComputeDistanceCost if.end27: ; preds = %ComputeDistanceCost.exit269, %if.then24, %for.end18 tail call void @BrotliFree(ptr noundef %m, ptr noundef %call) #9 - %24 = load i32, ptr %dist, align 8 - %cmp.i270 = icmp eq i32 %orig_params.sroa.0.0.copyload, %24 + %23 = load i32, ptr %dist, align 8 + %cmp.i270 = icmp eq i32 %orig_params.sroa.0.0.copyload, %23 br i1 %cmp.i270, label %land.lhs.true.i, label %if.end.i271 land.lhs.true.i: ; preds = %if.end27 - %25 = load i32, ptr %orig_params.sroa.11.0.dist.sroa_idx, align 4 - %cmp3.i297 = icmp ne i32 %orig_params.sroa.11.0.copyload, %25 + %24 = load i32, ptr %orig_params.sroa.11.0.dist.sroa_idx, align 4 + %cmp3.i297 = icmp ne i32 %orig_params.sroa.11.0.copyload, %24 %cmp441.i = icmp ne i64 %num_commands, 0 %or.cond.i = and i1 %cmp441.i, %cmp3.i297 br i1 %or.cond.i, label %for.body.i273.preheader, label %RecomputeDistancePrefixes.exit @@ -478,21 +478,21 @@ for.body.i273: ; preds = %for.body.i273.prehe %i.042.i = phi i64 [ %inc.i282, %for.inc.i281 ], [ 0, %for.body.i273.preheader ] %arrayidx.i274 = getelementptr inbounds %struct.Command, ptr %cmds, i64 %i.042.i %copy_len_.i.i275 = getelementptr inbounds i8, ptr %arrayidx.i274, i64 4 - %26 = load i32, ptr %copy_len_.i.i275, align 4 - %and.i.i276 = and i32 %26, 33554431 + %25 = load i32, ptr %copy_len_.i.i275, align 4 + %and.i.i276 = and i32 %25, 33554431 %tobool.not.i277 = icmp eq i32 %and.i.i276, 0 br i1 %tobool.not.i277, label %for.inc.i281, label %land.lhs.true5.i278 land.lhs.true5.i278: ; preds = %for.body.i273 %cmd_prefix_.i279 = getelementptr inbounds i8, ptr %arrayidx.i274, i64 12 - %27 = load i16, ptr %cmd_prefix_.i279, align 4 - %cmp6.i280 = icmp ugt i16 %27, 127 + %26 = load i16, ptr %cmd_prefix_.i279, align 4 + %cmp6.i280 = icmp ugt i16 %26, 127 br i1 %cmp6.i280, label %if.then8.i285, label %for.inc.i281 if.then8.i285: ; preds = %land.lhs.true5.i278 %dist_prefix_.i.i = getelementptr inbounds i8, ptr %arrayidx.i274, i64 14 - %28 = load i16, ptr %dist_prefix_.i.i, align 2 - %conv.i.i = zext i16 %28 to i32 + %27 = load i16, ptr %dist_prefix_.i.i, align 2 + %conv.i.i = zext i16 %27 to i32 %and.i17.i = and i32 %conv.i.i, 1023 %cmp.i.i286 = icmp ult i32 %and.i17.i, %add.i.us.i br i1 %cmp.i.i286, label %CommandRestoreDistanceCode.exit.i, label %if.else.i.i287 @@ -500,7 +500,7 @@ if.then8.i285: ; preds = %land.lhs.true5.i278 if.else.i.i287: ; preds = %if.then8.i285 %shr.i.i288 = lshr i32 %conv.i.i, 10 %dist_extra_.i.i = getelementptr inbounds i8, ptr %arrayidx.i274, i64 8 - %29 = load i32, ptr %dist_extra_.i.i, align 4 + %28 = load i32, ptr %dist_extra_.i.i, align 4 %sub11.i.i = sub nsw i32 %and.i17.i, %orig_params.sroa.11.0.copyload %sub12.i.i = add nsw i32 %sub11.i.i, -16 %shr14.i.i = lshr i32 %sub12.i.i, %orig_params.sroa.0.0.copyload @@ -509,7 +509,7 @@ if.else.i.i287: ; preds = %if.then8.i285 %add20.i.i = or disjoint i32 %and19.i.i, 2 %shl21.i.i = shl i32 %add20.i.i, %shr.i.i288 %sub22.i.i = add i32 %shl21.i.i, -4 - %add23.i.i = add i32 %sub22.i.i, %29 + %add23.i.i = add i32 %sub22.i.i, %28 %shl25.i.i290 = shl i32 %add23.i.i, %orig_params.sroa.0.0.copyload %add28.i.i = add nuw i32 %and18.i.i, %add.i.us.i %add29.i.i291 = add i32 %add28.i.i, %shl25.i.i290 @@ -518,8 +518,8 @@ if.else.i.i287: ; preds = %if.then8.i285 CommandRestoreDistanceCode.exit.i: ; preds = %if.else.i.i287, %if.then8.i285 %retval.i.0.i = phi i32 [ %add29.i.i291, %if.else.i.i287 ], [ %and.i17.i, %if.then8.i285 ] %conv10.i = zext i32 %retval.i.0.i to i64 - %30 = load i32, ptr %orig_params.sroa.11.0.dist.sroa_idx, align 4 - %conv12.i = zext i32 %30 to i64 + %29 = load i32, ptr %orig_params.sroa.11.0.dist.sroa_idx, align 4 + %conv12.i = zext i32 %29 to i64 %dist_extra_.i = getelementptr inbounds i8, ptr %arrayidx.i274, i64 8 %add.i21.i = add nuw nsw i64 %conv12.i, 16 %cmp.i22.i = icmp ugt i64 %add.i21.i, %conv10.i @@ -530,17 +530,17 @@ if.then.i29.i: ; preds = %CommandRestoreDista br label %for.inc.sink.split.i if.else.i23.i: ; preds = %CommandRestoreDistanceCode.exit.i - %31 = load i32, ptr %dist, align 8 - %conv14.i = zext i32 %31 to i64 + %30 = load i32, ptr %dist, align 8 + %conv14.i = zext i32 %30 to i64 %shl.i24.i = shl nuw i64 4, %conv14.i %sub.i25.i = add nsw i64 %conv10.i, -16 %sub2.i.i = sub nsw i64 %sub.i25.i, %conv12.i %add3.i.i = add i64 %sub2.i.i, %shl.i24.i %conv.i31.i = trunc i64 %add3.i.i to i32 - %32 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %conv.i31.i, i1 true) - %sub4.i.i292 = sub nsw i32 30, %32 + %31 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %conv.i31.i, i1 true) + %sub4.i.i292 = sub nsw i32 30, %31 %conv5.i.i = zext i32 %sub4.i.i292 to i64 - %notmask40.i = shl nsw i32 -1, %31 + %notmask40.i = shl nsw i32 -1, %30 %sub7.i.i = xor i32 %notmask40.i, -1 %conv8.i.i = zext nneg i32 %sub7.i.i to i64 %and.i26.i = and i64 %add3.i.i, %conv8.i.i @@ -580,8 +580,8 @@ RecomputeDistancePrefixes.exit: ; preds = %for.inc.i281, %land %distance_split = getelementptr inbounds i8, ptr %mb, i64 96 tail call void @BrotliSplitBlock(ptr noundef %m, ptr noundef %cmds, i64 noundef %num_commands, ptr noundef %ringbuffer, i64 noundef %pos, i64 noundef %mask, ptr noundef %params, ptr noundef %mb, ptr noundef nonnull %command_split, ptr noundef nonnull %distance_split) #9 %disable_literal_context_modeling = getelementptr inbounds i8, ptr %params, i64 32 - %33 = load i32, ptr %disable_literal_context_modeling, align 8 - %tobool29.not = icmp eq i32 %33, 0 + %32 = load i32, ptr %disable_literal_context_modeling, align 8 + %tobool29.not = icmp eq i32 %32, 0 %.pre398 = load i64, ptr %mb, align 8 br i1 %tobool29.not, label %if.then30, label %if.end44 @@ -601,15 +601,15 @@ for.body40: ; preds = %cond.end, %for.body %arrayidx = getelementptr inbounds i32, ptr %call35, i64 %i.0376 store i32 %literal_context_mode, ptr %arrayidx, align 4 %inc42 = add nuw i64 %i.0376, 1 - %34 = load i64, ptr %mb, align 8 - %cmp39 = icmp ult i64 %inc42, %34 + %33 = load i64, ptr %mb, align 8 + %cmp39 = icmp ult i64 %inc42, %33 br i1 %cmp39, label %for.body40, label %if.end44, !llvm.loop !10 if.end44: ; preds = %for.body40, %if.then30, %cond.end, %RecomputeDistancePrefixes.exit - %35 = phi i64 [ %.pre398, %RecomputeDistancePrefixes.exit ], [ 0, %cond.end ], [ 0, %if.then30 ], [ %34, %for.body40 ] + %34 = phi i64 [ %.pre398, %RecomputeDistancePrefixes.exit ], [ 0, %cond.end ], [ 0, %if.then30 ], [ %33, %for.body40 ] %literal_context_modes.0 = phi ptr [ null, %RecomputeDistancePrefixes.exit ], [ %call35, %cond.end ], [ null, %if.then30 ], [ %call35, %for.body40 ] %literal_context_multiplier.0 = phi i64 [ 1, %RecomputeDistancePrefixes.exit ], [ 64, %cond.end ], [ 64, %if.then30 ], [ 64, %for.body40 ] - %mul47 = mul i64 %35, %literal_context_multiplier.0 + %mul47 = mul i64 %34, %literal_context_multiplier.0 %cmp48.not = icmp eq i64 %mul47, 0 br i1 %cmp48.not, label %ClearHistogramsLiteral.exit, label %for.body.i.preheader @@ -630,13 +630,13 @@ for.body.i: ; preds = %for.body.i.preheade ClearHistogramsLiteral.exit: ; preds = %for.body.i, %if.end44 %cond54407 = phi ptr [ null, %if.end44 ], [ %call51, %for.body.i ] - %36 = load i64, ptr %distance_split, align 8 - %shl57 = shl i64 %36, 2 + %35 = load i64, ptr %distance_split, align 8 + %shl57 = shl i64 %35, 2 %cmp58.not = icmp eq i64 %shl57, 0 br i1 %cmp58.not, label %ClearHistogramsDistance.exit, label %for.body.i164.preheader for.body.i164.preheader: ; preds = %ClearHistogramsLiteral.exit - %mul60 = mul i64 %36, 8768 + %mul60 = mul i64 %35, 8768 %call61 = tail call ptr @BrotliAllocate(ptr noundef %m, i64 noundef %mul60) #9 br label %for.body.i164 @@ -652,10 +652,10 @@ for.body.i164: ; preds = %for.body.i164.prehe ClearHistogramsDistance.exit: ; preds = %for.body.i164, %ClearHistogramsLiteral.exit %cond64409 = phi ptr [ null, %ClearHistogramsLiteral.exit ], [ %call61, %for.body.i164 ] - %37 = load i64, ptr %command_split, align 8 + %36 = load i64, ptr %command_split, align 8 %command_histograms_size = getelementptr inbounds i8, ptr %mb, i64 200 - store i64 %37, ptr %command_histograms_size, align 8 - %cmp68.not = icmp eq i64 %37, 0 + store i64 %36, ptr %command_histograms_size, align 8 + %cmp68.not = icmp eq i64 %36, 0 br i1 %cmp68.not, label %cond.end74.thread, label %cond.end74 cond.end74.thread: ; preds = %ClearHistogramsDistance.exit @@ -664,7 +664,7 @@ cond.end74.thread: ; preds = %ClearHistogramsDist br label %ClearHistogramsCommand.exit cond.end74: ; preds = %ClearHistogramsDistance.exit - %mul71 = mul i64 %37, 2832 + %mul71 = mul i64 %36, 2832 %call72 = tail call ptr @BrotliAllocate(ptr noundef %m, i64 noundef %mul71) #9 %.pre399 = load i64, ptr %command_histograms_size, align 8 %command_histograms = getelementptr inbounds i8, ptr %mb, i64 192 @@ -687,11 +687,11 @@ ClearHistogramsCommand.exit.loopexit: ; preds = %for.body.i172 br label %ClearHistogramsCommand.exit ClearHistogramsCommand.exit: ; preds = %cond.end74.thread, %ClearHistogramsCommand.exit.loopexit, %cond.end74 - %38 = phi ptr [ %.pre400, %ClearHistogramsCommand.exit.loopexit ], [ %call72, %cond.end74 ], [ null, %cond.end74.thread ] - tail call void @BrotliBuildHistogramsWithContext(ptr noundef %cmds, i64 noundef %num_commands, ptr noundef nonnull %mb, ptr noundef nonnull %command_split, ptr noundef nonnull %distance_split, ptr noundef %ringbuffer, i64 noundef %pos, i64 noundef %mask, i8 noundef zeroext %prev_byte, i8 noundef zeroext %prev_byte2, ptr noundef %literal_context_modes.0, ptr noundef %cond54407, ptr noundef %38, ptr noundef %cond64409) #9 + %37 = phi ptr [ %.pre400, %ClearHistogramsCommand.exit.loopexit ], [ %call72, %cond.end74 ], [ null, %cond.end74.thread ] + tail call void @BrotliBuildHistogramsWithContext(ptr noundef %cmds, i64 noundef %num_commands, ptr noundef nonnull %mb, ptr noundef nonnull %command_split, ptr noundef nonnull %distance_split, ptr noundef %ringbuffer, i64 noundef %pos, i64 noundef %mask, i8 noundef zeroext %prev_byte, i8 noundef zeroext %prev_byte2, ptr noundef %literal_context_modes.0, ptr noundef %cond54407, ptr noundef %37, ptr noundef %cond64409) #9 tail call void @BrotliFree(ptr noundef %m, ptr noundef %literal_context_modes.0) #9 - %39 = load i64, ptr %mb, align 8 - %shl84 = shl i64 %39, 6 + %38 = load i64, ptr %mb, align 8 + %shl84 = shl i64 %38, 6 %literal_context_map_size = getelementptr inbounds i8, ptr %mb, i64 152 store i64 %shl84, ptr %literal_context_map_size, align 8 %cmp86.not = icmp eq i64 %shl84, 0 @@ -705,7 +705,7 @@ cond.end92.thread: ; preds = %ClearHistogramsComm br label %cond.end103 cond.end92: ; preds = %ClearHistogramsCommand.exit - %mul89 = shl i64 %39, 8 + %mul89 = shl i64 %38, 8 %call90 = tail call ptr @BrotliAllocate(ptr noundef %m, i64 noundef %mul89) #9 %.pr = load i64, ptr %literal_context_map_size, align 8 %literal_context_map = getelementptr inbounds i8, ptr %mb, i64 144 @@ -722,21 +722,21 @@ cond.true98: ; preds = %cond.end92 br label %cond.end103 cond.end103: ; preds = %cond.end92.thread, %cond.end92, %cond.true98 - %40 = phi ptr [ %.pre401, %cond.true98 ], [ %call90, %cond.end92 ], [ null, %cond.end92.thread ] + %39 = phi ptr [ %.pre401, %cond.true98 ], [ %call90, %cond.end92 ], [ null, %cond.end92.thread ] %literal_histograms_size95342 = phi ptr [ %literal_histograms_size95, %cond.true98 ], [ %literal_histograms_size95, %cond.end92 ], [ %literal_histograms_size95339, %cond.end92.thread ] %literal_context_map341 = phi ptr [ %literal_context_map, %cond.true98 ], [ %literal_context_map, %cond.end92 ], [ %literal_context_map338, %cond.end92.thread ] %cond104 = phi ptr [ %call101, %cond.true98 ], [ null, %cond.end92 ], [ null, %cond.end92.thread ] %literal_histograms105 = getelementptr inbounds i8, ptr %mb, i64 176 store ptr %cond104, ptr %literal_histograms105, align 8 - tail call void @BrotliClusterHistogramsLiteral(ptr noundef %m, ptr noundef %cond54407, i64 noundef %mul47, i64 noundef 256, ptr noundef %cond104, ptr noundef nonnull %literal_histograms_size95342, ptr noundef %40) #9 + tail call void @BrotliClusterHistogramsLiteral(ptr noundef %m, ptr noundef %cond54407, i64 noundef %mul47, i64 noundef 256, ptr noundef %cond104, ptr noundef nonnull %literal_histograms_size95342, ptr noundef %39) #9 tail call void @BrotliFree(ptr noundef %m, ptr noundef %cond54407) #9 - %41 = load i32, ptr %disable_literal_context_modeling, align 8 - %tobool110.not = icmp eq i32 %41, 0 + %40 = load i32, ptr %disable_literal_context_modeling, align 8 + %tobool110.not = icmp eq i32 %40, 0 br i1 %tobool110.not, label %if.end130, label %if.then111 if.then111: ; preds = %cond.end103 - %42 = load i64, ptr %mb, align 8 - %cmp115.not384 = icmp eq i64 %42, 0 + %41 = load i64, ptr %mb, align 8 + %cmp115.not384 = icmp eq i64 %41, 0 br i1 %cmp115.not384, label %if.end130, label %for.body116 for.cond114.loopexit: ; preds = %for.body120 @@ -744,26 +744,26 @@ for.cond114.loopexit: ; preds = %for.body120 br i1 %cmp115.not, label %if.end130, label %for.body116, !llvm.loop !14 for.body116: ; preds = %if.then111, %for.cond114.loopexit - %i.1385 = phi i64 [ %dec117, %for.cond114.loopexit ], [ %42, %if.then111 ] + %i.1385 = phi i64 [ %dec117, %for.cond114.loopexit ], [ %41, %if.then111 ] %dec117 = add i64 %i.1385, -1 %arrayidx125.idx = shl i64 %dec117, 8 br label %for.body120 for.body120: ; preds = %for.body116, %for.body120 %j.0383 = phi i64 [ 0, %for.body116 ], [ %inc127, %for.body120 ] - %43 = load ptr, ptr %literal_context_map341, align 8 - %arrayidx122 = getelementptr inbounds i32, ptr %43, i64 %dec117 - %44 = load i32, ptr %arrayidx122, align 4 - %45 = getelementptr i32, ptr %43, i64 %j.0383 - %arrayidx125 = getelementptr i8, ptr %45, i64 %arrayidx125.idx - store i32 %44, ptr %arrayidx125, align 4 + %42 = load ptr, ptr %literal_context_map341, align 8 + %arrayidx122 = getelementptr inbounds i32, ptr %42, i64 %dec117 + %43 = load i32, ptr %arrayidx122, align 4 + %44 = getelementptr i32, ptr %42, i64 %j.0383 + %arrayidx125 = getelementptr i8, ptr %44, i64 %arrayidx125.idx + store i32 %43, ptr %arrayidx125, align 4 %inc127 = add nuw nsw i64 %j.0383, 1 %exitcond397.not = icmp eq i64 %inc127, 64 br i1 %exitcond397.not, label %for.cond114.loopexit, label %for.body120, !llvm.loop !15 if.end130: ; preds = %for.cond114.loopexit, %if.then111, %cond.end103 - %46 = load i64, ptr %distance_split, align 8 - %shl133 = shl i64 %46, 2 + %45 = load i64, ptr %distance_split, align 8 + %shl133 = shl i64 %45, 2 %distance_context_map_size = getelementptr inbounds i8, ptr %mb, i64 168 store i64 %shl133, ptr %distance_context_map_size, align 8 %cmp135.not = icmp eq i64 %shl133, 0 @@ -777,7 +777,7 @@ cond.end141.thread: ; preds = %if.end130 br label %cond.end152 cond.end141: ; preds = %if.end130 - %mul138 = shl i64 %46, 4 + %mul138 = shl i64 %45, 4 %call139 = tail call ptr @BrotliAllocate(ptr noundef %m, i64 noundef %mul138) #9 %.pr343 = load i64, ptr %distance_context_map_size, align 8 %distance_context_map = getelementptr inbounds i8, ptr %mb, i64 160 @@ -795,13 +795,13 @@ cond.true147: ; preds = %cond.end141 br label %cond.end152 cond.end152: ; preds = %cond.end141.thread, %cond.end141, %cond.true147 - %47 = phi ptr [ %.pre403, %cond.true147 ], [ %call139, %cond.end141 ], [ null, %cond.end141.thread ] - %48 = phi i64 [ %.pre402, %cond.true147 ], [ 0, %cond.end141 ], [ 0, %cond.end141.thread ] + %46 = phi ptr [ %.pre403, %cond.true147 ], [ %call139, %cond.end141 ], [ null, %cond.end141.thread ] + %47 = phi i64 [ %.pre402, %cond.true147 ], [ 0, %cond.end141 ], [ 0, %cond.end141.thread ] %distance_histograms_size144349 = phi ptr [ %distance_histograms_size144, %cond.true147 ], [ %distance_histograms_size144, %cond.end141 ], [ %distance_histograms_size144346, %cond.end141.thread ] %cond153 = phi ptr [ %call150, %cond.true147 ], [ null, %cond.end141 ], [ null, %cond.end141.thread ] %distance_histograms154 = getelementptr inbounds i8, ptr %mb, i64 208 store ptr %cond153, ptr %distance_histograms154, align 8 - tail call void @BrotliClusterHistogramsDistance(ptr noundef %m, ptr noundef %cond64409, i64 noundef %48, i64 noundef 256, ptr noundef %cond153, ptr noundef nonnull %distance_histograms_size144349, ptr noundef %47) #9 + tail call void @BrotliClusterHistogramsDistance(ptr noundef %m, ptr noundef %cond64409, i64 noundef %47, i64 noundef 256, ptr noundef %cond153, ptr noundef nonnull %distance_histograms_size144349, ptr noundef %46) #9 tail call void @BrotliFree(ptr noundef %m, ptr noundef %cond64409) #9 ret void } diff --git a/bench/casadi/optimized/split.cpp.ll b/bench/casadi/optimized/split.cpp.ll index 364a53f82bc..95d5869b662 100644 --- a/bench/casadi/optimized/split.cpp.ll +++ b/bench/casadi/optimized/split.cpp.ll @@ -1401,13 +1401,15 @@ define noundef i32 @_ZNK6casadi5Split7eval_sxEPPKNS_6SXElemEPPS1_PxS5_(ptr nocap %22 = getelementptr inbounds i64, ptr %20, i64 %.015.i %23 = load i64, ptr %22, align 8 %24 = load i64, ptr %21, align 8 - %25 = sub nsw i64 %24, %23 + %.idx14.i = shl nsw i64 %23, 3 + %.idx.i = shl nsw i64 %24, 3 + %gepdiff.i = sub nsw i64 %.idx.i, %.idx14.i + %25 = ashr exact i64 %gepdiff.i, 3 %26 = icmp sgt i64 %25, 0 br i1 %26, label %.lr.ph.i.i.i.i.i.preheader.i, label %_ZSt4copyIPKN6casadi6SXElemEPS1_ET0_T_S6_S5_.exit.i .lr.ph.i.i.i.i.i.preheader.i: ; preds = %19 %27 = load ptr, ptr %1, align 8 - %.idx14.i = shl nsw i64 %23, 3 %28 = getelementptr inbounds i8, ptr %27, i64 %.idx14.i br label %.lr.ph.i.i.i.i.i.i diff --git a/bench/ceres/optimized/partitioned_matrix_view_2_2_2.cc.ll b/bench/ceres/optimized/partitioned_matrix_view_2_2_2.cc.ll index afbb43beff3..0bd98d71c4b 100644 --- a/bench/ceres/optimized/partitioned_matrix_view_2_2_2.cc.ll +++ b/bench/ceres/optimized/partitioned_matrix_view_2_2_2.cc.ll @@ -5238,13 +5238,14 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit: ; preds = %16, %_ZNSt6vectorIi .lr.ph: ; preds = %_ZNSt6vectorIiSaIiEE9push_backERKi.exit %42 = sext i32 %2 to i64 %43 = sext i32 %1 to i64 + %.idx = mul nsw i64 %43, 40 %44 = ptrtoint ptr %5 to i64 br label %45 45: ; preds = %.lr.ph, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 - %46 = phi ptr [ %41, %.lr.ph ], [ %98, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 ] - %.021.in.sroa.speculated45 = phi i32 [ %0, %.lr.ph ], [ %69, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 ] - %.02244 = phi i32 [ %4, %.lr.ph ], [ %75, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 ] + %46 = phi ptr [ %41, %.lr.ph ], [ %99, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 ] + %.021.in.sroa.speculated44 = phi i32 [ %0, %.lr.ph ], [ %70, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 ] + %.02243 = phi i32 [ %4, %.lr.ph ], [ %76, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 ] %47 = load ptr, ptr %7, align 8 %48 = ptrtoint ptr %46 to i64 %49 = ptrtoint ptr %47 to i64 @@ -5254,110 +5255,114 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit: ; preds = %16, %_ZNSt6vectorIi br i1 %52, label %._crit_edge, label %53 53: ; preds = %45 - %54 = add nsw i32 %.02244, %3 - %55 = sext i32 %.021.in.sroa.speculated45 to i64 + %54 = add nsw i32 %.02243, %3 + %55 = sext i32 %.021.in.sroa.speculated44 to i64 %.idx41 = mul nsw i64 %55, 40 %56 = getelementptr inbounds i8, ptr %5, i64 %.idx41 - %.idx42 = sub nsw i64 %43, %55 - %57 = icmp sgt i64 %.idx42, 0 - br i1 %57, label %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i, label %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit - -_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i: ; preds = %53, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i - %.016.i = phi ptr [ %.1.i, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i ], [ %56, %53 ] - %.01015.i = phi i64 [ %.111.i, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i ], [ %.idx42, %53 ] - %58 = lshr i64 %.01015.i, 1 - %59 = getelementptr inbounds %"struct.ceres::internal::CompressedList", ptr %.016.i, i64 %58 - %60 = getelementptr inbounds i8, ptr %59, i64 36 - %61 = load i32, ptr %60, align 4 - %.not.i25 = icmp sgt i32 %61, %54 - %62 = getelementptr inbounds i8, ptr %59, i64 40 - %63 = xor i64 %58, -1 - %64 = add nsw i64 %.01015.i, %63 - %.111.i = select i1 %.not.i25, i64 %58, i64 %64 - %.1.i = select i1 %.not.i25, ptr %.016.i, ptr %62 - %65 = icmp sgt i64 %.111.i, 0 - br i1 %65, label %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i, label %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit, !llvm.loop !47 + %gepdiff = sub nsw i64 %.idx, %.idx41 + %57 = icmp sgt i64 %gepdiff, 0 + br i1 %57, label %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.preheader.i, label %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit + +_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.preheader.i: ; preds = %53 + %58 = udiv exact i64 %gepdiff, 40 + br label %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i + +_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i: ; preds = %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.preheader.i + %.016.i = phi ptr [ %.1.i, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i ], [ %56, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.preheader.i ] + %.01015.i = phi i64 [ %.111.i, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i ], [ %58, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.preheader.i ] + %59 = lshr i64 %.01015.i, 1 + %60 = getelementptr inbounds %"struct.ceres::internal::CompressedList", ptr %.016.i, i64 %59 + %61 = getelementptr inbounds i8, ptr %60, i64 36 + %62 = load i32, ptr %61, align 4 + %.not.i25 = icmp sgt i32 %62, %54 + %63 = getelementptr inbounds i8, ptr %60, i64 40 + %64 = xor i64 %59, -1 + %65 = add nsw i64 %.01015.i, %64 + %.111.i = select i1 %.not.i25, i64 %59, i64 %65 + %.1.i = select i1 %.not.i25, ptr %.016.i, ptr %63 + %66 = icmp sgt i64 %.111.i, 0 + br i1 %66, label %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i, label %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit, !llvm.loop !47 _ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit: ; preds = %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i, %53 %.0.lcssa.i = phi ptr [ %56, %53 ], [ %.1.i, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i ] - %66 = ptrtoint ptr %.0.lcssa.i to i64 - %67 = sub i64 %66, %44 - %68 = sdiv exact i64 %67, 40 - %69 = trunc i64 %68 to i32 - %70 = icmp eq i32 %.021.in.sroa.speculated45, %69 - br i1 %70, label %._crit_edge, label %71 - -71: ; preds = %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit - %72 = shl i64 %68, 32 - %sext = add i64 %72, -4294967296 - %73 = ashr exact i64 %sext, 32 - %74 = getelementptr inbounds %"struct.ceres::internal::CompressedList", ptr %5, i64 %73, i32 3 - %75 = load i32, ptr %74, align 4 - %76 = load ptr, ptr %14, align 8 - %.not.i26 = icmp eq ptr %46, %76 - br i1 %.not.i26, label %80, label %77 - -77: ; preds = %71 - store i32 %69, ptr %46, align 4 - %78 = load ptr, ptr %10, align 8 - %79 = getelementptr inbounds i8, ptr %78, i64 4 - store ptr %79, ptr %10, align 8 + %67 = ptrtoint ptr %.0.lcssa.i to i64 + %68 = sub i64 %67, %44 + %69 = sdiv exact i64 %68, 40 + %70 = trunc i64 %69 to i32 + %71 = icmp eq i32 %.021.in.sroa.speculated44, %70 + br i1 %71, label %._crit_edge, label %72 + +72: ; preds = %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit + %73 = shl i64 %69, 32 + %sext = add i64 %73, -4294967296 + %74 = ashr exact i64 %sext, 32 + %75 = getelementptr inbounds %"struct.ceres::internal::CompressedList", ptr %5, i64 %74, i32 3 + %76 = load i32, ptr %75, align 4 + %77 = load ptr, ptr %14, align 8 + %.not.i26 = icmp eq ptr %46, %77 + br i1 %.not.i26, label %81, label %78 + +78: ; preds = %72 + store i32 %70, ptr %46, align 4 + %79 = load ptr, ptr %10, align 8 + %80 = getelementptr inbounds i8, ptr %79, i64 4 + store ptr %80, ptr %10, align 8 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 -80: ; preds = %71 - %81 = icmp eq i64 %50, 9223372036854775804 - br i1 %81, label %82, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 +81: ; preds = %72 + %82 = icmp eq i64 %50, 9223372036854775804 + br i1 %82, label %83, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 -82: ; preds = %80 +83: ; preds = %81 tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.14) #18 unreachable -_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27: ; preds = %80 +_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27: ; preds = %81 %.sroa.speculated.i.i.i28 = tail call i64 @llvm.umax.i64(i64 %51, i64 1) - %83 = add nsw i64 %.sroa.speculated.i.i.i28, %51 - %84 = icmp ult i64 %83, %51 - %85 = tail call i64 @llvm.umin.i64(i64 %83, i64 2305843009213693951) - %86 = select i1 %84, i64 2305843009213693951, i64 %85 - %.not.i.i.i29 = icmp eq i64 %86, 0 - br i1 %.not.i.i.i29, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30, label %87 - -87: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 - %88 = shl nuw nsw i64 %86, 2 - %89 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %88) #19 + %84 = add nsw i64 %.sroa.speculated.i.i.i28, %51 + %85 = icmp ult i64 %84, %51 + %86 = tail call i64 @llvm.umin.i64(i64 %84, i64 2305843009213693951) + %87 = select i1 %85, i64 2305843009213693951, i64 %86 + %.not.i.i.i29 = icmp eq i64 %87, 0 + br i1 %.not.i.i.i29, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30, label %88 + +88: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 + %89 = shl nuw nsw i64 %87, 2 + %90 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %89) #19 br label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30 -_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30: ; preds = %87, %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 - %90 = phi ptr [ %89, %87 ], [ null, %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 ] - %91 = getelementptr inbounds i32, ptr %90, i64 %51 - store i32 %69, ptr %91, align 4 - %92 = icmp sgt i64 %50, 0 - br i1 %92, label %93, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31 +_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30: ; preds = %88, %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 + %91 = phi ptr [ %90, %88 ], [ null, %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 ] + %92 = getelementptr inbounds i32, ptr %91, i64 %51 + store i32 %70, ptr %92, align 4 + %93 = icmp sgt i64 %50, 0 + br i1 %93, label %94, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31 -93: ; preds = %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %90, ptr align 4 %47, i64 %50, i1 false) +94: ; preds = %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %91, ptr align 4 %47, i64 %50, i1 false) br label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31 -_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31: ; preds = %93, %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30 - %94 = getelementptr inbounds i8, ptr %90, i64 %50 - %95 = getelementptr inbounds i8, ptr %94, i64 4 +_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31: ; preds = %94, %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30 + %95 = getelementptr inbounds i8, ptr %91, i64 %50 + %96 = getelementptr inbounds i8, ptr %95, i64 4 %.not.i17.i.i32 = icmp eq ptr %47, null - br i1 %.not.i17.i.i32, label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33, label %96 + br i1 %.not.i17.i.i32, label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33, label %97 -96: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31 +97: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31 tail call void @_ZdlPv(ptr noundef nonnull %47) #21 br label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33 -_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33: ; preds = %96, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31 - store ptr %90, ptr %7, align 8 - store ptr %95, ptr %10, align 8 - %97 = getelementptr inbounds i32, ptr %90, i64 %86 - store ptr %97, ptr %14, align 8 +_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33: ; preds = %97, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31 + store ptr %91, ptr %7, align 8 + store ptr %96, ptr %10, align 8 + %98 = getelementptr inbounds i32, ptr %91, i64 %87 + store ptr %98, ptr %14, align 8 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 -_ZNSt6vectorIiSaIiEE9push_backERKi.exit34: ; preds = %77, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33 - %98 = phi ptr [ %79, %77 ], [ %95, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33 ] - %.not49 = icmp sgt i32 %1, %69 - br i1 %.not49, label %45, label %._crit_edge, !llvm.loop !48 +_ZNSt6vectorIiSaIiEE9push_backERKi.exit34: ; preds = %78, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33 + %99 = phi ptr [ %80, %78 ], [ %96, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33 ] + %.not48 = icmp sgt i32 %1, %70 + br i1 %.not48, label %45, label %._crit_edge, !llvm.loop !48 ._crit_edge: ; preds = %45, %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit %.lcssa = phi i1 [ true, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ true, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 ], [ false, %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit ], [ false, %45 ] @@ -5455,13 +5460,14 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit: ; preds = %16, %_ZNSt6vectorIi .lr.ph: ; preds = %_ZNSt6vectorIiSaIiEE9push_backERKi.exit %42 = sext i32 %2 to i64 %43 = sext i32 %1 to i64 + %.idx = mul nsw i64 %43, 40 %44 = ptrtoint ptr %5 to i64 br label %45 45: ; preds = %.lr.ph, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 - %46 = phi ptr [ %41, %.lr.ph ], [ %98, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 ] - %.021.in.sroa.speculated45 = phi i32 [ %0, %.lr.ph ], [ %69, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 ] - %.02244 = phi i32 [ %4, %.lr.ph ], [ %75, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 ] + %46 = phi ptr [ %41, %.lr.ph ], [ %99, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 ] + %.021.in.sroa.speculated44 = phi i32 [ %0, %.lr.ph ], [ %70, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 ] + %.02243 = phi i32 [ %4, %.lr.ph ], [ %76, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 ] %47 = load ptr, ptr %7, align 8 %48 = ptrtoint ptr %46 to i64 %49 = ptrtoint ptr %47 to i64 @@ -5471,110 +5477,114 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit: ; preds = %16, %_ZNSt6vectorIi br i1 %52, label %._crit_edge, label %53 53: ; preds = %45 - %54 = add nsw i32 %.02244, %3 - %55 = sext i32 %.021.in.sroa.speculated45 to i64 + %54 = add nsw i32 %.02243, %3 + %55 = sext i32 %.021.in.sroa.speculated44 to i64 %.idx41 = mul nsw i64 %55, 40 %56 = getelementptr inbounds i8, ptr %5, i64 %.idx41 - %.idx42 = sub nsw i64 %43, %55 - %57 = icmp sgt i64 %.idx42, 0 - br i1 %57, label %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i, label %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E0_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit - -_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i: ; preds = %53, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i - %.016.i = phi ptr [ %.1.i, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i ], [ %56, %53 ] - %.01015.i = phi i64 [ %.111.i, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i ], [ %.idx42, %53 ] - %58 = lshr i64 %.01015.i, 1 - %59 = getelementptr inbounds %"struct.ceres::internal::CompressedList", ptr %.016.i, i64 %58 - %60 = getelementptr inbounds i8, ptr %59, i64 36 - %61 = load i32, ptr %60, align 4 - %.not.i25 = icmp sgt i32 %61, %54 - %62 = getelementptr inbounds i8, ptr %59, i64 40 - %63 = xor i64 %58, -1 - %64 = add nsw i64 %.01015.i, %63 - %.111.i = select i1 %.not.i25, i64 %58, i64 %64 - %.1.i = select i1 %.not.i25, ptr %.016.i, ptr %62 - %65 = icmp sgt i64 %.111.i, 0 - br i1 %65, label %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i, label %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E0_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit, !llvm.loop !49 + %gepdiff = sub nsw i64 %.idx, %.idx41 + %57 = icmp sgt i64 %gepdiff, 0 + br i1 %57, label %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.preheader.i, label %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E0_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit + +_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.preheader.i: ; preds = %53 + %58 = udiv exact i64 %gepdiff, 40 + br label %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i + +_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i: ; preds = %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.preheader.i + %.016.i = phi ptr [ %.1.i, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i ], [ %56, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.preheader.i ] + %.01015.i = phi i64 [ %.111.i, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i ], [ %58, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.preheader.i ] + %59 = lshr i64 %.01015.i, 1 + %60 = getelementptr inbounds %"struct.ceres::internal::CompressedList", ptr %.016.i, i64 %59 + %61 = getelementptr inbounds i8, ptr %60, i64 36 + %62 = load i32, ptr %61, align 4 + %.not.i25 = icmp sgt i32 %62, %54 + %63 = getelementptr inbounds i8, ptr %60, i64 40 + %64 = xor i64 %59, -1 + %65 = add nsw i64 %.01015.i, %64 + %.111.i = select i1 %.not.i25, i64 %59, i64 %65 + %.1.i = select i1 %.not.i25, ptr %.016.i, ptr %63 + %66 = icmp sgt i64 %.111.i, 0 + br i1 %66, label %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i, label %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E0_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit, !llvm.loop !49 _ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E0_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit: ; preds = %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i, %53 %.0.lcssa.i = phi ptr [ %56, %53 ], [ %.1.i, %_ZSt7advanceIPKN5ceres8internal14CompressedListElEvRT_T0_.exit.i ] - %66 = ptrtoint ptr %.0.lcssa.i to i64 - %67 = sub i64 %66, %44 - %68 = sdiv exact i64 %67, 40 - %69 = trunc i64 %68 to i32 - %70 = icmp eq i32 %.021.in.sroa.speculated45, %69 - br i1 %70, label %._crit_edge, label %71 - -71: ; preds = %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E0_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit - %72 = shl i64 %68, 32 - %sext = add i64 %72, -4294967296 - %73 = ashr exact i64 %sext, 32 - %74 = getelementptr inbounds %"struct.ceres::internal::CompressedList", ptr %5, i64 %73, i32 3 - %75 = load i32, ptr %74, align 4 - %76 = load ptr, ptr %14, align 8 - %.not.i26 = icmp eq ptr %46, %76 - br i1 %.not.i26, label %80, label %77 - -77: ; preds = %71 - store i32 %69, ptr %46, align 4 - %78 = load ptr, ptr %10, align 8 - %79 = getelementptr inbounds i8, ptr %78, i64 4 - store ptr %79, ptr %10, align 8 + %67 = ptrtoint ptr %.0.lcssa.i to i64 + %68 = sub i64 %67, %44 + %69 = sdiv exact i64 %68, 40 + %70 = trunc i64 %69 to i32 + %71 = icmp eq i32 %.021.in.sroa.speculated44, %70 + br i1 %71, label %._crit_edge, label %72 + +72: ; preds = %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E0_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit + %73 = shl i64 %69, 32 + %sext = add i64 %73, -4294967296 + %74 = ashr exact i64 %sext, 32 + %75 = getelementptr inbounds %"struct.ceres::internal::CompressedList", ptr %5, i64 %74, i32 3 + %76 = load i32, ptr %75, align 4 + %77 = load ptr, ptr %14, align 8 + %.not.i26 = icmp eq ptr %46, %77 + br i1 %.not.i26, label %81, label %78 + +78: ; preds = %72 + store i32 %70, ptr %46, align 4 + %79 = load ptr, ptr %10, align 8 + %80 = getelementptr inbounds i8, ptr %79, i64 4 + store ptr %80, ptr %10, align 8 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 -80: ; preds = %71 - %81 = icmp eq i64 %50, 9223372036854775804 - br i1 %81, label %82, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 +81: ; preds = %72 + %82 = icmp eq i64 %50, 9223372036854775804 + br i1 %82, label %83, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 -82: ; preds = %80 +83: ; preds = %81 tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.14) #18 unreachable -_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27: ; preds = %80 +_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27: ; preds = %81 %.sroa.speculated.i.i.i28 = tail call i64 @llvm.umax.i64(i64 %51, i64 1) - %83 = add nsw i64 %.sroa.speculated.i.i.i28, %51 - %84 = icmp ult i64 %83, %51 - %85 = tail call i64 @llvm.umin.i64(i64 %83, i64 2305843009213693951) - %86 = select i1 %84, i64 2305843009213693951, i64 %85 - %.not.i.i.i29 = icmp eq i64 %86, 0 - br i1 %.not.i.i.i29, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30, label %87 - -87: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 - %88 = shl nuw nsw i64 %86, 2 - %89 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %88) #19 + %84 = add nsw i64 %.sroa.speculated.i.i.i28, %51 + %85 = icmp ult i64 %84, %51 + %86 = tail call i64 @llvm.umin.i64(i64 %84, i64 2305843009213693951) + %87 = select i1 %85, i64 2305843009213693951, i64 %86 + %.not.i.i.i29 = icmp eq i64 %87, 0 + br i1 %.not.i.i.i29, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30, label %88 + +88: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 + %89 = shl nuw nsw i64 %87, 2 + %90 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %89) #19 br label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30 -_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30: ; preds = %87, %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 - %90 = phi ptr [ %89, %87 ], [ null, %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 ] - %91 = getelementptr inbounds i32, ptr %90, i64 %51 - store i32 %69, ptr %91, align 4 - %92 = icmp sgt i64 %50, 0 - br i1 %92, label %93, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31 +_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30: ; preds = %88, %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 + %91 = phi ptr [ %90, %88 ], [ null, %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i27 ] + %92 = getelementptr inbounds i32, ptr %91, i64 %51 + store i32 %70, ptr %92, align 4 + %93 = icmp sgt i64 %50, 0 + br i1 %93, label %94, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31 -93: ; preds = %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %90, ptr align 4 %47, i64 %50, i1 false) +94: ; preds = %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %91, ptr align 4 %47, i64 %50, i1 false) br label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31 -_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31: ; preds = %93, %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30 - %94 = getelementptr inbounds i8, ptr %90, i64 %50 - %95 = getelementptr inbounds i8, ptr %94, i64 4 +_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31: ; preds = %94, %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i30 + %95 = getelementptr inbounds i8, ptr %91, i64 %50 + %96 = getelementptr inbounds i8, ptr %95, i64 4 %.not.i17.i.i32 = icmp eq ptr %47, null - br i1 %.not.i17.i.i32, label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33, label %96 + br i1 %.not.i17.i.i32, label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33, label %97 -96: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31 +97: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31 tail call void @_ZdlPv(ptr noundef nonnull %47) #21 br label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33 -_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33: ; preds = %96, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31 - store ptr %90, ptr %7, align 8 - store ptr %95, ptr %10, align 8 - %97 = getelementptr inbounds i32, ptr %90, i64 %86 - store ptr %97, ptr %14, align 8 +_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33: ; preds = %97, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i31 + store ptr %91, ptr %7, align 8 + store ptr %96, ptr %10, align 8 + %98 = getelementptr inbounds i32, ptr %91, i64 %87 + store ptr %98, ptr %14, align 8 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 -_ZNSt6vectorIiSaIiEE9push_backERKi.exit34: ; preds = %77, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33 - %98 = phi ptr [ %79, %77 ], [ %95, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33 ] - %.not49 = icmp sgt i32 %1, %69 - br i1 %.not49, label %45, label %._crit_edge, !llvm.loop !50 +_ZNSt6vectorIiSaIiEE9push_backERKi.exit34: ; preds = %78, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33 + %99 = phi ptr [ %80, %78 ], [ %96, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i33 ] + %.not48 = icmp sgt i32 %1, %70 + br i1 %.not48, label %45, label %._crit_edge, !llvm.loop !50 ._crit_edge: ; preds = %45, %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E0_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit %.lcssa = phi i1 [ true, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ true, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit34 ], [ false, %_ZSt15partition_pointIPKN5ceres8internal14CompressedListEZNS1_26MaxPartitionCostIsFeasibleIS2_ZNS1_21PartitionedMatrixViewILi2ELi2ELi2EEC1ERKNS1_12LinearSolver7OptionsERKNS1_17BlockSparseMatrixEEUlRS3_E0_EEbiiiiiPKT_OT0_PSt6vectorIiSaIiEEEUlSF_E_ESH_SH_SH_SK_.exit ], [ false, %45 ] diff --git a/bench/ceres/optimized/schur_eliminator_d_d_d.cc.ll b/bench/ceres/optimized/schur_eliminator_d_d_d.cc.ll index 9d2471a9cb3..25ca82c9fd9 100644 --- a/bench/ceres/optimized/schur_eliminator_d_d_d.cc.ll +++ b/bench/ceres/optimized/schur_eliminator_d_d_d.cc.ll @@ -3227,11 +3227,11 @@ define weak_odr hidden void @_ZN5ceres8internal15SchurEliminatorILin1ELin1ELin1E .lr.ph.i.i.i.i.i.i.i.i.preheader: ; preds = %._crit_edge.i.i.i.i.i.i.i %60 = shl nsw i64 %58, 3 %scevgep = getelementptr i8, ptr %.sroa.064.476, i64 %60 - %61 = add nsw i64 %58, %38 - %62 = shl nsw i64 %61, 3 - %scevgep104 = getelementptr i8, ptr %3, i64 %62 - %63 = sub nsw i64 %41, %58 - %64 = shl nsw i64 %63, 3 + %61 = shl nsw i64 %38, 3 + %62 = getelementptr i8, ptr %3, i64 %60 + %scevgep104 = getelementptr i8, ptr %62, i64 %61 + %63 = shl nsw i64 %41, 3 + %64 = sub nsw i64 %63, %60 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep, ptr align 8 %scevgep104, i64 %64, i1 false) br label %.loopexit diff --git a/bench/clamav/optimized/mbr.c.ll b/bench/clamav/optimized/mbr.c.ll index 7b9544068b7..c9aab3c0bc2 100644 --- a/bench/clamav/optimized/mbr.c.ll +++ b/bench/clamav/optimized/mbr.c.ll @@ -363,10 +363,10 @@ mbr_check_mbr.exit: ; preds = %27, %30, %40, %41 %63 = getelementptr inbounds i8, ptr %3, i64 64 br label %64 -64: ; preds = %60, %167 - %indvars.iv = phi i64 [ 0, %60 ], [ %indvars.iv.next, %167 ] - %.056138 = phi i32 [ 0, %60 ], [ %.157, %167 ] - %.092137 = phi i32 [ 0, %60 ], [ %.1, %167 ] +64: ; preds = %60, %168 + %indvars.iv = phi i64 [ 0, %60 ], [ %indvars.iv.next, %168 ] + %.056138 = phi i32 [ 0, %60 ], [ %.157, %168 ] + %.092137 = phi i32 [ 0, %60 ], [ %.1, %168 ] %65 = load ptr, ptr %62, align 8 %66 = getelementptr inbounds i8, ptr %65, i64 1152 %67 = load i32, ptr %66, align 8 @@ -393,14 +393,14 @@ mbr_check_mbr.exit: ; preds = %27, %30, %40, %41 %83 = zext i32 %80 to i64 %84 = mul i64 %spec.store.select, %83 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.7, i32 noundef %78, i32 noundef %80, i64 noundef %82, i64 noundef %84) #6 - switch i8 %75, label %163 [ + switch i8 %75, label %164 [ i8 0, label %85 i8 5, label %87 ] 85: ; preds = %69 %86 = add nuw i32 %.092137, 1 - br label %167 + br label %168 87: ; preds = %69 %88 = icmp eq i32 %.056138, 2 @@ -412,268 +412,267 @@ mbr_check_mbr.exit: ; preds = %27, %30, %40, %41 90: ; preds = %89, %87 call void @llvm.lifetime.start.p0(i64 66, ptr nonnull %3) - %91 = add nuw nsw i64 %83, %81 - %92 = mul i64 %91, %spec.store.select + %91 = add i64 %82, %17 + %92 = add i64 %84, %82 br label %93 -93: ; preds = %158, %90 - %.2 = phi i32 [ %.092137, %90 ], [ %111, %158 ] - %.062.i = phi i64 [ 0, %90 ], [ %.16398.i.ph, %158 ] - %.057.i = phi i32 [ 0, %90 ], [ %112, %158 ] - %reass.add.i = add nuw nsw i64 %.062.i, %81 - %reass.mul.i = mul i64 %reass.add.i, %spec.store.select - %94 = add i64 %reass.mul.i, %17 - %95 = load ptr, ptr %6, align 8 - %96 = getelementptr inbounds i8, ptr %95, i64 88 - %97 = load i64, ptr %96, align 8 - %or.cond.not.i = icmp ult i64 %94, %97 - br i1 %or.cond.not.i, label %98, label %fmap_readn.exit.thread.i - -98: ; preds = %93 - %99 = sub nuw i64 %97, %94 - %spec.select.i.i = tail call i64 @llvm.umin.i64(i64 %99, i64 66) - %100 = getelementptr inbounds i8, ptr %95, i64 104 - %101 = load ptr, ptr %100, align 8 - %102 = tail call ptr %101(ptr noundef nonnull %95, i64 noundef %94, i64 noundef %spec.select.i.i, i32 noundef 0) #6 - %.not26.i.i = icmp eq ptr %102, null +93: ; preds = %159, %90 + %.2 = phi i32 [ %.092137, %90 ], [ %112, %159 ] + %.062.i = phi i64 [ 0, %90 ], [ %.16398.i.ph, %159 ] + %.057.i = phi i32 [ 0, %90 ], [ %113, %159 ] + %94 = mul i64 %.062.i, %spec.store.select + %95 = add i64 %91, %94 + %96 = load ptr, ptr %6, align 8 + %97 = getelementptr inbounds i8, ptr %96, i64 88 + %98 = load i64, ptr %97, align 8 + %or.cond.not.i = icmp ult i64 %95, %98 + br i1 %or.cond.not.i, label %99, label %fmap_readn.exit.thread.i + +99: ; preds = %93 + %100 = sub nuw i64 %98, %95 + %spec.select.i.i = tail call i64 @llvm.umin.i64(i64 %100, i64 66) + %101 = getelementptr inbounds i8, ptr %96, i64 104 + %102 = load ptr, ptr %101, align 8 + %103 = tail call ptr %102(ptr noundef nonnull %96, i64 noundef %95, i64 noundef %spec.select.i.i, i32 noundef 0) #6 + %.not26.i.i = icmp eq ptr %103, null br i1 %.not26.i.i, label %fmap_readn.exit.thread.i, label %fmap_readn.exit.i -fmap_readn.exit.i: ; preds = %98 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %3, ptr nonnull align 1 %102, i64 %spec.select.i.i, i1 false) - %.not.i82 = icmp ugt i64 %99, 65 - br i1 %.not.i82, label %103, label %fmap_readn.exit.thread.i +fmap_readn.exit.i: ; preds = %99 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %3, ptr nonnull align 1 %103, i64 %spec.select.i.i, i1 false) + %.not.i82 = icmp ugt i64 %100, 65 + br i1 %.not.i82, label %104, label %fmap_readn.exit.thread.i -fmap_readn.exit.thread.i: ; preds = %fmap_readn.exit.i, %98, %93 +fmap_readn.exit.thread.i: ; preds = %fmap_readn.exit.i, %99, %93 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10) #6 br label %mbr_scanextprtn.exit.thread -103: ; preds = %fmap_readn.exit.i - %104 = load i16, ptr %63, align 1 - %rev.i.i = tail call i16 @llvm.bswap.i16(i16 %104) +104: ; preds = %fmap_readn.exit.i + %105 = load i16, ptr %63, align 1 + %rev.i.i = tail call i16 @llvm.bswap.i16(i16 %105) store i16 %rev.i.i, ptr %63, align 1 - br label %105 - -105: ; preds = %108, %103 - %106 = phi i1 [ true, %103 ], [ false, %108 ] - %indvars.iv.i.sroa.phi.i = phi ptr [ %3, %103 ], [ %indvars.iv.i.sroa.gep76.i, %108 ] - %107 = load i8, ptr %indvars.iv.i.sroa.phi.i, align 1 - switch i8 %107, label %mbr_check_ebr.exit.i [ - i8 0, label %108 - i8 -128, label %108 + br label %106 + +106: ; preds = %109, %104 + %107 = phi i1 [ true, %104 ], [ false, %109 ] + %indvars.iv.i.sroa.phi.i = phi ptr [ %3, %104 ], [ %indvars.iv.i.sroa.gep76.i, %109 ] + %108 = load i8, ptr %indvars.iv.i.sroa.phi.i, align 1 + switch i8 %108, label %mbr_check_ebr.exit.i [ + i8 0, label %109 + i8 -128, label %109 ] -108: ; preds = %105, %105 - br i1 %106, label %105, label %109 +109: ; preds = %106, %106 + br i1 %107, label %106, label %110 -109: ; preds = %108 - %.not.i75.i = icmp eq i16 %104, -21931 - br i1 %.not.i75.i, label %110, label %mbr_check_ebr.exit.i +110: ; preds = %109 + %.not.i75.i = icmp eq i16 %105, -21931 + br i1 %.not.i75.i, label %111, label %mbr_check_ebr.exit.i -mbr_check_ebr.exit.i: ; preds = %109, %105 - %.str.25.sink.i.i = phi ptr [ @.str.24, %105 ], [ @.str.25, %109 ] +mbr_check_ebr.exit.i: ; preds = %110, %106 + %.str.25.sink.i.i = phi ptr [ @.str.24, %106 ], [ @.str.25, %110 ] tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull %.str.25.sink.i.i) #6 br label %mbr_scanextprtn.exit.thread -110: ; preds = %109 - %111 = add i32 %.2, 1 - %112 = add i32 %.057.i, 1 +111: ; preds = %110 + %112 = add i32 %.2, 1 + %113 = add i32 %.057.i, 1 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.11, i32 noundef %.057.i) #6 - %113 = zext nneg i16 %rev.i.i to i32 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.12, i32 noundef %113) #6 + %114 = zext nneg i16 %rev.i.i to i32 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.12, i32 noundef %114) #6 br label %.backedge.i.outer -.backedge.i.outer: ; preds = %.backedge.i.outer.backedge, %110 - %indvars.iv.i83.ph = phi i64 [ 0, %110 ], [ %indvars.iv.i83.ph.be, %.backedge.i.outer.backedge ] - %.05999.i.ph = phi i32 [ 0, %110 ], [ %.05999.i.ph.be, %.backedge.i.outer.backedge ] - %.16398.i.ph = phi i64 [ %.062.i, %110 ], [ %.16398.i.ph.be, %.backedge.i.outer.backedge ] +.backedge.i.outer: ; preds = %.backedge.i.outer.backedge, %111 + %indvars.iv.i83.ph = phi i64 [ 0, %111 ], [ %indvars.iv.i83.ph.be, %.backedge.i.outer.backedge ] + %.05999.i.ph = phi i32 [ 0, %111 ], [ %.05999.i.ph.be, %.backedge.i.outer.backedge ] + %.16398.i.ph = phi i64 [ %.062.i, %111 ], [ %.16398.i.ph.be, %.backedge.i.outer.backedge ] br label %.backedge.i -.backedge.i: ; preds = %.backedge.i.outer, %156 - %indvars.iv.i83 = phi i64 [ %indvars.iv.next.i84, %156 ], [ %indvars.iv.i83.ph, %.backedge.i.outer ] - %114 = icmp ult i64 %indvars.iv.i83, 2 - br i1 %114, label %115, label %151 - -115: ; preds = %.backedge.i - %116 = trunc nuw nsw i64 %indvars.iv.i83 to i32 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.13, i32 noundef %116) #6 - %117 = getelementptr inbounds [4 x %struct.mbr_partition_entry], ptr %3, i64 0, i64 %indvars.iv.i83 - %118 = load i8, ptr %117, align 1 - %119 = zext i8 %118 to i32 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.5, i32 noundef %119) #6 - %120 = getelementptr inbounds i8, ptr %117, i64 4 - %121 = load i8, ptr %120, align 1 - %122 = zext i8 %121 to i32 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.6, i32 noundef %122) #6 - %123 = getelementptr inbounds i8, ptr %117, i64 8 - %124 = load i32, ptr %123, align 1 - %125 = getelementptr inbounds i8, ptr %117, i64 12 - %126 = load i32, ptr %125, align 1 - %127 = zext i32 %124 to i64 - %128 = mul i64 %spec.store.select, %127 - %129 = zext i32 %126 to i64 - %130 = mul i64 %spec.store.select, %129 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.14, i32 noundef %124, i32 noundef %126, i64 noundef %128, i64 noundef %130) #6 - switch i8 %121, label %138 [ - i8 0, label %131 - i8 5, label %134 +.backedge.i: ; preds = %.backedge.i.outer, %157 + %indvars.iv.i83 = phi i64 [ %indvars.iv.next.i84, %157 ], [ %indvars.iv.i83.ph, %.backedge.i.outer ] + %115 = icmp ult i64 %indvars.iv.i83, 2 + br i1 %115, label %116, label %152 + +116: ; preds = %.backedge.i + %117 = trunc nuw nsw i64 %indvars.iv.i83 to i32 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.13, i32 noundef %117) #6 + %118 = getelementptr inbounds [4 x %struct.mbr_partition_entry], ptr %3, i64 0, i64 %indvars.iv.i83 + %119 = load i8, ptr %118, align 1 + %120 = zext i8 %119 to i32 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.5, i32 noundef %120) #6 + %121 = getelementptr inbounds i8, ptr %118, i64 4 + %122 = load i8, ptr %121, align 1 + %123 = zext i8 %122 to i32 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.6, i32 noundef %123) #6 + %124 = getelementptr inbounds i8, ptr %118, i64 8 + %125 = load i32, ptr %124, align 1 + %126 = getelementptr inbounds i8, ptr %118, i64 12 + %127 = load i32, ptr %126, align 1 + %128 = zext i32 %125 to i64 + %129 = mul i64 %spec.store.select, %128 + %130 = zext i32 %127 to i64 + %131 = mul i64 %spec.store.select, %130 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.14, i32 noundef %125, i32 noundef %127, i64 noundef %129, i64 noundef %131) #6 + switch i8 %122, label %139 [ + i8 0, label %132 + i8 5, label %135 ] -131: ; preds = %115 +132: ; preds = %116 switch i32 %.05999.i.ph, label %default.unreachable [ i32 0, label %.backedge.i.outer.backedge i32 1, label %.thread.i - i32 3, label %132 - i32 2, label %133 + i32 3, label %133 + i32 2, label %134 ] -132: ; preds = %131 - br label %133 +133: ; preds = %132 + br label %134 -133: ; preds = %132, %131 - %.264.i = phi i64 [ %.16398.i.ph, %131 ], [ 0, %132 ] +134: ; preds = %133, %132 + %.264.i = phi i64 [ %.16398.i.ph, %132 ], [ 0, %133 ] tail call void (ptr, ...) @cli_warnmsg(ptr noundef nonnull @.str.15) #6 br label %.backedge.i.outer.backedge -default.unreachable: ; preds = %138, %134, %131 +default.unreachable: ; preds = %139, %135, %132 unreachable -134: ; preds = %115 +135: ; preds = %116 switch i32 %.05999.i.ph, label %default.unreachable [ - i32 0, label %135 + i32 0, label %136 i32 1, label %.backedge.i.outer.backedge - i32 3, label %136 - i32 2, label %137 + i32 3, label %137 + i32 2, label %138 ] -135: ; preds = %134 +136: ; preds = %135 br label %.backedge.i.outer.backedge -136: ; preds = %134 +137: ; preds = %135 tail call void (ptr, ...) @cli_warnmsg(ptr noundef nonnull @.str.15) #6 br label %.backedge.i.outer.backedge -137: ; preds = %134 +138: ; preds = %135 tail call void (ptr, ...) @cli_warnmsg(ptr noundef nonnull @.str.17) #6 br label %mbr_scanextprtn.exit.thread -138: ; preds = %115 +139: ; preds = %116 switch i32 %.05999.i.ph, label %default.unreachable [ - i32 0, label %141 + i32 0, label %142 i32 1, label %.sink.split.i86 - i32 2, label %139 - i32 3, label %140 + i32 2, label %140 + i32 3, label %141 ] -139: ; preds = %138 +140: ; preds = %139 br label %.sink.split.i86 -140: ; preds = %138 +141: ; preds = %139 br label %.sink.split.i86 -.sink.split.i86: ; preds = %140, %139, %138 - %.str.20.sink.i = phi ptr [ @.str.20, %140 ], [ @.str.19, %139 ], [ @.str.18, %138 ] - %.365.ph.i = phi i64 [ 0, %140 ], [ %.16398.i.ph, %139 ], [ 0, %138 ] +.sink.split.i86: ; preds = %141, %140, %139 + %.str.20.sink.i = phi ptr [ @.str.20, %141 ], [ @.str.19, %140 ], [ @.str.18, %139 ] + %.365.ph.i = phi i64 [ 0, %141 ], [ %.16398.i.ph, %140 ], [ 0, %139 ] tail call void (ptr, ...) @cli_warnmsg(ptr noundef nonnull %.str.20.sink.i) #6 - br label %141 - -141: ; preds = %.sink.split.i86, %138 - %.365.i = phi i64 [ %.16398.i.ph, %138 ], [ %.365.ph.i, %.sink.split.i86 ] - %.261.i = phi i32 [ 1, %138 ], [ %.05999.i.ph, %.sink.split.i86 ] - %142 = add nuw nsw i64 %127, %81 - %143 = add nuw nsw i64 %142, %.365.i - %144 = mul i64 %143, %spec.store.select - %145 = add i64 %144, %130 - %146 = icmp ugt i64 %145, %92 - br i1 %146, label %147, label %148 - -147: ; preds = %141 + br label %142 + +142: ; preds = %.sink.split.i86, %139 + %.365.i = phi i64 [ %.16398.i.ph, %139 ], [ %.365.ph.i, %.sink.split.i86 ] + %.261.i = phi i32 [ 1, %139 ], [ %.05999.i.ph, %.sink.split.i86 ] + %143 = add nuw nsw i64 %128, %81 + %144 = add nuw nsw i64 %143, %.365.i + %145 = mul i64 %144, %spec.store.select + %146 = add i64 %145, %131 + %147 = icmp ugt i64 %146, %92 + br i1 %147, label %148, label %149 + +148: ; preds = %142 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.21) #6 br label %mbr_scanextprtn.exit.thread -148: ; preds = %141 - %149 = load ptr, ptr %6, align 8 - %150 = tail call i32 @cli_magic_scan_nested_fmap_type(ptr noundef %149, i64 noundef %144, i64 noundef %130, ptr noundef nonnull %0, i32 noundef 557, ptr noundef null, i32 noundef 0) #6 - %.not74.i = icmp eq i32 %150, 0 +149: ; preds = %142 + %150 = load ptr, ptr %6, align 8 + %151 = tail call i32 @cli_magic_scan_nested_fmap_type(ptr noundef %150, i64 noundef %145, i64 noundef %131, ptr noundef nonnull %0, i32 noundef 557, ptr noundef null, i32 noundef 0) #6 + %.not74.i = icmp eq i32 %151, 0 br i1 %.not74.i, label %.backedge.i.outer.backedge, label %mbr_scanextprtn.exit.thread -151: ; preds = %.backedge.i - %152 = getelementptr inbounds [4 x %struct.mbr_partition_entry], ptr %3, i64 0, i64 %indvars.iv.i83, i32 2 - %153 = load i8, ptr %152, align 1 - %.not73.i = icmp eq i8 %153, 0 - br i1 %.not73.i, label %156, label %154 +152: ; preds = %.backedge.i + %153 = getelementptr inbounds [4 x %struct.mbr_partition_entry], ptr %3, i64 0, i64 %indvars.iv.i83, i32 2 + %154 = load i8, ptr %153, align 1 + %.not73.i = icmp eq i8 %154, 0 + br i1 %.not73.i, label %157, label %155 -154: ; preds = %151 - %155 = trunc nuw nsw i64 %indvars.iv.i83 to i32 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.22, i32 noundef %155) #6 +155: ; preds = %152 + %156 = trunc nuw nsw i64 %indvars.iv.i83 to i32 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.22, i32 noundef %156) #6 br label %mbr_scanextprtn.exit.thread -156: ; preds = %151 +157: ; preds = %152 %indvars.iv.next.i84 = add nuw nsw i64 %indvars.iv.i83, 1 %exitcond.not.i85 = icmp eq i64 %indvars.iv.next.i84, 4 - br i1 %exitcond.not.i85, label %157, label %.backedge.i + br i1 %exitcond.not.i85, label %158, label %.backedge.i -.thread.i: ; preds = %131 +.thread.i: ; preds = %132 br label %.backedge.i.outer.backedge -.backedge.i.outer.backedge: ; preds = %131, %133, %134, %135, %136, %148, %.thread.i - %.05999.i.ph.be = phi i32 [ 1, %.thread.i ], [ 2, %135 ], [ 3, %136 ], [ %.05999.i.ph, %134 ], [ 3, %131 ], [ %.261.i, %148 ], [ %.05999.i.ph, %133 ] - %.16398.i.ph.be = phi i64 [ 0, %.thread.i ], [ %127, %135 ], [ %127, %136 ], [ %127, %134 ], [ %.16398.i.ph, %131 ], [ %.365.i, %148 ], [ %.264.i, %133 ] +.backedge.i.outer.backedge: ; preds = %132, %134, %135, %136, %137, %149, %.thread.i + %.05999.i.ph.be = phi i32 [ 1, %.thread.i ], [ 2, %136 ], [ 3, %137 ], [ %.05999.i.ph, %135 ], [ 3, %132 ], [ %.261.i, %149 ], [ %.05999.i.ph, %134 ] + %.16398.i.ph.be = phi i64 [ 0, %.thread.i ], [ %128, %136 ], [ %128, %137 ], [ %128, %135 ], [ %.16398.i.ph, %132 ], [ %.365.i, %149 ], [ %.264.i, %134 ] %indvars.iv.i83.ph.be = add nuw nsw i64 %indvars.iv.i83, 1 br label %.backedge.i.outer -157: ; preds = %156 +158: ; preds = %157 %.not72.i = icmp eq i64 %.16398.i.ph, 0 - br i1 %.not72.i, label %mbr_scanextprtn.exit, label %158 + br i1 %.not72.i, label %mbr_scanextprtn.exit, label %159 -158: ; preds = %157 - %159 = load ptr, ptr %62, align 8 - %160 = getelementptr inbounds i8, ptr %159, i64 1152 - %161 = load i32, ptr %160, align 8 - %162 = icmp ult i32 %111, %161 - br i1 %162, label %93, label %mbr_scanextprtn.exit - -mbr_scanextprtn.exit.thread: ; preds = %148, %fmap_readn.exit.thread.i, %137, %147, %154, %mbr_check_ebr.exit.i - %.058.i.ph = phi i32 [ 26, %mbr_check_ebr.exit.i ], [ 26, %154 ], [ 26, %147 ], [ 26, %137 ], [ 26, %fmap_readn.exit.thread.i ], [ %150, %148 ] +159: ; preds = %158 + %160 = load ptr, ptr %62, align 8 + %161 = getelementptr inbounds i8, ptr %160, i64 1152 + %162 = load i32, ptr %161, align 8 + %163 = icmp ult i32 %112, %162 + br i1 %163, label %93, label %mbr_scanextprtn.exit + +mbr_scanextprtn.exit.thread: ; preds = %149, %fmap_readn.exit.thread.i, %138, %148, %155, %mbr_check_ebr.exit.i + %.058.i.ph = phi i32 [ 26, %mbr_check_ebr.exit.i ], [ 26, %155 ], [ 26, %148 ], [ 26, %138 ], [ 26, %fmap_readn.exit.thread.i ], [ %151, %149 ] call void @llvm.lifetime.end.p0(i64 66, ptr nonnull %3) br label %.loopexit -mbr_scanextprtn.exit: ; preds = %157, %158 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.23, i32 noundef %112) #6 +mbr_scanextprtn.exit: ; preds = %158, %159 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.23, i32 noundef %113) #6 call void @llvm.lifetime.end.p0(i64 66, ptr nonnull %3) - br label %167 - -163: ; preds = %69 - %164 = add nuw i32 %.092137, 1 - %165 = load ptr, ptr %6, align 8 - %166 = tail call i32 @cli_magic_scan_nested_fmap_type(ptr noundef %165, i64 noundef %82, i64 noundef %84, ptr noundef nonnull %0, i32 noundef 557, ptr noundef null, i32 noundef 0) #6 - %.not79 = icmp eq i32 %166, 0 - br i1 %.not79, label %167, label %.loopexit - -167: ; preds = %mbr_scanextprtn.exit, %85, %163 - %.1 = phi i32 [ %164, %163 ], [ %111, %mbr_scanextprtn.exit ], [ %86, %85 ] - %.157 = phi i32 [ %.056138, %163 ], [ 2, %mbr_scanextprtn.exit ], [ %.056138, %85 ] + br label %168 + +164: ; preds = %69 + %165 = add nuw i32 %.092137, 1 + %166 = load ptr, ptr %6, align 8 + %167 = tail call i32 @cli_magic_scan_nested_fmap_type(ptr noundef %166, i64 noundef %82, i64 noundef %84, ptr noundef nonnull %0, i32 noundef 557, ptr noundef null, i32 noundef 0) #6 + %.not79 = icmp eq i32 %167, 0 + br i1 %.not79, label %168, label %.loopexit + +168: ; preds = %mbr_scanextprtn.exit, %85, %164 + %.1 = phi i32 [ %165, %164 ], [ %112, %mbr_scanextprtn.exit ], [ %86, %85 ] + %.157 = phi i32 [ %.056138, %164 ], [ 2, %mbr_scanextprtn.exit ], [ %.056138, %85 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 br i1 %exitcond.not, label %..critedge_crit_edge, label %64 -..critedge_crit_edge: ; preds = %167 +..critedge_crit_edge: ; preds = %168 %.pre = load ptr, ptr %62, align 8 %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre, i64 1152 %.pre165 = load i32, ptr %.phi.trans.insert, align 8 br label %.critedge .critedge: ; preds = %64, %..critedge_crit_edge - %168 = phi i32 [ %.pre165, %..critedge_crit_edge ], [ %67, %64 ] + %169 = phi i32 [ %.pre165, %..critedge_crit_edge ], [ %67, %64 ] %.092.lcssa = phi i32 [ %.1, %..critedge_crit_edge ], [ %.092137, %64 ] - %.not78 = icmp ult i32 %.092.lcssa, %168 - br i1 %.not78, label %.loopexit, label %169 + %.not78 = icmp ult i32 %.092.lcssa, %169 + br i1 %.not78, label %.loopexit, label %170 -169: ; preds = %.critedge +170: ; preds = %.critedge tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.9) #6 br label %.loopexit -.loopexit: ; preds = %163, %mbr_scanextprtn.exit.thread, %mbr_check_mbr.exit, %.critedge, %169, %58, %43, %fmap_readn.exit.thread, %15, %8 - %.0 = phi i32 [ 26, %15 ], [ 26, %fmap_readn.exit.thread ], [ 26, %mbr_check_mbr.exit ], [ %45, %43 ], [ %59, %58 ], [ 0, %169 ], [ 0, %.critedge ], [ 2, %8 ], [ %.058.i.ph, %mbr_scanextprtn.exit.thread ], [ %166, %163 ] +.loopexit: ; preds = %164, %mbr_scanextprtn.exit.thread, %mbr_check_mbr.exit, %.critedge, %170, %58, %43, %fmap_readn.exit.thread, %15, %8 + %.0 = phi i32 [ 26, %15 ], [ 26, %fmap_readn.exit.thread ], [ 26, %mbr_check_mbr.exit ], [ %45, %43 ], [ %59, %58 ], [ 0, %170 ], [ 0, %.critedge ], [ 2, %8 ], [ %.058.i.ph, %mbr_scanextprtn.exit.thread ], [ %167, %164 ] ret i32 %.0 } diff --git a/bench/draco/optimized/rans_bit_encoder.cc.ll b/bench/draco/optimized/rans_bit_encoder.cc.ll index 7dd6644b551..394c4238b14 100644 --- a/bench/draco/optimized/rans_bit_encoder.cc.ll +++ b/bench/draco/optimized/rans_bit_encoder.cc.ll @@ -333,7 +333,7 @@ define void @_ZN5draco14RAnsBitEncoder28EncodeLeastSignificantBits32Eij(ptr noca %20 = sub i32 32, %19 %.not = icmp sgt i32 %1, %20 %21 = getelementptr inbounds i8, ptr %0, i64 48 - br i1 %.not, label %64, label %22 + br i1 %.not, label %65, label %22 22: ; preds = %3 %23 = lshr i32 -1, %5 @@ -342,178 +342,179 @@ define void @_ZN5draco14RAnsBitEncoder28EncodeLeastSignificantBits32Eij(ptr noca %26 = xor i32 %24, -1 %27 = and i32 %25, %26 %28 = shl i32 %6, %19 - %29 = or i32 %27, %28 - store i32 %29, ptr %21, align 8 - %30 = add i32 %19, %1 - store i32 %30, ptr %18, align 4 - %31 = icmp eq i32 %30, 32 - br i1 %31, label %32, label %107 - -32: ; preds = %22 - %33 = getelementptr inbounds i8, ptr %0, i64 24 - %34 = getelementptr inbounds i8, ptr %0, i64 32 - %35 = load ptr, ptr %34, align 8 - %36 = getelementptr inbounds i8, ptr %0, i64 40 - %37 = load ptr, ptr %36, align 8 - %.not.i = icmp eq ptr %35, %37 - br i1 %.not.i, label %41, label %38 - -38: ; preds = %32 - store i32 %29, ptr %35, align 4 - %39 = load ptr, ptr %34, align 8 - %40 = getelementptr inbounds i8, ptr %39, i64 4 - store ptr %40, ptr %34, align 8 + %29 = and i32 %24, %28 + %30 = or disjoint i32 %27, %29 + store i32 %30, ptr %21, align 8 + %31 = add i32 %19, %1 + store i32 %31, ptr %18, align 4 + %32 = icmp eq i32 %31, 32 + br i1 %32, label %33, label %108 + +33: ; preds = %22 + %34 = getelementptr inbounds i8, ptr %0, i64 24 + %35 = getelementptr inbounds i8, ptr %0, i64 32 + %36 = load ptr, ptr %35, align 8 + %37 = getelementptr inbounds i8, ptr %0, i64 40 + %38 = load ptr, ptr %37, align 8 + %.not.i = icmp eq ptr %36, %38 + br i1 %.not.i, label %42, label %39 + +39: ; preds = %33 + store i32 %30, ptr %36, align 4 + %40 = load ptr, ptr %35, align 8 + %41 = getelementptr inbounds i8, ptr %40, i64 4 + store ptr %41, ptr %35, align 8 br label %.sink.split -41: ; preds = %32 - %42 = load ptr, ptr %33, align 8 - %43 = ptrtoint ptr %35 to i64 - %44 = ptrtoint ptr %42 to i64 - %45 = sub i64 %43, %44 - %46 = icmp eq i64 %45, 9223372036854775804 - br i1 %46, label %47, label %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i +42: ; preds = %33 + %43 = load ptr, ptr %34, align 8 + %44 = ptrtoint ptr %36 to i64 + %45 = ptrtoint ptr %43 to i64 + %46 = sub i64 %44, %45 + %47 = icmp eq i64 %46, 9223372036854775804 + br i1 %47, label %48, label %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i -47: ; preds = %41 +48: ; preds = %42 tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.1) #20 unreachable -_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i: ; preds = %41 - %48 = ashr exact i64 %45, 2 - %.sroa.speculated.i.i.i = tail call i64 @llvm.umax.i64(i64 %48, i64 1) - %49 = add nsw i64 %.sroa.speculated.i.i.i, %48 - %50 = icmp ult i64 %49, %48 - %51 = tail call i64 @llvm.umin.i64(i64 %49, i64 2305843009213693951) - %52 = select i1 %50, i64 2305843009213693951, i64 %51 - %.not.i.i.i = icmp eq i64 %52, 0 - br i1 %.not.i.i.i, label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i, label %53 - -53: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i - %54 = shl nuw nsw i64 %52, 2 - %55 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %54) #18 +_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i: ; preds = %42 + %49 = ashr exact i64 %46, 2 + %.sroa.speculated.i.i.i = tail call i64 @llvm.umax.i64(i64 %49, i64 1) + %50 = add nsw i64 %.sroa.speculated.i.i.i, %49 + %51 = icmp ult i64 %50, %49 + %52 = tail call i64 @llvm.umin.i64(i64 %50, i64 2305843009213693951) + %53 = select i1 %51, i64 2305843009213693951, i64 %52 + %.not.i.i.i = icmp eq i64 %53, 0 + br i1 %.not.i.i.i, label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i, label %54 + +54: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i + %55 = shl nuw nsw i64 %53, 2 + %56 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %55) #18 br label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i -_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i: ; preds = %53, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i - %56 = phi ptr [ %55, %53 ], [ null, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i ] - %57 = getelementptr inbounds i32, ptr %56, i64 %48 - store i32 %29, ptr %57, align 4 - %58 = icmp sgt i64 %45, 0 - br i1 %58, label %59, label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i +_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i: ; preds = %54, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i + %57 = phi ptr [ %56, %54 ], [ null, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i ] + %58 = getelementptr inbounds i32, ptr %57, i64 %49 + store i32 %30, ptr %58, align 4 + %59 = icmp sgt i64 %46, 0 + br i1 %59, label %60, label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i -59: ; preds = %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %56, ptr align 4 %42, i64 %45, i1 false) +60: ; preds = %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %57, ptr align 4 %43, i64 %46, i1 false) br label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i -_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i: ; preds = %59, %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i - %60 = getelementptr inbounds i8, ptr %56, i64 %45 - %61 = getelementptr inbounds i8, ptr %60, i64 4 - %.not.i17.i.i = icmp eq ptr %42, null - br i1 %.not.i17.i.i, label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i, label %62 +_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i: ; preds = %60, %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i + %61 = getelementptr inbounds i8, ptr %57, i64 %46 + %62 = getelementptr inbounds i8, ptr %61, i64 4 + %.not.i17.i.i = icmp eq ptr %43, null + br i1 %.not.i17.i.i, label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i, label %63 -62: ; preds = %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i - tail call void @_ZdlPv(ptr noundef nonnull %42) #16 +63: ; preds = %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i + tail call void @_ZdlPv(ptr noundef nonnull %43) #16 br label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i -_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i: ; preds = %62, %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i - store ptr %56, ptr %33, align 8 - store ptr %61, ptr %34, align 8 - %63 = getelementptr inbounds i32, ptr %56, i64 %52 - store ptr %63, ptr %36, align 8 +_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i: ; preds = %63, %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i + store ptr %57, ptr %34, align 8 + store ptr %62, ptr %35, align 8 + %64 = getelementptr inbounds i32, ptr %57, i64 %53 + store ptr %64, ptr %37, align 8 br label %.sink.split -64: ; preds = %3 - %65 = shl nsw i32 -1, %19 - %66 = load i32, ptr %21, align 8 - %67 = xor i32 %65, -1 - %68 = and i32 %66, %67 - %69 = shl i32 %6, %19 - %70 = or i32 %68, %69 - store i32 %70, ptr %21, align 8 - %71 = getelementptr inbounds i8, ptr %0, i64 24 - %72 = getelementptr inbounds i8, ptr %0, i64 32 - %73 = load ptr, ptr %72, align 8 - %74 = getelementptr inbounds i8, ptr %0, i64 40 - %75 = load ptr, ptr %74, align 8 - %.not.i20 = icmp eq ptr %73, %75 - br i1 %.not.i20, label %79, label %76 - -76: ; preds = %64 - store i32 %70, ptr %73, align 4 - %77 = load ptr, ptr %72, align 8 - %78 = getelementptr inbounds i8, ptr %77, i64 4 - store ptr %78, ptr %72, align 8 +65: ; preds = %3 + %66 = shl nsw i32 -1, %19 + %67 = load i32, ptr %21, align 8 + %68 = xor i32 %66, -1 + %69 = and i32 %67, %68 + %70 = shl i32 %6, %19 + %71 = add nuw nsw i32 %69, %70 + store i32 %71, ptr %21, align 8 + %72 = getelementptr inbounds i8, ptr %0, i64 24 + %73 = getelementptr inbounds i8, ptr %0, i64 32 + %74 = load ptr, ptr %73, align 8 + %75 = getelementptr inbounds i8, ptr %0, i64 40 + %76 = load ptr, ptr %75, align 8 + %.not.i20 = icmp eq ptr %74, %76 + br i1 %.not.i20, label %80, label %77 + +77: ; preds = %65 + store i32 %71, ptr %74, align 4 + %78 = load ptr, ptr %73, align 8 + %79 = getelementptr inbounds i8, ptr %78, i64 4 + store ptr %79, ptr %73, align 8 br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit28 -79: ; preds = %64 - %80 = load ptr, ptr %71, align 8 - %81 = ptrtoint ptr %73 to i64 - %82 = ptrtoint ptr %80 to i64 - %83 = sub i64 %81, %82 - %84 = icmp eq i64 %83, 9223372036854775804 - br i1 %84, label %85, label %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i21 +80: ; preds = %65 + %81 = load ptr, ptr %72, align 8 + %82 = ptrtoint ptr %74 to i64 + %83 = ptrtoint ptr %81 to i64 + %84 = sub i64 %82, %83 + %85 = icmp eq i64 %84, 9223372036854775804 + br i1 %85, label %86, label %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i21 -85: ; preds = %79 +86: ; preds = %80 tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.1) #20 unreachable -_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i21: ; preds = %79 - %86 = ashr exact i64 %83, 2 - %.sroa.speculated.i.i.i22 = tail call i64 @llvm.umax.i64(i64 %86, i64 1) - %87 = add nsw i64 %.sroa.speculated.i.i.i22, %86 - %88 = icmp ult i64 %87, %86 - %89 = tail call i64 @llvm.umin.i64(i64 %87, i64 2305843009213693951) - %90 = select i1 %88, i64 2305843009213693951, i64 %89 - %.not.i.i.i23 = icmp eq i64 %90, 0 - br i1 %.not.i.i.i23, label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i24, label %91 - -91: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i21 - %92 = shl nuw nsw i64 %90, 2 - %93 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %92) #18 +_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i21: ; preds = %80 + %87 = ashr exact i64 %84, 2 + %.sroa.speculated.i.i.i22 = tail call i64 @llvm.umax.i64(i64 %87, i64 1) + %88 = add nsw i64 %.sroa.speculated.i.i.i22, %87 + %89 = icmp ult i64 %88, %87 + %90 = tail call i64 @llvm.umin.i64(i64 %88, i64 2305843009213693951) + %91 = select i1 %89, i64 2305843009213693951, i64 %90 + %.not.i.i.i23 = icmp eq i64 %91, 0 + br i1 %.not.i.i.i23, label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i24, label %92 + +92: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i21 + %93 = shl nuw nsw i64 %91, 2 + %94 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %93) #18 br label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i24 -_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i24: ; preds = %91, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i21 - %94 = phi ptr [ %93, %91 ], [ null, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i21 ] - %95 = getelementptr inbounds i32, ptr %94, i64 %86 - store i32 %70, ptr %95, align 4 - %96 = icmp sgt i64 %83, 0 - br i1 %96, label %97, label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i25 +_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i24: ; preds = %92, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i21 + %95 = phi ptr [ %94, %92 ], [ null, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i21 ] + %96 = getelementptr inbounds i32, ptr %95, i64 %87 + store i32 %71, ptr %96, align 4 + %97 = icmp sgt i64 %84, 0 + br i1 %97, label %98, label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i25 -97: ; preds = %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i24 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %94, ptr align 4 %80, i64 %83, i1 false) +98: ; preds = %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i24 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %95, ptr align 4 %81, i64 %84, i1 false) br label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i25 -_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i25: ; preds = %97, %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i24 - %98 = getelementptr inbounds i8, ptr %94, i64 %83 - %99 = getelementptr inbounds i8, ptr %98, i64 4 - %.not.i17.i.i26 = icmp eq ptr %80, null - br i1 %.not.i17.i.i26, label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i27, label %100 +_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i25: ; preds = %98, %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i24 + %99 = getelementptr inbounds i8, ptr %95, i64 %84 + %100 = getelementptr inbounds i8, ptr %99, i64 4 + %.not.i17.i.i26 = icmp eq ptr %81, null + br i1 %.not.i17.i.i26, label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i27, label %101 -100: ; preds = %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i25 - tail call void @_ZdlPv(ptr noundef nonnull %80) #16 +101: ; preds = %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i25 + tail call void @_ZdlPv(ptr noundef nonnull %81) #16 br label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i27 -_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i27: ; preds = %100, %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i25 - store ptr %94, ptr %71, align 8 - store ptr %99, ptr %72, align 8 - %101 = getelementptr inbounds i32, ptr %94, i64 %90 - store ptr %101, ptr %74, align 8 +_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i27: ; preds = %101, %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i25 + store ptr %95, ptr %72, align 8 + store ptr %100, ptr %73, align 8 + %102 = getelementptr inbounds i32, ptr %95, i64 %91 + store ptr %102, ptr %75, align 8 br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit28 -_ZNSt6vectorIjSaIjEE9push_backERKj.exit28: ; preds = %76, %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i27 - %102 = sub nsw i32 %1, %20 - %103 = sub nsw i32 32, %102 - %104 = lshr i32 -1, %103 - %105 = lshr i32 %6, %20 - %106 = and i32 %104, %105 +_ZNSt6vectorIjSaIjEE9push_backERKj.exit28: ; preds = %77, %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i27 + %103 = sub nsw i32 %1, %20 + %104 = sub nsw i32 32, %103 + %105 = lshr i32 -1, %104 + %106 = lshr i32 %6, %20 + %107 = and i32 %105, %106 br label %.sink.split -.sink.split: ; preds = %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i, %38, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit28 - %storemerge = phi i32 [ %106, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit28 ], [ 0, %38 ], [ 0, %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i ] - %.sink = phi i32 [ %102, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit28 ], [ 0, %38 ], [ 0, %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i ] +.sink.split: ; preds = %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i, %39, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit28 + %storemerge = phi i32 [ %107, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit28 ], [ 0, %39 ], [ 0, %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i ] + %.sink = phi i32 [ %103, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit28 ], [ 0, %39 ], [ 0, %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i ] store i32 %storemerge, ptr %21, align 8 store i32 %.sink, ptr %18, align 4 - br label %107 + br label %108 -107: ; preds = %.sink.split, %22 +108: ; preds = %.sink.split, %22 ret void } diff --git a/bench/duckdb/optimized/ub_duckdb_func_ops_main.cpp.ll b/bench/duckdb/optimized/ub_duckdb_func_ops_main.cpp.ll index 39d08e35ff3..60c736e6cb1 100644 --- a/bench/duckdb/optimized/ub_duckdb_func_ops_main.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_func_ops_main.cpp.ll @@ -239866,8 +239866,8 @@ for.body9.us.us.preheader: ; preds = %for.body9.lr.ph %4 = shl i64 %base_idx.0168, 1 %scevgep = getelementptr i8, ptr %result_data, i64 %4 %scevgep18 = getelementptr i8, ptr %ldata, i64 %4 - %5 = sub i64 %cond.i, %base_idx.0168 - %6 = shl i64 %5, 1 + %5 = shl i64 %cond.i, 1 + %6 = sub i64 %5, %4 tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %scevgep, ptr align 2 %scevgep18, i64 %6, i1 false), !tbaa !14 br label %for.body9.us.us @@ -241475,8 +241475,8 @@ for.body9.us.us.preheader: ; preds = %for.body9.lr.ph %4 = shl i64 %base_idx.0165, 2 %scevgep = getelementptr i8, ptr %result_data, i64 %4 %scevgep18 = getelementptr i8, ptr %ldata, i64 %4 - %5 = sub i64 %cond.i, %base_idx.0165 - %6 = shl i64 %5, 2 + %5 = shl i64 %cond.i, 2 + %6 = sub i64 %5, %4 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep, ptr align 4 %scevgep18, i64 %6, i1 false), !tbaa !11 br label %for.body9.us.us @@ -243059,8 +243059,8 @@ for.body9.us.us.preheader: ; preds = %for.body9.lr.ph %4 = shl i64 %base_idx.0165, 3 %scevgep = getelementptr i8, ptr %result_data, i64 %4 %scevgep18 = getelementptr i8, ptr %ldata, i64 %4 - %5 = sub i64 %cond.i, %base_idx.0165 - %6 = shl i64 %5, 3 + %5 = shl i64 %cond.i, 3 + %6 = sub i64 %5, %4 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep, ptr align 8 %scevgep18, i64 %6, i1 false), !tbaa !16 br label %for.body9.us.us @@ -245936,8 +245936,8 @@ for.body9.us.preheader: ; preds = %for.body9.lr.ph %10 = shl i64 %base_idx.0142, 1 %scevgep = getelementptr i8, ptr %result_data, i64 %10 %scevgep19 = getelementptr i8, ptr %ldata, i64 %10 - %11 = sub i64 %cond.i, %base_idx.0142 - %12 = shl i64 %11, 1 + %11 = shl i64 %cond.i, 1 + %12 = sub i64 %11, %10 tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %scevgep, ptr align 2 %scevgep19, i64 %12, i1 false), !tbaa !14 br label %for.body9.us @@ -247275,8 +247275,8 @@ for.body9.us.preheader: ; preds = %for.body9.lr.ph %10 = shl i64 %base_idx.0144, 2 %scevgep = getelementptr i8, ptr %result_data, i64 %10 %scevgep19 = getelementptr i8, ptr %ldata, i64 %10 - %11 = sub i64 %cond.i, %base_idx.0144 - %12 = shl i64 %11, 2 + %11 = shl i64 %cond.i, 2 + %12 = sub i64 %11, %10 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep, ptr align 4 %scevgep19, i64 %12, i1 false), !tbaa !11 br label %for.body9.us @@ -248614,8 +248614,8 @@ for.body9.us.preheader: ; preds = %for.body9.lr.ph %10 = shl i64 %base_idx.0144, 3 %scevgep = getelementptr i8, ptr %result_data, i64 %10 %scevgep19 = getelementptr i8, ptr %ldata, i64 %10 - %11 = sub i64 %cond.i, %base_idx.0144 - %12 = shl i64 %11, 3 + %11 = shl i64 %cond.i, 3 + %12 = sub i64 %11, %10 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep, ptr align 8 %scevgep19, i64 %12, i1 false), !tbaa !16 br label %for.body9.us @@ -251762,8 +251762,8 @@ for.body9.us.preheader: ; preds = %for.body9.lr.ph %13 = shl i64 %base_idx.0144, 2 %scevgep = getelementptr i8, ptr %result_data, i64 %13 %scevgep17 = getelementptr i8, ptr %ldata, i64 %13 - %14 = sub i64 %cond.i, %base_idx.0144 - %15 = shl i64 %14, 2 + %14 = shl i64 %cond.i, 2 + %15 = sub i64 %14, %13 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep, ptr align 4 %scevgep17, i64 %15, i1 false), !tbaa !1029 br label %for.body9.us @@ -253108,8 +253108,8 @@ for.body9.us.preheader: ; preds = %for.body9.lr.ph %13 = shl i64 %base_idx.0144, 3 %scevgep = getelementptr i8, ptr %result_data, i64 %13 %scevgep17 = getelementptr i8, ptr %ldata, i64 %13 - %14 = sub i64 %cond.i, %base_idx.0144 - %15 = shl i64 %14, 3 + %14 = shl i64 %cond.i, 3 + %15 = sub i64 %14, %13 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep, ptr align 8 %scevgep17, i64 %15, i1 false), !tbaa !1086 br label %for.body9.us @@ -254448,8 +254448,8 @@ for.body9.us.preheader: ; preds = %for.body9.lr.ph %9 = shl i64 %base_idx.0170, 4 %scevgep = getelementptr i8, ptr %result_data, i64 %9 %scevgep14 = getelementptr i8, ptr %ldata, i64 %9 - %10 = sub i64 %cond.i, %base_idx.0170 - %11 = shl i64 %10, 4 + %10 = shl i64 %cond.i, 4 + %11 = sub i64 %10, %9 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep, ptr align 8 %scevgep14, i64 %11, i1 false) br label %for.body9.us @@ -257575,8 +257575,8 @@ for.body9.us.us.preheader: ; preds = %for.body9.lr.ph %4 = shl i64 %base_idx.0168, 1 %scevgep = getelementptr i8, ptr %result_data, i64 %4 %scevgep18 = getelementptr i8, ptr %ldata, i64 %4 - %5 = sub i64 %cond.i, %base_idx.0168 - %6 = shl i64 %5, 1 + %5 = shl i64 %cond.i, 1 + %6 = sub i64 %5, %4 tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %scevgep, ptr align 2 %scevgep18, i64 %6, i1 false), !tbaa !14 br label %for.body9.us.us @@ -259184,8 +259184,8 @@ for.body9.us.us.preheader: ; preds = %for.body9.lr.ph %4 = shl i64 %base_idx.0165, 2 %scevgep = getelementptr i8, ptr %result_data, i64 %4 %scevgep17 = getelementptr i8, ptr %ldata, i64 %4 - %5 = sub i64 %cond.i, %base_idx.0165 - %6 = shl i64 %5, 2 + %5 = shl i64 %cond.i, 2 + %6 = sub i64 %5, %4 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep, ptr align 4 %scevgep17, i64 %6, i1 false), !tbaa !11 br label %for.body9.us.us @@ -260767,8 +260767,8 @@ for.body9.us.us.preheader: ; preds = %for.body9.lr.ph %4 = shl i64 %base_idx.0165, 3 %scevgep = getelementptr i8, ptr %result_data, i64 %4 %scevgep17 = getelementptr i8, ptr %ldata, i64 %4 - %5 = sub i64 %cond.i, %base_idx.0165 - %6 = shl i64 %5, 3 + %5 = shl i64 %cond.i, 3 + %6 = sub i64 %5, %4 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep, ptr align 8 %scevgep17, i64 %6, i1 false), !tbaa !16 br label %for.body9.us.us @@ -263643,8 +263643,8 @@ for.body9.us.preheader: ; preds = %for.body9.lr.ph %10 = shl i64 %base_idx.0142, 1 %scevgep = getelementptr i8, ptr %result_data, i64 %10 %scevgep19 = getelementptr i8, ptr %ldata, i64 %10 - %11 = sub i64 %cond.i, %base_idx.0142 - %12 = shl i64 %11, 1 + %11 = shl i64 %cond.i, 1 + %12 = sub i64 %11, %10 tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %scevgep, ptr align 2 %scevgep19, i64 %12, i1 false), !tbaa !14 br label %for.body9.us @@ -264982,8 +264982,8 @@ for.body9.us.preheader: ; preds = %for.body9.lr.ph %10 = shl i64 %base_idx.0144, 2 %scevgep = getelementptr i8, ptr %result_data, i64 %10 %scevgep19 = getelementptr i8, ptr %ldata, i64 %10 - %11 = sub i64 %cond.i, %base_idx.0144 - %12 = shl i64 %11, 2 + %11 = shl i64 %cond.i, 2 + %12 = sub i64 %11, %10 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep, ptr align 4 %scevgep19, i64 %12, i1 false), !tbaa !11 br label %for.body9.us @@ -266321,8 +266321,8 @@ for.body9.us.preheader: ; preds = %for.body9.lr.ph %10 = shl i64 %base_idx.0144, 3 %scevgep = getelementptr i8, ptr %result_data, i64 %10 %scevgep19 = getelementptr i8, ptr %ldata, i64 %10 - %11 = sub i64 %cond.i, %base_idx.0144 - %12 = shl i64 %11, 3 + %11 = shl i64 %cond.i, 3 + %12 = sub i64 %11, %10 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep, ptr align 8 %scevgep19, i64 %12, i1 false), !tbaa !16 br label %for.body9.us diff --git a/bench/flac/optimized/bitwriter.c.ll b/bench/flac/optimized/bitwriter.c.ll index 53f67b41b2c..d277d031a70 100644 --- a/bench/flac/optimized/bitwriter.c.ll +++ b/bench/flac/optimized/bitwriter.c.ll @@ -945,14 +945,14 @@ if.end22: ; preds = %if.end22.sink.split %mul = shl i32 %5, 6 %words = getelementptr inbounds i8, ptr %bw, i64 20 %6 = load i32, ptr %words, align 4 - %mul23168 = add i32 %6, %nvals - %add25 = shl i32 %mul23168, 6 + %mul23 = shl i32 %6, 6 + %mul24 = shl i32 %nvals, 6 + %add25 = add i32 %mul23, %mul24 %add27 = or disjoint i32 %add25, %4 %cmp28.not = icmp ugt i32 %mul, %add27 br i1 %cmp28.not, label %if.end32, label %land.lhs.true29 land.lhs.true29: ; preds = %if.end22 - %mul24 = shl i32 %nvals, 6 %add.i = or disjoint i32 %mul24, 63 %sub.i = add i32 %add.i, %4 %div15.i = lshr i32 %sub.i, 6 @@ -989,22 +989,22 @@ if.end21.i: ; preds = %if.end7.i br label %if.end32 if.end32: ; preds = %if.end21.i, %land.lhs.true29, %if.end22 - %tobool33.not212 = icmp eq i32 %nvals, 0 - br i1 %tobool33.not212, label %while.end247, label %while.body.lr.ph + %tobool33.not211 = icmp eq i32 %nvals, 0 + br i1 %tobool33.not211, label %while.end247, label %while.body.lr.ph while.body.lr.ph: ; preds = %if.end32 %accum57 = getelementptr inbounds i8, ptr %bw, i64 8 %9 = load i32, ptr @FLAC__STREAM_METADATA_LENGTH_LEN, align 4 - %shl.i186 = shl nuw i32 1, %9 - %conv3.i187 = zext i32 %shl.i186 to i64 + %shl.i185 = shl nuw i32 1, %9 + %conv3.i186 = zext i32 %shl.i185 to i64 br label %while.body while.body: ; preds = %while.body.lr.ph, %if.end246 - %vals.addr.0217 = phi ptr [ %vals, %while.body.lr.ph ], [ %incdec.ptr, %if.end246 ] - %bitpointer.1216 = phi i32 [ %bitpointer.0, %while.body.lr.ph ], [ %bitpointer.2, %if.end246 ] - %wide_accum.1215 = phi i64 [ %wide_accum.0, %while.body.lr.ph ], [ %wide_accum.3, %if.end246 ] - %nvals.addr.0213 = phi i32 [ %nvals, %while.body.lr.ph ], [ %dec, %if.end246 ] - %10 = load i32, ptr %vals.addr.0217, align 4 + %vals.addr.0216 = phi ptr [ %vals, %while.body.lr.ph ], [ %incdec.ptr, %if.end246 ] + %bitpointer.1215 = phi i32 [ %bitpointer.0, %while.body.lr.ph ], [ %bitpointer.2, %if.end246 ] + %wide_accum.1214 = phi i64 [ %wide_accum.0, %while.body.lr.ph ], [ %wide_accum.3, %if.end246 ] + %nvals.addr.0212 = phi i32 [ %nvals, %while.body.lr.ph ], [ %dec, %if.end246 ] + %10 = load i32, ptr %vals.addr.0216, align 4 %shl34 = shl i32 %10, 1 %shr35 = ashr i32 %10, 31 %xor = xor i32 %shl34, %shr35 @@ -1012,15 +1012,15 @@ while.body: ; preds = %while.body.lr.ph, % %add37 = add i32 %shr36, %add %or = or i32 %xor, %shl %and = and i32 %or, %shr - %cmp38.not = icmp ugt i32 %add37, %bitpointer.1216 + %cmp38.not = icmp ugt i32 %add37, %bitpointer.1215 br i1 %cmp38.not, label %if.else69, label %if.then39 if.then39: ; preds = %while.body %conv = zext i32 %and to i64 - %sub40 = sub nuw i32 %bitpointer.1216, %add37 + %sub40 = sub nuw i32 %bitpointer.1215, %add37 %sh_prom41 = zext nneg i32 %sub40 to i64 %shl42 = shl i64 %conv, %sh_prom41 - %or43 = or i64 %shl42, %wide_accum.1215 + %or43 = or i64 %shl42, %wide_accum.1214 %cmp45 = icmp ult i32 %sub40, 33 br i1 %cmp45, label %if.then47, label %if.end246 @@ -1057,7 +1057,7 @@ if.then72: ; preds = %if.else69 %16 = load i32, ptr %words, align 4 %mul75 = shl i32 %16, 6 %17 = load i32, ptr %bits, align 8 - %mul78 = shl i32 %nvals.addr.0213, 6 + %mul78 = shl i32 %nvals.addr.0212, 6 %add77 = add i32 %sub73, %mul78 %add79 = add i32 %add77, %17 %add80 = add i32 %add79, %mul75 @@ -1067,57 +1067,57 @@ if.then72: ; preds = %if.else69 br i1 %cmp83.not, label %if.end92, label %land.lhs.true85 land.lhs.true85: ; preds = %if.then72 - %add.i176 = add i32 %add77, 63 - %sub.i177 = add i32 %add.i176, %17 - %div15.i178 = lshr i32 %sub.i177, 6 - %add2.i179 = add i32 %div15.i178, %16 - %cmp.not.i181 = icmp ult i32 %18, %add2.i179 - br i1 %cmp.not.i181, label %if.end.i183, label %if.end92 - -if.end.i183: ; preds = %land.lhs.true85 - %conv.i184 = zext i32 %add2.i179 to i64 - %mul.i185 = shl nuw nsw i64 %conv.i184, 3 - %cmp4.i188 = icmp ugt i64 %mul.i185, %conv3.i187 - br i1 %cmp4.i188, label %return, label %if.end7.i189 - -if.end7.i189: ; preds = %if.end.i183 - %sub9.i190 = sub i32 %add2.i179, %18 - %rem.i191 = and i32 %sub9.i190, 511 - %tobool.not.i192 = icmp eq i32 %rem.i191, 0 - %reass.sub.i193 = add i32 %add2.i179, 512 - %add15.i194 = sub i32 %reass.sub.i193, %rem.i191 - %new_capacity.0.i195 = select i1 %tobool.not.i192, i32 %add2.i179, i32 %add15.i194 + %add.i175 = add i32 %add77, 63 + %sub.i176 = add i32 %add.i175, %17 + %div15.i177 = lshr i32 %sub.i176, 6 + %add2.i178 = add i32 %div15.i177, %16 + %cmp.not.i180 = icmp ult i32 %18, %add2.i178 + br i1 %cmp.not.i180, label %if.end.i182, label %if.end92 + +if.end.i182: ; preds = %land.lhs.true85 + %conv.i183 = zext i32 %add2.i178 to i64 + %mul.i184 = shl nuw nsw i64 %conv.i183, 3 + %cmp4.i187 = icmp ugt i64 %mul.i184, %conv3.i186 + br i1 %cmp4.i187, label %return, label %if.end7.i188 + +if.end7.i188: ; preds = %if.end.i182 + %sub9.i189 = sub i32 %add2.i178, %18 + %rem.i190 = and i32 %sub9.i189, 511 + %tobool.not.i191 = icmp eq i32 %rem.i190, 0 + %reass.sub.i192 = add i32 %add2.i178, 512 + %add15.i193 = sub i32 %reass.sub.i192, %rem.i190 + %new_capacity.0.i194 = select i1 %tobool.not.i191, i32 %add2.i178, i32 %add15.i193 %19 = load ptr, ptr %bw, align 8 - %conv17.i196 = zext i32 %new_capacity.0.i195 to i64 - %mul.i.i197 = shl nuw nsw i64 %conv17.i196, 3 - %call4.i.i198 = tail call noalias noundef ptr @realloc(ptr noundef %19, i64 noundef %mul.i.i197) #17 - %cmp18.i199 = icmp eq ptr %call4.i.i198, null - br i1 %cmp18.i199, label %return, label %if.end21.i200 - -if.end21.i200: ; preds = %if.end7.i189 - store ptr %call4.i.i198, ptr %bw, align 8 - store i32 %new_capacity.0.i195, ptr %capacity, align 8 + %conv17.i195 = zext i32 %new_capacity.0.i194 to i64 + %mul.i.i196 = shl nuw nsw i64 %conv17.i195, 3 + %call4.i.i197 = tail call noalias noundef ptr @realloc(ptr noundef %19, i64 noundef %mul.i.i196) #17 + %cmp18.i198 = icmp eq ptr %call4.i.i197, null + br i1 %cmp18.i198, label %return, label %if.end21.i199 + +if.end21.i199: ; preds = %if.end7.i188 + store ptr %call4.i.i197, ptr %bw, align 8 + store i32 %new_capacity.0.i194, ptr %capacity, align 8 br label %if.end92 -if.end92: ; preds = %if.end21.i200, %land.lhs.true85, %if.then72, %if.else69 - %cmp93 = icmp ugt i32 %shr36, %bitpointer.1216 +if.end92: ; preds = %if.end21.i199, %land.lhs.true85, %if.then72, %if.else69 + %cmp93 = icmp ugt i32 %shr36, %bitpointer.1215 br i1 %cmp93, label %if.then95, label %if.else181 if.then95: ; preds = %if.end92 - %reass.sub = sub nuw i32 %shr36, %bitpointer.1216 + %reass.sub = sub nuw i32 %shr36, %bitpointer.1215 %sub97 = add i32 %reass.sub, 32 %20 = load i32, ptr %bits, align 8 %cmp99 = icmp eq i32 %20, 0 br i1 %cmp99, label %if.then101, label %if.else106 if.then101: ; preds = %if.then95 - %shr102 = lshr i64 %wide_accum.1215, 32 + %shr102 = lshr i64 %wide_accum.1214, 32 store i64 %shr102, ptr %accum57, align 8 br label %if.end120 if.else106: ; preds = %if.then95 %21 = load i64, ptr %accum57, align 8 - %add111 = tail call i64 @llvm.fshl.i64(i64 %21, i64 %wide_accum.1215, i64 32) + %add111 = tail call i64 @llvm.fshl.i64(i64 %21, i64 %wide_accum.1214, i64 32) store i64 %add111, ptr %accum57, align 8 %22 = tail call i64 @llvm.bswap.i64(i64 %add111) %23 = load ptr, ptr %bw, align 8 @@ -1130,27 +1130,27 @@ if.else106: ; preds = %if.then95 br label %if.end120 if.end120: ; preds = %if.else106, %if.then101 - %storemerge169 = phi i32 [ 0, %if.else106 ], [ 32, %if.then101 ] - %wide_accum.4 = shl i64 %wide_accum.1215, 32 - store i32 %storemerge169, ptr %bits, align 8 - %cmp123208 = icmp ugt i32 %sub97, 64 - br i1 %cmp123208, label %while.body125, label %while.end + %storemerge168 = phi i32 [ 0, %if.else106 ], [ 32, %if.then101 ] + %wide_accum.4 = shl i64 %wide_accum.1214, 32 + store i32 %storemerge168, ptr %bits, align 8 + %cmp123207 = icmp ugt i32 %sub97, 64 + br i1 %cmp123207, label %while.body125, label %while.end while.body125: ; preds = %if.end120, %if.end148 - %25 = phi i32 [ %storemerge172, %if.end148 ], [ %storemerge169, %if.end120 ] - %wide_accum.5210 = phi i64 [ 0, %if.end148 ], [ %wide_accum.4, %if.end120 ] - %msbits.0209 = phi i32 [ %sub151, %if.end148 ], [ %sub97, %if.end120 ] + %25 = phi i32 [ %storemerge171, %if.end148 ], [ %storemerge168, %if.end120 ] + %wide_accum.5209 = phi i64 [ 0, %if.end148 ], [ %wide_accum.4, %if.end120 ] + %msbits.0208 = phi i32 [ %sub151, %if.end148 ], [ %sub97, %if.end120 ] %cmp127 = icmp eq i32 %25, 0 br i1 %cmp127, label %if.then129, label %if.else134 if.then129: ; preds = %while.body125 - %shr130 = lshr exact i64 %wide_accum.5210, 32 + %shr130 = lshr exact i64 %wide_accum.5209, 32 store i64 %shr130, ptr %accum57, align 8 br label %if.end148 if.else134: ; preds = %while.body125 %26 = load i64, ptr %accum57, align 8 - %add139 = tail call i64 @llvm.fshl.i64(i64 %26, i64 %wide_accum.5210, i64 32) + %add139 = tail call i64 @llvm.fshl.i64(i64 %26, i64 %wide_accum.5209, i64 32) store i64 %add139, ptr %accum57, align 8 %27 = tail call i64 @llvm.bswap.i64(i64 %add139) %28 = load ptr, ptr %bw, align 8 @@ -1163,8 +1163,8 @@ if.else134: ; preds = %while.body125 br label %if.end148 if.end148: ; preds = %if.else134, %if.then129 - %storemerge172 = phi i32 [ 0, %if.else134 ], [ 32, %if.then129 ] - %sub151 = add i32 %msbits.0209, -32 + %storemerge171 = phi i32 [ 0, %if.else134 ], [ 32, %if.then129 ] + %sub151 = add i32 %msbits.0208, -32 %cmp123 = icmp ugt i32 %sub151, 64 br i1 %cmp123, label %while.body125, label %if.then155, !llvm.loop !7 @@ -1174,20 +1174,20 @@ while.end: ; preds = %if.end120 br i1 %cmp153, label %if.then155, label %if.end211 if.then155: ; preds = %if.end148, %while.end - %wide_accum.5.lcssa225 = phi i64 [ %wide_accum.4, %while.end ], [ 0, %if.end148 ] - %msbits.0.lcssa224 = phi i32 [ %sub97, %while.end ], [ %sub151, %if.end148 ] - %30 = phi i32 [ %storemerge169, %while.end ], [ %storemerge172, %if.end148 ] + %wide_accum.5.lcssa224 = phi i64 [ %wide_accum.4, %while.end ], [ 0, %if.end148 ] + %msbits.0.lcssa223 = phi i32 [ %sub97, %while.end ], [ %sub151, %if.end148 ] + %30 = phi i32 [ %storemerge168, %while.end ], [ %storemerge171, %if.end148 ] %cmp157 = icmp eq i32 %30, 0 br i1 %cmp157, label %if.then159, label %if.else164 if.then159: ; preds = %if.then155 - %shr160 = lshr exact i64 %wide_accum.5.lcssa225, 32 + %shr160 = lshr exact i64 %wide_accum.5.lcssa224, 32 store i64 %shr160, ptr %accum57, align 8 br label %if.end178 if.else164: ; preds = %if.then155 %31 = load i64, ptr %accum57, align 8 - %add169 = tail call i64 @llvm.fshl.i64(i64 %31, i64 %wide_accum.5.lcssa225, i64 32) + %add169 = tail call i64 @llvm.fshl.i64(i64 %31, i64 %wide_accum.5.lcssa224, i64 32) store i64 %add169, ptr %accum57, align 8 %32 = tail call i64 @llvm.bswap.i64(i64 %add169) %33 = load ptr, ptr %bw, align 8 @@ -1200,13 +1200,13 @@ if.else164: ; preds = %if.then155 br label %if.end178 if.end178: ; preds = %if.else164, %if.then159 - %storemerge170 = phi i32 [ 0, %if.else164 ], [ 32, %if.then159 ] - store i32 %storemerge170, ptr %bits, align 8 - %add179 = sub nuw nsw i32 96, %msbits.0.lcssa224 + %storemerge169 = phi i32 [ 0, %if.else164 ], [ 32, %if.then159 ] + store i32 %storemerge169, ptr %bits, align 8 + %add179 = sub nuw nsw i32 96, %msbits.0.lcssa223 br label %if.end211 if.else181: ; preds = %if.end92 - %sub182 = sub nuw i32 %bitpointer.1216, %shr36 + %sub182 = sub nuw i32 %bitpointer.1215, %shr36 %cmp183 = icmp ult i32 %sub182, 33 br i1 %cmp183, label %if.then185, label %if.end211 @@ -1216,13 +1216,13 @@ if.then185: ; preds = %if.else181 br i1 %cmp187, label %if.then189, label %if.else194 if.then189: ; preds = %if.then185 - %shr190 = lshr i64 %wide_accum.1215, 32 + %shr190 = lshr i64 %wide_accum.1214, 32 store i64 %shr190, ptr %accum57, align 8 br label %if.end208 if.else194: ; preds = %if.then185 %36 = load i64, ptr %accum57, align 8 - %add199 = tail call i64 @llvm.fshl.i64(i64 %36, i64 %wide_accum.1215, i64 32) + %add199 = tail call i64 @llvm.fshl.i64(i64 %36, i64 %wide_accum.1214, i64 32) store i64 %add199, ptr %accum57, align 8 %37 = tail call i64 @llvm.bswap.i64(i64 %add199) %38 = load ptr, ptr %bw, align 8 @@ -1236,13 +1236,13 @@ if.else194: ; preds = %if.then185 if.end208: ; preds = %if.else194, %if.then189 %storemerge = phi i32 [ 0, %if.else194 ], [ 32, %if.then189 ] - %wide_accum.9 = shl i64 %wide_accum.1215, 32 + %wide_accum.9 = shl i64 %wide_accum.1214, 32 store i32 %storemerge, ptr %bits, align 8 %add209 = add nuw nsw i32 %sub182, 32 br label %if.end211 if.end211: ; preds = %if.else181, %if.end208, %while.end, %if.end178 - %wide_accum.8 = phi i64 [ 0, %if.end178 ], [ %wide_accum.4, %while.end ], [ %wide_accum.9, %if.end208 ], [ %wide_accum.1215, %if.else181 ] + %wide_accum.8 = phi i64 [ 0, %if.end178 ], [ %wide_accum.4, %while.end ], [ %wide_accum.9, %if.end208 ], [ %wide_accum.1214, %if.else181 ] %bitpointer.4 = phi i32 [ %add179, %if.end178 ], [ %sub152, %while.end ], [ %add209, %if.end208 ], [ %sub182, %if.else181 ] %conv212 = zext i32 %and to i64 %sub213 = sub i32 %bitpointer.4, %add @@ -1278,18 +1278,18 @@ if.else229: ; preds = %if.then220 if.end246.sink.split: ; preds = %if.then224, %if.else229, %if.then51, %if.else56 %or216.sink = phi i64 [ %or43, %if.else56 ], [ %or43, %if.then51 ], [ %or216, %if.else229 ], [ %or216, %if.then224 ] - %storemerge171.sink = phi i32 [ 0, %if.else56 ], [ 32, %if.then51 ], [ 0, %if.else229 ], [ 32, %if.then224 ] + %storemerge170.sink = phi i32 [ 0, %if.else56 ], [ 32, %if.then51 ], [ 0, %if.else229 ], [ 32, %if.then224 ] %sub213.sink = phi i32 [ %sub40, %if.else56 ], [ %sub40, %if.then51 ], [ %sub213, %if.else229 ], [ %sub213, %if.then224 ] %wide_accum.10 = shl i64 %or216.sink, 32 - store i32 %storemerge171.sink, ptr %bits, align 8 + store i32 %storemerge170.sink, ptr %bits, align 8 %add244 = add nuw nsw i32 %sub213.sink, 32 br label %if.end246 if.end246: ; preds = %if.end246.sink.split, %if.end211, %if.then39 %wide_accum.3 = phi i64 [ %or43, %if.then39 ], [ %or216, %if.end211 ], [ %wide_accum.10, %if.end246.sink.split ] %bitpointer.2 = phi i32 [ %sub40, %if.then39 ], [ %sub213, %if.end211 ], [ %add244, %if.end246.sink.split ] - %incdec.ptr = getelementptr inbounds i8, ptr %vals.addr.0217, i64 4 - %dec = add i32 %nvals.addr.0213, -1 + %incdec.ptr = getelementptr inbounds i8, ptr %vals.addr.0216, i64 4 + %dec = add i32 %nvals.addr.0212, -1 %tobool33.not = icmp eq i32 %dec, 0 br i1 %tobool33.not, label %while.end247, label %while.body, !llvm.loop !8 @@ -1326,13 +1326,13 @@ if.then264: ; preds = %if.then250 br label %return.sink.split return.sink.split: ; preds = %if.then254, %if.then264 - %.sink226 = phi i32 [ 96, %if.then264 ], [ 64, %if.then254 ] - %sub273 = sub nuw nsw i32 %.sink226, %bitpointer.1.lcssa + %.sink225 = phi i32 [ 96, %if.then264 ], [ 64, %if.then254 ] + %sub273 = sub nuw nsw i32 %.sink225, %bitpointer.1.lcssa store i32 %sub273, ptr %bits, align 8 br label %return -return: ; preds = %if.end7.i189, %if.end.i183, %return.sink.split, %if.end7.i, %if.end.i, %while.end247, %if.then250 - %retval.0 = phi i32 [ 1, %if.then250 ], [ 1, %while.end247 ], [ 0, %if.end.i ], [ 0, %if.end7.i ], [ 1, %return.sink.split ], [ 0, %if.end.i183 ], [ 0, %if.end7.i189 ] +return: ; preds = %if.end7.i188, %if.end.i182, %return.sink.split, %if.end7.i, %if.end.i, %while.end247, %if.then250 + %retval.0 = phi i32 [ 1, %if.then250 ], [ 1, %while.end247 ], [ 0, %if.end.i ], [ 0, %if.end7.i ], [ 1, %return.sink.split ], [ 0, %if.end.i182 ], [ 0, %if.end7.i188 ] ret i32 %retval.0 } diff --git a/bench/folly/optimized/SplitStringSimd.cpp.ll b/bench/folly/optimized/SplitStringSimd.cpp.ll index 817c73ae8e2..df406747ea9 100644 --- a/bench/folly/optimized/SplitStringSimd.cpp.ll +++ b/bench/folly/optimized/SplitStringSimd.cpp.ll @@ -2939,6 +2939,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall invoke.cont26: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %15, 4611686018427387903 + %add.ptr.i71.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i72 = getelementptr inbounds %"class.folly::Range", ptr %spec.select, i64 %pos %17 = load ptr, ptr %emplaceFunc, align 8, !tbaa !99 %18 = load ptr, ptr %17, align 8, !tbaa !10 @@ -2965,8 +2966,7 @@ if.then6.i: ; preds = %if.end.i75 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i72, i64 16 - %22 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %22, 4 + %gepdiff = sub nsw i64 %add.ptr.i71.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm1EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -2982,8 +2982,8 @@ invoke.cont34: ; preds = %if.else _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm1EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit: ; preds = %invoke.cont34, %if.else, %if.then6.i, %if.end.i75 call void @_ZN5folly12small_vectorINS_5RangeIPKcEELm1EvE8freeHeapEv(ptr noundef nonnull align 8 dereferenceable(24) %this) store ptr %spec.select, ptr %u.i.i, align 8, !tbaa !7 - %23 = load i64, ptr %this, align 8 - %and.i = and i64 %23, 4611686018427387903 + %22 = load i64, ptr %this, align 8 + %and.i = and i64 %22, 4611686018427387903 %storemerge.i97 = select i1 %cmp9, i64 -9223372036854775808, i64 -4611686018427387904 %storemerge.i99 = or disjoint i64 %and.i, %storemerge.i97 store i64 %storemerge.i99, ptr %this, align 8, !tbaa !92 @@ -4081,6 +4081,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then18: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %13, 4611686018427387903 + %add.ptr.i.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i58 = getelementptr inbounds %"class.folly::Range", ptr %call.i, i64 %pos %15 = load ptr, ptr %emplaceFunc, align 8, !tbaa !110 %16 = load ptr, ptr %15, align 8, !tbaa !10 @@ -4107,8 +4108,7 @@ if.then6.i: ; preds = %if.end.i61 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i58, i64 16 - %20 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %20, 4 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm2EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -4128,15 +4128,15 @@ _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm2EvE16makeS br i1 %or.cond, label %_ZN5folly12small_vectorINS_5RangeIPKcEELm2EvE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm2EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %21 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !113 - %mul.i = shl i64 %21, 4 - %22 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %22, 0 + %20 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !113 + %mul.i = shl i64 %20, 4 + %21 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %21, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !81 init.check.i.i.i.i.i: ; preds = %if.then4.i - %23 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 - %tobool.not.i.i.i.i.i = icmp eq i32 %23, 0 + %22 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 + %tobool.not.i.i.i.i.i = icmp eq i32 %22, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -4145,13 +4145,13 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) #26 %frombool.i.i.i.i.i = zext i1 %call.i.i.i.i.i to i8 store i8 %frombool.i.i.i.i.i, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82 - %24 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) + %23 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) call void @__cxa_guard_release(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %25 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 - %tobool1.i.i.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 + %tobool1.i.i.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool1.i.i.i.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i @@ -4164,8 +4164,8 @@ if.else.i.i: ; preds = %_ZN5folly11canSdall _ZN5folly12small_vectorINS_5RangeIPKcEELm2EvE8freeHeapEv.exit: ; preds = %if.else.i.i, %if.then.i.i, %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm2EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit store ptr %call.i, ptr %u.i.i, align 8, !tbaa !7 - %26 = load i64, ptr %this, align 8 - %and.i85 = and i64 %26, 4611686018427387903 + %25 = load i64, ptr %this, align 8 + %and.i85 = and i64 %25, 4611686018427387903 %storemerge.i86 = or disjoint i64 %and.i85, -9223372036854775808 store i64 %storemerge.i86, ptr %this, align 8, !tbaa !92 store i64 %retval.0.i49, ptr %capacity_.i.i.i.i, align 8, !tbaa !113 @@ -5038,6 +5038,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then18: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %13, 4611686018427387903 + %add.ptr.i.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i58 = getelementptr inbounds %"class.folly::Range", ptr %call.i, i64 %pos %15 = load ptr, ptr %emplaceFunc, align 8, !tbaa !123 %16 = load ptr, ptr %15, align 8, !tbaa !10 @@ -5064,8 +5065,7 @@ if.then6.i: ; preds = %if.end.i61 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i58, i64 16 - %20 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %20, 4 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm3EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -5085,15 +5085,15 @@ _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm3EvE16makeS br i1 %or.cond, label %_ZN5folly12small_vectorINS_5RangeIPKcEELm3EvE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm3EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %21 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !126 - %mul.i = shl i64 %21, 4 - %22 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %22, 0 + %20 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !126 + %mul.i = shl i64 %20, 4 + %21 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %21, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !81 init.check.i.i.i.i.i: ; preds = %if.then4.i - %23 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 - %tobool.not.i.i.i.i.i = icmp eq i32 %23, 0 + %22 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 + %tobool.not.i.i.i.i.i = icmp eq i32 %22, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -5102,13 +5102,13 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) #26 %frombool.i.i.i.i.i = zext i1 %call.i.i.i.i.i to i8 store i8 %frombool.i.i.i.i.i, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82 - %24 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) + %23 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) call void @__cxa_guard_release(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %25 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 - %tobool1.i.i.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 + %tobool1.i.i.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool1.i.i.i.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i @@ -5121,8 +5121,8 @@ if.else.i.i: ; preds = %_ZN5folly11canSdall _ZN5folly12small_vectorINS_5RangeIPKcEELm3EvE8freeHeapEv.exit: ; preds = %if.else.i.i, %if.then.i.i, %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm3EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit store ptr %call.i, ptr %u.i.i, align 8, !tbaa !7 - %26 = load i64, ptr %this, align 8 - %and.i85 = and i64 %26, 4611686018427387903 + %25 = load i64, ptr %this, align 8 + %and.i85 = and i64 %25, 4611686018427387903 %storemerge.i86 = or disjoint i64 %and.i85, -9223372036854775808 store i64 %storemerge.i86, ptr %this, align 8, !tbaa !92 store i64 %retval.0.i49, ptr %capacity_.i.i.i.i, align 8, !tbaa !126 @@ -5995,6 +5995,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then18: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %13, 4611686018427387903 + %add.ptr.i.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i58 = getelementptr inbounds %"class.folly::Range", ptr %call.i, i64 %pos %15 = load ptr, ptr %emplaceFunc, align 8, !tbaa !136 %16 = load ptr, ptr %15, align 8, !tbaa !10 @@ -6021,8 +6022,7 @@ if.then6.i: ; preds = %if.end.i61 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i58, i64 16 - %20 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %20, 4 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm4EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -6042,15 +6042,15 @@ _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm4EvE16makeS br i1 %or.cond, label %_ZN5folly12small_vectorINS_5RangeIPKcEELm4EvE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm4EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %21 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !139 - %mul.i = shl i64 %21, 4 - %22 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %22, 0 + %20 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !139 + %mul.i = shl i64 %20, 4 + %21 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %21, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !81 init.check.i.i.i.i.i: ; preds = %if.then4.i - %23 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 - %tobool.not.i.i.i.i.i = icmp eq i32 %23, 0 + %22 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 + %tobool.not.i.i.i.i.i = icmp eq i32 %22, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -6059,13 +6059,13 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) #26 %frombool.i.i.i.i.i = zext i1 %call.i.i.i.i.i to i8 store i8 %frombool.i.i.i.i.i, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82 - %24 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) + %23 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) call void @__cxa_guard_release(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %25 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 - %tobool1.i.i.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 + %tobool1.i.i.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool1.i.i.i.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i @@ -6078,8 +6078,8 @@ if.else.i.i: ; preds = %_ZN5folly11canSdall _ZN5folly12small_vectorINS_5RangeIPKcEELm4EvE8freeHeapEv.exit: ; preds = %if.else.i.i, %if.then.i.i, %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm4EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit store ptr %call.i, ptr %u.i.i, align 8, !tbaa !7 - %26 = load i64, ptr %this, align 8 - %and.i85 = and i64 %26, 4611686018427387903 + %25 = load i64, ptr %this, align 8 + %and.i85 = and i64 %25, 4611686018427387903 %storemerge.i86 = or disjoint i64 %and.i85, -9223372036854775808 store i64 %storemerge.i86, ptr %this, align 8, !tbaa !92 store i64 %retval.0.i49, ptr %capacity_.i.i.i.i, align 8, !tbaa !139 @@ -6952,6 +6952,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then18: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %13, 4611686018427387903 + %add.ptr.i.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i58 = getelementptr inbounds %"class.folly::Range", ptr %call.i, i64 %pos %15 = load ptr, ptr %emplaceFunc, align 8, !tbaa !149 %16 = load ptr, ptr %15, align 8, !tbaa !10 @@ -6978,8 +6979,7 @@ if.then6.i: ; preds = %if.end.i61 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i58, i64 16 - %20 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %20, 4 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm5EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -6999,15 +6999,15 @@ _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm5EvE16makeS br i1 %or.cond, label %_ZN5folly12small_vectorINS_5RangeIPKcEELm5EvE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm5EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %21 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !152 - %mul.i = shl i64 %21, 4 - %22 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %22, 0 + %20 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !152 + %mul.i = shl i64 %20, 4 + %21 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %21, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !81 init.check.i.i.i.i.i: ; preds = %if.then4.i - %23 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 - %tobool.not.i.i.i.i.i = icmp eq i32 %23, 0 + %22 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 + %tobool.not.i.i.i.i.i = icmp eq i32 %22, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -7016,13 +7016,13 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) #26 %frombool.i.i.i.i.i = zext i1 %call.i.i.i.i.i to i8 store i8 %frombool.i.i.i.i.i, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82 - %24 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) + %23 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) call void @__cxa_guard_release(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %25 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 - %tobool1.i.i.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 + %tobool1.i.i.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool1.i.i.i.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i @@ -7035,8 +7035,8 @@ if.else.i.i: ; preds = %_ZN5folly11canSdall _ZN5folly12small_vectorINS_5RangeIPKcEELm5EvE8freeHeapEv.exit: ; preds = %if.else.i.i, %if.then.i.i, %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm5EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit store ptr %call.i, ptr %u.i.i, align 8, !tbaa !7 - %26 = load i64, ptr %this, align 8 - %and.i85 = and i64 %26, 4611686018427387903 + %25 = load i64, ptr %this, align 8 + %and.i85 = and i64 %25, 4611686018427387903 %storemerge.i86 = or disjoint i64 %and.i85, -9223372036854775808 store i64 %storemerge.i86, ptr %this, align 8, !tbaa !92 store i64 %retval.0.i49, ptr %capacity_.i.i.i.i, align 8, !tbaa !152 @@ -7909,6 +7909,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then18: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %13, 4611686018427387903 + %add.ptr.i.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i58 = getelementptr inbounds %"class.folly::Range", ptr %call.i, i64 %pos %15 = load ptr, ptr %emplaceFunc, align 8, !tbaa !162 %16 = load ptr, ptr %15, align 8, !tbaa !10 @@ -7935,8 +7936,7 @@ if.then6.i: ; preds = %if.end.i61 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i58, i64 16 - %20 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %20, 4 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm6EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -7956,15 +7956,15 @@ _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm6EvE16makeS br i1 %or.cond, label %_ZN5folly12small_vectorINS_5RangeIPKcEELm6EvE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm6EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %21 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !165 - %mul.i = shl i64 %21, 4 - %22 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %22, 0 + %20 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !165 + %mul.i = shl i64 %20, 4 + %21 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %21, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !81 init.check.i.i.i.i.i: ; preds = %if.then4.i - %23 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 - %tobool.not.i.i.i.i.i = icmp eq i32 %23, 0 + %22 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 + %tobool.not.i.i.i.i.i = icmp eq i32 %22, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -7973,13 +7973,13 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) #26 %frombool.i.i.i.i.i = zext i1 %call.i.i.i.i.i to i8 store i8 %frombool.i.i.i.i.i, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82 - %24 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) + %23 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) call void @__cxa_guard_release(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %25 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 - %tobool1.i.i.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 + %tobool1.i.i.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool1.i.i.i.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i @@ -7992,8 +7992,8 @@ if.else.i.i: ; preds = %_ZN5folly11canSdall _ZN5folly12small_vectorINS_5RangeIPKcEELm6EvE8freeHeapEv.exit: ; preds = %if.else.i.i, %if.then.i.i, %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm6EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit store ptr %call.i, ptr %u.i.i, align 8, !tbaa !7 - %26 = load i64, ptr %this, align 8 - %and.i85 = and i64 %26, 4611686018427387903 + %25 = load i64, ptr %this, align 8 + %and.i85 = and i64 %25, 4611686018427387903 %storemerge.i86 = or disjoint i64 %and.i85, -9223372036854775808 store i64 %storemerge.i86, ptr %this, align 8, !tbaa !92 store i64 %retval.0.i49, ptr %capacity_.i.i.i.i, align 8, !tbaa !165 @@ -8866,6 +8866,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then18: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %13, 4611686018427387903 + %add.ptr.i.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i58 = getelementptr inbounds %"class.folly::Range", ptr %call.i, i64 %pos %15 = load ptr, ptr %emplaceFunc, align 8, !tbaa !175 %16 = load ptr, ptr %15, align 8, !tbaa !10 @@ -8892,8 +8893,7 @@ if.then6.i: ; preds = %if.end.i61 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i58, i64 16 - %20 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %20, 4 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm7EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -8913,15 +8913,15 @@ _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm7EvE16makeS br i1 %or.cond, label %_ZN5folly12small_vectorINS_5RangeIPKcEELm7EvE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm7EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %21 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !178 - %mul.i = shl i64 %21, 4 - %22 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %22, 0 + %20 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !178 + %mul.i = shl i64 %20, 4 + %21 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %21, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !81 init.check.i.i.i.i.i: ; preds = %if.then4.i - %23 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 - %tobool.not.i.i.i.i.i = icmp eq i32 %23, 0 + %22 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 + %tobool.not.i.i.i.i.i = icmp eq i32 %22, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -8930,13 +8930,13 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) #26 %frombool.i.i.i.i.i = zext i1 %call.i.i.i.i.i to i8 store i8 %frombool.i.i.i.i.i, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82 - %24 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) + %23 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) call void @__cxa_guard_release(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %25 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 - %tobool1.i.i.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 + %tobool1.i.i.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool1.i.i.i.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i @@ -8949,8 +8949,8 @@ if.else.i.i: ; preds = %_ZN5folly11canSdall _ZN5folly12small_vectorINS_5RangeIPKcEELm7EvE8freeHeapEv.exit: ; preds = %if.else.i.i, %if.then.i.i, %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm7EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit store ptr %call.i, ptr %u.i.i, align 8, !tbaa !7 - %26 = load i64, ptr %this, align 8 - %and.i85 = and i64 %26, 4611686018427387903 + %25 = load i64, ptr %this, align 8 + %and.i85 = and i64 %25, 4611686018427387903 %storemerge.i86 = or disjoint i64 %and.i85, -9223372036854775808 store i64 %storemerge.i86, ptr %this, align 8, !tbaa !92 store i64 %retval.0.i49, ptr %capacity_.i.i.i.i, align 8, !tbaa !178 @@ -9823,6 +9823,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then18: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %13, 4611686018427387903 + %add.ptr.i.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i58 = getelementptr inbounds %"class.folly::Range", ptr %call.i, i64 %pos %15 = load ptr, ptr %emplaceFunc, align 8, !tbaa !188 %16 = load ptr, ptr %15, align 8, !tbaa !10 @@ -9849,8 +9850,7 @@ if.then6.i: ; preds = %if.end.i61 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i58, i64 16 - %20 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %20, 4 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm8EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -9870,15 +9870,15 @@ _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm8EvE16makeS br i1 %or.cond, label %_ZN5folly12small_vectorINS_5RangeIPKcEELm8EvE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm8EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %21 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !191 - %mul.i = shl i64 %21, 4 - %22 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %22, 0 + %20 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !191 + %mul.i = shl i64 %20, 4 + %21 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %21, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !81 init.check.i.i.i.i.i: ; preds = %if.then4.i - %23 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 - %tobool.not.i.i.i.i.i = icmp eq i32 %23, 0 + %22 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 + %tobool.not.i.i.i.i.i = icmp eq i32 %22, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -9887,13 +9887,13 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) #26 %frombool.i.i.i.i.i = zext i1 %call.i.i.i.i.i to i8 store i8 %frombool.i.i.i.i.i, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82 - %24 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) + %23 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) call void @__cxa_guard_release(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %25 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 - %tobool1.i.i.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 + %tobool1.i.i.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool1.i.i.i.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i @@ -9906,8 +9906,8 @@ if.else.i.i: ; preds = %_ZN5folly11canSdall _ZN5folly12small_vectorINS_5RangeIPKcEELm8EvE8freeHeapEv.exit: ; preds = %if.else.i.i, %if.then.i.i, %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorINS_5RangeIPKcEELm8EvE16makeSizeInternalIZNS7_12emplace_backIJRS5_lEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit store ptr %call.i, ptr %u.i.i, align 8, !tbaa !7 - %26 = load i64, ptr %this, align 8 - %and.i85 = and i64 %26, 4611686018427387903 + %25 = load i64, ptr %this, align 8 + %and.i85 = and i64 %25, 4611686018427387903 %storemerge.i86 = or disjoint i64 %and.i85, -9223372036854775808 store i64 %storemerge.i86, ptr %this, align 8, !tbaa !92 store i64 %retval.0.i49, ptr %capacity_.i.i.i.i, align 8, !tbaa !191 @@ -12625,6 +12625,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then24: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %15, 4611686018427387903 + %add.ptr.i71.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i72 = getelementptr inbounds %"class.std::basic_string_view", ptr %spec.select, i64 %pos %17 = load ptr, ptr %emplaceFunc, align 8, !tbaa !270 %18 = load ptr, ptr %17, align 8, !tbaa !10 @@ -12650,8 +12651,7 @@ if.then6.i: ; preds = %if.end.i75 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i72, i64 16 - %22 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %22, 4 + %gepdiff = sub nsw i64 %add.ptr.i71.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm1EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -12667,8 +12667,8 @@ if.then31: ; preds = %if.else _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm1EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit: ; preds = %if.then31, %if.else, %if.then6.i, %if.end.i75 call void @_ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm1EvE8freeHeapEv(ptr noundef nonnull align 8 dereferenceable(24) %this) store ptr %spec.select, ptr %u.i.i, align 8, !tbaa !7 - %23 = load i64, ptr %this, align 8 - %and.i = and i64 %23, 4611686018427387903 + %22 = load i64, ptr %this, align 8 + %and.i = and i64 %22, 4611686018427387903 %storemerge.i97 = select i1 %cmp9, i64 -9223372036854775808, i64 -4611686018427387904 %storemerge.i99 = or disjoint i64 %and.i, %storemerge.i97 store i64 %storemerge.i99, ptr %this, align 8, !tbaa !92 @@ -13696,6 +13696,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then18: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %13, 4611686018427387903 + %add.ptr.i.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i58 = getelementptr inbounds %"class.std::basic_string_view", ptr %call.i, i64 %pos %15 = load ptr, ptr %emplaceFunc, align 8, !tbaa !281 %16 = load ptr, ptr %15, align 8, !tbaa !10 @@ -13721,8 +13722,7 @@ if.then6.i: ; preds = %if.end.i61 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i58, i64 16 - %20 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %20, 4 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm2EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -13742,15 +13742,15 @@ _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11c br i1 %or.cond, label %_ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm2EvE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm2EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %21 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !284 - %mul.i = shl i64 %21, 4 - %22 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %22, 0 + %20 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !284 + %mul.i = shl i64 %20, 4 + %21 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %21, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !81 init.check.i.i.i.i.i: ; preds = %if.then4.i - %23 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 - %tobool.not.i.i.i.i.i = icmp eq i32 %23, 0 + %22 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 + %tobool.not.i.i.i.i.i = icmp eq i32 %22, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -13759,13 +13759,13 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) #26 %frombool.i.i.i.i.i = zext i1 %call.i.i.i.i.i to i8 store i8 %frombool.i.i.i.i.i, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82 - %24 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) + %23 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) call void @__cxa_guard_release(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %25 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 - %tobool1.i.i.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 + %tobool1.i.i.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool1.i.i.i.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i @@ -13778,8 +13778,8 @@ if.else.i.i: ; preds = %_ZN5folly11canSdall _ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm2EvE8freeHeapEv.exit: ; preds = %if.else.i.i, %if.then.i.i, %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm2EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit store ptr %call.i, ptr %u.i.i, align 8, !tbaa !7 - %26 = load i64, ptr %this, align 8 - %and.i85 = and i64 %26, 4611686018427387903 + %25 = load i64, ptr %this, align 8 + %and.i85 = and i64 %25, 4611686018427387903 %storemerge.i86 = or disjoint i64 %and.i85, -9223372036854775808 store i64 %storemerge.i86, ptr %this, align 8, !tbaa !92 store i64 %retval.0.i49, ptr %capacity_.i.i.i.i, align 8, !tbaa !284 @@ -14636,6 +14636,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then18: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %13, 4611686018427387903 + %add.ptr.i.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i58 = getelementptr inbounds %"class.std::basic_string_view", ptr %call.i, i64 %pos %15 = load ptr, ptr %emplaceFunc, align 8, !tbaa !294 %16 = load ptr, ptr %15, align 8, !tbaa !10 @@ -14661,8 +14662,7 @@ if.then6.i: ; preds = %if.end.i61 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i58, i64 16 - %20 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %20, 4 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm3EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -14682,15 +14682,15 @@ _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11c br i1 %or.cond, label %_ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm3EvE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm3EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %21 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !297 - %mul.i = shl i64 %21, 4 - %22 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %22, 0 + %20 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !297 + %mul.i = shl i64 %20, 4 + %21 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %21, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !81 init.check.i.i.i.i.i: ; preds = %if.then4.i - %23 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 - %tobool.not.i.i.i.i.i = icmp eq i32 %23, 0 + %22 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 + %tobool.not.i.i.i.i.i = icmp eq i32 %22, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -14699,13 +14699,13 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) #26 %frombool.i.i.i.i.i = zext i1 %call.i.i.i.i.i to i8 store i8 %frombool.i.i.i.i.i, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82 - %24 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) + %23 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) call void @__cxa_guard_release(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %25 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 - %tobool1.i.i.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 + %tobool1.i.i.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool1.i.i.i.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i @@ -14718,8 +14718,8 @@ if.else.i.i: ; preds = %_ZN5folly11canSdall _ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm3EvE8freeHeapEv.exit: ; preds = %if.else.i.i, %if.then.i.i, %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm3EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit store ptr %call.i, ptr %u.i.i, align 8, !tbaa !7 - %26 = load i64, ptr %this, align 8 - %and.i85 = and i64 %26, 4611686018427387903 + %25 = load i64, ptr %this, align 8 + %and.i85 = and i64 %25, 4611686018427387903 %storemerge.i86 = or disjoint i64 %and.i85, -9223372036854775808 store i64 %storemerge.i86, ptr %this, align 8, !tbaa !92 store i64 %retval.0.i49, ptr %capacity_.i.i.i.i, align 8, !tbaa !297 @@ -15576,6 +15576,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then18: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %13, 4611686018427387903 + %add.ptr.i.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i58 = getelementptr inbounds %"class.std::basic_string_view", ptr %call.i, i64 %pos %15 = load ptr, ptr %emplaceFunc, align 8, !tbaa !307 %16 = load ptr, ptr %15, align 8, !tbaa !10 @@ -15601,8 +15602,7 @@ if.then6.i: ; preds = %if.end.i61 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i58, i64 16 - %20 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %20, 4 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm4EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -15622,15 +15622,15 @@ _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11c br i1 %or.cond, label %_ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm4EvE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm4EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %21 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !310 - %mul.i = shl i64 %21, 4 - %22 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %22, 0 + %20 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !310 + %mul.i = shl i64 %20, 4 + %21 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %21, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !81 init.check.i.i.i.i.i: ; preds = %if.then4.i - %23 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 - %tobool.not.i.i.i.i.i = icmp eq i32 %23, 0 + %22 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 + %tobool.not.i.i.i.i.i = icmp eq i32 %22, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -15639,13 +15639,13 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) #26 %frombool.i.i.i.i.i = zext i1 %call.i.i.i.i.i to i8 store i8 %frombool.i.i.i.i.i, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82 - %24 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) + %23 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) call void @__cxa_guard_release(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %25 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 - %tobool1.i.i.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 + %tobool1.i.i.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool1.i.i.i.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i @@ -15658,8 +15658,8 @@ if.else.i.i: ; preds = %_ZN5folly11canSdall _ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm4EvE8freeHeapEv.exit: ; preds = %if.else.i.i, %if.then.i.i, %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm4EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit store ptr %call.i, ptr %u.i.i, align 8, !tbaa !7 - %26 = load i64, ptr %this, align 8 - %and.i85 = and i64 %26, 4611686018427387903 + %25 = load i64, ptr %this, align 8 + %and.i85 = and i64 %25, 4611686018427387903 %storemerge.i86 = or disjoint i64 %and.i85, -9223372036854775808 store i64 %storemerge.i86, ptr %this, align 8, !tbaa !92 store i64 %retval.0.i49, ptr %capacity_.i.i.i.i, align 8, !tbaa !310 @@ -16516,6 +16516,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then18: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %13, 4611686018427387903 + %add.ptr.i.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i58 = getelementptr inbounds %"class.std::basic_string_view", ptr %call.i, i64 %pos %15 = load ptr, ptr %emplaceFunc, align 8, !tbaa !320 %16 = load ptr, ptr %15, align 8, !tbaa !10 @@ -16541,8 +16542,7 @@ if.then6.i: ; preds = %if.end.i61 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i58, i64 16 - %20 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %20, 4 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm5EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -16562,15 +16562,15 @@ _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11c br i1 %or.cond, label %_ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm5EvE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm5EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %21 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !323 - %mul.i = shl i64 %21, 4 - %22 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %22, 0 + %20 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !323 + %mul.i = shl i64 %20, 4 + %21 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %21, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !81 init.check.i.i.i.i.i: ; preds = %if.then4.i - %23 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 - %tobool.not.i.i.i.i.i = icmp eq i32 %23, 0 + %22 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 + %tobool.not.i.i.i.i.i = icmp eq i32 %22, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -16579,13 +16579,13 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) #26 %frombool.i.i.i.i.i = zext i1 %call.i.i.i.i.i to i8 store i8 %frombool.i.i.i.i.i, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82 - %24 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) + %23 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) call void @__cxa_guard_release(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %25 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 - %tobool1.i.i.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 + %tobool1.i.i.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool1.i.i.i.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i @@ -16598,8 +16598,8 @@ if.else.i.i: ; preds = %_ZN5folly11canSdall _ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm5EvE8freeHeapEv.exit: ; preds = %if.else.i.i, %if.then.i.i, %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm5EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit store ptr %call.i, ptr %u.i.i, align 8, !tbaa !7 - %26 = load i64, ptr %this, align 8 - %and.i85 = and i64 %26, 4611686018427387903 + %25 = load i64, ptr %this, align 8 + %and.i85 = and i64 %25, 4611686018427387903 %storemerge.i86 = or disjoint i64 %and.i85, -9223372036854775808 store i64 %storemerge.i86, ptr %this, align 8, !tbaa !92 store i64 %retval.0.i49, ptr %capacity_.i.i.i.i, align 8, !tbaa !323 @@ -17456,6 +17456,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then18: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %13, 4611686018427387903 + %add.ptr.i.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i58 = getelementptr inbounds %"class.std::basic_string_view", ptr %call.i, i64 %pos %15 = load ptr, ptr %emplaceFunc, align 8, !tbaa !333 %16 = load ptr, ptr %15, align 8, !tbaa !10 @@ -17481,8 +17482,7 @@ if.then6.i: ; preds = %if.end.i61 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i58, i64 16 - %20 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %20, 4 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm6EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -17502,15 +17502,15 @@ _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11c br i1 %or.cond, label %_ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm6EvE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm6EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %21 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !336 - %mul.i = shl i64 %21, 4 - %22 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %22, 0 + %20 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !336 + %mul.i = shl i64 %20, 4 + %21 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %21, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !81 init.check.i.i.i.i.i: ; preds = %if.then4.i - %23 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 - %tobool.not.i.i.i.i.i = icmp eq i32 %23, 0 + %22 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 + %tobool.not.i.i.i.i.i = icmp eq i32 %22, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -17519,13 +17519,13 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) #26 %frombool.i.i.i.i.i = zext i1 %call.i.i.i.i.i to i8 store i8 %frombool.i.i.i.i.i, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82 - %24 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) + %23 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) call void @__cxa_guard_release(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %25 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 - %tobool1.i.i.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 + %tobool1.i.i.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool1.i.i.i.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i @@ -17538,8 +17538,8 @@ if.else.i.i: ; preds = %_ZN5folly11canSdall _ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm6EvE8freeHeapEv.exit: ; preds = %if.else.i.i, %if.then.i.i, %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm6EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit store ptr %call.i, ptr %u.i.i, align 8, !tbaa !7 - %26 = load i64, ptr %this, align 8 - %and.i85 = and i64 %26, 4611686018427387903 + %25 = load i64, ptr %this, align 8 + %and.i85 = and i64 %25, 4611686018427387903 %storemerge.i86 = or disjoint i64 %and.i85, -9223372036854775808 store i64 %storemerge.i86, ptr %this, align 8, !tbaa !92 store i64 %retval.0.i49, ptr %capacity_.i.i.i.i, align 8, !tbaa !336 @@ -18396,6 +18396,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then18: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %13, 4611686018427387903 + %add.ptr.i.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i58 = getelementptr inbounds %"class.std::basic_string_view", ptr %call.i, i64 %pos %15 = load ptr, ptr %emplaceFunc, align 8, !tbaa !346 %16 = load ptr, ptr %15, align 8, !tbaa !10 @@ -18421,8 +18422,7 @@ if.then6.i: ; preds = %if.end.i61 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i58, i64 16 - %20 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %20, 4 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm7EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -18442,15 +18442,15 @@ _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11c br i1 %or.cond, label %_ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm7EvE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm7EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %21 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !349 - %mul.i = shl i64 %21, 4 - %22 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %22, 0 + %20 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !349 + %mul.i = shl i64 %20, 4 + %21 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %21, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !81 init.check.i.i.i.i.i: ; preds = %if.then4.i - %23 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 - %tobool.not.i.i.i.i.i = icmp eq i32 %23, 0 + %22 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 + %tobool.not.i.i.i.i.i = icmp eq i32 %22, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -18459,13 +18459,13 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) #26 %frombool.i.i.i.i.i = zext i1 %call.i.i.i.i.i to i8 store i8 %frombool.i.i.i.i.i, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82 - %24 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) + %23 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) call void @__cxa_guard_release(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %25 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 - %tobool1.i.i.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 + %tobool1.i.i.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool1.i.i.i.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i @@ -18478,8 +18478,8 @@ if.else.i.i: ; preds = %_ZN5folly11canSdall _ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm7EvE8freeHeapEv.exit: ; preds = %if.else.i.i, %if.then.i.i, %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm7EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit store ptr %call.i, ptr %u.i.i, align 8, !tbaa !7 - %26 = load i64, ptr %this, align 8 - %and.i85 = and i64 %26, 4611686018427387903 + %25 = load i64, ptr %this, align 8 + %and.i85 = and i64 %25, 4611686018427387903 %storemerge.i86 = or disjoint i64 %and.i85, -9223372036854775808 store i64 %storemerge.i86, ptr %this, align 8, !tbaa !92 store i64 %retval.0.i49, ptr %capacity_.i.i.i.i, align 8, !tbaa !349 @@ -19336,6 +19336,7 @@ _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMall if.then18: ; preds = %_ZN5folly13checkedMallocEm.exit %and.i.i.i = and i64 %13, 4611686018427387903 + %add.ptr.i.idx = shl nsw i64 %and.i.i.i, 4 %add.ptr.i58 = getelementptr inbounds %"class.std::basic_string_view", ptr %call.i, i64 %pos %15 = load ptr, ptr %emplaceFunc, align 8, !tbaa !359 %16 = load ptr, ptr %15, align 8, !tbaa !10 @@ -19361,8 +19362,7 @@ if.then6.i: ; preds = %if.end.i61 %add.ptr5.i.idx = shl nsw i64 %pos, 4 %add.ptr5.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr5.i.idx %add.ptr9.i = getelementptr inbounds i8, ptr %add.ptr.i58, i64 16 - %20 = sub nsw i64 %and.i.i.i, %pos - %gepdiff = shl nsw i64 %20, 4 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr5.i.idx call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr9.i, ptr align 1 %add.ptr5.i, i64 %gepdiff, i1 false) br label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm8EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit @@ -19382,15 +19382,15 @@ _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11c br i1 %or.cond, label %_ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm8EvE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm8EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %21 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !362 - %mul.i = shl i64 %21, 4 - %22 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %22, 0 + %20 = load i64, ptr %capacity_.i.i.i.i, align 8, !tbaa !362 + %mul.i = shl i64 %20, 4 + %21 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %21, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !81 init.check.i.i.i.i.i: ; preds = %if.then4.i - %23 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 - %tobool.not.i.i.i.i.i = icmp eq i32 %23, 0 + %22 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 + %tobool.not.i.i.i.i.i = icmp eq i32 %22, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -19399,13 +19399,13 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) #26 %frombool.i.i.i.i.i = zext i1 %call.i.i.i.i.i to i8 store i8 %frombool.i.i.i.i.i, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82 - %24 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) + %23 = call ptr @llvm.invariant.start.p0(i64 1, ptr nonnull @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) call void @__cxa_guard_release(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #26 br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %25 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 - %tobool1.i.i.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1, !tbaa !82, !range !84, !noundef !85 + %tobool1.i.i.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool1.i.i.i.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i @@ -19418,8 +19418,8 @@ if.else.i.i: ; preds = %_ZN5folly11canSdall _ZN5folly12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm8EvE8freeHeapEv.exit: ; preds = %if.else.i.i, %if.then.i.i, %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt17basic_string_viewIcSt11char_traitsIcEELm8EvE16makeSizeInternalIZNS7_12emplace_backIJRPKclEEERS6_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit store ptr %call.i, ptr %u.i.i, align 8, !tbaa !7 - %26 = load i64, ptr %this, align 8 - %and.i85 = and i64 %26, 4611686018427387903 + %25 = load i64, ptr %this, align 8 + %and.i85 = and i64 %25, 4611686018427387903 %storemerge.i86 = or disjoint i64 %and.i85, -9223372036854775808 store i64 %storemerge.i86, ptr %this, align 8, !tbaa !92 store i64 %retval.0.i49, ptr %capacity_.i.i.i.i, align 8, !tbaa !362 diff --git a/bench/freetype/optimized/sfnt.c.ll b/bench/freetype/optimized/sfnt.c.ll index d044068fe40..f8bc8e71b0d 100644 --- a/bench/freetype/optimized/sfnt.c.ll +++ b/bench/freetype/optimized/sfnt.c.ll @@ -12328,33 +12328,33 @@ define internal zeroext range(i8 0, 2) i8 @tt_face_get_colr_layer(ptr nocapture %48 = getelementptr inbounds i8, ptr %23, i64 2 %49 = load i8, ptr %48, align 1 %50 = zext i8 %49 to i64 - %51 = shl nuw nsw i64 %50, 8 - %52 = getelementptr inbounds i8, ptr %23, i64 3 - %53 = load i8, ptr %52, align 1 - %54 = zext i8 %53 to i64 - %55 = or disjoint i64 %51, %54 - %56 = zext i16 %46 to i32 - store i32 %56, ptr %4, align 8 - %57 = zext i16 %46 to i64 - %58 = add nuw nsw i64 %55, %57 + %51 = getelementptr inbounds i8, ptr %23, i64 3 + %52 = load i8, ptr %51, align 1 + %53 = zext i8 %52 to i64 + %54 = zext i16 %46 to i32 + store i32 %54, ptr %4, align 8 + %55 = shl nuw nsw i64 %50, 10 + %56 = shl nuw nsw i64 %53, 2 + %57 = or disjoint i64 %56, %55 + %58 = zext i16 %46 to i64 %59 = shl nuw nsw i64 %58, 2 - %60 = getelementptr inbounds i8, ptr %7, i64 136 - %61 = load i64, ptr %60, align 8 - %62 = icmp ugt i64 %59, %61 - br i1 %62, label %find_base_glyph_record.exit.thread, label %63 + %60 = add nuw nsw i64 %57, %59 + %61 = getelementptr inbounds i8, ptr %7, i64 136 + %62 = load i64, ptr %61, align 8 + %63 = icmp ugt i64 %60, %62 + br i1 %63, label %find_base_glyph_record.exit.thread, label %64 -63: ; preds = %47 - %64 = shl nuw nsw i64 %55, 2 +64: ; preds = %47 %65 = getelementptr inbounds i8, ptr %7, i64 16 %66 = load ptr, ptr %65, align 8 - %67 = getelementptr inbounds i8, ptr %66, i64 %64 + %67 = getelementptr inbounds i8, ptr %66, i64 %57 store ptr %67, ptr %9, align 8 br label %68 -68: ; preds = %._crit_edge, %63 - %69 = phi ptr [ %10, %._crit_edge ], [ %67, %63 ] - %70 = phi i32 [ %.pre53, %._crit_edge ], [ %56, %63 ] - %71 = phi i32 [ %.pre, %._crit_edge ], [ 0, %63 ] +68: ; preds = %._crit_edge, %64 + %69 = phi ptr [ %10, %._crit_edge ], [ %67, %64 ] + %70 = phi i32 [ %.pre53, %._crit_edge ], [ %54, %64 ] + %71 = phi i32 [ %.pre, %._crit_edge ], [ 0, %64 ] %72 = getelementptr inbounds i8, ptr %4, i64 4 %.not41 = icmp ult i32 %71, %70 br i1 %.not41, label %73, label %find_base_glyph_record.exit.thread diff --git a/bench/graphviz/optimized/gvplugin_vt.c.ll b/bench/graphviz/optimized/gvplugin_vt.c.ll index 3fde702e73b..dcc4ac6f0a8 100644 --- a/bench/graphviz/optimized/gvplugin_vt.c.ll +++ b/bench/graphviz/optimized/gvplugin_vt.c.ll @@ -49,168 +49,169 @@ define internal fastcc void @process(ptr noundef %0, i32 noundef %1) unnamed_add br label %.preheader67 .preheader67: ; preds = %.preheader67.lr.ph, %._crit_edge - %.069 = phi i32 [ 0, %.preheader67.lr.ph ], [ %101, %._crit_edge ] + %.069 = phi i32 [ 0, %.preheader67.lr.ph ], [ %102, %._crit_edge ] %9 = load i32, ptr %7, align 8 %.not71 = icmp eq i32 %9, 0 br i1 %.not71, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %.preheader67 - %10 = or disjoint i32 %.069, 1 - br label %11 - -11: ; preds = %.lr.ph, %97 - %12 = phi i32 [ %9, %.lr.ph ], [ %99, %97 ] - %.04868 = phi i32 [ 0, %.lr.ph ], [ %98, %97 ] - %13 = mul i32 %12, %.069 - %14 = add i32 %13, %.04868 - %15 = shl i32 %14, 2 - %16 = or disjoint i32 %15, 2 - %17 = zext i32 %16 to i64 - %18 = getelementptr inbounds i8, ptr %4, i64 %17 - %19 = load i8, ptr %18, align 1 - %20 = zext i8 %19 to i32 - %21 = or disjoint i32 %15, 1 - %22 = zext i32 %21 to i64 - %23 = getelementptr inbounds i8, ptr %4, i64 %22 - %24 = load i8, ptr %23, align 1 - %25 = zext i8 %24 to i32 - %26 = zext i32 %15 to i64 - %27 = getelementptr inbounds i8, ptr %4, i64 %26 - %28 = load i8, ptr %27, align 1 - %29 = zext i8 %28 to i32 - br i1 %8, label %.preheader66, label %51 - -.preheader66: ; preds = %11, %.preheader66 - %.017.i = phi i32 [ %spec.select18.i, %.preheader66 ], [ 0, %11 ] - %.01116.i = phi i64 [ %50, %.preheader66 ], [ 0, %11 ] - %.01215.i = phi i32 [ %spec.select.i, %.preheader66 ], [ -1, %11 ] - %30 = getelementptr inbounds [8 x %struct.color_t], ptr @COLORS, i64 0, i64 %.01116.i - %31 = load i64, ptr %30, align 16 - %32 = getelementptr inbounds i8, ptr %30, i64 8 - %33 = load i64, ptr %32, align 8 - %.sroa.1.0.extract.shift.i.i = lshr i64 %31, 32 + %10 = shl i32 %.069, 2 + %11 = or disjoint i32 %.069, 1 + %12 = shl i32 %11, 2 + br label %13 + +13: ; preds = %.lr.ph, %98 + %14 = phi i32 [ %9, %.lr.ph ], [ %100, %98 ] + %.04868 = phi i32 [ 0, %.lr.ph ], [ %99, %98 ] + %15 = mul i32 %10, %14 + %16 = shl i32 %.04868, 2 + %17 = add i32 %15, %16 + %18 = or disjoint i32 %17, 2 + %19 = zext i32 %18 to i64 + %20 = getelementptr inbounds i8, ptr %4, i64 %19 + %21 = load i8, ptr %20, align 1 + %22 = zext i8 %21 to i32 + %23 = or disjoint i32 %17, 1 + %24 = zext i32 %23 to i64 + %25 = getelementptr inbounds i8, ptr %4, i64 %24 + %26 = load i8, ptr %25, align 1 + %27 = zext i8 %26 to i32 + %28 = zext i32 %17 to i64 + %29 = getelementptr inbounds i8, ptr %4, i64 %28 + %30 = load i8, ptr %29, align 1 + %31 = zext i8 %30 to i32 + br i1 %8, label %.preheader66, label %53 + +.preheader66: ; preds = %13, %.preheader66 + %.017.i = phi i32 [ %spec.select18.i, %.preheader66 ], [ 0, %13 ] + %.01116.i = phi i64 [ %52, %.preheader66 ], [ 0, %13 ] + %.01215.i = phi i32 [ %spec.select.i, %.preheader66 ], [ -1, %13 ] + %32 = getelementptr inbounds [8 x %struct.color_t], ptr @COLORS, i64 0, i64 %.01116.i + %33 = load i64, ptr %32, align 16 + %34 = getelementptr inbounds i8, ptr %32, i64 8 + %35 = load i64, ptr %34, align 8 + %.sroa.1.0.extract.shift.i.i = lshr i64 %33, 32 %.sroa.1.0.extract.trunc.i.i = trunc nuw i64 %.sroa.1.0.extract.shift.i.i to i32 - %.sroa.4.8.extract.trunc.i.i = trunc i64 %33 to i32 - %.sroa.8.8.extract.shift.i.i = lshr i64 %33, 32 + %.sroa.4.8.extract.trunc.i.i = trunc i64 %35 to i32 + %.sroa.8.8.extract.shift.i.i = lshr i64 %35, 32 %.sroa.8.8.extract.trunc.i.i = trunc nuw i64 %.sroa.8.8.extract.shift.i.i to i32 - %34 = icmp ugt i32 %20, %.sroa.1.0.extract.trunc.i.i - %35 = sub nuw nsw i32 %20, %.sroa.1.0.extract.trunc.i.i - %36 = sub nuw i32 %.sroa.1.0.extract.trunc.i.i, %20 - %37 = select i1 %34, i32 %35, i32 %36 - %38 = icmp ugt i32 %25, %.sroa.4.8.extract.trunc.i.i - %39 = sub nuw nsw i32 %25, %.sroa.4.8.extract.trunc.i.i - %40 = sub nuw i32 %.sroa.4.8.extract.trunc.i.i, %25 - %41 = select i1 %38, i32 %39, i32 %40 - %42 = icmp ugt i32 %29, %.sroa.8.8.extract.trunc.i.i - %43 = sub nuw nsw i32 %29, %.sroa.8.8.extract.trunc.i.i - %44 = sub nuw i32 %.sroa.8.8.extract.trunc.i.i, %29 - %45 = select i1 %42, i32 %43, i32 %44 - %46 = add i32 %41, %37 - %47 = add i32 %46, %45 - %48 = icmp ult i32 %47, %.01215.i - %49 = trunc i64 %31 to i32 - %spec.select.i = tail call i32 @llvm.umin.i32(i32 %47, i32 %.01215.i) - %spec.select18.i = select i1 %48, i32 %49, i32 %.017.i - %50 = add nuw nsw i64 %.01116.i, 1 - %exitcond.not.i = icmp eq i64 %50, 8 + %36 = icmp ugt i32 %22, %.sroa.1.0.extract.trunc.i.i + %37 = sub nuw nsw i32 %22, %.sroa.1.0.extract.trunc.i.i + %38 = sub nuw i32 %.sroa.1.0.extract.trunc.i.i, %22 + %39 = select i1 %36, i32 %37, i32 %38 + %40 = icmp ugt i32 %27, %.sroa.4.8.extract.trunc.i.i + %41 = sub nuw nsw i32 %27, %.sroa.4.8.extract.trunc.i.i + %42 = sub nuw i32 %.sroa.4.8.extract.trunc.i.i, %27 + %43 = select i1 %40, i32 %41, i32 %42 + %44 = icmp ugt i32 %31, %.sroa.8.8.extract.trunc.i.i + %45 = sub nuw nsw i32 %31, %.sroa.8.8.extract.trunc.i.i + %46 = sub nuw i32 %.sroa.8.8.extract.trunc.i.i, %31 + %47 = select i1 %44, i32 %45, i32 %46 + %48 = add i32 %43, %39 + %49 = add i32 %48, %47 + %50 = icmp ult i32 %49, %.01215.i + %51 = trunc i64 %33 to i32 + %spec.select.i = tail call i32 @llvm.umin.i32(i32 %49, i32 %.01215.i) + %spec.select18.i = select i1 %50, i32 %51, i32 %.017.i + %52 = add nuw nsw i64 %.01116.i, 1 + %exitcond.not.i = icmp eq i64 %52, 8 br i1 %exitcond.not.i, label %get_color.exit, label %.preheader66 get_color.exit: ; preds = %.preheader66 tail call void (ptr, ptr, ...) @gvprintf(ptr noundef %0, ptr noundef nonnull @.str.3, i32 noundef %spec.select18.i) #3 - br label %52 - -51: ; preds = %11 - tail call void (ptr, ptr, ...) @gvprintf(ptr noundef nonnull %0, ptr noundef nonnull @.str.4, i32 noundef %20, i32 noundef %25, i32 noundef %29) #3 - br label %52 - -52: ; preds = %51, %get_color.exit - %53 = load i32, ptr %5, align 4 - %54 = icmp ult i32 %10, %53 - br i1 %54, label %55, label %74 - -55: ; preds = %52 - %56 = load i32, ptr %7, align 8 - %57 = mul i32 %56, %10 - %58 = add i32 %57, %.04868 - %59 = shl i32 %58, 2 - %60 = or disjoint i32 %59, 2 - %61 = zext i32 %60 to i64 - %62 = getelementptr inbounds i8, ptr %4, i64 %61 - %63 = load i8, ptr %62, align 1 - %64 = zext i8 %63 to i32 - %65 = or disjoint i32 %59, 1 - %66 = zext i32 %65 to i64 - %67 = getelementptr inbounds i8, ptr %4, i64 %66 - %68 = load i8, ptr %67, align 1 - %69 = zext i8 %68 to i32 - %70 = zext i32 %59 to i64 - %71 = getelementptr inbounds i8, ptr %4, i64 %70 - %72 = load i8, ptr %71, align 1 - %73 = zext i8 %72 to i32 - br label %74 - -74: ; preds = %55, %52 - %.051 = phi i32 [ %64, %55 ], [ 0, %52 ] - %.050 = phi i32 [ %69, %55 ], [ 0, %52 ] - %.049 = phi i32 [ %73, %55 ], [ 0, %52 ] - br i1 %8, label %.preheader, label %96 - -.preheader: ; preds = %74, %.preheader - %.017.i54 = phi i32 [ %spec.select18.i63, %.preheader ], [ 0, %74 ] - %.01116.i55 = phi i64 [ %95, %.preheader ], [ 0, %74 ] - %.01215.i56 = phi i32 [ %spec.select.i62, %.preheader ], [ -1, %74 ] - %75 = getelementptr inbounds [8 x %struct.color_t], ptr @COLORS, i64 0, i64 %.01116.i55 - %76 = load i64, ptr %75, align 16 - %77 = getelementptr inbounds i8, ptr %75, i64 8 - %78 = load i64, ptr %77, align 8 - %.sroa.1.0.extract.shift.i.i57 = lshr i64 %76, 32 + br label %54 + +53: ; preds = %13 + tail call void (ptr, ptr, ...) @gvprintf(ptr noundef nonnull %0, ptr noundef nonnull @.str.4, i32 noundef %22, i32 noundef %27, i32 noundef %31) #3 + br label %54 + +54: ; preds = %53, %get_color.exit + %55 = load i32, ptr %5, align 4 + %56 = icmp ult i32 %11, %55 + br i1 %56, label %57, label %75 + +57: ; preds = %54 + %58 = load i32, ptr %7, align 8 + %59 = mul i32 %12, %58 + %60 = add i32 %59, %16 + %61 = or disjoint i32 %60, 2 + %62 = zext i32 %61 to i64 + %63 = getelementptr inbounds i8, ptr %4, i64 %62 + %64 = load i8, ptr %63, align 1 + %65 = zext i8 %64 to i32 + %66 = or disjoint i32 %60, 1 + %67 = zext i32 %66 to i64 + %68 = getelementptr inbounds i8, ptr %4, i64 %67 + %69 = load i8, ptr %68, align 1 + %70 = zext i8 %69 to i32 + %71 = zext i32 %60 to i64 + %72 = getelementptr inbounds i8, ptr %4, i64 %71 + %73 = load i8, ptr %72, align 1 + %74 = zext i8 %73 to i32 + br label %75 + +75: ; preds = %57, %54 + %.051 = phi i32 [ %65, %57 ], [ 0, %54 ] + %.050 = phi i32 [ %70, %57 ], [ 0, %54 ] + %.049 = phi i32 [ %74, %57 ], [ 0, %54 ] + br i1 %8, label %.preheader, label %97 + +.preheader: ; preds = %75, %.preheader + %.017.i54 = phi i32 [ %spec.select18.i63, %.preheader ], [ 0, %75 ] + %.01116.i55 = phi i64 [ %96, %.preheader ], [ 0, %75 ] + %.01215.i56 = phi i32 [ %spec.select.i62, %.preheader ], [ -1, %75 ] + %76 = getelementptr inbounds [8 x %struct.color_t], ptr @COLORS, i64 0, i64 %.01116.i55 + %77 = load i64, ptr %76, align 16 + %78 = getelementptr inbounds i8, ptr %76, i64 8 + %79 = load i64, ptr %78, align 8 + %.sroa.1.0.extract.shift.i.i57 = lshr i64 %77, 32 %.sroa.1.0.extract.trunc.i.i58 = trunc nuw i64 %.sroa.1.0.extract.shift.i.i57 to i32 - %.sroa.4.8.extract.trunc.i.i59 = trunc i64 %78 to i32 - %.sroa.8.8.extract.shift.i.i60 = lshr i64 %78, 32 + %.sroa.4.8.extract.trunc.i.i59 = trunc i64 %79 to i32 + %.sroa.8.8.extract.shift.i.i60 = lshr i64 %79, 32 %.sroa.8.8.extract.trunc.i.i61 = trunc nuw i64 %.sroa.8.8.extract.shift.i.i60 to i32 - %79 = icmp ugt i32 %.051, %.sroa.1.0.extract.trunc.i.i58 - %80 = sub nuw nsw i32 %.051, %.sroa.1.0.extract.trunc.i.i58 - %81 = sub nuw i32 %.sroa.1.0.extract.trunc.i.i58, %.051 - %82 = select i1 %79, i32 %80, i32 %81 - %83 = icmp ugt i32 %.050, %.sroa.4.8.extract.trunc.i.i59 - %84 = sub nuw nsw i32 %.050, %.sroa.4.8.extract.trunc.i.i59 - %85 = sub nuw i32 %.sroa.4.8.extract.trunc.i.i59, %.050 - %86 = select i1 %83, i32 %84, i32 %85 - %87 = icmp ugt i32 %.049, %.sroa.8.8.extract.trunc.i.i61 - %88 = sub nuw nsw i32 %.049, %.sroa.8.8.extract.trunc.i.i61 - %89 = sub nuw i32 %.sroa.8.8.extract.trunc.i.i61, %.049 - %90 = select i1 %87, i32 %88, i32 %89 - %91 = add i32 %86, %82 - %92 = add i32 %91, %90 - %93 = icmp ult i32 %92, %.01215.i56 - %94 = trunc i64 %76 to i32 - %spec.select.i62 = tail call i32 @llvm.umin.i32(i32 %92, i32 %.01215.i56) - %spec.select18.i63 = select i1 %93, i32 %94, i32 %.017.i54 - %95 = add nuw nsw i64 %.01116.i55, 1 - %exitcond.not.i64 = icmp eq i64 %95, 8 + %80 = icmp ugt i32 %.051, %.sroa.1.0.extract.trunc.i.i58 + %81 = sub nuw nsw i32 %.051, %.sroa.1.0.extract.trunc.i.i58 + %82 = sub nuw i32 %.sroa.1.0.extract.trunc.i.i58, %.051 + %83 = select i1 %80, i32 %81, i32 %82 + %84 = icmp ugt i32 %.050, %.sroa.4.8.extract.trunc.i.i59 + %85 = sub nuw nsw i32 %.050, %.sroa.4.8.extract.trunc.i.i59 + %86 = sub nuw i32 %.sroa.4.8.extract.trunc.i.i59, %.050 + %87 = select i1 %84, i32 %85, i32 %86 + %88 = icmp ugt i32 %.049, %.sroa.8.8.extract.trunc.i.i61 + %89 = sub nuw nsw i32 %.049, %.sroa.8.8.extract.trunc.i.i61 + %90 = sub nuw i32 %.sroa.8.8.extract.trunc.i.i61, %.049 + %91 = select i1 %88, i32 %89, i32 %90 + %92 = add i32 %87, %83 + %93 = add i32 %92, %91 + %94 = icmp ult i32 %93, %.01215.i56 + %95 = trunc i64 %77 to i32 + %spec.select.i62 = tail call i32 @llvm.umin.i32(i32 %93, i32 %.01215.i56) + %spec.select18.i63 = select i1 %94, i32 %95, i32 %.017.i54 + %96 = add nuw nsw i64 %.01116.i55, 1 + %exitcond.not.i64 = icmp eq i64 %96, 8 br i1 %exitcond.not.i64, label %get_color.exit65, label %.preheader get_color.exit65: ; preds = %.preheader tail call void (ptr, ptr, ...) @gvprintf(ptr noundef %0, ptr noundef nonnull @.str.5, i32 noundef %spec.select18.i63) #3 - br label %97 + br label %98 -96: ; preds = %74 +97: ; preds = %75 tail call void (ptr, ptr, ...) @gvprintf(ptr noundef nonnull %0, ptr noundef nonnull @.str.6, i32 noundef %.051, i32 noundef %.050, i32 noundef %.049) #3 - br label %97 + br label %98 -97: ; preds = %96, %get_color.exit65 +98: ; preds = %97, %get_color.exit65 tail call void (ptr, ptr, ...) @gvprintf(ptr noundef %0, ptr noundef nonnull @.str.7) #3 - %98 = add nuw i32 %.04868, 1 - %99 = load i32, ptr %7, align 8 - %100 = icmp ult i32 %98, %99 - br i1 %100, label %11, label %._crit_edge + %99 = add nuw i32 %.04868, 1 + %100 = load i32, ptr %7, align 8 + %101 = icmp ult i32 %99, %100 + br i1 %101, label %13, label %._crit_edge -._crit_edge: ; preds = %97, %.preheader67 +._crit_edge: ; preds = %98, %.preheader67 tail call void (ptr, ptr, ...) @gvprintf(ptr noundef nonnull %0, ptr noundef nonnull @.str.8) #3 - %101 = add i32 %.069, 2 - %102 = load i32, ptr %5, align 4 - %103 = icmp ult i32 %101, %102 - br i1 %103, label %.preheader67, label %._crit_edge70 + %102 = add i32 %.069, 2 + %103 = load i32, ptr %5, align 4 + %104 = icmp ult i32 %102, %103 + br i1 %104, label %.preheader67, label %._crit_edge70 ._crit_edge70: ; preds = %._crit_edge, %2 ret void diff --git a/bench/gromacs/optimized/reversetopology.cpp.ll b/bench/gromacs/optimized/reversetopology.cpp.ll index e264e76e748..a54afa81610 100644 --- a/bench/gromacs/optimized/reversetopology.cpp.ll +++ b/bench/gromacs/optimized/reversetopology.cpp.ll @@ -2229,7 +2229,7 @@ _ZNSt10unique_ptrI17gmx_reverse_top_tSt14default_deleteIS0_EED2Ev.exit: ; preds br label %38 38: ; preds = %.lr.ph, %_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit.thread - %.sroa.036.044 = phi ptr [ %34, %.lr.ph ], [ %71, %_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit.thread ] + %.sroa.036.044 = phi ptr [ %34, %.lr.ph ], [ %73, %_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit.thread ] %39 = load i32, ptr %.sroa.036.044, align 8 %40 = sext i32 %39 to i64 %41 = load ptr, ptr %37, align 8 @@ -2250,94 +2250,98 @@ _ZNSt10unique_ptrI17gmx_reverse_top_tSt14default_deleteIS0_EED2Ev.exit: ; preds %53 = add nsw i64 %49, -2 br label %54 -54: ; preds = %67, %.lr.ph.i - %.013.i = phi i64 [ 0, %.lr.ph.i ], [ %68, %67 ] - %.0912.i = phi i32 [ 0, %.lr.ph.i ], [ %.sroa.speculated.i, %67 ] +54: ; preds = %69, %.lr.ph.i + %.013.i = phi i64 [ 0, %.lr.ph.i ], [ %70, %69 ] + %.0912.i = phi i32 [ 0, %.lr.ph.i ], [ %.sroa.speculated.i, %69 ] %55 = getelementptr i32, ptr %45, i64 %.013.i %56 = load i32, ptr %55, align 4 - %57 = getelementptr i8, ptr %55, i64 4 - %58 = load i32, ptr %57, align 4 - %59 = sub i32 %58, %56 - %.not.i35 = icmp eq i32 %59, 1 - br i1 %.not.i35, label %60, label %67 - -60: ; preds = %54 - %61 = sext i32 %56 to i64 - %.idx10.i = shl nsw i64 %61, 2 - %62 = getelementptr inbounds i8, ptr %52, i64 %.idx10.i - %63 = load i32, ptr %62, align 4 - %64 = sext i32 %63 to i64 - %65 = icmp eq i64 %.013.i, %64 - br i1 %65, label %67, label %66 - -66: ; preds = %60 + %57 = sext i32 %56 to i64 + %.idx10.i = shl nsw i64 %57, 2 + %58 = getelementptr i8, ptr %55, i64 4 + %59 = load i32, ptr %58, align 4 + %60 = sext i32 %59 to i64 + %.idx.i = shl nsw i64 %60, 2 + %gepdiff.i = sub nsw i64 %.idx.i, %.idx10.i + %61 = lshr exact i64 %gepdiff.i, 2 + %62 = trunc i64 %61 to i32 + %.not.i35 = icmp eq i32 %62, 1 + br i1 %.not.i35, label %63, label %69 + +63: ; preds = %54 + %64 = getelementptr inbounds i8, ptr %52, i64 %.idx10.i + %65 = load i32, ptr %64, align 4 + %66 = sext i32 %65 to i64 + %67 = icmp eq i64 %.013.i, %66 + br i1 %67, label %69, label %68 + +68: ; preds = %63 call void @_ZN3gmx8internal13assertHandlerEPKcS2_S2_S2_i(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.13, ptr noundef nonnull @"__PRETTY_FUNCTION__._ZZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEEENK3$_0clEv", ptr noundef nonnull @.str.6, i32 noundef 178) #18 unreachable -67: ; preds = %60, %54 - %.sroa.speculated.i = call i32 @llvm.smax.i32(i32 %.0912.i, i32 %59) - %68 = add nuw nsw i64 %.013.i, 1 +69: ; preds = %63, %54 + %.sroa.speculated.i = call i32 @llvm.smax.i32(i32 %.0912.i, i32 %62) + %70 = add nuw nsw i64 %.013.i, 1 %exitcond.not.i = icmp eq i64 %.013.i, %53 br i1 %exitcond.not.i, label %_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit, label %54, !llvm.loop !32 -_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit: ; preds = %67 - %69 = icmp sgt i32 %.sroa.speculated.i, 1 - br i1 %69, label %70, label %_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit.thread +_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit: ; preds = %69 + %71 = icmp sgt i32 %.sroa.speculated.i, 1 + br i1 %71, label %72, label %_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit.thread -70: ; preds = %_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit +72: ; preds = %_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit store i8 1, ptr %32, align 8 br label %_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit.thread -_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit.thread: ; preds = %38, %_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit, %70 - %71 = getelementptr inbounds i8, ptr %.sroa.036.044, i64 56 - %.not42 = icmp eq ptr %71, %36 +_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit.thread: ; preds = %38, %_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit, %72 + %73 = getelementptr inbounds i8, ptr %.sroa.036.044, i64 56 + %.not42 = icmp eq ptr %73, %36 br i1 %.not42, label %._crit_edge, label %38 ._crit_edge: ; preds = %_ZL26getMaxNumExclusionsPerAtomRKN3gmx11ListOfListsIiEE.exit.thread, %_ZNSt10unique_ptrI17gmx_reverse_top_tSt14default_deleteIS0_EED2Ev.exit - %72 = icmp eq ptr %3, null - br i1 %72, label %.thread, label %73 + %74 = icmp eq ptr %3, null + br i1 %74, label %.thread, label %75 -73: ; preds = %._crit_edge - %74 = call noundef i32 @_ZNK3gmx19VirtualSitesHandler31numInterUpdategroupVirtualSitesEv(ptr noundef nonnull align 8 dereferenceable(8) %3) - %75 = icmp sgt i32 %74, 0 - br i1 %75, label %76, label %.thread +75: ; preds = %._crit_edge + %76 = call noundef i32 @_ZNK3gmx19VirtualSitesHandler31numInterUpdategroupVirtualSitesEv(ptr noundef nonnull align 8 dereferenceable(8) %3) + %77 = icmp sgt i32 %76, 0 + br i1 %77, label %78, label %.thread -76: ; preds = %73 - br i1 %.not, label %79, label %77 +78: ; preds = %75 + br i1 %.not, label %81, label %79 -77: ; preds = %76 - %78 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %0, ptr noundef nonnull @.str.8, i32 noundef %74) #21 - br label %79 +79: ; preds = %78 + %80 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %0, ptr noundef nonnull @.str.8, i32 noundef %76) #21 + br label %81 -79: ; preds = %77, %76 - call void @_Z18init_domdec_vsitesP12gmx_domdec_ti(ptr noundef %1, i32 noundef %74) +81: ; preds = %79, %78 + call void @_Z18init_domdec_vsitesP12gmx_domdec_ti(ptr noundef %1, i32 noundef %76) br label %.thread -.thread: ; preds = %._crit_edge, %79, %73 - %80 = load ptr, ptr %11, align 8 - %81 = getelementptr inbounds i8, ptr %80, i64 500 - %82 = load i8, ptr %81, align 4 - %83 = trunc i8 %82 to i1 - br i1 %83, label %88, label %84 +.thread: ; preds = %._crit_edge, %81, %75 + %82 = load ptr, ptr %11, align 8 + %83 = getelementptr inbounds i8, ptr %82, i64 500 + %84 = load i8, ptr %83, align 4 + %85 = trunc i8 %84 to i1 + br i1 %85, label %90, label %86 -84: ; preds = %.thread - %85 = getelementptr inbounds i8, ptr %80, i64 501 - %86 = load i8, ptr %85, align 1 - %87 = trunc i8 %86 to i1 - br i1 %87, label %88, label %89 +86: ; preds = %.thread + %87 = getelementptr inbounds i8, ptr %82, i64 501 + %88 = load i8, ptr %87, align 1 + %89 = trunc i8 %88 to i1 + br i1 %89, label %90, label %91 -88: ; preds = %84, %.thread +90: ; preds = %86, %.thread call void @_Z23init_domdec_constraintsP12gmx_domdec_tRK10gmx_mtop_t(ptr noundef nonnull %1, ptr noundef nonnull align 8 dereferenceable(768) %2) - br label %89 + br label %91 -89: ; preds = %88, %84 - br i1 %.not, label %91, label %90 +91: ; preds = %90, %86 + br i1 %.not, label %93, label %92 -90: ; preds = %89 +92: ; preds = %91 %fputc = call i32 @fputc(i32 10, ptr nonnull %0) - br label %91 + br label %93 -91: ; preds = %90, %89 +93: ; preds = %92, %91 ret void } diff --git a/bench/harfbuzz/optimized/harfbuzz.cc.ll b/bench/harfbuzz/optimized/harfbuzz.cc.ll index 3d73669726f..bf854fa774f 100644 --- a/bench/harfbuzz/optimized/harfbuzz.cc.ll +++ b/bench/harfbuzz/optimized/harfbuzz.cc.ll @@ -131038,10 +131038,11 @@ for.cond.preheader.i: ; preds = %if.end5.i for.body.preheader.i: ; preds = %for.cond.preheader.i %57 = zext i32 %i.043.i to i64 + %wide.trip.count.i = zext i32 %add2.i to i64 %58 = shl nuw nsw i64 %57, 2 %scevgep = getelementptr i8, ptr %x_deltas.sroa.11.4.ph, i64 %58 - %59 = zext nneg i8 %narrow.i to i64 - %60 = shl nuw nsw i64 %59, 2 + %59 = shl nuw nsw i64 %wide.trip.count.i, 2 + %60 = sub nsw i64 %59, %58 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 0, i64 %60, i1 false) br label %if.end45.i @@ -131189,10 +131190,11 @@ for.cond.preheader.i294: ; preds = %if.end5.i292 for.body.preheader.i300: ; preds = %for.cond.preheader.i294 %74 = zext i32 %i.043.i284 to i64 + %wide.trip.count.i301 = zext i32 %add2.i290 to i64 %75 = shl nuw nsw i64 %74, 2 %scevgep991 = getelementptr i8, ptr %y_deltas.sroa.11.4.ph, i64 %75 - %76 = zext nneg i8 %narrow.i288 to i64 - %77 = shl nuw nsw i64 %76, 2 + %76 = shl nuw nsw i64 %wide.trip.count.i301, 2 + %77 = sub nsw i64 %76, %75 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep991, i8 0, i64 %77, i1 false) br label %if.end45.i296 diff --git a/bench/harfbuzz/optimized/hb-subset.cc.ll b/bench/harfbuzz/optimized/hb-subset.cc.ll index 14d49c9a8c9..711a4278d16 100644 --- a/bench/harfbuzz/optimized/hb-subset.cc.ll +++ b/bench/harfbuzz/optimized/hb-subset.cc.ll @@ -27815,10 +27815,11 @@ for.cond.preheader.i: ; preds = %if.end5.i for.body.preheader.i: ; preds = %for.cond.preheader.i %58 = zext i32 %i.043.i to i64 + %wide.trip.count.i = zext i32 %add2.i to i64 %59 = shl nuw nsw i64 %58, 2 %scevgep = getelementptr i8, ptr %x_deltas.sroa.11.4.ph, i64 %59 - %60 = zext nneg i8 %narrow.i to i64 - %61 = shl nuw nsw i64 %60, 2 + %60 = shl nuw nsw i64 %wide.trip.count.i, 2 + %61 = sub nsw i64 %60, %59 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 0, i64 %61, i1 false) br label %if.end45.i @@ -27966,10 +27967,11 @@ for.cond.preheader.i294: ; preds = %if.end5.i292 for.body.preheader.i300: ; preds = %for.cond.preheader.i294 %75 = zext i32 %i.043.i284 to i64 + %wide.trip.count.i301 = zext i32 %add2.i290 to i64 %76 = shl nuw nsw i64 %75, 2 %scevgep991 = getelementptr i8, ptr %y_deltas.sroa.11.4.ph, i64 %76 - %77 = zext nneg i8 %narrow.i288 to i64 - %78 = shl nuw nsw i64 %77, 2 + %77 = shl nuw nsw i64 %wide.trip.count.i301, 2 + %78 = sub nsw i64 %77, %76 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep991, i8 0, i64 %78, i1 false) br label %if.end45.i296 @@ -267052,10 +267054,11 @@ for.cond.preheader.i: ; preds = %if.end5.i for.body.preheader.i: ; preds = %for.cond.preheader.i %22 = zext i32 %i.043.i to i64 + %wide.trip.count.i = zext i32 %add2.i to i64 %23 = shl nuw nsw i64 %22, 2 %scevgep = getelementptr i8, ptr %deltas_x.sroa.12.4.ph, i64 %23 - %24 = zext nneg i8 %narrow.i to i64 - %25 = shl nuw nsw i64 %24, 2 + %24 = shl nuw nsw i64 %wide.trip.count.i, 2 + %25 = sub nsw i64 %24, %23 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 0, i64 %25, i1 false) br label %if.end45.i @@ -267200,10 +267203,11 @@ for.cond.preheader.i86: ; preds = %if.end5.i84 for.body.preheader.i92: ; preds = %for.cond.preheader.i86 %35 = zext i32 %i.043.i76 to i64 + %wide.trip.count.i93 = zext i32 %add2.i82 to i64 %36 = shl nuw nsw i64 %35, 2 %scevgep437 = getelementptr i8, ptr %deltas_y.sroa.12.7.ph, i64 %36 - %37 = zext nneg i8 %narrow.i80 to i64 - %38 = shl nuw nsw i64 %37, 2 + %37 = shl nuw nsw i64 %wide.trip.count.i93, 2 + %38 = sub nsw i64 %37, %36 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep437, i8 0, i64 %38, i1 false) br label %if.end45.i88 @@ -287037,10 +287041,11 @@ for.cond.preheader.i: ; preds = %if.end5.i for.body.preheader.i: ; preds = %for.cond.preheader.i %36 = zext i32 %i.043.i to i64 + %wide.trip.count.i = zext i32 %add2.i to i64 %37 = shl nuw nsw i64 %36, 2 %scevgep = getelementptr i8, ptr %unpacked_deltas.sroa.13.4.ph, i64 %37 - %38 = zext nneg i8 %narrow.i to i64 - %39 = shl nuw nsw i64 %38, 2 + %38 = shl nuw nsw i64 %wide.trip.count.i, 2 + %39 = sub nsw i64 %38, %37 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 0, i64 %39, i1 false) br label %if.end45.i diff --git a/bench/hermes/optimized/APFloat.cpp.ll b/bench/hermes/optimized/APFloat.cpp.ll index 50751425259..75292e346f5 100644 --- a/bench/hermes/optimized/APFloat.cpp.ll +++ b/bench/hermes/optimized/APFloat.cpp.ll @@ -21009,9 +21009,9 @@ if.end: ; preds = %entry %mul6.i10.i = mul i64 %xor5.i9.i, -7070675565921424023 %shr.i11.i = lshr i64 %add, 47 %xor.i12.i = xor i64 %shr.i11.i, %add - %mul23.i15 = add i64 %cond.i9.i, %xor.i12.i - %add7.i14 = mul i64 %mul23.i15, -5435081209227447693 - %add8.i = add i64 %mul6.i10.i, %add7.i14 + %mul6.i = mul i64 %xor.i12.i, -5435081209227447693 + %add7.i14 = add i64 %mul23.i, %mul6.i + %add8.i = add i64 %add7.i14, %mul6.i10.i %xor.i13.i = xor i64 %add8.i, %add3.i11 %mul.i14.i = mul i64 %xor.i13.i, -7070675565921424023 %shr.i15.i = lshr i64 %mul.i14.i, 47 diff --git a/bench/hermes/optimized/ArrayStorage.cpp.ll b/bench/hermes/optimized/ArrayStorage.cpp.ll index 0561de8cc28..70eda42bb3f 100644 --- a/bench/hermes/optimized/ArrayStorage.cpp.ll +++ b/bench/hermes/optimized/ArrayStorage.cpp.ll @@ -473,8 +473,12 @@ if.then8.i.i: ; preds = %if.else.i.i %idx.ext10.i.i = zext i32 %size to i64 %add.ptr11.idx.i.i = shl nuw nsw i64 %idx.ext10.i.i, 3 %add.ptr11.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i18.i.i, i64 %add.ptr11.idx.i.i + %idx.ext13.i.i = zext i32 %3 to i64 + %add.ptr14.idx.i.i = shl nuw nsw i64 %idx.ext13.i.i, 3 %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %add.ptr11.i.i to i64 - %narrow.i.i = sub nuw i32 %3, %size + %gepdiff.i.i = sub nsw i64 %add.ptr14.idx.i.i, %add.ptr11.idx.i.i + %sub.ptr.div.i.i.i = lshr exact i64 %gepdiff.i.i, 3 + %conv.i.i.i = trunc i64 %sub.ptr.div.i.i.i to i32 %youngGen_.i.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 %4 = load ptr, ptr %youngGen_.i.i.i.i.i, align 8 %and.i.i.i.i.i.i = and i64 %sub.ptr.rhs.cast.i.i.i, 1125899902648320 @@ -489,7 +493,7 @@ land.rhs.i.i.i.i: ; preds = %if.then8.i.i br i1 %tobool.i.i.i.i, label %if.then.i.i.i.i, label %_ZN6hermes2vm16ArrayStorageBaseINS0_11HermesValueEE20resizeWithinCapacityEPS3_RNS0_7RuntimeEj.exit if.then.i.i.i.i: ; preds = %land.rhs.i.i.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i.i, ptr noundef nonnull %add.ptr11.i.i, i32 noundef %narrow.i.i) #7 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i.i, ptr noundef nonnull %add.ptr11.i.i, i32 noundef %conv.i.i.i) #7 br label %_ZN6hermes2vm16ArrayStorageBaseINS0_11HermesValueEE20resizeWithinCapacityEPS3_RNS0_7RuntimeEj.exit _ZN6hermes2vm16ArrayStorageBaseINS0_11HermesValueEE20resizeWithinCapacityEPS3_RNS0_7RuntimeEj.exit: ; preds = %for.body5.i.i.i, %if.else.i.i, %if.then8.i.i, %land.rhs.i.i.i.i, %if.then.i.i.i.i @@ -533,8 +537,12 @@ if.then8.i: ; preds = %if.else.i %idx.ext10.i = zext i32 %newSize to i64 %add.ptr11.idx.i = shl nuw nsw i64 %idx.ext10.i, 3 %add.ptr11.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i18.i, i64 %add.ptr11.idx.i + %idx.ext13.i = zext i32 %0 to i64 + %add.ptr14.idx.i = shl nuw nsw i64 %idx.ext13.i, 3 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %add.ptr11.i to i64 - %narrow.i = sub nuw i32 %0, %newSize + %gepdiff.i = sub nsw i64 %add.ptr14.idx.i, %add.ptr11.idx.i + %sub.ptr.div.i.i = lshr exact i64 %gepdiff.i, 3 + %conv.i.i = trunc i64 %sub.ptr.div.i.i to i32 %youngGen_.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 %1 = load ptr, ptr %youngGen_.i.i.i.i, align 8 %and.i.i.i.i.i = and i64 %sub.ptr.rhs.cast.i.i, -4194304 @@ -549,7 +557,7 @@ land.rhs.i.i.i: ; preds = %if.then8.i br i1 %tobool.i.i.i, label %if.then.i.i.i, label %_ZN6hermes2vm16ArrayStorageBaseINS0_11HermesValueEE20resizeWithinCapacityEPS3_RNS0_7HadesGCEj.exit if.then.i.i.i: ; preds = %land.rhs.i.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i, ptr noundef nonnull %add.ptr11.i, i32 noundef %narrow.i) #7 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i, ptr noundef nonnull %add.ptr11.i, i32 noundef %conv.i.i) #7 br label %_ZN6hermes2vm16ArrayStorageBaseINS0_11HermesValueEE20resizeWithinCapacityEPS3_RNS0_7HadesGCEj.exit _ZN6hermes2vm16ArrayStorageBaseINS0_11HermesValueEE20resizeWithinCapacityEPS3_RNS0_7HadesGCEj.exit: ; preds = %for.body5.i.i, %if.else.i, %if.then8.i, %land.rhs.i.i.i, %if.then.i.i.i @@ -1032,23 +1040,27 @@ if.then63.i: ; preds = %if.end60.i %add.ptr66.idx.i = shl nuw nsw i64 %idx.ext65.i, 3 %add.ptr66.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i66.ptr.i, i64 %add.ptr66.idx.i %5 = load atomic i32, ptr %size_.i.i monotonic, align 4 + %idx.ext69.i = zext i32 %5 to i64 + %add.ptr70.idx.i = shl nuw nsw i64 %idx.ext69.i, 3 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %add.ptr66.i to i64 - %6 = sub i32 %5, %newSize + %gepdiff.i = sub nsw i64 %add.ptr70.idx.i, %add.ptr66.idx.i + %sub.ptr.div.i.i = lshr exact i64 %gepdiff.i, 3 + %conv.i.i = trunc i64 %sub.ptr.div.i.i to i32 %youngGen_.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 - %7 = load ptr, ptr %youngGen_.i.i.i.i, align 8 + %6 = load ptr, ptr %youngGen_.i.i.i.i, align 8 %and.i.i.i.i80.i = and i64 %sub.ptr.rhs.cast.i.i, 1125899902648320 - %8 = inttoptr i64 %and.i.i.i.i80.i to ptr - %cmp.i.i.i.i = icmp eq ptr %7, %8 + %7 = inttoptr i64 %and.i.i.i.i80.i to ptr + %cmp.i.i.i.i = icmp eq ptr %6, %7 br i1 %cmp.i.i.i.i, label %if.end72.i, label %land.rhs.i.i.i land.rhs.i.i.i: ; preds = %if.then63.i %ogMarkingBarriers_.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 8497 - %9 = load i8, ptr %ogMarkingBarriers_.i.i.i, align 1 - %tobool.i.i.i = trunc i8 %9 to i1 + %8 = load i8, ptr %ogMarkingBarriers_.i.i.i, align 1 + %tobool.i.i.i = trunc i8 %8 to i1 br i1 %tobool.i.i.i, label %if.then.i.i.i, label %if.end72.i if.then.i.i.i: ; preds = %land.rhs.i.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i68.i, ptr noundef nonnull %add.ptr66.i, i32 noundef %6) #7 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i68.i, ptr noundef nonnull %add.ptr66.i, i32 noundef %conv.i.i) #7 br label %if.end72.i if.end72.i: ; preds = %if.then.i.i.i, %land.rhs.i.i.i, %if.then63.i, %if.end60.i @@ -1061,55 +1073,55 @@ if.end73.i: ; preds = %entry %.sroa.speculated.i = tail call i32 @llvm.umax.i32(i32 %mul.i, i32 %newSize) %capacity.0.i = select i1 %cmp77.i, i32 %.sroa.speculated.i, i32 513535 %call.i = tail call { i32, i64 } @_ZN6hermes2vm16ArrayStorageBaseINS0_11HermesValueEE6createERNS0_7RuntimeEj(ptr noundef nonnull align 8 dereferenceable(9832) %runtime, i32 noundef %capacity.0.i) - %10 = extractvalue { i32, i64 } %call.i, 0 - %cmp.i.i = icmp eq i32 %10, 0 + %9 = extractvalue { i32, i64 } %call.i, 0 + %cmp.i.i = icmp eq i32 %9, 0 br i1 %cmp.i.i, label %_ZN6hermes2vm16ArrayStorageBaseINS0_11HermesValueEE5shiftERNS0_13MutableHandleIS3_EERNS0_7RuntimeEjjj.exit, label %if.end.i if.end.i: ; preds = %if.end73.i - %11 = extractvalue { i32, i64 } %call.i, 1 - %or.i.i.i.i.i.i = or i64 %11, -281474976710656 + %10 = extractvalue { i32, i64 } %call.i, 1 + %or.i.i.i.i.i.i = or i64 %10, -281474976710656 %topGCScope_.i.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 8 - %12 = load ptr, ptr %topGCScope_.i.i.i.i.i, align 8 - %next_.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %12, i64 192 - %13 = load ptr, ptr %next_.i.i.i.i.i.i.i.i, align 8 - %curChunkEnd_.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %12, i64 200 - %14 = load ptr, ptr %curChunkEnd_.i.i.i.i.i.i.i, align 8 - %cmp.i.i.i.i.i.i.i = icmp ult ptr %13, %14 + %11 = load ptr, ptr %topGCScope_.i.i.i.i.i, align 8 + %next_.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %11, i64 192 + %12 = load ptr, ptr %next_.i.i.i.i.i.i.i.i, align 8 + %curChunkEnd_.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %11, i64 200 + %13 = load ptr, ptr %curChunkEnd_.i.i.i.i.i.i.i, align 8 + %cmp.i.i.i.i.i.i.i = icmp ult ptr %12, %13 br i1 %cmp.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i, label %if.end.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i: ; preds = %if.end.i - %incdec.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %13, i64 8 + %incdec.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %12, i64 8 store ptr %incdec.ptr.i.i.i.i.i.i.i, ptr %next_.i.i.i.i.i.i.i.i, align 8 - store i64 %or.i.i.i.i.i.i, ptr %13, align 8 + store i64 %or.i.i.i.i.i.i, ptr %12, align 8 br label %_ZN6hermes2vm15HandleRootOwner10makeHandleINS0_16ArrayStorageBaseINS0_11HermesValueEEEEENS0_6HandleIT_EES4_.exit.i if.end.i.i.i.i.i.i.i: ; preds = %if.end.i - %call7.i.i.i.i.i.i.i = tail call noundef ptr @_ZN6hermes2vm7GCScope15_newChunkAndPHVENS0_11HermesValueE(ptr noundef nonnull align 8 dereferenceable(212) %12, i64 %or.i.i.i.i.i.i) #7 + %call7.i.i.i.i.i.i.i = tail call noundef ptr @_ZN6hermes2vm7GCScope15_newChunkAndPHVENS0_11HermesValueE(ptr noundef nonnull align 8 dereferenceable(212) %11, i64 %or.i.i.i.i.i.i) #7 %retval.sroa.0.0.copyload.i.i.pre.i = load i64, ptr %call7.i.i.i.i.i.i.i, align 8 br label %_ZN6hermes2vm15HandleRootOwner10makeHandleINS0_16ArrayStorageBaseINS0_11HermesValueEEEEENS0_6HandleIT_EES4_.exit.i _ZN6hermes2vm15HandleRootOwner10makeHandleINS0_16ArrayStorageBaseINS0_11HermesValueEEEEENS0_6HandleIT_EES4_.exit.i: ; preds = %if.end.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i %retval.sroa.0.0.copyload.i.i.i = phi i64 [ %or.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i ], [ %retval.sroa.0.0.copyload.i.i.pre.i, %if.end.i.i.i.i.i.i.i ] - %retval.0.i.i.i.i.i.i.i = phi ptr [ %13, %if.then.i.i.i.i.i.i.i ], [ %call7.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i ] + %retval.0.i.i.i.i.i.i.i = phi ptr [ %12, %if.then.i.i.i.i.i.i.i ], [ %call7.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i ] %and.i.i.i.i.i = and i64 %retval.sroa.0.0.copyload.i.i.i, 281474976710655 - %15 = inttoptr i64 %and.i.i.i.i.i to ptr - %16 = load ptr, ptr %selfHandle, align 8 - %retval.sroa.0.0.copyload.i.i26.i = load i64, ptr %16, align 8 + %14 = inttoptr i64 %and.i.i.i.i.i to ptr + %15 = load ptr, ptr %selfHandle, align 8 + %retval.sroa.0.0.copyload.i.i26.i = load i64, ptr %15, align 8 %and.i.i.i.i27.i = and i64 %retval.sroa.0.0.copyload.i.i26.i, 281474976710655 - %17 = inttoptr i64 %and.i.i.i.i27.i to ptr - %size_.i.i1 = getelementptr inbounds i8, ptr %17, i64 4 - %18 = load atomic i32, ptr %size_.i.i1 monotonic, align 4 - %.sroa.speculated.i2 = tail call i32 @llvm.umin.i32(i32 %newSize, i32 %18) - %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %17, i64 8 - %add.ptr.i.i.i29.ptr.i = getelementptr inbounds i8, ptr %15, i64 8 + %16 = inttoptr i64 %and.i.i.i.i27.i to ptr + %size_.i.i1 = getelementptr inbounds i8, ptr %16, i64 4 + %17 = load atomic i32, ptr %size_.i.i1 monotonic, align 4 + %.sroa.speculated.i2 = tail call i32 @llvm.umin.i32(i32 %newSize, i32 %17) + %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 8 + %add.ptr.i.i.i29.ptr.i = getelementptr inbounds i8, ptr %14, i64 8 %idx.ext16.i = zext i32 %.sroa.speculated.i2 to i64 %add.ptr17.idx.i = shl nuw nsw i64 %idx.ext16.i, 3 %youngGen_.i.i.i.i3 = getelementptr inbounds i8, ptr %runtime, i64 1640 - %19 = load ptr, ptr %youngGen_.i.i.i.i3, align 8 - %20 = ptrtoint ptr %add.ptr.i.i.i29.ptr.i to i64 - %and.i.i.i.i30.i = and i64 %20, 562949949227008 - %21 = inttoptr i64 %and.i.i.i.i30.i to ptr - %cmp.i.i.i.i4 = icmp eq ptr %19, %21 + %18 = load ptr, ptr %youngGen_.i.i.i.i3, align 8 + %19 = ptrtoint ptr %add.ptr.i.i.i29.ptr.i to i64 + %and.i.i.i.i30.i = and i64 %19, 562949949227008 + %20 = inttoptr i64 %and.i.i.i.i30.i to ptr + %cmp.i.i.i.i4 = icmp eq ptr %18, %20 br i1 %cmp.i.i.i.i4, label %_ZN6hermes2vm17GCHermesValueBaseINS0_11HermesValueEE18uninitialized_copyEPS3_S4_S4_RNS0_7HadesGCE.exit.i, label %if.then.i.i.i5 if.then.i.i.i5: ; preds = %_ZN6hermes2vm15HandleRootOwner10makeHandleINS0_16ArrayStorageBaseINS0_11HermesValueEEEEENS0_6HandleIT_EES4_.exit.i @@ -1119,7 +1131,7 @@ if.then.i.i.i5: ; preds = %_ZN6hermes2vm15Hand _ZN6hermes2vm17GCHermesValueBaseINS0_11HermesValueEE18uninitialized_copyEPS3_S4_S4_RNS0_7HadesGCE.exit.i: ; preds = %if.then.i.i.i5, %_ZN6hermes2vm15HandleRootOwner10makeHandleINS0_16ArrayStorageBaseINS0_11HermesValueEEEEENS0_6HandleIT_EES4_.exit.i tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i29.ptr.i, ptr nonnull align 8 %add.ptr.i.i.i.i, i64 %add.ptr17.idx.i, i1 false) - %cmp.i = icmp ult i32 %18, %newSize + %cmp.i = icmp ult i32 %17, %newSize br i1 %cmp.i, label %if.then29.i, label %if.end43.i if.then29.i: ; preds = %_ZN6hermes2vm17GCHermesValueBaseINS0_11HermesValueEE18uninitialized_copyEPS3_S4_S4_RNS0_7HadesGCE.exit.i @@ -1136,12 +1148,12 @@ for.body5.i38.i: ; preds = %if.then29.i, %for.b br i1 %cmp4.not.i41.i, label %if.end43.i, label %for.body5.i38.i, !llvm.loop !49 if.end43.i: ; preds = %for.body5.i38.i, %_ZN6hermes2vm17GCHermesValueBaseINS0_11HermesValueEE18uninitialized_copyEPS3_S4_S4_RNS0_7HadesGCE.exit.i - %size_.i = getelementptr inbounds i8, ptr %15, i64 4 + %size_.i = getelementptr inbounds i8, ptr %14, i64 4 store atomic i32 %newSize, ptr %size_.i release, align 4 %retval.sroa.0.0.copyload.i.i43.i = load i64, ptr %retval.0.i.i.i.i.i.i.i, align 8 %or.i.i.i.i.i45.i = or i64 %retval.sroa.0.0.copyload.i.i43.i, -281474976710656 - %22 = load ptr, ptr %selfHandle, align 8 - store i64 %or.i.i.i.i.i45.i, ptr %22, align 8 + %21 = load ptr, ptr %selfHandle, align 8 + store i64 %or.i.i.i.i.i45.i, ptr %21, align 8 br label %_ZN6hermes2vm16ArrayStorageBaseINS0_11HermesValueEE5shiftERNS0_13MutableHandleIS3_EERNS0_7RuntimeEjjj.exit _ZN6hermes2vm16ArrayStorageBaseINS0_11HermesValueEE5shiftERNS0_13MutableHandleIS3_EERNS0_7RuntimeEjjj.exit: ; preds = %if.end43.i, %if.end73.i, %if.end72.i @@ -1339,23 +1351,27 @@ if.then63: ; preds = %if.end60 %add.ptr66.idx = shl nuw nsw i64 %idx.ext65, 3 %add.ptr66 = getelementptr inbounds i8, ptr %add.ptr.i.i.i66.ptr110, i64 %add.ptr66.idx %18 = load atomic i32, ptr %size_.i monotonic, align 4 + %idx.ext69 = zext i32 %18 to i64 + %add.ptr70.idx = shl nuw nsw i64 %idx.ext69, 3 %sub.ptr.rhs.cast.i = ptrtoint ptr %add.ptr66 to i64 - %19 = sub i32 %18, %toLast + %gepdiff = sub nsw i64 %add.ptr70.idx, %add.ptr66.idx + %sub.ptr.div.i = lshr exact i64 %gepdiff, 3 + %conv.i = trunc i64 %sub.ptr.div.i to i32 %youngGen_.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 - %20 = load ptr, ptr %youngGen_.i.i.i, align 8 + %19 = load ptr, ptr %youngGen_.i.i.i, align 8 %and.i.i.i.i80 = and i64 %sub.ptr.rhs.cast.i, 1125899902648320 - %21 = inttoptr i64 %and.i.i.i.i80 to ptr - %cmp.i.i.i = icmp eq ptr %20, %21 + %20 = inttoptr i64 %and.i.i.i.i80 to ptr + %cmp.i.i.i = icmp eq ptr %19, %20 br i1 %cmp.i.i.i, label %if.end72, label %land.rhs.i.i land.rhs.i.i: ; preds = %if.then63 %ogMarkingBarriers_.i.i = getelementptr inbounds i8, ptr %runtime, i64 8497 - %22 = load i8, ptr %ogMarkingBarriers_.i.i, align 1 - %tobool.i.i = trunc i8 %22 to i1 + %21 = load i8, ptr %ogMarkingBarriers_.i.i, align 1 + %tobool.i.i = trunc i8 %21 to i1 br i1 %tobool.i.i, label %if.then.i.i, label %if.end72 if.then.i.i: ; preds = %land.rhs.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i68114, ptr noundef nonnull %add.ptr66, i32 noundef %19) #7 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i68114, ptr noundef nonnull %add.ptr66, i32 noundef %conv.i) #7 br label %if.end72 if.end72: ; preds = %if.then.i.i, %land.rhs.i.i, %if.then63, %if.end60 @@ -1421,8 +1437,12 @@ if.then8: ; preds = %if.else %idx.ext10 = zext i32 %newSize to i64 %add.ptr11.idx = shl nuw nsw i64 %idx.ext10, 3 %add.ptr11 = getelementptr inbounds i8, ptr %add.ptr.i.i.i18, i64 %add.ptr11.idx + %idx.ext13 = zext i32 %0 to i64 + %add.ptr14.idx = shl nuw nsw i64 %idx.ext13, 3 %sub.ptr.rhs.cast.i = ptrtoint ptr %add.ptr11 to i64 - %narrow = sub nuw i32 %0, %newSize + %gepdiff = sub nsw i64 %add.ptr14.idx, %add.ptr11.idx + %sub.ptr.div.i = lshr exact i64 %gepdiff, 3 + %conv.i = trunc i64 %sub.ptr.div.i to i32 %youngGen_.i.i.i = getelementptr inbounds i8, ptr %gc, i64 800 %1 = load ptr, ptr %youngGen_.i.i.i, align 8 %and.i.i.i.i = and i64 %sub.ptr.rhs.cast.i, -4194304 @@ -1437,7 +1457,7 @@ land.rhs.i.i: ; preds = %if.then8 br i1 %tobool.i.i, label %if.then.i.i, label %if.end15 if.then.i.i: ; preds = %land.rhs.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %gc, ptr noundef nonnull %add.ptr11, i32 noundef %narrow) #7 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %gc, ptr noundef nonnull %add.ptr11, i32 noundef %conv.i) #7 br label %if.end15 if.end15: ; preds = %for.body5.i, %if.then.i.i, %land.rhs.i.i, %if.then8, %if.else @@ -1791,8 +1811,12 @@ if.then8.i.i: ; preds = %if.else.i.i %idx.ext10.i.i = zext i32 %size to i64 %add.ptr11.idx.i.i = shl nuw nsw i64 %idx.ext10.i.i, 2 %add.ptr11.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i18.i.i, i64 %add.ptr11.idx.i.i + %idx.ext13.i.i = zext i32 %3 to i64 + %add.ptr14.idx.i.i = shl nuw nsw i64 %idx.ext13.i.i, 2 %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %add.ptr11.i.i to i64 - %narrow.i.i = sub nuw i32 %3, %size + %gepdiff.i.i = sub nsw i64 %add.ptr14.idx.i.i, %add.ptr11.idx.i.i + %sub.ptr.div.i.i.i = lshr exact i64 %gepdiff.i.i, 2 + %conv.i.i.i = trunc i64 %sub.ptr.div.i.i.i to i32 %youngGen_.i.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 %4 = load ptr, ptr %youngGen_.i.i.i.i.i, align 8 %and.i.i.i.i.i.i = and i64 %sub.ptr.rhs.cast.i.i.i, 1125899902648320 @@ -1807,7 +1831,7 @@ land.rhs.i.i.i.i: ; preds = %if.then8.i.i br i1 %tobool.i.i.i.i, label %if.then.i.i.i.i, label %_ZN6hermes2vm16ArrayStorageBaseINS0_13HermesValue32EE20resizeWithinCapacityEPS3_RNS0_7RuntimeEj.exit if.then.i.i.i.i: ; preds = %land.rhs.i.i.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i.i, ptr noundef nonnull %add.ptr11.i.i, i32 noundef %narrow.i.i) #7 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i.i, ptr noundef nonnull %add.ptr11.i.i, i32 noundef %conv.i.i.i) #7 br label %_ZN6hermes2vm16ArrayStorageBaseINS0_13HermesValue32EE20resizeWithinCapacityEPS3_RNS0_7RuntimeEj.exit _ZN6hermes2vm16ArrayStorageBaseINS0_13HermesValue32EE20resizeWithinCapacityEPS3_RNS0_7RuntimeEj.exit: ; preds = %for.body5.i.i.i, %if.else.i.i, %if.then8.i.i, %land.rhs.i.i.i.i, %if.then.i.i.i.i @@ -1851,8 +1875,12 @@ if.then8.i: ; preds = %if.else.i %idx.ext10.i = zext i32 %newSize to i64 %add.ptr11.idx.i = shl nuw nsw i64 %idx.ext10.i, 2 %add.ptr11.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i18.i, i64 %add.ptr11.idx.i + %idx.ext13.i = zext i32 %0 to i64 + %add.ptr14.idx.i = shl nuw nsw i64 %idx.ext13.i, 2 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %add.ptr11.i to i64 - %narrow.i = sub nuw i32 %0, %newSize + %gepdiff.i = sub nsw i64 %add.ptr14.idx.i, %add.ptr11.idx.i + %sub.ptr.div.i.i = lshr exact i64 %gepdiff.i, 2 + %conv.i.i = trunc i64 %sub.ptr.div.i.i to i32 %youngGen_.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 %1 = load ptr, ptr %youngGen_.i.i.i.i, align 8 %and.i.i.i.i.i = and i64 %sub.ptr.rhs.cast.i.i, -4194304 @@ -1867,7 +1895,7 @@ land.rhs.i.i.i: ; preds = %if.then8.i br i1 %tobool.i.i.i, label %if.then.i.i.i, label %_ZN6hermes2vm16ArrayStorageBaseINS0_13HermesValue32EE20resizeWithinCapacityEPS3_RNS0_7HadesGCEj.exit if.then.i.i.i: ; preds = %land.rhs.i.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i, ptr noundef nonnull %add.ptr11.i, i32 noundef %narrow.i) #7 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i, ptr noundef nonnull %add.ptr11.i, i32 noundef %conv.i.i) #7 br label %_ZN6hermes2vm16ArrayStorageBaseINS0_13HermesValue32EE20resizeWithinCapacityEPS3_RNS0_7HadesGCEj.exit _ZN6hermes2vm16ArrayStorageBaseINS0_13HermesValue32EE20resizeWithinCapacityEPS3_RNS0_7HadesGCEj.exit: ; preds = %for.body5.i.i, %if.else.i, %if.then8.i, %land.rhs.i.i.i, %if.then.i.i.i @@ -2522,23 +2550,27 @@ if.then63.i: ; preds = %if.end60.i %add.ptr66.idx.i = shl nuw nsw i64 %idx.ext65.i, 2 %add.ptr66.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i66.ptr.i, i64 %add.ptr66.idx.i %5 = load atomic i32, ptr %size_.i.i monotonic, align 4 + %idx.ext69.i = zext i32 %5 to i64 + %add.ptr70.idx.i = shl nuw nsw i64 %idx.ext69.i, 2 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %add.ptr66.i to i64 - %6 = sub i32 %5, %newSize + %gepdiff.i = sub nsw i64 %add.ptr70.idx.i, %add.ptr66.idx.i + %sub.ptr.div.i.i = lshr exact i64 %gepdiff.i, 2 + %conv.i.i = trunc i64 %sub.ptr.div.i.i to i32 %youngGen_.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 - %7 = load ptr, ptr %youngGen_.i.i.i.i, align 8 + %6 = load ptr, ptr %youngGen_.i.i.i.i, align 8 %and.i.i.i.i80.i = and i64 %sub.ptr.rhs.cast.i.i, 1125899902648320 - %8 = inttoptr i64 %and.i.i.i.i80.i to ptr - %cmp.i.i.i.i = icmp eq ptr %7, %8 + %7 = inttoptr i64 %and.i.i.i.i80.i to ptr + %cmp.i.i.i.i = icmp eq ptr %6, %7 br i1 %cmp.i.i.i.i, label %if.end72.i, label %land.rhs.i.i.i land.rhs.i.i.i: ; preds = %if.then63.i %ogMarkingBarriers_.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 8497 - %9 = load i8, ptr %ogMarkingBarriers_.i.i.i, align 1 - %tobool.i.i.i = trunc i8 %9 to i1 + %8 = load i8, ptr %ogMarkingBarriers_.i.i.i, align 1 + %tobool.i.i.i = trunc i8 %8 to i1 br i1 %tobool.i.i.i, label %if.then.i.i.i, label %if.end72.i if.then.i.i.i: ; preds = %land.rhs.i.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i68.i, ptr noundef nonnull %add.ptr66.i, i32 noundef %6) #7 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i68.i, ptr noundef nonnull %add.ptr66.i, i32 noundef %conv.i.i) #7 br label %if.end72.i if.end72.i: ; preds = %if.then.i.i.i, %land.rhs.i.i.i, %if.then63.i, %if.end60.i @@ -2551,55 +2583,55 @@ if.end73.i: ; preds = %entry %.sroa.speculated.i = tail call i32 @llvm.umax.i32(i32 %mul.i, i32 %newSize) %capacity.0.i = select i1 %cmp77.i, i32 %.sroa.speculated.i, i32 1027070 %call.i = tail call { i32, i64 } @_ZN6hermes2vm16ArrayStorageBaseINS0_13HermesValue32EE6createERNS0_7RuntimeEj(ptr noundef nonnull align 8 dereferenceable(9832) %runtime, i32 noundef %capacity.0.i) - %10 = extractvalue { i32, i64 } %call.i, 0 - %cmp.i.i = icmp eq i32 %10, 0 + %9 = extractvalue { i32, i64 } %call.i, 0 + %cmp.i.i = icmp eq i32 %9, 0 br i1 %cmp.i.i, label %_ZN6hermes2vm16ArrayStorageBaseINS0_13HermesValue32EE5shiftERNS0_13MutableHandleIS3_EERNS0_7RuntimeEjjj.exit, label %if.end.i if.end.i: ; preds = %if.end73.i - %11 = extractvalue { i32, i64 } %call.i, 1 - %or.i.i.i.i.i.i = or i64 %11, -281474976710656 + %10 = extractvalue { i32, i64 } %call.i, 1 + %or.i.i.i.i.i.i = or i64 %10, -281474976710656 %topGCScope_.i.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 8 - %12 = load ptr, ptr %topGCScope_.i.i.i.i.i, align 8 - %next_.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %12, i64 192 - %13 = load ptr, ptr %next_.i.i.i.i.i.i.i.i, align 8 - %curChunkEnd_.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %12, i64 200 - %14 = load ptr, ptr %curChunkEnd_.i.i.i.i.i.i.i, align 8 - %cmp.i.i.i.i.i.i.i = icmp ult ptr %13, %14 + %11 = load ptr, ptr %topGCScope_.i.i.i.i.i, align 8 + %next_.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %11, i64 192 + %12 = load ptr, ptr %next_.i.i.i.i.i.i.i.i, align 8 + %curChunkEnd_.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %11, i64 200 + %13 = load ptr, ptr %curChunkEnd_.i.i.i.i.i.i.i, align 8 + %cmp.i.i.i.i.i.i.i = icmp ult ptr %12, %13 br i1 %cmp.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i, label %if.end.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i: ; preds = %if.end.i - %incdec.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %13, i64 8 + %incdec.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %12, i64 8 store ptr %incdec.ptr.i.i.i.i.i.i.i, ptr %next_.i.i.i.i.i.i.i.i, align 8 - store i64 %or.i.i.i.i.i.i, ptr %13, align 8 + store i64 %or.i.i.i.i.i.i, ptr %12, align 8 br label %_ZN6hermes2vm15HandleRootOwner10makeHandleINS0_16ArrayStorageBaseINS0_13HermesValue32EEEEENS0_6HandleIT_EENS0_11HermesValueE.exit.i if.end.i.i.i.i.i.i.i: ; preds = %if.end.i - %call7.i.i.i.i.i.i.i = tail call noundef ptr @_ZN6hermes2vm7GCScope15_newChunkAndPHVENS0_11HermesValueE(ptr noundef nonnull align 8 dereferenceable(212) %12, i64 %or.i.i.i.i.i.i) #7 + %call7.i.i.i.i.i.i.i = tail call noundef ptr @_ZN6hermes2vm7GCScope15_newChunkAndPHVENS0_11HermesValueE(ptr noundef nonnull align 8 dereferenceable(212) %11, i64 %or.i.i.i.i.i.i) #7 %retval.sroa.0.0.copyload.i.i.pre.i = load i64, ptr %call7.i.i.i.i.i.i.i, align 8 br label %_ZN6hermes2vm15HandleRootOwner10makeHandleINS0_16ArrayStorageBaseINS0_13HermesValue32EEEEENS0_6HandleIT_EENS0_11HermesValueE.exit.i _ZN6hermes2vm15HandleRootOwner10makeHandleINS0_16ArrayStorageBaseINS0_13HermesValue32EEEEENS0_6HandleIT_EENS0_11HermesValueE.exit.i: ; preds = %if.end.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i %retval.sroa.0.0.copyload.i.i.i = phi i64 [ %or.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i ], [ %retval.sroa.0.0.copyload.i.i.pre.i, %if.end.i.i.i.i.i.i.i ] - %retval.0.i.i.i.i.i.i.i = phi ptr [ %13, %if.then.i.i.i.i.i.i.i ], [ %call7.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i ] + %retval.0.i.i.i.i.i.i.i = phi ptr [ %12, %if.then.i.i.i.i.i.i.i ], [ %call7.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i ] %and.i.i.i.i.i = and i64 %retval.sroa.0.0.copyload.i.i.i, 281474976710655 - %15 = inttoptr i64 %and.i.i.i.i.i to ptr - %16 = load ptr, ptr %selfHandle, align 8 - %retval.sroa.0.0.copyload.i.i26.i = load i64, ptr %16, align 8 + %14 = inttoptr i64 %and.i.i.i.i.i to ptr + %15 = load ptr, ptr %selfHandle, align 8 + %retval.sroa.0.0.copyload.i.i26.i = load i64, ptr %15, align 8 %and.i.i.i.i27.i = and i64 %retval.sroa.0.0.copyload.i.i26.i, 281474976710655 - %17 = inttoptr i64 %and.i.i.i.i27.i to ptr - %size_.i.i1 = getelementptr inbounds i8, ptr %17, i64 4 - %18 = load atomic i32, ptr %size_.i.i1 monotonic, align 4 - %.sroa.speculated.i2 = tail call i32 @llvm.umin.i32(i32 %newSize, i32 %18) - %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %17, i64 8 - %add.ptr.i.i.i29.ptr.i = getelementptr inbounds i8, ptr %15, i64 8 + %16 = inttoptr i64 %and.i.i.i.i27.i to ptr + %size_.i.i1 = getelementptr inbounds i8, ptr %16, i64 4 + %17 = load atomic i32, ptr %size_.i.i1 monotonic, align 4 + %.sroa.speculated.i2 = tail call i32 @llvm.umin.i32(i32 %newSize, i32 %17) + %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 8 + %add.ptr.i.i.i29.ptr.i = getelementptr inbounds i8, ptr %14, i64 8 %idx.ext16.i = zext i32 %.sroa.speculated.i2 to i64 %add.ptr17.idx.i = shl nuw nsw i64 %idx.ext16.i, 2 %youngGen_.i.i.i.i3 = getelementptr inbounds i8, ptr %runtime, i64 1640 - %19 = load ptr, ptr %youngGen_.i.i.i.i3, align 8 - %20 = ptrtoint ptr %add.ptr.i.i.i29.ptr.i to i64 - %and.i.i.i.i30.i = and i64 %20, 562949949227008 - %21 = inttoptr i64 %and.i.i.i.i30.i to ptr - %cmp.i.i.i.i4 = icmp eq ptr %19, %21 + %18 = load ptr, ptr %youngGen_.i.i.i.i3, align 8 + %19 = ptrtoint ptr %add.ptr.i.i.i29.ptr.i to i64 + %and.i.i.i.i30.i = and i64 %19, 562949949227008 + %20 = inttoptr i64 %and.i.i.i.i30.i to ptr + %cmp.i.i.i.i4 = icmp eq ptr %18, %20 br i1 %cmp.i.i.i.i4, label %_ZN6hermes2vm17GCHermesValueBaseINS0_13HermesValue32EE18uninitialized_copyEPS3_S4_S4_RNS0_7HadesGCE.exit.i, label %if.then.i.i.i5 if.then.i.i.i5: ; preds = %_ZN6hermes2vm15HandleRootOwner10makeHandleINS0_16ArrayStorageBaseINS0_13HermesValue32EEEEENS0_6HandleIT_EENS0_11HermesValueE.exit.i @@ -2609,7 +2641,7 @@ if.then.i.i.i5: ; preds = %_ZN6hermes2vm15Hand _ZN6hermes2vm17GCHermesValueBaseINS0_13HermesValue32EE18uninitialized_copyEPS3_S4_S4_RNS0_7HadesGCE.exit.i: ; preds = %if.then.i.i.i5, %_ZN6hermes2vm15HandleRootOwner10makeHandleINS0_16ArrayStorageBaseINS0_13HermesValue32EEEEENS0_6HandleIT_EENS0_11HermesValueE.exit.i tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i29.ptr.i, ptr nonnull align 4 %add.ptr.i.i.i.i, i64 %add.ptr17.idx.i, i1 false) - %cmp.i = icmp ult i32 %18, %newSize + %cmp.i = icmp ult i32 %17, %newSize br i1 %cmp.i, label %if.then29.i, label %if.end43.i if.then29.i: ; preds = %_ZN6hermes2vm17GCHermesValueBaseINS0_13HermesValue32EE18uninitialized_copyEPS3_S4_S4_RNS0_7HadesGCE.exit.i @@ -2626,12 +2658,12 @@ for.body5.i38.i: ; preds = %if.then29.i, %for.b br i1 %cmp4.not.i41.i, label %if.end43.i, label %for.body5.i38.i, !llvm.loop !99 if.end43.i: ; preds = %for.body5.i38.i, %_ZN6hermes2vm17GCHermesValueBaseINS0_13HermesValue32EE18uninitialized_copyEPS3_S4_S4_RNS0_7HadesGCE.exit.i - %size_.i = getelementptr inbounds i8, ptr %15, i64 4 + %size_.i = getelementptr inbounds i8, ptr %14, i64 4 store atomic i32 %newSize, ptr %size_.i release, align 4 %retval.sroa.0.0.copyload.i.i43.i = load i64, ptr %retval.0.i.i.i.i.i.i.i, align 8 %or.i.i.i.i.i45.i = or i64 %retval.sroa.0.0.copyload.i.i43.i, -281474976710656 - %22 = load ptr, ptr %selfHandle, align 8 - store i64 %or.i.i.i.i.i45.i, ptr %22, align 8 + %21 = load ptr, ptr %selfHandle, align 8 + store i64 %or.i.i.i.i.i45.i, ptr %21, align 8 br label %_ZN6hermes2vm16ArrayStorageBaseINS0_13HermesValue32EE5shiftERNS0_13MutableHandleIS3_EERNS0_7RuntimeEjjj.exit _ZN6hermes2vm16ArrayStorageBaseINS0_13HermesValue32EE5shiftERNS0_13MutableHandleIS3_EERNS0_7RuntimeEjjj.exit: ; preds = %if.end43.i, %if.end73.i, %if.end72.i @@ -2828,23 +2860,27 @@ if.then63: ; preds = %if.end60 %add.ptr66.idx = shl nuw nsw i64 %idx.ext65, 2 %add.ptr66 = getelementptr inbounds i8, ptr %add.ptr.i.i.i66.ptr110, i64 %add.ptr66.idx %17 = load atomic i32, ptr %size_.i monotonic, align 4 + %idx.ext69 = zext i32 %17 to i64 + %add.ptr70.idx = shl nuw nsw i64 %idx.ext69, 2 %sub.ptr.rhs.cast.i = ptrtoint ptr %add.ptr66 to i64 - %18 = sub i32 %17, %toLast + %gepdiff = sub nsw i64 %add.ptr70.idx, %add.ptr66.idx + %sub.ptr.div.i = lshr exact i64 %gepdiff, 2 + %conv.i = trunc i64 %sub.ptr.div.i to i32 %youngGen_.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 - %19 = load ptr, ptr %youngGen_.i.i.i, align 8 + %18 = load ptr, ptr %youngGen_.i.i.i, align 8 %and.i.i.i.i80 = and i64 %sub.ptr.rhs.cast.i, 1125899902648320 - %20 = inttoptr i64 %and.i.i.i.i80 to ptr - %cmp.i.i.i = icmp eq ptr %19, %20 + %19 = inttoptr i64 %and.i.i.i.i80 to ptr + %cmp.i.i.i = icmp eq ptr %18, %19 br i1 %cmp.i.i.i, label %if.end72, label %land.rhs.i.i land.rhs.i.i: ; preds = %if.then63 %ogMarkingBarriers_.i.i = getelementptr inbounds i8, ptr %runtime, i64 8497 - %21 = load i8, ptr %ogMarkingBarriers_.i.i, align 1 - %tobool.i.i = trunc i8 %21 to i1 + %20 = load i8, ptr %ogMarkingBarriers_.i.i, align 1 + %tobool.i.i = trunc i8 %20 to i1 br i1 %tobool.i.i, label %if.then.i.i, label %if.end72 if.then.i.i: ; preds = %land.rhs.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i68114, ptr noundef nonnull %add.ptr66, i32 noundef %18) #7 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i68114, ptr noundef nonnull %add.ptr66, i32 noundef %conv.i) #7 br label %if.end72 if.end72: ; preds = %if.then.i.i, %land.rhs.i.i, %if.then63, %if.end60 @@ -2910,8 +2946,12 @@ if.then8: ; preds = %if.else %idx.ext10 = zext i32 %newSize to i64 %add.ptr11.idx = shl nuw nsw i64 %idx.ext10, 2 %add.ptr11 = getelementptr inbounds i8, ptr %add.ptr.i.i.i18, i64 %add.ptr11.idx + %idx.ext13 = zext i32 %0 to i64 + %add.ptr14.idx = shl nuw nsw i64 %idx.ext13, 2 %sub.ptr.rhs.cast.i = ptrtoint ptr %add.ptr11 to i64 - %narrow = sub nuw i32 %0, %newSize + %gepdiff = sub nsw i64 %add.ptr14.idx, %add.ptr11.idx + %sub.ptr.div.i = lshr exact i64 %gepdiff, 2 + %conv.i = trunc i64 %sub.ptr.div.i to i32 %youngGen_.i.i.i = getelementptr inbounds i8, ptr %gc, i64 800 %1 = load ptr, ptr %youngGen_.i.i.i, align 8 %and.i.i.i.i = and i64 %sub.ptr.rhs.cast.i, -4194304 @@ -2926,7 +2966,7 @@ land.rhs.i.i: ; preds = %if.then8 br i1 %tobool.i.i, label %if.then.i.i, label %if.end15 if.then.i.i: ; preds = %land.rhs.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %gc, ptr noundef nonnull %add.ptr11, i32 noundef %narrow) #7 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %gc, ptr noundef nonnull %add.ptr11, i32 noundef %conv.i) #7 br label %if.end15 if.end15: ; preds = %for.body5.i, %if.then.i.i, %land.rhs.i.i, %if.then8, %if.else diff --git a/bench/hermes/optimized/DependencyExtractor.cpp.ll b/bench/hermes/optimized/DependencyExtractor.cpp.ll index 9505753a916..9478767e669 100644 --- a/bench/hermes/optimized/DependencyExtractor.cpp.ll +++ b/bench/hermes/optimized/DependencyExtractor.cpp.ll @@ -1847,10 +1847,10 @@ _ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit: br label %while.body while.body: ; preds = %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit - %stack.sroa.0.0192 = phi ptr [ %call5.i.i.i.i.i.i, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit ], [ %stack.sroa.0.1.lcssa, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit ] - %stack.sroa.9.0191 = phi ptr [ %incdec.ptr.i.i.i, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit ], [ %stack.sroa.9.1.lcssa, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit ] - %stack.sroa.26.0190 = phi ptr [ %incdec.ptr.i.i.i, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit ], [ %stack.sroa.26.1.lcssa, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit ] - %add.ptr.i.i = getelementptr inbounds i8, ptr %stack.sroa.9.0191, i64 -8 + %stack.sroa.0.0193 = phi ptr [ %call5.i.i.i.i.i.i, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit ], [ %stack.sroa.0.1.lcssa, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit ] + %stack.sroa.9.0192 = phi ptr [ %incdec.ptr.i.i.i, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit ], [ %stack.sroa.9.1.lcssa, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit ] + %stack.sroa.26.0191 = phi ptr [ %incdec.ptr.i.i.i, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit ], [ %stack.sroa.26.1.lcssa, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit ] + %add.ptr.i.i = getelementptr inbounds i8, ptr %stack.sroa.9.0192, i64 -8 %1 = load ptr, ptr %add.ptr.i.i, align 8 %_M_finish.i24 = getelementptr inbounds i8, ptr %1, i64 8 %2 = load ptr, ptr %_M_finish.i24, align 8 @@ -1859,16 +1859,16 @@ while.body: ; preds = %_ZNSt6vectorIPS_IPN %sub.ptr.rhs.cast.i = ptrtoint ptr %3 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 - %cmp174.not = icmp eq ptr %2, %3 - br i1 %cmp174.not, label %for.end, label %for.body + %cmp175.not = icmp eq ptr %2, %3 + br i1 %cmp175.not, label %for.end, label %for.body for.body: ; preds = %while.body, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit - %idx.0178 = phi i64 [ %inc44, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ 0, %while.body ] - %stack.sroa.0.1177 = phi ptr [ %stack.sroa.0.3, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ %stack.sroa.0.0192, %while.body ] - %stack.sroa.9.1176 = phi ptr [ %stack.sroa.9.3, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ %add.ptr.i.i, %while.body ] - %stack.sroa.26.1175 = phi ptr [ %stack.sroa.26.3, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ %stack.sroa.26.0190, %while.body ] + %idx.0179 = phi i64 [ %inc44, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ 0, %while.body ] + %stack.sroa.0.1178 = phi ptr [ %stack.sroa.0.3, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ %stack.sroa.0.0193, %while.body ] + %stack.sroa.9.1177 = phi ptr [ %stack.sroa.9.3, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ %add.ptr.i.i, %while.body ] + %stack.sroa.26.1176 = phi ptr [ %stack.sroa.26.3, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ %stack.sroa.26.0191, %while.body ] %4 = load ptr, ptr %1, align 8 - %add.ptr.i25 = getelementptr inbounds ptr, ptr %4, i64 %idx.0178 + %add.ptr.i25 = getelementptr inbounds ptr, ptr %4, i64 %idx.0179 %5 = load ptr, ptr %add.ptr.i25, align 8 %vtable = load ptr, ptr %5, align 8 %vfn = getelementptr inbounds i8, ptr %vtable, i64 48 @@ -1877,22 +1877,22 @@ for.body: ; preds = %while.body, %_ZN4ll %7 = load ptr, ptr %childNodes, align 8 %8 = load i32, ptr %Size.i, align 8 %conv.i = zext i32 %8 to i64 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %stack.sroa.9.1176 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %stack.sroa.0.1177 to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %stack.sroa.9.1177 to i64 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %stack.sroa.0.1178 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i %cmp.not.i73 = icmp eq i32 %8, 0 br i1 %cmp.not.i73, label %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit, label %if.then.i74 if.then.i74: ; preds = %for.body %add.ptr.i.idx = shl nuw nsw i64 %conv.i, 3 - %sub.ptr.lhs.cast.i78 = ptrtoint ptr %stack.sroa.26.1175 to i64 + %sub.ptr.lhs.cast.i78 = ptrtoint ptr %stack.sroa.26.1176 to i64 %sub.ptr.sub.i80 = sub i64 %sub.ptr.lhs.cast.i78, %sub.ptr.lhs.cast.i.i %cmp3.not.i = icmp ult i64 %sub.ptr.sub.i80, %add.ptr.i.idx br i1 %cmp3.not.i, label %if.else50.i, label %if.then.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i74 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %stack.sroa.9.1176, ptr align 8 %7, i64 %add.ptr.i.idx, i1 false) - %add.ptr36.i = getelementptr inbounds ptr, ptr %stack.sroa.9.1176, i64 %conv.i + call void @llvm.memmove.p0.p0.i64(ptr align 8 %stack.sroa.9.1177, ptr align 8 %7, i64 %add.ptr.i.idx, i1 false) + %add.ptr36.i = getelementptr inbounds ptr, ptr %stack.sroa.9.1177, i64 %conv.i br label %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit if.else50.i: ; preds = %if.then.i74 @@ -1921,22 +1921,22 @@ cond.true.i.i: ; preds = %_ZNKSt6vectorIPS_IP _ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE11_M_allocateEm.exit.i: ; preds = %cond.true.i.i, %_ZNKSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE12_M_check_lenEmPKc.exit.i %cond.i55.i = phi ptr [ %call5.i.i.i.i, %cond.true.i.i ], [ null, %_ZNKSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE12_M_check_lenEmPKc.exit.i ] - %tobool.not.i.i.i.i.i.i.i.i.i59.i = icmp eq ptr %stack.sroa.9.1176, %stack.sroa.0.1177 + %tobool.not.i.i.i.i.i.i.i.i.i59.i = icmp eq ptr %stack.sroa.9.1177, %stack.sroa.0.1178 br i1 %tobool.not.i.i.i.i.i.i.i.i.i59.i, label %_ZSt22__uninitialized_copy_aIPPSt6vectorIPN6hermes5regex4NodeESaIS4_EES8_S7_ET0_T_SA_S9_RSaIT1_E.exit68.i, label %if.then.i.i.i.i.i.i.i.i.i60.i if.then.i.i.i.i.i.i.i.i.i60.i: ; preds = %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE11_M_allocateEm.exit.i - call void @llvm.memmove.p0.p0.i64(ptr align 8 %cond.i55.i, ptr align 8 %stack.sroa.0.1177, i64 %sub.ptr.sub.i.i, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 8 %cond.i55.i, ptr align 8 %stack.sroa.0.1178, i64 %sub.ptr.sub.i.i, i1 false) br label %_ZSt22__uninitialized_copy_aIPPSt6vectorIPN6hermes5regex4NodeESaIS4_EES8_S7_ET0_T_SA_S9_RSaIT1_E.exit68.i _ZSt22__uninitialized_copy_aIPPSt6vectorIPN6hermes5regex4NodeESaIS4_EES8_S7_ET0_T_SA_S9_RSaIT1_E.exit68.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i60.i, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE11_M_allocateEm.exit.i %add.ptr.i.i.i.i.i.i.i.i.i61.i = getelementptr inbounds i8, ptr %cond.i55.i, i64 %sub.ptr.sub.i.i call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i.i.i.i61.i, ptr align 8 %7, i64 %add.ptr.i.idx, i1 false) %add.ptr.i.i.i.i.i.i.i.i67.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i.i61.i, i64 %add.ptr.i.idx - %tobool.not.i.i91 = icmp eq ptr %stack.sroa.0.1177, null + %tobool.not.i.i91 = icmp eq ptr %stack.sroa.0.1178, null br i1 %tobool.not.i.i91, label %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i, label %if.then.i76.i if.then.i76.i: ; preds = %_ZSt22__uninitialized_copy_aIPPSt6vectorIPN6hermes5regex4NodeESaIS4_EES8_S7_ET0_T_SA_S9_RSaIT1_E.exit68.i - call void @_ZdlPv(ptr noundef nonnull %stack.sroa.0.1177) #16 + call void @_ZdlPv(ptr noundef nonnull %stack.sroa.0.1178) #16 br label %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i _ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i: ; preds = %if.then.i76.i, %_ZSt22__uninitialized_copy_aIPPSt6vectorIPN6hermes5regex4NodeESaIS4_EES8_S7_ET0_T_SA_S9_RSaIT1_E.exit68.i @@ -1944,19 +1944,19 @@ _ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_dealloc br label %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit _ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit: ; preds = %if.then.i.i.i.i.i.i.i.i.i, %for.body, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i - %stack.sroa.26.3 = phi ptr [ %stack.sroa.26.1175, %for.body ], [ %add.ptr76.i, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i ], [ %stack.sroa.26.1175, %if.then.i.i.i.i.i.i.i.i.i ] - %stack.sroa.9.3 = phi ptr [ %stack.sroa.9.1176, %for.body ], [ %add.ptr.i.i.i.i.i.i.i.i67.i, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i ], [ %add.ptr36.i, %if.then.i.i.i.i.i.i.i.i.i ] - %stack.sroa.0.3 = phi ptr [ %stack.sroa.0.1177, %for.body ], [ %cond.i55.i, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i ], [ %stack.sroa.0.1177, %if.then.i.i.i.i.i.i.i.i.i ] + %stack.sroa.26.3 = phi ptr [ %stack.sroa.26.1176, %for.body ], [ %add.ptr76.i, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i ], [ %stack.sroa.26.1176, %if.then.i.i.i.i.i.i.i.i.i ] + %stack.sroa.9.3 = phi ptr [ %stack.sroa.9.1177, %for.body ], [ %add.ptr.i.i.i.i.i.i.i.i67.i, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i ], [ %add.ptr36.i, %if.then.i.i.i.i.i.i.i.i.i ] + %stack.sroa.0.3 = phi ptr [ %stack.sroa.0.1178, %for.body ], [ %cond.i55.i, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i ], [ %stack.sroa.0.1178, %if.then.i.i.i.i.i.i.i.i.i ] store ptr %add.ptr.i.i.i.i.i, ptr %chars, align 8 store i32 0, ptr %Size.i.i.i.i.i, align 8 store i32 5, ptr %Capacity2.i.i.i.i.i, align 4 - %cmp13171 = icmp ult i64 %idx.0178, %sub.ptr.div.i - br i1 %cmp13171, label %land.rhs, label %while.end + %cmp13172 = icmp ult i64 %idx.0179, %sub.ptr.div.i + br i1 %cmp13172, label %land.rhs, label %while.end land.rhs: ; preds = %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit, %while.body18 - %idx.1172 = phi i64 [ %inc, %while.body18 ], [ %idx.0178, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit ] + %idx.1173 = phi i64 [ %inc, %while.body18 ], [ %idx.0179, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit ] %10 = load ptr, ptr %1, align 8 - %add.ptr.i28 = getelementptr inbounds ptr, ptr %10, i64 %idx.1172 + %add.ptr.i28 = getelementptr inbounds ptr, ptr %10, i64 %idx.1173 %11 = load ptr, ptr %add.ptr.i28, align 8 %vtable15 = load ptr, ptr %11, align 8 %vfn16 = getelementptr inbounds i8, ptr %vtable15, i64 24 @@ -1965,13 +1965,13 @@ land.rhs: ; preds = %_ZNSt6vectorIPS_IPN br i1 %call17, label %while.body18, label %while.end while.body18: ; preds = %land.rhs - %inc = add i64 %idx.1172, 1 + %inc = add i64 %idx.1173, 1 %exitcond.not = icmp eq i64 %inc, %sub.ptr.div.i br i1 %exitcond.not, label %while.end, label %land.rhs, !llvm.loop !60 while.end: ; preds = %land.rhs, %while.body18, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit - %idx.1.lcssa = phi i64 [ %idx.0178, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit ], [ %sub.ptr.div.i, %while.body18 ], [ %idx.1172, %land.rhs ] - %sub = sub i64 %idx.1.lcssa, %idx.0178 + %idx.1.lcssa = phi i64 [ %idx.0179, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit ], [ %sub.ptr.div.i, %while.body18 ], [ %idx.1173, %land.rhs ] + %sub = sub i64 %idx.1.lcssa, %idx.0179 %cmp19 = icmp ugt i64 %sub, 1 br i1 %cmp19, label %if.then, label %if.end @@ -1986,13 +1986,13 @@ if.then: ; preds = %while.end _ZN4llvh11SmallVectorIjLj5EEC2EOS1_.exit.thread: ; preds = %if.then store ptr getelementptr inbounds (i8, ptr @_ZTVN6hermes5regex13MatchCharNodeE, i64 16), ptr %call21, align 8 - %chars_.i210 = getelementptr inbounds i8, ptr %call21, i64 8 - %add.ptr.i.i.i.i.i.i32211 = getelementptr inbounds i8, ptr %call21, i64 24 - store ptr %add.ptr.i.i.i.i.i.i32211, ptr %chars_.i210, align 8 - %Size.i.i.i.i.i.i212 = getelementptr inbounds i8, ptr %call21, i64 16 - store i32 0, ptr %Size.i.i.i.i.i.i212, align 8 - %Capacity2.i.i.i.i.i.i213 = getelementptr inbounds i8, ptr %call21, i64 20 - store i32 5, ptr %Capacity2.i.i.i.i.i.i213, align 4 + %chars_.i211 = getelementptr inbounds i8, ptr %call21, i64 8 + %add.ptr.i.i.i.i.i.i32212 = getelementptr inbounds i8, ptr %call21, i64 24 + store ptr %add.ptr.i.i.i.i.i.i32212, ptr %chars_.i211, align 8 + %Size.i.i.i.i.i.i213 = getelementptr inbounds i8, ptr %call21, i64 16 + store i32 0, ptr %Size.i.i.i.i.i.i213, align 8 + %Capacity2.i.i.i.i.i.i214 = getelementptr inbounds i8, ptr %call21, i64 20 + store i32 5, ptr %Capacity2.i.i.i.i.i.i214, align 4 br label %_ZN6hermes5regex13MatchCharNodeC2EN4llvh11SmallVectorIjLj5EEENS0_11SyntaxFlagsE.exit if.then.i: ; preds = %if.then @@ -2024,9 +2024,9 @@ if.then.i.i.i101: ; preds = %if.end24.i, %if.end %16 = phi i32 [ %.pre, %if.end37.i ], [ %13, %if.end24.i ] %conv.i51.i = zext i32 %16 to i64 %17 = load ptr, ptr %chars, align 8 + %add.ptr.i.idx.i = shl nuw nsw i64 %conv.i51.i, 2 %18 = load ptr, ptr %agg.tmp22, align 8 - %gepdiff.i = shl nuw nsw i64 %conv.i51.i, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %18, ptr align 4 %17, i64 %gepdiff.i, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %18, ptr align 4 %17, i64 %add.ptr.i.idx.i, i1 false) br label %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i _ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i: ; preds = %if.then.i.i.i101, %if.end37.i @@ -2054,7 +2054,7 @@ if.end8.i111: ; preds = %if.then.i.i33 store i32 %20, ptr %Capacity2.i.i.i.i.i.i, align 4 store ptr %add.ptr.i.i.i.i.i29, ptr %agg.tmp22, align 8 store i32 0, ptr %Capacity2.i.i.i.i.i31, align 4 - br label %_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit146 + br label %_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit147 if.end24.i127: ; preds = %if.then.i.i33 %conv.i30.i118 = zext i32 %13 to i64 @@ -2063,28 +2063,28 @@ if.end24.i127: ; preds = %if.then.i.i33 if.end37.i134: ; preds = %if.end24.i127 call void @_ZN4llvh15SmallVectorBase8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %chars_.i, ptr noundef nonnull %add.ptr.i.i.i.i.i.i32, i64 noundef %conv.i30.i118, i64 noundef 4) #15 - %.pre200 = load i32, ptr %Size.i.i.i.i.i30, align 8 - %.pre208 = zext i32 %.pre200 to i64 - %cmp.not.i.i.i137 = icmp eq i32 %.pre200, 0 - br i1 %cmp.not.i.i.i137, label %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i143, label %if.then.i.i.i138 + %.pre201 = load i32, ptr %Size.i.i.i.i.i30, align 8 + %.pre209 = zext i32 %.pre201 to i64 + %cmp.not.i.i.i137 = icmp eq i32 %.pre201, 0 + br i1 %cmp.not.i.i.i137, label %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i144, label %if.then.i.i.i138 if.then.i.i.i138: ; preds = %if.end24.i127, %if.end37.i134 - %conv.i51.i136.pre-phi217 = phi i64 [ %.pre208, %if.end37.i134 ], [ %conv.i30.i118, %if.end24.i127 ] + %conv.i51.i136.pre-phi218 = phi i64 [ %.pre209, %if.end37.i134 ], [ %conv.i30.i118, %if.end24.i127 ] %21 = load ptr, ptr %agg.tmp22, align 8 + %add.ptr.i.idx.i139 = shl nuw nsw i64 %conv.i51.i136.pre-phi218, 2 %22 = load ptr, ptr %chars_.i, align 8 - %gepdiff.i142 = shl nuw nsw i64 %conv.i51.i136.pre-phi217, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %22, ptr align 4 %21, i64 %gepdiff.i142, i1 false) - br label %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i143 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %22, ptr align 4 %21, i64 %add.ptr.i.idx.i139, i1 false) + br label %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i144 -_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i143: ; preds = %if.then.i.i.i138, %if.end37.i134 +_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i144: ; preds = %if.then.i.i.i138, %if.end37.i134 store i32 %13, ptr %Size.i.i.i.i.i.i, align 8 - br label %_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit146 + br label %_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit147 -_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit146: ; preds = %if.end8.i111, %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i143 +_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit147: ; preds = %if.end8.i111, %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i144 store i32 0, ptr %Size.i.i.i.i.i30, align 8 br label %_ZN6hermes5regex13MatchCharNodeC2EN4llvh11SmallVectorIjLj5EEENS0_11SyntaxFlagsE.exit -_ZN6hermes5regex13MatchCharNodeC2EN4llvh11SmallVectorIjLj5EEENS0_11SyntaxFlagsE.exit: ; preds = %_ZN4llvh11SmallVectorIjLj5EEC2EOS1_.exit.thread, %_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit146 +_ZN6hermes5regex13MatchCharNodeC2EN4llvh11SmallVectorIjLj5EEENS0_11SyntaxFlagsE.exit: ; preds = %_ZN4llvh11SmallVectorIjLj5EEC2EOS1_.exit.thread, %_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit147 %icase_.i = getelementptr inbounds i8, ptr %call21, i64 48 store i8 %bf.clear.i, ptr %icase_.i, align 8 %unicode_.i = getelementptr inbounds i8, ptr %call21, i64 49 @@ -2173,18 +2173,18 @@ _ZNSt6vectorISt10unique_ptrIN6hermes5regex4NodeESt14default_deleteIS3_EESaIS6_EE if.then.i.i41: ; preds = %_ZNSt6vectorISt10unique_ptrIN6hermes5regex4NodeESt14default_deleteIS3_EESaIS6_EE12emplace_backIJPNS2_13MatchCharNodeEEEERS6_DpOT_.exit call void @free(ptr noundef %30) #15 - %.pre201 = load ptr, ptr %_M_finish.i34, align 8 + %.pre202 = load ptr, ptr %_M_finish.i34, align 8 br label %_ZN4llvh11SmallVectorIjLj5EED2Ev.exit _ZN4llvh11SmallVectorIjLj5EED2Ev.exit: ; preds = %_ZNSt6vectorISt10unique_ptrIN6hermes5regex4NodeESt14default_deleteIS3_EESaIS6_EE12emplace_backIJPNS2_13MatchCharNodeEEEERS6_DpOT_.exit, %if.then.i.i41 - %31 = phi ptr [ %29, %_ZNSt6vectorISt10unique_ptrIN6hermes5regex4NodeESt14default_deleteIS3_EESaIS6_EE12emplace_backIJPNS2_13MatchCharNodeEEEERS6_DpOT_.exit ], [ %.pre201, %if.then.i.i41 ] + %31 = phi ptr [ %29, %_ZNSt6vectorISt10unique_ptrIN6hermes5regex4NodeESt14default_deleteIS3_EESaIS6_EE12emplace_backIJPNS2_13MatchCharNodeEEEERS6_DpOT_.exit ], [ %.pre202, %if.then.i.i41 ] %add.ptr.i.i43 = getelementptr inbounds i8, ptr %31, i64 -8 %32 = load ptr, ptr %add.ptr.i.i43, align 8 %33 = load ptr, ptr %1, align 8 - %add.ptr.i44 = getelementptr inbounds ptr, ptr %33, i64 %idx.0178 + %add.ptr.i44 = getelementptr inbounds ptr, ptr %33, i64 %idx.0179 store ptr %32, ptr %add.ptr.i44, align 8 %34 = load ptr, ptr %1, align 8 - %35 = getelementptr ptr, ptr %34, i64 %idx.0178 + %35 = getelementptr ptr, ptr %34, i64 %idx.0179 %add.ptr.i45 = getelementptr i8, ptr %35, i64 8 %add.ptr.i46 = getelementptr inbounds ptr, ptr %34, i64 %idx.1.lcssa %cmp.not3.i.i.i.i = icmp eq ptr %add.ptr.i45, %add.ptr.i46 @@ -2222,21 +2222,21 @@ _ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit: ; br i1 %cmp, label %for.body, label %for.end.loopexit, !llvm.loop !66 for.end.loopexit: ; preds = %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit - %.pre202 = load ptr, ptr %1, align 8 - %.pre203 = load ptr, ptr %_M_finish.i24, align 8 - %.pre205 = ptrtoint ptr %.pre203 to i64 - %.pre206 = ptrtoint ptr %.pre202 to i64 - %.pre207 = sub i64 %.pre205, %.pre206 + %.pre203 = load ptr, ptr %1, align 8 + %.pre204 = load ptr, ptr %_M_finish.i24, align 8 + %.pre206 = ptrtoint ptr %.pre204 to i64 + %.pre207 = ptrtoint ptr %.pre203 to i64 + %.pre208 = sub i64 %.pre206, %.pre207 br label %for.end for.end: ; preds = %for.end.loopexit, %while.body - %sub.ptr.sub.i.i.i.i.i57.pre-phi = phi i64 [ %.pre207, %for.end.loopexit ], [ %sub.ptr.sub.i, %while.body ] - %sub.ptr.lhs.cast.i.i.i.i.i55.pre-phi = phi i64 [ %.pre205, %for.end.loopexit ], [ %sub.ptr.lhs.cast.i, %while.body ] - %39 = phi ptr [ %.pre203, %for.end.loopexit ], [ %2, %while.body ] - %40 = phi ptr [ %.pre202, %for.end.loopexit ], [ %3, %while.body ] - %stack.sroa.26.1.lcssa = phi ptr [ %stack.sroa.26.3, %for.end.loopexit ], [ %stack.sroa.26.0190, %while.body ] + %sub.ptr.sub.i.i.i.i.i57.pre-phi = phi i64 [ %.pre208, %for.end.loopexit ], [ %sub.ptr.sub.i, %while.body ] + %sub.ptr.lhs.cast.i.i.i.i.i55.pre-phi = phi i64 [ %.pre206, %for.end.loopexit ], [ %sub.ptr.lhs.cast.i, %while.body ] + %39 = phi ptr [ %.pre204, %for.end.loopexit ], [ %2, %while.body ] + %40 = phi ptr [ %.pre203, %for.end.loopexit ], [ %3, %while.body ] + %stack.sroa.26.1.lcssa = phi ptr [ %stack.sroa.26.3, %for.end.loopexit ], [ %stack.sroa.26.0191, %while.body ] %stack.sroa.9.1.lcssa = phi ptr [ %stack.sroa.9.3, %for.end.loopexit ], [ %add.ptr.i.i, %while.body ] - %stack.sroa.0.1.lcssa = phi ptr [ %stack.sroa.0.3, %for.end.loopexit ], [ %stack.sroa.0.0192, %while.body ] + %stack.sroa.0.1.lcssa = phi ptr [ %stack.sroa.0.3, %for.end.loopexit ], [ %stack.sroa.0.0193, %while.body ] %shr.i.i.i.i = ashr i64 %sub.ptr.sub.i.i.i.i.i57.pre-phi, 5 %cmp44.i.i.i.i = icmp sgt i64 %shr.i.i.i.i, 0 br i1 %cmp44.i.i.i.i, label %for.body.preheader.i.i.i.i59, label %for.end.i.i.i.i @@ -2263,13 +2263,13 @@ if.end10.i.i.i.i: ; preds = %if.end.i.i.i.i %incdec.ptr.i10.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.045.i.i.i.i, i64 16 %44 = load ptr, ptr %incdec.ptr.i10.i.i.i.i, align 8 %cmp.i11.i.i.i.i = icmp eq ptr %44, null - br i1 %cmp.i11.i.i.i.i, label %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit223, label %if.end16.i.i.i.i + br i1 %cmp.i11.i.i.i.i, label %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit224, label %if.end16.i.i.i.i if.end16.i.i.i.i: ; preds = %if.end10.i.i.i.i %incdec.ptr.i12.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.045.i.i.i.i, i64 24 %45 = load ptr, ptr %incdec.ptr.i12.i.i.i.i, align 8 %cmp.i13.i.i.i.i = icmp eq ptr %45, null - br i1 %cmp.i13.i.i.i.i, label %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit225, label %if.end22.i.i.i.i + br i1 %cmp.i13.i.i.i.i, label %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit226, label %if.end22.i.i.i.i if.end22.i.i.i.i: ; preds = %if.end16.i.i.i.i %incdec.ptr.i14.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.045.i.i.i.i, i64 32 @@ -2322,16 +2322,16 @@ _ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5 %incdec.ptr.i.i.i.i.i60.le = getelementptr inbounds i8, ptr %__first.sroa.0.045.i.i.i.i, i64 8 br label %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i -_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit223: ; preds = %if.end10.i.i.i.i +_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit224: ; preds = %if.end10.i.i.i.i %incdec.ptr.i10.i.i.i.i.le = getelementptr inbounds i8, ptr %__first.sroa.0.045.i.i.i.i, i64 16 br label %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i -_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit225: ; preds = %if.end16.i.i.i.i +_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit226: ; preds = %if.end16.i.i.i.i %incdec.ptr.i12.i.i.i.i.le = getelementptr inbounds i8, ptr %__first.sroa.0.045.i.i.i.i, i64 24 br label %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i -_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i: ; preds = %for.body.i.i.i.i, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit223, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit225, %sw.bb38.i.i.i.i, %sw.bb31.i.i.i.i, %sw.bb.i.i.i.i - %retval.sroa.0.0.in.sroa.speculated.i.i.i.i = phi ptr [ %__first.sroa.0.0.lcssa.i.i.i.i, %sw.bb.i.i.i.i ], [ %__first.sroa.0.1.i.i.i.i, %sw.bb31.i.i.i.i ], [ %spec.select.i.i.i.i, %sw.bb38.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i60.le, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit ], [ %incdec.ptr.i10.i.i.i.i.le, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit223 ], [ %incdec.ptr.i12.i.i.i.i.le, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit225 ], [ %__first.sroa.0.045.i.i.i.i, %for.body.i.i.i.i ] +_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i: ; preds = %for.body.i.i.i.i, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit224, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit226, %sw.bb38.i.i.i.i, %sw.bb31.i.i.i.i, %sw.bb.i.i.i.i + %retval.sroa.0.0.in.sroa.speculated.i.i.i.i = phi ptr [ %__first.sroa.0.0.lcssa.i.i.i.i, %sw.bb.i.i.i.i ], [ %__first.sroa.0.1.i.i.i.i, %sw.bb31.i.i.i.i ], [ %spec.select.i.i.i.i, %sw.bb38.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i60.le, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit ], [ %incdec.ptr.i10.i.i.i.i.le, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit224 ], [ %incdec.ptr.i12.i.i.i.i.le, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit226 ], [ %__first.sroa.0.045.i.i.i.i, %for.body.i.i.i.i ] %cmp.i.i.i58 = icmp eq ptr %retval.sroa.0.0.in.sroa.speculated.i.i.i.i, %39 %__first.sroa.0.024.i.i = getelementptr inbounds i8, ptr %retval.sroa.0.0.in.sroa.speculated.i.i.i.i, i64 8 %cmp.i1.not25.i.i = icmp eq ptr %__first.sroa.0.024.i.i, %39 @@ -2357,11 +2357,11 @@ for.inc.i.i: ; preds = %if.then15.i.i, %for br i1 %cmp.i1.not.i.i, label %_ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit.loopexit, label %for.body.i.i, !llvm.loop !68 _ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit.loopexit: ; preds = %for.inc.i.i - %.pre204 = load ptr, ptr %_M_finish.i24, align 8 + %.pre205 = load ptr, ptr %_M_finish.i24, align 8 br label %_ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit _ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit: ; preds = %_ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit.loopexit, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i - %50 = phi ptr [ %39, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i ], [ %.pre204, %_ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit.loopexit ] + %50 = phi ptr [ %39, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i ], [ %.pre205, %_ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit.loopexit ] %retval.sroa.0.0.i.i = phi ptr [ %retval.sroa.0.0.in.sroa.speculated.i.i.i.i, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i ], [ %retval.sroa.0.2.i.i, %_ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit.loopexit ] %cmp.i.not.i.i = icmp eq ptr %retval.sroa.0.0.i.i, %50 br i1 %cmp.i.not.i.i, label %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit, label %if.then.i.i.i70 diff --git a/bench/hermes/optimized/HadesGC.cpp.ll b/bench/hermes/optimized/HadesGC.cpp.ll index 95a5b64003f..9ed93bbf111 100644 --- a/bench/hermes/optimized/HadesGC.cpp.ll +++ b/bench/hermes/optimized/HadesGC.cpp.ll @@ -15996,19 +15996,19 @@ if.then32: ; preds = %for.end if.then.i: ; preds = %if.then32 %19 = load ptr, ptr %this, align 8 + %add.ptr.i98.idx = shl nuw nsw i64 %conv.i53, 3 %add.ptr.idx = shl nuw nsw i64 %spec.select, 3 %add.ptr = getelementptr inbounds i8, ptr %19, i64 %add.ptr.idx %20 = load ptr, ptr %RHS, align 8 %add.ptr.i92 = getelementptr inbounds ptr, ptr %20, i64 %conv.i55 - %21 = sub nsw i64 %conv.i53, %spec.select - %gepdiff97 = shl nsw i64 %21, 3 + %gepdiff97 = sub nsw i64 %add.ptr.i98.idx, %add.ptr.idx tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i92, ptr align 8 %add.ptr, i64 %gepdiff97, i1 false) %.pre104 = load i32, ptr %Size.i, align 8 br label %_ZN4llvh23SmallVectorTemplateBaseIPN6hermes2vm6GCCellELb1EE18uninitialized_copyIS4_S4_EEvPT_S8_PT0_PNSt9enable_ifIXsr3std7is_sameINSt12remove_constIS7_E4typeES9_EE5valueEvE4typeE.exit _ZN4llvh23SmallVectorTemplateBaseIPN6hermes2vm6GCCellELb1EE18uninitialized_copyIS4_S4_EEvPT_S8_PT0_PNSt9enable_ifIXsr3std7is_sameINSt12remove_constIS7_E4typeES9_EE5valueEvE4typeE.exit: ; preds = %if.then32, %if.then.i - %22 = phi i32 [ %17, %if.then32 ], [ %.pre104, %if.then.i ] - %add = add i32 %sub, %22 + %21 = phi i32 [ %17, %if.then32 ], [ %.pre104, %if.then.i ] + %add = add i32 %sub, %21 store i32 %add, ptr %Size.i, align 8 store i32 %12, ptr %Size.i39, align 8 br label %if.end60 @@ -16023,20 +16023,20 @@ if.then45: ; preds = %if.else br i1 %cmp.not.i83, label %_ZN4llvh23SmallVectorTemplateBaseIPN6hermes2vm6GCCellELb1EE18uninitialized_copyIS4_S4_EEvPT_S8_PT0_PNSt9enable_ifIXsr3std7is_sameINSt12remove_constIS7_E4typeES9_EE5valueEvE4typeE.exit88, label %if.then.i84 if.then.i84: ; preds = %if.then45 - %23 = load ptr, ptr %RHS, align 8 + %22 = load ptr, ptr %RHS, align 8 + %add.ptr.i80.idx = shl nuw nsw i64 %conv.i55, 3 %add.ptr51.idx = shl nuw nsw i64 %spec.select, 3 - %add.ptr51 = getelementptr inbounds i8, ptr %23, i64 %add.ptr51.idx - %24 = load ptr, ptr %this, align 8 - %add.ptr.i74 = getelementptr inbounds ptr, ptr %24, i64 %conv.i53 - %25 = sub nsw i64 %conv.i55, %spec.select - %gepdiff = shl nsw i64 %25, 3 + %add.ptr51 = getelementptr inbounds i8, ptr %22, i64 %add.ptr51.idx + %23 = load ptr, ptr %this, align 8 + %add.ptr.i74 = getelementptr inbounds ptr, ptr %23, i64 %conv.i53 + %gepdiff = sub nsw i64 %add.ptr.i80.idx, %add.ptr51.idx tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i74, ptr align 8 %add.ptr51, i64 %gepdiff, i1 false) %.pre103 = load i32, ptr %Size.i39, align 8 br label %_ZN4llvh23SmallVectorTemplateBaseIPN6hermes2vm6GCCellELb1EE18uninitialized_copyIS4_S4_EEvPT_S8_PT0_PNSt9enable_ifIXsr3std7is_sameINSt12remove_constIS7_E4typeES9_EE5valueEvE4typeE.exit88 _ZN4llvh23SmallVectorTemplateBaseIPN6hermes2vm6GCCellELb1EE18uninitialized_copyIS4_S4_EEvPT_S8_PT0_PNSt9enable_ifIXsr3std7is_sameINSt12remove_constIS7_E4typeES9_EE5valueEvE4typeE.exit88: ; preds = %if.then45, %if.then.i84 - %26 = phi i32 [ %18, %if.then45 ], [ %.pre103, %if.then.i84 ] - %add55 = add i32 %sub49, %26 + %24 = phi i32 [ %18, %if.then45 ], [ %.pre103, %if.then.i84 ] + %add55 = add i32 %sub49, %24 store i32 %add55, ptr %Size.i39, align 8 store i32 %12, ptr %Size.i, align 8 br label %if.end60 diff --git a/bench/hermes/optimized/ISel.cpp.ll b/bench/hermes/optimized/ISel.cpp.ll index dcb1e2cc603..462beb132cf 100644 --- a/bench/hermes/optimized/ISel.cpp.ll +++ b/bench/hermes/optimized/ISel.cpp.ll @@ -25883,12 +25883,12 @@ if.end37.i: ; preds = %if.then.i.i.i.i.i47 if.then.i.i.i11: ; preds = %if.end37.i %29 = load ptr, ptr %coveredBlockList.i, align 8 + %add.ptr.i.idx.i = shl nuw nsw i64 %conv.i51.i, 3 %add.ptr39.idx.i = shl nuw nsw i64 %CurSize.0.i, 3 %add.ptr39.i = getelementptr inbounds i8, ptr %29, i64 %add.ptr39.idx.i %30 = load ptr, ptr %coveredBlockList.i4, align 8 %add.ptr42.i = getelementptr inbounds ptr, ptr %30, i64 %CurSize.0.i - %31 = sub nsw i64 %conv.i51.i, %CurSize.0.i - %gepdiff.i = shl nsw i64 %31, 3 + %gepdiff.i = sub nsw i64 %add.ptr.i.idx.i, %add.ptr39.idx.i call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr42.i, ptr align 8 %add.ptr39.i, i64 %gepdiff.i, i1 false) br label %_ZN4llvh23SmallVectorTemplateBaseIPN6hermes10BasicBlockELb1EE18uninitialized_moveIPS3_S6_EEvT_S7_T0_.exit.i @@ -25902,15 +25902,15 @@ return.sink.split.i: ; preds = %_ZN4llvh23SmallVect br label %_ZN4llvh15SmallVectorImplIPN6hermes10BasicBlockEEaSEOS4_.exit _ZN4llvh15SmallVectorImplIPN6hermes10BasicBlockEEaSEOS4_.exit: ; preds = %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes9CatchInstENS2_17CatchCoverageInfoENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S5_EEEES4_S5_S7_SA_EixERKS4_.exit, %return.sink.split.i - %32 = phi ptr [ %.pre18, %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes9CatchInstENS2_17CatchCoverageInfoENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S5_EEEES4_S5_S7_SA_EixERKS4_.exit ], [ %.pre17, %return.sink.split.i ] - %33 = load i32, ptr %depth.i, align 8 + %31 = phi ptr [ %.pre18, %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes9CatchInstENS2_17CatchCoverageInfoENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S5_EEEES4_S5_S7_SA_EixERKS4_.exit ], [ %.pre17, %return.sink.split.i ] + %32 = load i32, ptr %depth.i, align 8 %depth4.i = getelementptr inbounds i8, ptr %retval.0.i.i, i64 96 - store i32 %33, ptr %depth4.i, align 8 - %cmp.i.i.i.i7 = icmp eq ptr %32, %add.ptr.i.i.i.i.i.i + store i32 %32, ptr %depth4.i, align 8 + %cmp.i.i.i.i7 = icmp eq ptr %31, %add.ptr.i.i.i.i.i.i br i1 %cmp.i.i.i.i7, label %_ZN6hermes17CatchCoverageInfoD2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %_ZN4llvh15SmallVectorImplIPN6hermes10BasicBlockEEaSEOS4_.exit - call void @free(ptr noundef %32) #19 + call void @free(ptr noundef %31) #19 br label %_ZN6hermes17CatchCoverageInfoD2Ev.exit _ZN6hermes17CatchCoverageInfoD2Ev.exit: ; preds = %_ZN4llvh15SmallVectorImplIPN6hermes10BasicBlockEEaSEOS4_.exit, %if.then.i.i.i @@ -51723,12 +51723,12 @@ if.end37: ; preds = %if.then.i.i.i.i.i47 if.then.i.i: ; preds = %if.end37 %11 = load ptr, ptr %RHS, align 8 + %add.ptr.i.idx = shl nuw nsw i64 %conv.i51, 3 %add.ptr39.idx = shl nuw nsw i64 %CurSize.0, 3 %add.ptr39 = getelementptr inbounds i8, ptr %11, i64 %add.ptr39.idx %12 = load ptr, ptr %this, align 8 %add.ptr42 = getelementptr inbounds ptr, ptr %12, i64 %CurSize.0 - %13 = sub nsw i64 %conv.i51, %CurSize.0 - %gepdiff = shl nsw i64 %13, 3 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr39.idx tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr42, ptr align 8 %add.ptr39, i64 %gepdiff, i1 false) br label %_ZN4llvh23SmallVectorTemplateBaseIPN6hermes10BasicBlockELb1EE18uninitialized_moveIPS3_S6_EEvT_S7_T0_.exit diff --git a/bench/hermes/optimized/JSRegExp.cpp.ll b/bench/hermes/optimized/JSRegExp.cpp.ll index ddffd843dff..86d8e2731c1 100644 --- a/bench/hermes/optimized/JSRegExp.cpp.ll +++ b/bench/hermes/optimized/JSRegExp.cpp.ll @@ -1777,13 +1777,13 @@ if.end37.i271: ; preds = %if.then.i.i.i.i.i47 if.then.i.i.i275: ; preds = %if.end37.i271 %24 = load ptr, ptr %ref.tmp15, align 8 - %add.ptr39.idx.i276 = mul nuw nsw i64 %CurSize.0.i272, 12 - %add.ptr39.i277 = getelementptr inbounds i8, ptr %24, i64 %add.ptr39.idx.i276 + %add.ptr.i.idx.i276 = mul nuw nsw i64 %conv.i51.i273, 12 + %add.ptr39.idx.i277 = mul nuw nsw i64 %CurSize.0.i272, 12 + %add.ptr39.i278 = getelementptr inbounds i8, ptr %24, i64 %add.ptr39.idx.i277 %25 = load ptr, ptr %matchResult, align 8 - %add.ptr42.i278 = getelementptr inbounds %"class.hermes::OptValue.273", ptr %25, i64 %CurSize.0.i272 - %add.ptr.i.idx57.i279 = sub nsw i64 %conv.i51.i273, %CurSize.0.i272 - %gepdiff.i280 = mul nsw i64 %add.ptr.i.idx57.i279, 12 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr42.i278, ptr align 4 %add.ptr39.i277, i64 %gepdiff.i280, i1 false) + %add.ptr42.i279 = getelementptr inbounds %"class.hermes::OptValue.273", ptr %25, i64 %CurSize.0.i272 + %gepdiff.i280 = sub nsw i64 %add.ptr.i.idx.i276, %add.ptr39.idx.i277 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr42.i279, ptr align 4 %add.ptr39.i278, i64 %gepdiff.i280, i1 false) br label %_ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.i281 _ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.i281: ; preds = %if.then.i.i.i275, %if.end37.i271 @@ -1835,9 +1835,9 @@ if.then.i.i.i227: ; preds = %if.end24.i216, %if. %29 = phi i32 [ %.pre440, %if.end37.i223 ], [ %26, %if.end24.i216 ] %conv.i51.i225 = zext i32 %29 to i64 %30 = load ptr, ptr %ref.tmp15, align 8 + %add.ptr.i.idx.i228 = mul nuw nsw i64 %conv.i51.i225, 12 %31 = load ptr, ptr %matchResult, align 8 - %gepdiff.i232 = mul nuw nsw i64 %conv.i51.i225, 12 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %31, ptr align 4 %30, i64 %gepdiff.i232, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %31, ptr align 4 %30, i64 %add.ptr.i.idx.i228, i1 false) br label %_ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.i233 _ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.i233: ; preds = %if.then.i.i.i227, %if.end37.i223 @@ -2021,13 +2021,13 @@ if.end37.i367: ; preds = %if.then.i.i.i.i.i47 if.then.i.i.i371: ; preds = %if.end37.i367 %54 = load ptr, ptr %ref.tmp25, align 8 - %add.ptr39.idx.i372 = mul nuw nsw i64 %CurSize.0.i368, 12 - %add.ptr39.i373 = getelementptr inbounds i8, ptr %54, i64 %add.ptr39.idx.i372 + %add.ptr.i.idx.i372 = mul nuw nsw i64 %conv.i51.i369, 12 + %add.ptr39.idx.i373 = mul nuw nsw i64 %CurSize.0.i368, 12 + %add.ptr39.i374 = getelementptr inbounds i8, ptr %54, i64 %add.ptr39.idx.i373 %55 = load ptr, ptr %matchResult, align 8 - %add.ptr42.i374 = getelementptr inbounds %"class.hermes::OptValue.273", ptr %55, i64 %CurSize.0.i368 - %add.ptr.i.idx57.i375 = sub nsw i64 %conv.i51.i369, %CurSize.0.i368 - %gepdiff.i376 = mul nsw i64 %add.ptr.i.idx57.i375, 12 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr42.i374, ptr align 4 %add.ptr39.i373, i64 %gepdiff.i376, i1 false) + %add.ptr42.i375 = getelementptr inbounds %"class.hermes::OptValue.273", ptr %55, i64 %CurSize.0.i368 + %gepdiff.i376 = sub nsw i64 %add.ptr.i.idx.i372, %add.ptr39.idx.i373 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr42.i375, ptr align 4 %add.ptr39.i374, i64 %gepdiff.i376, i1 false) br label %_ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.i377 _ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.i377: ; preds = %if.then.i.i.i371, %if.end37.i367 @@ -2079,9 +2079,9 @@ if.then.i.i.i323: ; preds = %if.end24.i312, %if. %59 = phi i32 [ %.pre, %if.end37.i319 ], [ %56, %if.end24.i312 ] %conv.i51.i321 = zext i32 %59 to i64 %60 = load ptr, ptr %ref.tmp25, align 8 + %add.ptr.i.idx.i324 = mul nuw nsw i64 %conv.i51.i321, 12 %61 = load ptr, ptr %matchResult, align 8 - %gepdiff.i328 = mul nuw nsw i64 %conv.i51.i321, 12 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %61, ptr align 4 %60, i64 %gepdiff.i328, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %61, ptr align 4 %60, i64 %add.ptr.i.idx.i324, i1 false) br label %_ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.i329 _ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.i329: ; preds = %if.then.i.i.i323, %if.end37.i319 @@ -2192,12 +2192,12 @@ if.end28.i.i: ; preds = %if.then.i.i.i.i.i31 if.then.i.i.i113: ; preds = %if.end28.i.i %74 = load ptr, ptr %matchResult, align 8 + %add.ptr.i65.idx.i.i = mul nuw nsw i64 %conv.i35.i.i, 12 %add.ptr30.idx.i.i = mul nuw nsw i64 %CurSize.0.i.i, 12 %add.ptr30.i.i = getelementptr inbounds i8, ptr %74, i64 %add.ptr30.idx.i.i %75 = load ptr, ptr %regExpLastMatch, align 8 %add.ptr33.i.i = getelementptr inbounds %"class.hermes::OptValue.273", ptr %75, i64 %CurSize.0.i.i - %add.ptr.i65.idx40.i.i = sub nsw i64 %conv.i35.i.i, %CurSize.0.i.i - %gepdiff.i.i = mul nsw i64 %add.ptr.i65.idx40.i.i, 12 + %gepdiff.i.i = sub nsw i64 %add.ptr.i65.idx.i.i, %add.ptr30.idx.i.i call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr33.i.i, ptr align 4 %add.ptr30.i.i, i64 %gepdiff.i.i, i1 false) br label %return.sink.split.i.i @@ -2257,9 +2257,9 @@ if.then.i.i.i419: ; preds = %if.end24.i408, %if. %80 = phi i32 [ %.pre442, %if.end37.i415 ], [ %77, %if.end24.i408 ] %conv.i51.i417 = zext i32 %80 to i64 %81 = load ptr, ptr %matchResult, align 8 + %add.ptr.i.idx.i420 = mul nuw nsw i64 %conv.i51.i417, 12 %82 = load ptr, ptr %agg.result, align 8 - %gepdiff.i424 = mul nuw nsw i64 %conv.i51.i417, 12 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %82, ptr align 4 %81, i64 %gepdiff.i424, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %82, ptr align 4 %81, i64 %add.ptr.i.idx.i420, i1 false) br label %_ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.i425 _ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.i425: ; preds = %if.then.i.i.i419, %if.end37.i415 @@ -2481,9 +2481,9 @@ if.then.i.i.i85: ; preds = %if.end24.i74, %if.e %17 = phi i32 [ %.pre97, %if.end37.i81 ], [ %15, %if.end24.i74 ] %.pre98.pre.pre101106 = phi ptr [ %.pre98.pre.pre101.pre, %if.end37.i81 ], [ %.pre99, %if.end24.i74 ] %conv.i51.i83 = zext i32 %17 to i64 + %add.ptr.i.idx.i86 = mul nuw nsw i64 %conv.i51.i83, 12 %18 = load ptr, ptr %agg.result, align 8 - %gepdiff.i90 = mul nuw nsw i64 %conv.i51.i83, 12 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %18, ptr align 4 %.pre98.pre.pre101106, i64 %gepdiff.i90, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %18, ptr align 4 %.pre98.pre.pre101106, i64 %add.ptr.i.idx.i86, i1 false) %.pre98.pre.pre = load ptr, ptr %match, align 8 br label %_ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.i91 @@ -2708,9 +2708,9 @@ if.then.i.i.i85: ; preds = %if.end24.i74, %if.e %17 = phi i32 [ %.pre97, %if.end37.i81 ], [ %15, %if.end24.i74 ] %.pre98.pre.pre101106 = phi ptr [ %.pre98.pre.pre101.pre, %if.end37.i81 ], [ %.pre99, %if.end24.i74 ] %conv.i51.i83 = zext i32 %17 to i64 + %add.ptr.i.idx.i86 = mul nuw nsw i64 %conv.i51.i83, 12 %18 = load ptr, ptr %agg.result, align 8 - %gepdiff.i90 = mul nuw nsw i64 %conv.i51.i83, 12 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %18, ptr align 4 %.pre98.pre.pre101106, i64 %gepdiff.i90, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %18, ptr align 4 %.pre98.pre.pre101106, i64 %add.ptr.i.idx.i86, i1 false) %.pre98.pre.pre = load ptr, ptr %match, align 8 br label %_ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.i91 @@ -3310,9 +3310,9 @@ if.end37.i: ; preds = %if.end24.i if.then.i.i.i229: ; preds = %if.end24.i, %if.end37.i %conv.i51.i267 = phi i64 [ %57, %if.end37.i ], [ 4, %if.end24.i ] %.pre247.pre248266 = phi ptr [ %.pre247.pre248.pre, %if.end37.i ], [ %add.ptr.i.i.i.i.i.i202, %if.end24.i ] + %add.ptr.i.idx.i = shl nuw nsw i64 %conv.i51.i267, 1 %58 = load ptr, ptr %result, align 8 - %gepdiff.i = shl nuw nsw i64 %conv.i51.i267, 1 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %58, ptr align 2 %.pre247.pre248266, i64 %gepdiff.i, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %58, ptr align 2 %.pre247.pre248266, i64 %add.ptr.i.idx.i, i1 false) %.pre247.pre = load ptr, ptr %ref.tmp, align 8 br label %_ZN4llvh15SmallVectorImplIDsEaSEOS1_.exit @@ -4445,10 +4445,10 @@ _ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit: br label %while.body while.body: ; preds = %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit - %stack.sroa.0.0192 = phi ptr [ %call5.i.i.i.i.i.i, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit ], [ %stack.sroa.0.1.lcssa, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit ] - %stack.sroa.9.0191 = phi ptr [ %incdec.ptr.i.i.i, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit ], [ %stack.sroa.9.1.lcssa, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit ] - %stack.sroa.26.0190 = phi ptr [ %incdec.ptr.i.i.i, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit ], [ %stack.sroa.26.1.lcssa, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit ] - %add.ptr.i.i = getelementptr inbounds i8, ptr %stack.sroa.9.0191, i64 -8 + %stack.sroa.0.0193 = phi ptr [ %call5.i.i.i.i.i.i, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit ], [ %stack.sroa.0.1.lcssa, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit ] + %stack.sroa.9.0192 = phi ptr [ %incdec.ptr.i.i.i, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit ], [ %stack.sroa.9.1.lcssa, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit ] + %stack.sroa.26.0191 = phi ptr [ %incdec.ptr.i.i.i, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE9push_backEOS6_.exit ], [ %stack.sroa.26.1.lcssa, %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit ] + %add.ptr.i.i = getelementptr inbounds i8, ptr %stack.sroa.9.0192, i64 -8 %1 = load ptr, ptr %add.ptr.i.i, align 8 %_M_finish.i24 = getelementptr inbounds i8, ptr %1, i64 8 %2 = load ptr, ptr %_M_finish.i24, align 8 @@ -4457,16 +4457,16 @@ while.body: ; preds = %_ZNSt6vectorIPS_IPN %sub.ptr.rhs.cast.i = ptrtoint ptr %3 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 - %cmp174.not = icmp eq ptr %2, %3 - br i1 %cmp174.not, label %for.end, label %for.body + %cmp175.not = icmp eq ptr %2, %3 + br i1 %cmp175.not, label %for.end, label %for.body for.body: ; preds = %while.body, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit - %idx.0178 = phi i64 [ %inc44, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ 0, %while.body ] - %stack.sroa.0.1177 = phi ptr [ %stack.sroa.0.3, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ %stack.sroa.0.0192, %while.body ] - %stack.sroa.9.1176 = phi ptr [ %stack.sroa.9.3, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ %add.ptr.i.i, %while.body ] - %stack.sroa.26.1175 = phi ptr [ %stack.sroa.26.3, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ %stack.sroa.26.0190, %while.body ] + %idx.0179 = phi i64 [ %inc44, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ 0, %while.body ] + %stack.sroa.0.1178 = phi ptr [ %stack.sroa.0.3, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ %stack.sroa.0.0193, %while.body ] + %stack.sroa.9.1177 = phi ptr [ %stack.sroa.9.3, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ %add.ptr.i.i, %while.body ] + %stack.sroa.26.1176 = phi ptr [ %stack.sroa.26.3, %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit ], [ %stack.sroa.26.0191, %while.body ] %4 = load ptr, ptr %1, align 8 - %add.ptr.i25 = getelementptr inbounds ptr, ptr %4, i64 %idx.0178 + %add.ptr.i25 = getelementptr inbounds ptr, ptr %4, i64 %idx.0179 %5 = load ptr, ptr %add.ptr.i25, align 8 %vtable = load ptr, ptr %5, align 8 %vfn = getelementptr inbounds i8, ptr %vtable, i64 48 @@ -4475,22 +4475,22 @@ for.body: ; preds = %while.body, %_ZN4ll %7 = load ptr, ptr %childNodes, align 8 %8 = load i32, ptr %Size.i, align 8 %conv.i = zext i32 %8 to i64 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %stack.sroa.9.1176 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %stack.sroa.0.1177 to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %stack.sroa.9.1177 to i64 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %stack.sroa.0.1178 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i %cmp.not.i73 = icmp eq i32 %8, 0 br i1 %cmp.not.i73, label %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit, label %if.then.i74 if.then.i74: ; preds = %for.body %add.ptr.i.idx = shl nuw nsw i64 %conv.i, 3 - %sub.ptr.lhs.cast.i78 = ptrtoint ptr %stack.sroa.26.1175 to i64 + %sub.ptr.lhs.cast.i78 = ptrtoint ptr %stack.sroa.26.1176 to i64 %sub.ptr.sub.i80 = sub i64 %sub.ptr.lhs.cast.i78, %sub.ptr.lhs.cast.i.i %cmp3.not.i = icmp ult i64 %sub.ptr.sub.i80, %add.ptr.i.idx br i1 %cmp3.not.i, label %if.else50.i, label %if.then.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i74 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %stack.sroa.9.1176, ptr align 8 %7, i64 %add.ptr.i.idx, i1 false) - %add.ptr36.i = getelementptr inbounds ptr, ptr %stack.sroa.9.1176, i64 %conv.i + call void @llvm.memmove.p0.p0.i64(ptr align 8 %stack.sroa.9.1177, ptr align 8 %7, i64 %add.ptr.i.idx, i1 false) + %add.ptr36.i = getelementptr inbounds ptr, ptr %stack.sroa.9.1177, i64 %conv.i br label %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit if.else50.i: ; preds = %if.then.i74 @@ -4519,22 +4519,22 @@ cond.true.i.i: ; preds = %_ZNKSt6vectorIPS_IP _ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE11_M_allocateEm.exit.i: ; preds = %cond.true.i.i, %_ZNKSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE12_M_check_lenEmPKc.exit.i %cond.i55.i = phi ptr [ %call5.i.i.i.i, %cond.true.i.i ], [ null, %_ZNKSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE12_M_check_lenEmPKc.exit.i ] - %tobool.not.i.i.i.i.i.i.i.i.i59.i = icmp eq ptr %stack.sroa.9.1176, %stack.sroa.0.1177 + %tobool.not.i.i.i.i.i.i.i.i.i59.i = icmp eq ptr %stack.sroa.9.1177, %stack.sroa.0.1178 br i1 %tobool.not.i.i.i.i.i.i.i.i.i59.i, label %_ZSt22__uninitialized_copy_aIPPSt6vectorIPN6hermes5regex4NodeESaIS4_EES8_S7_ET0_T_SA_S9_RSaIT1_E.exit68.i, label %if.then.i.i.i.i.i.i.i.i.i60.i if.then.i.i.i.i.i.i.i.i.i60.i: ; preds = %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE11_M_allocateEm.exit.i - call void @llvm.memmove.p0.p0.i64(ptr align 8 %cond.i55.i, ptr align 8 %stack.sroa.0.1177, i64 %sub.ptr.sub.i.i, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 8 %cond.i55.i, ptr align 8 %stack.sroa.0.1178, i64 %sub.ptr.sub.i.i, i1 false) br label %_ZSt22__uninitialized_copy_aIPPSt6vectorIPN6hermes5regex4NodeESaIS4_EES8_S7_ET0_T_SA_S9_RSaIT1_E.exit68.i _ZSt22__uninitialized_copy_aIPPSt6vectorIPN6hermes5regex4NodeESaIS4_EES8_S7_ET0_T_SA_S9_RSaIT1_E.exit68.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i60.i, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE11_M_allocateEm.exit.i %add.ptr.i.i.i.i.i.i.i.i.i61.i = getelementptr inbounds i8, ptr %cond.i55.i, i64 %sub.ptr.sub.i.i call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i.i.i.i61.i, ptr align 8 %7, i64 %add.ptr.i.idx, i1 false) %add.ptr.i.i.i.i.i.i.i.i67.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i.i61.i, i64 %add.ptr.i.idx - %tobool.not.i.i91 = icmp eq ptr %stack.sroa.0.1177, null + %tobool.not.i.i91 = icmp eq ptr %stack.sroa.0.1178, null br i1 %tobool.not.i.i91, label %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i, label %if.then.i76.i if.then.i76.i: ; preds = %_ZSt22__uninitialized_copy_aIPPSt6vectorIPN6hermes5regex4NodeESaIS4_EES8_S7_ET0_T_SA_S9_RSaIT1_E.exit68.i - call void @_ZdlPv(ptr noundef nonnull %stack.sroa.0.1177) #21 + call void @_ZdlPv(ptr noundef nonnull %stack.sroa.0.1178) #21 br label %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i _ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i: ; preds = %if.then.i76.i, %_ZSt22__uninitialized_copy_aIPPSt6vectorIPN6hermes5regex4NodeESaIS4_EES8_S7_ET0_T_SA_S9_RSaIT1_E.exit68.i @@ -4542,19 +4542,19 @@ _ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_dealloc br label %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit _ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit: ; preds = %if.then.i.i.i.i.i.i.i.i.i, %for.body, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i - %stack.sroa.26.3 = phi ptr [ %stack.sroa.26.1175, %for.body ], [ %add.ptr76.i, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i ], [ %stack.sroa.26.1175, %if.then.i.i.i.i.i.i.i.i.i ] - %stack.sroa.9.3 = phi ptr [ %stack.sroa.9.1176, %for.body ], [ %add.ptr.i.i.i.i.i.i.i.i67.i, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i ], [ %add.ptr36.i, %if.then.i.i.i.i.i.i.i.i.i ] - %stack.sroa.0.3 = phi ptr [ %stack.sroa.0.1177, %for.body ], [ %cond.i55.i, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i ], [ %stack.sroa.0.1177, %if.then.i.i.i.i.i.i.i.i.i ] + %stack.sroa.26.3 = phi ptr [ %stack.sroa.26.1176, %for.body ], [ %add.ptr76.i, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i ], [ %stack.sroa.26.1176, %if.then.i.i.i.i.i.i.i.i.i ] + %stack.sroa.9.3 = phi ptr [ %stack.sroa.9.1177, %for.body ], [ %add.ptr.i.i.i.i.i.i.i.i67.i, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i ], [ %add.ptr36.i, %if.then.i.i.i.i.i.i.i.i.i ] + %stack.sroa.0.3 = phi ptr [ %stack.sroa.0.1178, %for.body ], [ %cond.i55.i, %_ZNSt12_Vector_baseIPSt6vectorIPN6hermes5regex4NodeESaIS4_EESaIS7_EE13_M_deallocateEPS7_m.exit.i ], [ %stack.sroa.0.1178, %if.then.i.i.i.i.i.i.i.i.i ] store ptr %add.ptr.i.i.i.i.i, ptr %chars, align 8 store i32 0, ptr %Size.i.i.i.i.i, align 8 store i32 5, ptr %Capacity2.i.i.i.i.i, align 4 - %cmp13171 = icmp ult i64 %idx.0178, %sub.ptr.div.i - br i1 %cmp13171, label %land.rhs, label %while.end + %cmp13172 = icmp ult i64 %idx.0179, %sub.ptr.div.i + br i1 %cmp13172, label %land.rhs, label %while.end land.rhs: ; preds = %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit, %while.body18 - %idx.1172 = phi i64 [ %inc, %while.body18 ], [ %idx.0178, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit ] + %idx.1173 = phi i64 [ %inc, %while.body18 ], [ %idx.0179, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit ] %10 = load ptr, ptr %1, align 8 - %add.ptr.i28 = getelementptr inbounds ptr, ptr %10, i64 %idx.1172 + %add.ptr.i28 = getelementptr inbounds ptr, ptr %10, i64 %idx.1173 %11 = load ptr, ptr %add.ptr.i28, align 8 %vtable15 = load ptr, ptr %11, align 8 %vfn16 = getelementptr inbounds i8, ptr %vtable15, i64 24 @@ -4563,13 +4563,13 @@ land.rhs: ; preds = %_ZNSt6vectorIPS_IPN br i1 %call17, label %while.body18, label %while.end while.body18: ; preds = %land.rhs - %inc = add i64 %idx.1172, 1 + %inc = add i64 %idx.1173, 1 %exitcond.not = icmp eq i64 %inc, %sub.ptr.div.i br i1 %exitcond.not, label %while.end, label %land.rhs, !llvm.loop !65 while.end: ; preds = %land.rhs, %while.body18, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit - %idx.1.lcssa = phi i64 [ %idx.0178, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit ], [ %sub.ptr.div.i, %while.body18 ], [ %idx.1172, %land.rhs ] - %sub = sub i64 %idx.1.lcssa, %idx.0178 + %idx.1.lcssa = phi i64 [ %idx.0179, %_ZNSt6vectorIPS_IPN6hermes5regex4NodeESaIS3_EESaIS6_EE15_M_range_insertIPS6_EEvN9__gnu_cxx17__normal_iteratorISA_S8_EET_SE_St20forward_iterator_tag.exit ], [ %sub.ptr.div.i, %while.body18 ], [ %idx.1173, %land.rhs ] + %sub = sub i64 %idx.1.lcssa, %idx.0179 %cmp19 = icmp ugt i64 %sub, 1 br i1 %cmp19, label %if.then, label %if.end @@ -4584,13 +4584,13 @@ if.then: ; preds = %while.end _ZN4llvh11SmallVectorIjLj5EEC2EOS1_.exit.thread: ; preds = %if.then store ptr getelementptr inbounds (i8, ptr @_ZTVN6hermes5regex13MatchCharNodeE, i64 16), ptr %call21, align 8 - %chars_.i210 = getelementptr inbounds i8, ptr %call21, i64 8 - %add.ptr.i.i.i.i.i.i32211 = getelementptr inbounds i8, ptr %call21, i64 24 - store ptr %add.ptr.i.i.i.i.i.i32211, ptr %chars_.i210, align 8 - %Size.i.i.i.i.i.i212 = getelementptr inbounds i8, ptr %call21, i64 16 - store i32 0, ptr %Size.i.i.i.i.i.i212, align 8 - %Capacity2.i.i.i.i.i.i213 = getelementptr inbounds i8, ptr %call21, i64 20 - store i32 5, ptr %Capacity2.i.i.i.i.i.i213, align 4 + %chars_.i211 = getelementptr inbounds i8, ptr %call21, i64 8 + %add.ptr.i.i.i.i.i.i32212 = getelementptr inbounds i8, ptr %call21, i64 24 + store ptr %add.ptr.i.i.i.i.i.i32212, ptr %chars_.i211, align 8 + %Size.i.i.i.i.i.i213 = getelementptr inbounds i8, ptr %call21, i64 16 + store i32 0, ptr %Size.i.i.i.i.i.i213, align 8 + %Capacity2.i.i.i.i.i.i214 = getelementptr inbounds i8, ptr %call21, i64 20 + store i32 5, ptr %Capacity2.i.i.i.i.i.i214, align 4 br label %_ZN6hermes5regex13MatchCharNodeC2EN4llvh11SmallVectorIjLj5EEENS0_11SyntaxFlagsE.exit if.then.i: ; preds = %if.then @@ -4622,9 +4622,9 @@ if.then.i.i.i101: ; preds = %if.end24.i, %if.end %16 = phi i32 [ %.pre, %if.end37.i ], [ %13, %if.end24.i ] %conv.i51.i = zext i32 %16 to i64 %17 = load ptr, ptr %chars, align 8 + %add.ptr.i.idx.i = shl nuw nsw i64 %conv.i51.i, 2 %18 = load ptr, ptr %agg.tmp22, align 8 - %gepdiff.i = shl nuw nsw i64 %conv.i51.i, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %18, ptr align 4 %17, i64 %gepdiff.i, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %18, ptr align 4 %17, i64 %add.ptr.i.idx.i, i1 false) br label %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i _ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i: ; preds = %if.then.i.i.i101, %if.end37.i @@ -4652,7 +4652,7 @@ if.end8.i111: ; preds = %if.then.i.i33 store i32 %20, ptr %Capacity2.i.i.i.i.i.i, align 4 store ptr %add.ptr.i.i.i.i.i29, ptr %agg.tmp22, align 8 store i32 0, ptr %Capacity2.i.i.i.i.i31, align 4 - br label %_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit146 + br label %_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit147 if.end24.i127: ; preds = %if.then.i.i33 %conv.i30.i118 = zext i32 %13 to i64 @@ -4661,28 +4661,28 @@ if.end24.i127: ; preds = %if.then.i.i33 if.end37.i134: ; preds = %if.end24.i127 call void @_ZN4llvh15SmallVectorBase8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %chars_.i, ptr noundef nonnull %add.ptr.i.i.i.i.i.i32, i64 noundef %conv.i30.i118, i64 noundef 4) #19 - %.pre200 = load i32, ptr %Size.i.i.i.i.i30, align 8 - %.pre208 = zext i32 %.pre200 to i64 - %cmp.not.i.i.i137 = icmp eq i32 %.pre200, 0 - br i1 %cmp.not.i.i.i137, label %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i143, label %if.then.i.i.i138 + %.pre201 = load i32, ptr %Size.i.i.i.i.i30, align 8 + %.pre209 = zext i32 %.pre201 to i64 + %cmp.not.i.i.i137 = icmp eq i32 %.pre201, 0 + br i1 %cmp.not.i.i.i137, label %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i144, label %if.then.i.i.i138 if.then.i.i.i138: ; preds = %if.end24.i127, %if.end37.i134 - %conv.i51.i136.pre-phi217 = phi i64 [ %.pre208, %if.end37.i134 ], [ %conv.i30.i118, %if.end24.i127 ] + %conv.i51.i136.pre-phi218 = phi i64 [ %.pre209, %if.end37.i134 ], [ %conv.i30.i118, %if.end24.i127 ] %21 = load ptr, ptr %agg.tmp22, align 8 + %add.ptr.i.idx.i139 = shl nuw nsw i64 %conv.i51.i136.pre-phi218, 2 %22 = load ptr, ptr %chars_.i, align 8 - %gepdiff.i142 = shl nuw nsw i64 %conv.i51.i136.pre-phi217, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %22, ptr align 4 %21, i64 %gepdiff.i142, i1 false) - br label %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i143 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %22, ptr align 4 %21, i64 %add.ptr.i.idx.i139, i1 false) + br label %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i144 -_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i143: ; preds = %if.then.i.i.i138, %if.end37.i134 +_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i144: ; preds = %if.then.i.i.i138, %if.end37.i134 store i32 %13, ptr %Size.i.i.i.i.i.i, align 8 - br label %_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit146 + br label %_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit147 -_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit146: ; preds = %if.end8.i111, %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i143 +_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit147: ; preds = %if.end8.i111, %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i144 store i32 0, ptr %Size.i.i.i.i.i30, align 8 br label %_ZN6hermes5regex13MatchCharNodeC2EN4llvh11SmallVectorIjLj5EEENS0_11SyntaxFlagsE.exit -_ZN6hermes5regex13MatchCharNodeC2EN4llvh11SmallVectorIjLj5EEENS0_11SyntaxFlagsE.exit: ; preds = %_ZN4llvh11SmallVectorIjLj5EEC2EOS1_.exit.thread, %_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit146 +_ZN6hermes5regex13MatchCharNodeC2EN4llvh11SmallVectorIjLj5EEENS0_11SyntaxFlagsE.exit: ; preds = %_ZN4llvh11SmallVectorIjLj5EEC2EOS1_.exit.thread, %_ZN4llvh15SmallVectorImplIjEaSEOS1_.exit147 %icase_.i = getelementptr inbounds i8, ptr %call21, i64 48 store i8 %bf.clear.i, ptr %icase_.i, align 8 %unicode_.i = getelementptr inbounds i8, ptr %call21, i64 49 @@ -4771,18 +4771,18 @@ _ZNSt6vectorISt10unique_ptrIN6hermes5regex4NodeESt14default_deleteIS3_EESaIS6_EE if.then.i.i41: ; preds = %_ZNSt6vectorISt10unique_ptrIN6hermes5regex4NodeESt14default_deleteIS3_EESaIS6_EE12emplace_backIJPNS2_13MatchCharNodeEEEERS6_DpOT_.exit call void @free(ptr noundef %30) #19 - %.pre201 = load ptr, ptr %_M_finish.i34, align 8 + %.pre202 = load ptr, ptr %_M_finish.i34, align 8 br label %_ZN4llvh11SmallVectorIjLj5EED2Ev.exit _ZN4llvh11SmallVectorIjLj5EED2Ev.exit: ; preds = %_ZNSt6vectorISt10unique_ptrIN6hermes5regex4NodeESt14default_deleteIS3_EESaIS6_EE12emplace_backIJPNS2_13MatchCharNodeEEEERS6_DpOT_.exit, %if.then.i.i41 - %31 = phi ptr [ %29, %_ZNSt6vectorISt10unique_ptrIN6hermes5regex4NodeESt14default_deleteIS3_EESaIS6_EE12emplace_backIJPNS2_13MatchCharNodeEEEERS6_DpOT_.exit ], [ %.pre201, %if.then.i.i41 ] + %31 = phi ptr [ %29, %_ZNSt6vectorISt10unique_ptrIN6hermes5regex4NodeESt14default_deleteIS3_EESaIS6_EE12emplace_backIJPNS2_13MatchCharNodeEEEERS6_DpOT_.exit ], [ %.pre202, %if.then.i.i41 ] %add.ptr.i.i43 = getelementptr inbounds i8, ptr %31, i64 -8 %32 = load ptr, ptr %add.ptr.i.i43, align 8 %33 = load ptr, ptr %1, align 8 - %add.ptr.i44 = getelementptr inbounds ptr, ptr %33, i64 %idx.0178 + %add.ptr.i44 = getelementptr inbounds ptr, ptr %33, i64 %idx.0179 store ptr %32, ptr %add.ptr.i44, align 8 %34 = load ptr, ptr %1, align 8 - %35 = getelementptr ptr, ptr %34, i64 %idx.0178 + %35 = getelementptr ptr, ptr %34, i64 %idx.0179 %add.ptr.i45 = getelementptr i8, ptr %35, i64 8 %add.ptr.i46 = getelementptr inbounds ptr, ptr %34, i64 %idx.1.lcssa %cmp.not3.i.i.i.i = icmp eq ptr %add.ptr.i45, %add.ptr.i46 @@ -4820,21 +4820,21 @@ _ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit: ; br i1 %cmp, label %for.body, label %for.end.loopexit, !llvm.loop !71 for.end.loopexit: ; preds = %_ZN4llvh11SmallVectorIPSt6vectorIPN6hermes5regex4NodeESaIS5_EELj1EED2Ev.exit - %.pre202 = load ptr, ptr %1, align 8 - %.pre203 = load ptr, ptr %_M_finish.i24, align 8 - %.pre205 = ptrtoint ptr %.pre203 to i64 - %.pre206 = ptrtoint ptr %.pre202 to i64 - %.pre207 = sub i64 %.pre205, %.pre206 + %.pre203 = load ptr, ptr %1, align 8 + %.pre204 = load ptr, ptr %_M_finish.i24, align 8 + %.pre206 = ptrtoint ptr %.pre204 to i64 + %.pre207 = ptrtoint ptr %.pre203 to i64 + %.pre208 = sub i64 %.pre206, %.pre207 br label %for.end for.end: ; preds = %for.end.loopexit, %while.body - %sub.ptr.sub.i.i.i.i.i57.pre-phi = phi i64 [ %.pre207, %for.end.loopexit ], [ %sub.ptr.sub.i, %while.body ] - %sub.ptr.lhs.cast.i.i.i.i.i55.pre-phi = phi i64 [ %.pre205, %for.end.loopexit ], [ %sub.ptr.lhs.cast.i, %while.body ] - %39 = phi ptr [ %.pre203, %for.end.loopexit ], [ %2, %while.body ] - %40 = phi ptr [ %.pre202, %for.end.loopexit ], [ %3, %while.body ] - %stack.sroa.26.1.lcssa = phi ptr [ %stack.sroa.26.3, %for.end.loopexit ], [ %stack.sroa.26.0190, %while.body ] + %sub.ptr.sub.i.i.i.i.i57.pre-phi = phi i64 [ %.pre208, %for.end.loopexit ], [ %sub.ptr.sub.i, %while.body ] + %sub.ptr.lhs.cast.i.i.i.i.i55.pre-phi = phi i64 [ %.pre206, %for.end.loopexit ], [ %sub.ptr.lhs.cast.i, %while.body ] + %39 = phi ptr [ %.pre204, %for.end.loopexit ], [ %2, %while.body ] + %40 = phi ptr [ %.pre203, %for.end.loopexit ], [ %3, %while.body ] + %stack.sroa.26.1.lcssa = phi ptr [ %stack.sroa.26.3, %for.end.loopexit ], [ %stack.sroa.26.0191, %while.body ] %stack.sroa.9.1.lcssa = phi ptr [ %stack.sroa.9.3, %for.end.loopexit ], [ %add.ptr.i.i, %while.body ] - %stack.sroa.0.1.lcssa = phi ptr [ %stack.sroa.0.3, %for.end.loopexit ], [ %stack.sroa.0.0192, %while.body ] + %stack.sroa.0.1.lcssa = phi ptr [ %stack.sroa.0.3, %for.end.loopexit ], [ %stack.sroa.0.0193, %while.body ] %shr.i.i.i.i = ashr i64 %sub.ptr.sub.i.i.i.i.i57.pre-phi, 5 %cmp44.i.i.i.i = icmp sgt i64 %shr.i.i.i.i, 0 br i1 %cmp44.i.i.i.i, label %for.body.preheader.i.i.i.i59, label %for.end.i.i.i.i @@ -4861,13 +4861,13 @@ if.end10.i.i.i.i: ; preds = %if.end.i.i.i.i %incdec.ptr.i10.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.045.i.i.i.i, i64 16 %44 = load ptr, ptr %incdec.ptr.i10.i.i.i.i, align 8 %cmp.i11.i.i.i.i = icmp eq ptr %44, null - br i1 %cmp.i11.i.i.i.i, label %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit223, label %if.end16.i.i.i.i + br i1 %cmp.i11.i.i.i.i, label %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit224, label %if.end16.i.i.i.i if.end16.i.i.i.i: ; preds = %if.end10.i.i.i.i %incdec.ptr.i12.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.045.i.i.i.i, i64 24 %45 = load ptr, ptr %incdec.ptr.i12.i.i.i.i, align 8 %cmp.i13.i.i.i.i = icmp eq ptr %45, null - br i1 %cmp.i13.i.i.i.i, label %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit225, label %if.end22.i.i.i.i + br i1 %cmp.i13.i.i.i.i, label %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit226, label %if.end22.i.i.i.i if.end22.i.i.i.i: ; preds = %if.end16.i.i.i.i %incdec.ptr.i14.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.045.i.i.i.i, i64 32 @@ -4920,16 +4920,16 @@ _ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5 %incdec.ptr.i.i.i.i.i60.le = getelementptr inbounds i8, ptr %__first.sroa.0.045.i.i.i.i, i64 8 br label %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i -_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit223: ; preds = %if.end10.i.i.i.i +_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit224: ; preds = %if.end10.i.i.i.i %incdec.ptr.i10.i.i.i.i.le = getelementptr inbounds i8, ptr %__first.sroa.0.045.i.i.i.i, i64 16 br label %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i -_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit225: ; preds = %if.end16.i.i.i.i +_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit226: ; preds = %if.end16.i.i.i.i %incdec.ptr.i12.i.i.i.i.le = getelementptr inbounds i8, ptr %__first.sroa.0.045.i.i.i.i, i64 24 br label %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i -_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i: ; preds = %for.body.i.i.i.i, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit223, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit225, %sw.bb38.i.i.i.i, %sw.bb31.i.i.i.i, %sw.bb.i.i.i.i - %retval.sroa.0.0.in.sroa.speculated.i.i.i.i = phi ptr [ %__first.sroa.0.0.lcssa.i.i.i.i, %sw.bb.i.i.i.i ], [ %__first.sroa.0.1.i.i.i.i, %sw.bb31.i.i.i.i ], [ %spec.select.i.i.i.i, %sw.bb38.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i60.le, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit ], [ %incdec.ptr.i10.i.i.i.i.le, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit223 ], [ %incdec.ptr.i12.i.i.i.i.le, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit225 ], [ %__first.sroa.0.045.i.i.i.i, %for.body.i.i.i.i ] +_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i: ; preds = %for.body.i.i.i.i, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit224, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit226, %sw.bb38.i.i.i.i, %sw.bb31.i.i.i.i, %sw.bb.i.i.i.i + %retval.sroa.0.0.in.sroa.speculated.i.i.i.i = phi ptr [ %__first.sroa.0.0.lcssa.i.i.i.i, %sw.bb.i.i.i.i ], [ %__first.sroa.0.1.i.i.i.i, %sw.bb31.i.i.i.i ], [ %spec.select.i.i.i.i, %sw.bb38.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i60.le, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit ], [ %incdec.ptr.i10.i.i.i.i.le, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit224 ], [ %incdec.ptr.i12.i.i.i.i.le, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i.loopexit.split.loop.exit226 ], [ %__first.sroa.0.045.i.i.i.i, %for.body.i.i.i.i ] %cmp.i.i.i58 = icmp eq ptr %retval.sroa.0.0.in.sroa.speculated.i.i.i.i, %39 %__first.sroa.0.024.i.i = getelementptr inbounds i8, ptr %retval.sroa.0.0.in.sroa.speculated.i.i.i.i, i64 8 %cmp.i1.not25.i.i = icmp eq ptr %__first.sroa.0.024.i.i, %39 @@ -4955,11 +4955,11 @@ for.inc.i.i: ; preds = %if.then15.i.i, %for br i1 %cmp.i1.not.i.i, label %_ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit.loopexit, label %for.body.i.i, !llvm.loop !73 _ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit.loopexit: ; preds = %for.inc.i.i - %.pre204 = load ptr, ptr %_M_finish.i24, align 8 + %.pre205 = load ptr, ptr %_M_finish.i24, align 8 br label %_ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit _ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit: ; preds = %_ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit.loopexit, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i - %50 = phi ptr [ %39, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i ], [ %.pre204, %_ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit.loopexit ] + %50 = phi ptr [ %39, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i ], [ %.pre205, %_ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit.loopexit ] %retval.sroa.0.0.i.i = phi ptr [ %retval.sroa.0.0.in.sroa.speculated.i.i.i.i, %_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEENS0_5__ops16_Iter_equals_valIKDnEEET_SF_SF_T0_.exit.i.i ], [ %retval.sroa.0.2.i.i, %_ZSt6removeIN9__gnu_cxx17__normal_iteratorIPPN6hermes5regex4NodeESt6vectorIS5_SaIS5_EEEEDnET_SB_SB_RKT0_.exit.loopexit ] %cmp.i.not.i.i = icmp eq ptr %retval.sroa.0.0.i.i, %50 br i1 %cmp.i.not.i.i, label %_ZNSt6vectorIPN6hermes5regex4NodeESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EESA_.exit, label %if.then.i.i.i70 diff --git a/bench/hermes/optimized/JSTypedArray.cpp.ll b/bench/hermes/optimized/JSTypedArray.cpp.ll index 611b779e29b..c9e7fbd2d49 100644 --- a/bench/hermes/optimized/JSTypedArray.cpp.ll +++ b/bench/hermes/optimized/JSTypedArray.cpp.ll @@ -7304,6 +7304,7 @@ if.then17: ; preds = %if.end, %_ZNK6herme if.end19: ; preds = %_ZNK6hermes2vm16JSTypedArrayBase8attachedERNS0_7RuntimeE.exit %conv13 = zext i8 %3 to i32 + %mul14 = mul i32 %endIndex, %conv13 %mul = mul i32 %beginIndex, %conv13 %retval.sroa.0.0.copyload.i.i.i = load i64, ptr %call5.i, align 8 %and.i.i.i.i.i23 = and i64 %retval.sroa.0.0.copyload.i.i.i, 281474976710655 @@ -7311,7 +7312,7 @@ if.end19: ; preds = %_ZNK6hermes2vm16JST %offset_.i = getelementptr inbounds i8, ptr %2, i64 28 %10 = load i32, ptr %offset_.i, align 4 %add = add i32 %10, %mul - %sub25 = mul i32 %sub, %conv13 + %sub25 = sub i32 %mul14, %mul %buffer_.i37 = getelementptr inbounds i8, ptr %9, i64 20 %youngGen_.i.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 %11 = load ptr, ptr %youngGen_.i.i.i.i.i, align 8 diff --git a/bench/hermes/optimized/RegExp.cpp.ll b/bench/hermes/optimized/RegExp.cpp.ll index d5e8deda648..70c01da448b 100644 --- a/bench/hermes/optimized/RegExp.cpp.ll +++ b/bench/hermes/optimized/RegExp.cpp.ll @@ -1197,8 +1197,8 @@ if.then.i.i.i: ; preds = %if.end28.i.i.if.the %3 = phi i32 [ %.pre.i, %if.end28.i.i.if.then.i.i.i_crit_edge ], [ %1, %if.end13.i.i ] %conv.i35.i.i = zext i32 %3 to i64 %4 = load ptr, ptr %regExpLastMatch, align 8 - %gepdiff.i.i = mul nuw nsw i64 %conv.i35.i.i, 12 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2, ptr align 4 %4, i64 %gepdiff.i.i, i1 false) + %add.ptr.i65.idx.i.i = mul nuw nsw i64 %conv.i35.i.i, 12 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2, ptr align 4 %4, i64 %add.ptr.i65.idx.i.i, i1 false) br label %return.sink.split.i.i return.sink.split.i.i: ; preds = %if.then.i.i.i, %if.end28.i.i @@ -1310,8 +1310,8 @@ if.then.i.i.i: ; preds = %if.end28.i.i.if.the %2 = phi i32 [ %.pre.i, %if.end28.i.i.if.then.i.i.i_crit_edge ], [ %0, %if.end13.i.i ] %conv.i35.i.i = zext i32 %2 to i64 %3 = load ptr, ptr %regExpLastMatch, align 8 - %gepdiff.i.i = mul nuw nsw i64 %conv.i35.i.i, 12 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1, ptr align 4 %3, i64 %gepdiff.i.i, i1 false) + %add.ptr.i65.idx.i.i = mul nuw nsw i64 %conv.i35.i.i, 12 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1, ptr align 4 %3, i64 %add.ptr.i65.idx.i.i, i1 false) br label %land.lhs.true land.lhs.true: ; preds = %if.then.i.i.i, %if.end28.i.i @@ -1403,8 +1403,8 @@ if.then.i.i.i: ; preds = %if.end28.i.i.if.the %2 = phi i32 [ %.pre.i, %if.end28.i.i.if.then.i.i.i_crit_edge ], [ %0, %if.end13.i.i ] %conv.i35.i.i = zext i32 %2 to i64 %3 = load ptr, ptr %regExpLastMatch, align 8 - %gepdiff.i.i = mul nuw nsw i64 %conv.i35.i.i, 12 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1, ptr align 4 %3, i64 %gepdiff.i.i, i1 false) + %add.ptr.i65.idx.i.i = mul nuw nsw i64 %conv.i35.i.i, 12 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1, ptr align 4 %3, i64 %add.ptr.i65.idx.i.i, i1 false) br label %land.lhs.true land.lhs.true: ; preds = %if.then.i.i.i, %if.end28.i.i @@ -1537,8 +1537,8 @@ if.then.i.i.i: ; preds = %if.end28.i.i.if.the %2 = phi i32 [ %.pre.i, %if.end28.i.i.if.then.i.i.i_crit_edge ], [ %0, %if.end13.i.i ] %conv.i35.i.i = zext i32 %2 to i64 %3 = load ptr, ptr %regExpLastMatch, align 8 - %gepdiff.i.i = mul nuw nsw i64 %conv.i35.i.i, 12 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1, ptr align 4 %3, i64 %gepdiff.i.i, i1 false) + %add.ptr.i65.idx.i.i = mul nuw nsw i64 %conv.i35.i.i, 12 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1, ptr align 4 %3, i64 %add.ptr.i65.idx.i.i, i1 false) br label %land.lhs.true land.lhs.true: ; preds = %if.then.i.i.i, %if.end28.i.i @@ -1628,14 +1628,14 @@ _ZN4llvh11SmallVectorIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELj4EEC2ERKS6 %.pre = load ptr, ptr %match, align 8 %conv.i35.i.i18 = zext i32 %.pre.i to i64 %1 = load ptr, ptr %regExpLastMatch, align 8 - %gepdiff.i.i19 = mul nuw nsw i64 %conv.i35.i.i18, 12 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.pre, ptr align 4 %1, i64 %gepdiff.i.i19, i1 false) + %add.ptr.i65.idx.i.i19 = mul nuw nsw i64 %conv.i35.i.i18, 12 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.pre, ptr align 4 %1, i64 %add.ptr.i65.idx.i.i19, i1 false) br label %land.lhs.true.sink.split _ZN4llvh11SmallVectorIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELj4EEC2ERKS6_.exit: ; preds = %if.end13.i.i %2 = load ptr, ptr %regExpLastMatch, align 8 - %gepdiff.i.i = mul nuw nsw i64 %conv.i.i.i, 12 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %add.ptr.i.i.i.i.i, ptr align 4 %2, i64 %gepdiff.i.i, i1 false) + %add.ptr.i65.idx.i.i = mul nuw nsw i64 %conv.i.i.i, 12 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %add.ptr.i.i.i.i.i, ptr align 4 %2, i64 %add.ptr.i65.idx.i.i, i1 false) store i32 %0, ptr %Size.i.i.i.i.i, align 8 %cmp = icmp ugt i32 %0, 1 br i1 %cmp, label %land.lhs.true, label %if.end23 @@ -4204,8 +4204,8 @@ if.then.i.i.i: ; preds = %if.end28.i.i.if.the %46 = phi i32 [ %.pre.i, %if.end28.i.i.if.then.i.i.i_crit_edge ], [ %44, %if.end13.i.i ] %conv.i35.i.i = zext i32 %46 to i64 %47 = load ptr, ptr %matchResult160, align 8 - %gepdiff.i.i = mul nuw nsw i64 %conv.i35.i.i, 12 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %45, ptr align 4 %47, i64 %gepdiff.i.i, i1 false) + %add.ptr.i65.idx.i.i = mul nuw nsw i64 %conv.i35.i.i, 12 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %45, ptr align 4 %47, i64 %add.ptr.i65.idx.i.i, i1 false) br label %lor.lhs.false lor.lhs.false: ; preds = %if.then.i.i.i, %if.end28.i.i @@ -5178,13 +5178,13 @@ if.end37.i239: ; preds = %if.then.i.i.i.i.i47 if.then.i.i.i243: ; preds = %if.end37.i239 %32 = load ptr, ptr %ref.tmp46, align 8 - %add.ptr39.idx.i244 = mul nuw nsw i64 %CurSize.0.i240, 12 - %add.ptr39.i245 = getelementptr inbounds i8, ptr %32, i64 %add.ptr39.idx.i244 + %add.ptr.i.idx.i244 = mul nuw nsw i64 %conv.i51.i241, 12 + %add.ptr39.idx.i245 = mul nuw nsw i64 %CurSize.0.i240, 12 + %add.ptr39.i246 = getelementptr inbounds i8, ptr %32, i64 %add.ptr39.idx.i245 %33 = load ptr, ptr %matchResult, align 8 - %add.ptr42.i246 = getelementptr inbounds %"class.hermes::OptValue", ptr %33, i64 %CurSize.0.i240 - %add.ptr.i.idx57.i247 = sub nsw i64 %conv.i51.i241, %CurSize.0.i240 - %gepdiff.i248 = mul nsw i64 %add.ptr.i.idx57.i247, 12 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr42.i246, ptr align 4 %add.ptr39.i245, i64 %gepdiff.i248, i1 false) + %add.ptr42.i247 = getelementptr inbounds %"class.hermes::OptValue", ptr %33, i64 %CurSize.0.i240 + %gepdiff.i248 = sub nsw i64 %add.ptr.i.idx.i244, %add.ptr39.idx.i245 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr42.i247, ptr align 4 %add.ptr39.i246, i64 %gepdiff.i248, i1 false) br label %_ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.i249 _ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.i249: ; preds = %if.then.i.i.i243, %if.end37.i239 @@ -6809,9 +6809,9 @@ if.then.i.i: ; preds = %if.end13.i, %if.end %1 = phi i32 [ %.pre, %if.end28.i ], [ %0, %if.end13.i ] %conv.i35.i = zext i32 %1 to i64 %2 = load ptr, ptr %RHS, align 8 + %add.ptr.i65.idx.i = mul nuw nsw i64 %conv.i35.i, 12 %3 = load ptr, ptr %this, align 8 - %gepdiff.i = mul nuw nsw i64 %conv.i35.i, 12 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %3, ptr align 4 %2, i64 %gepdiff.i, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %3, ptr align 4 %2, i64 %add.ptr.i65.idx.i, i1 false) br label %return.sink.split.i return.sink.split.i: ; preds = %if.then.i.i, %if.end28.i @@ -10596,12 +10596,12 @@ if.end37: ; preds = %if.then.i.i.i.i.i47 if.then.i.i: ; preds = %if.end37 %11 = load ptr, ptr %RHS, align 8 + %add.ptr.i.idx = mul nuw nsw i64 %conv.i51, 12 %add.ptr39.idx = mul nuw nsw i64 %CurSize.0, 12 %add.ptr39 = getelementptr inbounds i8, ptr %11, i64 %add.ptr39.idx %12 = load ptr, ptr %this, align 8 %add.ptr42 = getelementptr inbounds %"class.hermes::OptValue", ptr %12, i64 %CurSize.0 - %add.ptr.i.idx57 = sub nsw i64 %conv.i51, %CurSize.0 - %gepdiff = mul nsw i64 %add.ptr.i.idx57, 12 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr39.idx tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr42, ptr align 4 %add.ptr39, i64 %gepdiff, i1 false) br label %_ZN4llvh23SmallVectorTemplateBaseIN6hermes8OptValueINS1_2vm16RegExpMatchRangeEEELb1EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit diff --git a/bench/hermes/optimized/RegexParser.cpp.ll b/bench/hermes/optimized/RegexParser.cpp.ll index 4fc01a293b0..c1ad1406480 100644 --- a/bench/hermes/optimized/RegexParser.cpp.ll +++ b/bench/hermes/optimized/RegexParser.cpp.ll @@ -4102,12 +4102,12 @@ if.end37: ; preds = %if.then.i.i.i.i.i47 if.then.i.i: ; preds = %if.end37 %11 = load ptr, ptr %RHS, align 8 + %add.ptr.i.idx = shl nuw nsw i64 %conv.i51, 1 %add.ptr39.idx = shl nuw nsw i64 %CurSize.0, 1 %add.ptr39 = getelementptr inbounds i8, ptr %11, i64 %add.ptr39.idx %12 = load ptr, ptr %this, align 8 %add.ptr42 = getelementptr inbounds i16, ptr %12, i64 %CurSize.0 - %13 = sub nsw i64 %conv.i51, %CurSize.0 - %gepdiff = shl nsw i64 %13, 1 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr39.idx tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr42, ptr align 2 %add.ptr39, i64 %gepdiff, i1 false) br label %_ZN4llvh23SmallVectorTemplateBaseIDsLb1EE18uninitialized_moveIPDsS3_EEvT_S4_T0_.exit @@ -11916,8 +11916,8 @@ if.then.i.i.i.i: ; preds = %if.end28.i.i.if.the %11 = phi i32 [ %.pre.i.i, %if.end28.i.i.if.then.i.i.i_crit_edge.i ], [ %9, %if.end13.i.i.i ] %conv.i35.i.i.i = zext i32 %11 to i64 %12 = load ptr, ptr %codePointSet_, align 8 - %gepdiff.i.i.i = shl nuw nsw i64 %conv.i35.i.i.i, 3 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %10, ptr align 4 %12, i64 %gepdiff.i.i.i, i1 false) + %add.ptr.i65.idx.i.i.i = shl nuw nsw i64 %conv.i35.i.i.i, 3 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %10, ptr align 4 %12, i64 %add.ptr.i65.idx.i.i.i, i1 false) br label %cond.end.thread71 cond.end.thread71: ; preds = %if.end28.i.i.i, %if.then.i.i.i.i @@ -12130,8 +12130,8 @@ if.then.i.i.i.i: ; preds = %if.end28.i.i.if.the %11 = phi i32 [ %.pre.i.i, %if.end28.i.i.if.then.i.i.i_crit_edge.i ], [ %9, %if.end13.i.i.i ] %conv.i35.i.i.i = zext i32 %11 to i64 %12 = load ptr, ptr %codePointSet_, align 8 - %gepdiff.i.i.i = shl nuw nsw i64 %conv.i35.i.i.i, 3 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %10, ptr align 4 %12, i64 %gepdiff.i.i.i, i1 false) + %add.ptr.i65.idx.i.i.i = shl nuw nsw i64 %conv.i35.i.i.i, 3 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %10, ptr align 4 %12, i64 %add.ptr.i65.idx.i.i.i, i1 false) br label %cond.end.thread71 cond.end.thread71: ; preds = %if.end28.i.i.i, %if.then.i.i.i.i @@ -13035,8 +13035,8 @@ if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end28.i.i.if.the %7 = phi i32 [ %.pre.i.i.i.i.i.i.i.i, %if.end28.i.i.if.then.i.i.i_crit_edge.i.i.i.i.i.i.i ], [ %5, %if.end13.i.i.i.i.i.i.i.i.i ] %conv.i35.i.i.i.i.i.i.i.i.i = zext i32 %7 to i64 %8 = load ptr, ptr %__first.addr.06.i.i.i.i.i, align 8 - %gepdiff.i.i.i.i.i.i.i.i.i = shl nuw nsw i64 %conv.i35.i.i.i.i.i.i.i.i.i, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %6, ptr align 2 %8, i64 %gepdiff.i.i.i.i.i.i.i.i.i, i1 false) + %add.ptr.i66.idx.i.i.i.i.i.i.i.i.i = shl nuw nsw i64 %conv.i35.i.i.i.i.i.i.i.i.i, 1 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %6, ptr align 2 %8, i64 %add.ptr.i66.idx.i.i.i.i.i.i.i.i.i, i1 false) br label %return.sink.split.i.i.i.i.i.i.i.i.i return.sink.split.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i, %if.end28.i.i.i.i.i.i.i.i.i @@ -13095,8 +13095,8 @@ if.then.i.i.i.i.i.i.i.i.i.i26: ; preds = %if.end28.i.i.if.the %12 = phi i32 [ %.pre.i.i.i.i.i.i.i.i39, %if.end28.i.i.if.then.i.i.i_crit_edge.i.i.i.i.i.i.i41 ], [ %10, %if.end13.i.i.i.i.i.i.i.i.i24 ] %conv.i35.i.i.i.i.i.i.i.i.i27 = zext i32 %12 to i64 %13 = load ptr, ptr %__first.addr.06.i.i.i.i.i16, align 8 - %gepdiff.i.i.i.i.i.i.i.i.i28 = shl nuw nsw i64 %conv.i35.i.i.i.i.i.i.i.i.i27, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %11, ptr align 2 %13, i64 %gepdiff.i.i.i.i.i.i.i.i.i28, i1 false) + %add.ptr.i66.idx.i.i.i.i.i.i.i.i.i28 = shl nuw nsw i64 %conv.i35.i.i.i.i.i.i.i.i.i27, 1 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %11, ptr align 2 %13, i64 %add.ptr.i66.idx.i.i.i.i.i.i.i.i.i28, i1 false) br label %return.sink.split.i.i.i.i.i.i.i.i.i29 return.sink.split.i.i.i.i.i.i.i.i.i29: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i26, %if.end28.i.i.i.i.i.i.i.i.i37 @@ -14342,9 +14342,9 @@ if.end37.i: ; preds = %if.end24.i if.then.i.i.i: ; preds = %if.end24.i, %if.end37.i %.pre5.pre.pre925 = phi ptr [ %.pre5.pre.pre9.pre, %if.end37.i ], [ %.pre6.pre, %if.end24.i ] %conv.i51.i.pre-phi24 = phi i64 [ %.pre12, %if.end37.i ], [ %conv.i30.i, %if.end24.i ] + %add.ptr.i.idx.i = shl nuw nsw i64 %conv.i51.i.pre-phi24, 2 %2 = load ptr, ptr %chars_.i, align 8 - %gepdiff.i = shl nuw nsw i64 %conv.i51.i.pre-phi24, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2, ptr align 4 %.pre5.pre.pre925, i64 %gepdiff.i, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2, ptr align 4 %.pre5.pre.pre925, i64 %add.ptr.i.idx.i, i1 false) %.pre5.pre.pre = load ptr, ptr %agg.tmp, align 8 br label %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit.i @@ -14473,12 +14473,12 @@ if.end37: ; preds = %if.then.i.i.i.i.i47 if.then.i.i: ; preds = %if.end37 %11 = load ptr, ptr %RHS, align 8 + %add.ptr.i.idx = shl nuw nsw i64 %conv.i51, 2 %add.ptr39.idx = shl nuw nsw i64 %CurSize.0, 2 %add.ptr39 = getelementptr inbounds i8, ptr %11, i64 %add.ptr39.idx %12 = load ptr, ptr %this, align 8 %add.ptr42 = getelementptr inbounds i32, ptr %12, i64 %CurSize.0 - %13 = sub nsw i64 %conv.i51, %CurSize.0 - %gepdiff = shl nsw i64 %13, 2 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr39.idx tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr42, ptr align 4 %add.ptr39, i64 %gepdiff, i1 false) br label %_ZN4llvh23SmallVectorTemplateBaseIjLb1EE18uninitialized_moveIPjS3_EEvT_S4_T0_.exit diff --git a/bench/hermes/optimized/SegmentedArray.cpp.ll b/bench/hermes/optimized/SegmentedArray.cpp.ll index bd7bd7a578b..c77b38f1c97 100644 --- a/bench/hermes/optimized/SegmentedArray.cpp.ll +++ b/bench/hermes/optimized/SegmentedArray.cpp.ll @@ -426,9 +426,13 @@ if.then10: ; preds = %if.else %idx.ext13 = zext i32 %newLength to i64 %add.ptr14.idx = shl nuw nsw i64 %idx.ext13, 3 %add.ptr14 = getelementptr inbounds i8, ptr %data_11, i64 %add.ptr14.idx + %idx.ext17 = zext i32 %0 to i64 + %add.ptr18.idx = shl nuw nsw i64 %idx.ext17, 3 %heapStorage_.i16 = getelementptr inbounds i8, ptr %runtime, i64 840 %sub.ptr.rhs.cast.i = ptrtoint ptr %add.ptr14 to i64 - %narrow = sub nuw i32 %0, %newLength + %gepdiff = sub nsw i64 %add.ptr18.idx, %add.ptr14.idx + %sub.ptr.div.i = lshr exact i64 %gepdiff, 3 + %conv.i = trunc i64 %sub.ptr.div.i to i32 %youngGen_.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 %1 = load ptr, ptr %youngGen_.i.i.i, align 8 %and.i.i.i.i = and i64 %sub.ptr.rhs.cast.i, -4194304 @@ -443,7 +447,7 @@ land.rhs.i.i: ; preds = %if.then10 br i1 %tobool.i.i, label %if.then.i.i, label %if.end21.sink.split if.then.i.i: ; preds = %land.rhs.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16, ptr noundef nonnull %add.ptr14, i32 noundef %narrow) #8 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16, ptr noundef nonnull %add.ptr14, i32 noundef %conv.i) #8 br label %if.end21.sink.split if.end21.sink.split: ; preds = %for.body5.i, %if.then.i.i, %land.rhs.i.i, %if.then10 @@ -1354,8 +1358,12 @@ if.then10.i: ; preds = %if.else.i104 %38 = shl nuw nsw i32 %cond69, 3 %add.ptr14.idx.i = zext nneg i32 %38 to i64 %add.ptr14.i = getelementptr inbounds i8, ptr %data_11.i, i64 %add.ptr14.idx.i + %idx.ext17.i = zext i32 %37 to i64 + %add.ptr18.idx.i = shl nuw nsw i64 %idx.ext17.i, 3 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %add.ptr14.i to i64 - %narrow.i = sub nuw i32 %37, %cond69 + %gepdiff.i = sub nsw i64 %add.ptr18.idx.i, %add.ptr14.idx.i + %sub.ptr.div.i.i = lshr exact i64 %gepdiff.i, 3 + %conv.i.i = trunc i64 %sub.ptr.div.i.i to i32 %39 = load ptr, ptr %youngGen_.i.i.i.i105, align 8 %and.i.i.i.i.i106 = and i64 %sub.ptr.rhs.cast.i.i, 1125899902648320 %40 = inttoptr i64 %and.i.i.i.i.i106 to ptr @@ -1368,7 +1376,7 @@ land.rhs.i.i.i: ; preds = %if.then10.i br i1 %tobool.i.i.i, label %if.then.i.i.i108, label %if.end21.sink.split.i if.then.i.i.i108: ; preds = %land.rhs.i.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16.i, ptr noundef nonnull %add.ptr14.i, i32 noundef %narrow.i) #8 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16.i, ptr noundef nonnull %add.ptr14.i, i32 noundef %conv.i.i) #8 br label %if.end21.sink.split.i if.end21.sink.split.i: ; preds = %for.body5.i.i, %if.then.i.i.i108, %land.rhs.i.i.i, %if.then10.i @@ -2522,9 +2530,13 @@ if.then10.i: ; preds = %if.else.i32 %8 = shl nuw nsw i32 %add12, 3 %add.ptr14.idx.i = zext nneg i32 %8 to i64 %add.ptr14.i = getelementptr inbounds i8, ptr %data_11.i, i64 %add.ptr14.idx.i + %idx.ext17.i = zext i32 %7 to i64 + %add.ptr18.idx.i = shl nuw nsw i64 %idx.ext17.i, 3 %heapStorage_.i16.i = getelementptr inbounds i8, ptr %runtime, i64 840 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %add.ptr14.i to i64 - %narrow.i = sub nuw i32 %7, %add12 + %gepdiff.i = sub nsw i64 %add.ptr18.idx.i, %add.ptr14.idx.i + %sub.ptr.div.i.i = lshr exact i64 %gepdiff.i, 3 + %conv.i.i = trunc i64 %sub.ptr.div.i.i to i32 %youngGen_.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 %9 = load ptr, ptr %youngGen_.i.i.i.i, align 8 %and.i.i.i.i.i33 = and i64 %sub.ptr.rhs.cast.i.i, 1125899902648320 @@ -2539,7 +2551,7 @@ land.rhs.i.i.i: ; preds = %if.then10.i br i1 %tobool.i.i.i, label %if.then.i.i.i, label %if.end21.sink.split.i if.then.i.i.i: ; preds = %land.rhs.i.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16.i, ptr noundef nonnull %add.ptr14.i, i32 noundef %narrow.i) #8 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16.i, ptr noundef nonnull %add.ptr14.i, i32 noundef %conv.i.i) #8 br label %if.end21.sink.split.i if.end21.sink.split.i: ; preds = %for.body5.i.i, %if.then.i.i.i, %land.rhs.i.i.i, %if.then10.i @@ -3139,9 +3151,13 @@ if.then10.i: ; preds = %if.else.i21 %9 = shl nuw nsw i32 %add, 3 %add.ptr14.idx.i = zext nneg i32 %9 to i64 %add.ptr14.i = getelementptr inbounds i8, ptr %data_11.i, i64 %add.ptr14.idx.i + %idx.ext17.i = zext i32 %8 to i64 + %add.ptr18.idx.i = shl nuw nsw i64 %idx.ext17.i, 3 %heapStorage_.i16.i = getelementptr inbounds i8, ptr %runtime, i64 840 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %add.ptr14.i to i64 - %narrow.i = sub nuw i32 %8, %add + %gepdiff.i = sub nsw i64 %add.ptr18.idx.i, %add.ptr14.idx.i + %sub.ptr.div.i.i = lshr exact i64 %gepdiff.i, 3 + %conv.i.i = trunc i64 %sub.ptr.div.i.i to i32 %youngGen_.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 %10 = load ptr, ptr %youngGen_.i.i.i.i, align 8 %and.i.i.i.i.i22 = and i64 %sub.ptr.rhs.cast.i.i, 1125899902648320 @@ -3156,7 +3172,7 @@ land.rhs.i.i.i: ; preds = %if.then10.i br i1 %tobool.i.i.i, label %if.then.i.i.i, label %if.end21.sink.split.i if.then.i.i.i: ; preds = %land.rhs.i.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16.i, ptr noundef nonnull %add.ptr14.i, i32 noundef %narrow.i) #8 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16.i, ptr noundef nonnull %add.ptr14.i, i32 noundef %conv.i.i) #8 br label %if.end21.sink.split.i if.end21.sink.split.i: ; preds = %for.body5.i.i, %if.then.i.i.i, %land.rhs.i.i.i, %if.then10.i @@ -3168,24 +3184,28 @@ if.end: ; preds = %if.end21.sink.split %idx.ext = zext i32 %retval.0.i13 to i64 %add.ptr.idx = shl nuw nsw i64 %idx.ext, 3 %add.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i.i23, i64 %add.ptr.idx + %idx.ext11 = zext i32 %4 to i64 + %add.ptr12.idx = shl nuw nsw i64 %idx.ext11, 3 %heapStorage_.i = getelementptr inbounds i8, ptr %runtime, i64 840 %sub.ptr.rhs.cast.i = ptrtoint ptr %add.ptr to i64 - %13 = sub i32 %4, %retval.0.i13 + %gepdiff = sub nsw i64 %add.ptr12.idx, %add.ptr.idx + %sub.ptr.div.i = lshr exact i64 %gepdiff, 3 + %conv.i25 = trunc i64 %sub.ptr.div.i to i32 %youngGen_.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 - %14 = load ptr, ptr %youngGen_.i.i.i, align 8 + %13 = load ptr, ptr %youngGen_.i.i.i, align 8 %and.i.i.i.i = and i64 %sub.ptr.rhs.cast.i, -4194304 - %15 = inttoptr i64 %and.i.i.i.i to ptr - %cmp.i.i.i = icmp eq ptr %14, %15 + %14 = inttoptr i64 %and.i.i.i.i to ptr + %cmp.i.i.i = icmp eq ptr %13, %14 br i1 %cmp.i.i.i, label %_ZN6hermes2vm17GCHermesValueBaseINS0_11HermesValueEE28rangeUnreachableWriteBarrierEPS3_S4_RNS0_7HadesGCE.exit, label %land.rhs.i.i land.rhs.i.i: ; preds = %if.end %ogMarkingBarriers_.i.i = getelementptr inbounds i8, ptr %runtime, i64 8497 - %16 = load i8, ptr %ogMarkingBarriers_.i.i, align 1 - %tobool.i.i = trunc i8 %16 to i1 + %15 = load i8, ptr %ogMarkingBarriers_.i.i, align 1 + %tobool.i.i = trunc i8 %15 to i1 br i1 %tobool.i.i, label %if.then.i.i, label %_ZN6hermes2vm17GCHermesValueBaseINS0_11HermesValueEE28rangeUnreachableWriteBarrierEPS3_S4_RNS0_7HadesGCE.exit if.then.i.i: ; preds = %land.rhs.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i, ptr noundef nonnull %add.ptr, i32 noundef %13) #8 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_11HermesValueEEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i, ptr noundef nonnull %add.ptr, i32 noundef %conv.i25) #8 br label %_ZN6hermes2vm17GCHermesValueBaseINS0_11HermesValueEE28rangeUnreachableWriteBarrierEPS3_S4_RNS0_7HadesGCE.exit _ZN6hermes2vm17GCHermesValueBaseINS0_11HermesValueEE28rangeUnreachableWriteBarrierEPS3_S4_RNS0_7HadesGCE.exit: ; preds = %if.end, %land.rhs.i.i, %if.then.i.i @@ -3311,9 +3331,13 @@ if.then10: ; preds = %if.else %idx.ext13 = zext i32 %newLength to i64 %add.ptr14.idx = shl nuw nsw i64 %idx.ext13, 2 %add.ptr14 = getelementptr inbounds i8, ptr %data_11, i64 %add.ptr14.idx + %idx.ext17 = zext i32 %0 to i64 + %add.ptr18.idx = shl nuw nsw i64 %idx.ext17, 2 %heapStorage_.i16 = getelementptr inbounds i8, ptr %runtime, i64 840 %sub.ptr.rhs.cast.i = ptrtoint ptr %add.ptr14 to i64 - %narrow = sub nuw i32 %0, %newLength + %gepdiff = sub nsw i64 %add.ptr18.idx, %add.ptr14.idx + %sub.ptr.div.i = lshr exact i64 %gepdiff, 2 + %conv.i = trunc i64 %sub.ptr.div.i to i32 %youngGen_.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 %1 = load ptr, ptr %youngGen_.i.i.i, align 8 %and.i.i.i.i = and i64 %sub.ptr.rhs.cast.i, -4194304 @@ -3328,7 +3352,7 @@ land.rhs.i.i: ; preds = %if.then10 br i1 %tobool.i.i, label %if.then.i.i, label %if.end21.sink.split if.then.i.i: ; preds = %land.rhs.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16, ptr noundef nonnull %add.ptr14, i32 noundef %narrow) #8 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16, ptr noundef nonnull %add.ptr14, i32 noundef %conv.i) #8 br label %if.end21.sink.split if.end21.sink.split: ; preds = %for.body5.i, %if.then.i.i, %land.rhs.i.i, %if.then10 @@ -4265,8 +4289,12 @@ if.then10.i: ; preds = %if.else.i106 %44 = shl nuw nsw i32 %cond69, 2 %add.ptr14.idx.i = zext nneg i32 %44 to i64 %add.ptr14.i = getelementptr inbounds i8, ptr %data_11.i, i64 %add.ptr14.idx.i + %idx.ext17.i = zext i32 %43 to i64 + %add.ptr18.idx.i = shl nuw nsw i64 %idx.ext17.i, 2 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %add.ptr14.i to i64 - %narrow.i = sub nuw i32 %43, %cond69 + %gepdiff.i = sub nsw i64 %add.ptr18.idx.i, %add.ptr14.idx.i + %sub.ptr.div.i.i = lshr exact i64 %gepdiff.i, 2 + %conv.i.i = trunc i64 %sub.ptr.div.i.i to i32 %45 = load ptr, ptr %youngGen_.i.i.i.i107, align 8 %and.i.i.i.i.i108 = and i64 %sub.ptr.rhs.cast.i.i, -4194304 %46 = inttoptr i64 %and.i.i.i.i.i108 to ptr @@ -4279,7 +4307,7 @@ land.rhs.i.i.i: ; preds = %if.then10.i br i1 %tobool.i.i.i, label %if.then.i.i.i110, label %if.end21.sink.split.i if.then.i.i.i110: ; preds = %land.rhs.i.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16.i, ptr noundef nonnull %add.ptr14.i, i32 noundef %narrow.i) #8 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16.i, ptr noundef nonnull %add.ptr14.i, i32 noundef %conv.i.i) #8 br label %if.end21.sink.split.i if.end21.sink.split.i: ; preds = %for.body5.i.i, %if.then.i.i.i110, %land.rhs.i.i.i, %if.then10.i @@ -5642,9 +5670,13 @@ if.then10.i: ; preds = %if.else.i35 %10 = shl nuw nsw i32 %add12, 2 %add.ptr14.idx.i = zext nneg i32 %10 to i64 %add.ptr14.i = getelementptr inbounds i8, ptr %data_11.i, i64 %add.ptr14.idx.i + %idx.ext17.i = zext i32 %9 to i64 + %add.ptr18.idx.i = shl nuw nsw i64 %idx.ext17.i, 2 %heapStorage_.i16.i = getelementptr inbounds i8, ptr %runtime, i64 840 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %add.ptr14.i to i64 - %narrow.i = sub nuw i32 %9, %add12 + %gepdiff.i = sub nsw i64 %add.ptr18.idx.i, %add.ptr14.idx.i + %sub.ptr.div.i.i = lshr exact i64 %gepdiff.i, 2 + %conv.i.i = trunc i64 %sub.ptr.div.i.i to i32 %youngGen_.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 %11 = load ptr, ptr %youngGen_.i.i.i.i, align 8 %and.i.i.i.i.i = and i64 %sub.ptr.rhs.cast.i.i, -4194304 @@ -5659,7 +5691,7 @@ land.rhs.i.i.i: ; preds = %if.then10.i br i1 %tobool.i.i.i, label %if.then.i.i.i, label %if.end21.sink.split.i if.then.i.i.i: ; preds = %land.rhs.i.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16.i, ptr noundef nonnull %add.ptr14.i, i32 noundef %narrow.i) #8 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16.i, ptr noundef nonnull %add.ptr14.i, i32 noundef %conv.i.i) #8 br label %if.end21.sink.split.i if.end21.sink.split.i: ; preds = %for.body5.i.i, %if.then.i.i.i, %land.rhs.i.i.i, %if.then10.i @@ -6300,9 +6332,13 @@ if.then10.i: ; preds = %if.else.i24 %11 = shl nuw nsw i32 %add, 2 %add.ptr14.idx.i = zext nneg i32 %11 to i64 %add.ptr14.i = getelementptr inbounds i8, ptr %data_11.i, i64 %add.ptr14.idx.i + %idx.ext17.i = zext i32 %10 to i64 + %add.ptr18.idx.i = shl nuw nsw i64 %idx.ext17.i, 2 %heapStorage_.i16.i = getelementptr inbounds i8, ptr %runtime, i64 840 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %add.ptr14.i to i64 - %narrow.i = sub nuw i32 %10, %add + %gepdiff.i = sub nsw i64 %add.ptr18.idx.i, %add.ptr14.idx.i + %sub.ptr.div.i.i = lshr exact i64 %gepdiff.i, 2 + %conv.i.i = trunc i64 %sub.ptr.div.i.i to i32 %youngGen_.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 %12 = load ptr, ptr %youngGen_.i.i.i.i, align 8 %and.i.i.i.i.i = and i64 %sub.ptr.rhs.cast.i.i, -4194304 @@ -6317,7 +6353,7 @@ land.rhs.i.i.i: ; preds = %if.then10.i br i1 %tobool.i.i.i, label %if.then.i.i.i, label %if.end21.sink.split.i if.then.i.i.i: ; preds = %land.rhs.i.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16.i, ptr noundef nonnull %add.ptr14.i, i32 noundef %narrow.i) #8 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i16.i, ptr noundef nonnull %add.ptr14.i, i32 noundef %conv.i.i) #8 br label %if.end21.sink.split.i if.end21.sink.split.i: ; preds = %for.body5.i.i, %if.then.i.i.i, %land.rhs.i.i.i, %if.then10.i @@ -6329,24 +6365,28 @@ if.end: ; preds = %if.end21.sink.split %idx.ext = zext i32 %retval.0.i13 to i64 %add.ptr.idx = shl nuw nsw i64 %idx.ext, 2 %add.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i.i25, i64 %add.ptr.idx + %idx.ext11 = zext i32 %5 to i64 + %add.ptr12.idx = shl nuw nsw i64 %idx.ext11, 2 %heapStorage_.i = getelementptr inbounds i8, ptr %runtime, i64 840 %sub.ptr.rhs.cast.i = ptrtoint ptr %add.ptr to i64 - %15 = sub i32 %5, %retval.0.i13 + %gepdiff = sub nsw i64 %add.ptr12.idx, %add.ptr.idx + %sub.ptr.div.i = lshr exact i64 %gepdiff, 2 + %conv.i27 = trunc i64 %sub.ptr.div.i to i32 %youngGen_.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1640 - %16 = load ptr, ptr %youngGen_.i.i.i, align 8 + %15 = load ptr, ptr %youngGen_.i.i.i, align 8 %and.i.i.i.i = and i64 %sub.ptr.rhs.cast.i, -4194304 - %17 = inttoptr i64 %and.i.i.i.i to ptr - %cmp.i.i.i = icmp eq ptr %16, %17 + %16 = inttoptr i64 %and.i.i.i.i to ptr + %cmp.i.i.i = icmp eq ptr %15, %16 br i1 %cmp.i.i.i, label %_ZN6hermes2vm17GCHermesValueBaseINS0_13HermesValue32EE28rangeUnreachableWriteBarrierEPS3_S4_RNS0_7HadesGCE.exit, label %land.rhs.i.i land.rhs.i.i: ; preds = %if.end %ogMarkingBarriers_.i.i = getelementptr inbounds i8, ptr %runtime, i64 8497 - %18 = load i8, ptr %ogMarkingBarriers_.i.i, align 1 - %tobool.i.i = trunc i8 %18 to i1 + %17 = load i8, ptr %ogMarkingBarriers_.i.i, align 1 + %tobool.i.i = trunc i8 %17 to i1 br i1 %tobool.i.i, label %if.then.i.i, label %_ZN6hermes2vm17GCHermesValueBaseINS0_13HermesValue32EE28rangeUnreachableWriteBarrierEPS3_S4_RNS0_7HadesGCE.exit if.then.i.i: ; preds = %land.rhs.i.i - tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i, ptr noundef nonnull %add.ptr, i32 noundef %15) #8 + tail call void @_ZN6hermes2vm7HadesGC29snapshotWriteBarrierRangeSlowEPKNS0_17GCHermesValueBaseINS0_13HermesValue32EEEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i, ptr noundef nonnull %add.ptr, i32 noundef %conv.i27) #8 br label %_ZN6hermes2vm17GCHermesValueBaseINS0_13HermesValue32EE28rangeUnreachableWriteBarrierEPS3_S4_RNS0_7HadesGCE.exit _ZN6hermes2vm17GCHermesValueBaseINS0_13HermesValue32EE28rangeUnreachableWriteBarrierEPS3_S4_RNS0_7HadesGCE.exit: ; preds = %if.end, %land.rhs.i.i, %if.then.i.i diff --git a/bench/hermes/optimized/SemanticValidator.cpp.ll b/bench/hermes/optimized/SemanticValidator.cpp.ll index c6be4207804..bf626a83ffe 100644 --- a/bench/hermes/optimized/SemanticValidator.cpp.ll +++ b/bench/hermes/optimized/SemanticValidator.cpp.ll @@ -7965,8 +7965,8 @@ if.end13.i.i.i.i: ; preds = %if.end9.i.i.i.i _ZN4llvh12DenseMapBaseINS_8DenseMapIPKN6hermes12UniqueStringEjNS_12DenseMapInfoIS5_EENS_6detail12DenseMapPairIS5_jEEEES5_jS7_SA_E6insertERKSt4pairIS5_jE.exit.thread: ; preds = %if.end13.i.i.i.i, %if.end.i.i.i.i %7 = phi i64 [ %idx.ext20.i.i.i.i, %if.end.i.i.i.i ], [ %idx.ext.i.i.i.i, %if.end13.i.i.i.i ] - %second64 = getelementptr inbounds %"struct.llvh::detail::DenseMapPair.222", ptr %1, i64 %7, i32 0, i32 1 - %.pre71 = load i32, ptr %second64, align 4 + %second65 = getelementptr inbounds %"struct.llvh::detail::DenseMapPair.222", ptr %1, i64 %7, i32 0, i32 1 + %.pre72 = load i32, ptr %second65, align 4 br label %if.end _ZSt9make_pairIRKPKN6hermes12UniqueStringEN4llvh11SmallVectorIPNS0_6ESTree23FunctionDeclarationNodeELj4EEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_.exit: ; preds = %entry, %if.then12.i.i.i.i @@ -8039,23 +8039,23 @@ if.end24.i39: ; preds = %if.end.i if.end37.i46: ; preds = %if.end24.i39 call void @_ZN4llvh15SmallVectorBase8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %second.i.i.i.i.i, ptr noundef nonnull %add.ptr.i.i.i.i.i.i.i.i.i.i, i64 noundef %conv.i30.i30, i64 noundef 8) #21 %.pre = load i32, ptr %Size.i.i.i.i.i.i.i, align 8 - %.pre72 = zext i32 %.pre to i64 + %.pre73 = zext i32 %.pre to i64 %cmp.not.i.i.i49 = icmp eq i32 %.pre, 0 - br i1 %cmp.not.i.i.i49, label %_ZN4llvh23SmallVectorTemplateBaseIPN6hermes6ESTree23FunctionDeclarationNodeELb1EE18uninitialized_moveIPS4_S7_EEvT_S8_T0_.exit.i55, label %if.then.i.i.i50 + br i1 %cmp.not.i.i.i49, label %_ZN4llvh23SmallVectorTemplateBaseIPN6hermes6ESTree23FunctionDeclarationNodeELb1EE18uninitialized_moveIPS4_S7_EEvT_S8_T0_.exit.i56, label %if.then.i.i.i50 if.then.i.i.i50: ; preds = %if.end24.i39, %if.end37.i46 - %conv.i51.i48.pre-phi75 = phi i64 [ %.pre72, %if.end37.i46 ], [ %conv.i30.i30, %if.end24.i39 ] + %conv.i51.i48.pre-phi76 = phi i64 [ %.pre73, %if.end37.i46 ], [ %conv.i30.i30, %if.end24.i39 ] %17 = load ptr, ptr %second.i.i, align 8 + %add.ptr.i.idx.i51 = shl nuw nsw i64 %conv.i51.i48.pre-phi76, 3 %18 = load ptr, ptr %second.i.i.i.i.i, align 8 - %gepdiff.i54 = shl nuw nsw i64 %conv.i51.i48.pre-phi75, 3 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %18, ptr align 8 %17, i64 %gepdiff.i54, i1 false) - br label %_ZN4llvh23SmallVectorTemplateBaseIPN6hermes6ESTree23FunctionDeclarationNodeELb1EE18uninitialized_moveIPS4_S7_EEvT_S8_T0_.exit.i55 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %18, ptr align 8 %17, i64 %add.ptr.i.idx.i51, i1 false) + br label %_ZN4llvh23SmallVectorTemplateBaseIPN6hermes6ESTree23FunctionDeclarationNodeELb1EE18uninitialized_moveIPS4_S7_EEvT_S8_T0_.exit.i56 -_ZN4llvh23SmallVectorTemplateBaseIPN6hermes6ESTree23FunctionDeclarationNodeELb1EE18uninitialized_moveIPS4_S7_EEvT_S8_T0_.exit.i55: ; preds = %if.then.i.i.i50, %if.end37.i46 +_ZN4llvh23SmallVectorTemplateBaseIPN6hermes6ESTree23FunctionDeclarationNodeELb1EE18uninitialized_moveIPS4_S7_EEvT_S8_T0_.exit.i56: ; preds = %if.then.i.i.i50, %if.end37.i46 store i32 %13, ptr %Size.i.i.i.i.i.i.i.i.i.i, align 8 br label %return.sink.split.i -return.sink.split.i: ; preds = %_ZN4llvh23SmallVectorTemplateBaseIPN6hermes6ESTree23FunctionDeclarationNodeELb1EE18uninitialized_moveIPS4_S7_EEvT_S8_T0_.exit.i55, %if.end8.i23 +return.sink.split.i: ; preds = %_ZN4llvh23SmallVectorTemplateBaseIPN6hermes6ESTree23FunctionDeclarationNodeELb1EE18uninitialized_moveIPS4_S7_EEvT_S8_T0_.exit.i56, %if.end8.i23 store i32 0, ptr %Size.i.i.i.i.i.i.i, align 8 br label %_ZNSt16allocator_traitsISaISt4pairIPKN6hermes12UniqueStringEN4llvh11SmallVectorIPNS1_6ESTree23FunctionDeclarationNodeELj4EEEEEE9constructISB_JSB_EEEvRSC_PT_DpOT0_.exit.i.i @@ -8100,7 +8100,7 @@ _ZN4llvh11SmallVectorIPN6hermes6ESTree23FunctionDeclarationNodeELj4EED2Ev.exit: br label %if.end if.end: ; preds = %_ZN4llvh12DenseMapBaseINS_8DenseMapIPKN6hermes12UniqueStringEjNS_12DenseMapInfoIS5_EENS_6detail12DenseMapPairIS5_jEEEES5_jS7_SA_E6insertERKSt4pairIS5_jE.exit.thread, %_ZN4llvh11SmallVectorIPN6hermes6ESTree23FunctionDeclarationNodeELj4EED2Ev.exit - %25 = phi i32 [ %.pre71, %_ZN4llvh12DenseMapBaseINS_8DenseMapIPKN6hermes12UniqueStringEjNS_12DenseMapInfoIS5_EENS_6detail12DenseMapPairIS5_jEEEES5_jS7_SA_E6insertERKSt4pairIS5_jE.exit.thread ], [ %conv, %_ZN4llvh11SmallVectorIPN6hermes6ESTree23FunctionDeclarationNodeELj4EED2Ev.exit ] + %25 = phi i32 [ %.pre72, %_ZN4llvh12DenseMapBaseINS_8DenseMapIPKN6hermes12UniqueStringEjNS_12DenseMapInfoIS5_EENS_6detail12DenseMapPairIS5_jEEEES5_jS7_SA_E6insertERKSt4pairIS5_jE.exit.thread ], [ %conv, %_ZN4llvh11SmallVectorIPN6hermes6ESTree23FunctionDeclarationNodeELj4EED2Ev.exit ] %Vector9 = getelementptr inbounds i8, ptr %this, i64 24 %conv10 = zext i32 %25 to i64 %26 = load ptr, ptr %Vector9, align 8 @@ -15562,12 +15562,12 @@ if.end37: ; preds = %if.then.i.i.i.i.i47 if.then.i.i: ; preds = %if.end37 %11 = load ptr, ptr %RHS, align 8 + %add.ptr.i.idx = shl nuw nsw i64 %conv.i51, 3 %add.ptr39.idx = shl nuw nsw i64 %CurSize.0, 3 %add.ptr39 = getelementptr inbounds i8, ptr %11, i64 %add.ptr39.idx %12 = load ptr, ptr %this, align 8 %add.ptr42 = getelementptr inbounds ptr, ptr %12, i64 %CurSize.0 - %13 = sub nsw i64 %conv.i51, %CurSize.0 - %gepdiff = shl nsw i64 %13, 3 + %gepdiff = sub nsw i64 %add.ptr.i.idx, %add.ptr39.idx tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr42, ptr align 8 %add.ptr39, i64 %gepdiff, i1 false) br label %_ZN4llvh23SmallVectorTemplateBaseIPN6hermes6ESTree23FunctionDeclarationNodeELb1EE18uninitialized_moveIPS4_S7_EEvT_S8_T0_.exit @@ -16744,8 +16744,8 @@ if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end28.i.i.if.the %8 = phi i32 [ %.pre.i.i.i.i.i.i.i.i, %if.end28.i.i.if.then.i.i.i_crit_edge.i.i.i.i.i.i.i ], [ %6, %if.end13.i.i.i.i.i.i.i.i.i ] %conv.i35.i.i.i.i.i.i.i.i.i = zext i32 %8 to i64 %9 = load ptr, ptr %second3.i.i.i.i.i.i.i, align 8 - %gepdiff.i.i.i.i.i.i.i.i.i = shl nuw nsw i64 %conv.i35.i.i.i.i.i.i.i.i.i, 3 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %7, ptr align 8 %9, i64 %gepdiff.i.i.i.i.i.i.i.i.i, i1 false) + %add.ptr.i65.idx.i.i.i.i.i.i.i.i.i = shl nuw nsw i64 %conv.i35.i.i.i.i.i.i.i.i.i, 3 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %7, ptr align 8 %9, i64 %add.ptr.i65.idx.i.i.i.i.i.i.i.i.i, i1 false) br label %return.sink.split.i.i.i.i.i.i.i.i.i return.sink.split.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i, %if.end28.i.i.i.i.i.i.i.i.i @@ -16804,8 +16804,8 @@ if.then.i.i.i.i.i.i.i.i.i.i28: ; preds = %if.end28.i.i.if.the %13 = phi i32 [ %.pre.i.i.i.i.i.i.i.i39, %if.end28.i.i.if.then.i.i.i_crit_edge.i.i.i.i.i.i.i41 ], [ %11, %if.end13.i.i.i.i.i.i.i.i.i26 ] %conv.i35.i.i.i.i.i.i.i.i.i29 = zext i32 %13 to i64 %14 = load ptr, ptr %second3.i.i.i.i.i.i.i18, align 8 - %gepdiff.i.i.i.i.i.i.i.i.i30 = shl nuw nsw i64 %conv.i35.i.i.i.i.i.i.i.i.i29, 3 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %12, ptr align 8 %14, i64 %gepdiff.i.i.i.i.i.i.i.i.i30, i1 false) + %add.ptr.i65.idx.i.i.i.i.i.i.i.i.i30 = shl nuw nsw i64 %conv.i35.i.i.i.i.i.i.i.i.i29, 3 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %12, ptr align 8 %14, i64 %add.ptr.i65.idx.i.i.i.i.i.i.i.i.i30, i1 false) br label %return.sink.split.i.i.i.i.i.i.i.i.i31 return.sink.split.i.i.i.i.i.i.i.i.i31: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i28, %if.end28.i.i.i.i.i.i.i.i.i37 diff --git a/bench/hermes/optimized/SmallPtrSet.cpp.ll b/bench/hermes/optimized/SmallPtrSet.cpp.ll index 53f2c756401..d09a445cc0e 100644 --- a/bench/hermes/optimized/SmallPtrSet.cpp.ll +++ b/bench/hermes/optimized/SmallPtrSet.cpp.ll @@ -842,43 +842,40 @@ _ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit: ; preds = %_ZSt11swap_rangesIP br i1 %cmp60, label %if.then.i.i.i.i.i57, label %if.else if.then.i.i.i.i.i57: ; preds = %_ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit - %34 = load ptr, ptr %this, align 8 - %add.ptr64 = getelementptr inbounds i8, ptr %34, i64 %add.ptr64.idx - %narrow = sub nuw i32 %33, %30 - %35 = zext i32 %narrow to i64 - %gepdiff69 = shl nuw nsw i64 %35, 3 - %36 = load ptr, ptr %RHS, align 8 - %add.ptr71 = getelementptr inbounds ptr, ptr %36, i64 %idx.ext55 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr71, ptr align 8 %add.ptr64, i64 %gepdiff69, i1 false) - br label %if.end84 + %idx.ext67 = zext i32 %33 to i64 + %add.ptr68.idx = shl nuw nsw i64 %idx.ext67, 3 + br label %if.end84.sink.split if.else: ; preds = %_ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit - %37 = load i32, ptr %NumNonEmpty51, align 4 - %idx.ext78 = zext i32 %37 to i64 + %34 = load i32, ptr %NumNonEmpty51, align 4 + %idx.ext78 = zext i32 %34 to i64 %add.ptr79.idx = shl nuw nsw i64 %idx.ext78, 3 %tobool.not.i.i.i.i.i63 = icmp eq i64 %add.ptr79.idx, %add.ptr64.idx - br i1 %tobool.not.i.i.i.i.i63, label %if.end84, label %if.then.i.i.i.i.i64 - -if.then.i.i.i.i.i64: ; preds = %if.else - %38 = load ptr, ptr %RHS, align 8 - %add.ptr75 = getelementptr inbounds i8, ptr %38, i64 %add.ptr64.idx - %gepdiff = sub nsw i64 %add.ptr79.idx, %add.ptr64.idx - %39 = load ptr, ptr %this, align 8 - %add.ptr82 = getelementptr inbounds ptr, ptr %39, i64 %idx.ext55 + br i1 %tobool.not.i.i.i.i.i63, label %if.end84, label %if.end84.sink.split + +if.end84.sink.split: ; preds = %if.else, %if.then.i.i.i.i.i57 + %RHS.sink = phi ptr [ %this, %if.then.i.i.i.i.i57 ], [ %RHS, %if.else ] + %add.ptr79.idx.sink = phi i64 [ %add.ptr68.idx, %if.then.i.i.i.i.i57 ], [ %add.ptr79.idx, %if.else ] + %this.sink = phi ptr [ %RHS, %if.then.i.i.i.i.i57 ], [ %this, %if.else ] + %35 = load ptr, ptr %RHS.sink, align 8 + %add.ptr75 = getelementptr inbounds i8, ptr %35, i64 %add.ptr64.idx + %gepdiff = sub nsw i64 %add.ptr79.idx.sink, %add.ptr64.idx + %36 = load ptr, ptr %this.sink, align 8 + %add.ptr82 = getelementptr inbounds ptr, ptr %36, i64 %idx.ext55 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr82, ptr align 8 %add.ptr75, i64 %gepdiff, i1 false) br label %if.end84 -if.end84: ; preds = %if.then.i.i.i.i.i64, %if.else, %if.then.i.i.i.i.i57 - %40 = load i32, ptr %NumNonEmpty50, align 4 - %41 = load i32, ptr %NumNonEmpty51, align 4 - store i32 %41, ptr %NumNonEmpty50, align 4 - store i32 %40, ptr %NumNonEmpty51, align 4 +if.end84: ; preds = %if.end84.sink.split, %if.else + %37 = load i32, ptr %NumNonEmpty50, align 4 + %38 = load i32, ptr %NumNonEmpty51, align 4 + store i32 %38, ptr %NumNonEmpty50, align 4 + store i32 %37, ptr %NumNonEmpty51, align 4 %NumTombstones87 = getelementptr inbounds i8, ptr %this, i64 24 %NumTombstones88 = getelementptr inbounds i8, ptr %RHS, i64 24 - %42 = load i32, ptr %NumTombstones87, align 8 - %43 = load i32, ptr %NumTombstones88, align 8 - store i32 %43, ptr %NumTombstones87, align 8 - store i32 %42, ptr %NumTombstones88, align 8 + %39 = load i32, ptr %NumTombstones87, align 8 + %40 = load i32, ptr %NumTombstones88, align 8 + store i32 %40, ptr %NumTombstones87, align 8 + store i32 %39, ptr %NumTombstones88, align 8 br label %return return: ; preds = %entry, %if.end84, %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit51, %_ZSt4copyIPPKvS2_ET0_T_S4_S3_.exit, %if.then3 diff --git a/bench/icu/optimized/collationdatawriter.ll b/bench/icu/optimized/collationdatawriter.ll index 41e0ac3488c..4abe30e4150 100644 --- a/bench/icu/optimized/collationdatawriter.ll +++ b/bench/icu/optimized/collationdatawriter.ll @@ -238,7 +238,7 @@ if.then15: ; preds = %if.else13 %reorderCodesLength = getelementptr inbounds i8, ptr %settings, i64 72 %6 = load i32, ptr %reorderCodesLength, align 8 %cmp16 = icmp eq i32 %6, 0 - %.174 = select i1 %cmp16, i32 2, i32 8 + %.173 = select i1 %cmp16, i32 2, i32 8 br label %if.end42 if.else20: ; preds = %if.else13 @@ -278,7 +278,7 @@ if.then38: ; preds = %invoke.cont30 if.end42: ; preds = %if.then15, %if.then38, %invoke.cont30, %invoke.cont %fastLatinTableLength.0 = phi i32 [ %4, %invoke.cont ], [ %12, %if.then38 ], [ 0, %invoke.cont30 ], [ 0, %if.then15 ] %tobool78.not = phi i1 [ false, %invoke.cont ], [ false, %if.then38 ], [ false, %invoke.cont30 ], [ true, %if.then15 ] - %indexesLength.0 = phi i32 [ 20, %invoke.cont ], [ 17, %if.then38 ], [ %spec.select, %invoke.cont30 ], [ %.174, %if.then15 ] + %indexesLength.0 = phi i32 [ 20, %invoke.cont ], [ 17, %if.then38 ], [ %spec.select, %invoke.cont30 ], [ %.173, %if.then15 ] invoke void @_ZN6icu_759UVector32C1ER10UErrorCode(ptr noundef nonnull align 8 dereferenceable(32) %codesAndRanges, ptr noundef nonnull align 4 dereferenceable(4) %errorCode) to label %invoke.cont43 unwind label %lpad @@ -289,8 +289,8 @@ invoke.cont43: ; preds = %if.end42 %14 = load i32, ptr %reorderCodesLength46, align 8 %reorderTable.i = getelementptr inbounds i8, ptr %settings, i64 32 %15 = load ptr, ptr %reorderTable.i, align 8 - %cmp.i179.not = icmp eq ptr %15, null - br i1 %cmp.i179.not, label %if.end68, label %land.lhs.true51 + %cmp.i178.not = icmp eq ptr %15, null + br i1 %cmp.i178.not, label %if.end68, label %land.lhs.true51 land.lhs.true51: ; preds = %invoke.cont43 %call53 = invoke noundef signext i8 @_ZN6icu_7517CollationSettings25reorderTableHasSplitBytesEPKh(ptr noundef nonnull %15) @@ -305,8 +305,8 @@ if.then55: ; preds = %invoke.cont52 to label %for.cond.preheader unwind label %lpad47.loopexit.split-lp for.cond.preheader: ; preds = %if.then55 - %cmp57274 = icmp sgt i32 %14, 0 - br i1 %cmp57274, label %for.body.preheader, label %for.end + %cmp57273 = icmp sgt i32 %14, 0 + br i1 %cmp57273, label %for.body.preheader, label %for.end for.body.preheader: ; preds = %for.cond.preheader %wide.trip.count = zext nneg i32 %14 to i64 @@ -337,8 +337,8 @@ lpad47.loopexit.split-lp: ; preds = %if.then191.invoke, for.end: ; preds = %for.inc, %for.cond.preheader %18 = load i32, ptr %errorCode, align 4 - %cmp.i181 = icmp slt i32 %18, 1 - br i1 %cmp.i181, label %if.end63, label %cleanup269 + %cmp.i180 = icmp slt i32 %18, 1 + br i1 %cmp.i180, label %if.end63, label %cleanup269 if.end63: ; preds = %for.end %elements.i = getelementptr inbounds i8, ptr %codesAndRanges, i64 24 @@ -356,11 +356,11 @@ if.else71: ; preds = %if.end68 %cesLength = getelementptr inbounds i8, ptr %data, i64 64 %21 = load i32, ptr %cesLength, align 8 %cmp80.not = icmp eq i32 %21, 0 - %or.cond175 = select i1 %tobool78.not, i1 true, i1 %cmp80.not + %or.cond174 = select i1 %tobool78.not, i1 true, i1 %cmp80.not %add = add nsw i32 %reorderCodesLength45.0, %indexesLength.0 %22 = and i32 %add, 1 %cmp83.not = icmp eq i32 %22, 0 - %23 = select i1 %or.cond175, i1 true, i1 %cmp83.not + %23 = select i1 %or.cond174, i1 true, i1 %cmp83.not %headerSize.1 = select i1 %23, i32 24, i32 28 %cmp90.not = icmp sgt i32 %headerSize.1, %capacity br i1 %cmp90.not, label %if.end100, label %do.body92 @@ -433,32 +433,32 @@ if.end119: ; preds = %if.end100, %lor.lhs store i32 %.sink, ptr %arrayidx118, align 4 %arrayidx120 = getelementptr inbounds i8, ptr %indexes, i64 20 store i32 %mul106, ptr %arrayidx120, align 4 - %mul106169 = add i32 %reorderCodesLength45.0, %indexesLength.0 - %add122 = shl i32 %mul106169, 2 + %mul121 = shl nsw i32 %reorderCodesLength45.0, 2 + %add122 = add nsw i32 %mul121, %mul106 %arrayidx123 = getelementptr i8, ptr %indexes, i64 24 store i32 %add122, ptr %arrayidx123, align 4 %30 = load ptr, ptr %reorderTable.i, align 8 %cmp125.not = icmp eq ptr %30, null %add127 = add nsw i32 %add122, 256 - %spec.select177 = select i1 %cmp125.not, i32 %add122, i32 %add127 + %spec.select176 = select i1 %cmp125.not, i32 %add122, i32 %add127 %arrayidx129 = getelementptr i8, ptr %indexes, i64 28 - store i32 %spec.select177, ptr %arrayidx129, align 4 + store i32 %spec.select176, ptr %arrayidx129, align 4 br i1 %tobool78.not, label %if.end152.thread, label %if.then131 if.end152.thread: ; preds = %if.end119 - %arrayidx153271 = getelementptr inbounds i8, ptr %indexes, i64 32 - store i32 %spec.select177, ptr %arrayidx153271, align 4 - %arrayidx154272 = getelementptr inbounds i8, ptr %indexes, i64 36 - store i32 %spec.select177, ptr %arrayidx154272, align 4 + %arrayidx153270 = getelementptr inbounds i8, ptr %indexes, i64 32 + store i32 %spec.select176, ptr %arrayidx153270, align 4 + %arrayidx154271 = getelementptr inbounds i8, ptr %indexes, i64 36 + store i32 %spec.select176, ptr %arrayidx154271, align 4 br label %if.end163 if.then131: ; preds = %if.end119 store i32 0, ptr %errorCode2, align 4 - %cmp132 = icmp slt i32 %spec.select177, %capacity.addr.0 + %cmp132 = icmp slt i32 %spec.select176, %capacity.addr.0 %31 = load ptr, ptr %data, align 8 - %idx.ext134 = sext i32 %spec.select177 to i64 + %idx.ext134 = sext i32 %spec.select176 to i64 %add.ptr135 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext134 - %sub136 = sub nsw i32 %capacity.addr.0, %spec.select177 + %sub136 = sub nsw i32 %capacity.addr.0, %spec.select176 %32 = select i1 %cmp132, ptr %add.ptr135, ptr null %33 = select i1 %cmp132, i32 %sub136, i32 0 %34 = invoke i32 @utrie2_serialize_75(ptr noundef %31, ptr noundef %32, i32 noundef %33, ptr noundef nonnull %errorCode2) @@ -466,9 +466,9 @@ if.then131: ; preds = %if.end119 if.end143: ; preds = %if.then131 %35 = load i32, ptr %errorCode2, align 4 - %cmp.i183 = icmp sgt i32 %35, 0 + %cmp.i182 = icmp sgt i32 %35, 0 %cmp148 = icmp ne i32 %35, 15 - %or.cond1 = and i1 %cmp.i183, %cmp148 + %or.cond1 = and i1 %cmp.i182, %cmp148 br i1 %or.cond1, label %if.then149, label %land.lhs.true156 if.then149: ; preds = %if.end143 @@ -476,7 +476,7 @@ if.then149: ; preds = %if.end143 br label %cleanup269 land.lhs.true156: ; preds = %if.end143 - %add151 = add nsw i32 %34, %spec.select177 + %add151 = add nsw i32 %34, %spec.select176 %arrayidx153 = getelementptr inbounds i8, ptr %indexes, i64 32 store i32 %add151, ptr %arrayidx153, align 4 %arrayidx154 = getelementptr inbounds i8, ptr %indexes, i64 36 @@ -492,8 +492,8 @@ if.then159: ; preds = %land.lhs.true156 br label %if.end163 if.end163: ; preds = %if.end152.thread, %if.then159, %land.lhs.true156 - %arrayidx154273 = phi ptr [ %arrayidx154, %if.then159 ], [ %arrayidx154, %land.lhs.true156 ], [ %arrayidx154272, %if.end152.thread ] - %totalSize.2 = phi i32 [ %add162, %if.then159 ], [ %add151, %land.lhs.true156 ], [ %spec.select177, %if.end152.thread ] + %arrayidx154272 = phi ptr [ %arrayidx154, %if.then159 ], [ %arrayidx154, %land.lhs.true156 ], [ %arrayidx154271, %if.end152.thread ] + %totalSize.2 = phi i32 [ %add162, %if.then159 ], [ %add151, %land.lhs.true156 ], [ %spec.select176, %if.end152.thread ] %arrayidx164 = getelementptr i8, ptr %indexes, i64 40 store i32 %totalSize.2, ptr %arrayidx164, align 4 %arrayidx165 = getelementptr inbounds i8, ptr %indexes, i64 44 @@ -546,9 +546,9 @@ if.then191.invoke: ; preds = %if.then187, %if.the if.end200: ; preds = %if.then191.invoke %42 = load i32, ptr %errorCode2188, align 4 - %cmp.i185 = icmp sgt i32 %42, 0 + %cmp.i184 = icmp sgt i32 %42, 0 %cmp205 = icmp ne i32 %42, 15 - %or.cond2 = and i1 %cmp.i185, %cmp205 + %or.cond2 = and i1 %cmp.i184, %cmp205 br i1 %or.cond2, label %if.then206, label %if.end207 if.then206: ; preds = %if.end200 @@ -579,7 +579,7 @@ if.then217: ; preds = %invoke.cont214 %conv218 = trunc i32 %43 to i16 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %srcChar.addr.i) store i16 %conv218, ptr %srcChar.addr.i, align 2 - %call.i187 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7513UnicodeString8doAppendEPKDsii(ptr noundef nonnull align 8 dereferenceable(64) %scripts, ptr noundef nonnull %srcChar.addr.i, i32 noundef 0, i32 noundef 1) + %call.i186 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7513UnicodeString8doAppendEPKDsii(ptr noundef nonnull align 8 dereferenceable(64) %scripts, ptr noundef nonnull %srcChar.addr.i, i32 noundef 0, i32 noundef 1) to label %invoke.cont220 unwind label %lpad219 invoke.cont220: ; preds = %if.then217 @@ -588,7 +588,7 @@ invoke.cont220: ; preds = %if.then217 %44 = load ptr, ptr %scriptsIndex, align 8 %45 = load i32, ptr %numScripts, align 4 %add224 = add nsw i32 %45, 16 - %call2.i188 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7513UnicodeString8doAppendEPKDsii(ptr noundef nonnull align 8 dereferenceable(64) %scripts, ptr noundef %44, i32 noundef 0, i32 noundef %add224) + %call2.i187 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7513UnicodeString8doAppendEPKDsii(ptr noundef nonnull align 8 dereferenceable(64) %scripts, ptr noundef %44, i32 noundef 0, i32 noundef %add224) to label %invoke.cont226 unwind label %lpad225 invoke.cont226: ; preds = %invoke.cont220 @@ -597,7 +597,7 @@ invoke.cont226: ; preds = %invoke.cont220 %46 = load ptr, ptr %scriptStarts, align 8 %scriptStartsLength = getelementptr inbounds i8, ptr %data, i64 120 %47 = load i32, ptr %scriptStartsLength, align 8 - %call2.i189 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7513UnicodeString8doAppendEPKDsii(ptr noundef nonnull align 8 dereferenceable(64) %scripts, ptr noundef %46, i32 noundef 0, i32 noundef %47) + %call2.i188 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7513UnicodeString8doAppendEPKDsii(ptr noundef nonnull align 8 dereferenceable(64) %scripts, ptr noundef %46, i32 noundef 0, i32 noundef %47) to label %invoke.cont233 unwind label %lpad230 invoke.cont233: ; preds = %invoke.cont226 @@ -637,12 +637,12 @@ if.end237: ; preds = %invoke.cont233, %in %arrayidx238 = getelementptr i8, ptr %indexes, i64 68 store i32 %totalSize.6, ptr %arrayidx238, align 4 %add241 = add nsw i32 %totalSize.6, 256 - %spec.select178 = select i1 %tobool8.not, i32 %totalSize.6, i32 %add241 + %spec.select177 = select i1 %tobool8.not, i32 %totalSize.6, i32 %add241 %arrayidx243 = getelementptr i8, ptr %indexes, i64 72 - store i32 %spec.select178, ptr %arrayidx243, align 4 + store i32 %spec.select177, ptr %arrayidx243, align 4 %arrayidx244 = getelementptr inbounds i8, ptr %indexes, i64 76 - store i32 %spec.select178, ptr %arrayidx244, align 4 - %cmp245 = icmp sgt i32 %spec.select178, %capacity.addr.0 + store i32 %spec.select177, ptr %arrayidx244, align 4 + %cmp245 = icmp sgt i32 %spec.select177, %capacity.addr.0 br i1 %cmp245, label %if.then246, label %do.body249 if.then246: ; preds = %if.end237 @@ -654,118 +654,118 @@ do.body249: ; preds = %if.end237 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dest.addr.0, ptr nonnull align 4 %indexes, i64 %conv251, i1 false) %55 = load i32, ptr %arrayidx120, align 4 %56 = load i32, ptr %arrayidx123, align 4 - %cmp.i191 = icmp slt i32 %55, %56 - br i1 %cmp.i191, label %do.body.i, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit + %cmp.i190 = icmp slt i32 %55, %56 + br i1 %cmp.i190, label %do.body.i, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit do.body.i: ; preds = %do.body249 %idx.ext.i = sext i32 %55 to i64 %add.ptr.i = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i %sub.i = sub nsw i32 %56, %55 - %conv.i192 = sext i32 %sub.i to i64 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i, ptr readonly align 1 %reorderCodes.0, i64 %conv.i192, i1 false) - %.pre277 = load i32, ptr %arrayidx123, align 4 + %conv.i191 = sext i32 %sub.i to i64 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i, ptr readonly align 1 %reorderCodes.0, i64 %conv.i191, i1 false) + %.pre276 = load i32, ptr %arrayidx123, align 4 br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit _ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit: ; preds = %do.body249, %do.body.i - %57 = phi i32 [ %56, %do.body249 ], [ %.pre277, %do.body.i ] + %57 = phi i32 [ %56, %do.body249 ], [ %.pre276, %do.body.i ] %58 = load i32, ptr %arrayidx129, align 4 - %cmp.i195 = icmp slt i32 %57, %58 - br i1 %cmp.i195, label %do.body.i196, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit201 + %cmp.i194 = icmp slt i32 %57, %58 + br i1 %cmp.i194, label %do.body.i195, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit200 -do.body.i196: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit +do.body.i195: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit %59 = load ptr, ptr %reorderTable.i, align 8 - %idx.ext.i197 = sext i32 %57 to i64 - %add.ptr.i198 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i197 - %sub.i199 = sub nsw i32 %58, %57 - %conv.i200 = sext i32 %sub.i199 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i198, ptr readonly align 1 %59, i64 %conv.i200, i1 false) - br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit201 - -_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit201: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit, %do.body.i196 - %60 = load i32, ptr %arrayidx154273, align 4 + %idx.ext.i196 = sext i32 %57 to i64 + %add.ptr.i197 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i196 + %sub.i198 = sub nsw i32 %58, %57 + %conv.i199 = sext i32 %sub.i198 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i197, ptr readonly align 1 %59, i64 %conv.i199, i1 false) + br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit200 + +_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit200: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit, %do.body.i195 + %60 = load i32, ptr %arrayidx154272, align 4 %61 = load i32, ptr %arrayidx164, align 4 - %cmp.i204 = icmp slt i32 %60, %61 - br i1 %cmp.i204, label %do.body.i205, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit210 + %cmp.i203 = icmp slt i32 %60, %61 + br i1 %cmp.i203, label %do.body.i204, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit209 -do.body.i205: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit201 +do.body.i204: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit200 %ces = getelementptr inbounds i8, ptr %data, i64 16 %62 = load ptr, ptr %ces, align 8 - %idx.ext.i206 = sext i32 %60 to i64 - %add.ptr.i207 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i206 - %sub.i208 = sub nsw i32 %61, %60 - %conv.i209 = sext i32 %sub.i208 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i207, ptr readonly align 1 %62, i64 %conv.i209, i1 false) - br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit210 - -_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit210: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit201, %do.body.i205 + %idx.ext.i205 = sext i32 %60 to i64 + %add.ptr.i206 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i205 + %sub.i207 = sub nsw i32 %61, %60 + %conv.i208 = sext i32 %sub.i207 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i206, ptr readonly align 1 %62, i64 %conv.i208, i1 false) + br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit209 + +_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit209: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit200, %do.body.i204 %63 = load i32, ptr %arrayidx165, align 4 %64 = load i32, ptr %arrayidx171, align 4 - %cmp.i213 = icmp slt i32 %63, %64 - br i1 %cmp.i213, label %do.body.i214, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit219 + %cmp.i212 = icmp slt i32 %63, %64 + br i1 %cmp.i212, label %do.body.i213, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit218 -do.body.i214: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit210 +do.body.i213: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit209 %ce32s258 = getelementptr inbounds i8, ptr %data, i64 8 %65 = load ptr, ptr %ce32s258, align 8 - %idx.ext.i215 = sext i32 %63 to i64 - %add.ptr.i216 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i215 - %sub.i217 = sub nsw i32 %64, %63 - %conv.i218 = sext i32 %sub.i217 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i216, ptr readonly align 1 %65, i64 %conv.i218, i1 false) - %.pre278 = load i32, ptr %arrayidx171, align 4 - br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit219 - -_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit219: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit210, %do.body.i214 - %66 = phi i32 [ %64, %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit210 ], [ %.pre278, %do.body.i214 ] + %idx.ext.i214 = sext i32 %63 to i64 + %add.ptr.i215 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i214 + %sub.i216 = sub nsw i32 %64, %63 + %conv.i217 = sext i32 %sub.i216 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i215, ptr readonly align 1 %65, i64 %conv.i217, i1 false) + %.pre277 = load i32, ptr %arrayidx171, align 4 + br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit218 + +_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit218: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit209, %do.body.i213 + %66 = phi i32 [ %64, %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit209 ], [ %.pre277, %do.body.i213 ] %67 = load i32, ptr %arrayidx174, align 4 - %cmp.i222 = icmp slt i32 %66, %67 - br i1 %cmp.i222, label %do.body.i223, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit228 - -do.body.i223: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit219 - %idx.ext.i224 = sext i32 %66 to i64 - %add.ptr.i225 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i224 - %sub.i226 = sub nsw i32 %67, %66 - %conv.i227 = sext i32 %sub.i226 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i225, ptr readonly align 1 %rootElements, i64 %conv.i227, i1 false) - %.pre279 = load i32, ptr %arrayidx174, align 4 - br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit228 - -_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit228: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit219, %do.body.i223 - %68 = phi i32 [ %67, %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit219 ], [ %.pre279, %do.body.i223 ] + %cmp.i221 = icmp slt i32 %66, %67 + br i1 %cmp.i221, label %do.body.i222, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit227 + +do.body.i222: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit218 + %idx.ext.i223 = sext i32 %66 to i64 + %add.ptr.i224 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i223 + %sub.i225 = sub nsw i32 %67, %66 + %conv.i226 = sext i32 %sub.i225 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i224, ptr readonly align 1 %rootElements, i64 %conv.i226, i1 false) + %.pre278 = load i32, ptr %arrayidx174, align 4 + br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit227 + +_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit227: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit218, %do.body.i222 + %68 = phi i32 [ %67, %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit218 ], [ %.pre278, %do.body.i222 ] %69 = load i32, ptr %arrayidx181, align 4 - %cmp.i231 = icmp slt i32 %68, %69 - br i1 %cmp.i231, label %do.body.i232, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit237 + %cmp.i230 = icmp slt i32 %68, %69 + br i1 %cmp.i230, label %do.body.i231, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit236 -do.body.i232: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit228 +do.body.i231: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit227 %contexts = getelementptr inbounds i8, ptr %data, i64 24 %70 = load ptr, ptr %contexts, align 8 - %idx.ext.i233 = sext i32 %68 to i64 - %add.ptr.i234 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i233 - %sub.i235 = sub nsw i32 %69, %68 - %conv.i236 = sext i32 %sub.i235 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i234, ptr readonly align 1 %70, i64 %conv.i236, i1 false) - br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit237 - -_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit237: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit228, %do.body.i232 + %idx.ext.i232 = sext i32 %68 to i64 + %add.ptr.i233 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i232 + %sub.i234 = sub nsw i32 %69, %68 + %conv.i235 = sext i32 %sub.i234 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i233, ptr readonly align 1 %70, i64 %conv.i235, i1 false) + br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit236 + +_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit236: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit227, %do.body.i231 %71 = load i32, ptr %arrayidx211, align 4 %72 = load i32, ptr %arrayidx215, align 4 - %cmp.i240 = icmp slt i32 %71, %72 - br i1 %cmp.i240, label %do.body.i241, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit246 + %cmp.i239 = icmp slt i32 %71, %72 + br i1 %cmp.i239, label %do.body.i240, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit245 -do.body.i241: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit237 +do.body.i240: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit236 %73 = load ptr, ptr %fastLatinTable, align 8 - %idx.ext.i242 = sext i32 %71 to i64 - %add.ptr.i243 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i242 - %sub.i244 = sub nsw i32 %72, %71 - %conv.i245 = sext i32 %sub.i244 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i243, ptr readonly align 1 %73, i64 %conv.i245, i1 false) - br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit246 - -_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit246: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit237, %do.body.i241 + %idx.ext.i241 = sext i32 %71 to i64 + %add.ptr.i242 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i241 + %sub.i243 = sub nsw i32 %72, %71 + %conv.i244 = sext i32 %sub.i243 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i242, ptr readonly align 1 %73, i64 %conv.i244, i1 false) + br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit245 + +_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit245: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit236, %do.body.i240 %and.i = and i32 %conv1.i, 17 %tobool.not.i = icmp eq i32 %and.i, 0 br i1 %tobool.not.i, label %if.else.i, label %_ZNK6icu_7513UnicodeString9getBufferEv.exit -if.else.i: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit246 +if.else.i: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit245 %and5.i = and i32 %conv1.i, 2 %tobool6.not.i = icmp eq i32 %and5.i, 0 br i1 %tobool6.not.i, label %if.else9.i, label %if.then7.i @@ -779,40 +779,40 @@ if.else9.i: ; preds = %if.else.i %74 = load ptr, ptr %fArray.i, align 8 br label %_ZNK6icu_7513UnicodeString9getBufferEv.exit -_ZNK6icu_7513UnicodeString9getBufferEv.exit: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit246, %if.then7.i, %if.else9.i - %retval.0.i = phi ptr [ %fBuffer.i, %if.then7.i ], [ %74, %if.else9.i ], [ null, %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit246 ] +_ZNK6icu_7513UnicodeString9getBufferEv.exit: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit245, %if.then7.i, %if.else9.i + %retval.0.i = phi ptr [ %fBuffer.i, %if.then7.i ], [ %74, %if.else9.i ], [ null, %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit245 ] %75 = load i32, ptr %arrayidx215, align 4 %76 = load i32, ptr %arrayidx238, align 4 - %cmp.i249 = icmp slt i32 %75, %76 - br i1 %cmp.i249, label %do.body.i250, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit255 - -do.body.i250: ; preds = %_ZNK6icu_7513UnicodeString9getBufferEv.exit - %idx.ext.i251 = sext i32 %75 to i64 - %add.ptr.i252 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i251 - %sub.i253 = sub nsw i32 %76, %75 - %conv.i254 = sext i32 %sub.i253 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i252, ptr readonly align 1 %retval.0.i, i64 %conv.i254, i1 false) - %.pre280 = load i32, ptr %arrayidx238, align 4 - br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit255 - -_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit255: ; preds = %_ZNK6icu_7513UnicodeString9getBufferEv.exit, %do.body.i250 - %77 = phi i32 [ %76, %_ZNK6icu_7513UnicodeString9getBufferEv.exit ], [ %.pre280, %do.body.i250 ] + %cmp.i248 = icmp slt i32 %75, %76 + br i1 %cmp.i248, label %do.body.i249, label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit254 + +do.body.i249: ; preds = %_ZNK6icu_7513UnicodeString9getBufferEv.exit + %idx.ext.i250 = sext i32 %75 to i64 + %add.ptr.i251 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i250 + %sub.i252 = sub nsw i32 %76, %75 + %conv.i253 = sext i32 %sub.i252 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i251, ptr readonly align 1 %retval.0.i, i64 %conv.i253, i1 false) + %.pre279 = load i32, ptr %arrayidx238, align 4 + br label %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit254 + +_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit254: ; preds = %_ZNK6icu_7513UnicodeString9getBufferEv.exit, %do.body.i249 + %77 = phi i32 [ %76, %_ZNK6icu_7513UnicodeString9getBufferEv.exit ], [ %.pre279, %do.body.i249 ] %78 = load i32, ptr %arrayidx243, align 4 - %cmp.i258 = icmp slt i32 %77, %78 - br i1 %cmp.i258, label %do.body.i259, label %cleanup + %cmp.i257 = icmp slt i32 %77, %78 + br i1 %cmp.i257, label %do.body.i258, label %cleanup -do.body.i259: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit255 +do.body.i258: ; preds = %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit254 %compressibleBytes = getelementptr inbounds i8, ptr %data, i64 72 %79 = load ptr, ptr %compressibleBytes, align 8 - %idx.ext.i260 = sext i32 %77 to i64 - %add.ptr.i261 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i260 - %sub.i262 = sub nsw i32 %78, %77 - %conv.i263 = sext i32 %sub.i262 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i261, ptr readonly align 1 %79, i64 %conv.i263, i1 false) + %idx.ext.i259 = sext i32 %77 to i64 + %add.ptr.i260 = getelementptr inbounds i8, ptr %dest.addr.0, i64 %idx.ext.i259 + %sub.i261 = sub nsw i32 %78, %77 + %conv.i262 = sext i32 %sub.i261 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i260, ptr readonly align 1 %79, i64 %conv.i262, i1 false) br label %cleanup -cleanup: ; preds = %do.body.i259, %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit255, %if.then246 - %retval.2 = add nsw i32 %spec.select178, %headerSize.0 +cleanup: ; preds = %do.body.i258, %_ZN6icu_7519CollationDataWriter8copyDataEPKiiPKvPh.exit254, %if.then246 + %retval.2 = add nsw i32 %spec.select177, %headerSize.0 call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %scripts) #12 br label %cleanup269 @@ -828,14 +828,14 @@ cleanup269: ; preds = %for.end, %cleanup, br label %return ehcleanup270: ; preds = %lpad47.loopexit, %lpad47.loopexit.split-lp, %ehcleanup - %.pn171 = phi { ptr, i32 } [ %.pn, %ehcleanup ], [ %lpad.loopexit, %lpad47.loopexit ], [ %lpad.loopexit.split-lp, %lpad47.loopexit.split-lp ] + %.pn170 = phi { ptr, i32 } [ %.pn, %ehcleanup ], [ %lpad.loopexit, %lpad47.loopexit ], [ %lpad.loopexit.split-lp, %lpad47.loopexit.split-lp ] call void @_ZN6icu_759UVector32D1Ev(ptr noundef nonnull align 8 dereferenceable(32) %codesAndRanges) #12 br label %ehcleanup272 ehcleanup272: ; preds = %ehcleanup270, %lpad - %.pn171.pn = phi { ptr, i32 } [ %.pn171, %ehcleanup270 ], [ %5, %lpad ] + %.pn170.pn = phi { ptr, i32 } [ %.pn170, %ehcleanup270 ], [ %5, %lpad ] call void @_ZN6icu_7510UnicodeSetD1Ev(ptr noundef nonnull align 8 dereferenceable(200) %unsafeBackwardSet) #12 - resume { ptr, i32 } %.pn171.pn + resume { ptr, i32 } %.pn170.pn return: ; preds = %entry, %cleanup269, %if.then3 %retval.0 = phi i32 [ 0, %if.then3 ], [ %retval.1, %cleanup269 ], [ 0, %entry ] diff --git a/bench/icu/optimized/utrie.ll b/bench/icu/optimized/utrie.ll index 0c1a3e2eeae..5946b013527 100644 --- a/bench/icu/optimized/utrie.ll +++ b/bench/icu/optimized/utrie.ll @@ -1658,18 +1658,18 @@ if.end: ; preds = %lor.lhs.false if.end14: ; preds = %if.end %mul12 = shl nuw nsw i32 %spec.select, 2 - %add13 = or disjoint i32 %mul12, 4160 - %cmp15 = icmp slt i32 %length, %add13 + %actualLength.0 = or disjoint i32 %mul12, 4160 + %cmp15 = icmp slt i32 %length, %actualLength.0 br i1 %cmp15, label %if.then16, label %if.else64 if.end14.thread: ; preds = %if.end - %mul79 = shl nuw nsw i32 %spec.select, 1 - %add10 = add nuw nsw i32 %mul79, 4160 - %cmp1581 = icmp slt i32 %length, %add10 + %mul9 = shl nuw nsw i32 %spec.select, 1 + %actualLength.080 = add nuw nsw i32 %mul9, 4160 + %cmp1581 = icmp slt i32 %length, %actualLength.080 br i1 %cmp1581, label %if.then16, label %if.then20 if.then16: ; preds = %if.end14.thread, %if.end14 - %actualLength.082 = phi i32 [ %add10, %if.end14.thread ], [ %add13, %if.end14 ] + %actualLength.082 = phi i32 [ %actualLength.080, %if.end14.thread ], [ %actualLength.0, %if.end14 ] store i32 15, ptr %pErrorCode, align 4 br label %return @@ -1777,7 +1777,7 @@ for.body98: ; preds = %for.end92, %for.bod br i1 %exitcond126.not, label %if.end105, label %for.body98, !llvm.loop !32 if.end105: ; preds = %for.body56, %for.body98, %for.end92, %for.end50 - %actualLength.08387 = phi i32 [ %add13, %for.end92 ], [ %add10, %for.end50 ], [ %add13, %for.body98 ], [ %add10, %for.body56 ] + %actualLength.08387 = phi i32 [ %actualLength.0, %for.end92 ], [ %actualLength.080, %for.end50 ], [ %actualLength.0, %for.body98 ], [ %actualLength.080, %for.body56 ] %getFoldingOffset = getelementptr inbounds i8, ptr %trie, i64 16 store ptr @utrie_defaultGetFoldingOffset_75, ptr %getFoldingOffset, align 8 br label %return diff --git a/bench/jemalloc/optimized/tcache.ll b/bench/jemalloc/optimized/tcache.ll index 3e3b1f46add..445dc66c409 100644 --- a/bench/jemalloc/optimized/tcache.ll +++ b/bench/jemalloc/optimized/tcache.ll @@ -380,8 +380,8 @@ entry: %conv.i8 = zext i32 %sub.i to i64 call fastcc void @tcache_bin_flush_edatas_lookup(ptr noundef %tsd, ptr noundef nonnull %ptrs.i, i64 noundef %conv.i8, ptr noundef nonnull %vla.i) %vla7.i = alloca ptr, i64 %5, align 16 - %cmp.i.not214 = icmp eq i32 %sub.i, 0 - br i1 %cmp.i.not214, label %if.then132.i, label %while.body.i.lr.ph + %cmp.i.not213 = icmp eq i32 %sub.i, 0 + br i1 %cmp.i.not213, label %if.then132.i, label %while.body.i.lr.ph while.body.i.lr.ph: ; preds = %entry %idxprom.i160 = zext i32 %binind to i64 @@ -398,17 +398,17 @@ while.body.i.lr.ph: ; preds = %entry for.cond119.i.preheader: ; preds = %arena_decay_ticks.exit %6 = trunc nuw i8 %merged_stats.i.1 to i1 - %cmp120.i219.not = icmp eq i32 %dalloc_count.i.2, 0 - br i1 %cmp120.i219.not, label %for.end128.i, label %for.body122.i.preheader + %cmp120.i218.not = icmp eq i32 %dalloc_count.i.2, 0 + br i1 %cmp120.i218.not, label %for.end128.i, label %for.body122.i.preheader for.body122.i.preheader: ; preds = %for.cond119.i.preheader - %wide.trip.count225 = zext i32 %dalloc_count.i.2 to i64 + %wide.trip.count224 = zext i32 %dalloc_count.i.2 to i64 br label %for.body122.i while.body.i: ; preds = %while.body.i.lr.ph, %arena_decay_ticks.exit - %nflush.addr.i.0217 = phi i32 [ %sub.i, %while.body.i.lr.ph ], [ %ndeferred.i.1, %arena_decay_ticks.exit ] - %dalloc_count.i.0216 = phi i32 [ 0, %while.body.i.lr.ph ], [ %dalloc_count.i.2, %arena_decay_ticks.exit ] - %merged_stats.i.0215 = phi i8 [ 0, %while.body.i.lr.ph ], [ %merged_stats.i.1, %arena_decay_ticks.exit ] + %nflush.addr.i.0216 = phi i32 [ %sub.i, %while.body.i.lr.ph ], [ %ndeferred.i.1, %arena_decay_ticks.exit ] + %dalloc_count.i.0215 = phi i32 [ 0, %while.body.i.lr.ph ], [ %dalloc_count.i.2, %arena_decay_ticks.exit ] + %merged_stats.i.0214 = phi i8 [ 0, %while.body.i.lr.ph ], [ %merged_stats.i.1, %arena_decay_ticks.exit ] %7 = load ptr, ptr %vla.i, align 16 %.val = load i64, ptr %7, align 8 %idxprom.i = and i64 %.val, 4095 @@ -456,7 +456,7 @@ malloc_mutex_lock.exit: ; preds = %if.end.i, %if.then. br i1 %cmp25.i, label %land.lhs.true27.i, label %if.end67.i land.lhs.true27.i: ; preds = %malloc_mutex_lock.exit - %tobool28.i = trunc nuw i8 %merged_stats.i.0215 to i1 + %tobool28.i = trunc nuw i8 %merged_stats.i.0214 to i1 br i1 %tobool28.i, label %if.end67.i, label %if.then31.i if.then31.i: ; preds = %land.lhs.true27.i @@ -473,19 +473,19 @@ if.then31.i: ; preds = %land.lhs.true27.i br label %if.end67.i if.end67.i: ; preds = %if.then31.i, %land.lhs.true27.i, %malloc_mutex_lock.exit - %merged_stats.i.1 = phi i8 [ %merged_stats.i.0215, %land.lhs.true27.i ], [ 1, %if.then31.i ], [ %merged_stats.i.0215, %malloc_mutex_lock.exit ] + %merged_stats.i.1 = phi i8 [ %merged_stats.i.0214, %land.lhs.true27.i ], [ 1, %if.then31.i ], [ %merged_stats.i.0214, %malloc_mutex_lock.exit ] %17 = load i32, ptr %arrayidx.i, align 4 %18 = load ptr, ptr %ptr.i, align 8 %conv.i167 = zext i32 %17 to i64 %slabcur.i = getelementptr inbounds i8, ptr %add.ptr2.i, i64 192 - %wide.trip.count = zext i32 %nflush.addr.i.0217 to i64 + %wide.trip.count = zext i32 %nflush.addr.i.0216 to i64 br label %for.body75.i for.body75.i: ; preds = %if.end67.i, %for.inc108.i %indvars.iv = phi i64 [ 0, %if.end67.i ], [ %indvars.iv.next, %for.inc108.i ] - %dalloc_count.i.1213 = phi i32 [ %dalloc_count.i.0216, %if.end67.i ], [ %dalloc_count.i.2, %for.inc108.i ] - %ndeferred.i.0212 = phi i32 [ 0, %if.end67.i ], [ %ndeferred.i.1, %for.inc108.i ] - %dalloc_bin_info.i.sroa.4.1210 = phi i64 [ 0, %if.end67.i ], [ %dalloc_bin_info.i.sroa.4.2, %for.inc108.i ] + %dalloc_count.i.1212 = phi i32 [ %dalloc_count.i.0215, %if.end67.i ], [ %dalloc_count.i.2, %for.inc108.i ] + %ndeferred.i.0211 = phi i32 [ 0, %if.end67.i ], [ %ndeferred.i.1, %for.inc108.i ] + %dalloc_bin_info.i.sroa.4.1209 = phi i64 [ 0, %if.end67.i ], [ %dalloc_bin_info.i.sroa.4.2, %for.inc108.i ] %arrayidx79.i = getelementptr inbounds ptr, ptr %18, i64 %indvars.iv %19 = load ptr, ptr %arrayidx79.i, align 8 %arrayidx81.i = getelementptr inbounds %union.emap_batch_lookup_result_u, ptr %vla.i, i64 %indvars.iv @@ -497,44 +497,45 @@ for.body75.i: ; preds = %if.end67.i, %for.in br i1 %cmp.i30, label %land.rhs.i32, label %if.then87.i land.rhs.i32: ; preds = %for.body75.i - %and.i165209 = xor i64 %.val147, %.val148 - %23 = and i64 %and.i165209, 17317308137472 - %cmp2.i34 = icmp eq i64 %23, 0 + %and.i165 = lshr i64 %.val147, 38 + %23 = xor i64 %and.i165, %and.i + %24 = and i64 %23, 63 + %cmp2.i34 = icmp eq i64 %24, 0 br i1 %cmp2.i34, label %if.then96.i, label %if.then87.i if.then87.i: ; preds = %for.body75.i, %land.rhs.i32 - %idxprom89.i = zext i32 %ndeferred.i.0212 to i64 + %idxprom89.i = zext i32 %ndeferred.i.0211 to i64 %arrayidx90.i = getelementptr inbounds ptr, ptr %18, i64 %idxprom89.i store ptr %19, ptr %arrayidx90.i, align 8 %arrayidx92.i = getelementptr inbounds %union.emap_batch_lookup_result_u, ptr %vla.i, i64 %idxprom89.i store ptr %20, ptr %arrayidx92.i, align 8 - %inc93.i = add i32 %ndeferred.i.0212, 1 + %inc93.i = add i32 %ndeferred.i.0211, 1 br label %for.inc108.i if.then96.i: ; preds = %land.rhs.i32 - %24 = ptrtoint ptr %19 to i64 - %25 = getelementptr i8, ptr %20, i64 8 - %.val150 = load ptr, ptr %25, align 8 - %26 = ptrtoint ptr %.val150 to i64 - %sub.i83 = sub i64 %24, %26 + %25 = ptrtoint ptr %19 to i64 + %26 = getelementptr i8, ptr %20, i64 8 + %.val150 = load ptr, ptr %26, align 8 + %27 = ptrtoint ptr %.val150 to i64 + %sub.i83 = sub i64 %25, %27 %mul.i = mul i64 %sub.i83, %conv.i167 %shr.i = lshr i64 %mul.i, 32 - %27 = getelementptr inbounds i8, ptr %20, i64 64 + %28 = getelementptr inbounds i8, ptr %20, i64 64 %shr.i168 = lshr i64 %mul.i, 38 - %arrayidx.i169 = getelementptr inbounds i64, ptr %27, i64 %shr.i168 - %28 = load i64, ptr %arrayidx.i169, align 8 + %arrayidx.i169 = getelementptr inbounds i64, ptr %28, i64 %shr.i168 + %29 = load i64, ptr %arrayidx.i169, align 8 %and.i170 = and i64 %shr.i, 63 %shl.i = shl nuw i64 1, %and.i170 - %xor.i = xor i64 %shl.i, %28 + %xor.i = xor i64 %shl.i, %29 store i64 %xor.i, ptr %arrayidx.i169, align 8 %add.i171 = add i64 %.val147, 268435456 store i64 %add.i171, ptr %20, align 8 - %inc.i46 = add i64 %dalloc_bin_info.i.sroa.4.1210, 1 + %inc.i46 = add i64 %dalloc_bin_info.i.sroa.4.1209, 1 %and.i172 = lshr i64 %add.i171, 28 - %29 = trunc i64 %and.i172 to i32 - %conv.i173 = and i32 %29, 1023 - %30 = load i32, ptr %nregs.i47, align 8 - %cmp.i48 = icmp eq i32 %conv.i173, %30 + %30 = trunc i64 %and.i172 to i32 + %conv.i173 = and i32 %30, 1023 + %31 = load i32, ptr %nregs.i47, align 8 + %cmp.i48 = icmp eq i32 %conv.i173, %31 br i1 %cmp.i48, label %if.then98.i, label %if.else.i49 if.else.i49: ; preds = %if.then96.i @@ -542,8 +543,8 @@ if.else.i49: ; preds = %if.then96.i br i1 %cmp5.i, label %land.lhs.true.i51, label %for.inc108.i land.lhs.true.i51: ; preds = %if.else.i49 - %31 = load ptr, ptr %slabcur.i, align 8 - %cmp6.i.not = icmp eq ptr %20, %31 + %32 = load ptr, ptr %slabcur.i, align 8 + %cmp6.i.not = icmp eq ptr %20, %32 br i1 %cmp6.i.not, label %for.inc108.i, label %if.then7.i if.then7.i: ; preds = %land.lhs.true.i51 @@ -552,28 +553,28 @@ if.then7.i: ; preds = %land.lhs.true.i51 if.then98.i: ; preds = %if.then96.i tail call void @arena_dalloc_bin_locked_handle_newly_empty(ptr noundef %tsd, ptr noundef %9, ptr noundef nonnull %20, ptr noundef %add.ptr2.i) #14 - %idxprom99.i = zext i32 %dalloc_count.i.1213 to i64 + %idxprom99.i = zext i32 %dalloc_count.i.1212 to i64 %arrayidx100.i = getelementptr inbounds ptr, ptr %vla7.i, i64 %idxprom99.i store ptr %20, ptr %arrayidx100.i, align 8 - %inc101.i = add i32 %dalloc_count.i.1213, 1 + %inc101.i = add i32 %dalloc_count.i.1212, 1 br label %for.inc108.i for.inc108.i: ; preds = %if.then7.i, %land.lhs.true.i51, %if.else.i49, %if.then98.i, %if.then87.i - %dalloc_bin_info.i.sroa.4.2 = phi i64 [ %inc.i46, %if.then98.i ], [ %dalloc_bin_info.i.sroa.4.1210, %if.then87.i ], [ %inc.i46, %if.else.i49 ], [ %inc.i46, %land.lhs.true.i51 ], [ %inc.i46, %if.then7.i ] - %ndeferred.i.1 = phi i32 [ %ndeferred.i.0212, %if.then98.i ], [ %inc93.i, %if.then87.i ], [ %ndeferred.i.0212, %if.else.i49 ], [ %ndeferred.i.0212, %land.lhs.true.i51 ], [ %ndeferred.i.0212, %if.then7.i ] - %dalloc_count.i.2 = phi i32 [ %inc101.i, %if.then98.i ], [ %dalloc_count.i.1213, %if.then87.i ], [ %dalloc_count.i.1213, %if.else.i49 ], [ %dalloc_count.i.1213, %land.lhs.true.i51 ], [ %dalloc_count.i.1213, %if.then7.i ] + %dalloc_bin_info.i.sroa.4.2 = phi i64 [ %inc.i46, %if.then98.i ], [ %dalloc_bin_info.i.sroa.4.1209, %if.then87.i ], [ %inc.i46, %if.else.i49 ], [ %inc.i46, %land.lhs.true.i51 ], [ %inc.i46, %if.then7.i ] + %ndeferred.i.1 = phi i32 [ %ndeferred.i.0211, %if.then98.i ], [ %inc93.i, %if.then87.i ], [ %ndeferred.i.0211, %if.else.i49 ], [ %ndeferred.i.0211, %land.lhs.true.i51 ], [ %ndeferred.i.0211, %if.then7.i ] + %dalloc_count.i.2 = phi i32 [ %inc101.i, %if.then98.i ], [ %dalloc_count.i.1212, %if.then87.i ], [ %dalloc_count.i.1212, %if.else.i49 ], [ %dalloc_count.i.1212, %land.lhs.true.i51 ], [ %dalloc_count.i.1212, %if.then7.i ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %if.then112.i, label %for.body75.i, !llvm.loop !5 if.then112.i: ; preds = %for.inc108.i %ndalloc1.i = getelementptr inbounds i8, ptr %add.ptr2.i, i64 120 - %32 = load i64, ptr %ndalloc1.i, align 8 - %add.i61 = add i64 %32, %dalloc_bin_info.i.sroa.4.2 + %33 = load i64, ptr %ndalloc1.i, align 8 + %add.i61 = add i64 %33, %dalloc_bin_info.i.sroa.4.2 store i64 %add.i61, ptr %ndalloc1.i, align 8 %curregs.i = getelementptr inbounds i8, ptr %add.ptr2.i, i64 136 - %33 = load i64, ptr %curregs.i, align 8 - %sub.i62 = sub i64 %33, %dalloc_bin_info.i.sroa.4.2 + %34 = load i64, ptr %curregs.i, align 8 + %sub.i62 = sub i64 %34, %dalloc_bin_info.i.sroa.4.2 store i64 %sub.i62, ptr %curregs.i, align 8 %locked.i174 = getelementptr inbounds i8, ptr %add.ptr2.i, i64 64 store atomic i8 0, ptr %locked.i174 monotonic, align 1 @@ -581,16 +582,16 @@ if.then112.i: ; preds = %for.inc108.i br i1 %cmp.i.i, label %arena_decay_ticks.exit, label %if.end.i66 if.end.i66: ; preds = %if.then112.i - %sub.i9.neg = sub i32 %ndeferred.i.1, %nflush.addr.i.0217 - %34 = load i8, ptr %cant_access_tsd_items_directly_use_a_getter_or_setter_reentrancy_level.i, align 1 - %35 = load i32, ptr %cant_access_tsd_items_directly_use_a_getter_or_setter_arena_decay_ticker.i, align 4 - %sub.i175 = add i32 %35, %sub.i9.neg + %sub.i9.neg = sub i32 %ndeferred.i.1, %nflush.addr.i.0216 + %35 = load i8, ptr %cant_access_tsd_items_directly_use_a_getter_or_setter_reentrancy_level.i, align 1 + %36 = load i32, ptr %cant_access_tsd_items_directly_use_a_getter_or_setter_arena_decay_ticker.i, align 4 + %sub.i175 = add i32 %36, %sub.i9.neg store i32 %sub.i175, ptr %cant_access_tsd_items_directly_use_a_getter_or_setter_arena_decay_ticker.i, align 4 %cmp.i176 = icmp slt i32 %sub.i175, 0 br i1 %cmp.i176, label %if.then.i177, label %arena_decay_ticks.exit if.then.i177: ; preds = %if.end.i66 - %cmp.i70 = icmp sgt i8 %34, 0 + %cmp.i70 = icmp sgt i8 %35, 0 br i1 %cmp.i70, label %ticker_geom_ticks.exit, label %if.then15.i ticker_geom_ticks.exit: ; preds = %if.then.i177 @@ -598,16 +599,16 @@ ticker_geom_ticks.exit: ; preds = %if.then.i177 br label %arena_decay_ticks.exit if.then15.i: ; preds = %if.then.i177 - %36 = load i64, ptr %cant_access_tsd_items_directly_use_a_getter_or_setter_prng_state.i, align 8 - %mul.i.i.i = mul i64 %36, 6364136223846793005 + %37 = load i64, ptr %cant_access_tsd_items_directly_use_a_getter_or_setter_prng_state.i, align 8 + %mul.i.i.i = mul i64 %37, 6364136223846793005 %add.i.i.i = add i64 %mul.i.i.i, 1442695040888963407 store i64 %add.i.i.i, ptr %cant_access_tsd_items_directly_use_a_getter_or_setter_prng_state.i, align 8 %shr.i.i.i = lshr i64 %add.i.i.i, 58 - %37 = load i32, ptr %nticks.i.i, align 4 - %conv.i.i178 = sext i32 %37 to i64 + %38 = load i32, ptr %nticks.i.i, align 4 + %conv.i.i178 = sext i32 %38 to i64 %arrayidx.i.i = getelementptr inbounds [64 x i8], ptr @ticker_geom_table, i64 0, i64 %shr.i.i.i - %38 = load i8, ptr %arrayidx.i.i, align 1 - %conv1.i.i = zext i8 %38 to i64 + %39 = load i8, ptr %arrayidx.i.i, align 1 + %conv1.i.i = zext i8 %39 to i64 %mul.i.i = mul nsw i64 %conv1.i.i, %conv.i.i178 %div.i.i = udiv i64 %mul.i.i, 61 %conv2.i.i = trunc i64 %div.i.i to i32 @@ -620,18 +621,18 @@ arena_decay_ticks.exit: ; preds = %if.end.i66, %ticker br i1 %cmp.i.not, label %for.cond119.i.preheader, label %while.body.i, !llvm.loop !7 for.body122.i: ; preds = %for.body122.i.preheader, %for.body122.i - %indvars.iv222 = phi i64 [ 0, %for.body122.i.preheader ], [ %indvars.iv.next223, %for.body122.i ] - %arrayidx124.i = getelementptr inbounds ptr, ptr %vla7.i, i64 %indvars.iv222 - %39 = load ptr, ptr %arrayidx124.i, align 8 - %edata.val.i = load i64, ptr %39, align 8 + %indvars.iv221 = phi i64 [ 0, %for.body122.i.preheader ], [ %indvars.iv.next222, %for.body122.i ] + %arrayidx124.i = getelementptr inbounds ptr, ptr %vla7.i, i64 %indvars.iv221 + %40 = load ptr, ptr %arrayidx124.i, align 8 + %edata.val.i = load i64, ptr %40, align 8 %conv.i.i179 = and i64 %edata.val.i, 4095 %arrayidx.i180 = getelementptr inbounds [0 x %struct.atomic_p_t], ptr @arenas, i64 0, i64 %conv.i.i179 - %40 = load atomic i64, ptr %arrayidx.i180 monotonic, align 8 - %41 = inttoptr i64 %40 to ptr - tail call void @arena_slab_dalloc(ptr noundef %tsd, ptr noundef %41, ptr noundef nonnull %39) #14 - %indvars.iv.next223 = add nuw nsw i64 %indvars.iv222, 1 - %exitcond226.not = icmp eq i64 %indvars.iv.next223, %wide.trip.count225 - br i1 %exitcond226.not, label %for.end128.i, label %for.body122.i, !llvm.loop !8 + %41 = load atomic i64, ptr %arrayidx.i180 monotonic, align 8 + %42 = inttoptr i64 %41 to ptr + tail call void @arena_slab_dalloc(ptr noundef %tsd, ptr noundef %42, ptr noundef nonnull %40) #14 + %indvars.iv.next222 = add nuw nsw i64 %indvars.iv221, 1 + %exitcond225.not = icmp eq i64 %indvars.iv.next222, %wide.trip.count224 + br i1 %exitcond225.not, label %for.end128.i, label %for.body122.i, !llvm.loop !8 for.end128.i: ; preds = %for.body122.i, %for.cond119.i.preheader br i1 %6, label %tcache_bin_flush_impl.exit, label %if.then132.i @@ -651,32 +652,32 @@ if.then.i184: ; preds = %if.then132.i if.end.i186: ; preds = %if.then.i184, %if.then132.i %n_lock_ops.i.i187 = getelementptr inbounds i8, ptr %call133.i, i64 56 - %42 = load i64, ptr %n_lock_ops.i.i187, align 8 - %inc.i.i188 = add i64 %42, 1 + %43 = load i64, ptr %n_lock_ops.i.i187, align 8 + %inc.i.i188 = add i64 %43, 1 store i64 %inc.i.i188, ptr %n_lock_ops.i.i187, align 8 %prev_owner.i.i189 = getelementptr inbounds i8, ptr %call133.i, i64 48 - %43 = load ptr, ptr %prev_owner.i.i189, align 8 - %cmp.not.i.i190 = icmp eq ptr %43, %tsd + %44 = load ptr, ptr %prev_owner.i.i189, align 8 + %cmp.not.i.i190 = icmp eq ptr %44, %tsd br i1 %cmp.not.i.i190, label %malloc_mutex_lock.exit194, label %if.then.i.i191 if.then.i.i191: ; preds = %if.end.i186 store ptr %tsd, ptr %prev_owner.i.i189, align 8 %n_owner_switches.i.i192 = getelementptr inbounds i8, ptr %call133.i, i64 40 - %44 = load i64, ptr %n_owner_switches.i.i192, align 8 - %inc2.i.i193 = add i64 %44, 1 + %45 = load i64, ptr %n_owner_switches.i.i192, align 8 + %inc2.i.i193 = add i64 %45, 1 store i64 %inc2.i.i193, ptr %n_owner_switches.i.i192, align 8 br label %malloc_mutex_lock.exit194 malloc_mutex_lock.exit194: ; preds = %if.end.i186, %if.then.i.i191 %nflushes136.i = getelementptr inbounds i8, ptr %call133.i, i64 152 - %45 = load i64, ptr %nflushes136.i, align 8 - %inc137.i = add i64 %45, 1 + %46 = load i64, ptr %nflushes136.i, align 8 + %inc137.i = add i64 %46, 1 store i64 %inc137.i, ptr %nflushes136.i, align 8 %tstats138.i = getelementptr inbounds i8, ptr %cache_bin, i64 8 - %46 = load i64, ptr %tstats138.i, align 8 + %47 = load i64, ptr %tstats138.i, align 8 %nrequests141.i = getelementptr inbounds i8, ptr %call133.i, i64 128 - %47 = load i64, ptr %nrequests141.i, align 8 - %add142.i = add i64 %47, %46 + %48 = load i64, ptr %nrequests141.i, align 8 + %add142.i = add i64 %48, %47 store i64 %add142.i, ptr %nrequests141.i, align 8 store i64 0, ptr %tstats138.i, align 8 %locked.i195 = getelementptr inbounds i8, ptr %call133.i, i64 64 @@ -688,33 +689,33 @@ tcache_bin_flush_impl.exit: ; preds = %malloc_mutex_lock.e call void @llvm.stackrestore.p0(ptr %savedstack) %bin.val.i = load ptr, ptr %cache_bin, align 8 %bin.val7.i = load i16, ptr %0, align 4 - %48 = ptrtoint ptr %bin.val.i to i64 - %conv.i.i.i = trunc i64 %48 to i16 + %49 = ptrtoint ptr %bin.val.i to i64 + %conv.i.i.i = trunc i64 %49 to i16 %sub.i.i.i.i = sub i16 %bin.val7.i, %conv.i.i.i - %49 = lshr i16 %sub.i.i.i.i, 3 - %conv.i198 = zext nneg i16 %49 to i64 + %50 = lshr i16 %sub.i.i.i.i, 3 + %conv.i198 = zext nneg i16 %50 to i64 %sub.i199 = sub nsw i64 %conv.i198, %idx.ext.i %add.ptr.i200 = getelementptr inbounds ptr, ptr %bin.val.i, i64 %idx.ext.i %conv4.i = shl nsw i64 %sub.i199, 3 %mul.i201 = and i64 %conv4.i, 34359738360 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i200, ptr align 8 %bin.val.i, i64 %mul.i201, i1 false) - %50 = load ptr, ptr %cache_bin, align 8 - %add.ptr8.i = getelementptr inbounds ptr, ptr %50, i64 %idx.ext.i + %51 = load ptr, ptr %cache_bin, align 8 + %add.ptr8.i = getelementptr inbounds ptr, ptr %51, i64 %idx.ext.i store ptr %add.ptr8.i, ptr %cache_bin, align 8 %bin.val3.i.i = load i16, ptr %0, align 4 - %51 = ptrtoint ptr %add.ptr8.i to i64 - %conv.i.i8.i = trunc i64 %51 to i16 + %52 = ptrtoint ptr %add.ptr8.i to i64 + %conv.i.i8.i = trunc i64 %52 to i16 %sub.i.i.i9.i = sub i16 %bin.val3.i.i, %conv.i.i8.i - %52 = lshr i16 %sub.i.i.i9.i, 3 - %53 = getelementptr i8, ptr %cache_bin, i64 16 - %bin.val4.i.i = load i16, ptr %53, align 8 + %53 = lshr i16 %sub.i.i.i9.i, 3 + %54 = getelementptr i8, ptr %cache_bin, i64 16 + %bin.val4.i.i = load i16, ptr %54, align 8 %sub.i.i6.i.i = sub i16 %bin.val3.i.i, %bin.val4.i.i - %54 = lshr i16 %sub.i.i6.i.i, 3 - %cmp.i.i202 = icmp ult i16 %52, %54 + %55 = lshr i16 %sub.i.i6.i.i, 3 + %cmp.i.i202 = icmp ult i16 %53, %55 br i1 %cmp.i.i202, label %if.then.i.i203, label %cache_bin_finish_flush.exit if.then.i.i203: ; preds = %tcache_bin_flush_impl.exit - store i16 %conv.i.i8.i, ptr %53, align 8 + store i16 %conv.i.i8.i, ptr %54, align 8 br label %cache_bin_finish_flush.exit cache_bin_finish_flush.exit: ; preds = %tcache_bin_flush_impl.exit, %if.then.i.i203 diff --git a/bench/libjpeg-turbo/optimized/jidctint.c.ll b/bench/libjpeg-turbo/optimized/jidctint.c.ll index 7d7ceae2608..d79362413cd 100644 --- a/bench/libjpeg-turbo/optimized/jidctint.c.ll +++ b/bench/libjpeg-turbo/optimized/jidctint.c.ll @@ -1500,21 +1500,21 @@ define void @jpeg_idct_10x10(ptr nocapture noundef readonly %0, ptr nocapture no br label %148 13: ; preds = %5, %13 - %.0238 = phi i32 [ 0, %5 ], [ %144, %13 ] - %.0212237 = phi ptr [ %6, %5 ], [ %147, %13 ] - %.0214236 = phi ptr [ %10, %5 ], [ %146, %13 ] - %.0215235 = phi ptr [ %2, %5 ], [ %145, %13 ] - %14 = load i16, ptr %.0215235, align 2 + %.0235 = phi i32 [ 0, %5 ], [ %144, %13 ] + %.0212234 = phi ptr [ %6, %5 ], [ %147, %13 ] + %.0214233 = phi ptr [ %10, %5 ], [ %146, %13 ] + %.0215232 = phi ptr [ %2, %5 ], [ %145, %13 ] + %14 = load i16, ptr %.0215232, align 2 %15 = sext i16 %14 to i64 - %16 = load i16, ptr %.0214236, align 2 + %16 = load i16, ptr %.0214233, align 2 %17 = sext i16 %16 to i64 %18 = shl nsw i64 %15, 13 %19 = mul nsw i64 %18, %17 %20 = or disjoint i64 %19, 1024 - %21 = getelementptr inbounds i8, ptr %.0215235, i64 64 + %21 = getelementptr inbounds i8, ptr %.0215232, i64 64 %22 = load i16, ptr %21, align 2 %23 = sext i16 %22 to i64 - %24 = getelementptr inbounds i8, ptr %.0214236, i64 64 + %24 = getelementptr inbounds i8, ptr %.0214233, i64 64 %25 = load i16, ptr %24, align 2 %26 = sext i16 %25 to i64 %27 = mul nsw i64 %26, %23 @@ -1525,17 +1525,17 @@ define void @jpeg_idct_10x10(ptr nocapture noundef readonly %0, ptr nocapture no %.neg220 = mul nsw i64 %27, -11586 %31 = add nsw i64 %.neg220, %20 %32 = ashr i64 %31, 11 - %33 = getelementptr inbounds i8, ptr %.0215235, i64 32 + %33 = getelementptr inbounds i8, ptr %.0215232, i64 32 %34 = load i16, ptr %33, align 2 %35 = sext i16 %34 to i64 - %36 = getelementptr inbounds i8, ptr %.0214236, i64 32 + %36 = getelementptr inbounds i8, ptr %.0214233, i64 32 %37 = load i16, ptr %36, align 2 %38 = sext i16 %37 to i64 %39 = mul nsw i64 %38, %35 - %40 = getelementptr inbounds i8, ptr %.0215235, i64 96 + %40 = getelementptr inbounds i8, ptr %.0215232, i64 96 %41 = load i16, ptr %40, align 2 %42 = sext i16 %41 to i64 - %43 = getelementptr inbounds i8, ptr %.0214236, i64 96 + %43 = getelementptr inbounds i8, ptr %.0214233, i64 96 %44 = load i16, ptr %43, align 2 %45 = sext i16 %44 to i64 %46 = mul nsw i64 %45, %42 @@ -1549,31 +1549,31 @@ define void @jpeg_idct_10x10(ptr nocapture noundef readonly %0, ptr nocapture no %53 = sub nsw i64 %29, %50 %54 = add nsw i64 %51, %30 %55 = sub nsw i64 %30, %51 - %56 = getelementptr inbounds i8, ptr %.0215235, i64 16 + %56 = getelementptr inbounds i8, ptr %.0215232, i64 16 %57 = load i16, ptr %56, align 2 %58 = sext i16 %57 to i64 - %59 = getelementptr inbounds i8, ptr %.0214236, i64 16 + %59 = getelementptr inbounds i8, ptr %.0214233, i64 16 %60 = load i16, ptr %59, align 2 %61 = sext i16 %60 to i64 %62 = mul nsw i64 %61, %58 - %63 = getelementptr inbounds i8, ptr %.0215235, i64 48 + %63 = getelementptr inbounds i8, ptr %.0215232, i64 48 %64 = load i16, ptr %63, align 2 %65 = sext i16 %64 to i64 - %66 = getelementptr inbounds i8, ptr %.0214236, i64 48 + %66 = getelementptr inbounds i8, ptr %.0214233, i64 48 %67 = load i16, ptr %66, align 2 %68 = sext i16 %67 to i64 %69 = mul nsw i64 %68, %65 - %70 = getelementptr inbounds i8, ptr %.0215235, i64 80 + %70 = getelementptr inbounds i8, ptr %.0215232, i64 80 %71 = load i16, ptr %70, align 2 %72 = sext i16 %71 to i64 - %73 = getelementptr inbounds i8, ptr %.0214236, i64 80 + %73 = getelementptr inbounds i8, ptr %.0214233, i64 80 %74 = load i16, ptr %73, align 2 %75 = sext i16 %74 to i64 %76 = mul nsw i64 %75, %72 - %77 = getelementptr inbounds i8, ptr %.0215235, i64 112 + %77 = getelementptr inbounds i8, ptr %.0215232, i64 112 %78 = load i16, ptr %77, align 2 %79 = sext i16 %78 to i64 - %80 = getelementptr inbounds i8, ptr %.0214236, i64 112 + %80 = getelementptr inbounds i8, ptr %.0214233, i64 112 %81 = load i16, ptr %80, align 2 %82 = sext i16 %81 to i64 %83 = mul nsw i64 %82, %79 @@ -1604,68 +1604,68 @@ define void @jpeg_idct_10x10(ptr nocapture noundef readonly %0, ptr nocapture no %107 = add nsw i64 %92, %52 %108 = lshr i64 %107, 11 %109 = trunc i64 %108 to i32 - store i32 %109, ptr %.0212237, align 4 + store i32 %109, ptr %.0212234, align 4 %110 = sub nsw i64 %52, %92 %111 = lshr i64 %110, 11 %112 = trunc i64 %111 to i32 - %113 = getelementptr inbounds i8, ptr %.0212237, i64 288 + %113 = getelementptr inbounds i8, ptr %.0212234, i64 288 store i32 %112, ptr %113, align 4 %114 = add nsw i64 %103, %54 %115 = lshr i64 %114, 11 %116 = trunc i64 %115 to i32 - %117 = getelementptr inbounds i8, ptr %.0212237, i64 32 + %117 = getelementptr inbounds i8, ptr %.0212234, i64 32 store i32 %116, ptr %117, align 4 %118 = sub nsw i64 %54, %103 %119 = lshr i64 %118, 11 %120 = trunc i64 %119 to i32 - %121 = getelementptr inbounds i8, ptr %.0212237, i64 256 + %121 = getelementptr inbounds i8, ptr %.0212234, i64 256 store i32 %120, ptr %121, align 4 %122 = add nsw i64 %100, %32 %123 = trunc i64 %122 to i32 - %124 = getelementptr inbounds i8, ptr %.0212237, i64 64 + %124 = getelementptr inbounds i8, ptr %.0212234, i64 64 store i32 %123, ptr %124, align 4 %125 = sub nsw i64 %32, %100 %126 = trunc i64 %125 to i32 - %127 = getelementptr inbounds i8, ptr %.0212237, i64 224 + %127 = getelementptr inbounds i8, ptr %.0212234, i64 224 store i32 %126, ptr %127, align 4 %128 = add nsw i64 %106, %55 %129 = lshr i64 %128, 11 %130 = trunc i64 %129 to i32 - %131 = getelementptr inbounds i8, ptr %.0212237, i64 96 + %131 = getelementptr inbounds i8, ptr %.0212234, i64 96 store i32 %130, ptr %131, align 4 %132 = sub nsw i64 %55, %106 %133 = lshr i64 %132, 11 %134 = trunc i64 %133 to i32 - %135 = getelementptr inbounds i8, ptr %.0212237, i64 192 + %135 = getelementptr inbounds i8, ptr %.0212234, i64 192 store i32 %134, ptr %135, align 4 %136 = add nsw i64 %95, %53 %137 = lshr i64 %136, 11 %138 = trunc i64 %137 to i32 - %139 = getelementptr inbounds i8, ptr %.0212237, i64 128 + %139 = getelementptr inbounds i8, ptr %.0212234, i64 128 store i32 %138, ptr %139, align 4 %140 = sub nsw i64 %53, %95 %141 = lshr i64 %140, 11 %142 = trunc i64 %141 to i32 - %143 = getelementptr inbounds i8, ptr %.0212237, i64 160 + %143 = getelementptr inbounds i8, ptr %.0212234, i64 160 store i32 %142, ptr %143, align 4 - %144 = add nuw nsw i32 %.0238, 1 - %145 = getelementptr inbounds i8, ptr %.0215235, i64 2 - %146 = getelementptr inbounds i8, ptr %.0214236, i64 2 - %147 = getelementptr inbounds i8, ptr %.0212237, i64 4 + %144 = add nuw nsw i32 %.0235, 1 + %145 = getelementptr inbounds i8, ptr %.0215232, i64 2 + %146 = getelementptr inbounds i8, ptr %.0214233, i64 2 + %147 = getelementptr inbounds i8, ptr %.0212234, i64 4 %exitcond.not = icmp eq i32 %144, 8 br i1 %exitcond.not, label %.preheader, label %13, !llvm.loop !17 148: ; preds = %.preheader, %148 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %148 ] - %.1213239 = phi ptr [ %6, %.preheader ], [ %272, %148 ] + %.1213236 = phi ptr [ %6, %.preheader ], [ %272, %148 ] %149 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv %150 = load ptr, ptr %149, align 8 %151 = getelementptr inbounds i8, ptr %150, i64 %12 - %152 = load i32, ptr %.1213239, align 4 + %152 = load i32, ptr %.1213236, align 4 %153 = sext i32 %152 to i64 %154 = shl nsw i64 %153, 13 %155 = add nsw i64 %154, 131072 - %156 = getelementptr inbounds i8, ptr %.1213239, i64 16 + %156 = getelementptr inbounds i8, ptr %.1213236, i64 16 %157 = load i32, ptr %156, align 4 %158 = zext i32 %157 to i64 %159 = mul nuw nsw i64 %158, 9373 @@ -1674,10 +1674,10 @@ define void @jpeg_idct_10x10(ptr nocapture noundef readonly %0, ptr nocapture no %161 = add nsw i64 %.neg, %155 %.neg216 = mul nsw i64 %158, -11586 %162 = add nsw i64 %.neg216, %155 - %163 = getelementptr inbounds i8, ptr %.1213239, i64 8 + %163 = getelementptr inbounds i8, ptr %.1213236, i64 8 %164 = load i32, ptr %163, align 4 %165 = zext i32 %164 to i64 - %166 = getelementptr inbounds i8, ptr %.1213239, i64 24 + %166 = getelementptr inbounds i8, ptr %.1213236, i64 24 %167 = load i32, ptr %166, align 4 %168 = zext i32 %167 to i64 %169 = add nuw nsw i64 %168, %165 @@ -1690,17 +1690,17 @@ define void @jpeg_idct_10x10(ptr nocapture noundef readonly %0, ptr nocapture no %175 = sub nsw i64 %160, %172 %176 = add nsw i64 %173, %161 %177 = sub nsw i64 %161, %173 - %178 = getelementptr inbounds i8, ptr %.1213239, i64 4 + %178 = getelementptr inbounds i8, ptr %.1213236, i64 4 %179 = load i32, ptr %178, align 4 %180 = sext i32 %179 to i64 - %181 = getelementptr inbounds i8, ptr %.1213239, i64 12 + %181 = getelementptr inbounds i8, ptr %.1213236, i64 12 %182 = load i32, ptr %181, align 4 %183 = sext i32 %182 to i64 - %184 = getelementptr inbounds i8, ptr %.1213239, i64 20 + %184 = getelementptr inbounds i8, ptr %.1213236, i64 20 %185 = load i32, ptr %184, align 4 %186 = sext i32 %185 to i64 %187 = shl nsw i64 %186, 13 - %188 = getelementptr inbounds i8, ptr %.1213239, i64 28 + %188 = getelementptr inbounds i8, ptr %.1213236, i64 28 %189 = load i32, ptr %188, align 4 %190 = sext i32 %189 to i64 %191 = add nsw i64 %190, %183 @@ -1717,9 +1717,9 @@ define void @jpeg_idct_10x10(ptr nocapture noundef readonly %0, ptr nocapture no %202 = mul nsw i64 %191, 4815 %.neg218 = mul nsw i64 %192, -6627 %203 = add nsw i64 %.neg218, %187 - %204 = add nsw i64 %192, %186 - %205 = sub nsw i64 %180, %204 - %206 = shl nsw i64 %205, 13 + %204 = sub nsw i64 %180, %192 + %205 = shl nsw i64 %204, 13 + %206 = sub nsw i64 %205, %187 %207 = mul nsw i64 %180, 10323 %208 = add nsw i64 %202, %203 %209 = sub nsw i64 %207, %208 @@ -1795,10 +1795,10 @@ define void @jpeg_idct_10x10(ptr nocapture noundef readonly %0, ptr nocapture no %270 = load i8, ptr %269, align 1 %271 = getelementptr inbounds i8, ptr %151, i64 5 store i8 %270, ptr %271, align 1 - %272 = getelementptr inbounds i8, ptr %.1213239, i64 32 + %272 = getelementptr inbounds i8, ptr %.1213236, i64 32 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond242.not = icmp eq i64 %indvars.iv.next, 10 - br i1 %exitcond242.not, label %273, label %148, !llvm.loop !18 + %exitcond239.not = icmp eq i64 %indvars.iv.next, 10 + br i1 %exitcond239.not, label %273, label %148, !llvm.loop !18 273: ; preds = %148 ret void @@ -2222,23 +2222,23 @@ define void @jpeg_idct_12x12(ptr nocapture noundef readonly %0, ptr nocapture no %36 = sext i16 %35 to i64 %37 = mul nsw i64 %36, %33 %38 = mul nsw i64 %37, 11190 - %39 = getelementptr inbounds i8, ptr %.0251261, i64 96 - %40 = load i16, ptr %39, align 2 - %41 = sext i16 %40 to i64 - %42 = getelementptr inbounds i8, ptr %.0250262, i64 96 - %43 = load i16, ptr %42, align 2 - %44 = sext i16 %43 to i64 - %45 = mul nsw i64 %44, %41 - %46 = shl nsw i64 %45, 13 - %47 = sub nsw i64 %37, %45 - %48 = shl nsw i64 %47, 13 + %39 = shl nsw i64 %37, 13 + %40 = getelementptr inbounds i8, ptr %.0251261, i64 96 + %41 = load i16, ptr %40, align 2 + %42 = sext i16 %41 to i64 + %43 = getelementptr inbounds i8, ptr %.0250262, i64 96 + %44 = load i16, ptr %43, align 2 + %45 = sext i16 %44 to i64 + %46 = shl nsw i64 %42, 13 + %47 = mul nsw i64 %46, %45 + %48 = sub nsw i64 %39, %47 %49 = add nsw i64 %48, %20 %50 = sub nsw i64 %20, %48 - %51 = add nsw i64 %46, %38 + %51 = add nsw i64 %47, %38 %52 = add nsw i64 %51, %29 %53 = sub nsw i64 %29, %51 %54 = mul nsw i64 %37, 2998 - %55 = sub nsw i64 %54, %46 + %55 = sub nsw i64 %54, %47 %56 = add nsw i64 %55, %30 %57 = sub nsw i64 %30, %55 %58 = getelementptr inbounds i8, ptr %.0251261, i64 16 @@ -2388,19 +2388,19 @@ define void @jpeg_idct_12x12(ptr nocapture noundef readonly %0, ptr nocapture no %181 = load i32, ptr %180, align 4 %182 = sext i32 %181 to i64 %183 = mul nsw i64 %182, 11190 - %184 = getelementptr inbounds i8, ptr %.1249265, i64 24 - %185 = load i32, ptr %184, align 4 - %186 = sext i32 %185 to i64 - %187 = shl nsw i64 %186, 13 - %188 = sub nsw i64 %182, %186 - %189 = shl nsw i64 %188, 13 + %184 = shl nsw i64 %182, 13 + %185 = getelementptr inbounds i8, ptr %.1249265, i64 24 + %186 = load i32, ptr %185, align 4 + %187 = sext i32 %186 to i64 + %188 = shl nsw i64 %187, 13 + %189 = sub nsw i64 %184, %188 %190 = add nsw i64 %189, %173 %191 = sub nsw i64 %173, %189 - %192 = add nsw i64 %187, %183 + %192 = add nsw i64 %188, %183 %193 = add nsw i64 %192, %178 %194 = sub nsw i64 %178, %192 %195 = mul nsw i64 %182, 2998 - %196 = sub nsw i64 %195, %187 + %196 = sub nsw i64 %195, %188 %197 = add nsw i64 %196, %179 %198 = sub nsw i64 %179, %196 %199 = getelementptr inbounds i8, ptr %.1249265, i64 4 @@ -2973,21 +2973,21 @@ define void @jpeg_idct_14x14(ptr nocapture noundef readonly %0, ptr nocapture no br label %179 13: ; preds = %5, %13 - %.0311 = phi i32 [ 0, %5 ], [ %175, %13 ] - %.0285310 = phi ptr [ %6, %5 ], [ %178, %13 ] - %.0287309 = phi ptr [ %10, %5 ], [ %177, %13 ] - %.0288308 = phi ptr [ %2, %5 ], [ %176, %13 ] - %14 = load i16, ptr %.0288308, align 2 + %.0310 = phi i32 [ 0, %5 ], [ %175, %13 ] + %.0285309 = phi ptr [ %6, %5 ], [ %178, %13 ] + %.0287308 = phi ptr [ %10, %5 ], [ %177, %13 ] + %.0288307 = phi ptr [ %2, %5 ], [ %176, %13 ] + %14 = load i16, ptr %.0288307, align 2 %15 = sext i16 %14 to i64 - %16 = load i16, ptr %.0287309, align 2 + %16 = load i16, ptr %.0287308, align 2 %17 = sext i16 %16 to i64 %18 = shl nsw i64 %15, 13 %19 = mul nsw i64 %18, %17 %20 = or disjoint i64 %19, 1024 - %21 = getelementptr inbounds i8, ptr %.0288308, i64 64 + %21 = getelementptr inbounds i8, ptr %.0288307, i64 64 %22 = load i16, ptr %21, align 2 %23 = sext i16 %22 to i64 - %24 = getelementptr inbounds i8, ptr %.0287309, i64 64 + %24 = getelementptr inbounds i8, ptr %.0287308, i64 64 %25 = load i16, ptr %24, align 2 %26 = sext i16 %25 to i64 %27 = mul nsw i64 %26, %23 @@ -3000,17 +3000,17 @@ define void @jpeg_idct_14x14(ptr nocapture noundef readonly %0, ptr nocapture no %.neg298 = mul nsw i64 %27, -11586 %33 = add nsw i64 %.neg298, %20 %34 = ashr i64 %33, 11 - %35 = getelementptr inbounds i8, ptr %.0288308, i64 32 + %35 = getelementptr inbounds i8, ptr %.0288307, i64 32 %36 = load i16, ptr %35, align 2 %37 = sext i16 %36 to i64 - %38 = getelementptr inbounds i8, ptr %.0287309, i64 32 + %38 = getelementptr inbounds i8, ptr %.0287308, i64 32 %39 = load i16, ptr %38, align 2 %40 = sext i16 %39 to i64 %41 = mul nsw i64 %40, %37 - %42 = getelementptr inbounds i8, ptr %.0288308, i64 96 + %42 = getelementptr inbounds i8, ptr %.0288307, i64 96 %43 = load i16, ptr %42, align 2 %44 = sext i16 %43 to i64 - %45 = getelementptr inbounds i8, ptr %.0287309, i64 96 + %45 = getelementptr inbounds i8, ptr %.0287308, i64 96 %46 = load i16, ptr %45, align 2 %47 = sext i16 %46 to i64 %48 = mul nsw i64 %47, %44 @@ -3029,31 +3029,31 @@ define void @jpeg_idct_14x14(ptr nocapture noundef readonly %0, ptr nocapture no %59 = sub nsw i64 %31, %53 %60 = add nsw i64 %55, %32 %61 = sub nsw i64 %32, %55 - %62 = getelementptr inbounds i8, ptr %.0288308, i64 16 + %62 = getelementptr inbounds i8, ptr %.0288307, i64 16 %63 = load i16, ptr %62, align 2 %64 = sext i16 %63 to i64 - %65 = getelementptr inbounds i8, ptr %.0287309, i64 16 + %65 = getelementptr inbounds i8, ptr %.0287308, i64 16 %66 = load i16, ptr %65, align 2 %67 = sext i16 %66 to i64 %68 = mul nsw i64 %67, %64 - %69 = getelementptr inbounds i8, ptr %.0288308, i64 48 + %69 = getelementptr inbounds i8, ptr %.0288307, i64 48 %70 = load i16, ptr %69, align 2 %71 = sext i16 %70 to i64 - %72 = getelementptr inbounds i8, ptr %.0287309, i64 48 + %72 = getelementptr inbounds i8, ptr %.0287308, i64 48 %73 = load i16, ptr %72, align 2 %74 = sext i16 %73 to i64 %75 = mul nsw i64 %74, %71 - %76 = getelementptr inbounds i8, ptr %.0288308, i64 80 + %76 = getelementptr inbounds i8, ptr %.0288307, i64 80 %77 = load i16, ptr %76, align 2 %78 = sext i16 %77 to i64 - %79 = getelementptr inbounds i8, ptr %.0287309, i64 80 + %79 = getelementptr inbounds i8, ptr %.0287308, i64 80 %80 = load i16, ptr %79, align 2 %81 = sext i16 %80 to i64 %82 = mul nsw i64 %81, %78 - %83 = getelementptr inbounds i8, ptr %.0288308, i64 112 + %83 = getelementptr inbounds i8, ptr %.0288307, i64 112 %84 = load i16, ptr %83, align 2 %85 = sext i16 %84 to i64 - %86 = getelementptr inbounds i8, ptr %.0287309, i64 112 + %86 = getelementptr inbounds i8, ptr %.0287308, i64 112 %87 = load i16, ptr %86, align 2 %88 = sext i16 %87 to i64 %89 = mul nsw i64 %88, %85 @@ -3097,88 +3097,88 @@ define void @jpeg_idct_14x14(ptr nocapture noundef readonly %0, ptr nocapture no %122 = add nsw i64 %97, %56 %123 = lshr i64 %122, 11 %124 = trunc i64 %123 to i32 - store i32 %124, ptr %.0285310, align 4 + store i32 %124, ptr %.0285309, align 4 %125 = sub nsw i64 %56, %97 %126 = lshr i64 %125, 11 %127 = trunc i64 %126 to i32 - %128 = getelementptr inbounds i8, ptr %.0285310, i64 416 + %128 = getelementptr inbounds i8, ptr %.0285309, i64 416 store i32 %127, ptr %128, align 4 %129 = add nsw i64 %108, %58 %130 = lshr i64 %129, 11 %131 = trunc i64 %130 to i32 - %132 = getelementptr inbounds i8, ptr %.0285310, i64 32 + %132 = getelementptr inbounds i8, ptr %.0285309, i64 32 store i32 %131, ptr %132, align 4 %133 = sub nsw i64 %58, %108 %134 = lshr i64 %133, 11 %135 = trunc i64 %134 to i32 - %136 = getelementptr inbounds i8, ptr %.0285310, i64 384 + %136 = getelementptr inbounds i8, ptr %.0285309, i64 384 store i32 %135, ptr %136, align 4 %137 = add nsw i64 %110, %60 %138 = lshr i64 %137, 11 %139 = trunc i64 %138 to i32 - %140 = getelementptr inbounds i8, ptr %.0285310, i64 64 + %140 = getelementptr inbounds i8, ptr %.0285309, i64 64 store i32 %139, ptr %140, align 4 %141 = sub nsw i64 %60, %110 %142 = lshr i64 %141, 11 %143 = trunc i64 %142 to i32 - %144 = getelementptr inbounds i8, ptr %.0285310, i64 352 + %144 = getelementptr inbounds i8, ptr %.0285309, i64 352 store i32 %143, ptr %144, align 4 %145 = add nsw i64 %121, %34 %146 = trunc i64 %145 to i32 - %147 = getelementptr inbounds i8, ptr %.0285310, i64 96 + %147 = getelementptr inbounds i8, ptr %.0285309, i64 96 store i32 %146, ptr %147, align 4 %148 = sub nsw i64 %34, %121 %149 = trunc i64 %148 to i32 - %150 = getelementptr inbounds i8, ptr %.0285310, i64 320 + %150 = getelementptr inbounds i8, ptr %.0285309, i64 320 store i32 %149, ptr %150, align 4 %151 = add nsw i64 %115, %61 %152 = lshr i64 %151, 11 %153 = trunc i64 %152 to i32 - %154 = getelementptr inbounds i8, ptr %.0285310, i64 128 + %154 = getelementptr inbounds i8, ptr %.0285309, i64 128 store i32 %153, ptr %154, align 4 %155 = sub nsw i64 %61, %115 %156 = lshr i64 %155, 11 %157 = trunc i64 %156 to i32 - %158 = getelementptr inbounds i8, ptr %.0285310, i64 288 + %158 = getelementptr inbounds i8, ptr %.0285309, i64 288 store i32 %157, ptr %158, align 4 %159 = add nsw i64 %118, %59 %160 = lshr i64 %159, 11 %161 = trunc i64 %160 to i32 - %162 = getelementptr inbounds i8, ptr %.0285310, i64 160 + %162 = getelementptr inbounds i8, ptr %.0285309, i64 160 store i32 %161, ptr %162, align 4 %163 = sub nsw i64 %59, %118 %164 = lshr i64 %163, 11 %165 = trunc i64 %164 to i32 - %166 = getelementptr inbounds i8, ptr %.0285310, i64 256 + %166 = getelementptr inbounds i8, ptr %.0285309, i64 256 store i32 %165, ptr %166, align 4 %167 = add nsw i64 %103, %57 %168 = lshr i64 %167, 11 %169 = trunc i64 %168 to i32 - %170 = getelementptr inbounds i8, ptr %.0285310, i64 192 + %170 = getelementptr inbounds i8, ptr %.0285309, i64 192 store i32 %169, ptr %170, align 4 %171 = sub nsw i64 %57, %103 %172 = lshr i64 %171, 11 %173 = trunc i64 %172 to i32 - %174 = getelementptr inbounds i8, ptr %.0285310, i64 224 + %174 = getelementptr inbounds i8, ptr %.0285309, i64 224 store i32 %173, ptr %174, align 4 - %175 = add nuw nsw i32 %.0311, 1 - %176 = getelementptr inbounds i8, ptr %.0288308, i64 2 - %177 = getelementptr inbounds i8, ptr %.0287309, i64 2 - %178 = getelementptr inbounds i8, ptr %.0285310, i64 4 + %175 = add nuw nsw i32 %.0310, 1 + %176 = getelementptr inbounds i8, ptr %.0288307, i64 2 + %177 = getelementptr inbounds i8, ptr %.0287308, i64 2 + %178 = getelementptr inbounds i8, ptr %.0285309, i64 4 %exitcond.not = icmp eq i32 %175, 8 br i1 %exitcond.not, label %.preheader, label %13, !llvm.loop !25 179: ; preds = %.preheader, %179 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %179 ] - %.1286312 = phi ptr [ %6, %.preheader ], [ %342, %179 ] + %.1286311 = phi ptr [ %6, %.preheader ], [ %342, %179 ] %180 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv %181 = load ptr, ptr %180, align 8 %182 = getelementptr inbounds i8, ptr %181, i64 %12 - %183 = load i32, ptr %.1286312, align 4 + %183 = load i32, ptr %.1286311, align 4 %184 = sext i32 %183 to i64 %185 = shl nsw i64 %184, 13 %186 = add nsw i64 %185, 131072 - %187 = getelementptr inbounds i8, ptr %.1286312, i64 16 + %187 = getelementptr inbounds i8, ptr %.1286311, i64 16 %188 = load i32, ptr %187, align 4 %189 = zext i32 %188 to i64 %190 = mul nuw nsw i64 %189, 10438 @@ -3189,10 +3189,10 @@ define void @jpeg_idct_14x14(ptr nocapture noundef readonly %0, ptr nocapture no %194 = add nsw i64 %.neg, %186 %.neg289 = mul nsw i64 %189, -11586 %195 = add nsw i64 %.neg289, %186 - %196 = getelementptr inbounds i8, ptr %.1286312, i64 8 + %196 = getelementptr inbounds i8, ptr %.1286311, i64 8 %197 = load i32, ptr %196, align 4 %198 = zext i32 %197 to i64 - %199 = getelementptr inbounds i8, ptr %.1286312, i64 24 + %199 = getelementptr inbounds i8, ptr %.1286311, i64 24 %200 = load i32, ptr %199, align 4 %201 = zext i32 %200 to i64 %202 = add nuw nsw i64 %201, %198 @@ -3210,16 +3210,16 @@ define void @jpeg_idct_14x14(ptr nocapture noundef readonly %0, ptr nocapture no %212 = sub nsw i64 %193, %206 %213 = add nsw i64 %208, %194 %214 = sub nsw i64 %194, %208 - %215 = getelementptr inbounds i8, ptr %.1286312, i64 4 + %215 = getelementptr inbounds i8, ptr %.1286311, i64 4 %216 = load i32, ptr %215, align 4 %217 = sext i32 %216 to i64 - %218 = getelementptr inbounds i8, ptr %.1286312, i64 12 + %218 = getelementptr inbounds i8, ptr %.1286311, i64 12 %219 = load i32, ptr %218, align 4 %220 = sext i32 %219 to i64 - %221 = getelementptr inbounds i8, ptr %.1286312, i64 20 + %221 = getelementptr inbounds i8, ptr %.1286311, i64 20 %222 = load i32, ptr %221, align 4 %223 = sext i32 %222 to i64 - %224 = getelementptr inbounds i8, ptr %.1286312, i64 28 + %224 = getelementptr inbounds i8, ptr %.1286311, i64 28 %225 = load i32, ptr %224, align 4 %226 = sext i32 %225 to i64 %227 = shl nsw i64 %226, 13 @@ -3257,8 +3257,8 @@ define void @jpeg_idct_14x14(ptr nocapture noundef readonly %0, ptr nocapture no %254 = add nsw i64 %249, %253 %255 = add nsw i64 %254, %239 %256 = sub nsw i64 %237, %223 - %257 = add nsw i64 %256, %226 - %258 = shl nsw i64 %257, 13 + %257 = shl nsw i64 %256, 13 + %258 = add nsw i64 %257, %227 %259 = add nsw i64 %234, %209 %260 = lshr i64 %259, 18 %261 = and i64 %260, 1023 @@ -3356,10 +3356,10 @@ define void @jpeg_idct_14x14(ptr nocapture noundef readonly %0, ptr nocapture no %340 = load i8, ptr %339, align 1 %341 = getelementptr inbounds i8, ptr %182, i64 7 store i8 %340, ptr %341, align 1 - %342 = getelementptr inbounds i8, ptr %.1286312, i64 32 + %342 = getelementptr inbounds i8, ptr %.1286311, i64 32 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond315.not = icmp eq i64 %indvars.iv.next, 14 - br i1 %exitcond315.not, label %343, label %179, !llvm.loop !26 + %exitcond314.not = icmp eq i64 %indvars.iv.next, 14 + br i1 %exitcond314.not, label %343, label %179, !llvm.loop !26 343: ; preds = %179 ret void @@ -3465,8 +3465,8 @@ define void @jpeg_idct_15x15(ptr nocapture noundef readonly %0, ptr nocapture no %86 = getelementptr inbounds i8, ptr %.0305335, i64 80 %87 = load i16, ptr %86, align 2 %88 = sext i16 %87 to i64 - %89 = mul nsw i64 %88, %85 - %90 = mul nsw i64 %89, 10033 + %89 = mul nsw i64 %85, 10033 + %90 = mul nsw i64 %89, %88 %91 = getelementptr inbounds i8, ptr %.0306334, i64 112 %92 = load i16, ptr %91, align 2 %93 = sext i16 %92 to i64 @@ -3492,8 +3492,8 @@ define void @jpeg_idct_15x15(ptr nocapture noundef readonly %0, ptr nocapture no %.neg316 = mul nsw i64 %75, -9113 %112 = add nsw i64 %104, %.neg316 %113 = add nsw i64 %112, %108 - %114 = sub nsw i64 %106, %89 - %115 = mul nsw i64 %114, 10033 + %114 = mul nsw i64 %106, 10033 + %115 = sub nsw i64 %114, %90 %116 = add nsw i64 %97, %75 %117 = mul nsw i64 %116, 4712 %118 = mul nsw i64 %75, 3897 @@ -3667,8 +3667,8 @@ define void @jpeg_idct_15x15(ptr nocapture noundef readonly %0, ptr nocapture no %.neg310 = mul nsw i64 %233, -9113 %258 = add nsw i64 %250, %.neg310 %259 = add nsw i64 %258, %254 - %260 = sub nsw i64 %252, %239 - %261 = mul nsw i64 %260, 10033 + %260 = mul nsw i64 %252, 10033 + %261 = sub nsw i64 %260, %240 %262 = add nuw nsw i64 %243, %233 %263 = mul nuw nsw i64 %262, 4712 %264 = mul nuw nsw i64 %233, 3897 diff --git a/bench/libquic/optimized/md4.c.ll b/bench/libquic/optimized/md4.c.ll index 319b2be750d..b23f4d5c632 100644 --- a/bench/libquic/optimized/md4.c.ll +++ b/bench/libquic/optimized/md4.c.ll @@ -298,8 +298,8 @@ entry: %arrayidx1 = getelementptr inbounds i8, ptr %state, i64 4 %arrayidx2 = getelementptr inbounds i8, ptr %state, i64 8 %arrayidx3 = getelementptr inbounds i8, ptr %state, i64 12 - %tobool.not534 = icmp eq i64 %num, 0 - br i1 %tobool.not534, label %for.end, label %for.body.lr.ph + %tobool.not520 = icmp eq i64 %num, 0 + br i1 %tobool.not520, label %for.end, label %for.body.lr.ph for.body.lr.ph: ; preds = %entry %0 = load i32, ptr %arrayidx3, align 4 @@ -309,92 +309,92 @@ for.body.lr.ph: ; preds = %entry br label %for.body for.body: ; preds = %for.body.lr.ph, %for.body - %data.addr.0540 = phi ptr [ %data, %for.body.lr.ph ], [ %incdec.ptr342, %for.body ] - %num.addr.0539 = phi i64 [ %num, %for.body.lr.ph ], [ %dec, %for.body ] - %A.0538 = phi i32 [ %3, %for.body.lr.ph ], [ %add797, %for.body ] - %B.0537 = phi i32 [ %2, %for.body.lr.ph ], [ %add799, %for.body ] - %C.0536 = phi i32 [ %1, %for.body.lr.ph ], [ %add801, %for.body ] - %D.0535 = phi i32 [ %0, %for.body.lr.ph ], [ %add803, %for.body ] - %dec = add i64 %num.addr.0539, -1 - %4 = load i16, ptr %data.addr.0540, align 1 + %data.addr.0526 = phi ptr [ %data, %for.body.lr.ph ], [ %incdec.ptr342, %for.body ] + %num.addr.0525 = phi i64 [ %num, %for.body.lr.ph ], [ %dec, %for.body ] + %A.0524 = phi i32 [ %3, %for.body.lr.ph ], [ %add797, %for.body ] + %B.0523 = phi i32 [ %2, %for.body.lr.ph ], [ %add799, %for.body ] + %C.0522 = phi i32 [ %1, %for.body.lr.ph ], [ %add801, %for.body ] + %D.0521 = phi i32 [ %0, %for.body.lr.ph ], [ %add803, %for.body ] + %dec = add i64 %num.addr.0525, -1 + %4 = load i16, ptr %data.addr.0526, align 1 %5 = zext i16 %4 to i32 - %incdec.ptr4 = getelementptr inbounds i8, ptr %data.addr.0540, i64 2 - %incdec.ptr6 = getelementptr inbounds i8, ptr %data.addr.0540, i64 3 + %incdec.ptr4 = getelementptr inbounds i8, ptr %data.addr.0526, i64 2 + %incdec.ptr6 = getelementptr inbounds i8, ptr %data.addr.0526, i64 3 %6 = load i8, ptr %incdec.ptr4, align 1 %conv7 = zext i8 %6 to i32 %shl8 = shl nuw nsw i32 %conv7, 16 %or9 = or disjoint i32 %shl8, %5 - %incdec.ptr10 = getelementptr inbounds i8, ptr %data.addr.0540, i64 4 + %incdec.ptr10 = getelementptr inbounds i8, ptr %data.addr.0526, i64 4 %7 = load i8, ptr %incdec.ptr6, align 1 %conv11 = zext i8 %7 to i32 %shl12 = shl nuw i32 %conv11, 24 %or13 = or disjoint i32 %or9, %shl12 %8 = load i16, ptr %incdec.ptr10, align 1 %9 = zext i16 %8 to i32 - %incdec.ptr16 = getelementptr inbounds i8, ptr %data.addr.0540, i64 6 - %incdec.ptr20 = getelementptr inbounds i8, ptr %data.addr.0540, i64 7 + %incdec.ptr16 = getelementptr inbounds i8, ptr %data.addr.0526, i64 6 + %incdec.ptr20 = getelementptr inbounds i8, ptr %data.addr.0526, i64 7 %10 = load i8, ptr %incdec.ptr16, align 1 %conv21 = zext i8 %10 to i32 %shl22 = shl nuw nsw i32 %conv21, 16 %or23 = or disjoint i32 %shl22, %9 - %incdec.ptr24 = getelementptr inbounds i8, ptr %data.addr.0540, i64 8 + %incdec.ptr24 = getelementptr inbounds i8, ptr %data.addr.0526, i64 8 %11 = load i8, ptr %incdec.ptr20, align 1 %conv25 = zext i8 %11 to i32 %shl26 = shl nuw i32 %conv25, 24 %or27 = or disjoint i32 %or23, %shl26 - %xor = xor i32 %C.0536, %D.0535 - %and = and i32 %xor, %B.0537 - %xor28 = xor i32 %and, %D.0535 - %add29 = add i32 %xor28, %A.0538 + %xor = xor i32 %C.0522, %D.0521 + %and = and i32 %xor, %B.0523 + %xor28 = xor i32 %and, %D.0521 + %add29 = add i32 %xor28, %A.0524 %add30 = add i32 %add29, %or13 %or32 = tail call i32 @llvm.fshl.i32(i32 %add30, i32 %add30, i32 3) %12 = load i16, ptr %incdec.ptr24, align 1 %13 = zext i16 %12 to i32 - %incdec.ptr35 = getelementptr inbounds i8, ptr %data.addr.0540, i64 10 - %incdec.ptr39 = getelementptr inbounds i8, ptr %data.addr.0540, i64 11 + %incdec.ptr35 = getelementptr inbounds i8, ptr %data.addr.0526, i64 10 + %incdec.ptr39 = getelementptr inbounds i8, ptr %data.addr.0526, i64 11 %14 = load i8, ptr %incdec.ptr35, align 1 %conv40 = zext i8 %14 to i32 %shl41 = shl nuw nsw i32 %conv40, 16 %or42 = or disjoint i32 %shl41, %13 - %incdec.ptr43 = getelementptr inbounds i8, ptr %data.addr.0540, i64 12 + %incdec.ptr43 = getelementptr inbounds i8, ptr %data.addr.0526, i64 12 %15 = load i8, ptr %incdec.ptr39, align 1 %conv44 = zext i8 %15 to i32 %shl45 = shl nuw i32 %conv44, 24 %or46 = or disjoint i32 %or42, %shl45 - %xor48 = xor i32 %B.0537, %C.0536 + %xor48 = xor i32 %B.0523, %C.0522 %and49 = and i32 %or32, %xor48 - %xor50 = xor i32 %and49, %C.0536 - %add51 = add i32 %or27, %D.0535 + %xor50 = xor i32 %and49, %C.0522 + %add51 = add i32 %or27, %D.0521 %add52 = add i32 %add51, %xor50 %or55 = tail call i32 @llvm.fshl.i32(i32 %add52, i32 %add52, i32 7) %16 = load i16, ptr %incdec.ptr43, align 1 %17 = zext i16 %16 to i32 - %incdec.ptr58 = getelementptr inbounds i8, ptr %data.addr.0540, i64 14 - %incdec.ptr62 = getelementptr inbounds i8, ptr %data.addr.0540, i64 15 + %incdec.ptr58 = getelementptr inbounds i8, ptr %data.addr.0526, i64 14 + %incdec.ptr62 = getelementptr inbounds i8, ptr %data.addr.0526, i64 15 %18 = load i8, ptr %incdec.ptr58, align 1 %conv63 = zext i8 %18 to i32 %shl64 = shl nuw nsw i32 %conv63, 16 %or65 = or disjoint i32 %shl64, %17 - %incdec.ptr66 = getelementptr inbounds i8, ptr %data.addr.0540, i64 16 + %incdec.ptr66 = getelementptr inbounds i8, ptr %data.addr.0526, i64 16 %19 = load i8, ptr %incdec.ptr62, align 1 %conv67 = zext i8 %19 to i32 %shl68 = shl nuw i32 %conv67, 24 %or69 = or disjoint i32 %or65, %shl68 - %xor71 = xor i32 %or32, %B.0537 + %xor71 = xor i32 %or32, %B.0523 %and72 = and i32 %or55, %xor71 - %xor73 = xor i32 %and72, %B.0537 - %add74 = add i32 %or46, %C.0536 + %xor73 = xor i32 %and72, %B.0523 + %add74 = add i32 %or46, %C.0522 %add75 = add i32 %add74, %xor73 %or78 = tail call i32 @llvm.fshl.i32(i32 %add75, i32 %add75, i32 11) %20 = load i16, ptr %incdec.ptr66, align 1 %21 = zext i16 %20 to i32 - %incdec.ptr81 = getelementptr inbounds i8, ptr %data.addr.0540, i64 18 - %incdec.ptr85 = getelementptr inbounds i8, ptr %data.addr.0540, i64 19 + %incdec.ptr81 = getelementptr inbounds i8, ptr %data.addr.0526, i64 18 + %incdec.ptr85 = getelementptr inbounds i8, ptr %data.addr.0526, i64 19 %22 = load i8, ptr %incdec.ptr81, align 1 %conv86 = zext i8 %22 to i32 %shl87 = shl nuw nsw i32 %conv86, 16 %or88 = or disjoint i32 %shl87, %21 - %incdec.ptr89 = getelementptr inbounds i8, ptr %data.addr.0540, i64 20 + %incdec.ptr89 = getelementptr inbounds i8, ptr %data.addr.0526, i64 20 %23 = load i8, ptr %incdec.ptr85, align 1 %conv90 = zext i8 %23 to i32 %shl91 = shl nuw i32 %conv90, 24 @@ -402,18 +402,18 @@ for.body: ; preds = %for.body.lr.ph, %fo %xor94 = xor i32 %or55, %or32 %and95 = and i32 %or78, %xor94 %xor96 = xor i32 %and95, %or32 - %add97 = add i32 %or69, %B.0537 + %add97 = add i32 %or69, %B.0523 %add98 = add i32 %add97, %xor96 %or101 = tail call i32 @llvm.fshl.i32(i32 %add98, i32 %add98, i32 19) %24 = load i16, ptr %incdec.ptr89, align 1 %25 = zext i16 %24 to i32 - %incdec.ptr104 = getelementptr inbounds i8, ptr %data.addr.0540, i64 22 - %incdec.ptr108 = getelementptr inbounds i8, ptr %data.addr.0540, i64 23 + %incdec.ptr104 = getelementptr inbounds i8, ptr %data.addr.0526, i64 22 + %incdec.ptr108 = getelementptr inbounds i8, ptr %data.addr.0526, i64 23 %26 = load i8, ptr %incdec.ptr104, align 1 %conv109 = zext i8 %26 to i32 %shl110 = shl nuw nsw i32 %conv109, 16 %or111 = or disjoint i32 %shl110, %25 - %incdec.ptr112 = getelementptr inbounds i8, ptr %data.addr.0540, i64 24 + %incdec.ptr112 = getelementptr inbounds i8, ptr %data.addr.0526, i64 24 %27 = load i8, ptr %incdec.ptr108, align 1 %conv113 = zext i8 %27 to i32 %shl114 = shl nuw i32 %conv113, 24 @@ -426,13 +426,13 @@ for.body: ; preds = %for.body.lr.ph, %fo %or124 = tail call i32 @llvm.fshl.i32(i32 %add121, i32 %add121, i32 3) %28 = load i16, ptr %incdec.ptr112, align 1 %29 = zext i16 %28 to i32 - %incdec.ptr127 = getelementptr inbounds i8, ptr %data.addr.0540, i64 26 - %incdec.ptr131 = getelementptr inbounds i8, ptr %data.addr.0540, i64 27 + %incdec.ptr127 = getelementptr inbounds i8, ptr %data.addr.0526, i64 26 + %incdec.ptr131 = getelementptr inbounds i8, ptr %data.addr.0526, i64 27 %30 = load i8, ptr %incdec.ptr127, align 1 %conv132 = zext i8 %30 to i32 %shl133 = shl nuw nsw i32 %conv132, 16 %or134 = or disjoint i32 %shl133, %29 - %incdec.ptr135 = getelementptr inbounds i8, ptr %data.addr.0540, i64 28 + %incdec.ptr135 = getelementptr inbounds i8, ptr %data.addr.0526, i64 28 %31 = load i8, ptr %incdec.ptr131, align 1 %conv136 = zext i8 %31 to i32 %shl137 = shl nuw i32 %conv136, 24 @@ -445,13 +445,13 @@ for.body: ; preds = %for.body.lr.ph, %fo %or147 = tail call i32 @llvm.fshl.i32(i32 %add144, i32 %add144, i32 7) %32 = load i16, ptr %incdec.ptr135, align 1 %33 = zext i16 %32 to i32 - %incdec.ptr150 = getelementptr inbounds i8, ptr %data.addr.0540, i64 30 - %incdec.ptr154 = getelementptr inbounds i8, ptr %data.addr.0540, i64 31 + %incdec.ptr150 = getelementptr inbounds i8, ptr %data.addr.0526, i64 30 + %incdec.ptr154 = getelementptr inbounds i8, ptr %data.addr.0526, i64 31 %34 = load i8, ptr %incdec.ptr150, align 1 %conv155 = zext i8 %34 to i32 %shl156 = shl nuw nsw i32 %conv155, 16 %or157 = or disjoint i32 %shl156, %33 - %incdec.ptr158 = getelementptr inbounds i8, ptr %data.addr.0540, i64 32 + %incdec.ptr158 = getelementptr inbounds i8, ptr %data.addr.0526, i64 32 %35 = load i8, ptr %incdec.ptr154, align 1 %conv159 = zext i8 %35 to i32 %shl160 = shl nuw i32 %conv159, 24 @@ -464,13 +464,13 @@ for.body: ; preds = %for.body.lr.ph, %fo %or170 = tail call i32 @llvm.fshl.i32(i32 %add167, i32 %add167, i32 11) %36 = load i16, ptr %incdec.ptr158, align 1 %37 = zext i16 %36 to i32 - %incdec.ptr173 = getelementptr inbounds i8, ptr %data.addr.0540, i64 34 - %incdec.ptr177 = getelementptr inbounds i8, ptr %data.addr.0540, i64 35 + %incdec.ptr173 = getelementptr inbounds i8, ptr %data.addr.0526, i64 34 + %incdec.ptr177 = getelementptr inbounds i8, ptr %data.addr.0526, i64 35 %38 = load i8, ptr %incdec.ptr173, align 1 %conv178 = zext i8 %38 to i32 %shl179 = shl nuw nsw i32 %conv178, 16 %or180 = or disjoint i32 %shl179, %37 - %incdec.ptr181 = getelementptr inbounds i8, ptr %data.addr.0540, i64 36 + %incdec.ptr181 = getelementptr inbounds i8, ptr %data.addr.0526, i64 36 %39 = load i8, ptr %incdec.ptr177, align 1 %conv182 = zext i8 %39 to i32 %shl183 = shl nuw i32 %conv182, 24 @@ -483,13 +483,13 @@ for.body: ; preds = %for.body.lr.ph, %fo %or193 = tail call i32 @llvm.fshl.i32(i32 %add190, i32 %add190, i32 19) %40 = load i16, ptr %incdec.ptr181, align 1 %41 = zext i16 %40 to i32 - %incdec.ptr196 = getelementptr inbounds i8, ptr %data.addr.0540, i64 38 - %incdec.ptr200 = getelementptr inbounds i8, ptr %data.addr.0540, i64 39 + %incdec.ptr196 = getelementptr inbounds i8, ptr %data.addr.0526, i64 38 + %incdec.ptr200 = getelementptr inbounds i8, ptr %data.addr.0526, i64 39 %42 = load i8, ptr %incdec.ptr196, align 1 %conv201 = zext i8 %42 to i32 %shl202 = shl nuw nsw i32 %conv201, 16 %or203 = or disjoint i32 %shl202, %41 - %incdec.ptr204 = getelementptr inbounds i8, ptr %data.addr.0540, i64 40 + %incdec.ptr204 = getelementptr inbounds i8, ptr %data.addr.0526, i64 40 %43 = load i8, ptr %incdec.ptr200, align 1 %conv205 = zext i8 %43 to i32 %shl206 = shl nuw i32 %conv205, 24 @@ -502,13 +502,13 @@ for.body: ; preds = %for.body.lr.ph, %fo %or216 = tail call i32 @llvm.fshl.i32(i32 %add213, i32 %add213, i32 3) %44 = load i16, ptr %incdec.ptr204, align 1 %45 = zext i16 %44 to i32 - %incdec.ptr219 = getelementptr inbounds i8, ptr %data.addr.0540, i64 42 - %incdec.ptr223 = getelementptr inbounds i8, ptr %data.addr.0540, i64 43 + %incdec.ptr219 = getelementptr inbounds i8, ptr %data.addr.0526, i64 42 + %incdec.ptr223 = getelementptr inbounds i8, ptr %data.addr.0526, i64 43 %46 = load i8, ptr %incdec.ptr219, align 1 %conv224 = zext i8 %46 to i32 %shl225 = shl nuw nsw i32 %conv224, 16 %or226 = or disjoint i32 %shl225, %45 - %incdec.ptr227 = getelementptr inbounds i8, ptr %data.addr.0540, i64 44 + %incdec.ptr227 = getelementptr inbounds i8, ptr %data.addr.0526, i64 44 %47 = load i8, ptr %incdec.ptr223, align 1 %conv228 = zext i8 %47 to i32 %shl229 = shl nuw i32 %conv228, 24 @@ -521,13 +521,13 @@ for.body: ; preds = %for.body.lr.ph, %fo %or239 = tail call i32 @llvm.fshl.i32(i32 %add236, i32 %add236, i32 7) %48 = load i16, ptr %incdec.ptr227, align 1 %49 = zext i16 %48 to i32 - %incdec.ptr242 = getelementptr inbounds i8, ptr %data.addr.0540, i64 46 - %incdec.ptr246 = getelementptr inbounds i8, ptr %data.addr.0540, i64 47 + %incdec.ptr242 = getelementptr inbounds i8, ptr %data.addr.0526, i64 46 + %incdec.ptr246 = getelementptr inbounds i8, ptr %data.addr.0526, i64 47 %50 = load i8, ptr %incdec.ptr242, align 1 %conv247 = zext i8 %50 to i32 %shl248 = shl nuw nsw i32 %conv247, 16 %or249 = or disjoint i32 %shl248, %49 - %incdec.ptr250 = getelementptr inbounds i8, ptr %data.addr.0540, i64 48 + %incdec.ptr250 = getelementptr inbounds i8, ptr %data.addr.0526, i64 48 %51 = load i8, ptr %incdec.ptr246, align 1 %conv251 = zext i8 %51 to i32 %shl252 = shl nuw i32 %conv251, 24 @@ -540,13 +540,13 @@ for.body: ; preds = %for.body.lr.ph, %fo %or262 = tail call i32 @llvm.fshl.i32(i32 %add259, i32 %add259, i32 11) %52 = load i16, ptr %incdec.ptr250, align 1 %53 = zext i16 %52 to i32 - %incdec.ptr265 = getelementptr inbounds i8, ptr %data.addr.0540, i64 50 - %incdec.ptr269 = getelementptr inbounds i8, ptr %data.addr.0540, i64 51 + %incdec.ptr265 = getelementptr inbounds i8, ptr %data.addr.0526, i64 50 + %incdec.ptr269 = getelementptr inbounds i8, ptr %data.addr.0526, i64 51 %54 = load i8, ptr %incdec.ptr265, align 1 %conv270 = zext i8 %54 to i32 %shl271 = shl nuw nsw i32 %conv270, 16 %or272 = or disjoint i32 %shl271, %53 - %incdec.ptr273 = getelementptr inbounds i8, ptr %data.addr.0540, i64 52 + %incdec.ptr273 = getelementptr inbounds i8, ptr %data.addr.0526, i64 52 %55 = load i8, ptr %incdec.ptr269, align 1 %conv274 = zext i8 %55 to i32 %shl275 = shl nuw i32 %conv274, 24 @@ -559,13 +559,13 @@ for.body: ; preds = %for.body.lr.ph, %fo %or285 = tail call i32 @llvm.fshl.i32(i32 %add282, i32 %add282, i32 19) %56 = load i16, ptr %incdec.ptr273, align 1 %57 = zext i16 %56 to i32 - %incdec.ptr288 = getelementptr inbounds i8, ptr %data.addr.0540, i64 54 - %incdec.ptr292 = getelementptr inbounds i8, ptr %data.addr.0540, i64 55 + %incdec.ptr288 = getelementptr inbounds i8, ptr %data.addr.0526, i64 54 + %incdec.ptr292 = getelementptr inbounds i8, ptr %data.addr.0526, i64 55 %58 = load i8, ptr %incdec.ptr288, align 1 %conv293 = zext i8 %58 to i32 %shl294 = shl nuw nsw i32 %conv293, 16 %or295 = or disjoint i32 %shl294, %57 - %incdec.ptr296 = getelementptr inbounds i8, ptr %data.addr.0540, i64 56 + %incdec.ptr296 = getelementptr inbounds i8, ptr %data.addr.0526, i64 56 %59 = load i8, ptr %incdec.ptr292, align 1 %conv297 = zext i8 %59 to i32 %shl298 = shl nuw i32 %conv297, 24 @@ -578,13 +578,13 @@ for.body: ; preds = %for.body.lr.ph, %fo %or308 = tail call i32 @llvm.fshl.i32(i32 %add305, i32 %add305, i32 3) %60 = load i16, ptr %incdec.ptr296, align 1 %61 = zext i16 %60 to i32 - %incdec.ptr311 = getelementptr inbounds i8, ptr %data.addr.0540, i64 58 - %incdec.ptr315 = getelementptr inbounds i8, ptr %data.addr.0540, i64 59 + %incdec.ptr311 = getelementptr inbounds i8, ptr %data.addr.0526, i64 58 + %incdec.ptr315 = getelementptr inbounds i8, ptr %data.addr.0526, i64 59 %62 = load i8, ptr %incdec.ptr311, align 1 %conv316 = zext i8 %62 to i32 %shl317 = shl nuw nsw i32 %conv316, 16 %or318 = or disjoint i32 %shl317, %61 - %incdec.ptr319 = getelementptr inbounds i8, ptr %data.addr.0540, i64 60 + %incdec.ptr319 = getelementptr inbounds i8, ptr %data.addr.0526, i64 60 %63 = load i8, ptr %incdec.ptr315, align 1 %conv320 = zext i8 %63 to i32 %shl321 = shl nuw i32 %conv320, 24 @@ -597,13 +597,13 @@ for.body: ; preds = %for.body.lr.ph, %fo %or331 = tail call i32 @llvm.fshl.i32(i32 %add328, i32 %add328, i32 7) %64 = load i16, ptr %incdec.ptr319, align 1 %65 = zext i16 %64 to i32 - %incdec.ptr334 = getelementptr inbounds i8, ptr %data.addr.0540, i64 62 - %incdec.ptr338 = getelementptr inbounds i8, ptr %data.addr.0540, i64 63 + %incdec.ptr334 = getelementptr inbounds i8, ptr %data.addr.0526, i64 62 + %incdec.ptr338 = getelementptr inbounds i8, ptr %data.addr.0526, i64 63 %66 = load i8, ptr %incdec.ptr334, align 1 %conv339 = zext i8 %66 to i32 %shl340 = shl nuw nsw i32 %conv339, 16 %or341 = or disjoint i32 %shl340, %65 - %incdec.ptr342 = getelementptr inbounds i8, ptr %data.addr.0540, i64 64 + %incdec.ptr342 = getelementptr inbounds i8, ptr %data.addr.0526, i64 64 %67 = load i8, ptr %incdec.ptr338, align 1 %conv343 = zext i8 %67 to i32 %shl344 = shl nuw i32 %conv343, 24 @@ -622,128 +622,127 @@ for.body: ; preds = %for.body.lr.ph, %fo %or363 = tail call i32 @llvm.fshl.i32(i32 %add360, i32 %add360, i32 19) %add365 = add i32 %or13, 1518500249 %and366 = and i32 %or363, %or354 - %and367518 = or i32 %or354, %or331 - %or368 = and i32 %or363, %and367518 - %and369 = and i32 %or354, %or331 - %or370 = or i32 %or368, %and369 + %and367518 = or i32 %or363, %or354 + %68 = and i32 %and367518, %or331 + %or370 = or i32 %68, %and366 %add372 = add i32 %add365, %or308 %add374 = add i32 %add372, %or370 %or378 = tail call i32 @llvm.fshl.i32(i32 %add374, i32 %add374, i32 3) %add380 = add i32 %or92, 1518500249 %and381 = and i32 %or378, %or363 - %and382519 = or i32 %or363, %or354 - %or383 = and i32 %or378, %and382519 - %or385 = or i32 %or383, %and366 + %and382 = and i32 %or378, %or354 + %or383 = or i32 %and382, %and366 + %or385 = or i32 %or383, %and381 %add387 = add i32 %add380, %or331 %add389 = add i32 %add387, %or385 %or393 = tail call i32 @llvm.fshl.i32(i32 %add389, i32 %add389, i32 5) %add395 = add i32 %or184, 1518500249 %and396 = and i32 %or393, %or378 - %and397520 = or i32 %or378, %or363 - %or398 = and i32 %or393, %and397520 - %or400 = or i32 %or398, %and381 + %and397 = and i32 %or393, %or363 + %or398 = or i32 %and397, %and381 + %or400 = or i32 %or398, %and396 %add402 = add i32 %add395, %or354 %add404 = add i32 %add402, %or400 %or408 = tail call i32 @llvm.fshl.i32(i32 %add404, i32 %add404, i32 9) %add410 = add i32 %or276, 1518500249 %and411 = and i32 %or408, %or393 - %and412521 = or i32 %or393, %or378 - %or413 = and i32 %or408, %and412521 - %or415 = or i32 %or413, %and396 + %and412 = and i32 %or408, %or378 + %or413 = or i32 %and412, %and396 + %or415 = or i32 %or413, %and411 %add417 = add i32 %add410, %or363 %add419 = add i32 %add417, %or415 %or423 = tail call i32 @llvm.fshl.i32(i32 %add419, i32 %add419, i32 13) %add425 = add i32 %or27, 1518500249 %and426 = and i32 %or423, %or408 - %and427522 = or i32 %or408, %or393 - %or428 = and i32 %or423, %and427522 - %or430 = or i32 %or428, %and411 + %and427 = and i32 %or423, %or393 + %or428 = or i32 %and427, %and411 + %or430 = or i32 %or428, %and426 %add432 = add i32 %add425, %or378 %add434 = add i32 %add432, %or430 %or438 = tail call i32 @llvm.fshl.i32(i32 %add434, i32 %add434, i32 3) %add440 = add i32 %or115, 1518500249 %and441 = and i32 %or438, %or423 - %and442523 = or i32 %or423, %or408 - %or443 = and i32 %or438, %and442523 - %or445 = or i32 %or443, %and426 + %and442 = and i32 %or438, %or408 + %or443 = or i32 %and442, %and426 + %or445 = or i32 %or443, %and441 %add447 = add i32 %add440, %or393 %add449 = add i32 %add447, %or445 %or453 = tail call i32 @llvm.fshl.i32(i32 %add449, i32 %add449, i32 5) %add455 = add i32 %or207, 1518500249 %and456 = and i32 %or453, %or438 - %and457524 = or i32 %or438, %or423 - %or458 = and i32 %or453, %and457524 - %or460 = or i32 %or458, %and441 + %and457 = and i32 %or453, %or423 + %or458 = or i32 %and457, %and441 + %or460 = or i32 %or458, %and456 %add462 = add i32 %add455, %or408 %add464 = add i32 %add462, %or460 %or468 = tail call i32 @llvm.fshl.i32(i32 %add464, i32 %add464, i32 9) %add470 = add i32 %or299, 1518500249 %and471 = and i32 %or468, %or453 - %and472525 = or i32 %or453, %or438 - %or473 = and i32 %or468, %and472525 - %or475 = or i32 %or473, %and456 + %and472 = and i32 %or468, %or438 + %or473 = or i32 %and472, %and456 + %or475 = or i32 %or473, %and471 %add477 = add i32 %add470, %or423 %add479 = add i32 %add477, %or475 %or483 = tail call i32 @llvm.fshl.i32(i32 %add479, i32 %add479, i32 13) %add485 = add i32 %or46, 1518500249 %and486 = and i32 %or483, %or468 - %and487526 = or i32 %or468, %or453 - %or488 = and i32 %or483, %and487526 - %or490 = or i32 %or488, %and471 + %and487 = and i32 %or483, %or453 + %or488 = or i32 %and487, %and471 + %or490 = or i32 %or488, %and486 %add492 = add i32 %add485, %or438 %add494 = add i32 %add492, %or490 %or498 = tail call i32 @llvm.fshl.i32(i32 %add494, i32 %add494, i32 3) %add500 = add i32 %or138, 1518500249 %and501 = and i32 %or498, %or483 - %and502527 = or i32 %or483, %or468 - %or503 = and i32 %or498, %and502527 - %or505 = or i32 %or503, %and486 + %and502 = and i32 %or498, %or468 + %or503 = or i32 %and502, %and486 + %or505 = or i32 %or503, %and501 %add507 = add i32 %add500, %or453 %add509 = add i32 %add507, %or505 %or513 = tail call i32 @llvm.fshl.i32(i32 %add509, i32 %add509, i32 5) %add515 = add i32 %or230, 1518500249 %and516 = and i32 %or513, %or498 - %and517528 = or i32 %or498, %or483 - %or518 = and i32 %or513, %and517528 - %or520 = or i32 %or518, %and501 + %and517 = and i32 %or513, %or483 + %or518 = or i32 %and517, %and501 + %or520 = or i32 %or518, %and516 %add522 = add i32 %add515, %or468 %add524 = add i32 %add522, %or520 %or528 = tail call i32 @llvm.fshl.i32(i32 %add524, i32 %add524, i32 9) %add530 = add i32 %or322, 1518500249 %and531 = and i32 %or528, %or513 - %and532529 = or i32 %or513, %or498 - %or533 = and i32 %or528, %and532529 - %or535 = or i32 %or533, %and516 + %and532 = and i32 %or528, %or498 + %or533 = or i32 %and532, %and516 + %or535 = or i32 %or533, %and531 %add537 = add i32 %add530, %or483 %add539 = add i32 %add537, %or535 %or543 = tail call i32 @llvm.fshl.i32(i32 %add539, i32 %add539, i32 13) %add545 = add i32 %or69, 1518500249 %and546 = and i32 %or543, %or528 - %and547530 = or i32 %or528, %or513 - %or548 = and i32 %or543, %and547530 - %or550 = or i32 %or548, %and531 + %and547 = and i32 %or543, %or513 + %or548 = or i32 %and547, %and531 + %or550 = or i32 %or548, %and546 %add552 = add i32 %add545, %or498 %add554 = add i32 %add552, %or550 %or558 = tail call i32 @llvm.fshl.i32(i32 %add554, i32 %add554, i32 3) %add560 = add i32 %or161, 1518500249 %and561 = and i32 %or558, %or543 - %and562531 = or i32 %or543, %or528 - %or563 = and i32 %or558, %and562531 - %or565 = or i32 %or563, %and546 + %and562 = and i32 %or558, %or528 + %or563 = or i32 %and562, %and546 + %or565 = or i32 %or563, %and561 %add567 = add i32 %add560, %or513 %add569 = add i32 %add567, %or565 %or573 = tail call i32 @llvm.fshl.i32(i32 %add569, i32 %add569, i32 5) %add575 = add i32 %or253, 1518500249 %and576 = and i32 %or573, %or558 - %and577532 = or i32 %or558, %or543 - %or578 = and i32 %or573, %and577532 - %or580 = or i32 %or578, %and561 + %and577 = and i32 %or573, %or543 + %or578 = or i32 %and577, %and561 + %or580 = or i32 %or578, %and576 %add582 = add i32 %add575, %or528 %add584 = add i32 %add582, %or580 %or588 = tail call i32 @llvm.fshl.i32(i32 %add584, i32 %add584, i32 9) %add590 = add i32 %or345, 1518500249 - %and592533 = or i32 %or573, %or558 - %or593 = and i32 %or588, %and592533 + %and592519 = or i32 %or573, %or558 + %or593 = and i32 %or588, %and592519 %or595 = or i32 %or593, %and576 %add597 = add i32 %add590, %or543 %add599 = add i32 %add597, %or595 @@ -843,13 +842,13 @@ for.body: ; preds = %for.body.lr.ph, %fo %add789 = add i32 %add785, %or747 %add791 = add i32 %add789, %xor787 %or795 = tail call i32 @llvm.fshl.i32(i32 %add791, i32 %add791, i32 15) - %add797 = add i32 %or759, %A.0538 + %add797 = add i32 %or759, %A.0524 store i32 %add797, ptr %state, align 4 - %add799 = add i32 %or795, %B.0537 + %add799 = add i32 %or795, %B.0523 store i32 %add799, ptr %arrayidx1, align 4 - %add801 = add i32 %or783, %C.0536 + %add801 = add i32 %or783, %C.0522 store i32 %add801, ptr %arrayidx2, align 4 - %add803 = add i32 %or771, %D.0535 + %add803 = add i32 %or771, %D.0521 store i32 %add803, ptr %arrayidx3, align 4 %tobool.not = icmp eq i64 %dec, 0 br i1 %tobool.not, label %for.end, label %for.body, !llvm.loop !7 diff --git a/bench/libquic/optimized/string16.cc.ll b/bench/libquic/optimized/string16.cc.ll index 868e20914d1..ca92088efdd 100644 --- a/bench/libquic/optimized/string16.cc.ll +++ b/bench/libquic/optimized/string16.cc.ll @@ -1594,46 +1594,50 @@ invoke.cont: ; preds = %entry %2 = load ptr, ptr %__str, align 8 %add.ptr.idx = shl nsw i64 %__pos, 1 %add.ptr = getelementptr inbounds i8, ptr %2, i64 %add.ptr.idx - %3 = sub nuw nsw i64 %1, %__pos - %gepdiff = shl nsw i64 %3, 1 - %cmp.i6 = icmp ugt i64 %3, 7 - br i1 %cmp.i6, label %if.then.i7, label %if.end.i + %add.ptr5.idx = shl nsw i64 %1, 1 + %gepdiff = sub nsw i64 %add.ptr5.idx, %add.ptr.idx + %sub.ptr.div.i.i.i = ashr exact i64 %gepdiff, 1 + %cmp.i6 = icmp ugt i64 %sub.ptr.div.i.i.i, 7 + br i1 %cmp.i6, label %if.then.i7, label %entry.if.end_crit_edge.i + +entry.if.end_crit_edge.i: ; preds = %invoke.cont + %.pre.i = load ptr, ptr %this, align 8 + br label %if.end.i if.then.i7: ; preds = %invoke.cont - %cmp.i.i = icmp ugt i64 %3, 2305843009213693951 - br i1 %cmp.i.i, label %if.then.i.i, label %if.end.i.thread + %cmp.i.i = icmp ugt i64 %sub.ptr.div.i.i.i, 2305843009213693951 + br i1 %cmp.i.i, label %if.then.i.i, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i if.then.i.i: ; preds = %if.then.i7 tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str) #19 unreachable -if.end.i.thread: ; preds = %if.then.i7 +_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i: ; preds = %if.then.i7 %mul.i.i.i.i = add nuw nsw i64 %gepdiff, 2 %call5.i.i.i.i9 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i) #20 store ptr %call5.i.i.i.i9, ptr %this, align 8 - store i64 %3, ptr %0, align 8 - br label %if.else.i.i.i + store i64 %sub.ptr.div.i.i.i, ptr %0, align 8 + br label %if.end.i -if.end.i: ; preds = %invoke.cont - %.pre.i = load ptr, ptr %this, align 8 - %cmp.i.i.i = icmp eq i64 %3, 1 +if.end.i: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i, %entry.if.end_crit_edge.i + %3 = phi ptr [ %.pre.i, %entry.if.end_crit_edge.i ], [ %call5.i.i.i.i9, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i ] + %cmp.i.i.i = icmp eq i64 %gepdiff, 2 br i1 %cmp.i.i.i, label %if.then.i.i.i, label %if.else.i.i.i if.then.i.i.i: ; preds = %if.end.i %4 = load i16, ptr %add.ptr, align 2 - store i16 %4, ptr %.pre.i, align 2 + store i16 %4, ptr %3, align 2 br label %invoke.cont6 -if.else.i.i.i: ; preds = %if.end.i.thread, %if.end.i - %5 = phi ptr [ %call5.i.i.i.i9, %if.end.i.thread ], [ %.pre.i, %if.end.i ] - tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %5, ptr readonly align 2 %add.ptr, i64 %gepdiff, i1 false) +if.else.i.i.i: ; preds = %if.end.i + tail call void @llvm.memcpy.p0.p0.i64(ptr align 2 %3, ptr readonly align 2 %add.ptr, i64 %gepdiff, i1 false) br label %invoke.cont6 invoke.cont6: ; preds = %if.else.i.i.i, %if.then.i.i.i %_M_string_length.i.i.i = getelementptr inbounds i8, ptr %this, i64 8 - store i64 %3, ptr %_M_string_length.i.i.i, align 8 - %6 = load ptr, ptr %this, align 8 - %arrayidx.i.i = getelementptr inbounds i8, ptr %6, i64 %gepdiff + store i64 %sub.ptr.div.i.i.i, ptr %_M_string_length.i.i.i, align 8 + %5 = load ptr, ptr %this, align 8 + %arrayidx.i.i = getelementptr inbounds i8, ptr %5, i64 %gepdiff store i16 0, ptr %arrayidx.i.i, align 2 ret void } diff --git a/bench/lodepng/optimized/lodepng.cpp.ll b/bench/lodepng/optimized/lodepng.cpp.ll index bfd0728ad6c..801fbfb88bf 100644 --- a/bench/lodepng/optimized/lodepng.cpp.ll +++ b/bench/lodepng/optimized/lodepng.cpp.ll @@ -12271,12 +12271,12 @@ if.end11.i: ; preds = %if.end6.i br label %while.body.i while.body.i: ; preds = %if.end292.i, %if.end11.i - %chunk.0538.i = phi ptr [ %arrayidx.i, %if.end11.i ], [ %chunk.1.i, %if.end292.i ] - %idatsize.0537.i = phi i64 [ 0, %if.end11.i ], [ %idatsize.2481490.i, %if.end292.i ] - %critical_pos.0536.i = phi i32 [ 1, %if.end11.i ], [ %critical_pos.1480492.i, %if.end292.i ] - %sub.ptr.lhs.cast.i = ptrtoint ptr %chunk.0538.i to i64 + %chunk.0537.i = phi ptr [ %arrayidx.i, %if.end11.i ], [ %chunk.1.i, %if.end292.i ] + %idatsize.0536.i = phi i64 [ 0, %if.end11.i ], [ %idatsize.2481490.i, %if.end292.i ] + %critical_pos.0535.i = phi i32 [ 1, %if.end11.i ], [ %critical_pos.1480492.i, %if.end292.i ] + %sub.ptr.lhs.cast.i = ptrtoint ptr %chunk.0537.i to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i - %cmp.i = icmp ult ptr %chunk.0538.i, %in + %cmp.i = icmp ult ptr %chunk.0537.i, %in %add.i = add i64 %sub.ptr.sub.i, 12 %cmp15.i = icmp ugt i64 %add.i, %insize %or.cond208.i = or i1 %cmp.i, %cmp15.i @@ -12286,15 +12286,15 @@ if.then16.i: ; preds = %while.body.i %ignore_end.i = getelementptr inbounds i8, ptr %state, i64 48 %5 = load i32, ptr %ignore_end.i, align 8 %tobool17.not.i = icmp eq i32 %5, 0 - br i1 %tobool17.not.i, label %if.end381.thread579.i.sink.split, label %land.lhs.true295.i + br i1 %tobool17.not.i, label %if.end381.thread578.i.sink.split, label %land.lhs.true295.i if.end21.i: ; preds = %while.body.i - %6 = load i8, ptr %chunk.0538.i, align 1 + %6 = load i8, ptr %chunk.0537.i, align 1 %conv.i.i.i = zext i8 %6 to i32 %shl.i.i.i = shl nuw i32 %conv.i.i.i, 24 - %arrayidx1.i.i.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 1 - %arrayidx4.i.i.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 2 - %arrayidx8.i.i.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 3 + %arrayidx1.i.i.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 1 + %arrayidx4.i.i.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 2 + %arrayidx8.i.i.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 3 %cmp23.i = icmp slt i32 %shl.i.i.i, 0 br i1 %cmp23.i, label %if.then24.i, label %if.end31.i @@ -12302,7 +12302,7 @@ if.then24.i: ; preds = %if.end21.i %ignore_end26.i = getelementptr inbounds i8, ptr %state, i64 48 %7 = load i32, ptr %ignore_end26.i, align 8 %tobool27.not.i = icmp eq i32 %7, 0 - br i1 %tobool27.not.i, label %if.end381.thread579.i.sink.split, label %land.lhs.true295.i + br i1 %tobool27.not.i, label %if.end381.thread578.i.sink.split, label %land.lhs.true295.i if.end31.i: ; preds = %if.end21.i %8 = load i8, ptr %arrayidx1.i.i.i, align 1 @@ -12321,11 +12321,11 @@ if.end31.i: ; preds = %if.end21.i %cmp34.i = icmp ugt i64 %add33.i, %insize %cmp39.i = icmp ult i64 %add33.i, %sub.ptr.sub.i %or.cond209.i = or i1 %cmp34.i, %cmp39.i - br i1 %or.cond209.i, label %if.end381.thread579.i.sink.split, label %if.end.i.i + br i1 %or.cond209.i, label %if.end381.thread578.i.sink.split, label %if.end.i.i if.end.i.i: ; preds = %if.end31.i - %arrayidx.i.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 8 - %arrayidx.i213.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 4 + %arrayidx.i.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 8 + %arrayidx.i213.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 4 %13 = load i8, ptr %arrayidx.i213.i, align 1 switch i8 %13, label %if.else135.i [ i8 73, label %land.lhs.true.i.i @@ -12336,7 +12336,7 @@ if.end.i.i: ; preds = %if.end31.i ] land.lhs.true.i.i: ; preds = %if.end.i.i - %arrayidx4.i.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 5 + %arrayidx4.i.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 5 %14 = load i8, ptr %arrayidx4.i.i, align 1 switch i8 %14, label %if.else135.i [ i8 68, label %land.lhs.true9.i.i @@ -12344,59 +12344,59 @@ land.lhs.true.i.i: ; preds = %if.end.i.i ] land.lhs.true9.i.i: ; preds = %land.lhs.true.i.i - %arrayidx10.i.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 6 + %arrayidx10.i.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 6 %15 = load i8, ptr %arrayidx10.i.i, align 1 %cmp14.i.i = icmp eq i8 %15, 65 br i1 %cmp14.i.i, label %_Z25lodepng_chunk_type_equalsPKhPKc.exit.i, label %if.else135.i _Z25lodepng_chunk_type_equalsPKhPKc.exit.i: ; preds = %land.lhs.true9.i.i - %arrayidx15.i.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 7 + %arrayidx15.i.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 7 %16 = load i8, ptr %arrayidx15.i.i, align 1 %cmp19.i.not.i = icmp eq i8 %16, 84 br i1 %cmp19.i.not.i, label %if.then46.i, label %if.else135.i if.then46.i: ; preds = %_Z25lodepng_chunk_type_equalsPKhPKc.exit.i - %add.i218.i = add i64 %idatsize.0537.i, %conv.i - %cmp.i219.not.i = icmp ult i64 %add.i218.i, %idatsize.0537.i + %add.i218.i = add i64 %idatsize.0536.i, %conv.i + %cmp.i219.not.i = icmp ult i64 %add.i218.i, %idatsize.0536.i %cmp53.i = icmp ugt i64 %add.i218.i, %insize - %or.cond594.i = or i1 %cmp.i219.not.i, %cmp53.i - br i1 %or.cond594.i, label %if.end381.thread579.i.sink.split, label %if.end56.i + %or.cond593.i = or i1 %cmp.i219.not.i, %cmp53.i + br i1 %or.cond593.i, label %if.end381.thread578.i.sink.split, label %if.end56.i if.end56.i: ; preds = %if.then46.i %cmp4.not.i.i = icmp eq i32 %or10.i.i.i, 0 br i1 %cmp4.not.i.i, label %if.end276.i, label %for.body.preheader.i.i for.body.preheader.i.i: ; preds = %if.end56.i - %add.ptr.i = getelementptr inbounds i8, ptr %call.i.i, i64 %idatsize.0537.i + %add.ptr.i = getelementptr inbounds i8, ptr %call.i.i, i64 %idatsize.0536.i tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr.i, ptr nonnull readonly align 1 %arrayidx.i.i, i64 %conv.i, i1 false), !alias.scope !316 br label %if.end276.i land.lhs.true9.i238.i: ; preds = %land.lhs.true.i.i - %arrayidx10.i239.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 6 + %arrayidx10.i239.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 6 %17 = load i8, ptr %arrayidx10.i239.i, align 1 %cmp14.i241.i = icmp eq i8 %17, 78 br i1 %cmp14.i241.i, label %_Z25lodepng_chunk_type_equalsPKhPKc.exit246.i, label %if.else135.i _Z25lodepng_chunk_type_equalsPKhPKc.exit246.i: ; preds = %land.lhs.true9.i238.i - %arrayidx15.i243.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 7 + %arrayidx15.i243.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 7 %18 = load i8, ptr %arrayidx15.i243.i, align 1 %cmp19.i245.not.i = icmp eq i8 %18, 68 br i1 %cmp19.i245.not.i, label %if.end276.i, label %if.else135.i land.lhs.true.i260.i: ; preds = %if.end.i.i - %arrayidx4.i261.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 5 + %arrayidx4.i261.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 5 %19 = load i8, ptr %arrayidx4.i261.i, align 1 %cmp8.i263.i = icmp eq i8 %19, 76 br i1 %cmp8.i263.i, label %land.lhs.true9.i264.i, label %if.else135.i land.lhs.true9.i264.i: ; preds = %land.lhs.true.i260.i - %arrayidx10.i265.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 6 + %arrayidx10.i265.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 6 %20 = load i8, ptr %arrayidx10.i265.i, align 1 %cmp14.i267.i = icmp eq i8 %20, 84 br i1 %cmp14.i267.i, label %_Z25lodepng_chunk_type_equalsPKhPKc.exit272.i, label %if.else135.i _Z25lodepng_chunk_type_equalsPKhPKc.exit272.i: ; preds = %land.lhs.true9.i264.i - %arrayidx15.i269.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 7 + %arrayidx15.i269.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 7 %21 = load i8, ptr %arrayidx15.i269.i, align 1 %cmp19.i271.not.i = icmp eq i8 %21, 69 br i1 %cmp19.i271.not.i, label %if.then66.i, label %if.else135.i @@ -12405,22 +12405,22 @@ if.then66.i: ; preds = %_Z25lodepng_chunk_t %call70.i = tail call fastcc noundef i32 @_ZL14readChunk_PLTEP16LodePNGColorModePKhm(ptr noundef nonnull %color.i, ptr noundef nonnull %arrayidx.i.i, i64 noundef %conv.i) store i32 %call70.i, ptr %error.i, align 8 %tobool73.not.i = icmp eq i32 %call70.i, 0 - br i1 %tobool73.not.i, label %if.end276.i, label %if.end381.thread579.i + br i1 %tobool73.not.i, label %if.end276.i, label %if.end381.thread578.i land.lhs.true.i286.i: ; preds = %if.end.i.i - %arrayidx4.i287.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 5 + %arrayidx4.i287.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 5 %22 = load i8, ptr %arrayidx4.i287.i, align 1 %cmp8.i289.i = icmp eq i8 %22, 82 br i1 %cmp8.i289.i, label %land.lhs.true9.i290.i, label %land.lhs.true.i85 land.lhs.true9.i290.i: ; preds = %land.lhs.true.i286.i - %arrayidx10.i291.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 6 + %arrayidx10.i291.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 6 %23 = load i8, ptr %arrayidx10.i291.i, align 1 %cmp14.i293.i = icmp eq i8 %23, 78 br i1 %cmp14.i293.i, label %_Z25lodepng_chunk_type_equalsPKhPKc.exit298.i, label %land.lhs.true.i85 _Z25lodepng_chunk_type_equalsPKhPKc.exit298.i: ; preds = %land.lhs.true9.i290.i - %arrayidx15.i295.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 7 + %arrayidx15.i295.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 7 %24 = load i8, ptr %arrayidx15.i295.i, align 1 %cmp19.i297.not.i = icmp eq i8 %24, 83 br i1 %cmp19.i297.not.i, label %if.then79.i, label %land.lhs.true.i85 @@ -12429,22 +12429,22 @@ if.then79.i: ; preds = %_Z25lodepng_chunk_t %call83.i = tail call fastcc noundef i32 @_ZL14readChunk_tRNSP16LodePNGColorModePKhm(ptr noundef nonnull %color.i, ptr noundef nonnull %arrayidx.i.i, i64 noundef %conv.i) store i32 %call83.i, ptr %error.i, align 8 %tobool86.not.i = icmp eq i32 %call83.i, 0 - br i1 %tobool86.not.i, label %if.end276.i, label %if.end381.thread579.i + br i1 %tobool86.not.i, label %if.end276.i, label %if.end381.thread578.i land.lhs.true.i120: ; preds = %if.end.i.i - %arrayidx4.i121 = getelementptr inbounds i8, ptr %chunk.0538.i, i64 5 + %arrayidx4.i121 = getelementptr inbounds i8, ptr %chunk.0537.i, i64 5 %25 = load i8, ptr %arrayidx4.i121, align 1 %cmp8.i123 = icmp eq i8 %25, 75 br i1 %cmp8.i123, label %land.lhs.true9.i124, label %if.else135.i land.lhs.true9.i124: ; preds = %land.lhs.true.i120 - %arrayidx10.i125 = getelementptr inbounds i8, ptr %chunk.0538.i, i64 6 + %arrayidx10.i125 = getelementptr inbounds i8, ptr %chunk.0537.i, i64 6 %26 = load i8, ptr %arrayidx10.i125, align 1 %cmp14.i127 = icmp eq i8 %26, 71 br i1 %cmp14.i127, label %_Z25lodepng_chunk_type_equalsPKhPKc.exit132, label %if.else135.i _Z25lodepng_chunk_type_equalsPKhPKc.exit132: ; preds = %land.lhs.true9.i124 - %arrayidx15.i129 = getelementptr inbounds i8, ptr %chunk.0538.i, i64 7 + %arrayidx15.i129 = getelementptr inbounds i8, ptr %chunk.0537.i, i64 7 %27 = load i8, ptr %arrayidx15.i129, align 1 %cmp19.i131.not = icmp eq i8 %27, 68 br i1 %cmp19.i131.not, label %if.then92.i, label %if.else135.i @@ -12461,14 +12461,14 @@ if.then92.i: ; preds = %_Z25lodepng_chunk_t if.then.i102: ; preds = %if.then92.i %cmp1.not.i = icmp eq i32 %or10.i.i.i, 1 - br i1 %cmp1.not.i, label %if.end.i103, label %if.end381.thread579.i.sink.split + br i1 %cmp1.not.i, label %if.end.i103, label %if.end381.thread578.i.sink.split if.end.i103: ; preds = %if.then.i102 %29 = load i8, ptr %arrayidx.i.i, align 1 %conv.i104 = zext i8 %29 to i64 %30 = load i64, ptr %palettesize.i105, align 8 %cmp4.not.i = icmp ugt i64 %30, %conv.i104 - br i1 %cmp4.not.i, label %if.end6.i106, label %if.end381.thread579.i.sink.split + br i1 %cmp4.not.i, label %if.end6.i106, label %if.end381.thread578.i.sink.split if.end6.i106: ; preds = %if.end.i103 store i32 1, ptr %background_defined39.i, align 8 @@ -12480,14 +12480,14 @@ if.end6.i106: ; preds = %if.end.i103 if.then15.i: ; preds = %if.then92.i, %if.then92.i %cmp16.not.i = icmp eq i32 %or10.i.i.i, 2 - br i1 %cmp16.not.i, label %if.end18.i, label %if.end381.thread579.i.sink.split + br i1 %cmp16.not.i, label %if.end18.i, label %if.end381.thread578.i.sink.split if.end18.i: ; preds = %if.then15.i store i32 1, ptr %background_defined39.i, align 8 %32 = load i8, ptr %arrayidx.i.i, align 1 %conv21.i = zext i8 %32 to i32 %mul.i100 = shl nuw nsw i32 %conv21.i, 8 - %arrayidx22.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 9 + %arrayidx22.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 9 %33 = load i8, ptr %arrayidx22.i, align 1 %conv23.i = zext i8 %33 to i32 %add.i101 = or disjoint i32 %mul.i100, %conv23.i @@ -12497,32 +12497,32 @@ if.end18.i: ; preds = %if.then15.i if.then35.i: ; preds = %if.then92.i, %if.then92.i %cmp36.not.i = icmp eq i32 %or10.i.i.i, 6 - br i1 %cmp36.not.i, label %if.end38.i, label %if.end381.thread579.i.sink.split + br i1 %cmp36.not.i, label %if.end38.i, label %if.end381.thread578.i.sink.split if.end38.i: ; preds = %if.then35.i store i32 1, ptr %background_defined39.i, align 8 %34 = load i8, ptr %arrayidx.i.i, align 1 %conv41.i = zext i8 %34 to i32 %mul42.i = shl nuw nsw i32 %conv41.i, 8 - %arrayidx43.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 9 + %arrayidx43.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 9 %35 = load i8, ptr %arrayidx43.i, align 1 %conv44.i = zext i8 %35 to i32 %add45.i = or disjoint i32 %mul42.i, %conv44.i store i32 %add45.i, ptr %background_r46.i, align 4 - %arrayidx47.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 10 + %arrayidx47.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 10 %36 = load i8, ptr %arrayidx47.i, align 1 %conv48.i = zext i8 %36 to i32 %mul49.i = shl nuw nsw i32 %conv48.i, 8 - %arrayidx50.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 11 + %arrayidx50.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 11 %37 = load i8, ptr %arrayidx50.i, align 1 %conv51.i = zext i8 %37 to i32 %add52.i = or disjoint i32 %mul49.i, %conv51.i store i32 %add52.i, ptr %background_g53.i, align 8 - %arrayidx54.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 12 + %arrayidx54.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 12 %38 = load i8, ptr %arrayidx54.i, align 1 %conv55.i = zext i8 %38 to i32 %mul56.i = shl nuw nsw i32 %conv55.i, 8 - %arrayidx57.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 13 + %arrayidx57.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 13 %39 = load i8, ptr %arrayidx57.i, align 1 %conv58.i = zext i8 %39 to i32 %add59.i = or disjoint i32 %mul56.i, %conv58.i @@ -12540,19 +12540,19 @@ _ZL14readChunk_bKGDP11LodePNGInfoPKhm.exit: ; preds = %if.then92.i, %retur br label %if.end276.i land.lhs.true.i85: ; preds = %land.lhs.true.i286.i, %land.lhs.true9.i290.i, %_Z25lodepng_chunk_type_equalsPKhPKc.exit298.i - %arrayidx4.i86 = getelementptr inbounds i8, ptr %chunk.0538.i, i64 5 + %arrayidx4.i86 = getelementptr inbounds i8, ptr %chunk.0537.i, i64 5 %40 = load i8, ptr %arrayidx4.i86, align 1 %cmp8.i88 = icmp eq i8 %40, 69 br i1 %cmp8.i88, label %land.lhs.true9.i89, label %if.else135.i land.lhs.true9.i89: ; preds = %land.lhs.true.i85 - %arrayidx10.i90 = getelementptr inbounds i8, ptr %chunk.0538.i, i64 6 + %arrayidx10.i90 = getelementptr inbounds i8, ptr %chunk.0537.i, i64 6 %41 = load i8, ptr %arrayidx10.i90, align 1 %cmp14.i92 = icmp eq i8 %41, 88 br i1 %cmp14.i92, label %_Z25lodepng_chunk_type_equalsPKhPKc.exit97, label %if.else135.i _Z25lodepng_chunk_type_equalsPKhPKc.exit97: ; preds = %land.lhs.true9.i89 - %arrayidx15.i94 = getelementptr inbounds i8, ptr %chunk.0538.i, i64 7 + %arrayidx15.i94 = getelementptr inbounds i8, ptr %chunk.0537.i, i64 7 %42 = load i8, ptr %arrayidx15.i94, align 1 %cmp19.i96.not = icmp eq i8 %42, 116 br i1 %cmp19.i96.not, label %if.then104.i, label %if.else135.i @@ -12566,22 +12566,22 @@ if.then107.i: ; preds = %if.then104.i %call110.i = tail call fastcc noundef i32 @_ZL14readChunk_tEXtP11LodePNGInfoPKhm(ptr noundef nonnull %info_png.i, ptr noundef nonnull %arrayidx.i.i, i64 noundef %conv.i) store i32 %call110.i, ptr %error.i, align 8 %tobool113.not.i = icmp eq i32 %call110.i, 0 - br i1 %tobool113.not.i, label %if.end276.i, label %if.end381.thread579.i + br i1 %tobool113.not.i, label %if.end276.i, label %if.end381.thread578.i land.lhs.true.i71: ; preds = %if.end.i.i - %arrayidx4.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 5 + %arrayidx4.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 5 %44 = load i8, ptr %arrayidx4.i, align 1 %cmp8.i = icmp eq i8 %44, 84 br i1 %cmp8.i, label %land.lhs.true9.i, label %if.else135.i land.lhs.true9.i: ; preds = %land.lhs.true.i71 - %arrayidx10.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 6 + %arrayidx10.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 6 %45 = load i8, ptr %arrayidx10.i, align 1 %cmp14.i = icmp eq i8 %45, 88 br i1 %cmp14.i, label %_Z25lodepng_chunk_type_equalsPKhPKc.exit, label %if.else135.i _Z25lodepng_chunk_type_equalsPKhPKc.exit: ; preds = %land.lhs.true9.i - %arrayidx15.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 7 + %arrayidx15.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 7 %46 = load i8, ptr %arrayidx15.i, align 1 %cmp19.i.not = icmp eq i8 %46, 116 br i1 %cmp19.i.not, label %if.then120.i, label %if.else135.i @@ -12595,10 +12595,10 @@ if.then124.i: ; preds = %if.then120.i %call128.i = tail call fastcc noundef i32 @_ZL14readChunk_zTXtP11LodePNGInfoPK22LodePNGDecoderSettingsPKhm(ptr noundef nonnull %info_png.i, ptr noundef nonnull %state, ptr noundef nonnull %arrayidx.i.i, i64 noundef %conv.i) store i32 %call128.i, ptr %error.i, align 8 %tobool131.not.i = icmp eq i32 %call128.i, 0 - br i1 %tobool131.not.i, label %if.end276.i, label %if.end381.thread579.i + br i1 %tobool131.not.i, label %if.end276.i, label %if.end381.thread578.i if.else135.i: ; preds = %if.end.i.i, %land.lhs.true.i.i, %_Z25lodepng_chunk_type_equalsPKhPKc.exit132, %land.lhs.true9.i124, %land.lhs.true.i120, %land.lhs.true9.i.i, %_Z25lodepng_chunk_type_equalsPKhPKc.exit.i, %_Z25lodepng_chunk_type_equalsPKhPKc.exit272.i, %land.lhs.true9.i264.i, %land.lhs.true.i260.i, %_Z25lodepng_chunk_type_equalsPKhPKc.exit246.i, %land.lhs.true9.i238.i, %_Z25lodepng_chunk_type_equalsPKhPKc.exit97, %land.lhs.true9.i89, %land.lhs.true.i85, %land.lhs.true.i71, %land.lhs.true9.i, %_Z25lodepng_chunk_type_equalsPKhPKc.exit - %call136.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0538.i, ptr noundef nonnull @.str.8) + %call136.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0537.i, ptr noundef nonnull @.str.8) %tobool137.not.i = icmp eq i8 %call136.i, 0 br i1 %tobool137.not.i, label %if.else153.i, label %if.then138.i @@ -12611,10 +12611,10 @@ if.then142.i: ; preds = %if.then138.i %call146.i = tail call fastcc noundef i32 @_ZL14readChunk_iTXtP11LodePNGInfoPK22LodePNGDecoderSettingsPKhm(ptr noundef nonnull %info_png.i, ptr noundef nonnull %state, ptr noundef nonnull %arrayidx.i.i, i64 noundef %conv.i) store i32 %call146.i, ptr %error.i, align 8 %tobool149.not.i = icmp eq i32 %call146.i, 0 - br i1 %tobool149.not.i, label %if.end276.i, label %if.end381.thread579.i + br i1 %tobool149.not.i, label %if.end276.i, label %if.end381.thread578.i if.else153.i: ; preds = %if.else135.i - %call154.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0538.i, ptr noundef nonnull @.str.9) + %call154.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0537.i, ptr noundef nonnull @.str.9) %tobool155.not.i = icmp eq i8 %call154.i, 0 br i1 %tobool155.not.i, label %if.else165.i, label %if.then156.i @@ -12622,10 +12622,10 @@ if.then156.i: ; preds = %if.else153.i %call159.i = tail call fastcc noundef i32 @_ZL14readChunk_tIMEP11LodePNGInfoPKhm(ptr noundef nonnull %info_png.i, ptr noundef nonnull %arrayidx.i.i, i64 noundef %conv.i) store i32 %call159.i, ptr %error.i, align 8 %tobool162.not.i = icmp eq i32 %call159.i, 0 - br i1 %tobool162.not.i, label %if.end276.i, label %if.end381.thread579.i + br i1 %tobool162.not.i, label %if.end276.i, label %if.end381.thread578.i if.else165.i: ; preds = %if.else153.i - %call166.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0538.i, ptr noundef nonnull @.str.10) + %call166.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0537.i, ptr noundef nonnull @.str.10) %tobool167.not.i = icmp eq i8 %call166.i, 0 br i1 %tobool167.not.i, label %if.else177.i, label %if.then168.i @@ -12633,33 +12633,33 @@ if.then168.i: ; preds = %if.else165.i %call171.i = tail call fastcc noundef i32 @_ZL14readChunk_pHYsP11LodePNGInfoPKhm(ptr noundef nonnull %info_png.i, ptr noundef nonnull %arrayidx.i.i, i64 noundef %conv.i) store i32 %call171.i, ptr %error.i, align 8 %tobool174.not.i = icmp eq i32 %call171.i, 0 - br i1 %tobool174.not.i, label %if.end276.i, label %if.end381.thread579.i + br i1 %tobool174.not.i, label %if.end276.i, label %if.end381.thread578.i if.else177.i: ; preds = %if.else165.i - %call178.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0538.i, ptr noundef nonnull @.str.11) + %call178.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0537.i, ptr noundef nonnull @.str.11) %tobool179.not.i = icmp eq i8 %call178.i, 0 br i1 %tobool179.not.i, label %if.else189.i, label %if.then180.i if.then180.i: ; preds = %if.else177.i %cmp.not.i299.i = icmp eq i32 %or10.i.i.i, 4 - br i1 %cmp.not.i299.i, label %_ZL14readChunk_gAMAP11LodePNGInfoPKhm.exit.thread.i, label %if.end381.thread579.i.sink.split + br i1 %cmp.not.i299.i, label %_ZL14readChunk_gAMAP11LodePNGInfoPKhm.exit.thread.i, label %if.end381.thread578.i.sink.split _ZL14readChunk_gAMAP11LodePNGInfoPKhm.exit.thread.i: ; preds = %if.then180.i store i32 1, ptr %gama_defined.i.i, align 4 %49 = load i8, ptr %arrayidx.i.i, align 1 %conv.i302.i = zext i8 %49 to i32 %mul.i303.i = shl nuw i32 %conv.i302.i, 24 - %arrayidx1.i.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 9 + %arrayidx1.i.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 9 %50 = load i8, ptr %arrayidx1.i.i, align 1 %conv2.i.i = zext i8 %50 to i32 %mul3.i.i = shl nuw nsw i32 %conv2.i.i, 16 %add.i304.i = or disjoint i32 %mul3.i.i, %mul.i303.i - %arrayidx4.i305.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 10 + %arrayidx4.i305.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 10 %51 = load i8, ptr %arrayidx4.i305.i, align 1 %conv5.i306.i = zext i8 %51 to i32 %mul6.i.i = shl nuw nsw i32 %conv5.i306.i, 8 %add7.i.i = or disjoint i32 %add.i304.i, %mul6.i.i - %arrayidx8.i.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 11 + %arrayidx8.i.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 11 %52 = load i8, ptr %arrayidx8.i.i, align 1 %conv9.i.i = zext i8 %52 to i32 %add10.i.i = or disjoint i32 %add7.i.i, %conv9.i.i @@ -12668,7 +12668,7 @@ _ZL14readChunk_gAMAP11LodePNGInfoPKhm.exit.thread.i: ; preds = %if.then180.i br label %if.end276.i if.else189.i: ; preds = %if.else177.i - %call190.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0538.i, ptr noundef nonnull @.str.12) + %call190.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0537.i, ptr noundef nonnull @.str.12) %tobool191.not.i = icmp eq i8 %call190.i, 0 br i1 %tobool191.not.i, label %if.else201.i, label %if.then192.i @@ -12676,16 +12676,16 @@ if.then192.i: ; preds = %if.else189.i %call195.i = tail call fastcc noundef i32 @_ZL14readChunk_cHRMP11LodePNGInfoPKhm(ptr noundef nonnull %info_png.i, ptr noundef nonnull %arrayidx.i.i, i64 noundef %conv.i) store i32 %call195.i, ptr %error.i, align 8 %tobool198.not.i = icmp eq i32 %call195.i, 0 - br i1 %tobool198.not.i, label %if.end276.i, label %if.end381.thread579.i + br i1 %tobool198.not.i, label %if.end276.i, label %if.end381.thread578.i if.else201.i: ; preds = %if.else189.i - %call202.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0538.i, ptr noundef nonnull @.str.13) + %call202.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0537.i, ptr noundef nonnull @.str.13) %tobool203.not.i = icmp eq i8 %call202.i, 0 br i1 %tobool203.not.i, label %if.else213.i, label %if.then204.i if.then204.i: ; preds = %if.else201.i %cmp.not.i307.i = icmp eq i32 %or10.i.i.i, 1 - br i1 %cmp.not.i307.i, label %_ZL14readChunk_sRGBP11LodePNGInfoPKhm.exit.thread.i, label %if.end381.thread579.i.sink.split + br i1 %cmp.not.i307.i, label %_ZL14readChunk_sRGBP11LodePNGInfoPKhm.exit.thread.i, label %if.end381.thread578.i.sink.split _ZL14readChunk_sRGBP11LodePNGInfoPKhm.exit.thread.i: ; preds = %if.then204.i store i32 1, ptr %srgb_defined.i.i, align 8 @@ -12696,7 +12696,7 @@ _ZL14readChunk_sRGBP11LodePNGInfoPKhm.exit.thread.i: ; preds = %if.then204.i br label %if.end276.i if.else213.i: ; preds = %if.else201.i - %call214.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0538.i, ptr noundef nonnull @.str.14) + %call214.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0537.i, ptr noundef nonnull @.str.14) %tobool215.not.i = icmp eq i8 %call214.i, 0 br i1 %tobool215.not.i, label %if.else226.i, label %if.then216.i @@ -12704,10 +12704,10 @@ if.then216.i: ; preds = %if.else213.i %call220.i = tail call fastcc noundef i32 @_ZL14readChunk_iCCPP11LodePNGInfoPK22LodePNGDecoderSettingsPKhm(ptr noundef nonnull %info_png.i, ptr noundef nonnull %state, ptr noundef nonnull %arrayidx.i.i, i64 noundef %conv.i) store i32 %call220.i, ptr %error.i, align 8 %tobool223.not.i = icmp eq i32 %call220.i, 0 - br i1 %tobool223.not.i, label %if.end276.i, label %if.end381.thread579.i + br i1 %tobool223.not.i, label %if.end276.i, label %if.end381.thread578.i if.else226.i: ; preds = %if.else213.i - %call227.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0538.i, ptr noundef nonnull @.str.15) + %call227.i = tail call noundef zeroext i8 @_Z25lodepng_chunk_type_equalsPKhPKc(ptr noundef nonnull %chunk.0537.i, ptr noundef nonnull @.str.15) %tobool228.not.i = icmp eq i8 %call227.i, 0 br i1 %tobool228.not.i, label %if.else238.i, label %if.then229.i @@ -12715,7 +12715,7 @@ if.then229.i: ; preds = %if.else226.i %call232.i = tail call fastcc noundef i32 @_ZL14readChunk_sBITP11LodePNGInfoPKhm(ptr noundef nonnull %info_png.i, ptr noundef nonnull %arrayidx.i.i, i64 noundef %conv.i) store i32 %call232.i, ptr %error.i, align 8 %tobool235.not.i = icmp eq i32 %call232.i, 0 - br i1 %tobool235.not.i, label %if.end276.i, label %if.end381.thread579.i + br i1 %tobool235.not.i, label %if.end276.i, label %if.end381.thread578.i if.else238.i: ; preds = %if.else226.i %54 = load i32, ptr %ignore_critical.i, align 4 @@ -12723,7 +12723,7 @@ if.else238.i: ; preds = %if.else226.i %55 = and i8 %13, 32 %tobool242.not.i = icmp eq i8 %55, 0 %or.cond151 = and i1 %tobool242.not.i, %tobool240.not.i - br i1 %or.cond151, label %if.end381.thread579.i.sink.split, label %if.end245.i + br i1 %or.cond151, label %if.end381.thread578.i.sink.split, label %if.end245.i if.end245.i: ; preds = %if.else238.i %56 = load i32, ptr %remember_unknown_chunks.i, align 4 @@ -12731,18 +12731,18 @@ if.end245.i: ; preds = %if.else238.i br i1 %tobool247.not.i, label %if.then289.i, label %if.then248.i if.then248.i: ; preds = %if.end245.i - %sub.i = add nsw i32 %critical_pos.0536.i, -1 + %sub.i = add nsw i32 %critical_pos.0535.i, -1 %idxprom.i = zext nneg i32 %sub.i to i64 %arrayidx250.i = getelementptr inbounds [3 x ptr], ptr %unknown_chunks_data.i, i64 0, i64 %idxprom.i %arrayidx254.i = getelementptr inbounds [3 x i64], ptr %unknown_chunks_size.i, i64 0, i64 %idxprom.i - %call255.i = tail call noundef i32 @_Z20lodepng_chunk_appendPPhPmPKh(ptr noundef nonnull %arrayidx250.i, ptr noundef nonnull %arrayidx254.i, ptr noundef nonnull %chunk.0538.i) + %call255.i = tail call noundef i32 @_Z20lodepng_chunk_appendPPhPmPKh(ptr noundef nonnull %arrayidx250.i, ptr noundef nonnull %arrayidx254.i, ptr noundef nonnull %chunk.0537.i) store i32 %call255.i, ptr %error.i, align 8 %tobool258.not.i = icmp eq i32 %call255.i, 0 - br i1 %tobool258.not.i, label %if.then289.i, label %if.end381.thread579.i + br i1 %tobool258.not.i, label %if.then289.i, label %if.end381.thread578.i if.end276.i: ; preds = %_ZL14readChunk_bKGDP11LodePNGInfoPKhm.exit, %if.then229.i, %if.then216.i, %_ZL14readChunk_sRGBP11LodePNGInfoPKhm.exit.thread.i, %if.then192.i, %_ZL14readChunk_gAMAP11LodePNGInfoPKhm.exit.thread.i, %if.then168.i, %if.then156.i, %if.then142.i, %if.then138.i, %if.then124.i, %if.then120.i, %if.then107.i, %if.then104.i, %if.then79.i, %if.then66.i, %_Z25lodepng_chunk_type_equalsPKhPKc.exit246.i, %for.body.preheader.i.i, %if.end56.i - %critical_pos.1.i = phi i32 [ %critical_pos.0536.i, %if.then79.i ], [ %critical_pos.0536.i, %_ZL14readChunk_bKGDP11LodePNGInfoPKhm.exit ], [ %critical_pos.0536.i, %if.then107.i ], [ %critical_pos.0536.i, %if.then104.i ], [ %critical_pos.0536.i, %if.then124.i ], [ %critical_pos.0536.i, %if.then120.i ], [ %critical_pos.0536.i, %if.then142.i ], [ %critical_pos.0536.i, %if.then138.i ], [ %critical_pos.0536.i, %if.then156.i ], [ %critical_pos.0536.i, %if.then168.i ], [ %critical_pos.0536.i, %if.then192.i ], [ %critical_pos.0536.i, %if.then216.i ], [ %critical_pos.0536.i, %if.then229.i ], [ %critical_pos.0536.i, %_Z25lodepng_chunk_type_equalsPKhPKc.exit246.i ], [ 2, %if.then66.i ], [ 3, %if.end56.i ], [ 3, %for.body.preheader.i.i ], [ %critical_pos.0536.i, %_ZL14readChunk_gAMAP11LodePNGInfoPKhm.exit.thread.i ], [ %critical_pos.0536.i, %_ZL14readChunk_sRGBP11LodePNGInfoPKhm.exit.thread.i ] - %idatsize.2.i = phi i64 [ %idatsize.0537.i, %if.then79.i ], [ %idatsize.0537.i, %_ZL14readChunk_bKGDP11LodePNGInfoPKhm.exit ], [ %idatsize.0537.i, %if.then107.i ], [ %idatsize.0537.i, %if.then104.i ], [ %idatsize.0537.i, %if.then124.i ], [ %idatsize.0537.i, %if.then120.i ], [ %idatsize.0537.i, %if.then142.i ], [ %idatsize.0537.i, %if.then138.i ], [ %idatsize.0537.i, %if.then156.i ], [ %idatsize.0537.i, %if.then168.i ], [ %idatsize.0537.i, %if.then192.i ], [ %idatsize.0537.i, %if.then216.i ], [ %idatsize.0537.i, %if.then229.i ], [ %idatsize.0537.i, %_Z25lodepng_chunk_type_equalsPKhPKc.exit246.i ], [ %idatsize.0537.i, %if.then66.i ], [ %add.i218.i, %if.end56.i ], [ %add.i218.i, %for.body.preheader.i.i ], [ %idatsize.0537.i, %_ZL14readChunk_gAMAP11LodePNGInfoPKhm.exit.thread.i ], [ %idatsize.0537.i, %_ZL14readChunk_sRGBP11LodePNGInfoPKhm.exit.thread.i ] + %critical_pos.1.i = phi i32 [ %critical_pos.0535.i, %if.then79.i ], [ %critical_pos.0535.i, %_ZL14readChunk_bKGDP11LodePNGInfoPKhm.exit ], [ %critical_pos.0535.i, %if.then107.i ], [ %critical_pos.0535.i, %if.then104.i ], [ %critical_pos.0535.i, %if.then124.i ], [ %critical_pos.0535.i, %if.then120.i ], [ %critical_pos.0535.i, %if.then142.i ], [ %critical_pos.0535.i, %if.then138.i ], [ %critical_pos.0535.i, %if.then156.i ], [ %critical_pos.0535.i, %if.then168.i ], [ %critical_pos.0535.i, %if.then192.i ], [ %critical_pos.0535.i, %if.then216.i ], [ %critical_pos.0535.i, %if.then229.i ], [ %critical_pos.0535.i, %_Z25lodepng_chunk_type_equalsPKhPKc.exit246.i ], [ 2, %if.then66.i ], [ 3, %if.end56.i ], [ 3, %for.body.preheader.i.i ], [ %critical_pos.0535.i, %_ZL14readChunk_gAMAP11LodePNGInfoPKhm.exit.thread.i ], [ %critical_pos.0535.i, %_ZL14readChunk_sRGBP11LodePNGInfoPKhm.exit.thread.i ] + %idatsize.2.i = phi i64 [ %idatsize.0536.i, %if.then79.i ], [ %idatsize.0536.i, %_ZL14readChunk_bKGDP11LodePNGInfoPKhm.exit ], [ %idatsize.0536.i, %if.then107.i ], [ %idatsize.0536.i, %if.then104.i ], [ %idatsize.0536.i, %if.then124.i ], [ %idatsize.0536.i, %if.then120.i ], [ %idatsize.0536.i, %if.then142.i ], [ %idatsize.0536.i, %if.then138.i ], [ %idatsize.0536.i, %if.then156.i ], [ %idatsize.0536.i, %if.then168.i ], [ %idatsize.0536.i, %if.then192.i ], [ %idatsize.0536.i, %if.then216.i ], [ %idatsize.0536.i, %if.then229.i ], [ %idatsize.0536.i, %_Z25lodepng_chunk_type_equalsPKhPKc.exit246.i ], [ %idatsize.0536.i, %if.then66.i ], [ %add.i218.i, %if.end56.i ], [ %add.i218.i, %for.body.preheader.i.i ], [ %idatsize.0536.i, %_ZL14readChunk_gAMAP11LodePNGInfoPKhm.exit.thread.i ], [ %idatsize.0536.i, %_ZL14readChunk_sRGBP11LodePNGInfoPKhm.exit.thread.i ] %tobool288.not.i = phi i1 [ true, %if.then79.i ], [ true, %_ZL14readChunk_bKGDP11LodePNGInfoPKhm.exit ], [ true, %if.then107.i ], [ true, %if.then104.i ], [ true, %if.then124.i ], [ true, %if.then120.i ], [ true, %if.then142.i ], [ true, %if.then138.i ], [ true, %if.then156.i ], [ true, %if.then168.i ], [ true, %if.then192.i ], [ true, %if.then216.i ], [ true, %if.then229.i ], [ false, %_Z25lodepng_chunk_type_equalsPKhPKc.exit246.i ], [ true, %if.then66.i ], [ true, %if.end56.i ], [ true, %for.body.preheader.i.i ], [ true, %_ZL14readChunk_gAMAP11LodePNGInfoPKhm.exit.thread.i ], [ true, %_ZL14readChunk_sRGBP11LodePNGInfoPKhm.exit.thread.i ] %IEND.1.i = phi i8 [ 0, %if.then79.i ], [ 0, %_ZL14readChunk_bKGDP11LodePNGInfoPKhm.exit ], [ 0, %if.then107.i ], [ 0, %if.then104.i ], [ 0, %if.then124.i ], [ 0, %if.then120.i ], [ 0, %if.then142.i ], [ 0, %if.then138.i ], [ 0, %if.then156.i ], [ 0, %if.then168.i ], [ 0, %if.then192.i ], [ 0, %if.then216.i ], [ 0, %if.then229.i ], [ 1, %_Z25lodepng_chunk_type_equalsPKhPKc.exit246.i ], [ 0, %if.then66.i ], [ 0, %if.end56.i ], [ 0, %for.body.preheader.i.i ], [ 0, %_ZL14readChunk_gAMAP11LodePNGInfoPKhm.exit.thread.i ], [ 0, %_ZL14readChunk_sRGBP11LodePNGInfoPKhm.exit.thread.i ] %57 = load i32, ptr %ignore_crc.i, align 8 @@ -12750,25 +12750,25 @@ if.end276.i: ; preds = %_ZL14readChunk_bKGD br i1 %tobool278.not.i, label %if.then281.i, label %if.end287.i if.then281.i: ; preds = %if.end276.i - %call282.i = tail call noundef i32 @_Z23lodepng_chunk_check_crcPKh(ptr noundef nonnull %chunk.0538.i) + %call282.i = tail call noundef i32 @_Z23lodepng_chunk_check_crcPKh(ptr noundef nonnull %chunk.0537.i) %tobool283.not.i = icmp eq i32 %call282.i, 0 - br i1 %tobool283.not.i, label %if.end287.i, label %if.end381.thread579.i.sink.split + br i1 %tobool283.not.i, label %if.end287.i, label %if.end381.thread578.i.sink.split if.end287.i: ; preds = %if.then281.i, %if.end276.i br i1 %tobool288.not.i, label %if.then289.i, label %if.end292.i if.then289.i: ; preds = %if.end287.i, %if.then248.i, %if.end245.i - %critical_pos.1480493.i = phi i32 [ %critical_pos.1.i, %if.end287.i ], [ %critical_pos.0536.i, %if.end245.i ], [ %critical_pos.0536.i, %if.then248.i ] - %idatsize.2481491.i = phi i64 [ %idatsize.2.i, %if.end287.i ], [ %idatsize.0537.i, %if.end245.i ], [ %idatsize.0537.i, %if.then248.i ] + %critical_pos.1480493.i = phi i32 [ %critical_pos.1.i, %if.end287.i ], [ %critical_pos.0535.i, %if.end245.i ], [ %critical_pos.0535.i, %if.then248.i ] + %idatsize.2481491.i = phi i64 [ %idatsize.2.i, %if.end287.i ], [ %idatsize.0536.i, %if.end245.i ], [ %idatsize.0536.i, %if.then248.i ] %IEND.1483489.i = phi i8 [ %IEND.1.i, %if.end287.i ], [ 0, %if.end245.i ], [ 0, %if.then248.i ] %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.lhs.cast.i - %cmp.i312.i = icmp uge ptr %chunk.0538.i, %add.ptr290.i + %cmp.i312.i = icmp uge ptr %chunk.0537.i, %add.ptr290.i %cmp1.i.i = icmp ult i64 %sub.ptr.sub.i.i, 12 %or.cond.i.i = or i1 %cmp.i312.i, %cmp1.i.i br i1 %or.cond.i.i, label %if.end292.i, label %if.end.i313.i if.end.i313.i: ; preds = %if.then289.i - %58 = load i8, ptr %chunk.0538.i, align 1 + %58 = load i8, ptr %chunk.0537.i, align 1 %cmp2.i.i = icmp eq i8 %58, -119 %59 = load i8, ptr %arrayidx1.i.i.i, align 1 %cmp5.i.i = icmp eq i8 %59, 80 @@ -12777,13 +12777,13 @@ if.end.i313.i: ; preds = %if.then289.i br i1 %or.cond18.i.i, label %land.lhs.true6.i.i, label %if.end.i313.if.end34.i_crit_edge.i if.end.i313.if.end34.i_crit_edge.i: ; preds = %if.end.i313.i - %.pre553.i = load i8, ptr %arrayidx8.i.i.i, align 1 + %.pre552.i = load i8, ptr %arrayidx8.i.i.i, align 1 br label %if.end34.i.i land.lhs.true6.i.i: ; preds = %if.end.i313.i %cmp9.i.i = icmp eq i8 %.pre.i, 78 - %.pre554.i = load i8, ptr %arrayidx8.i.i.i, align 1 - %cmp13.i.i = icmp eq i8 %.pre554.i, 71 + %.pre553.i = load i8, ptr %arrayidx8.i.i.i, align 1 + %cmp13.i.i = icmp eq i8 %.pre553.i, 71 %or.cond.i = select i1 %cmp9.i.i, i1 %cmp13.i.i, i1 false br i1 %or.cond.i, label %land.lhs.true14.i.i, label %if.end34.i.i @@ -12793,25 +12793,25 @@ land.lhs.true14.i.i: ; preds = %land.lhs.true6.i.i br i1 %cmp17.i.i, label %land.lhs.true18.i.i, label %if.end34.i.i land.lhs.true18.i.i: ; preds = %land.lhs.true14.i.i - %arrayidx19.i.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 5 + %arrayidx19.i.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 5 %61 = load i8, ptr %arrayidx19.i.i, align 1 %cmp21.i.i = icmp eq i8 %61, 10 br i1 %cmp21.i.i, label %land.lhs.true22.i.i, label %if.end34.i.i land.lhs.true22.i.i: ; preds = %land.lhs.true18.i.i - %arrayidx23.i.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 6 + %arrayidx23.i.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 6 %62 = load i8, ptr %arrayidx23.i.i, align 1 %cmp25.i.i = icmp eq i8 %62, 26 br i1 %cmp25.i.i, label %land.lhs.true26.i.i, label %if.end34.i.i land.lhs.true26.i.i: ; preds = %land.lhs.true22.i.i - %arrayidx27.i.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 7 + %arrayidx27.i.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 7 %63 = load i8, ptr %arrayidx27.i.i, align 1 %cmp29.i.i = icmp eq i8 %63, 10 br i1 %cmp29.i.i, label %if.end292.i, label %if.end34.i.i if.end34.i.i: ; preds = %land.lhs.true26.i.i, %land.lhs.true22.i.i, %land.lhs.true18.i.i, %land.lhs.true14.i.i, %land.lhs.true6.i.i, %if.end.i313.if.end34.i_crit_edge.i - %64 = phi i8 [ %.pre554.i, %land.lhs.true6.i.i ], [ 71, %land.lhs.true14.i.i ], [ 71, %land.lhs.true18.i.i ], [ 71, %land.lhs.true22.i.i ], [ 71, %land.lhs.true26.i.i ], [ %.pre553.i, %if.end.i313.if.end34.i_crit_edge.i ] + %64 = phi i8 [ %.pre553.i, %land.lhs.true6.i.i ], [ 71, %land.lhs.true14.i.i ], [ 71, %land.lhs.true18.i.i ], [ 71, %land.lhs.true22.i.i ], [ 71, %land.lhs.true26.i.i ], [ %.pre552.i, %if.end.i313.if.end34.i_crit_edge.i ] %65 = phi i8 [ 80, %land.lhs.true6.i.i ], [ 80, %land.lhs.true14.i.i ], [ 80, %land.lhs.true18.i.i ], [ 80, %land.lhs.true22.i.i ], [ 80, %land.lhs.true26.i.i ], [ %59, %if.end.i313.if.end34.i_crit_edge.i ] %conv2.i.i.i.i = zext i8 %65 to i64 %shl3.i.i.i.i = shl nuw nsw i64 %conv2.i.i.i.i, 16 @@ -12825,7 +12825,7 @@ if.end34.i.i: ; preds = %land.lhs.true26.i.i %or.i.i.i.i = add nuw nsw i64 %or10.i.i.i.i, %conv9.i.i.i.i %add.i.i314.i = add nuw nsw i64 %or.i.i.i.i, %shl3.i.i.i.i %cmp35.i.i = icmp ugt i64 %add.i.i314.i, %sub.ptr.sub.i.i - %add.ptr38.i.i = getelementptr inbounds i8, ptr %chunk.0538.i, i64 %add.i.i314.i + %add.ptr38.i.i = getelementptr inbounds i8, ptr %chunk.0537.i, i64 %add.i.i314.i %spec.select.i.i = select i1 %cmp35.i.i, ptr %add.ptr290.i, ptr %add.ptr38.i.i br label %if.end292.i @@ -12833,12 +12833,12 @@ if.end292.i: ; preds = %if.end34.i.i, %land %critical_pos.1480492.i = phi i32 [ %critical_pos.1.i, %if.end287.i ], [ %critical_pos.1480493.i, %land.lhs.true26.i.i ], [ %critical_pos.1480493.i, %if.then289.i ], [ %critical_pos.1480493.i, %if.end34.i.i ] %idatsize.2481490.i = phi i64 [ %idatsize.2.i, %if.end287.i ], [ %idatsize.2481491.i, %land.lhs.true26.i.i ], [ %idatsize.2481491.i, %if.then289.i ], [ %idatsize.2481491.i, %if.end34.i.i ] %IEND.1483488.i = phi i8 [ %IEND.1.i, %if.end287.i ], [ %IEND.1483489.i, %land.lhs.true26.i.i ], [ %IEND.1483489.i, %if.then289.i ], [ %IEND.1483489.i, %if.end34.i.i ] - %chunk.1.i = phi ptr [ %chunk.0538.i, %if.end287.i ], [ %arrayidx.i.i, %land.lhs.true26.i.i ], [ %add.ptr290.i, %if.then289.i ], [ %spec.select.i.i, %if.end34.i.i ] + %chunk.1.i = phi ptr [ %chunk.0537.i, %if.end287.i ], [ %arrayidx.i.i, %land.lhs.true26.i.i ], [ %add.ptr290.i, %if.then289.i ], [ %spec.select.i.i, %if.end34.i.i ] %tobool12.not.i = icmp eq i8 %IEND.1483488.i, 0 br i1 %tobool12.not.i, label %while.body.i, label %land.lhs.true295.i, !llvm.loop !320 land.lhs.true295.i: ; preds = %if.end292.i, %if.then24.i, %if.then16.i - %idatsize.0535.i = phi i64 [ %idatsize.0537.i, %if.then24.i ], [ %idatsize.0537.i, %if.then16.i ], [ %idatsize.2481490.i, %if.end292.i ] + %idatsize.0534.i = phi i64 [ %idatsize.0536.i, %if.then24.i ], [ %idatsize.0536.i, %if.then16.i ], [ %idatsize.2481490.i, %if.end292.i ] %66 = load i32, ptr %color.i, align 8 %cmp298.i = icmp eq i32 %66, 3 br i1 %cmp298.i, label %land.lhs.true299.i, label %if.then308.i @@ -12847,7 +12847,7 @@ land.lhs.true299.i: ; preds = %land.lhs.true295.i %palette.i = getelementptr inbounds i8, ptr %state, i64 232 %67 = load ptr, ptr %palette.i, align 8 %tobool302.not.i = icmp eq ptr %67, null - br i1 %tobool302.not.i, label %if.end381.thread579.i.sink.split, label %if.then308.i + br i1 %tobool302.not.i, label %if.end381.thread578.i.sink.split, label %if.then308.i if.then308.i: ; preds = %land.lhs.true299.i, %land.lhs.true295.i %interlace_method.i = getelementptr inbounds i8, ptr %state, i64 216 @@ -12921,6 +12921,7 @@ _Z15lodepng_get_bppPK16LodePNGColorMode.exit.i: ; preds = %sw.default.i.i.i.i, %conv5.i331.i = zext nneg i32 %div44.i330.i to i64 %add6.i332.i = add nuw nsw i64 %add.i326.i, %conv5.i331.i %conv7.i333.i = zext nneg i32 %shr323.i to i64 + %mul8.i334.i = mul i64 %add6.i332.i, %conv7.i333.i %cmp326.i = icmp ugt i32 %72, 4 %add328.i = add i32 %72, 3 br i1 %cmp326.i, label %if.then327.i, label %if.end334.i @@ -12937,12 +12938,12 @@ if.then327.i: ; preds = %_Z15lodepng_get_bpp %div44.i343.i = lshr i32 %add3.i342.i, 3 %conv5.i344.i = zext nneg i32 %div44.i343.i to i64 %add6.i345.i = add nuw nsw i64 %add.i339.i, %conv5.i344.i - %mul8.i334522.i = add nuw nsw i64 %add6.i345.i, %add6.i332.i + %mul8.i347.i = mul i64 %add6.i345.i, %conv7.i333.i + %add333.i = add i64 %mul8.i334.i, %mul8.i347.i br label %if.end334.i if.end334.i: ; preds = %if.then327.i, %_Z15lodepng_get_bppPK16LodePNGColorMode.exit.i - %mul8.i334522.pn.i = phi i64 [ %mul8.i334522.i, %if.then327.i ], [ %add6.i332.i, %_Z15lodepng_get_bppPK16LodePNGColorMode.exit.i ] - %expected_size.2.i = mul i64 %mul8.i334522.pn.i, %conv7.i333.i + %expected_size.2.i = phi i64 [ %add333.i, %if.then327.i ], [ %mul8.i334.i, %_Z15lodepng_get_bppPK16LodePNGColorMode.exit.i ] %shr336.i = lshr i32 %add328.i, 2 %add337.i = add i32 %73, 3 %shr338.i = lshr i32 %add337.i, 3 @@ -13047,24 +13048,24 @@ if.end370.i: ; preds = %if.end364.i, %if.th br i1 %tobool.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %if.end370.i - %call.i413.i = call noundef i32 %74(ptr noundef nonnull %scanlines.i, ptr noundef nonnull %scanlines_size.i, ptr noundef nonnull %call.i.i, i64 noundef %idatsize.0535.i, ptr noundef nonnull %state) + %call.i413.i = call noundef i32 %74(ptr noundef nonnull %scanlines.i, ptr noundef nonnull %scanlines_size.i, ptr noundef nonnull %call.i.i, i64 noundef %idatsize.0534.i, ptr noundef nonnull %state) %tobool2.not.i.i = icmp eq i32 %call.i413.i, 0 br i1 %tobool2.not.i.i, label %if.then.i._ZL15zlib_decompressPPhPmmPKhmPK25LodePNGDecompressSettings.exit_crit_edge.i, label %if.then3.i.i if.then.i._ZL15zlib_decompressPPhPmmPKhmPK25LodePNGDecompressSettings.exit_crit_edge.i: ; preds = %if.then.i.i - %.pre560.pre.i = load i64, ptr %scanlines_size.i, align 8 + %.pre559.pre.i = load i64, ptr %scanlines_size.i, align 8 br label %if.end374.i if.then3.i.i: ; preds = %if.then.i.i %max_output_size.i.i = getelementptr inbounds i8, ptr %state, i64 8 %75 = load i64, ptr %max_output_size.i.i, align 8 %tobool4.not.i.i = icmp eq i64 %75, 0 - %.pre560.pre562.i = load i64, ptr %scanlines_size.i, align 8 - %cmp.i415.i = icmp ugt i64 %.pre560.pre562.i, %75 + %.pre559.pre561.i = load i64, ptr %scanlines_size.i, align 8 + %cmp.i415.i = icmp ugt i64 %.pre559.pre561.i, %75 %spec.select.i416.i = select i1 %cmp.i415.i, i32 109, i32 110 %error.0.i.ph.i = select i1 %tobool4.not.i.i, i32 110, i32 %spec.select.i416.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %v.i.i) - br label %if.end381.thread579.i.sink.split + br label %if.end381.thread578.i.sink.split if.else.i.i: ; preds = %if.end370.i %size1.i.i.i = getelementptr inbounds i8, ptr %v.i.i, i64 8 @@ -13088,7 +13089,7 @@ _ZL15ucvector_resizeP8ucvectorm.exit.i.i: ; preds = %if.then3.i.i.i.i, % br label %if.end11.i.i if.end11.i.i: ; preds = %_ZL15ucvector_resizeP8ucvectorm.exit.i.i, %if.else.i.i - %call12.i.i = call fastcc noundef i32 @_ZL24lodepng_zlib_decompressvP8ucvectorPKhmPK25LodePNGDecompressSettings(ptr noundef nonnull %v.i.i, ptr noundef nonnull %call.i.i, i64 noundef %idatsize.0535.i, ptr noundef nonnull %state) + %call12.i.i = call fastcc noundef i32 @_ZL24lodepng_zlib_decompressvP8ucvectorPKhmPK25LodePNGDecompressSettings(ptr noundef nonnull %v.i.i, ptr noundef nonnull %call.i.i, i64 noundef %idatsize.0534.i, ptr noundef nonnull %state) %76 = load ptr, ptr %v.i.i, align 8 store ptr %76, ptr %scanlines.i, align 8 %77 = load i64, ptr %size1.i.i.i, align 8 @@ -13096,12 +13097,12 @@ if.end11.i.i: ; preds = %_ZL15ucvector_resiz br label %if.end374.i if.end374.i: ; preds = %if.end11.i.i, %if.then.i._ZL15zlib_decompressPPhPmmPKhmPK25LodePNGDecompressSettings.exit_crit_edge.i - %.pre560.i = phi i64 [ %.pre560.pre.i, %if.then.i._ZL15zlib_decompressPPhPmmPKhmPK25LodePNGDecompressSettings.exit_crit_edge.i ], [ %77, %if.end11.i.i ] + %.pre559.i = phi i64 [ %.pre559.pre.i, %if.then.i._ZL15zlib_decompressPPhPmmPKhmPK25LodePNGDecompressSettings.exit_crit_edge.i ], [ %77, %if.end11.i.i ] %error.0.i.i = phi i32 [ 0, %if.then.i._ZL15zlib_decompressPPhPmmPKhmPK25LodePNGDecompressSettings.exit_crit_edge.i ], [ %call12.i.i, %if.end11.i.i ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %v.i.i) store i32 %error.0.i.i, ptr %error.i, align 8 %tobool376.not.i = icmp ne i32 %error.0.i.i, 0 - %cmp378.not.i = icmp eq i64 %.pre560.i, %expected_size.1.i + %cmp378.not.i = icmp eq i64 %.pre559.i, %expected_size.1.i %or.cond210.i = select i1 %tobool376.not.i, i1 true, i1 %cmp378.not.i br i1 %or.cond210.i, label %if.end381.i, label %if.end381.thread.i @@ -13110,12 +13111,12 @@ if.end381.thread.i: ; preds = %if.end374.i call void @free(ptr noundef %call.i.i) #31 br label %_ZL13decodeGenericPPhPjS1_P12LodePNGStatePKhm.exit -if.end381.thread579.i.sink.split: ; preds = %if.end31.i, %if.then46.i, %if.then180.i, %if.then204.i, %if.then281.i, %if.else238.i, %if.then35.i, %if.then15.i, %if.end.i103, %if.then.i102, %if.then16.i, %if.then24.i, %land.lhs.true299.i, %if.then3.i.i +if.end381.thread578.i.sink.split: ; preds = %if.end31.i, %if.then46.i, %if.then180.i, %if.then204.i, %if.then281.i, %if.else238.i, %if.then35.i, %if.then15.i, %if.end.i103, %if.then.i102, %if.then16.i, %if.then24.i, %land.lhs.true299.i, %if.then3.i.i %retval.0.i99.ph.sink = phi i32 [ %error.0.i.ph.i, %if.then3.i.i ], [ 30, %if.then16.i ], [ 63, %if.then24.i ], [ 106, %land.lhs.true299.i ], [ 45, %if.then35.i ], [ 44, %if.then15.i ], [ 103, %if.end.i103 ], [ 43, %if.then.i102 ], [ 69, %if.else238.i ], [ 57, %if.then281.i ], [ 98, %if.then204.i ], [ 96, %if.then180.i ], [ 95, %if.then46.i ], [ 64, %if.end31.i ] store i32 %retval.0.i99.ph.sink, ptr %error.i, align 8 - br label %if.end381.thread579.i + br label %if.end381.thread578.i -if.end381.thread579.i: ; preds = %if.then248.i, %if.then229.i, %if.then216.i, %if.then192.i, %if.then168.i, %if.then156.i, %if.then142.i, %if.then124.i, %if.then107.i, %if.then79.i, %if.then66.i, %if.end381.thread579.i.sink.split +if.end381.thread578.i: ; preds = %if.then248.i, %if.then229.i, %if.then216.i, %if.then192.i, %if.then168.i, %if.then156.i, %if.then142.i, %if.then124.i, %if.then107.i, %if.then79.i, %if.then66.i, %if.end381.thread578.i.sink.split call void @free(ptr noundef %call.i.i) #31 br label %_ZL13decodeGenericPPhPjS1_P12LodePNGStatePKhm.exit @@ -13809,7 +13810,7 @@ _ZL13decodeGenericPPhPjS1_P12LodePNGStatePKhm.exit.thread: ; preds = %_ZL13decod call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %scanlines_size.i) br label %return -_ZL13decodeGenericPPhPjS1_P12LodePNGStatePKhm.exit: ; preds = %if.end381.thread.i, %if.end381.thread579.i, %if.end381.i, %if.then390.i, %if.end393.i, %_ZL20postProcessScanlinesPhS_jjPK11LodePNGInfo.exit.i +_ZL13decodeGenericPPhPjS1_P12LodePNGStatePKhm.exit: ; preds = %if.end381.thread.i, %if.end381.thread578.i, %if.end381.i, %if.then390.i, %if.end393.i, %_ZL20postProcessScanlinesPhS_jjPK11LodePNGInfo.exit.i %163 = load ptr, ptr %scanlines.i, align 8 call void @free(ptr noundef %163) #31 %.pr = load i32, ptr %error.i, align 8 diff --git a/bench/lodepng/optimized/pngdetail.cpp.ll b/bench/lodepng/optimized/pngdetail.cpp.ll index dc634bcad1f..a76412d99fa 100644 --- a/bench/lodepng/optimized/pngdetail.cpp.ll +++ b/bench/lodepng/optimized/pngdetail.cpp.ll @@ -1935,13 +1935,13 @@ _ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %entry br i1 %cmp.not.i.i.i.i, label %invoke.cont, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i - %call5.i.i.i.i1.i.i113 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %conv4) #27 - store ptr %call5.i.i.i.i1.i.i113, ptr %agg.result, align 8 - %add.ptr.i.i.i = getelementptr i8, ptr %call5.i.i.i.i1.i.i113, i64 %conv4 + %call5.i.i.i.i1.i.i111 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %conv4) #27 + store ptr %call5.i.i.i.i1.i.i111, ptr %agg.result, align 8 + %add.ptr.i.i.i = getelementptr i8, ptr %call5.i.i.i.i1.i.i111, i64 %conv4 %_M_end_of_storage.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 16 store ptr %add.ptr.i.i.i, ptr %_M_end_of_storage.i.i.i, align 8 - store i8 0, ptr %call5.i.i.i.i1.i.i113, align 1 - %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i1.i.i113, i64 1 + store i8 0, ptr %call5.i.i.i.i1.i.i111, align 1 + %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i1.i.i111, i64 1 %sub.i.i.i.i.i = add nsw i64 %conv4, -1 %cmp.i.i.i.i.i.i.i = icmp eq i64 %sub.i.i.i.i.i, 0 br i1 %cmp.i.i.i.i.i.i.i, label %invoke.cont, label %if.then.i.i.i.i.i.i.i.i.i @@ -1951,35 +1951,35 @@ if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i br label %invoke.cont invoke.cont: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i, %if.then.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i - %2 = phi ptr [ %call5.i.i.i.i1.i.i113, %if.then.i.i.i.i.i ], [ %call5.i.i.i.i1.i.i113, %if.then.i.i.i.i.i.i.i.i.i ], [ null, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i ] + %2 = phi ptr [ %call5.i.i.i.i1.i.i111, %if.then.i.i.i.i.i ], [ %call5.i.i.i.i1.i.i111, %if.then.i.i.i.i.i.i.i.i.i ], [ null, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i ] %__first.addr.0.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %if.then.i.i.i.i.i ], [ %add.ptr.i.i.i, %if.then.i.i.i.i.i.i.i.i.i ], [ null, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i ] %_M_finish.i.i7.i = getelementptr inbounds i8, ptr %agg.result, i64 8 store ptr %__first.addr.0.i.i.i.i.i, ptr %_M_finish.i.i7.i, align 8 br i1 %smooth, label %if.then, label %for.cond163.preheader for.cond163.preheader: ; preds = %invoke.cont - %cmp164149 = icmp sgt i32 %h1, 0 - br i1 %cmp164149, label %for.body165.lr.ph, label %nrvo.skipdtor + %cmp164147 = icmp sgt i32 %h1, 0 + br i1 %cmp164147, label %for.body165.lr.ph, label %nrvo.skipdtor for.body165.lr.ph: ; preds = %for.cond163.preheader %conv169 = sitofp i32 %h0 to double %conv171 = uitofp nneg i32 %h1 to double - %cmp177147 = icmp sgt i32 %w1, 0 + %cmp177145 = icmp sgt i32 %w1, 0 %conv182 = sitofp i32 %w0 to double %conv184 = sitofp i32 %w1 to double - %cmp200145 = icmp sgt i32 %conv1, 0 - %or.cond = and i1 %cmp177147, %cmp200145 + %cmp200143 = icmp sgt i32 %conv1, 0 + %or.cond = and i1 %cmp177145, %cmp200143 br i1 %or.cond, label %for.body165.us.us.preheader, label %nrvo.skipdtor for.body165.us.us.preheader: ; preds = %for.body165.lr.ph %3 = and i64 %div, 2147483647 %4 = zext nneg i32 %w1 to i64 - %wide.trip.count190 = zext nneg i32 %h1 to i64 + %wide.trip.count189 = zext nneg i32 %h1 to i64 br label %for.body165.us.us for.body165.us.us: ; preds = %for.body165.us.us.preheader, %for.cond176.for.inc214_crit_edge.split.us.us.us - %indvars.iv186 = phi i64 [ 0, %for.body165.us.us.preheader ], [ %indvars.iv.next187, %for.cond176.for.inc214_crit_edge.split.us.us.us ] - %5 = trunc nuw nsw i64 %indvars.iv186 to i32 + %indvars.iv185 = phi i64 [ 0, %for.body165.us.us.preheader ], [ %indvars.iv.next186, %for.cond176.for.inc214_crit_edge.split.us.us.us ] + %5 = trunc nuw nsw i64 %indvars.iv185 to i32 %conv167.us.us = uitofp nneg i32 %5 to double %add168.us.us = fadd double %conv167.us.us, 5.000000e-01 %mul170.us.us = fmul double %add168.us.us, %conv169 @@ -1987,12 +1987,12 @@ for.body165.us.us: ; preds = %for.body165.us.us.p %sub173.us.us = fadd double %div172.us.us, -5.000000e-01 %conv174.us.us = fptosi double %sub173.us.us to i32 %mul190.us.us = mul nsw i32 %w0, %conv174.us.us - %6 = mul nuw nsw i64 %indvars.iv186, %4 + %6 = mul nuw nsw i64 %indvars.iv185, %4 br label %for.body178.us.us.us for.body178.us.us.us: ; preds = %for.cond199.for.inc211_crit_edge.us.us.us, %for.body165.us.us - %indvars.iv182 = phi i64 [ %indvars.iv.next183, %for.cond199.for.inc211_crit_edge.us.us.us ], [ 0, %for.body165.us.us ] - %7 = trunc nuw nsw i64 %indvars.iv182 to i32 + %indvars.iv181 = phi i64 [ %indvars.iv.next182, %for.cond199.for.inc211_crit_edge.us.us.us ], [ 0, %for.body165.us.us ] + %7 = trunc nuw nsw i64 %indvars.iv181 to i32 %conv180.us.us.us = uitofp nneg i32 %7 to double %add181.us.us.us = fadd double %conv180.us.us.us, 5.000000e-01 %mul183.us.us.us = fmul double %add181.us.us.us, %conv182 @@ -2001,7 +2001,7 @@ for.body178.us.us.us: ; preds = %for.cond199.for.inc %conv187.us.us.us = fptosi double %sub186.us.us.us to i32 %mul189106.us.us.us = add i32 %mul190.us.us, %conv187.us.us.us %add192.us.us.us = mul i32 %mul189106.us.us.us, %conv1 - %8 = add nuw nsw i64 %indvars.iv182, %6 + %8 = add nuw nsw i64 %indvars.iv181, %6 %add197.us.us.us = mul i64 %8, %div %9 = sext i32 %add192.us.us.us to i64 %sext = shl i64 %add197.us.us.us, 32 @@ -2014,92 +2014,92 @@ for.body201.us.us.us: ; preds = %for.body201.us.us.u %gep = getelementptr i8, ptr %invariant.gep, i64 %indvars.iv %11 = load i8, ptr %gep, align 1 %12 = add nsw i64 %indvars.iv, %10 - %add.ptr.i139.us.us.us = getelementptr inbounds i8, ptr %2, i64 %12 - store i8 %11, ptr %add.ptr.i139.us.us.us, align 1 + %add.ptr.i137.us.us.us = getelementptr inbounds i8, ptr %2, i64 %12 + store i8 %11, ptr %add.ptr.i137.us.us.us, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp200.us.us.us = icmp ult i64 %indvars.iv.next, %3 br i1 %cmp200.us.us.us, label %for.body201.us.us.us, label %for.cond199.for.inc211_crit_edge.us.us.us, !llvm.loop !14 for.cond199.for.inc211_crit_edge.us.us.us: ; preds = %for.body201.us.us.us - %indvars.iv.next183 = add nuw nsw i64 %indvars.iv182, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next183, %4 + %indvars.iv.next182 = add nuw nsw i64 %indvars.iv181, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next182, %4 br i1 %exitcond.not, label %for.cond176.for.inc214_crit_edge.split.us.us.us, label %for.body178.us.us.us, !llvm.loop !15 for.cond176.for.inc214_crit_edge.split.us.us.us: ; preds = %for.cond199.for.inc211_crit_edge.us.us.us - %indvars.iv.next187 = add nuw nsw i64 %indvars.iv186, 1 - %exitcond191.not = icmp eq i64 %indvars.iv.next187, %wide.trip.count190 - br i1 %exitcond191.not, label %nrvo.skipdtor, label %for.body165.us.us, !llvm.loop !16 + %indvars.iv.next186 = add nuw nsw i64 %indvars.iv185, 1 + %exitcond190.not = icmp eq i64 %indvars.iv.next186, %wide.trip.count189 + br i1 %exitcond190.not, label %nrvo.skipdtor, label %for.body165.us.us, !llvm.loop !16 if.then: ; preds = %invoke.cont %mul6 = mul i32 %mul2, %h0 %conv7 = sext i32 %mul6 to i64 - %cmp.i.i114 = icmp slt i32 %mul6, 0 - br i1 %cmp.i.i114, label %if.then.i.i127, label %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i115 + %cmp.i.i112 = icmp slt i32 %mul6, 0 + br i1 %cmp.i.i112, label %if.then.i.i125, label %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i113 -if.then.i.i127: ; preds = %if.then +if.then.i.i125: ; preds = %if.then invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.236) #26 - to label %.noexc128 unwind label %lpad9 + to label %.noexc126 unwind label %lpad9 -.noexc128: ; preds = %if.then.i.i127 +.noexc126: ; preds = %if.then.i.i125 unreachable -_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i115: ; preds = %if.then - %cmp.not.i.i.i.i116 = icmp eq i32 %mul6, 0 - br i1 %cmp.not.i.i.i.i116, label %invoke.cont10, label %if.then.i.i.i.i.i117 +_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i113: ; preds = %if.then + %cmp.not.i.i.i.i114 = icmp eq i32 %mul6, 0 + br i1 %cmp.not.i.i.i.i114, label %invoke.cont10, label %if.then.i.i.i.i.i115 -if.then.i.i.i.i.i117: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i115 - %call5.i.i.i.i1.i.i130 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %conv7) #27 - to label %call5.i.i.i.i1.i.i.noexc129 unwind label %lpad9 +if.then.i.i.i.i.i115: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i113 + %call5.i.i.i.i1.i.i128 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %conv7) #27 + to label %call5.i.i.i.i1.i.i.noexc127 unwind label %lpad9 -call5.i.i.i.i1.i.i.noexc129: ; preds = %if.then.i.i.i.i.i117 - store i8 0, ptr %call5.i.i.i.i1.i.i130, align 1 - %sub.i.i.i.i.i121 = add nsw i64 %conv7, -1 - %cmp.i.i.i.i.i.i.i122 = icmp eq i64 %sub.i.i.i.i.i121, 0 - br i1 %cmp.i.i.i.i.i.i.i122, label %invoke.cont10, label %if.then.i.i.i.i.i.i.i.i.i123 +call5.i.i.i.i1.i.i.noexc127: ; preds = %if.then.i.i.i.i.i115 + store i8 0, ptr %call5.i.i.i.i1.i.i128, align 1 + %sub.i.i.i.i.i119 = add nsw i64 %conv7, -1 + %cmp.i.i.i.i.i.i.i120 = icmp eq i64 %sub.i.i.i.i.i119, 0 + br i1 %cmp.i.i.i.i.i.i.i120, label %invoke.cont10, label %if.then.i.i.i.i.i.i.i.i.i121 -if.then.i.i.i.i.i.i.i.i.i123: ; preds = %call5.i.i.i.i1.i.i.noexc129 - %incdec.ptr.i.i.i.i.i120 = getelementptr inbounds i8, ptr %call5.i.i.i.i1.i.i130, i64 1 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %incdec.ptr.i.i.i.i.i120, i8 0, i64 %sub.i.i.i.i.i121, i1 false) +if.then.i.i.i.i.i.i.i.i.i121: ; preds = %call5.i.i.i.i1.i.i.noexc127 + %incdec.ptr.i.i.i.i.i118 = getelementptr inbounds i8, ptr %call5.i.i.i.i1.i.i128, i64 1 + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %incdec.ptr.i.i.i.i.i118, i8 0, i64 %sub.i.i.i.i.i119, i1 false) br label %invoke.cont10 -invoke.cont10: ; preds = %if.then.i.i.i.i.i.i.i.i.i123, %call5.i.i.i.i1.i.i.noexc129, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i115 - %temp.sroa.0.0 = phi ptr [ %call5.i.i.i.i1.i.i130, %call5.i.i.i.i1.i.i.noexc129 ], [ %call5.i.i.i.i1.i.i130, %if.then.i.i.i.i.i.i.i.i.i123 ], [ null, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i115 ] - %cmp172 = icmp sgt i32 %conv1, 0 - br i1 %cmp172, label %for.cond11.preheader.lr.ph, label %for.end161 +invoke.cont10: ; preds = %if.then.i.i.i.i.i.i.i.i.i121, %call5.i.i.i.i1.i.i.noexc127, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i113 + %temp.sroa.0.0 = phi ptr [ %call5.i.i.i.i1.i.i128, %call5.i.i.i.i1.i.i.noexc127 ], [ %call5.i.i.i.i1.i.i128, %if.then.i.i.i.i.i.i.i.i.i121 ], [ null, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i113 ] + %cmp171 = icmp sgt i32 %conv1, 0 + br i1 %cmp171, label %for.cond11.preheader.lr.ph, label %for.end161 for.cond11.preheader.lr.ph: ; preds = %invoke.cont10 - %cmp12162 = icmp sgt i32 %w1, 0 + %cmp12160 = icmp sgt i32 %w1, 0 %conv16 = sitofp i32 %w0 to double %conv18 = sitofp i32 %w1 to double - %cmp39160 = icmp sgt i32 %h0, 0 - %cmp81170 = icmp sgt i32 %h1, 0 + %cmp39158 = icmp sgt i32 %h0, 0 + %cmp81169 = icmp sgt i32 %h1, 0 %conv85 = sitofp i32 %h0 to double %conv87 = sitofp i32 %h1 to double - %13 = zext i32 %w1 to i64 - %wide.trip.count202 = zext nneg i32 %h0 to i64 - %wide.trip.count208 = zext nneg i32 %h0 to i64 - %wide.trip.count235 = zext nneg i32 %h1 to i64 + %wide.trip.count201 = zext nneg i32 %h0 to i64 + %wide.trip.count207 = zext nneg i32 %h0 to i64 + %wide.trip.count221 = zext nneg i32 %w1 to i64 + %wide.trip.count227 = zext nneg i32 %w1 to i64 br label %for.cond11.preheader for.cond11.preheader: ; preds = %for.cond11.preheader.lr.ph, %for.inc159 - %c.0173 = phi i32 [ 0, %for.cond11.preheader.lr.ph ], [ %inc160, %for.inc159 ] - br i1 %cmp12162, label %for.body13, label %for.cond80.preheader + %c.0172 = phi i32 [ 0, %for.cond11.preheader.lr.ph ], [ %inc160, %for.inc159 ] + br i1 %cmp12160, label %for.body13, label %for.cond80.preheader for.cond11.loopexit: ; preds = %for.cond45.for.end_crit_edge, %for.body40.us, %for.body13 - %exitcond210.not = icmp eq i32 %14, %w1 - br i1 %exitcond210.not, label %for.cond80.preheader, label %for.body13, !llvm.loop !17 + %exitcond209.not = icmp eq i32 %13, %w1 + br i1 %exitcond209.not, label %for.cond80.preheader, label %for.body13, !llvm.loop !17 for.cond80.preheader: ; preds = %for.cond11.loopexit, %for.cond11.preheader - br i1 %cmp81170, label %for.body82, label %for.inc159 + br i1 %cmp81169, label %for.body82, label %for.inc159 for.body13: ; preds = %for.cond11.preheader, %for.cond11.loopexit - %x.0163 = phi i32 [ %14, %for.cond11.loopexit ], [ 0, %for.cond11.preheader ] - %conv14 = uitofp nneg i32 %x.0163 to double + %x.0161 = phi i32 [ %13, %for.cond11.loopexit ], [ 0, %for.cond11.preheader ] + %conv14 = uitofp nneg i32 %x.0161 to double %mul17 = fmul double %conv16, %conv14 %div19 = fdiv double %mul17, %conv18 %conv20 = fptrunc double %div19 to float - %14 = add nuw nsw i32 %x.0163, 1 - %add = uitofp nneg i32 %14 to double + %13 = add nuw nsw i32 %x.0161, 1 + %add = uitofp nneg i32 %13 to double %mul23 = fmul double %conv16, %add %div25 = fdiv double %mul23, %conv18 %conv26 = fptrunc double %div25 to float @@ -2108,24 +2108,24 @@ for.body13: ; preds = %for.cond11.preheade %sub = fsub float %conv26, %conv20 %conv29 = fpext float %sub to double %div30 = fdiv double 1.000000e+00, %conv29 - br i1 %cmp39160, label %for.body40.lr.ph, label %for.cond11.loopexit + br i1 %cmp39158, label %for.body40.lr.ph, label %for.cond11.loopexit for.body40.lr.ph: ; preds = %for.body13 - %15 = tail call noundef float @llvm.floor.f32(float %conv26) - %16 = tail call noundef float @llvm.floor.f32(float %conv20) - %sub34 = fsub float %conv20, %16 - %cmp46.not157 = icmp sgt i32 %conv27, %conv28 + %14 = tail call noundef float @llvm.floor.f32(float %conv26) + %15 = tail call noundef float @llvm.floor.f32(float %conv20) + %sub34 = fsub float %conv20, %15 + %cmp46.not155 = icmp sgt i32 %conv27, %conv28 %conv54 = fpext float %sub34 to double %sub55 = fsub double 1.000000e+00, %conv54 - %17 = fsub float %15, %conv26 - %sub58 = fadd float %17, 1.000000e+00 + %16 = fsub float %14, %conv26 + %sub58 = fadd float %16, 1.000000e+00 %conv59 = fpext float %sub58 to double - br i1 %cmp46.not157, label %for.body40.lr.ph.split.us, label %for.body40.preheader + br i1 %cmp46.not155, label %for.body40.lr.ph.split.us, label %for.body40.preheader for.body40.preheader: ; preds = %for.body40.lr.ph - %18 = sext i32 %conv27 to i64 - %19 = add i32 %conv28, 1 - %sext194 = sext i32 %conv28 to i64 + %17 = sext i32 %conv27 to i64 + %18 = add i32 %conv28, 1 + %sext193 = sext i32 %conv28 to i64 br label %for.body40 for.body40.lr.ph.split.us: ; preds = %for.body40.lr.ph @@ -2134,52 +2134,52 @@ for.body40.lr.ph.split.us: ; preds = %for.body40.lr.ph br label %for.body40.us for.body40.us: ; preds = %for.body40.us, %for.body40.lr.ph.split.us - %indvars.iv204 = phi i64 [ %indvars.iv.next205, %for.body40.us ], [ 0, %for.body40.lr.ph.split.us ] - %20 = trunc i64 %indvars.iv204 to i32 - %21 = mul i32 %w1, %20 - %mul41111.us = add nuw i32 %21, %x.0163 - %add44.us = mul i32 %mul41111.us, %conv1 - %add70.us = add nsw i32 %add44.us, %c.0173 + %indvars.iv203 = phi i64 [ %indvars.iv.next204, %for.body40.us ], [ 0, %for.body40.lr.ph.split.us ] + %19 = trunc i64 %indvars.iv203 to i32 + %20 = mul i32 %w1, %19 + %mul41109.us = add nuw i32 %20, %x.0161 + %add44.us = mul i32 %mul41109.us, %conv1 + %add70.us = add nsw i32 %add44.us, %c.0172 %conv71.us = sext i32 %add70.us to i64 - %add.ptr.i132.us = getelementptr inbounds i8, ptr %temp.sroa.0.0, i64 %conv71.us - store i8 %conv69.us, ptr %add.ptr.i132.us, align 1 - %indvars.iv.next205 = add nuw nsw i64 %indvars.iv204, 1 - %exitcond209.not = icmp eq i64 %indvars.iv.next205, %wide.trip.count208 - br i1 %exitcond209.not, label %for.cond11.loopexit, label %for.body40.us, !llvm.loop !18 + %add.ptr.i130.us = getelementptr inbounds i8, ptr %temp.sroa.0.0, i64 %conv71.us + store i8 %conv69.us, ptr %add.ptr.i130.us, align 1 + %indvars.iv.next204 = add nuw nsw i64 %indvars.iv203, 1 + %exitcond208.not = icmp eq i64 %indvars.iv.next204, %wide.trip.count207 + br i1 %exitcond208.not, label %for.cond11.loopexit, label %for.body40.us, !llvm.loop !18 for.body40: ; preds = %for.body40.preheader, %for.cond45.for.end_crit_edge - %indvars.iv197 = phi i64 [ 0, %for.body40.preheader ], [ %indvars.iv.next198, %for.cond45.for.end_crit_edge ] - %22 = trunc i64 %indvars.iv197 to i32 - %23 = mul i32 %w1, %22 - %mul41111 = add nuw i32 %23, %x.0163 - %24 = trunc i64 %indvars.iv197 to i32 - %25 = mul i32 %w0, %24 + %indvars.iv196 = phi i64 [ 0, %for.body40.preheader ], [ %indvars.iv.next197, %for.cond45.for.end_crit_edge ] + %21 = trunc i64 %indvars.iv196 to i32 + %22 = mul i32 %w1, %21 + %mul41109 = add nuw i32 %22, %x.0161 + %23 = trunc i64 %indvars.iv196 to i32 + %24 = mul i32 %w0, %23 br label %for.body47 for.body47: ; preds = %for.body40, %for.body47 - %indvars.iv192 = phi i64 [ %18, %for.body40 ], [ %indvars.iv.next193, %for.body47 ] - %val.0159 = phi double [ 0.000000e+00, %for.body40 ], [ %30, %for.body47 ] - %26 = trunc nsw i64 %indvars.iv192 to i32 - %mul48112 = add i32 %25, %26 - %add51 = mul i32 %mul48112, %conv1 - %27 = icmp eq i64 %indvars.iv192, %18 - %v.0 = select i1 %27, double %sub55, double 1.000000e+00 - %28 = icmp eq i64 %indvars.iv192, %sext194 + %indvars.iv191 = phi i64 [ %17, %for.body40 ], [ %indvars.iv.next192, %for.body47 ] + %val.0157 = phi double [ 0.000000e+00, %for.body40 ], [ %29, %for.body47 ] + %25 = trunc nsw i64 %indvars.iv191 to i32 + %mul48110 = add i32 %24, %25 + %add51 = mul i32 %mul48110, %conv1 + %26 = icmp eq i64 %indvars.iv191, %17 + %v.0 = select i1 %26, double %sub55, double 1.000000e+00 + %27 = icmp eq i64 %indvars.iv191, %sext193 %sub60 = fsub double %v.0, %conv59 - %v.1 = select i1 %28, double %sub60, double %v.0 - %add62 = add nsw i32 %add51, %c.0173 + %v.1 = select i1 %27, double %sub60, double %v.0 + %add62 = add nsw i32 %add51, %c.0172 %conv63 = sext i32 %add62 to i64 %add.ptr.i = getelementptr inbounds i8, ptr %1, i64 %conv63 - %29 = load i8, ptr %add.ptr.i, align 1 - %conv66 = uitofp i8 %29 to double - %30 = tail call double @llvm.fmuladd.f64(double %v.1, double %conv66, double %val.0159) - %indvars.iv.next193 = add nsw i64 %indvars.iv192, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next193 to i32 - %exitcond196.not = icmp eq i32 %19, %lftr.wideiv - br i1 %exitcond196.not, label %for.cond45.for.end_crit_edge, label %for.body47, !llvm.loop !19 - -lpad9: ; preds = %if.then.i.i.i.i.i117, %if.then.i.i127 - %31 = landingpad { ptr, i32 } + %28 = load i8, ptr %add.ptr.i, align 1 + %conv66 = uitofp i8 %28 to double + %29 = tail call double @llvm.fmuladd.f64(double %v.1, double %conv66, double %val.0157) + %indvars.iv.next192 = add nsw i64 %indvars.iv191, 1 + %lftr.wideiv = trunc i64 %indvars.iv.next192 to i32 + %exitcond195.not = icmp eq i32 %18, %lftr.wideiv + br i1 %exitcond195.not, label %for.cond45.for.end_crit_edge, label %for.body47, !llvm.loop !19 + +lpad9: ; preds = %if.then.i.i.i.i.i115, %if.then.i.i125 + %30 = landingpad { ptr, i32 } cleanup %tobool.not.i.i.i = icmp eq ptr %2, null br i1 %tobool.not.i.i.i, label %eh.resume, label %if.then.i.i.i @@ -2189,31 +2189,29 @@ if.then.i.i.i: ; preds = %lpad9 br label %eh.resume for.cond45.for.end_crit_edge: ; preds = %for.body47 - %add44 = mul i32 %mul41111, %conv1 - %mul68 = fmul double %div30, %30 + %add44 = mul i32 %mul41109, %conv1 + %mul68 = fmul double %div30, %29 %conv69 = fptoui double %mul68 to i8 - %add70 = add nsw i32 %add44, %c.0173 + %add70 = add nsw i32 %add44, %c.0172 %conv71 = sext i32 %add70 to i64 - %add.ptr.i132 = getelementptr inbounds i8, ptr %temp.sroa.0.0, i64 %conv71 - store i8 %conv69, ptr %add.ptr.i132, align 1 - %indvars.iv.next198 = add nuw nsw i64 %indvars.iv197, 1 - %exitcond203.not = icmp eq i64 %indvars.iv.next198, %wide.trip.count202 - br i1 %exitcond203.not, label %for.cond11.loopexit, label %for.body40, !llvm.loop !18 + %add.ptr.i130 = getelementptr inbounds i8, ptr %temp.sroa.0.0, i64 %conv71 + store i8 %conv69, ptr %add.ptr.i130, align 1 + %indvars.iv.next197 = add nuw nsw i64 %indvars.iv196, 1 + %exitcond202.not = icmp eq i64 %indvars.iv.next197, %wide.trip.count201 + br i1 %exitcond202.not, label %for.cond11.loopexit, label %for.body40, !llvm.loop !18 for.cond80.loopexit: ; preds = %for.cond119.for.end147_crit_edge, %for.body112.us, %for.body82 - %exitcond236.not = icmp eq i64 %indvars.iv.next232, %wide.trip.count235 - br i1 %exitcond236.not, label %for.inc159, label %for.body82, !llvm.loop !20 + %exitcond229.not = icmp eq i32 %31, %h1 + br i1 %exitcond229.not, label %for.inc159, label %for.body82, !llvm.loop !20 for.body82: ; preds = %for.cond80.preheader, %for.cond80.loopexit - %indvars.iv231 = phi i64 [ %indvars.iv.next232, %for.cond80.loopexit ], [ 0, %for.cond80.preheader ] - %32 = trunc nuw nsw i64 %indvars.iv231 to i32 - %conv83 = uitofp nneg i32 %32 to double + %y79.0170 = phi i32 [ %31, %for.cond80.loopexit ], [ 0, %for.cond80.preheader ] + %conv83 = uitofp nneg i32 %y79.0170 to double %mul86 = fmul double %conv85, %conv83 %div88 = fdiv double %mul86, %conv87 %conv89 = fptrunc double %div88 to float - %indvars.iv.next232 = add nuw nsw i64 %indvars.iv231, 1 - %33 = trunc nuw nsw i64 %indvars.iv.next232 to i32 - %add91 = uitofp nneg i32 %33 to double + %31 = add nuw nsw i32 %y79.0170, 1 + %add91 = uitofp nneg i32 %31 to double %mul93 = fmul double %conv85, %add91 %div95 = fdiv double %mul93, %conv87 %conv96 = fptrunc double %div95 to float @@ -2222,25 +2220,26 @@ for.body82: ; preds = %for.cond80.preheade %sub100 = fsub float %conv96, %conv89 %conv101 = fpext float %sub100 to double %div102 = fdiv double 1.000000e+00, %conv101 - br i1 %cmp12162, label %for.body112.lr.ph, label %for.cond80.loopexit + br i1 %cmp12160, label %for.body112.lr.ph, label %for.cond80.loopexit for.body112.lr.ph: ; preds = %for.body82 - %34 = tail call noundef float @llvm.floor.f32(float %conv96) - %35 = tail call noundef float @llvm.floor.f32(float %conv89) - %sub105 = fsub float %conv89, %35 - %36 = mul nuw nsw i64 %indvars.iv231, %13 - %cmp120.not164 = icmp sgt i32 %conv97, %conv98 + %factor.op.mul.reass = mul i32 %mul2, %y79.0170 + %32 = tail call noundef float @llvm.floor.f32(float %conv96) + %33 = tail call noundef float @llvm.floor.f32(float %conv89) + %sub105 = fsub float %conv89, %33 + %cmp120.not162 = icmp sgt i32 %conv97, %conv98 %conv130 = fpext float %sub105 to double %sub131 = fsub double 1.000000e+00, %conv130 - %37 = fsub float %34, %conv96 - %sub135 = fadd float %37, 1.000000e+00 + %34 = fsub float %32, %conv96 + %sub135 = fadd float %34, 1.000000e+00 %conv136 = fpext float %sub135 to double - br i1 %cmp120.not164, label %for.body112.lr.ph.split.us, label %for.body112.preheader + %invariant.op = add i32 %c.0172, %factor.op.mul.reass + br i1 %cmp120.not162, label %for.body112.lr.ph.split.us, label %for.body112.preheader for.body112.preheader: ; preds = %for.body112.lr.ph - %38 = sext i32 %conv97 to i64 - %39 = add i32 %conv98, 1 - %sext215 = sext i32 %conv98 to i64 + %35 = sext i32 %conv97 to i64 + %36 = add i32 %conv98, 1 + %sext213 = sext i32 %conv98 to i64 br label %for.body112 for.body112.lr.ph.split.us: ; preds = %for.body112.lr.ph @@ -2249,78 +2248,74 @@ for.body112.lr.ph.split.us: ; preds = %for.body112.lr.ph br label %for.body112.us for.body112.us: ; preds = %for.body112.us, %for.body112.lr.ph.split.us - %indvars.iv225 = phi i64 [ %indvars.iv.next226, %for.body112.us ], [ 0, %for.body112.lr.ph.split.us ] - %40 = add nuw nsw i64 %indvars.iv225, %36 - %41 = trunc nuw i64 %40 to i32 - %add117.us = mul i32 %41, %conv1 - %add150.us = add nsw i32 %add117.us, %c.0173 - %conv151.us = sext i32 %add150.us to i64 - %add.ptr.i134.us = getelementptr inbounds i8, ptr %2, i64 %conv151.us - store i8 %conv149.us, ptr %add.ptr.i134.us, align 1 - %indvars.iv.next226 = add nuw nsw i64 %indvars.iv225, 1 - %exitcond230.not = icmp eq i64 %indvars.iv.next226, %13 - br i1 %exitcond230.not, label %for.cond80.loopexit, label %for.body112.us, !llvm.loop !21 + %indvars.iv223 = phi i64 [ %indvars.iv.next224, %for.body112.us ], [ 0, %for.body112.lr.ph.split.us ] + %37 = mul i64 %indvars.iv223, %div + %38 = trunc i64 %37 to i32 + %add150.reass.us = add i32 %invariant.op, %38 + %conv151.us = sext i32 %add150.reass.us to i64 + %add.ptr.i132.us = getelementptr inbounds i8, ptr %2, i64 %conv151.us + store i8 %conv149.us, ptr %add.ptr.i132.us, align 1 + %indvars.iv.next224 = add nuw nsw i64 %indvars.iv223, 1 + %exitcond228.not = icmp eq i64 %indvars.iv.next224, %wide.trip.count227 + br i1 %exitcond228.not, label %for.cond80.loopexit, label %for.body112.us, !llvm.loop !21 for.body112: ; preds = %for.body112.preheader, %for.cond119.for.end147_crit_edge - %indvars.iv219 = phi i64 [ 0, %for.body112.preheader ], [ %indvars.iv.next220, %for.cond119.for.end147_crit_edge ] - %42 = add nuw nsw i64 %indvars.iv219, %36 - %43 = trunc nuw nsw i64 %indvars.iv219 to i32 + %indvars.iv217 = phi i64 [ 0, %for.body112.preheader ], [ %indvars.iv.next218, %for.cond119.for.end147_crit_edge ] + %39 = mul i64 %indvars.iv217, %div + %40 = trunc i64 %39 to i32 + %add126 = add nuw i32 %c.0172, %40 br label %for.body121 for.body121: ; preds = %for.body112, %for.body121 - %indvars.iv211 = phi i64 [ %38, %for.body112 ], [ %indvars.iv.next212, %for.body121 ] - %val118.0165 = phi double [ 0.000000e+00, %for.body112 ], [ %49, %for.body121 ] - %44 = trunc i64 %indvars.iv211 to i32 - %45 = mul i32 %w1, %44 - %mul114110 = add i32 %45, %43 - %add126 = mul i32 %mul114110, %conv1 - %46 = icmp eq i64 %indvars.iv211, %38 - %v127.0 = select i1 %46, double %sub131, double 1.000000e+00 - %47 = icmp eq i64 %indvars.iv211, %sext215 + %indvars.iv210 = phi i64 [ %35, %for.body112 ], [ %indvars.iv.next211, %for.body121 ] + %val118.0163 = phi double [ 0.000000e+00, %for.body112 ], [ %45, %for.body121 ] + %41 = trunc nsw i64 %indvars.iv210 to i32 + %mul125 = mul i32 %mul2, %41 + %42 = icmp eq i64 %indvars.iv210, %35 + %v127.0 = select i1 %42, double %sub131, double 1.000000e+00 + %43 = icmp eq i64 %indvars.iv210, %sext213 %sub137 = fsub double %v127.0, %conv136 - %v127.1 = select i1 %47, double %sub137, double %v127.0 - %add139 = add nsw i32 %add126, %c.0173 + %v127.1 = select i1 %43, double %sub137, double %v127.0 + %add139 = add i32 %add126, %mul125 %conv140 = sext i32 %add139 to i64 - %add.ptr.i133 = getelementptr inbounds i8, ptr %temp.sroa.0.0, i64 %conv140 - %48 = load i8, ptr %add.ptr.i133, align 1 - %conv143 = uitofp i8 %48 to double - %49 = tail call double @llvm.fmuladd.f64(double %v127.1, double %conv143, double %val118.0165) - %indvars.iv.next212 = add nsw i64 %indvars.iv211, 1 - %lftr.wideiv217 = trunc i64 %indvars.iv.next212 to i32 - %exitcond218.not = icmp eq i32 %39, %lftr.wideiv217 - br i1 %exitcond218.not, label %for.cond119.for.end147_crit_edge, label %for.body121, !llvm.loop !22 + %add.ptr.i131 = getelementptr inbounds i8, ptr %temp.sroa.0.0, i64 %conv140 + %44 = load i8, ptr %add.ptr.i131, align 1 + %conv143 = uitofp i8 %44 to double + %45 = tail call double @llvm.fmuladd.f64(double %v127.1, double %conv143, double %val118.0163) + %indvars.iv.next211 = add nsw i64 %indvars.iv210, 1 + %lftr.wideiv215 = trunc i64 %indvars.iv.next211 to i32 + %exitcond216.not = icmp eq i32 %36, %lftr.wideiv215 + br i1 %exitcond216.not, label %for.cond119.for.end147_crit_edge, label %for.body121, !llvm.loop !22 for.cond119.for.end147_crit_edge: ; preds = %for.body121 - %50 = trunc nuw i64 %42 to i32 - %add117 = mul i32 %50, %conv1 - %mul148 = fmul double %div102, %49 + %mul148 = fmul double %div102, %45 %conv149 = fptoui double %mul148 to i8 - %add150 = add nsw i32 %add117, %c.0173 - %conv151 = sext i32 %add150 to i64 - %add.ptr.i134 = getelementptr inbounds i8, ptr %2, i64 %conv151 - store i8 %conv149, ptr %add.ptr.i134, align 1 - %indvars.iv.next220 = add nuw nsw i64 %indvars.iv219, 1 - %exitcond224.not = icmp eq i64 %indvars.iv.next220, %13 - br i1 %exitcond224.not, label %for.cond80.loopexit, label %for.body112, !llvm.loop !21 + %add150.reass = add i32 %invariant.op, %40 + %conv151 = sext i32 %add150.reass to i64 + %add.ptr.i132 = getelementptr inbounds i8, ptr %2, i64 %conv151 + store i8 %conv149, ptr %add.ptr.i132, align 1 + %indvars.iv.next218 = add nuw nsw i64 %indvars.iv217, 1 + %exitcond222.not = icmp eq i64 %indvars.iv.next218, %wide.trip.count221 + br i1 %exitcond222.not, label %for.cond80.loopexit, label %for.body112, !llvm.loop !21 for.inc159: ; preds = %for.cond80.loopexit, %for.cond80.preheader - %inc160 = add nuw nsw i32 %c.0173, 1 + %inc160 = add nuw nsw i32 %c.0172, 1 %cmp = icmp slt i32 %inc160, %conv1 br i1 %cmp, label %for.cond11.preheader, label %for.end161, !llvm.loop !23 for.end161: ; preds = %for.inc159, %invoke.cont10 - %tobool.not.i.i.i135 = icmp eq ptr %temp.sroa.0.0, null - br i1 %tobool.not.i.i.i135, label %nrvo.skipdtor, label %if.then.i.i.i136 + %tobool.not.i.i.i133 = icmp eq ptr %temp.sroa.0.0, null + br i1 %tobool.not.i.i.i133, label %nrvo.skipdtor, label %if.then.i.i.i134 -if.then.i.i.i136: ; preds = %for.end161 +if.then.i.i.i134: ; preds = %for.end161 tail call void @_ZdlPv(ptr noundef nonnull %temp.sroa.0.0) #25 br label %nrvo.skipdtor -nrvo.skipdtor: ; preds = %for.cond176.for.inc214_crit_edge.split.us.us.us, %for.body165.lr.ph, %for.cond163.preheader, %if.then.i.i.i136, %for.end161 +nrvo.skipdtor: ; preds = %for.cond176.for.inc214_crit_edge.split.us.us.us, %for.body165.lr.ph, %for.cond163.preheader, %if.then.i.i.i134, %for.end161 ret void eh.resume: ; preds = %if.then.i.i.i, %lpad9 - resume { ptr, i32 } %31 + resume { ptr, i32 } %30 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) diff --git a/bench/luau/optimized/CodeGenA64.cpp.ll b/bench/luau/optimized/CodeGenA64.cpp.ll index b420032a8c6..b617fbd7739 100644 --- a/bench/luau/optimized/CodeGenA64.cpp.ll +++ b/bench/luau/optimized/CodeGenA64.cpp.ll @@ -132,8 +132,6 @@ define dso_local noundef zeroext i1 @_ZN4Luau7CodeGen3A6419initHeaderFunctionsER to label %.noexc unwind label %62 .noexc: ; preds = %10 - %.sroa.1.0.extract.shift = lshr i64 %11, 32 - %.sroa.1.0.extract.trunc = trunc nuw i64 %.sroa.1.0.extract.shift to i32 invoke void @_ZN4Luau7CodeGen3A6418AssemblyBuilderA643subENS1_11RegisterA64ES3_t(ptr noundef nonnull align 8 dereferenceable(176) %3, i8 -8, i8 -8, i16 noundef zeroext 256) to label %.noexc12 unwind label %62 @@ -166,11 +164,13 @@ define dso_local noundef zeroext i1 @_ZN4Luau7CodeGen3A6419initHeaderFunctionsER to label %.noexc19 unwind label %62 .noexc19: ; preds = %.noexc18 - %.sroa.3.8.extract.shift = lshr i64 %12, 32 - %.sroa.3.8.extract.trunc = trunc nuw i64 %.sroa.3.8.extract.shift to i32 - %13 = shl i32 %.sroa.1.0.extract.trunc, 2 - %14 = sub i32 %.sroa.3.8.extract.trunc, %.sroa.1.0.extract.trunc - %15 = shl i32 %14, 2 + %sh.diff.i = lshr i64 %12, 30 + %tr.sh.diff.i = trunc i64 %sh.diff.i to i32 + %13 = and i32 %tr.sh.diff.i, -4 + %sh.diff163.i = lshr i64 %11, 30 + %tr.sh.diff164.i = trunc i64 %sh.diff163.i to i32 + %14 = and i32 %tr.sh.diff164.i, -4 + %15 = sub i32 %13, %14 invoke void @_ZN4Luau7CodeGen3A6418AssemblyBuilderA643movENS1_11RegisterA64ES3_(ptr noundef nonnull align 8 dereferenceable(176) %3, i8 -102, i8 2) to label %.noexc20 unwind label %62 @@ -273,7 +273,7 @@ define dso_local noundef zeroext i1 @_ZN4Luau7CodeGen3A6419initHeaderFunctionsER %31 = load ptr, ptr %6, align 8, !noalias !5 %32 = getelementptr inbounds i8, ptr %31, i64 48 %33 = load ptr, ptr %32, align 8, !noalias !5 - invoke void %33(ptr noundef nonnull align 8 dereferenceable(8) %6, i32 noundef %13, i32 noundef -1) + invoke void %33(ptr noundef nonnull align 8 dereferenceable(8) %6, i32 noundef %14, i32 noundef -1) to label %34 unwind label %62 34: ; preds = %.noexc38 @@ -315,7 +315,7 @@ define dso_local noundef zeroext i1 @_ZN4Luau7CodeGen3A6419initHeaderFunctionsER to label %61 unwind label %62 61: ; preds = %40 - br i1 %60, label %64, label %78 + br i1 %60, label %64, label %77 62: ; preds = %.noexc38, %.noexc37, %.noexc36, %.noexc35, %.noexc34, %.noexc33, %.noexc32, %.noexc31, %.noexc30, %.noexc29, %.noexc28, %.noexc27, %.noexc26, %.noexc25, %.noexc24, %.noexc23, %.noexc22, %.noexc21, %.noexc20, %.noexc19, %.noexc18, %.noexc17, %.noexc16, %.noexc15, %.noexc14, %.noexc13, %.noexc12, %.noexc, %10, %64, %40, %36, %34, %1 %63 = landingpad { ptr, i32 } @@ -324,28 +324,27 @@ define dso_local noundef zeroext i1 @_ZN4Luau7CodeGen3A6419initHeaderFunctionsER resume { ptr, i32 } %63 64: ; preds = %61 - %65 = shl nuw nsw i64 %.sroa.3.8.extract.shift, 2 - %66 = and i64 %65, 4294967292 - %67 = load ptr, ptr %6, align 8 - %68 = getelementptr inbounds i8, ptr %67, i64 16 - %69 = load ptr, ptr %68, align 8 - invoke void %69(ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef %66) - to label %70 unwind label %62 - -70: ; preds = %64 - %71 = load ptr, ptr %4, align 8 - %72 = zext i32 %13 to i64 - %73 = getelementptr inbounds i8, ptr %71, i64 %72 - %74 = getelementptr inbounds i8, ptr %0, i64 168 - store ptr %73, ptr %74, align 8 - %sh.diff = lshr i64 %16, 30 - %75 = and i64 %sh.diff, 4294967292 - %76 = getelementptr inbounds i8, ptr %71, i64 %75 - %77 = getelementptr inbounds i8, ptr %0, i64 176 - store ptr %76, ptr %77, align 8 - br label %78 - -78: ; preds = %61, %70 + %65 = and i64 %sh.diff.i, 4294967292 + %66 = load ptr, ptr %6, align 8 + %67 = getelementptr inbounds i8, ptr %66, i64 16 + %68 = load ptr, ptr %67, align 8 + invoke void %68(ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef %65) + to label %69 unwind label %62 + +69: ; preds = %64 + %70 = load ptr, ptr %4, align 8 + %71 = and i64 %sh.diff163.i, 4294967292 + %72 = getelementptr inbounds i8, ptr %70, i64 %71 + %73 = getelementptr inbounds i8, ptr %0, i64 168 + store ptr %72, ptr %73, align 8 + %sh.diff42 = lshr i64 %16, 30 + %74 = and i64 %sh.diff42, 4294967292 + %75 = getelementptr inbounds i8, ptr %70, i64 %74 + %76 = getelementptr inbounds i8, ptr %0, i64 176 + store ptr %75, ptr %76, align 8 + br label %77 + +77: ; preds = %61, %69 call void @_ZN4Luau7CodeGen3A6418AssemblyBuilderA64D1Ev(ptr noundef nonnull align 8 dereferenceable(176) %3) #4 ret i1 %60 } diff --git a/bench/luau/optimized/IrAnalysis.cpp.ll b/bench/luau/optimized/IrAnalysis.cpp.ll index 4f76eaa7675..6b849a21485 100644 --- a/bench/luau/optimized/IrAnalysis.cpp.ll +++ b/bench/luau/optimized/IrAnalysis.cpp.ll @@ -1492,16 +1492,18 @@ _ZN4Luau7CodeGen10successorsERKNS0_7CfgInfoEj.exit: ; preds = %107, %110 %118 = phi ptr [ %.pre.i, %107 ], [ %112, %110 ] %119 = phi i32 [ %109, %107 ], [ %117, %110 ] %120 = zext i32 %98 to i64 + %.idx125 = shl nuw nsw i64 %120, 2 %121 = zext i32 %119 to i64 + %.idx = shl nuw nsw i64 %121, 2 %122 = getelementptr inbounds i8, ptr %.sroa.9.0139, i64 -4 %123 = load i32, ptr %122, align 4 %124 = zext i32 %123 to i64 - %125 = sub nsw i64 %121, %120 + %gepdiff = sub nsw i64 %.idx, %.idx125 + %125 = ashr exact i64 %gepdiff, 2 %126 = icmp ugt i64 %125, %124 br i1 %126, label %127, label %196 127: ; preds = %_ZN4Luau7CodeGen10successorsERKNS0_7CfgInfoEj.exit - %.idx125 = shl nuw nsw i64 %120, 2 %128 = getelementptr inbounds i8, ptr %118, i64 %.idx125 %129 = add i32 %123, 1 store i32 %129, ptr %122, align 4 @@ -2271,16 +2273,18 @@ _ZN4Luau7CodeGen11domChildrenERKNS0_7CfgInfoEj.exit: ; preds = %107, %110 %118 = phi ptr [ %.pre.i, %107 ], [ %112, %110 ] %119 = phi i32 [ %109, %107 ], [ %117, %110 ] %120 = zext i32 %98 to i64 + %.idx125 = shl nuw nsw i64 %120, 2 %121 = zext i32 %119 to i64 + %.idx = shl nuw nsw i64 %121, 2 %122 = getelementptr inbounds i8, ptr %.sroa.9.0139, i64 -4 %123 = load i32, ptr %122, align 4 %124 = zext i32 %123 to i64 - %125 = sub nsw i64 %121, %120 + %gepdiff = sub nsw i64 %.idx, %.idx125 + %125 = ashr exact i64 %gepdiff, 2 %126 = icmp ugt i64 %125, %124 br i1 %126, label %127, label %196 127: ; preds = %_ZN4Luau7CodeGen11domChildrenERKNS0_7CfgInfoEj.exit - %.idx125 = shl nuw nsw i64 %120, 2 %128 = getelementptr inbounds i8, ptr %118, i64 %.idx125 %129 = add i32 %123, 1 store i32 %129, ptr %122, align 4 diff --git a/bench/meshlab/optimized/cube_style_precomputation.cpp.ll b/bench/meshlab/optimized/cube_style_precomputation.cpp.ll index fbcedaa5c2c..74b58d59d4d 100644 --- a/bench/meshlab/optimized/cube_style_precomputation.cpp.ll +++ b/bench/meshlab/optimized/cube_style_precomputation.cpp.ll @@ -30875,7 +30875,9 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %40 = load ptr, ptr %22, align 8 %.idx11.i.i.i.i.i.i = shl nsw i64 %27, 2 %41 = getelementptr inbounds i8, ptr %40, i64 %.idx11.i.i.i.i.i.i - %42 = sub nsw i64 %39, %27 + %.idx.i.i.i.i.i.i = shl nsw i64 %39, 2 + %gepdiff.i.i.i.i.i.i = sub nsw i64 %.idx.i.i.i.i.i.i, %.idx11.i.i.i.i.i.i + %42 = ashr exact i64 %gepdiff.i.i.i.i.i.i, 2 %43 = icmp sgt i64 %42, 0 br i1 %43, label %_ZSt7advanceIPKilEvRT_T0_.exit.i.i.i.i.i.i.i.i, label %_ZSt11lower_boundIPKilET_S2_S2_RKT0_.exit.i.i.i.i.i.i @@ -51310,8 +51312,8 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS .lr.ph.preheader: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit %41 = shl nsw i64 %28, 3 %scevgep = getelementptr i8, ptr %24, i64 %41 - %42 = sub nsw i64 %.sink.i, %28 - %43 = shl nsw i64 %42, 3 + %42 = shl nsw i64 %.sink.i, 3 + %43 = sub nsw i64 %42, %41 call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %43, i1 false) %.pre = load i64, ptr %7, align 8 br label %._crit_edge @@ -66931,11 +66933,11 @@ common.resume: ; preds = %.body, %.body.i %19 = icmp eq i64 %18, 0 %.pre = load ptr, ptr %5, align 8 %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre, i64 24 - %.pre147 = load ptr, ptr %.phi.trans.insert, align 8 + %.pre150 = load ptr, ptr %.phi.trans.insert, align 8 br i1 %19, label %._crit_edge, label %20 20: ; preds = %12 - %21 = getelementptr inbounds i32, ptr %.pre147, i64 %18 + %21 = getelementptr inbounds i32, ptr %.pre150, i64 %18 %22 = load i32, ptr %21, align 4 br label %._crit_edge @@ -66943,14 +66945,14 @@ common.resume: ; preds = %.body, %.body.i %23 = phi i32 [ %22, %20 ], [ 0, %12 ] %24 = sext i32 %23 to i64 %25 = getelementptr inbounds i8, ptr %.pre, i64 24 - %26 = getelementptr i32, ptr %.pre147, i64 %18 + %26 = getelementptr i32, ptr %.pre150, i64 %18 %27 = getelementptr i8, ptr %26, i64 4 %28 = load i32, ptr %27, align 4 %29 = sext i32 %28 to i64 %30 = sub nsw i64 %29, %24 %31 = getelementptr inbounds i8, ptr %.pre, i64 8 %32 = load i64, ptr %31, align 8 - %33 = getelementptr inbounds i32, ptr %.pre147, i64 %32 + %33 = getelementptr inbounds i32, ptr %.pre150, i64 %32 %34 = load i32, ptr %33, align 4 %35 = sext i32 %34 to i64 %36 = sub nsw i64 %35, %29 @@ -67027,13 +67029,13 @@ _ZN5Eigen8internal12scoped_arrayIiED2Ev.exit8.i: ; preds = %.noexc107 73: ; preds = %67 %74 = getelementptr inbounds i8, ptr %.pre, i64 40 %75 = load ptr, ptr %74, align 8 - %.idx131 = shl nsw i64 %24, 3 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %.pre.i111, ptr align 8 %75, i64 %.idx131, i1 false) + %.idx134 = shl nsw i64 %24, 3 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %.pre.i111, ptr align 8 %75, i64 %.idx134, i1 false) %76 = getelementptr inbounds i8, ptr %4, i64 8 %77 = getelementptr inbounds i8, ptr %.pre, i64 48 %78 = load ptr, ptr %77, align 8 - %.idx133 = shl nsw i64 %24, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %69, ptr align 4 %78, i64 %.idx133, i1 false) + %.idx136 = shl nsw i64 %24, 2 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %69, ptr align 4 %78, i64 %.idx136, i1 false) br label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit _ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %.thread, %73 @@ -67046,14 +67048,14 @@ _ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit94: ; preds = %_ZN5Eigen8inte %81 = load ptr, ptr %80, align 8 %82 = getelementptr inbounds double, ptr %81, i64 %49 %83 = getelementptr inbounds double, ptr %.pre.i111, i64 %24 - %.idx135 = shl nsw i64 %16, 3 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %83, ptr align 8 %82, i64 %.idx135, i1 false) + %.idx138 = shl nsw i64 %16, 3 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %83, ptr align 8 %82, i64 %.idx138, i1 false) %84 = getelementptr inbounds i8, ptr %3, i64 40 %85 = load ptr, ptr %84, align 8 %86 = getelementptr inbounds i32, ptr %85, i64 %49 %87 = getelementptr inbounds i32, ptr %69, i64 %24 - %.idx137 = shl nsw i64 %16, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %87, ptr align 4 %86, i64 %.idx137, i1 false) + %.idx140 = shl nsw i64 %16, 2 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %87, ptr align 4 %86, i64 %.idx140, i1 false) br label %88 88: ; preds = %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, %_ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit94 @@ -67063,20 +67065,22 @@ _ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit94: ; preds = %_ZN5Eigen8inte 91: ; preds = %88 %92 = load ptr, ptr %89, align 8 - %.idx139 = shl nsw i64 %29, 3 - %93 = getelementptr inbounds i8, ptr %92, i64 %.idx139 + %.idx142 = shl nsw i64 %29, 3 + %93 = getelementptr inbounds i8, ptr %92, i64 %.idx142 + %.idx141 = shl nsw i64 %35, 3 %94 = getelementptr inbounds double, ptr %.pre.i111, i64 %24 %95 = getelementptr inbounds double, ptr %94, i64 %16 - %gepdiff140 = shl nsw i64 %36, 3 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %95, ptr align 8 %93, i64 %gepdiff140, i1 false) + %gepdiff143 = sub nsw i64 %.idx141, %.idx142 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %95, ptr align 8 %93, i64 %gepdiff143, i1 false) %96 = getelementptr inbounds i8, ptr %6, i64 48 %97 = load ptr, ptr %96, align 8 - %.idx142 = shl nsw i64 %29, 2 - %98 = getelementptr inbounds i8, ptr %97, i64 %.idx142 + %.idx145 = shl nsw i64 %29, 2 + %98 = getelementptr inbounds i8, ptr %97, i64 %.idx145 + %.idx144 = shl nsw i64 %35, 2 %99 = getelementptr inbounds i32, ptr %69, i64 %24 %100 = getelementptr inbounds i32, ptr %99, i64 %16 - %gepdiff143 = shl nsw i64 %36, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %100, ptr align 4 %98, i64 %gepdiff143, i1 false) + %gepdiff146 = sub nsw i64 %.idx144, %.idx145 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %100, ptr align 4 %98, i64 %gepdiff146, i1 false) br label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit97 _ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit97: ; preds = %88, %91 @@ -67196,7 +67200,7 @@ _ZN5Eigen8internal12scoped_arrayIiED2Ev.exit8.i116: ; preds = %122, %_ZN5Eigen8i 143: ; preds = %44 %.not = icmp ne i64 %30, %16 %or.cond.not = select i1 %39, i1 %.not, i1 false - br i1 %or.cond.not, label %144, label %.thread151 + br i1 %or.cond.not, label %144, label %.thread154 144: ; preds = %143 %145 = getelementptr inbounds i8, ptr %6, i64 40 @@ -67228,68 +67232,70 @@ _ZN5Eigen8internal12scoped_arrayIiED2Ev.exit8.i116: ; preds = %122, %_ZN5Eigen8i %156 = getelementptr inbounds i8, ptr %6, i64 56 store i64 %147, ptr %156, align 8 %157 = icmp eq i32 %34, %28 - br i1 %157, label %.thread151, label %158 + br i1 %157, label %.thread154, label %158 158: ; preds = %155 %159 = load ptr, ptr %145, align 8 %.idx124 = shl nsw i64 %29, 3 %160 = getelementptr inbounds i8, ptr %159, i64 %.idx124 + %.idx = shl nsw i64 %35, 3 %161 = getelementptr inbounds double, ptr %159, i64 %24 %162 = getelementptr inbounds double, ptr %161, i64 %16 - %gepdiff = shl nsw i64 %36, 3 + %gepdiff = sub nsw i64 %.idx, %.idx124 call void @llvm.memmove.p0.p0.i64(ptr align 8 %162, ptr align 8 %160, i64 %gepdiff, i1 false) %163 = getelementptr inbounds i8, ptr %6, i64 48 %164 = load ptr, ptr %163, align 8 - %.idx125 = shl nsw i64 %29, 2 - %165 = getelementptr inbounds i8, ptr %164, i64 %.idx125 + %.idx126 = shl nsw i64 %29, 2 + %165 = getelementptr inbounds i8, ptr %164, i64 %.idx126 + %.idx125 = shl nsw i64 %35, 2 %166 = getelementptr inbounds i32, ptr %164, i64 %24 %167 = getelementptr inbounds i32, ptr %166, i64 %16 - %gepdiff126 = shl nsw i64 %36, 2 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %167, ptr align 4 %165, i64 %gepdiff126, i1 false) - br label %.thread151 + %gepdiff127 = sub nsw i64 %.idx125, %.idx126 + call void @llvm.memmove.p0.p0.i64(ptr align 4 %167, ptr align 4 %165, i64 %gepdiff127, i1 false) + br label %.thread154 -.thread151: ; preds = %155, %143, %158 - %cond144 = icmp eq i32 %15, 0 - br i1 %cond144, label %181, label %168 +.thread154: ; preds = %155, %143, %158 + %cond147 = icmp eq i32 %15, 0 + br i1 %cond147, label %181, label %168 -168: ; preds = %.thread151 +168: ; preds = %.thread154 %169 = getelementptr inbounds i8, ptr %3, i64 48 %170 = load ptr, ptr %169, align 8 %171 = getelementptr inbounds double, ptr %170, i64 %49 %172 = getelementptr inbounds i8, ptr %6, i64 40 %173 = load ptr, ptr %172, align 8 %174 = getelementptr inbounds double, ptr %173, i64 %24 - %.idx = shl nsw i64 %16, 3 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %174, ptr align 8 %171, i64 %.idx, i1 false) + %.idx130 = shl nsw i64 %16, 3 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %174, ptr align 8 %171, i64 %.idx130, i1 false) %175 = getelementptr inbounds i8, ptr %3, i64 40 %176 = load ptr, ptr %175, align 8 %177 = getelementptr inbounds i32, ptr %176, i64 %49 %178 = getelementptr inbounds i8, ptr %6, i64 48 %179 = load ptr, ptr %178, align 8 %180 = getelementptr inbounds i32, ptr %179, i64 %24 - %.idx129 = shl nsw i64 %16, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %180, ptr align 4 %177, i64 %.idx129, i1 false) + %.idx132 = shl nsw i64 %16, 2 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %180, ptr align 4 %177, i64 %.idx132, i1 false) br label %181 -181: ; preds = %.thread151, %136, %138, %168 - %.086 = phi i1 [ true, %136 ], [ true, %138 ], [ %or.cond.not, %168 ], [ %or.cond.not, %.thread151 ] +181: ; preds = %.thread154, %136, %138, %168 + %.086 = phi i1 [ true, %136 ], [ true, %138 ], [ %or.cond.not, %168 ], [ %or.cond.not, %.thread154 ] %182 = load ptr, ptr %5, align 8 %183 = getelementptr inbounds i8, ptr %182, i64 32 %184 = load ptr, ptr %183, align 8 %185 = icmp eq ptr %184, null - %.pre149 = load i64, ptr %17, align 8 + %.pre152 = load i64, ptr %17, align 8 br i1 %185, label %190, label %186 186: ; preds = %181 %187 = getelementptr inbounds i8, ptr %6, i64 32 %188 = load ptr, ptr %187, align 8 - %189 = getelementptr inbounds i32, ptr %188, i64 %.pre149 + %189 = getelementptr inbounds i32, ptr %188, i64 %.pre152 store i32 %15, ptr %189, align 4 - %.pre148 = load i64, ptr %17, align 8 + %.pre151 = load i64, ptr %17, align 8 br label %190 190: ; preds = %186, %181 - %191 = phi i64 [ %.pre148, %186 ], [ %.pre149, %181 ] + %191 = phi i64 [ %.pre151, %186 ], [ %.pre152, %181 ] %192 = getelementptr inbounds i8, ptr %6, i64 24 %193 = load ptr, ptr %192, align 8 %194 = getelementptr inbounds i32, ptr %193, i64 %191 @@ -67302,12 +67308,12 @@ _ZN5Eigen8internal12scoped_arrayIiED2Ev.exit8.i116: ; preds = %122, %_ZN5Eigen8i %198 = load i64, ptr %17, align 8 %199 = getelementptr inbounds i8, ptr %6, i64 8 %200 = load i64, ptr %199, align 8 - %.not91.not145 = icmp slt i64 %198, %200 - br i1 %.not91.not145, label %.lr.ph, label %.loopexit + %.not91.not148 = icmp slt i64 %198, %200 + br i1 %.not91.not148, label %.lr.ph, label %.loopexit .lr.ph: ; preds = %195, %.lr.ph - %.0.in146 = phi i64 [ %.0, %.lr.ph ], [ %198, %195 ] - %.0 = add nsw i64 %.0.in146, 1 + %.0.in149 = phi i64 [ %.0, %.lr.ph ], [ %198, %195 ] + %.0 = add nsw i64 %.0.in149, 1 %201 = load ptr, ptr %192, align 8 %202 = getelementptr inbounds i32, ptr %201, i64 %.0 %203 = load i32, ptr %202, align 4 @@ -68897,8 +68903,8 @@ _ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; pred %52 = shl i64 %50, 2 %scevgep = getelementptr i8, ptr %.sroa.045.154, i64 %52 %scevgep64 = getelementptr i8, ptr %31, i64 %52 - %53 = sub i64 %33, %50 - %54 = shl i64 %53, 2 + %53 = shl i64 %33, 2 + %54 = sub i64 %53, %52 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep, ptr align 4 %scevgep64, i64 %54, i1 false) br label %_ZN5Eigen17PermutationMatrixILin1ELin1EiEaSERKS1_.exit diff --git a/bench/meshlab/optimized/decorate_plugin_container.cpp.ll b/bench/meshlab/optimized/decorate_plugin_container.cpp.ll index be3094c0ff2..cf254e8051e 100644 --- a/bench/meshlab/optimized/decorate_plugin_container.cpp.ll +++ b/bench/meshlab/optimized/decorate_plugin_container.cpp.ll @@ -292,18 +292,18 @@ define noundef ptr @_ZN23DecoratePluginContainer14decoratePluginERK7QString(ptr %5 = load ptr, ptr %0, align 8 %6 = getelementptr inbounds i8, ptr %0, i64 8 %7 = load ptr, ptr %6, align 8 - %.not44 = icmp eq ptr %5, %7 - br i1 %.not44, label %._crit_edge49, label %.lr.ph48 + %.not45 = icmp eq ptr %5, %7 + br i1 %.not45, label %._crit_edge50, label %.lr.ph49 8: ; preds = %_ZN5QListIP7QActionED2Ev.exit - %9 = getelementptr inbounds i8, ptr %.sroa.033.045, i64 8 + %9 = getelementptr inbounds i8, ptr %.sroa.034.046, i64 8 %.not = icmp eq ptr %9, %7 - br i1 %.not, label %._crit_edge49, label %.lr.ph48 + br i1 %.not, label %._crit_edge50, label %.lr.ph49 -.lr.ph48: ; preds = %2, %8 - %.046 = phi ptr [ %.1, %8 ], [ undef, %2 ] - %.sroa.033.045 = phi ptr [ %9, %8 ], [ %5, %2 ] - %10 = load ptr, ptr %.sroa.033.045, align 8 +.lr.ph49: ; preds = %2, %8 + %.047 = phi ptr [ %.1, %8 ], [ undef, %2 ] + %.sroa.034.046 = phi ptr [ %9, %8 ], [ %5, %2 ] + %10 = load ptr, ptr %.sroa.034.046, align 8 %11 = load ptr, ptr %10, align 8 %12 = getelementptr inbounds i8, ptr %11, i64 120 %13 = load ptr, ptr %12, align 8 @@ -311,9 +311,9 @@ define noundef ptr @_ZN23DecoratePluginContainer14decoratePluginERK7QString(ptr %14 = load ptr, ptr %3, align 8, !noalias !7 %15 = load atomic i32, ptr %14 monotonic, align 4, !noalias !7 %16 = icmp ugt i32 %15, 1 - br i1 %16, label %17, label %41 + br i1 %16, label %17, label %40 -17: ; preds = %.lr.ph48 +17: ; preds = %.lr.ph49 %18 = getelementptr inbounds i8, ptr %14, i64 4 %19 = load i32, ptr %18, align 4, !noalias !7 %20 = getelementptr inbounds i8, ptr %14, i64 16 @@ -339,194 +339,194 @@ define noundef ptr @_ZN23DecoratePluginContainer14decoratePluginERK7QString(ptr %33 = getelementptr inbounds i8, ptr %26, i64 12 %34 = load i32, ptr %33, align 4, !noalias !7 %35 = sext i32 %34 to i64 - %36 = sub nsw i64 %35, %30 - %37 = icmp sgt i64 %36, 0 - br i1 %37, label %38, label %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i + %.idx.i.i.i.i = shl nsw i64 %35, 3 + %gepdiff.i.i.i.i = sub nsw i64 %.idx.i.i.i.i, %.idx7.i.i.i.i + %36 = icmp sgt i64 %gepdiff.i.i.i.i, 0 + br i1 %36, label %37, label %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i -38: ; preds = %32 - %gepdiff.i.i.i.i = shl nuw nsw i64 %36, 3 +37: ; preds = %32 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %31, ptr nonnull align 8 %24, i64 %gepdiff.i.i.i.i, i1 false), !noalias !7 br label %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i -_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i: ; preds = %38, %32, %.noexc - %39 = load atomic i32, ptr %25 monotonic, align 4, !noalias !7 - switch i32 %39, label %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i [ +_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i: ; preds = %37, %32, %.noexc + %38 = load atomic i32, ptr %25 monotonic, align 4, !noalias !7 + switch i32 %38, label %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i [ i32 0, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i - i32 -1, label %41 + i32 -1, label %40 ] _ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i: ; preds = %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i - %40 = atomicrmw sub ptr %25, i32 1 seq_cst, align 4, !noalias !7 - %.not.i.i.i.i = icmp eq i32 %40, 1 - br i1 %.not.i.i.i.i, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i, label %41 + %39 = atomicrmw sub ptr %25, i32 1 seq_cst, align 4, !noalias !7 + %.not.i.i.i.i = icmp eq i32 %39, 1 + br i1 %.not.i.i.i.i, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i, label %40 _ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i, %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i invoke void @_ZN9QListData7disposeEPNS_4DataE(ptr noundef nonnull %25) - to label %41 unwind label %.loopexit.split-lp - -41: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i, %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i, %.lr.ph48, %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i - %42 = load ptr, ptr %3, align 8, !noalias !10 - %43 = getelementptr inbounds i8, ptr %42, i64 16 - %44 = getelementptr inbounds i8, ptr %42, i64 8 - %45 = load i32, ptr %44, align 8, !noalias !10 - %46 = sext i32 %45 to i64 - %47 = getelementptr inbounds ptr, ptr %43, i64 %46 - %48 = load atomic i32, ptr %42 monotonic, align 4, !noalias !11 - %49 = icmp ugt i32 %48, 1 - br i1 %49, label %50, label %_ZN5QListIP7QActionE3endEv.exit - -50: ; preds = %41 - %51 = getelementptr inbounds i8, ptr %42, i64 4 - %52 = load i32, ptr %51, align 4, !noalias !11 - %53 = invoke noundef ptr @_ZN9QListData6detachEi(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %52) - to label %.noexc22 unwind label %.loopexit.split-lp - -.noexc22: ; preds = %50 - %54 = load ptr, ptr %3, align 8, !noalias !11 - %55 = getelementptr inbounds i8, ptr %54, i64 16 - %56 = getelementptr inbounds i8, ptr %54, i64 8 - %57 = load i32, ptr %56, align 8, !noalias !11 - %58 = sext i32 %57 to i64 - %.idx7.i.i.i.i15 = shl nsw i64 %58, 3 - %59 = getelementptr inbounds i8, ptr %55, i64 %.idx7.i.i.i.i15 - %.not.i.i.i.i.i16 = icmp eq ptr %47, %59 - br i1 %.not.i.i.i.i.i16, label %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i17, label %60 - -60: ; preds = %.noexc22 - %61 = getelementptr inbounds i8, ptr %54, i64 12 - %62 = load i32, ptr %61, align 4, !noalias !11 - %63 = sext i32 %62 to i64 - %64 = sub nsw i64 %63, %58 - %65 = icmp sgt i64 %64, 0 - br i1 %65, label %66, label %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i17 - -66: ; preds = %60 - %gepdiff.i.i.i.i21 = shl nuw nsw i64 %64, 3 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %59, ptr nonnull align 8 %47, i64 %gepdiff.i.i.i.i21, i1 false), !noalias !11 - br label %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i17 - -_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i17: ; preds = %66, %60, %.noexc22 - %67 = load atomic i32, ptr %53 monotonic, align 4, !noalias !11 - switch i32 %67, label %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i19 [ - i32 0, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i18 + to label %40 unwind label %.loopexit.split-lp + +40: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i, %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i, %.lr.ph49, %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i + %41 = load ptr, ptr %3, align 8, !noalias !10 + %42 = getelementptr inbounds i8, ptr %41, i64 16 + %43 = getelementptr inbounds i8, ptr %41, i64 8 + %44 = load i32, ptr %43, align 8, !noalias !10 + %45 = sext i32 %44 to i64 + %46 = getelementptr inbounds ptr, ptr %42, i64 %45 + %47 = load atomic i32, ptr %41 monotonic, align 4, !noalias !11 + %48 = icmp ugt i32 %47, 1 + br i1 %48, label %49, label %_ZN5QListIP7QActionE3endEv.exit + +49: ; preds = %40 + %50 = getelementptr inbounds i8, ptr %41, i64 4 + %51 = load i32, ptr %50, align 4, !noalias !11 + %52 = invoke noundef ptr @_ZN9QListData6detachEi(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %51) + to label %.noexc23 unwind label %.loopexit.split-lp + +.noexc23: ; preds = %49 + %53 = load ptr, ptr %3, align 8, !noalias !11 + %54 = getelementptr inbounds i8, ptr %53, i64 16 + %55 = getelementptr inbounds i8, ptr %53, i64 8 + %56 = load i32, ptr %55, align 8, !noalias !11 + %57 = sext i32 %56 to i64 + %.idx7.i.i.i.i15 = shl nsw i64 %57, 3 + %58 = getelementptr inbounds i8, ptr %54, i64 %.idx7.i.i.i.i15 + %.not.i.i.i.i.i16 = icmp eq ptr %46, %58 + br i1 %.not.i.i.i.i.i16, label %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i19, label %59 + +59: ; preds = %.noexc23 + %60 = getelementptr inbounds i8, ptr %53, i64 12 + %61 = load i32, ptr %60, align 4, !noalias !11 + %62 = sext i32 %61 to i64 + %.idx.i.i.i.i17 = shl nsw i64 %62, 3 + %gepdiff.i.i.i.i18 = sub nsw i64 %.idx.i.i.i.i17, %.idx7.i.i.i.i15 + %63 = icmp sgt i64 %gepdiff.i.i.i.i18, 0 + br i1 %63, label %64, label %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i19 + +64: ; preds = %59 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %58, ptr nonnull align 8 %46, i64 %gepdiff.i.i.i.i18, i1 false), !noalias !11 + br label %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i19 + +_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i19: ; preds = %64, %59, %.noexc23 + %65 = load atomic i32, ptr %52 monotonic, align 4, !noalias !11 + switch i32 %65, label %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i21 [ + i32 0, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i20 i32 -1, label %_ZN5QListIP7QActionE3endEv.exit ] -_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i19: ; preds = %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i17 - %68 = atomicrmw sub ptr %53, i32 1 seq_cst, align 4, !noalias !11 - %.not.i.i.i.i20 = icmp eq i32 %68, 1 - br i1 %.not.i.i.i.i20, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i18, label %_ZN5QListIP7QActionE3endEv.exit +_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i21: ; preds = %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i19 + %66 = atomicrmw sub ptr %52, i32 1 seq_cst, align 4, !noalias !11 + %.not.i.i.i.i22 = icmp eq i32 %66, 1 + br i1 %.not.i.i.i.i22, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i20, label %_ZN5QListIP7QActionE3endEv.exit -_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i18: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i19, %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i17 - invoke void @_ZN9QListData7disposeEPNS_4DataE(ptr noundef nonnull %53) +_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i20: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i21, %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i19 + invoke void @_ZN9QListData7disposeEPNS_4DataE(ptr noundef nonnull %52) to label %_ZN5QListIP7QActionE3endEv.exit unwind label %.loopexit.split-lp -_ZN5QListIP7QActionE3endEv.exit: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i18, %41, %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i17, %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i19 - %69 = load ptr, ptr %3, align 8 - %70 = getelementptr inbounds i8, ptr %69, i64 16 - %71 = getelementptr inbounds i8, ptr %69, i64 12 - %72 = load i32, ptr %71, align 4, !noalias !11 - %73 = sext i32 %72 to i64 - %74 = getelementptr inbounds ptr, ptr %70, i64 %73 - %.not3638 = icmp eq ptr %47, %74 - br i1 %.not3638, label %_ZN7QStringD2Ev.exit._crit_edge, label %.lr.ph - -75: ; preds = %_ZN7QStringD2Ev.exit - %76 = getelementptr inbounds i8, ptr %.sroa.029.039, i64 8 - %.not36 = icmp eq ptr %76, %74 - br i1 %.not36, label %_ZN7QStringD2Ev.exit._crit_edge.loopexit, label %.lr.ph +_ZN5QListIP7QActionE3endEv.exit: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i20, %40, %_ZN5QListIP7QActionE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i19, %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i21 + %67 = load ptr, ptr %3, align 8 + %68 = getelementptr inbounds i8, ptr %67, i64 16 + %69 = getelementptr inbounds i8, ptr %67, i64 12 + %70 = load i32, ptr %69, align 4, !noalias !11 + %71 = sext i32 %70 to i64 + %72 = getelementptr inbounds ptr, ptr %68, i64 %71 + %.not3739 = icmp eq ptr %46, %72 + br i1 %.not3739, label %_ZN7QStringD2Ev.exit._crit_edge, label %.lr.ph + +73: ; preds = %_ZN7QStringD2Ev.exit + %74 = getelementptr inbounds i8, ptr %.sroa.030.040, i64 8 + %.not37 = icmp eq ptr %74, %72 + br i1 %.not37, label %_ZN7QStringD2Ev.exit._crit_edge.loopexit, label %.lr.ph .loopexit: ; preds = %.lr.ph %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %77 + br label %75 -.loopexit.split-lp: ; preds = %17, %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i, %50, %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i18 +.loopexit.split-lp: ; preds = %17, %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i, %49, %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i20 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %77 + br label %75 -77: ; preds = %.loopexit.split-lp, %.loopexit +75: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @_ZN5QListIP7QActionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #18 resume { ptr, i32 } %lpad.phi -.lr.ph: ; preds = %_ZN5QListIP7QActionE3endEv.exit, %75 - %.sroa.029.039 = phi ptr [ %76, %75 ], [ %47, %_ZN5QListIP7QActionE3endEv.exit ] - %78 = load ptr, ptr %.sroa.029.039, align 8 - %79 = load ptr, ptr %10, align 8 - %80 = getelementptr inbounds i8, ptr %79, i64 32 - %81 = load ptr, ptr %80, align 8 - invoke void %81(ptr dead_on_unwind nonnull writable sret(%class.QString) align 8 %4, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef %78) - to label %82 unwind label %.loopexit - -82: ; preds = %.lr.ph - %83 = call noundef zeroext i1 @_ZeqRK7QStringS1_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %4) #18 - %84 = load ptr, ptr %4, align 8 - %85 = load atomic i32, ptr %84 monotonic, align 4 - switch i32 %85, label %_ZN9QtPrivate8RefCount5derefEv.exit.i [ +.lr.ph: ; preds = %_ZN5QListIP7QActionE3endEv.exit, %73 + %.sroa.030.040 = phi ptr [ %74, %73 ], [ %46, %_ZN5QListIP7QActionE3endEv.exit ] + %76 = load ptr, ptr %.sroa.030.040, align 8 + %77 = load ptr, ptr %10, align 8 + %78 = getelementptr inbounds i8, ptr %77, i64 32 + %79 = load ptr, ptr %78, align 8 + invoke void %79(ptr dead_on_unwind nonnull writable sret(%class.QString) align 8 %4, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef %76) + to label %80 unwind label %.loopexit + +80: ; preds = %.lr.ph + %81 = call noundef zeroext i1 @_ZeqRK7QStringS1_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %4) #18 + %82 = load ptr, ptr %4, align 8 + %83 = load atomic i32, ptr %82 monotonic, align 4 + switch i32 %83, label %_ZN9QtPrivate8RefCount5derefEv.exit.i [ i32 0, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i i32 -1, label %_ZN7QStringD2Ev.exit ] -_ZN9QtPrivate8RefCount5derefEv.exit.i: ; preds = %82 - %86 = atomicrmw sub ptr %84, i32 1 seq_cst, align 4 - %.not.i = icmp eq i32 %86, 1 +_ZN9QtPrivate8RefCount5derefEv.exit.i: ; preds = %80 + %84 = atomicrmw sub ptr %82, i32 1 seq_cst, align 4 + %.not.i = icmp eq i32 %84, 1 br i1 %.not.i, label %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i, label %_ZN7QStringD2Ev.exit _ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i %.pre.i = load ptr, ptr %4, align 8 br label %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i -_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i, %82 - %87 = phi ptr [ %.pre.i, %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i ], [ %84, %82 ] - call void @_ZN10QArrayData10deallocateEPS_mm(ptr noundef %87, i64 noundef 2, i64 noundef 8) #18 +_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i, %80 + %85 = phi ptr [ %.pre.i, %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i ], [ %82, %80 ] + call void @_ZN10QArrayData10deallocateEPS_mm(ptr noundef %85, i64 noundef 2, i64 noundef 8) #18 br label %_ZN7QStringD2Ev.exit -_ZN7QStringD2Ev.exit: ; preds = %82, %_ZN9QtPrivate8RefCount5derefEv.exit.i, %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i - br i1 %83, label %_ZN7QStringD2Ev.exit._crit_edge.loopexit, label %75 +_ZN7QStringD2Ev.exit: ; preds = %80, %_ZN9QtPrivate8RefCount5derefEv.exit.i, %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i + br i1 %81, label %_ZN7QStringD2Ev.exit._crit_edge.loopexit, label %73 -_ZN7QStringD2Ev.exit._crit_edge.loopexit: ; preds = %_ZN7QStringD2Ev.exit, %75 - %.1.ph = phi ptr [ %.046, %75 ], [ %10, %_ZN7QStringD2Ev.exit ] - %.not36.lcssa.ph = xor i1 %83, true +_ZN7QStringD2Ev.exit._crit_edge.loopexit: ; preds = %_ZN7QStringD2Ev.exit, %73 + %.1.ph = phi ptr [ %.047, %73 ], [ %10, %_ZN7QStringD2Ev.exit ] + %.not37.lcssa.ph = xor i1 %81, true %.pre = load ptr, ptr %3, align 8 br label %_ZN7QStringD2Ev.exit._crit_edge _ZN7QStringD2Ev.exit._crit_edge: ; preds = %_ZN7QStringD2Ev.exit._crit_edge.loopexit, %_ZN5QListIP7QActionE3endEv.exit - %88 = phi ptr [ %69, %_ZN5QListIP7QActionE3endEv.exit ], [ %.pre, %_ZN7QStringD2Ev.exit._crit_edge.loopexit ] - %.not36.lcssa = phi i1 [ true, %_ZN5QListIP7QActionE3endEv.exit ], [ %.not36.lcssa.ph, %_ZN7QStringD2Ev.exit._crit_edge.loopexit ] - %.1 = phi ptr [ %.046, %_ZN5QListIP7QActionE3endEv.exit ], [ %.1.ph, %_ZN7QStringD2Ev.exit._crit_edge.loopexit ] - %89 = load atomic i32, ptr %88 monotonic, align 4 - switch i32 %89, label %_ZN9QtPrivate8RefCount5derefEv.exit.i25 [ - i32 0, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i24 + %86 = phi ptr [ %67, %_ZN5QListIP7QActionE3endEv.exit ], [ %.pre, %_ZN7QStringD2Ev.exit._crit_edge.loopexit ] + %.not37.lcssa = phi i1 [ true, %_ZN5QListIP7QActionE3endEv.exit ], [ %.not37.lcssa.ph, %_ZN7QStringD2Ev.exit._crit_edge.loopexit ] + %.1 = phi ptr [ %.047, %_ZN5QListIP7QActionE3endEv.exit ], [ %.1.ph, %_ZN7QStringD2Ev.exit._crit_edge.loopexit ] + %87 = load atomic i32, ptr %86 monotonic, align 4 + switch i32 %87, label %_ZN9QtPrivate8RefCount5derefEv.exit.i26 [ + i32 0, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i25 i32 -1, label %_ZN5QListIP7QActionED2Ev.exit ] -_ZN9QtPrivate8RefCount5derefEv.exit.i25: ; preds = %_ZN7QStringD2Ev.exit._crit_edge - %90 = atomicrmw sub ptr %88, i32 1 seq_cst, align 4 - %.not.i26 = icmp eq i32 %90, 1 - br i1 %.not.i26, label %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i27, label %_ZN5QListIP7QActionED2Ev.exit +_ZN9QtPrivate8RefCount5derefEv.exit.i26: ; preds = %_ZN7QStringD2Ev.exit._crit_edge + %88 = atomicrmw sub ptr %86, i32 1 seq_cst, align 4 + %.not.i27 = icmp eq i32 %88, 1 + br i1 %.not.i27, label %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i28, label %_ZN5QListIP7QActionED2Ev.exit -_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i27: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i25 - %.pre.i28 = load ptr, ptr %3, align 8 - br label %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i24 +_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i28: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i26 + %.pre.i29 = load ptr, ptr %3, align 8 + br label %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i25 -_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i24: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i27, %_ZN7QStringD2Ev.exit._crit_edge - %91 = phi ptr [ %.pre.i28, %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i27 ], [ %88, %_ZN7QStringD2Ev.exit._crit_edge ] - invoke void @_ZN9QListData7disposeEPNS_4DataE(ptr noundef %91) - to label %_ZN5QListIP7QActionED2Ev.exit unwind label %92 +_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i25: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i28, %_ZN7QStringD2Ev.exit._crit_edge + %89 = phi ptr [ %.pre.i29, %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i28 ], [ %86, %_ZN7QStringD2Ev.exit._crit_edge ] + invoke void @_ZN9QListData7disposeEPNS_4DataE(ptr noundef %89) + to label %_ZN5QListIP7QActionED2Ev.exit unwind label %90 -92: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i24 - %93 = landingpad { ptr, i32 } +90: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i25 + %91 = landingpad { ptr, i32 } catch ptr null - %94 = extractvalue { ptr, i32 } %93, 0 - call void @__clang_call_terminate(ptr %94) #19 + %92 = extractvalue { ptr, i32 } %91, 0 + call void @__clang_call_terminate(ptr %92) #19 unreachable -_ZN5QListIP7QActionED2Ev.exit: ; preds = %_ZN7QStringD2Ev.exit._crit_edge, %_ZN9QtPrivate8RefCount5derefEv.exit.i25, %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i24 - br i1 %.not36.lcssa, label %8, label %._crit_edge49 +_ZN5QListIP7QActionED2Ev.exit: ; preds = %_ZN7QStringD2Ev.exit._crit_edge, %_ZN9QtPrivate8RefCount5derefEv.exit.i26, %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i25 + br i1 %.not37.lcssa, label %8, label %._crit_edge50 -._crit_edge49: ; preds = %_ZN5QListIP7QActionED2Ev.exit, %8, %2 +._crit_edge50: ; preds = %_ZN5QListIP7QActionED2Ev.exit, %8, %2 %.2 = phi ptr [ null, %2 ], [ null, %8 ], [ %.1, %_ZN5QListIP7QActionED2Ev.exit ] ret ptr %.2 } diff --git a/bench/meshlab/optimized/edit_paint.cpp.ll b/bench/meshlab/optimized/edit_paint.cpp.ll index 8bf49f0b923..745da0ae8f2 100644 --- a/bench/meshlab/optimized/edit_paint.cpp.ll +++ b/bench/meshlab/optimized/edit_paint.cpp.ll @@ -2786,35 +2786,35 @@ _ZN9QtPrivate8RefCount3refEv.exit.i.i.i: ; preds = %6 %29 = getelementptr inbounds i8, ptr %16, i64 12 %30 = load i32, ptr %29, align 4 %31 = sext i32 %30 to i64 - %32 = sub nsw i64 %31, %20 - %33 = icmp sgt i64 %32, 0 - br i1 %33, label %34, label %_ZN9QtPrivate21qMakeForeachContainerIR5QListIP6GLAreaEEENS_17QForeachContainerINSt5decayIT_E4typeEEEOS8_.exit + %.idx.i.i.i = shl nsw i64 %31, 3 + %gepdiff.i.i.i = sub nsw i64 %.idx.i.i.i, %.idx3.i.i.i + %32 = icmp sgt i64 %gepdiff.i.i.i, 0 + br i1 %32, label %33, label %_ZN9QtPrivate21qMakeForeachContainerIR5QListIP6GLAreaEEENS_17QForeachContainerINSt5decayIT_E4typeEEEOS8_.exit -34: ; preds = %28 - %gepdiff.i.i.i = shl nuw nsw i64 %32, 3 +33: ; preds = %28 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %21, ptr nonnull align 8 %27, i64 %gepdiff.i.i.i, i1 false) br label %_ZN9QtPrivate21qMakeForeachContainerIR5QListIP6GLAreaEEENS_17QForeachContainerINSt5decayIT_E4typeEEEOS8_.exit -_ZN9QtPrivate21qMakeForeachContainerIR5QListIP6GLAreaEEENS_17QForeachContainerINSt5decayIT_E4typeEEEOS8_.exit: ; preds = %_ZN9QtPrivate8RefCount3refEv.exit.thread.i.i.i, %_ZN9QtPrivate8RefCount3refEv.exit.i.i.i, %12, %28, %34 - %35 = getelementptr inbounds i8, ptr %2, i64 8 +_ZN9QtPrivate21qMakeForeachContainerIR5QListIP6GLAreaEEENS_17QForeachContainerINSt5decayIT_E4typeEEEOS8_.exit: ; preds = %_ZN9QtPrivate8RefCount3refEv.exit.thread.i.i.i, %_ZN9QtPrivate8RefCount3refEv.exit.i.i.i, %12, %28, %33 + %34 = getelementptr inbounds i8, ptr %2, i64 8 call void @llvm.experimental.noalias.scope.decl(metadata !17) - %36 = load ptr, ptr %2, align 8 - %37 = getelementptr inbounds i8, ptr %36, i64 16 - %38 = getelementptr inbounds i8, ptr %36, i64 8 - %39 = load i32, ptr %38, align 8, !noalias !17 - %40 = sext i32 %39 to i64 - %41 = getelementptr inbounds ptr, ptr %37, i64 %40 - store ptr %41, ptr %35, align 8, !alias.scope !20 - %42 = getelementptr inbounds i8, ptr %2, i64 16 + %35 = load ptr, ptr %2, align 8 + %36 = getelementptr inbounds i8, ptr %35, i64 16 + %37 = getelementptr inbounds i8, ptr %35, i64 8 + %38 = load i32, ptr %37, align 8, !noalias !17 + %39 = sext i32 %38 to i64 + %40 = getelementptr inbounds ptr, ptr %36, i64 %39 + store ptr %40, ptr %34, align 8, !alias.scope !20 + %41 = getelementptr inbounds i8, ptr %2, i64 16 call void @llvm.experimental.noalias.scope.decl(metadata !21) - %43 = getelementptr inbounds i8, ptr %36, i64 12 - %44 = load i32, ptr %43, align 4, !noalias !21 - %45 = sext i32 %44 to i64 - %46 = getelementptr inbounds ptr, ptr %37, i64 %45 - store ptr %46, ptr %42, align 8, !alias.scope !24 - %47 = getelementptr inbounds i8, ptr %2, i64 24 - store i32 1, ptr %47, align 8 - %.not8 = icmp eq i32 %39, %44 + %42 = getelementptr inbounds i8, ptr %35, i64 12 + %43 = load i32, ptr %42, align 4, !noalias !21 + %44 = sext i32 %43 to i64 + %45 = getelementptr inbounds ptr, ptr %36, i64 %44 + store ptr %45, ptr %41, align 8, !alias.scope !24 + %46 = getelementptr inbounds i8, ptr %2, i64 24 + store i32 1, ptr %46, align 8 + %.not8 = icmp eq i32 %38, %43 br i1 %.not8, label %.critedge, label %.lr.ph .critedge.loopexit: ; preds = %._crit_edge @@ -2822,16 +2822,16 @@ _ZN9QtPrivate21qMakeForeachContainerIR5QListIP6GLAreaEEENS_17QForeachContainerIN br label %.critedge .critedge: ; preds = %.critedge.loopexit, %_ZN9QtPrivate21qMakeForeachContainerIR5QListIP6GLAreaEEENS_17QForeachContainerINSt5decayIT_E4typeEEEOS8_.exit - %48 = phi ptr [ %.pre11, %.critedge.loopexit ], [ %36, %_ZN9QtPrivate21qMakeForeachContainerIR5QListIP6GLAreaEEENS_17QForeachContainerINSt5decayIT_E4typeEEEOS8_.exit ] - %49 = load atomic i32, ptr %48 monotonic, align 4 - switch i32 %49, label %_ZN9QtPrivate8RefCount5derefEv.exit.i.i [ + %47 = phi ptr [ %.pre11, %.critedge.loopexit ], [ %35, %_ZN9QtPrivate21qMakeForeachContainerIR5QListIP6GLAreaEEENS_17QForeachContainerINSt5decayIT_E4typeEEEOS8_.exit ] + %48 = load atomic i32, ptr %47 monotonic, align 4 + switch i32 %48, label %_ZN9QtPrivate8RefCount5derefEv.exit.i.i [ i32 0, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i.i i32 -1, label %_ZN9QtPrivate17QForeachContainerI5QListIP6GLAreaEED2Ev.exit ] _ZN9QtPrivate8RefCount5derefEv.exit.i.i: ; preds = %.critedge - %50 = atomicrmw sub ptr %48, i32 1 seq_cst, align 4 - %.not.i.i = icmp eq i32 %50, 1 + %49 = atomicrmw sub ptr %47, i32 1 seq_cst, align 4 + %.not.i.i = icmp eq i32 %49, 1 br i1 %.not.i.i, label %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i.i, label %_ZN9QtPrivate17QForeachContainerI5QListIP6GLAreaEED2Ev.exit _ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i.i: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i.i @@ -2839,46 +2839,46 @@ _ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_ br label %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i.i _ZN9QtPrivate8RefCount5derefEv.exit.thread2.i.i: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i.i, %.critedge - %51 = phi ptr [ %.pre.i.i, %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i.i ], [ %48, %.critedge ] - invoke void @_ZN9QListData7disposeEPNS_4DataE(ptr noundef %51) - to label %_ZN9QtPrivate17QForeachContainerI5QListIP6GLAreaEED2Ev.exit unwind label %52 + %50 = phi ptr [ %.pre.i.i, %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i.i ], [ %47, %.critedge ] + invoke void @_ZN9QListData7disposeEPNS_4DataE(ptr noundef %50) + to label %_ZN9QtPrivate17QForeachContainerI5QListIP6GLAreaEED2Ev.exit unwind label %51 -52: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i.i - %53 = landingpad { ptr, i32 } +51: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i.i + %52 = landingpad { ptr, i32 } catch ptr null - %54 = extractvalue { ptr, i32 } %53, 0 - call void @__clang_call_terminate(ptr %54) #27 + %53 = extractvalue { ptr, i32 } %52, 0 + call void @__clang_call_terminate(ptr %53) #27 unreachable .lr.ph: ; preds = %_ZN9QtPrivate21qMakeForeachContainerIR5QListIP6GLAreaEEENS_17QForeachContainerINSt5decayIT_E4typeEEEOS8_.exit, %._crit_edge - %55 = phi ptr [ %59, %._crit_edge ], [ %46, %_ZN9QtPrivate21qMakeForeachContainerIR5QListIP6GLAreaEEENS_17QForeachContainerINSt5decayIT_E4typeEEEOS8_.exit ] - %56 = phi ptr [ %61, %._crit_edge ], [ %41, %_ZN9QtPrivate21qMakeForeachContainerIR5QListIP6GLAreaEEENS_17QForeachContainerINSt5decayIT_E4typeEEEOS8_.exit ] - %57 = load ptr, ptr %56, align 8 - %.not5 = icmp eq ptr %57, null + %54 = phi ptr [ %58, %._crit_edge ], [ %45, %_ZN9QtPrivate21qMakeForeachContainerIR5QListIP6GLAreaEEENS_17QForeachContainerINSt5decayIT_E4typeEEEOS8_.exit ] + %55 = phi ptr [ %60, %._crit_edge ], [ %40, %_ZN9QtPrivate21qMakeForeachContainerIR5QListIP6GLAreaEEENS_17QForeachContainerINSt5decayIT_E4typeEEEOS8_.exit ] + %56 = load ptr, ptr %55, align 8 + %.not5 = icmp eq ptr %56, null br i1 %.not5, label %._crit_edge, label %.lr.ph.split .lr.ph.split: ; preds = %.lr.ph - invoke void @_ZN7QWidget6updateEv(ptr noundef nonnull align 8 dereferenceable(48) %57) + invoke void @_ZN7QWidget6updateEv(ptr noundef nonnull align 8 dereferenceable(48) %56) to label %._crit_edge.split.split.us unwind label %.split.us ._crit_edge.split.split.us: ; preds = %.lr.ph.split - %.pre = load ptr, ptr %35, align 8 - %.pre10 = load ptr, ptr %42, align 8 + %.pre = load ptr, ptr %34, align 8 + %.pre10 = load ptr, ptr %41, align 8 br label %._crit_edge .split.us: ; preds = %.lr.ph.split - %58 = landingpad { ptr, i32 } + %57 = landingpad { ptr, i32 } cleanup call void @_ZN9QtPrivate17QForeachContainerI5QListIP6GLAreaEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %2) #26 - resume { ptr, i32 } %58 + resume { ptr, i32 } %57 ._crit_edge: ; preds = %.lr.ph, %._crit_edge.split.split.us - %59 = phi ptr [ %.pre10, %._crit_edge.split.split.us ], [ %55, %.lr.ph ] - %60 = phi ptr [ %.pre, %._crit_edge.split.split.us ], [ %56, %.lr.ph ] - %61 = getelementptr inbounds i8, ptr %60, i64 8 - store ptr %61, ptr %35, align 8 - store i32 1, ptr %47, align 8 - %.not = icmp eq ptr %61, %59 + %58 = phi ptr [ %.pre10, %._crit_edge.split.split.us ], [ %54, %.lr.ph ] + %59 = phi ptr [ %.pre, %._crit_edge.split.split.us ], [ %55, %.lr.ph ] + %60 = getelementptr inbounds i8, ptr %59, i64 8 + store ptr %60, ptr %34, align 8 + store i32 1, ptr %46, align 8 + %.not = icmp eq ptr %60, %58 br i1 %.not, label %.critedge.loopexit, label %.lr.ph, !llvm.loop !25 _ZN9QtPrivate17QForeachContainerI5QListIP6GLAreaEED2Ev.exit: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i.i, %_ZN9QtPrivate8RefCount5derefEv.exit.i.i, %.critedge, %1 diff --git a/bench/meshlab/optimized/filter_mesh_booleans.cpp.ll b/bench/meshlab/optimized/filter_mesh_booleans.cpp.ll index 0fdc704be85..59071801804 100644 --- a/bench/meshlab/optimized/filter_mesh_booleans.cpp.ll +++ b/bench/meshlab/optimized/filter_mesh_booleans.cpp.ll @@ -93596,49 +93596,50 @@ _ZN5boost7movelib15detail_adaptive19swap_and_update_keyIPN4CGAL8internal11CC_ite ._crit_edge.us.us.preheader: ; preds = %.lr.ph130 %71 = add i64 %50, 2305843009213693951 %72 = mul i64 %2, %71 - %73 = add i64 %72, %3 - %74 = shl i64 %73, 3 - %scevgep = getelementptr i8, ptr %1, i64 %74 + %73 = shl i64 %72, 3 + %74 = shl i64 %3, 3 + %75 = getelementptr i8, ptr %1, i64 %73 + %scevgep = getelementptr i8, ptr %75, i64 %74 br label %._crit_edge131 -.lr.ph130.split: ; preds = %.lr.ph130, %84 - %.079127 = phi ptr [ %87, %84 ], [ %0, %.lr.ph130 ] - %.081126 = phi ptr [ %86, %84 ], [ %11, %.lr.ph130 ] - %.082125 = phi ptr [ %85, %84 ], [ %1, %.lr.ph130 ] - %75 = load ptr, ptr %.079127, align 8 - %76 = load ptr, ptr %.1109, align 8 - %77 = icmp ult ptr %75, %76 - %78 = load i8, ptr %8, align 1 - %79 = trunc i8 %78 to i1 - %80 = xor i1 %77, %79 - br i1 %80, label %81, label %84 +.lr.ph130.split: ; preds = %.lr.ph130, %85 + %.079127 = phi ptr [ %88, %85 ], [ %0, %.lr.ph130 ] + %.081126 = phi ptr [ %87, %85 ], [ %11, %.lr.ph130 ] + %.082125 = phi ptr [ %86, %85 ], [ %1, %.lr.ph130 ] + %76 = load ptr, ptr %.079127, align 8 + %77 = load ptr, ptr %.1109, align 8 + %78 = icmp ult ptr %76, %77 + %79 = load i8, ptr %8, align 1 + %80 = trunc i8 %79 to i1 + %81 = xor i1 %78, %80 + br i1 %81, label %82, label %85 -81: ; preds = %.lr.ph130.split - %82 = getelementptr inbounds %"class.CGAL::internal::CC_iterator.937", ptr %.081126, i64 %2 - %83 = call noundef ptr @_ZN5boost7movelib15detail_adaptive24partial_merge_bufferlessIPN4CGAL8internal11CC_iteratorINS3_17Compact_containerINS3_37Constrained_triangulation_face_base_2INS3_5EpickENS3_25Triangulation_face_base_2IS8_NS3_28Triangulation_ds_face_base_2INS3_30Triangulation_data_structure_2INS3_27Triangulation_vertex_base_2IS8_NS3_30Triangulation_ds_vertex_base_2IvEEEENS7_IS8_NS9_IS8_NSA_IvEEEEEEEEEEEEEENS3_7DefaultESN_SN_EELb0EEENS_9container3dtl23flat_tree_value_compareISt4lessISP_ESP_NS_11move_detail8identityISP_EEEEEET_S10_S10_S10_PbT0_(ptr noundef %.082125, ptr noundef %.081126, ptr noundef %82, ptr noundef nonnull %8) - br label %84 +82: ; preds = %.lr.ph130.split + %83 = getelementptr inbounds %"class.CGAL::internal::CC_iterator.937", ptr %.081126, i64 %2 + %84 = call noundef ptr @_ZN5boost7movelib15detail_adaptive24partial_merge_bufferlessIPN4CGAL8internal11CC_iteratorINS3_17Compact_containerINS3_37Constrained_triangulation_face_base_2INS3_5EpickENS3_25Triangulation_face_base_2IS8_NS3_28Triangulation_ds_face_base_2INS3_30Triangulation_data_structure_2INS3_27Triangulation_vertex_base_2IS8_NS3_30Triangulation_ds_vertex_base_2IvEEEENS7_IS8_NS9_IS8_NSA_IvEEEEEEEEEEEEEENS3_7DefaultESN_SN_EELb0EEENS_9container3dtl23flat_tree_value_compareISt4lessISP_ESP_NS_11move_detail8identityISP_EEEEEET_S10_S10_S10_PbT0_(ptr noundef %.082125, ptr noundef %.081126, ptr noundef %83, ptr noundef nonnull %8) + br label %85 -84: ; preds = %.lr.ph130.split, %81 - %85 = phi ptr [ %83, %81 ], [ %.081126, %.lr.ph130.split ] - %86 = getelementptr inbounds %"class.CGAL::internal::CC_iterator.937", ptr %.081126, i64 %2 - %87 = getelementptr inbounds i8, ptr %.079127, i64 8 - %.not87 = icmp eq ptr %87, %68 +85: ; preds = %.lr.ph130.split, %82 + %86 = phi ptr [ %84, %82 ], [ %.081126, %.lr.ph130.split ] + %87 = getelementptr inbounds %"class.CGAL::internal::CC_iterator.937", ptr %.081126, i64 %2 + %88 = getelementptr inbounds i8, ptr %.079127, i64 8 + %.not87 = icmp eq ptr %88, %68 br i1 %.not87, label %._crit_edge131.loopexit138, label %.lr.ph130.split, !llvm.loop !2129 -._crit_edge131.loopexit138: ; preds = %84 +._crit_edge131.loopexit138: ; preds = %85 %.pre = load i8, ptr %8, align 1 - %88 = trunc i8 %.pre to i1 - %89 = select i1 %88, ptr %85, ptr %86 + %89 = trunc i8 %.pre to i1 + %90 = select i1 %89, ptr %86, ptr %87 br label %._crit_edge131 ._crit_edge131: ; preds = %._crit_edge122.thread, %._crit_edge131.loopexit138, %._crit_edge.us.us.preheader, %._crit_edge122 - %90 = phi ptr [ %1, %._crit_edge122 ], [ %scevgep, %._crit_edge.us.us.preheader ], [ %89, %._crit_edge131.loopexit138 ], [ %1, %._crit_edge122.thread ] - %91 = getelementptr inbounds %"class.CGAL::internal::CC_iterator.937", ptr %12, i64 %6 - %92 = ptrtoint ptr %12 to i64 - %93 = ptrtoint ptr %90 to i64 - %94 = sub i64 %92, %93 - %95 = ashr exact i64 %94, 3 - call void @_ZN5boost7movelib33merge_bufferless_ONlogN_recursiveIPN4CGAL8internal11CC_iteratorINS2_17Compact_containerINS2_37Constrained_triangulation_face_base_2INS2_5EpickENS2_25Triangulation_face_base_2IS7_NS2_28Triangulation_ds_face_base_2INS2_30Triangulation_data_structure_2INS2_27Triangulation_vertex_base_2IS7_NS2_30Triangulation_ds_vertex_base_2IvEEEENS6_IS7_NS8_IS7_NS9_IvEEEEEEEEEEEEEENS2_7DefaultESM_SM_EELb0EEENS_9container3dtl23flat_tree_value_compareISt4lessISO_ESO_NS_11move_detail8identityISO_EEEEEEvT_SZ_SZ_NS0_9iter_sizeISZ_E4typeES12_T0_(ptr noundef %90, ptr noundef %12, ptr noundef %91, i64 noundef %95, i64 noundef %6) + %91 = phi ptr [ %1, %._crit_edge122 ], [ %scevgep, %._crit_edge.us.us.preheader ], [ %90, %._crit_edge131.loopexit138 ], [ %1, %._crit_edge122.thread ] + %92 = getelementptr inbounds %"class.CGAL::internal::CC_iterator.937", ptr %12, i64 %6 + %93 = ptrtoint ptr %12 to i64 + %94 = ptrtoint ptr %91 to i64 + %95 = sub i64 %93, %94 + %96 = ashr exact i64 %95, 3 + call void @_ZN5boost7movelib33merge_bufferless_ONlogN_recursiveIPN4CGAL8internal11CC_iteratorINS2_17Compact_containerINS2_37Constrained_triangulation_face_base_2INS2_5EpickENS2_25Triangulation_face_base_2IS7_NS2_28Triangulation_ds_face_base_2INS2_30Triangulation_data_structure_2INS2_27Triangulation_vertex_base_2IS7_NS2_30Triangulation_ds_vertex_base_2IvEEEENS6_IS7_NS8_IS7_NS9_IvEEEEEEEEEEEEEENS2_7DefaultESM_SM_EELb0EEENS_9container3dtl23flat_tree_value_compareISt4lessISO_ESO_NS_11move_detail8identityISO_EEEEEEvT_SZ_SZ_NS0_9iter_sizeISZ_E4typeES12_T0_(ptr noundef %91, ptr noundef %12, ptr noundef %92, i64 noundef %96, i64 noundef %6) ret void } @@ -252702,49 +252703,50 @@ _ZN5boost7movelib15detail_adaptive19swap_and_update_keyIPN4CGAL8internal11CC_ite ._crit_edge.us.us.preheader: ; preds = %.lr.ph130 %71 = add i64 %50, 2305843009213693951 %72 = mul i64 %2, %71 - %73 = add i64 %72, %3 - %74 = shl i64 %73, 3 - %scevgep = getelementptr i8, ptr %1, i64 %74 + %73 = shl i64 %72, 3 + %74 = shl i64 %3, 3 + %75 = getelementptr i8, ptr %1, i64 %73 + %scevgep = getelementptr i8, ptr %75, i64 %74 br label %._crit_edge131 -.lr.ph130.split: ; preds = %.lr.ph130, %84 - %.079127 = phi ptr [ %87, %84 ], [ %0, %.lr.ph130 ] - %.081126 = phi ptr [ %86, %84 ], [ %11, %.lr.ph130 ] - %.082125 = phi ptr [ %85, %84 ], [ %1, %.lr.ph130 ] - %75 = load ptr, ptr %.079127, align 8 - %76 = load ptr, ptr %.1109, align 8 - %77 = icmp ult ptr %75, %76 - %78 = load i8, ptr %8, align 1 - %79 = trunc i8 %78 to i1 - %80 = xor i1 %77, %79 - br i1 %80, label %81, label %84 +.lr.ph130.split: ; preds = %.lr.ph130, %85 + %.079127 = phi ptr [ %88, %85 ], [ %0, %.lr.ph130 ] + %.081126 = phi ptr [ %87, %85 ], [ %11, %.lr.ph130 ] + %.082125 = phi ptr [ %86, %85 ], [ %1, %.lr.ph130 ] + %76 = load ptr, ptr %.079127, align 8 + %77 = load ptr, ptr %.1109, align 8 + %78 = icmp ult ptr %76, %77 + %79 = load i8, ptr %8, align 1 + %80 = trunc i8 %79 to i1 + %81 = xor i1 %78, %80 + br i1 %81, label %82, label %85 -81: ; preds = %.lr.ph130.split - %82 = getelementptr inbounds %"class.CGAL::internal::CC_iterator.2047", ptr %.081126, i64 %2 - %83 = call noundef ptr @_ZN5boost7movelib15detail_adaptive24partial_merge_bufferlessIPN4CGAL8internal11CC_iteratorINS3_17Compact_containerINS3_37Constrained_triangulation_face_base_2INS3_5EpeckENS3_25Triangulation_face_base_2IS8_NS3_28Triangulation_ds_face_base_2INS3_30Triangulation_data_structure_2INS3_27Triangulation_vertex_base_2IS8_NS3_30Triangulation_ds_vertex_base_2IvEEEENS7_IS8_NS9_IS8_NSA_IvEEEEEEEEEEEEEENS3_7DefaultESN_SN_EELb0EEENS_9container3dtl23flat_tree_value_compareISt4lessISP_ESP_NS_11move_detail8identityISP_EEEEEET_S10_S10_S10_PbT0_(ptr noundef %.082125, ptr noundef %.081126, ptr noundef %82, ptr noundef nonnull %8) - br label %84 +82: ; preds = %.lr.ph130.split + %83 = getelementptr inbounds %"class.CGAL::internal::CC_iterator.2047", ptr %.081126, i64 %2 + %84 = call noundef ptr @_ZN5boost7movelib15detail_adaptive24partial_merge_bufferlessIPN4CGAL8internal11CC_iteratorINS3_17Compact_containerINS3_37Constrained_triangulation_face_base_2INS3_5EpeckENS3_25Triangulation_face_base_2IS8_NS3_28Triangulation_ds_face_base_2INS3_30Triangulation_data_structure_2INS3_27Triangulation_vertex_base_2IS8_NS3_30Triangulation_ds_vertex_base_2IvEEEENS7_IS8_NS9_IS8_NSA_IvEEEEEEEEEEEEEENS3_7DefaultESN_SN_EELb0EEENS_9container3dtl23flat_tree_value_compareISt4lessISP_ESP_NS_11move_detail8identityISP_EEEEEET_S10_S10_S10_PbT0_(ptr noundef %.082125, ptr noundef %.081126, ptr noundef %83, ptr noundef nonnull %8) + br label %85 -84: ; preds = %.lr.ph130.split, %81 - %85 = phi ptr [ %83, %81 ], [ %.081126, %.lr.ph130.split ] - %86 = getelementptr inbounds %"class.CGAL::internal::CC_iterator.2047", ptr %.081126, i64 %2 - %87 = getelementptr inbounds i8, ptr %.079127, i64 8 - %.not87 = icmp eq ptr %87, %68 +85: ; preds = %.lr.ph130.split, %82 + %86 = phi ptr [ %84, %82 ], [ %.081126, %.lr.ph130.split ] + %87 = getelementptr inbounds %"class.CGAL::internal::CC_iterator.2047", ptr %.081126, i64 %2 + %88 = getelementptr inbounds i8, ptr %.079127, i64 8 + %.not87 = icmp eq ptr %88, %68 br i1 %.not87, label %._crit_edge131.loopexit138, label %.lr.ph130.split, !llvm.loop !7859 -._crit_edge131.loopexit138: ; preds = %84 +._crit_edge131.loopexit138: ; preds = %85 %.pre = load i8, ptr %8, align 1 - %88 = trunc i8 %.pre to i1 - %89 = select i1 %88, ptr %85, ptr %86 + %89 = trunc i8 %.pre to i1 + %90 = select i1 %89, ptr %86, ptr %87 br label %._crit_edge131 ._crit_edge131: ; preds = %._crit_edge122.thread, %._crit_edge131.loopexit138, %._crit_edge.us.us.preheader, %._crit_edge122 - %90 = phi ptr [ %1, %._crit_edge122 ], [ %scevgep, %._crit_edge.us.us.preheader ], [ %89, %._crit_edge131.loopexit138 ], [ %1, %._crit_edge122.thread ] - %91 = getelementptr inbounds %"class.CGAL::internal::CC_iterator.2047", ptr %12, i64 %6 - %92 = ptrtoint ptr %12 to i64 - %93 = ptrtoint ptr %90 to i64 - %94 = sub i64 %92, %93 - %95 = ashr exact i64 %94, 3 - call void @_ZN5boost7movelib33merge_bufferless_ONlogN_recursiveIPN4CGAL8internal11CC_iteratorINS2_17Compact_containerINS2_37Constrained_triangulation_face_base_2INS2_5EpeckENS2_25Triangulation_face_base_2IS7_NS2_28Triangulation_ds_face_base_2INS2_30Triangulation_data_structure_2INS2_27Triangulation_vertex_base_2IS7_NS2_30Triangulation_ds_vertex_base_2IvEEEENS6_IS7_NS8_IS7_NS9_IvEEEEEEEEEEEEEENS2_7DefaultESM_SM_EELb0EEENS_9container3dtl23flat_tree_value_compareISt4lessISO_ESO_NS_11move_detail8identityISO_EEEEEEvT_SZ_SZ_NS0_9iter_sizeISZ_E4typeES12_T0_(ptr noundef %90, ptr noundef %12, ptr noundef %91, i64 noundef %95, i64 noundef %6) + %91 = phi ptr [ %1, %._crit_edge122 ], [ %scevgep, %._crit_edge.us.us.preheader ], [ %90, %._crit_edge131.loopexit138 ], [ %1, %._crit_edge122.thread ] + %92 = getelementptr inbounds %"class.CGAL::internal::CC_iterator.2047", ptr %12, i64 %6 + %93 = ptrtoint ptr %12 to i64 + %94 = ptrtoint ptr %91 to i64 + %95 = sub i64 %93, %94 + %96 = ashr exact i64 %95, 3 + call void @_ZN5boost7movelib33merge_bufferless_ONlogN_recursiveIPN4CGAL8internal11CC_iteratorINS2_17Compact_containerINS2_37Constrained_triangulation_face_base_2INS2_5EpeckENS2_25Triangulation_face_base_2IS7_NS2_28Triangulation_ds_face_base_2INS2_30Triangulation_data_structure_2INS2_27Triangulation_vertex_base_2IS7_NS2_30Triangulation_ds_vertex_base_2IvEEEENS6_IS7_NS8_IS7_NS9_IvEEEEEEEEEEEEEENS2_7DefaultESM_SM_EELb0EEENS_9container3dtl23flat_tree_value_compareISt4lessISO_ESO_NS_11move_detail8identityISO_EEEEEEvT_SZ_SZ_NS0_9iter_sizeISZ_E4typeES12_T0_(ptr noundef %91, ptr noundef %12, ptr noundef %92, i64 noundef %96, i64 noundef %6) ret void } diff --git a/bench/meshlab/optimized/filter_parametrization.cpp.ll b/bench/meshlab/optimized/filter_parametrization.cpp.ll index 5302238fd3e..5535070c31a 100644 --- a/bench/meshlab/optimized/filter_parametrization.cpp.ll +++ b/bench/meshlab/optimized/filter_parametrization.cpp.ll @@ -49629,8 +49629,8 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS .lr.ph.preheader: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit %41 = shl nsw i64 %28, 3 %scevgep = getelementptr i8, ptr %24, i64 %41 - %42 = sub nsw i64 %.sink.i, %28 - %43 = shl nsw i64 %42, 3 + %42 = shl nsw i64 %.sink.i, 3 + %43 = sub nsw i64 %42, %41 call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %43, i1 false) %.pre = load i64, ptr %7, align 8 br label %._crit_edge @@ -65250,11 +65250,11 @@ common.resume: ; preds = %.body, %.body.i %19 = icmp eq i64 %18, 0 %.pre = load ptr, ptr %5, align 8 %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre, i64 24 - %.pre147 = load ptr, ptr %.phi.trans.insert, align 8 + %.pre150 = load ptr, ptr %.phi.trans.insert, align 8 br i1 %19, label %._crit_edge, label %20 20: ; preds = %12 - %21 = getelementptr inbounds i32, ptr %.pre147, i64 %18 + %21 = getelementptr inbounds i32, ptr %.pre150, i64 %18 %22 = load i32, ptr %21, align 4 br label %._crit_edge @@ -65262,14 +65262,14 @@ common.resume: ; preds = %.body, %.body.i %23 = phi i32 [ %22, %20 ], [ 0, %12 ] %24 = sext i32 %23 to i64 %25 = getelementptr inbounds i8, ptr %.pre, i64 24 - %26 = getelementptr i32, ptr %.pre147, i64 %18 + %26 = getelementptr i32, ptr %.pre150, i64 %18 %27 = getelementptr i8, ptr %26, i64 4 %28 = load i32, ptr %27, align 4 %29 = sext i32 %28 to i64 %30 = sub nsw i64 %29, %24 %31 = getelementptr inbounds i8, ptr %.pre, i64 8 %32 = load i64, ptr %31, align 8 - %33 = getelementptr inbounds i32, ptr %.pre147, i64 %32 + %33 = getelementptr inbounds i32, ptr %.pre150, i64 %32 %34 = load i32, ptr %33, align 4 %35 = sext i32 %34 to i64 %36 = sub nsw i64 %35, %29 @@ -65346,13 +65346,13 @@ _ZN5Eigen8internal12scoped_arrayIiED2Ev.exit8.i: ; preds = %.noexc107 73: ; preds = %67 %74 = getelementptr inbounds i8, ptr %.pre, i64 40 %75 = load ptr, ptr %74, align 8 - %.idx131 = shl nsw i64 %24, 3 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %.pre.i111, ptr align 8 %75, i64 %.idx131, i1 false) + %.idx134 = shl nsw i64 %24, 3 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %.pre.i111, ptr align 8 %75, i64 %.idx134, i1 false) %76 = getelementptr inbounds i8, ptr %4, i64 8 %77 = getelementptr inbounds i8, ptr %.pre, i64 48 %78 = load ptr, ptr %77, align 8 - %.idx133 = shl nsw i64 %24, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %69, ptr align 4 %78, i64 %.idx133, i1 false) + %.idx136 = shl nsw i64 %24, 2 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %69, ptr align 4 %78, i64 %.idx136, i1 false) br label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit _ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %.thread, %73 @@ -65365,14 +65365,14 @@ _ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit94: ; preds = %_ZN5Eigen8inte %81 = load ptr, ptr %80, align 8 %82 = getelementptr inbounds double, ptr %81, i64 %49 %83 = getelementptr inbounds double, ptr %.pre.i111, i64 %24 - %.idx135 = shl nsw i64 %16, 3 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %83, ptr align 8 %82, i64 %.idx135, i1 false) + %.idx138 = shl nsw i64 %16, 3 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %83, ptr align 8 %82, i64 %.idx138, i1 false) %84 = getelementptr inbounds i8, ptr %3, i64 40 %85 = load ptr, ptr %84, align 8 %86 = getelementptr inbounds i32, ptr %85, i64 %49 %87 = getelementptr inbounds i32, ptr %69, i64 %24 - %.idx137 = shl nsw i64 %16, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %87, ptr align 4 %86, i64 %.idx137, i1 false) + %.idx140 = shl nsw i64 %16, 2 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %87, ptr align 4 %86, i64 %.idx140, i1 false) br label %88 88: ; preds = %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, %_ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit94 @@ -65382,20 +65382,22 @@ _ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit94: ; preds = %_ZN5Eigen8inte 91: ; preds = %88 %92 = load ptr, ptr %89, align 8 - %.idx139 = shl nsw i64 %29, 3 - %93 = getelementptr inbounds i8, ptr %92, i64 %.idx139 + %.idx142 = shl nsw i64 %29, 3 + %93 = getelementptr inbounds i8, ptr %92, i64 %.idx142 + %.idx141 = shl nsw i64 %35, 3 %94 = getelementptr inbounds double, ptr %.pre.i111, i64 %24 %95 = getelementptr inbounds double, ptr %94, i64 %16 - %gepdiff140 = shl nsw i64 %36, 3 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %95, ptr align 8 %93, i64 %gepdiff140, i1 false) + %gepdiff143 = sub nsw i64 %.idx141, %.idx142 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %95, ptr align 8 %93, i64 %gepdiff143, i1 false) %96 = getelementptr inbounds i8, ptr %6, i64 48 %97 = load ptr, ptr %96, align 8 - %.idx142 = shl nsw i64 %29, 2 - %98 = getelementptr inbounds i8, ptr %97, i64 %.idx142 + %.idx145 = shl nsw i64 %29, 2 + %98 = getelementptr inbounds i8, ptr %97, i64 %.idx145 + %.idx144 = shl nsw i64 %35, 2 %99 = getelementptr inbounds i32, ptr %69, i64 %24 %100 = getelementptr inbounds i32, ptr %99, i64 %16 - %gepdiff143 = shl nsw i64 %36, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %100, ptr align 4 %98, i64 %gepdiff143, i1 false) + %gepdiff146 = sub nsw i64 %.idx144, %.idx145 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %100, ptr align 4 %98, i64 %gepdiff146, i1 false) br label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit97 _ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit97: ; preds = %88, %91 @@ -65515,7 +65517,7 @@ _ZN5Eigen8internal12scoped_arrayIiED2Ev.exit8.i116: ; preds = %122, %_ZN5Eigen8i 143: ; preds = %44 %.not = icmp ne i64 %30, %16 %or.cond.not = select i1 %39, i1 %.not, i1 false - br i1 %or.cond.not, label %144, label %.thread151 + br i1 %or.cond.not, label %144, label %.thread154 144: ; preds = %143 %145 = getelementptr inbounds i8, ptr %6, i64 40 @@ -65547,68 +65549,70 @@ _ZN5Eigen8internal12scoped_arrayIiED2Ev.exit8.i116: ; preds = %122, %_ZN5Eigen8i %156 = getelementptr inbounds i8, ptr %6, i64 56 store i64 %147, ptr %156, align 8 %157 = icmp eq i32 %34, %28 - br i1 %157, label %.thread151, label %158 + br i1 %157, label %.thread154, label %158 158: ; preds = %155 %159 = load ptr, ptr %145, align 8 %.idx124 = shl nsw i64 %29, 3 %160 = getelementptr inbounds i8, ptr %159, i64 %.idx124 + %.idx = shl nsw i64 %35, 3 %161 = getelementptr inbounds double, ptr %159, i64 %24 %162 = getelementptr inbounds double, ptr %161, i64 %16 - %gepdiff = shl nsw i64 %36, 3 + %gepdiff = sub nsw i64 %.idx, %.idx124 call void @llvm.memmove.p0.p0.i64(ptr align 8 %162, ptr align 8 %160, i64 %gepdiff, i1 false) %163 = getelementptr inbounds i8, ptr %6, i64 48 %164 = load ptr, ptr %163, align 8 - %.idx125 = shl nsw i64 %29, 2 - %165 = getelementptr inbounds i8, ptr %164, i64 %.idx125 + %.idx126 = shl nsw i64 %29, 2 + %165 = getelementptr inbounds i8, ptr %164, i64 %.idx126 + %.idx125 = shl nsw i64 %35, 2 %166 = getelementptr inbounds i32, ptr %164, i64 %24 %167 = getelementptr inbounds i32, ptr %166, i64 %16 - %gepdiff126 = shl nsw i64 %36, 2 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %167, ptr align 4 %165, i64 %gepdiff126, i1 false) - br label %.thread151 + %gepdiff127 = sub nsw i64 %.idx125, %.idx126 + call void @llvm.memmove.p0.p0.i64(ptr align 4 %167, ptr align 4 %165, i64 %gepdiff127, i1 false) + br label %.thread154 -.thread151: ; preds = %155, %143, %158 - %cond144 = icmp eq i32 %15, 0 - br i1 %cond144, label %181, label %168 +.thread154: ; preds = %155, %143, %158 + %cond147 = icmp eq i32 %15, 0 + br i1 %cond147, label %181, label %168 -168: ; preds = %.thread151 +168: ; preds = %.thread154 %169 = getelementptr inbounds i8, ptr %3, i64 48 %170 = load ptr, ptr %169, align 8 %171 = getelementptr inbounds double, ptr %170, i64 %49 %172 = getelementptr inbounds i8, ptr %6, i64 40 %173 = load ptr, ptr %172, align 8 %174 = getelementptr inbounds double, ptr %173, i64 %24 - %.idx = shl nsw i64 %16, 3 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %174, ptr align 8 %171, i64 %.idx, i1 false) + %.idx130 = shl nsw i64 %16, 3 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %174, ptr align 8 %171, i64 %.idx130, i1 false) %175 = getelementptr inbounds i8, ptr %3, i64 40 %176 = load ptr, ptr %175, align 8 %177 = getelementptr inbounds i32, ptr %176, i64 %49 %178 = getelementptr inbounds i8, ptr %6, i64 48 %179 = load ptr, ptr %178, align 8 %180 = getelementptr inbounds i32, ptr %179, i64 %24 - %.idx129 = shl nsw i64 %16, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %180, ptr align 4 %177, i64 %.idx129, i1 false) + %.idx132 = shl nsw i64 %16, 2 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %180, ptr align 4 %177, i64 %.idx132, i1 false) br label %181 -181: ; preds = %.thread151, %136, %138, %168 - %.086 = phi i1 [ true, %136 ], [ true, %138 ], [ %or.cond.not, %168 ], [ %or.cond.not, %.thread151 ] +181: ; preds = %.thread154, %136, %138, %168 + %.086 = phi i1 [ true, %136 ], [ true, %138 ], [ %or.cond.not, %168 ], [ %or.cond.not, %.thread154 ] %182 = load ptr, ptr %5, align 8 %183 = getelementptr inbounds i8, ptr %182, i64 32 %184 = load ptr, ptr %183, align 8 %185 = icmp eq ptr %184, null - %.pre149 = load i64, ptr %17, align 8 + %.pre152 = load i64, ptr %17, align 8 br i1 %185, label %190, label %186 186: ; preds = %181 %187 = getelementptr inbounds i8, ptr %6, i64 32 %188 = load ptr, ptr %187, align 8 - %189 = getelementptr inbounds i32, ptr %188, i64 %.pre149 + %189 = getelementptr inbounds i32, ptr %188, i64 %.pre152 store i32 %15, ptr %189, align 4 - %.pre148 = load i64, ptr %17, align 8 + %.pre151 = load i64, ptr %17, align 8 br label %190 190: ; preds = %186, %181 - %191 = phi i64 [ %.pre148, %186 ], [ %.pre149, %181 ] + %191 = phi i64 [ %.pre151, %186 ], [ %.pre152, %181 ] %192 = getelementptr inbounds i8, ptr %6, i64 24 %193 = load ptr, ptr %192, align 8 %194 = getelementptr inbounds i32, ptr %193, i64 %191 @@ -65621,12 +65625,12 @@ _ZN5Eigen8internal12scoped_arrayIiED2Ev.exit8.i116: ; preds = %122, %_ZN5Eigen8i %198 = load i64, ptr %17, align 8 %199 = getelementptr inbounds i8, ptr %6, i64 8 %200 = load i64, ptr %199, align 8 - %.not91.not145 = icmp slt i64 %198, %200 - br i1 %.not91.not145, label %.lr.ph, label %.loopexit + %.not91.not148 = icmp slt i64 %198, %200 + br i1 %.not91.not148, label %.lr.ph, label %.loopexit .lr.ph: ; preds = %195, %.lr.ph - %.0.in146 = phi i64 [ %.0, %.lr.ph ], [ %198, %195 ] - %.0 = add nsw i64 %.0.in146, 1 + %.0.in149 = phi i64 [ %.0, %.lr.ph ], [ %198, %195 ] + %.0 = add nsw i64 %.0.in149, 1 %201 = load ptr, ptr %192, align 8 %202 = getelementptr inbounds i32, ptr %201, i64 %.0 %203 = load i32, ptr %202, align 4 @@ -67216,8 +67220,8 @@ _ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit: ; pred %52 = shl i64 %50, 2 %scevgep = getelementptr i8, ptr %.sroa.045.154, i64 %52 %scevgep64 = getelementptr i8, ptr %31, i64 %52 - %53 = sub i64 %33, %50 - %54 = shl i64 %53, 2 + %53 = shl i64 %33, 2 + %54 = sub i64 %53, %52 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep, ptr align 4 %scevgep64, i64 %54, i1 false) br label %_ZN5Eigen17PermutationMatrixILin1ELin1EiEaSERKS1_.exit diff --git a/bench/meshlab/optimized/render_raster.cpp.ll b/bench/meshlab/optimized/render_raster.cpp.ll index 9effc798add..51f33bcbdf7 100644 --- a/bench/meshlab/optimized/render_raster.cpp.ll +++ b/bench/meshlab/optimized/render_raster.cpp.ll @@ -244,26 +244,26 @@ define void @_ZN19MeshLabRenderRasterC2ERKS_(ptr noundef nonnull align 8 derefer %15 = getelementptr inbounds i8, ptr %0, i64 144 br label %16 -16: ; preds = %.lr.ph, %71 - %.sroa.09.014 = phi ptr [ %13, %.lr.ph ], [ %72, %71 ] +16: ; preds = %.lr.ph, %70 + %.sroa.09.014 = phi ptr [ %13, %.lr.ph ], [ %71, %70 ] %17 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #16 - to label %18 unwind label %67 + to label %18 unwind label %66 18: ; preds = %16 %19 = load ptr, ptr %.sroa.09.014, align 8 invoke void @_ZN11RasterPlaneC1ERKS_(ptr noundef nonnull align 8 dereferenceable(48) %17, ptr noundef nonnull align 8 dereferenceable(48) %19) - to label %20 unwind label %69 + to label %20 unwind label %68 20: ; preds = %18 store ptr %17, ptr %3, align 8 invoke void @_ZN5QListIP11RasterPlaneE6appendERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %3) - to label %21 unwind label %67 + to label %21 unwind label %66 21: ; preds = %20 %22 = load ptr, ptr %14, align 8 %23 = load ptr, ptr %.sroa.09.014, align 8 %24 = icmp eq ptr %22, %23 - br i1 %24, label %25, label %71 + br i1 %24, label %25, label %70 25: ; preds = %21 %26 = load ptr, ptr %4, align 8 @@ -275,7 +275,7 @@ define void @_ZN19MeshLabRenderRasterC2ERKS_(ptr noundef nonnull align 8 derefer %32 = add i32 %28, %31 %33 = load atomic i32, ptr %26 monotonic, align 4 %34 = icmp ugt i32 %33, 1 - br i1 %34, label %35, label %57 + br i1 %34, label %35, label %56 35: ; preds = %25 %36 = getelementptr inbounds i8, ptr %26, i64 4 @@ -284,7 +284,7 @@ define void @_ZN19MeshLabRenderRasterC2ERKS_(ptr noundef nonnull align 8 derefer %39 = sext i32 %30 to i64 %40 = getelementptr inbounds ptr, ptr %38, i64 %39 %41 = invoke noundef ptr @_ZN9QListData6detachEi(ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef %37) - to label %.noexc unwind label %67 + to label %.noexc unwind label %66 .noexc: ; preds = %35 %42 = load ptr, ptr %4, align 8 @@ -301,71 +301,71 @@ define void @_ZN19MeshLabRenderRasterC2ERKS_(ptr noundef nonnull align 8 derefer %49 = getelementptr inbounds i8, ptr %42, i64 12 %50 = load i32, ptr %49, align 4 %51 = sext i32 %50 to i64 - %52 = sub nsw i64 %51, %46 - %53 = icmp sgt i64 %52, 0 - br i1 %53, label %54, label %_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i + %.idx.i.i.i.i = shl nsw i64 %51, 3 + %gepdiff.i.i.i.i = sub nsw i64 %.idx.i.i.i.i, %.idx7.i.i.i.i + %52 = icmp sgt i64 %gepdiff.i.i.i.i, 0 + br i1 %52, label %53, label %_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i -54: ; preds = %48 - %gepdiff.i.i.i.i = shl nuw nsw i64 %52, 3 +53: ; preds = %48 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %47, ptr nonnull align 8 %40, i64 %gepdiff.i.i.i.i, i1 false) br label %_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i -_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i: ; preds = %54, %48, %.noexc - %55 = load atomic i32, ptr %41 monotonic, align 4 - switch i32 %55, label %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i [ +_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i: ; preds = %53, %48, %.noexc + %54 = load atomic i32, ptr %41 monotonic, align 4 + switch i32 %54, label %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i [ i32 0, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i - i32 -1, label %57 + i32 -1, label %56 ] _ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i: ; preds = %_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i - %56 = atomicrmw sub ptr %41, i32 1 seq_cst, align 4 - %.not.i.i.i.i = icmp eq i32 %56, 1 - br i1 %.not.i.i.i.i, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i, label %57 + %55 = atomicrmw sub ptr %41, i32 1 seq_cst, align 4 + %.not.i.i.i.i = icmp eq i32 %55, 1 + br i1 %.not.i.i.i.i, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i, label %56 _ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i, %_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i invoke void @_ZN9QListData7disposeEPNS_4DataE(ptr noundef nonnull %41) - to label %57 unwind label %67 - -57: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i, %_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i, %25, %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i - %58 = load ptr, ptr %4, align 8 - %59 = getelementptr inbounds i8, ptr %58, i64 16 - %60 = getelementptr inbounds i8, ptr %58, i64 8 - %61 = load i32, ptr %60, align 8 - %62 = sext i32 %61 to i64 - %63 = getelementptr inbounds ptr, ptr %59, i64 %62 - %64 = sext i32 %32 to i64 - %65 = getelementptr inbounds ptr, ptr %63, i64 %64 - %66 = load ptr, ptr %65, align 8 - store ptr %66, ptr %15, align 8 - br label %71 - -67: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i, %35, %20, %16 - %68 = landingpad { ptr, i32 } + to label %56 unwind label %66 + +56: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i, %_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i, %25, %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i + %57 = load ptr, ptr %4, align 8 + %58 = getelementptr inbounds i8, ptr %57, i64 16 + %59 = getelementptr inbounds i8, ptr %57, i64 8 + %60 = load i32, ptr %59, align 8 + %61 = sext i32 %60 to i64 + %62 = getelementptr inbounds ptr, ptr %58, i64 %61 + %63 = sext i32 %32 to i64 + %64 = getelementptr inbounds ptr, ptr %62, i64 %63 + %65 = load ptr, ptr %64, align 8 + store ptr %65, ptr %15, align 8 + br label %70 + +66: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i, %35, %20, %16 + %67 = landingpad { ptr, i32 } cleanup - br label %79 + br label %78 -69: ; preds = %18 - %70 = landingpad { ptr, i32 } +68: ; preds = %18 + %69 = landingpad { ptr, i32 } cleanup call void @_ZdlPv(ptr noundef nonnull %17) #17 - br label %79 - -71: ; preds = %21, %57 - %72 = getelementptr inbounds i8, ptr %.sroa.09.014, i64 8 - %73 = load ptr, ptr %5, align 8, !noalias !9 - %74 = getelementptr inbounds i8, ptr %73, i64 16 - %75 = getelementptr inbounds i8, ptr %73, i64 12 - %76 = load i32, ptr %75, align 4, !noalias !9 - %77 = sext i32 %76 to i64 - %78 = getelementptr inbounds ptr, ptr %74, i64 %77 - %.not = icmp eq ptr %72, %78 + br label %78 + +70: ; preds = %21, %56 + %71 = getelementptr inbounds i8, ptr %.sroa.09.014, i64 8 + %72 = load ptr, ptr %5, align 8, !noalias !9 + %73 = getelementptr inbounds i8, ptr %72, i64 16 + %74 = getelementptr inbounds i8, ptr %72, i64 12 + %75 = load i32, ptr %74, align 4, !noalias !9 + %76 = sext i32 %75 to i64 + %77 = getelementptr inbounds ptr, ptr %73, i64 %76 + %.not = icmp eq ptr %71, %77 br i1 %.not, label %._crit_edge, label %16, !llvm.loop !12 -._crit_edge: ; preds = %71, %2 +._crit_edge: ; preds = %70, %2 ret void -79: ; preds = %69, %67 - %.pn = phi { ptr, i32 } [ %68, %67 ], [ %70, %69 ] +78: ; preds = %68, %66 + %.pn = phi { ptr, i32 } [ %67, %66 ], [ %69, %68 ] call void @_ZN5QListIP11RasterPlaneED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #14 resume { ptr, i32 } %.pn } @@ -587,13 +587,13 @@ define void @_ZN19MeshLabRenderRasterD2Ev(ptr noundef nonnull align 8 dereferenc %9 = icmp sgt i32 %6, %8 br i1 %9, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %1, %53 - %indvars.iv = phi i64 [ %indvars.iv.next, %53 ], [ 0, %1 ] - %10 = phi i32 [ %54, %53 ], [ %8, %1 ] - %11 = phi ptr [ %55, %53 ], [ %4, %1 ] +.lr.ph: ; preds = %1, %52 + %indvars.iv = phi i64 [ %indvars.iv.next, %52 ], [ 0, %1 ] + %10 = phi i32 [ %53, %52 ], [ %8, %1 ] + %11 = phi ptr [ %54, %52 ], [ %4, %1 ] %12 = load atomic i32, ptr %11 monotonic, align 4 %13 = icmp ugt i32 %12, 1 - br i1 %13, label %14, label %36 + br i1 %13, label %14, label %35 14: ; preds = %.lr.ph %15 = getelementptr inbounds i8, ptr %11, i64 4 @@ -602,7 +602,7 @@ define void @_ZN19MeshLabRenderRasterD2Ev(ptr noundef nonnull align 8 dereferenc %18 = sext i32 %10 to i64 %19 = getelementptr inbounds ptr, ptr %17, i64 %18 %20 = invoke noundef ptr @_ZN9QListData6detachEi(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %16) - to label %.noexc unwind label %67 + to label %.noexc unwind label %66 .noexc: ; preds = %14 %21 = load ptr, ptr %3, align 8 @@ -619,97 +619,97 @@ define void @_ZN19MeshLabRenderRasterD2Ev(ptr noundef nonnull align 8 dereferenc %28 = getelementptr inbounds i8, ptr %21, i64 12 %29 = load i32, ptr %28, align 4 %30 = sext i32 %29 to i64 - %31 = sub nsw i64 %30, %25 - %32 = icmp sgt i64 %31, 0 - br i1 %32, label %33, label %_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i + %.idx.i.i.i.i = shl nsw i64 %30, 3 + %gepdiff.i.i.i.i = sub nsw i64 %.idx.i.i.i.i, %.idx7.i.i.i.i + %31 = icmp sgt i64 %gepdiff.i.i.i.i, 0 + br i1 %31, label %32, label %_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i -33: ; preds = %27 - %gepdiff.i.i.i.i = shl nuw nsw i64 %31, 3 +32: ; preds = %27 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %26, ptr nonnull align 8 %19, i64 %gepdiff.i.i.i.i, i1 false) br label %_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i -_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i: ; preds = %33, %27, %.noexc - %34 = load atomic i32, ptr %20 monotonic, align 4 - switch i32 %34, label %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i [ +_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i: ; preds = %32, %27, %.noexc + %33 = load atomic i32, ptr %20 monotonic, align 4 + switch i32 %33, label %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i [ i32 0, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i - i32 -1, label %36 + i32 -1, label %35 ] _ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i: ; preds = %_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i - %35 = atomicrmw sub ptr %20, i32 1 seq_cst, align 4 - %.not.i.i.i.i = icmp eq i32 %35, 1 - br i1 %.not.i.i.i.i, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i, label %36 + %34 = atomicrmw sub ptr %20, i32 1 seq_cst, align 4 + %.not.i.i.i.i = icmp eq i32 %34, 1 + br i1 %.not.i.i.i.i, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i, label %35 _ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i, %_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i invoke void @_ZN9QListData7disposeEPNS_4DataE(ptr noundef nonnull %20) - to label %36 unwind label %67 - -36: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i, %_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i, %.lr.ph, %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i - %37 = load ptr, ptr %3, align 8 - %38 = getelementptr inbounds i8, ptr %37, i64 16 - %39 = getelementptr inbounds i8, ptr %37, i64 8 - %40 = load i32, ptr %39, align 8 - %41 = sext i32 %40 to i64 - %42 = getelementptr inbounds ptr, ptr %38, i64 %41 - %43 = getelementptr inbounds ptr, ptr %42, i64 %indvars.iv - %44 = load ptr, ptr %43, align 8 - %45 = icmp eq ptr %44, null - br i1 %45, label %53, label %46 - -46: ; preds = %36 - %47 = getelementptr inbounds i8, ptr %44, i64 16 - tail call void @_ZN6QImageD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #14 - %48 = getelementptr inbounds i8, ptr %44, i64 8 - %49 = load ptr, ptr %48, align 8 - %50 = load atomic i32, ptr %49 monotonic, align 4 - switch i32 %50, label %_ZN9QtPrivate8RefCount5derefEv.exit.i.i [ + to label %35 unwind label %66 + +35: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i.i.i.i, %_ZN5QListIP11RasterPlaneE9node_copyEPNS2_4NodeES4_S4_.exit.i.i.i.i, %.lr.ph, %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i + %36 = load ptr, ptr %3, align 8 + %37 = getelementptr inbounds i8, ptr %36, i64 16 + %38 = getelementptr inbounds i8, ptr %36, i64 8 + %39 = load i32, ptr %38, align 8 + %40 = sext i32 %39 to i64 + %41 = getelementptr inbounds ptr, ptr %37, i64 %40 + %42 = getelementptr inbounds ptr, ptr %41, i64 %indvars.iv + %43 = load ptr, ptr %42, align 8 + %44 = icmp eq ptr %43, null + br i1 %44, label %52, label %45 + +45: ; preds = %35 + %46 = getelementptr inbounds i8, ptr %43, i64 16 + tail call void @_ZN6QImageD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #14 + %47 = getelementptr inbounds i8, ptr %43, i64 8 + %48 = load ptr, ptr %47, align 8 + %49 = load atomic i32, ptr %48 monotonic, align 4 + switch i32 %49, label %_ZN9QtPrivate8RefCount5derefEv.exit.i.i [ i32 0, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i.i i32 -1, label %_ZN11RasterPlaneD2Ev.exit ] -_ZN9QtPrivate8RefCount5derefEv.exit.i.i: ; preds = %46 - %51 = atomicrmw sub ptr %49, i32 1 seq_cst, align 4 - %.not.i.i = icmp eq i32 %51, 1 +_ZN9QtPrivate8RefCount5derefEv.exit.i.i: ; preds = %45 + %50 = atomicrmw sub ptr %48, i32 1 seq_cst, align 4 + %.not.i.i = icmp eq i32 %50, 1 br i1 %.not.i.i, label %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i.i, label %_ZN11RasterPlaneD2Ev.exit _ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i.i: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i.i - %.pre.i.i = load ptr, ptr %48, align 8 + %.pre.i.i = load ptr, ptr %47, align 8 br label %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i.i -_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i.i: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i.i, %46 - %52 = phi ptr [ %.pre.i.i, %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i.i ], [ %49, %46 ] - tail call void @_ZN10QArrayData10deallocateEPS_mm(ptr noundef %52, i64 noundef 2, i64 noundef 8) #14 +_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i.i: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i.i, %45 + %51 = phi ptr [ %.pre.i.i, %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i.i ], [ %48, %45 ] + tail call void @_ZN10QArrayData10deallocateEPS_mm(ptr noundef %51, i64 noundef 2, i64 noundef 8) #14 br label %_ZN11RasterPlaneD2Ev.exit -_ZN11RasterPlaneD2Ev.exit: ; preds = %46, %_ZN9QtPrivate8RefCount5derefEv.exit.i.i, %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i.i - tail call void @_ZdlPv(ptr noundef nonnull %44) #17 +_ZN11RasterPlaneD2Ev.exit: ; preds = %45, %_ZN9QtPrivate8RefCount5derefEv.exit.i.i, %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i.i + tail call void @_ZdlPv(ptr noundef nonnull %43) #17 %.pre = load ptr, ptr %3, align 8 %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre, i64 8 %.pre12 = load i32, ptr %.phi.trans.insert, align 8 - br label %53 + br label %52 -53: ; preds = %36, %_ZN11RasterPlaneD2Ev.exit - %54 = phi i32 [ %40, %36 ], [ %.pre12, %_ZN11RasterPlaneD2Ev.exit ] - %55 = phi ptr [ %37, %36 ], [ %.pre, %_ZN11RasterPlaneD2Ev.exit ] +52: ; preds = %35, %_ZN11RasterPlaneD2Ev.exit + %53 = phi i32 [ %39, %35 ], [ %.pre12, %_ZN11RasterPlaneD2Ev.exit ] + %54 = phi ptr [ %36, %35 ], [ %.pre, %_ZN11RasterPlaneD2Ev.exit ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %56 = getelementptr inbounds i8, ptr %55, i64 12 - %57 = load i32, ptr %56, align 4 - %58 = sub nsw i32 %57, %54 - %59 = sext i32 %58 to i64 - %60 = icmp slt i64 %indvars.iv.next, %59 - br i1 %60, label %.lr.ph, label %._crit_edge, !llvm.loop !14 - -._crit_edge: ; preds = %53, %1 - %.lcssa = phi ptr [ %4, %1 ], [ %55, %53 ] - %61 = load atomic i32, ptr %.lcssa monotonic, align 4 - switch i32 %61, label %_ZN9QtPrivate8RefCount5derefEv.exit.i [ + %55 = getelementptr inbounds i8, ptr %54, i64 12 + %56 = load i32, ptr %55, align 4 + %57 = sub nsw i32 %56, %53 + %58 = sext i32 %57 to i64 + %59 = icmp slt i64 %indvars.iv.next, %58 + br i1 %59, label %.lr.ph, label %._crit_edge, !llvm.loop !14 + +._crit_edge: ; preds = %52, %1 + %.lcssa = phi ptr [ %4, %1 ], [ %54, %52 ] + %60 = load atomic i32, ptr %.lcssa monotonic, align 4 + switch i32 %60, label %_ZN9QtPrivate8RefCount5derefEv.exit.i [ i32 0, label %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i i32 -1, label %_ZN5QListIP11RasterPlaneED2Ev.exit ] _ZN9QtPrivate8RefCount5derefEv.exit.i: ; preds = %._crit_edge - %62 = atomicrmw sub ptr %.lcssa, i32 1 seq_cst, align 4 - %.not.i = icmp eq i32 %62, 1 + %61 = atomicrmw sub ptr %.lcssa, i32 1 seq_cst, align 4 + %.not.i = icmp eq i32 %61, 1 br i1 %.not.i, label %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i, label %_ZN5QListIP11RasterPlaneED2Ev.exit _ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.i @@ -717,25 +717,25 @@ _ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_ br label %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i _ZN9QtPrivate8RefCount5derefEv.exit.thread2.i: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i, %._crit_edge - %63 = phi ptr [ %.pre.i, %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i ], [ %.lcssa, %._crit_edge ] - invoke void @_ZN9QListData7disposeEPNS_4DataE(ptr noundef %63) - to label %_ZN5QListIP11RasterPlaneED2Ev.exit unwind label %64 + %62 = phi ptr [ %.pre.i, %_ZN9QtPrivate8RefCount5derefEv.exit._ZN9QtPrivate8RefCount5derefEv.exit.thread2_crit_edge.i ], [ %.lcssa, %._crit_edge ] + invoke void @_ZN9QListData7disposeEPNS_4DataE(ptr noundef %62) + to label %_ZN5QListIP11RasterPlaneED2Ev.exit unwind label %63 -64: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i - %65 = landingpad { ptr, i32 } +63: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i + %64 = landingpad { ptr, i32 } catch ptr null - %66 = extractvalue { ptr, i32 } %65, 0 - tail call void @__clang_call_terminate(ptr %66) #15 + %65 = extractvalue { ptr, i32 } %64, 0 + tail call void @__clang_call_terminate(ptr %65) #15 unreachable _ZN5QListIP11RasterPlaneED2Ev.exit: ; preds = %._crit_edge, %_ZN9QtPrivate8RefCount5derefEv.exit.i, %_ZN9QtPrivate8RefCount5derefEv.exit.thread2.i ret void -67: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i, %14 - %68 = landingpad { ptr, i32 } +66: ; preds = %_ZN9QtPrivate8RefCount5derefEv.exit.thread5.i.i.i.i, %14 + %67 = landingpad { ptr, i32 } catch ptr null - %69 = extractvalue { ptr, i32 } %68, 0 - tail call void @__clang_call_terminate(ptr %69) #15 + %68 = extractvalue { ptr, i32 } %67, 0 + tail call void @__clang_call_terminate(ptr %68) #15 unreachable } diff --git a/bench/minetest/optimized/CFileList.cpp.ll b/bench/minetest/optimized/CFileList.cpp.ll index 213016a3f93..1b44b9038e8 100644 --- a/bench/minetest/optimized/CFileList.cpp.ll +++ b/bench/minetest/optimized/CFileList.cpp.ll @@ -5158,13 +5158,20 @@ if.end: ; preds = %entry %add.ptr.i.i.i.i.idx = mul nsw i64 %conv, 80 %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.i.i.i.idx %conv9 = sext i32 %right to i64 - %add.ptr.i.i.i.i42.idx12 = sub nsw i64 %conv9, %conv - %cmp17.i.i = icmp sgt i64 %add.ptr.i.i.i.i42.idx12, 0 - %IsDirectory2.i.i.i.i = getelementptr inbounds i8, ptr %element, i64 76 - %1 = load i8, ptr %IsDirectory2.i.i.i.i, align 4, !tbaa !54, !range !43 - br i1 %cmp17.i.i, label %while.body.lr.ph.i.i, label %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEES4_ET_SB_SB_RKT0_.exit + %add.ptr.i.i.i.i42.idx = mul nsw i64 %conv9, 80 + %gepdiff = sub nsw i64 %add.ptr.i.i.i.i42.idx, %add.ptr.i.i.i.i.idx + %cmp17.i.i = icmp sgt i64 %gepdiff, 0 + br i1 %cmp17.i.i, label %while.body.lr.ph.i.i, label %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEEET_SB_NSt15iterator_traitsISB_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEES4_ET_SB_SB_RKT0_.exit_crit_edge + +_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEEET_SB_NSt15iterator_traitsISB_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEES4_ET_SB_SB_RKT0_.exit_crit_edge: ; preds = %if.end + %IsDirectory2.i.phi.trans.insert = getelementptr inbounds i8, ptr %element, i64 76 + %.pre = load i8, ptr %IsDirectory2.i.phi.trans.insert, align 4, !tbaa !54, !range !43 + br label %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEES4_ET_SB_SB_RKT0_.exit while.body.lr.ph.i.i: ; preds = %if.end + %sub.ptr.div.i.i.i.i.i = udiv exact i64 %gepdiff, 80 + %IsDirectory2.i.i.i.i = getelementptr inbounds i8, ptr %element, i64 76 + %1 = load i8, ptr %IsDirectory2.i.i.i.i, align 4, !tbaa !54, !range !43, !noundef !44 %FullName7.i.i.i.i = getelementptr inbounds i8, ptr %element, i64 32 %2 = load ptr, ptr %FullName7.i.i.i.i, align 8 %_M_string_length.i.i33.i.i.i.i.i = getelementptr inbounds i8, ptr %element, i64 40 @@ -5173,7 +5180,7 @@ while.body.lr.ph.i.i: ; preds = %if.end br label %while.body.i.i while.body.i.i: ; preds = %if.end.i.i, %while.body.lr.ph.i.i - %__len.019.i.i = phi i64 [ %add.ptr.i.i.i.i42.idx12, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %if.end.i.i ] + %__len.019.i.i = phi i64 [ %sub.ptr.div.i.i.i.i.i, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %if.end.i.i ] %__first.sroa.0.018.i.i = phi ptr [ %add.ptr.i.i.i.i, %while.body.lr.ph.i.i ], [ %__first.sroa.0.1.i.i, %if.end.i.i ] %shr.i.i = lshr i64 %__len.019.i.i, 1 %add.ptr.i.i.i.i.i = getelementptr inbounds %"struct.irr::io::SFileListEntry", ptr %__first.sroa.0.018.i.i, i64 %shr.i.i @@ -5247,56 +5254,57 @@ if.end.i.i: ; preds = %if.then.i.i, %_ZNK9 %cmp.i.i = icmp sgt i64 %__len.1.i.i, 0 br i1 %cmp.i.i, label %while.body.i.i, label %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEES4_ET_SB_SB_RKT0_.exit, !llvm.loop !84 -_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEES4_ET_SB_SB_RKT0_.exit: ; preds = %if.end.i.i, %if.end - %__first.sroa.0.0.lcssa.i.i = phi ptr [ %add.ptr.i.i.i.i, %if.end ], [ %__first.sroa.0.1.i.i, %if.end.i.i ] +_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEES4_ET_SB_SB_RKT0_.exit: ; preds = %if.end.i.i, %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEEET_SB_NSt15iterator_traitsISB_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEES4_ET_SB_SB_RKT0_.exit_crit_edge + %14 = phi i8 [ %.pre, %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEEET_SB_NSt15iterator_traitsISB_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEES4_ET_SB_SB_RKT0_.exit_crit_edge ], [ %1, %if.end.i.i ] + %__first.sroa.0.0.lcssa.i.i = phi ptr [ %add.ptr.i.i.i.i, %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEEET_SB_NSt15iterator_traitsISB_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEES4_ET_SB_SB_RKT0_.exit_crit_edge ], [ %__first.sroa.0.1.i.i, %if.end.i.i ] %IsDirectory.i = getelementptr inbounds i8, ptr %__first.sroa.0.0.lcssa.i.i, i64 76 - %14 = load i8, ptr %IsDirectory.i, align 4, !tbaa !54, !range !43, !noundef !44 - %cmp.not.i = icmp eq i8 %14, %1 + %15 = load i8, ptr %IsDirectory.i, align 4, !tbaa !54, !range !43, !noundef !44 + %cmp.not.i = icmp eq i8 %15, %14 br i1 %cmp.not.i, label %if.end.i, label %if.then.i if.then.i: ; preds = %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEES4_ET_SB_SB_RKT0_.exit - %15 = or i8 %14, %1 - %or.cond.not = icmp eq i8 %15, 0 + %16 = or i8 %15, %14 + %or.cond.not = icmp eq i8 %16, 0 br i1 %or.cond.not, label %if.end24, label %return if.end.i: ; preds = %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEES4_ET_SB_SB_RKT0_.exit %FullName.i = getelementptr inbounds i8, ptr %__first.sroa.0.0.lcssa.i.i, i64 32 - %16 = load ptr, ptr %FullName.i, align 8, !tbaa !3 - %17 = load i8, ptr %16, align 1, !tbaa !25 - %tobool.not37.i.i = icmp eq i8 %17, 0 + %17 = load ptr, ptr %FullName.i, align 8, !tbaa !3 + %18 = load i8, ptr %17, align 1, !tbaa !25 + %tobool.not37.i.i = icmp eq i8 %18, 0 br i1 %tobool.not37.i.i, label %for.end.i.i, label %land.rhs.lr.ph.i.i land.rhs.lr.ph.i.i: ; preds = %if.end.i %FullName7.i = getelementptr inbounds i8, ptr %element, i64 32 - %18 = load ptr, ptr %FullName7.i, align 8, !tbaa !3 + %19 = load ptr, ptr %FullName7.i, align 8, !tbaa !3 br label %land.rhs.i.i for.cond.i.i: ; preds = %for.body.i.i %inc.i.i = add i32 %i.038.i.i, 1 %idxprom.i.i = zext i32 %inc.i.i to i64 - %arrayidx.i.i = getelementptr inbounds i8, ptr %16, i64 %idxprom.i.i - %19 = load i8, ptr %arrayidx.i.i, align 1, !tbaa !25 - %tobool.not.i.i = icmp eq i8 %19, 0 + %arrayidx.i.i = getelementptr inbounds i8, ptr %17, i64 %idxprom.i.i + %20 = load i8, ptr %arrayidx.i.i, align 1, !tbaa !25 + %tobool.not.i.i = icmp eq i8 %20, 0 br i1 %tobool.not.i.i, label %for.end.i.i, label %land.rhs.i.i, !llvm.loop !74 land.rhs.i.i: ; preds = %for.cond.i.i, %land.rhs.lr.ph.i.i - %20 = phi i8 [ %17, %land.rhs.lr.ph.i.i ], [ %19, %for.cond.i.i ] + %21 = phi i8 [ %18, %land.rhs.lr.ph.i.i ], [ %20, %for.cond.i.i ] %idxprom39.i.i = phi i64 [ 0, %land.rhs.lr.ph.i.i ], [ %idxprom.i.i, %for.cond.i.i ] %i.038.i.i = phi i32 [ 0, %land.rhs.lr.ph.i.i ], [ %inc.i.i, %for.cond.i.i ] - %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %18, i64 %idxprom39.i.i - %21 = load i8, ptr %arrayidx.i.i.i.i, align 1, !tbaa !25 - %tobool3.not.i.i = icmp eq i8 %21, 0 + %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %19, i64 %idxprom39.i.i + %22 = load i8, ptr %arrayidx.i.i.i.i, align 1, !tbaa !25 + %tobool3.not.i.i = icmp eq i8 %22, 0 br i1 %tobool3.not.i.i, label %for.end.i.i, label %for.body.i.i for.body.i.i: ; preds = %land.rhs.i.i - %conv.i.i = sext i8 %20 to i32 - %22 = add nsw i32 %conv.i.i, -65 - %or.cond.i.i.i49 = icmp ult i32 %22, 26 + %conv.i.i = sext i8 %21 to i32 + %23 = add nsw i32 %conv.i.i, -65 + %or.cond.i.i.i49 = icmp ult i32 %23, 26 %add.i.i.i = add nsw i32 %conv.i.i, 32 %cond.i.i.i = select i1 %or.cond.i.i.i49, i32 %add.i.i.i, i32 %conv.i.i - %conv8.i.i = sext i8 %21 to i32 - %23 = add nsw i32 %conv8.i.i, -65 - %or.cond.i29.i.i = icmp ult i32 %23, 26 + %conv8.i.i = sext i8 %22 to i32 + %24 = add nsw i32 %conv8.i.i, -65 + %or.cond.i29.i.i = icmp ult i32 %24, 26 %add.i30.i.i = add nsw i32 %conv8.i.i, 32 %cond.i31.i.i = select i1 %or.cond.i29.i.i, i32 %add.i30.i.i, i32 %conv8.i.i %tobool10.not.i.i = icmp eq i32 %cond.i.i.i, %cond.i31.i.i @@ -5304,11 +5312,11 @@ for.body.i.i: ; preds = %land.rhs.i.i for.end.i.i: ; preds = %land.rhs.i.i, %for.cond.i.i, %if.end.i %_M_string_length.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.0.lcssa.i.i, i64 40 - %24 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !10 - %conv.i32.i.i = trunc i64 %24 to i32 + %25 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !10 + %conv.i32.i.i = trunc i64 %25 to i32 %_M_string_length.i.i33.i.i = getelementptr inbounds i8, ptr %element, i64 40 - %25 = load i64, ptr %_M_string_length.i.i33.i.i, align 8, !tbaa !10 - %conv.i34.i.i = trunc i64 %25 to i32 + %26 = load i64, ptr %_M_string_length.i.i33.i.i, align 8, !tbaa !10 + %conv.i34.i.i = trunc i64 %26 to i32 %cmp15.i.i = icmp ult i32 %conv.i32.i.i, %conv.i34.i.i br i1 %cmp15.i.i, label %return, label %for.end.i.i.if.end.i56_crit_edge @@ -5322,37 +5330,37 @@ _ZNK3irr2io14SFileListEntryltERKS1_.exit: ; preds = %for.body.i.i br i1 %cmp.le.i.i, label %return, label %if.end.i56 if.end.i56: ; preds = %_ZNK3irr2io14SFileListEntryltERKS1_.exit, %for.end.i.i.if.end.i56_crit_edge - %26 = phi ptr [ %.pre92, %for.end.i.i.if.end.i56_crit_edge ], [ %18, %_ZNK3irr2io14SFileListEntryltERKS1_.exit ] - %27 = load i8, ptr %26, align 1, !tbaa !25 - %tobool.not37.i.i58 = icmp eq i8 %27, 0 + %27 = phi ptr [ %.pre92, %for.end.i.i.if.end.i56_crit_edge ], [ %19, %_ZNK3irr2io14SFileListEntryltERKS1_.exit ] + %28 = load i8, ptr %27, align 1, !tbaa !25 + %tobool.not37.i.i58 = icmp eq i8 %28, 0 br i1 %tobool.not37.i.i58, label %for.end.i.i83, label %land.rhs.i.i61 for.cond.i.i78: ; preds = %for.body.i.i66 %inc.i.i79 = add i32 %i.038.i.i63, 1 %idxprom.i.i80 = zext i32 %inc.i.i79 to i64 - %arrayidx.i.i81 = getelementptr inbounds i8, ptr %26, i64 %idxprom.i.i80 - %28 = load i8, ptr %arrayidx.i.i81, align 1, !tbaa !25 - %tobool.not.i.i82 = icmp eq i8 %28, 0 + %arrayidx.i.i81 = getelementptr inbounds i8, ptr %27, i64 %idxprom.i.i80 + %29 = load i8, ptr %arrayidx.i.i81, align 1, !tbaa !25 + %tobool.not.i.i82 = icmp eq i8 %29, 0 br i1 %tobool.not.i.i82, label %for.end.i.i83, label %land.rhs.i.i61, !llvm.loop !74 land.rhs.i.i61: ; preds = %if.end.i56, %for.cond.i.i78 - %29 = phi i8 [ %28, %for.cond.i.i78 ], [ %27, %if.end.i56 ] + %30 = phi i8 [ %29, %for.cond.i.i78 ], [ %28, %if.end.i56 ] %idxprom39.i.i62 = phi i64 [ %idxprom.i.i80, %for.cond.i.i78 ], [ 0, %if.end.i56 ] %i.038.i.i63 = phi i32 [ %inc.i.i79, %for.cond.i.i78 ], [ 0, %if.end.i56 ] - %arrayidx.i.i.i.i64 = getelementptr inbounds i8, ptr %16, i64 %idxprom39.i.i62 - %30 = load i8, ptr %arrayidx.i.i.i.i64, align 1, !tbaa !25 - %tobool3.not.i.i65 = icmp eq i8 %30, 0 + %arrayidx.i.i.i.i64 = getelementptr inbounds i8, ptr %17, i64 %idxprom39.i.i62 + %31 = load i8, ptr %arrayidx.i.i.i.i64, align 1, !tbaa !25 + %tobool3.not.i.i65 = icmp eq i8 %31, 0 br i1 %tobool3.not.i.i65, label %for.end.i.i83, label %for.body.i.i66 for.body.i.i66: ; preds = %land.rhs.i.i61 - %conv.i.i67 = sext i8 %29 to i32 - %31 = add nsw i32 %conv.i.i67, -65 - %or.cond.i.i.i68 = icmp ult i32 %31, 26 + %conv.i.i67 = sext i8 %30 to i32 + %32 = add nsw i32 %conv.i.i67, -65 + %or.cond.i.i.i68 = icmp ult i32 %32, 26 %add.i.i.i69 = add nsw i32 %conv.i.i67, 32 %cond.i.i.i70 = select i1 %or.cond.i.i.i68, i32 %add.i.i.i69, i32 %conv.i.i67 - %conv8.i.i71 = sext i8 %30 to i32 - %32 = add nsw i32 %conv8.i.i71, -65 - %or.cond.i29.i.i72 = icmp ult i32 %32, 26 + %conv8.i.i71 = sext i8 %31 to i32 + %33 = add nsw i32 %conv8.i.i71, -65 + %or.cond.i29.i.i72 = icmp ult i32 %33, 26 %add.i30.i.i73 = add nsw i32 %conv8.i.i71, 32 %cond.i31.i.i74 = select i1 %or.cond.i29.i.i72, i32 %add.i30.i.i73, i32 %conv8.i.i71 %tobool10.not.i.i75 = icmp eq i32 %cond.i.i.i70, %cond.i31.i.i74 @@ -5360,11 +5368,11 @@ for.body.i.i66: ; preds = %land.rhs.i.i61 for.end.i.i83: ; preds = %land.rhs.i.i61, %for.cond.i.i78, %if.end.i56 %_M_string_length.i.i.i.i84 = getelementptr inbounds i8, ptr %element, i64 40 - %33 = load i64, ptr %_M_string_length.i.i.i.i84, align 8, !tbaa !10 - %conv.i32.i.i85 = trunc i64 %33 to i32 + %34 = load i64, ptr %_M_string_length.i.i.i.i84, align 8, !tbaa !10 + %conv.i32.i.i85 = trunc i64 %34 to i32 %_M_string_length.i.i33.i.i86 = getelementptr inbounds i8, ptr %__first.sroa.0.0.lcssa.i.i, i64 40 - %34 = load i64, ptr %_M_string_length.i.i33.i.i86, align 8, !tbaa !10 - %conv.i34.i.i87 = trunc i64 %34 to i32 + %35 = load i64, ptr %_M_string_length.i.i33.i.i86, align 8, !tbaa !10 + %conv.i34.i.i87 = trunc i64 %35 to i32 %cmp15.i.i88 = icmp ult i32 %conv.i32.i.i85, %conv.i34.i.i87 br i1 %cmp15.i.i88, label %return, label %if.end24 diff --git a/bench/minetest/optimized/CGUIEnvironment.cpp.ll b/bench/minetest/optimized/CGUIEnvironment.cpp.ll index 9c05f09f35d..4ee3cd90863 100644 --- a/bench/minetest/optimized/CGUIEnvironment.cpp.ll +++ b/bench/minetest/optimized/CGUIEnvironment.cpp.ll @@ -7810,19 +7810,26 @@ if.end: ; preds = %entry %add.ptr.i.i.i.i.idx = mul nsw i64 %conv, 72 %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.i.i.i.idx %conv9 = sext i32 %right to i64 - %add.ptr.i.i.i.i42.idx1 = sub nsw i64 %conv9, %conv - %cmp16.i.i = icmp sgt i64 %add.ptr.i.i.i.i42.idx1, 0 - %_M_string_length.i10.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %element, i64 40 - %1 = load i64, ptr %_M_string_length.i10.i.i.i.i.i.i.i.i, align 8, !tbaa !10 - br i1 %cmp16.i.i, label %while.body.lr.ph.i.i, label %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit + %add.ptr.i.i.i.i42.idx = mul nsw i64 %conv9, 72 + %gepdiff = sub nsw i64 %add.ptr.i.i.i.i42.idx, %add.ptr.i.i.i.i.idx + %cmp16.i.i = icmp sgt i64 %gepdiff, 0 + br i1 %cmp16.i.i, label %while.body.lr.ph.i.i, label %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge + +_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge: ; preds = %if.end + %_M_string_length.i10.i.i.i.i.i.phi.trans.insert = getelementptr inbounds i8, ptr %element, i64 40 + %.pre = load i64, ptr %_M_string_length.i10.i.i.i.i.i.phi.trans.insert, align 8, !tbaa !10 + br label %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit while.body.lr.ph.i.i: ; preds = %if.end + %sub.ptr.div.i.i.i.i.i = udiv exact i64 %gepdiff, 72 + %_M_string_length.i10.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %element, i64 40 + %1 = load i64, ptr %_M_string_length.i10.i.i.i.i.i.i.i.i, align 8, !tbaa !10 %InternalName2.i.i.i.i.i = getelementptr inbounds i8, ptr %element, i64 32 %2 = load ptr, ptr %InternalName2.i.i.i.i.i, align 8 br label %while.body.i.i while.body.i.i: ; preds = %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i, %while.body.lr.ph.i.i - %__len.018.i.i = phi i64 [ %add.ptr.i.i.i.i42.idx1, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] + %__len.018.i.i = phi i64 [ %sub.ptr.div.i.i.i.i.i, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] %__first.sroa.0.017.i.i = phi ptr [ %add.ptr.i.i.i.i, %while.body.lr.ph.i.i ], [ %__first.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] %shr.i.i = lshr i64 %__len.018.i.i, 1 %add.ptr.i.i.i.i.i = getelementptr inbounds %"struct.irr::gui::CGUIEnvironment::SFont", ptr %__first.sroa.0.017.i.i, i64 %shr.i.i @@ -7857,37 +7864,38 @@ _ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIE %cmp.i.i = icmp sgt i64 %__len.1.i.i, 0 br i1 %cmp.i.i, label %while.body.i.i, label %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit, !llvm.loop !191 -_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit: ; preds = %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i, %if.end - %__first.sroa.0.0.lcssa.i.i = phi ptr [ %add.ptr.i.i.i.i, %if.end ], [ %__first.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] +_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit: ; preds = %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i, %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge + %6 = phi i64 [ %.pre, %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge ], [ %1, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] + %__first.sroa.0.0.lcssa.i.i = phi ptr [ %add.ptr.i.i.i.i, %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge ], [ %__first.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] %_M_string_length.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.0.lcssa.i.i, i64 40 - %6 = load i64, ptr %_M_string_length.i.i.i.i.i.i, align 8, !tbaa !10 - %.sroa.speculated.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %1, i64 %6) + %7 = load i64, ptr %_M_string_length.i.i.i.i.i.i, align 8, !tbaa !10 + %.sroa.speculated.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %6, i64 %7) %cmp.i11.i.i.i.i.i = icmp eq i64 %.sroa.speculated.i.i.i.i.i, 0 br i1 %cmp.i11.i.i.i.i.i, label %_ZNK3irr3gui15CGUIEnvironment5SFontltERKS2_.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i: ; preds = %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit %InternalName2.i.i = getelementptr inbounds i8, ptr %element, i64 32 %InternalName.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.0.lcssa.i.i, i64 32 - %7 = load ptr, ptr %InternalName2.i.i, align 8, !tbaa !3 - %8 = load ptr, ptr %InternalName.i.i, align 8, !tbaa !3 - %call.i.i.i.i.i.i = tail call i32 @memcmp(ptr noundef %8, ptr noundef %7, i64 noundef %.sroa.speculated.i.i.i.i.i) #23 + %8 = load ptr, ptr %InternalName2.i.i, align 8, !tbaa !3 + %9 = load ptr, ptr %InternalName.i.i, align 8, !tbaa !3 + %call.i.i.i.i.i.i = tail call i32 @memcmp(ptr noundef %9, ptr noundef %8, i64 noundef %.sroa.speculated.i.i.i.i.i) #23 %tobool.not.i.i.i.i.i = icmp eq i32 %call.i.i.i.i.i.i, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZNK3irr3gui15CGUIEnvironment5SFontltERKS2_.exit.thread71, label %_ZNK3irr3gui15CGUIEnvironment5SFontltERKS2_.exit.thread _ZNK3irr3gui15CGUIEnvironment5SFontltERKS2_.exit: ; preds = %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment5SFontESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit - %sub.i.i.i.i.i.i = sub i64 %6, %1 + %sub.i.i.i.i.i.i = sub i64 %7, %6 %spec.select6.i.i.i.i.i.i = tail call i64 @llvm.smax.i64(i64 %sub.i.i.i.i.i.i, i64 -2147483648) %retval.07.i.i.i.i.i.i = tail call i64 @llvm.smin.i64(i64 %spec.select6.i.i.i.i.i.i, i64 2147483647) - %9 = and i64 %retval.07.i.i.i.i.i.i, 2147483648 - %cmp.i.i.i.i49.not = icmp eq i64 %9, 0 + %10 = and i64 %retval.07.i.i.i.i.i.i, 2147483648 + %cmp.i.i.i.i49.not = icmp eq i64 %10, 0 br i1 %cmp.i.i.i.i49.not, label %if.then.i.i.i.i.i61, label %return _ZNK3irr3gui15CGUIEnvironment5SFontltERKS2_.exit.thread71: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i - %sub.i.i.i.i.i.i72 = sub i64 %6, %1 + %sub.i.i.i.i.i.i72 = sub i64 %7, %6 %spec.select6.i.i.i.i.i.i73 = tail call i64 @llvm.smax.i64(i64 %sub.i.i.i.i.i.i72, i64 -2147483648) %retval.07.i.i.i.i.i.i74 = tail call i64 @llvm.smin.i64(i64 %spec.select6.i.i.i.i.i.i73, i64 2147483647) - %10 = and i64 %retval.07.i.i.i.i.i.i74, 2147483648 - %cmp.i.i.i.i4976.not = icmp eq i64 %10, 0 + %11 = and i64 %retval.07.i.i.i.i.i.i74, 2147483648 + %cmp.i.i.i.i4976.not = icmp eq i64 %11, 0 br i1 %cmp.i.i.i.i4976.not, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54, label %return _ZNK3irr3gui15CGUIEnvironment5SFontltERKS2_.exit.thread: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i @@ -7895,12 +7903,12 @@ _ZNK3irr3gui15CGUIEnvironment5SFontltERKS2_.exit.thread: ; preds = %_ZNSt11char_ br i1 %cmp.i.i.i.i4970, label %return, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54: ; preds = %_ZNK3irr3gui15CGUIEnvironment5SFontltERKS2_.exit.thread, %_ZNK3irr3gui15CGUIEnvironment5SFontltERKS2_.exit.thread71 - %call.i.i.i.i.i.i57 = tail call i32 @memcmp(ptr noundef %7, ptr noundef %8, i64 noundef %.sroa.speculated.i.i.i.i.i) #23 + %call.i.i.i.i.i.i57 = tail call i32 @memcmp(ptr noundef %8, ptr noundef %9, i64 noundef %.sroa.speculated.i.i.i.i.i) #23 %tobool.not.i.i.i.i.i58 = icmp eq i32 %call.i.i.i.i.i.i57, 0 br i1 %tobool.not.i.i.i.i.i58, label %if.then.i.i.i.i.i61, label %_ZNK3irr3gui15CGUIEnvironment5SFontltERKS2_.exit66 if.then.i.i.i.i.i61: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54, %_ZNK3irr3gui15CGUIEnvironment5SFontltERKS2_.exit - %sub.i.i.i.i.i.i62 = sub i64 %1, %6 + %sub.i.i.i.i.i.i62 = sub i64 %6, %7 %spec.select6.i.i.i.i.i.i63 = tail call i64 @llvm.smax.i64(i64 %sub.i.i.i.i.i.i62, i64 -2147483648) %retval.07.i.i.i.i.i.i64 = tail call i64 @llvm.smin.i64(i64 %spec.select6.i.i.i.i.i.i63, i64 2147483647) %retval.0.i12.i.i.i.i.i65 = trunc nsw i64 %retval.07.i.i.i.i.i.i64 to i32 @@ -9250,19 +9258,26 @@ if.end: ; preds = %entry %add.ptr.i.i.i.i.idx = mul nsw i64 %conv, 72 %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.i.i.i.idx %conv9 = sext i32 %right to i64 - %add.ptr.i.i.i.i42.idx1 = sub nsw i64 %conv9, %conv - %cmp16.i.i = icmp sgt i64 %add.ptr.i.i.i.i42.idx1, 0 - %_M_string_length.i10.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %element, i64 40 - %1 = load i64, ptr %_M_string_length.i10.i.i.i.i.i.i.i.i, align 8, !tbaa !10 - br i1 %cmp16.i.i, label %while.body.lr.ph.i.i, label %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit + %add.ptr.i.i.i.i42.idx = mul nsw i64 %conv9, 72 + %gepdiff = sub nsw i64 %add.ptr.i.i.i.i42.idx, %add.ptr.i.i.i.i.idx + %cmp16.i.i = icmp sgt i64 %gepdiff, 0 + br i1 %cmp16.i.i, label %while.body.lr.ph.i.i, label %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge + +_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge: ; preds = %if.end + %_M_string_length.i10.i.i.i.i.i.phi.trans.insert = getelementptr inbounds i8, ptr %element, i64 40 + %.pre = load i64, ptr %_M_string_length.i10.i.i.i.i.i.phi.trans.insert, align 8, !tbaa !10 + br label %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit while.body.lr.ph.i.i: ; preds = %if.end + %sub.ptr.div.i.i.i.i.i = udiv exact i64 %gepdiff, 72 + %_M_string_length.i10.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %element, i64 40 + %1 = load i64, ptr %_M_string_length.i10.i.i.i.i.i.i.i.i, align 8, !tbaa !10 %InternalName2.i.i.i.i.i = getelementptr inbounds i8, ptr %element, i64 32 %2 = load ptr, ptr %InternalName2.i.i.i.i.i, align 8 br label %while.body.i.i while.body.i.i: ; preds = %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i, %while.body.lr.ph.i.i - %__len.018.i.i = phi i64 [ %add.ptr.i.i.i.i42.idx1, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] + %__len.018.i.i = phi i64 [ %sub.ptr.div.i.i.i.i.i, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] %__first.sroa.0.017.i.i = phi ptr [ %add.ptr.i.i.i.i, %while.body.lr.ph.i.i ], [ %__first.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] %shr.i.i = lshr i64 %__len.018.i.i, 1 %add.ptr.i.i.i.i.i = getelementptr inbounds %"struct.irr::gui::CGUIEnvironment::SSpriteBank", ptr %__first.sroa.0.017.i.i, i64 %shr.i.i @@ -9297,37 +9312,38 @@ _ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIE %cmp.i.i = icmp sgt i64 %__len.1.i.i, 0 br i1 %cmp.i.i, label %while.body.i.i, label %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit, !llvm.loop !203 -_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit: ; preds = %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i, %if.end - %__first.sroa.0.0.lcssa.i.i = phi ptr [ %add.ptr.i.i.i.i, %if.end ], [ %__first.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] +_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit: ; preds = %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i, %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge + %6 = phi i64 [ %.pre, %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge ], [ %1, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] + %__first.sroa.0.0.lcssa.i.i = phi ptr [ %add.ptr.i.i.i.i, %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge ], [ %__first.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] %_M_string_length.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.0.lcssa.i.i, i64 40 - %6 = load i64, ptr %_M_string_length.i.i.i.i.i.i, align 8, !tbaa !10 - %.sroa.speculated.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %1, i64 %6) + %7 = load i64, ptr %_M_string_length.i.i.i.i.i.i, align 8, !tbaa !10 + %.sroa.speculated.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %6, i64 %7) %cmp.i11.i.i.i.i.i = icmp eq i64 %.sroa.speculated.i.i.i.i.i, 0 br i1 %cmp.i11.i.i.i.i.i, label %_ZNK3irr3gui15CGUIEnvironment11SSpriteBankltERKS2_.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i: ; preds = %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit %InternalName2.i.i = getelementptr inbounds i8, ptr %element, i64 32 %InternalName.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.0.lcssa.i.i, i64 32 - %7 = load ptr, ptr %InternalName2.i.i, align 8, !tbaa !3 - %8 = load ptr, ptr %InternalName.i.i, align 8, !tbaa !3 - %call.i.i.i.i.i.i = tail call i32 @memcmp(ptr noundef %8, ptr noundef %7, i64 noundef %.sroa.speculated.i.i.i.i.i) #23 + %8 = load ptr, ptr %InternalName2.i.i, align 8, !tbaa !3 + %9 = load ptr, ptr %InternalName.i.i, align 8, !tbaa !3 + %call.i.i.i.i.i.i = tail call i32 @memcmp(ptr noundef %9, ptr noundef %8, i64 noundef %.sroa.speculated.i.i.i.i.i) #23 %tobool.not.i.i.i.i.i = icmp eq i32 %call.i.i.i.i.i.i, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZNK3irr3gui15CGUIEnvironment11SSpriteBankltERKS2_.exit.thread71, label %_ZNK3irr3gui15CGUIEnvironment11SSpriteBankltERKS2_.exit.thread _ZNK3irr3gui15CGUIEnvironment11SSpriteBankltERKS2_.exit: ; preds = %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr3gui15CGUIEnvironment11SSpriteBankESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit - %sub.i.i.i.i.i.i = sub i64 %6, %1 + %sub.i.i.i.i.i.i = sub i64 %7, %6 %spec.select6.i.i.i.i.i.i = tail call i64 @llvm.smax.i64(i64 %sub.i.i.i.i.i.i, i64 -2147483648) %retval.07.i.i.i.i.i.i = tail call i64 @llvm.smin.i64(i64 %spec.select6.i.i.i.i.i.i, i64 2147483647) - %9 = and i64 %retval.07.i.i.i.i.i.i, 2147483648 - %cmp.i.i.i.i49.not = icmp eq i64 %9, 0 + %10 = and i64 %retval.07.i.i.i.i.i.i, 2147483648 + %cmp.i.i.i.i49.not = icmp eq i64 %10, 0 br i1 %cmp.i.i.i.i49.not, label %if.then.i.i.i.i.i61, label %return _ZNK3irr3gui15CGUIEnvironment11SSpriteBankltERKS2_.exit.thread71: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i - %sub.i.i.i.i.i.i72 = sub i64 %6, %1 + %sub.i.i.i.i.i.i72 = sub i64 %7, %6 %spec.select6.i.i.i.i.i.i73 = tail call i64 @llvm.smax.i64(i64 %sub.i.i.i.i.i.i72, i64 -2147483648) %retval.07.i.i.i.i.i.i74 = tail call i64 @llvm.smin.i64(i64 %spec.select6.i.i.i.i.i.i73, i64 2147483647) - %10 = and i64 %retval.07.i.i.i.i.i.i74, 2147483648 - %cmp.i.i.i.i4976.not = icmp eq i64 %10, 0 + %11 = and i64 %retval.07.i.i.i.i.i.i74, 2147483648 + %cmp.i.i.i.i4976.not = icmp eq i64 %11, 0 br i1 %cmp.i.i.i.i4976.not, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54, label %return _ZNK3irr3gui15CGUIEnvironment11SSpriteBankltERKS2_.exit.thread: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i @@ -9335,12 +9351,12 @@ _ZNK3irr3gui15CGUIEnvironment11SSpriteBankltERKS2_.exit.thread: ; preds = %_ZNSt br i1 %cmp.i.i.i.i4970, label %return, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54: ; preds = %_ZNK3irr3gui15CGUIEnvironment11SSpriteBankltERKS2_.exit.thread, %_ZNK3irr3gui15CGUIEnvironment11SSpriteBankltERKS2_.exit.thread71 - %call.i.i.i.i.i.i57 = tail call i32 @memcmp(ptr noundef %7, ptr noundef %8, i64 noundef %.sroa.speculated.i.i.i.i.i) #23 + %call.i.i.i.i.i.i57 = tail call i32 @memcmp(ptr noundef %8, ptr noundef %9, i64 noundef %.sroa.speculated.i.i.i.i.i) #23 %tobool.not.i.i.i.i.i58 = icmp eq i32 %call.i.i.i.i.i.i57, 0 br i1 %tobool.not.i.i.i.i.i58, label %if.then.i.i.i.i.i61, label %_ZNK3irr3gui15CGUIEnvironment11SSpriteBankltERKS2_.exit66 if.then.i.i.i.i.i61: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54, %_ZNK3irr3gui15CGUIEnvironment11SSpriteBankltERKS2_.exit - %sub.i.i.i.i.i.i62 = sub i64 %1, %6 + %sub.i.i.i.i.i.i62 = sub i64 %6, %7 %spec.select6.i.i.i.i.i.i63 = tail call i64 @llvm.smax.i64(i64 %sub.i.i.i.i.i.i62, i64 -2147483648) %retval.07.i.i.i.i.i.i64 = tail call i64 @llvm.smin.i64(i64 %spec.select6.i.i.i.i.i.i63, i64 2147483647) %retval.0.i12.i.i.i.i.i65 = trunc nsw i64 %retval.07.i.i.i.i.i.i64 to i32 diff --git a/bench/minetest/optimized/CMeshCache.cpp.ll b/bench/minetest/optimized/CMeshCache.cpp.ll index dc18a49c1c3..59e497138e2 100644 --- a/bench/minetest/optimized/CMeshCache.cpp.ll +++ b/bench/minetest/optimized/CMeshCache.cpp.ll @@ -3574,19 +3574,26 @@ if.end: ; preds = %entry %add.ptr.i.i.i.i.idx = mul nsw i64 %conv, 72 %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.i.i.i.idx %conv9 = sext i32 %right to i64 - %add.ptr.i.i.i.i42.idx1 = sub nsw i64 %conv9, %conv - %cmp16.i.i = icmp sgt i64 %add.ptr.i.i.i.i42.idx1, 0 - %_M_string_length.i10.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %element, i64 40 - %1 = load i64, ptr %_M_string_length.i10.i.i.i.i.i.i.i.i, align 8, !tbaa !10 - br i1 %cmp16.i.i, label %while.body.lr.ph.i.i, label %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit + %add.ptr.i.i.i.i42.idx = mul nsw i64 %conv9, 72 + %gepdiff = sub nsw i64 %add.ptr.i.i.i.i42.idx, %add.ptr.i.i.i.i.idx + %cmp16.i.i = icmp sgt i64 %gepdiff, 0 + br i1 %cmp16.i.i, label %while.body.lr.ph.i.i, label %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge + +_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge: ; preds = %if.end + %_M_string_length.i10.i.i.i.i.i.phi.trans.insert = getelementptr inbounds i8, ptr %element, i64 40 + %.pre = load i64, ptr %_M_string_length.i10.i.i.i.i.i.phi.trans.insert, align 8, !tbaa !10 + br label %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit while.body.lr.ph.i.i: ; preds = %if.end + %sub.ptr.div.i.i.i.i.i = udiv exact i64 %gepdiff, 72 + %_M_string_length.i10.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %element, i64 40 + %1 = load i64, ptr %_M_string_length.i10.i.i.i.i.i.i.i.i, align 8, !tbaa !10 %InternalName2.i.i.i.i.i = getelementptr inbounds i8, ptr %element, i64 32 %2 = load ptr, ptr %InternalName2.i.i.i.i.i, align 8 br label %while.body.i.i while.body.i.i: ; preds = %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i, %while.body.lr.ph.i.i - %__len.018.i.i = phi i64 [ %add.ptr.i.i.i.i42.idx1, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] + %__len.018.i.i = phi i64 [ %sub.ptr.div.i.i.i.i.i, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] %__first.sroa.0.017.i.i = phi ptr [ %add.ptr.i.i.i.i, %while.body.lr.ph.i.i ], [ %__first.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] %shr.i.i = lshr i64 %__len.018.i.i, 1 %add.ptr.i.i.i.i.i = getelementptr inbounds %"struct.irr::scene::CMeshCache::MeshEntry", ptr %__first.sroa.0.017.i.i, i64 %shr.i.i @@ -3621,37 +3628,38 @@ _ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5scene10CMe %cmp.i.i = icmp sgt i64 %__len.1.i.i, 0 br i1 %cmp.i.i, label %while.body.i.i, label %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit, !llvm.loop !76 -_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit: ; preds = %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i, %if.end - %__first.sroa.0.0.lcssa.i.i = phi ptr [ %add.ptr.i.i.i.i, %if.end ], [ %__first.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] +_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit: ; preds = %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i, %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge + %6 = phi i64 [ %.pre, %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge ], [ %1, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] + %__first.sroa.0.0.lcssa.i.i = phi ptr [ %add.ptr.i.i.i.i, %_ZSt4nextIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEEET_SC_NSt15iterator_traitsISC_E15difference_typeE.exit48._ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit_crit_edge ], [ %__first.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] %_M_string_length.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.0.lcssa.i.i, i64 40 - %6 = load i64, ptr %_M_string_length.i.i.i.i.i.i, align 8, !tbaa !10 - %.sroa.speculated.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %1, i64 %6) + %7 = load i64, ptr %_M_string_length.i.i.i.i.i.i, align 8, !tbaa !10 + %.sroa.speculated.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %6, i64 %7) %cmp.i11.i.i.i.i.i = icmp eq i64 %.sroa.speculated.i.i.i.i.i, 0 br i1 %cmp.i11.i.i.i.i.i, label %_ZNK3irr5scene10CMeshCache9MeshEntryltERKS2_.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i: ; preds = %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit %InternalName2.i.i = getelementptr inbounds i8, ptr %element, i64 32 %InternalName.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.0.lcssa.i.i, i64 32 - %7 = load ptr, ptr %InternalName2.i.i, align 8, !tbaa !3 - %8 = load ptr, ptr %InternalName.i.i, align 8, !tbaa !3 - %call.i.i.i.i.i.i = tail call i32 @memcmp(ptr noundef %8, ptr noundef %7, i64 noundef %.sroa.speculated.i.i.i.i.i) #18 + %8 = load ptr, ptr %InternalName2.i.i, align 8, !tbaa !3 + %9 = load ptr, ptr %InternalName.i.i, align 8, !tbaa !3 + %call.i.i.i.i.i.i = tail call i32 @memcmp(ptr noundef %9, ptr noundef %8, i64 noundef %.sroa.speculated.i.i.i.i.i) #18 %tobool.not.i.i.i.i.i = icmp eq i32 %call.i.i.i.i.i.i, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZNK3irr5scene10CMeshCache9MeshEntryltERKS2_.exit.thread71, label %_ZNK3irr5scene10CMeshCache9MeshEntryltERKS2_.exit.thread _ZNK3irr5scene10CMeshCache9MeshEntryltERKS2_.exit: ; preds = %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5scene10CMeshCache9MeshEntryESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit - %sub.i.i.i.i.i.i = sub i64 %6, %1 + %sub.i.i.i.i.i.i = sub i64 %7, %6 %spec.select6.i.i.i.i.i.i = tail call i64 @llvm.smax.i64(i64 %sub.i.i.i.i.i.i, i64 -2147483648) %retval.07.i.i.i.i.i.i = tail call i64 @llvm.smin.i64(i64 %spec.select6.i.i.i.i.i.i, i64 2147483647) - %9 = and i64 %retval.07.i.i.i.i.i.i, 2147483648 - %cmp.i.i.i.i49.not = icmp eq i64 %9, 0 + %10 = and i64 %retval.07.i.i.i.i.i.i, 2147483648 + %cmp.i.i.i.i49.not = icmp eq i64 %10, 0 br i1 %cmp.i.i.i.i49.not, label %if.then.i.i.i.i.i61, label %return _ZNK3irr5scene10CMeshCache9MeshEntryltERKS2_.exit.thread71: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i - %sub.i.i.i.i.i.i72 = sub i64 %6, %1 + %sub.i.i.i.i.i.i72 = sub i64 %7, %6 %spec.select6.i.i.i.i.i.i73 = tail call i64 @llvm.smax.i64(i64 %sub.i.i.i.i.i.i72, i64 -2147483648) %retval.07.i.i.i.i.i.i74 = tail call i64 @llvm.smin.i64(i64 %spec.select6.i.i.i.i.i.i73, i64 2147483647) - %10 = and i64 %retval.07.i.i.i.i.i.i74, 2147483648 - %cmp.i.i.i.i4976.not = icmp eq i64 %10, 0 + %11 = and i64 %retval.07.i.i.i.i.i.i74, 2147483648 + %cmp.i.i.i.i4976.not = icmp eq i64 %11, 0 br i1 %cmp.i.i.i.i4976.not, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54, label %return _ZNK3irr5scene10CMeshCache9MeshEntryltERKS2_.exit.thread: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i @@ -3659,12 +3667,12 @@ _ZNK3irr5scene10CMeshCache9MeshEntryltERKS2_.exit.thread: ; preds = %_ZNSt11char br i1 %cmp.i.i.i.i4970, label %return, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54: ; preds = %_ZNK3irr5scene10CMeshCache9MeshEntryltERKS2_.exit.thread, %_ZNK3irr5scene10CMeshCache9MeshEntryltERKS2_.exit.thread71 - %call.i.i.i.i.i.i57 = tail call i32 @memcmp(ptr noundef %7, ptr noundef %8, i64 noundef %.sroa.speculated.i.i.i.i.i) #18 + %call.i.i.i.i.i.i57 = tail call i32 @memcmp(ptr noundef %8, ptr noundef %9, i64 noundef %.sroa.speculated.i.i.i.i.i) #18 %tobool.not.i.i.i.i.i58 = icmp eq i32 %call.i.i.i.i.i.i57, 0 br i1 %tobool.not.i.i.i.i.i58, label %if.then.i.i.i.i.i61, label %_ZNK3irr5scene10CMeshCache9MeshEntryltERKS2_.exit66 if.then.i.i.i.i.i61: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54, %_ZNK3irr5scene10CMeshCache9MeshEntryltERKS2_.exit - %sub.i.i.i.i.i.i62 = sub i64 %1, %6 + %sub.i.i.i.i.i.i62 = sub i64 %6, %7 %spec.select6.i.i.i.i.i.i63 = tail call i64 @llvm.smax.i64(i64 %sub.i.i.i.i.i.i62, i64 -2147483648) %retval.07.i.i.i.i.i.i64 = tail call i64 @llvm.smin.i64(i64 %spec.select6.i.i.i.i.i.i63, i64 2147483647) %retval.0.i12.i.i.i.i.i65 = trunc nsw i64 %retval.07.i.i.i.i.i.i64 to i32 diff --git a/bench/minetest/optimized/CNullDriver.cpp.ll b/bench/minetest/optimized/CNullDriver.cpp.ll index cbb01a09776..5b9ca9c9b39 100644 --- a/bench/minetest/optimized/CNullDriver.cpp.ll +++ b/bench/minetest/optimized/CNullDriver.cpp.ll @@ -12660,11 +12660,13 @@ if.end: ; preds = %entry %add.ptr.i.i.i.i.idx = shl nsw i64 %conv, 3 %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.i.i.i.idx %conv9 = sext i32 %right to i64 - %1 = sub nsw i64 %conv9, %conv - %cmp16.i.i = icmp sgt i64 %1, 0 + %add.ptr.i.i.i.i42.idx = shl nsw i64 %conv9, 3 + %gepdiff = sub nsw i64 %add.ptr.i.i.i.i42.idx, %add.ptr.i.i.i.i.idx + %sub.ptr.div.i.i.i.i.i = ashr exact i64 %gepdiff, 3 + %cmp16.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 %.pre = load ptr, ptr %element, align 8, !tbaa !158 %_M_string_length.i10.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %.pre, i64 48 - %2 = load i64, ptr %_M_string_length.i10.i.i.i.i.i.i.i.i, align 8, !tbaa !138 + %1 = load i64, ptr %_M_string_length.i10.i.i.i.i.i.i.i.i, align 8, !tbaa !138 br i1 %cmp16.i.i, label %while.body.lr.ph.i.i, label %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5video11CNullDriver8SSurfaceESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit while.body.lr.ph.i.i: ; preds = %if.end @@ -12672,27 +12674,27 @@ while.body.lr.ph.i.i: ; preds = %if.end br label %while.body.i.i while.body.i.i: ; preds = %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5video11CNullDriver8SSurfaceESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i, %while.body.lr.ph.i.i - %__len.018.i.i = phi i64 [ %1, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5video11CNullDriver8SSurfaceESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] + %__len.018.i.i = phi i64 [ %sub.ptr.div.i.i.i.i.i, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5video11CNullDriver8SSurfaceESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] %__first.sroa.0.017.i.i = phi ptr [ %add.ptr.i.i.i.i, %while.body.lr.ph.i.i ], [ %__first.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5video11CNullDriver8SSurfaceESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] %shr.i.i = lshr i64 %__len.018.i.i, 1 %add.ptr.i.i.i.i.i = getelementptr inbounds %"struct.irr::video::CNullDriver::SSurface", ptr %__first.sroa.0.017.i.i, i64 %shr.i.i - %3 = load ptr, ptr %add.ptr.i.i.i.i.i, align 8, !tbaa !158 - %_M_string_length.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %3, i64 48 - %4 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i, align 8, !tbaa !138 - %.sroa.speculated.i.i.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %2, i64 %4) + %2 = load ptr, ptr %add.ptr.i.i.i.i.i, align 8, !tbaa !158 + %_M_string_length.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %2, i64 48 + %3 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i, align 8, !tbaa !138 + %.sroa.speculated.i.i.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %1, i64 %3) %cmp.i11.i.i.i.i.i.i.i.i = icmp eq i64 %.sroa.speculated.i.i.i.i.i.i.i.i, 0 br i1 %cmp.i11.i.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i: ; preds = %while.body.i.i - %InternalName.i.i.i.i.i = getelementptr inbounds i8, ptr %3, i64 40 - %5 = load ptr, ptr %InternalName2.i.i.i.i.i, align 8, !tbaa !135 - %6 = load ptr, ptr %InternalName.i.i.i.i.i, align 8, !tbaa !135 - %call.i.i.i.i.i.i.i.i.i = tail call i32 @memcmp(ptr noundef %6, ptr noundef %5, i64 noundef %.sroa.speculated.i.i.i.i.i.i.i.i) #24 + %InternalName.i.i.i.i.i = getelementptr inbounds i8, ptr %2, i64 40 + %4 = load ptr, ptr %InternalName2.i.i.i.i.i, align 8, !tbaa !135 + %5 = load ptr, ptr %InternalName.i.i.i.i.i, align 8, !tbaa !135 + %call.i.i.i.i.i.i.i.i.i = tail call i32 @memcmp(ptr noundef %5, ptr noundef %4, i64 noundef %.sroa.speculated.i.i.i.i.i.i.i.i) #24 %tobool.not.i.i.i.i.i.i.i.i = icmp eq i32 %call.i.i.i.i.i.i.i.i.i, 0 br i1 %tobool.not.i.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i, label %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5video11CNullDriver8SSurfaceESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i, %while.body.i.i - %sub.i.i.i.i.i.i.i.i.i = sub i64 %4, %2 + %sub.i.i.i.i.i.i.i.i.i = sub i64 %3, %1 %spec.select6.i.i.i.i.i.i.i.i.i = tail call i64 @llvm.smax.i64(i64 %sub.i.i.i.i.i.i.i.i.i, i64 -2147483648) %retval.07.i.i.i.i.i.i.i.i.i = tail call i64 @llvm.smin.i64(i64 %spec.select6.i.i.i.i.i.i.i.i.i, i64 2147483647) %retval.0.i12.i.i.i.i.i.i.i.i = trunc nsw i64 %retval.07.i.i.i.i.i.i.i.i.i to i32 @@ -12702,8 +12704,8 @@ _ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5video11CNu %__r.0.i.i.i.i.i.i.i.i = phi i32 [ %call.i.i.i.i.i.i.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i ], [ %retval.0.i12.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i = icmp slt i32 %__r.0.i.i.i.i.i.i.i.i, 0 %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i, i64 8 - %7 = xor i64 %shr.i.i, -1 - %sub9.i.i = add nsw i64 %__len.018.i.i, %7 + %6 = xor i64 %shr.i.i, -1 + %sub9.i.i = add nsw i64 %__len.018.i.i, %6 %__first.sroa.0.1.i.i = select i1 %cmp.i.i.i.i.i.i.i, ptr %incdec.ptr.i.i.i, ptr %__first.sroa.0.017.i.i %__len.1.i.i = select i1 %cmp.i.i.i.i.i.i.i, i64 %sub9.i.i, i64 %shr.i.i %cmp.i.i = icmp sgt i64 %__len.1.i.i, 0 @@ -12711,36 +12713,36 @@ _ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5video11CNu _ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5video11CNullDriver8SSurfaceESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit: ; preds = %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5video11CNullDriver8SSurfaceESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i, %if.end %__first.sroa.0.0.lcssa.i.i = phi ptr [ %add.ptr.i.i.i.i, %if.end ], [ %__first.sroa.0.1.i.i, %_ZNK9__gnu_cxx5__ops14_Iter_less_valclINS_17__normal_iteratorIPKN3irr5video11CNullDriver8SSurfaceESt6vectorIS7_SaIS7_EEEES8_EEbT_RT0_.exit.i.i ] - %8 = load ptr, ptr %__first.sroa.0.0.lcssa.i.i, align 8, !tbaa !158 - %_M_string_length.i.i.i.i.i.i = getelementptr inbounds i8, ptr %8, i64 48 - %9 = load i64, ptr %_M_string_length.i.i.i.i.i.i, align 8, !tbaa !138 - %.sroa.speculated.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %2, i64 %9) + %7 = load ptr, ptr %__first.sroa.0.0.lcssa.i.i, align 8, !tbaa !158 + %_M_string_length.i.i.i.i.i.i = getelementptr inbounds i8, ptr %7, i64 48 + %8 = load i64, ptr %_M_string_length.i.i.i.i.i.i, align 8, !tbaa !138 + %.sroa.speculated.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %1, i64 %8) %cmp.i11.i.i.i.i.i = icmp eq i64 %.sroa.speculated.i.i.i.i.i, 0 br i1 %cmp.i11.i.i.i.i.i, label %_ZNK3irr5video11CNullDriver8SSurfaceltERKS2_.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i: ; preds = %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5video11CNullDriver8SSurfaceESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit %InternalName2.i.i = getelementptr inbounds i8, ptr %.pre, i64 40 - %InternalName.i.i = getelementptr inbounds i8, ptr %8, i64 40 - %10 = load ptr, ptr %InternalName2.i.i, align 8, !tbaa !135 - %11 = load ptr, ptr %InternalName.i.i, align 8, !tbaa !135 - %call.i.i.i.i.i.i = tail call i32 @memcmp(ptr noundef %11, ptr noundef %10, i64 noundef %.sroa.speculated.i.i.i.i.i) #24 + %InternalName.i.i = getelementptr inbounds i8, ptr %7, i64 40 + %9 = load ptr, ptr %InternalName2.i.i, align 8, !tbaa !135 + %10 = load ptr, ptr %InternalName.i.i, align 8, !tbaa !135 + %call.i.i.i.i.i.i = tail call i32 @memcmp(ptr noundef %10, ptr noundef %9, i64 noundef %.sroa.speculated.i.i.i.i.i) #24 %tobool.not.i.i.i.i.i = icmp eq i32 %call.i.i.i.i.i.i, 0 br i1 %tobool.not.i.i.i.i.i, label %_ZNK3irr5video11CNullDriver8SSurfaceltERKS2_.exit.thread71, label %_ZNK3irr5video11CNullDriver8SSurfaceltERKS2_.exit.thread _ZNK3irr5video11CNullDriver8SSurfaceltERKS2_.exit: ; preds = %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN3irr5video11CNullDriver8SSurfaceESt6vectorIS5_SaIS5_EEEES5_ET_SC_SC_RKT0_.exit - %sub.i.i.i.i.i.i = sub i64 %9, %2 + %sub.i.i.i.i.i.i = sub i64 %8, %1 %spec.select6.i.i.i.i.i.i = tail call i64 @llvm.smax.i64(i64 %sub.i.i.i.i.i.i, i64 -2147483648) %retval.07.i.i.i.i.i.i = tail call i64 @llvm.smin.i64(i64 %spec.select6.i.i.i.i.i.i, i64 2147483647) - %12 = and i64 %retval.07.i.i.i.i.i.i, 2147483648 - %cmp.i.i.i.i49.not = icmp eq i64 %12, 0 + %11 = and i64 %retval.07.i.i.i.i.i.i, 2147483648 + %cmp.i.i.i.i49.not = icmp eq i64 %11, 0 br i1 %cmp.i.i.i.i49.not, label %if.then.i.i.i.i.i61, label %return _ZNK3irr5video11CNullDriver8SSurfaceltERKS2_.exit.thread71: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i - %sub.i.i.i.i.i.i72 = sub i64 %9, %2 + %sub.i.i.i.i.i.i72 = sub i64 %8, %1 %spec.select6.i.i.i.i.i.i73 = tail call i64 @llvm.smax.i64(i64 %sub.i.i.i.i.i.i72, i64 -2147483648) %retval.07.i.i.i.i.i.i74 = tail call i64 @llvm.smin.i64(i64 %spec.select6.i.i.i.i.i.i73, i64 2147483647) - %13 = and i64 %retval.07.i.i.i.i.i.i74, 2147483648 - %cmp.i.i.i.i4976.not = icmp eq i64 %13, 0 + %12 = and i64 %retval.07.i.i.i.i.i.i74, 2147483648 + %cmp.i.i.i.i4976.not = icmp eq i64 %12, 0 br i1 %cmp.i.i.i.i4976.not, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54, label %return _ZNK3irr5video11CNullDriver8SSurfaceltERKS2_.exit.thread: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i @@ -12748,12 +12750,12 @@ _ZNK3irr5video11CNullDriver8SSurfaceltERKS2_.exit.thread: ; preds = %_ZNSt11char br i1 %cmp.i.i.i.i4970, label %return, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54: ; preds = %_ZNK3irr5video11CNullDriver8SSurfaceltERKS2_.exit.thread, %_ZNK3irr5video11CNullDriver8SSurfaceltERKS2_.exit.thread71 - %call.i.i.i.i.i.i57 = tail call i32 @memcmp(ptr noundef %10, ptr noundef %11, i64 noundef %.sroa.speculated.i.i.i.i.i) #24 + %call.i.i.i.i.i.i57 = tail call i32 @memcmp(ptr noundef %9, ptr noundef %10, i64 noundef %.sroa.speculated.i.i.i.i.i) #24 %tobool.not.i.i.i.i.i58 = icmp eq i32 %call.i.i.i.i.i.i57, 0 br i1 %tobool.not.i.i.i.i.i58, label %if.then.i.i.i.i.i61, label %_ZNK3irr5video11CNullDriver8SSurfaceltERKS2_.exit66 if.then.i.i.i.i.i61: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i54, %_ZNK3irr5video11CNullDriver8SSurfaceltERKS2_.exit - %sub.i.i.i.i.i.i62 = sub i64 %2, %9 + %sub.i.i.i.i.i.i62 = sub i64 %1, %8 %spec.select6.i.i.i.i.i.i63 = tail call i64 @llvm.smax.i64(i64 %sub.i.i.i.i.i.i62, i64 -2147483648) %retval.07.i.i.i.i.i.i64 = tail call i64 @llvm.smin.i64(i64 %spec.select6.i.i.i.i.i.i63, i64 2147483647) %retval.0.i12.i.i.i.i.i65 = trunc nsw i64 %retval.07.i.i.i.i.i.i64 to i32 diff --git a/bench/minetest/optimized/voxel.cpp.ll b/bench/minetest/optimized/voxel.cpp.ll index 5323300918c..3d5cb578965 100644 --- a/bench/minetest/optimized/voxel.cpp.ll +++ b/bench/minetest/optimized/voxel.cpp.ll @@ -1061,37 +1061,38 @@ for.cond31.preheader.preheader: ; preds = %for.cond31.preheade %mul.i = mul nsw i32 %sub.i, %conv3.i %.neg = add nsw i32 %mul.i, %conv7.i %conv17 = zext nneg i16 %7 to i32 + %9 = add nsw i32 %conv10.i, %conv17 + %reass.add = sub i32 %.neg, %9 + %reass.mul = mul i32 %reass.add, %conv5 %from_pos.sroa.0.0.extract.trunc = trunc i48 %from_pos.coerce to i32 %sext132 = shl i32 %from_pos.sroa.0.0.extract.trunc, 16 %conv16.i107 = ashr exact i32 %sext132, 16 - %9 = load i16, ptr %src_area, align 2, !tbaa !47 - %conv19.i108 = sext i16 %9 to i32 + %10 = load i16, ptr %src_area, align 2, !tbaa !47 + %conv19.i108 = sext i16 %10 to i32 %sub20.i109 = sub nsw i32 %conv16.i107, %conv19.i108 %sh.diff = lshr i48 %from_pos.coerce, 16 %tr.sh.diff = trunc nuw i48 %sh.diff to i32 %conv.i92 = ashr i32 %tr.sh.diff, 16 %Z.i93 = getelementptr inbounds i8, ptr %src_area, i64 4 - %10 = load i16, ptr %Z.i93, align 2, !tbaa !43 - %conv2.i94 = sext i16 %10 to i32 + %11 = load i16, ptr %Z.i93, align 2, !tbaa !43 + %conv2.i94 = sext i16 %11 to i32 %sub.i95 = sub nsw i32 %conv.i92, %conv2.i94 %Y.i97 = getelementptr inbounds i8, ptr %src_area, i64 14 - %11 = load i16, ptr %Y.i97, align 2, !tbaa !44 - %conv3.i98 = sext i16 %11 to i32 + %12 = load i16, ptr %Y.i97, align 2, !tbaa !44 + %conv3.i98 = sext i16 %12 to i32 %mul.i99 = mul nsw i32 %sub.i95, %conv3.i98 %conv7.i101 = ashr i32 %from_pos.sroa.0.0.extract.trunc, 16 %sub11.i104 = add nsw i32 %mul.i99, %conv7.i101 %Y9.i102 = getelementptr inbounds i8, ptr %src_area, i64 2 - %12 = load i16, ptr %Y9.i102, align 2, !tbaa !46 - %conv10.i103 = sext i16 %12 to i32 + %13 = load i16, ptr %Y9.i102, align 2, !tbaa !46 + %conv10.i103 = sext i16 %13 to i32 %mul622.i105 = sub i32 %sub11.i104, %conv10.i103 %conv = sext i16 %0 to i32 %add.i106 = mul i32 %mul622.i105, %conv %add21.i110 = add nsw i32 %sub20.i109, %add.i106 - %13 = sext i16 %1 to i64 - %14 = sext i16 %0 to i64 - %15 = add i32 %sub11.i85, %conv17 - %reass.mul5 = sub i32 %.neg, %15 - %sub18 = mul i32 %reass.mul5, %conv5 + %14 = sext i16 %1 to i64 + %15 = sext i16 %0 to i64 + %sub18 = sub i32 %reass.mul, %add.i87 br label %for.cond31.preheader for.cond31.preheader: ; preds = %for.cond.cleanup36, %for.cond31.preheader.preheader @@ -1143,8 +1144,8 @@ for.body37: ; preds = %for.body37, %for.bo %27 = load i16, ptr %size, align 2, !tbaa !16 %conv46 = sext i16 %27 to i64 tail call void @llvm.memset.p0.i64(ptr align 1 %arrayidx44, i8 0, i64 %conv46, i1 false) - %indvars.iv.next144 = add nsw i64 %indvars.iv143, %14 - %indvars.iv.next = add nsw i64 %indvars.iv, %13 + %indvars.iv.next144 = add nsw i64 %indvars.iv143, %15 + %indvars.iv.next = add nsw i64 %indvars.iv, %14 %inc = add nuw nsw i16 %y.0136, 1 %28 = load i16, ptr %Y16, align 2, !tbaa !17 %cmp35 = icmp slt i16 %inc, %28 diff --git a/bench/mitsuba3/optimized/string.cpp.ll b/bench/mitsuba3/optimized/string.cpp.ll index 4efc0210a9b..42adf617aa5 100644 --- a/bench/mitsuba3/optimized/string.cpp.ll +++ b/bench/mitsuba3/optimized/string.cpp.ll @@ -5472,17 +5472,21 @@ _ZN10fast_float9small_mulILt62EEEbRNS_8stackvecIXT_EEEm.exit29.thread.us: ; pred 69: ; preds = %66 %70 = icmp ugt i64 %67, %62 - br i1 %70, label %.lr.ph.i.i.i.i.preheader.i.i.i.us, label %.sink.split.i.us + br i1 %70, label %71, label %.sink.split.i.us -.lr.ph.i.i.i.i.preheader.i.i.i.us: ; preds = %69 +71: ; preds = %69 %.idx8.i.i.i.us = shl nuw nsw i64 %62, 3 - %71 = getelementptr i8, ptr %0, i64 %.idx8.i.i.i.us - %72 = sub nuw nsw i64 %67, %62 - %73 = shl nuw nsw i64 %72, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %71, i8 0, i64 %73, i1 false) + %.idx.i.i.i.us = shl nuw nsw i64 %67, 3 + %gepdiff.i.i.i.us = sub nsw i64 %.idx.i.i.i.us, %.idx8.i.i.i.us + %72 = icmp sgt i64 %gepdiff.i.i.i.us, 0 + br i1 %72, label %.lr.ph.i.i.i.i.preheader.i.i.i.us, label %.sink.split.i.us + +.lr.ph.i.i.i.i.preheader.i.i.i.us: ; preds = %71 + %73 = getelementptr i8, ptr %0, i64 %.idx8.i.i.i.us + tail call void @llvm.memset.p0.i64(ptr align 8 %73, i8 0, i64 %gepdiff.i.i.i.us, i1 false) br label %.sink.split.i.us -.sink.split.i.us: ; preds = %.lr.ph.i.i.i.i.preheader.i.i.i.us, %69 +.sink.split.i.us: ; preds = %.lr.ph.i.i.i.i.preheader.i.i.i.us, %71, %69 %storemerge.i.i.i.us = trunc nuw i64 %67 to i16 store i16 %storemerge.i.i.i.us, ptr %6, align 8 br label %74 diff --git a/bench/mold/optimized/arch-arm32.cc.ll b/bench/mold/optimized/arch-arm32.cc.ll index c0db9dd5321..81620ca1a02 100644 --- a/bench/mold/optimized/arch-arm32.cc.ll +++ b/bench/mold/optimized/arch-arm32.cc.ll @@ -393,28 +393,28 @@ sw.bb6: ; preds = %entry, %entry, %ent %x.0.copyload.i20 = load i16, ptr %loc, align 1 %conv8 = zext i16 %x.0.copyload.i20 to i64 %shr.i21 = lshr i64 %conv8, 10 + %and.i = and i64 %shr.i21, 1 %add.ptr = getelementptr inbounds i8, ptr %loc, i64 2 %x.0.copyload.i22 = load i16, ptr %add.ptr, align 1 %conv12 = zext i16 %x.0.copyload.i22 to i64 %shr.i23 = lshr i64 %conv12, 13 + %and.i24 = and i64 %shr.i23, 1 %shr.i26 = lshr i64 %conv12, 11 - %and.i2464 = xor i64 %shr.i23, %shr.i21 - %and.i2765 = xor i64 %shr.i26, %shr.i21 - %and.i = shl i64 %shr.i21, 63 - %xor17 = shl i64 %and.i2464, 62 - %1 = and i64 %xor17, 4611686018427387904 - %2 = or disjoint i64 %1, %and.i - %xor2118 = shl i64 %and.i2765, 61 - %3 = and i64 %xor2118, 2305843009213693952 - %4 = or disjoint i64 %2, %3 + %and.i27 = and i64 %shr.i26, 1 + %tobool.not = icmp eq i64 %and.i24, %and.i + %tobool22.not = icmp eq i64 %and.i27, %and.i + %shl34 = shl i64 %shr.i21, 63 + %shl35 = select i1 %tobool.not, i64 4611686018427387904, i64 0 + %or = or disjoint i64 %shl35, %shl34 + %shl36 = select i1 %tobool22.not, i64 2305843009213693952, i64 0 + %or37 = or disjoint i64 %or, %shl36 %and.i30 = shl i64 %conv8, 51 %shl38 = and i64 %and.i30, 2303591209400008704 - %5 = or disjoint i64 %4, %shl38 + %or39 = or disjoint i64 %or37, %shl38 %and.i33 = shl nuw nsw i64 %conv12, 40 %shl40 = and i64 %and.i33, 2250700302057472 - %6 = or disjoint i64 %5, %shl40 - %conv42 = ashr exact i64 %6, 39 - %shr.i35 = xor i64 %conv42, 12582912 + %conv42 = or disjoint i64 %or39, %shl40 + %shr.i35 = ashr exact i64 %conv42, 39 br label %return sw.bb44: ; preds = %entry, %entry, %entry, %entry @@ -428,8 +428,8 @@ sw.bb49: ; preds = %entry, %entry, %ent %x.0.copyload.i39 = load i32, ptr %loc, align 1 %conv51 = zext i32 %x.0.copyload.i39 to i64 %and.i41 = and i64 %conv51, 4095 - %7 = lshr i64 %conv51, 4 - %shl58 = and i64 %7, 61440 + %1 = lshr i64 %conv51, 4 + %shl58 = and i64 %1, 61440 %or59 = or disjoint i64 %shl58, %and.i41 %shl.i45 = shl nuw i64 %or59, 48 %shr.i46 = ashr exact i64 %shl.i45, 48 @@ -451,10 +451,10 @@ sw.bb66: ; preds = %entry, %entry, %ent %and.i61 = and i64 %conv78, 255 %and.i52 = shl nuw nsw i64 %conv69, 12 %shl87 = and i64 %and.i52, 61440 - %8 = shl nuw nsw i64 %conv69, 1 - %shl88 = and i64 %8, 2048 - %9 = lshr i64 %conv78, 4 - %shl90 = and i64 %9, 1792 + %2 = shl nuw nsw i64 %conv69, 1 + %shl88 = and i64 %2, 2048 + %3 = lshr i64 %conv78, 4 + %shl90 = and i64 %3, 1792 %or91 = or disjoint i64 %shl87, %shl88 %or89 = or disjoint i64 %or91, %and.i61 %or92 = or disjoint i64 %or89, %shl90 diff --git a/bench/ockam-rs/optimized/1145kugil9dl94a2.ll b/bench/ockam-rs/optimized/1145kugil9dl94a2.ll index fc0bddce4c6..4246ab4ba0f 100644 --- a/bench/ockam-rs/optimized/1145kugil9dl94a2.ll +++ b/bench/ockam-rs/optimized/1145kugil9dl94a2.ll @@ -71195,7 +71195,7 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17he61c99dca 14: ; preds = %2 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h133f2e999a69e908E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %9, i64 noundef %7) - to label %"._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd58c741d8a8d8c26E.exit_crit_edge" unwind label %27 + to label %"._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd58c741d8a8d8c26E.exit_crit_edge" unwind label %28 "._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd58c741d8a8d8c26E.exit_crit_edge": ; preds = %14 %.pre = load i64, ptr %8, align 8 @@ -71214,7 +71214,7 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17he61c99dca %18 = load i64, ptr %17, align 8, !alias.scope !16891, !noalias !16894, !noundef !7 %.promoted.i.i.i.i = load i64, ptr %3, align 8, !alias.scope !16891, !noalias !16894 %.not.i4.i.i.i.i = icmp eq i64 %18, %.promoted.i.i.i.i - br i1 %.not.i4.i.i.i.i, label %25, label %.lr.ph.i.i.i.i + br i1 %.not.i4.i.i.i.i, label %26, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd58c741d8a8d8c26E.exit" %19 = getelementptr inbounds i8, ptr %3, i64 16 @@ -71222,29 +71222,30 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17he61c99dca %scevgep.i.i.i.i = getelementptr i8, ptr %16, i64 %20 %21 = shl i64 %.promoted.i.i.i.i, 2 %scevgep8.i.i.i.i = getelementptr i8, ptr %19, i64 %21 - %22 = sub i64 %18, %.promoted.i.i.i.i - %23 = shl i64 %22, 2 + %22 = shl i64 %18, 2 + %23 = sub i64 %22, %21 call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep.i.i.i.i, ptr readonly align 4 %scevgep8.i.i.i.i, i64 %23, i1 false), !noalias !16901 - %24 = add i64 %22, %15 - br label %25 + %24 = add i64 %18, %15 + %25 = sub i64 %24, %.promoted.i.i.i.i + br label %26 -25: ; preds = %.lr.ph.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd58c741d8a8d8c26E.exit" - %.val3.i.i = phi i64 [ %24, %.lr.ph.i.i.i.i ], [ %15, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd58c741d8a8d8c26E.exit" ] +26: ; preds = %.lr.ph.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd58c741d8a8d8c26E.exit" + %.val3.i.i = phi i64 [ %25, %.lr.ph.i.i.i.i ], [ %15, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd58c741d8a8d8c26E.exit" ] store i64 %.val3.i.i, ptr %8, align 8, !noalias !16902 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) ret void -26: ; preds = %27 - resume { ptr, i32 } %28 +27: ; preds = %28 + resume { ptr, i32 } %29 -27: ; preds = %14 - %28 = landingpad { ptr, i32 } +28: ; preds = %14 + %29 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr87drop_in_place$LT$core..array..iter..IntoIter$LT$ockam_multiaddr..Code$C$3_usize$GT$$GT$17h0f07628affbfe161E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1) #57 - to label %26 unwind label %29 + to label %27 unwind label %30 -29: ; preds = %27 - %30 = landingpad { ptr, i32 } +30: ; preds = %28 + %31 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hceade526831b1e89E() #58 unreachable @@ -96156,7 +96157,7 @@ define hidden void @"_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..ve 14: ; preds = %2 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h133f2e999a69e908E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %9, i64 noundef %7) - to label %"._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd58c741d8a8d8c26E.exit_crit_edge.i" unwind label %26, !noalias !23320 + to label %"._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd58c741d8a8d8c26E.exit_crit_edge.i" unwind label %27, !noalias !23320 "._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd58c741d8a8d8c26E.exit_crit_edge.i": ; preds = %14 %.pre.i = load i64, ptr %8, align 8, !alias.scope !23317, !noalias !23320 @@ -96183,29 +96184,30 @@ define hidden void @"_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..ve %scevgep.i.i.i.i.i = getelementptr i8, ptr %16, i64 %20 %21 = shl i64 %.promoted.i.i.i.i.i, 2 %scevgep8.i.i.i.i.i = getelementptr i8, ptr %19, i64 %21 - %22 = sub i64 %18, %.promoted.i.i.i.i.i - %23 = shl i64 %22, 2 + %22 = shl i64 %18, 2 + %23 = sub i64 %22, %21 call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep.i.i.i.i.i, ptr readonly align 4 %scevgep8.i.i.i.i.i, i64 %23, i1 false), !noalias !23353 - %24 = add i64 %22, %15 + %24 = add i64 %18, %15 + %25 = sub i64 %24, %.promoted.i.i.i.i.i br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17he61c99dcaf799c06E.llvm.9060417697508566391.exit" -25: ; preds = %26 - resume { ptr, i32 } %27 +26: ; preds = %27 + resume { ptr, i32 } %28 -26: ; preds = %14 - %27 = landingpad { ptr, i32 } +27: ; preds = %14 + %28 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr87drop_in_place$LT$core..array..iter..IntoIter$LT$ockam_multiaddr..Code$C$3_usize$GT$$GT$17h0f07628affbfe161E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1) #57 - to label %25 unwind label %28 + to label %26 unwind label %29 -28: ; preds = %26 - %29 = landingpad { ptr, i32 } +29: ; preds = %27 + %30 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hceade526831b1e89E() #58 unreachable "_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17he61c99dcaf799c06E.llvm.9060417697508566391.exit": ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd58c741d8a8d8c26E.exit.i", %.lr.ph.i.i.i.i.i - %.val3.i.i.i = phi i64 [ %24, %.lr.ph.i.i.i.i.i ], [ %15, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd58c741d8a8d8c26E.exit.i" ] + %.val3.i.i.i = phi i64 [ %25, %.lr.ph.i.i.i.i.i ], [ %15, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd58c741d8a8d8c26E.exit.i" ] store i64 %.val3.i.i.i, ptr %8, align 8, !alias.scope !23317, !noalias !23354 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3), !noalias !23330 ret void diff --git a/bench/ockam-rs/optimized/37q648fnmlksdgjw.ll b/bench/ockam-rs/optimized/37q648fnmlksdgjw.ll index 403388f6477..7c54ad3d152 100644 --- a/bench/ockam-rs/optimized/37q648fnmlksdgjw.ll +++ b/bench/ockam-rs/optimized/37q648fnmlksdgjw.ll @@ -903,8 +903,8 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$ %scevgep = getelementptr i8, ptr %13, i64 %14 %15 = shl i64 %.promoted.i.i.i, 5 %scevgep34 = getelementptr i8, ptr %4, i64 %15 - %16 = sub i64 %10, %.promoted.i.i.i - %17 = shl i64 %16, 5 + %16 = shl i64 %10, 5 + %17 = sub i64 %16, %15 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep, ptr align 8 %scevgep34, i64 %17, i1 false), !noalias !33 %18 = add i64 %10, %.pre.i.i.i %19 = sub i64 %18, %.promoted.i.i.i @@ -915,7 +915,7 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$ %20 = getelementptr inbounds i8, ptr %0, i64 56 %21 = load i64, ptr %20, align 8, !range !9, !noundef !5 %.not12.not = icmp eq i64 %21, 0 - br i1 %.not12.not, label %34, label %22 + br i1 %.not12.not, label %35, label %22 22: ; preds = %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h43c3f90444aea9faE.exit" %23 = getelementptr inbounds i8, ptr %0, i64 64 @@ -931,34 +931,35 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$ %26 = load i64, ptr %25, align 8, !alias.scope !34, !noalias !37, !noundef !5 %.promoted.i.i.i24 = load i64, ptr %24, align 8, !alias.scope !34, !noalias !37 %.not.i4.i.i.i25 = icmp eq i64 %26, %.promoted.i.i.i24 - br i1 %.not.i4.i.i.i25, label %32, label %.lr.ph.i.i.i26 + br i1 %.not.i4.i.i.i25, label %33, label %.lr.ph.i.i.i26 .lr.ph.i.i.i26: ; preds = %22 %27 = shl i64 %.sroa.4.0.copyload, 5 %scevgep.i.i = getelementptr i8, ptr %.sroa.7.0.copyload, i64 %27 %28 = shl i64 %.promoted.i.i.i24, 5 %scevgep3.i.i = getelementptr i8, ptr %3, i64 %28 - %29 = sub i64 %26, %.promoted.i.i.i24 - %30 = shl i64 %29, 5 + %29 = shl i64 %26, 5 + %30 = sub i64 %29, %28 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep.i.i, ptr readonly align 8 %scevgep3.i.i, i64 %30, i1 false), !noalias !39 - %31 = add i64 %29, %.sroa.4.0.copyload - br label %32 + %31 = add i64 %26, %.sroa.4.0.copyload + %32 = sub i64 %31, %.promoted.i.i.i24 + br label %33 -32: ; preds = %22, %.lr.ph.i.i.i26 - %.val3.i = phi i64 [ %31, %.lr.ph.i.i.i26 ], [ %.sroa.4.0.copyload, %22 ] - %33 = icmp ne ptr %.sroa.0.0.copyload, null - tail call void @llvm.assume(i1 %33) +33: ; preds = %22, %.lr.ph.i.i.i26 + %.val3.i = phi i64 [ %32, %.lr.ph.i.i.i26 ], [ %.sroa.4.0.copyload, %22 ] + %34 = icmp ne ptr %.sroa.0.0.copyload, null + tail call void @llvm.assume(i1 %34) store i64 %.val3.i, ptr %.sroa.0.0.copyload, align 8, !noalias !46 br label %"_ZN4core3ptr88drop_in_place$LT$core..array..iter..IntoIter$LT$ockam_abac..expr..Expr$C$1_usize$GT$$GT$17he86cb438e9343b41E.exit" -34: ; preds = %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h43c3f90444aea9faE.exit" +35: ; preds = %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h43c3f90444aea9faE.exit" %.val22 = load ptr, ptr %1, align 8, !nonnull !5, !align !47, !noundef !5 - %35 = getelementptr inbounds i8, ptr %1, i64 8 - %.val23 = load i64, ptr %35, align 8, !noundef !5 + %36 = getelementptr inbounds i8, ptr %1, i64 8 + %.val23 = load i64, ptr %36, align 8, !noundef !5 store i64 %.val23, ptr %.val22, align 8 br label %"_ZN4core3ptr88drop_in_place$LT$core..array..iter..IntoIter$LT$ockam_abac..expr..Expr$C$1_usize$GT$$GT$17he86cb438e9343b41E.exit" -"_ZN4core3ptr88drop_in_place$LT$core..array..iter..IntoIter$LT$ockam_abac..expr..Expr$C$1_usize$GT$$GT$17he86cb438e9343b41E.exit": ; preds = %32, %34 +"_ZN4core3ptr88drop_in_place$LT$core..array..iter..IntoIter$LT$ockam_abac..expr..Expr$C$1_usize$GT$$GT$17he86cb438e9343b41E.exit": ; preds = %33, %35 ret void } diff --git a/bench/ockam-rs/optimized/4op0lm10vgcgt7cp.ll b/bench/ockam-rs/optimized/4op0lm10vgcgt7cp.ll index a4fc163744e..636a6472f5b 100644 --- a/bench/ockam-rs/optimized/4op0lm10vgcgt7cp.ll +++ b/bench/ockam-rs/optimized/4op0lm10vgcgt7cp.ll @@ -81,8 +81,8 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$ %scevgep = getelementptr i8, ptr %13, i64 %14 %15 = shl i64 %.promoted.i.i.i, 5 %scevgep38 = getelementptr i8, ptr %4, i64 %15 - %16 = sub i64 %10, %.promoted.i.i.i - %17 = shl i64 %16, 5 + %16 = shl i64 %10, 5 + %17 = sub i64 %16, %15 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep, ptr align 8 %scevgep38, i64 %17, i1 false), !noalias !28 %18 = add i64 %10, %.pre.i.i.i %19 = sub i64 %18, %.promoted.i.i.i @@ -93,7 +93,7 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$ %20 = getelementptr inbounds i8, ptr %0, i64 56 %21 = load i64, ptr %20, align 8, !range !4, !noundef !5 %.not12.not = icmp eq i64 %21, 0 - br i1 %.not12.not, label %34, label %22 + br i1 %.not12.not, label %35, label %22 22: ; preds = %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h6bb458cc1d66dbf2E.exit" %23 = getelementptr inbounds i8, ptr %0, i64 64 @@ -109,34 +109,35 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$ %26 = load i64, ptr %25, align 8, !alias.scope !29, !noalias !32, !noundef !5 %.promoted.i.i.i24 = load i64, ptr %24, align 8, !alias.scope !29, !noalias !32 %.not.i4.i.i.i25 = icmp eq i64 %26, %.promoted.i.i.i24 - br i1 %.not.i4.i.i.i25, label %32, label %.lr.ph.i.i.i26 + br i1 %.not.i4.i.i.i25, label %33, label %.lr.ph.i.i.i26 .lr.ph.i.i.i26: ; preds = %22 %27 = shl i64 %.sroa.4.0.copyload, 5 %scevgep.i.i = getelementptr i8, ptr %.sroa.7.0.copyload, i64 %27 %28 = shl i64 %.promoted.i.i.i24, 5 %scevgep3.i.i = getelementptr i8, ptr %3, i64 %28 - %29 = sub i64 %26, %.promoted.i.i.i24 - %30 = shl i64 %29, 5 + %29 = shl i64 %26, 5 + %30 = sub i64 %29, %28 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep.i.i, ptr readonly align 8 %scevgep3.i.i, i64 %30, i1 false), !noalias !34 - %31 = add i64 %29, %.sroa.4.0.copyload - br label %32 - -32: ; preds = %.lr.ph.i.i.i26, %22 - %.val3.i = phi i64 [ %31, %.lr.ph.i.i.i26 ], [ %.sroa.4.0.copyload, %22 ] - %33 = icmp ne ptr %.sroa.0.0.copyload, null - tail call void @llvm.assume(i1 %33) + %31 = add i64 %26, %.sroa.4.0.copyload + %32 = sub i64 %31, %.promoted.i.i.i24 + br label %33 + +33: ; preds = %.lr.ph.i.i.i26, %22 + %.val3.i = phi i64 [ %32, %.lr.ph.i.i.i26 ], [ %.sroa.4.0.copyload, %22 ] + %34 = icmp ne ptr %.sroa.0.0.copyload, null + tail call void @llvm.assume(i1 %34) store i64 %.val3.i, ptr %.sroa.0.0.copyload, align 8, !noalias !41 br label %"_ZN4core3ptr88drop_in_place$LT$core..array..iter..IntoIter$LT$ockam_abac..expr..Expr$C$3_usize$GT$$GT$17h472e868a73c0a2adE.exit" -34: ; preds = %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h6bb458cc1d66dbf2E.exit" +35: ; preds = %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h6bb458cc1d66dbf2E.exit" %.val22 = load ptr, ptr %1, align 8, !nonnull !5, !align !42, !noundef !5 - %35 = getelementptr inbounds i8, ptr %1, i64 8 - %.val23 = load i64, ptr %35, align 8, !noundef !5 + %36 = getelementptr inbounds i8, ptr %1, i64 8 + %.val23 = load i64, ptr %36, align 8, !noundef !5 store i64 %.val23, ptr %.val22, align 8 br label %"_ZN4core3ptr88drop_in_place$LT$core..array..iter..IntoIter$LT$ockam_abac..expr..Expr$C$3_usize$GT$$GT$17h472e868a73c0a2adE.exit" -"_ZN4core3ptr88drop_in_place$LT$core..array..iter..IntoIter$LT$ockam_abac..expr..Expr$C$3_usize$GT$$GT$17h472e868a73c0a2adE.exit": ; preds = %32, %34 +"_ZN4core3ptr88drop_in_place$LT$core..array..iter..IntoIter$LT$ockam_abac..expr..Expr$C$3_usize$GT$$GT$17h472e868a73c0a2adE.exit": ; preds = %33, %35 ret void } diff --git a/bench/oiio/optimized/DPXHeader.cpp.ll b/bench/oiio/optimized/DPXHeader.cpp.ll index 6697558791e..939b6667f7b 100644 --- a/bench/oiio/optimized/DPXHeader.cpp.ll +++ b/bench/oiio/optimized/DPXHeader.cpp.ll @@ -2288,13 +2288,13 @@ entry: br i1 %cmp.not, label %for.body, label %return for.body: ; preds = %entry, %if.end8 - %tc.015 = phi i32 [ %or, %if.end8 ], [ 0, %entry ] - %i.014 = phi i32 [ %inc, %if.end8 ], [ 0, %entry ] - %idx.013 = phi i32 [ %inc15, %if.end8 ], [ 0, %entry ] - %rem = srem i32 %idx.013, 3 + %tc.014 = phi i32 [ %or, %if.end8 ], [ 0, %entry ] + %i.013 = phi i32 [ %inc, %if.end8 ], [ 0, %entry ] + %idx.012 = phi i32 [ %inc15, %if.end8 ], [ 0, %entry ] + %rem = srem i32 %idx.012, 3 %cmp3 = icmp eq i32 %rem, 2 %cond = zext i1 %cmp3 to i32 - %add = add nsw i32 %idx.013, %cond + %add = add nsw i32 %idx.012, %cond %idxprom = sext i32 %add to i64 %arrayidx = getelementptr inbounds i8, ptr %str, i64 %idxprom %0 = load i8, ptr %arrayidx, align 1 @@ -2303,16 +2303,17 @@ for.body: ; preds = %entry, %if.end8 br i1 %or.cond, label %return, label %if.end8 if.end8: ; preds = %for.body - %mul = shl nuw nsw i32 %i.014, 2 + %conv = zext nneg i8 %0 to i32 + %sub = add nsw i32 %conv, -48 + %mul = shl nuw nsw i32 %i.013, 2 %sub10 = sub nuw nsw i32 28, %mul + %shl = shl nuw i32 %sub, %sub10 %shl13 = shl nuw i32 15, %sub10 %not = xor i32 %shl13, -1 - %and = and i32 %tc.015, %not - %2 = and i8 %0, 15 - %shl12 = zext nneg i8 %2 to i32 - %and14 = shl nuw i32 %shl12, %sub10 + %and = and i32 %tc.014, %not + %and14 = and i32 %shl, %shl13 %or = or i32 %and14, %and - %inc = add nuw nsw i32 %i.014, 1 + %inc = add nuw nsw i32 %i.013, 1 %inc15 = add nsw i32 %add, 1 %exitcond.not = icmp eq i32 %inc, 8 br i1 %exitcond.not, label %return, label %for.body, !llvm.loop !10 @@ -2333,13 +2334,13 @@ entry: br i1 %cmp.not.i, label %for.body.i, label %if.end for.body.i: ; preds = %entry, %if.end8.i - %tc.015.i = phi i32 [ %or.i, %if.end8.i ], [ 0, %entry ] - %i.014.i = phi i32 [ %inc.i, %if.end8.i ], [ 0, %entry ] - %idx.013.i = phi i32 [ %inc15.i, %if.end8.i ], [ 0, %entry ] - %rem.i = srem i32 %idx.013.i, 3 + %tc.014.i = phi i32 [ %or.i, %if.end8.i ], [ 0, %entry ] + %i.013.i = phi i32 [ %inc.i, %if.end8.i ], [ 0, %entry ] + %idx.012.i = phi i32 [ %inc15.i, %if.end8.i ], [ 0, %entry ] + %rem.i = srem i32 %idx.012.i, 3 %cmp3.i = icmp eq i32 %rem.i, 2 %cond.i = zext i1 %cmp3.i to i32 - %add.i = add nsw i32 %idx.013.i, %cond.i + %add.i = add nsw i32 %idx.012.i, %cond.i %idxprom.i = sext i32 %add.i to i64 %arrayidx.i = getelementptr inbounds i8, ptr %str, i64 %idxprom.i %0 = load i8, ptr %arrayidx.i, align 1 @@ -2348,16 +2349,17 @@ for.body.i: ; preds = %entry, %if.end8.i br i1 %or.cond.i, label %if.end, label %if.end8.i if.end8.i: ; preds = %for.body.i - %mul.i = shl nuw nsw i32 %i.014.i, 2 + %conv.i = zext nneg i8 %0 to i32 + %sub.i = add nsw i32 %conv.i, -48 + %mul.i = shl nuw nsw i32 %i.013.i, 2 %sub10.i = sub nuw nsw i32 28, %mul.i + %shl.i = shl nuw i32 %sub.i, %sub10.i %shl13.i = shl nuw i32 15, %sub10.i %not.i = xor i32 %shl13.i, -1 - %and.i = and i32 %tc.015.i, %not.i - %2 = and i8 %0, 15 - %shl12.i = zext nneg i8 %2 to i32 - %and14.i = shl nuw i32 %shl12.i, %sub10.i + %and.i = and i32 %tc.014.i, %not.i + %and14.i = and i32 %shl.i, %shl13.i %or.i = or i32 %and14.i, %and.i - %inc.i = add nuw nsw i32 %i.014.i, 1 + %inc.i = add nuw nsw i32 %i.013.i, 1 %inc15.i = add nsw i32 %add.i, 1 %exitcond.not.i = icmp eq i32 %inc.i, 8 br i1 %exitcond.not.i, label %_ZNK3dpx14IndustryHeader12TCFromStringEPKc.exit, label %for.body.i, !llvm.loop !10 @@ -2383,13 +2385,13 @@ entry: br i1 %cmp.not.i, label %for.body.i, label %if.end for.body.i: ; preds = %entry, %if.end8.i - %tc.015.i = phi i32 [ %or.i, %if.end8.i ], [ 0, %entry ] - %i.014.i = phi i32 [ %inc.i, %if.end8.i ], [ 0, %entry ] - %idx.013.i = phi i32 [ %inc15.i, %if.end8.i ], [ 0, %entry ] - %rem.i = srem i32 %idx.013.i, 3 + %tc.014.i = phi i32 [ %or.i, %if.end8.i ], [ 0, %entry ] + %i.013.i = phi i32 [ %inc.i, %if.end8.i ], [ 0, %entry ] + %idx.012.i = phi i32 [ %inc15.i, %if.end8.i ], [ 0, %entry ] + %rem.i = srem i32 %idx.012.i, 3 %cmp3.i = icmp eq i32 %rem.i, 2 %cond.i = zext i1 %cmp3.i to i32 - %add.i = add nsw i32 %idx.013.i, %cond.i + %add.i = add nsw i32 %idx.012.i, %cond.i %idxprom.i = sext i32 %add.i to i64 %arrayidx.i = getelementptr inbounds i8, ptr %str, i64 %idxprom.i %0 = load i8, ptr %arrayidx.i, align 1 @@ -2398,16 +2400,17 @@ for.body.i: ; preds = %entry, %if.end8.i br i1 %or.cond.i, label %if.end, label %if.end8.i if.end8.i: ; preds = %for.body.i - %mul.i = shl nuw nsw i32 %i.014.i, 2 + %conv.i = zext nneg i8 %0 to i32 + %sub.i = add nsw i32 %conv.i, -48 + %mul.i = shl nuw nsw i32 %i.013.i, 2 %sub10.i = sub nuw nsw i32 28, %mul.i + %shl.i = shl nuw i32 %sub.i, %sub10.i %shl13.i = shl nuw i32 15, %sub10.i %not.i = xor i32 %shl13.i, -1 - %and.i = and i32 %tc.015.i, %not.i - %2 = and i8 %0, 15 - %shl12.i = zext nneg i8 %2 to i32 - %and14.i = shl nuw i32 %shl12.i, %sub10.i + %and.i = and i32 %tc.014.i, %not.i + %and14.i = and i32 %shl.i, %shl13.i %or.i = or i32 %and14.i, %and.i - %inc.i = add nuw nsw i32 %i.014.i, 1 + %inc.i = add nuw nsw i32 %i.013.i, 1 %inc15.i = add nsw i32 %add.i, 1 %exitcond.not.i = icmp eq i32 %inc.i, 8 br i1 %exitcond.not.i, label %_ZNK3dpx14IndustryHeader12TCFromStringEPKc.exit, label %for.body.i, !llvm.loop !10 diff --git a/bench/oiio/optimized/farmhash.cpp.ll b/bench/oiio/optimized/farmhash.cpp.ll index 1097e13ebb5..5908e29b901 100644 --- a/bench/oiio/optimized/farmhash.cpp.ll +++ b/bench/oiio/optimized/farmhash.cpp.ll @@ -1375,8 +1375,8 @@ do.end: ; preds = %do.body %mul4.i157 = mul i64 %xor3.i156, %add65 %shr5.i158 = lshr i64 %mul4.i157, 47 %xor6.i159 = xor i64 %shr5.i158, %mul4.i157 - %mul7.i160202 = add i64 %xor6.i159, %cond.i.i114 - %add128 = mul i64 %mul7.i160202, %add65 + %mul7.i160 = mul i64 %xor6.i159, %add65 + %add128 = add i64 %mul7.i160, %mul103 %xor.i161 = xor i64 %add128, %add124 %mul1.i162 = mul i64 %xor.i161, %add65 %shr.i163 = lshr i64 %mul1.i162, 47 @@ -1566,9 +1566,9 @@ do.end: ; preds = %do.body %mul4.i = mul i64 %xor3.i, %add10 %shr5.i = lshr i64 %mul4.i, 47 %xor6.i = xor i64 %shr5.i, %mul4.i - %mul7.i144 = add i64 %xor6.i, %cond.i.i62 - %add154 = mul i64 %mul7.i144, %add10 - %sub155 = sub i64 %add154, %add107 + %mul7.i = mul i64 %xor6.i, %add10 + %add154 = sub i64 %mul135, %add107 + %sub155 = add i64 %add154, %mul7.i %add6.i.i = add i64 %add131, %add.i.i %add9.i.i = add i64 %add6.i.i, %cond.i.i10.i.i %add157 = add i64 %add9.i.i, %cond.i.i.i.i @@ -1770,46 +1770,46 @@ do.end: ; preds = %do.body %cond.i.i110 = tail call i64 @llvm.fshl.i64(i64 %add7.i.i102, i64 %add7.i.i102, i64 37) %add119 = add i64 %cond.i.i110, %mul116 %mul121 = mul i64 %add7.i.i102, 9 - %storemerge219 = mul i64 %add7.i.i86, -4348849565147123417 - %cmp124220.not = icmp eq i64 %sub, 0 - br i1 %cmp124220.not, label %for.end, label %for.body.lr.ph + %storemerge218 = mul i64 %add7.i.i86, -4348849565147123417 + %cmp124219.not = icmp eq i64 %sub, 0 + br i1 %cmp124219.not, label %for.end, label %for.body.lr.ph for.body.lr.ph: ; preds = %do.end %add.ptr131 = getelementptr i8, ptr %s.addr.0, i64 %len.addr.0 br label %for.body for.body: ; preds = %for.body.lr.ph, %for.body - %storemerge228 = phi i64 [ %storemerge219, %for.body.lr.ph ], [ %storemerge, %for.body ] - %tail_done.0227 = phi i64 [ 0, %for.body.lr.ph ], [ %add125, %for.body ] - %y.1226 = phi i64 [ %add115, %for.body.lr.ph ], [ %add130, %for.body ] - %z.1225 = phi i64 [ %add119, %for.body.lr.ph ], [ %add146, %for.body ] - %x.1224 = phi i64 [ %add111, %for.body.lr.ph ], [ %add139, %for.body ] - %w.sroa.14.1223 = phi i64 [ %add9.i.i104, %for.body.lr.ph ], [ %add149, %for.body ] - %w.sroa.0.1222 = phi i64 [ %mul121, %for.body.lr.ph ], [ %add136, %for.body ] - %v.sroa.14.1221 = phi i64 [ %add9.i.i88, %for.body.lr.ph ], [ %add9.i.i124, %for.body ] - %add125 = add nuw nsw i64 %tail_done.0227, 32 - %add126 = add i64 %y.1226, %x.1224 + %storemerge227 = phi i64 [ %storemerge218, %for.body.lr.ph ], [ %storemerge, %for.body ] + %tail_done.0226 = phi i64 [ 0, %for.body.lr.ph ], [ %add125, %for.body ] + %y.1225 = phi i64 [ %add115, %for.body.lr.ph ], [ %add130, %for.body ] + %z.1224 = phi i64 [ %add119, %for.body.lr.ph ], [ %add146, %for.body ] + %x.1223 = phi i64 [ %add111, %for.body.lr.ph ], [ %add139, %for.body ] + %w.sroa.14.1222 = phi i64 [ %add9.i.i104, %for.body.lr.ph ], [ %add149, %for.body ] + %w.sroa.0.1221 = phi i64 [ %mul121, %for.body.lr.ph ], [ %add136, %for.body ] + %v.sroa.14.1220 = phi i64 [ %add9.i.i88, %for.body.lr.ph ], [ %add9.i.i124, %for.body ] + %add125 = add nuw nsw i64 %tail_done.0226, 32 + %add126 = add i64 %y.1225, %x.1223 %cond.i.i111 = tail call i64 @llvm.fshl.i64(i64 %add126, i64 %add126, i64 22) %mul128 = mul i64 %cond.i.i111, -4348849565147123417 - %add130 = add i64 %mul128, %v.sroa.14.1221 - %idx.neg = sub nuw nsw i64 -32, %tail_done.0227 + %add130 = add i64 %mul128, %v.sroa.14.1220 + %idx.neg = sub nuw nsw i64 -32, %tail_done.0226 %add.ptr132 = getelementptr inbounds i8, ptr %add.ptr131, i64 %idx.neg %add.ptr133 = getelementptr inbounds i8, ptr %add.ptr132, i64 16 %21 = load i64, ptr %add.ptr133, align 1 - %add136 = add i64 %21, %w.sroa.0.1222 - %mul137 = mul i64 %x.1224, -4348849565147123417 + %add136 = add i64 %21, %w.sroa.0.1221 + %mul137 = mul i64 %x.1223, -4348849565147123417 %add139 = add i64 %add136, %mul137 %22 = load i64, ptr %add.ptr132, align 1 - %add145 = add i64 %z.1225, %w.sroa.14.1223 + %add145 = add i64 %z.1224, %w.sroa.14.1222 %add146 = add i64 %add145, %22 - %add149 = add i64 %w.sroa.14.1223, %storemerge228 + %add149 = add i64 %w.sroa.14.1222, %storemerge227 %add.ptr.i112 = getelementptr inbounds i8, ptr %add.ptr132, i64 8 %23 = load i64, ptr %add.ptr.i112, align 1 %add.ptr4.i114 = getelementptr inbounds i8, ptr %add.ptr132, i64 24 %24 = load i64, ptr %add.ptr4.i114, align 1 - %add155 = add i64 %22, %storemerge228 + %add155 = add i64 %22, %storemerge227 %add.i.i115 = add i64 %add155, %add146 - %add1.i.i116 = add i64 %24, %v.sroa.14.1221 + %add1.i.i116 = add i64 %24, %v.sroa.14.1220 %add2.i.i117 = add i64 %add1.i.i116, %add.i.i115 %cond.i.i.i.i118 = tail call i64 @llvm.fshl.i64(i64 %add2.i.i117, i64 %add2.i.i117, i64 43) %add3.i.i119 = add i64 %23, %21 @@ -1829,7 +1829,7 @@ for.end: ; preds = %for.body, %do.end %x.1.lcssa = phi i64 [ %add111, %do.end ], [ %add139, %for.body ] %z.1.lcssa = phi i64 [ %add119, %do.end ], [ %add146, %for.body ] %y.1.lcssa = phi i64 [ %add115, %do.end ], [ %add130, %for.body ] - %storemerge.lcssa = phi i64 [ %storemerge219, %do.end ], [ %storemerge, %for.body ] + %storemerge.lcssa = phi i64 [ %storemerge218, %do.end ], [ %storemerge, %for.body ] %xor.i.i = xor i64 %x.1.lcssa, %storemerge.lcssa %mul.i.i = mul i64 %xor.i.i, -7070675565921424023 %shr.i.i = lshr i64 %mul.i.i, 47 @@ -1858,8 +1858,8 @@ for.end: ; preds = %for.body, %do.end %mul7.i.i140 = mul i64 %xor6.i.i139, -7070675565921424023 %shr8.i.i141 = lshr i64 %mul7.i.i140, 47 %xor9.i.i142 = xor i64 %shr8.i.i141, %mul7.i.i140 - %mul10.i.i143218 = add i64 %xor9.i.i142, %xor9.i.i134 - %add169 = mul i64 %mul10.i.i143218, -7070675565921424023 + %mul10.i.i143 = mul i64 %xor9.i.i142, -7070675565921424023 + %add169 = add i64 %mul10.i.i143, %mul10.i.i135 %add172 = add i64 %mul10.i.i, %w.sroa.14.1.lcssa %add174 = add i64 %mul10.i.i135, %v.sroa.14.1.lcssa %xor.i.i144 = xor i64 %add174, %add172 diff --git a/bench/oiio/optimized/icoinput.cpp.ll b/bench/oiio/optimized/icoinput.cpp.ll index 860d7ad364c..962ddfe5a39 100644 --- a/bench/oiio/optimized/icoinput.cpp.ll +++ b/bench/oiio/optimized/icoinput.cpp.ll @@ -2843,25 +2843,25 @@ _ZNSt6vectorIN18OpenImageIO_v2_6_07ICO_pvt17ico_palette_entryESaIS2_EE17_S_check br i1 %cmp.not.i.i.i.i, label %invoke.cont10.thread, label %if.then.i.i.i.i.i invoke.cont10.thread: ; preds = %_ZNSt6vectorIN18OpenImageIO_v2_6_07ICO_pvt17ico_palette_entryESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i - %m_bpp169 = getelementptr inbounds i8, ptr %this, i64 252 - %3 = load i32, ptr %m_bpp169, align 4 + %m_bpp168 = getelementptr inbounds i8, ptr %this, i64 252 + %3 = load i32, ptr %m_bpp168, align 4 br label %if.end21 if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorIN18OpenImageIO_v2_6_07ICO_pvt17ico_palette_entryESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i %mul.i.i.i.i.i.i = shl nuw nsw i64 %conv, 2 - %call5.i.i.i.i2.i.i73 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i) #30 - %add.ptr.i.i.i = getelementptr %"struct.OpenImageIO_v2_6_0::ICO_pvt::ico_palette_entry", ptr %call5.i.i.i.i2.i.i73, i64 %conv - store i32 0, ptr %call5.i.i.i.i2.i.i73, align 1 + %call5.i.i.i.i2.i.i72 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i) #30 + %add.ptr.i.i.i = getelementptr %"struct.OpenImageIO_v2_6_0::ICO_pvt::ico_palette_entry", ptr %call5.i.i.i.i2.i.i72, i64 %conv + store i32 0, ptr %call5.i.i.i.i2.i.i72, align 1 %cmp.i.i.i.i.i.i.i = icmp eq i32 %2, 1 br i1 %cmp.i.i.i.i.i.i.i, label %invoke.cont10, label %for.body.i.i.i.i.i.i.i.i.i.preheader for.body.i.i.i.i.i.i.i.i.i.preheader: ; preds = %if.then.i.i.i.i.i - %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i2.i.i73, i64 4 + %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i2.i.i72, i64 4 br label %for.body.i.i.i.i.i.i.i.i.i for.body.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i.i.i.i.preheader, %for.body.i.i.i.i.i.i.i.i.i %__first.addr.04.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i.i.preheader ] - %4 = load i32, ptr %call5.i.i.i.i2.i.i73, align 1 + %4 = load i32, ptr %call5.i.i.i.i2.i.i72, align 1 store i32 %4, ptr %__first.addr.04.i.i.i.i.i.i.i.i.i, align 1 %incdec.ptr.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i.i.i.i, i64 4 %cmp.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i, %add.ptr.i.i.i @@ -2882,25 +2882,25 @@ for.cond: ; preds = %invoke.cont17 for.body: ; preds = %invoke.cont10, %for.cond %indvars.iv = phi i64 [ %indvars.iv.next, %for.cond ], [ 0, %invoke.cont10 ] - %add.ptr.i = getelementptr inbounds %"struct.OpenImageIO_v2_6_0::ICO_pvt::ico_palette_entry", ptr %call5.i.i.i.i2.i.i73, i64 %indvars.iv + %add.ptr.i = getelementptr inbounds %"struct.OpenImageIO_v2_6_0::ICO_pvt::ico_palette_entry", ptr %call5.i.i.i.i2.i.i72, i64 %indvars.iv %call18 = invoke noundef zeroext i1 @_ZN18OpenImageIO_v2_6_010ImageInput6ioreadEPvmm(ptr noundef nonnull align 8 dereferenceable(184) %this, ptr noundef nonnull %add.ptr.i, i64 noundef 1, i64 noundef 4) to label %invoke.cont17 unwind label %ehcleanup.thread invoke.cont17: ; preds = %for.body - br i1 %call18, label %for.cond, label %if.then.i.i.i129 + br i1 %call18, label %for.cond, label %if.then.i.i.i128 ehcleanup.thread: ; preds = %for.body %8 = landingpad { ptr, i32 } cleanup - br label %if.then.i.i.i131 + br label %if.then.i.i.i130 if.end21.loopexit: ; preds = %for.cond %.pre = load i32, ptr %m_bpp, align 4 br label %if.end21 if.end21: ; preds = %invoke.cont10.thread, %if.end21.loopexit, %invoke.cont10 - %m_bpp177 = phi ptr [ %m_bpp, %if.end21.loopexit ], [ %m_bpp, %invoke.cont10 ], [ %m_bpp169, %invoke.cont10.thread ] - %palette.sroa.0.0174 = phi ptr [ %call5.i.i.i.i2.i.i73, %if.end21.loopexit ], [ %call5.i.i.i.i2.i.i73, %invoke.cont10 ], [ null, %invoke.cont10.thread ] + %m_bpp176 = phi ptr [ %m_bpp, %if.end21.loopexit ], [ %m_bpp, %invoke.cont10 ], [ %m_bpp168, %invoke.cont10.thread ] + %palette.sroa.0.0173 = phi ptr [ %call5.i.i.i.i2.i.i72, %if.end21.loopexit ], [ %call5.i.i.i.i2.i.i72, %invoke.cont10 ], [ null, %invoke.cont10.thread ] %9 = phi i32 [ %.pre, %if.end21.loopexit ], [ %5, %invoke.cont10 ], [ %3, %invoke.cont10.thread ] %width = getelementptr inbounds i8, ptr %this, i64 20 %10 = load i32, ptr %width, align 4 @@ -2911,58 +2911,58 @@ if.end21: ; preds = %invoke.cont10.threa %rem30 = and i32 %sub, 3 %add31 = add nsw i32 %rem30, %div %conv32 = sext i32 %add31 to i64 - %cmp.i.i74 = icmp slt i32 %add31, 0 - br i1 %cmp.i.i74, label %if.then.i.i83, label %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i + %cmp.i.i73 = icmp slt i32 %add31, 0 + br i1 %cmp.i.i73, label %if.then.i.i82, label %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i -if.then.i.i83: ; preds = %if.end21 +if.then.i.i82: ; preds = %if.end21 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.90) #28 - to label %.noexc84 unwind label %lpad34 + to label %.noexc83 unwind label %lpad34 -.noexc84: ; preds = %if.then.i.i83 +.noexc83: ; preds = %if.then.i.i82 unreachable _ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %if.end21 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %scanline, i8 0, i64 24, i1 false) - %cmp.not.i.i.i.i75 = icmp eq i32 %add31, 0 - br i1 %cmp.not.i.i.i.i75, label %invoke.cont35, label %if.then.i.i.i.i.i76 + %cmp.not.i.i.i.i74 = icmp eq i32 %add31, 0 + br i1 %cmp.not.i.i.i.i74, label %invoke.cont35, label %if.then.i.i.i.i.i75 -if.then.i.i.i.i.i76: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i - %call5.i.i.i.i1.i.i85 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %conv32) #30 +if.then.i.i.i.i.i75: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i + %call5.i.i.i.i1.i.i84 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %conv32) #30 to label %call5.i.i.i.i1.i.i.noexc unwind label %lpad34 -call5.i.i.i.i1.i.i.noexc: ; preds = %if.then.i.i.i.i.i76 - store ptr %call5.i.i.i.i1.i.i85, ptr %scanline, align 8 - %add.ptr.i.i.i77 = getelementptr i8, ptr %call5.i.i.i.i1.i.i85, i64 %conv32 - %_M_end_of_storage.i.i.i78 = getelementptr inbounds i8, ptr %scanline, i64 16 - store ptr %add.ptr.i.i.i77, ptr %_M_end_of_storage.i.i.i78, align 8 - store i8 0, ptr %call5.i.i.i.i1.i.i85, align 1 - %incdec.ptr.i.i.i.i.i79 = getelementptr inbounds i8, ptr %call5.i.i.i.i1.i.i85, i64 1 +call5.i.i.i.i1.i.i.noexc: ; preds = %if.then.i.i.i.i.i75 + store ptr %call5.i.i.i.i1.i.i84, ptr %scanline, align 8 + %add.ptr.i.i.i76 = getelementptr i8, ptr %call5.i.i.i.i1.i.i84, i64 %conv32 + %_M_end_of_storage.i.i.i77 = getelementptr inbounds i8, ptr %scanline, i64 16 + store ptr %add.ptr.i.i.i76, ptr %_M_end_of_storage.i.i.i77, align 8 + store i8 0, ptr %call5.i.i.i.i1.i.i84, align 1 + %incdec.ptr.i.i.i.i.i78 = getelementptr inbounds i8, ptr %call5.i.i.i.i1.i.i84, i64 1 %sub.i.i.i.i.i = add nsw i64 %conv32, -1 - %cmp.i.i.i.i.i.i.i80 = icmp eq i64 %sub.i.i.i.i.i, 0 - br i1 %cmp.i.i.i.i.i.i.i80, label %invoke.cont35, label %if.then.i.i.i.i.i.i.i.i.i + %cmp.i.i.i.i.i.i.i79 = icmp eq i64 %sub.i.i.i.i.i, 0 + br i1 %cmp.i.i.i.i.i.i.i79, label %invoke.cont35, label %if.then.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i: ; preds = %call5.i.i.i.i1.i.i.noexc - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %incdec.ptr.i.i.i.i.i79, i8 0, i64 %sub.i.i.i.i.i, i1 false) + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %incdec.ptr.i.i.i.i.i78, i8 0, i64 %sub.i.i.i.i.i, i1 false) br label %invoke.cont35 invoke.cont35: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i, %if.then.i.i.i.i.i.i.i.i.i, %call5.i.i.i.i1.i.i.noexc - %11 = phi ptr [ %call5.i.i.i.i1.i.i85, %call5.i.i.i.i1.i.i.noexc ], [ %call5.i.i.i.i1.i.i85, %if.then.i.i.i.i.i.i.i.i.i ], [ null, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i ] - %__first.addr.0.i.i.i.i.i81 = phi ptr [ %incdec.ptr.i.i.i.i.i79, %call5.i.i.i.i1.i.i.noexc ], [ %add.ptr.i.i.i77, %if.then.i.i.i.i.i.i.i.i.i ], [ null, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i ] - %_M_finish.i.i7.i82 = getelementptr inbounds i8, ptr %scanline, i64 8 - store ptr %__first.addr.0.i.i.i.i.i81, ptr %_M_finish.i.i7.i82, align 8 + %11 = phi ptr [ %call5.i.i.i.i1.i.i84, %call5.i.i.i.i1.i.i.noexc ], [ %call5.i.i.i.i1.i.i84, %if.then.i.i.i.i.i.i.i.i.i ], [ null, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i ] + %__first.addr.0.i.i.i.i.i80 = phi ptr [ %incdec.ptr.i.i.i.i.i78, %call5.i.i.i.i1.i.i.noexc ], [ %add.ptr.i.i.i76, %if.then.i.i.i.i.i.i.i.i.i ], [ null, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i ] + %_M_finish.i.i7.i81 = getelementptr inbounds i8, ptr %scanline, i64 8 + store ptr %__first.addr.0.i.i.i.i.i80, ptr %_M_finish.i.i7.i81, align 8 %height = getelementptr inbounds i8, ptr %this, i64 24 %12 = load i32, ptr %height, align 8 - %cmp39151 = icmp sgt i32 %12, 0 - br i1 %cmp39151, label %for.body40, label %for.end232 + %cmp39150 = icmp sgt i32 %12, 0 + br i1 %cmp39150, label %for.body40, label %for.end232 for.cond38.loopexit: ; preds = %for.inc228, %for.cond48.preheader %13 = phi i32 [ %14, %for.cond48.preheader ], [ %73, %for.inc228 ] - %cmp39 = icmp sgt i32 %y.0152.in, 1 + %cmp39 = icmp sgt i32 %y.0151.in, 1 br i1 %cmp39, label %for.body40, label %for.end232.loopexit, !llvm.loop !27 for.body40: ; preds = %invoke.cont35, %for.cond38.loopexit - %y.0152.in = phi i32 [ %y.0152, %for.cond38.loopexit ], [ %12, %invoke.cont35 ] - %y.0152 = add nsw i32 %y.0152.in, -1 + %y.0151.in = phi i32 [ %y.0151, %for.cond38.loopexit ], [ %12, %invoke.cont35 ] + %y.0151 = add nsw i32 %y.0151.in, -1 %call45 = invoke noundef zeroext i1 @_ZN18OpenImageIO_v2_6_010ImageInput6ioreadEPvmm(ptr noundef nonnull align 8 dereferenceable(184) %this, ptr noundef nonnull %11, i64 noundef 1, i64 noundef %conv32) to label %invoke.cont44 unwind label %lpad43.loopexit.split-lp.loopexit @@ -2971,10 +2971,14 @@ invoke.cont44: ; preds = %for.body40 for.cond48.preheader: ; preds = %invoke.cont44 %14 = load i32, ptr %width, align 4 - %cmp51148 = icmp sgt i32 %14, 0 - br i1 %cmp51148, label %for.body52, label %for.cond38.loopexit + %cmp51147 = icmp sgt i32 %14, 0 + br i1 %cmp51147, label %for.body52.lr.ph, label %for.cond38.loopexit -lpad34: ; preds = %if.then.i.i.i.i.i76, %if.then.i.i83 +for.body52.lr.ph: ; preds = %for.cond48.preheader + %mul55 = shl i32 %y.0151, 2 + br label %for.body52 + +lpad34: ; preds = %if.then.i.i.i.i.i75, %if.then.i.i82 %15 = landingpad { ptr, i32 } cleanup br label %ehcleanup @@ -2985,17 +2989,17 @@ lpad43.loopexit: ; preds = %for.body256 br label %lpad43 lpad43.loopexit.split-lp.loopexit: ; preds = %for.body40 - %lpad.loopexit142 = landingpad { ptr, i32 } + %lpad.loopexit141 = landingpad { ptr, i32 } cleanup br label %lpad43 lpad43.loopexit.split-lp.loopexit.split-lp: ; preds = %if.then150.invoke, %if.then235 - %lpad.loopexit.split-lp143 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp142 = landingpad { ptr, i32 } cleanup br label %lpad43 lpad43: ; preds = %lpad43.loopexit.split-lp.loopexit, %lpad43.loopexit.split-lp.loopexit.split-lp, %lpad43.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %lpad43.loopexit ], [ %lpad.loopexit142, %lpad43.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp143, %lpad43.loopexit.split-lp.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %lpad43.loopexit ], [ %lpad.loopexit141, %lpad43.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp142, %lpad43.loopexit.split-lp.loopexit.split-lp ] %16 = load ptr, ptr %scanline, align 8 %tobool.not.i.i.i = icmp eq ptr %16, null br i1 %tobool.not.i.i.i, label %ehcleanup, label %if.then.i.i.i @@ -3004,13 +3008,13 @@ if.then.i.i.i: ; preds = %lpad43 call void @_ZdlPv(ptr noundef nonnull %16) #26 br label %ehcleanup -for.body52: ; preds = %for.cond48.preheader, %for.inc228 - %17 = phi i32 [ %73, %for.inc228 ], [ %14, %for.cond48.preheader ] - %x.0149 = phi i32 [ %inc229, %for.inc228 ], [ 0, %for.cond48.preheader ] - %mul55 = mul nsw i32 %17, %y.0152 - %mul5669 = add i32 %mul55, %x.0149 - %add58 = shl i32 %mul5669, 2 - %18 = load i32, ptr %m_bpp177, align 4 +for.body52: ; preds = %for.body52.lr.ph, %for.inc228 + %17 = phi i32 [ %14, %for.body52.lr.ph ], [ %73, %for.inc228 ] + %x.0148 = phi i32 [ 0, %for.body52.lr.ph ], [ %inc229, %for.inc228 ] + %mul56 = mul i32 %mul55, %17 + %mul57 = shl nsw i32 %x.0148, 2 + %add58 = add nsw i32 %mul56, %mul57 + %18 = load i32, ptr %m_bpp176, align 4 switch i32 %18, label %for.inc228 [ i32 1, label %sw.bb i32 4, label %sw.bb87 @@ -3020,12 +3024,12 @@ for.body52: ; preds = %for.cond48.preheade ] sw.bb: ; preds = %for.body52 - %div60 = sdiv i32 %x.0149, 8 + %div60 = sdiv i32 %x.0148, 8 %conv61 = sext i32 %div60 to i64 - %add.ptr.i87 = getelementptr inbounds i8, ptr %11, i64 %conv61 - %19 = load i8, ptr %add.ptr.i87, align 1 + %add.ptr.i86 = getelementptr inbounds i8, ptr %11, i64 %conv61 + %19 = load i8, ptr %add.ptr.i86, align 1 %conv63 = zext i8 %19 to i32 - %rem64 = srem i32 %x.0149, 8 + %rem64 = srem i32 %x.0148, 8 %sub65 = sub nsw i32 7, %rem64 %20 = lshr i32 %conv63, %sub65 %conv67 = and i32 %20, 1 @@ -3035,33 +3039,33 @@ sw.bb: ; preds = %for.body52 if.end72: ; preds = %sw.bb %conv73 = zext nneg i32 %conv67 to i64 - %add.ptr.i88 = getelementptr inbounds %"struct.OpenImageIO_v2_6_0::ICO_pvt::ico_palette_entry", ptr %palette.sroa.0.0174, i64 %conv73 - %r = getelementptr inbounds i8, ptr %add.ptr.i88, i64 2 + %add.ptr.i87 = getelementptr inbounds %"struct.OpenImageIO_v2_6_0::ICO_pvt::ico_palette_entry", ptr %palette.sroa.0.0173, i64 %conv73 + %r = getelementptr inbounds i8, ptr %add.ptr.i87, i64 2 %22 = load i8, ptr %r, align 1 %conv77 = sext i32 %add58 to i64 %23 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i89 = getelementptr inbounds i8, ptr %23, i64 %conv77 - store i8 %22, ptr %add.ptr.i89, align 1 - %g = getelementptr inbounds i8, ptr %add.ptr.i88, i64 1 + %add.ptr.i88 = getelementptr inbounds i8, ptr %23, i64 %conv77 + store i8 %22, ptr %add.ptr.i88, align 1 + %g = getelementptr inbounds i8, ptr %add.ptr.i87, i64 1 %24 = load i8, ptr %g, align 1 %add80 = or disjoint i32 %add58, 1 %conv81 = sext i32 %add80 to i64 %25 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i90 = getelementptr inbounds i8, ptr %25, i64 %conv81 - store i8 %24, ptr %add.ptr.i90, align 1 - %26 = load i8, ptr %add.ptr.i88, align 1 + %add.ptr.i89 = getelementptr inbounds i8, ptr %25, i64 %conv81 + store i8 %24, ptr %add.ptr.i89, align 1 + %26 = load i8, ptr %add.ptr.i87, align 1 %add84 = or disjoint i32 %add58, 2 %conv85 = sext i32 %add84 to i64 %27 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i91 = getelementptr inbounds i8, ptr %27, i64 %conv85 - store i8 %26, ptr %add.ptr.i91, align 1 + %add.ptr.i90 = getelementptr inbounds i8, ptr %27, i64 %conv85 + store i8 %26, ptr %add.ptr.i90, align 1 br label %for.inc228 sw.bb87: ; preds = %for.body52 - %div88 = sdiv i32 %x.0149, 2 + %div88 = sdiv i32 %x.0148, 2 %conv89 = sext i32 %div88 to i64 - %add.ptr.i92 = getelementptr inbounds i8, ptr %11, i64 %conv89 - %28 = load i8, ptr %add.ptr.i92, align 1 + %add.ptr.i91 = getelementptr inbounds i8, ptr %11, i64 %conv89 + %28 = load i8, ptr %add.ptr.i91, align 1 %29 = lshr i8 %28, 4 %shr = zext nneg i8 %29 to i32 %30 = load i32, ptr %m_palette_size, align 8 @@ -3070,61 +3074,61 @@ sw.bb87: ; preds = %for.body52 if.end97: ; preds = %sw.bb87 %conv98 = zext nneg i8 %29 to i64 - %add.ptr.i93 = getelementptr inbounds %"struct.OpenImageIO_v2_6_0::ICO_pvt::ico_palette_entry", ptr %palette.sroa.0.0174, i64 %conv98 - %r100 = getelementptr inbounds i8, ptr %add.ptr.i93, i64 2 + %add.ptr.i92 = getelementptr inbounds %"struct.OpenImageIO_v2_6_0::ICO_pvt::ico_palette_entry", ptr %palette.sroa.0.0173, i64 %conv98 + %r100 = getelementptr inbounds i8, ptr %add.ptr.i92, i64 2 %31 = load i8, ptr %r100, align 1 %conv103 = sext i32 %add58 to i64 %32 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i94 = getelementptr inbounds i8, ptr %32, i64 %conv103 - store i8 %31, ptr %add.ptr.i94, align 1 - %g105 = getelementptr inbounds i8, ptr %add.ptr.i93, i64 1 + %add.ptr.i93 = getelementptr inbounds i8, ptr %32, i64 %conv103 + store i8 %31, ptr %add.ptr.i93, align 1 + %g105 = getelementptr inbounds i8, ptr %add.ptr.i92, i64 1 %33 = load i8, ptr %g105, align 1 %add107 = or disjoint i32 %add58, 1 %conv108 = sext i32 %add107 to i64 %34 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i95 = getelementptr inbounds i8, ptr %34, i64 %conv108 - store i8 %33, ptr %add.ptr.i95, align 1 - %35 = load i8, ptr %add.ptr.i93, align 1 + %add.ptr.i94 = getelementptr inbounds i8, ptr %34, i64 %conv108 + store i8 %33, ptr %add.ptr.i94, align 1 + %35 = load i8, ptr %add.ptr.i92, align 1 %add112 = or disjoint i32 %add58, 2 %conv113 = sext i32 %add112 to i64 %36 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i96 = getelementptr inbounds i8, ptr %36, i64 %conv113 - store i8 %35, ptr %add.ptr.i96, align 1 + %add.ptr.i95 = getelementptr inbounds i8, ptr %36, i64 %conv113 + store i8 %35, ptr %add.ptr.i95, align 1 %37 = load i32, ptr %width, align 4 %sub124 = add nsw i32 %37, -1 - %cmp125 = icmp eq i32 %x.0149, %sub124 + %cmp125 = icmp eq i32 %x.0148, %sub124 br i1 %cmp125, label %for.inc228, label %if.end127 if.end127: ; preds = %if.end97 - %add.ptr.i97 = getelementptr inbounds i8, ptr %11, i64 %conv89 - %38 = load i8, ptr %add.ptr.i97, align 1 + %add.ptr.i96 = getelementptr inbounds i8, ptr %11, i64 %conv89 + %38 = load i8, ptr %add.ptr.i96, align 1 %39 = and i8 %38, 15 %conv120 = zext nneg i8 %39 to i64 - %add.ptr.i98 = getelementptr inbounds %"struct.OpenImageIO_v2_6_0::ICO_pvt::ico_palette_entry", ptr %palette.sroa.0.0174, i64 %conv120 - %inc128 = add nsw i32 %x.0149, 1 - %r129 = getelementptr inbounds i8, ptr %add.ptr.i98, i64 2 + %add.ptr.i97 = getelementptr inbounds %"struct.OpenImageIO_v2_6_0::ICO_pvt::ico_palette_entry", ptr %palette.sroa.0.0173, i64 %conv120 + %inc128 = add nsw i32 %x.0148, 1 + %r129 = getelementptr inbounds i8, ptr %add.ptr.i97, i64 2 %40 = load i8, ptr %r129, align 1 %41 = load ptr, ptr %m_buf6, align 8 %42 = getelementptr i8, ptr %41, i64 %conv103 - %add.ptr.i99 = getelementptr i8, ptr %42, i64 4 - store i8 %40, ptr %add.ptr.i99, align 1 - %g134 = getelementptr inbounds i8, ptr %add.ptr.i98, i64 1 + %add.ptr.i98 = getelementptr i8, ptr %42, i64 4 + store i8 %40, ptr %add.ptr.i98, align 1 + %g134 = getelementptr inbounds i8, ptr %add.ptr.i97, i64 1 %43 = load i8, ptr %g134, align 1 %44 = load ptr, ptr %m_buf6, align 8 %45 = getelementptr i8, ptr %44, i64 %conv103 - %add.ptr.i100 = getelementptr i8, ptr %45, i64 5 - store i8 %43, ptr %add.ptr.i100, align 1 - %46 = load i8, ptr %add.ptr.i98, align 1 + %add.ptr.i99 = getelementptr i8, ptr %45, i64 5 + store i8 %43, ptr %add.ptr.i99, align 1 + %46 = load i8, ptr %add.ptr.i97, align 1 %47 = load ptr, ptr %m_buf6, align 8 %48 = getelementptr i8, ptr %47, i64 %conv103 - %add.ptr.i101 = getelementptr i8, ptr %48, i64 6 - store i8 %46, ptr %add.ptr.i101, align 1 + %add.ptr.i100 = getelementptr i8, ptr %48, i64 6 + store i8 %46, ptr %add.ptr.i100, align 1 br label %for.inc228 sw.bb144: ; preds = %for.body52 - %conv145 = sext i32 %x.0149 to i64 - %add.ptr.i102 = getelementptr inbounds i8, ptr %11, i64 %conv145 - %49 = load i8, ptr %add.ptr.i102, align 1 + %conv145 = sext i32 %x.0148 to i64 + %add.ptr.i101 = getelementptr inbounds i8, ptr %11, i64 %conv145 + %49 = load i8, ptr %add.ptr.i101, align 1 %conv147 = zext i8 %49 to i32 %50 = load i32, ptr %m_palette_size, align 8 %cmp149.not = icmp sgt i32 %50, %conv147 @@ -3136,106 +3140,105 @@ if.then150.invoke: ; preds = %sw.bb144, %sw.bb87, if.end152: ; preds = %sw.bb144 %conv153 = zext i8 %49 to i64 - %add.ptr.i103 = getelementptr inbounds %"struct.OpenImageIO_v2_6_0::ICO_pvt::ico_palette_entry", ptr %palette.sroa.0.0174, i64 %conv153 - %r155 = getelementptr inbounds i8, ptr %add.ptr.i103, i64 2 + %add.ptr.i102 = getelementptr inbounds %"struct.OpenImageIO_v2_6_0::ICO_pvt::ico_palette_entry", ptr %palette.sroa.0.0173, i64 %conv153 + %r155 = getelementptr inbounds i8, ptr %add.ptr.i102, i64 2 %51 = load i8, ptr %r155, align 1 %conv158 = sext i32 %add58 to i64 %52 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i104 = getelementptr inbounds i8, ptr %52, i64 %conv158 - store i8 %51, ptr %add.ptr.i104, align 1 - %g160 = getelementptr inbounds i8, ptr %add.ptr.i103, i64 1 + %add.ptr.i103 = getelementptr inbounds i8, ptr %52, i64 %conv158 + store i8 %51, ptr %add.ptr.i103, align 1 + %g160 = getelementptr inbounds i8, ptr %add.ptr.i102, i64 1 %53 = load i8, ptr %g160, align 1 %add162 = or disjoint i32 %add58, 1 %conv163 = sext i32 %add162 to i64 %54 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i105 = getelementptr inbounds i8, ptr %54, i64 %conv163 - store i8 %53, ptr %add.ptr.i105, align 1 - %55 = load i8, ptr %add.ptr.i103, align 1 + %add.ptr.i104 = getelementptr inbounds i8, ptr %54, i64 %conv163 + store i8 %53, ptr %add.ptr.i104, align 1 + %55 = load i8, ptr %add.ptr.i102, align 1 %add167 = or disjoint i32 %add58, 2 %conv168 = sext i32 %add167 to i64 %56 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i106 = getelementptr inbounds i8, ptr %56, i64 %conv168 - store i8 %55, ptr %add.ptr.i106, align 1 + %add.ptr.i105 = getelementptr inbounds i8, ptr %56, i64 %conv168 + store i8 %55, ptr %add.ptr.i105, align 1 br label %for.inc228 sw.bb170: ; preds = %for.body52 - %mul171 = mul nsw i32 %x.0149, 3 + %mul171 = mul nsw i32 %x.0148, 3 %57 = sext i32 %mul171 to i64 %58 = getelementptr i8, ptr %11, i64 %57 - %add.ptr.i107 = getelementptr i8, ptr %58, i64 2 - %59 = load i8, ptr %add.ptr.i107, align 1 + %add.ptr.i106 = getelementptr i8, ptr %58, i64 2 + %59 = load i8, ptr %add.ptr.i106, align 1 %conv177 = sext i32 %add58 to i64 %60 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i108 = getelementptr inbounds i8, ptr %60, i64 %conv177 - store i8 %59, ptr %add.ptr.i108, align 1 - %add.ptr.i109 = getelementptr i8, ptr %58, i64 1 - %61 = load i8, ptr %add.ptr.i109, align 1 + %add.ptr.i107 = getelementptr inbounds i8, ptr %60, i64 %conv177 + store i8 %59, ptr %add.ptr.i107, align 1 + %add.ptr.i108 = getelementptr i8, ptr %58, i64 1 + %61 = load i8, ptr %add.ptr.i108, align 1 %add184 = or disjoint i32 %add58, 1 %conv185 = sext i32 %add184 to i64 %62 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i110 = getelementptr inbounds i8, ptr %62, i64 %conv185 - store i8 %61, ptr %add.ptr.i110, align 1 - %add.ptr.i111 = getelementptr inbounds i8, ptr %11, i64 %57 - %63 = load i8, ptr %add.ptr.i111, align 1 + %add.ptr.i109 = getelementptr inbounds i8, ptr %62, i64 %conv185 + store i8 %61, ptr %add.ptr.i109, align 1 + %add.ptr.i110 = getelementptr inbounds i8, ptr %11, i64 %57 + %63 = load i8, ptr %add.ptr.i110, align 1 %add192 = or disjoint i32 %add58, 2 %conv193 = sext i32 %add192 to i64 %64 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i112 = getelementptr inbounds i8, ptr %64, i64 %conv193 - store i8 %63, ptr %add.ptr.i112, align 1 + %add.ptr.i111 = getelementptr inbounds i8, ptr %64, i64 %conv193 + store i8 %63, ptr %add.ptr.i111, align 1 br label %for.inc228 sw.bb195: ; preds = %for.body52 - %mul57 = shl nsw i32 %x.0149, 2 %add197 = or disjoint i32 %mul57, 2 %conv198 = sext i32 %add197 to i64 - %add.ptr.i113 = getelementptr inbounds i8, ptr %11, i64 %conv198 - %65 = load i8, ptr %add.ptr.i113, align 1 + %add.ptr.i112 = getelementptr inbounds i8, ptr %11, i64 %conv198 + %65 = load i8, ptr %add.ptr.i112, align 1 %conv202 = sext i32 %add58 to i64 %66 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i114 = getelementptr inbounds i8, ptr %66, i64 %conv202 - store i8 %65, ptr %add.ptr.i114, align 1 + %add.ptr.i113 = getelementptr inbounds i8, ptr %66, i64 %conv202 + store i8 %65, ptr %add.ptr.i113, align 1 %add205 = or disjoint i32 %mul57, 1 %conv206 = sext i32 %add205 to i64 - %add.ptr.i115 = getelementptr inbounds i8, ptr %11, i64 %conv206 - %67 = load i8, ptr %add.ptr.i115, align 1 + %add.ptr.i114 = getelementptr inbounds i8, ptr %11, i64 %conv206 + %67 = load i8, ptr %add.ptr.i114, align 1 %add209 = or disjoint i32 %add58, 1 %conv210 = sext i32 %add209 to i64 %68 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i116 = getelementptr inbounds i8, ptr %68, i64 %conv210 - store i8 %67, ptr %add.ptr.i116, align 1 + %add.ptr.i115 = getelementptr inbounds i8, ptr %68, i64 %conv210 + store i8 %67, ptr %add.ptr.i115, align 1 %conv214 = sext i32 %mul57 to i64 - %add.ptr.i117 = getelementptr inbounds i8, ptr %11, i64 %conv214 - %69 = load i8, ptr %add.ptr.i117, align 1 + %add.ptr.i116 = getelementptr inbounds i8, ptr %11, i64 %conv214 + %69 = load i8, ptr %add.ptr.i116, align 1 %add217 = or disjoint i32 %add58, 2 %conv218 = sext i32 %add217 to i64 %70 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i118 = getelementptr inbounds i8, ptr %70, i64 %conv218 - store i8 %69, ptr %add.ptr.i118, align 1 + %add.ptr.i117 = getelementptr inbounds i8, ptr %70, i64 %conv218 + store i8 %69, ptr %add.ptr.i117, align 1 %add221 = or disjoint i32 %mul57, 3 %conv222 = sext i32 %add221 to i64 - %add.ptr.i119 = getelementptr inbounds i8, ptr %11, i64 %conv222 - %71 = load i8, ptr %add.ptr.i119, align 1 + %add.ptr.i118 = getelementptr inbounds i8, ptr %11, i64 %conv222 + %71 = load i8, ptr %add.ptr.i118, align 1 %add225 = or disjoint i32 %add58, 3 %conv226 = sext i32 %add225 to i64 %72 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i120 = getelementptr inbounds i8, ptr %72, i64 %conv226 - store i8 %71, ptr %add.ptr.i120, align 1 + %add.ptr.i119 = getelementptr inbounds i8, ptr %72, i64 %conv226 + store i8 %71, ptr %add.ptr.i119, align 1 br label %for.inc228 for.inc228: ; preds = %for.body52, %if.end72, %if.end127, %if.end152, %sw.bb170, %sw.bb195, %if.end97 - %x.1 = phi i32 [ %x.0149, %for.body52 ], [ %x.0149, %sw.bb195 ], [ %x.0149, %sw.bb170 ], [ %x.0149, %if.end152 ], [ %x.0149, %if.end97 ], [ %inc128, %if.end127 ], [ %x.0149, %if.end72 ] + %x.1 = phi i32 [ %x.0148, %for.body52 ], [ %x.0148, %sw.bb195 ], [ %x.0148, %sw.bb170 ], [ %x.0148, %if.end152 ], [ %x.0148, %if.end97 ], [ %inc128, %if.end127 ], [ %x.0148, %if.end72 ] %inc229 = add nsw i32 %x.1, 1 %73 = load i32, ptr %width, align 4 %cmp51 = icmp slt i32 %inc229, %73 br i1 %cmp51, label %for.body52, label %for.cond38.loopexit, !llvm.loop !28 for.end232.loopexit: ; preds = %for.cond38.loopexit - %.pre167 = load i32, ptr %m_bpp177, align 4 + %.pre166 = load i32, ptr %m_bpp176, align 4 br label %for.end232 for.end232: ; preds = %for.end232.loopexit, %invoke.cont35 %74 = phi i32 [ %13, %for.end232.loopexit ], [ %10, %invoke.cont35 ] - %75 = phi i32 [ %.pre167, %for.end232.loopexit ], [ %9, %invoke.cont35 ] + %75 = phi i32 [ %.pre166, %for.end232.loopexit ], [ %9, %invoke.cont35 ] %cmp234 = icmp slt i32 %75, 32 br i1 %cmp234, label %if.then235, label %cleanup308 @@ -3251,16 +3254,16 @@ if.then235: ; preds = %for.end232 invoke.cont249: ; preds = %if.then235 %76 = load i32, ptr %height, align 8 - %cmp255157 = icmp sgt i32 %76, 0 - br i1 %cmp255157, label %for.body256, label %cleanup308 + %cmp255156 = icmp sgt i32 %76, 0 + br i1 %cmp255156, label %for.body256, label %cleanup308 for.cond254.loopexit: ; preds = %for.inc301, %for.cond264.preheader - %cmp255 = icmp sgt i32 %y250.0158.in, 1 + %cmp255 = icmp sgt i32 %y250.0157.in, 1 br i1 %cmp255, label %for.body256, label %cleanup308, !llvm.loop !29 for.body256: ; preds = %invoke.cont249, %for.cond254.loopexit - %y250.0158.in = phi i32 [ %y250.0158, %for.cond254.loopexit ], [ %76, %invoke.cont249 ] - %y250.0158 = add nsw i32 %y250.0158.in, -1 + %y250.0157.in = phi i32 [ %y250.0157, %for.cond254.loopexit ], [ %76, %invoke.cont249 ] + %y250.0157 = add nsw i32 %y250.0157.in, -1 %77 = load ptr, ptr %scanline, align 8 %call260 = invoke noundef zeroext i1 @_ZN18OpenImageIO_v2_6_010ImageInput6ioreadEPvmm(ptr noundef nonnull align 8 dereferenceable(184) %this, ptr noundef nonnull %77, i64 noundef 1, i64 noundef %conv248) to label %invoke.cont259 unwind label %lpad43.loopexit @@ -3270,85 +3273,85 @@ invoke.cont259: ; preds = %for.body256 for.cond264.preheader: ; preds = %invoke.cont259 %78 = load i32, ptr %width, align 4 - %cmp267154 = icmp sgt i32 %78, 0 - br i1 %cmp267154, label %for.cond270.preheader, label %for.cond254.loopexit + %cmp267153 = icmp sgt i32 %78, 0 + br i1 %cmp267153, label %for.cond270.preheader, label %for.cond254.loopexit for.cond270.preheader: ; preds = %for.cond264.preheader, %for.inc301 - %indvars.iv162 = phi i64 [ %indvars.iv.next163, %for.inc301 ], [ 0, %for.cond264.preheader ] - %79 = lshr exact i64 %indvars.iv162, 3 - %80 = trunc i64 %indvars.iv162 to i32 + %indvars.iv161 = phi i64 [ %indvars.iv.next162, %for.inc301 ], [ 0, %for.cond264.preheader ] + %79 = lshr exact i64 %indvars.iv161, 3 + %80 = trunc i64 %indvars.iv161 to i32 %81 = or disjoint i32 %80, 7 br label %for.body272 for.body272: ; preds = %for.cond270.preheader, %for.body272 - %b269.0153 = phi i32 [ 0, %for.cond270.preheader ], [ %inc299, %for.body272 ] + %b269.0152 = phi i32 [ 0, %for.cond270.preheader ], [ %inc299, %for.body272 ] %82 = load i32, ptr %width, align 4 - %mul275 = mul nsw i32 %82, %y250.0158 - %sub278 = sub nuw nsw i32 %81, %b269.0153 + %mul275 = mul nsw i32 %82, %y250.0157 + %sub278 = sub nuw nsw i32 %81, %b269.0152 %mul27668 = add i32 %sub278, %mul275 %add280 = shl i32 %mul27668, 2 %83 = load ptr, ptr %scanline, align 8 - %add.ptr.i122 = getelementptr inbounds i8, ptr %83, i64 %79 - %84 = load i8, ptr %add.ptr.i122, align 1 + %add.ptr.i121 = getelementptr inbounds i8, ptr %83, i64 %79 + %84 = load i8, ptr %add.ptr.i121, align 1 %conv284 = zext i8 %84 to i32 - %shl285 = shl nuw nsw i32 1, %b269.0153 + %shl285 = shl nuw nsw i32 1, %b269.0152 %and286 = and i32 %shl285, %conv284 %tobool287.not = icmp eq i32 %and286, 0 %add294 = or disjoint i32 %add280, 3 %conv295 = sext i32 %add294 to i64 %85 = load ptr, ptr %m_buf6, align 8 - %add.ptr.i124 = getelementptr inbounds i8, ptr %85, i64 %conv295 + %add.ptr.i123 = getelementptr inbounds i8, ptr %85, i64 %conv295 %. = sext i1 %tobool287.not to i8 - store i8 %., ptr %add.ptr.i124, align 1 - %inc299 = add nuw nsw i32 %b269.0153, 1 + store i8 %., ptr %add.ptr.i123, align 1 + %inc299 = add nuw nsw i32 %b269.0152, 1 %exitcond.not = icmp eq i32 %inc299, 8 br i1 %exitcond.not, label %for.inc301, label %for.body272, !llvm.loop !30 for.inc301: ; preds = %for.body272 - %indvars.iv.next163 = add nuw nsw i64 %indvars.iv162, 8 + %indvars.iv.next162 = add nuw nsw i64 %indvars.iv161, 8 %86 = load i32, ptr %width, align 4 %87 = sext i32 %86 to i64 - %cmp267 = icmp slt i64 %indvars.iv.next163, %87 + %cmp267 = icmp slt i64 %indvars.iv.next162, %87 br i1 %cmp267, label %for.cond270.preheader, label %for.cond254.loopexit, !llvm.loop !31 cleanup308: ; preds = %invoke.cont44, %invoke.cont259, %for.cond254.loopexit, %if.then150.invoke, %invoke.cont249, %for.end232 %retval.3 = phi i1 [ true, %for.end232 ], [ true, %invoke.cont249 ], [ false, %if.then150.invoke ], [ false, %invoke.cont259 ], [ %call260, %for.cond254.loopexit ], [ false, %invoke.cont44 ] %88 = load ptr, ptr %scanline, align 8 - %tobool.not.i.i.i125 = icmp eq ptr %88, null - br i1 %tobool.not.i.i.i125, label %cleanup309, label %if.then.i.i.i126 + %tobool.not.i.i.i124 = icmp eq ptr %88, null + br i1 %tobool.not.i.i.i124, label %cleanup309, label %if.then.i.i.i125 -if.then.i.i.i126: ; preds = %cleanup308 +if.then.i.i.i125: ; preds = %cleanup308 call void @_ZdlPv(ptr noundef nonnull %88) #26 br label %cleanup309 -cleanup309: ; preds = %if.then.i.i.i126, %cleanup308 - %tobool.not.i.i.i128 = icmp eq ptr %palette.sroa.0.0174, null - br i1 %tobool.not.i.i.i128, label %return, label %if.then.i.i.i129 +cleanup309: ; preds = %if.then.i.i.i125, %cleanup308 + %tobool.not.i.i.i127 = icmp eq ptr %palette.sroa.0.0173, null + br i1 %tobool.not.i.i.i127, label %return, label %if.then.i.i.i128 -if.then.i.i.i129: ; preds = %invoke.cont17, %cleanup309 - %retval.2182 = phi i1 [ %retval.3, %cleanup309 ], [ false, %invoke.cont17 ] - %palette.sroa.0.0173181 = phi ptr [ %palette.sroa.0.0174, %cleanup309 ], [ %call5.i.i.i.i2.i.i73, %invoke.cont17 ] - call void @_ZdlPv(ptr noundef nonnull %palette.sroa.0.0173181) #26 +if.then.i.i.i128: ; preds = %invoke.cont17, %cleanup309 + %retval.2181 = phi i1 [ %retval.3, %cleanup309 ], [ false, %invoke.cont17 ] + %palette.sroa.0.0172180 = phi ptr [ %palette.sroa.0.0173, %cleanup309 ], [ %call5.i.i.i.i2.i.i72, %invoke.cont17 ] + call void @_ZdlPv(ptr noundef nonnull %palette.sroa.0.0172180) #26 br label %return ehcleanup: ; preds = %if.then.i.i.i, %lpad43, %lpad34 %.pn = phi { ptr, i32 } [ %15, %lpad34 ], [ %lpad.phi, %lpad43 ], [ %lpad.phi, %if.then.i.i.i ] - %tobool.not.i.i.i130 = icmp eq ptr %palette.sroa.0.0174, null - br i1 %tobool.not.i.i.i130, label %eh.resume, label %if.then.i.i.i131 + %tobool.not.i.i.i129 = icmp eq ptr %palette.sroa.0.0173, null + br i1 %tobool.not.i.i.i129, label %eh.resume, label %if.then.i.i.i130 -if.then.i.i.i131: ; preds = %ehcleanup.thread, %ehcleanup - %.pn187 = phi { ptr, i32 } [ %8, %ehcleanup.thread ], [ %.pn, %ehcleanup ] - %palette.sroa.0.0175186 = phi ptr [ %call5.i.i.i.i2.i.i73, %ehcleanup.thread ], [ %palette.sroa.0.0174, %ehcleanup ] - call void @_ZdlPv(ptr noundef nonnull %palette.sroa.0.0175186) #26 +if.then.i.i.i130: ; preds = %ehcleanup.thread, %ehcleanup + %.pn186 = phi { ptr, i32 } [ %8, %ehcleanup.thread ], [ %.pn, %ehcleanup ] + %palette.sroa.0.0174185 = phi ptr [ %call5.i.i.i.i2.i.i72, %ehcleanup.thread ], [ %palette.sroa.0.0173, %ehcleanup ] + call void @_ZdlPv(ptr noundef nonnull %palette.sroa.0.0174185) #26 br label %eh.resume -return: ; preds = %if.then.i.i.i129, %cleanup309, %cleanup - %retval.1 = phi i1 [ %tobool3.not, %cleanup ], [ %retval.3, %cleanup309 ], [ %retval.2182, %if.then.i.i.i129 ] +return: ; preds = %if.then.i.i.i128, %cleanup309, %cleanup + %retval.1 = phi i1 [ %tobool3.not, %cleanup ], [ %retval.3, %cleanup309 ], [ %retval.2181, %if.then.i.i.i128 ] ret i1 %retval.1 -eh.resume: ; preds = %if.then.i.i.i131, %ehcleanup, %lpad - %.pn71 = phi { ptr, i32 } [ %1, %lpad ], [ %.pn, %ehcleanup ], [ %.pn187, %if.then.i.i.i131 ] - resume { ptr, i32 } %.pn71 +eh.resume: ; preds = %if.then.i.i.i130, %ehcleanup, %lpad + %.pn70 = phi { ptr, i32 } [ %1, %lpad ], [ %.pn, %ehcleanup ], [ %.pn186, %if.then.i.i.i130 ] + resume { ptr, i32 } %.pn70 } ; Function Attrs: mustprogress uwtable diff --git a/bench/opencv/optimized/contrast_preserve.cpp.ll b/bench/opencv/optimized/contrast_preserve.cpp.ll index bc92c9b62e5..bb6e484b383 100644 --- a/bench/opencv/optimized/contrast_preserve.cpp.ll +++ b/bench/opencv/optimized/contrast_preserve.cpp.ll @@ -637,15 +637,15 @@ define hidden void @_ZNK7Decolor10gradvectorERKN2cv3MatERSt6vectorIdSaIdEE(ptr n call void @_ZN2cv3MatC1Ev(ptr noundef nonnull align 8 dereferenceable(96) %4) #22 call void @_ZN2cv3MatC1Ev(ptr noundef nonnull align 8 dereferenceable(96) %5) #22 invoke void @_ZNK7Decolor18singleChannelGradxERKN2cv3MatERS1_(ptr noundef nonnull align 8 dereferenceable(200) %0, ptr noundef nonnull align 8 dereferenceable(96) %1, ptr noundef nonnull align 8 dereferenceable(96) %4) - to label %10 unwind label %91 + to label %10 unwind label %90 10: ; preds = %3 invoke void @_ZNK7Decolor18singleChannelGradyERKN2cv3MatERS1_(ptr noundef nonnull align 8 dereferenceable(200) %0, ptr noundef nonnull align 8 dereferenceable(96) %1, ptr noundef nonnull align 8 dereferenceable(96) %5) - to label %11 unwind label %91 + to label %11 unwind label %90 11: ; preds = %10 invoke void @_ZNK2cv3Mat1tEv(ptr dead_on_unwind nonnull writable sret(%"class.cv::MatExpr") align 8 %7, ptr noundef nonnull align 8 dereferenceable(96) %4) - to label %12 unwind label %91 + to label %12 unwind label %90 12: ; preds = %11 call void @_ZN2cv3MatC1Ev(ptr noundef nonnull align 8 dereferenceable(96) %6) #22 @@ -661,7 +661,7 @@ define hidden void @_ZNK7Decolor10gradvectorERKN2cv3MatERSt6vectorIdSaIdEE(ptr n cleanup call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %6) #22 call void @_ZN2cv7MatExprD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %7) #22 - br label %98 + br label %97 _ZNK2cv7MatExprcvNS_3MatEEv.exit: ; preds = %12 %18 = getelementptr inbounds i8, ptr %7, i64 208 @@ -671,7 +671,7 @@ _ZNK2cv7MatExprcvNS_3MatEEv.exit: ; preds = %12 %20 = getelementptr inbounds i8, ptr %7, i64 16 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %20) #22 invoke void @_ZNK2cv3Mat1tEv(ptr dead_on_unwind nonnull writable sret(%"class.cv::MatExpr") align 8 %9, ptr noundef nonnull align 8 dereferenceable(96) %5) - to label %21 unwind label %93 + to label %21 unwind label %92 21: ; preds = %_ZNK2cv7MatExprcvNS_3MatEEv.exit call void @_ZN2cv3MatC1Ev(ptr noundef nonnull align 8 dereferenceable(96) %8) #22 @@ -687,7 +687,7 @@ _ZNK2cv7MatExprcvNS_3MatEEv.exit: ; preds = %12 cleanup call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %8) #22 call void @_ZN2cv7MatExprD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %9) #22 - br label %97 + br label %96 27: ; preds = %21 %28 = getelementptr inbounds i8, ptr %9, i64 208 @@ -701,8 +701,8 @@ _ZNK2cv7MatExprcvNS_3MatEEv.exit: ; preds = %12 %33 = getelementptr inbounds i8, ptr %32, i64 4 %34 = load i32, ptr %33, align 4 %35 = load i32, ptr %32, align 4 - %36 = shl i32 %34, 1 - %37 = mul i32 %36, %35 + %36 = mul nsw i32 %35, %34 + %37 = shl nsw i32 %36, 1 %38 = sext i32 %37 to i64 %39 = getelementptr inbounds i8, ptr %2, i64 8 %40 = load ptr, ptr %39, align 8 @@ -717,7 +717,7 @@ _ZNK2cv7MatExprcvNS_3MatEEv.exit: ; preds = %12 47: ; preds = %27 %48 = sub nuw nsw i64 %38, %45 invoke void @_ZNSt6vectorIdSaIdEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %48) - to label %_ZNSt6vectorIdSaIdEE6resizeEm.exit unwind label %95 + to label %_ZNSt6vectorIdSaIdEE6resizeEm.exit unwind label %94 49: ; preds = %27 %50 = icmp ugt i64 %45, %38 @@ -781,56 +781,55 @@ _ZNSt6vectorIdSaIdEE6resizeEm.exit: ; preds = %47, %49, %51, %53 .preheader.lr.ph: ; preds = %.preheader50 %72 = getelementptr inbounds i8, ptr %8, i64 16 %73 = getelementptr inbounds i8, ptr %8, i64 72 - %74 = zext nneg i32 %35 to i64 - %wide.trip.count69 = zext nneg i32 %34 to i64 + %74 = zext nneg i32 %34 to i64 + %75 = zext nneg i32 %36 to i64 + %wide.trip.count74 = zext nneg i32 %35 to i64 br label %.preheader.us .preheader.us: ; preds = %.preheader.lr.ph, %._crit_edge.us57 %indvars.iv71 = phi i64 [ 0, %.preheader.lr.ph ], [ %indvars.iv.next72, %._crit_edge.us57 ] - %75 = trunc i64 %indvars.iv71 to i32 - %76 = add i32 %35, %75 - %77 = mul i32 %76, %34 - %78 = sext i32 %77 to i64 - br label %79 - -79: ; preds = %.preheader.us, %79 - %indvars.iv66 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next67, %79 ] - %80 = load ptr, ptr %72, align 8 - %81 = load ptr, ptr %73, align 8 - %82 = load i64, ptr %81, align 8 - %83 = mul i64 %82, %indvars.iv71 - %84 = getelementptr inbounds i8, ptr %80, i64 %83 - %85 = getelementptr inbounds float, ptr %84, i64 %indvars.iv66 - %86 = load float, ptr %85, align 4 - %87 = fpext float %86 to double - %88 = load ptr, ptr %2, align 8 - %89 = getelementptr double, ptr %88, i64 %indvars.iv66 - %90 = getelementptr double, ptr %89, i64 %78 - store double %87, ptr %90, align 8 + %76 = mul nuw nsw i64 %indvars.iv71, %74 + br label %77 + +77: ; preds = %.preheader.us, %77 + %indvars.iv66 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next67, %77 ] + %78 = load ptr, ptr %72, align 8 + %79 = load ptr, ptr %73, align 8 + %80 = load i64, ptr %79, align 8 + %81 = mul i64 %80, %indvars.iv71 + %82 = getelementptr inbounds i8, ptr %78, i64 %81 + %83 = getelementptr inbounds float, ptr %82, i64 %indvars.iv66 + %84 = load float, ptr %83, align 4 + %85 = fpext float %84 to double + %86 = load ptr, ptr %2, align 8 + %87 = getelementptr inbounds double, ptr %86, i64 %76 + %88 = getelementptr inbounds double, ptr %87, i64 %75 + %89 = getelementptr inbounds double, ptr %88, i64 %indvars.iv66 + store double %85, ptr %89, align 8 %indvars.iv.next67 = add nuw nsw i64 %indvars.iv66, 1 - %exitcond70.not = icmp eq i64 %indvars.iv.next67, %wide.trip.count69 - br i1 %exitcond70.not, label %._crit_edge.us57, label %79, !llvm.loop !25 + %exitcond70.not = icmp eq i64 %indvars.iv.next67, %74 + br i1 %exitcond70.not, label %._crit_edge.us57, label %77, !llvm.loop !25 -._crit_edge.us57: ; preds = %79 +._crit_edge.us57: ; preds = %77 %indvars.iv.next72 = add nuw nsw i64 %indvars.iv71, 1 - %exitcond75.not = icmp eq i64 %indvars.iv.next72, %74 + %exitcond75.not = icmp eq i64 %indvars.iv.next72, %wide.trip.count74 br i1 %exitcond75.not, label %._crit_edge56, label %.preheader.us, !llvm.loop !26 -91: ; preds = %11, %10, %3 - %92 = landingpad { ptr, i32 } +90: ; preds = %11, %10, %3 + %91 = landingpad { ptr, i32 } cleanup - br label %98 + br label %97 -93: ; preds = %_ZNK2cv7MatExprcvNS_3MatEEv.exit - %94 = landingpad { ptr, i32 } +92: ; preds = %_ZNK2cv7MatExprcvNS_3MatEEv.exit + %93 = landingpad { ptr, i32 } cleanup - br label %97 + br label %96 -95: ; preds = %47 - %96 = landingpad { ptr, i32 } +94: ; preds = %47 + %95 = landingpad { ptr, i32 } cleanup call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %8) #22 - br label %97 + br label %96 ._crit_edge56: ; preds = %._crit_edge.us57, %.preheader51.lr.ph, %_ZNSt6vectorIdSaIdEE6resizeEm.exit, %.preheader50 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %8) #22 @@ -839,13 +838,13 @@ _ZNSt6vectorIdSaIdEE6resizeEm.exit: ; preds = %47, %49, %51, %53 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %4) #22 ret void -97: ; preds = %95, %.body43, %93 - %.pn = phi { ptr, i32 } [ %96, %95 ], [ %26, %.body43 ], [ %94, %93 ] +96: ; preds = %94, %.body43, %92 + %.pn = phi { ptr, i32 } [ %95, %94 ], [ %26, %.body43 ], [ %93, %92 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %6) #22 - br label %98 + br label %97 -98: ; preds = %97, %.body, %91 - %.pn.pn = phi { ptr, i32 } [ %.pn, %97 ], [ %17, %.body ], [ %92, %91 ] +97: ; preds = %96, %.body, %90 + %.pn.pn = phi { ptr, i32 } [ %.pn, %96 ], [ %17, %.body ], [ %91, %90 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %5) #22 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %4) #22 resume { ptr, i32 } %.pn.pn diff --git a/bench/openexr/optimized/ImfB44Compressor.cpp.ll b/bench/openexr/optimized/ImfB44Compressor.cpp.ll index 643da3fd036..99dda4e26e0 100644 --- a/bench/openexr/optimized/ImfB44Compressor.cpp.ll +++ b/bench/openexr/optimized/ImfB44Compressor.cpp.ll @@ -1582,7 +1582,7 @@ invoke.cont.i: ; preds = %if.then41 common.resume: ; preds = %lpad.i153, %lpad.i108, %lpad.i104, %lpad.i %exception.i152.sink = phi ptr [ %exception.i152, %lpad.i153 ], [ %exception.i107, %lpad.i108 ], [ %exception.i103, %lpad.i104 ], [ %exception.i, %lpad.i ] - %common.resume.op = phi { ptr, i32 } [ %139, %lpad.i153 ], [ %37, %lpad.i108 ], [ %33, %lpad.i104 ], [ %27, %lpad.i ] + %common.resume.op = phi { ptr, i32 } [ %136, %lpad.i153 ], [ %37, %lpad.i108 ], [ %33, %lpad.i104 ], [ %27, %lpad.i ] tail call void @__cxa_free_exception(ptr %exception.i152.sink) #16 resume { ptr, i32 } %common.resume.op @@ -1600,8 +1600,8 @@ if.end42: ; preds = %if.then32 br label %for.inc139 for.body52: ; preds = %for.body52.lr.ph, %for.inc136 - %29 = phi i32 [ %86, %for.inc136 ], [ %21, %for.body52.lr.ph ] - %30 = phi i32 [ %87, %for.inc136 ], [ %22, %for.body52.lr.ph ] + %29 = phi i32 [ %83, %for.inc136 ], [ %21, %for.body52.lr.ph ] + %30 = phi i32 [ %84, %for.inc136 ], [ %22, %for.body52.lr.ph ] %inPtr.addr.2195 = phi ptr [ %inPtr.addr.3.lcssa, %for.inc136 ], [ %inPtr.addr.0202, %for.body52.lr.ph ] %inSize.addr.2194 = phi i32 [ %inSize.addr.3.lcssa, %for.inc136 ], [ %inSize.addr.0201, %for.body52.lr.ph ] %y48.0193 = phi i32 [ %add137, %for.inc136 ], [ 0, %for.body52.lr.ph ] @@ -1623,7 +1623,7 @@ for.body71.lr.ph: ; preds = %for.body52 br label %for.body71 for.body71: ; preds = %for.body71.lr.ph, %if.end128 - %32 = phi i32 [ %30, %for.body71.lr.ph ], [ %85, %if.end128 ] + %32 = phi i32 [ %30, %for.body71.lr.ph ], [ %82, %if.end128 ] %inPtr.addr.3190 = phi ptr [ %inPtr.addr.2195, %for.body71.lr.ph ], [ %add.ptr85, %if.end128 ] %inSize.addr.3189 = phi i32 [ %inSize.addr.2194, %for.body71.lr.ph ], [ %sub86, %if.end128 ] %x67.0188 = phi i32 [ 0, %for.body71.lr.ph ], [ %add134, %if.end128 ] @@ -1737,69 +1737,67 @@ if.end83: ; preds = %if.else %45 = load i8, ptr %arrayidx30.i, align 1 %46 = and i8 %45, 63 %and46.i = zext nneg i8 %46 to i32 - %47 = add nsw i32 %and46.i, -32 - %48 = add nsw i32 %and34.i, %47 - %49 = shl nsw i32 %48, %shr.i - %sub51.i = add nsw i32 %49, %add37.i + %shl48.i = shl nuw nsw i32 %and46.i, %shr.i + %add49.i = add nsw i32 %sub39.i, %shl9.neg96.i + %sub51.i = add nsw i32 %add49.i, %shl48.i %conv52.i = trunc i32 %sub51.i to i16 store i16 %conv52.i, ptr %arrayidx53.i, align 8 %arrayidx56.i = getelementptr inbounds i8, ptr %inPtr.addr.3190, i64 5 - %50 = load i8, ptr %arrayidx56.i, align 1 - %51 = lshr i8 %50, 2 - %shr58.i = zext nneg i8 %51 to i32 + %47 = load i8, ptr %arrayidx56.i, align 1 + %48 = lshr i8 %47, 2 + %shr58.i = zext nneg i8 %48 to i32 %shl60.i = shl nuw nsw i32 %shr58.i, %shr.i %sub63.i = add nsw i32 %shl60.i, %add.i %conv64.i = trunc i32 %sub63.i to i16 store i16 %conv64.i, ptr %arrayidx65.i, align 2 - %conv69.i = zext i8 %50 to i32 + %conv69.i = zext i8 %47 to i32 %shl70.i = shl nuw nsw i32 %conv69.i, 4 %arrayidx71.i = getelementptr inbounds i8, ptr %inPtr.addr.3190, i64 6 - %52 = load i8, ptr %arrayidx71.i, align 1 - %53 = lshr i8 %52, 4 - %shr73.i = zext nneg i8 %53 to i32 + %49 = load i8, ptr %arrayidx71.i, align 1 + %50 = lshr i8 %49, 4 + %shr73.i = zext nneg i8 %50 to i32 %shl70.masked.i = and i32 %shl70.i, 48 %and75.i = or disjoint i32 %shl70.masked.i, %shr73.i %shl77.i = shl nuw nsw i32 %and75.i, %shr.i %sub80.i = add nsw i32 %shl77.i, %add37.i %conv81.i = trunc i32 %sub80.i to i16 store i16 %conv81.i, ptr %arrayidx82.i, align 2 - %54 = load i8, ptr %arrayidx71.i, align 1 - %conv86.i = zext i8 %54 to i32 + %51 = load i8, ptr %arrayidx71.i, align 1 + %conv86.i = zext i8 %51 to i32 %shl87.i = shl nuw nsw i32 %conv86.i, 2 %arrayidx88.i = getelementptr inbounds i8, ptr %inPtr.addr.3190, i64 7 - %55 = load i8, ptr %arrayidx88.i, align 1 - %56 = lshr i8 %55, 6 - %shr90.i = zext nneg i8 %56 to i32 + %52 = load i8, ptr %arrayidx88.i, align 1 + %53 = lshr i8 %52, 6 + %shr90.i = zext nneg i8 %53 to i32 %shl87.masked.i = and i32 %shl87.i, 60 %and92.i = or disjoint i32 %shl87.masked.i, %shr90.i %shl94.i = shl nuw nsw i32 %and92.i, %shr.i - %add95.i = add nsw i32 %sub39.i, %shl9.neg96.i - %sub97.i = add nsw i32 %add95.i, %shl94.i + %sub97.i = add nsw i32 %add49.i, %shl94.i %conv98.i = trunc i32 %sub97.i to i16 store i16 %conv98.i, ptr %arrayidx99.i, align 2 - %57 = load i8, ptr %arrayidx88.i, align 1 - %58 = and i8 %57, 63 - %and104.i = zext nneg i8 %58 to i32 + %54 = load i8, ptr %arrayidx88.i, align 1 + %55 = and i8 %54, 63 + %and104.i = zext nneg i8 %55 to i32 %shl106.i = shl nuw nsw i32 %and104.i, %shr.i %add107.i = add nsw i32 %sub51.i, %shl9.neg96.i %sub109.i = add nsw i32 %add107.i, %shl106.i %conv110.i = trunc i32 %sub109.i to i16 store i16 %conv110.i, ptr %arrayidx111.i, align 2 %arrayidx114.i = getelementptr inbounds i8, ptr %inPtr.addr.3190, i64 8 - %59 = load i8, ptr %arrayidx114.i, align 1 - %60 = lshr i8 %59, 2 - %shr116.i = zext nneg i8 %60 to i32 + %56 = load i8, ptr %arrayidx114.i, align 1 + %57 = lshr i8 %56, 2 + %shr116.i = zext nneg i8 %57 to i32 %shl118.i = shl nuw nsw i32 %shr116.i, %shr.i %add119.i = add nsw i32 %sub63.i, %shl9.neg96.i %sub121.i = add nsw i32 %add119.i, %shl118.i %conv122.i = trunc i32 %sub121.i to i16 store i16 %conv122.i, ptr %arrayidx123.i, align 4 - %conv127.i = zext i8 %59 to i32 + %conv127.i = zext i8 %56 to i32 %shl128.i = shl nuw nsw i32 %conv127.i, 4 %arrayidx129.i = getelementptr inbounds i8, ptr %inPtr.addr.3190, i64 9 - %61 = load i8, ptr %arrayidx129.i, align 1 - %62 = lshr i8 %61, 4 - %shr131.i = zext nneg i8 %62 to i32 + %58 = load i8, ptr %arrayidx129.i, align 1 + %59 = lshr i8 %58, 4 + %shr131.i = zext nneg i8 %59 to i32 %shl128.masked.i = and i32 %shl128.i, 48 %and133.i = or disjoint i32 %shl128.masked.i, %shr131.i %shl135.i = shl nuw nsw i32 %and133.i, %shr.i @@ -1807,13 +1805,13 @@ if.end83: ; preds = %if.else %sub138.i = add nsw i32 %add136.i, %shl135.i %conv139.i = trunc i32 %sub138.i to i16 store i16 %conv139.i, ptr %arrayidx140.i, align 4 - %63 = load i8, ptr %arrayidx129.i, align 1 - %conv144.i = zext i8 %63 to i32 + %60 = load i8, ptr %arrayidx129.i, align 1 + %conv144.i = zext i8 %60 to i32 %shl145.i = shl nuw nsw i32 %conv144.i, 2 %arrayidx146.i = getelementptr inbounds i8, ptr %inPtr.addr.3190, i64 10 - %64 = load i8, ptr %arrayidx146.i, align 1 - %65 = lshr i8 %64, 6 - %shr148.i = zext nneg i8 %65 to i32 + %61 = load i8, ptr %arrayidx146.i, align 1 + %62 = lshr i8 %61, 6 + %shr148.i = zext nneg i8 %62 to i32 %shl145.masked.i = and i32 %shl145.i, 60 %and150.i = or disjoint i32 %shl145.masked.i, %shr148.i %shl152.i = shl nuw nsw i32 %and150.i, %shr.i @@ -1821,29 +1819,29 @@ if.end83: ; preds = %if.else %sub155.i = add nsw i32 %add153.i, %shl152.i %conv156.i = trunc i32 %sub155.i to i16 store i16 %conv156.i, ptr %arrayidx157.i, align 4 - %66 = load i8, ptr %arrayidx146.i, align 1 - %67 = and i8 %66, 63 - %and162.i = zext nneg i8 %67 to i32 + %63 = load i8, ptr %arrayidx146.i, align 1 + %64 = and i8 %63, 63 + %and162.i = zext nneg i8 %64 to i32 %shl164.i = shl nuw nsw i32 %and162.i, %shr.i %add165.i = add nsw i32 %sub109.i, %shl9.neg96.i %sub167.i = add nsw i32 %add165.i, %shl164.i %conv168.i = trunc i32 %sub167.i to i16 store i16 %conv168.i, ptr %arrayidx169.i, align 4 %arrayidx172.i = getelementptr inbounds i8, ptr %inPtr.addr.3190, i64 11 - %68 = load i8, ptr %arrayidx172.i, align 1 - %69 = lshr i8 %68, 2 - %shr174.i = zext nneg i8 %69 to i32 + %65 = load i8, ptr %arrayidx172.i, align 1 + %66 = lshr i8 %65, 2 + %shr174.i = zext nneg i8 %66 to i32 %shl176.i = shl nuw nsw i32 %shr174.i, %shr.i %add177.i = add nsw i32 %sub121.i, %shl9.neg96.i %sub179.i = add nsw i32 %add177.i, %shl176.i %conv180.i = trunc i32 %sub179.i to i16 store i16 %conv180.i, ptr %arrayidx181.i, align 2 - %conv185.i = zext i8 %68 to i32 + %conv185.i = zext i8 %65 to i32 %shl186.i = shl nuw nsw i32 %conv185.i, 4 %arrayidx187.i = getelementptr inbounds i8, ptr %inPtr.addr.3190, i64 12 - %70 = load i8, ptr %arrayidx187.i, align 1 - %71 = lshr i8 %70, 4 - %shr189.i = zext nneg i8 %71 to i32 + %67 = load i8, ptr %arrayidx187.i, align 1 + %68 = lshr i8 %67, 4 + %shr189.i = zext nneg i8 %68 to i32 %shl186.masked.i = and i32 %shl186.i, 48 %and191.i = or disjoint i32 %shl186.masked.i, %shr189.i %shl193.i = shl nuw nsw i32 %and191.i, %shr.i @@ -1851,13 +1849,13 @@ if.end83: ; preds = %if.else %sub196.i = add nsw i32 %add194.i, %shl193.i %conv197.i = trunc i32 %sub196.i to i16 store i16 %conv197.i, ptr %arrayidx198.i, align 2 - %72 = load i8, ptr %arrayidx187.i, align 1 - %conv202.i = zext i8 %72 to i32 + %69 = load i8, ptr %arrayidx187.i, align 1 + %conv202.i = zext i8 %69 to i32 %shl203.i = shl nuw nsw i32 %conv202.i, 2 %arrayidx204.i = getelementptr inbounds i8, ptr %inPtr.addr.3190, i64 13 - %73 = load i8, ptr %arrayidx204.i, align 1 - %74 = lshr i8 %73, 6 - %shr206.i = zext nneg i8 %74 to i32 + %70 = load i8, ptr %arrayidx204.i, align 1 + %71 = lshr i8 %70, 6 + %shr206.i = zext nneg i8 %71 to i32 %shl203.masked.i = and i32 %shl203.i, 60 %and208.i = or disjoint i32 %shl203.masked.i, %shr206.i %shl210.i = shl nuw nsw i32 %and208.i, %shr.i @@ -1865,9 +1863,9 @@ if.end83: ; preds = %if.else %sub213.i = add nsw i32 %add211.i, %shl210.i %conv214.i = trunc i32 %sub213.i to i16 store i16 %conv214.i, ptr %arrayidx215.i, align 2 - %75 = load i8, ptr %arrayidx204.i, align 1 - %76 = and i8 %75, 63 - %and220.i = zext nneg i8 %76 to i32 + %72 = load i8, ptr %arrayidx204.i, align 1 + %73 = and i8 %72, 63 + %and220.i = zext nneg i8 %73 to i32 %shl222.i = shl nuw nsw i32 %and220.i, %shr.i %add223.i = add nsw i32 %sub167.i, %shl9.neg96.i %sub225.i = add nsw i32 %add223.i, %shl222.i @@ -1878,11 +1876,11 @@ if.end83: ; preds = %if.else for.body.i116: ; preds = %for.body.i116, %if.end83 %indvars.iv.i117 = phi i64 [ 0, %if.end83 ], [ %indvars.iv.next.i120, %for.body.i116 ] %arrayidx228.i = getelementptr inbounds i16, ptr %s, i64 %indvars.iv.i117 - %77 = load i16, ptr %arrayidx228.i, align 2 - %not.i118 = xor i16 %77, -1 - %78 = and i16 %77, 32767 - %tobool.not94.i = icmp slt i16 %77, 0 - %storemerge.i119 = select i1 %tobool.not94.i, i16 %78, i16 %not.i118 + %74 = load i16, ptr %arrayidx228.i, align 2 + %not.i118 = xor i16 %74, -1 + %75 = and i16 %74, 32767 + %tobool.not94.i = icmp slt i16 %74, 0 + %storemerge.i119 = select i1 %tobool.not94.i, i16 %75, i16 %not.i118 store i16 %storemerge.i119, ptr %arrayidx228.i, align 2 %indvars.iv.next.i120 = add nuw nsw i64 %indvars.iv.i117, 1 %exitcond.not.i121 = icmp eq i64 %indvars.iv.next.i120, 16 @@ -1893,18 +1891,18 @@ if.end87: ; preds = %for.body.i116, %for %.sink = phi i32 [ -3, %for.body.i ], [ -14, %for.body.i116 ] %add.ptr85 = getelementptr inbounds i8, ptr %inPtr.addr.3190, i64 %.sink258 %sub86 = add nsw i32 %inSize.addr.3189, %.sink - %79 = load i8, ptr %pLinear, align 8 - %tobool = trunc i8 %79 to i1 + %76 = load i8, ptr %pLinear, align 8 + %tobool = trunc i8 %76 to i1 br i1 %tobool, label %for.body.i122, label %if.end90 for.body.i122: ; preds = %if.end87, %for.body.i122 %indvars.iv.i123 = phi i64 [ %indvars.iv.next.i124, %for.body.i122 ], [ 0, %if.end87 ] %arrayidx.i = getelementptr inbounds i16, ptr %s, i64 %indvars.iv.i123 - %80 = load i16, ptr %arrayidx.i, align 2 - %idxprom1.i = zext i16 %80 to i64 + %77 = load i16, ptr %arrayidx.i, align 2 + %idxprom1.i = zext i16 %77 to i64 %arrayidx2.i = getelementptr inbounds [65536 x i16], ptr @_ZN7Imf_3_212_GLOBAL__N_18logTableE, i64 0, i64 %idxprom1.i - %81 = load i16, ptr %arrayidx2.i, align 2 - store i16 %81, ptr %arrayidx.i, align 2 + %78 = load i16, ptr %arrayidx2.i, align 2 + store i16 %78, ptr %arrayidx.i, align 2 %indvars.iv.next.i124 = add nuw nsw i64 %indvars.iv.i123, 1 %exitcond.not.i125 = icmp eq i64 %indvars.iv.next.i124, 16 br i1 %exitcond.not.i125, label %if.end90, label %for.body.i122, !llvm.loop !28 @@ -1915,8 +1913,8 @@ if.end90: ; preds = %for.body.i122, %if. %sub95 = sub nsw i32 %32, %x67.0188 %mul97 = shl i32 %sub95, 1 %cond = select i1 %cmp93, i32 8, i32 %mul97 - %82 = load i32, ptr %ny50, align 4 - %cmp101 = icmp slt i32 %add99, %82 + %79 = load i32, ptr %ny50, align 4 + %cmp101 = icmp slt i32 %add99, %79 %conv104 = sext i32 %cond to i64 call void @llvm.memcpy.p0.p0.i64(ptr align 2 %row0.0184, ptr nonnull align 16 %s, i64 %conv104, i1 false) br i1 %cmp101, label %if.then102, label %if.else111 @@ -1928,8 +1926,8 @@ if.then102: ; preds = %if.end90 br label %if.end128 if.else111: ; preds = %if.end90 - %83 = load i32, ptr %ny50, align 4 - %cmp116 = icmp slt i32 %add114, %83 + %80 = load i32, ptr %ny50, align 4 + %cmp116 = icmp slt i32 %add114, %80 br i1 %cmp116, label %if.then117, label %if.end120 if.then117: ; preds = %if.else111 @@ -1938,8 +1936,8 @@ if.then117: ; preds = %if.else111 br label %if.end120 if.end120: ; preds = %if.then117, %if.else111 - %84 = phi i32 [ %.pre, %if.then117 ], [ %83, %if.else111 ] - %cmp123 = icmp slt i32 %add121, %84 + %81 = phi i32 [ %.pre, %if.then117 ], [ %80, %if.else111 ] + %cmp123 = icmp slt i32 %add121, %81 br i1 %cmp123, label %if.then124, label %if.end128 if.then124: ; preds = %if.end120 @@ -1952,8 +1950,8 @@ if.end128: ; preds = %if.end120, %if.then %add.ptr131 = getelementptr inbounds i8, ptr %row2.0186, i64 8 %add.ptr132 = getelementptr inbounds i8, ptr %row3.0187, i64 8 %add134 = add nuw nsw i32 %x67.0188, 4 - %85 = load i32, ptr %nx54, align 8 - %cmp70 = icmp slt i32 %add134, %85 + %82 = load i32, ptr %nx54, align 8 + %cmp70 = icmp slt i32 %add134, %82 br i1 %cmp70, label %for.body71, label %for.inc136.loopexit, !llvm.loop !29 for.inc136.loopexit: ; preds = %if.end128 @@ -1961,30 +1959,30 @@ for.inc136.loopexit: ; preds = %if.end128 br label %for.inc136 for.inc136: ; preds = %for.inc136.loopexit, %for.body52 - %86 = phi i32 [ %29, %for.body52 ], [ %.pre247, %for.inc136.loopexit ] - %87 = phi i32 [ %30, %for.body52 ], [ %85, %for.inc136.loopexit ] + %83 = phi i32 [ %29, %for.body52 ], [ %.pre247, %for.inc136.loopexit ] + %84 = phi i32 [ %30, %for.body52 ], [ %82, %for.inc136.loopexit ] %inSize.addr.3.lcssa = phi i32 [ %inSize.addr.2194, %for.body52 ], [ %sub86, %for.inc136.loopexit ] %inPtr.addr.3.lcssa = phi ptr [ %inPtr.addr.2195, %for.body52 ], [ %add.ptr85, %for.inc136.loopexit ] %add137 = add nuw nsw i32 %y48.0193, 4 - %cmp51 = icmp slt i32 %add137, %86 + %cmp51 = icmp slt i32 %add137, %83 br i1 %cmp51, label %for.body52, label %for.inc139, !llvm.loop !30 for.inc139: ; preds = %for.inc136, %for.body52.lr.ph, %for.cond49.preheader, %if.end42 %inSize.addr.1 = phi i32 [ %sub, %if.end42 ], [ %inSize.addr.0201, %for.cond49.preheader ], [ %inSize.addr.0201, %for.body52.lr.ph ], [ %inSize.addr.3.lcssa, %for.inc136 ] %inPtr.addr.1 = phi ptr [ %add.ptr46, %if.end42 ], [ %inPtr.addr.0202, %for.cond49.preheader ], [ %inPtr.addr.0202, %for.body52.lr.ph ], [ %inPtr.addr.3.lcssa, %for.inc136 ] %indvars.iv.next235 = add nuw nsw i64 %indvars.iv234, 1 - %88 = load i32, ptr %_numChans, align 8 - %89 = sext i32 %88 to i64 - %cmp25 = icmp slt i64 %indvars.iv.next235, %89 + %85 = load i32, ptr %_numChans, align 8 + %86 = sext i32 %85 to i64 + %cmp25 = icmp slt i64 %indvars.iv.next235, %86 br i1 %cmp25, label %for.body26, label %for.end141, !llvm.loop !31 for.end141: ; preds = %for.inc139, %for.cond24.preheader - %90 = phi i32 [ %12, %for.cond24.preheader ], [ %88, %for.inc139 ] + %87 = phi i32 [ %12, %for.cond24.preheader ], [ %85, %for.inc139 ] %inSize.addr.0.lcssa = phi i32 [ %inSize, %for.cond24.preheader ], [ %inSize.addr.1, %for.inc139 ] - %91 = load ptr, ptr %_outBuffer, align 8 + %88 = load ptr, ptr %_outBuffer, align 8 %_format = getelementptr inbounds i8, ptr %this, i64 20 - %92 = load i32, ptr %_format, align 4 - %cmp143 = icmp eq i32 %92, 1 + %89 = load i32, ptr %_format, align 4 + %cmp143 = icmp eq i32 %89, 1 %cmp147.not223 = icmp sgt i32 %5, %8 br i1 %cmp143, label %for.cond146.preheader, label %for.cond197.preheader @@ -1993,8 +1991,8 @@ for.cond197.preheader: ; preds = %for.end141 for.cond201.preheader.lr.ph: ; preds = %for.cond197.preheader %_channelData206 = getelementptr inbounds i8, ptr %this, i64 64 - %93 = icmp sgt i32 %90, 0 - br i1 %93, label %for.cond201.preheader, label %if.end233 + %90 = icmp sgt i32 %87, 0 + br i1 %90, label %for.cond201.preheader, label %if.end233 for.cond146.preheader: ; preds = %for.end141 br i1 %cmp147.not223, label %if.end233, label %for.cond150.preheader.lr.ph @@ -2002,40 +2000,40 @@ for.cond146.preheader: ; preds = %for.end141 for.cond150.preheader.lr.ph: ; preds = %for.cond146.preheader %_channelData155 = getelementptr inbounds i8, ptr %this, i64 64 %arrayidx3.i = getelementptr inbounds i8, ptr %b.i, i64 1 - %94 = icmp sgt i32 %90, 0 - br i1 %94, label %for.cond150.preheader, label %if.end233 + %91 = icmp sgt i32 %87, 0 + br i1 %91, label %for.cond150.preheader, label %if.end233 for.cond150.preheader: ; preds = %for.cond150.preheader.lr.ph, %for.inc192 - %95 = phi i32 [ %111, %for.inc192 ], [ %90, %for.cond150.preheader.lr.ph ] + %92 = phi i32 [ %108, %for.inc192 ], [ %87, %for.cond150.preheader.lr.ph ] %y145.0225 = phi i32 [ %inc193, %for.inc192 ], [ %5, %for.cond150.preheader.lr.ph ] - %outEnd.0224 = phi ptr [ %outEnd.1.lcssa, %for.inc192 ], [ %91, %for.cond150.preheader.lr.ph ] - %cmp152219 = icmp sgt i32 %95, 0 + %outEnd.0224 = phi ptr [ %outEnd.1.lcssa, %for.inc192 ], [ %88, %for.cond150.preheader.lr.ph ] + %cmp152219 = icmp sgt i32 %92, 0 br i1 %cmp152219, label %for.body153.lr.ph, label %for.inc192 for.body153.lr.ph: ; preds = %for.cond150.preheader %cmp.i.i = icmp sgt i32 %y145.0225, -1 - %96 = xor i32 %y145.0225, -1 + %93 = xor i32 %y145.0225, -1 br label %for.body153 for.body153: ; preds = %for.body153.lr.ph, %for.inc189 %indvars.iv243 = phi i64 [ 0, %for.body153.lr.ph ], [ %indvars.iv.next244, %for.inc189 ] %outEnd.1220 = phi ptr [ %outEnd.0224, %for.body153.lr.ph ], [ %outEnd.2, %for.inc189 ] - %97 = load ptr, ptr %_channelData155, align 8 - %arrayidx157 = getelementptr inbounds %"struct.Imf_3_2::B44Compressor::ChannelData", ptr %97, i64 %indvars.iv243 + %94 = load ptr, ptr %_channelData155, align 8 + %arrayidx157 = getelementptr inbounds %"struct.Imf_3_2::B44Compressor::ChannelData", ptr %94, i64 %indvars.iv243 %ys = getelementptr inbounds i8, ptr %arrayidx157, i64 24 - %98 = load i32, ptr %ys, align 8 - %cmp1.i.i = icmp sgt i32 %98, -1 + %95 = load i32, ptr %ys, align 8 + %cmp1.i.i = icmp sgt i32 %95, -1 br i1 %cmp.i.i, label %cond.true.i.i, label %cond.false5.i.i cond.true.i.i: ; preds = %for.body153 br i1 %cmp1.i.i, label %cond.true2.i.i, label %cond.false.i.i cond.true2.i.i: ; preds = %cond.true.i.i - %div.i.i = udiv i32 %y145.0225, %98 + %div.i.i = udiv i32 %y145.0225, %95 br label %_ZN9Imath_3_24modpEii.exit cond.false.i.i: ; preds = %cond.true.i.i - %sub.i.i = sub nsw i32 0, %98 + %sub.i.i = sub nsw i32 0, %95 %div3.i.i = udiv i32 %y145.0225, %sub.i.i %sub4.i.i = sub nsw i32 0, %div3.i.i br label %_ZN9Imath_3_24modpEii.exit @@ -2044,34 +2042,34 @@ cond.false5.i.i: ; preds = %for.body153 br i1 %cmp1.i.i, label %cond.true7.i.i, label %cond.false12.i.i cond.true7.i.i: ; preds = %cond.false5.i.i - %sub9.i.i = add nuw i32 %98, %96 - %div10.i.i = udiv i32 %sub9.i.i, %98 + %sub9.i.i = add nuw i32 %95, %93 + %div10.i.i = udiv i32 %sub9.i.i, %95 %sub11.i.i = sub nsw i32 0, %div10.i.i br label %_ZN9Imath_3_24modpEii.exit cond.false12.i.i: ; preds = %cond.false5.i.i - %sub13.i.i = sub nsw i32 0, %98 - %sub14.i.i = xor i32 %98, -1 + %sub13.i.i = sub nsw i32 0, %95 + %sub14.i.i = xor i32 %95, -1 %sub15.i.i = sub nsw i32 %sub14.i.i, %y145.0225 %div17.i.i = udiv i32 %sub15.i.i, %sub13.i.i br label %_ZN9Imath_3_24modpEii.exit _ZN9Imath_3_24modpEii.exit: ; preds = %cond.true2.i.i, %cond.false.i.i, %cond.true7.i.i, %cond.false12.i.i %cond21.i.i = phi i32 [ %div.i.i, %cond.true2.i.i ], [ %sub4.i.i, %cond.false.i.i ], [ %sub11.i.i, %cond.true7.i.i ], [ %div17.i.i, %cond.false12.i.i ] - %mul.i = mul nsw i32 %cond21.i.i, %98 + %mul.i = mul nsw i32 %cond21.i.i, %95 %cmp159.not = icmp eq i32 %y145.0225, %mul.i br i1 %cmp159.not, label %if.end161, label %for.inc189 if.end161: ; preds = %_ZN9Imath_3_24modpEii.exit %type162 = getelementptr inbounds i8, ptr %arrayidx157, i64 28 - %99 = load i32, ptr %type162, align 4 - %cmp163 = icmp eq i32 %99, 1 + %96 = load i32, ptr %type162, align 4 + %cmp163 = icmp eq i32 %96, 1 %nx166 = getelementptr inbounds i8, ptr %arrayidx157, i64 16 - %100 = load i32, ptr %nx166, align 8 + %97 = load i32, ptr %nx166, align 8 br i1 %cmp163, label %if.then164, label %if.else174 if.then164: ; preds = %if.end161 - %cmp168215 = icmp sgt i32 %100, 0 + %cmp168215 = icmp sgt i32 %97, 0 br i1 %cmp168215, label %for.body169.lr.ph, label %for.inc189 for.body169.lr.ph: ; preds = %if.then164 @@ -2080,15 +2078,15 @@ for.body169.lr.ph: ; preds = %if.then164 br label %for.body169 for.body169: ; preds = %for.body169.lr.ph, %_ZN7Imf_3_23Xdr5writeINS_9CharPtrIOEPcEEvRT0_t.exit - %101 = phi ptr [ %.pre250, %for.body169.lr.ph ], [ %incdec.ptr, %_ZN7Imf_3_23Xdr5writeINS_9CharPtrIOEPcEEvRT0_t.exit ] - %x165.0217 = phi i32 [ %100, %for.body169.lr.ph ], [ %dec, %_ZN7Imf_3_23Xdr5writeINS_9CharPtrIOEPcEEvRT0_t.exit ] + %98 = phi ptr [ %.pre250, %for.body169.lr.ph ], [ %incdec.ptr, %_ZN7Imf_3_23Xdr5writeINS_9CharPtrIOEPcEEvRT0_t.exit ] + %x165.0217 = phi i32 [ %97, %for.body169.lr.ph ], [ %dec, %_ZN7Imf_3_23Xdr5writeINS_9CharPtrIOEPcEEvRT0_t.exit ] %outEnd.3216 = phi ptr [ %outEnd.1220, %for.body169.lr.ph ], [ %incdec.ptr1.i.i.i, %_ZN7Imf_3_23Xdr5writeINS_9CharPtrIOEPcEEvRT0_t.exit ] - %102 = load i16, ptr %101, align 2 + %99 = load i16, ptr %98, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %b.i) - %conv.i127 = trunc i16 %102 to i8 + %conv.i127 = trunc i16 %99 to i8 store i8 %conv.i127, ptr %b.i, align 1 - %103 = lshr i16 %102, 8 - %conv2.i128 = trunc nuw i16 %103 to i8 + %100 = lshr i16 %99, 8 + %conv2.i128 = trunc nuw i16 %100 to i8 store i8 %conv2.i128, ptr %arrayidx3.i, align 1 br label %while.body.i.i.i @@ -2098,16 +2096,16 @@ while.body.i.i.i: ; preds = %while.body.i.i.i, % %c.addr.02.i.i.i = phi ptr [ %b.i, %for.body169 ], [ %incdec.ptr.i.i.i, %while.body.i.i.i ] %dec.i.i.i = add nsw i32 %n.addr.03.i.i.i, -1 %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %c.addr.02.i.i.i, i64 1 - %104 = load i8, ptr %c.addr.02.i.i.i, align 1 + %101 = load i8, ptr %c.addr.02.i.i.i, align 1 %incdec.ptr1.i.i.i = getelementptr inbounds i8, ptr %outEnd.8, i64 1 - store i8 %104, ptr %outEnd.8, align 1 + store i8 %101, ptr %outEnd.8, align 1 %tobool.not.i.i.i = icmp eq i32 %dec.i.i.i, 0 br i1 %tobool.not.i.i.i, label %_ZN7Imf_3_23Xdr5writeINS_9CharPtrIOEPcEEvRT0_t.exit, label %while.body.i.i.i, !llvm.loop !32 _ZN7Imf_3_23Xdr5writeINS_9CharPtrIOEPcEEvRT0_t.exit: ; preds = %while.body.i.i.i call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %b.i) - %105 = load ptr, ptr %end170, align 8 - %incdec.ptr = getelementptr inbounds i8, ptr %105, i64 2 + %102 = load ptr, ptr %end170, align 8 + %incdec.ptr = getelementptr inbounds i8, ptr %102, i64 2 store ptr %incdec.ptr, ptr %end170, align 8 %dec = add nsw i32 %x165.0217, -1 %cmp168 = icmp sgt i32 %x165.0217, 1 @@ -2115,170 +2113,170 @@ _ZN7Imf_3_23Xdr5writeINS_9CharPtrIOEPcEEvRT0_t.exit: ; preds = %while.body.i.i.i if.else174: ; preds = %if.end161 %size177 = getelementptr inbounds i8, ptr %arrayidx157, i64 36 - %106 = load i32, ptr %size177, align 4 - %mul178 = mul nsw i32 %106, %100 + %103 = load i32, ptr %size177, align 4 + %mul178 = mul nsw i32 %103, %97 %end179 = getelementptr inbounds i8, ptr %arrayidx157, i64 8 - %107 = load ptr, ptr %end179, align 8 + %104 = load ptr, ptr %end179, align 8 %conv180 = sext i32 %mul178 to i64 %mul181 = shl nsw i64 %conv180, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %outEnd.1220, ptr align 2 %107, i64 %mul181, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %outEnd.1220, ptr align 2 %104, i64 %mul181, i1 false) %add.ptr184 = getelementptr inbounds i8, ptr %outEnd.1220, i64 %mul181 - %108 = load ptr, ptr %end179, align 8 - %add.ptr187 = getelementptr inbounds i16, ptr %108, i64 %conv180 + %105 = load ptr, ptr %end179, align 8 + %add.ptr187 = getelementptr inbounds i16, ptr %105, i64 %conv180 store ptr %add.ptr187, ptr %end179, align 8 br label %for.inc189 for.inc189: ; preds = %_ZN7Imf_3_23Xdr5writeINS_9CharPtrIOEPcEEvRT0_t.exit, %if.then164, %if.else174, %_ZN9Imath_3_24modpEii.exit %outEnd.2 = phi ptr [ %add.ptr184, %if.else174 ], [ %outEnd.1220, %_ZN9Imath_3_24modpEii.exit ], [ %outEnd.1220, %if.then164 ], [ %incdec.ptr1.i.i.i, %_ZN7Imf_3_23Xdr5writeINS_9CharPtrIOEPcEEvRT0_t.exit ] %indvars.iv.next244 = add nuw nsw i64 %indvars.iv243, 1 - %109 = load i32, ptr %_numChans, align 8 - %110 = sext i32 %109 to i64 - %cmp152 = icmp slt i64 %indvars.iv.next244, %110 + %106 = load i32, ptr %_numChans, align 8 + %107 = sext i32 %106 to i64 + %cmp152 = icmp slt i64 %indvars.iv.next244, %107 br i1 %cmp152, label %for.body153, label %for.inc192, !llvm.loop !34 for.inc192: ; preds = %for.inc189, %for.cond150.preheader - %111 = phi i32 [ %95, %for.cond150.preheader ], [ %109, %for.inc189 ] + %108 = phi i32 [ %92, %for.cond150.preheader ], [ %106, %for.inc189 ] %outEnd.1.lcssa = phi ptr [ %outEnd.0224, %for.cond150.preheader ], [ %outEnd.2, %for.inc189 ] %inc193 = add i32 %y145.0225, 1 %exitcond246.not = icmp eq i32 %y145.0225, %8 br i1 %exitcond246.not, label %if.end233, label %for.cond150.preheader, !llvm.loop !35 for.cond201.preheader: ; preds = %for.cond201.preheader.lr.ph, %for.inc230 - %112 = phi i32 [ %136, %for.inc230 ], [ %90, %for.cond201.preheader.lr.ph ] - %113 = phi i32 [ %137, %for.inc230 ], [ %90, %for.cond201.preheader.lr.ph ] - %114 = phi i32 [ %138, %for.inc230 ], [ %90, %for.cond201.preheader.lr.ph ] + %109 = phi i32 [ %133, %for.inc230 ], [ %87, %for.cond201.preheader.lr.ph ] + %110 = phi i32 [ %134, %for.inc230 ], [ %87, %for.cond201.preheader.lr.ph ] + %111 = phi i32 [ %135, %for.inc230 ], [ %87, %for.cond201.preheader.lr.ph ] %y196.0211 = phi i32 [ %inc231, %for.inc230 ], [ %5, %for.cond201.preheader.lr.ph ] - %outEnd.5210 = phi ptr [ %outEnd.6.lcssa, %for.inc230 ], [ %91, %for.cond201.preheader.lr.ph ] - %cmp203204 = icmp sgt i32 %114, 0 + %outEnd.5210 = phi ptr [ %outEnd.6.lcssa, %for.inc230 ], [ %88, %for.cond201.preheader.lr.ph ] + %cmp203204 = icmp sgt i32 %111, 0 br i1 %cmp203204, label %for.body204.lr.ph, label %for.inc230 for.body204.lr.ph: ; preds = %for.cond201.preheader %cmp.i.i129 = icmp sgt i32 %y196.0211, -1 - %115 = xor i32 %y196.0211, -1 + %112 = xor i32 %y196.0211, -1 br i1 %cmp.i.i129, label %for.body204.us, label %for.body204 for.body204.us: ; preds = %for.body204.lr.ph, %for.inc227.us - %116 = phi i32 [ %123, %for.inc227.us ], [ %112, %for.body204.lr.ph ] + %113 = phi i32 [ %120, %for.inc227.us ], [ %109, %for.body204.lr.ph ] %indvars.iv240 = phi i64 [ %indvars.iv.next241, %for.inc227.us ], [ 0, %for.body204.lr.ph ] %outEnd.6205.us = phi ptr [ %outEnd.7.us, %for.inc227.us ], [ %outEnd.5210, %for.body204.lr.ph ] - %117 = load ptr, ptr %_channelData206, align 8 - %arrayidx208.us = getelementptr inbounds %"struct.Imf_3_2::B44Compressor::ChannelData", ptr %117, i64 %indvars.iv240 + %114 = load ptr, ptr %_channelData206, align 8 + %arrayidx208.us = getelementptr inbounds %"struct.Imf_3_2::B44Compressor::ChannelData", ptr %114, i64 %indvars.iv240 %ys209.us = getelementptr inbounds i8, ptr %arrayidx208.us, i64 24 - %118 = load i32, ptr %ys209.us, align 8 - %cmp1.i.i130.us = icmp sgt i32 %118, -1 + %115 = load i32, ptr %ys209.us, align 8 + %cmp1.i.i130.us = icmp sgt i32 %115, -1 br i1 %cmp1.i.i130.us, label %cond.true2.i.i149.us, label %cond.false.i.i145.us cond.false.i.i145.us: ; preds = %for.body204.us - %sub.i.i146.us = sub nsw i32 0, %118 + %sub.i.i146.us = sub nsw i32 0, %115 %div3.i.i147.us = udiv i32 %y196.0211, %sub.i.i146.us %sub4.i.i148.us = sub nsw i32 0, %div3.i.i147.us br label %_ZN9Imath_3_24modpEii.exit151.us cond.true2.i.i149.us: ; preds = %for.body204.us - %div.i.i150.us = udiv i32 %y196.0211, %118 + %div.i.i150.us = udiv i32 %y196.0211, %115 br label %_ZN9Imath_3_24modpEii.exit151.us _ZN9Imath_3_24modpEii.exit151.us: ; preds = %cond.true2.i.i149.us, %cond.false.i.i145.us %cond21.i.i137.us = phi i32 [ %div.i.i150.us, %cond.true2.i.i149.us ], [ %sub4.i.i148.us, %cond.false.i.i145.us ] - %mul.i138.us = mul nsw i32 %cond21.i.i137.us, %118 + %mul.i138.us = mul nsw i32 %cond21.i.i137.us, %115 %cmp211.not.us = icmp eq i32 %y196.0211, %mul.i138.us br i1 %cmp211.not.us, label %if.end213.us, label %for.inc227.us if.end213.us: ; preds = %_ZN9Imath_3_24modpEii.exit151.us %nx215.us = getelementptr inbounds i8, ptr %arrayidx208.us, i64 16 - %119 = load i32, ptr %nx215.us, align 8 + %116 = load i32, ptr %nx215.us, align 8 %size216.us = getelementptr inbounds i8, ptr %arrayidx208.us, i64 36 - %120 = load i32, ptr %size216.us, align 4 - %mul217.us = mul nsw i32 %120, %119 + %117 = load i32, ptr %size216.us, align 4 + %mul217.us = mul nsw i32 %117, %116 %end218.us = getelementptr inbounds i8, ptr %arrayidx208.us, i64 8 - %121 = load ptr, ptr %end218.us, align 8 + %118 = load ptr, ptr %end218.us, align 8 %conv219.us = sext i32 %mul217.us to i64 %mul220.us = shl nsw i64 %conv219.us, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %outEnd.6205.us, ptr align 2 %121, i64 %mul220.us, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %outEnd.6205.us, ptr align 2 %118, i64 %mul220.us, i1 false) %add.ptr223.us = getelementptr inbounds i8, ptr %outEnd.6205.us, i64 %mul220.us - %122 = load ptr, ptr %end218.us, align 8 - %add.ptr226.us = getelementptr inbounds i16, ptr %122, i64 %conv219.us + %119 = load ptr, ptr %end218.us, align 8 + %add.ptr226.us = getelementptr inbounds i16, ptr %119, i64 %conv219.us store ptr %add.ptr226.us, ptr %end218.us, align 8 %.pre249 = load i32, ptr %_numChans, align 8 br label %for.inc227.us for.inc227.us: ; preds = %if.end213.us, %_ZN9Imath_3_24modpEii.exit151.us - %123 = phi i32 [ %.pre249, %if.end213.us ], [ %116, %_ZN9Imath_3_24modpEii.exit151.us ] + %120 = phi i32 [ %.pre249, %if.end213.us ], [ %113, %_ZN9Imath_3_24modpEii.exit151.us ] %outEnd.7.us = phi ptr [ %add.ptr223.us, %if.end213.us ], [ %outEnd.6205.us, %_ZN9Imath_3_24modpEii.exit151.us ] %indvars.iv.next241 = add nuw nsw i64 %indvars.iv240, 1 - %124 = sext i32 %123 to i64 - %cmp203.us = icmp slt i64 %indvars.iv.next241, %124 + %121 = sext i32 %120 to i64 + %cmp203.us = icmp slt i64 %indvars.iv.next241, %121 br i1 %cmp203.us, label %for.body204.us, label %for.inc230, !llvm.loop !36 for.body204: ; preds = %for.body204.lr.ph, %for.inc227 - %125 = phi i32 [ %133, %for.inc227 ], [ %112, %for.body204.lr.ph ] - %126 = phi i32 [ %134, %for.inc227 ], [ %113, %for.body204.lr.ph ] + %122 = phi i32 [ %130, %for.inc227 ], [ %109, %for.body204.lr.ph ] + %123 = phi i32 [ %131, %for.inc227 ], [ %110, %for.body204.lr.ph ] %indvars.iv237 = phi i64 [ %indvars.iv.next238, %for.inc227 ], [ 0, %for.body204.lr.ph ] %outEnd.6205 = phi ptr [ %outEnd.7, %for.inc227 ], [ %outEnd.5210, %for.body204.lr.ph ] - %127 = load ptr, ptr %_channelData206, align 8 - %arrayidx208 = getelementptr inbounds %"struct.Imf_3_2::B44Compressor::ChannelData", ptr %127, i64 %indvars.iv237 + %124 = load ptr, ptr %_channelData206, align 8 + %arrayidx208 = getelementptr inbounds %"struct.Imf_3_2::B44Compressor::ChannelData", ptr %124, i64 %indvars.iv237 %ys209 = getelementptr inbounds i8, ptr %arrayidx208, i64 24 - %128 = load i32, ptr %ys209, align 8 - %cmp1.i.i130 = icmp sgt i32 %128, -1 + %125 = load i32, ptr %ys209, align 8 + %cmp1.i.i130 = icmp sgt i32 %125, -1 br i1 %cmp1.i.i130, label %cond.true7.i.i140, label %cond.false12.i.i132 cond.true7.i.i140: ; preds = %for.body204 - %sub9.i.i141 = add nuw i32 %128, %115 - %div10.i.i142 = udiv i32 %sub9.i.i141, %128 + %sub9.i.i141 = add nuw i32 %125, %112 + %div10.i.i142 = udiv i32 %sub9.i.i141, %125 %sub11.i.i143 = sub nsw i32 0, %div10.i.i142 br label %_ZN9Imath_3_24modpEii.exit151 cond.false12.i.i132: ; preds = %for.body204 - %sub13.i.i133 = sub nsw i32 0, %128 - %sub14.i.i134 = xor i32 %128, -1 + %sub13.i.i133 = sub nsw i32 0, %125 + %sub14.i.i134 = xor i32 %125, -1 %sub15.i.i135 = sub nsw i32 %sub14.i.i134, %y196.0211 %div17.i.i136 = udiv i32 %sub15.i.i135, %sub13.i.i133 br label %_ZN9Imath_3_24modpEii.exit151 _ZN9Imath_3_24modpEii.exit151: ; preds = %cond.true7.i.i140, %cond.false12.i.i132 %cond21.i.i137 = phi i32 [ %sub11.i.i143, %cond.true7.i.i140 ], [ %div17.i.i136, %cond.false12.i.i132 ] - %mul.i138 = mul nsw i32 %cond21.i.i137, %128 + %mul.i138 = mul nsw i32 %cond21.i.i137, %125 %cmp211.not = icmp eq i32 %y196.0211, %mul.i138 br i1 %cmp211.not, label %if.end213, label %for.inc227 if.end213: ; preds = %_ZN9Imath_3_24modpEii.exit151 %nx215 = getelementptr inbounds i8, ptr %arrayidx208, i64 16 - %129 = load i32, ptr %nx215, align 8 + %126 = load i32, ptr %nx215, align 8 %size216 = getelementptr inbounds i8, ptr %arrayidx208, i64 36 - %130 = load i32, ptr %size216, align 4 - %mul217 = mul nsw i32 %130, %129 + %127 = load i32, ptr %size216, align 4 + %mul217 = mul nsw i32 %127, %126 %end218 = getelementptr inbounds i8, ptr %arrayidx208, i64 8 - %131 = load ptr, ptr %end218, align 8 + %128 = load ptr, ptr %end218, align 8 %conv219 = sext i32 %mul217 to i64 %mul220 = shl nsw i64 %conv219, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %outEnd.6205, ptr align 2 %131, i64 %mul220, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %outEnd.6205, ptr align 2 %128, i64 %mul220, i1 false) %add.ptr223 = getelementptr inbounds i8, ptr %outEnd.6205, i64 %mul220 - %132 = load ptr, ptr %end218, align 8 - %add.ptr226 = getelementptr inbounds i16, ptr %132, i64 %conv219 + %129 = load ptr, ptr %end218, align 8 + %add.ptr226 = getelementptr inbounds i16, ptr %129, i64 %conv219 store ptr %add.ptr226, ptr %end218, align 8 %.pre248 = load i32, ptr %_numChans, align 8 br label %for.inc227 for.inc227: ; preds = %_ZN9Imath_3_24modpEii.exit151, %if.end213 - %133 = phi i32 [ %.pre248, %if.end213 ], [ %125, %_ZN9Imath_3_24modpEii.exit151 ] - %134 = phi i32 [ %.pre248, %if.end213 ], [ %126, %_ZN9Imath_3_24modpEii.exit151 ] + %130 = phi i32 [ %.pre248, %if.end213 ], [ %122, %_ZN9Imath_3_24modpEii.exit151 ] + %131 = phi i32 [ %.pre248, %if.end213 ], [ %123, %_ZN9Imath_3_24modpEii.exit151 ] %outEnd.7 = phi ptr [ %add.ptr223, %if.end213 ], [ %outEnd.6205, %_ZN9Imath_3_24modpEii.exit151 ] %indvars.iv.next238 = add nuw nsw i64 %indvars.iv237, 1 - %135 = sext i32 %134 to i64 - %cmp203 = icmp slt i64 %indvars.iv.next238, %135 + %132 = sext i32 %131 to i64 + %cmp203 = icmp slt i64 %indvars.iv.next238, %132 br i1 %cmp203, label %for.body204, label %for.inc230, !llvm.loop !36 for.inc230: ; preds = %for.inc227, %for.inc227.us, %for.cond201.preheader - %136 = phi i32 [ %112, %for.cond201.preheader ], [ %123, %for.inc227.us ], [ %133, %for.inc227 ] - %137 = phi i32 [ %113, %for.cond201.preheader ], [ %123, %for.inc227.us ], [ %134, %for.inc227 ] - %138 = phi i32 [ %114, %for.cond201.preheader ], [ %123, %for.inc227.us ], [ %134, %for.inc227 ] + %133 = phi i32 [ %109, %for.cond201.preheader ], [ %120, %for.inc227.us ], [ %130, %for.inc227 ] + %134 = phi i32 [ %110, %for.cond201.preheader ], [ %120, %for.inc227.us ], [ %131, %for.inc227 ] + %135 = phi i32 [ %111, %for.cond201.preheader ], [ %120, %for.inc227.us ], [ %131, %for.inc227 ] %outEnd.6.lcssa = phi ptr [ %outEnd.5210, %for.cond201.preheader ], [ %outEnd.7.us, %for.inc227.us ], [ %outEnd.7, %for.inc227 ] %inc231 = add i32 %y196.0211, 1 %exitcond.not = icmp eq i32 %y196.0211, %8 br i1 %exitcond.not, label %if.end233, label %for.cond201.preheader, !llvm.loop !37 if.end233: ; preds = %for.inc230, %for.inc192, %for.cond150.preheader.lr.ph, %for.cond201.preheader.lr.ph, %for.cond197.preheader, %for.cond146.preheader - %outEnd.4 = phi ptr [ %91, %for.cond146.preheader ], [ %91, %for.cond197.preheader ], [ %91, %for.cond201.preheader.lr.ph ], [ %91, %for.cond150.preheader.lr.ph ], [ %outEnd.1.lcssa, %for.inc192 ], [ %outEnd.6.lcssa, %for.inc230 ] + %outEnd.4 = phi ptr [ %88, %for.cond146.preheader ], [ %88, %for.cond197.preheader ], [ %88, %for.cond201.preheader.lr.ph ], [ %88, %for.cond150.preheader.lr.ph ], [ %outEnd.1.lcssa, %for.inc192 ], [ %outEnd.6.lcssa, %for.inc230 ] %cmp234 = icmp sgt i32 %inSize.addr.0.lcssa, 0 br i1 %cmp234, label %if.then235, label %if.end236 @@ -2292,15 +2290,15 @@ invoke.cont.i154: ; preds = %if.then235 unreachable lpad.i153: ; preds = %if.then235 - %139 = landingpad { ptr, i32 } + %136 = landingpad { ptr, i32 } cleanup br label %common.resume if.end236: ; preds = %if.end233 - %140 = load ptr, ptr %_outBuffer, align 8 - store ptr %140, ptr %outPtr, align 8 + %137 = load ptr, ptr %_outBuffer, align 8 + store ptr %137, ptr %outPtr, align 8 %sub.ptr.lhs.cast = ptrtoint ptr %outEnd.4 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %140 to i64 + %sub.ptr.rhs.cast = ptrtoint ptr %137 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %conv239 = trunc i64 %sub.ptr.sub to i32 br label %return diff --git a/bench/openexr/optimized/internal_b44.c.ll b/bench/openexr/optimized/internal_b44.c.ll index d0bb2171fb1..4d62883a9c6 100644 --- a/bench/openexr/optimized/internal_b44.c.ll +++ b/bench/openexr/optimized/internal_b44.c.ll @@ -747,7 +747,7 @@ for.body.lr.ph: ; preds = %entry br label %for.body for.cond101.preheader: ; preds = %for.inc98, %entry - %2 = phi i16 [ %0, %entry ], [ %65, %for.inc98 ] + %2 = phi i16 [ %0, %entry ], [ %62, %for.inc98 ] %height102 = getelementptr inbounds i8, ptr %decode, i64 36 %3 = load i32, ptr %height102, align 4 %cmp103160 = icmp sgt i32 %3, 0 @@ -879,69 +879,67 @@ if.end52.us: ; preds = %if.else.us %22 = load i8, ptr %arrayidx33.i.us, align 1 %23 = and i8 %22, 63 %and49.i.us = zext nneg i8 %23 to i32 - %24 = add nsw i32 %and49.i.us, -32 - %25 = add nsw i32 %and37.i.us, %24 - %26 = shl nsw i32 %25, %shr.i.us - %sub54.i.us = add nsw i32 %26, %add40.i.us + %shl51.i.us = shl nuw nsw i32 %and49.i.us, %shr.i.us + %add52.i.us = add nsw i32 %sub42.i.us, %shl12.neg96.i.us + %sub54.i.us = add nsw i32 %add52.i.us, %shl51.i.us %conv55.i.us = trunc i32 %sub54.i.us to i16 store i16 %conv55.i.us, ptr %arrayidx56.i, align 8 %arrayidx59.i.us = getelementptr inbounds i8, ptr %in.3137.us, i64 5 - %27 = load i8, ptr %arrayidx59.i.us, align 1 - %28 = lshr i8 %27, 2 - %shr61.i.us = zext nneg i8 %28 to i32 + %24 = load i8, ptr %arrayidx59.i.us, align 1 + %25 = lshr i8 %24, 2 + %shr61.i.us = zext nneg i8 %25 to i32 %shl63.i.us = shl nuw nsw i32 %shr61.i.us, %shr.i.us %sub66.i.us = add nsw i32 %shl63.i.us, %add.i.us %conv67.i.us = trunc i32 %sub66.i.us to i16 store i16 %conv67.i.us, ptr %arrayidx68.i, align 2 - %conv72.i.us = zext i8 %27 to i32 + %conv72.i.us = zext i8 %24 to i32 %shl73.i.us = shl nuw nsw i32 %conv72.i.us, 4 %arrayidx74.i.us = getelementptr inbounds i8, ptr %in.3137.us, i64 6 - %29 = load i8, ptr %arrayidx74.i.us, align 1 - %30 = lshr i8 %29, 4 - %shr76.i.us = zext nneg i8 %30 to i32 + %26 = load i8, ptr %arrayidx74.i.us, align 1 + %27 = lshr i8 %26, 4 + %shr76.i.us = zext nneg i8 %27 to i32 %shl73.masked.i.us = and i32 %shl73.i.us, 48 %and78.i.us = or disjoint i32 %shl73.masked.i.us, %shr76.i.us %shl80.i.us = shl nuw nsw i32 %and78.i.us, %shr.i.us %sub83.i.us = add nsw i32 %shl80.i.us, %add40.i.us %conv84.i.us = trunc i32 %sub83.i.us to i16 store i16 %conv84.i.us, ptr %arrayidx85.i, align 2 - %31 = load i8, ptr %arrayidx74.i.us, align 1 - %conv89.i.us = zext i8 %31 to i32 + %28 = load i8, ptr %arrayidx74.i.us, align 1 + %conv89.i.us = zext i8 %28 to i32 %shl90.i.us = shl nuw nsw i32 %conv89.i.us, 2 %arrayidx91.i.us = getelementptr inbounds i8, ptr %in.3137.us, i64 7 - %32 = load i8, ptr %arrayidx91.i.us, align 1 - %33 = lshr i8 %32, 6 - %shr93.i.us = zext nneg i8 %33 to i32 + %29 = load i8, ptr %arrayidx91.i.us, align 1 + %30 = lshr i8 %29, 6 + %shr93.i.us = zext nneg i8 %30 to i32 %shl90.masked.i.us = and i32 %shl90.i.us, 60 %and95.i.us = or disjoint i32 %shl90.masked.i.us, %shr93.i.us %shl97.i.us = shl nuw nsw i32 %and95.i.us, %shr.i.us - %add98.i.us = add nsw i32 %sub42.i.us, %shl12.neg96.i.us - %sub100.i.us = add nsw i32 %add98.i.us, %shl97.i.us + %sub100.i.us = add nsw i32 %add52.i.us, %shl97.i.us %conv101.i.us = trunc i32 %sub100.i.us to i16 store i16 %conv101.i.us, ptr %arrayidx102.i, align 2 - %34 = load i8, ptr %arrayidx91.i.us, align 1 - %35 = and i8 %34, 63 - %and107.i.us = zext nneg i8 %35 to i32 + %31 = load i8, ptr %arrayidx91.i.us, align 1 + %32 = and i8 %31, 63 + %and107.i.us = zext nneg i8 %32 to i32 %shl109.i.us = shl nuw nsw i32 %and107.i.us, %shr.i.us %add110.i.us = add nsw i32 %sub54.i.us, %shl12.neg96.i.us %sub112.i.us = add nsw i32 %add110.i.us, %shl109.i.us %conv113.i.us = trunc i32 %sub112.i.us to i16 store i16 %conv113.i.us, ptr %arrayidx114.i, align 2 %arrayidx117.i.us = getelementptr inbounds i8, ptr %in.3137.us, i64 8 - %36 = load i8, ptr %arrayidx117.i.us, align 1 - %37 = lshr i8 %36, 2 - %shr119.i.us = zext nneg i8 %37 to i32 + %33 = load i8, ptr %arrayidx117.i.us, align 1 + %34 = lshr i8 %33, 2 + %shr119.i.us = zext nneg i8 %34 to i32 %shl121.i.us = shl nuw nsw i32 %shr119.i.us, %shr.i.us %add122.i.us = add nsw i32 %sub66.i.us, %shl12.neg96.i.us %sub124.i.us = add nsw i32 %add122.i.us, %shl121.i.us %conv125.i.us = trunc i32 %sub124.i.us to i16 store i16 %conv125.i.us, ptr %arrayidx126.i, align 4 - %conv130.i.us = zext i8 %36 to i32 + %conv130.i.us = zext i8 %33 to i32 %shl131.i.us = shl nuw nsw i32 %conv130.i.us, 4 %arrayidx132.i.us = getelementptr inbounds i8, ptr %in.3137.us, i64 9 - %38 = load i8, ptr %arrayidx132.i.us, align 1 - %39 = lshr i8 %38, 4 - %shr134.i.us = zext nneg i8 %39 to i32 + %35 = load i8, ptr %arrayidx132.i.us, align 1 + %36 = lshr i8 %35, 4 + %shr134.i.us = zext nneg i8 %36 to i32 %shl131.masked.i.us = and i32 %shl131.i.us, 48 %and136.i.us = or disjoint i32 %shl131.masked.i.us, %shr134.i.us %shl138.i.us = shl nuw nsw i32 %and136.i.us, %shr.i.us @@ -949,13 +947,13 @@ if.end52.us: ; preds = %if.else.us %sub141.i.us = add nsw i32 %add139.i.us, %shl138.i.us %conv142.i.us = trunc i32 %sub141.i.us to i16 store i16 %conv142.i.us, ptr %arrayidx143.i, align 4 - %40 = load i8, ptr %arrayidx132.i.us, align 1 - %conv147.i.us = zext i8 %40 to i32 + %37 = load i8, ptr %arrayidx132.i.us, align 1 + %conv147.i.us = zext i8 %37 to i32 %shl148.i.us = shl nuw nsw i32 %conv147.i.us, 2 %arrayidx149.i.us = getelementptr inbounds i8, ptr %in.3137.us, i64 10 - %41 = load i8, ptr %arrayidx149.i.us, align 1 - %42 = lshr i8 %41, 6 - %shr151.i.us = zext nneg i8 %42 to i32 + %38 = load i8, ptr %arrayidx149.i.us, align 1 + %39 = lshr i8 %38, 6 + %shr151.i.us = zext nneg i8 %39 to i32 %shl148.masked.i.us = and i32 %shl148.i.us, 60 %and153.i.us = or disjoint i32 %shl148.masked.i.us, %shr151.i.us %shl155.i.us = shl nuw nsw i32 %and153.i.us, %shr.i.us @@ -963,29 +961,29 @@ if.end52.us: ; preds = %if.else.us %sub158.i.us = add nsw i32 %add156.i.us, %shl155.i.us %conv159.i.us = trunc i32 %sub158.i.us to i16 store i16 %conv159.i.us, ptr %arrayidx160.i, align 4 - %43 = load i8, ptr %arrayidx149.i.us, align 1 - %44 = and i8 %43, 63 - %and165.i.us = zext nneg i8 %44 to i32 + %40 = load i8, ptr %arrayidx149.i.us, align 1 + %41 = and i8 %40, 63 + %and165.i.us = zext nneg i8 %41 to i32 %shl167.i.us = shl nuw nsw i32 %and165.i.us, %shr.i.us %add168.i.us = add nsw i32 %sub112.i.us, %shl12.neg96.i.us %sub170.i.us = add nsw i32 %add168.i.us, %shl167.i.us %conv171.i.us = trunc i32 %sub170.i.us to i16 store i16 %conv171.i.us, ptr %arrayidx172.i, align 4 %arrayidx175.i.us = getelementptr inbounds i8, ptr %in.3137.us, i64 11 - %45 = load i8, ptr %arrayidx175.i.us, align 1 - %46 = lshr i8 %45, 2 - %shr177.i.us = zext nneg i8 %46 to i32 + %42 = load i8, ptr %arrayidx175.i.us, align 1 + %43 = lshr i8 %42, 2 + %shr177.i.us = zext nneg i8 %43 to i32 %shl179.i.us = shl nuw nsw i32 %shr177.i.us, %shr.i.us %add180.i.us = add nsw i32 %sub124.i.us, %shl12.neg96.i.us %sub182.i.us = add nsw i32 %add180.i.us, %shl179.i.us %conv183.i.us = trunc i32 %sub182.i.us to i16 store i16 %conv183.i.us, ptr %arrayidx184.i, align 2 - %conv188.i.us = zext i8 %45 to i32 + %conv188.i.us = zext i8 %42 to i32 %shl189.i.us = shl nuw nsw i32 %conv188.i.us, 4 %arrayidx190.i.us = getelementptr inbounds i8, ptr %in.3137.us, i64 12 - %47 = load i8, ptr %arrayidx190.i.us, align 1 - %48 = lshr i8 %47, 4 - %shr192.i.us = zext nneg i8 %48 to i32 + %44 = load i8, ptr %arrayidx190.i.us, align 1 + %45 = lshr i8 %44, 4 + %shr192.i.us = zext nneg i8 %45 to i32 %shl189.masked.i.us = and i32 %shl189.i.us, 48 %and194.i.us = or disjoint i32 %shl189.masked.i.us, %shr192.i.us %shl196.i.us = shl nuw nsw i32 %and194.i.us, %shr.i.us @@ -993,13 +991,13 @@ if.end52.us: ; preds = %if.else.us %sub199.i.us = add nsw i32 %add197.i.us, %shl196.i.us %conv200.i.us = trunc i32 %sub199.i.us to i16 store i16 %conv200.i.us, ptr %arrayidx201.i, align 2 - %49 = load i8, ptr %arrayidx190.i.us, align 1 - %conv205.i.us = zext i8 %49 to i32 + %46 = load i8, ptr %arrayidx190.i.us, align 1 + %conv205.i.us = zext i8 %46 to i32 %shl206.i.us = shl nuw nsw i32 %conv205.i.us, 2 %arrayidx207.i.us = getelementptr inbounds i8, ptr %in.3137.us, i64 13 - %50 = load i8, ptr %arrayidx207.i.us, align 1 - %51 = lshr i8 %50, 6 - %shr209.i.us = zext nneg i8 %51 to i32 + %47 = load i8, ptr %arrayidx207.i.us, align 1 + %48 = lshr i8 %47, 6 + %shr209.i.us = zext nneg i8 %48 to i32 %shl206.masked.i.us = and i32 %shl206.i.us, 60 %and211.i.us = or disjoint i32 %shl206.masked.i.us, %shr209.i.us %shl213.i.us = shl nuw nsw i32 %and211.i.us, %shr.i.us @@ -1007,9 +1005,9 @@ if.end52.us: ; preds = %if.else.us %sub216.i.us = add nsw i32 %add214.i.us, %shl213.i.us %conv217.i.us = trunc i32 %sub216.i.us to i16 store i16 %conv217.i.us, ptr %arrayidx218.i, align 2 - %52 = load i8, ptr %arrayidx207.i.us, align 1 - %53 = and i8 %52, 63 - %and223.i.us = zext nneg i8 %53 to i32 + %49 = load i8, ptr %arrayidx207.i.us, align 1 + %50 = and i8 %49, 63 + %and223.i.us = zext nneg i8 %50 to i32 %shl225.i.us = shl nuw nsw i32 %and223.i.us, %shr.i.us %add226.i.us = add nsw i32 %sub170.i.us, %shl12.neg96.i.us %sub228.i.us = add nsw i32 %add226.i.us, %shl225.i.us @@ -1020,11 +1018,11 @@ if.end52.us: ; preds = %if.else.us for.body.i109.us: ; preds = %for.body.i109.us, %if.end52.us %indvars.iv.i110.us = phi i64 [ 0, %if.end52.us ], [ %indvars.iv.next.i113.us, %for.body.i109.us ] %arrayidx232.i.us = getelementptr inbounds i16, ptr %s, i64 %indvars.iv.i110.us - %54 = load i16, ptr %arrayidx232.i.us, align 2 - %not.i111.us = xor i16 %54, -1 - %55 = and i16 %54, 32767 - %tobool.not94.i.us = icmp slt i16 %54, 0 - %storemerge.i112.us = select i1 %tobool.not94.i.us, i16 %55, i16 %not.i111.us + %51 = load i16, ptr %arrayidx232.i.us, align 2 + %not.i111.us = xor i16 %51, -1 + %52 = and i16 %51, 32767 + %tobool.not94.i.us = icmp slt i16 %51, 0 + %storemerge.i112.us = select i1 %tobool.not94.i.us, i16 %52, i16 %not.i111.us store i16 %storemerge.i112.us, ptr %arrayidx232.i.us, align 2 %indvars.iv.next.i113.us = add nuw nsw i64 %indvars.iv.i110.us, 1 %exitcond.not.i114.us = icmp eq i64 %indvars.iv.next.i113.us, 16 @@ -1032,16 +1030,16 @@ for.body.i109.us: ; preds = %for.body.i109.us, % if.then45.us: ; preds = %if.end41.us %in.3.val.us = load i8, ptr %in.3137.us, align 1 - %56 = getelementptr i8, ptr %in.3137.us, i64 1 - %in.3.val104.us = load i8, ptr %56, align 1 + %53 = getelementptr i8, ptr %in.3137.us, i64 1 + %in.3.val104.us = load i8, ptr %53, align 1 %conv.i.us = zext i8 %in.3.val.us to i16 %shl.i.us = shl nuw i16 %conv.i.us, 8 %conv5.i.us = zext i8 %in.3.val104.us to i16 %or.i.us = or disjoint i16 %shl.i.us, %conv5.i.us %not.i.us = xor i16 %or.i.us, -1 - %57 = and i16 %or.i.us, 32767 + %54 = and i16 %or.i.us, 32767 %tobool.not1.i.us = icmp slt i16 %shl.i.us, 0 - %storemerge.i.us = select i1 %tobool.not1.i.us, i16 %57, i16 %not.i.us + %storemerge.i.us = select i1 %tobool.not1.i.us, i16 %54, i16 %not.i.us store i16 %storemerge.i.us, ptr %s, align 16 br label %for.body.i.us @@ -1057,27 +1055,27 @@ if.end56.us: ; preds = %for.body.i109.us, % %.sink = phi i64 [ 3, %for.body.i.us ], [ 14, %for.body.i109.us ] %bIn.4.us = phi i64 [ %add37.us, %for.body.i.us ], [ %add48.us, %for.body.i109.us ] %add.ptr46.us = getelementptr inbounds i8, ptr %in.3137.us, i64 %.sink - %58 = load i8, ptr %p_linear, align 8 - %tobool.not.us = icmp eq i8 %58, 0 + %55 = load i8, ptr %p_linear, align 8 + %tobool.not.us = icmp eq i8 %55, 0 br i1 %tobool.not.us, label %if.end59.us, label %for.body.i115.preheader.us for.body.i115.us: ; preds = %for.body.i115.preheader.us, %for.body.i115.us %indvars.iv.i116.us = phi i64 [ %indvars.iv.next.i117.us, %for.body.i115.us ], [ 0, %for.body.i115.preheader.us ] %arrayidx.i.us = getelementptr inbounds i16, ptr %s, i64 %indvars.iv.i116.us - %59 = load i16, ptr %arrayidx.i.us, align 2 - %idxprom1.i.us = zext i16 %59 to i64 - %arrayidx2.i.us = getelementptr inbounds i16, ptr %63, i64 %idxprom1.i.us - %60 = load i16, ptr %arrayidx2.i.us, align 2 - store i16 %60, ptr %arrayidx.i.us, align 2 + %56 = load i16, ptr %arrayidx.i.us, align 2 + %idxprom1.i.us = zext i16 %56 to i64 + %arrayidx2.i.us = getelementptr inbounds i16, ptr %60, i64 %idxprom1.i.us + %57 = load i16, ptr %arrayidx2.i.us, align 2 + store i16 %57, ptr %arrayidx.i.us, align 2 %indvars.iv.next.i117.us = add nuw nsw i64 %indvars.iv.i116.us, 1 %exitcond.not.i118.us = icmp eq i64 %indvars.iv.next.i117.us, 16 br i1 %exitcond.not.i118.us, label %if.end59.us, label %for.body.i115.us, !llvm.loop !20 if.end59.us: ; preds = %for.body.i115.us, %if.end56.us - %61 = or disjoint i64 %indvars.iv, 3 - %cmp62.us = icmp slt i64 %61, %conv3 - %62 = sub nsw i64 %conv3, %indvars.iv - %mul65.us = shl nsw i64 %62, 1 + %58 = or disjoint i64 %indvars.iv, 3 + %cmp62.us = icmp slt i64 %58, %conv3 + %59 = sub nsw i64 %conv3, %indvars.iv + %mul65.us = shl nsw i64 %59, 1 %cond.us = select i1 %cmp62.us, i64 8, i64 %mul65.us call void @llvm.memcpy.p0.p0.i64(ptr align 2 %row0.0131.us, ptr nonnull align 16 %s, i64 %cond.us, i1 false) br i1 %cmp67.us, label %if.then69.us, label %if.else74.us @@ -1112,13 +1110,13 @@ if.end88.us: ; preds = %if.then69.us, %if.t br i1 %cmp34.us, label %for.body36.us, label %for.cond33.for.inc94_crit_edge.us, !llvm.loop !21 for.body.i115.preheader.us: ; preds = %if.end56.us - %63 = load ptr, ptr @exrcore_logTable, align 8 + %60 = load ptr, ptr @exrcore_logTable, align 8 br label %for.body.i115.us for.cond33.for.inc94_crit_edge.us: ; preds = %if.end88.us %indvars.iv.next172 = add nuw nsw i64 %indvars.iv171, 4 - %64 = trunc nuw i64 %indvars.iv.next172 to i32 - %cmp21.us = icmp sgt i32 %6, %64 + %61 = trunc nuw i64 %indvars.iv.next172 to i32 + %cmp21.us = icmp sgt i32 %6, %61 br i1 %cmp21.us, label %for.body23.us, label %for.end96, !llvm.loop !22 if.then11: ; preds = %if.end @@ -1143,57 +1141,57 @@ for.inc98: ; preds = %for.body, %for.end9 %bIn.1 = phi i64 [ %bIn.0150, %for.body ], [ %add, %if.end15 ], [ %bIn.2.lcssa, %for.end96 ] %in.1 = phi ptr [ %in.0152, %for.body ], [ %add.ptr16, %if.end15 ], [ %in.2.lcssa, %for.end96 ] %indvars.iv.next179 = add nuw nsw i64 %indvars.iv178, 1 - %65 = load i16, ptr %channel_count, align 8 - %66 = sext i16 %65 to i64 - %cmp = icmp slt i64 %indvars.iv.next179, %66 + %62 = load i16, ptr %channel_count, align 8 + %63 = sext i16 %62 to i64 + %cmp = icmp slt i64 %indvars.iv.next179, %63 br i1 %cmp, label %for.body, label %for.cond101.preheader, !llvm.loop !23 for.body105: ; preds = %for.body105.lr.ph, %for.inc161 - %67 = phi i32 [ %3, %for.body105.lr.ph ], [ %80, %for.inc161 ] - %68 = phi i16 [ %2, %for.body105.lr.ph ], [ %81, %for.inc161 ] - %69 = phi i16 [ %2, %for.body105.lr.ph ], [ %82, %for.inc161 ] + %64 = phi i32 [ %3, %for.body105.lr.ph ], [ %77, %for.inc161 ] + %65 = phi i16 [ %2, %for.body105.lr.ph ], [ %78, %for.inc161 ] + %66 = phi i16 [ %2, %for.body105.lr.ph ], [ %79, %for.inc161 ] %y100.0163 = phi i32 [ 0, %for.body105.lr.ph ], [ %inc162, %for.inc161 ] %out.0162 = phi ptr [ %uncompressed_data, %for.body105.lr.ph ], [ %out.1.lcssa, %for.inc161 ] %bIn.5161 = phi i64 [ 0, %for.body105.lr.ph ], [ %bIn.6.lcssa, %for.inc161 ] - %70 = load i32, ptr %start_y, align 8 - %add107 = add nsw i32 %70, %y100.0163 - %cmp113154 = icmp sgt i16 %69, 0 + %67 = load i32, ptr %start_y, align 8 + %add107 = add nsw i32 %67, %y100.0163 + %cmp113154 = icmp sgt i16 %66, 0 br i1 %cmp113154, label %for.body115.preheader, label %for.inc161 for.body115.preheader: ; preds = %for.body105 - %71 = load ptr, ptr %scratch_buffer_1, align 8 + %68 = load ptr, ptr %scratch_buffer_1, align 8 br label %for.body115 for.body115: ; preds = %for.body115.preheader, %for.inc158 - %72 = phi i16 [ %68, %for.body115.preheader ], [ %78, %for.inc158 ] + %69 = phi i16 [ %65, %for.body115.preheader ], [ %75, %for.inc158 ] %indvars.iv181 = phi i64 [ 0, %for.body115.preheader ], [ %indvars.iv.next182, %for.inc158 ] %out.1157 = phi ptr [ %out.0162, %for.body115.preheader ], [ %out.2, %for.inc158 ] %bIn.6156 = phi i64 [ %bIn.5161, %for.body115.preheader ], [ %bIn.7, %for.inc158 ] - %scratch.2155 = phi ptr [ %71, %for.body115.preheader ], [ %scratch.3, %for.inc158 ] - %73 = load ptr, ptr %decode, align 8 - %add.ptr119 = getelementptr inbounds %struct.exr_coding_channel_info_t, ptr %73, i64 %indvars.iv181 + %scratch.2155 = phi ptr [ %68, %for.body115.preheader ], [ %scratch.3, %for.inc158 ] + %70 = load ptr, ptr %decode, align 8 + %add.ptr119 = getelementptr inbounds %struct.exr_coding_channel_info_t, ptr %70, i64 %indvars.iv181 %width120 = getelementptr inbounds i8, ptr %add.ptr119, i64 12 - %74 = load i32, ptr %width120, align 4 + %71 = load i32, ptr %width120, align 4 %height121 = getelementptr inbounds i8, ptr %add.ptr119, i64 8 - %75 = load i32, ptr %height121, align 8 - %conv122 = sext i32 %74 to i64 + %72 = load i32, ptr %height121, align 8 + %conv122 = sext i32 %71 to i64 %bytes_per_element123 = getelementptr inbounds i8, ptr %add.ptr119, i64 25 - %76 = load i8, ptr %bytes_per_element123, align 1 - %conv124 = sext i8 %76 to i64 + %73 = load i8, ptr %bytes_per_element123, align 1 + %conv124 = sext i8 %73 to i64 %mul125 = mul nsw i64 %conv124, %conv122 - %conv126 = sext i32 %75 to i64 + %conv126 = sext i32 %72 to i64 %mul127 = mul i64 %mul125, %conv126 %cmp128 = icmp eq i64 %mul127, 0 br i1 %cmp128, label %for.inc158, label %if.end131 if.end131: ; preds = %for.body115 %y_samples = getelementptr inbounds i8, ptr %add.ptr119, i64 20 - %77 = load i32, ptr %y_samples, align 4 - %cmp132 = icmp sgt i32 %77, 1 + %74 = load i32, ptr %y_samples, align 4 + %cmp132 = icmp sgt i32 %74, 1 br i1 %cmp132, label %if.then134, label %if.end149 if.then134: ; preds = %if.end131 - %rem = srem i32 %add107, %77 + %rem = srem i32 %add107, %74 %cmp136.not = icmp eq i32 %rem, 0 br i1 %cmp136.not, label %if.end140, label %if.then138 @@ -1202,7 +1200,7 @@ if.then138: ; preds = %if.then134 br label %for.inc158 if.end140: ; preds = %if.then134 - %div = udiv i32 %y100.0163, %77 + %div = udiv i32 %y100.0163, %74 br label %if.end149 if.end149: ; preds = %if.end131, %if.end140 @@ -1222,13 +1220,13 @@ if.end154: ; preds = %if.end149 br label %for.inc158 for.inc158: ; preds = %for.body115, %if.end154, %if.then138 - %78 = phi i16 [ %72, %for.body115 ], [ %72, %if.then138 ], [ %.pre, %if.end154 ] + %75 = phi i16 [ %69, %for.body115 ], [ %69, %if.then138 ], [ %.pre, %if.end154 ] %scratch.3 = phi ptr [ %scratch.2155, %for.body115 ], [ %add.ptr139, %if.then138 ], [ %add.ptr157, %if.end154 ] %bIn.7 = phi i64 [ %bIn.6156, %for.body115 ], [ %bIn.6156, %if.then138 ], [ %add150, %if.end154 ] %out.2 = phi ptr [ %out.1157, %for.body115 ], [ %out.1157, %if.then138 ], [ %add.ptr156, %if.end154 ] %indvars.iv.next182 = add nuw nsw i64 %indvars.iv181, 1 - %79 = sext i16 %78 to i64 - %cmp113 = icmp slt i64 %indvars.iv.next182, %79 + %76 = sext i16 %75 to i64 + %cmp113 = icmp slt i64 %indvars.iv.next182, %76 br i1 %cmp113, label %for.body115, label %for.inc161.loopexit, !llvm.loop !24 for.inc161.loopexit: ; preds = %for.inc158 @@ -1236,13 +1234,13 @@ for.inc161.loopexit: ; preds = %for.inc158 br label %for.inc161 for.inc161: ; preds = %for.inc161.loopexit, %for.body105 - %80 = phi i32 [ %67, %for.body105 ], [ %.pre184, %for.inc161.loopexit ] - %81 = phi i16 [ %68, %for.body105 ], [ %78, %for.inc161.loopexit ] - %82 = phi i16 [ %69, %for.body105 ], [ %78, %for.inc161.loopexit ] + %77 = phi i32 [ %64, %for.body105 ], [ %.pre184, %for.inc161.loopexit ] + %78 = phi i16 [ %65, %for.body105 ], [ %75, %for.inc161.loopexit ] + %79 = phi i16 [ %66, %for.body105 ], [ %75, %for.inc161.loopexit ] %bIn.6.lcssa = phi i64 [ %bIn.5161, %for.body105 ], [ %bIn.7, %for.inc161.loopexit ] %out.1.lcssa = phi ptr [ %out.0162, %for.body105 ], [ %out.2, %for.inc161.loopexit ] %inc162 = add nuw nsw i32 %y100.0163, 1 - %cmp103 = icmp slt i32 %inc162, %80 + %cmp103 = icmp slt i32 %inc162, %77 br i1 %cmp103, label %for.body105, label %return, !llvm.loop !25 return: ; preds = %if.then11, %if.else.us, %for.body36.us, %for.inc161, %if.end149, %for.cond101.preheader diff --git a/bench/openjdk/optimized/DrawLine.ll b/bench/openjdk/optimized/DrawLine.ll index 76847cee8a7..21ed627e21d 100644 --- a/bench/openjdk/optimized/DrawLine.ll +++ b/bench/openjdk/optimized/DrawLine.ll @@ -397,6 +397,7 @@ define hidden zeroext range(i8 0, 2) i8 @LineUtils_SetupBresenham(i32 noundef %0 store i32 %.sink388.i, ptr %11, align 4 store i32 %.sink.i, ptr %13, align 4 %.0276.i = shl nuw nsw i32 %.0276.in.i, 1 + %.0277.i = shl nuw nsw i32 %.0277.in.i, 1 %232 = tail call i32 @llvm.abs.i32(i32 %.0273.i, i1 true) %233 = add nuw nsw i32 %232, 1 %234 = sub nsw i32 %233, %spec.select368.i @@ -431,7 +432,7 @@ define hidden zeroext range(i8 0, 2) i8 @LineUtils_SetupBresenham(i32 noundef %0 247: ; preds = %242, %241 %.1275.i = phi i32 [ %246, %242 ], [ %.0274.i, %241 ] %248 = add nsw i32 %.1275.i, %.0276.i - %249 = sub nsw i32 %.0277.in.i, %.0276.in.i + %249 = sub nsw i32 %.0277.i, %.0276.i br label %LineUtils_SetupBresenhamBig.exit.sink.split 250: ; preds = %14 @@ -662,6 +663,7 @@ define hidden zeroext range(i8 0, 2) i8 @LineUtils_SetupBresenham(i32 noundef %0 store i32 %.sink333, ptr %11, align 4 store i32 %.sink, ptr %13, align 4 %.0238 = shl nuw nsw i32 %.0238.in, 1 + %.0239 = shl nuw nsw i32 %.0239.in, 1 %365 = tail call i32 @llvm.abs.i32(i32 %.0235, i1 true) %366 = add nuw nsw i32 %365, 1 %367 = sub nsw i32 %366, %spec.select314 @@ -696,19 +698,18 @@ define hidden zeroext range(i8 0, 2) i8 @LineUtils_SetupBresenham(i32 noundef %0 380: ; preds = %375, %374 %.1237 = phi i32 [ %379, %375 ], [ %.0236, %374 ] %381 = add nsw i32 %.1237, %.0238 - %382 = sub nsw i32 %.0239.in, %.0238.in + %382 = sub nsw i32 %.0239, %.0238 br label %LineUtils_SetupBresenhamBig.exit.sink.split LineUtils_SetupBresenhamBig.exit.sink.split: ; preds = %380, %247 - %.sink338 = phi i32 [ %249, %247 ], [ %382, %380 ] %.sink337 = phi i32 [ %234, %247 ], [ %367, %380 ] %.sink336 = phi i32 [ %248, %247 ], [ %381, %380 ] %.0276.i.sink = phi i32 [ %.0276.i, %247 ], [ %.0238, %380 ] - %383 = shl nsw i32 %.sink338, 1 + %.sink335 = phi i32 [ %249, %247 ], [ %382, %380 ] store i32 %.sink337, ptr %8, align 4 store i32 %.sink336, ptr %9, align 4 store i32 %.0276.i.sink, ptr %10, align 4 - store i32 %383, ptr %12, align 4 + store i32 %.sink335, ptr %12, align 4 br label %LineUtils_SetupBresenhamBig.exit LineUtils_SetupBresenhamBig.exit: ; preds = %156, %297, %LineUtils_SetupBresenhamBig.exit.sink.split, %231, %364 diff --git a/bench/openjdk/optimized/bitMap.ll b/bench/openjdk/optimized/bitMap.ll index 0c9b76cd996..f7d3d85d4a2 100644 --- a/bench/openjdk/optimized/bitMap.ll +++ b/bench/openjdk/optimized/bitMap.ll @@ -407,9 +407,8 @@ define weak_odr hidden void @_ZN14GrowableBitMapI11CHeapBitMapE10initializeEmb(p .lr.ph.preheader.i.i: ; preds = %19 %27 = shl nuw nsw i64 %8, 3 %scevgep.i.i = getelementptr i8, ptr %17, i64 %27 - %28 = sub nuw nsw i64 %10, %8 - %29 = shl nuw nsw i64 %28, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i.i, i8 0, i64 %29, i1 false) + %28 = sub nsw i64 %16, %27 + tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i.i, i8 0, i64 %28, i1 false) br label %_ZN14GrowableBitMapI11CHeapBitMapE6resizeEmb.exit _ZN14GrowableBitMapI11CHeapBitMapE6resizeEmb.exit: ; preds = %12, %13, %19, %.lr.ph.preheader.i.i @@ -592,8 +591,8 @@ _ZN6BitMap18set_range_of_wordsEmm.exit: ; preds = %9, %10 %17 = load ptr, ptr %0, align 8 %18 = shl nuw nsw i64 %5, 3 %scevgep.i = getelementptr i8, ptr %17, i64 %18 - %19 = sub nuw nsw i64 %6, %5 - %20 = shl nuw nsw i64 %19, 3 + %19 = shl nuw nsw i64 %6, 3 + %20 = sub nsw i64 %19, %18 tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i, i8 -1, i64 %20, i1 false) %21 = and i64 %2, 63 %.not.i19 = icmp eq i64 %21, 0 @@ -687,8 +686,8 @@ _ZN6BitMap20clear_range_of_wordsEmm.exit: ; preds = %9, %10 %18 = load ptr, ptr %0, align 8 %19 = shl nuw nsw i64 %5, 3 %scevgep.i.i = getelementptr i8, ptr %18, i64 %19 - %20 = sub nuw nsw i64 %6, %5 - %21 = shl nuw nsw i64 %20, 3 + %20 = shl nuw nsw i64 %6, 3 + %21 = sub nsw i64 %20, %19 tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i.i, i8 0, i64 %21, i1 false) %22 = and i64 %2, 63 %.not.i19 = icmp eq i64 %22, 0 @@ -792,8 +791,8 @@ _ZN6BitMap18set_range_of_wordsEmm.exit.i: ; preds = %12, %11 %19 = load ptr, ptr %0, align 8 %20 = shl nuw nsw i64 %5, 3 %scevgep.i.i = getelementptr i8, ptr %19, i64 %20 - %21 = sub nuw nsw i64 %6, %5 - %22 = shl nuw nsw i64 %21, 3 + %21 = shl nuw nsw i64 %6, 3 + %22 = sub nsw i64 %21, %20 tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i.i, i8 -1, i64 %22, i1 false) %23 = and i64 %2, 63 %.not.i19.i = icmp eq i64 %23, 0 @@ -925,8 +924,8 @@ _ZN6BitMap20clear_range_of_wordsEmm.exit.i: ; preds = %12, %11 %20 = load ptr, ptr %0, align 8 %21 = shl nuw nsw i64 %5, 3 %scevgep.i.i.i = getelementptr i8, ptr %20, i64 %21 - %22 = sub nuw nsw i64 %6, %5 - %23 = shl nuw nsw i64 %22, 3 + %22 = shl nuw nsw i64 %6, 3 + %23 = sub nsw i64 %22, %21 tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i.i.i, i8 0, i64 %23, i1 false) %24 = and i64 %2, 63 %.not.i19.i = icmp eq i64 %24, 0 @@ -1130,8 +1129,8 @@ _ZN6BitMap18set_range_of_wordsEmm.exit.i: ; preds = %12, %11 %19 = load ptr, ptr %0, align 8 %20 = shl nuw nsw i64 %6, 3 %scevgep.i.i = getelementptr i8, ptr %19, i64 %20 - %21 = sub nuw nsw i64 %7, %6 - %22 = shl nuw nsw i64 %21, 3 + %21 = shl nuw nsw i64 %7, 3 + %22 = sub nsw i64 %21, %20 tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i.i, i8 -1, i64 %22, i1 false) %23 = and i64 %2, 63 %.not.i19.i = icmp eq i64 %23, 0 @@ -1215,8 +1214,8 @@ _ZN6BitMap20clear_range_of_wordsEmm.exit.i: ; preds = %52, %51 %60 = load ptr, ptr %0, align 8 %61 = shl nuw nsw i64 %6, 3 %scevgep.i.i.i = getelementptr i8, ptr %60, i64 %61 - %62 = sub nuw nsw i64 %7, %6 - %63 = shl nuw nsw i64 %62, 3 + %62 = shl nuw nsw i64 %7, 3 + %63 = sub nsw i64 %62, %61 tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i.i.i, i8 0, i64 %63, i1 false) %64 = and i64 %2, 63 %.not.i19.i16 = icmp eq i64 %64, 0 @@ -1329,8 +1328,8 @@ _ZN6BitMap25par_put_range_within_wordEmmb.exit: ; preds = %.lr.ph.split.i, %.l %31 = load ptr, ptr %0, align 8 %32 = shl nuw nsw i64 %6, 3 %scevgep.i = getelementptr i8, ptr %31, i64 %32 - %33 = sub nuw nsw i64 %7, %6 - %34 = shl nuw nsw i64 %33, 3 + %33 = shl nuw nsw i64 %7, 3 + %34 = sub nsw i64 %33, %32 br i1 %3, label %_ZN6BitMap18set_range_of_wordsEmm.exit, label %_ZN6BitMap20clear_range_of_wordsEmm.exit _ZN6BitMap18set_range_of_wordsEmm.exit: ; preds = %_ZN6BitMap25par_put_range_within_wordEmmb.exit @@ -2711,9 +2710,8 @@ _ZNK11ArenaBitMap10reallocateEPmmm.exit: ; preds = %_ZNK11ArenaBitMap8a .lr.ph.preheader.i: ; preds = %60 %68 = shl nuw nsw i64 %8, 3 %scevgep.i = getelementptr i8, ptr %.0.i.i.i.i.i, i64 %68 - %69 = sub nuw nsw i64 %10, %8 - %70 = shl nuw nsw i64 %69, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i, i8 0, i64 %70, i1 false) + %69 = sub nsw i64 %14, %68 + tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i, i8 0, i64 %69, i1 false) br label %_ZN6BitMap20clear_range_of_wordsEPmmm.exit _ZN6BitMap20clear_range_of_wordsEPmmm.exit: ; preds = %_ZNK11ArenaBitMap10reallocateEPmmm.exit, %60, %.lr.ph.preheader.i, %3 @@ -2976,9 +2974,8 @@ _ZNK14ResourceBitMap10reallocateEPmmm.exit: ; preds = %12, %.split11.i.i, .lr.ph.preheader.i: ; preds = %49 %57 = shl nuw nsw i64 %8, 3 %scevgep.i = getelementptr i8, ptr %14, i64 %57 - %58 = sub nuw nsw i64 %10, %8 - %59 = shl nuw nsw i64 %58, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i, i8 0, i64 %59, i1 false) + %58 = sub nsw i64 %13, %57 + tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i, i8 0, i64 %58, i1 false) br label %_ZN6BitMap20clear_range_of_wordsEPmmm.exit _ZN6BitMap20clear_range_of_wordsEPmmm.exit: ; preds = %_ZNK14ResourceBitMap10reallocateEPmmm.exit, %49, %.lr.ph.preheader.i, %3 @@ -3150,9 +3147,8 @@ define weak_odr hidden void @_ZN14GrowableBitMapI11CHeapBitMapE6resizeEmb(ptr no .lr.ph.preheader.i: ; preds = %19 %27 = shl nuw nsw i64 %8, 3 %scevgep.i = getelementptr i8, ptr %17, i64 %27 - %28 = sub nuw nsw i64 %10, %8 - %29 = shl nuw nsw i64 %28, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i, i8 0, i64 %29, i1 false) + %28 = sub nsw i64 %16, %27 + tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.i, i8 0, i64 %28, i1 false) br label %_ZN6BitMap20clear_range_of_wordsEPmmm.exit _ZN6BitMap20clear_range_of_wordsEPmmm.exit: ; preds = %13, %19, %.lr.ph.preheader.i, %12 diff --git a/bench/openjdk/optimized/macroAssembler_x86.ll b/bench/openjdk/optimized/macroAssembler_x86.ll index 762a35bdd80..49597965ff7 100644 --- a/bench/openjdk/optimized/macroAssembler_x86.ll +++ b/bench/openjdk/optimized/macroAssembler_x86.ll @@ -18964,30 +18964,31 @@ declare void @_ZN9Assembler7pcmpeqdE11XMMRegisterS0_(ptr noundef nonnull align 8 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable define hidden void @_ZN14MacroAssembler16argument_addressE18RegisterOrConstanti(ptr dead_on_unwind noalias nocapture writable writeonly sret(%class.Address) align 8 %0, ptr nocapture noundef nonnull readnone align 8 dereferenceable(40) %1, i32 %2, i64 %3, i32 noundef %4) local_unnamed_addr #9 align 2 { - %6 = icmp eq i32 %2, -1 + %6 = shl nsw i32 %4, 3 + %7 = icmp eq i32 %2, -1 %.tr = trunc i64 %3 to i32 - %.010 = select i1 %6, i32 -1, i32 3 - %7 = select i1 %6, i32 %.tr, i32 0 - %.0.v = add i32 %7, %4 - %.0 = shl i32 %.0.v, 3 - %8 = add nsw i32 %.0, 8 + %8 = shl i32 %.tr, 3 + %.010 = select i1 %7, i32 -1, i32 3 + %9 = select i1 %7, i32 %8, i32 0 + %.0 = add i32 %6, 8 + %10 = add i32 %.0, %9 store i32 4, ptr %0, align 8 - %9 = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %2, ptr %9, align 4 - %10 = getelementptr inbounds i8, ptr %0, i64 8 - store i32 -1, ptr %10, align 8 - %11 = getelementptr inbounds i8, ptr %0, i64 12 - store i32 %.010, ptr %11, align 4 - %12 = getelementptr inbounds i8, ptr %0, i64 16 - store i32 %8, ptr %12, align 8 - %13 = getelementptr inbounds i8, ptr %0, i64 20 - store i8 0, ptr %13, align 4 - %14 = getelementptr inbounds i8, ptr %0, i64 24 - store ptr getelementptr inbounds inrange(-16, 72) (i8, ptr @_ZTV10Relocation, i64 16), ptr %14, align 8 - %15 = getelementptr inbounds i8, ptr %0, i64 32 - store ptr null, ptr %15, align 8 - %16 = getelementptr inbounds i8, ptr %0, i64 40 - store i32 0, ptr %16, align 8 + %11 = getelementptr inbounds i8, ptr %0, i64 4 + store i32 %2, ptr %11, align 4 + %12 = getelementptr inbounds i8, ptr %0, i64 8 + store i32 -1, ptr %12, align 8 + %13 = getelementptr inbounds i8, ptr %0, i64 12 + store i32 %.010, ptr %13, align 4 + %14 = getelementptr inbounds i8, ptr %0, i64 16 + store i32 %10, ptr %14, align 8 + %15 = getelementptr inbounds i8, ptr %0, i64 20 + store i8 0, ptr %15, align 4 + %16 = getelementptr inbounds i8, ptr %0, i64 24 + store ptr getelementptr inbounds inrange(-16, 72) (i8, ptr @_ZTV10Relocation, i64 16), ptr %16, align 8 + %17 = getelementptr inbounds i8, ptr %0, i64 32 + store ptr null, ptr %17, align 8 + %18 = getelementptr inbounds i8, ptr %0, i64 40 + store i32 0, ptr %18, align 8 ret void } diff --git a/bench/openssl/optimized/libcrypto-lib-e_aes_cbc_hmac_sha1.ll b/bench/openssl/optimized/libcrypto-lib-e_aes_cbc_hmac_sha1.ll index 87513a1f657..2bf8e34eb6c 100644 --- a/bench/openssl/optimized/libcrypto-lib-e_aes_cbc_hmac_sha1.ll +++ b/bench/openssl/optimized/libcrypto-lib-e_aes_cbc_hmac_sha1.ll @@ -612,11 +612,10 @@ if.end219: ; preds = %for.body201 store i32 %conv229, ptr %arrayidx226, align 4 call void @sha1_block_data_order(ptr noundef nonnull %md, ptr noundef nonnull %data104, i64 noundef 1) #7 %sub232 = add i64 %sub204, -72 - %shr222.neg302 = and i64 %sub232, %sub221 - %and235 = ashr i64 %shr222.neg302, 63 + %isneg302 = icmp slt i64 %sub232, 0 %47 = load i32, ptr %md, align 4 %48 = load i32, ptr %22, align 32 - %49 = trunc nsw i64 %and235 to i32 + %49 = select i1 %isneg302, i32 %45, i32 0 %50 = and i32 %47, %49 %conv242 = or i32 %50, %48 store i32 %conv242, ptr %22, align 32 @@ -678,11 +677,10 @@ if.then286: ; preds = %for.end273, %for.en call void @sha1_block_data_order(ptr noundef nonnull %md, ptr noundef nonnull %data104, i64 noundef 1) #7 %reass.sub538 = sub i64 %j.1.lcssa544, %inp_len.0 %sub299 = add i64 %reass.sub538, -73 - %shr289.neg298 = and i64 %sub288, %sub299 - %and302 = ashr i64 %shr289.neg298, 63 + %isneg = icmp slt i64 %sub299, 0 %70 = load i32, ptr %md, align 4 %71 = load i32, ptr %22, align 32 - %72 = trunc nsw i64 %and302 to i32 + %72 = select i1 %isneg, i32 %68, i32 0 %73 = and i32 %70, %72 %conv310 = or i32 %73, %71 store i32 %conv310, ptr %22, align 32 @@ -811,8 +809,8 @@ for.body431: ; preds = %sha1_update.exit469 %109 = trunc i64 %sub434 to i32 %conv436 = add i32 %109, -20 %xor = xor i32 %or.i, %conv433 - %isneg = icmp slt i32 %conv436, 0 - %and439 = select i1 %isneg, i32 0, i32 %xor + %isneg298 = icmp slt i32 %conv436, 0 + %and439 = select i1 %isneg298, i32 0, i32 %xor %110 = xor i64 %j.3537, -1 %sub442 = add i64 %sub.ptr.sub, %110 %conv443 = trunc i64 %sub442 to i32 diff --git a/bench/openssl/optimized/libcrypto-lib-evp_lib.ll b/bench/openssl/optimized/libcrypto-lib-evp_lib.ll index 603170ef81f..2be21a1432f 100644 --- a/bench/openssl/optimized/libcrypto-lib-evp_lib.ll +++ b/bench/openssl/optimized/libcrypto-lib-evp_lib.ll @@ -2177,9 +2177,8 @@ entry: %conv2 = sext i32 %not to i64 %and = and i64 %0, %conv2 store i64 %and, ptr %flags1, align 8 - %and4 = and i64 %conv2, 8192 - %xor = xor i64 %and4, 8192 - %and6 = and i64 %xor, %0 + %xor = xor i64 %and, %0 + %and6 = and i64 %xor, 8192 %cmp.not = icmp eq i64 %and6, 0 br i1 %cmp.not, label %if.end, label %if.then diff --git a/bench/openssl/optimized/libcrypto-lib-rsa_oaep.ll b/bench/openssl/optimized/libcrypto-lib-rsa_oaep.ll index f034e41c567..ac014d9848d 100644 --- a/bench/openssl/optimized/libcrypto-lib-rsa_oaep.ll +++ b/bench/openssl/optimized/libcrypto-lib-rsa_oaep.ll @@ -433,11 +433,8 @@ for.end83: ; preds = %for.body72, %for.co if.end89: ; preds = %for.end83 %call92 = call i32 @CRYPTO_memcmp(ptr noundef nonnull %call15, ptr noundef nonnull %phash, i64 noundef %idx.ext42) #5 - %not.i118 = xor i32 %call92, -1 - %sub.i119 = add i32 %call92, -1 - %6 = and i32 %sub.i119, %not.i118 - %shr.neg.i.i117165 = and i32 %6, %sub.i115 - %and94 = ashr i32 %shr.neg.i.i117165, 31 + %isneg = icmp eq i32 %call92, 0 + %and94 = select i1 %isneg, i32 %shr.neg.i.i117, i32 0 %cmp96176 = icmp slt i32 %call4, %sub14 br i1 %cmp96176, label %for.body98, label %for.end114 @@ -447,8 +444,8 @@ for.body98: ; preds = %if.end89, %for.body %good.1179 = phi i32 [ %and111, %for.body98 ], [ %and94, %if.end89 ] %one_index.0178 = phi i32 [ %or.i.i, %for.body98 ], [ 0, %if.end89 ] %arrayidx100 = getelementptr inbounds i8, ptr %call15, i64 %indvars.iv198 - %7 = load i8, ptr %arrayidx100, align 1 - %conv101 = zext i8 %7 to i32 + %6 = load i8, ptr %arrayidx100, align 1 + %conv101 = zext i8 %6 to i32 %xor.i = xor i32 %conv101, 1 %sub.i.i = add nsw i32 %xor.i, -1 %shr.neg.i.i.i = ashr i32 %sub.i.i, 31 @@ -456,12 +453,12 @@ for.body98: ; preds = %if.end89, %for.body %shr.neg.i.i125 = ashr i32 %sub.i123, 31 %not107 = xor i32 %found_one_byte.0180, -1 %and108 = and i32 %shr.neg.i.i.i, %not107 - %8 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %and108) #6, !srcloc !11 - %9 = trunc nsw i64 %indvars.iv198 to i32 - %and.i.i126 = and i32 %8, %9 + %7 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %and108) #6, !srcloc !11 + %8 = trunc nsw i64 %indvars.iv198 to i32 + %and.i.i126 = and i32 %7, %8 %not.i.i127 = xor i32 %and108, -1 - %10 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %not.i.i127) #6, !srcloc !11 - %and2.i.i = and i32 %10, %one_index.0178 + %9 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %not.i.i127) #6, !srcloc !11 + %and2.i.i = and i32 %9, %one_index.0178 %or.i.i = or i32 %and2.i.i, %and.i.i126 %or = or i32 %shr.neg.i.i.i, %found_one_byte.0180 %or110 = or i32 %or, %shr.neg.i.i125 @@ -472,11 +469,11 @@ for.body98: ; preds = %if.end89, %for.body br i1 %exitcond201.not, label %for.end114.loopexit, label %for.body98, !llvm.loop !12 for.end114.loopexit: ; preds = %for.body98 - %11 = xor i32 %or.i.i, -1 + %10 = xor i32 %or.i.i, -1 br label %for.end114 for.end114: ; preds = %for.end114.loopexit, %if.end89 - %one_index.0.lcssa = phi i32 [ -1, %if.end89 ], [ %11, %for.end114.loopexit ] + %one_index.0.lcssa = phi i32 [ -1, %if.end89 ], [ %10, %for.end114.loopexit ] %good.1.lcssa = phi i32 [ %and94, %if.end89 ], [ %and111, %for.end114.loopexit ] %found_one_byte.0.lcssa = phi i32 [ 0, %if.end89 ], [ %or, %for.end114.loopexit ] %sub117 = add i32 %sub14, %one_index.0.lcssa @@ -486,18 +483,18 @@ for.end114: ; preds = %for.end114.loopexit %or.i.i129 = or i32 %xor1.i.i, %xor.i.i %xor2.i.i = xor i32 %or.i.i129, %tlen %isnotneg.i.inv = icmp slt i32 %xor2.i.i, 0 - %12 = select i1 %isnotneg.i.inv, i32 0, i32 %found_one_byte.0.lcssa - %and119 = and i32 %12, %good.1.lcssa + %11 = select i1 %isnotneg.i.inv, i32 0, i32 %found_one_byte.0.lcssa + %and119 = and i32 %11, %good.1.lcssa %sub121 = add i32 %sub14, %0 %sub.i132 = sub i32 %sub121, %tlen - %13 = sub i32 %call4, %sub14 - %xor2.i = and i32 %sub.i132, %13 + %12 = sub i32 %call4, %sub14 + %xor2.i = and i32 %sub.i132, %12 %shr.neg.i.i133 = ashr i32 %xor2.i, 31 - %14 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %shr.neg.i.i133) #6, !srcloc !11 - %and.i.i134 = and i32 %14, %sub121 + %13 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %shr.neg.i.i133) #6, !srcloc !11 + %and.i.i134 = and i32 %13, %sub121 %not.i.i135 = xor i32 %shr.neg.i.i133, -1 - %15 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %not.i.i135) #6, !srcloc !11 - %and2.i.i136 = and i32 %15, %tlen + %14 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %not.i.i135) #6, !srcloc !11 + %and2.i.i136 = and i32 %14, %tlen %or.i.i137 = or i32 %and2.i.i136, %and.i.i134 %cmp129187 = icmp sgt i32 %sub121, 1 br i1 %cmp129187, label %for.body131.lr.ph, label %for.cond158.preheader @@ -505,7 +502,7 @@ for.end114: ; preds = %for.end114.loopexit for.body131.lr.ph: ; preds = %for.end114 %sub134 = sub nsw i32 %sub121, %sub117 %i.4184 = add nsw i32 %call4, 1 - %16 = sext i32 %i.4184 to i64 + %15 = sext i32 %i.4184 to i64 br label %for.body131 for.cond158.preheader: ; preds = %for.inc156, %for.end114 @@ -514,7 +511,7 @@ for.cond158.preheader: ; preds = %for.inc156, %for.en for.body161.lr.ph: ; preds = %for.cond158.preheader %invariant.gep = getelementptr i8, ptr %call15, i64 1 - %17 = and i32 %and119, 255 + %16 = and i32 %and119, 255 %wide.trip.count210 = zext nneg i32 %or.i.i137 to i64 %invariant.gep215 = getelementptr i8, ptr %invariant.gep, i64 %idx.ext42 br label %for.body161 @@ -530,29 +527,29 @@ for.body143.lr.ph: ; preds = %for.body131 %notsub = add i32 %and135, -1 %isneg166.inv = icmp slt i32 %notsub, 0 %conv.i = select i1 %isneg166.inv, i32 0, i32 255 - %18 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %conv.i) #6, !srcloc !11 + %17 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %conv.i) #6, !srcloc !11 %not.i.i144 = xor i32 %conv.i, -1 - %19 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %not.i.i144) #6, !srcloc !11 - %20 = sext i32 %msg_index.0188 to i64 - %21 = sext i32 %sub140 to i64 - %invariant.gep213 = getelementptr i8, ptr %call15, i64 %20 + %18 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %not.i.i144) #6, !srcloc !11 + %19 = sext i32 %msg_index.0188 to i64 + %20 = sext i32 %sub140 to i64 + %invariant.gep213 = getelementptr i8, ptr %call15, i64 %19 br label %for.body143 for.body143: ; preds = %for.body143.lr.ph, %for.body143 - %indvars.iv202 = phi i64 [ %16, %for.body143.lr.ph ], [ %indvars.iv.next203, %for.body143 ] + %indvars.iv202 = phi i64 [ %15, %for.body143.lr.ph ], [ %indvars.iv.next203, %for.body143 ] %gep214 = getelementptr i8, ptr %invariant.gep213, i64 %indvars.iv202 - %22 = load i8, ptr %gep214, align 1 + %21 = load i8, ptr %gep214, align 1 %arrayidx149 = getelementptr inbounds i8, ptr %call15, i64 %indvars.iv202 - %23 = load i8, ptr %arrayidx149, align 1 - %conv1.i = zext i8 %22 to i32 - %conv2.i = zext i8 %23 to i32 - %and.i.i143 = and i32 %18, %conv1.i - %and2.i.i145 = and i32 %19, %conv2.i + %22 = load i8, ptr %arrayidx149, align 1 + %conv1.i = zext i8 %21 to i32 + %conv2.i = zext i8 %22 to i32 + %and.i.i143 = and i32 %17, %conv1.i + %and2.i.i145 = and i32 %18, %conv2.i %or.i.i146 = or i32 %and2.i.i145, %and.i.i143 %conv3.i = trunc nuw i32 %or.i.i146 to i8 store i8 %conv3.i, ptr %arrayidx149, align 1 %indvars.iv.next203 = add nsw i64 %indvars.iv202, 1 - %cmp141 = icmp slt i64 %indvars.iv.next203, %21 + %cmp141 = icmp slt i64 %indvars.iv.next203, %20 br i1 %cmp141, label %for.body143, label %for.inc156, !llvm.loop !13 for.inc156: ; preds = %for.body143, %for.body131 @@ -562,22 +559,22 @@ for.inc156: ; preds = %for.body143, %for.b for.body161: ; preds = %for.body161.lr.ph, %for.body161 %indvars.iv206 = phi i64 [ 0, %for.body161.lr.ph ], [ %indvars.iv.next207, %for.body161 ] - %24 = trunc nuw nsw i64 %indvars.iv206 to i32 - %sub.i148 = sub i32 %24, %sub117 + %23 = trunc nuw nsw i64 %indvars.iv206 to i32 + %sub.i148 = sub i32 %23, %sub117 %or.i150 = or i32 %sub.i148, %sub117 - %isneg = icmp slt i32 %or.i150, 0 + %isneg165 = icmp slt i32 %or.i150, 0 %gep216 = getelementptr i8, ptr %invariant.gep215, i64 %indvars.iv206 - %25 = load i8, ptr %gep216, align 1 + %24 = load i8, ptr %gep216, align 1 %arrayidx170 = getelementptr inbounds i8, ptr %to, i64 %indvars.iv206 - %26 = load i8, ptr %arrayidx170, align 1 - %conv.i153 = select i1 %isneg, i32 %17, i32 0 - %conv1.i154 = zext i8 %25 to i32 - %conv2.i155 = zext i8 %26 to i32 - %27 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %conv.i153) #6, !srcloc !11 - %and.i.i156 = and i32 %27, %conv1.i154 + %25 = load i8, ptr %arrayidx170, align 1 + %conv.i153 = select i1 %isneg165, i32 %16, i32 0 + %conv1.i154 = zext i8 %24 to i32 + %conv2.i155 = zext i8 %25 to i32 + %26 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %conv.i153) #6, !srcloc !11 + %and.i.i156 = and i32 %26, %conv1.i154 %not.i.i157 = xor i32 %conv.i153, -1 - %28 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %not.i.i157) #6, !srcloc !11 - %and2.i.i158 = and i32 %28, %conv2.i155 + %27 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %not.i.i157) #6, !srcloc !11 + %and2.i.i158 = and i32 %27, %conv2.i155 %or.i.i159 = or i32 %and2.i.i158, %and.i.i156 %conv3.i160 = trunc nuw i32 %or.i.i159 to i8 store i8 %conv3.i160, ptr %arrayidx170, align 1 @@ -600,11 +597,11 @@ cleanup: ; preds = %if.end13, %for.end8 call void @OPENSSL_cleanse(ptr noundef nonnull %seed, i64 noundef 64) #5 call void @CRYPTO_clear_free(ptr noundef %call15, i64 noundef %conv, ptr noundef nonnull @.str, i32 noundef 313) #5 call void @CRYPTO_clear_free(ptr noundef %em.0, i64 noundef %.pre212, ptr noundef nonnull @.str, i32 noundef 314) #5 - %29 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %good.0) #6, !srcloc !11 - %and.i.i161 = and i32 %29, %mlen.0 + %28 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %good.0) #6, !srcloc !11 + %and.i.i161 = and i32 %28, %mlen.0 %not.i.i162 = xor i32 %good.0, -1 - %30 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %not.i.i162) #6, !srcloc !11 - %or.i.i164 = or i32 %30, %and.i.i161 + %29 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %not.i.i162) #6, !srcloc !11 + %or.i.i164 = or i32 %29, %and.i.i161 br label %return return: ; preds = %if.end, %cleanup, %if.then12 diff --git a/bench/openssl/optimized/libdefault-lib-ssl3_cbc.ll b/bench/openssl/optimized/libdefault-lib-ssl3_cbc.ll index 51492ef0d8e..1b96ca13627 100644 --- a/bench/openssl/optimized/libdefault-lib-ssl3_cbc.ll +++ b/bench/openssl/optimized/libdefault-lib-ssl3_cbc.ll @@ -113,8 +113,8 @@ cond.false: ; preds = %if.end104 %0 = trunc nuw nsw i64 %add114 to i16 %div.lhs.trunc = add nsw i16 %0, -1 %div.rhs.trunc = trunc nuw nsw i64 %md_block_size.0 to i16 - %div183 = udiv i16 %div.lhs.trunc, %div.rhs.trunc - %div.zext = zext nneg i16 %div183 to i64 + %div182 = udiv i16 %div.lhs.trunc, %div.rhs.trunc + %div.zext = zext nneg i16 %div182 to i64 %add115 = add nuw nsw i64 %div.zext, 1 br label %cond.end @@ -139,10 +139,12 @@ cond.end: ; preds = %if.end104, %cond.fa %mul = mul i64 %sub136, %md_block_size.0 %k.0 = select i1 %cmp133, i64 %mul, i64 0 %num_starting_blocks.0 = select i1 %cmp133, i64 %sub136, i64 0 + %mul138 = shl i64 %add124, 3 br i1 %tobool105.not, label %if.then140, label %if.end163 if.then140: ; preds = %cond.end - %mul138155 = add i64 %add124, %md_block_size.0 + %mul141 = shl nuw nsw i64 %md_block_size.0, 3 + %add142 = add i64 %mul138, %mul141 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %hmac_pad, i8 0, i64 %md_block_size.0, i1 false) %cmp144 = icmp ult i64 %mac_secret_length, 129 br i1 %cmp144, label %if.end155, label %return @@ -152,12 +154,12 @@ if.end155: ; preds = %if.then140 br label %for.body for.body: ; preds = %if.end155, %for.body - %i.0185 = phi i64 [ 0, %if.end155 ], [ %inc, %for.body ] - %arrayidx = getelementptr inbounds [128 x i8], ptr %hmac_pad, i64 0, i64 %i.0185 + %i.0184 = phi i64 [ 0, %if.end155 ], [ %inc, %for.body ] + %arrayidx = getelementptr inbounds [128 x i8], ptr %hmac_pad, i64 0, i64 %i.0184 %2 = load i8, ptr %arrayidx, align 1 %3 = xor i8 %2, 54 store i8 %3, ptr %arrayidx, align 1 - %inc = add nuw nsw i64 %i.0185, 1 + %inc = add nuw nsw i64 %i.0184, 1 %exitcond.not = icmp eq i64 %inc, %md_block_size.0 br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !4 @@ -166,8 +168,7 @@ for.end: ; preds = %for.body br label %if.end163 if.end163: ; preds = %for.end, %cond.end - %bits.0.in = phi i64 [ %add124, %cond.end ], [ %mul138155, %for.end ] - %bits.0 = shl i64 %bits.0.in, 3 + %bits.0 = phi i64 [ %mul138, %cond.end ], [ %add142, %for.end ] %shr171 = lshr i64 %bits.0, 16 %conv172 = trunc i64 %shr171 to i8 %shr175 = lshr i64 %bits.0, 8 @@ -231,8 +232,8 @@ if.end208: ; preds = %if.then204 call void %md_transform.0(ptr noundef nonnull %md_state, ptr noundef nonnull %first_block) #6, !callees !6 %div218 = udiv i64 %k.0, %md_block_size.0 %sub219 = add nsw i64 %div218, -1 - %cmp220186 = icmp ugt i64 %sub219, 1 - br i1 %cmp220186, label %for.body222.lr.ph, label %if.end250 + %cmp220185 = icmp ugt i64 %sub219, 1 + br i1 %cmp220185, label %for.body222.lr.ph, label %if.end250 for.body222.lr.ph: ; preds = %if.end208 %idx.neg = sub i64 0, %sub209 @@ -240,13 +241,13 @@ for.body222.lr.ph: ; preds = %if.end208 br label %for.body222 for.body222: ; preds = %for.body222.lr.ph, %for.body222 - %i.1187 = phi i64 [ 1, %for.body222.lr.ph ], [ %inc228, %for.body222 ] - %mul224 = mul i64 %i.1187, %md_block_size.0 + %i.1186 = phi i64 [ 1, %for.body222.lr.ph ], [ %inc228, %for.body222 ] + %mul224 = mul i64 %i.1186, %md_block_size.0 %gep = getelementptr i8, ptr %invariant.gep, i64 %mul224 call void %md_transform.0(ptr noundef nonnull %md_state, ptr noundef %gep) #6, !callees !6 - %inc228 = add nuw i64 %i.1187, 1 - %exitcond200.not = icmp eq i64 %inc228, %sub219 - br i1 %exitcond200.not, label %if.end250, label %for.body222, !llvm.loop !7 + %inc228 = add nuw i64 %i.1186, 1 + %exitcond199.not = icmp eq i64 %inc228, %sub219 + br i1 %exitcond199.not, label %if.end250, label %for.body222, !llvm.loop !7 if.else230: ; preds = %if.then202 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(13) %first_block, ptr noundef nonnull align 1 dereferenceable(13) %header, i64 13, i1 false) @@ -255,24 +256,24 @@ if.else230: ; preds = %if.then202 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %add.ptr233, ptr noundef nonnull align 1 dereferenceable(1) %data, i64 %sub234, i1 false) call void %md_transform.0(ptr noundef nonnull %md_state, ptr noundef nonnull %first_block) #6, !callees !6 %div238 = udiv i64 %k.0, %md_block_size.0 - %invariant.gep188 = getelementptr i8, ptr %data, i64 -13 - %cmp239190 = icmp ugt i64 %div238, 1 - br i1 %cmp239190, label %for.body241, label %if.end250 + %invariant.gep187 = getelementptr i8, ptr %data, i64 -13 + %cmp239189 = icmp ugt i64 %div238, 1 + br i1 %cmp239189, label %for.body241, label %if.end250 for.body241: ; preds = %if.else230, %for.body241 - %i.2191 = phi i64 [ %inc247, %for.body241 ], [ 1, %if.else230 ] - %mul243 = mul i64 %i.2191, %md_block_size.0 - %gep189 = getelementptr i8, ptr %invariant.gep188, i64 %mul243 - call void %md_transform.0(ptr noundef nonnull %md_state, ptr noundef nonnull %gep189) #6, !callees !6 - %inc247 = add nuw nsw i64 %i.2191, 1 - %exitcond201.not = icmp eq i64 %inc247, %div238 - br i1 %exitcond201.not, label %if.end250, label %for.body241, !llvm.loop !8 + %i.2190 = phi i64 [ %inc247, %for.body241 ], [ 1, %if.else230 ] + %mul243 = mul i64 %i.2190, %md_block_size.0 + %gep188 = getelementptr i8, ptr %invariant.gep187, i64 %mul243 + call void %md_transform.0(ptr noundef nonnull %md_state, ptr noundef nonnull %gep188) #6, !callees !6 + %inc247 = add nuw nsw i64 %i.2190, 1 + %exitcond200.not = icmp eq i64 %inc247, %div238 + br i1 %exitcond200.not, label %if.end250, label %for.body241, !llvm.loop !8 if.end250: ; preds = %for.body222, %for.body241, %if.end208, %if.else230, %if.end199 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %mac_out, i8 0, i64 64, i1 false) %add253 = add nsw i64 %num_starting_blocks.0, %cond - %cmp254.not195 = icmp ugt i64 %num_starting_blocks.0, %add253 - br i1 %cmp254.not195, label %for.end332, label %for.body256.lr.ph + %cmp254.not194 = icmp ugt i64 %num_starting_blocks.0, %add253 + br i1 %cmp254.not194, label %for.end332, label %for.body256.lr.ph for.body256.lr.ph: ; preds = %if.end250 %add282 = add nuw nsw i64 %rem, 1 @@ -280,46 +281,46 @@ for.body256.lr.ph: ; preds = %if.end250 br label %for.body256 for.body256: ; preds = %for.body256.lr.ph, %for.inc330 - %i.3197 = phi i64 [ %num_starting_blocks.0, %for.body256.lr.ph ], [ %inc331, %for.inc330 ] - %k.1196 = phi i64 [ %k.0, %for.body256.lr.ph ], [ %inc276, %for.inc330 ] - %xor.i.i = xor i64 %i.3197, %div125 + %i.3196 = phi i64 [ %num_starting_blocks.0, %for.body256.lr.ph ], [ %inc331, %for.inc330 ] + %k.1195 = phi i64 [ %k.0, %for.body256.lr.ph ], [ %inc276, %for.inc330 ] + %xor.i.i = xor i64 %i.3196, %div125 %not.i.i.i = xor i64 %xor.i.i, -1 %sub.i.i.i = add i64 %xor.i.i, -1 %and.i.i.i = and i64 %sub.i.i.i, %not.i.i.i %shr.neg.i.i.i.i = ashr i64 %and.i.i.i, 63 %conv.i = trunc nsw i64 %shr.neg.i.i.i.i to i8 - %xor.i.i160 = xor i64 %i.3197, %div127 - %not.i.i.i161 = xor i64 %xor.i.i160, -1 - %sub.i.i.i162 = add i64 %xor.i.i160, -1 - %and.i.i.i163 = and i64 %sub.i.i.i162, %not.i.i.i161 - %shr.neg.i.i.i.i164 = ashr i64 %and.i.i.i163, 63 - %conv.i165 = trunc nsw i64 %shr.neg.i.i.i.i164 to i8 + %xor.i.i159 = xor i64 %i.3196, %div127 + %not.i.i.i160 = xor i64 %xor.i.i159, -1 + %sub.i.i.i161 = add i64 %xor.i.i159, -1 + %and.i.i.i162 = and i64 %sub.i.i.i161, %not.i.i.i160 + %shr.neg.i.i.i.i163 = ashr i64 %and.i.i.i162, 63 + %conv.i164 = trunc nsw i64 %shr.neg.i.i.i.i163 to i8 %4 = trunc nsw i64 %shr.neg.i.i.i.i to i32 %5 = and i32 %4, 255 %6 = xor i8 %conv.i, -1 - %not293 = xor i8 %conv.i165, -1 + %not293 = xor i8 %conv.i164, -1 %or = or i8 %conv.i, %not293 - %7 = trunc nsw i64 %shr.neg.i.i.i.i164 to i32 - %conv.i176 = and i32 %7, 255 - %not.i.i179 = xor i32 %conv.i176, -1 + %7 = trunc nsw i64 %shr.neg.i.i.i.i163 to i32 + %conv.i175 = and i32 %7, 255 + %not.i.i178 = xor i32 %conv.i175, -1 br label %for.body262 for.body262: ; preds = %for.body256, %if.end306 - %j.0193 = phi i64 [ 0, %for.body256 ], [ %inc309, %if.end306 ] - %k.2192 = phi i64 [ %k.1196, %for.body256 ], [ %inc276, %if.end306 ] - %cmp263 = icmp ult i64 %k.2192, %header_length.0 + %j.0192 = phi i64 [ 0, %for.body256 ], [ %inc309, %if.end306 ] + %k.2191 = phi i64 [ %k.1195, %for.body256 ], [ %inc276, %if.end306 ] + %cmp263 = icmp ult i64 %k.2191, %header_length.0 br i1 %cmp263, label %if.then265, label %if.else267 if.then265: ; preds = %for.body262 - %arrayidx266 = getelementptr inbounds i8, ptr %header, i64 %k.2192 + %arrayidx266 = getelementptr inbounds i8, ptr %header, i64 %k.2191 br label %if.end275.sink.split if.else267: ; preds = %for.body262 - %cmp269 = icmp ult i64 %k.2192, %add116 + %cmp269 = icmp ult i64 %k.2191, %add116 br i1 %cmp269, label %if.then271, label %if.end275 if.then271: ; preds = %if.else267 - %sub272 = sub i64 %k.2192, %header_length.0 + %sub272 = sub i64 %k.2191, %header_length.0 %arrayidx273 = getelementptr inbounds i8, ptr %data, i64 %sub272 br label %if.end275.sink.split @@ -330,49 +331,49 @@ if.end275.sink.split: ; preds = %if.then265, %if.the if.end275: ; preds = %if.end275.sink.split, %if.else267 %b.0 = phi i8 [ 0, %if.else267 ], [ %8, %if.end275.sink.split ] - %inc276 = add i64 %k.2192, 1 - %sub.i.i.i166 = sub nsw i64 %j.0193, %rem - %or.i.i.i = or i64 %sub.i.i.i166, %rem + %inc276 = add i64 %k.2191, 1 + %sub.i.i.i165 = sub nsw i64 %j.0192, %rem + %or.i.i.i = or i64 %sub.i.i.i165, %rem %isnotneg.i.i = icmp sgt i64 %or.i.i.i, -1 - %sub.i.i.i169 = sub nsw i64 %j.0193, %add282 - %or.i.i.i171 = or i64 %sub.i.i.i169, %add282 - %isnotneg.i.i173 = icmp sgt i64 %or.i.i.i171, -1 - %conv.i175 = select i1 %isnotneg.i.i, i32 %5, i32 0 + %sub.i.i.i168 = sub nsw i64 %j.0192, %add282 + %or.i.i.i170 = or i64 %sub.i.i.i168, %add282 + %isnotneg.i.i172 = icmp sgt i64 %or.i.i.i170, -1 + %conv.i174 = select i1 %isnotneg.i.i, i32 %5, i32 0 %conv2.i = zext i8 %b.0 to i32 - %9 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %conv.i175) #7, !srcloc !9 + %9 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %conv.i174) #7, !srcloc !9 %and.i.i = and i32 %9, 128 - %not.i.i = xor i32 %conv.i175, -1 + %not.i.i = xor i32 %conv.i174, -1 %10 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %not.i.i) #7, !srcloc !9 %and2.i.i = and i32 %10, %conv2.i %or.i.i = or i32 %and2.i.i, %and.i.i %conv3.i = trunc nuw i32 %or.i.i to i8 - %not = select i1 %isnotneg.i.i173, i8 %6, i8 -1 + %not = select i1 %isnotneg.i.i172, i8 %6, i8 -1 %and290 = and i8 %not, %or %and296 = and i8 %and290, %conv3.i - %cmp299.not = icmp ult i64 %j.0193, %sub298 + %cmp299.not = icmp ult i64 %j.0192, %sub298 br i1 %cmp299.not, label %if.end306, label %if.then301 if.then301: ; preds = %if.end275 - %sub303 = sub nuw nsw i64 %j.0193, %sub298 + %sub303 = sub nuw nsw i64 %j.0192, %sub298 %arrayidx304 = getelementptr inbounds [16 x i8], ptr %length_bytes, i64 0, i64 %sub303 %11 = load i8, ptr %arrayidx304, align 1 %conv1.i = zext i8 %11 to i32 - %conv2.i177 = zext i8 %and296 to i32 - %12 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %conv.i176) #7, !srcloc !9 - %and.i.i178 = and i32 %12, %conv1.i - %13 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %not.i.i179) #7, !srcloc !9 - %and2.i.i180 = and i32 %13, %conv2.i177 - %or.i.i181 = or i32 %and2.i.i180, %and.i.i178 - %conv3.i182 = trunc nuw i32 %or.i.i181 to i8 + %conv2.i176 = zext i8 %and296 to i32 + %12 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %conv.i175) #7, !srcloc !9 + %and.i.i177 = and i32 %12, %conv1.i + %13 = call i32 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %not.i.i178) #7, !srcloc !9 + %and2.i.i179 = and i32 %13, %conv2.i176 + %or.i.i180 = or i32 %and2.i.i179, %and.i.i177 + %conv3.i181 = trunc nuw i32 %or.i.i180 to i8 br label %if.end306 if.end306: ; preds = %if.then301, %if.end275 - %b.1 = phi i8 [ %conv3.i182, %if.then301 ], [ %and296, %if.end275 ] - %arrayidx307 = getelementptr inbounds [128 x i8], ptr %block, i64 0, i64 %j.0193 + %b.1 = phi i8 [ %conv3.i181, %if.then301 ], [ %and296, %if.end275 ] + %arrayidx307 = getelementptr inbounds [128 x i8], ptr %block, i64 0, i64 %j.0192 store i8 %b.1, ptr %arrayidx307, align 1 - %inc309 = add nuw nsw i64 %j.0193, 1 - %exitcond202.not = icmp eq i64 %inc309, %md_block_size.0 - br i1 %exitcond202.not, label %for.end310, label %for.body262, !llvm.loop !10 + %inc309 = add nuw nsw i64 %j.0192, 1 + %exitcond201.not = icmp eq i64 %inc309, %md_block_size.0 + br i1 %exitcond201.not, label %for.end310, label %for.body262, !llvm.loop !10 for.end310: ; preds = %if.end306 call void %md_transform.0(ptr noundef nonnull %md_state, ptr noundef nonnull %block) #6, !callees !6 @@ -380,20 +381,20 @@ for.end310: ; preds = %if.end306 br label %for.body318 for.body318: ; preds = %for.end310, %for.body318 - %j.1194 = phi i64 [ 0, %for.end310 ], [ %inc328, %for.body318 ] - %arrayidx319 = getelementptr inbounds [128 x i8], ptr %block, i64 0, i64 %j.1194 + %j.1193 = phi i64 [ 0, %for.end310 ], [ %inc328, %for.body318 ] + %arrayidx319 = getelementptr inbounds [128 x i8], ptr %block, i64 0, i64 %j.1193 %14 = load i8, ptr %arrayidx319, align 1 - %and322156 = and i8 %14, %conv.i165 - %arrayidx323 = getelementptr inbounds [64 x i8], ptr %mac_out, i64 0, i64 %j.1194 + %and322155 = and i8 %14, %conv.i164 + %arrayidx323 = getelementptr inbounds [64 x i8], ptr %mac_out, i64 0, i64 %j.1193 %15 = load i8, ptr %arrayidx323, align 1 - %or325157 = or i8 %15, %and322156 - store i8 %or325157, ptr %arrayidx323, align 1 - %inc328 = add nuw nsw i64 %j.1194, 1 - %exitcond203.not = icmp eq i64 %inc328, %md_size.0 - br i1 %exitcond203.not, label %for.inc330, label %for.body318, !llvm.loop !12 + %or325156 = or i8 %15, %and322155 + store i8 %or325156, ptr %arrayidx323, align 1 + %inc328 = add nuw nsw i64 %j.1193, 1 + %exitcond202.not = icmp eq i64 %inc328, %md_size.0 + br i1 %exitcond202.not, label %for.inc330, label %for.body318, !llvm.loop !12 for.inc330: ; preds = %for.body318 - %inc331 = add i64 %i.3197, 1 + %inc331 = add i64 %i.3196, 1 %cmp254.not = icmp ugt i64 %inc331, %add253 br i1 %cmp254.not, label %for.end332, label %for.body256, !llvm.loop !13 @@ -427,14 +428,14 @@ lor.lhs.false354: ; preds = %lor.lhs.false349 br i1 %cmp357, label %err, label %if.end384 for.body365: ; preds = %if.end342, %for.body365 - %i.4198 = phi i64 [ %inc371, %for.body365 ], [ 0, %if.end342 ] - %arrayidx366 = getelementptr inbounds [128 x i8], ptr %hmac_pad, i64 0, i64 %i.4198 + %i.4197 = phi i64 [ %inc371, %for.body365 ], [ 0, %if.end342 ] + %arrayidx366 = getelementptr inbounds [128 x i8], ptr %hmac_pad, i64 0, i64 %i.4197 %16 = load i8, ptr %arrayidx366, align 1 %17 = xor i8 %16, 106 store i8 %17, ptr %arrayidx366, align 1 - %inc371 = add nuw nsw i64 %i.4198, 1 - %exitcond204.not = icmp eq i64 %inc371, %md_block_size.0 - br i1 %exitcond204.not, label %for.end372, label %for.body365, !llvm.loop !14 + %inc371 = add nuw nsw i64 %i.4197, 1 + %exitcond203.not = icmp eq i64 %inc371, %md_block_size.0 + br i1 %exitcond203.not, label %for.end372, label %for.body365, !llvm.loop !14 for.end372: ; preds = %for.body365 %call374 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call333, ptr noundef nonnull %hmac_pad, i64 noundef %md_block_size.0) #6 diff --git a/bench/openssl/optimized/libssl-lib-s3_enc.ll b/bench/openssl/optimized/libssl-lib-s3_enc.ll index e188523d662..ded69401ac1 100644 --- a/bench/openssl/optimized/libssl-lib-s3_enc.ll +++ b/bench/openssl/optimized/libssl-lib-s3_enc.ll @@ -54,10 +54,11 @@ if.end15: ; preds = %if.end if.then25: ; preds = %if.end15, %if.end15 %add = shl nuw nsw i64 %conv16, 1 - %add43 = add nsw i64 %conv18, %conv16 - %add28 = shl nsw i64 %add43, 1 - %add2844 = add nsw i64 %add43, %conv20 - %add31 = shl nsw i64 %add2844, 1 + %add27 = shl nsw i64 %conv18, 1 + %add28 = add nsw i64 %add27, %add + %4 = add nsw i64 %conv18, %conv20 + %5 = shl nsw i64 %4, 1 + %add31 = add nsw i64 %5, %add br label %if.end40 if.else: ; preds = %if.end15 @@ -75,8 +76,8 @@ if.end40: ; preds = %if.else, %if.then25 %add.pn = phi i64 [ %add, %if.then25 ], [ %add34, %if.else ] %mac_secret.0 = phi ptr [ %3, %if.then25 ], [ %arrayidx32, %if.else ] %key_block_length = getelementptr inbounds i8, ptr %s, i64 744 - %4 = load i64, ptr %key_block_length, align 8 - %cmp43 = icmp ugt i64 %n.0, %4 + %6 = load i64, ptr %key_block_length, align 8 + %cmp43 = icmp ugt i64 %n.0, %6 br i1 %cmp43, label %err.sink.split, label %if.end46 if.end46: ; preds = %if.end40 diff --git a/bench/openssl/optimized/libssl-lib-t1_enc.ll b/bench/openssl/optimized/libssl-lib-t1_enc.ll index 68f8672119e..e28817be55b 100644 --- a/bench/openssl/optimized/libssl-lib-t1_enc.ll +++ b/bench/openssl/optimized/libssl-lib-t1_enc.ll @@ -54,8 +54,8 @@ tls_iv_length_within_key_block.exit: ; preds = %if.else.i br i1 %cmp, label %err.sink.split, label %if.end if.end: ; preds = %if.else.i, %entry, %tls_iv_length_within_key_block.exit - %retval.0.i69 = phi i32 [ %call5.i, %tls_iv_length_within_key_block.exit ], [ 4, %entry ], [ 4, %if.else.i ] - %conv13 = zext nneg i32 %retval.0.i69 to i64 + %retval.0.i67 = phi i32 [ %call5.i, %tls_iv_length_within_key_block.exit ], [ 4, %entry ], [ 4, %if.else.i ] + %conv13 = zext nneg i32 %retval.0.i67 to i64 switch i32 %which, label %if.else [ i32 33, label %if.then18 i32 18, label %if.then18 @@ -63,10 +63,11 @@ if.end: ; preds = %if.else.i, %entry, if.then18: ; preds = %if.end, %if.end %add = shl i64 %5, 1 - %add64 = add i64 %5, %conv - %add21 = shl i64 %add64, 1 - %add2165 = add i64 %add64, %conv13 - %add24 = shl i64 %add2165, 1 + %add20 = shl nsw i64 %conv, 1 + %add21 = add i64 %add20, %add + %6 = add nsw i64 %conv, %conv13 + %7 = shl nsw i64 %6, 1 + %add24 = add i64 %7, %add br label %if.end33 if.else: ; preds = %if.end @@ -86,8 +87,8 @@ if.end33: ; preds = %if.else, %if.then18 %key.0 = getelementptr inbounds i8, ptr %4, i64 %add.pn %iv.0 = getelementptr inbounds i8, ptr %4, i64 %add21.pn %key_block_length = getelementptr inbounds i8, ptr %s, i64 744 - %6 = load i64, ptr %key_block_length, align 8 - %cmp36 = icmp ugt i64 %n.0, %6 + %8 = load i64, ptr %key_block_length, align 8 + %cmp36 = icmp ugt i64 %n.0, %8 br i1 %cmp36, label %err.sink.split, label %if.end39 if.end39: ; preds = %if.end33 @@ -99,10 +100,10 @@ if.end39: ; preds = %if.end33 sw.bb41: ; preds = %if.end39 %new_cipher = getelementptr inbounds i8, ptr %s, i64 696 - %7 = load ptr, ptr %new_cipher, align 8 - %algorithm_enc = getelementptr inbounds i8, ptr %7, i64 36 - %8 = load i32, ptr %algorithm_enc, align 4 - %and = and i32 %8, 196608 + %9 = load ptr, ptr %new_cipher, align 8 + %algorithm_enc = getelementptr inbounds i8, ptr %9, i64 36 + %10 = load i32, ptr %algorithm_enc, align 4 + %and = and i32 %10, 196608 %cmp44.not = icmp eq i32 %and, 0 %. = select i1 %cmp44.not, i64 16, i64 8 br label %sw.epilog @@ -113,38 +114,38 @@ sw.default: ; preds = %if.end39 br i1 %tobool.not, label %if.else51, label %sw.epilog if.else51: ; preds = %sw.default - %9 = load i64, ptr %new_mac_secret_size, align 8 + %11 = load i64, ptr %new_mac_secret_size, align 8 br label %sw.epilog sw.epilog: ; preds = %sw.default, %sw.bb41, %if.end39, %if.else51 - %taglen.0 = phi i64 [ %9, %if.else51 ], [ 16, %if.end39 ], [ %., %sw.bb41 ], [ 16, %sw.default ] + %taglen.0 = phi i64 [ %11, %if.else51 ], [ 16, %if.end39 ], [ %., %sw.bb41 ], [ 16, %sw.default ] %and56 = and i32 %which, 1 %tobool57.not = icmp eq i32 %and56, 0 %use_etm93 = getelementptr inbounds i8, ptr %s, i64 2676 - %10 = load i32, ptr %use_etm93, align 4 - %tobool94.not = icmp eq i32 %10, 0 - %11 = load i64, ptr %s3, align 8 + %12 = load i32, ptr %use_etm93, align 4 + %tobool94.not = icmp eq i32 %12, 0 + %13 = load i64, ptr %s3, align 8 %new_cipher106 = getelementptr inbounds i8, ptr %s, i64 696 %mac_flags114 = getelementptr inbounds i8, ptr %s, i64 1272 %mac_flags127 = getelementptr inbounds i8, ptr %s, i64 1272 br i1 %tobool57.not, label %if.else91, label %if.then58 if.then58: ; preds = %sw.epilog - %and65 = and i64 %11, -257 + %and65 = and i64 %13, -257 %masksel = select i1 %tobool94.not, i64 0, i64 256 - %storemerge66 = or disjoint i64 %and65, %masksel - store i64 %storemerge66, ptr %s3, align 8 - %12 = load ptr, ptr %new_cipher106, align 8 - %algorithm2 = getelementptr inbounds i8, ptr %12, i64 64 - %13 = load i32, ptr %algorithm2, align 8 - %14 = load i32, ptr %mac_flags114, align 8 - %and76 = and i32 %14, -2 - %and70 = lshr i32 %13, 16 + %storemerge64 = or disjoint i64 %and65, %masksel + store i64 %storemerge64, ptr %s3, align 8 + %14 = load ptr, ptr %new_cipher106, align 8 + %algorithm2 = getelementptr inbounds i8, ptr %14, i64 64 + %15 = load i32, ptr %algorithm2, align 8 + %16 = load i32, ptr %mac_flags114, align 8 + %and76 = and i32 %16, -2 + %and70 = lshr i32 %15, 16 %and70.lobit = and i32 %and70, 1 %and76.sink = or disjoint i32 %and76, %and70.lobit store i32 %and76.sink, ptr %mac_flags114, align 8 - %15 = load i32, ptr %algorithm2, align 8 - %and82 = and i32 %15, 131072 + %17 = load i32, ptr %algorithm2, align 8 + %and82 = and i32 %17, 131072 %tobool83.not = icmp eq i32 %and82, 0 br i1 %tobool83.not, label %if.else87, label %if.then84 @@ -157,21 +158,21 @@ if.else87: ; preds = %if.then58 br label %if.end130 if.else91: ; preds = %sw.epilog - %and102 = and i64 %11, -1025 - %masksel71 = select i1 %tobool94.not, i64 0, i64 1024 - %storemerge = or disjoint i64 %and102, %masksel71 + %and102 = and i64 %13, -1025 + %masksel69 = select i1 %tobool94.not, i64 0, i64 1024 + %storemerge = or disjoint i64 %and102, %masksel69 store i64 %storemerge, ptr %s3, align 8 - %16 = load ptr, ptr %new_cipher106, align 8 - %algorithm2107 = getelementptr inbounds i8, ptr %16, i64 64 - %17 = load i32, ptr %algorithm2107, align 8 - %18 = load i32, ptr %mac_flags114, align 8 - %and115 = and i32 %18, -3 - %and108 = lshr i32 %17, 15 - %masksel72 = and i32 %and108, 2 - %and115.sink = or disjoint i32 %and115, %masksel72 - store i32 %and115.sink, ptr %mac_flags114, align 8 + %18 = load ptr, ptr %new_cipher106, align 8 + %algorithm2107 = getelementptr inbounds i8, ptr %18, i64 64 %19 = load i32, ptr %algorithm2107, align 8 - %and121 = and i32 %19, 131072 + %20 = load i32, ptr %mac_flags114, align 8 + %and115 = and i32 %20, -3 + %and108 = lshr i32 %19, 15 + %masksel70 = and i32 %and108, 2 + %and115.sink = or disjoint i32 %and115, %masksel70 + store i32 %and115.sink, ptr %mac_flags114, align 8 + %21 = load i32, ptr %algorithm2107, align 8 + %and121 = and i32 %21, 131072 %tobool122.not = icmp eq i32 %and121, 0 br i1 %tobool122.not, label %if.else126, label %if.then123 @@ -188,8 +189,8 @@ if.end130: ; preds = %if.then123, %if.els %direction.0 = phi i32 [ 1, %if.then123 ], [ 1, %if.else126 ], [ 0, %if.then84 ], [ 0, %if.else87 ] store i32 %or125.sink, ptr %mac_flags127, align 8 %version = getelementptr inbounds i8, ptr %s, i64 64 - %20 = load i32, ptr %version, align 8 - %call131 = tail call i32 @ssl_set_new_record_layer(ptr noundef nonnull %s, i32 noundef %20, i32 noundef %direction.0, i32 noundef 3, ptr noundef null, i64 noundef 0, ptr noundef %key.0, i64 noundef %conv, ptr noundef %iv.0, i64 noundef %conv13, ptr noundef %mac_secret.0, i64 noundef %5, ptr noundef %0, i64 noundef %taglen.0, i32 noundef %2, ptr noundef %1, ptr noundef %3, ptr noundef null) #5 + %22 = load i32, ptr %version, align 8 + %call131 = tail call i32 @ssl_set_new_record_layer(ptr noundef nonnull %s, i32 noundef %22, i32 noundef %direction.0, i32 noundef 3, ptr noundef null, i64 noundef 0, ptr noundef %key.0, i64 noundef %conv, ptr noundef %iv.0, i64 noundef %conv13, ptr noundef %mac_secret.0, i64 noundef %5, ptr noundef %0, i64 noundef %taglen.0, i32 noundef %2, ptr noundef %1, ptr noundef %3, ptr noundef null) #5 %tobool132.not = icmp eq i32 %call131, 0 br i1 %tobool132.not, label %err, label %return diff --git a/bench/postgres/optimized/clauses.ll b/bench/postgres/optimized/clauses.ll index a5661ca5783..107989aeb48 100644 --- a/bench/postgres/optimized/clauses.ll +++ b/bench/postgres/optimized/clauses.ll @@ -2452,7 +2452,7 @@ common.ret1118: ; preds = %.thread741, %976, % %230 = getelementptr inbounds i8, ptr %226, i64 32 %231 = load i8, ptr %230, align 8 %232 = or i8 %231, %.0606852869 - %233 = and i8 %.0608851870, %231 + %233 = and i8 %231, %.0608851870 %indvars.iv.next918 = add nuw nsw i64 %indvars.iv917, 1 %exitcond920.not = icmp eq i64 %indvars.iv.next918, %wide.trip.count919 br i1 %exitcond920.not, label %._crit_edge855, label %224 diff --git a/bench/proxygen/optimized/HeaderTable.cpp.ll b/bench/proxygen/optimized/HeaderTable.cpp.ll index bcfca1642ab..46d898f211f 100644 --- a/bench/proxygen/optimized/HeaderTable.cpp.ll +++ b/bench/proxygen/optimized/HeaderTable.cpp.ll @@ -1843,22 +1843,24 @@ _ZNSt6vectorIN8proxygen11HPACKHeaderESaIS1_EE6resizeEm.exit: ; preds = %if.then. define void @_ZN8proxygen11HeaderTable18updateResizedTableEjjj(ptr nocapture noundef nonnull readonly align 8 dereferenceable(80) %this, i32 noundef %oldTail, i32 noundef %oldLength, i32 noundef %newLength) unnamed_addr #5 align 2 { entry: %conv = zext i32 %oldTail to i64 + %add.ptr.i.idx = shl nuw nsw i64 %conv, 5 %conv9 = zext i32 %oldLength to i64 - %0 = sub nsw i64 %conv9, %conv - %cmp4.i.i.i.i.i = icmp sgt i64 %0, 0 + %add.ptr.i1.idx = shl nuw nsw i64 %conv9, 5 + %gepdiff = sub nsw i64 %add.ptr.i1.idx, %add.ptr.i.idx + %sub.ptr.div.i.i.i.i.i = ashr exact i64 %gepdiff, 5 + %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 br i1 %cmp4.i.i.i.i.i, label %for.body.i.i.i.i.i.preheader, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN8proxygen11HPACKHeaderESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit for.body.i.i.i.i.i.preheader: ; preds = %entry %table_ = getelementptr inbounds i8, ptr %this, i64 16 - %1 = load ptr, ptr %table_, align 8 + %0 = load ptr, ptr %table_, align 8 %conv17 = zext i32 %newLength to i64 - %add.ptr.i2 = getelementptr inbounds %"class.proxygen::HPACKHeader", ptr %1, i64 %conv17 - %add.ptr.i1.idx = shl nuw nsw i64 %conv9, 5 - %add.ptr.i1 = getelementptr inbounds i8, ptr %1, i64 %add.ptr.i1.idx + %add.ptr.i2 = getelementptr inbounds %"class.proxygen::HPACKHeader", ptr %0, i64 %conv17 + %add.ptr.i1 = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i1.idx br label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.preheader, %for.body.i.i.i.i.i - %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %0, %for.body.i.i.i.i.i.preheader ] + %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %for.body.i.i.i.i.i.preheader ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %add.ptr.i2, %for.body.i.i.i.i.i.preheader ] %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %add.ptr.i1, %for.body.i.i.i.i.i.preheader ] %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -32 diff --git a/bench/qemu/optimized/block_parallels.c.ll b/bench/qemu/optimized/block_parallels.c.ll index bac47c7c54d..7ad07da064e 100644 --- a/bench/qemu/optimized/block_parallels.c.ll +++ b/bench/qemu/optimized/block_parallels.c.ll @@ -1039,8 +1039,8 @@ for.body: ; preds = %for.body.lr.ph, %fo %6 = load i32, ptr %arrayidx.i, align 4 %conv.i = zext i32 %6 to i64 %conv1.i = zext i32 %.val21 to i64 - %mul.i = mul nuw i64 %conv.i, %conv1.i - %shl = shl i64 %mul.i, 9 + %mul.i = shl nuw nsw i64 %conv1.i, 9 + %shl = mul i64 %mul.i, %conv.i %cmp20 = icmp eq i64 %shl, 0 br i1 %cmp20, label %for.inc, label %if.end23 @@ -1066,8 +1066,8 @@ if.end30: ; preds = %if.end23 %12 = load ptr, ptr %used_bmap, align 8 %.val22 = load i64, ptr %5, align 8 %.val23 = load i32, ptr %cluster_size, align 8 - %13 = sub i64 %mul.i, %.val22 - %sub.i = shl i64 %13, 9 + %shl.i = shl i64 %.val22, 9 + %sub.i = sub i64 %shl, %shl.i %conv.i27 = zext i32 %.val23 to i64 %div.i28 = sdiv i64 %sub.i, %conv.i27 %conv32 = and i64 %div.i28, 4294967295 @@ -1649,7 +1649,7 @@ for.body.lr.ph: ; preds = %for.cond.preheader br label %for.body for.body: ; preds = %for.body.lr.ph, %for.inc - %9 = phi i32 [ %6, %for.body.lr.ph ], [ %16, %for.inc ] + %9 = phi i32 [ %6, %for.body.lr.ph ], [ %15, %for.inc ] %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %for.inc ] %err.030 = phi i32 [ 0, %for.body.lr.ph ], [ %err.1, %for.inc ] %.val = load ptr, ptr %7, align 8 @@ -1658,9 +1658,9 @@ for.body: ; preds = %for.body.lr.ph, %fo %10 = load i32, ptr %arrayidx.i, align 4 %conv.i = zext i32 %10 to i64 %conv1.i = zext i32 %.val23 to i64 - %mul.i25 = mul nuw i64 %conv.i, %conv1.i - %shl.mask = and i64 %mul.i25, 36028797018963967 - %cmp25 = icmp eq i64 %shl.mask, 0 + %mul.i25 = shl nuw nsw i64 %conv1.i, 9 + %shl = mul i64 %mul.i25, %conv.i + %cmp25 = icmp eq i64 %shl, 0 br i1 %cmp25, label %for.inc, label %if.end28 if.end28: ; preds = %for.body @@ -1672,8 +1672,8 @@ if.end28: ; preds = %for.body %bs.val.val = load i64, ptr %13, align 8 %14 = getelementptr i8, ptr %bs.val, i64 144 %bs.val.val24 = load i32, ptr %14, align 8 - %15 = sub i64 %mul.i25, %bs.val.val - %sub.i.i = shl i64 %15, 9 + %shl.i.i = shl i64 %bs.val.val, 9 + %sub.i.i = sub i64 %shl, %shl.i.i %conv.i.i = zext i32 %bs.val.val24 to i64 %div.i.i = sdiv i64 %sub.i.i, %conv.i.i %conv1.i.i = trunc i64 %div.i.i to i32 @@ -1703,11 +1703,11 @@ mark_used.exit: ; preds = %if.end28, %if.end.i br label %for.inc for.inc: ; preds = %mark_used.exit, %for.body - %16 = phi i32 [ %9, %for.body ], [ %.pre, %mark_used.exit ] + %15 = phi i32 [ %9, %for.body ], [ %.pre, %mark_used.exit ] %err.1 = phi i32 [ %err.030, %for.body ], [ %spec.select, %mark_used.exit ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %17 = zext i32 %16 to i64 - %cmp22 = icmp ult i64 %indvars.iv.next, %17 + %16 = zext i32 %15 to i64 + %cmp22 = icmp ult i64 %indvars.iv.next, %16 br i1 %cmp22, label %for.body, label %return, !llvm.loop !14 return: ; preds = %for.inc, %for.cond.preheader, %if.end14, %if.end5, %if.end, %if.then @@ -2722,9 +2722,9 @@ for.body.us: ; preds = %for.body.lr.ph, %fo %11 = load i32, ptr %arrayidx.i.us, align 4 %conv.i66.us = zext i32 %11 to i64 %conv1.i67.us = zext i32 %.val60.us to i64 - %mul.i.us = mul nuw i64 %conv.i66.us, %conv1.i67.us - %shl.us.mask = and i64 %mul.i.us, 36028797018963967 - %cmp12.us = icmp eq i64 %shl.us.mask, 0 + %mul.i.us = shl nuw nsw i64 %conv1.i67.us, 9 + %shl.us = mul i64 %mul.i.us, %conv.i66.us + %cmp12.us = icmp eq i64 %shl.us, 0 br i1 %cmp12.us, label %for.inc.us, label %if.end15.us if.end15.us: ; preds = %for.body.us @@ -2733,8 +2733,8 @@ if.end15.us: ; preds = %for.body.us %bs.val63.val.us = load i64, ptr %12, align 8 %13 = getelementptr i8, ptr %bs.val63.us, i64 144 %bs.val63.val64.us = load i32, ptr %13, align 8 - %14 = sub i64 %mul.i.us, %bs.val63.val.us - %sub.i.i68.us = shl i64 %14, 9 + %shl.i.i.us = shl i64 %bs.val63.val.us, 9 + %sub.i.i68.us = sub i64 %shl.us, %shl.i.i.us %conv.i.i.us = zext i32 %bs.val63.val64.us to i64 %div.i.i.us = sdiv i64 %sub.i.i68.us, %conv.i.i.us %conv1.i.i.us = trunc i64 %div.i.i.us to i32 @@ -2754,20 +2754,20 @@ mark_used.exit.us: ; preds = %if.end.i.us br label %for.inc.us if.end24.us: ; preds = %if.end.i.us - %15 = load ptr, ptr @stderr, align 8 - %16 = trunc nuw i64 %indvars.iv162 to i32 - %call26.us = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %15, ptr noundef nonnull @.str.46, ptr noundef nonnull %cond, i32 noundef %16) #19 - %17 = load i32, ptr %res, align 8 - %inc27.us = add i32 %17, 1 + %14 = load ptr, ptr @stderr, align 8 + %15 = trunc nuw i64 %indvars.iv162 to i32 + %call26.us = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %14, ptr noundef nonnull @.str.46, ptr noundef nonnull %cond, i32 noundef %15) #19 + %16 = load i32, ptr %res, align 8 + %inc27.us = add i32 %16, 1 store i32 %inc27.us, ptr %res, align 8 br label %for.inc.us for.inc.us: ; preds = %if.end24.us, %mark_used.exit.us, %for.body.us %ret.1.us = phi i32 [ %ret.0143.us, %for.body.us ], [ -16, %if.end24.us ], [ 0, %mark_used.exit.us ] %indvars.iv.next163 = add nuw nsw i64 %indvars.iv162, 1 - %18 = load i32, ptr %bat_size, align 8 - %19 = zext i32 %18 to i64 - %cmp9.us = icmp ult i64 %indvars.iv.next163, %19 + %17 = load i32, ptr %bat_size, align 8 + %18 = zext i32 %17 to i64 + %cmp9.us = icmp ult i64 %indvars.iv.next163, %18 br i1 %cmp9.us, label %for.body.us, label %out_free, !llvm.loop !17 for.body: ; preds = %for.body.lr.ph, %for.inc @@ -2777,22 +2777,22 @@ for.body: ; preds = %for.body.lr.ph, %fo %.val = load ptr, ptr %7, align 8 %.val60 = load i32, ptr %8, align 4 %arrayidx.i = getelementptr i32, ptr %.val, i64 %indvars.iv - %20 = load i32, ptr %arrayidx.i, align 4 - %conv.i66 = zext i32 %20 to i64 + %19 = load i32, ptr %arrayidx.i, align 4 + %conv.i66 = zext i32 %19 to i64 %conv1.i67 = zext i32 %.val60 to i64 - %mul.i = mul nuw i64 %conv.i66, %conv1.i67 - %shl = shl i64 %mul.i, 9 + %mul.i = shl nuw nsw i64 %conv1.i67, 9 + %shl = mul i64 %mul.i, %conv.i66 %cmp12 = icmp eq i64 %shl, 0 br i1 %cmp12, label %for.inc, label %if.end15 if.end15: ; preds = %for.body %bs.val63 = load ptr, ptr %opaque, align 8 - %21 = getelementptr i8, ptr %bs.val63, i64 112 - %bs.val63.val = load i64, ptr %21, align 8 - %22 = getelementptr i8, ptr %bs.val63, i64 144 - %bs.val63.val64 = load i32, ptr %22, align 8 - %23 = sub i64 %mul.i, %bs.val63.val - %sub.i.i68 = shl i64 %23, 9 + %20 = getelementptr i8, ptr %bs.val63, i64 112 + %bs.val63.val = load i64, ptr %20, align 8 + %21 = getelementptr i8, ptr %bs.val63, i64 144 + %bs.val63.val64 = load i32, ptr %21, align 8 + %shl.i.i = shl i64 %bs.val63.val, 9 + %sub.i.i68 = sub i64 %shl, %shl.i.i %conv.i.i = zext i32 %bs.val63.val64 to i64 %div.i.i = sdiv i64 %sub.i.i68, %conv.i.i %conv1.i.i = trunc i64 %div.i.i to i32 @@ -2816,26 +2816,26 @@ if.else: ; preds = %if.end15, %if.end15 unreachable if.end24: ; preds = %if.end.i - %24 = load ptr, ptr @stderr, align 8 - %25 = trunc nuw i64 %indvars.iv to i32 - %call26 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %24, ptr noundef nonnull @.str.46, ptr noundef nonnull %cond, i32 noundef %25) #19 - %26 = load i32, ptr %res, align 8 - %inc27 = add i32 %26, 1 + %22 = load ptr, ptr @stderr, align 8 + %23 = trunc nuw i64 %indvars.iv to i32 + %call26 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %22, ptr noundef nonnull @.str.46, ptr noundef nonnull %cond, i32 noundef %23) #19 + %24 = load i32, ptr %res, align 8 + %inc27 = add i32 %24, 1 store i32 %inc27, ptr %res, align 8 - %27 = load ptr, ptr %7, align 8 - %arrayidx = getelementptr i32, ptr %27, i64 %indvars.iv - %28 = load i32, ptr %arrayidx, align 4 + %25 = load ptr, ptr %7, align 8 + %arrayidx = getelementptr i32, ptr %25, i64 %indvars.iv + %26 = load i32, ptr %arrayidx, align 4 store i32 0, ptr %arrayidx, align 4 - %29 = load ptr, ptr %bat_dirty_bmap.i, align 8 - %mul.i.i74 = shl i32 %25, 2 + %27 = load ptr, ptr %bat_dirty_bmap.i, align 8 + %mul.i.i74 = shl i32 %23, 2 %add.i.i = add i32 %mul.i.i74, 64 - %30 = load i32, ptr %bat_dirty_block.i, align 8 - %div.i75 = udiv i32 %add.i.i, %30 + %28 = load i32, ptr %bat_dirty_block.i, align 8 + %div.i75 = udiv i32 %add.i.i, %28 %conv.i76 = zext i32 %div.i75 to i64 - call void @bitmap_set(ptr noundef %29, i64 noundef %conv.i76, i64 noundef 1) #16 - %31 = load ptr, ptr %file, align 8 - %32 = load i32, ptr %3, align 8 - %conv33 = zext i32 %32 to i64 + call void @bitmap_set(ptr noundef %27, i64 noundef %conv.i76, i64 noundef 1) #16 + %29 = load ptr, ptr %file, align 8 + %30 = load i32, ptr %3, align 8 + %conv33 = zext i32 %30 to i64 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %qiov.i) store ptr %local_iov.i, ptr %qiov.i, align 8 store i32 1, ptr %niov.i, align 8 @@ -2843,26 +2843,26 @@ if.end24: ; preds = %if.end.i store ptr %call8, ptr %local_iov.i, align 8 store i64 %conv33, ptr %iov_len.i, align 8 call void @assert_bdrv_graph_readable() #16 - %call.i = call i32 @bdrv_co_preadv(ptr noundef %31, i64 noundef %shl, i64 noundef %conv33, ptr noundef nonnull %qiov.i, i32 noundef 0) #16 + %call.i = call i32 @bdrv_co_preadv(ptr noundef %29, i64 noundef %shl, i64 noundef %conv33, ptr noundef nonnull %qiov.i, i32 noundef 0) #16 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %qiov.i) %cmp35 = icmp slt i32 %call.i, 0 br i1 %cmp35, label %out_repair_bat, label %if.end39 if.end39: ; preds = %if.end24 - %33 = load i32, ptr %3, align 8 - %conv42 = zext i32 %33 to i64 + %31 = load i32, ptr %3, align 8 + %conv42 = zext i32 %31 to i64 %mul = mul nuw i64 %indvars.iv, %conv42 %shr = ashr i64 %mul, 9 - %34 = load i32, ptr %tracks, align 4 - %call43 = call i64 @allocate_clusters(ptr noundef nonnull %bs, i64 noundef %shr, i32 noundef %34, ptr noundef nonnull %n) + %32 = load i32, ptr %tracks, align 4 + %call43 = call i64 @allocate_clusters(ptr noundef nonnull %bs, i64 noundef %shr, i32 noundef %32, ptr noundef nonnull %n) %cmp44 = icmp slt i64 %call43, 0 br i1 %cmp44, label %out_repair_bat, label %if.end49 if.end49: ; preds = %if.end39 %shl50 = shl i64 %call43, 9 - %35 = load ptr, ptr %file, align 8 - %36 = load i32, ptr %3, align 8 - %conv53 = zext i32 %36 to i64 + %33 = load ptr, ptr %file, align 8 + %34 = load i32, ptr %3, align 8 + %conv53 = zext i32 %34 to i64 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %qiov.i77) store ptr %local_iov.i78, ptr %qiov.i77, align 8 store i32 1, ptr %niov.i79, align 8 @@ -2870,17 +2870,17 @@ if.end49: ; preds = %if.end39 store ptr %call8, ptr %local_iov.i78, align 8 store i64 %conv53, ptr %iov_len.i80, align 8 call void @assert_bdrv_graph_readable() #16 - %call.i81 = call i32 @bdrv_co_pwritev(ptr noundef %35, i64 noundef %shl50, i64 noundef %conv53, ptr noundef nonnull %qiov.i77, i32 noundef 0) #16 + %call.i81 = call i32 @bdrv_co_pwritev(ptr noundef %33, i64 noundef %shl50, i64 noundef %conv53, ptr noundef nonnull %qiov.i77, i32 noundef 0) #16 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %qiov.i77) %cmp55 = icmp slt i32 %call.i81, 0 br i1 %cmp55, label %out_repair_bat, label %if.end60 if.end60: ; preds = %if.end49 - %37 = load i32, ptr %3, align 8 - %conv62 = zext i32 %37 to i64 + %35 = load i32, ptr %3, align 8 + %conv62 = zext i32 %35 to i64 %add = add i64 %shl50, %conv62 - %38 = load i64, ptr %image_end_offset, align 8 - %cmp64 = icmp sgt i64 %add, %38 + %36 = load i64, ptr %image_end_offset, align 8 + %cmp64 = icmp sgt i64 %add, %36 br i1 %cmp64, label %if.then66, label %if.end71 if.then66: ; preds = %if.end60 @@ -2889,12 +2889,12 @@ if.then66: ; preds = %if.end60 if.end71: ; preds = %if.then66, %if.end60 %bs.val = load ptr, ptr %opaque, align 8 - %39 = getelementptr i8, ptr %bs.val, i64 112 - %bs.val.val = load i64, ptr %39, align 8 - %40 = getelementptr i8, ptr %bs.val, i64 144 - %bs.val.val65 = load i32, ptr %40, align 8 - %41 = sub i64 %call43, %bs.val.val - %sub.i.i83 = shl i64 %41, 9 + %37 = getelementptr i8, ptr %bs.val, i64 112 + %bs.val.val = load i64, ptr %37, align 8 + %38 = getelementptr i8, ptr %bs.val, i64 144 + %bs.val.val65 = load i32, ptr %38, align 8 + %shl.i.i82 = shl i64 %bs.val.val, 9 + %sub.i.i83 = sub i64 %shl50, %shl.i.i82 %conv.i.i84 = zext i32 %bs.val.val65 to i64 %div.i.i85 = sdiv i64 %sub.i.i83, %conv.i.i84 %conv1.i.i86 = trunc i64 %div.i.i85 to i32 @@ -2915,8 +2915,8 @@ if.end8.i95: ; preds = %if.end.i89 if.end78: ; preds = %if.end8.i95, %if.end71 %retval.0.i96.ph = phi i32 [ -7, %if.end71 ], [ 0, %if.end8.i95 ] - %42 = load i32, ptr %corruptions_fixed, align 4 - %inc79 = add i32 %42, 1 + %39 = load i32, ptr %corruptions_fixed, align 4 + %inc79 = add i32 %39, 1 store i32 %inc79, ptr %corruptions_fixed, align 4 br label %for.inc @@ -2924,9 +2924,9 @@ for.inc: ; preds = %mark_used.exit, %fo %ret.1 = phi i32 [ %ret.0143, %for.body ], [ %retval.0.i96.ph, %if.end78 ], [ 0, %mark_used.exit ] %fixed.1 = phi i1 [ %fixed.0144, %for.body ], [ true, %if.end78 ], [ %fixed.0144, %mark_used.exit ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %43 = load i32, ptr %bat_size, align 8 - %44 = zext i32 %43 to i64 - %cmp9 = icmp ult i64 %indvars.iv.next, %44 + %40 = load i32, ptr %bat_size, align 8 + %41 = zext i32 %40 to i64 + %cmp9 = icmp ult i64 %indvars.iv.next, %41 br i1 %cmp9, label %for.body, label %for.end, !llvm.loop !17 for.end: ; preds = %for.inc @@ -2935,23 +2935,23 @@ for.end: ; preds = %for.inc if.then82: ; preds = %for.end call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %local_err.i) %file.i = getelementptr inbounds i8, ptr %bs, i64 16840 - %45 = load ptr, ptr %file.i, align 8 - %46 = load ptr, ptr %45, align 8 - %call.i98 = call i64 @bdrv_co_getlength(ptr noundef %46) #16 + %42 = load ptr, ptr %file.i, align 8 + %43 = load ptr, ptr %42, align 8 + %call.i98 = call i64 @bdrv_co_getlength(ptr noundef %43) #16 %cmp.i99 = icmp slt i64 %call.i98, 0 br i1 %cmp.i99, label %if.then.i105, label %if.end.i100 if.then.i105: ; preds = %if.then82 %check_errors.i = getelementptr inbounds i8, ptr %res, i64 8 - %47 = load i32, ptr %check_errors.i, align 8 - %inc.i = add i32 %47, 1 + %44 = load i32, ptr %check_errors.i, align 8 + %inc.i = add i32 %44, 1 store i32 %inc.i, ptr %check_errors.i, align 8 %conv.i106 = trunc i64 %call.i98 to i32 br label %parallels_check_leak.exit if.end.i100: ; preds = %if.then82 - %48 = load i64, ptr %image_end_offset, align 8 - %cmp2.i = icmp sle i64 %call.i98, %48 + %45 = load i64, ptr %image_end_offset, align 8 + %cmp2.i = icmp sle i64 %call.i98, %45 %.pre.i = and i32 %fix, 1 %tobool20.not.i = icmp eq i32 %.pre.i, 0 %or.cond = or i1 %tobool20.not.i, %cmp2.i @@ -2959,17 +2959,17 @@ if.end.i100: ; preds = %if.then82 if.then21.i: ; preds = %if.end.i100 store ptr null, ptr %local_err.i, align 8 - %49 = load ptr, ptr %file.i, align 8 - %call24.i = call i32 @bdrv_co_truncate(ptr noundef %49, i64 noundef %48, i1 noundef zeroext true, i32 noundef 0, i32 noundef 0, ptr noundef nonnull %local_err.i) #16 + %46 = load ptr, ptr %file.i, align 8 + %call24.i = call i32 @bdrv_co_truncate(ptr noundef %46, i64 noundef %45, i1 noundef zeroext true, i32 noundef 0, i32 noundef 0, ptr noundef nonnull %local_err.i) #16 %cmp25.i = icmp slt i32 %call24.i, 0 br i1 %cmp25.i, label %if.then27.i, label %parallels_check_leak.exit if.then27.i: ; preds = %if.then21.i - %50 = load ptr, ptr %local_err.i, align 8 - call void @error_report_err(ptr noundef %50) #16 + %47 = load ptr, ptr %local_err.i, align 8 + call void @error_report_err(ptr noundef %47) #16 %check_errors28.i = getelementptr inbounds i8, ptr %res, i64 8 - %51 = load i32, ptr %check_errors28.i, align 8 - %inc29.i = add i32 %51, 1 + %48 = load i32, ptr %check_errors28.i, align 8 + %inc29.i = add i32 %48, 1 store i32 %inc29.i, ptr %check_errors28.i, align 8 br label %parallels_check_leak.exit @@ -2987,12 +2987,12 @@ out_free: ; preds = %for.inc.us, %bitmap out_repair_bat: ; preds = %if.end.i89, %if.end49, %if.end39, %if.end24 %ret.2 = phi i32 [ %call.i, %if.end24 ], [ %call.i, %if.end39 ], [ %call.i81, %if.end49 ], [ -16, %if.end.i89 ] %check_errors76 = getelementptr inbounds i8, ptr %res, i64 8 - %52 = load i32, ptr %check_errors76, align 8 - %inc77 = add i32 %52, 1 + %49 = load i32, ptr %check_errors76, align 8 + %inc77 = add i32 %49, 1 store i32 %inc77, ptr %check_errors76, align 8 - %53 = load ptr, ptr %7, align 8 - %arrayidx87 = getelementptr i32, ptr %53, i64 %indvars.iv - store i32 %28, ptr %arrayidx87, align 4 + %50 = load ptr, ptr %7, align 8 + %arrayidx87 = getelementptr i32, ptr %50, i64 %indvars.iv + store i32 %26, ptr %arrayidx87, align 4 br label %out_free return: ; preds = %entry, %out_free diff --git a/bench/qemu/optimized/hw_block_pflash_cfi01.c.ll b/bench/qemu/optimized/hw_block_pflash_cfi01.c.ll index 6efae94a755..c3873499214 100644 --- a/bench/qemu/optimized/hw_block_pflash_cfi01.c.ll +++ b/bench/qemu/optimized/hw_block_pflash_cfi01.c.ll @@ -650,7 +650,7 @@ declare void @error_propagate(ptr noundef, ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind sspstrong uwtable define internal noundef i32 @pflash_mem_read_with_attrs(ptr nocapture noundef %opaque, i64 noundef %addr, ptr nocapture noundef writeonly %value, i32 noundef %len, i32 %attrs.coerce) #0 { entry: - %_now.i.i150.i = alloca %struct.timeval, align 8 + %_now.i.i151.i = alloca %struct.timeval, align 8 %_now.i.i.i93.i = alloca %struct.timeval, align 8 %_now.i.i37.i.i = alloca %struct.timeval, align 8 %_now.i.i21.i.i = alloca %struct.timeval, align 8 @@ -751,17 +751,17 @@ sw.bb3.i: ; preds = %if.else, %if.else, if.then.i: ; preds = %sw.bb3.i %mul.i = shl nuw nsw i32 %conv5.i, 3 %mul14.i = shl i32 %len, 3 - %add187.i = shl nuw nsw i32 %conv5.i, 4 - %cmp15.not188.i = icmp sgt i32 %add187.i, %mul14.i - br i1 %cmp15.not188.i, label %if.end33.i, label %while.body.i + %add188.i = shl nuw nsw i32 %conv5.i, 4 + %cmp15.not189.i = icmp sgt i32 %add188.i, %mul14.i + br i1 %cmp15.not189.i, label %if.end33.i, label %while.body.i while.body.i: ; preds = %if.then.i, %while.body.i - %add191.i = phi i32 [ %add.i, %while.body.i ], [ %add187.i, %if.then.i ] - %shift.0190.i = phi i32 [ %add191.i, %while.body.i ], [ %mul.i, %if.then.i ] - %ret.1189.i = phi i32 [ %or.i, %while.body.i ], [ %conv4.i, %if.then.i ] - %shl.i = shl i32 %conv4.i, %shift.0190.i - %or.i = or i32 %shl.i, %ret.1189.i - %add.i = add i32 %add191.i, %mul.i + %add192.i = phi i32 [ %add.i, %while.body.i ], [ %add188.i, %if.then.i ] + %shift.0191.i = phi i32 [ %add192.i, %while.body.i ], [ %mul.i, %if.then.i ] + %ret.1190.i = phi i32 [ %or.i, %while.body.i ], [ %conv4.i, %if.then.i ] + %shl.i = shl i32 %conv4.i, %shift.0191.i + %or.i = or i32 %shl.i, %ret.1190.i + %add.i = add i32 %add192.i, %mul.i %cmp15.not.i = icmp sgt i32 %add.i, %mul14.i br i1 %cmp15.not.i, label %if.end33.i, label %while.body.i, !llvm.loop !5 @@ -823,8 +823,8 @@ sw.bb35.i: ; preds = %if.else br i1 %tobool37.not.i, label %if.then38.i, label %for.cond.preheader.i for.cond.preheader.i: ; preds = %sw.bb35.i - %cmp69183.i = icmp sgt i32 %len, 0 - br i1 %cmp69183.i, label %for.body.lr.ph.i, label %sw.epilog135.i + %cmp69184.i = icmp sgt i32 %len, 0 + br i1 %cmp69184.i, label %for.body.lr.ph.i, label %sw.epilog135.i for.body.lr.ph.i: ; preds = %for.cond.preheader.i %bank_width72.i = getelementptr inbounds i8, ptr %opaque, i64 840 @@ -835,7 +835,7 @@ for.body.lr.ph.i: ; preds = %for.cond.preheader. %ident0.i.i = getelementptr inbounds i8, ptr %opaque, i64 852 %tv_usec.i.i.i.i = getelementptr inbounds i8, ptr %_now.i.i.i.i, i64 8 %tv_usec.i.i50.i.i = getelementptr inbounds i8, ptr %_now.i.i37.i.i, i64 8 - %.pre196.i = load i8, ptr %bank_width72.i, align 8 + %.pre197.i = load i8, ptr %bank_width72.i, align 8 br label %for.body.i if.then38.i: ; preds = %sw.bb35.i @@ -899,13 +899,13 @@ sw.default66.i: ; preds = %if.end51.i br label %sw.epilog135.i for.body.i: ; preds = %deposit32.exit.i, %for.body.lr.ph.i - %28 = phi i8 [ %.pre196.i, %for.body.lr.ph.i ], [ %59, %deposit32.exit.i ] - %i.0185.i = phi i32 [ 0, %for.body.lr.ph.i ], [ %add84.i, %deposit32.exit.i ] - %ret.3184.i = phi i32 [ -1, %for.body.lr.ph.i ], [ %or.i.i, %deposit32.exit.i ] - %mul71.i = shl i32 %i.0185.i, 3 + %28 = phi i8 [ %.pre197.i, %for.body.lr.ph.i ], [ %59, %deposit32.exit.i ] + %i.0186.i = phi i32 [ 0, %for.body.lr.ph.i ], [ %add84.i, %deposit32.exit.i ] + %ret.3185.i = phi i32 [ -1, %for.body.lr.ph.i ], [ %or.i.i, %deposit32.exit.i ] + %mul71.i = shl i32 %i.0186.i, 3 %conv73.i = zext i8 %28 to i32 %mul74.i = shl nuw nsw i32 %conv73.i, 3 - %mul77.i = mul i32 %i.0185.i, %conv73.i + %mul77.i = mul i32 %i.0186.i, %conv73.i %conv78.i = sext i32 %mul77.i to i64 %add79.i = add i64 %addr, %conv78.i %29 = tail call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %conv73.i, i1 false) @@ -1075,9 +1075,9 @@ deposit32.exit.i.i: ; preds = %for.body.i.i %shl.i.i.i = shl i32 %shr.i.i.i, %mul.i.i %not.i.i.i = xor i32 %shl.i.i.i, -1 %and.i.i.i = and i32 %resp.253.i.i, %not.i.i.i - %shl57.i.i.i = and i32 %resp.253.i.i, %shr.i.i.i - %and6.i.i.i = shl i32 %shl57.i.i.i, %mul.i.i - %or.i.i.i = or i32 %and.i.i.i, %and6.i.i.i + %shl5.i.i.i = shl i32 %resp.253.i.i, %mul.i.i + %and6.i.i.i = and i32 %shl.i.i.i, %shl5.i.i.i + %or.i.i.i = or disjoint i32 %and.i.i.i, %and6.i.i.i %add29.i.i = add nuw nsw i32 %i.052.i.i, %conv13.i.i %cmp21.i.i = icmp ult i32 %add29.i.i, %conv20.i.i br i1 %cmp21.i.i, label %for.body.i.i, label %pflash_devid_query.exit.i, !llvm.loop !7 @@ -1086,11 +1086,11 @@ pflash_devid_query.exit.i: ; preds = %deposit32.exit.i.i, %retval.0.i.i = phi i32 [ 0, %trace_pflash_device_info.exit.i.i ], [ %resp.0.i.i, %sw.epilog.i.i ], [ %or.i.i.i, %deposit32.exit.i.i ] %cmp.i90.i = icmp slt i32 %mul71.i, 0 %cmp1.i.i = icmp eq i8 %28, 0 - %or.cond.not9.i.i = or i1 %cmp1.i.i, %cmp.i90.i + %or.cond.not8.i.i = or i1 %cmp1.i.i, %cmp.i90.i %sub.i91.i = sub nsw i32 32, %mul71.i %cmp3.not.i.i = icmp sgt i32 %mul74.i, %sub.i91.i - %or.cond8.i.i = select i1 %or.cond.not9.i.i, i1 true, i1 %cmp3.not.i.i - br i1 %or.cond8.i.i, label %if.else.i.i, label %deposit32.exit.i + %or.cond7.i.i = select i1 %or.cond.not8.i.i, i1 true, i1 %cmp3.not.i.i + br i1 %or.cond7.i.i, label %if.else.i.i, label %deposit32.exit.i if.else.i.i: ; preds = %pflash_devid_query.exit.i tail call void @__assert_fail(ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.35, i32 noundef 470, ptr noundef nonnull @__PRETTY_FUNCTION__.deposit32) #13 @@ -1101,13 +1101,13 @@ deposit32.exit.i: ; preds = %pflash_devid_query. %shr.i92.i = lshr i32 -1, %sub4.i.i %shl.i.i = shl i32 %shr.i92.i, %mul71.i %not.i.i = xor i32 %shl.i.i, -1 - %and.i.i = and i32 %ret.3184.i, %not.i.i - %shl57.i.i = and i32 %retval.0.i.i, %shr.i92.i - %and6.i.i = shl i32 %shl57.i.i, %mul71.i - %or.i.i = or i32 %and6.i.i, %and.i.i + %and.i.i = and i32 %ret.3185.i, %not.i.i + %shl5.i.i = shl i32 %retval.0.i.i, %mul71.i + %and6.i.i = and i32 %shl5.i.i, %shl.i.i + %or.i.i = or disjoint i32 %and6.i.i, %and.i.i %59 = load i8, ptr %bank_width72.i, align 8 %conv83.i = zext i8 %59 to i32 - %add84.i = add i32 %i.0185.i, %conv83.i + %add84.i = add i32 %i.0186.i, %conv83.i %cmp69.i = icmp slt i32 %add84.i, %len br i1 %cmp69.i, label %for.body.i, label %sw.epilog135.i, !llvm.loop !8 @@ -1118,15 +1118,15 @@ sw.bb86.i: ; preds = %if.else br i1 %tobool88.not.i, label %if.then89.i, label %for.cond114.preheader.i for.cond114.preheader.i: ; preds = %sw.bb86.i - %cmp115180.i = icmp sgt i32 %len, 0 - br i1 %cmp115180.i, label %for.body117.lr.ph.i, label %sw.epilog135.i + %cmp115181.i = icmp sgt i32 %len, 0 + br i1 %cmp115181.i, label %for.body117.lr.ph.i, label %sw.epilog135.i for.body117.lr.ph.i: ; preds = %for.cond114.preheader.i %bank_width119.i = getelementptr inbounds i8, ptr %opaque, i64 840 %max_device_width.i96.i = getelementptr inbounds i8, ptr %opaque, i64 842 %cfi_table.i.i = getelementptr inbounds i8, ptr %opaque, i64 860 - %name.i119.i = getelementptr inbounds i8, ptr %opaque, i64 1232 - %tv_usec.i.i.i132.i = getelementptr inbounds i8, ptr %_now.i.i.i93.i, i64 8 + %name.i120.i = getelementptr inbounds i8, ptr %opaque, i64 1232 + %tv_usec.i.i.i133.i = getelementptr inbounds i8, ptr %_now.i.i.i93.i, i64 8 %.pre.i = load i8, ptr %bank_width119.i, align 8 br label %for.body117.i @@ -1153,21 +1153,21 @@ if.end105.i: ; preds = %if.then95.i, %if.th br i1 %cmp106.i, label %if.then108.i, label %sw.epilog135.i if.then108.i: ; preds = %if.end105.i, %if.end105.thread.i - %boff.1168.i = phi i64 [ %shr103.i, %if.end105.thread.i ], [ %boff.1.i, %if.end105.i ] + %boff.1169.i = phi i64 [ %shr103.i, %if.end105.thread.i ], [ %boff.1.i, %if.end105.i ] %cfi_table.i = getelementptr inbounds i8, ptr %opaque, i64 860 - %arrayidx.i = getelementptr [82 x i8], ptr %cfi_table.i, i64 0, i64 %boff.1168.i + %arrayidx.i = getelementptr [82 x i8], ptr %cfi_table.i, i64 0, i64 %boff.1169.i %62 = load i8, ptr %arrayidx.i, align 1 %conv109.i = zext i8 %62 to i32 br label %sw.epilog135.i -for.body117.i: ; preds = %deposit32.exit149.i, %for.body117.lr.ph.i - %63 = phi i8 [ %.pre.i, %for.body117.lr.ph.i ], [ %79, %deposit32.exit149.i ] - %i113.0182.i = phi i32 [ 0, %for.body117.lr.ph.i ], [ %add132.i, %deposit32.exit149.i ] - %ret.4181.i = phi i32 [ -1, %for.body117.lr.ph.i ], [ %or.i147.i, %deposit32.exit149.i ] - %mul118.i = shl i32 %i113.0182.i, 3 +for.body117.i: ; preds = %deposit32.exit150.i, %for.body117.lr.ph.i + %63 = phi i8 [ %.pre.i, %for.body117.lr.ph.i ], [ %79, %deposit32.exit150.i ] + %i113.0183.i = phi i32 [ 0, %for.body117.lr.ph.i ], [ %add132.i, %deposit32.exit150.i ] + %ret.4182.i = phi i32 [ -1, %for.body117.lr.ph.i ], [ %or.i148.i, %deposit32.exit150.i ] + %mul118.i = shl i32 %i113.0183.i, 3 %conv120.i = zext i8 %63 to i32 %mul121.i = shl nuw nsw i32 %conv120.i, 3 - %mul124.i = mul i32 %i113.0182.i, %conv120.i + %mul124.i = mul i32 %i113.0183.i, %conv120.i %conv125.i = sext i32 %mul124.i to i64 %add126.i = add i64 %addr, %conv125.i %64 = tail call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %conv120.i, i1 false) @@ -1205,64 +1205,65 @@ for.cond.preheader.i.i: ; preds = %if.then13.i.i for.body.preheader.i.i: ; preds = %for.cond.preheader.i.i %70 = add nsw i32 %conv1.i97.i, -5 %71 = icmp ult i32 %70, -3 - br i1 %71, label %if.else.i.i118.i, label %for.body.i107.i + br i1 %71, label %if.else.i.i119.i, label %for.body.i107.i if.then22.i.i: ; preds = %if.then13.i.i - %72 = load ptr, ptr %name.i119.i, align 16 + %72 = load ptr, ptr %name.i120.i, align 16 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %_now.i.i.i93.i) %73 = load i32, ptr @trace_events_enabled_count, align 4 - %tobool.i.i.i120.i = icmp ne i32 %73, 0 + %tobool.i.i.i121.i = icmp ne i32 %73, 0 %74 = load i16, ptr @_TRACE_PFLASH_UNSUPPORTED_DEVICE_CONFIGURATION_DSTATE, align 2 - %tobool4.i.i.i121.i = icmp ne i16 %74, 0 - %or.cond.i.i.i122.i = select i1 %tobool.i.i.i120.i, i1 %tobool4.i.i.i121.i, i1 false - br i1 %or.cond.i.i.i122.i, label %land.lhs.true5.i.i.i123.i, label %trace_pflash_unsupported_device_configuration.exit.i.i + %tobool4.i.i.i122.i = icmp ne i16 %74, 0 + %or.cond.i.i.i123.i = select i1 %tobool.i.i.i121.i, i1 %tobool4.i.i.i122.i, i1 false + br i1 %or.cond.i.i.i123.i, label %land.lhs.true5.i.i.i124.i, label %trace_pflash_unsupported_device_configuration.exit.i.i -land.lhs.true5.i.i.i123.i: ; preds = %if.then22.i.i +land.lhs.true5.i.i.i124.i: ; preds = %if.then22.i.i %75 = load i32, ptr @qemu_loglevel, align 4 - %and.i.i.i.i124.i = and i32 %75, 32768 - %cmp.i.not.i.i.i125.i = icmp eq i32 %and.i.i.i.i124.i, 0 - br i1 %cmp.i.not.i.i.i125.i, label %trace_pflash_unsupported_device_configuration.exit.i.i, label %if.then.i.i.i126.i + %and.i.i.i.i125.i = and i32 %75, 32768 + %cmp.i.not.i.i.i126.i = icmp eq i32 %and.i.i.i.i125.i, 0 + br i1 %cmp.i.not.i.i.i126.i, label %trace_pflash_unsupported_device_configuration.exit.i.i, label %if.then.i.i.i127.i -if.then.i.i.i126.i: ; preds = %land.lhs.true5.i.i.i123.i +if.then.i.i.i127.i: ; preds = %land.lhs.true5.i.i.i124.i %76 = load i8, ptr @message_with_timestamp, align 1 - %tobool7.i.i.i127.i = trunc i8 %76 to i1 - br i1 %tobool7.i.i.i127.i, label %if.then8.i.i.i129.i, label %if.else.i.i.i128.i + %tobool7.i.i.i128.i = trunc i8 %76 to i1 + br i1 %tobool7.i.i.i128.i, label %if.then8.i.i.i130.i, label %if.else.i.i.i129.i -if.then8.i.i.i129.i: ; preds = %if.then.i.i.i126.i - %call9.i.i.i130.i = call i32 @gettimeofday(ptr noundef nonnull %_now.i.i.i93.i, ptr noundef null) #12 - %call10.i.i.i131.i = tail call i32 @qemu_get_thread_id() #12 +if.then8.i.i.i130.i: ; preds = %if.then.i.i.i127.i + %call9.i.i.i131.i = call i32 @gettimeofday(ptr noundef nonnull %_now.i.i.i93.i, ptr noundef null) #12 + %call10.i.i.i132.i = tail call i32 @qemu_get_thread_id() #12 %77 = load i64, ptr %_now.i.i.i93.i, align 8 - %78 = load i64, ptr %tv_usec.i.i.i132.i, align 8 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.36, i32 noundef %call10.i.i.i131.i, i64 noundef %77, i64 noundef %78, ptr noundef %72, i32 noundef %conv3.i101.i, i32 noundef %conv1.i97.i) #12 + %78 = load i64, ptr %tv_usec.i.i.i133.i, align 8 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.36, i32 noundef %call10.i.i.i132.i, i64 noundef %77, i64 noundef %78, ptr noundef %72, i32 noundef %conv3.i101.i, i32 noundef %conv1.i97.i) #12 br label %trace_pflash_unsupported_device_configuration.exit.i.i -if.else.i.i.i128.i: ; preds = %if.then.i.i.i126.i +if.else.i.i.i129.i: ; preds = %if.then.i.i.i127.i tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.37, ptr noundef %72, i32 noundef %conv3.i101.i, i32 noundef %conv1.i97.i) #12 br label %trace_pflash_unsupported_device_configuration.exit.i.i -trace_pflash_unsupported_device_configuration.exit.i.i: ; preds = %if.else.i.i.i128.i, %if.then8.i.i.i129.i, %land.lhs.true5.i.i.i123.i, %if.then22.i.i +trace_pflash_unsupported_device_configuration.exit.i.i: ; preds = %if.else.i.i.i129.i, %if.then8.i.i.i130.i, %land.lhs.true5.i.i.i124.i, %if.then22.i.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %_now.i.i.i93.i) br label %pflash_cfi_query.exit.i for.body.i107.i: ; preds = %for.body.preheader.i.i, %for.body.i107.i - %resp.145.i.i = phi i32 [ %or.i.i113.i, %for.body.i107.i ], [ %conv6.i.i, %for.body.preheader.i.i ] + %resp.145.i.i = phi i32 [ %or.i.i114.i, %for.body.i107.i ], [ %conv6.i.i, %for.body.preheader.i.i ] %i.044.i.i = phi i32 [ %inc.i.i, %for.body.i107.i ], [ 1, %for.body.preheader.i.i ] %mul.i108.i = shl i32 %i.044.i.i, 3 %shl.i.i109.i = shl nuw i32 255, %mul.i108.i %not.i.i110.i = xor i32 %shl.i.i109.i, -1 %and.i.i111.i = and i32 %resp.145.i.i, %not.i.i110.i - %and6.i.i112.i = shl nuw i32 %conv6.i.i, %mul.i108.i - %or.i.i113.i = or i32 %and.i.i111.i, %and6.i.i112.i + %shl5.i.i112.i = shl nuw i32 %conv6.i.i, %mul.i108.i + %and6.i.i113.i = and i32 %shl.i.i109.i, %shl5.i.i112.i + %or.i.i114.i = or disjoint i32 %and.i.i111.i, %and6.i.i113.i %inc.i.i = add nuw nsw i32 %i.044.i.i, 1 %exitcond.not.i.i = icmp eq i32 %inc.i.i, %conv1.i97.i br i1 %exitcond.not.i.i, label %if.end34.i.i, label %for.body.i107.i, !llvm.loop !9 -if.else.i.i118.i: ; preds = %for.body.preheader.i.i +if.else.i.i119.i: ; preds = %for.body.preheader.i.i tail call void @__assert_fail(ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.35, i32 noundef 470, ptr noundef nonnull @__PRETTY_FUNCTION__.deposit32) #13 unreachable if.end34.i.i: ; preds = %for.body.i107.i, %if.end.i.i - %resp.0.i114.i = phi i32 [ %conv6.i.i, %if.end.i.i ], [ %or.i.i113.i, %for.body.i107.i ] + %resp.0.i115.i = phi i32 [ %conv6.i.i, %if.end.i.i ], [ %or.i.i114.i, %for.body.i107.i ] %cmp39.i.i = icmp ult i8 %.fr.i100.i, %63 br i1 %cmp39.i.i, label %for.cond44.preheader.i.i, label %pflash_cfi_query.exit.i @@ -1272,15 +1273,15 @@ if.end34.thread.i.i: ; preds = %for.cond.preheader. for.cond44.preheader.i.i: ; preds = %if.end34.i.i %mul53.i.i = shl nuw nsw i32 %conv3.i101.i, 3 - %cmp1.i.i115.i = icmp eq i8 %.fr.i100.i, 0 - %invariant.op.i116.i = sub nsw i32 32, %mul53.i.i - %shr.i.i117.i = lshr i32 -1, %invariant.op.i116.i - br i1 %cmp1.i.i115.i, label %if.else.i39.split.i.i, label %for.body49.preheader.i.i + %cmp1.i.i116.i = icmp eq i8 %.fr.i100.i, 0 + %invariant.op.i117.i = sub nsw i32 32, %mul53.i.i + %shr.i.i118.i = lshr i32 -1, %invariant.op.i117.i + br i1 %cmp1.i.i116.i, label %if.else.i39.split.i.i, label %for.body49.preheader.i.i for.body49.preheader.i.i: ; preds = %for.cond44.preheader.i.i, %if.end34.thread.i.i - %shr.i58.i.i = phi i32 [ %shr.i.i117.i, %for.cond44.preheader.i.i ], [ 255, %if.end34.thread.i.i ] - %invariant.op57.i.i = phi i32 [ %invariant.op.i116.i, %for.cond44.preheader.i.i ], [ 24, %if.end34.thread.i.i ] - %resp.05056.i.i = phi i32 [ %resp.0.i114.i, %for.cond44.preheader.i.i ], [ %conv6.i.i, %if.end34.thread.i.i ] + %shr.i58.i.i = phi i32 [ %shr.i.i118.i, %for.cond44.preheader.i.i ], [ 255, %if.end34.thread.i.i ] + %invariant.op57.i.i = phi i32 [ %invariant.op.i117.i, %for.cond44.preheader.i.i ], [ 24, %if.end34.thread.i.i ] + %resp.05056.i.i = phi i32 [ %resp.0.i115.i, %for.cond44.preheader.i.i ], [ %conv6.i.i, %if.end34.thread.i.i ] br label %for.body49.i.i for.body49.i.i: ; preds = %deposit32.exit40.i.i, %for.body49.preheader.i.i @@ -1298,87 +1299,87 @@ deposit32.exit40.i.i: ; preds = %for.body49.i.i %shl.i33.i.i = shl i32 %shr.i58.i.i, %mul50.i.i %not.i34.i.i = xor i32 %shl.i33.i.i, -1 %and.i35.i.i = and i32 %resp.347.i.i, %not.i34.i.i - %shl57.i36.i.i = and i32 %resp.347.i.i, %shr.i58.i.i - %and6.i37.i.i = shl i32 %shl57.i36.i.i, %mul50.i.i - %or.i38.i.i = or i32 %and.i35.i.i, %and6.i37.i.i + %shl5.i36.i.i = shl i32 %resp.347.i.i, %mul50.i.i + %and6.i37.i.i = and i32 %shl.i33.i.i, %shl5.i36.i.i + %or.i38.i.i = or disjoint i32 %and.i35.i.i, %and6.i37.i.i %add58.i.i = add nuw nsw i32 %i.146.i.i, %conv3.i101.i %cmp47.i.i = icmp ult i32 %add58.i.i, %conv120.i br i1 %cmp47.i.i, label %for.body49.i.i, label %pflash_cfi_query.exit.i, !llvm.loop !10 pflash_cfi_query.exit.i: ; preds = %deposit32.exit40.i.i, %if.end34.thread.i.i, %if.end34.i.i, %trace_pflash_unsupported_device_configuration.exit.i.i, %for.body117.i - %retval.0.i106.i = phi i32 [ 0, %trace_pflash_unsupported_device_configuration.exit.i.i ], [ 0, %for.body117.i ], [ %resp.0.i114.i, %if.end34.i.i ], [ %conv6.i.i, %if.end34.thread.i.i ], [ %or.i38.i.i, %deposit32.exit40.i.i ] - %cmp.i133.i = icmp slt i32 %mul118.i, 0 - %cmp1.i134.i = icmp eq i8 %63, 0 - %or.cond.not9.i135.i = or i1 %cmp1.i134.i, %cmp.i133.i - %sub.i136.i = sub nsw i32 32, %mul118.i - %cmp3.not.i137.i = icmp sgt i32 %mul121.i, %sub.i136.i - %or.cond8.i138.i = select i1 %or.cond.not9.i135.i, i1 true, i1 %cmp3.not.i137.i - br i1 %or.cond8.i138.i, label %if.else.i148.i, label %deposit32.exit149.i - -if.else.i148.i: ; preds = %pflash_cfi_query.exit.i + %retval.0.i106.i = phi i32 [ 0, %trace_pflash_unsupported_device_configuration.exit.i.i ], [ 0, %for.body117.i ], [ %resp.0.i115.i, %if.end34.i.i ], [ %conv6.i.i, %if.end34.thread.i.i ], [ %or.i38.i.i, %deposit32.exit40.i.i ] + %cmp.i134.i = icmp slt i32 %mul118.i, 0 + %cmp1.i135.i = icmp eq i8 %63, 0 + %or.cond.not8.i136.i = or i1 %cmp1.i135.i, %cmp.i134.i + %sub.i137.i = sub nsw i32 32, %mul118.i + %cmp3.not.i138.i = icmp sgt i32 %mul121.i, %sub.i137.i + %or.cond7.i139.i = select i1 %or.cond.not8.i136.i, i1 true, i1 %cmp3.not.i138.i + br i1 %or.cond7.i139.i, label %if.else.i149.i, label %deposit32.exit150.i + +if.else.i149.i: ; preds = %pflash_cfi_query.exit.i tail call void @__assert_fail(ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.35, i32 noundef 470, ptr noundef nonnull @__PRETTY_FUNCTION__.deposit32) #13 unreachable -deposit32.exit149.i: ; preds = %pflash_cfi_query.exit.i - %sub4.i140.i = sub nuw nsw i32 32, %mul121.i - %shr.i141.i = lshr i32 -1, %sub4.i140.i - %shl.i142.i = shl i32 %shr.i141.i, %mul118.i - %not.i143.i = xor i32 %shl.i142.i, -1 - %and.i144.i = and i32 %ret.4181.i, %not.i143.i - %shl57.i145.i = and i32 %retval.0.i106.i, %shr.i141.i - %and6.i146.i = shl i32 %shl57.i145.i, %mul118.i - %or.i147.i = or i32 %and6.i146.i, %and.i144.i +deposit32.exit150.i: ; preds = %pflash_cfi_query.exit.i + %sub4.i141.i = sub nuw nsw i32 32, %mul121.i + %shr.i142.i = lshr i32 -1, %sub4.i141.i + %shl.i143.i = shl i32 %shr.i142.i, %mul118.i + %not.i144.i = xor i32 %shl.i143.i, -1 + %and.i145.i = and i32 %ret.4182.i, %not.i144.i + %shl5.i146.i = shl i32 %retval.0.i106.i, %mul118.i + %and6.i147.i = and i32 %shl5.i146.i, %shl.i143.i + %or.i148.i = or disjoint i32 %and6.i147.i, %and.i145.i %79 = load i8, ptr %bank_width119.i, align 8 %conv131.i = zext i8 %79 to i32 - %add132.i = add i32 %i113.0182.i, %conv131.i + %add132.i = add i32 %i113.0183.i, %conv131.i %cmp115.i = icmp slt i32 %add132.i, %len br i1 %cmp115.i, label %for.body117.i, label %sw.epilog135.i, !llvm.loop !11 -sw.epilog135.i: ; preds = %deposit32.exit149.i, %deposit32.exit.i, %if.then108.i, %if.end105.i, %for.cond114.preheader.i, %sw.default66.i, %sw.bb59.i, %sw.bb52.i, %for.cond.preheader.i, %trace_pflash_read_status.exit.i, %sw.bb.i - %ret.0.i = phi i32 [ %call.i, %sw.bb.i ], [ %conv109.i, %if.then108.i ], [ 0, %sw.default66.i ], [ %or63.i, %sw.bb59.i ], [ %or56.i, %sw.bb52.i ], [ %ret.2.i, %trace_pflash_read_status.exit.i ], [ 0, %if.end105.i ], [ -1, %for.cond.preheader.i ], [ -1, %for.cond114.preheader.i ], [ %or.i.i, %deposit32.exit.i ], [ %or.i147.i, %deposit32.exit149.i ] +sw.epilog135.i: ; preds = %deposit32.exit150.i, %deposit32.exit.i, %if.then108.i, %if.end105.i, %for.cond114.preheader.i, %sw.default66.i, %sw.bb59.i, %sw.bb52.i, %for.cond.preheader.i, %trace_pflash_read_status.exit.i, %sw.bb.i + %ret.0.i = phi i32 [ %call.i, %sw.bb.i ], [ %conv109.i, %if.then108.i ], [ 0, %sw.default66.i ], [ %or63.i, %sw.bb59.i ], [ %or56.i, %sw.bb52.i ], [ %ret.2.i, %trace_pflash_read_status.exit.i ], [ 0, %if.end105.i ], [ -1, %for.cond.preheader.i ], [ -1, %for.cond114.preheader.i ], [ %or.i.i, %deposit32.exit.i ], [ %or.i148.i, %deposit32.exit150.i ] %name136.i = getelementptr inbounds i8, ptr %opaque, i64 1232 %80 = load ptr, ptr %name136.i, align 16 %81 = load i8, ptr %cmd.i, align 2 %wcycle138.i = getelementptr inbounds i8, ptr %opaque, i64 848 %82 = load i8, ptr %wcycle138.i, align 16 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %_now.i.i150.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %_now.i.i151.i) %83 = load i32, ptr @trace_events_enabled_count, align 4 - %tobool.i.i151.i = icmp ne i32 %83, 0 + %tobool.i.i152.i = icmp ne i32 %83, 0 %84 = load i16, ptr @_TRACE_PFLASH_IO_READ_DSTATE, align 2 - %tobool4.i.i152.i = icmp ne i16 %84, 0 - %or.cond.i.i153.i = select i1 %tobool.i.i151.i, i1 %tobool4.i.i152.i, i1 false - br i1 %or.cond.i.i153.i, label %land.lhs.true5.i.i154.i, label %pflash_read.exit + %tobool4.i.i153.i = icmp ne i16 %84, 0 + %or.cond.i.i154.i = select i1 %tobool.i.i152.i, i1 %tobool4.i.i153.i, i1 false + br i1 %or.cond.i.i154.i, label %land.lhs.true5.i.i155.i, label %pflash_read.exit -land.lhs.true5.i.i154.i: ; preds = %sw.epilog135.i +land.lhs.true5.i.i155.i: ; preds = %sw.epilog135.i %85 = load i32, ptr @qemu_loglevel, align 4 - %and.i.i.i155.i = and i32 %85, 32768 - %cmp.i.not.i.i156.i = icmp eq i32 %and.i.i.i155.i, 0 - br i1 %cmp.i.not.i.i156.i, label %pflash_read.exit, label %if.then.i.i157.i + %and.i.i.i156.i = and i32 %85, 32768 + %cmp.i.not.i.i157.i = icmp eq i32 %and.i.i.i156.i, 0 + br i1 %cmp.i.not.i.i157.i, label %pflash_read.exit, label %if.then.i.i158.i -if.then.i.i157.i: ; preds = %land.lhs.true5.i.i154.i +if.then.i.i158.i: ; preds = %land.lhs.true5.i.i155.i %86 = load i8, ptr @message_with_timestamp, align 1 - %tobool7.i.i158.i = trunc i8 %86 to i1 - br i1 %tobool7.i.i158.i, label %if.then8.i.i160.i, label %if.else.i.i159.i - -if.then8.i.i160.i: ; preds = %if.then.i.i157.i - %call9.i.i161.i = call i32 @gettimeofday(ptr noundef nonnull %_now.i.i150.i, ptr noundef null) #12 - %call10.i.i162.i = tail call i32 @qemu_get_thread_id() #12 - %87 = load i64, ptr %_now.i.i150.i, align 8 - %tv_usec.i.i163.i = getelementptr inbounds i8, ptr %_now.i.i150.i, i64 8 - %88 = load i64, ptr %tv_usec.i.i163.i, align 8 - %conv11.i.i164.i = zext i8 %81 to i32 - %conv12.i.i165.i = zext i8 %82 to i32 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.38, i32 noundef %call10.i.i162.i, i64 noundef %87, i64 noundef %88, ptr noundef %80, i64 noundef %addr, i32 noundef %len, i32 noundef %ret.0.i, i32 noundef %conv11.i.i164.i, i32 noundef %conv12.i.i165.i) #12 + %tobool7.i.i159.i = trunc i8 %86 to i1 + br i1 %tobool7.i.i159.i, label %if.then8.i.i161.i, label %if.else.i.i160.i + +if.then8.i.i161.i: ; preds = %if.then.i.i158.i + %call9.i.i162.i = call i32 @gettimeofday(ptr noundef nonnull %_now.i.i151.i, ptr noundef null) #12 + %call10.i.i163.i = tail call i32 @qemu_get_thread_id() #12 + %87 = load i64, ptr %_now.i.i151.i, align 8 + %tv_usec.i.i164.i = getelementptr inbounds i8, ptr %_now.i.i151.i, i64 8 + %88 = load i64, ptr %tv_usec.i.i164.i, align 8 + %conv11.i.i165.i = zext i8 %81 to i32 + %conv12.i.i166.i = zext i8 %82 to i32 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.38, i32 noundef %call10.i.i163.i, i64 noundef %87, i64 noundef %88, ptr noundef %80, i64 noundef %addr, i32 noundef %len, i32 noundef %ret.0.i, i32 noundef %conv11.i.i165.i, i32 noundef %conv12.i.i166.i) #12 br label %pflash_read.exit -if.else.i.i159.i: ; preds = %if.then.i.i157.i +if.else.i.i160.i: ; preds = %if.then.i.i158.i %conv13.i.i.i = zext i8 %81 to i32 %conv14.i.i.i = zext i8 %82 to i32 tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.39, ptr noundef %80, i64 noundef %addr, i32 noundef %len, i32 noundef %ret.0.i, i32 noundef %conv13.i.i.i, i32 noundef %conv14.i.i.i) #12 br label %pflash_read.exit -pflash_read.exit: ; preds = %sw.epilog135.i, %land.lhs.true5.i.i154.i, %if.then8.i.i160.i, %if.else.i.i159.i - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %_now.i.i150.i) +pflash_read.exit: ; preds = %sw.epilog135.i, %land.lhs.true5.i.i155.i, %if.then8.i.i161.i, %if.else.i.i160.i + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %_now.i.i151.i) br label %if.end if.end: ; preds = %pflash_read.exit, %if.then diff --git a/bench/qemu/optimized/hw_display_ati.c.ll b/bench/qemu/optimized/hw_display_ati.c.ll index 67a57f43ae6..81835d975b4 100644 --- a/bench/qemu/optimized/hw_display_ati.c.ll +++ b/bench/qemu/optimized/hw_display_ati.c.ll @@ -1801,8 +1801,8 @@ if.else.i: ; preds = %if.end49 %cmp1.i.i = icmp slt i32 %mul2.i, 1 %sub.i.i = sub nuw nsw i32 32, %mul.i %cmp3.not.i.i = icmp ugt i32 %mul2.i, %sub.i.i - %or.cond8.i.i = select i1 %cmp1.i.i, i1 true, i1 %cmp3.not.i.i - br i1 %or.cond8.i.i, label %if.else.i.i342, label %deposit32.exit.i + %or.cond7.i.i = select i1 %cmp1.i.i, i1 true, i1 %cmp3.not.i.i + br i1 %or.cond7.i.i, label %if.else.i.i342, label %deposit32.exit.i if.else.i.i342: ; preds = %if.else.i tail call void @__assert_fail(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.30, i32 noundef 470, ptr noundef nonnull @__PRETTY_FUNCTION__.deposit32) #11 @@ -1816,9 +1816,9 @@ deposit32.exit.i: ; preds = %if.else.i %shl.i.i = shl i32 %shr.i.i, %mul.i %not.i.i = xor i32 %shl.i.i, -1 %and.i.i = and i32 %17, %not.i.i - %shl57.i.i = and i32 %shr.i.i, %conv3.i - %and6.i.i = shl i32 %shl57.i.i, %mul.i - %or.i.i = or i32 %and.i.i, %and6.i.i + %shl5.i.i = shl i32 %conv3.i, %mul.i + %and6.i.i = and i32 %shl.i.i, %shl5.i.i + %or.i.i = or disjoint i32 %and.i.i, %and6.i.i br label %ati_reg_write_offs.exit ati_reg_write_offs.exit: ; preds = %if.then.i, %deposit32.exit.i @@ -1890,8 +1890,8 @@ if.else.i352: ; preds = %sw.bb73 %cmp1.i.i355 = icmp slt i32 %mul2.i354, 1 %sub.i.i356 = sub nuw nsw i32 32, %mul.i353 %cmp3.not.i.i357 = icmp ugt i32 %mul2.i354, %sub.i.i356 - %or.cond8.i.i358 = select i1 %cmp1.i.i355, i1 true, i1 %cmp3.not.i.i357 - br i1 %or.cond8.i.i358, label %if.else.i.i370, label %deposit32.exit.i359 + %or.cond7.i.i358 = select i1 %cmp1.i.i355, i1 true, i1 %cmp3.not.i.i357 + br i1 %or.cond7.i.i358, label %if.else.i.i370, label %deposit32.exit.i359 if.else.i.i370: ; preds = %if.else.i352 tail call void @__assert_fail(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.30, i32 noundef 470, ptr noundef nonnull @__PRETTY_FUNCTION__.deposit32) #11 @@ -1904,9 +1904,9 @@ deposit32.exit.i359: ; preds = %if.else.i352 %shl.i.i363 = shl i32 %shr.i.i362, %mul.i353 %not.i.i364 = xor i32 %shl.i.i363, -1 %and.i.i365 = and i32 %25, %not.i.i364 - %shl57.i.i366 = and i32 %shr.i.i362, %conv3.i360 - %and6.i.i367 = shl i32 %shl57.i.i366, %mul.i353 - %or.i.i368 = or i32 %and.i.i365, %and6.i.i367 + %shl5.i.i366 = shl i32 %conv3.i360, %mul.i353 + %and6.i.i367 = and i32 %shl.i.i363, %shl5.i.i366 + %or.i.i368 = or disjoint i32 %and.i.i365, %and6.i.i367 br label %ati_reg_write_offs.exit373 ati_reg_write_offs.exit373: ; preds = %if.then.i371, %deposit32.exit.i359 @@ -1984,8 +1984,8 @@ if.else.i377: ; preds = %sw.bb124 %cmp1.i.i381 = icmp slt i32 %mul2.i379, 1 %sub.i.i383 = sub nuw nsw i32 32, %mul.i378 %cmp3.not.i.i384 = icmp ugt i32 %mul2.i379, %sub.i.i383 - %or.cond8.i.i385 = select i1 %cmp1.i.i381, i1 true, i1 %cmp3.not.i.i384 - br i1 %or.cond8.i.i385, label %if.else.i.i397, label %deposit32.exit.i386 + %or.cond7.i.i385 = select i1 %cmp1.i.i381, i1 true, i1 %cmp3.not.i.i384 + br i1 %or.cond7.i.i385, label %if.else.i.i397, label %deposit32.exit.i386 if.else.i.i397: ; preds = %if.else.i377 tail call void @__assert_fail(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.30, i32 noundef 470, ptr noundef nonnull @__PRETTY_FUNCTION__.deposit32) #11 @@ -1998,9 +1998,9 @@ deposit32.exit.i386: ; preds = %if.else.i377 %shl.i.i390 = shl i32 %shr.i.i389, %mul.i378 %not.i.i391 = xor i32 %shl.i.i390, -1 %and.i.i392 = and i32 %34, %not.i.i391 - %shl57.i.i393 = and i32 %shr.i.i389, %conv3.i387 - %and6.i.i394 = shl i32 %shl57.i.i393, %mul.i378 - %or.i.i395 = or i32 %and.i.i392, %and6.i.i394 + %shl5.i.i393 = shl i32 %conv3.i387, %mul.i378 + %and6.i.i394 = and i32 %shl.i.i390, %shl5.i.i393 + %or.i.i395 = or disjoint i32 %and.i.i392, %and6.i.i394 br label %ati_reg_write_offs.exit400 ati_reg_write_offs.exit400: ; preds = %if.then.i398, %deposit32.exit.i386 @@ -2264,8 +2264,8 @@ if.else.i404: ; preds = %sw.bb341 %cmp1.i.i408 = icmp slt i32 %mul2.i406, 1 %sub.i.i410 = sub nuw nsw i32 32, %mul.i405 %cmp3.not.i.i411 = icmp ugt i32 %mul2.i406, %sub.i.i410 - %or.cond8.i.i412 = select i1 %cmp1.i.i408, i1 true, i1 %cmp3.not.i.i411 - br i1 %or.cond8.i.i412, label %if.else.i.i424, label %deposit32.exit.i413 + %or.cond7.i.i412 = select i1 %cmp1.i.i408, i1 true, i1 %cmp3.not.i.i411 + br i1 %or.cond7.i.i412, label %if.else.i.i424, label %deposit32.exit.i413 if.else.i.i424: ; preds = %if.else.i404 tail call void @__assert_fail(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.30, i32 noundef 470, ptr noundef nonnull @__PRETTY_FUNCTION__.deposit32) #11 @@ -2278,9 +2278,9 @@ deposit32.exit.i413: ; preds = %if.else.i404 %shl.i.i417 = shl i32 %shr.i.i416, %mul.i405 %not.i.i418 = xor i32 %shl.i.i417, -1 %and.i.i419 = and i32 %67, %not.i.i418 - %shl57.i.i420 = and i32 %shr.i.i416, %conv3.i414 - %and6.i.i421 = shl i32 %shl57.i.i420, %mul.i405 - %or.i.i422 = or i32 %and.i.i419, %and6.i.i421 + %shl5.i.i420 = shl i32 %conv3.i414, %mul.i405 + %and6.i.i421 = and i32 %shl.i.i417, %shl5.i.i420 + %or.i.i422 = or disjoint i32 %and.i.i419, %and6.i.i421 br label %ati_reg_write_offs.exit427 ati_reg_write_offs.exit427: ; preds = %if.then.i425, %deposit32.exit.i413 @@ -2318,8 +2318,8 @@ if.else.i431: ; preds = %sw.bb354 %cmp1.i.i435 = icmp slt i32 %mul2.i433, 1 %sub.i.i437 = sub nuw nsw i32 32, %mul.i432 %cmp3.not.i.i438 = icmp ugt i32 %mul2.i433, %sub.i.i437 - %or.cond8.i.i439 = select i1 %cmp1.i.i435, i1 true, i1 %cmp3.not.i.i438 - br i1 %or.cond8.i.i439, label %if.else.i.i451, label %deposit32.exit.i440 + %or.cond7.i.i439 = select i1 %cmp1.i.i435, i1 true, i1 %cmp3.not.i.i438 + br i1 %or.cond7.i.i439, label %if.else.i.i451, label %deposit32.exit.i440 if.else.i.i451: ; preds = %if.else.i431 tail call void @__assert_fail(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.30, i32 noundef 470, ptr noundef nonnull @__PRETTY_FUNCTION__.deposit32) #11 @@ -2332,9 +2332,9 @@ deposit32.exit.i440: ; preds = %if.else.i431 %shl.i.i444 = shl i32 %shr.i.i443, %mul.i432 %not.i.i445 = xor i32 %shl.i.i444, -1 %and.i.i446 = and i32 %or363336, %not.i.i445 - %shl57.i.i447 = and i32 %shr.i.i443, %conv3.i441 - %and6.i.i448 = shl i32 %shl57.i.i447, %mul.i432 - %or.i.i449 = or i32 %and.i.i446, %and6.i.i448 + %shl5.i.i447 = shl i32 %conv3.i441, %mul.i432 + %and6.i.i448 = and i32 %shl.i.i444, %shl5.i.i447 + %or.i.i449 = or disjoint i32 %and.i.i446, %and6.i.i448 br label %ati_reg_write_offs.exit454 ati_reg_write_offs.exit454: ; preds = %if.then.i452, %deposit32.exit.i440 @@ -2433,8 +2433,8 @@ if.else.i458: ; preds = %sw.bb456 %cmp1.i.i462 = icmp slt i32 %mul2.i460, 1 %sub.i.i464 = sub nuw nsw i32 32, %mul.i459 %cmp3.not.i.i465 = icmp ugt i32 %mul2.i460, %sub.i.i464 - %or.cond8.i.i466 = select i1 %cmp1.i.i462, i1 true, i1 %cmp3.not.i.i465 - br i1 %or.cond8.i.i466, label %if.else.i.i478, label %deposit32.exit.i467 + %or.cond7.i.i466 = select i1 %cmp1.i.i462, i1 true, i1 %cmp3.not.i.i465 + br i1 %or.cond7.i.i466, label %if.else.i.i478, label %deposit32.exit.i467 if.else.i.i478: ; preds = %if.else.i458 tail call void @__assert_fail(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.30, i32 noundef 470, ptr noundef nonnull @__PRETTY_FUNCTION__.deposit32) #11 @@ -2447,9 +2447,9 @@ deposit32.exit.i467: ; preds = %if.else.i458 %shl.i.i471 = shl i32 %shr.i.i470, %mul.i459 %not.i.i472 = xor i32 %shl.i.i471, -1 %and.i.i473 = and i32 %86, %not.i.i472 - %shl57.i.i474 = and i32 %shr.i.i470, %conv3.i468 - %and6.i.i475 = shl i32 %shl57.i.i474, %mul.i459 - %or.i.i476 = or i32 %and.i.i473, %and6.i.i475 + %shl5.i.i474 = shl i32 %conv3.i468, %mul.i459 + %and6.i.i475 = and i32 %shl.i.i471, %shl5.i.i474 + %or.i.i476 = or disjoint i32 %and.i.i473, %and6.i.i475 br label %ati_reg_write_offs.exit481 ati_reg_write_offs.exit481: ; preds = %if.then.i479, %deposit32.exit.i467 @@ -2482,8 +2482,8 @@ if.else.i485: ; preds = %sw.bb470 %cmp1.i.i489 = icmp slt i32 %mul2.i487, 1 %sub.i.i491 = sub nuw nsw i32 32, %mul.i486 %cmp3.not.i.i492 = icmp ugt i32 %mul2.i487, %sub.i.i491 - %or.cond8.i.i493 = select i1 %cmp1.i.i489, i1 true, i1 %cmp3.not.i.i492 - br i1 %or.cond8.i.i493, label %if.else.i.i505, label %deposit32.exit.i494 + %or.cond7.i.i493 = select i1 %cmp1.i.i489, i1 true, i1 %cmp3.not.i.i492 + br i1 %or.cond7.i.i493, label %if.else.i.i505, label %deposit32.exit.i494 if.else.i.i505: ; preds = %if.else.i485 tail call void @__assert_fail(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.30, i32 noundef 470, ptr noundef nonnull @__PRETTY_FUNCTION__.deposit32) #11 @@ -2497,9 +2497,9 @@ deposit32.exit.i494: ; preds = %if.else.i485 %shl.i.i498 = shl i32 %shr.i.i497, %mul.i486 %not.i.i499 = xor i32 %shl.i.i498, -1 %and.i.i500 = and i32 %89, %not.i.i499 - %shl57.i.i501 = and i32 %shr.i.i497, %conv3.i495 - %and6.i.i502 = shl i32 %shl57.i.i501, %mul.i486 - %or.i.i503 = or i32 %and.i.i500, %and6.i.i502 + %shl5.i.i501 = shl i32 %conv3.i495, %mul.i486 + %and6.i.i502 = and i32 %shl.i.i498, %shl5.i.i501 + %or.i.i503 = or disjoint i32 %and.i.i500, %and6.i.i502 br label %ati_reg_write_offs.exit508 ati_reg_write_offs.exit508: ; preds = %if.then.i506, %deposit32.exit.i494 @@ -3038,11 +3038,11 @@ if.else: ; preds = %entry %mul2 = shl i32 %size, 3 %cmp.i = icmp slt i32 %mul, 0 %cmp1.i = icmp slt i32 %mul2, 1 - %or.cond.not9.i = or i1 %cmp.i, %cmp1.i + %or.cond.not8.i = or i1 %cmp.i, %cmp1.i %sub.i = sub nsw i32 32, %mul %cmp3.not.i = icmp sgt i32 %mul2, %sub.i - %or.cond8.i = select i1 %or.cond.not9.i, i1 true, i1 %cmp3.not.i - br i1 %or.cond8.i, label %if.else.i, label %deposit32.exit + %or.cond7.i = select i1 %or.cond.not8.i, i1 true, i1 %cmp3.not.i + br i1 %or.cond7.i, label %if.else.i, label %deposit32.exit if.else.i: ; preds = %if.else tail call void @__assert_fail(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.30, i32 noundef 470, ptr noundef nonnull @__PRETTY_FUNCTION__.deposit32) #11 @@ -3056,9 +3056,9 @@ deposit32.exit: ; preds = %if.else %shl.i = shl i32 %shr.i, %mul %not.i = xor i32 %shl.i, -1 %and.i = and i32 %0, %not.i - %shl57.i = and i32 %shr.i, %conv3 - %and6.i = shl i32 %shl57.i, %mul - %or.i = or i32 %and.i, %and6.i + %shl5.i = shl i32 %conv3, %mul + %and6.i = and i32 %shl.i, %shl5.i + %or.i = or disjoint i32 %and.i, %and6.i br label %if.end if.end: ; preds = %deposit32.exit, %if.then diff --git a/bench/qemu/optimized/hw_gpio_sifive_gpio.c.ll b/bench/qemu/optimized/hw_gpio_sifive_gpio.c.ll index b6a29e53c91..f9ab50658ac 100644 --- a/bench/qemu/optimized/hw_gpio_sifive_gpio.c.ll +++ b/bench/qemu/optimized/hw_gpio_sifive_gpio.c.ll @@ -230,8 +230,9 @@ deposit32.exit: ; preds = %trace_sifive_gpio_s %shl.i = shl nuw i32 1, %line %not.i = xor i32 %shl.i, -1 %and.i = and i32 %6, %not.i - %and6.i = shl nuw i32 %conv6, %line - %or.i = or i32 %and.i, %and6.i + %shl5.i = shl nuw i32 %conv6, %line + %and6.i = and i32 %shl5.i, %shl.i + %or.i = or disjoint i32 %and.i, %and6.i store i32 %or.i, ptr %in_mask, align 8 br i1 %cmp5, label %deposit32.exit20, label %if.end16 @@ -241,8 +242,9 @@ deposit32.exit20: ; preds = %deposit32.exit %cmp12 = icmp ne i32 %value, 0 %conv13 = zext i1 %cmp12 to i32 %and.i16 = and i32 %7, %not.i - %and6.i18 = shl nuw i32 %conv13, %line - %or.i19 = or i32 %and.i16, %and6.i18 + %shl5.i17 = shl nuw i32 %conv13, %line + %and6.i18 = and i32 %shl5.i17, %shl.i + %or.i19 = or disjoint i32 %and.i16, %and6.i18 store i32 %or.i19, ptr %in, align 4 br label %if.end16 @@ -732,15 +734,17 @@ deposit32.exit126: ; preds = %if.then89, %if.end7 %conv108 = zext i1 %30 to i32 %not.i = xor i32 %2, -1 %and.i117 = and i32 %28, %not.i - %and6.i = shl nuw i32 %conv108, %conv2 - %or.i = or i32 %and6.i, %and.i117 + %shl5.i = shl nuw i32 %conv108, %conv2 + %and6.i = and i32 %shl5.i, %2 + %or.i = or disjoint i32 %and6.i, %and.i117 store i32 %or.i, ptr %high_ip52, align 4 %lnot115 = xor i1 %29, true %31 = select i1 %tobool50, i1 true, i1 %lnot115 %conv122 = zext i1 %31 to i32 %and.i122 = and i32 %27, %not.i - %and6.i124 = shl nuw i32 %conv122, %conv2 - %or.i125 = or i32 %and6.i124, %and.i122 + %shl5.i123 = shl nuw i32 %conv122, %conv2 + %and6.i124 = and i32 %shl5.i123, %2 + %or.i125 = or disjoint i32 %and6.i124, %and.i122 store i32 %or.i125, ptr %low_ip47, align 4 br i1 %tobool40.not, label %lor.rhs127, label %deposit32.exit135 @@ -754,22 +758,25 @@ deposit32.exit135: ; preds = %deposit32.exit126, %34 = load i32, ptr %rise_ip37, align 4 %conv140 = zext i1 %33 to i32 %and.i131 = and i32 %34, %not.i - %and6.i133 = shl nuw i32 %conv140, %conv2 - %or.i134 = or i32 %and6.i133, %and.i131 + %shl5.i132 = shl nuw i32 %conv140, %conv2 + %and6.i133 = and i32 %shl5.i132, %2 + %or.i134 = or disjoint i32 %and6.i133, %and.i131 store i32 %or.i134, ptr %rise_ip37, align 4 %35 = select i1 %lnot115, i1 %tobool, i1 false %spec.select161 = select i1 %tobool45.not, i1 true, i1 %35 %36 = load i32, ptr %fall_ip42, align 4 %conv156 = zext i1 %spec.select161 to i32 %and.i140 = and i32 %36, %not.i - %and6.i142 = shl nuw i32 %conv156, %conv2 - %or.i143 = or i32 %and.i140, %and6.i142 + %shl5.i141 = shl nuw i32 %conv156, %conv2 + %and6.i142 = and i32 %shl5.i141, %2 + %or.i143 = or disjoint i32 %and.i140, %and6.i142 store i32 %or.i143, ptr %fall_ip42, align 4 %37 = load i32, ptr %value, align 16 %conv162 = zext i1 %29 to i32 %and.i149 = and i32 %37, %not.i - %and6.i151 = shl nuw i32 %conv162, %conv2 - %or.i152 = or i32 %and.i149, %and6.i151 + %shl5.i150 = shl nuw i32 %conv162, %conv2 + %and6.i151 = and i32 %shl5.i150, %2 + %or.i152 = or disjoint i32 %and.i149, %and6.i151 store i32 %or.i152, ptr %value, align 16 %inc = add nuw nsw i64 %i.0167, 1 %38 = load i32, ptr %ngpio, align 4 diff --git a/bench/qemu/optimized/hw_pci_pcie_doe.c.ll b/bench/qemu/optimized/hw_pci_pcie_doe.c.ll index ffa330ab213..5c03981db6d 100644 --- a/bench/qemu/optimized/hw_pci_pcie_doe.c.ll +++ b/bench/qemu/optimized/hw_pci_pcie_doe.c.ll @@ -220,50 +220,50 @@ if.then7: ; preds = %if.end %cap = getelementptr inbounds i8, ptr %doe_cap, i64 10 %3 = load i8, ptr %cap, align 2 %4 = and i8 %3, 1 - %shl57.i = zext nneg i8 %4 to i32 - store i32 %shl57.i, ptr %buf, align 4 + %and6.i = zext nneg i8 %4 to i32 + store i32 %and6.i, ptr %buf, align 4 %vec = getelementptr inbounds i8, ptr %doe_cap, i64 12 %5 = load i16, ptr %vec, align 2 - %6 = shl i16 %5, 1 - %7 = and i16 %6, 4094 - %and6.i = zext nneg i16 %7 to i32 - %or.i50 = or disjoint i32 %and6.i, %shl57.i + %bf.value17 = shl i16 %5, 1 + %6 = and i16 %bf.value17, 4094 + %and6.i49 = zext nneg i16 %6 to i32 + %or.i50 = or disjoint i32 %and6.i49, %and6.i br label %if.end123.sink.split if.then29: ; preds = %if.end %intr31 = getelementptr inbounds i8, ptr %doe_cap, i64 15 - %8 = load i8, ptr %intr31, align 1 - %9 = shl i8 %8, 1 - %10 = and i8 %9, 2 - %and6.i57 = zext nneg i8 %10 to i32 + %7 = load i8, ptr %intr31, align 1 + %8 = shl i8 %7, 1 + %9 = and i8 %8, 2 + %and6.i57 = zext nneg i8 %9 to i32 br label %if.end123.sink.split if.then48: ; preds = %if.end %status = getelementptr inbounds i8, ptr %doe_cap, i64 17 - %11 = load i8, ptr %status, align 1 - %12 = and i8 %11, 1 - %shl57.i64 = zext nneg i8 %12 to i32 - store i32 %shl57.i64, ptr %buf, align 4 + %10 = load i8, ptr %status, align 1 + %11 = and i8 %10, 1 + %and6.i65 = zext nneg i8 %11 to i32 + store i32 %and6.i65, ptr %buf, align 4 %intr64 = getelementptr inbounds i8, ptr %doe_cap, i64 18 - %13 = load i8, ptr %intr64, align 1 - %14 = shl i8 %13, 1 - %15 = and i8 %14, 2 - %or.i7081 = or disjoint i8 %15, %12 + %12 = load i8, ptr %intr64, align 1 + %13 = shl i8 %12, 1 + %14 = and i8 %13, 2 + %or.i7081 = or disjoint i8 %14, %11 %or.i70 = zext nneg i8 %or.i7081 to i32 store i32 %or.i70, ptr %buf, align 4 %error = getelementptr inbounds i8, ptr %doe_cap, i64 19 - %16 = load i8, ptr %error, align 1 - %17 = shl i8 %16, 2 - %18 = and i8 %17, 4 - %or.i7482 = or disjoint i8 %18, %or.i7081 + %15 = load i8, ptr %error, align 1 + %16 = shl i8 %15, 2 + %17 = and i8 %16, 4 + %or.i7482 = or disjoint i8 %17, %or.i7081 %or.i74 = zext nneg i8 %or.i7482 to i32 store i32 %or.i74, ptr %buf, align 4 %ready = getelementptr inbounds i8, ptr %doe_cap, i64 20 - %19 = load i8, ptr %ready, align 1 - %20 = and i8 %19, 1 - %shl57.i76 = zext nneg i8 %20 to i32 - %and6.i77 = shl nuw i32 %shl57.i76, 31 - %or.i78 = or disjoint i32 %and6.i77, %or.i74 + %18 = load i8, ptr %ready, align 1 + %19 = and i8 %18, 1 + %bf.cast102 = zext nneg i8 %19 to i32 + %shl5.i76 = shl nuw i32 %bf.cast102, 31 + %or.i78 = or disjoint i32 %shl5.i76, %or.i74 br label %if.end123.sink.split if.else105: ; preds = %if.end @@ -274,33 +274,33 @@ if.else105: ; preds = %if.end if.then109: ; preds = %if.else105 %ready111 = getelementptr inbounds i8, ptr %doe_cap, i64 20 - %21 = load i8, ptr %ready111, align 1 - %tobool112 = trunc i8 %21 to i1 + %20 = load i8, ptr %ready111, align 1 + %tobool112 = trunc i8 %20 to i1 br i1 %tobool112, label %land.lhs.true114, label %if.end123 land.lhs.true114: ; preds = %if.then109 %error116 = getelementptr inbounds i8, ptr %doe_cap, i64 19 - %22 = load i8, ptr %error116, align 1 - %tobool117 = trunc i8 %22 to i1 + %21 = load i8, ptr %error116, align 1 + %tobool117 = trunc i8 %21 to i1 br i1 %tobool117, label %if.end123, label %if.then118 if.then118: ; preds = %land.lhs.true114 %read_mbox = getelementptr inbounds i8, ptr %doe_cap, i64 32 - %23 = load ptr, ptr %read_mbox, align 8 + %22 = load ptr, ptr %read_mbox, align 8 %read_mbox_idx = getelementptr inbounds i8, ptr %doe_cap, i64 40 - %24 = load i32, ptr %read_mbox_idx, align 8 - %idxprom = zext i32 %24 to i64 - %arrayidx = getelementptr i32, ptr %23, i64 %idxprom - %25 = load i32, ptr %arrayidx, align 4 + %23 = load i32, ptr %read_mbox_idx, align 8 + %idxprom = zext i32 %23 to i64 + %arrayidx = getelementptr i32, ptr %22, i64 %idxprom + %24 = load i32, ptr %arrayidx, align 4 br label %if.end123.sink.split if.end123.sink.split: ; preds = %if.then7, %if.then48, %if.then118, %if.then29 - %and6.i57.sink = phi i32 [ %and6.i57, %if.then29 ], [ %25, %if.then118 ], [ %or.i78, %if.then48 ], [ %or.i50, %if.then7 ] + %and6.i57.sink = phi i32 [ %and6.i57, %if.then29 ], [ %24, %if.then118 ], [ %or.i78, %if.then48 ], [ %or.i50, %if.then7 ] store i32 %and6.i57.sink, ptr %buf, align 4 br label %if.end123 if.end123: ; preds = %if.end123.sink.split, %if.else105, %land.lhs.true114, %if.then109 - %26 = phi i32 [ 0, %if.else105 ], [ 0, %land.lhs.true114 ], [ 0, %if.then109 ], [ %and6.i57.sink, %if.end123.sink.split ] + %25 = phi i32 [ 0, %if.else105 ], [ 0, %land.lhs.true114 ], [ 0, %if.then109 ], [ %and6.i57.sink, %if.end123.sink.split ] %rem = shl i32 %sub, 3 %mul = and i32 %rem, 24 %mul124 = shl i32 %size, 3 @@ -315,7 +315,7 @@ if.else.i: ; preds = %if.end123 unreachable extract32.exit: ; preds = %if.end123 - %shr.i = lshr i32 %26, %mul + %shr.i = lshr i32 %25, %mul %sub4.i = sub nuw nsw i32 32, %mul124 %shr5.i = lshr i32 -1, %sub4.i %and.i80 = and i32 %shr.i, %shr5.i @@ -361,9 +361,9 @@ deposit32.exit: ; preds = %if.end %shl.i = shl i32 %shr.i, %mul %not.i = xor i32 %shl.i, -1 %and.i = and i32 %val, %not.i - %shl57.i = and i32 %shr.i, %val - %and6.i = shl i32 %shl57.i, %mul - %or.i = or i32 %and.i, %and6.i + %shl5.i = shl i32 %val, %mul + %and6.i = and i32 %shl.i, %shl5.i + %or.i = or disjoint i32 %and.i, %and6.i %2 = and i32 %addr, -4 %sub = add i32 %2, -4 %3 = sub i32 %sub, %conv diff --git a/bench/qemu/optimized/hw_rtc_goldfish_rtc.c.ll b/bench/qemu/optimized/hw_rtc_goldfish_rtc.c.ll index d80293c9aa5..229fb5f22d8 100644 --- a/bench/qemu/optimized/hw_rtc_goldfish_rtc.c.ll +++ b/bench/qemu/optimized/hw_rtc_goldfish_rtc.c.ll @@ -290,9 +290,9 @@ sw.bb: ; preds = %entry %call.i = tail call i64 @qemu_clock_get_ns(i32 noundef %2) #7 %add.i = add i64 %call.i, %opaque.val %and.i = and i64 %add.i, -4294967296 - %shl77.i = and i64 %value, 4294967295 + %and8.i = and i64 %value, 4294967295 %3 = load i64, ptr %1, align 16 - %or.i = sub i64 %shl77.i, %add.i + %or.i = sub i64 %and8.i, %add.i %sub = add i64 %or.i, %3 %add = add i64 %sub, %and.i store i64 %add, ptr %1, align 16 @@ -305,9 +305,9 @@ sw.bb2: ; preds = %entry %call.i26 = tail call i64 @qemu_clock_get_ns(i32 noundef %5) #7 %add.i27 = add i64 %call.i26, %opaque.val25 %and.i28 = and i64 %add.i27, 4294967295 - %shl77.i29 = shl i64 %value, 32 + %shl7.i = shl i64 %value, 32 %6 = load i64, ptr %4, align 16 - %or.i30 = sub i64 %shl77.i29, %add.i27 + %or.i30 = sub i64 %shl7.i, %add.i27 %sub5 = add i64 %or.i30, %6 %add7 = add i64 %sub5, %and.i28 store i64 %add7, ptr %4, align 16 @@ -317,8 +317,8 @@ sw.bb8: ; preds = %entry %alarm_next = getelementptr inbounds i8, ptr %opaque, i64 1120 %7 = load i64, ptr %alarm_next, align 16 %and.i31 = and i64 %7, -4294967296 - %shl77.i32 = and i64 %value, 4294967295 - %or.i34 = or disjoint i64 %and.i31, %shl77.i32 + %and8.i33 = and i64 %value, 4294967295 + %or.i34 = or disjoint i64 %and.i31, %and8.i33 store i64 %or.i34, ptr %alarm_next, align 16 %8 = getelementptr i8, ptr %opaque, i64 1104 %s.val.i = load i64, ptr %8, align 16 @@ -357,8 +357,8 @@ sw.bb11: ; preds = %entry %alarm_next12 = getelementptr inbounds i8, ptr %opaque, i64 1120 %15 = load i64, ptr %alarm_next12, align 16 %and.i35 = and i64 %15, 4294967295 - %shl77.i36 = shl i64 %value, 32 - %or.i38 = or disjoint i64 %and.i35, %shl77.i36 + %shl7.i36 = shl i64 %value, 32 + %or.i38 = or disjoint i64 %and.i35, %shl7.i36 store i64 %or.i38, ptr %alarm_next12, align 16 br label %sw.epilog diff --git a/bench/qemu/optimized/hw_scsi_lsi53c895a.c.ll b/bench/qemu/optimized/hw_scsi_lsi53c895a.c.ll index 9cd3acbad91..858ecae68af 100644 --- a/bench/qemu/optimized/hw_scsi_lsi53c895a.c.ll +++ b/bench/qemu/optimized/hw_scsi_lsi53c895a.c.ll @@ -3789,8 +3789,9 @@ if.then810: ; preds = %sw.default %shl.i = shl nuw i32 255, %mul %not.i = xor i32 %shl.i, -1 %and.i380 = and i32 %128, %not.i - %and6.i = shl nuw i32 %conv815, %mul - %or.i = or i32 %and.i380, %and6.i + %shl5.i = shl nuw i32 %conv815, %mul + %and6.i = and i32 %shl5.i, %shl.i + %or.i = or disjoint i32 %and.i380, %and6.i store i32 %or.i, ptr %arrayidx814, align 4 br label %sw.epilog diff --git a/bench/qemu/optimized/hw_usb_hcd-ehci.c.ll b/bench/qemu/optimized/hw_usb_hcd-ehci.c.ll index 7664b976342..a4486d203f0 100644 --- a/bench/qemu/optimized/hw_usb_hcd-ehci.c.ll +++ b/bench/qemu/optimized/hw_usb_hcd-ehci.c.ll @@ -6766,8 +6766,8 @@ for.body: ; preds = %for.cond.preheader, if.end.i71: ; preds = %for.body %36 = load i32, ptr %arrayidx4.i, align 4 - %xor.i = and i32 %36, 8192 - %tobool.not.i72 = icmp eq i32 %xor.i, 0 + %and7.i = and i32 %36, 8192 + %tobool.not.i72 = icmp eq i32 %and7.i, 0 br i1 %tobool.not.i72, label %handle_port_owner_write.exit, label %if.end9.i if.end9.i: ; preds = %if.end.i71 @@ -7013,9 +7013,8 @@ trace_usb_ehci_portsc_write.exit: ; preds = %entry, %land.lhs.tr if.end.i: ; preds = %trace_usb_ehci_portsc_write.exit %and.i = and i32 %conv9, 8192 - %and16.i = xor i32 %9, %conv9 - %xor.i = and i32 %and16.i, 8192 - %tobool.not.i = icmp eq i32 %xor.i, 0 + %and7.i = and i32 %9, 8192 + %tobool.not.i = icmp eq i32 %and.i, %and7.i br i1 %tobool.not.i, label %handle_port_owner_write.exit, label %if.end9.i if.end9.i: ; preds = %if.end.i diff --git a/bench/qemu/optimized/optimize.c.ll b/bench/qemu/optimized/optimize.c.ll index 7a1d94792ac..7620a11fedd 100644 --- a/bench/qemu/optimized/optimize.c.ll +++ b/bench/qemu/optimized/optimize.c.ll @@ -1886,11 +1886,11 @@ if.then.i364: ; preds = %land.lhs.true.i362 %conv15.i = trunc i64 %287 to i32 %cmp.i.i367 = icmp slt i32 %conv.i366, 0 %cmp1.i.i = icmp slt i32 %conv15.i, 1 - %or.cond.not9.i.i = or i1 %cmp.i.i367, %cmp1.i.i + %or.cond.not8.i.i = or i1 %cmp.i.i367, %cmp1.i.i %sub.i.i368 = sub nsw i32 64, %conv.i366 %cmp3.not.i.i = icmp slt i32 %sub.i.i368, %conv15.i - %or.cond8.i.i = select i1 %or.cond.not9.i.i, i1 true, i1 %cmp3.not.i.i - br i1 %or.cond8.i.i, label %if.else.i.i, label %deposit64.exit.i + %or.cond7.i.i = select i1 %or.cond.not8.i.i, i1 true, i1 %cmp3.not.i.i + br i1 %or.cond7.i.i, label %if.else.i.i, label %deposit64.exit.i if.else.i.i: ; preds = %if.then.i364 call void @__assert_fail(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 496, ptr noundef nonnull @__PRETTY_FUNCTION__.deposit64) #9 @@ -1908,9 +1908,9 @@ deposit64.exit.i: ; preds = %if.then.i364 %shl.i.i = shl i64 %shr.i.i371, %sh_prom5.i.i %not.i.i372 = xor i64 %shl.i.i, -1 %and.i.i373 = and i64 %289, %not.i.i372 - %shl77.i.i = and i64 %288, %shr.i.i371 - %and8.i.i = shl i64 %shl77.i.i, %sh_prom5.i.i - %or.i.i374 = or i64 %and.i.i373, %and8.i.i + %shl7.i.i = shl i64 %288, %sh_prom5.i.i + %and8.i.i = and i64 %shl7.i.i, %shl.i.i + %or.i.i374 = or disjoint i64 %and.i.i373, %and8.i.i %290 = load i64, ptr %args.i344, align 8 %call.i.i375 = call fastcc i64 @arg_new_constant(ptr noundef nonnull %ctx, i64 noundef %or.i.i374) call fastcc void @tcg_opt_gen_mov(ptr noundef nonnull %ctx, ptr noundef nonnull %op.01737, i64 noundef %290, i64 noundef %call.i.i375) @@ -1994,11 +1994,11 @@ if.then62.i: ; preds = %land.lhs.true55.i %conv69.i = trunc i64 %304 to i32 %cmp.i52.i = icmp slt i32 %conv66.i, 0 %cmp1.i53.i = icmp slt i32 %conv69.i, 1 - %or.cond.not9.i54.i = or i1 %cmp.i52.i, %cmp1.i53.i + %or.cond.not8.i54.i = or i1 %cmp.i52.i, %cmp1.i53.i %sub.i55.i = sub nsw i32 64, %conv66.i %cmp3.not.i56.i = icmp slt i32 %sub.i55.i, %conv69.i - %or.cond8.i57.i = select i1 %or.cond.not9.i54.i, i1 true, i1 %cmp3.not.i56.i - br i1 %or.cond8.i57.i, label %if.else.i68.i, label %deposit64.exit69.i + %or.cond7.i57.i = select i1 %or.cond.not8.i54.i, i1 true, i1 %cmp3.not.i56.i + br i1 %or.cond7.i57.i, label %if.else.i68.i, label %deposit64.exit69.i if.else.i68.i: ; preds = %if.then62.i call void @__assert_fail(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 496, ptr noundef nonnull @__PRETTY_FUNCTION__.deposit64) #9 @@ -2036,11 +2036,11 @@ if.end84.i: ; preds = %land.lhs.true55.i, %conv94.i = trunc i64 %310 to i32 %cmp.i73.i = icmp slt i32 %conv91.i, 0 %cmp1.i74.i = icmp slt i32 %conv94.i, 1 - %or.cond.not9.i75.i = or i1 %cmp.i73.i, %cmp1.i74.i + %or.cond.not8.i75.i = or i1 %cmp.i73.i, %cmp1.i74.i %sub.i76.i = sub nsw i32 64, %conv91.i %cmp3.not.i77.i = icmp slt i32 %sub.i76.i, %conv94.i - %or.cond8.i78.i = select i1 %or.cond.not9.i75.i, i1 true, i1 %cmp3.not.i77.i - br i1 %or.cond8.i78.i, label %if.else.i89.i, label %deposit64.exit90.i + %or.cond7.i78.i = select i1 %or.cond.not8.i75.i, i1 true, i1 %cmp3.not.i77.i + br i1 %or.cond7.i78.i, label %if.else.i89.i, label %deposit64.exit90.i if.else.i89.i: ; preds = %if.end84.i call void @__assert_fail(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 496, ptr noundef nonnull @__PRETTY_FUNCTION__.deposit64) #9 @@ -2058,9 +2058,9 @@ deposit64.exit90.i: ; preds = %if.end84.i %shl.i83.i = shl i64 %shr.i81.i, %sh_prom5.i82.i %not.i84.i = xor i64 %shl.i83.i, -1 %and.i85.i = and i64 %312, %not.i84.i - %shl77.i86.i = and i64 %311, %shr.i81.i - %and8.i87.i = shl i64 %shl77.i86.i, %sh_prom5.i82.i - %or.i88.i = or i64 %and.i85.i, %and8.i87.i + %shl7.i86.i = shl i64 %311, %sh_prom5.i82.i + %and8.i87.i = and i64 %shl7.i86.i, %shl.i83.i + %or.i88.i = or disjoint i64 %and.i85.i, %and8.i87.i store i64 %or.i88.i, ptr %z_mask, align 8 br label %if.then171 @@ -2161,8 +2161,8 @@ if.then.i433: ; preds = %land.lhs.true.i432 %val10.i435 = getelementptr inbounds i8, ptr %call.val.i10.i, i64 40 %336 = load i64, ptr %val10.i435, align 8 %and.i.i436 = and i64 %335, 4294967295 - %shl77.i.i437 = shl i64 %336, 32 - %or.i.i438 = or disjoint i64 %shl77.i.i437, %and.i.i436 + %shl7.i.i437 = shl i64 %336, 32 + %or.i.i438 = or disjoint i64 %shl7.i.i437, %and.i.i436 %337 = load i64, ptr %args.i414, align 8 %call.i.i439 = call fastcc i64 @arg_new_constant(ptr noundef nonnull %ctx, i64 noundef %or.i.i438) call fastcc void @tcg_opt_gen_mov(ptr noundef nonnull %ctx, ptr noundef nonnull %op.01737, i64 noundef %337, i64 noundef %call.i.i439) @@ -6562,17 +6562,17 @@ if.then: ; preds = %land.end12 if.then30: ; preds = %if.then %and.i = and i64 %12, 4294967295 - %shl77.i = shl i64 %16, 32 - %or.i = or disjoint i64 %shl77.i, %and.i + %shl7.i = shl i64 %16, 32 + %or.i = or disjoint i64 %shl7.i, %and.i %and.i64 = and i64 %17, 4294967295 - %shl77.i65 = shl i64 %18, 32 - %or.i67 = or disjoint i64 %shl77.i65, %and.i64 - %20 = sub i64 0, %or.i67 - %a.0.p = select i1 %add, i64 %or.i67, i64 %20 + %shl7.i65 = shl i64 %18, 32 + %or.i66 = or disjoint i64 %shl7.i65, %and.i64 + %20 = sub i64 0, %or.i66 + %a.0.p = select i1 %add, i64 %or.i66, i64 %20 %a.0 = add i64 %or.i, %a.0.p %shl.i = shl i64 %a.0, 32 %shr.i = ashr exact i64 %shl.i, 32 - %shr.i69 = ashr i64 %a.0, 32 + %shr.i68 = ashr i64 %a.0, 32 br label %if.end60 if.else38: ; preds = %if.then @@ -6592,16 +6592,16 @@ if.then45: ; preds = %if.else38 br label %if.end60 if.else50: ; preds = %if.else38 - %a.sroa.0.0.insert.insert.i78 = sub i128 %b.sroa.0.0.insert.insert.i, %b.sroa.0.0.insert.ext.i - %retval.sroa.0.0.extract.trunc.i79 = trunc i128 %a.sroa.0.0.insert.insert.i78 to i64 - %22 = lshr i128 %a.sroa.0.0.insert.insert.i78, 64 - %.tr.i80 = trunc nuw i128 %22 to i64 - %.narrow.i81 = sub i64 %.tr.i80, %18 + %a.sroa.0.0.insert.insert.i77 = sub i128 %b.sroa.0.0.insert.insert.i, %b.sroa.0.0.insert.ext.i + %retval.sroa.0.0.extract.trunc.i78 = trunc i128 %a.sroa.0.0.insert.insert.i77 to i64 + %22 = lshr i128 %a.sroa.0.0.insert.insert.i77, 64 + %.tr.i79 = trunc nuw i128 %22 to i64 + %.narrow.i80 = sub i64 %.tr.i79, %18 br label %if.end60 if.end60: ; preds = %if.then45, %if.else50, %if.then30 - %ah.0 = phi i64 [ %shr.i69, %if.then30 ], [ %.narrow.i, %if.then45 ], [ %.narrow.i81, %if.else50 ] - %al.0 = phi i64 [ %shr.i, %if.then30 ], [ %retval.sroa.0.0.extract.trunc.i, %if.then45 ], [ %retval.sroa.0.0.extract.trunc.i79, %if.else50 ] + %ah.0 = phi i64 [ %shr.i68, %if.then30 ], [ %.narrow.i, %if.then45 ], [ %.narrow.i80, %if.else50 ] + %al.0 = phi i64 [ %shr.i, %if.then30 ], [ %retval.sroa.0.0.extract.trunc.i, %if.then45 ], [ %retval.sroa.0.0.extract.trunc.i78, %if.else50 ] %23 = load i64, ptr %args, align 8 %arrayidx64 = getelementptr i8, ptr %op, i64 40 %24 = load i64, ptr %arrayidx64, align 8 @@ -6609,8 +6609,8 @@ if.end60: ; preds = %if.then45, %if.else %call65 = tail call ptr @tcg_op_insert_before(ptr noundef %25, ptr noundef nonnull %op, i32 noundef 0, i32 noundef 2) #8 %call.i = tail call fastcc i64 @arg_new_constant(ptr noundef nonnull %ctx, i64 noundef %al.0) tail call fastcc void @tcg_opt_gen_mov(ptr noundef nonnull %ctx, ptr noundef nonnull %op, i64 noundef %23, i64 noundef %call.i) - %call.i84 = tail call fastcc i64 @arg_new_constant(ptr noundef nonnull %ctx, i64 noundef %ah.0) - tail call fastcc void @tcg_opt_gen_mov(ptr noundef nonnull %ctx, ptr noundef %call65, i64 noundef %24, i64 noundef %call.i84) + %call.i83 = tail call fastcc i64 @arg_new_constant(ptr noundef nonnull %ctx, i64 noundef %ah.0) + tail call fastcc void @tcg_opt_gen_mov(ptr noundef nonnull %ctx, ptr noundef %call65, i64 noundef %24, i64 noundef %call.i83) br label %return if.end68: ; preds = %land.end12 @@ -6975,8 +6975,8 @@ if.then: ; preds = %land.lhs.true %val7 = getelementptr inbounds i8, ptr %call.val.i14, i64 40 %5 = load i64, ptr %val7, align 8 %and.i = and i64 %4, 4294967295 - %shl77.i = shl i64 %5, 32 - %or.i = or disjoint i64 %shl77.i, %and.i + %shl7.i = shl i64 %5, 32 + %or.i = or disjoint i64 %shl7.i, %and.i %6 = inttoptr i64 %p1.0.val to ptr %7 = getelementptr i8, ptr %6, i64 48 %call.val.i19 = load ptr, ptr %7, align 8 @@ -6998,8 +6998,8 @@ if.then12: ; preds = %land.lhs.true10 %val16 = getelementptr inbounds i8, ptr %call.val.i22, i64 40 %11 = load i64, ptr %val16, align 8 %and.i27 = and i64 %10, 4294967295 - %shl77.i28 = shl i64 %11, 32 - %or.i30 = or disjoint i64 %shl77.i28, %and.i27 + %shl7.i28 = shl i64 %11, 32 + %or.i29 = or disjoint i64 %shl7.i28, %and.i27 switch i32 %c, label %do.body.i [ i32 8, label %sw.bb.i i32 9, label %sw.bb1.i @@ -7014,43 +7014,43 @@ if.then12: ; preds = %land.lhs.true10 ] sw.bb.i: ; preds = %if.then12 - %cmp.i = icmp eq i64 %or.i30, %or.i + %cmp.i = icmp eq i64 %or.i29, %or.i br label %do_constant_folding_cond_64.exit sw.bb1.i: ; preds = %if.then12 - %cmp2.i = icmp ne i64 %or.i30, %or.i + %cmp2.i = icmp ne i64 %or.i29, %or.i br label %do_constant_folding_cond_64.exit sw.bb3.i: ; preds = %if.then12 - %cmp4.i = icmp slt i64 %or.i30, %or.i + %cmp4.i = icmp slt i64 %or.i29, %or.i br label %do_constant_folding_cond_64.exit sw.bb5.i: ; preds = %if.then12 - %cmp6.i = icmp sge i64 %or.i30, %or.i + %cmp6.i = icmp sge i64 %or.i29, %or.i br label %do_constant_folding_cond_64.exit sw.bb7.i: ; preds = %if.then12 - %cmp8.i = icmp sle i64 %or.i30, %or.i + %cmp8.i = icmp sle i64 %or.i29, %or.i br label %do_constant_folding_cond_64.exit sw.bb9.i: ; preds = %if.then12 - %cmp10.i = icmp sgt i64 %or.i30, %or.i + %cmp10.i = icmp sgt i64 %or.i29, %or.i br label %do_constant_folding_cond_64.exit sw.bb11.i: ; preds = %if.then12 - %cmp12.i = icmp ult i64 %or.i30, %or.i + %cmp12.i = icmp ult i64 %or.i29, %or.i br label %do_constant_folding_cond_64.exit sw.bb13.i: ; preds = %if.then12 - %cmp14.i = icmp uge i64 %or.i30, %or.i + %cmp14.i = icmp uge i64 %or.i29, %or.i br label %do_constant_folding_cond_64.exit sw.bb15.i: ; preds = %if.then12 - %cmp16.i = icmp ule i64 %or.i30, %or.i + %cmp16.i = icmp ule i64 %or.i29, %or.i br label %do_constant_folding_cond_64.exit sw.bb17.i: ; preds = %if.then12 - %cmp18.i = icmp ugt i64 %or.i30, %or.i + %cmp18.i = icmp ugt i64 %or.i29, %or.i br label %do_constant_folding_cond_64.exit do.body.i: ; preds = %if.then12 @@ -7110,44 +7110,44 @@ for.inc.i.i: ; preds = %for.body.i.i land.lhs.true26: ; preds = %for.body.i.i, %if.end23 %17 = inttoptr i64 %p1.8.val to ptr %18 = inttoptr i64 %p2.8.val to ptr - %cmp.i.i31 = icmp eq ptr %17, %18 - br i1 %cmp.i.i31, label %if.then29, label %if.end.i.i32 + %cmp.i.i30 = icmp eq ptr %17, %18 + br i1 %cmp.i.i30, label %if.then29, label %if.end.i.i31 -if.end.i.i32: ; preds = %land.lhs.true26 +if.end.i.i31: ; preds = %land.lhs.true26 %19 = getelementptr i8, ptr %17, i64 48 - %ts.val.i.i.i33 = load ptr, ptr %19, align 8 - %next_copy.i.i.i34 = getelementptr inbounds i8, ptr %ts.val.i.i.i33, i64 16 - %20 = load ptr, ptr %next_copy.i.i.i34, align 8 - %cmp.i.not.i.i35 = icmp eq ptr %20, %17 - br i1 %cmp.i.not.i.i35, label %return, label %lor.lhs.false.i.i36 + %ts.val.i.i.i32 = load ptr, ptr %19, align 8 + %next_copy.i.i.i33 = getelementptr inbounds i8, ptr %ts.val.i.i.i32, i64 16 + %20 = load ptr, ptr %next_copy.i.i.i33, align 8 + %cmp.i.not.i.i34 = icmp eq ptr %20, %17 + br i1 %cmp.i.not.i.i34, label %return, label %lor.lhs.false.i.i35 -lor.lhs.false.i.i36: ; preds = %if.end.i.i32 +lor.lhs.false.i.i35: ; preds = %if.end.i.i31 %21 = getelementptr i8, ptr %18, i64 48 - %ts.val.i8.i.i37 = load ptr, ptr %21, align 8 - %next_copy.i9.i.i38 = getelementptr inbounds i8, ptr %ts.val.i8.i.i37, i64 16 - %22 = load ptr, ptr %next_copy.i9.i.i38, align 8 - %cmp.i10.not.i.i39 = icmp eq ptr %22, %18 - br i1 %cmp.i10.not.i.i39, label %return, label %for.body.i.i40 - -for.body.i.i40: ; preds = %lor.lhs.false.i.i36, %for.inc.i.i43 - %i.014.i.i41 = phi ptr [ %i.0.i.i46, %for.inc.i.i43 ], [ %20, %lor.lhs.false.i.i36 ] - %cmp6.i.i42 = icmp eq ptr %i.014.i.i41, %18 - br i1 %cmp6.i.i42, label %if.then29, label %for.inc.i.i43 - -for.inc.i.i43: ; preds = %for.body.i.i40 - %23 = getelementptr i8, ptr %i.014.i.i41, i64 48 - %i.0.val.i.i44 = load ptr, ptr %23, align 8 - %i.0.in.i.i45 = getelementptr inbounds i8, ptr %i.0.val.i.i44, i64 16 - %i.0.i.i46 = load ptr, ptr %i.0.in.i.i45, align 8 - %cmp5.not.i.i47 = icmp eq ptr %i.0.i.i46, %17 - br i1 %cmp5.not.i.i47, label %return, label %for.body.i.i40, !llvm.loop !14 - -if.then29: ; preds = %for.body.i.i40, %land.lhs.true26 + %ts.val.i8.i.i36 = load ptr, ptr %21, align 8 + %next_copy.i9.i.i37 = getelementptr inbounds i8, ptr %ts.val.i8.i.i36, i64 16 + %22 = load ptr, ptr %next_copy.i9.i.i37, align 8 + %cmp.i10.not.i.i38 = icmp eq ptr %22, %18 + br i1 %cmp.i10.not.i.i38, label %return, label %for.body.i.i39 + +for.body.i.i39: ; preds = %lor.lhs.false.i.i35, %for.inc.i.i42 + %i.014.i.i40 = phi ptr [ %i.0.i.i45, %for.inc.i.i42 ], [ %20, %lor.lhs.false.i.i35 ] + %cmp6.i.i41 = icmp eq ptr %i.014.i.i40, %18 + br i1 %cmp6.i.i41, label %if.then29, label %for.inc.i.i42 + +for.inc.i.i42: ; preds = %for.body.i.i39 + %23 = getelementptr i8, ptr %i.014.i.i40, i64 48 + %i.0.val.i.i43 = load ptr, ptr %23, align 8 + %i.0.in.i.i44 = getelementptr inbounds i8, ptr %i.0.val.i.i43, i64 16 + %i.0.i.i45 = load ptr, ptr %i.0.in.i.i44, align 8 + %cmp5.not.i.i46 = icmp eq ptr %i.0.i.i45, %17 + br i1 %cmp5.not.i.i46, label %return, label %for.body.i.i39, !llvm.loop !14 + +if.then29: ; preds = %for.body.i.i39, %land.lhs.true26 %switch.tableidx = add i32 %c, -2 %24 = icmp ult i32 %switch.tableidx, 12 - br i1 %24, label %switch.hole_check, label %do.body.i52 + br i1 %24, label %switch.hole_check, label %do.body.i51 -do.body.i52: ; preds = %switch.hole_check, %if.then29 +do.body.i51: ; preds = %switch.hole_check, %if.then29 tail call void @g_assertion_message_expr(ptr noundef null, ptr noundef nonnull @.str, i32 noundef 666, ptr noundef nonnull @__func__.do_constant_folding_cond_eq, ptr noundef null) #9 unreachable @@ -7155,7 +7155,7 @@ switch.hole_check: ; preds = %if.then29 %switch.maskindex = trunc nuw i32 %switch.tableidx to i16 %switch.shifted = lshr i16 4047, %switch.maskindex %switch.lobit = trunc i16 %switch.shifted to i1 - br i1 %switch.lobit, label %switch.lookup, label %do.body.i52 + br i1 %switch.lobit, label %switch.lookup, label %do.body.i51 switch.lookup: ; preds = %switch.hole_check %25 = zext nneg i32 %switch.tableidx to i64 @@ -7163,8 +7163,8 @@ switch.lookup: ; preds = %switch.hole_check %switch.load = load i32, ptr %switch.gep, align 4 br label %return -return: ; preds = %for.inc.i.i, %for.inc.i.i43, %switch.lookup, %if.end.i.i32, %lor.lhs.false.i.i36, %if.end.i.i, %lor.lhs.false.i.i, %if.then20, %sw.bb21, %do_constant_folding_cond_64.exit - %retval.0 = phi i32 [ %conv, %do_constant_folding_cond_64.exit ], [ 1, %sw.bb21 ], [ 0, %if.then20 ], [ -1, %lor.lhs.false.i.i ], [ -1, %if.end.i.i ], [ -1, %lor.lhs.false.i.i36 ], [ -1, %if.end.i.i32 ], [ %switch.load, %switch.lookup ], [ -1, %for.inc.i.i43 ], [ -1, %for.inc.i.i ] +return: ; preds = %for.inc.i.i, %for.inc.i.i42, %switch.lookup, %if.end.i.i31, %lor.lhs.false.i.i35, %if.end.i.i, %lor.lhs.false.i.i, %if.then20, %sw.bb21, %do_constant_folding_cond_64.exit + %retval.0 = phi i32 [ %conv, %do_constant_folding_cond_64.exit ], [ 1, %sw.bb21 ], [ 0, %if.then20 ], [ -1, %lor.lhs.false.i.i ], [ -1, %if.end.i.i ], [ -1, %lor.lhs.false.i.i35 ], [ -1, %if.end.i.i31 ], [ %switch.load, %switch.lookup ], [ -1, %for.inc.i.i42 ], [ -1, %for.inc.i.i ] ret i32 %retval.0 } diff --git a/bench/qemu/optimized/target_riscv_cpu_helper.c.ll b/bench/qemu/optimized/target_riscv_cpu_helper.c.ll index 707b604751b..26553f8ea0c 100644 --- a/bench/qemu/optimized/target_riscv_cpu_helper.c.ll +++ b/bench/qemu/optimized/target_riscv_cpu_helper.c.ll @@ -59,44 +59,41 @@ land.rhs: ; preds = %land.lhs.true br label %land.end land.end: ; preds = %land.rhs, %land.lhs.true, %if.then - %and6.i73 = phi i32 [ 32768, %land.lhs.true ], [ 0, %if.then ], [ 32768, %land.rhs ] + %shl5.i72 = phi i32 [ 32888, %land.lhs.true ], [ 120, %if.then ], [ 32888, %land.rhs ] %bf.cast53 = phi i32 [ 0, %land.lhs.true ], [ 0, %if.then ], [ %9, %land.rhs ] %vill = getelementptr inbounds i8, ptr %env, i64 4648 %10 = load i8, ptr %vill, align 8 - %11 = and i8 %10, 1 - %shl57.i = zext nneg i8 %11 to i32 - %and6.i = shl nuw nsw i32 %shl57.i, 14 - %and6.i48 = shl nuw nsw i32 %conv.i, 10 - %or.i = or disjoint i32 %and6.i, %and6.i48 + %bf.cast = zext i8 %10 to i32 + %shl5.i = shl nuw nsw i32 %bf.cast, 14 + %and6.i = and i32 %shl5.i, 16384 + %shl5.i47 = shl nuw nsw i32 %conv.i, 10 + %or.i = or disjoint i32 %and6.i, %shl5.i47 %bf.cast40 = shl i32 %5, 7 - %and6.i53 = and i32 %bf.cast40, 896 - %or.i54 = or disjoint i32 %or.i, %and6.i53 - %and.i61 = or disjoint i32 %or.i54, %bf.cast53 - %12 = shl i32 %5, 14 - %and6.i63 = and i32 %12, 1048576 - %and6.i69 = and i32 %12, 2097152 - %and.i67.masked.masked = or disjoint i32 %and.i61, %and6.i63 - %and.i71.masked.masked = or disjoint i32 %and6.i69, %and6.i73 - %13 = or i32 %and.i71.masked.masked, %and.i67.masked.masked - %14 = or i32 %13, 120 + %shl5.i52 = and i32 %bf.cast40, 896 + %or.i54 = or disjoint i32 %or.i, %shl5.i52 + %or.i58 = or disjoint i32 %or.i54, %bf.cast53 + %11 = shl i32 %5, 14 + %12 = and i32 %11, 3145728 + %and.i71.masked.masked = or disjoint i32 %or.i58, %12 + %13 = or i32 %shl5.i72, %and.i71.masked.masked br label %if.end if.end: ; preds = %entry, %land.end - %flags.0 = phi i32 [ %14, %land.end ], [ 16504, %entry ] - %15 = load i32, ptr %xl, align 16 - %bf.value130 = and i32 %15, 3 - %and6.i81 = shl nuw nsw i32 %bf.value130, 16 - %and.i83 = or i32 %and6.i81, %flags.0 - %and6.i85 = shl nuw nsw i32 %bf.value130, 26 - %or.i86 = or i32 %and.i83, %and6.i85 + %flags.0 = phi i32 [ %13, %land.end ], [ 16504, %entry ] + %14 = load i32, ptr %xl, align 16 + %bf.value130 = and i32 %14, 3 + %shl5.i80 = shl nuw nsw i32 %bf.value130, 16 + %and.i83 = or i32 %flags.0, %shl5.i80 + %shl5.i84 = shl nuw nsw i32 %bf.value130, 26 + %or.i86 = add nuw nsw i32 %and.i83, %shl5.i84 %cur_pmmask = getelementptr inbounds i8, ptr %env, i64 5056 - %16 = load i64, ptr %cur_pmmask, align 16 - %cmp151.not = icmp eq i64 %16, 0 + %15 = load i64, ptr %cur_pmmask, align 16 + %cmp151.not = icmp eq i64 %15, 0 %or.i88 = or i32 %or.i86, 262144 %flags.1 = select i1 %cmp151.not, i32 %or.i86, i32 %or.i88 %cur_pmbase = getelementptr inbounds i8, ptr %env, i64 5064 - %17 = load i64, ptr %cur_pmbase, align 8 - %cmp162.not = icmp eq i64 %17, 0 + %16 = load i64, ptr %cur_pmbase, align 8 + %cmp162.not = icmp eq i64 %16, 0 %or.i90 = or i32 %flags.1, 524288 %flags.2 = select i1 %cmp162.not, i32 %flags.1, i32 %or.i90 store i32 %flags.2, ptr %pflags, align 4 diff --git a/bench/qemu/optimized/tcg-op-gvec.c.ll b/bench/qemu/optimized/tcg-op-gvec.c.ll index fabf08d41d3..73ae0f959b4 100644 --- a/bench/qemu/optimized/tcg-op-gvec.c.ll +++ b/bench/qemu/optimized/tcg-op-gvec.c.ll @@ -317,6 +317,7 @@ check_size_align.exit: ; preds = %do.body.i, %do.body %and.i = and i32 %cond.i, %maxsz %cmp13.i = icmp eq i32 %and.i, 0 tail call void @llvm.assume(i1 %cmp13.i) + %shl.i = shl nsw i32 %data, 10 %0 = add i32 %data, 2097152 %cmp = icmp ult i32 %0, 4194304 tail call void @llvm.assume(i1 %cmp) @@ -328,10 +329,9 @@ check_size_align.exit: ; preds = %do.body.i, %do.body %1 = add i32 %sub, 768 %2 = and i32 %1, 768 %and6.i = select i1 %cmp3, i32 512, i32 %2 - %shl57.i15 = and i32 %sub2, 255 - %or.i = or disjoint i32 %shl57.i15, %and6.i - %shl57.i18 = shl nsw i32 %data, 10 - %or.i20 = or disjoint i32 %or.i, %shl57.i18 + %and6.i16 = and i32 %sub2, 255 + %or.i = or disjoint i32 %and6.i16, %and6.i + %or.i20 = or disjoint i32 %or.i, %shl.i ret i32 %or.i20 } @@ -362,6 +362,7 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %and.i.i = and i32 %cond.i.i, %maxsz %cmp13.i.i = icmp eq i32 %and.i.i, 0 tail call void @llvm.assume(i1 %cmp13.i.i) + %shl.i.i = shl nsw i32 %data, 10 %0 = add i32 %data, 2097152 %cmp.i = icmp ult i32 %0, 4194304 tail call void @llvm.assume(i1 %cmp.i) @@ -373,10 +374,9 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %1 = add i32 %sub.i, 768 %2 = and i32 %1, 768 %and6.i.i = select i1 %cmp3.i, i32 512, i32 %2 - %shl57.i15.i = and i32 %sub2.i, 255 - %or.i.i = or disjoint i32 %shl57.i15.i, %and6.i.i - %shl57.i18.i = shl nsw i32 %data, 10 - %or.i20.i = or disjoint i32 %or.i.i, %shl57.i18.i + %and6.i16.i = and i32 %sub2.i, 255 + %or.i.i = or disjoint i32 %and6.i16.i, %and6.i.i + %or.i20.i = or disjoint i32 %or.i.i, %shl.i.i %call1 = tail call ptr @tcg_constant_i32(i32 noundef %or.i20.i) #7 %call2 = tail call ptr @tcg_temp_ebb_new_ptr() #7 %call3 = tail call ptr @tcg_temp_ebb_new_ptr() #7 @@ -425,6 +425,7 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %and.i.i = and i32 %cond.i.i, %maxsz %cmp13.i.i = icmp eq i32 %and.i.i, 0 tail call void @llvm.assume(i1 %cmp13.i.i) + %shl.i.i = shl nsw i32 %data, 10 %0 = add i32 %data, 2097152 %cmp.i = icmp ult i32 %0, 4194304 tail call void @llvm.assume(i1 %cmp.i) @@ -436,10 +437,9 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %1 = add i32 %sub.i, 768 %2 = and i32 %1, 768 %and6.i.i = select i1 %cmp3.i, i32 512, i32 %2 - %shl57.i15.i = and i32 %sub2.i, 255 - %or.i.i = or disjoint i32 %shl57.i15.i, %and6.i.i - %shl57.i18.i = shl nsw i32 %data, 10 - %or.i20.i = or disjoint i32 %or.i.i, %shl57.i18.i + %and6.i16.i = and i32 %sub2.i, 255 + %or.i.i = or disjoint i32 %and6.i16.i, %and6.i.i + %or.i20.i = or disjoint i32 %or.i.i, %shl.i.i %call1 = tail call ptr @tcg_constant_i32(i32 noundef %or.i20.i) #7 %call2 = tail call ptr @tcg_temp_ebb_new_ptr() #7 %call3 = tail call ptr @tcg_temp_ebb_new_ptr() #7 @@ -482,6 +482,7 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %and.i.i = and i32 %cond.i.i, %maxsz %cmp13.i.i = icmp eq i32 %and.i.i, 0 tail call void @llvm.assume(i1 %cmp13.i.i) + %shl.i.i = shl nsw i32 %data, 10 %0 = add i32 %data, 2097152 %cmp.i = icmp ult i32 %0, 4194304 tail call void @llvm.assume(i1 %cmp.i) @@ -493,10 +494,9 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %1 = add i32 %sub.i, 768 %2 = and i32 %1, 768 %and6.i.i = select i1 %cmp3.i, i32 512, i32 %2 - %shl57.i15.i = and i32 %sub2.i, 255 - %or.i.i = or disjoint i32 %shl57.i15.i, %and6.i.i - %shl57.i18.i = shl nsw i32 %data, 10 - %or.i20.i = or disjoint i32 %or.i.i, %shl57.i18.i + %and6.i16.i = and i32 %sub2.i, 255 + %or.i.i = or disjoint i32 %and6.i16.i, %and6.i.i + %or.i20.i = or disjoint i32 %or.i.i, %shl.i.i %call1 = tail call ptr @tcg_constant_i32(i32 noundef %or.i20.i) #7 %call2 = tail call ptr @tcg_temp_ebb_new_ptr() #7 %call3 = tail call ptr @tcg_temp_ebb_new_ptr() #7 @@ -544,6 +544,7 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %and.i.i = and i32 %cond.i.i, %maxsz %cmp13.i.i = icmp eq i32 %and.i.i, 0 tail call void @llvm.assume(i1 %cmp13.i.i) + %shl.i.i = shl nsw i32 %data, 10 %0 = add i32 %data, 2097152 %cmp.i = icmp ult i32 %0, 4194304 tail call void @llvm.assume(i1 %cmp.i) @@ -555,10 +556,9 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %1 = add i32 %sub.i, 768 %2 = and i32 %1, 768 %and6.i.i = select i1 %cmp3.i, i32 512, i32 %2 - %shl57.i15.i = and i32 %sub2.i, 255 - %or.i.i = or disjoint i32 %shl57.i15.i, %and6.i.i - %shl57.i18.i = shl nsw i32 %data, 10 - %or.i20.i = or disjoint i32 %or.i.i, %shl57.i18.i + %and6.i16.i = and i32 %sub2.i, 255 + %or.i.i = or disjoint i32 %and6.i16.i, %and6.i.i + %or.i20.i = or disjoint i32 %or.i.i, %shl.i.i %call1 = tail call ptr @tcg_constant_i32(i32 noundef %or.i20.i) #7 %call2 = tail call ptr @tcg_temp_ebb_new_ptr() #7 %call3 = tail call ptr @tcg_temp_ebb_new_ptr() #7 @@ -611,6 +611,7 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %and.i.i = and i32 %cond.i.i, %maxsz %cmp13.i.i = icmp eq i32 %and.i.i, 0 tail call void @llvm.assume(i1 %cmp13.i.i) + %shl.i.i = shl nsw i32 %data, 10 %0 = add i32 %data, 2097152 %cmp.i = icmp ult i32 %0, 4194304 tail call void @llvm.assume(i1 %cmp.i) @@ -622,10 +623,9 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %1 = add i32 %sub.i, 768 %2 = and i32 %1, 768 %and6.i.i = select i1 %cmp3.i, i32 512, i32 %2 - %shl57.i15.i = and i32 %sub2.i, 255 - %or.i.i = or disjoint i32 %shl57.i15.i, %and6.i.i - %shl57.i18.i = shl nsw i32 %data, 10 - %or.i20.i = or disjoint i32 %or.i.i, %shl57.i18.i + %and6.i16.i = and i32 %sub2.i, 255 + %or.i.i = or disjoint i32 %and6.i16.i, %and6.i.i + %or.i20.i = or disjoint i32 %or.i.i, %shl.i.i %call1 = tail call ptr @tcg_constant_i32(i32 noundef %or.i20.i) #7 %call2 = tail call ptr @tcg_temp_ebb_new_ptr() #7 %call3 = tail call ptr @tcg_temp_ebb_new_ptr() #7 @@ -683,6 +683,7 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %and.i.i = and i32 %cond.i.i, %maxsz %cmp13.i.i = icmp eq i32 %and.i.i, 0 tail call void @llvm.assume(i1 %cmp13.i.i) + %shl.i.i = shl nsw i32 %data, 10 %0 = add i32 %data, 2097152 %cmp.i = icmp ult i32 %0, 4194304 tail call void @llvm.assume(i1 %cmp.i) @@ -694,10 +695,9 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %1 = add i32 %sub.i, 768 %2 = and i32 %1, 768 %and6.i.i = select i1 %cmp3.i, i32 512, i32 %2 - %shl57.i15.i = and i32 %sub2.i, 255 - %or.i.i = or disjoint i32 %shl57.i15.i, %and6.i.i - %shl57.i18.i = shl nsw i32 %data, 10 - %or.i20.i = or disjoint i32 %or.i.i, %shl57.i18.i + %and6.i16.i = and i32 %sub2.i, 255 + %or.i.i = or disjoint i32 %and6.i16.i, %and6.i.i + %or.i20.i = or disjoint i32 %or.i.i, %shl.i.i %call1 = tail call ptr @tcg_constant_i32(i32 noundef %or.i20.i) #7 %call2 = tail call ptr @tcg_temp_ebb_new_ptr() #7 %call3 = tail call ptr @tcg_temp_ebb_new_ptr() #7 @@ -740,6 +740,7 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %and.i.i = and i32 %cond.i.i, %maxsz %cmp13.i.i = icmp eq i32 %and.i.i, 0 tail call void @llvm.assume(i1 %cmp13.i.i) + %shl.i.i = shl nsw i32 %data, 10 %0 = add i32 %data, 2097152 %cmp.i = icmp ult i32 %0, 4194304 tail call void @llvm.assume(i1 %cmp.i) @@ -751,10 +752,9 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %1 = add i32 %sub.i, 768 %2 = and i32 %1, 768 %and6.i.i = select i1 %cmp3.i, i32 512, i32 %2 - %shl57.i15.i = and i32 %sub2.i, 255 - %or.i.i = or disjoint i32 %shl57.i15.i, %and6.i.i - %shl57.i18.i = shl nsw i32 %data, 10 - %or.i20.i = or disjoint i32 %or.i.i, %shl57.i18.i + %and6.i16.i = and i32 %sub2.i, 255 + %or.i.i = or disjoint i32 %and6.i16.i, %and6.i.i + %or.i20.i = or disjoint i32 %or.i.i, %shl.i.i %call1 = tail call ptr @tcg_constant_i32(i32 noundef %or.i20.i) #7 %call2 = tail call ptr @tcg_temp_ebb_new_ptr() #7 %call3 = tail call ptr @tcg_temp_ebb_new_ptr() #7 @@ -802,6 +802,7 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %and.i.i = and i32 %cond.i.i, %maxsz %cmp13.i.i = icmp eq i32 %and.i.i, 0 tail call void @llvm.assume(i1 %cmp13.i.i) + %shl.i.i = shl nsw i32 %data, 10 %0 = add i32 %data, 2097152 %cmp.i = icmp ult i32 %0, 4194304 tail call void @llvm.assume(i1 %cmp.i) @@ -813,10 +814,9 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %1 = add i32 %sub.i, 768 %2 = and i32 %1, 768 %and6.i.i = select i1 %cmp3.i, i32 512, i32 %2 - %shl57.i15.i = and i32 %sub2.i, 255 - %or.i.i = or disjoint i32 %shl57.i15.i, %and6.i.i - %shl57.i18.i = shl nsw i32 %data, 10 - %or.i20.i = or disjoint i32 %or.i.i, %shl57.i18.i + %and6.i16.i = and i32 %sub2.i, 255 + %or.i.i = or disjoint i32 %and6.i16.i, %and6.i.i + %or.i20.i = or disjoint i32 %or.i.i, %shl.i.i %call1 = tail call ptr @tcg_constant_i32(i32 noundef %or.i20.i) #7 %call2 = tail call ptr @tcg_temp_ebb_new_ptr() #7 %call3 = tail call ptr @tcg_temp_ebb_new_ptr() #7 @@ -869,6 +869,7 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %and.i.i = and i32 %cond.i.i, %maxsz %cmp13.i.i = icmp eq i32 %and.i.i, 0 tail call void @llvm.assume(i1 %cmp13.i.i) + %shl.i.i = shl nsw i32 %data, 10 %0 = add i32 %data, 2097152 %cmp.i = icmp ult i32 %0, 4194304 tail call void @llvm.assume(i1 %cmp.i) @@ -880,10 +881,9 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %1 = add i32 %sub.i, 768 %2 = and i32 %1, 768 %and6.i.i = select i1 %cmp3.i, i32 512, i32 %2 - %shl57.i15.i = and i32 %sub2.i, 255 - %or.i.i = or disjoint i32 %shl57.i15.i, %and6.i.i - %shl57.i18.i = shl nsw i32 %data, 10 - %or.i20.i = or disjoint i32 %or.i.i, %shl57.i18.i + %and6.i16.i = and i32 %sub2.i, 255 + %or.i.i = or disjoint i32 %and6.i16.i, %and6.i.i + %or.i20.i = or disjoint i32 %or.i.i, %shl.i.i %call1 = tail call ptr @tcg_constant_i32(i32 noundef %or.i20.i) #7 %call2 = tail call ptr @tcg_temp_ebb_new_ptr() #7 %call3 = tail call ptr @tcg_temp_ebb_new_ptr() #7 @@ -4130,8 +4130,8 @@ simd_desc.exit: ; preds = %if.end153, %do.body %18 = add i32 %sub.i, 768 %19 = and i32 %18, 768 %and6.i.i = select i1 %cmp3.i, i32 512, i32 %19 - %shl57.i15.i = and i32 %sub2.i, 255 - %or.i.i = or disjoint i32 %and6.i.i, %shl57.i15.i + %and6.i16.i = and i32 %sub2.i, 255 + %or.i.i = or disjoint i32 %and6.i.i, %and6.i16.i %call155 = tail call ptr @tcg_constant_i32(i32 noundef %or.i.i) #7 %cmp156 = icmp eq i32 %vece.addr.0171, 3 br i1 %cmp156, label %if.then158, label %if.else164 @@ -8246,8 +8246,8 @@ simd_desc.exit: ; preds = %do.body.i.i, %do.bo %28 = add i32 %sub.i, 768 %29 = and i32 %28, 768 %and6.i.i = select i1 %cmp3.i, i32 512, i32 %29 - %shl57.i15.i = and i32 %sub2.i, 255 - %or.i.i = or disjoint i32 %and6.i.i, %shl57.i15.i + %and6.i16.i = and i32 %sub2.i, 255 + %or.i.i = or disjoint i32 %and6.i.i, %and6.i16.i tail call void @tcg_gen_ori_i32(ptr noundef %call57, ptr noundef %call57, i32 noundef %or.i.i) #7 %30 = load ptr, ptr @tcg_env, align 8 %conv = zext i32 %dofs to i64 diff --git a/bench/qemu/optimized/tcg.c.ll b/bench/qemu/optimized/tcg.c.ll index a8cd804ffcd..dc098480137 100644 --- a/bench/qemu/optimized/tcg.c.ll +++ b/bench/qemu/optimized/tcg.c.ll @@ -17885,22 +17885,23 @@ tcg_out_evex_opc.exit: ; preds = %if.end18.i, %if.els %conv.i = and i32 %1, 8192 %2 = shl i32 %r, 12 %conv42.i = and i32 %2, 32768 - %not.i = shl i32 %v, 19 - %shl57.i32.i = and i32 %not.i, 7864320 + %not.i = xor i32 %v, -1 + %shl5.i30.i = shl i32 %not.i, 19 + %and6.i31.i = and i32 %shl5.i30.i, 7864320 %3 = shl i32 %opc, 11 - %and6.i37.i = and i32 %3, 8388608 + %shl5.i34.i = and i32 %3, 8388608 %4 = shl i32 %opc, 10 - %and6.i41.i = and i32 %4, 536870912 - %5 = or disjoint i32 %and6.i41.i, %and6.i37.i + %shl5.i38.i = and i32 %4, 536870912 + %5 = or disjoint i32 %shl5.i38.i, %shl5.i34.i %6 = or disjoint i32 %5, %conv42.i - %7 = or disjoint i32 %6, %shl57.i32.i - %or.i34.i = or disjoint i32 %7, %conv.i - %or.i38.i = or disjoint i32 %or.i34.i, %mm.0.i - %8 = or i32 %or.i38.i, %pp.0.i - %or.i42.i = xor i32 %8, 7921664 + %7 = or disjoint i32 %6, %and6.i31.i + %or.i32.i = or disjoint i32 %7, %conv.i + %or.i36.i = or disjoint i32 %or.i32.i, %mm.0.i + %8 = or i32 %or.i36.i, %pp.0.i + %or.i40.i = xor i32 %8, 57344 %code_ptr.i.i = getelementptr inbounds i8, ptr %s, i64 128 %9 = load ptr, ptr %code_ptr.i.i, align 8 - store i32 %or.i42.i, ptr %9, align 1 + store i32 %or.i40.i, ptr %9, align 1 %add.ptr.i.i = getelementptr i8, ptr %9, i64 4 %conv54.i = trunc i32 %opc to i8 %incdec.ptr.i.i = getelementptr i8, ptr %9, i64 5 diff --git a/bench/quickjs/optimized/libbf.ll b/bench/quickjs/optimized/libbf.ll index d64a3dd475c..e4547c18c7d 100644 --- a/bench/quickjs/optimized/libbf.ll +++ b/bench/quickjs/optimized/libbf.ll @@ -7366,127 +7366,127 @@ bf_logic_op1.exit140: ; preds = %174, %176, %178 .critedge.i: ; preds = %191 %202 = getelementptr i8, ptr %192, i64 -8 - %.neg.i = sub i64 %57, %188 - %203 = add i64 %.neg.i, %.03443.i - %204 = shl i64 %203, 6 - store i64 %204, ptr %185, align 8 - %205 = load i64, ptr %202, align 8 - %206 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %205, i1 false) - %.not38.i = icmp eq i64 %206, 0 - br i1 %.not38.i, label %220, label %.preheader.i + %.neg.i = sub i64 %.03443.i, %188 + %.neg37.i = shl i64 %.neg.i, 6 + %203 = add i64 %.neg37.i, %184 + store i64 %203, ptr %185, align 8 + %204 = load i64, ptr %202, align 8 + %205 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %204, i1 false) + %.not38.i = icmp eq i64 %205, 0 + br i1 %.not38.i, label %219, label %.preheader.i .preheader.i: ; preds = %.critedge.i - %207 = sub nuw nsw i64 64, %206 - br label %208 + %206 = sub nuw nsw i64 64, %205 + br label %207 -208: ; preds = %208, %.preheader.i - %.045.i = phi i64 [ 0, %.preheader.i ], [ %215, %208 ] - %.03544.i = phi i64 [ 0, %.preheader.i ], [ %211, %208 ] - %209 = load ptr, ptr %189, align 8 - %210 = getelementptr i64, ptr %209, i64 %.045.i - %211 = load i64, ptr %210, align 8 - %212 = shl i64 %211, %206 - %213 = lshr i64 %.03544.i, %207 - %214 = or i64 %212, %213 - store i64 %214, ptr %210, align 8 - %215 = add nuw i64 %.045.i, 1 - %216 = icmp ult i64 %215, %.03443.i - br i1 %216, label %208, label %217, !llvm.loop !12 - -217: ; preds = %208 - %218 = load i64, ptr %185, align 8 - %219 = sub i64 %218, %206 - store i64 %219, ptr %185, align 8 - br label %220 +207: ; preds = %207, %.preheader.i + %.045.i = phi i64 [ 0, %.preheader.i ], [ %214, %207 ] + %.03544.i = phi i64 [ 0, %.preheader.i ], [ %210, %207 ] + %208 = load ptr, ptr %189, align 8 + %209 = getelementptr i64, ptr %208, i64 %.045.i + %210 = load i64, ptr %209, align 8 + %211 = shl i64 %210, %205 + %212 = lshr i64 %.03544.i, %206 + %213 = or i64 %211, %212 + store i64 %213, ptr %209, align 8 + %214 = add nuw i64 %.045.i, 1 + %215 = icmp ult i64 %214, %.03443.i + br i1 %215, label %207, label %216, !llvm.loop !12 + +216: ; preds = %207 + %217 = load i64, ptr %185, align 8 + %218 = sub i64 %217, %205 + store i64 %218, ptr %185, align 8 + br label %219 -220: ; preds = %217, %.critedge.i - %221 = call fastcc i32 @__bf_round(ptr noundef nonnull %0, i64 noundef 4611686018427387903, i32 noundef 1, i64 noundef %.03443.i, i32 noundef 0) +219: ; preds = %216, %.critedge.i + %220 = call fastcc i32 @__bf_round(ptr noundef nonnull %0, i64 noundef 4611686018427387903, i32 noundef 1, i64 noundef %.03443.i, i32 noundef 0) br label %bf_normalize_and_round.exit -bf_normalize_and_round.exit: ; preds = %._crit_edge.thread.i, %198, %220 - br i1 %55, label %224, label %222 +bf_normalize_and_round.exit: ; preds = %._crit_edge.thread.i, %198, %219 + br i1 %55, label %223, label %221 -222: ; preds = %bf_normalize_and_round.exit - %223 = call i32 @bf_add_si(ptr noundef nonnull %0, ptr noundef nonnull %0, i64 noundef -1, i64 noundef 4611686018427387903, i32 noundef 1) - %.not128 = icmp eq i32 %223, 0 - br i1 %.not128, label %224, label %bf_resize.exit +221: ; preds = %bf_normalize_and_round.exit + %222 = call i32 @bf_add_si(ptr noundef nonnull %0, ptr noundef nonnull %0, i64 noundef -1, i64 noundef 4611686018427387903, i32 noundef 1) + %.not128 = icmp eq i32 %222, 0 + br i1 %.not128, label %223, label %bf_resize.exit -224: ; preds = %bf_normalize_and_round.exit, %222, %bf_set_nan.exit - %.278 = phi ptr [ %.076, %bf_set_nan.exit ], [ %.pn170, %222 ], [ %.pn170, %bf_normalize_and_round.exit ] - %.2 = phi ptr [ %.075, %bf_set_nan.exit ], [ %.1, %222 ], [ %.1, %bf_normalize_and_round.exit ] - %.0 = phi i32 [ 32, %bf_set_nan.exit ], [ 0, %222 ], [ 0, %bf_normalize_and_round.exit ] - %225 = icmp eq ptr %.2, %6 - br i1 %225, label %226, label %bf_delete.exit +223: ; preds = %bf_normalize_and_round.exit, %221, %bf_set_nan.exit + %.278 = phi ptr [ %.076, %bf_set_nan.exit ], [ %.pn170, %221 ], [ %.pn170, %bf_normalize_and_round.exit ] + %.2 = phi ptr [ %.075, %bf_set_nan.exit ], [ %.1, %221 ], [ %.1, %bf_normalize_and_round.exit ] + %.0 = phi i32 [ 32, %bf_set_nan.exit ], [ 0, %221 ], [ 0, %bf_normalize_and_round.exit ] + %224 = icmp eq ptr %.2, %6 + br i1 %224, label %225, label %bf_delete.exit -226: ; preds = %224 - %227 = load ptr, ptr %.2, align 8 - %.not.i141 = icmp eq ptr %227, null - br i1 %.not.i141, label %bf_delete.exit, label %228 +225: ; preds = %223 + %226 = load ptr, ptr %.2, align 8 + %.not.i141 = icmp eq ptr %226, null + br i1 %.not.i141, label %bf_delete.exit, label %227 -228: ; preds = %226 - %229 = getelementptr inbounds i8, ptr %.2, i64 32 - %230 = load ptr, ptr %229, align 8 - %.not6.i = icmp eq ptr %230, null - br i1 %.not6.i, label %bf_delete.exit, label %231 +227: ; preds = %225 + %228 = getelementptr inbounds i8, ptr %.2, i64 32 + %229 = load ptr, ptr %228, align 8 + %.not6.i = icmp eq ptr %229, null + br i1 %.not6.i, label %bf_delete.exit, label %230 -231: ; preds = %228 - %.val.i142 = load ptr, ptr %227, align 8 - %232 = getelementptr i8, ptr %227, i64 8 - %.val7.i = load ptr, ptr %232, align 8 - %233 = call ptr %.val7.i(ptr noundef %.val.i142, ptr noundef nonnull %230, i64 noundef 0) #17 +230: ; preds = %227 + %.val.i142 = load ptr, ptr %226, align 8 + %231 = getelementptr i8, ptr %226, i64 8 + %.val7.i = load ptr, ptr %231, align 8 + %232 = call ptr %.val7.i(ptr noundef %.val.i142, ptr noundef nonnull %229, i64 noundef 0) #17 br label %bf_delete.exit -bf_delete.exit: ; preds = %231, %228, %226, %224 - %234 = icmp eq ptr %.278, %5 - br i1 %234, label %235, label %bf_delete.exit147 - -235: ; preds = %bf_delete.exit - %236 = load ptr, ptr %.278, align 8 - %.not.i143 = icmp eq ptr %236, null - br i1 %.not.i143, label %bf_delete.exit147, label %237 - -237: ; preds = %235 - %238 = getelementptr inbounds i8, ptr %.278, i64 32 - %239 = load ptr, ptr %238, align 8 - %.not6.i144 = icmp eq ptr %239, null - br i1 %.not6.i144, label %bf_delete.exit147, label %240 - -240: ; preds = %237 - %.val.i145 = load ptr, ptr %236, align 8 - %241 = getelementptr i8, ptr %236, i64 8 - %.val7.i146 = load ptr, ptr %241, align 8 - %242 = call ptr %.val7.i146(ptr noundef %.val.i145, ptr noundef nonnull %239, i64 noundef 0) #17 +bf_delete.exit: ; preds = %230, %227, %225, %223 + %233 = icmp eq ptr %.278, %5 + br i1 %233, label %234, label %bf_delete.exit147 + +234: ; preds = %bf_delete.exit + %235 = load ptr, ptr %.278, align 8 + %.not.i143 = icmp eq ptr %235, null + br i1 %.not.i143, label %bf_delete.exit147, label %236 + +236: ; preds = %234 + %237 = getelementptr inbounds i8, ptr %.278, i64 32 + %238 = load ptr, ptr %237, align 8 + %.not6.i144 = icmp eq ptr %238, null + br i1 %.not6.i144, label %bf_delete.exit147, label %239 + +239: ; preds = %236 + %.val.i145 = load ptr, ptr %235, align 8 + %240 = getelementptr i8, ptr %235, i64 8 + %.val7.i146 = load ptr, ptr %240, align 8 + %241 = call ptr %.val7.i146(ptr noundef %.val.i145, ptr noundef nonnull %238, i64 noundef 0) #17 br label %bf_delete.exit147 -bf_delete.exit147: ; preds = %240, %237, %235, %bf_delete.exit +bf_delete.exit147: ; preds = %239, %236, %234, %bf_delete.exit ret i32 %.0 -bf_resize.exit: ; preds = %60, %22, %222, %27 - %.076 = phi ptr [ %5, %27 ], [ %.pn170, %222 ], [ null, %22 ], [ %.pn170, %60 ] - %.075 = phi ptr [ %.1, %27 ], [ %.1, %222 ], [ %6, %22 ], [ %.1, %60 ] - %243 = getelementptr inbounds i8, ptr %0, i64 24 - %244 = load i64, ptr %243, align 8 - %.not.i.i = icmp eq i64 %244, 0 - br i1 %.not.i.i, label %bf_set_nan.exit, label %245 - -245: ; preds = %bf_resize.exit - %246 = load ptr, ptr %0, align 8 - %247 = getelementptr inbounds i8, ptr %0, i64 32 - %248 = load ptr, ptr %247, align 8 - %.val.i.i148 = load ptr, ptr %246, align 8 - %249 = getelementptr i8, ptr %246, i64 8 - %.val13.i.i149 = load ptr, ptr %249, align 8 - %250 = call ptr %.val13.i.i149(ptr noundef %.val.i.i148, ptr noundef %248, i64 noundef 0) #17 - store ptr %250, ptr %247, align 8 - store i64 0, ptr %243, align 8 +bf_resize.exit: ; preds = %60, %22, %221, %27 + %.076 = phi ptr [ %5, %27 ], [ %.pn170, %221 ], [ null, %22 ], [ %.pn170, %60 ] + %.075 = phi ptr [ %.1, %27 ], [ %.1, %221 ], [ %6, %22 ], [ %.1, %60 ] + %242 = getelementptr inbounds i8, ptr %0, i64 24 + %243 = load i64, ptr %242, align 8 + %.not.i.i = icmp eq i64 %243, 0 + br i1 %.not.i.i, label %bf_set_nan.exit, label %244 + +244: ; preds = %bf_resize.exit + %245 = load ptr, ptr %0, align 8 + %246 = getelementptr inbounds i8, ptr %0, i64 32 + %247 = load ptr, ptr %246, align 8 + %.val.i.i148 = load ptr, ptr %245, align 8 + %248 = getelementptr i8, ptr %245, i64 8 + %.val13.i.i149 = load ptr, ptr %248, align 8 + %249 = call ptr %.val13.i.i149(ptr noundef %.val.i.i148, ptr noundef %247, i64 noundef 0) #17 + store ptr %249, ptr %246, align 8 + store i64 0, ptr %242, align 8 br label %bf_set_nan.exit -bf_set_nan.exit: ; preds = %bf_resize.exit, %245 - %251 = getelementptr inbounds i8, ptr %0, i64 16 - store i64 9223372036854775807, ptr %251, align 8 - %252 = getelementptr inbounds i8, ptr %0, i64 8 - store i32 0, ptr %252, align 8 - br label %224 +bf_set_nan.exit: ; preds = %bf_resize.exit, %244 + %250 = getelementptr inbounds i8, ptr %0, i64 16 + store i64 9223372036854775807, ptr %250, align 8 + %251 = getelementptr inbounds i8, ptr %0, i64 8 + store i32 0, ptr %251, align 8 + br label %223 } ; Function Attrs: nounwind uwtable diff --git a/bench/redis/optimized/tcache.ll b/bench/redis/optimized/tcache.ll index 48a89a0ba03..450e8668018 100644 --- a/bench/redis/optimized/tcache.ll +++ b/bench/redis/optimized/tcache.ll @@ -372,8 +372,8 @@ entry: %conv.i8 = zext i32 %sub.i to i64 call fastcc void @tcache_bin_flush_edatas_lookup(ptr noundef %tsd, ptr noundef nonnull %ptrs.i, i64 noundef %conv.i8, ptr noundef nonnull %vla.i) %vla7.i = alloca ptr, i64 %6, align 16 - %cmp.i.not215 = icmp eq i32 %sub.i, 0 - br i1 %cmp.i.not215, label %if.then132.i, label %while.body.i.lr.ph + %cmp.i.not214 = icmp eq i32 %sub.i, 0 + br i1 %cmp.i.not214, label %if.then132.i, label %while.body.i.lr.ph while.body.i.lr.ph: ; preds = %entry %idxprom.i = zext i32 %binind to i64 @@ -389,17 +389,17 @@ while.body.i.lr.ph: ; preds = %entry for.cond119.i.preheader: ; preds = %arena_decay_ticks.exit %7 = trunc nuw i8 %merged_stats.i.1 to i1 - %cmp120.i220.not = icmp eq i32 %dalloc_count.i.2, 0 - br i1 %cmp120.i220.not, label %for.end128.i, label %for.body122.i.preheader + %cmp120.i219.not = icmp eq i32 %dalloc_count.i.2, 0 + br i1 %cmp120.i219.not, label %for.end128.i, label %for.body122.i.preheader for.body122.i.preheader: ; preds = %for.cond119.i.preheader - %wide.trip.count226 = zext i32 %dalloc_count.i.2 to i64 + %wide.trip.count225 = zext i32 %dalloc_count.i.2 to i64 br label %for.body122.i while.body.i: ; preds = %while.body.i.lr.ph, %arena_decay_ticks.exit - %nflush.addr.i.0218 = phi i32 [ %sub.i, %while.body.i.lr.ph ], [ %ndeferred.i.1, %arena_decay_ticks.exit ] - %dalloc_count.i.0217 = phi i32 [ 0, %while.body.i.lr.ph ], [ %dalloc_count.i.2, %arena_decay_ticks.exit ] - %merged_stats.i.0216 = phi i8 [ 0, %while.body.i.lr.ph ], [ %merged_stats.i.1, %arena_decay_ticks.exit ] + %nflush.addr.i.0217 = phi i32 [ %sub.i, %while.body.i.lr.ph ], [ %ndeferred.i.1, %arena_decay_ticks.exit ] + %dalloc_count.i.0216 = phi i32 [ 0, %while.body.i.lr.ph ], [ %dalloc_count.i.2, %arena_decay_ticks.exit ] + %merged_stats.i.0215 = phi i8 [ 0, %while.body.i.lr.ph ], [ %merged_stats.i.1, %arena_decay_ticks.exit ] %8 = load ptr, ptr %vla.i, align 16 %.val = load i64, ptr %8, align 8 %idxprom.i158 = and i64 %.val, 4095 @@ -448,7 +448,7 @@ malloc_mutex_lock.exit: ; preds = %if.end.i, %if.then. br i1 %cmp25.i, label %land.lhs.true27.i, label %if.end67.i land.lhs.true27.i: ; preds = %malloc_mutex_lock.exit - %tobool28.i = trunc nuw i8 %merged_stats.i.0216 to i1 + %tobool28.i = trunc nuw i8 %merged_stats.i.0215 to i1 br i1 %tobool28.i, label %if.end67.i, label %if.then31.i if.then31.i: ; preds = %land.lhs.true27.i @@ -465,19 +465,19 @@ if.then31.i: ; preds = %land.lhs.true27.i br label %if.end67.i if.end67.i: ; preds = %if.then31.i, %land.lhs.true27.i, %malloc_mutex_lock.exit - %merged_stats.i.1 = phi i8 [ %merged_stats.i.0216, %land.lhs.true27.i ], [ 1, %if.then31.i ], [ %merged_stats.i.0216, %malloc_mutex_lock.exit ] + %merged_stats.i.1 = phi i8 [ %merged_stats.i.0215, %land.lhs.true27.i ], [ 1, %if.then31.i ], [ %merged_stats.i.0215, %malloc_mutex_lock.exit ] %19 = load i32, ptr %arrayidx.i39, align 4 %20 = load ptr, ptr %ptr.i, align 8 %conv.i170 = zext i32 %19 to i64 %slabcur.i = getelementptr inbounds i8, ptr %add.ptr.i166, i64 192 - %wide.trip.count = zext i32 %nflush.addr.i.0218 to i64 + %wide.trip.count = zext i32 %nflush.addr.i.0217 to i64 br label %for.body75.i for.body75.i: ; preds = %if.end67.i, %for.inc108.i %indvars.iv = phi i64 [ 0, %if.end67.i ], [ %indvars.iv.next, %for.inc108.i ] - %dalloc_count.i.1214 = phi i32 [ %dalloc_count.i.0217, %if.end67.i ], [ %dalloc_count.i.2, %for.inc108.i ] - %ndeferred.i.0213 = phi i32 [ 0, %if.end67.i ], [ %ndeferred.i.1, %for.inc108.i ] - %dalloc_bin_info.i.sroa.4.1211 = phi i64 [ 0, %if.end67.i ], [ %dalloc_bin_info.i.sroa.4.2, %for.inc108.i ] + %dalloc_count.i.1213 = phi i32 [ %dalloc_count.i.0216, %if.end67.i ], [ %dalloc_count.i.2, %for.inc108.i ] + %ndeferred.i.0212 = phi i32 [ 0, %if.end67.i ], [ %ndeferred.i.1, %for.inc108.i ] + %dalloc_bin_info.i.sroa.4.1210 = phi i64 [ 0, %if.end67.i ], [ %dalloc_bin_info.i.sroa.4.2, %for.inc108.i ] %arrayidx79.i = getelementptr inbounds ptr, ptr %20, i64 %indvars.iv %21 = load ptr, ptr %arrayidx79.i, align 8 %arrayidx81.i = getelementptr inbounds %union.emap_batch_lookup_result_u, ptr %vla.i, i64 %indvars.iv @@ -489,44 +489,45 @@ for.body75.i: ; preds = %if.end67.i, %for.in br i1 %cmp.i31, label %land.rhs.i33, label %if.then87.i land.rhs.i33: ; preds = %for.body75.i - %and.i168210 = xor i64 %.val148, %.val149 - %25 = and i64 %and.i168210, 17317308137472 - %cmp2.i35 = icmp eq i64 %25, 0 + %and.i168 = lshr i64 %.val148, 38 + %25 = xor i64 %and.i168, %and.i + %26 = and i64 %25, 63 + %cmp2.i35 = icmp eq i64 %26, 0 br i1 %cmp2.i35, label %if.then96.i, label %if.then87.i if.then87.i: ; preds = %for.body75.i, %land.rhs.i33 - %idxprom89.i = zext i32 %ndeferred.i.0213 to i64 + %idxprom89.i = zext i32 %ndeferred.i.0212 to i64 %arrayidx90.i = getelementptr inbounds ptr, ptr %20, i64 %idxprom89.i store ptr %21, ptr %arrayidx90.i, align 8 %arrayidx92.i = getelementptr inbounds %union.emap_batch_lookup_result_u, ptr %vla.i, i64 %idxprom89.i store ptr %22, ptr %arrayidx92.i, align 8 - %inc93.i = add i32 %ndeferred.i.0213, 1 + %inc93.i = add i32 %ndeferred.i.0212, 1 br label %for.inc108.i if.then96.i: ; preds = %land.rhs.i33 - %26 = ptrtoint ptr %21 to i64 - %27 = getelementptr i8, ptr %22, i64 8 - %.val151 = load ptr, ptr %27, align 8 - %28 = ptrtoint ptr %.val151 to i64 - %sub.i80 = sub i64 %26, %28 + %27 = ptrtoint ptr %21 to i64 + %28 = getelementptr i8, ptr %22, i64 8 + %.val151 = load ptr, ptr %28, align 8 + %29 = ptrtoint ptr %.val151 to i64 + %sub.i80 = sub i64 %27, %29 %mul.i = mul i64 %sub.i80, %conv.i170 %shr.i = lshr i64 %mul.i, 32 - %29 = getelementptr inbounds i8, ptr %22, i64 64 + %30 = getelementptr inbounds i8, ptr %22, i64 64 %shr.i171 = lshr i64 %mul.i, 38 - %arrayidx.i172 = getelementptr inbounds i64, ptr %29, i64 %shr.i171 - %30 = load i64, ptr %arrayidx.i172, align 8 + %arrayidx.i172 = getelementptr inbounds i64, ptr %30, i64 %shr.i171 + %31 = load i64, ptr %arrayidx.i172, align 8 %and.i173 = and i64 %shr.i, 63 %shl.i = shl nuw i64 1, %and.i173 - %xor.i = xor i64 %shl.i, %30 + %xor.i = xor i64 %shl.i, %31 store i64 %xor.i, ptr %arrayidx.i172, align 8 %add.i174 = add i64 %.val148, 268435456 store i64 %add.i174, ptr %22, align 8 - %inc.i48 = add i64 %dalloc_bin_info.i.sroa.4.1211, 1 + %inc.i48 = add i64 %dalloc_bin_info.i.sroa.4.1210, 1 %and.i175 = lshr i64 %add.i174, 28 - %31 = trunc i64 %and.i175 to i32 - %conv.i176 = and i32 %31, 1023 - %32 = load i32, ptr %nregs.i49, align 8 - %cmp.i50 = icmp eq i32 %conv.i176, %32 + %32 = trunc i64 %and.i175 to i32 + %conv.i176 = and i32 %32, 1023 + %33 = load i32, ptr %nregs.i49, align 8 + %cmp.i50 = icmp eq i32 %conv.i176, %33 br i1 %cmp.i50, label %if.then98.i, label %if.else.i51 if.else.i51: ; preds = %if.then96.i @@ -534,8 +535,8 @@ if.else.i51: ; preds = %if.then96.i br i1 %cmp5.i, label %land.lhs.true.i53, label %for.inc108.i land.lhs.true.i53: ; preds = %if.else.i51 - %33 = load ptr, ptr %slabcur.i, align 8 - %cmp6.i.not = icmp eq ptr %22, %33 + %34 = load ptr, ptr %slabcur.i, align 8 + %cmp6.i.not = icmp eq ptr %22, %34 br i1 %cmp6.i.not, label %for.inc108.i, label %if.then7.i if.then7.i: ; preds = %land.lhs.true.i53 @@ -544,28 +545,28 @@ if.then7.i: ; preds = %land.lhs.true.i53 if.then98.i: ; preds = %if.then96.i tail call void @arena_dalloc_bin_locked_handle_newly_empty(ptr noundef %tsd, ptr noundef %10, ptr noundef nonnull %22, ptr noundef %add.ptr.i166) #13 - %idxprom99.i = zext i32 %dalloc_count.i.1214 to i64 + %idxprom99.i = zext i32 %dalloc_count.i.1213 to i64 %arrayidx100.i = getelementptr inbounds ptr, ptr %vla7.i, i64 %idxprom99.i store ptr %22, ptr %arrayidx100.i, align 8 - %inc101.i = add i32 %dalloc_count.i.1214, 1 + %inc101.i = add i32 %dalloc_count.i.1213, 1 br label %for.inc108.i for.inc108.i: ; preds = %if.then7.i, %land.lhs.true.i53, %if.else.i51, %if.then98.i, %if.then87.i - %dalloc_bin_info.i.sroa.4.2 = phi i64 [ %inc.i48, %if.then98.i ], [ %dalloc_bin_info.i.sroa.4.1211, %if.then87.i ], [ %inc.i48, %if.else.i51 ], [ %inc.i48, %land.lhs.true.i53 ], [ %inc.i48, %if.then7.i ] - %ndeferred.i.1 = phi i32 [ %ndeferred.i.0213, %if.then98.i ], [ %inc93.i, %if.then87.i ], [ %ndeferred.i.0213, %if.else.i51 ], [ %ndeferred.i.0213, %land.lhs.true.i53 ], [ %ndeferred.i.0213, %if.then7.i ] - %dalloc_count.i.2 = phi i32 [ %inc101.i, %if.then98.i ], [ %dalloc_count.i.1214, %if.then87.i ], [ %dalloc_count.i.1214, %if.else.i51 ], [ %dalloc_count.i.1214, %land.lhs.true.i53 ], [ %dalloc_count.i.1214, %if.then7.i ] + %dalloc_bin_info.i.sroa.4.2 = phi i64 [ %inc.i48, %if.then98.i ], [ %dalloc_bin_info.i.sroa.4.1210, %if.then87.i ], [ %inc.i48, %if.else.i51 ], [ %inc.i48, %land.lhs.true.i53 ], [ %inc.i48, %if.then7.i ] + %ndeferred.i.1 = phi i32 [ %ndeferred.i.0212, %if.then98.i ], [ %inc93.i, %if.then87.i ], [ %ndeferred.i.0212, %if.else.i51 ], [ %ndeferred.i.0212, %land.lhs.true.i53 ], [ %ndeferred.i.0212, %if.then7.i ] + %dalloc_count.i.2 = phi i32 [ %inc101.i, %if.then98.i ], [ %dalloc_count.i.1213, %if.then87.i ], [ %dalloc_count.i.1213, %if.else.i51 ], [ %dalloc_count.i.1213, %land.lhs.true.i53 ], [ %dalloc_count.i.1213, %if.then7.i ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %if.then112.i, label %for.body75.i, !llvm.loop !5 if.then112.i: ; preds = %for.inc108.i %ndalloc1.i = getelementptr inbounds i8, ptr %add.ptr.i166, i64 120 - %34 = load i64, ptr %ndalloc1.i, align 8 - %add.i63 = add i64 %34, %dalloc_bin_info.i.sroa.4.2 + %35 = load i64, ptr %ndalloc1.i, align 8 + %add.i63 = add i64 %35, %dalloc_bin_info.i.sroa.4.2 store i64 %add.i63, ptr %ndalloc1.i, align 8 %curregs.i = getelementptr inbounds i8, ptr %add.ptr.i166, i64 136 - %35 = load i64, ptr %curregs.i, align 8 - %sub.i64 = sub i64 %35, %dalloc_bin_info.i.sroa.4.2 + %36 = load i64, ptr %curregs.i, align 8 + %sub.i64 = sub i64 %36, %dalloc_bin_info.i.sroa.4.2 store i64 %sub.i64, ptr %curregs.i, align 8 %locked.i177 = getelementptr inbounds i8, ptr %add.ptr.i166, i64 104 store atomic i8 0, ptr %locked.i177 monotonic, align 1 @@ -573,24 +574,24 @@ if.then112.i: ; preds = %for.inc108.i br i1 %cmp.i.i, label %arena_decay_ticks.exit, label %if.end.i68 if.end.i68: ; preds = %if.then112.i - %sub.i9.neg = sub i32 %ndeferred.i.1, %nflush.addr.i.0218 - %36 = load i32, ptr %cant_access_tsd_items_directly_use_a_getter_or_setter_arena_decay_ticker.i, align 4 - %sub.i178 = add i32 %36, %sub.i9.neg + %sub.i9.neg = sub i32 %ndeferred.i.1, %nflush.addr.i.0217 + %37 = load i32, ptr %cant_access_tsd_items_directly_use_a_getter_or_setter_arena_decay_ticker.i, align 4 + %sub.i178 = add i32 %37, %sub.i9.neg store i32 %sub.i178, ptr %cant_access_tsd_items_directly_use_a_getter_or_setter_arena_decay_ticker.i, align 4 %cmp.i179 = icmp slt i32 %sub.i178, 0 br i1 %cmp.i179, label %if.then12.i72, label %arena_decay_ticks.exit if.then12.i72: ; preds = %if.end.i68 - %37 = load i64, ptr %cant_access_tsd_items_directly_use_a_getter_or_setter_prng_state.i, align 8 - %mul.i.i.i = mul i64 %37, 6364136223846793005 + %38 = load i64, ptr %cant_access_tsd_items_directly_use_a_getter_or_setter_prng_state.i, align 8 + %mul.i.i.i = mul i64 %38, 6364136223846793005 %add.i.i.i = add i64 %mul.i.i.i, 1442695040888963407 store i64 %add.i.i.i, ptr %cant_access_tsd_items_directly_use_a_getter_or_setter_prng_state.i, align 8 %shr.i.i.i = lshr i64 %add.i.i.i, 58 - %38 = load i32, ptr %nticks.i.i, align 4 - %conv.i.i181 = sext i32 %38 to i64 + %39 = load i32, ptr %nticks.i.i, align 4 + %conv.i.i181 = sext i32 %39 to i64 %arrayidx.i.i = getelementptr inbounds [64 x i8], ptr @ticker_geom_table, i64 0, i64 %shr.i.i.i - %39 = load i8, ptr %arrayidx.i.i, align 1 - %conv1.i.i = zext i8 %39 to i64 + %40 = load i8, ptr %arrayidx.i.i, align 1 + %conv1.i.i = zext i8 %40 to i64 %mul.i.i = mul nsw i64 %conv1.i.i, %conv.i.i181 %div.i.i = udiv i64 %mul.i.i, 61 %conv2.i.i182 = trunc i64 %div.i.i to i32 @@ -603,18 +604,18 @@ arena_decay_ticks.exit: ; preds = %if.end.i68, %if.the br i1 %cmp.i.not, label %for.cond119.i.preheader, label %while.body.i, !llvm.loop !7 for.body122.i: ; preds = %for.body122.i.preheader, %for.body122.i - %indvars.iv223 = phi i64 [ 0, %for.body122.i.preheader ], [ %indvars.iv.next224, %for.body122.i ] - %arrayidx124.i = getelementptr inbounds ptr, ptr %vla7.i, i64 %indvars.iv223 - %40 = load ptr, ptr %arrayidx124.i, align 8 - %edata.val.i = load i64, ptr %40, align 8 + %indvars.iv222 = phi i64 [ 0, %for.body122.i.preheader ], [ %indvars.iv.next223, %for.body122.i ] + %arrayidx124.i = getelementptr inbounds ptr, ptr %vla7.i, i64 %indvars.iv222 + %41 = load ptr, ptr %arrayidx124.i, align 8 + %edata.val.i = load i64, ptr %41, align 8 %conv.i.i183 = and i64 %edata.val.i, 4095 %arrayidx.i184 = getelementptr inbounds [0 x %struct.atomic_p_t], ptr @arenas, i64 0, i64 %conv.i.i183 - %41 = load atomic i64, ptr %arrayidx.i184 monotonic, align 8 - %42 = inttoptr i64 %41 to ptr - tail call void @arena_slab_dalloc(ptr noundef %tsd, ptr noundef %42, ptr noundef nonnull %40) #13 - %indvars.iv.next224 = add nuw nsw i64 %indvars.iv223, 1 - %exitcond227.not = icmp eq i64 %indvars.iv.next224, %wide.trip.count226 - br i1 %exitcond227.not, label %for.end128.i, label %for.body122.i, !llvm.loop !8 + %42 = load atomic i64, ptr %arrayidx.i184 monotonic, align 8 + %43 = inttoptr i64 %42 to ptr + tail call void @arena_slab_dalloc(ptr noundef %tsd, ptr noundef %43, ptr noundef nonnull %41) #13 + %indvars.iv.next223 = add nuw nsw i64 %indvars.iv222, 1 + %exitcond226.not = icmp eq i64 %indvars.iv.next223, %wide.trip.count225 + br i1 %exitcond226.not, label %for.end128.i, label %for.body122.i, !llvm.loop !8 for.end128.i: ; preds = %for.body122.i, %for.cond119.i.preheader br i1 %7, label %tcache_bin_flush_impl.exit, label %if.then132.i @@ -634,32 +635,32 @@ if.then.i188: ; preds = %if.then132.i if.end.i190: ; preds = %if.then.i188, %if.then132.i %n_lock_ops.i.i191 = getelementptr inbounds i8, ptr %call133.i, i64 56 - %43 = load i64, ptr %n_lock_ops.i.i191, align 8 - %inc.i.i192 = add i64 %43, 1 + %44 = load i64, ptr %n_lock_ops.i.i191, align 8 + %inc.i.i192 = add i64 %44, 1 store i64 %inc.i.i192, ptr %n_lock_ops.i.i191, align 8 %prev_owner.i.i193 = getelementptr inbounds i8, ptr %call133.i, i64 48 - %44 = load ptr, ptr %prev_owner.i.i193, align 8 - %cmp.not.i.i194 = icmp eq ptr %44, %tsd + %45 = load ptr, ptr %prev_owner.i.i193, align 8 + %cmp.not.i.i194 = icmp eq ptr %45, %tsd br i1 %cmp.not.i.i194, label %malloc_mutex_lock.exit198, label %if.then.i.i195 if.then.i.i195: ; preds = %if.end.i190 store ptr %tsd, ptr %prev_owner.i.i193, align 8 %n_owner_switches.i.i196 = getelementptr inbounds i8, ptr %call133.i, i64 40 - %45 = load i64, ptr %n_owner_switches.i.i196, align 8 - %inc2.i.i197 = add i64 %45, 1 + %46 = load i64, ptr %n_owner_switches.i.i196, align 8 + %inc2.i.i197 = add i64 %46, 1 store i64 %inc2.i.i197, ptr %n_owner_switches.i.i196, align 8 br label %malloc_mutex_lock.exit198 malloc_mutex_lock.exit198: ; preds = %if.end.i190, %if.then.i.i195 %nflushes136.i = getelementptr inbounds i8, ptr %call133.i, i64 152 - %46 = load i64, ptr %nflushes136.i, align 8 - %inc137.i = add i64 %46, 1 + %47 = load i64, ptr %nflushes136.i, align 8 + %inc137.i = add i64 %47, 1 store i64 %inc137.i, ptr %nflushes136.i, align 8 %tstats138.i = getelementptr inbounds i8, ptr %cache_bin, i64 8 - %47 = load i64, ptr %tstats138.i, align 8 + %48 = load i64, ptr %tstats138.i, align 8 %nrequests141.i = getelementptr inbounds i8, ptr %call133.i, i64 128 - %48 = load i64, ptr %nrequests141.i, align 8 - %add142.i = add i64 %48, %47 + %49 = load i64, ptr %nrequests141.i, align 8 + %add142.i = add i64 %49, %48 store i64 %add142.i, ptr %nrequests141.i, align 8 store i64 0, ptr %tstats138.i, align 8 %locked.i199 = getelementptr inbounds i8, ptr %call133.i, i64 104 @@ -671,33 +672,33 @@ tcache_bin_flush_impl.exit: ; preds = %malloc_mutex_lock.e call void @llvm.stackrestore.p0(ptr %savedstack) %bin.val.i = load ptr, ptr %cache_bin, align 8 %bin.val8.i = load i16, ptr %0, align 4 - %49 = ptrtoint ptr %bin.val.i to i64 - %conv.i.i.i = trunc i64 %49 to i16 + %50 = ptrtoint ptr %bin.val.i to i64 + %conv.i.i.i = trunc i64 %50 to i16 %sub.i.i.i.i = sub i16 %bin.val8.i, %conv.i.i.i - %50 = lshr i16 %sub.i.i.i.i, 3 - %conv.i202 = zext nneg i16 %50 to i64 + %51 = lshr i16 %sub.i.i.i.i, 3 + %conv.i202 = zext nneg i16 %51 to i64 %sub.i204 = sub nsw i64 %conv.i202, %idx.ext.i %add.ptr.i205 = getelementptr inbounds ptr, ptr %bin.val.i, i64 %idx.ext.i %conv4.i = shl nsw i64 %sub.i204, 3 %mul.i206 = and i64 %conv4.i, 34359738360 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i205, ptr align 8 %bin.val.i, i64 %mul.i206, i1 false) - %51 = load ptr, ptr %cache_bin, align 8 - %add.ptr8.i = getelementptr inbounds ptr, ptr %51, i64 %idx.ext.i + %52 = load ptr, ptr %cache_bin, align 8 + %add.ptr8.i = getelementptr inbounds ptr, ptr %52, i64 %idx.ext.i store ptr %add.ptr8.i, ptr %cache_bin, align 8 %bin.val3.i.i = load i16, ptr %0, align 4 - %52 = ptrtoint ptr %add.ptr8.i to i64 - %conv.i.i9.i = trunc i64 %52 to i16 + %53 = ptrtoint ptr %add.ptr8.i to i64 + %conv.i.i9.i = trunc i64 %53 to i16 %sub.i.i.i10.i = sub i16 %bin.val3.i.i, %conv.i.i9.i - %53 = lshr i16 %sub.i.i.i10.i, 3 - %54 = getelementptr i8, ptr %cache_bin, i64 16 - %bin.val4.i.i = load i16, ptr %54, align 8 + %54 = lshr i16 %sub.i.i.i10.i, 3 + %55 = getelementptr i8, ptr %cache_bin, i64 16 + %bin.val4.i.i = load i16, ptr %55, align 8 %sub.i.i6.i.i = sub i16 %bin.val3.i.i, %bin.val4.i.i - %55 = lshr i16 %sub.i.i6.i.i, 3 - %cmp.i.i207 = icmp ult i16 %53, %55 + %56 = lshr i16 %sub.i.i6.i.i, 3 + %cmp.i.i207 = icmp ult i16 %54, %56 br i1 %cmp.i.i207, label %if.then.i.i208, label %cache_bin_finish_flush.exit if.then.i.i208: ; preds = %tcache_bin_flush_impl.exit - store i16 %conv.i.i9.i, ptr %54, align 8 + store i16 %conv.i.i9.i, ptr %55, align 8 br label %cache_bin_finish_flush.exit cache_bin_finish_flush.exit: ; preds = %tcache_bin_flush_impl.exit, %if.then.i.i208 diff --git a/bench/regex-rs/optimized/11vfjke4utuj478u.ll b/bench/regex-rs/optimized/11vfjke4utuj478u.ll index b21eb83923a..dd7fc98fa28 100644 --- a/bench/regex-rs/optimized/11vfjke4utuj478u.ll +++ b/bench/regex-rs/optimized/11vfjke4utuj478u.ll @@ -7165,7 +7165,7 @@ define void @_ZN14regex_automata6hybrid3dfa6Config26get_minimum_cache_capacity17 br label %45 45: ; preds = %40, %.loopexit - %.0.in.i = phi i64 [ %44, %40 ], [ 24, %.loopexit ] + %.0.i = phi i64 [ %44, %40 ], [ 24, %.loopexit ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !1421 %46 = call { ptr, i64 } @_ZN14regex_automata4util11determinize5state5State4dead17hc8f0ed727eb293bcE(), !noalias !1421 %.fca.0.extract.i = extractvalue { ptr, i64 } %46, 0 @@ -7200,7 +7200,7 @@ _ZN14regex_automata6hybrid3dfa22minimum_cache_capacity17h527dfd360432b17cE.exit: %reass.mul.i = mul i64 %39, 12 %63 = add i64 %reass.mul.i, 180 %64 = add i64 %63, %54 - %65 = add i64 %64, %.0.in.i + %65 = add i64 %64, %.0.i %66 = add i64 %65, %61 %67 = add i64 %66, %60 %68 = add i64 %67, %62 @@ -7799,14 +7799,14 @@ define void @_ZN14regex_automata6hybrid3dfa7Builder14build_from_nfa17hc1e1fabb94 .loopexit: ; preds = %.preheader.i, %.noexc..loopexit_crit_edge, %14 %.val27 = phi ptr [ %.val27.pre, %.noexc..loopexit_crit_edge ], [ %2, %14 ], [ %2, %.preheader.i ] - %.sroa.738.16.copyload39 = load i64, ptr %7, align 16, !noalias !1500 + %.sroa.739.16.copyload40 = load i64, ptr %7, align 16, !noalias !1500 %.sroa.10.16..sroa_idx = getelementptr inbounds i8, ptr %7, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.10, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.10.16..sroa_idx, i64 24, i1 false), !noalias !1500 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7), !noalias !1503 %.sroa.06.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.06.sroa.4.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.10, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %.sroa.10) - store i64 %.sroa.738.16.copyload39, ptr %9, align 8 + store i64 %.sroa.739.16.copyload40, ptr %9, align 8 %40 = getelementptr i8, ptr %1, i64 114 %.val26 = load i8, ptr %40, align 2, !range !97, !alias.scope !1415, !noundef !5 invoke fastcc void @_ZN14regex_automata6hybrid3dfa6Config21byte_classes_from_nfa17h0b4dfdbcb14cc3f7E(ptr noalias nocapture noundef nonnull align 1 dereferenceable(256) %8, i8 %.val26, ptr %.val27, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %9) @@ -7837,7 +7837,7 @@ define void @_ZN14regex_automata6hybrid3dfa7Builder14build_from_nfa17hc1e1fabb94 br label %55 55: ; preds = %50, %42 - %.0.in.i = phi i64 [ %54, %50 ], [ 24, %42 ] + %.0.i = phi i64 [ %54, %50 ], [ 24, %42 ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5), !noalias !1528 %56 = invoke { ptr, i64 } @_ZN14regex_automata4util11determinize5state5State4dead17hc8f0ed727eb293bcE() to label %.noexc32 unwind label %34 @@ -7875,7 +7875,7 @@ define void @_ZN14regex_automata6hybrid3dfa7Builder14build_from_nfa17hc1e1fabb94 %reass.mul.i = mul i64 %49, 12 %74 = add i64 %reass.mul.i, 180 %75 = add i64 %74, %65 - %76 = add i64 %75, %.0.in.i + %76 = add i64 %75, %.0.i %77 = add i64 %76, %72 %78 = add i64 %77, %71 %79 = add i64 %78, %73 @@ -7884,8 +7884,8 @@ define void @_ZN14regex_automata6hybrid3dfa7Builder14build_from_nfa17hc1e1fabb94 %trunc.i = trunc nuw i64 %81 to i1 %82 = getelementptr inbounds i8, ptr %1, i64 48 %83 = load i64, ptr %82, align 8 - %.0.i = select i1 %trunc.i, i64 %83, i64 2097152 - %84 = icmp ult i64 %.0.i, %79 + %.0.i34 = select i1 %trunc.i, i64 %83, i64 2097152 + %84 = icmp ult i64 %.0.i34, %79 br i1 %84, label %85, label %95 85: ; preds = %60 @@ -7895,15 +7895,15 @@ define void @_ZN14regex_automata6hybrid3dfa7Builder14build_from_nfa17hc1e1fabb94 br i1 %88, label %95, label %89 89: ; preds = %85, %41 - %.sink73 = phi i64 [ -9223372036854775798, %41 ], [ -9223372036854775800, %85 ] + %.sink74 = phi i64 [ -9223372036854775798, %41 ], [ -9223372036854775800, %85 ] %.sink = phi i64 [ ptrtoint (ptr @anon.227420ea47fcf415024a4301e123f38b.95 to i64), %41 ], [ %79, %85 ] - %.0.i.sink = phi i64 [ 177, %41 ], [ %.0.i, %85 ] + %.0.i34.sink = phi i64 [ 177, %41 ], [ %.0.i34, %85 ] %90 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.sink73, ptr %90, align 8 - %.sroa.441.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %.sink, ptr %.sroa.441.0..sroa_idx, align 8 - %.sroa.542.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 - store i64 %.0.i.sink, ptr %.sroa.542.0..sroa_idx, align 8 + store i64 %.sink74, ptr %90, align 8 + %.sroa.442.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 + store i64 %.sink, ptr %.sroa.442.0..sroa_idx, align 8 + %.sroa.543.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 + store i64 %.0.i34.sink, ptr %.sroa.543.0..sroa_idx, align 8 store i64 2, ptr %0, align 8 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) call void @llvm.experimental.noalias.scope.decl(metadata !1541) @@ -7912,12 +7912,12 @@ define void @_ZN14regex_automata6hybrid3dfa7Builder14build_from_nfa17hc1e1fabb94 %91 = load ptr, ptr %10, align 8, !alias.scope !1550, !nonnull !5, !noundef !5 %92 = atomicrmw sub ptr %91, i64 1 release, align 8, !noalias !1550 %93 = icmp eq i64 %92, 1 - br i1 %93, label %94, label %"_ZN4core3ptr60drop_in_place$LT$regex_automata..nfa..thompson..nfa..NFA$GT$17h0f2aa052becc43c4E.exit35" + br i1 %93, label %94, label %"_ZN4core3ptr60drop_in_place$LT$regex_automata..nfa..thompson..nfa..NFA$GT$17h0f2aa052becc43c4E.exit36" 94: ; preds = %89 fence acquire call void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17hb58fe166b1113c18E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %10) - br label %"_ZN4core3ptr60drop_in_place$LT$regex_automata..nfa..thompson..nfa..NFA$GT$17h0f2aa052becc43c4E.exit35" + br label %"_ZN4core3ptr60drop_in_place$LT$regex_automata..nfa..thompson..nfa..NFA$GT$17h0f2aa052becc43c4E.exit36" 95: ; preds = %60, %85 %.val30 = load i8, ptr %46, align 1, !noundef !5 @@ -7994,8 +7994,8 @@ define void @_ZN14regex_automata6hybrid3dfa7Builder14build_from_nfa17hc1e1fabb94 %126 = getelementptr inbounds i8, ptr %1, i64 115 %127 = load i8, ptr %126, align 1, !range !97, !alias.scope !1558, !noalias !1561, !noundef !5 %128 = load i64, ptr %1, align 8, !range !193, !alias.scope !1558, !noalias !1561, !noundef !5 - %trunc.i36 = trunc nuw i64 %128 to i1 - br i1 %trunc.i36, label %129, label %131 + %trunc.i37 = trunc nuw i64 %128 to i1 + br i1 %trunc.i37, label %129, label %131 129: ; preds = %"_ZN68_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hae764bfdd7fa0210E.exit.i" %130 = getelementptr inbounds i8, ptr %1, i64 16 @@ -8070,9 +8070,9 @@ define void @_ZN14regex_automata6hybrid3dfa7Builder14build_from_nfa17hc1e1fabb94 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.8.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(40) %.sroa.8, i64 40, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %.sroa.8) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) - br label %"_ZN4core3ptr60drop_in_place$LT$regex_automata..nfa..thompson..nfa..NFA$GT$17h0f2aa052becc43c4E.exit35" + br label %"_ZN4core3ptr60drop_in_place$LT$regex_automata..nfa..thompson..nfa..NFA$GT$17h0f2aa052becc43c4E.exit36" -"_ZN4core3ptr60drop_in_place$LT$regex_automata..nfa..thompson..nfa..NFA$GT$17h0f2aa052becc43c4E.exit35": ; preds = %94, %89, %131 +"_ZN4core3ptr60drop_in_place$LT$regex_automata..nfa..thompson..nfa..NFA$GT$17h0f2aa052becc43c4E.exit36": ; preds = %94, %89, %131 ret void 145: ; preds = %39 diff --git a/bench/rocksdb/optimized/forward_iterator.cc.ll b/bench/rocksdb/optimized/forward_iterator.cc.ll index c3b4daaadd6..56729d0e8ca 100644 --- a/bench/rocksdb/optimized/forward_iterator.cc.ll +++ b/bench/rocksdb/optimized/forward_iterator.cc.ll @@ -6390,29 +6390,31 @@ entry: %add.ptr.i.idx = shl nuw nsw i64 %conv, 3 %add.ptr.i = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.idx %conv6 = zext i32 %right to i64 - %1 = sub nsw i64 %conv6, %conv - %cmp13.i.i = icmp sgt i64 %1, 0 + %add.ptr.i3.idx = shl nuw nsw i64 %conv6, 3 + %gepdiff = sub nsw i64 %add.ptr.i3.idx, %add.ptr.i.idx + %sub.ptr.div.i.i.i.i.i = ashr exact i64 %gepdiff, 3 + %cmp13.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 br i1 %cmp13.i.i, label %while.body.lr.ph.i.i, label %"_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKPN7rocksdb12FileMetaDataESt6vectorIS4_SaIS4_EEEENS2_5SliceEZNS2_15ForwardIterator15FindFileInRangeERKS9_RKSB_jjE3$_0ET_SI_SI_RKT0_T1_.exit" while.body.lr.ph.i.i: ; preds = %entry - %2 = getelementptr inbounds i8, ptr %this, i64 208 - %3 = getelementptr inbounds i8, ptr %ref.tmp.i.i.i.i.i, i64 8 + %1 = getelementptr inbounds i8, ptr %this, i64 208 + %2 = getelementptr inbounds i8, ptr %ref.tmp.i.i.i.i.i, i64 8 %size_.i.i8.i.i.i.i.i = getelementptr inbounds i8, ptr %internal_key, i64 8 - %4 = getelementptr inbounds i8, ptr %ref.tmp2.i.i.i.i.i, i64 8 + %3 = getelementptr inbounds i8, ptr %ref.tmp2.i.i.i.i.i, i64 8 %.not.i.i.i.i.i.i.i = icmp eq ptr @_ZTHN7rocksdb10perf_levelE, null - %5 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @_ZN7rocksdb10perf_levelE) + %4 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @_ZN7rocksdb10perf_levelE) %.not.i1.i.i.i.i.i.i = icmp eq ptr @_ZTHN7rocksdb12perf_contextE, null - %6 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN7rocksdb12perf_contextE) + %5 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN7rocksdb12perf_contextE) br label %while.body.i.i while.body.i.i: ; preds = %if.end.i.i, %while.body.lr.ph.i.i - %__len.015.i.i = phi i64 [ %1, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %if.end.i.i ] + %__len.015.i.i = phi i64 [ %sub.ptr.div.i.i.i.i.i, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %if.end.i.i ] %__first.sroa.0.014.i.i = phi ptr [ %add.ptr.i, %while.body.lr.ph.i.i ], [ %__first.sroa.0.1.i.i, %if.end.i.i ] %shr.i.i = lshr i64 %__len.015.i.i, 1 %add.ptr.i.i.i.i.i = getelementptr inbounds ptr, ptr %__first.sroa.0.014.i.i, i64 %shr.i.i - %__comp.val.val.i.i = load ptr, ptr %2, align 16 - %7 = load ptr, ptr %add.ptr.i.i.i.i.i, align 8 - %largest.i.i.i.i = getelementptr inbounds i8, ptr %7, i64 72 + %__comp.val.val.i.i = load ptr, ptr %1, align 16 + %6 = load ptr, ptr %add.ptr.i.i.i.i.i, align 8 + %largest.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 72 %call.i.i.i.i.i.i = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %largest.i.i.i.i) #23 %call2.i.i.i.i.i.i = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %largest.i.i.i.i) #23 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp.i.i.i.i.i) @@ -6420,43 +6422,43 @@ while.body.i.i: ; preds = %if.end.i.i, %while. %user_comparator_.i.i.i.i.i = getelementptr inbounds i8, ptr %__comp.val.val.i.i, i64 72 %sub.i.i.i.i.i.i = add i64 %call2.i.i.i.i.i.i, -8 store ptr %call.i.i.i.i.i.i, ptr %ref.tmp.i.i.i.i.i, align 8 - store i64 %sub.i.i.i.i.i.i, ptr %3, align 8 - %8 = load ptr, ptr %internal_key, align 8 - %9 = load i64, ptr %size_.i.i8.i.i.i.i.i, align 8 - %sub.i9.i.i.i.i.i = add i64 %9, -8 - store ptr %8, ptr %ref.tmp2.i.i.i.i.i, align 8 - store i64 %sub.i9.i.i.i.i.i, ptr %4, align 8 - br i1 %.not.i.i.i.i.i.i.i, label %_ZTWN7rocksdb10perf_levelE.exit.i.i.i.i.i.i, label %10 - -10: ; preds = %while.body.i.i + store i64 %sub.i.i.i.i.i.i, ptr %2, align 8 + %7 = load ptr, ptr %internal_key, align 8 + %8 = load i64, ptr %size_.i.i8.i.i.i.i.i, align 8 + %sub.i9.i.i.i.i.i = add i64 %8, -8 + store ptr %7, ptr %ref.tmp2.i.i.i.i.i, align 8 + store i64 %sub.i9.i.i.i.i.i, ptr %3, align 8 + br i1 %.not.i.i.i.i.i.i.i, label %_ZTWN7rocksdb10perf_levelE.exit.i.i.i.i.i.i, label %9 + +9: ; preds = %while.body.i.i call void @_ZTHN7rocksdb10perf_levelE() br label %_ZTWN7rocksdb10perf_levelE.exit.i.i.i.i.i.i -_ZTWN7rocksdb10perf_levelE.exit.i.i.i.i.i.i: ; preds = %10, %while.body.i.i - %11 = load i8, ptr %5, align 1 - %cmp.i.i.i.i.i.i = icmp ugt i8 %11, 1 +_ZTWN7rocksdb10perf_levelE.exit.i.i.i.i.i.i: ; preds = %9, %while.body.i.i + %10 = load i8, ptr %4, align 1 + %cmp.i.i.i.i.i.i = icmp ugt i8 %10, 1 br i1 %cmp.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i, label %_ZNK7rocksdb21UserComparatorWrapper7CompareERKNS_5SliceES3_.exit.i.i.i.i.i if.then.i.i.i.i.i.i: ; preds = %_ZTWN7rocksdb10perf_levelE.exit.i.i.i.i.i.i - br i1 %.not.i1.i.i.i.i.i.i, label %_ZTWN7rocksdb12perf_contextE.exit.i.i.i.i.i.i, label %12 + br i1 %.not.i1.i.i.i.i.i.i, label %_ZTWN7rocksdb12perf_contextE.exit.i.i.i.i.i.i, label %11 -12: ; preds = %if.then.i.i.i.i.i.i +11: ; preds = %if.then.i.i.i.i.i.i call void @_ZTHN7rocksdb12perf_contextE() br label %_ZTWN7rocksdb12perf_contextE.exit.i.i.i.i.i.i -_ZTWN7rocksdb12perf_contextE.exit.i.i.i.i.i.i: ; preds = %12, %if.then.i.i.i.i.i.i - %13 = load i64, ptr %6, align 8 - %add.i.i.i.i.i.i = add i64 %13, 1 - store i64 %add.i.i.i.i.i.i, ptr %6, align 8 +_ZTWN7rocksdb12perf_contextE.exit.i.i.i.i.i.i: ; preds = %11, %if.then.i.i.i.i.i.i + %12 = load i64, ptr %5, align 8 + %add.i.i.i.i.i.i = add i64 %12, 1 + store i64 %add.i.i.i.i.i.i, ptr %5, align 8 br label %_ZNK7rocksdb21UserComparatorWrapper7CompareERKNS_5SliceES3_.exit.i.i.i.i.i _ZNK7rocksdb21UserComparatorWrapper7CompareERKNS_5SliceES3_.exit.i.i.i.i.i: ; preds = %_ZTWN7rocksdb12perf_contextE.exit.i.i.i.i.i.i, %_ZTWN7rocksdb10perf_levelE.exit.i.i.i.i.i.i - %14 = load ptr, ptr %user_comparator_.i.i.i.i.i, align 8 - %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %14, i64 32 + %13 = load ptr, ptr %user_comparator_.i.i.i.i.i, align 8 + %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %13, i64 32 %vtable.i.i.i.i.i.i = load ptr, ptr %add.ptr.i.i.i.i.i.i, align 8 %vfn.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i, i64 16 - %15 = load ptr, ptr %vfn.i.i.i.i.i.i, align 8 - %call.i.i1.i.i.i.i = call noundef i32 %15(ptr noundef nonnull align 8 dereferenceable(8) %add.ptr.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp2.i.i.i.i.i) + %14 = load ptr, ptr %vfn.i.i.i.i.i.i, align 8 + %call.i.i1.i.i.i.i = call noundef i32 %14(ptr noundef nonnull align 8 dereferenceable(8) %add.ptr.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp2.i.i.i.i.i) %cmp.i.i.i.i.i = icmp eq i32 %call.i.i1.i.i.i.i, 0 br i1 %cmp.i.i.i.i.i, label %if.then.i.i.i.i.i, label %"_ZN9__gnu_cxx5__ops14_Iter_comp_valIZN7rocksdb15ForwardIterator15FindFileInRangeERKSt6vectorIPNS2_12FileMetaDataESaIS6_EERKNS2_5SliceEjjE3$_0EclINS_17__normal_iteratorIPKS6_S8_EESC_EEbT_RT0_.exit.i.i" @@ -6464,9 +6466,9 @@ if.then.i.i.i.i.i: ; preds = %_ZNK7rocksdb21UserC %add.ptr.i.i.i6.i.i = getelementptr inbounds i8, ptr %call.i.i.i.i.i.i, i64 %call2.i.i.i.i.i.i %add.ptr7.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i6.i.i, i64 -8 %result.0.copyload.i.i.i.i.i.i = load i64, ptr %add.ptr7.i.i.i.i.i, align 1 - %16 = load ptr, ptr %internal_key, align 8 - %17 = load i64, ptr %size_.i.i8.i.i.i.i.i, align 8 - %add.ptr11.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 %17 + %15 = load ptr, ptr %internal_key, align 8 + %16 = load i64, ptr %size_.i.i8.i.i.i.i.i, align 8 + %add.ptr11.i.i.i.i.i = getelementptr inbounds i8, ptr %15, i64 %16 %add.ptr12.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr11.i.i.i.i.i, i64 -8 %result.0.copyload.i13.i.i.i.i.i = load i64, ptr %add.ptr12.i.i.i.i.i, align 1 %cmp14.i.i.i.i.i = icmp ugt i64 %result.0.copyload.i.i.i.i.i.i, %result.0.copyload.i13.i.i.i.i.i @@ -6482,8 +6484,8 @@ if.then.i.i.i.i.i: ; preds = %_ZNK7rocksdb21UserC if.then.i.i: ; preds = %"_ZN9__gnu_cxx5__ops14_Iter_comp_valIZN7rocksdb15ForwardIterator15FindFileInRangeERKSt6vectorIPNS2_12FileMetaDataESaIS6_EERKNS2_5SliceEjjE3$_0EclINS_17__normal_iteratorIPKS6_S8_EESC_EEbT_RT0_.exit.i.i", %if.then.i.i.i.i.i %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i, i64 8 - %18 = xor i64 %shr.i.i, -1 - %sub11.i.i = add nsw i64 %__len.015.i.i, %18 + %17 = xor i64 %shr.i.i, -1 + %sub11.i.i = add nsw i64 %__len.015.i.i, %17 br label %if.end.i.i if.end.i.i: ; preds = %if.then.i.i, %"_ZN9__gnu_cxx5__ops14_Iter_comp_valIZN7rocksdb15ForwardIterator15FindFileInRangeERKSt6vectorIPNS2_12FileMetaDataESaIS6_EERKNS2_5SliceEjjE3$_0EclINS_17__normal_iteratorIPKS6_S8_EESC_EEbT_RT0_.exit.i.i", %if.then.i.i.i.i.i diff --git a/bench/rocksdb/optimized/range_tombstone_fragmenter.cc.ll b/bench/rocksdb/optimized/range_tombstone_fragmenter.cc.ll index 67a5133f08c..52e9e1f0133 100644 --- a/bench/rocksdb/optimized/range_tombstone_fragmenter.cc.ll +++ b/bench/rocksdb/optimized/range_tombstone_fragmenter.cc.ll @@ -3295,25 +3295,27 @@ entry: %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %3, i64 %add.ptr.i.i.i.i.i.idx %seq_end_idx = getelementptr inbounds i8, ptr %1, i64 40 %4 = load i64, ptr %seq_end_idx, align 8 - %5 = sub nsw i64 %4, %2 - %cmp7.i.i = icmp sgt i64 %5, 0 + %add.ptr.i.i.i.i.i9.idx = shl nsw i64 %4, 3 + %gepdiff = sub nsw i64 %add.ptr.i.i.i.i.i9.idx, %add.ptr.i.i.i.i.i.idx + %sub.ptr.div.i.i.i.i.i = ashr exact i64 %gepdiff, 3 + %cmp7.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 br i1 %cmp7.i.i, label %while.body.lr.ph.i.i, label %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEmSt7greaterImEET_SA_SA_RKT0_T1_.exit while.body.lr.ph.i.i: ; preds = %entry %upper_bound_ = getelementptr inbounds i8, ptr %this, i64 112 - %6 = load i64, ptr %upper_bound_, align 8 + %5 = load i64, ptr %upper_bound_, align 8 br label %while.body.i.i while.body.i.i: ; preds = %while.body.i.i, %while.body.lr.ph.i.i - %__len.09.i.i = phi i64 [ %5, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %while.body.i.i ] + %__len.09.i.i = phi i64 [ %sub.ptr.div.i.i.i.i.i, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %while.body.i.i ] %__first.sroa.0.08.i.i = phi ptr [ %add.ptr.i.i.i.i.i, %while.body.lr.ph.i.i ], [ %__first.sroa.0.1.i.i, %while.body.i.i ] %shr.i.i = lshr i64 %__len.09.i.i, 1 %add.ptr.i.i.i.i.i18 = getelementptr inbounds i64, ptr %__first.sroa.0.08.i.i, i64 %shr.i.i - %7 = load i64, ptr %add.ptr.i.i.i.i.i18, align 8 - %cmp.i.i5.i.i = icmp ugt i64 %7, %6 + %6 = load i64, ptr %add.ptr.i.i.i.i.i18, align 8 + %cmp.i.i5.i.i = icmp ugt i64 %6, %5 %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i18, i64 8 - %8 = xor i64 %shr.i.i, -1 - %sub9.i.i = add nsw i64 %__len.09.i.i, %8 + %7 = xor i64 %shr.i.i, -1 + %sub9.i.i = add nsw i64 %__len.09.i.i, %7 %__first.sroa.0.1.i.i = select i1 %cmp.i.i5.i.i, ptr %incdec.ptr.i.i.i, ptr %__first.sroa.0.08.i.i %__len.1.i.i = select i1 %cmp.i.i5.i.i, i64 %sub9.i.i, i64 %shr.i.i %cmp.i.i = icmp sgt i64 %__len.1.i.i, 0 @@ -3324,25 +3326,27 @@ _ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEmSt7great %seq_pos_ = getelementptr inbounds i8, ptr %this, i64 144 store ptr %__first.sroa.0.0.lcssa.i.i, ptr %seq_pos_, align 8 %ts_upper_bound_ = getelementptr inbounds i8, ptr %this, i64 128 - %9 = load ptr, ptr %ts_upper_bound_, align 8 - %tobool.not = icmp eq ptr %9, null + %8 = load ptr, ptr %ts_upper_bound_, align 8 + %tobool.not = icmp eq ptr %8, null br i1 %tobool.not, label %if.end63, label %land.lhs.true land.lhs.true: ; preds = %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEmSt7greaterImEET_SA_SA_RKT0_T1_.exit - %size_.i = getelementptr inbounds i8, ptr %9, i64 8 - %10 = load i64, ptr %size_.i, align 8 - %cmp.i = icmp eq i64 %10, 0 + %size_.i = getelementptr inbounds i8, ptr %8, i64 8 + %9 = load i64, ptr %size_.i, align 8 + %cmp.i = icmp eq i64 %9, 0 br i1 %cmp.i, label %if.end63, label %if.then if.then: ; preds = %land.lhs.true - %11 = load i64, ptr %seq_start_idx, align 8 + %10 = load i64, ptr %seq_start_idx, align 8 %tombstone_timestamps_.i = getelementptr inbounds i8, ptr %0, i64 48 - %12 = load ptr, ptr %tombstone_timestamps_.i, align 8 - %add.ptr.i.i.i.i.i27.idx = shl nsw i64 %11, 4 - %add.ptr.i.i.i.i.i27 = getelementptr inbounds i8, ptr %12, i64 %add.ptr.i.i.i.i.i27.idx - %13 = load i64, ptr %seq_end_idx, align 8 - %14 = sub nsw i64 %13, %11 - %cmp7.i.i51 = icmp sgt i64 %14, 0 + %11 = load ptr, ptr %tombstone_timestamps_.i, align 8 + %add.ptr.i.i.i.i.i27.idx = shl nsw i64 %10, 4 + %add.ptr.i.i.i.i.i27 = getelementptr inbounds i8, ptr %11, i64 %add.ptr.i.i.i.i.i27.idx + %12 = load i64, ptr %seq_end_idx, align 8 + %add.ptr.i.i.i.i.i40.idx = shl nsw i64 %12, 4 + %gepdiff117 = sub nsw i64 %add.ptr.i.i.i.i.i40.idx, %add.ptr.i.i.i.i.i27.idx + %sub.ptr.div.i.i.i.i.i50 = ashr exact i64 %gepdiff117, 4 + %cmp7.i.i51 = icmp sgt i64 %sub.ptr.div.i.i.i.i.i50, 0 br i1 %cmp7.i.i51, label %while.body.lr.ph.i.i53, label %_ZNK7rocksdb28FragmentedRangeTombstoneList7ts_iterEm.exit81 while.body.lr.ph.i.i53: ; preds = %if.then @@ -3350,19 +3354,19 @@ while.body.lr.ph.i.i53: ; preds = %if.then br label %while.body.i.i54 while.body.i.i54: ; preds = %while.body.i.i54, %while.body.lr.ph.i.i53 - %__len.09.i.i55 = phi i64 [ %14, %while.body.lr.ph.i.i53 ], [ %__len.1.i.i66, %while.body.i.i54 ] + %__len.09.i.i55 = phi i64 [ %sub.ptr.div.i.i.i.i.i50, %while.body.lr.ph.i.i53 ], [ %__len.1.i.i66, %while.body.i.i54 ] %__first.sroa.0.08.i.i56 = phi ptr [ %add.ptr.i.i.i.i.i27, %while.body.lr.ph.i.i53 ], [ %__first.sroa.0.1.i.i65, %while.body.i.i54 ] %shr.i.i57 = lshr i64 %__len.09.i.i55, 1 %add.ptr.i.i.i.i.i60 = getelementptr inbounds %"class.rocksdb::Slice", ptr %__first.sroa.0.08.i.i56, i64 %shr.i.i57 - %15 = load ptr, ptr %ucmp_.i.i.i.i, align 8 - %vtable.i.i.i.i = load ptr, ptr %15, align 8 + %13 = load ptr, ptr %ucmp_.i.i.i.i, align 8 + %vtable.i.i.i.i = load ptr, ptr %13, align 8 %vfn.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i, i64 200 - %16 = load ptr, ptr %vfn.i.i.i.i, align 8 - %call.i.i.i.i = tail call noundef i32 %16(ptr noundef nonnull align 8 dereferenceable(48) %15, ptr noundef nonnull align 8 dereferenceable(16) %add.ptr.i.i.i.i.i60, ptr noundef nonnull align 8 dereferenceable(16) %9) + %14 = load ptr, ptr %vfn.i.i.i.i, align 8 + %call.i.i.i.i = tail call noundef i32 %14(ptr noundef nonnull align 8 dereferenceable(48) %13, ptr noundef nonnull align 8 dereferenceable(16) %add.ptr.i.i.i.i.i60, ptr noundef nonnull align 8 dereferenceable(16) %8) %cmp.i.i5.i.i63 = icmp sgt i32 %call.i.i.i.i, 0 %incdec.ptr.i.i.i64 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i60, i64 16 - %17 = xor i64 %shr.i.i57, -1 - %sub11.i.i = add nsw i64 %__len.09.i.i55, %17 + %15 = xor i64 %shr.i.i57, -1 + %sub11.i.i = add nsw i64 %__len.09.i.i55, %15 %__first.sroa.0.1.i.i65 = select i1 %cmp.i.i5.i.i63, ptr %incdec.ptr.i.i.i64, ptr %__first.sroa.0.08.i.i56 %__len.1.i.i66 = select i1 %cmp.i.i5.i.i63, i64 %sub11.i.i, i64 %shr.i.i57 %cmp.i.i67 = icmp sgt i64 %__len.1.i.i66, 0 @@ -3378,20 +3382,20 @@ _ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN7rocksdb5SliceESt6vectorIS3_ br label %_ZNK7rocksdb28FragmentedRangeTombstoneList7ts_iterEm.exit81 _ZNK7rocksdb28FragmentedRangeTombstoneList7ts_iterEm.exit81: ; preds = %if.then, %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN7rocksdb5SliceESt6vectorIS3_SaIS3_EEEES3_ZNS2_32FragmentedRangeTombstoneIterator28SetMaxVisibleSeqAndTimestampEvEUlRS4_SB_E_ET_SD_SD_RKT0_T1_.exit.loopexit - %18 = phi ptr [ %12, %if.then ], [ %.pre116, %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN7rocksdb5SliceESt6vectorIS3_SaIS3_EEEES3_ZNS2_32FragmentedRangeTombstoneIterator28SetMaxVisibleSeqAndTimestampEvEUlRS4_SB_E_ET_SD_SD_RKT0_T1_.exit.loopexit ] - %19 = phi i64 [ %11, %if.then ], [ %.pre115, %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN7rocksdb5SliceESt6vectorIS3_SaIS3_EEEES3_ZNS2_32FragmentedRangeTombstoneIterator28SetMaxVisibleSeqAndTimestampEvEUlRS4_SB_E_ET_SD_SD_RKT0_T1_.exit.loopexit ] - %20 = phi ptr [ %0, %if.then ], [ %.pre, %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN7rocksdb5SliceESt6vectorIS3_SaIS3_EEEES3_ZNS2_32FragmentedRangeTombstoneIterator28SetMaxVisibleSeqAndTimestampEvEUlRS4_SB_E_ET_SD_SD_RKT0_T1_.exit.loopexit ] + %16 = phi ptr [ %11, %if.then ], [ %.pre116, %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN7rocksdb5SliceESt6vectorIS3_SaIS3_EEEES3_ZNS2_32FragmentedRangeTombstoneIterator28SetMaxVisibleSeqAndTimestampEvEUlRS4_SB_E_ET_SD_SD_RKT0_T1_.exit.loopexit ] + %17 = phi i64 [ %10, %if.then ], [ %.pre115, %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN7rocksdb5SliceESt6vectorIS3_SaIS3_EEEES3_ZNS2_32FragmentedRangeTombstoneIterator28SetMaxVisibleSeqAndTimestampEvEUlRS4_SB_E_ET_SD_SD_RKT0_T1_.exit.loopexit ] + %18 = phi ptr [ %0, %if.then ], [ %.pre, %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN7rocksdb5SliceESt6vectorIS3_SaIS3_EEEES3_ZNS2_32FragmentedRangeTombstoneIterator28SetMaxVisibleSeqAndTimestampEvEUlRS4_SB_E_ET_SD_SD_RKT0_T1_.exit.loopexit ] %__first.sroa.0.0.lcssa.i.i52 = phi ptr [ %add.ptr.i.i.i.i.i27, %if.then ], [ %__first.sroa.0.1.i.i65, %_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPKN7rocksdb5SliceESt6vectorIS3_SaIS3_EEEES3_ZNS2_32FragmentedRangeTombstoneIterator28SetMaxVisibleSeqAndTimestampEvEUlRS4_SB_E_ET_SD_SD_RKT0_T1_.exit.loopexit ] - %add.ptr.i.i.i.i.i75 = getelementptr inbounds %"class.rocksdb::Slice", ptr %18, i64 %19 + %add.ptr.i.i.i.i.i75 = getelementptr inbounds %"class.rocksdb::Slice", ptr %16, i64 %17 %sub.ptr.lhs.cast.i = ptrtoint ptr %__first.sroa.0.0.lcssa.i.i52 to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %add.ptr.i.i.i.i.i75 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 4 - %tombstone_seqs_.i82 = getelementptr inbounds i8, ptr %20, i64 24 - %21 = load ptr, ptr %tombstone_seqs_.i82, align 8 - %add.ptr.i.i.i.i.i89 = getelementptr inbounds i64, ptr %21, i64 %19 - %22 = load ptr, ptr %seq_pos_, align 8 - %sub.ptr.lhs.cast.i96 = ptrtoint ptr %22 to i64 + %tombstone_seqs_.i82 = getelementptr inbounds i8, ptr %18, i64 24 + %19 = load ptr, ptr %tombstone_seqs_.i82, align 8 + %add.ptr.i.i.i.i.i89 = getelementptr inbounds i64, ptr %19, i64 %17 + %20 = load ptr, ptr %seq_pos_, align 8 + %sub.ptr.lhs.cast.i96 = ptrtoint ptr %20 to i64 %sub.ptr.rhs.cast.i97 = ptrtoint ptr %add.ptr.i.i.i.i.i89 to i64 %sub.ptr.sub.i98 = sub i64 %sub.ptr.lhs.cast.i96, %sub.ptr.rhs.cast.i97 %sub.ptr.div.i99 = ashr exact i64 %sub.ptr.sub.i98, 3 @@ -3399,8 +3403,8 @@ _ZNK7rocksdb28FragmentedRangeTombstoneList7ts_iterEm.exit81: ; preds = %if.then, br i1 %cmp, label %_ZNK7rocksdb28FragmentedRangeTombstoneList8seq_iterEm.exit113, label %if.end63 _ZNK7rocksdb28FragmentedRangeTombstoneList8seq_iterEm.exit113: ; preds = %_ZNK7rocksdb28FragmentedRangeTombstoneList7ts_iterEm.exit81 - %23 = getelementptr i64, ptr %21, i64 %sub.ptr.div.i - %add.ptr.i.i.i.i.i107 = getelementptr i64, ptr %23, i64 %19 + %21 = getelementptr i64, ptr %19, i64 %sub.ptr.div.i + %add.ptr.i.i.i.i.i107 = getelementptr i64, ptr %21, i64 %17 store ptr %add.ptr.i.i.i.i.i107, ptr %seq_pos_, align 8 br label %if.end63 diff --git a/bench/rocksdb/optimized/version_set.cc.ll b/bench/rocksdb/optimized/version_set.cc.ll index a4d13d5ac72..c057873cb60 100644 --- a/bench/rocksdb/optimized/version_set.cc.ll +++ b/bench/rocksdb/optimized/version_set.cc.ll @@ -4915,11 +4915,13 @@ entry: %add.ptr.idx = mul nuw nsw i64 %idx.ext, 80 %add.ptr = getelementptr inbounds i8, ptr %0, i64 %add.ptr.idx %idx.ext1 = zext i32 %right to i64 - %add.ptr2.idx3 = sub nsw i64 %idx.ext1, %idx.ext - %cmp12.i.i = icmp sgt i64 %add.ptr2.idx3, 0 + %add.ptr2.idx = mul nuw nsw i64 %idx.ext1, 80 + %gepdiff = sub nsw i64 %add.ptr2.idx, %add.ptr.idx + %cmp12.i.i = icmp sgt i64 %gepdiff, 0 br i1 %cmp12.i.i, label %while.body.lr.ph.i.i, label %"_ZSt11lower_boundIPN7rocksdb14FdWithKeyRangeENS0_5SliceEZNS0_12_GLOBAL__N_115FindFileInRangeERKNS0_21InternalKeyComparatorERKNS0_15LevelFilesBriefERKS3_jjE3$_0ET_SE_SE_RKT0_T1_.exit" while.body.lr.ph.i.i: ; preds = %entry + %sub.ptr.div.i.i.i.i = udiv exact i64 %gepdiff, 80 %user_comparator_.i.i.i.i.i = getelementptr inbounds i8, ptr %icmp, i64 8 %1 = getelementptr inbounds i8, ptr %ref.tmp.i.i.i.i.i, i64 8 %size_.i.i8.i.i.i.i.i = getelementptr inbounds i8, ptr %key, i64 8 @@ -4932,7 +4934,7 @@ while.body.lr.ph.i.i: ; preds = %entry while.body.i.i: ; preds = %"_ZN9__gnu_cxx5__ops14_Iter_comp_valIZN7rocksdb12_GLOBAL__N_115FindFileInRangeERKNS2_21InternalKeyComparatorERKNS2_15LevelFilesBriefERKNS2_5SliceEjjE3$_0EclIPNS2_14FdWithKeyRangeESB_EEbT_RT0_.exit.i.i", %while.body.lr.ph.i.i %__first.addr.014.i.i = phi ptr [ %add.ptr, %while.body.lr.ph.i.i ], [ %__first.addr.1.i.i, %"_ZN9__gnu_cxx5__ops14_Iter_comp_valIZN7rocksdb12_GLOBAL__N_115FindFileInRangeERKNS2_21InternalKeyComparatorERKNS2_15LevelFilesBriefERKNS2_5SliceEjjE3$_0EclIPNS2_14FdWithKeyRangeESB_EEbT_RT0_.exit.i.i" ] - %__len.013.i.i = phi i64 [ %add.ptr2.idx3, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %"_ZN9__gnu_cxx5__ops14_Iter_comp_valIZN7rocksdb12_GLOBAL__N_115FindFileInRangeERKNS2_21InternalKeyComparatorERKNS2_15LevelFilesBriefERKNS2_5SliceEjjE3$_0EclIPNS2_14FdWithKeyRangeESB_EEbT_RT0_.exit.i.i" ] + %__len.013.i.i = phi i64 [ %sub.ptr.div.i.i.i.i, %while.body.lr.ph.i.i ], [ %__len.1.i.i, %"_ZN9__gnu_cxx5__ops14_Iter_comp_valIZN7rocksdb12_GLOBAL__N_115FindFileInRangeERKNS2_21InternalKeyComparatorERKNS2_15LevelFilesBriefERKNS2_5SliceEjjE3$_0EclIPNS2_14FdWithKeyRangeESB_EEbT_RT0_.exit.i.i" ] %shr.i.i = lshr i64 %__len.013.i.i, 1 %add.ptr.i.i.i.i = getelementptr inbounds %"struct.rocksdb::FdWithKeyRange", ptr %__first.addr.014.i.i, i64 %shr.i.i %largest_key.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i, i64 64 @@ -25946,11 +25948,11 @@ while.body.i.i: ; preds = %while.body.i.i, %wh br i1 %cmp.i.i, label %while.body.i.i, label %"_ZSt11lower_boundIPKN7rocksdb14FdWithKeyRangeEPKNS0_11InternalKeyEZNKS0_18VersionStorageInfo37GetOverlappingInputsRangeBinarySearchEiS6_S6_PSt6vectorIPNS0_12FileMetaDataESaISA_EEiPibPPS4_E3$_0ET_SI_SI_RKT0_T1_.exit.loopexit", !llvm.loop !265 "_ZSt11lower_boundIPKN7rocksdb14FdWithKeyRangeEPKNS0_11InternalKeyEZNKS0_18VersionStorageInfo37GetOverlappingInputsRangeBinarySearchEiS6_S6_PSt6vectorIPNS0_12FileMetaDataESaISA_EEiPibPPS4_E3$_0ET_SI_SI_RKT0_T1_.exit.loopexit": ; preds = %while.body.i.i - %.pre119 = ptrtoint ptr %__first.addr.1.i.i to i64 + %.pre118 = ptrtoint ptr %__first.addr.1.i.i to i64 br label %"_ZSt11lower_boundIPKN7rocksdb14FdWithKeyRangeEPKNS0_11InternalKeyEZNKS0_18VersionStorageInfo37GetOverlappingInputsRangeBinarySearchEiS6_S6_PSt6vectorIPNS0_12FileMetaDataESaISA_EEiPibPPS4_E3$_0ET_SI_SI_RKT0_T1_.exit" "_ZSt11lower_boundIPKN7rocksdb14FdWithKeyRangeEPKNS0_11InternalKeyEZNKS0_18VersionStorageInfo37GetOverlappingInputsRangeBinarySearchEiS6_S6_PSt6vectorIPNS0_12FileMetaDataESaISA_EEiPibPPS4_E3$_0ET_SI_SI_RKT0_T1_.exit": ; preds = %"_ZSt11lower_boundIPKN7rocksdb14FdWithKeyRangeEPKNS0_11InternalKeyEZNKS0_18VersionStorageInfo37GetOverlappingInputsRangeBinarySearchEiS6_S6_PSt6vectorIPNS0_12FileMetaDataESaISA_EEiPibPPS4_E3$_0ET_SI_SI_RKT0_T1_.exit.loopexit", %if.then - %sub.ptr.lhs.cast.pre-phi = phi i64 [ %.pre119, %"_ZSt11lower_boundIPKN7rocksdb14FdWithKeyRangeEPKNS0_11InternalKeyEZNKS0_18VersionStorageInfo37GetOverlappingInputsRangeBinarySearchEiS6_S6_PSt6vectorIPNS0_12FileMetaDataESaISA_EEiPibPPS4_E3$_0ET_SI_SI_RKT0_T1_.exit.loopexit" ], [ %sub.ptr.rhs.cast.i.i.i.i, %if.then ] + %sub.ptr.lhs.cast.pre-phi = phi i64 [ %.pre118, %"_ZSt11lower_boundIPKN7rocksdb14FdWithKeyRangeEPKNS0_11InternalKeyEZNKS0_18VersionStorageInfo37GetOverlappingInputsRangeBinarySearchEiS6_S6_PSt6vectorIPNS0_12FileMetaDataESaISA_EEiPibPPS4_E3$_0ET_SI_SI_RKT0_T1_.exit.loopexit" ], [ %sub.ptr.rhs.cast.i.i.i.i, %if.then ] %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast.pre-phi, %sub.ptr.rhs.cast.i.i.i.i %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 80 %conv11 = trunc i64 %sub.ptr.div to i32 @@ -25960,8 +25962,8 @@ while.body.i.i: ; preds = %while.body.i.i, %wh while.cond.preheader: ; preds = %"_ZSt11lower_boundIPKN7rocksdb14FdWithKeyRangeEPKNS0_11InternalKeyEZNKS0_18VersionStorageInfo37GetOverlappingInputsRangeBinarySearchEiS6_S6_PSt6vectorIPNS0_12FileMetaDataESaISA_EEiPibPPS4_E3$_0ET_SI_SI_RKT0_T1_.exit" %invariant.gep = getelementptr i8, ptr %4, i64 -40 - %cmp15109 = icmp slt i32 %conv11, %conv7 - br i1 %cmp15109, label %while.body.lr.ph, label %if.end24 + %cmp15108 = icmp slt i32 %conv11, %conv7 + br i1 %cmp15108, label %while.body.lr.ph, label %if.end24 while.body.lr.ph: ; preds = %while.cond.preheader %10 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 @@ -25969,8 +25971,8 @@ while.body.lr.ph: ; preds = %while.cond.preheade br label %while.body while.body: ; preds = %while.body.lr.ph, %while.body - %start_index.1110 = phi i32 [ %conv11, %while.body.lr.ph ], [ %add, %while.body ] - %12 = zext nneg i32 %start_index.1110 to i64 + %start_index.1109 = phi i32 [ %conv11, %while.body.lr.ph ], [ %add, %while.body ] + %12 = zext nneg i32 %start_index.1109 to i64 %gep = getelementptr %"struct.rocksdb::FdWithKeyRange", ptr %invariant.gep, i64 %12 %13 = load ptr, ptr %gep, align 8 %largest = getelementptr inbounds i8, ptr %13, i64 72 @@ -25992,7 +25994,7 @@ while.body: ; preds = %while.body.lr.ph, % call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp1.i) %cmp20 = icmp eq i32 %call3.i, 0 %conv23 = zext i1 %cmp20 to i32 - %add = add nuw nsw i32 %start_index.1110, %conv23 + %add = add nuw nsw i32 %start_index.1109, %conv23 %cmp15 = icmp slt i32 %add, %conv7 %15 = select i1 %cmp20, i1 %cmp15, i1 false br i1 %15, label %while.body, label %if.end24, !llvm.loop !266 @@ -26008,11 +26010,13 @@ if.then26: ; preds = %if.end24 %add.ptr29 = getelementptr inbounds i8, ptr %4, i64 %add.ptr29.idx %sext = shl i64 %5, 32 %idx.ext30 = ashr exact i64 %sext, 32 - %add.ptr31.idx108 = sub nsw i64 %idx.ext30, %idx.ext28 - %cmp13.i.i56 = icmp sgt i64 %add.ptr31.idx108, 0 + %add.ptr31.idx = mul nsw i64 %idx.ext30, 80 + %gepdiff = sub nsw i64 %add.ptr31.idx, %add.ptr29.idx + %cmp13.i.i56 = icmp sgt i64 %gepdiff, 0 br i1 %cmp13.i.i56, label %while.body.lr.ph.i.i58, label %"_ZSt11upper_boundIPKN7rocksdb14FdWithKeyRangeEPKNS0_11InternalKeyEZNKS0_18VersionStorageInfo37GetOverlappingInputsRangeBinarySearchEiS6_S6_PSt6vectorIPNS0_12FileMetaDataESaISA_EEiPibPPS4_E3$_1ET_SI_SI_RKT0_T1_.exit" while.body.lr.ph.i.i58: ; preds = %if.then26 + %sub.ptr.div.i.i.i.i59 = udiv exact i64 %gepdiff, 80 %16 = getelementptr inbounds i8, ptr %ref.tmp.i.i.i.i.i51, i64 8 %17 = getelementptr inbounds i8, ptr %ref.tmp1.i.i.i.i.i52, i64 8 %cond-lvalue.v.i.i.i.i74 = select i1 %within_interval, i64 72, i64 40 @@ -26020,7 +26024,7 @@ while.body.lr.ph.i.i58: ; preds = %if.then26 while.body.i.i60: ; preds = %while.body.i.i60, %while.body.lr.ph.i.i58 %__first.addr.015.i.i61 = phi ptr [ %add.ptr29, %while.body.lr.ph.i.i58 ], [ %__first.addr.1.i.i85, %while.body.i.i60 ] - %__len.014.i.i62 = phi i64 [ %add.ptr31.idx108, %while.body.lr.ph.i.i58 ], [ %__len.1.i.i84, %while.body.i.i60 ] + %__len.014.i.i62 = phi i64 [ %sub.ptr.div.i.i.i.i59, %while.body.lr.ph.i.i58 ], [ %__len.1.i.i84, %while.body.i.i60 ] %shr.i.i63 = lshr i64 %__len.014.i.i62, 1 %add.ptr.i.i.i.i66 = getelementptr inbounds %"struct.rocksdb::FdWithKeyRange", ptr %__first.addr.015.i.i61, i64 %shr.i.i63 %18 = getelementptr i8, ptr %add.ptr.i.i.i.i66, i64 40 @@ -26060,9 +26064,9 @@ while.body.i.i60: ; preds = %while.body.i.i60, % br i1 %brmerge107.not, label %while.cond44.preheader, label %if.end67 while.cond44.preheader: ; preds = %"_ZSt11upper_boundIPKN7rocksdb14FdWithKeyRangeEPKNS0_11InternalKeyEZNKS0_18VersionStorageInfo37GetOverlappingInputsRangeBinarySearchEiS6_S6_PSt6vectorIPNS0_12FileMetaDataESaISA_EEiPibPPS4_E3$_1ET_SI_SI_RKT0_T1_.exit" - %invariant.gep111 = getelementptr i8, ptr %4, i64 -40 - %cmp47113 = icmp slt i32 %start_index.0, %conv38 - br i1 %cmp47113, label %while.body49.lr.ph, label %if.end67 + %invariant.gep110 = getelementptr i8, ptr %4, i64 -40 + %cmp47112 = icmp slt i32 %start_index.0, %conv38 + br i1 %cmp47112, label %while.body49.lr.ph, label %if.end67 while.body49.lr.ph: ; preds = %while.cond44.preheader %20 = getelementptr inbounds i8, ptr %ref.tmp.i87, i64 8 @@ -26070,13 +26074,13 @@ while.body49.lr.ph: ; preds = %while.cond44.prehea br label %while.body49 while.body49: ; preds = %while.body49.lr.ph, %while.body49 - %end_index.1114 = phi i32 [ %conv38, %while.body49.lr.ph ], [ %sub64, %while.body49 ] - %idxprom50 = sext i32 %end_index.1114 to i64 + %end_index.1113 = phi i32 [ %conv38, %while.body49.lr.ph ], [ %sub64, %while.body49 ] + %idxprom50 = sext i32 %end_index.1113 to i64 %file_metadata52 = getelementptr inbounds %"struct.rocksdb::FdWithKeyRange", ptr %4, i64 %idxprom50, i32 1 %22 = load ptr, ptr %file_metadata52, align 8 %smallest53 = getelementptr inbounds i8, ptr %22, i64 40 - %gep112 = getelementptr %"struct.rocksdb::FdWithKeyRange", ptr %invariant.gep111, i64 %idxprom50 - %23 = load ptr, ptr %gep112, align 8 + %gep111 = getelementptr %"struct.rocksdb::FdWithKeyRange", ptr %invariant.gep110, i64 %idxprom50 + %23 = load ptr, ptr %gep111, align 8 %largest58 = getelementptr inbounds i8, ptr %23, i64 72 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp.i87) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp1.i88) @@ -26093,7 +26097,7 @@ while.body49: ; preds = %while.body49.lr.ph, call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp1.i88) %cmp60 = icmp eq i32 %call3.i93, 0 %conv63.neg = sext i1 %cmp60 to i32 - %sub64 = add nsw i32 %end_index.1114, %conv63.neg + %sub64 = add nsw i32 %end_index.1113, %conv63.neg %cmp47 = icmp sgt i32 %sub64, %start_index.0 %24 = select i1 %cmp60, i1 %cmp47, i1 false br i1 %24, label %while.body49, label %if.end67, !llvm.loop !268 @@ -26120,8 +26124,8 @@ if.then75: ; preds = %if.end73 br label %if.end76 if.end76: ; preds = %if.then75, %if.end73 - %cmp77116 = icmp slt i32 %start_index.0, %end_index.0 - br i1 %cmp77116, label %for.body.lr.ph, label %for.end + %cmp77115 = icmp slt i32 %start_index.0, %end_index.0 + br i1 %cmp77115, label %for.body.lr.ph, label %for.end for.body.lr.ph: ; preds = %if.end76 %files_ = getelementptr inbounds i8, ptr %this, i64 2712 @@ -62470,19 +62474,21 @@ if.end71: ; preds = %if.then66, %if.then %add.ptr.idx.i = mul nuw nsw i64 %idx.ext.i, 80 %add.ptr.i = getelementptr inbounds i8, ptr %61, i64 %add.ptr.idx.i %idx.ext1.i = zext i32 %add to i64 - %add.ptr2.idx3.i = sub nsw i64 %idx.ext1.i, %idx.ext.i - %cmp12.i.i.i = icmp sgt i64 %add.ptr2.idx3.i, 0 + %add.ptr2.idx.i = mul nuw nsw i64 %idx.ext1.i, 80 + %gepdiff.i = sub nsw i64 %add.ptr2.idx.i, %add.ptr.idx.i + %cmp12.i.i.i = icmp sgt i64 %gepdiff.i, 0 br i1 %cmp12.i.i.i, label %while.body.lr.ph.i.i.i, label %_ZN7rocksdb12_GLOBAL__N_115FindFileInRangeERKNS_21InternalKeyComparatorERKNS_15LevelFilesBriefERKNS_5SliceEjj.exit while.body.lr.ph.i.i.i: ; preds = %if.end71 %62 = load ptr, ptr %internal_comparator_, align 8 + %sub.ptr.div.i.i.i.i.i = udiv exact i64 %gepdiff.i, 80 %user_comparator_.i.i.i.i.i.i = getelementptr inbounds i8, ptr %62, i64 8 %size_.i.i8.i.i.i.i.i.i = getelementptr inbounds i8, ptr %60, i64 56 br label %while.body.i.i.i while.body.i.i.i: ; preds = %"_ZN9__gnu_cxx5__ops14_Iter_comp_valIZN7rocksdb12_GLOBAL__N_115FindFileInRangeERKNS2_21InternalKeyComparatorERKNS2_15LevelFilesBriefERKNS2_5SliceEjjE3$_0EclIPNS2_14FdWithKeyRangeESB_EEbT_RT0_.exit.i.i.i", %while.body.lr.ph.i.i.i %__first.addr.014.i.i.i = phi ptr [ %add.ptr.i, %while.body.lr.ph.i.i.i ], [ %__first.addr.1.i.i.i, %"_ZN9__gnu_cxx5__ops14_Iter_comp_valIZN7rocksdb12_GLOBAL__N_115FindFileInRangeERKNS2_21InternalKeyComparatorERKNS2_15LevelFilesBriefERKNS2_5SliceEjjE3$_0EclIPNS2_14FdWithKeyRangeESB_EEbT_RT0_.exit.i.i.i" ] - %__len.013.i.i.i = phi i64 [ %add.ptr2.idx3.i, %while.body.lr.ph.i.i.i ], [ %__len.1.i.i.i, %"_ZN9__gnu_cxx5__ops14_Iter_comp_valIZN7rocksdb12_GLOBAL__N_115FindFileInRangeERKNS2_21InternalKeyComparatorERKNS2_15LevelFilesBriefERKNS2_5SliceEjjE3$_0EclIPNS2_14FdWithKeyRangeESB_EEbT_RT0_.exit.i.i.i" ] + %__len.013.i.i.i = phi i64 [ %sub.ptr.div.i.i.i.i.i, %while.body.lr.ph.i.i.i ], [ %__len.1.i.i.i, %"_ZN9__gnu_cxx5__ops14_Iter_comp_valIZN7rocksdb12_GLOBAL__N_115FindFileInRangeERKNS2_21InternalKeyComparatorERKNS2_15LevelFilesBriefERKNS2_5SliceEjjE3$_0EclIPNS2_14FdWithKeyRangeESB_EEbT_RT0_.exit.i.i.i" ] %shr.i.i.i = lshr i64 %__len.013.i.i.i, 1 %add.ptr.i.i.i.i.i = getelementptr inbounds %"struct.rocksdb::FdWithKeyRange", ptr %__first.addr.014.i.i.i, i64 %shr.i.i.i %largest_key.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i, i64 64 diff --git a/bench/ruby/optimized/function.ll b/bench/ruby/optimized/function.ll index d3e0b8651c4..a5feff6da73 100644 --- a/bench/ruby/optimized/function.ll +++ b/bench/ruby/optimized/function.ll @@ -246,7 +246,12 @@ RARRAY_LENINT.exit: ; preds = %rb_array_len.exit.i br label %.thread 53: ; preds = %49 - br i1 %.not136, label %.thread, label %104 + br i1 %.not136, label %.thread, label %._crit_edge196 + +._crit_edge196: ; preds = %53 + %.pre197 = add nuw nsw i32 %.0113, 1 + %.pre198 = zext nneg i32 %.pre197 to i64 + br label %104 .thread: ; preds = %51, %52, %53 %54 = tail call i64 @rb_ary_dup(i64 noundef %10) #8 @@ -362,14 +367,13 @@ rb_array_const_ptr.exit: ; preds = %81, %84 tail call void (i64, ptr, ...) @rb_raise(i64 noundef %103, ptr noundef nonnull @.str.15, i32 noundef %.0120) #10 unreachable -104: ; preds = %100, %53 - %.0 = phi i64 [ %10, %53 ], [ %54, %100 ] +104: ; preds = %._crit_edge196, %100 + %.pre-phi199 = phi i64 [ %.pre198, %._crit_edge196 ], [ %76, %100 ] + %.0 = phi i64 [ %10, %._crit_edge196 ], [ %54, %100 ] %105 = shl nuw nsw i64 %45, 3 - %reass.add = shl nuw i32 %.0113, 1 - %narrow = or disjoint i32 %reass.add, 1 - %106 = zext i32 %narrow to i64 - %107 = shl nuw nsw i64 %106, 3 - %108 = icmp ult i32 %.0113, 64 + %106 = shl nuw nsw i64 %.pre-phi199, 3 + %107 = add nuw nsw i64 %106, %105 + %108 = icmp ult i64 %107, 1024 br i1 %108, label %109, label %111 109: ; preds = %104 diff --git a/bench/rust-analyzer-rs/optimized/2bwlvqntjk72kr6f.ll b/bench/rust-analyzer-rs/optimized/2bwlvqntjk72kr6f.ll index d208ab5db7a..e9f72616022 100644 --- a/bench/rust-analyzer-rs/optimized/2bwlvqntjk72kr6f.ll +++ b/bench/rust-analyzer-rs/optimized/2bwlvqntjk72kr6f.ll @@ -8205,7 +8205,7 @@ define hidden void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec. 40: ; preds = %36 %41 = extractvalue { i64, i1 } %38, 0 %42 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h9678b45cff0b687bE"(i64 noundef %41, i1 noundef zeroext false) - to label %47 unwind label %134, !noalias !2340 + to label %47 unwind label %136, !noalias !2340 .thread6.i: ; preds = %36, %33 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %10), !noalias !2340 @@ -8219,7 +8219,7 @@ define hidden void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec. %46 = getelementptr inbounds i8, ptr %10, i64 24 store i64 0, ptr %46, align 8, !noalias !2340 invoke void @_ZN4core9panicking9panic_fmt17ha6effc2775a0749cE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.2fbffcae7077656f8500cbdcc48513bf.11) #22 - to label %132 unwind label %134, !noalias !2340 + to label %134 unwind label %136, !noalias !2340 47: ; preds = %40 %48 = extractvalue { i64, ptr } %42, 0 @@ -8288,7 +8288,7 @@ define hidden void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec. 82: ; preds = %80 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h79bf66816eec73b7E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %11, i64 noundef 0, i64 noundef %78) - to label %"._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb21a271e38712360E.exit_crit_edge.i.i.i" unwind label %126, !noalias !2369 + to label %"._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb21a271e38712360E.exit_crit_edge.i.i.i" unwind label %128, !noalias !2369 "._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb21a271e38712360E.exit_crit_edge.i.i.i": ; preds = %82 %.pre.i.i.i = load i64, ptr %51, align 8, !alias.scope !2370, !noalias !2369 @@ -8307,7 +8307,7 @@ define hidden void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec. %86 = getelementptr inbounds i8, ptr %8, i64 24 store i64 0, ptr %86, align 8, !noalias !2371 invoke void @_ZN4core9panicking9panic_fmt17ha6effc2775a0749cE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.2fbffcae7077656f8500cbdcc48513bf.32) #22 - to label %125 unwind label %126, !noalias !2371 + to label %127 unwind label %128, !noalias !2371 "_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb21a271e38712360E.exit.i.i.i": ; preds = %"._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb21a271e38712360E.exit_crit_edge.i.i.i", %80 %87 = phi ptr [ %.pre.i, %"._ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb21a271e38712360E.exit_crit_edge.i.i.i" ], [ %49, %80 ] @@ -8324,7 +8324,7 @@ define hidden void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec. call void @llvm.experimental.noalias.scope.decl(metadata !2384) %89 = load i64, ptr %7, align 8, !range !94, !alias.scope !2381, !noalias !2386, !noundef !11 %.not.i.not.i.i.i.i.i = icmp eq i64 %89, 0 - br i1 %.not.i.not.i.i.i.i.i, label %100, label %90 + br i1 %.not.i.not.i.i.i.i.i, label %101, label %90 90: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb21a271e38712360E.exit.i.i.i" call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5), !noalias !2387 @@ -8346,134 +8346,136 @@ define hidden void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec. %scevgep.i.i.i.i.i.i.i = getelementptr i8, ptr %87, i64 %95 %96 = mul i64 %.promoted.i.i.i.i.i.i.i.i.i, 24 %scevgep1.i.i.i.i.i.i.i = getelementptr i8, ptr %5, i64 %96 - %97 = sub i64 %94, %.promoted.i.i.i.i.i.i.i.i.i - %98 = mul i64 %97, 24 + %97 = mul i64 %94, 24 + %98 = sub i64 %97, %96 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep.i.i.i.i.i.i.i, ptr align 8 %scevgep1.i.i.i.i.i.i.i, i64 %98, i1 false), !noalias !2400 - %99 = add i64 %97, %88 - store i64 %99, ptr %.sroa.4.0..sroa_idx.i.i.i, align 8, !alias.scope !2404, !noalias !2409 + %99 = add i64 %94, %88 + %100 = sub i64 %99, %.promoted.i.i.i.i.i.i.i.i.i + store i64 %100, ptr %.sroa.4.0..sroa_idx.i.i.i, align 8, !alias.scope !2404, !noalias !2409 br label %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h1faaddcaf0c09889E.exit.i.i.i.i.i.i" -100: ; preds = %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h1faaddcaf0c09889E.exit.i.i.i.i.i.i", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb21a271e38712360E.exit.i.i.i" - %101 = getelementptr inbounds i8, ptr %7, i64 144 - %.sroa.0.0.copyload.i.i.i.i.i.i = load ptr, ptr %101, align 8, !alias.scope !2381, !noalias !2386 +101: ; preds = %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h1faaddcaf0c09889E.exit.i.i.i.i.i.i", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb21a271e38712360E.exit.i.i.i" + %102 = getelementptr inbounds i8, ptr %7, i64 144 + %.sroa.0.0.copyload.i.i.i.i.i.i = load ptr, ptr %102, align 8, !alias.scope !2381, !noalias !2386 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3), !noalias !2387 %.not.not.i.i.i.i.i.i.i = icmp eq ptr %.sroa.0.0.copyload.i.i.i.i.i.i, null - br i1 %.not.not.i.i.i.i.i.i.i, label %103, label %102 + br i1 %.not.not.i.i.i.i.i.i.i, label %104, label %103 -102: ; preds = %100 +103: ; preds = %101 %.sroa.5.0..sroa_idx.i.i.i.i.i.i = getelementptr inbounds i8, ptr %7, i64 152 store ptr %.sroa.0.0.copyload.i.i.i.i.i.i, ptr %3, align 8, !noalias !2416 %.sroa.5.0..sroa_idx40.i.i.i.i.i.i = getelementptr inbounds i8, ptr %3, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.5.0..sroa_idx40.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.5.0..sroa_idx.i.i.i.i.i.i, i64 24, i1 false), !noalias !2386 invoke void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hddc85457ee180f65E"(ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %3, ptr noalias noundef nonnull align 8 dereferenceable(24) %6) - to label %103 unwind label %119, !noalias !2419 + to label %104 unwind label %121, !noalias !2419 "_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h1faaddcaf0c09889E.exit.i.i.i.i.i.i": ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i, %90 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5), !noalias !2387 - br label %100 + br label %101 -103: ; preds = %102, %100 +104: ; preds = %103, %101 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3), !noalias !2387 - %104 = getelementptr inbounds i8, ptr %7, i64 72 - %105 = load i64, ptr %104, align 8, !range !94, !alias.scope !2381, !noalias !2386, !noundef !11 - %.not11.i.not.i.i.i.i.i = icmp eq i64 %105, 0 - br i1 %.not11.i.not.i.i.i.i.i, label %"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17he8572c59d5ef6b5eE.exit", label %106 + %105 = getelementptr inbounds i8, ptr %7, i64 72 + %106 = load i64, ptr %105, align 8, !range !94, !alias.scope !2381, !noalias !2386, !noundef !11 + %.not11.i.not.i.i.i.i.i = icmp eq i64 %106, 0 + br i1 %.not11.i.not.i.i.i.i.i, label %"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17he8572c59d5ef6b5eE.exit", label %107 -106: ; preds = %103 - %107 = getelementptr inbounds i8, ptr %7, i64 80 +107: ; preds = %104 + %108 = getelementptr inbounds i8, ptr %7, i64 80 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4), !noalias !2387 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %4, ptr noundef nonnull align 8 dereferenceable(64) %107, i64 64, i1 false), !noalias !2386 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %4, ptr noundef nonnull align 8 dereferenceable(64) %108, i64 64, i1 false), !noalias !2386 call void @llvm.experimental.noalias.scope.decl(metadata !2420) call void @llvm.experimental.noalias.scope.decl(metadata !2423) call void @llvm.experimental.noalias.scope.decl(metadata !2425) call void @llvm.experimental.noalias.scope.decl(metadata !2428) - %108 = getelementptr inbounds i8, ptr %4, i64 48 - %109 = getelementptr inbounds i8, ptr %4, i64 56 - %110 = load i64, ptr %109, align 8, !alias.scope !2430, !noalias !2431, !noundef !11 - %.promoted.i.i.i23.i.i.i.i.i.i = load i64, ptr %108, align 8, !alias.scope !2430, !noalias !2431 - %.not.i4.i.i.i24.i.i.i.i.i.i = icmp eq i64 %110, %.promoted.i.i.i23.i.i.i.i.i.i + %109 = getelementptr inbounds i8, ptr %4, i64 48 + %110 = getelementptr inbounds i8, ptr %4, i64 56 + %111 = load i64, ptr %110, align 8, !alias.scope !2430, !noalias !2431, !noundef !11 + %.promoted.i.i.i23.i.i.i.i.i.i = load i64, ptr %109, align 8, !alias.scope !2430, !noalias !2431 + %.not.i4.i.i.i24.i.i.i.i.i.i = icmp eq i64 %111, %.promoted.i.i.i23.i.i.i.i.i.i br i1 %.not.i4.i.i.i24.i.i.i.i.i.i, label %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h1faaddcaf0c09889E.exit29.i.i.i.i.i.i", label %.lr.ph.i.i.i25.i.i.i.i.i.i -.lr.ph.i.i.i25.i.i.i.i.i.i: ; preds = %106 +.lr.ph.i.i.i25.i.i.i.i.i.i: ; preds = %107 %.pre.i.i.i26.i.i.i.i.i.i = load i64, ptr %.sroa.4.0..sroa_idx.i.i.i, align 8, !alias.scope !2432, !noalias !2437 - %111 = load ptr, ptr %.sroa.57.0..sroa_idx.i.i.i, align 8, !alias.scope !2432, !noalias !2437, !noundef !11 - %112 = mul i64 %.pre.i.i.i26.i.i.i.i.i.i, 24 - %scevgep.i27.i.i.i.i.i.i = getelementptr i8, ptr %111, i64 %112 - %113 = mul i64 %.promoted.i.i.i23.i.i.i.i.i.i, 24 - %scevgep1.i28.i.i.i.i.i.i = getelementptr i8, ptr %4, i64 %113 - %114 = sub i64 %110, %.promoted.i.i.i23.i.i.i.i.i.i - %115 = mul i64 %114, 24 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep.i27.i.i.i.i.i.i, ptr align 8 %scevgep1.i28.i.i.i.i.i.i, i64 %115, i1 false), !noalias !2447 - %116 = add i64 %.pre.i.i.i26.i.i.i.i.i.i, %114 - store i64 %116, ptr %.sroa.4.0..sroa_idx.i.i.i, align 8, !alias.scope !2432, !noalias !2437 + %112 = load ptr, ptr %.sroa.57.0..sroa_idx.i.i.i, align 8, !alias.scope !2432, !noalias !2437, !noundef !11 + %113 = mul i64 %.pre.i.i.i26.i.i.i.i.i.i, 24 + %scevgep.i27.i.i.i.i.i.i = getelementptr i8, ptr %112, i64 %113 + %114 = mul i64 %.promoted.i.i.i23.i.i.i.i.i.i, 24 + %scevgep1.i28.i.i.i.i.i.i = getelementptr i8, ptr %4, i64 %114 + %115 = mul i64 %111, 24 + %116 = sub i64 %115, %114 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep.i27.i.i.i.i.i.i, ptr align 8 %scevgep1.i28.i.i.i.i.i.i, i64 %116, i1 false), !noalias !2447 + %117 = sub i64 %111, %.promoted.i.i.i23.i.i.i.i.i.i + %118 = add i64 %117, %.pre.i.i.i26.i.i.i.i.i.i + store i64 %118, ptr %.sroa.4.0..sroa_idx.i.i.i, align 8, !alias.scope !2432, !noalias !2437 br label %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h1faaddcaf0c09889E.exit29.i.i.i.i.i.i" -"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h1faaddcaf0c09889E.exit29.i.i.i.i.i.i": ; preds = %.lr.ph.i.i.i25.i.i.i.i.i.i, %106 +"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h1faaddcaf0c09889E.exit29.i.i.i.i.i.i": ; preds = %.lr.ph.i.i.i25.i.i.i.i.i.i, %107 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4), !noalias !2387 br label %"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17he8572c59d5ef6b5eE.exit" -117: ; preds = %123 - %118 = landingpad { ptr, i32 } +119: ; preds = %125 + %120 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #20, !noalias !2448 unreachable -119: ; preds = %102 - %120 = landingpad { ptr, i32 } +121: ; preds = %103 + %122 = landingpad { ptr, i32 } cleanup %.val21.i.i.i.i.i.i = load ptr, ptr %6, align 8, !alias.scope !2384, !noalias !2449, !nonnull !11, !align !106, !noundef !11 %.val22.i.i.i.i.i.i = load i64, ptr %.sroa.4.0..sroa_idx.i.i.i, align 8, !alias.scope !2384, !noalias !2449, !noundef !11 store i64 %.val22.i.i.i.i.i.i, ptr %.val21.i.i.i.i.i.i, align 8, !noalias !2419 - %121 = getelementptr inbounds i8, ptr %7, i64 72 - %122 = load i64, ptr %121, align 8, !range !94, !alias.scope !2381, !noalias !2386, !noundef !11 - %.not14.i.i.i.i.i.i = icmp eq i64 %122, 0 - br i1 %.not14.i.i.i.i.i.i, label %.body.i, label %123 + %123 = getelementptr inbounds i8, ptr %7, i64 72 + %124 = load i64, ptr %123, align 8, !range !94, !alias.scope !2381, !noalias !2386, !noundef !11 + %.not14.i.i.i.i.i.i = icmp eq i64 %124, 0 + br i1 %.not14.i.i.i.i.i.i, label %.body.i, label %125 -123: ; preds = %119 - %124 = getelementptr inbounds i8, ptr %7, i64 80 - invoke void @"_ZN4core3ptr87drop_in_place$LT$core..array..iter..IntoIter$LT$alloc..string..String$C$2_usize$GT$$GT$17h1f6f4f4edc81ad09E"(ptr noalias noundef nonnull align 8 dereferenceable(64) %124) #19 - to label %.body.i unwind label %117, !noalias !2448 +125: ; preds = %121 + %126 = getelementptr inbounds i8, ptr %7, i64 80 + invoke void @"_ZN4core3ptr87drop_in_place$LT$core..array..iter..IntoIter$LT$alloc..string..String$C$2_usize$GT$$GT$17h1f6f4f4edc81ad09E"(ptr noalias noundef nonnull align 8 dereferenceable(64) %126) #19 + to label %.body.i unwind label %119, !noalias !2448 -125: ; preds = %.thread.i.i.i +127: ; preds = %.thread.i.i.i unreachable -126: ; preds = %.thread.i.i.i, %82 - %127 = landingpad { ptr, i32 } +128: ; preds = %.thread.i.i.i, %82 + %129 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr266drop_in_place$LT$core..iter..adapters..flatten..FlatMap$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$C$$u5b$alloc..string..String$u3b$$u20$2$u5d$$C$project_model..cargo_workspace..CargoWorkspace..fetch_metadata..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h32ae44411bf88192E"(ptr noalias noundef nonnull align 8 dereferenceable(176) %9) #19 - to label %.body.i unwind label %128, !noalias !2340 + to label %.body.i unwind label %130, !noalias !2340 -128: ; preds = %126 - %129 = landingpad { ptr, i32 } +130: ; preds = %128 + %131 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #20, !noalias !2340 unreachable -.body.i: ; preds = %126, %123, %119 - %eh.lpad-body.i = phi { ptr, i32 } [ %127, %126 ], [ %120, %119 ], [ %120, %123 ] +.body.i: ; preds = %128, %125, %121 + %eh.lpad-body.i = phi { ptr, i32 } [ %129, %128 ], [ %122, %121 ], [ %122, %125 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$alloc..string..String$GT$$GT$17h3f8e5e87ed0d1c7bE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %11) #19 - to label %133 unwind label %130, !noalias !2340 + to label %135 unwind label %132, !noalias !2340 -130: ; preds = %134, %.body.i - %131 = landingpad { ptr, i32 } +132: ; preds = %136, %.body.i + %133 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #20, !noalias !2350 unreachable -132: ; preds = %.thread6.i +134: ; preds = %.thread6.i unreachable -133: ; preds = %134, %.body.i - %.pn4.i = phi { ptr, i32 } [ %135, %134 ], [ %eh.lpad-body.i, %.body.i ] +135: ; preds = %136, %.body.i + %.pn4.i = phi { ptr, i32 } [ %137, %136 ], [ %eh.lpad-body.i, %.body.i ] resume { ptr, i32 } %.pn4.i -134: ; preds = %.thread6.i, %40 - %135 = landingpad { ptr, i32 } +136: ; preds = %.thread6.i, %40 + %137 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr266drop_in_place$LT$core..iter..adapters..flatten..FlatMap$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$C$$u5b$alloc..string..String$u3b$$u20$2$u5d$$C$project_model..cargo_workspace..CargoWorkspace..fetch_metadata..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h32ae44411bf88192E"(ptr noalias noundef nonnull align 8 dereferenceable(176) %12) #19 - to label %133 unwind label %130, !noalias !2350 + to label %135 unwind label %132, !noalias !2350 -"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17he8572c59d5ef6b5eE.exit": ; preds = %103, %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h1faaddcaf0c09889E.exit29.i.i.i.i.i.i" +"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17he8572c59d5ef6b5eE.exit": ; preds = %104, %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h1faaddcaf0c09889E.exit29.i.i.i.i.i.i" %.val.i.i.i4.i.i.i = load ptr, ptr %6, align 8, !alias.scope !2384, !noalias !2449, !nonnull !11, !align !106, !noundef !11 %.val20.i.i.i.i.i.i = load i64, ptr %.sroa.4.0..sroa_idx.i.i.i, align 8, !alias.scope !2384, !noalias !2449, !noundef !11 store i64 %.val20.i.i.i.i.i.i, ptr %.val.i.i.i4.i.i.i, align 8, !noalias !2419 diff --git a/bench/rust-analyzer-rs/optimized/4yvp88cqyyaanzkc.ll b/bench/rust-analyzer-rs/optimized/4yvp88cqyyaanzkc.ll index 8b88ae2966b..3f26538f33a 100644 --- a/bench/rust-analyzer-rs/optimized/4yvp88cqyyaanzkc.ll +++ b/bench/rust-analyzer-rs/optimized/4yvp88cqyyaanzkc.ll @@ -1340,12 +1340,13 @@ define hidden void @"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$ %8 = shl i64 %.promoted.i.i, 2 %9 = getelementptr i8, ptr %1, i64 %8 %scevgep5.i = getelementptr i8, ptr %9, i64 16 - %10 = sub i64 %4, %.promoted.i.i - %11 = shl i64 %10, 2 + %10 = shl i64 %4, 2 + %11 = sub i64 %10, %8 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep.i, ptr align 4 %scevgep5.i, i64 %11, i1 false), !noalias !548 - %12 = add i64 %10, %.promoted5.i.i + %12 = sub i64 %4, %.promoted.i.i + %13 = add i64 %12, %.promoted5.i.i store i64 %4, ptr %1, align 8, !alias.scope !534, !noalias !537 - store i64 %12, ptr %6, align 8, !alias.scope !540, !noalias !545 + store i64 %13, ptr %6, align 8, !alias.scope !540, !noalias !545 br label %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h6f33155c7341504fE.llvm.6093752533286553222.exit" "_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h6f33155c7341504fE.llvm.6093752533286553222.exit": ; preds = %2, %.lr.ph.i.i @@ -1373,12 +1374,13 @@ define hidden void @"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$ %scevgep.i = getelementptr i8, ptr %.pre.i.i, i64 %8 %9 = shl i64 %.promoted.i.i, 2 %scevgep5.i = getelementptr i8, ptr %1, i64 %9 - %10 = sub i64 %5, %.promoted.i.i - %11 = shl i64 %10, 2 + %10 = shl i64 %5, 2 + %11 = sub i64 %10, %9 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep.i, ptr align 4 %scevgep5.i, i64 %11, i1 false), !noalias !571 - %12 = add i64 %10, %.promoted5.i.i + %12 = sub i64 %5, %.promoted.i.i + %13 = add i64 %12, %.promoted5.i.i store i64 %5, ptr %3, align 8, !alias.scope !557, !noalias !560 - store i64 %12, ptr %7, align 8, !alias.scope !563, !noalias !568 + store i64 %13, ptr %7, align 8, !alias.scope !563, !noalias !568 br label %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hbe96b092c9da4a8aE.llvm.6093752533286553222.exit" "_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hbe96b092c9da4a8aE.llvm.6093752533286553222.exit": ; preds = %2, %.lr.ph.i.i @@ -1406,12 +1408,13 @@ define hidden void @"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$ %8 = shl i64 %.promoted.i.i, 2 %9 = getelementptr i8, ptr %1, i64 %8 %scevgep5.i = getelementptr i8, ptr %9, i64 16 - %10 = sub i64 %4, %.promoted.i.i - %11 = shl i64 %10, 2 + %10 = shl i64 %4, 2 + %11 = sub i64 %10, %8 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep.i, ptr align 4 %scevgep5.i, i64 %11, i1 false), !noalias !594 - %12 = add i64 %10, %.promoted5.i.i + %12 = sub i64 %4, %.promoted.i.i + %13 = add i64 %12, %.promoted5.i.i store i64 %4, ptr %1, align 8, !alias.scope !580, !noalias !583 - store i64 %12, ptr %6, align 8, !alias.scope !586, !noalias !591 + store i64 %13, ptr %6, align 8, !alias.scope !586, !noalias !591 br label %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h6100815ea75e458dE.llvm.6093752533286553222.exit" "_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h6100815ea75e458dE.llvm.6093752533286553222.exit": ; preds = %2, %.lr.ph.i.i @@ -6967,8 +6970,8 @@ define hidden void @"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u %8 = shl i64 %.promoted.i, 2 %9 = getelementptr i8, ptr %0, i64 %8 %scevgep5 = getelementptr i8, ptr %9, i64 16 - %10 = sub i64 %4, %.promoted.i - %11 = shl i64 %10, 2 + %10 = shl i64 %4, 2 + %11 = sub i64 %10, %8 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep, ptr align 4 %scevgep5, i64 %11, i1 false), !noalias !2389 %12 = add i64 %4, %.promoted5.i %13 = sub i64 %12, %.promoted.i @@ -6999,8 +7002,8 @@ define hidden void @"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u %8 = shl i64 %.promoted.i, 2 %9 = getelementptr i8, ptr %0, i64 %8 %scevgep5 = getelementptr i8, ptr %9, i64 16 - %10 = sub i64 %4, %.promoted.i - %11 = shl i64 %10, 2 + %10 = shl i64 %4, 2 + %11 = sub i64 %10, %8 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep, ptr align 4 %scevgep5, i64 %11, i1 false), !noalias !2407 %12 = add i64 %4, %.promoted5.i %13 = sub i64 %12, %.promoted.i @@ -7031,8 +7034,8 @@ define hidden void @"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u %scevgep = getelementptr i8, ptr %.pre.i, i64 %8 %9 = shl i64 %.promoted.i, 2 %scevgep5 = getelementptr i8, ptr %0, i64 %9 - %10 = sub i64 %5, %.promoted.i - %11 = shl i64 %10, 2 + %10 = shl i64 %5, 2 + %11 = sub i64 %10, %9 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep, ptr align 4 %scevgep5, i64 %11, i1 false), !noalias !2425 %12 = add i64 %5, %.promoted5.i %13 = sub i64 %12, %.promoted.i diff --git a/bench/soc-simulator/optimized/verilated.ll b/bench/soc-simulator/optimized/verilated.ll index 70a2117cb1a..0900707d1e2 100644 --- a/bench/soc-simulator/optimized/verilated.ll +++ b/bench/soc-simulator/optimized/verilated.ll @@ -4173,14 +4173,14 @@ _ZL17VL_MOSTSETBITP1_WiPKj.exit217: ; preds = %.preheader.i212 ._crit_edge250: ; preds = %._crit_edge240 %104 = add nsw i32 %45, -1 %105 = zext nneg i32 %104 to i64 - %106 = add nsw i32 %45, -2 - %107 = zext nneg i32 %106 to i64 - %108 = shl nuw nsw i64 %107, 2 - %109 = sub nsw i64 %105, %107 - %110 = shl nsw i64 %109, 2 + %106 = shl nuw nsw i64 %105, 2 + %107 = add nsw i32 %45, -2 + %108 = zext nneg i32 %107 to i64 + %109 = shl nuw nsw i64 %108, 2 + %110 = sub nsw i64 %106, %109 %scevgep = getelementptr i8, ptr %7, i64 %110 %scevgep313 = getelementptr i8, ptr %3, i64 %110 - %111 = add nuw nsw i64 %108, 4 + %111 = add nuw nsw i64 %109, 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, ptr noundef nonnull align 4 dereferenceable(1) %scevgep313, i64 %111, i1 false) %112 = load i32, ptr %3, align 4 store i32 %112, ptr %7, align 16 @@ -4193,14 +4193,14 @@ _ZL17VL_MOSTSETBITP1_WiPKj.exit217: ; preds = %.preheader.i212 .lr.ph253.preheader: ; preds = %._crit_edge250 %116 = add nsw i32 %42, -1 %117 = zext i32 %116 to i64 - %118 = tail call i32 @llvm.usub.sat.i32(i32 %42, i32 2) - %119 = zext nneg i32 %118 to i64 - %120 = shl nuw nsw i64 %119, 2 - %121 = sub nsw i64 %117, %119 - %122 = shl nsw i64 %121, 2 + %118 = shl nuw nsw i64 %117, 2 + %119 = tail call i32 @llvm.usub.sat.i32(i32 %42, i32 2) + %120 = shl nuw nsw i32 %119, 2 + %121 = zext nneg i32 %120 to i64 + %122 = sub nsw i64 %118, %121 %scevgep319 = getelementptr i8, ptr %6, i64 %122 %scevgep320 = getelementptr i8, ptr %2, i64 %122 - %123 = add nuw nsw i64 %120, 4 + %123 = add nuw nsw i64 %121, 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep319, ptr noundef nonnull align 4 dereferenceable(1) %scevgep320, i64 %123, i1 false) br label %._crit_edge254 @@ -5424,17 +5424,17 @@ _ZL8VL_ADD_WiPjPKjS1_.exit.us: ; preds = %.lr.ph.i.us, %.lr.p %indvars.iv.i47 = phi i64 [ %80, %.lr.ph.i45._crit_edge ], [ 0, %._crit_edge.i ] %69 = getelementptr inbounds i32, ptr %6, i64 %indvars.iv.i47 %70 = load i32, ptr %69, align 4 - %71 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.i47 - %72 = load i32, ptr %71, align 4 - %73 = and i32 %72, 1 - %74 = shl i32 %70, 1 - %75 = or disjoint i32 %73, %74 + %71 = shl i32 %70, 1 + %72 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.i47 + %73 = load i32, ptr %72, align 4 + %74 = and i32 %73, 1 + %75 = or disjoint i32 %74, %71 %76 = icmp eq i64 %indvars.iv.i47, %42 - %77 = and i32 %72, %41 + %77 = and i32 %73, %41 %78 = and i32 %75, %40 %79 = or i32 %78, %77 %storemerge.i = select i1 %76, i32 %79, i32 %75 - store i32 %storemerge.i, ptr %71, align 4 + store i32 %storemerge.i, ptr %72, align 4 %.not118.not.i = icmp slt i64 %indvars.iv.i47, %42 %80 = add nuw nsw i64 %indvars.iv.i47, 1 br i1 %.not118.not.i, label %.sink.split.i, label %.lr.ph.i45._crit_edge @@ -33272,18 +33272,18 @@ define internal void @_ZL13_vl_insert_WWPjPKjiii(ptr nocapture noundef %0, ptr n %73 = add nsw i64 %indvars.iv, %70 %74 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv %75 = load i32, ptr %74, align 4 - %76 = getelementptr inbounds i32, ptr %0, i64 %73 - %77 = load i32, ptr %76, align 4 - %78 = and i32 %77, %67 - %79 = and i32 %75, %59 - %80 = shl i32 %79, %8 - %81 = or i32 %78, %80 + %76 = shl i32 %75, %8 + %77 = getelementptr inbounds i32, ptr %0, i64 %73 + %78 = load i32, ptr %77, align 4 + %79 = and i32 %78, %67 + %80 = and i32 %76, %60 + %81 = or i32 %79, %80 %82 = icmp eq i64 %73, %71 - %83 = and i32 %77, %68 + %83 = and i32 %78, %68 %84 = and i32 %69, %81 %85 = or i32 %84, %83 %storemerge = select i1 %82, i32 %85, i32 %81 - store i32 %storemerge, ptr %76, align 4 + store i32 %storemerge, ptr %77, align 4 %.not118.not = icmp slt i64 %73, %71 br i1 %.not118.not, label %.sink.split, label %98 diff --git a/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll b/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll index 68f138b4240..6cddb6cd01c 100644 --- a/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll +++ b/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll @@ -2487,199 +2487,202 @@ define noundef i16 @"_ZN9softposit5p16e14math5round41_$LT$impl$u20$softposit..p1 ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(none) uwtable define noundef i16 @"_ZN9softposit5p16e14math6sin_pi41_$LT$impl$u20$softposit..p16e1..P16E1$GT$6sin_pi17h1a20b37451879767E"(i16 noundef %0) unnamed_addr #1 { %2 = zext i16 %0 to i64 - %3 = sub nuw nsw i64 65536, %2 - %4 = icmp slt i16 %0, 0 - %spec.select = select i1 %4, i64 %3, i64 %2 - %5 = icmp ugt i64 %spec.select, 31743 - br i1 %5, label %8, label %6 + %3 = and i64 %2, 32768 + %4 = icmp eq i64 %3, 0 + %5 = sub nuw nsw i64 65536, %2 + %spec.select = select i1 %4, i64 %2, i64 %5 + %6 = icmp ugt i64 %spec.select, 31743 + br i1 %6, label %9, label %7 -6: ; preds = %1 - %7 = icmp eq i64 %spec.select, 0 - br i1 %7, label %15, label %10 +7: ; preds = %1 + %8 = icmp eq i64 %spec.select, 0 + br i1 %8, label %16, label %11 -8: ; preds = %1 - %9 = icmp eq i64 %spec.select, 32768 - %. = select i1 %9, i16 -32768, i16 0 - br label %15 +9: ; preds = %1 + %10 = icmp eq i64 %spec.select, 32768 + %. = select i1 %10, i16 -32768, i16 0 + br label %16 -10: ; preds = %6 - %11 = icmp ult i64 %spec.select, 16384 - br i1 %11, label %.preheader, label %.preheader65 +11: ; preds = %7 + %12 = icmp ult i64 %spec.select, 16384 + br i1 %12, label %.preheader, label %.preheader65 -.preheader65: ; preds = %10 - %12 = and i64 %spec.select, 8192 - %13 = icmp eq i64 %12, 0 - br i1 %13, label %.loopexit.thread, label %.lr.ph +.preheader65: ; preds = %11 + %13 = and i64 %spec.select, 8192 + %14 = icmp eq i64 %13, 0 + br i1 %14, label %.loopexit.thread, label %.lr.ph -.preheader: ; preds = %10 - %14 = icmp ult i64 %spec.select, 8192 - br i1 %14, label %.lr.ph72, label %.loopexit.thread +.preheader: ; preds = %11 + %15 = icmp ult i64 %spec.select, 8192 + br i1 %15, label %.lr.ph72, label %.loopexit.thread -15: ; preds = %6, %8, %101, %52 - %.0 = phi i16 [ %.052, %52 ], [ %106, %101 ], [ %., %8 ], [ 0, %6 ] +16: ; preds = %7, %9, %104, %51 + %.0 = phi i16 [ %.052, %51 ], [ %109, %104 ], [ %., %9 ], [ 0, %7 ] ret i16 %.0 .lr.ph72: ; preds = %.preheader, %.lr.ph72 - %.05171 = phi i32 [ %17, %.lr.ph72 ], [ 14, %.preheader ] - %.15570 = phi i64 [ %16, %.lr.ph72 ], [ %spec.select, %.preheader ] - %16 = shl i64 %.15570, 1 - %17 = add i32 %.05171, -2 - %18 = and i64 %.15570, 4096 - %19 = icmp eq i64 %18, 0 - br i1 %19, label %.lr.ph72, label %.loopexit + %.05171 = phi i32 [ %18, %.lr.ph72 ], [ 14, %.preheader ] + %.15570 = phi i64 [ %17, %.lr.ph72 ], [ %spec.select, %.preheader ] + %17 = shl i64 %.15570, 1 + %18 = add i32 %.05171, -2 + %19 = and i64 %.15570, 4096 + %20 = icmp eq i64 %19, 0 + br i1 %20, label %.lr.ph72, label %.loopexit .loopexit.thread: ; preds = %.preheader, %.preheader65 %.2.ph = phi i32 [ 16, %.preheader65 ], [ 14, %.preheader ] - %20 = trunc nuw nsw i64 %spec.select to i32 - %21 = lshr i32 %20, 12 - %22 = and i32 %21, 1 - %spec.select6088 = or disjoint i32 %22, %.2.ph - %23 = and i64 %spec.select, 4095 - %24 = or disjoint i64 %23, 4096 - br label %35 + %21 = trunc nuw nsw i64 %spec.select to i32 + %22 = lshr i32 %21, 12 + %23 = and i32 %22, 1 + %spec.select6088 = or disjoint i32 %23, %.2.ph + %24 = and i64 %spec.select, 4095 + %25 = or disjoint i64 %24, 4096 + br label %36 .loopexit: ; preds = %.lr.ph, %.lr.ph72 - %.357 = phi i64 [ %16, %.lr.ph72 ], [ %31, %.lr.ph ] - %.2 = phi i32 [ %17, %.lr.ph72 ], [ %32, %.lr.ph ] - %25 = trunc i64 %.357 to i32 - %26 = lshr i32 %25, 12 - %27 = and i32 %26, 1 - %spec.select60 = or disjoint i32 %27, %.2 - %28 = and i64 %.357, 4094 - %29 = or disjoint i64 %28, 4096 - %30 = icmp slt i32 %.2, 0 - br i1 %30, label %40, label %35 + %.357 = phi i64 [ %17, %.lr.ph72 ], [ %32, %.lr.ph ] + %.2 = phi i32 [ %18, %.lr.ph72 ], [ %33, %.lr.ph ] + %26 = trunc i64 %.357 to i32 + %27 = lshr i32 %26, 12 + %28 = and i32 %27, 1 + %spec.select60 = or disjoint i32 %28, %.2 + %29 = and i64 %.357, 4094 + %30 = or disjoint i64 %29, 4096 + %31 = icmp slt i32 %.2, 0 + br i1 %31, label %41, label %36 .lr.ph: ; preds = %.preheader65, %.lr.ph - %.168 = phi i32 [ %32, %.lr.ph ], [ 16, %.preheader65 ] - %.25667 = phi i64 [ %31, %.lr.ph ], [ %spec.select, %.preheader65 ] - %31 = shl i64 %.25667, 1 - %32 = add i32 %.168, 2 - %33 = and i64 %.25667, 4096 - %34 = icmp eq i64 %33, 0 - br i1 %34, label %.loopexit, label %.lr.ph - -35: ; preds = %.loopexit.thread, %.loopexit - %36 = phi i64 [ %24, %.loopexit.thread ], [ %29, %.loopexit ] + %.168 = phi i32 [ %33, %.lr.ph ], [ 16, %.preheader65 ] + %.25667 = phi i64 [ %32, %.lr.ph ], [ %spec.select, %.preheader65 ] + %32 = shl i64 %.25667, 1 + %33 = add i32 %.168, 2 + %34 = and i64 %.25667, 4096 + %35 = icmp eq i64 %34, 0 + br i1 %35, label %.loopexit, label %.lr.ph + +36: ; preds = %.loopexit.thread, %.loopexit + %37 = phi i64 [ %25, %.loopexit.thread ], [ %30, %.loopexit ] %spec.select6089 = phi i32 [ %spec.select6088, %.loopexit.thread ], [ %spec.select60, %.loopexit ] - %37 = and i32 %spec.select6089, 63 - %38 = zext nneg i32 %37 to i64 - %39 = shl i64 %36, %38 - br label %45 + %38 = and i32 %spec.select6089, 63 + %39 = zext nneg i32 %38 to i64 + %40 = shl i64 %37, %39 + br label %46 -40: ; preds = %.loopexit - %41 = sub i32 0, %spec.select60 - %42 = and i32 %41, 63 - %43 = zext nneg i32 %42 to i64 - %44 = lshr i64 %29, %43 - br label %45 +41: ; preds = %.loopexit + %42 = sub i32 0, %spec.select60 + %43 = and i32 %42, 63 + %44 = zext nneg i32 %43 to i64 + %45 = lshr i64 %30, %44 + br label %46 -45: ; preds = %40, %35 - %.4 = phi i64 [ %44, %40 ], [ %39, %35 ] - %46 = and i64 %.4, 134217727 - %47 = lshr i64 %.4, 13 - %48 = xor i64 %47, %2 - %spec.select61 = and i64 %48, 32768 - %49 = icmp eq i64 %46, 0 - %50 = and i64 %.4, 134217728 - %51 = icmp eq i64 %50, 0 - br i1 %49, label %52, label %55 - -52: ; preds = %45 - %53 = trunc nuw i64 %spec.select61 to i16 - %54 = or disjoint i16 %53, 16384 - %.052 = select i1 %51, i16 0, i16 %54 - br label %15 - -55: ; preds = %45 - %56 = sub nuw nsw i64 134217728, %46 - %spec.select62 = select i1 %51, i64 %46, i64 %56 - %57 = icmp ult i64 %spec.select62, 677889 - br i1 %57, label %76, label %58 - -58: ; preds = %55 - %59 = lshr i64 %spec.select62, 11 - %60 = mul nuw nsw i64 %59, %59 - %61 = lshr i64 %60, 8 - %62 = mul nuw nsw i64 %61, 650 - %63 = lshr i64 %62, 25 - %64 = sub nuw nsw i64 9813, %63 - %65 = mul nuw nsw i64 %64, %61 - %66 = lshr i64 %65, 23 - %67 = sub nuw nsw i64 334253, %66 - %68 = mul nuw nsw i64 %67, %61 +46: ; preds = %41, %36 + %.4 = phi i64 [ %45, %41 ], [ %40, %36 ] + %47 = and i64 %.4, 134217727 + %48 = lshr i64 %.4, 13 + %49 = and i64 %48, 32768 + %50 = icmp eq i64 %47, 0 + br i1 %50, label %51, label %56 + +51: ; preds = %46 + %spec.select61 = xor i64 %48, %3 + %52 = and i64 %.4, 134217728 + %53 = icmp eq i64 %52, 0 + %54 = trunc i64 %spec.select61 to i16 + %55 = or i16 %54, 16384 + %.052 = select i1 %53, i16 0, i16 %55 + br label %16 + +56: ; preds = %46 + %57 = and i64 %.4, 134217728 + %58 = icmp eq i64 %57, 0 + %59 = sub nuw nsw i64 134217728, %47 + %spec.select62 = select i1 %58, i64 %47, i64 %59 + %60 = icmp ult i64 %spec.select62, 677889 + br i1 %60, label %79, label %61 + +61: ; preds = %56 + %62 = lshr i64 %spec.select62, 11 + %63 = mul nuw nsw i64 %62, %62 + %64 = lshr i64 %63, 8 + %65 = mul nuw nsw i64 %64, 650 + %66 = lshr i64 %65, 25 + %67 = sub nuw nsw i64 9813, %66 + %68 = mul nuw nsw i64 %67, %64 %69 = lshr i64 %68, 23 - %70 = sub nuw nsw i64 5418741, %69 - %71 = mul nuw nsw i64 %70, %61 - %72 = lshr i64 %71, 22 - %73 = sub nuw nsw i64 52707180, %72 - %74 = mul nuw nsw i64 %73, %59 - %75 = lshr i64 %74, 13 + %70 = sub nuw nsw i64 334253, %69 + %71 = mul nuw nsw i64 %70, %64 + %72 = lshr i64 %71, 23 + %73 = sub nuw nsw i64 5418741, %72 + %74 = mul nuw nsw i64 %73, %64 + %75 = lshr i64 %74, 22 + %76 = sub nuw nsw i64 52707180, %75 + %77 = mul nuw nsw i64 %76, %62 + %78 = lshr i64 %77, 13 br label %_ZN9softposit5p16e14math6sin_pi4poly17h0f28874596538d6cE.exit -76: ; preds = %55 - %77 = mul nuw nsw i64 %spec.select62, 102943 - %78 = lshr i64 %77, 15 +79: ; preds = %56 + %80 = mul nuw nsw i64 %spec.select62, 102943 + %81 = lshr i64 %80, 15 br label %_ZN9softposit5p16e14math6sin_pi4poly17h0f28874596538d6cE.exit -_ZN9softposit5p16e14math6sin_pi4poly17h0f28874596538d6cE.exit: ; preds = %58, %76 - %.0.i = phi i64 [ %78, %76 ], [ %75, %58 ] - %79 = and i64 %.0.i, 134217728 - %80 = icmp eq i64 %79, 0 - br i1 %80, label %.lr.ph77, label %._crit_edge +_ZN9softposit5p16e14math6sin_pi4poly17h0f28874596538d6cE.exit: ; preds = %61, %79 + %.0.i = phi i64 [ %81, %79 ], [ %78, %61 ] + %82 = and i64 %.0.i, 134217728 + %83 = icmp eq i64 %82, 0 + br i1 %83, label %.lr.ph77, label %._crit_edge .lr.ph77: ; preds = %_ZN9softposit5p16e14math6sin_pi4poly17h0f28874596538d6cE.exit, %.lr.ph77 - %.05376 = phi i64 [ %82, %.lr.ph77 ], [ 1, %_ZN9softposit5p16e14math6sin_pi4poly17h0f28874596538d6cE.exit ] - %.675 = phi i64 [ %81, %.lr.ph77 ], [ %.0.i, %_ZN9softposit5p16e14math6sin_pi4poly17h0f28874596538d6cE.exit ] - %81 = shl i64 %.675, 1 - %82 = add i64 %.05376, 1 - %83 = and i64 %.675, 67108864 - %84 = icmp eq i64 %83, 0 - br i1 %84, label %.lr.ph77, label %._crit_edge + %.05376 = phi i64 [ %85, %.lr.ph77 ], [ 1, %_ZN9softposit5p16e14math6sin_pi4poly17h0f28874596538d6cE.exit ] + %.675 = phi i64 [ %84, %.lr.ph77 ], [ %.0.i, %_ZN9softposit5p16e14math6sin_pi4poly17h0f28874596538d6cE.exit ] + %84 = shl i64 %.675, 1 + %85 = add i64 %.05376, 1 + %86 = and i64 %.675, 67108864 + %87 = icmp eq i64 %86, 0 + br i1 %87, label %.lr.ph77, label %._crit_edge ._crit_edge: ; preds = %.lr.ph77, %_ZN9softposit5p16e14math6sin_pi4poly17h0f28874596538d6cE.exit - %.6.lcssa = phi i64 [ %.0.i, %_ZN9softposit5p16e14math6sin_pi4poly17h0f28874596538d6cE.exit ], [ %81, %.lr.ph77 ] - %.053.lcssa = phi i64 [ 1, %_ZN9softposit5p16e14math6sin_pi4poly17h0f28874596538d6cE.exit ], [ %82, %.lr.ph77 ] - %85 = and i64 %.053.lcssa, 1 - %86 = lshr i64 %.053.lcssa, 1 - %87 = add nuw i64 %86, 14 - %88 = add nuw i64 %87, %85 - %89 = icmp eq i64 %85, 0 - %90 = and i64 %.6.lcssa, 134217727 - %spec.select63 = select i1 %89, i64 %90, i64 %.6.lcssa - %91 = or i64 %spec.select63, 268435456 - %92 = add nuw i64 %88, 63 - %93 = and i64 %92, 63 - %94 = shl nuw i64 1, %93 - %95 = and i64 %94, %91 - %96 = icmp eq i64 %95, 0 - br i1 %96, label %101, label %97 + %.6.lcssa = phi i64 [ %.0.i, %_ZN9softposit5p16e14math6sin_pi4poly17h0f28874596538d6cE.exit ], [ %84, %.lr.ph77 ] + %.053.lcssa = phi i64 [ 1, %_ZN9softposit5p16e14math6sin_pi4poly17h0f28874596538d6cE.exit ], [ %85, %.lr.ph77 ] + %88 = and i64 %.053.lcssa, 1 + %89 = lshr i64 %.053.lcssa, 1 + %90 = add nuw i64 %89, 14 + %91 = add nuw i64 %90, %88 + %92 = icmp eq i64 %88, 0 + %93 = and i64 %.6.lcssa, 134217727 + %spec.select63 = select i1 %92, i64 %93, i64 %.6.lcssa + %94 = or i64 %spec.select63, 268435456 + %95 = add nuw i64 %91, 63 + %96 = and i64 %95, 63 + %97 = shl nuw i64 1, %96 + %98 = and i64 %97, %94 + %99 = icmp eq i64 %98, 0 + br i1 %99, label %104, label %100 + +100: ; preds = %._crit_edge + %101 = add i64 %97, -1 + %102 = and i64 %101, %94 + %103 = icmp eq i64 %102, 0 + br i1 %103, label %110, label %114 + +104: ; preds = %110, %._crit_edge, %114 + %.8 = phi i64 [ %94, %._crit_edge ], [ %94, %110 ], [ %115, %114 ] + %105 = and i64 %91, 63 + %106 = lshr i64 %.8, %105 + %107 = icmp eq i64 %3, %49 + %108 = sub i64 0, %106 + %spec.select64 = select i1 %107, i64 %106, i64 %108 + %109 = trunc i64 %spec.select64 to i16 + br label %16 -97: ; preds = %._crit_edge - %98 = add i64 %94, -1 - %99 = and i64 %98, %91 - %100 = icmp eq i64 %99, 0 - br i1 %100, label %107, label %111 - -101: ; preds = %107, %._crit_edge, %111 - %.8 = phi i64 [ %91, %._crit_edge ], [ %91, %107 ], [ %112, %111 ] - %102 = and i64 %88, 63 - %103 = lshr i64 %.8, %102 - %104 = icmp eq i64 %spec.select61, 0 - %105 = sub i64 0, %103 - %spec.select64 = select i1 %104, i64 %103, i64 %105 - %106 = trunc i64 %spec.select64 to i16 - br label %15 - -107: ; preds = %97 - %108 = shl i64 2, %93 - %109 = and i64 %108, %91 - %110 = icmp eq i64 %109, 0 - br i1 %110, label %101, label %111 +110: ; preds = %100 + %111 = shl i64 2, %96 + %112 = and i64 %111, %94 + %113 = icmp eq i64 %112, 0 + br i1 %113, label %104, label %114 -111: ; preds = %107, %97 - %112 = add i64 %94, %91 - br label %101 +114: ; preds = %110, %100 + %115 = add i64 %97, %94 + br label %104 } ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(none) uwtable diff --git a/bench/softposit-rs/optimized/8mae6k72v4zmmji.ll b/bench/softposit-rs/optimized/8mae6k72v4zmmji.ll index d561a69b7c1..a181487fc14 100644 --- a/bench/softposit-rs/optimized/8mae6k72v4zmmji.ll +++ b/bench/softposit-rs/optimized/8mae6k72v4zmmji.ll @@ -164,10 +164,10 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 %31 = zext nneg i32 %30 to i64 %32 = lshr i64 2305843009213693952, %31 %33 = and i64 %29, %32 - %34 = add nsw i64 %32, -1 - %35 = ashr i64 -2305843009213693953, %31 - %36 = xor i64 %34, %35 - %37 = and i64 %36, %29 + %34 = xor i64 %33, %29 + %35 = add nuw i64 %32, 9223372036854775807 + %36 = and i64 %35, %29 + %37 = xor i64 %34, %36 %38 = icmp eq i64 %33, 0 br i1 %38, label %39, label %45 @@ -182,8 +182,8 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 45: ; preds = %_ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.16419641384398726998.exit.i %46 = lshr i64 4611686018427387904, %31 - %47 = or i64 %34, %46 - %48 = and i64 %47, %29 + %47 = and i64 %29, %46 + %48 = or i64 %36, %47 %49 = icmp eq i64 %48, 0 br i1 %49, label %39, label %50 @@ -351,10 +351,10 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 %38 = zext nneg i32 %37 to i64 %39 = lshr i64 2305843009213693952, %38 %40 = and i64 %36, %39 - %41 = add nsw i64 %39, -1 - %42 = ashr i64 -2305843009213693953, %38 - %43 = xor i64 %41, %42 - %44 = and i64 %43, %36 + %41 = xor i64 %40, %36 + %42 = add nuw i64 %39, 9223372036854775807 + %43 = and i64 %42, %36 + %44 = xor i64 %41, %43 %45 = icmp eq i64 %40, 0 br i1 %45, label %46, label %52 @@ -369,8 +369,8 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 52: ; preds = %_ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.16419641384398726998.exit.i.i %53 = lshr i64 4611686018427387904, %38 - %54 = or i64 %41, %53 - %55 = and i64 %54, %36 + %54 = and i64 %36, %53 + %55 = or i64 %43, %54 %56 = icmp eq i64 %55, 0 br i1 %56, label %46, label %57 @@ -1004,10 +1004,10 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 %49 = zext nneg i32 %48 to i64 %50 = lshr i64 2305843009213693952, %49 %51 = and i64 %47, %50 - %52 = add nsw i64 %50, -1 - %53 = ashr i64 -2305843009213693953, %49 - %54 = xor i64 %52, %53 - %55 = and i64 %54, %47 + %52 = xor i64 %51, %47 + %53 = add nuw i64 %50, 9223372036854775807 + %54 = and i64 %53, %47 + %55 = xor i64 %52, %54 %56 = icmp eq i64 %51, 0 br i1 %56, label %"_ZN9softposit5p32e27convert41_$LT$impl$u20$softposit..p32e2..P32E2$GT$6to_i3217hc1a6c5bbffa9436eE.llvm.10961338582784087609.exit", label %63 @@ -1023,8 +1023,8 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 63: ; preds = %_ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.16419641384398726998.exit.i.i %64 = lshr i64 4611686018427387904, %49 - %65 = or i64 %52, %64 - %66 = and i64 %65, %47 + %65 = and i64 %47, %64 + %66 = or i64 %54, %65 %67 = icmp eq i64 %66, 0 br i1 %67, label %"_ZN9softposit5p32e27convert41_$LT$impl$u20$softposit..p32e2..P32E2$GT$6to_i3217hc1a6c5bbffa9436eE.llvm.10961338582784087609.exit", label %68 @@ -1089,10 +1089,10 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 %97 = zext nneg i32 %96 to i64 %98 = lshr i64 2305843009213693952, %97 %99 = and i64 %95, %98 - %100 = add nsw i64 %98, -1 - %101 = ashr i64 -2305843009213693953, %97 - %102 = xor i64 %100, %101 - %103 = and i64 %102, %95 + %100 = xor i64 %99, %95 + %101 = add nuw i64 %98, 9223372036854775807 + %102 = and i64 %101, %95 + %103 = xor i64 %100, %102 %104 = icmp eq i64 %99, 0 br i1 %104, label %"_ZN9softposit5p32e27convert41_$LT$impl$u20$softposit..p32e2..P32E2$GT$6to_i3217hc1a6c5bbffa9436eE.llvm.10961338582784087609.exit86", label %111 @@ -1108,8 +1108,8 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 111: ; preds = %_ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.16419641384398726998.exit.i.i76 %112 = lshr i64 4611686018427387904, %97 - %113 = or i64 %100, %112 - %114 = and i64 %113, %95 + %113 = and i64 %95, %112 + %114 = or i64 %102, %113 %115 = icmp eq i64 %114, 0 br i1 %115, label %"_ZN9softposit5p32e27convert41_$LT$impl$u20$softposit..p32e2..P32E2$GT$6to_i3217hc1a6c5bbffa9436eE.llvm.10961338582784087609.exit86", label %116 @@ -1219,10 +1219,10 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 %166 = zext nneg i32 %165 to i64 %167 = lshr i64 2305843009213693952, %166 %168 = and i64 %164, %167 - %169 = add nsw i64 %167, -1 - %170 = ashr i64 -2305843009213693953, %166 - %171 = xor i64 %169, %170 - %172 = and i64 %171, %164 + %169 = xor i64 %168, %164 + %170 = add nuw i64 %167, 9223372036854775807 + %171 = and i64 %170, %164 + %172 = xor i64 %169, %171 %173 = icmp eq i64 %168, 0 br i1 %173, label %174, label %180 @@ -1237,8 +1237,8 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 180: ; preds = %_ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.16419641384398726998.exit.i.i.i %181 = lshr i64 4611686018427387904, %166 - %182 = or i64 %169, %181 - %183 = and i64 %182, %164 + %182 = and i64 %164, %181 + %183 = or i64 %171, %182 %184 = icmp eq i64 %183, 0 br i1 %184, label %174, label %185 @@ -1702,10 +1702,10 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 %44 = zext nneg i32 %43 to i64 %45 = lshr i64 2305843009213693952, %44 %46 = and i64 %42, %45 - %47 = add nsw i64 %45, -1 - %48 = ashr i64 -2305843009213693953, %44 - %49 = xor i64 %47, %48 - %50 = and i64 %49, %42 + %47 = xor i64 %46, %42 + %48 = add nuw i64 %45, 9223372036854775807 + %49 = and i64 %48, %42 + %50 = xor i64 %47, %49 %51 = icmp eq i64 %46, 0 br i1 %51, label %52, label %59 @@ -1721,8 +1721,8 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 59: ; preds = %_ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.16419641384398726998.exit.i.i %60 = lshr i64 4611686018427387904, %44 - %61 = or i64 %47, %60 - %62 = and i64 %61, %42 + %61 = and i64 %42, %60 + %62 = or i64 %49, %61 %63 = icmp eq i64 %62, 0 br i1 %63, label %52, label %64 @@ -1904,10 +1904,10 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 %51 = zext nneg i32 %50 to i64 %52 = lshr i64 2305843009213693952, %51 %53 = and i64 %49, %52 - %54 = add nsw i64 %52, -1 - %55 = ashr i64 -2305843009213693953, %51 - %56 = xor i64 %54, %55 - %57 = and i64 %56, %49 + %54 = xor i64 %53, %49 + %55 = add nuw i64 %52, 9223372036854775807 + %56 = and i64 %55, %49 + %57 = xor i64 %54, %56 %58 = icmp eq i64 %53, 0 br i1 %58, label %59, label %65 @@ -1922,8 +1922,8 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 65: ; preds = %_ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.16419641384398726998.exit.i.i %66 = lshr i64 4611686018427387904, %51 - %67 = or i64 %54, %66 - %68 = and i64 %67, %49 + %67 = and i64 %49, %66 + %68 = or i64 %56, %67 %69 = icmp eq i64 %68, 0 br i1 %69, label %59, label %70 @@ -2172,10 +2172,10 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 %48 = zext nneg i32 %47 to i64 %49 = lshr i64 2305843009213693952, %48 %50 = and i64 %46, %49 - %51 = add nsw i64 %49, -1 - %52 = ashr i64 -2305843009213693953, %48 - %53 = xor i64 %51, %52 - %54 = and i64 %53, %46 + %51 = xor i64 %50, %46 + %52 = add nuw i64 %49, 9223372036854775807 + %53 = and i64 %52, %46 + %54 = xor i64 %51, %53 %55 = icmp eq i64 %50, 0 br i1 %55, label %56, label %62 @@ -2190,8 +2190,8 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 62: ; preds = %_ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.16419641384398726998.exit.i.i %63 = lshr i64 4611686018427387904, %48 - %64 = or i64 %51, %63 - %65 = and i64 %64, %46 + %64 = and i64 %46, %63 + %65 = or i64 %53, %64 %66 = icmp eq i64 %65, 0 br i1 %66, label %56, label %67 @@ -2380,10 +2380,10 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 %41 = zext nneg i32 %40 to i64 %42 = lshr i64 2305843009213693952, %41 %43 = and i64 %39, %42 - %44 = add nsw i64 %42, -1 - %45 = ashr i64 -2305843009213693953, %41 - %46 = xor i64 %44, %45 - %47 = and i64 %46, %39 + %44 = xor i64 %43, %39 + %45 = add nuw i64 %42, 9223372036854775807 + %46 = and i64 %45, %39 + %47 = xor i64 %44, %46 %48 = icmp eq i64 %43, 0 br i1 %48, label %49, label %56 @@ -2399,8 +2399,8 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 56: ; preds = %_ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.16419641384398726998.exit.i.i %57 = lshr i64 4611686018427387904, %41 - %58 = or i64 %44, %57 - %59 = and i64 %58, %39 + %58 = and i64 %39, %57 + %59 = or i64 %46, %58 %60 = icmp eq i64 %59, 0 br i1 %60, label %49, label %61 @@ -3122,10 +3122,10 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 %58 = zext nneg i32 %57 to i64 %59 = lshr i64 2305843009213693952, %58 %60 = and i64 %56, %59 - %61 = add nsw i64 %59, -1 - %62 = ashr i64 -2305843009213693953, %58 - %63 = xor i64 %61, %62 - %64 = and i64 %63, %56 + %61 = xor i64 %60, %56 + %62 = add nuw i64 %59, 9223372036854775807 + %63 = and i64 %62, %56 + %64 = xor i64 %61, %63 %65 = icmp eq i64 %60, 0 br i1 %65, label %66, label %72 @@ -3140,8 +3140,8 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 72: ; preds = %_ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.16419641384398726998.exit.i.i %73 = lshr i64 4611686018427387904, %58 - %74 = or i64 %61, %73 - %75 = and i64 %74, %56 + %74 = and i64 %56, %73 + %75 = or i64 %63, %74 %76 = icmp eq i64 %75, 0 br i1 %76, label %66, label %77 @@ -3279,10 +3279,10 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 %47 = zext nneg i32 %46 to i64 %48 = lshr i64 2305843009213693952, %47 %49 = and i64 %45, %48 - %50 = add nsw i64 %48, -1 - %51 = ashr i64 -2305843009213693953, %47 - %52 = xor i64 %50, %51 - %53 = and i64 %52, %45 + %50 = xor i64 %49, %45 + %51 = add nuw i64 %48, 9223372036854775807 + %52 = and i64 %51, %45 + %53 = xor i64 %50, %52 %54 = icmp eq i64 %49, 0 br i1 %54, label %55, label %61 @@ -3297,8 +3297,8 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 61: ; preds = %_ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.16419641384398726998.exit.i.i %62 = lshr i64 4611686018427387904, %47 - %63 = or i64 %50, %62 - %64 = and i64 %63, %45 + %63 = and i64 %45, %62 + %64 = or i64 %52, %63 %65 = icmp eq i64 %64, 0 br i1 %65, label %55, label %66 @@ -3400,10 +3400,10 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 %38 = zext nneg i32 %37 to i64 %39 = lshr i64 2305843009213693952, %38 %40 = and i64 %36, %39 - %41 = add nsw i64 %39, -1 - %42 = ashr i64 -2305843009213693953, %38 - %43 = xor i64 %41, %42 - %44 = and i64 %43, %36 + %41 = xor i64 %40, %36 + %42 = add nuw i64 %39, 9223372036854775807 + %43 = and i64 %42, %36 + %44 = xor i64 %41, %43 %45 = icmp eq i64 %40, 0 br i1 %45, label %46, label %52 @@ -3418,8 +3418,8 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 52: ; preds = %_ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.16419641384398726998.exit.i.i %53 = lshr i64 4611686018427387904, %38 - %54 = or i64 %41, %53 - %55 = and i64 %54, %36 + %54 = and i64 %36, %53 + %55 = or i64 %43, %54 %56 = icmp eq i64 %55, 0 br i1 %56, label %46, label %57 diff --git a/bench/spike/optimized/vmseq_vi.ll b/bench/spike/optimized/vmseq_vi.ll index f304df77c3c..f6366b1ccfc 100644 --- a/bench/spike/optimized/vmseq_vi.ll +++ b/bench/spike/optimized/vmseq_vi.ll @@ -334,8 +334,8 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %138 = ashr i32 %tr.sh.diff110, 24 br label %139 -139: ; preds = %.lr.ph, %175 - %.078112 = phi i64 [ %128, %.lr.ph ], [ %176, %175 ] +139: ; preds = %.lr.ph, %176 + %.078112 = phi i64 [ %128, %.lr.ph ], [ %177, %176 ] %140 = lshr i64 %.078112, 6 %141 = and i64 %.078112, 63 br i1 %131, label %142, label %._crit_edge116 @@ -354,7 +354,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %146 = shl nuw i64 1, %141 %147 = and i64 %145, %146 %148 = icmp eq i64 %147, 0 - br i1 %148, label %175, label %149 + br i1 %148, label %176, label %149 149: ; preds = %._crit_edge116, %142 %.pre-phi121 = phi i64 [ %.pre120, %._crit_edge116 ], [ %143, %142 ] @@ -400,22 +400,23 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %171 = xor i64 %.pre-phi118, -1 %172 = and i64 %170, %171 %173 = shl nuw i64 %.077, %141 - %174 = or i64 %172, %173 - store i64 %174, ptr %150, align 8 - br label %175 - -175: ; preds = %142, %169 - %176 = add i64 %.078112, 1 - %exitcond.not = icmp eq i64 %176, %121 + %174 = and i64 %173, %.pre-phi118 + %175 = or i64 %174, %172 + store i64 %175, ptr %150, align 8 + br label %176 + +176: ; preds = %142, %169 + %177 = add i64 %.078112, 1 + %exitcond.not = icmp eq i64 %177, %121 br i1 %exitcond.not, label %._crit_edge, label %139, !llvm.loop !6 -._crit_edge: ; preds = %175, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit - %177 = shl i64 %2, 32 - %178 = add i64 %177, 17179869184 - %179 = ashr exact i64 %178, 32 - %180 = load ptr, ptr %123, align 8 - tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %180, i64 noundef 0) #16 - ret i64 %179 +._crit_edge: ; preds = %176, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit + %178 = shl i64 %2, 32 + %179 = add i64 %178, 17179869184 + %180 = ashr exact i64 %179, 32 + %181 = load ptr, ptr %123, align 8 + tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %181, i64 noundef 0) #16 + ret i64 %180 } declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr @@ -709,8 +710,8 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %138 = ashr i32 %tr.sh.diff110, 24 br label %139 -139: ; preds = %.lr.ph, %175 - %.078112 = phi i64 [ %128, %.lr.ph ], [ %176, %175 ] +139: ; preds = %.lr.ph, %176 + %.078112 = phi i64 [ %128, %.lr.ph ], [ %177, %176 ] %140 = lshr i64 %.078112, 6 %141 = and i64 %.078112, 63 br i1 %131, label %142, label %._crit_edge116 @@ -729,7 +730,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %146 = shl nuw i64 1, %141 %147 = and i64 %145, %146 %148 = icmp eq i64 %147, 0 - br i1 %148, label %175, label %149 + br i1 %148, label %176, label %149 149: ; preds = %._crit_edge116, %142 %.pre-phi121 = phi i64 [ %.pre120, %._crit_edge116 ], [ %143, %142 ] @@ -775,20 +776,21 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %171 = xor i64 %.pre-phi118, -1 %172 = and i64 %170, %171 %173 = shl nuw i64 %.077, %141 - %174 = or i64 %172, %173 - store i64 %174, ptr %150, align 8 - br label %175 - -175: ; preds = %142, %169 - %176 = add i64 %.078112, 1 - %exitcond.not = icmp eq i64 %176, %121 + %174 = and i64 %173, %.pre-phi118 + %175 = or i64 %174, %172 + store i64 %175, ptr %150, align 8 + br label %176 + +176: ; preds = %142, %169 + %177 = add i64 %.078112, 1 + %exitcond.not = icmp eq i64 %177, %121 br i1 %exitcond.not, label %._crit_edge, label %139, !llvm.loop !7 -._crit_edge: ; preds = %175, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit - %177 = add i64 %2, 4 - %178 = load ptr, ptr %123, align 8 - tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %178, i64 noundef 0) #16 - ret i64 %177 +._crit_edge: ; preds = %176, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit + %178 = add i64 %2, 4 + %179 = load ptr, ptr %123, align 8 + tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %179, i64 noundef 0) #16 + ret i64 %178 } ; Function Attrs: mustprogress uwtable @@ -1050,8 +1052,8 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %138 = ashr i32 %tr.sh.diff110, 24 br label %139 -139: ; preds = %.lr.ph, %175 - %.078112 = phi i64 [ %128, %.lr.ph ], [ %176, %175 ] +139: ; preds = %.lr.ph, %176 + %.078112 = phi i64 [ %128, %.lr.ph ], [ %177, %176 ] %140 = lshr i64 %.078112, 6 %141 = and i64 %.078112, 63 br i1 %131, label %142, label %._crit_edge116 @@ -1070,7 +1072,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %146 = shl nuw i64 1, %141 %147 = and i64 %145, %146 %148 = icmp eq i64 %147, 0 - br i1 %148, label %175, label %149 + br i1 %148, label %176, label %149 149: ; preds = %._crit_edge116, %142 %.pre-phi121 = phi i64 [ %.pre120, %._crit_edge116 ], [ %143, %142 ] @@ -1116,22 +1118,23 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %171 = xor i64 %.pre-phi118, -1 %172 = and i64 %170, %171 %173 = shl nuw i64 %.077, %141 - %174 = or i64 %172, %173 - store i64 %174, ptr %150, align 8 - br label %175 - -175: ; preds = %142, %169 - %176 = add i64 %.078112, 1 - %exitcond.not = icmp eq i64 %176, %121 + %174 = and i64 %173, %.pre-phi118 + %175 = or i64 %174, %172 + store i64 %175, ptr %150, align 8 + br label %176 + +176: ; preds = %142, %169 + %177 = add i64 %.078112, 1 + %exitcond.not = icmp eq i64 %177, %121 br i1 %exitcond.not, label %._crit_edge, label %139, !llvm.loop !8 -._crit_edge: ; preds = %175, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit - %177 = shl i64 %2, 32 - %178 = add i64 %177, 17179869184 - %179 = ashr exact i64 %178, 32 - %180 = load ptr, ptr %123, align 8 - tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %180, i64 noundef 0) #16 - ret i64 %179 +._crit_edge: ; preds = %176, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit + %178 = shl i64 %2, 32 + %179 = add i64 %178, 17179869184 + %180 = ashr exact i64 %179, 32 + %181 = load ptr, ptr %123, align 8 + tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %181, i64 noundef 0) #16 + ret i64 %180 } ; Function Attrs: mustprogress uwtable @@ -1393,8 +1396,8 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %138 = ashr i32 %tr.sh.diff110, 24 br label %139 -139: ; preds = %.lr.ph, %175 - %.078112 = phi i64 [ %128, %.lr.ph ], [ %176, %175 ] +139: ; preds = %.lr.ph, %176 + %.078112 = phi i64 [ %128, %.lr.ph ], [ %177, %176 ] %140 = lshr i64 %.078112, 6 %141 = and i64 %.078112, 63 br i1 %131, label %142, label %._crit_edge116 @@ -1413,7 +1416,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %146 = shl nuw i64 1, %141 %147 = and i64 %145, %146 %148 = icmp eq i64 %147, 0 - br i1 %148, label %175, label %149 + br i1 %148, label %176, label %149 149: ; preds = %._crit_edge116, %142 %.pre-phi121 = phi i64 [ %.pre120, %._crit_edge116 ], [ %143, %142 ] @@ -1459,20 +1462,21 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %171 = xor i64 %.pre-phi118, -1 %172 = and i64 %170, %171 %173 = shl nuw i64 %.077, %141 - %174 = or i64 %172, %173 - store i64 %174, ptr %150, align 8 - br label %175 - -175: ; preds = %142, %169 - %176 = add i64 %.078112, 1 - %exitcond.not = icmp eq i64 %176, %121 + %174 = and i64 %173, %.pre-phi118 + %175 = or i64 %174, %172 + store i64 %175, ptr %150, align 8 + br label %176 + +176: ; preds = %142, %169 + %177 = add i64 %.078112, 1 + %exitcond.not = icmp eq i64 %177, %121 br i1 %exitcond.not, label %._crit_edge, label %139, !llvm.loop !9 -._crit_edge: ; preds = %175, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit - %177 = add i64 %2, 4 - %178 = load ptr, ptr %123, align 8 - tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %178, i64 noundef 0) #16 - ret i64 %177 +._crit_edge: ; preds = %176, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit + %178 = add i64 %2, 4 + %179 = load ptr, ptr %123, align 8 + tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %179, i64 noundef 0) #16 + ret i64 %178 } ; Function Attrs: mustprogress uwtable @@ -1734,8 +1738,8 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %138 = ashr i32 %tr.sh.diff110, 24 br label %139 -139: ; preds = %.lr.ph, %175 - %.078112 = phi i64 [ %128, %.lr.ph ], [ %176, %175 ] +139: ; preds = %.lr.ph, %176 + %.078112 = phi i64 [ %128, %.lr.ph ], [ %177, %176 ] %140 = lshr i64 %.078112, 6 %141 = and i64 %.078112, 63 br i1 %131, label %142, label %._crit_edge116 @@ -1754,7 +1758,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %146 = shl nuw i64 1, %141 %147 = and i64 %145, %146 %148 = icmp eq i64 %147, 0 - br i1 %148, label %175, label %149 + br i1 %148, label %176, label %149 149: ; preds = %._crit_edge116, %142 %.pre-phi121 = phi i64 [ %.pre120, %._crit_edge116 ], [ %143, %142 ] @@ -1800,22 +1804,23 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %171 = xor i64 %.pre-phi118, -1 %172 = and i64 %170, %171 %173 = shl nuw i64 %.077, %141 - %174 = or i64 %172, %173 - store i64 %174, ptr %150, align 8 - br label %175 - -175: ; preds = %142, %169 - %176 = add i64 %.078112, 1 - %exitcond.not = icmp eq i64 %176, %121 + %174 = and i64 %173, %.pre-phi118 + %175 = or i64 %174, %172 + store i64 %175, ptr %150, align 8 + br label %176 + +176: ; preds = %142, %169 + %177 = add i64 %.078112, 1 + %exitcond.not = icmp eq i64 %177, %121 br i1 %exitcond.not, label %._crit_edge, label %139, !llvm.loop !10 -._crit_edge: ; preds = %175, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit - %177 = shl i64 %2, 32 - %178 = add i64 %177, 17179869184 - %179 = ashr exact i64 %178, 32 - %180 = load ptr, ptr %123, align 8 - tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %180, i64 noundef 0) #16 - ret i64 %179 +._crit_edge: ; preds = %176, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit + %178 = shl i64 %2, 32 + %179 = add i64 %178, 17179869184 + %180 = ashr exact i64 %179, 32 + %181 = load ptr, ptr %123, align 8 + tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %181, i64 noundef 0) #16 + ret i64 %180 } ; Function Attrs: mustprogress uwtable @@ -2077,8 +2082,8 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %138 = ashr i32 %tr.sh.diff110, 24 br label %139 -139: ; preds = %.lr.ph, %175 - %.078112 = phi i64 [ %128, %.lr.ph ], [ %176, %175 ] +139: ; preds = %.lr.ph, %176 + %.078112 = phi i64 [ %128, %.lr.ph ], [ %177, %176 ] %140 = lshr i64 %.078112, 6 %141 = and i64 %.078112, 63 br i1 %131, label %142, label %._crit_edge116 @@ -2097,7 +2102,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %146 = shl nuw i64 1, %141 %147 = and i64 %145, %146 %148 = icmp eq i64 %147, 0 - br i1 %148, label %175, label %149 + br i1 %148, label %176, label %149 149: ; preds = %._crit_edge116, %142 %.pre-phi121 = phi i64 [ %.pre120, %._crit_edge116 ], [ %143, %142 ] @@ -2143,20 +2148,21 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %171 = xor i64 %.pre-phi118, -1 %172 = and i64 %170, %171 %173 = shl nuw i64 %.077, %141 - %174 = or i64 %172, %173 - store i64 %174, ptr %150, align 8 - br label %175 - -175: ; preds = %142, %169 - %176 = add i64 %.078112, 1 - %exitcond.not = icmp eq i64 %176, %121 + %174 = and i64 %173, %.pre-phi118 + %175 = or i64 %174, %172 + store i64 %175, ptr %150, align 8 + br label %176 + +176: ; preds = %142, %169 + %177 = add i64 %.078112, 1 + %exitcond.not = icmp eq i64 %177, %121 br i1 %exitcond.not, label %._crit_edge, label %139, !llvm.loop !11 -._crit_edge: ; preds = %175, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit - %177 = add i64 %2, 4 - %178 = load ptr, ptr %123, align 8 - tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %178, i64 noundef 0) #16 - ret i64 %177 +._crit_edge: ; preds = %176, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit + %178 = add i64 %2, 4 + %179 = load ptr, ptr %123, align 8 + tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %179, i64 noundef 0) #16 + ret i64 %178 } ; Function Attrs: mustprogress uwtable @@ -2418,8 +2424,8 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %138 = ashr i32 %tr.sh.diff110, 24 br label %139 -139: ; preds = %.lr.ph, %175 - %.078112 = phi i64 [ %128, %.lr.ph ], [ %176, %175 ] +139: ; preds = %.lr.ph, %176 + %.078112 = phi i64 [ %128, %.lr.ph ], [ %177, %176 ] %140 = lshr i64 %.078112, 6 %141 = and i64 %.078112, 63 br i1 %131, label %142, label %._crit_edge116 @@ -2438,7 +2444,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %146 = shl nuw i64 1, %141 %147 = and i64 %145, %146 %148 = icmp eq i64 %147, 0 - br i1 %148, label %175, label %149 + br i1 %148, label %176, label %149 149: ; preds = %._crit_edge116, %142 %.pre-phi121 = phi i64 [ %.pre120, %._crit_edge116 ], [ %143, %142 ] @@ -2484,22 +2490,23 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %171 = xor i64 %.pre-phi118, -1 %172 = and i64 %170, %171 %173 = shl nuw i64 %.077, %141 - %174 = or i64 %172, %173 - store i64 %174, ptr %150, align 8 - br label %175 - -175: ; preds = %142, %169 - %176 = add i64 %.078112, 1 - %exitcond.not = icmp eq i64 %176, %121 + %174 = and i64 %173, %.pre-phi118 + %175 = or i64 %174, %172 + store i64 %175, ptr %150, align 8 + br label %176 + +176: ; preds = %142, %169 + %177 = add i64 %.078112, 1 + %exitcond.not = icmp eq i64 %177, %121 br i1 %exitcond.not, label %._crit_edge, label %139, !llvm.loop !12 -._crit_edge: ; preds = %175, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit - %177 = shl i64 %2, 32 - %178 = add i64 %177, 17179869184 - %179 = ashr exact i64 %178, 32 - %180 = load ptr, ptr %123, align 8 - tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %180, i64 noundef 0) #16 - ret i64 %179 +._crit_edge: ; preds = %176, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit + %178 = shl i64 %2, 32 + %179 = add i64 %178, 17179869184 + %180 = ashr exact i64 %179, 32 + %181 = load ptr, ptr %123, align 8 + tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %181, i64 noundef 0) #16 + ret i64 %180 } ; Function Attrs: mustprogress uwtable @@ -2761,8 +2768,8 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %138 = ashr i32 %tr.sh.diff110, 24 br label %139 -139: ; preds = %.lr.ph, %175 - %.078112 = phi i64 [ %128, %.lr.ph ], [ %176, %175 ] +139: ; preds = %.lr.ph, %176 + %.078112 = phi i64 [ %128, %.lr.ph ], [ %177, %176 ] %140 = lshr i64 %.078112, 6 %141 = and i64 %.078112, 63 br i1 %131, label %142, label %._crit_edge116 @@ -2781,7 +2788,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %146 = shl nuw i64 1, %141 %147 = and i64 %145, %146 %148 = icmp eq i64 %147, 0 - br i1 %148, label %175, label %149 + br i1 %148, label %176, label %149 149: ; preds = %._crit_edge116, %142 %.pre-phi121 = phi i64 [ %.pre120, %._crit_edge116 ], [ %143, %142 ] @@ -2827,20 +2834,21 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE %171 = xor i64 %.pre-phi118, -1 %172 = and i64 %170, %171 %173 = shl nuw i64 %.077, %141 - %174 = or i64 %172, %173 - store i64 %174, ptr %150, align 8 - br label %175 - -175: ; preds = %142, %169 - %176 = add i64 %.078112, 1 - %exitcond.not = icmp eq i64 %176, %121 + %174 = and i64 %173, %.pre-phi118 + %175 = or i64 %174, %172 + store i64 %175, ptr %150, align 8 + br label %176 + +176: ; preds = %142, %169 + %177 = add i64 %.078112, 1 + %exitcond.not = icmp eq i64 %177, %121 br i1 %exitcond.not, label %._crit_edge, label %139, !llvm.loop !13 -._crit_edge: ; preds = %175, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit - %177 = add i64 %2, 4 - %178 = load ptr, ptr %123, align 8 - tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %178, i64 noundef 0) #16 - ret i64 %177 +._crit_edge: ; preds = %176, %_ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixEOm.exit + %178 = add i64 %2, 4 + %179 = load ptr, ptr %123, align 8 + tail call void @_ZN5csr_t5writeEm(ptr noundef nonnull align 8 dereferenceable(37) %179, i64 noundef 0) #16 + ret i64 %178 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/stockfish/optimized/movepick.ll b/bench/stockfish/optimized/movepick.ll index 14d0f09f1a0..3c8f1a9d1b2 100644 --- a/bench/stockfish/optimized/movepick.ll +++ b/bench/stockfish/optimized/movepick.ll @@ -1156,8 +1156,8 @@ _ZNK9Stockfish8Position10attacks_byILNS_9PieceTypeE4EEEmNS_5ColorE.exit: ; preds %113 = getelementptr inbounds i8, ptr %0, i64 24 br label %114 -114: ; preds = %.lr.ph, %222 - %.0102 = phi ptr [ %108, %.lr.ph ], [ %225, %222 ] +114: ; preds = %.lr.ph, %223 + %.0102 = phi ptr [ %108, %.lr.ph ], [ %226, %223 ] %115 = load ptr, ptr %0, align 8 %.sroa.0.0.copyload = load i16, ptr %.0102, align 4 %116 = lshr i16 %.sroa.0.0.copyload, 6 @@ -1194,8 +1194,8 @@ _ZNK9Stockfish8Position10attacks_byILNS_9PieceTypeE4EEEmNS_5ColorE.exit: ; preds %146 = getelementptr inbounds [64 x %"class.Stockfish::StatsEntry.29"], ptr %144, i64 0, i64 %145 %147 = load i16, ptr %146, align 2 %148 = sext i16 %147 to i32 - %149 = add nsw i32 %148, %132 - %150 = shl nsw i32 %149, 1 + %149 = shl nsw i32 %148, 1 + %150 = add nsw i32 %149, %133 store i32 %150, ptr %134, align 4 %151 = load ptr, ptr %113, align 8 %152 = load ptr, ptr %151, align 8 @@ -1203,129 +1203,130 @@ _ZNK9Stockfish8Position10attacks_byILNS_9PieceTypeE4EEEmNS_5ColorE.exit: ; preds %154 = getelementptr inbounds [64 x %"class.Stockfish::StatsEntry.34"], ptr %153, i64 0, i64 %145 %155 = load i16, ptr %154, align 2 %156 = sext i16 %155 to i32 - %157 = add nsw i32 %149, %156 + %157 = add nsw i32 %148, %156 %158 = shl nsw i32 %157, 1 - store i32 %158, ptr %134, align 4 - %159 = load ptr, ptr %113, align 8 - %160 = getelementptr inbounds i8, ptr %159, i64 8 - %161 = load ptr, ptr %160, align 8 - %162 = getelementptr inbounds [16 x %"struct.Stockfish::Stats.32"], ptr %161, i64 0, i64 %143 - %163 = getelementptr inbounds [64 x %"class.Stockfish::StatsEntry.34"], ptr %162, i64 0, i64 %145 - %164 = load i16, ptr %163, align 2 - %165 = sext i16 %164 to i32 - %166 = add nsw i32 %158, %165 - store i32 %166, ptr %134, align 4 - %167 = load ptr, ptr %113, align 8 - %168 = getelementptr inbounds i8, ptr %167, i64 16 - %169 = load ptr, ptr %168, align 8 - %170 = getelementptr inbounds [16 x %"struct.Stockfish::Stats.32"], ptr %169, i64 0, i64 %143 - %171 = getelementptr inbounds [64 x %"class.Stockfish::StatsEntry.34"], ptr %170, i64 0, i64 %145 - %172 = load i16, ptr %171, align 2 - %173 = sdiv i16 %172, 4 - %174 = sext i16 %173 to i32 - %175 = add nsw i32 %166, %174 - store i32 %175, ptr %134, align 4 - %176 = load ptr, ptr %113, align 8 - %177 = getelementptr inbounds i8, ptr %176, i64 24 - %178 = load ptr, ptr %177, align 8 - %179 = getelementptr inbounds [16 x %"struct.Stockfish::Stats.32"], ptr %178, i64 0, i64 %143 - %180 = getelementptr inbounds [64 x %"class.Stockfish::StatsEntry.34"], ptr %179, i64 0, i64 %145 - %181 = load i16, ptr %180, align 2 - %182 = sext i16 %181 to i32 - %183 = add nsw i32 %175, %182 - store i32 %183, ptr %134, align 4 - %184 = load ptr, ptr %113, align 8 - %185 = getelementptr inbounds i8, ptr %184, i64 40 - %186 = load ptr, ptr %185, align 8 - %187 = getelementptr inbounds [16 x %"struct.Stockfish::Stats.32"], ptr %186, i64 0, i64 %143 - %188 = getelementptr inbounds [64 x %"class.Stockfish::StatsEntry.34"], ptr %187, i64 0, i64 %145 - %189 = load i16, ptr %188, align 2 - %190 = sext i16 %189 to i32 - %191 = add nsw i32 %183, %190 - store i32 %191, ptr %134, align 4 - %192 = load ptr, ptr %0, align 8 - %193 = getelementptr inbounds i8, ptr %192, i64 848 - %194 = load ptr, ptr %193, align 8 - %195 = getelementptr inbounds i8, ptr %194, i64 96 - %196 = zext nneg i32 %121 to i64 - %197 = getelementptr inbounds [8 x i64], ptr %195, i64 0, i64 %196 - %198 = load i64, ptr %197, align 8 - %199 = shl nuw i64 1, %145 - %200 = and i64 %198, %199 - %.not71 = icmp eq i64 %200, 0 - %201 = select i1 %.not71, i32 0, i32 16384 - %202 = add nsw i32 %201, %191 - %203 = shl nuw i64 1, %118 - %204 = and i64 %203, %106 - %.not72 = icmp eq i64 %204, 0 - br i1 %.not72, label %214, label %205 - -205: ; preds = %114 - switch i32 %121, label %210 [ - i32 5, label %206 - i32 4, label %208 + %159 = add nsw i32 %158, %133 + store i32 %159, ptr %134, align 4 + %160 = load ptr, ptr %113, align 8 + %161 = getelementptr inbounds i8, ptr %160, i64 8 + %162 = load ptr, ptr %161, align 8 + %163 = getelementptr inbounds [16 x %"struct.Stockfish::Stats.32"], ptr %162, i64 0, i64 %143 + %164 = getelementptr inbounds [64 x %"class.Stockfish::StatsEntry.34"], ptr %163, i64 0, i64 %145 + %165 = load i16, ptr %164, align 2 + %166 = sext i16 %165 to i32 + %167 = add nsw i32 %159, %166 + store i32 %167, ptr %134, align 4 + %168 = load ptr, ptr %113, align 8 + %169 = getelementptr inbounds i8, ptr %168, i64 16 + %170 = load ptr, ptr %169, align 8 + %171 = getelementptr inbounds [16 x %"struct.Stockfish::Stats.32"], ptr %170, i64 0, i64 %143 + %172 = getelementptr inbounds [64 x %"class.Stockfish::StatsEntry.34"], ptr %171, i64 0, i64 %145 + %173 = load i16, ptr %172, align 2 + %174 = sdiv i16 %173, 4 + %175 = sext i16 %174 to i32 + %176 = add nsw i32 %167, %175 + store i32 %176, ptr %134, align 4 + %177 = load ptr, ptr %113, align 8 + %178 = getelementptr inbounds i8, ptr %177, i64 24 + %179 = load ptr, ptr %178, align 8 + %180 = getelementptr inbounds [16 x %"struct.Stockfish::Stats.32"], ptr %179, i64 0, i64 %143 + %181 = getelementptr inbounds [64 x %"class.Stockfish::StatsEntry.34"], ptr %180, i64 0, i64 %145 + %182 = load i16, ptr %181, align 2 + %183 = sext i16 %182 to i32 + %184 = add nsw i32 %176, %183 + store i32 %184, ptr %134, align 4 + %185 = load ptr, ptr %113, align 8 + %186 = getelementptr inbounds i8, ptr %185, i64 40 + %187 = load ptr, ptr %186, align 8 + %188 = getelementptr inbounds [16 x %"struct.Stockfish::Stats.32"], ptr %187, i64 0, i64 %143 + %189 = getelementptr inbounds [64 x %"class.Stockfish::StatsEntry.34"], ptr %188, i64 0, i64 %145 + %190 = load i16, ptr %189, align 2 + %191 = sext i16 %190 to i32 + %192 = add nsw i32 %184, %191 + store i32 %192, ptr %134, align 4 + %193 = load ptr, ptr %0, align 8 + %194 = getelementptr inbounds i8, ptr %193, i64 848 + %195 = load ptr, ptr %194, align 8 + %196 = getelementptr inbounds i8, ptr %195, i64 96 + %197 = zext nneg i32 %121 to i64 + %198 = getelementptr inbounds [8 x i64], ptr %196, i64 0, i64 %197 + %199 = load i64, ptr %198, align 8 + %200 = shl nuw i64 1, %145 + %201 = and i64 %199, %200 + %.not71 = icmp eq i64 %201, 0 + %202 = select i1 %.not71, i32 0, i32 16384 + %203 = add nsw i32 %202, %192 + %204 = shl nuw i64 1, %118 + %205 = and i64 %204, %106 + %.not72 = icmp eq i64 %205, 0 + br i1 %.not72, label %215, label %206 + +206: ; preds = %114 + switch i32 %121, label %211 [ + i32 5, label %207 + i32 4, label %209 ] -206: ; preds = %205 - %207 = and i64 %199, %93 - %.not73 = icmp eq i64 %207, 0 - br i1 %.not73, label %.thread, label %210 +207: ; preds = %206 + %208 = and i64 %200, %93 + %.not73 = icmp eq i64 %208, 0 + br i1 %.not73, label %.thread, label %211 -208: ; preds = %205 - %209 = and i64 %199, %67 - %.not74 = icmp eq i64 %209, 0 - br i1 %.not74, label %.thread, label %210 +209: ; preds = %206 + %210 = and i64 %200, %67 + %.not74 = icmp eq i64 %210, 0 + br i1 %.not74, label %.thread, label %211 -210: ; preds = %206, %205, %208 - %211 = and i64 %199, %27 - %.not75 = icmp eq i64 %211, 0 - %212 = select i1 %.not75, i32 15000, i32 0 +211: ; preds = %207, %206, %209 + %212 = and i64 %200, %27 + %.not75 = icmp eq i64 %212, 0 + %213 = select i1 %.not75, i32 15000, i32 0 br label %.thread -.thread: ; preds = %206, %208, %210 - %.ph = phi i32 [ 25000, %208 ], [ %212, %210 ], [ 50000, %206 ] - %213 = add nsw i32 %.ph, %202 - br label %222 +.thread: ; preds = %207, %209, %211 + %.ph = phi i32 [ 25000, %209 ], [ %213, %211 ], [ 50000, %207 ] + %214 = add nsw i32 %.ph, %203 + br label %223 -214: ; preds = %114 - switch i32 %121, label %220 [ - i32 5, label %215 - i32 4, label %218 - i32 1, label %222 +215: ; preds = %114 + switch i32 %121, label %221 [ + i32 5, label %216 + i32 4, label %219 + i32 1, label %223 ] -215: ; preds = %214 - %216 = and i64 %199, %93 - %.not80 = icmp eq i64 %216, 0 +216: ; preds = %215 + %217 = and i64 %200, %93 + %.not80 = icmp eq i64 %217, 0 %.neg = select i1 %.not80, i32 0, i32 -50000 - %217 = and i64 %199, %67 - %.not81 = icmp eq i64 %217, 0 + %218 = and i64 %200, %67 + %.not81 = icmp eq i64 %218, 0 %.neg82 = select i1 %.not81, i32 0, i32 -10000 %.neg83 = add nsw i32 %.neg, %.neg82 - br label %222 + br label %223 -218: ; preds = %214 - %219 = and i64 %199, %67 - %.not79 = icmp eq i64 %219, 0 +219: ; preds = %215 + %220 = and i64 %200, %67 + %.not79 = icmp eq i64 %220, 0 %.neg84 = select i1 %.not79, i32 0, i32 -25000 - br label %222 + br label %223 -220: ; preds = %214 - %221 = and i64 %199, %27 - %.not78 = icmp eq i64 %221, 0 +221: ; preds = %215 + %222 = and i64 %200, %27 + %.not78 = icmp eq i64 %222, 0 %.neg85 = select i1 %.not78, i32 0, i32 -15000 - br label %222 - -222: ; preds = %.thread, %214, %215, %220, %218 - %223 = phi i32 [ %202, %215 ], [ %202, %218 ], [ %202, %220 ], [ %202, %214 ], [ %213, %.thread ] - %.neg86 = phi i32 [ %.neg83, %215 ], [ %.neg84, %218 ], [ %.neg85, %220 ], [ 0, %214 ], [ 0, %.thread ] - %224 = add nsw i32 %.neg86, %223 - store i32 %224, ptr %134, align 4 - %225 = getelementptr inbounds i8, ptr %.0102, i64 8 - %.not = icmp eq ptr %225, %110 + br label %223 + +223: ; preds = %.thread, %215, %216, %221, %219 + %224 = phi i32 [ %203, %216 ], [ %203, %219 ], [ %203, %221 ], [ %203, %215 ], [ %214, %.thread ] + %.neg86 = phi i32 [ %.neg83, %216 ], [ %.neg84, %219 ], [ %.neg85, %221 ], [ 0, %215 ], [ 0, %.thread ] + %225 = add nsw i32 %.neg86, %224 + store i32 %225, ptr %134, align 4 + %226 = getelementptr inbounds i8, ptr %.0102, i64 8 + %.not = icmp eq ptr %226, %110 br i1 %.not, label %._crit_edge, label %114 -._crit_edge: ; preds = %222, %_ZNK9Stockfish8Position10attacks_byILNS_9PieceTypeE4EEEmNS_5ColorE.exit +._crit_edge: ; preds = %223, %_ZNK9Stockfish8Position10attacks_byILNS_9PieceTypeE4EEEmNS_5ColorE.exit ret void } diff --git a/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll b/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll index 90729011317..462ee6565a6 100644 --- a/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll +++ b/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll @@ -6070,8 +6070,9 @@ _ZN12typst_syntax6parser6Parser12post_process17hc8753ee447172ea5E.exit: ; preds br i1 %10, label %"_ZN108_$LT$core..iter..adapters..filter..Filter$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hb2471c44c2c6c1deE.exit.thread", label %11 11: ; preds = %_ZN12typst_syntax6parser6Parser12post_process17hc8753ee447172ea5E.exit - %12 = sub nsw i64 %.val1, %1 - %gepdiff = and i64 %12, 576460752303423487 + %.idx = shl nsw i64 %.val1, 5 + %gepdiff = sub nsw i64 %.idx, %.idx16 + %12 = lshr exact i64 %gepdiff, 5 br label %13 13: ; preds = %"_ZN4core4iter8adapters6filter11filter_fold28_$u7b$$u7b$closure$u7d$$u7d$17h2219f231750f7550E.exit.i.i", %11 @@ -6125,7 +6126,7 @@ _ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit3.i.i.i.i: ; pre "_ZN4core4iter8adapters6filter11filter_fold28_$u7b$$u7b$closure$u7d$$u7d$17h2219f231750f7550E.exit.i.i": ; preds = %"_ZN12typst_syntax6parser6Parser12post_process28_$u7b$$u7b$closure$u7d$$u7d$17hff03a7b23b58f4ccE.exit.i.i.i", %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit3.i.i.i.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit3.i.i.i.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit3.i.i.i.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit3.i.i.i.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.thread3.i.i.i.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i.i.i.i, %13 %.0.i.i.i = phi i64 [ %30, %"_ZN12typst_syntax6parser6Parser12post_process28_$u7b$$u7b$closure$u7d$$u7d$17hff03a7b23b58f4ccE.exit.i.i.i" ], [ %.017.i.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i.i.i.i ], [ %.017.i.i, %13 ], [ %.017.i.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.thread3.i.i.i.i ], [ %.017.i.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit3.i.i.i.i ], [ %.017.i.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit3.i.i.i.i ], [ %.017.i.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit3.i.i.i.i ], [ %.017.i.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit3.i.i.i.i ] %31 = add nuw i64 %.016.i.i, 1 - %32 = icmp eq i64 %31, %gepdiff + %32 = icmp eq i64 %31, %12 br i1 %32, label %"_ZN108_$LT$core..iter..adapters..filter..Filter$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hb2471c44c2c6c1deE.exit", label %13 "_ZN108_$LT$core..iter..adapters..filter..Filter$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hb2471c44c2c6c1deE.exit": ; preds = %"_ZN4core4iter8adapters6filter11filter_fold28_$u7b$$u7b$closure$u7d$$u7d$17h2219f231750f7550E.exit.i.i" diff --git a/bench/typst-rs/optimized/3kgmqnxcsl3z3n0n.ll b/bench/typst-rs/optimized/3kgmqnxcsl3z3n0n.ll index 991c1235b65..fbde05c35ca 100644 --- a/bench/typst-rs/optimized/3kgmqnxcsl3z3n0n.ll +++ b/bench/typst-rs/optimized/3kgmqnxcsl3z3n0n.ll @@ -19390,7 +19390,7 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. call void @_ZN4core9panicking9panic_fmt17hc69c4d258fe11477E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ecbbdf4ce99fb387dde54de6349d4c38.10) #49 unreachable -.body.i.i: ; preds = %.noexc.i.i.i.i.i, %72 +.body.i.i: ; preds = %.noexc.i.i.i.i.i, %73 %46 = landingpad { ptr, i32 } cleanup %.val18.i.i.i.i.i = load ptr, ptr %8, align 8, !alias.scope !5480, !noalias !5483, !nonnull !4, !align !12, !noundef !4 @@ -19411,7 +19411,7 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. 54: ; preds = %52 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17he552f8b573b13ffbE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %11, i64 noundef 0, i64 noundef %50) - to label %.noexc unwind label %86 + to label %.noexc unwind label %88 .noexc: ; preds = %54 %.pre.i.i = load i64, ptr %40, align 8, !alias.scope !5494, !noalias !5495 @@ -19430,7 +19430,7 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. %58 = getelementptr inbounds i8, ptr %9, i64 24 store i64 0, ptr %58, align 8, !noalias !5496 invoke void @_ZN4core9panicking9panic_fmt17hc69c4d258fe11477E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ecbbdf4ce99fb387dde54de6349d4c38.141) #49 - to label %.noexc3 unwind label %86 + to label %.noexc3 unwind label %88 .noexc3: ; preds = %.thread.i.i2 unreachable @@ -19446,7 +19446,7 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. store ptr %59, ptr %.sroa.59.0..sroa_idx.i.i, align 8, !noalias !5498 call void @llvm.experimental.noalias.scope.decl(metadata !5480) %.not.i.i.i.i.i = icmp eq i64 %12, 0 - br i1 %.not.i.i.i.i.i, label %67, label %61 + br i1 %.not.i.i.i.i.i, label %68, label %61 61: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17haf93ab48e141a17fE.exit.i.i" call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %7), !noalias !5499 @@ -19466,45 +19466,46 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. %63 = mul i64 %.val.i.i.i, 20 %64 = getelementptr i8, ptr %7, i64 %63 %scevgep5.i.i.i.i.i.i.i = getelementptr i8, ptr %64, i64 16 - %65 = mul i64 %15, 20 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep.i.i.i.i.i.i.i, ptr align 4 %scevgep5.i.i.i.i.i.i.i, i64 %65, i1 false), !noalias !5506 - %66 = add i64 %60, %15 - store i64 %66, ptr %.sroa.48.0..sroa_idx.i.i, align 8, !alias.scope !5510, !noalias !5515 + %65 = mul i64 %.val3.i.i.i, 20 + %66 = sub i64 %65, %63 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep.i.i.i.i.i.i.i, ptr align 4 %scevgep5.i.i.i.i.i.i.i, i64 %66, i1 false), !noalias !5506 + %67 = add i64 %15, %60 + store i64 %67, ptr %.sroa.48.0..sroa_idx.i.i, align 8, !alias.scope !5510, !noalias !5515 br label %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h90734b3e8e5a9eb6E.exit.i.i.i.i.i" -67: ; preds = %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h90734b3e8e5a9eb6E.exit.i.i.i.i.i", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17haf93ab48e141a17fE.exit.i.i" - br i1 %23, label %"_ZN100_$LT$core..iter..adapters..fuse..Fuse$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h75456bbaaba43401E.exit.i.i.i.i.i", label %68 +68: ; preds = %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h90734b3e8e5a9eb6E.exit.i.i.i.i.i", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17haf93ab48e141a17fE.exit.i.i" + br i1 %23, label %"_ZN100_$LT$core..iter..adapters..fuse..Fuse$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h75456bbaaba43401E.exit.i.i.i.i.i", label %69 -68: ; preds = %67 - %69 = icmp ne ptr %.sroa.12.0.copyload, null - call void @llvm.assume(i1 %69) - %70 = icmp ult i64 %.sroa.13.0.copyload, %.sroa.15.0.copyload - br i1 %70, label %.lr.ph.i.i.i20.i.i.i.i.i, label %"_ZN100_$LT$core..iter..adapters..fuse..Fuse$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h75456bbaaba43401E.exit.i.i.i.i.i" +69: ; preds = %68 + %70 = icmp ne ptr %.sroa.12.0.copyload, null + call void @llvm.assume(i1 %70) + %71 = icmp ult i64 %.sroa.13.0.copyload, %.sroa.15.0.copyload + br i1 %71, label %.lr.ph.i.i.i20.i.i.i.i.i, label %"_ZN100_$LT$core..iter..adapters..fuse..Fuse$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h75456bbaaba43401E.exit.i.i.i.i.i" -.lr.ph.i.i.i20.i.i.i.i.i: ; preds = %68 - %71 = getelementptr inbounds i8, ptr %5, i64 20 +.lr.ph.i.i.i20.i.i.i.i.i: ; preds = %69 + %72 = getelementptr inbounds i8, ptr %5, i64 20 %.sroa.5.0..sroa_idx.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %3, i64 16 %.sroa.4.0..sroa_idx.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %3, i64 8 - br label %72 + br label %73 -72: ; preds = %.noexc21.i.i.i.i.i, %.lr.ph.i.i.i20.i.i.i.i.i - %.sroa.0.06.i.i.i.i.i.i.i.i = phi i64 [ %.sroa.13.0.copyload, %.lr.ph.i.i.i20.i.i.i.i.i ], [ %73, %.noexc21.i.i.i.i.i ] - %73 = add i64 %.sroa.0.06.i.i.i.i.i.i.i.i, 1 +73: ; preds = %.noexc21.i.i.i.i.i, %.lr.ph.i.i.i20.i.i.i.i.i + %.sroa.0.06.i.i.i.i.i.i.i.i = phi i64 [ %.sroa.13.0.copyload, %.lr.ph.i.i.i20.i.i.i.i.i ], [ %74, %.noexc21.i.i.i.i.i ] + %74 = add i64 %.sroa.0.06.i.i.i.i.i.i.i.i, 1 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %4), !noalias !5524 - %74 = uitofp i64 %.sroa.0.06.i.i.i.i.i.i.i.i to double - %75 = load i64, ptr %.sroa.12.0.copyload, align 8, !noalias !5535, !noundef !4 - %76 = add i64 %75, -1 - %77 = uitofp i64 %76 to double - %78 = fdiv double %74, %77 - %.0.i.inv.i.i.i.i.i.i.i.i.i.i.i.i = fcmp ord double %78, 0.000000e+00 - %.0.i.i.i.i.i.i.i.i.i.i.i.i = select i1 %.0.i.inv.i.i.i.i.i.i.i.i.i.i.i.i, double %78, double 0.000000e+00 + %75 = uitofp i64 %.sroa.0.06.i.i.i.i.i.i.i.i to double + %76 = load i64, ptr %.sroa.12.0.copyload, align 8, !noalias !5535, !noundef !4 + %77 = add i64 %76, -1 + %78 = uitofp i64 %77 to double + %79 = fdiv double %75, %78 + %.0.i.inv.i.i.i.i.i.i.i.i.i.i.i.i = fcmp ord double %79, 0.000000e+00 + %.0.i.i.i.i.i.i.i.i.i.i.i.i = select i1 %.0.i.inv.i.i.i.i.i.i.i.i.i.i.i.i, double %79, double 0.000000e+00 invoke void @_ZN5typst9visualize8gradient8Gradient6sample17haa58f29a369b9cbeE(ptr noalias nocapture noundef nonnull sret({ i32, [4 x i32] }) align 4 dereferenceable(20) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %22, i64 noundef 0, double noundef %.0.i.i.i.i.i.i.i.i.i.i.i.i) to label %.noexc.i.i.i.i.i unwind label %.body.i.i, !noalias !5493 -.noexc.i.i.i.i.i: ; preds = %72 +.noexc.i.i.i.i.i: ; preds = %73 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %5, ptr noundef nonnull align 4 dereferenceable(20) %4, i64 20, i1 false), !noalias !5524 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %71, ptr noundef nonnull align 4 dereferenceable(20) %4, i64 20, i1 false), !noalias !5524 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %72, ptr noundef nonnull align 4 dereferenceable(20) %4, i64 20, i1 false), !noalias !5524 call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %4), !noalias !5524 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %3), !noalias !5539 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.5.0..sroa_idx.i.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %5, i64 40, i1 false), !noalias !5524 @@ -19516,18 +19517,18 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. .noexc21.i.i.i.i.i: ; preds = %.noexc.i.i.i.i.i call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %3), !noalias !5539 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) - %exitcond.not.i.i.i.i.i.i.i.i = icmp eq i64 %73, %.sroa.15.0.copyload - br i1 %exitcond.not.i.i.i.i.i.i.i.i, label %"_ZN100_$LT$core..iter..adapters..fuse..Fuse$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h75456bbaaba43401E.exit.i.i.i.i.i", label %72 + %exitcond.not.i.i.i.i.i.i.i.i = icmp eq i64 %74, %.sroa.15.0.copyload + br i1 %exitcond.not.i.i.i.i.i.i.i.i, label %"_ZN100_$LT$core..iter..adapters..fuse..Fuse$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h75456bbaaba43401E.exit.i.i.i.i.i", label %73 "_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h90734b3e8e5a9eb6E.exit.i.i.i.i.i": ; preds = %.lr.ph.i.i.i.i.i.i.i.i, %61 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7), !noalias !5499 - br label %67 + br label %68 -"_ZN100_$LT$core..iter..adapters..fuse..Fuse$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h75456bbaaba43401E.exit.i.i.i.i.i": ; preds = %.noexc21.i.i.i.i.i, %68, %67 +"_ZN100_$LT$core..iter..adapters..fuse..Fuse$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h75456bbaaba43401E.exit.i.i.i.i.i": ; preds = %.noexc21.i.i.i.i.i, %69, %68 %.not8.i.i.i.i.i = icmp eq i64 %17, 0 - br i1 %.not8.i.i.i.i.i, label %93, label %79 + br i1 %.not8.i.i.i.i.i, label %95, label %80 -79: ; preds = %"_ZN100_$LT$core..iter..adapters..fuse..Fuse$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h75456bbaaba43401E.exit.i.i.i.i.i" +80: ; preds = %"_ZN100_$LT$core..iter..adapters..fuse..Fuse$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h75456bbaaba43401E.exit.i.i.i.i.i" call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %6), !noalias !5499 store i64 %.val.i80.i.i, ptr %6, align 8, !noalias !5494 %.sroa.10.72..sroa_idx = getelementptr inbounds i8, ptr %6, i64 8 @@ -19539,45 +19540,46 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. %.not.i4.i.i.i23.i.i.i.i.i = icmp eq i64 %.val3.i81.i.i, %.val.i80.i.i br i1 %.not.i4.i.i.i23.i.i.i.i.i, label %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h90734b3e8e5a9eb6E.exit28.i.i.i.i.i", label %.lr.ph.i.i.i24.i.i.i.i.i -.lr.ph.i.i.i24.i.i.i.i.i: ; preds = %79 +.lr.ph.i.i.i24.i.i.i.i.i: ; preds = %80 %.pre.i.i.i25.i.i.i.i.i = load i64, ptr %.sroa.48.0..sroa_idx.i.i, align 8, !alias.scope !5549, !noalias !5554 - %80 = load ptr, ptr %.sroa.59.0..sroa_idx.i.i, align 8, !alias.scope !5549, !noalias !5554, !noundef !4 - %81 = mul i64 %.pre.i.i.i25.i.i.i.i.i, 20 - %scevgep.i.i26.i.i.i.i.i = getelementptr i8, ptr %80, i64 %81 - %82 = mul i64 %.val.i80.i.i, 20 - %83 = getelementptr i8, ptr %6, i64 %82 - %scevgep5.i.i27.i.i.i.i.i = getelementptr i8, ptr %83, i64 16 - %84 = mul i64 %20, 20 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep.i.i26.i.i.i.i.i, ptr align 4 %scevgep5.i.i27.i.i.i.i.i, i64 %84, i1 false), !noalias !5566 - %85 = add i64 %.pre.i.i.i25.i.i.i.i.i, %20 - store i64 %85, ptr %.sroa.48.0..sroa_idx.i.i, align 8, !alias.scope !5549, !noalias !5554 + %81 = load ptr, ptr %.sroa.59.0..sroa_idx.i.i, align 8, !alias.scope !5549, !noalias !5554, !noundef !4 + %82 = mul i64 %.pre.i.i.i25.i.i.i.i.i, 20 + %scevgep.i.i26.i.i.i.i.i = getelementptr i8, ptr %81, i64 %82 + %83 = mul i64 %.val.i80.i.i, 20 + %84 = getelementptr i8, ptr %6, i64 %83 + %scevgep5.i.i27.i.i.i.i.i = getelementptr i8, ptr %84, i64 16 + %85 = mul i64 %.val3.i81.i.i, 20 + %86 = sub i64 %85, %83 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep.i.i26.i.i.i.i.i, ptr align 4 %scevgep5.i.i27.i.i.i.i.i, i64 %86, i1 false), !noalias !5566 + %87 = add i64 %.pre.i.i.i25.i.i.i.i.i, %20 + store i64 %87, ptr %.sroa.48.0..sroa_idx.i.i, align 8, !alias.scope !5549, !noalias !5554 br label %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h90734b3e8e5a9eb6E.exit28.i.i.i.i.i" -"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h90734b3e8e5a9eb6E.exit28.i.i.i.i.i": ; preds = %.lr.ph.i.i.i24.i.i.i.i.i, %79 +"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h90734b3e8e5a9eb6E.exit28.i.i.i.i.i": ; preds = %.lr.ph.i.i.i24.i.i.i.i.i, %80 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6), !noalias !5499 - br label %93 + br label %95 -86: ; preds = %.thread.i.i2, %54 - %87 = landingpad { ptr, i32 } +88: ; preds = %.thread.i.i2, %54 + %89 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %.body.i.i, %86 - %eh.lpad-body = phi { ptr, i32 } [ %87, %86 ], [ %46, %.body.i.i ] +.body: ; preds = %.body.i.i, %88 + %eh.lpad-body = phi { ptr, i32 } [ %89, %88 ], [ %46, %.body.i.i ] call void @llvm.experimental.noalias.scope.decl(metadata !5567) call void @llvm.experimental.noalias.scope.decl(metadata !5570) call void @llvm.experimental.noalias.scope.decl(metadata !5573) - %88 = load i64, ptr %11, align 8, !alias.scope !5576, !noalias !5579, !noundef !4 - %89 = icmp eq i64 %88, 0 - br i1 %89, label %94, label %90 - -90: ; preds = %.body - %91 = mul nuw i64 %88, 20 - %92 = load ptr, ptr %39, align 8, !alias.scope !5576, !noalias !5579, !nonnull !4, !noundef !4 - call void @__rust_dealloc(ptr noundef nonnull %92, i64 noundef %91, i64 noundef 4) #50, !noalias !5581 - br label %94 + %90 = load i64, ptr %11, align 8, !alias.scope !5576, !noalias !5579, !noundef !4 + %91 = icmp eq i64 %90, 0 + br i1 %91, label %96, label %92 + +92: ; preds = %.body + %93 = mul nuw i64 %90, 20 + %94 = load ptr, ptr %39, align 8, !alias.scope !5576, !noalias !5579, !nonnull !4, !noundef !4 + call void @__rust_dealloc(ptr noundef nonnull %94, i64 noundef %93, i64 noundef 4) #50, !noalias !5581 + br label %96 -93: ; preds = %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h90734b3e8e5a9eb6E.exit28.i.i.i.i.i", %"_ZN100_$LT$core..iter..adapters..fuse..Fuse$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h75456bbaaba43401E.exit.i.i.i.i.i" +95: ; preds = %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h90734b3e8e5a9eb6E.exit28.i.i.i.i.i", %"_ZN100_$LT$core..iter..adapters..fuse..Fuse$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h75456bbaaba43401E.exit.i.i.i.i.i" %.val.i.i.i4.i.i = load ptr, ptr %8, align 8, !alias.scope !5480, !noalias !5483, !nonnull !4, !align !12, !noundef !4 %.val17.i.i.i.i.i = load i64, ptr %.sroa.48.0..sroa_idx.i.i, align 8, !alias.scope !5480, !noalias !5483, !noundef !4 store i64 %.val17.i.i.i.i.i, ptr %.val.i.i.i4.i.i, align 8, !noalias !5493 @@ -19587,7 +19589,7 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) ret void -94: ; preds = %.body, %90 +96: ; preds = %.body, %92 resume { ptr, i32 } %eh.lpad-body } diff --git a/bench/typst-rs/optimized/al9nyr8ju52xbc2.ll b/bench/typst-rs/optimized/al9nyr8ju52xbc2.ll index a752d3c21c3..e569cf88c17 100644 --- a/bench/typst-rs/optimized/al9nyr8ju52xbc2.ll +++ b/bench/typst-rs/optimized/al9nyr8ju52xbc2.ll @@ -3180,7 +3180,7 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17hd41f20085 %15 = load i64, ptr %14, align 8, !alias.scope !652, !noalias !655, !noundef !4 %.promoted.i.i.i = load i64, ptr %1, align 8, !alias.scope !652, !noalias !655 %.not.i4.i.i.i = icmp eq i64 %15, %.promoted.i.i.i - br i1 %.not.i4.i.i.i, label %22, label %.lr.ph.i.i.i + br i1 %.not.i4.i.i.i, label %23, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7802aba0af3491e9E.exit" %16 = getelementptr inbounds i8, ptr %1, i64 16 @@ -3188,14 +3188,15 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17hd41f20085 %scevgep.i.i.i = getelementptr i8, ptr %13, i64 %17 %18 = shl i64 %.promoted.i.i.i, 2 %scevgep8.i.i.i = getelementptr i8, ptr %16, i64 %18 - %19 = sub i64 %15, %.promoted.i.i.i - %20 = shl i64 %19, 2 + %19 = shl i64 %15, 2 + %20 = sub i64 %19, %18 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep.i.i.i, ptr readonly align 4 %scevgep8.i.i.i, i64 %20, i1 false), !noalias !660 - %21 = add i64 %19, %11 - br label %22 + %21 = add i64 %15, %11 + %22 = sub i64 %21, %.promoted.i.i.i + br label %23 -22: ; preds = %.lr.ph.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7802aba0af3491e9E.exit" - %.val5.i.i = phi i64 [ %21, %.lr.ph.i.i.i ], [ %11, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7802aba0af3491e9E.exit" ] +23: ; preds = %.lr.ph.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7802aba0af3491e9E.exit" + %.val5.i.i = phi i64 [ %22, %.lr.ph.i.i.i ], [ %11, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7802aba0af3491e9E.exit" ] store i64 %.val5.i.i, ptr %5, align 8, !noalias !661 ret void } @@ -5265,7 +5266,7 @@ define hidden void @"_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..ve %.val.i = load i64, ptr %1, align 8, !alias.scope !916, !noalias !913, !noundef !4 %3 = getelementptr inbounds i8, ptr %1, i64 8 %.val4.i = load i64, ptr %3, align 8, !alias.scope !916, !noalias !913, !noundef !4 - %4 = sub nuw i64 %.val4.i, %.val.i + %4 = sub i64 %.val4.i, %.val.i %5 = getelementptr inbounds i8, ptr %0, i64 16 %6 = load i64, ptr %5, align 8, !alias.scope !913, !noalias !916, !noundef !4 %7 = load i64, ptr %0, align 8, !alias.scope !918, !noalias !916, !noundef !4 @@ -5291,13 +5292,14 @@ define hidden void @"_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..ve %scevgep.i.i.i.i = getelementptr i8, ptr %13, i64 %15 %16 = shl i64 %.val.i, 2 %scevgep8.i.i.i.i = getelementptr i8, ptr %14, i64 %16 - %17 = shl i64 %4, 2 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep.i.i.i.i, ptr readonly align 4 %scevgep8.i.i.i.i, i64 %17, i1 false), !noalias !921 - %18 = add i64 %11, %4 + %17 = shl i64 %.val4.i, 2 + %18 = sub i64 %17, %16 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep.i.i.i.i, ptr readonly align 4 %scevgep8.i.i.i.i, i64 %18, i1 false), !noalias !921 + %19 = add i64 %4, %11 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17hd41f2008561d8330E.llvm.7091670428431571743.exit" "_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17hd41f2008561d8330E.llvm.7091670428431571743.exit": ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7802aba0af3491e9E.exit.i", %.lr.ph.i.i.i.i - %.val5.i.i.i = phi i64 [ %18, %.lr.ph.i.i.i.i ], [ %11, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7802aba0af3491e9E.exit.i" ] + %.val5.i.i.i = phi i64 [ %19, %.lr.ph.i.i.i.i ], [ %11, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7802aba0af3491e9E.exit.i" ] store i64 %.val5.i.i.i, ptr %5, align 8, !alias.scope !913, !noalias !929 ret void } diff --git a/bench/typst-rs/optimized/m09o5qr68f5khss.ll b/bench/typst-rs/optimized/m09o5qr68f5khss.ll index 63c6622c143..b78101bc702 100644 --- a/bench/typst-rs/optimized/m09o5qr68f5khss.ll +++ b/bench/typst-rs/optimized/m09o5qr68f5khss.ll @@ -15229,11 +15229,12 @@ define hidden void @"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$ %9 = mul i64 %.promoted.i.i, 20 %10 = getelementptr i8, ptr %1, i64 %9 %scevgep5.i = getelementptr i8, ptr %10, i64 16 - %11 = sub i64 %4, %.promoted.i.i - %12 = mul i64 %11, 20 + %11 = mul i64 %4, 20 + %12 = sub i64 %11, %9 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep.i, ptr align 4 %scevgep5.i, i64 %12, i1 false), !noalias !4318 - %13 = add i64 %11, %.pre.i.i - store i64 %13, ptr %6, align 8, !alias.scope !4307, !noalias !4312 + %13 = sub i64 %4, %.promoted.i.i + %14 = add i64 %13, %.pre.i.i + store i64 %14, ptr %6, align 8, !alias.scope !4307, !noalias !4312 store i64 %4, ptr %1, align 8, !alias.scope !4301, !noalias !4304 br label %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hcf98d2b2f164053aE.llvm.14728845296163125433.exit" @@ -68232,8 +68233,8 @@ define hidden void @"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u %9 = mul i64 %.promoted.i, 20 %10 = getelementptr i8, ptr %0, i64 %9 %scevgep5 = getelementptr i8, ptr %10, i64 16 - %11 = sub i64 %4, %.promoted.i - %12 = mul i64 %11, 20 + %11 = mul i64 %4, 20 + %12 = sub i64 %11, %9 tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %scevgep, ptr align 4 %scevgep5, i64 %12, i1 false), !noalias !18384 %13 = add i64 %4, %.pre.i %14 = sub i64 %13, %.promoted.i @@ -83071,7 +83072,7 @@ switch.lookup: ; preds = %31, %31, %36 43: ; preds = %switch.lookup %spec.select.i.i = select i1 %switch.idx.cast, i64 %.sroa.5.0.i.i.i, i64 0 - br label %switch.lookup96 + br label %switch.lookup95 44: ; preds = %40 %.not.i.i.i = icmp eq i64 %.sroa.5.0.i.i.i, 0 @@ -83140,7 +83141,7 @@ default.unreachable.i.i.i.i: ; preds = %.lr.ph.split.i.i.i 65: ; preds = %40 %spec.select34.i.i = select i1 %switch.idx.cast, i64 0, i64 %.sroa.5.0.i.i.i - br label %switch.lookup96 + br label %switch.lookup95 .loopexit82.i.i: ; preds = %.thread46.i.i.i, %.thread46.us.i.i.i %.019.lcssa.i.i.i = phi i64 [ %spec.select.us.i.i.i, %.thread46.us.i.i.i ], [ %62, %.thread46.i.i.i ] @@ -83212,21 +83213,21 @@ _ZN5typst6layout6inline7shaping10ShapedText18find_safe_to_break17h9e226be0185935 %.sroa.7.1.i.i = phi i64 [ %72, %"_ZN4core6option15Option$LT$T$GT$6map_or17hf0786b456aa4cb04E.exit.thread.i.i" ], [ %.019.lcssa.i.i.i, %85 ] %.sroa.0.1.i.i = phi i64 [ %.sroa.0.0.i.i, %"_ZN4core6option15Option$LT$T$GT$6map_or17hf0786b456aa4cb04E.exit.thread.i.i" ], [ %spec.select79.i.i, %85 ] %switch17.not.i = icmp eq i64 %.sroa.0.1.i.i, 0 - br i1 %switch17.not.i, label %180, label %switch.lookup96 + br i1 %switch17.not.i, label %180, label %switch.lookup95 -switch.lookup96: ; preds = %43, %65, %_ZN5typst6layout6inline7shaping10ShapedText18find_safe_to_break17h9e226be01859353cE.exit.i +switch.lookup95: ; preds = %43, %65, %_ZN5typst6layout6inline7shaping10ShapedText18find_safe_to_break17h9e226be01859353cE.exit.i %.sroa.7.1.i87.i = phi i64 [ %.sroa.7.1.i.i, %_ZN5typst6layout6inline7shaping10ShapedText18find_safe_to_break17h9e226be01859353cE.exit.i ], [ %spec.select34.i.i, %65 ], [ %spec.select.i.i, %43 ] - %switch.idx.cast97 = trunc i8 %35 to i1 + %switch.idx.cast96 = trunc i8 %35 to i1 %90 = icmp eq i64 %37, %12 br i1 %90, label %94, label %91 -91: ; preds = %switch.lookup96 +91: ; preds = %switch.lookup95 %92 = add i64 %12, %10 %93 = icmp eq i64 %37, %92 br i1 %93, label %116, label %95 -94: ; preds = %switch.lookup96 - %spec.select.i67.i = select i1 %switch.idx.cast97, i64 %.sroa.5.0.i.i.i, i64 0 +94: ; preds = %switch.lookup95 + %spec.select.i67.i = select i1 %switch.idx.cast96, i64 %.sroa.5.0.i.i.i, i64 0 br label %_ZN5typst6layout6inline7shaping10ShapedText18find_safe_to_break17h9e226be01859353cE.exit69.thread92.i 95: ; preds = %91 @@ -83234,7 +83235,7 @@ switch.lookup96: ; preds = %43, %65, %_ZN5typst br i1 %.not.i.i27.i, label %180, label %.lr.ph.i.i28.i .lr.ph.i.i28.i: ; preds = %95 - br i1 %switch.idx.cast97, label %.lr.ph.split.i.i29.i, label %"_ZN5typst6layout6inline7shaping10ShapedText18find_safe_to_break28_$u7b$$u7b$closure$u7d$$u7d$17h7e6a2f651f8d800fE.exit.us.i.i59.i" + br i1 %switch.idx.cast96, label %.lr.ph.split.i.i29.i, label %"_ZN5typst6layout6inline7shaping10ShapedText18find_safe_to_break28_$u7b$$u7b$closure$u7d$$u7d$17h7e6a2f651f8d800fE.exit.us.i.i59.i" "_ZN5typst6layout6inline7shaping10ShapedText18find_safe_to_break28_$u7b$$u7b$closure$u7d$$u7d$17h7e6a2f651f8d800fE.exit.us.i.i59.i": ; preds = %.lr.ph.i.i28.i, %.thread46.us.i.i64.i %.053.us.i.i60.i = phi i64 [ %105, %.thread46.us.i.i64.i ], [ %.sroa.5.0.i.i.i, %.lr.ph.i.i28.i ] @@ -83291,7 +83292,7 @@ default.unreachable.i.i.i58.i: ; preds = %.lr.ph.split.i.i29. br i1 %115, label %.lr.ph.split.i.i29.i, label %.loopexit82.i37.i 116: ; preds = %91 - %spec.select34.i66.i = select i1 %switch.idx.cast97, i64 0, i64 %.sroa.5.0.i.i.i + %spec.select34.i66.i = select i1 %switch.idx.cast96, i64 0, i64 %.sroa.5.0.i.i.i br label %_ZN5typst6layout6inline7shaping10ShapedText18find_safe_to_break17h9e226be01859353cE.exit69.thread92.i .loopexit.i48.i: ; preds = %.lr.ph.split.i.i29.i, %"_ZN5typst6layout6inline7shaping10ShapedText18find_safe_to_break28_$u7b$$u7b$closure$u7d$$u7d$17h7e6a2f651f8d800fE.exit.us.i.i59.i" @@ -83325,8 +83326,8 @@ default.unreachable.i.i.i58.i: ; preds = %.lr.ph.split.i.i29. %123 = getelementptr inbounds [0 x { ptr, { i64, i16, [3 x i16] }, double, double, double, { { double, double }, { double, double } }, { i64, i64 }, i32, i16, i8, i8, i8, [7 x i8] }], ptr %.sroa.0.0.i.i.i, i64 0, i64 %.0.i50.lcssa.i, i32 9 %124 = load i8, ptr %123, align 2, !range !731, !noalias !21457, !noundef !4 %.sroa.0.0.i54.i = zext nneg i8 %124 to i64 - %switch.idx.cast97.mask = and i8 %35, 1 - %125 = zext nneg i8 %switch.idx.cast97.mask to i64 + %switch.idx.cast96.mask = and i8 %35, 1 + %125 = zext nneg i8 %switch.idx.cast96.mask to i64 %126 = add nuw i64 %.0.i50.lcssa.i, %125 br label %_ZN5typst6layout6inline7shaping10ShapedText18find_safe_to_break17h9e226be01859353cE.exit69.i @@ -83392,7 +83393,7 @@ _ZN5typst6layout6inline7shaping10ShapedText18find_safe_to_break17h9e226be0185935 unreachable 149: ; preds = %145 - %150 = sub i64 %.sroa.7.1.i4096.i, %.sroa.7.1.i87.i + %150 = sub nuw i64 %.sroa.7.1.i4096.i, %.sroa.7.1.i87.i %.idx30 = mul nsw i64 %.sroa.7.1.i87.i, 112 %151 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i.i, i64 %.idx30 %152 = getelementptr inbounds i8, ptr %1, i64 88 @@ -83406,7 +83407,8 @@ _ZN5typst6layout6inline7shaping10ShapedText18find_safe_to_break17h9e226be0185935 br i1 %159, label %"_ZN78_$LT$typst..util..scalar..Scalar$u20$as$u20$core..iter..traits..accum..Sum$GT$3sum17ha834868f14f8db0dE.exit", label %160 160: ; preds = %149 - %gepdiff = mul i64 %150, 112 + %.idx = mul nsw i64 %.sroa.7.1.i4096.i, 112 + %gepdiff = sub nsw i64 %.idx, %.idx30 %161 = udiv exact i64 %gepdiff, 112 br label %162 diff --git a/bench/vcpkg/optimized/downloads.cpp.ll b/bench/vcpkg/optimized/downloads.cpp.ll index a69750e4aa8..0c74dea0212 100644 --- a/bench/vcpkg/optimized/downloads.cpp.ll +++ b/bench/vcpkg/optimized/downloads.cpp.ll @@ -889,7 +889,9 @@ _ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %12, %14 16: ; preds = %15 %.idx28 = shl nsw i64 %.0, 5 %17 = getelementptr inbounds i8, ptr %1, i64 %.idx28 - %18 = sub nsw i64 %2, %.0 + %.idx = shl nsw i64 %2, 5 + %gepdiff = sub nsw i64 %.idx, %.idx28 + %18 = ashr exact i64 %gepdiff, 5 invoke fastcc void @_ZN5vcpkgL15url_heads_innerENS_4SpanIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES8_PSt6vectorIiSaIiEES8_(ptr %17, i64 %18, ptr %3, i64 %4, ptr noundef nonnull %0, ptr %.sroa.018.0.copyload, i64 %.sroa.219.0.copyload) to label %19 unwind label %.loopexit.split-lp @@ -1349,7 +1351,9 @@ _ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %.body, %16 18: ; preds = %17 %.idx27 = shl nsw i64 %.0, 6 %19 = getelementptr inbounds i8, ptr %2, i64 %.idx27 - %20 = sub nsw i64 %3, %.0 + %.idx = shl nsw i64 %3, 6 + %gepdiff = sub nsw i64 %.idx, %.idx27 + %20 = ashr exact i64 %gepdiff, 6 invoke fastcc void @_ZN5vcpkgL20download_files_innerERKNS_10FilesystemENS_4SpanIKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4PathEEEENS3_IKSA_EEPSt6vectorIiSaIiEE(ptr %19, i64 %20, ptr %4, i64 %5, ptr noundef nonnull %0) to label %21 unwind label %.loopexit.split-lp diff --git a/bench/velox/optimized/BaseVector.cpp.ll b/bench/velox/optimized/BaseVector.cpp.ll index 48325827775..01a19e7774a 100644 --- a/bench/velox/optimized/BaseVector.cpp.ll +++ b/bench/velox/optimized/BaseVector.cpp.ll @@ -32333,8 +32333,8 @@ for.body.lr.ph: ; preds = %entry %not.i = xor i64 %shl2.i, -1 %cmp8.i.not = icmp eq i64 %and.i35, 0 %2 = trunc nuw nsw i64 %and.i35 to i32 - %notmask17.i = shl nsw i32 -1, %2 - %3 = xor i32 %notmask17.i, 255 + %notmask16.i = shl nsw i32 -1, %2 + %3 = xor i32 %notmask16.i, 255 %conv18.i = zext i32 %3 to i64 %not19.i = xor i64 %conv18.i, -1 %sub23.i = sub nuw nsw i64 64, %and.i35 @@ -32399,7 +32399,7 @@ for.body.us154: ; preds = %for.body.lr.ph.spli %14 = load i64, ptr %13, align 8 %and3.i.us165 = and i64 %14, %not.i %and5.i.us166 = shl i64 %12, %and.i35 - %or.i36.us167 = or i64 %and3.i.us165, %and5.i.us166 + %or.i36.us167 = add nuw nsw i64 %and3.i.us165, %and5.i.us166 store i64 %or.i36.us167, ptr %13, align 8 %add.ptr.i.us = getelementptr inbounds i8, ptr %13, i64 8 %15 = load i8, ptr %add.ptr.i.us, align 1 @@ -32433,7 +32433,7 @@ for.body: ; preds = %for.body.lr.ph.spli %20 = load i64, ptr %19, align 8 %and3.i = and i64 %20, %not.i %and5.i = shl i64 %or.i, %and.i35 - %or.i36 = or i64 %and3.i, %and5.i + %or.i36 = add nuw nsw i64 %and3.i, %and5.i store i64 %or.i36, ptr %19, align 8 %add.ptr.i = getelementptr inbounds i8, ptr %19, i64 8 %21 = load i8, ptr %add.ptr.i, align 1 @@ -32487,8 +32487,9 @@ _ZN8facebook5velox4bits6detail8loadBitsIjEET_PKmmh.exit: ; preds = %if.then, %if %conv3.i = zext i32 %29 to i64 %not.i56 = xor i64 %shl2.i55, -1 %and4.i = and i64 %conv3.i, %not.i56 - %and6.i = shl nuw nsw i64 %conv, %and.i54 - %or.i57 = or i64 %and4.i, %and6.i + %shl5.i = shl nuw nsw i64 %conv, %and.i54 + %and6.i = and i64 %shl5.i, %shl2.i55 + %or.i57 = or disjoint i64 %and4.i, %and6.i %conv7.i = trunc i64 %or.i57 to i32 store i32 %conv7.i, ptr %28, align 4 %cmp10.i.not = icmp eq i64 %and.i54, 0 @@ -32497,10 +32498,10 @@ _ZN8facebook5velox4bits6detail8loadBitsIjEET_PKmmh.exit: ; preds = %if.then, %if if.then.i59: ; preds = %_ZN8facebook5velox4bits6detail8loadBitsIjEET_PKmmh.exit %add.ptr.i60 = getelementptr inbounds i8, ptr %28, i64 4 %30 = trunc nuw nsw i64 %and.i54 to i32 - %notmask17.i61 = shl nsw i32 -1, %30 + %notmask16.i61 = shl nsw i32 -1, %30 %31 = load i8, ptr %add.ptr.i60, align 1 %conv19.i = zext i8 %31 to i64 - %32 = xor i32 %notmask17.i61, 255 + %32 = xor i32 %notmask16.i61, 255 %conv20.i = zext i32 %32 to i64 %not21.i = xor i64 %conv20.i, -1 %and22.i = and i64 %conv19.i, %not21.i @@ -32551,8 +32552,9 @@ _ZN8facebook5velox4bits6detail8loadBitsItEET_PKmmh.exit: ; preds = %if.then12, % %conv3.i80 = zext i16 %41 to i64 %not.i81 = xor i64 %shl2.i79, -1 %and4.i82 = and i64 %conv3.i80, %not.i81 - %and6.i84 = shl nuw nsw i64 %conv17, %and.i78 - %or.i85 = or i64 %and4.i82, %and6.i84 + %shl5.i83 = shl nuw nsw i64 %conv17, %and.i78 + %and6.i84 = and i64 %shl5.i83, %shl2.i79 + %or.i85 = or disjoint i64 %and4.i82, %and6.i84 %conv7.i86 = trunc i64 %or.i85 to i16 store i16 %conv7.i86, ptr %40, align 2 %cmp10.i88.not = icmp eq i64 %and.i78, 0 @@ -32561,10 +32563,10 @@ _ZN8facebook5velox4bits6detail8loadBitsItEET_PKmmh.exit: ; preds = %if.then12, % if.then.i90: ; preds = %_ZN8facebook5velox4bits6detail8loadBitsItEET_PKmmh.exit %add.ptr.i91 = getelementptr inbounds i8, ptr %40, i64 2 %42 = trunc nuw nsw i64 %and.i78 to i32 - %notmask17.i94 = shl nsw i32 -1, %42 + %notmask16.i94 = shl nsw i32 -1, %42 %43 = load i8, ptr %add.ptr.i91, align 1 %conv19.i95 = zext i8 %43 to i64 - %44 = xor i32 %notmask17.i94, 255 + %44 = xor i32 %notmask16.i94, 255 %conv20.i96 = zext i32 %44 to i64 %not21.i97 = xor i64 %conv20.i96, -1 %and22.i98 = and i64 %conv19.i95, %not21.i97 @@ -32634,9 +32636,9 @@ _ZN8facebook5velox4bits6detail8loadBitsIhEET_PKmmh.exit: ; preds = %for.body22, %conv3.i125 = zext i8 %56 to i64 %not.i126 = xor i64 %shl2.i124, -1 %and4.i127 = and i64 %conv3.i125, %not.i126 - %shl216.i128 = and i64 %conv30, %sub.i - %and6.i129 = shl nuw nsw i64 %shl216.i128, %50 - %or.i130 = or i64 %and4.i127, %and6.i129 + %shl5.i128 = shl nuw nsw i64 %conv30, %50 + %and6.i129 = and i64 %shl5.i128, %shl2.i124 + %or.i130 = or disjoint i64 %and4.i127, %and6.i129 %conv7.i131 = trunc i64 %or.i130 to i8 store i8 %conv7.i131, ptr %55, align 1 %add9.i132 = add nuw nsw i64 %50, %.sroa.speculated @@ -32648,10 +32650,10 @@ if.then.i135: ; preds = %_ZN8facebook5velox4 %57 = trunc nuw nsw i64 %add9.i132 to i32 %conv14.i137 = add nuw nsw i32 %57, 248 %conv15.i138 = and i32 %conv14.i137, 255 - %notmask17.i139 = shl nsw i32 -1, %conv15.i138 + %notmask16.i139 = shl nsw i32 -1, %conv15.i138 %58 = load i8, ptr %add.ptr.i136, align 1 %conv19.i140 = zext i8 %58 to i64 - %59 = xor i32 %notmask17.i139, 255 + %59 = xor i32 %notmask16.i139, 255 %conv20.i141 = zext i32 %59 to i64 %not21.i142 = xor i64 %conv20.i141, -1 %and22.i143 = and i64 %conv19.i140, %not21.i142 diff --git a/bench/velox/optimized/BitUtil.cpp.ll b/bench/velox/optimized/BitUtil.cpp.ll index 90d6ca48250..3aa608a5636 100644 --- a/bench/velox/optimized/BitUtil.cpp.ll +++ b/bench/velox/optimized/BitUtil.cpp.ll @@ -29,8 +29,8 @@ for.body.lr.ph.i: ; preds = %entry %not.i.i = xor i64 %shl2.i.i, -1 %cmp8.i.not.i = icmp eq i64 %2, 0 %5 = trunc nuw nsw i64 %2 to i32 - %notmask17.i.i = shl nsw i32 -1, %5 - %6 = xor i32 %notmask17.i.i, 255 + %notmask16.i.i = shl nsw i32 -1, %5 + %6 = xor i32 %notmask16.i.i, 255 %conv18.i.i = zext i32 %6 to i64 %not19.i.i = xor i64 %conv18.i.i, -1 %sub23.i.i = sub nuw nsw i64 64, %2 @@ -61,7 +61,7 @@ _ZN8facebook5velox4bits6detail8loadBitsImEET_PKmmh.exit.i: ; preds = %if.end3.i. %11 = load i64, ptr %10, align 8 %and3.i.i = and i64 %11, %not.i.i %and5.i.i = shl i64 %retval.0.i.i, %2 - %or.i7.i = or i64 %and3.i.i, %and5.i.i + %or.i7.i = add nuw nsw i64 %and3.i.i, %and5.i.i store i64 %or.i7.i, ptr %10, align 8 br i1 %cmp8.i.not.i, label %_ZN8facebook5velox4bits6detail9storeBitsImEEvPmmmh.exit.i, label %if.then.i.i @@ -101,8 +101,8 @@ for.body.lr.ph.i16: ; preds = %_ZN8facebook5velox4 %not.i.i34 = xor i64 %shl2.i.i33, -1 %cmp10.i.not.i = icmp eq i64 %15, 0 %19 = trunc nuw nsw i64 %15 to i32 - %notmask17.i.i38 = shl nsw i32 -1, %19 - %20 = xor i32 %notmask17.i.i38, 255 + %notmask16.i.i38 = shl nsw i32 -1, %19 + %20 = xor i32 %notmask16.i.i38, 255 %conv20.i.i = zext i32 %20 to i64 %not21.i.i = xor i64 %conv20.i.i, -1 %sub25.i.i = sub nuw nsw i64 32, %15 @@ -134,8 +134,9 @@ _ZN8facebook5velox4bits6detail8loadBitsIjEET_PKmmh.exit.i: ; preds = %if.end3.i. %25 = load i32, ptr %24, align 4 %conv3.i.i = zext i32 %25 to i64 %and4.i.i = and i64 %conv3.i.i, %not.i.i34 - %and6.i.i = shl nuw nsw i64 %conv.i, %15 - %or.i.i35 = or i64 %and4.i.i, %and6.i.i + %shl5.i.i = shl nuw nsw i64 %conv.i, %15 + %and6.i.i = and i64 %shl5.i.i, %shl2.i.i33 + %or.i.i35 = or disjoint i64 %and4.i.i, %and6.i.i %conv7.i.i = trunc i64 %or.i.i35 to i32 store i32 %conv7.i.i, ptr %24, align 4 br i1 %cmp10.i.not.i, label %_ZN8facebook5velox4bits6detail9storeBitsIjEEvPmmmh.exit.i, label %if.then.i.i36 @@ -174,17 +175,17 @@ for.body.lr.ph.i45: ; preds = %_ZN8facebook5velox4 %32 = trunc nuw nsw i64 %31 to i16 %shl2.i.i61 = shl nuw nsw i64 65535, %29 %not.i.i63 = xor i64 %shl2.i.i61, -1 - %cmp10.i.not.i68 = icmp eq i64 %29, 0 + %cmp10.i.not.i69 = icmp eq i64 %29, 0 %33 = trunc nuw nsw i64 %29 to i32 - %notmask17.i.i71 = shl nsw i32 -1, %33 - %34 = xor i32 %notmask17.i.i71, 255 - %conv20.i.i73 = zext i32 %34 to i64 - %not21.i.i74 = xor i64 %conv20.i.i73, -1 - %sub25.i.i76 = sub nuw nsw i64 16, %29 + %notmask16.i.i72 = shl nsw i32 -1, %33 + %34 = xor i32 %notmask16.i.i72, 255 + %conv20.i.i74 = zext i32 %34 to i64 + %not21.i.i75 = xor i64 %conv20.i.i74, -1 + %sub25.i.i77 = sub nuw nsw i64 16, %29 br label %for.body.i46 for.body.i46: ; preds = %_ZN8facebook5velox4bits6detail9storeBitsItEEvPmmmh.exit.i, %for.body.lr.ph.i45 - %remaining.4 = phi i64 [ %remaining.3, %for.body.lr.ph.i45 ], [ %sub3.i81, %_ZN8facebook5velox4bits6detail9storeBitsItEEvPmmmh.exit.i ] + %remaining.4 = phi i64 [ %remaining.3, %for.body.lr.ph.i45 ], [ %sub3.i82, %_ZN8facebook5velox4bits6detail9storeBitsItEEvPmmmh.exit.i ] %sub.reass.i48 = add i64 %invariant.op.i42, %remaining.4 %div9.i.i49 = lshr i64 %sub.reass.i48, 3 %add.i.i50 = add i64 %div9.i.i49, %27 @@ -209,123 +210,125 @@ _ZN8facebook5velox4bits6detail8loadBitsItEET_PKmmh.exit.i: ; preds = %if.end5.i. %40 = load i16, ptr %39, align 2 %conv3.i.i62 = zext i16 %40 to i64 %and4.i.i64 = and i64 %conv3.i.i62, %not.i.i63 - %and6.i.i65 = shl nuw nsw i64 %conv.i57, %29 - %or.i.i66 = or i64 %and4.i.i64, %and6.i.i65 - %conv7.i.i67 = trunc i64 %or.i.i66 to i16 - store i16 %conv7.i.i67, ptr %39, align 2 - br i1 %cmp10.i.not.i68, label %_ZN8facebook5velox4bits6detail9storeBitsItEEvPmmmh.exit.i, label %if.then.i.i69 - -if.then.i.i69: ; preds = %_ZN8facebook5velox4bits6detail8loadBitsItEET_PKmmh.exit.i - %add.ptr.i.i70 = getelementptr inbounds i8, ptr %39, i64 2 - %41 = load i8, ptr %add.ptr.i.i70, align 1 - %conv19.i.i72 = zext i8 %41 to i64 - %and22.i.i75 = and i64 %conv19.i.i72, %not21.i.i74 - %shr.i9.i77 = lshr i64 %conv.i57, %sub25.i.i76 - %and26.i.i78 = and i64 %shr.i9.i77, %conv20.i.i73 - %or27.i.i79 = or i64 %and22.i.i75, %and26.i.i78 - %conv28.i.i80 = trunc nuw i64 %or27.i.i79 to i8 - store i8 %conv28.i.i80, ptr %add.ptr.i.i70, align 1 + %shl5.i.i65 = shl nuw nsw i64 %conv.i57, %29 + %and6.i.i66 = and i64 %shl5.i.i65, %shl2.i.i61 + %or.i.i67 = or disjoint i64 %and4.i.i64, %and6.i.i66 + %conv7.i.i68 = trunc i64 %or.i.i67 to i16 + store i16 %conv7.i.i68, ptr %39, align 2 + br i1 %cmp10.i.not.i69, label %_ZN8facebook5velox4bits6detail9storeBitsItEEvPmmmh.exit.i, label %if.then.i.i70 + +if.then.i.i70: ; preds = %_ZN8facebook5velox4bits6detail8loadBitsItEET_PKmmh.exit.i + %add.ptr.i.i71 = getelementptr inbounds i8, ptr %39, i64 2 + %41 = load i8, ptr %add.ptr.i.i71, align 1 + %conv19.i.i73 = zext i8 %41 to i64 + %and22.i.i76 = and i64 %conv19.i.i73, %not21.i.i75 + %shr.i9.i78 = lshr i64 %conv.i57, %sub25.i.i77 + %and26.i.i79 = and i64 %shr.i9.i78, %conv20.i.i74 + %or27.i.i80 = or i64 %and22.i.i76, %and26.i.i79 + %conv28.i.i81 = trunc nuw i64 %or27.i.i80 to i8 + store i8 %conv28.i.i81, ptr %add.ptr.i.i71, align 1 br label %_ZN8facebook5velox4bits6detail9storeBitsItEEvPmmmh.exit.i -_ZN8facebook5velox4bits6detail9storeBitsItEEvPmmmh.exit.i: ; preds = %if.then.i.i69, %_ZN8facebook5velox4bits6detail8loadBitsItEET_PKmmh.exit.i - %sub3.i81 = add nsw i64 %remaining.4, -16 - %cmp.i82 = icmp sgt i64 %remaining.4, 31 - br i1 %cmp.i82, label %for.body.i46, label %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplItEEvPmmmRl.exit, !llvm.loop !7 +_ZN8facebook5velox4bits6detail9storeBitsItEEvPmmmh.exit.i: ; preds = %if.then.i.i70, %_ZN8facebook5velox4bits6detail8loadBitsItEET_PKmmh.exit.i + %sub3.i82 = add nsw i64 %remaining.4, -16 + %cmp.i83 = icmp sgt i64 %remaining.4, 31 + br i1 %cmp.i83, label %for.body.i46, label %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplItEEvPmmmRl.exit, !llvm.loop !7 _ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplItEEvPmmmRl.exit: ; preds = %_ZN8facebook5velox4bits6detail9storeBitsItEEvPmmmh.exit.i, %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplIjEEvPmmmRl.exit - %remaining.5 = phi i64 [ %remaining.3, %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplIjEEvPmmmRl.exit ], [ %sub3.i81, %_ZN8facebook5velox4bits6detail9storeBitsItEEvPmmmh.exit.i ] - %invariant.op.i84 = add i64 %targetOffset, -8 + %remaining.5 = phi i64 [ %remaining.3, %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplIjEEvPmmmRl.exit ], [ %sub3.i82, %_ZN8facebook5velox4bits6detail9storeBitsItEEvPmmmh.exit.i ] + %invariant.op.i85 = add i64 %targetOffset, -8 %cmp9.i = icmp sgt i64 %remaining.5, 7 - br i1 %cmp9.i, label %for.body.lr.ph.i85, label %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplIhEEvPmmmRl.exit + br i1 %cmp9.i, label %for.body.lr.ph.i86, label %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplIhEEvPmmmRl.exit -for.body.lr.ph.i85: ; preds = %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplItEEvPmmmRl.exit +for.body.lr.ph.i86: ; preds = %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplItEEvPmmmRl.exit %42 = ptrtoint ptr %bits to i64 %43 = add i64 %remaining.5, %targetOffset %44 = and i64 %43, 7 %45 = add i64 %remaining.5, %sourceOffset %46 = and i64 %45, 7 %invariant.op = add i64 %sourceOffset, -8 - %tobool.not.i.i91 = icmp eq i64 %46, 0 - %shl2.i.i101 = shl nuw nsw i64 255, %44 - %not.i.i103 = xor i64 %shl2.i.i101, -1 - %cmp10.i.not.i108 = icmp eq i64 %44, 0 + %tobool.not.i.i92 = icmp eq i64 %46, 0 + %shl2.i.i102 = shl nuw nsw i64 255, %44 + %not.i.i104 = xor i64 %shl2.i.i102, -1 + %cmp10.i.not.i110 = icmp eq i64 %44, 0 %47 = trunc nuw nsw i64 %44 to i32 - %notmask17.i.i111 = shl nsw i32 -1, %47 - %48 = xor i32 %notmask17.i.i111, 255 - %conv20.i.i113 = zext i32 %48 to i64 - %not21.i.i114 = xor i64 %conv20.i.i113, -1 - %sub25.i.i116 = sub nuw nsw i64 8, %44 - br label %for.body.i86 - -for.body.i86: ; preds = %_ZN8facebook5velox4bits6detail9storeBitsIhEEvPmmmh.exit.i, %for.body.lr.ph.i85 - %remaining.6 = phi i64 [ %remaining.5, %for.body.lr.ph.i85 ], [ %sub3.i121, %_ZN8facebook5velox4bits6detail9storeBitsIhEEvPmmmh.exit.i ] + %notmask16.i.i113 = shl nsw i32 -1, %47 + %48 = xor i32 %notmask16.i.i113, 255 + %conv20.i.i115 = zext i32 %48 to i64 + %not21.i.i116 = xor i64 %conv20.i.i115, -1 + %sub25.i.i118 = sub nuw nsw i64 8, %44 + br label %for.body.i87 + +for.body.i87: ; preds = %_ZN8facebook5velox4bits6detail9storeBitsIhEEvPmmmh.exit.i, %for.body.lr.ph.i86 + %remaining.6 = phi i64 [ %remaining.5, %for.body.lr.ph.i86 ], [ %sub3.i123, %_ZN8facebook5velox4bits6detail9storeBitsIhEEvPmmmh.exit.i ] %sub.i.reass = add i64 %remaining.6, %invariant.op - %div9.i.i88 = lshr i64 %sub.i.reass, 3 - %add.i.i89 = add i64 %div9.i.i88, %42 - %49 = inttoptr i64 %add.i.i89 to ptr + %div9.i.i89 = lshr i64 %sub.i.reass, 3 + %add.i.i90 = add i64 %div9.i.i89, %42 + %49 = inttoptr i64 %add.i.i90 to ptr %50 = load i8, ptr %49, align 1 - br i1 %tobool.not.i.i91, label %_ZN8facebook5velox4bits6detail8loadBitsIhEET_PKmmh.exit.i, label %if.end5.i.i92 + br i1 %tobool.not.i.i92, label %_ZN8facebook5velox4bits6detail8loadBitsIhEET_PKmmh.exit.i, label %if.end5.i.i93 -if.end5.i.i92: ; preds = %for.body.i86 - %add.i87 = add i64 %remaining.6, %sourceOffset - %arrayidx.i.i93 = getelementptr inbounds i8, ptr %49, i64 1 - %51 = load i8, ptr %arrayidx.i.i93, align 1 - %52 = trunc i64 %add.i87 to i8 +if.end5.i.i93: ; preds = %for.body.i87 + %add.i88 = add i64 %remaining.6, %sourceOffset + %arrayidx.i.i94 = getelementptr inbounds i8, ptr %49, i64 1 + %51 = load i8, ptr %arrayidx.i.i94, align 1 + %52 = trunc i64 %add.i88 to i8 %conv13.i.i = tail call i8 @llvm.fshr.i8(i8 %51, i8 %50, i8 %52) br label %_ZN8facebook5velox4bits6detail8loadBitsIhEET_PKmmh.exit.i -_ZN8facebook5velox4bits6detail8loadBitsIhEET_PKmmh.exit.i: ; preds = %if.end5.i.i92, %for.body.i86 - %retval.0.i.i94 = phi i8 [ %conv13.i.i, %if.end5.i.i92 ], [ %50, %for.body.i86 ] - %sub2.reass.i96 = add i64 %invariant.op.i84, %remaining.6 - %conv.i97 = zext i8 %retval.0.i.i94 to i64 - %div15.i.i98 = lshr i64 %sub2.reass.i96, 3 - %add.i5.i99 = add i64 %div15.i.i98, %42 - %53 = inttoptr i64 %add.i5.i99 to ptr +_ZN8facebook5velox4bits6detail8loadBitsIhEET_PKmmh.exit.i: ; preds = %if.end5.i.i93, %for.body.i87 + %retval.0.i.i95 = phi i8 [ %conv13.i.i, %if.end5.i.i93 ], [ %50, %for.body.i87 ] + %sub2.reass.i97 = add i64 %invariant.op.i85, %remaining.6 + %conv.i98 = zext i8 %retval.0.i.i95 to i64 + %div15.i.i99 = lshr i64 %sub2.reass.i97, 3 + %add.i5.i100 = add i64 %div15.i.i99, %42 + %53 = inttoptr i64 %add.i5.i100 to ptr %54 = load i8, ptr %53, align 1 - %conv3.i.i102 = zext i8 %54 to i64 - %and4.i.i104 = and i64 %conv3.i.i102, %not.i.i103 - %and6.i.i105 = shl nuw nsw i64 %conv.i97, %44 - %or.i.i106 = or i64 %and4.i.i104, %and6.i.i105 - %conv7.i.i107 = trunc i64 %or.i.i106 to i8 - store i8 %conv7.i.i107, ptr %53, align 1 - br i1 %cmp10.i.not.i108, label %_ZN8facebook5velox4bits6detail9storeBitsIhEEvPmmmh.exit.i, label %if.then.i.i109 - -if.then.i.i109: ; preds = %_ZN8facebook5velox4bits6detail8loadBitsIhEET_PKmmh.exit.i - %add.ptr.i.i110 = getelementptr inbounds i8, ptr %53, i64 1 - %55 = load i8, ptr %add.ptr.i.i110, align 1 - %conv19.i.i112 = zext i8 %55 to i64 - %and22.i.i115 = and i64 %conv19.i.i112, %not21.i.i114 - %shr.i8.i117 = lshr i64 %conv.i97, %sub25.i.i116 - %and26.i.i118 = and i64 %shr.i8.i117, %conv20.i.i113 - %or27.i.i119 = or i64 %and22.i.i115, %and26.i.i118 - %conv28.i.i120 = trunc nuw i64 %or27.i.i119 to i8 - store i8 %conv28.i.i120, ptr %add.ptr.i.i110, align 1 + %conv3.i.i103 = zext i8 %54 to i64 + %and4.i.i105 = and i64 %conv3.i.i103, %not.i.i104 + %shl5.i.i106 = shl nuw nsw i64 %conv.i98, %44 + %and6.i.i107 = and i64 %shl5.i.i106, %shl2.i.i102 + %or.i.i108 = or disjoint i64 %and4.i.i105, %and6.i.i107 + %conv7.i.i109 = trunc i64 %or.i.i108 to i8 + store i8 %conv7.i.i109, ptr %53, align 1 + br i1 %cmp10.i.not.i110, label %_ZN8facebook5velox4bits6detail9storeBitsIhEEvPmmmh.exit.i, label %if.then.i.i111 + +if.then.i.i111: ; preds = %_ZN8facebook5velox4bits6detail8loadBitsIhEET_PKmmh.exit.i + %add.ptr.i.i112 = getelementptr inbounds i8, ptr %53, i64 1 + %55 = load i8, ptr %add.ptr.i.i112, align 1 + %conv19.i.i114 = zext i8 %55 to i64 + %and22.i.i117 = and i64 %conv19.i.i114, %not21.i.i116 + %shr.i8.i119 = lshr i64 %conv.i98, %sub25.i.i118 + %and26.i.i120 = and i64 %shr.i8.i119, %conv20.i.i115 + %or27.i.i121 = or i64 %and22.i.i117, %and26.i.i120 + %conv28.i.i122 = trunc nuw i64 %or27.i.i121 to i8 + store i8 %conv28.i.i122, ptr %add.ptr.i.i112, align 1 br label %_ZN8facebook5velox4bits6detail9storeBitsIhEEvPmmmh.exit.i -_ZN8facebook5velox4bits6detail9storeBitsIhEEvPmmmh.exit.i: ; preds = %if.then.i.i109, %_ZN8facebook5velox4bits6detail8loadBitsIhEET_PKmmh.exit.i - %sub3.i121 = add nsw i64 %remaining.6, -8 - %cmp.i122 = icmp sgt i64 %remaining.6, 15 - br i1 %cmp.i122, label %for.body.i86, label %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplIhEEvPmmmRl.exit, !llvm.loop !8 +_ZN8facebook5velox4bits6detail9storeBitsIhEEvPmmmh.exit.i: ; preds = %if.then.i.i111, %_ZN8facebook5velox4bits6detail8loadBitsIhEET_PKmmh.exit.i + %sub3.i123 = add nsw i64 %remaining.6, -8 + %cmp.i124 = icmp sgt i64 %remaining.6, 15 + br i1 %cmp.i124, label %for.body.i87, label %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplIhEEvPmmmRl.exit, !llvm.loop !8 _ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplIhEEvPmmmRl.exit: ; preds = %_ZN8facebook5velox4bits6detail9storeBitsIhEEvPmmmh.exit.i, %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplItEEvPmmmRl.exit - %remaining.7 = phi i64 [ %remaining.5, %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplItEEvPmmmRl.exit ], [ %sub3.i121, %_ZN8facebook5velox4bits6detail9storeBitsIhEEvPmmmh.exit.i ] + %remaining.7 = phi i64 [ %remaining.5, %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplItEEvPmmmRl.exit ], [ %sub3.i123, %_ZN8facebook5velox4bits6detail9storeBitsIhEEvPmmmh.exit.i ] %cmp = icmp sgt i64 %remaining.7, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %_ZN8facebook5velox4bits12_GLOBAL__N_120copyBitsBackwardImplIhEEvPmmmRl.exit %56 = ptrtoint ptr %bits to i64 %div9.i = lshr i64 %sourceOffset, 3 - %add.i123 = add i64 %div9.i, %56 - %57 = inttoptr i64 %add.i123 to ptr + %add.i125 = add i64 %div9.i, %56 + %57 = inttoptr i64 %add.i125 to ptr %58 = load i8, ptr %57, align 1 %and.i = and i64 %sourceOffset, 7 %tobool.not.i = icmp eq i64 %and.i, 0 br i1 %tobool.not.i, label %_ZN8facebook5velox4bits6detail8loadBitsIhEET_PKmmh.exit, label %if.end.i if.end.i: ; preds = %if.then - %add1.i125 = add nuw nsw i64 %remaining.7, %and.i - %cmp.i126 = icmp ult i64 %add1.i125, 9 - br i1 %cmp.i126, label %if.then2.i, label %if.end5.i + %add1.i127 = add nuw nsw i64 %remaining.7, %and.i + %cmp.i128 = icmp ult i64 %add1.i127, 9 + br i1 %cmp.i128, label %if.then2.i, label %if.end5.i if.then2.i: ; preds = %if.end.i %sh_prom.i = trunc nuw nsw i64 %and.i to i8 @@ -343,40 +346,40 @@ _ZN8facebook5velox4bits6detail8loadBitsIhEET_PKmmh.exit: ; preds = %if.then, %if %retval.0.i = phi i8 [ %shr.i, %if.then2.i ], [ %conv13.i, %if.end5.i ], [ %58, %if.then ] %conv1 = zext i8 %retval.0.i to i64 %div15.i = lshr i64 %targetOffset, 3 - %add.i127 = add i64 %div15.i, %56 - %61 = inttoptr i64 %add.i127 to ptr - %and.i128 = and i64 %targetOffset, 7 + %add.i129 = add i64 %div15.i, %56 + %61 = inttoptr i64 %add.i129 to ptr + %and.i130 = and i64 %targetOffset, 7 %notmask.i = shl nsw i64 -1, %remaining.7 - %sub.i131 = xor i64 %notmask.i, -1 - %shl2.i = shl nuw nsw i64 %sub.i131, %and.i128 + %sub.i133 = xor i64 %notmask.i, -1 + %shl2.i = shl nuw nsw i64 %sub.i133, %and.i130 %62 = load i8, ptr %61, align 1 %conv3.i = zext i8 %62 to i64 %not.i = xor i64 %shl2.i, -1 %and4.i = and i64 %conv3.i, %not.i - %shl216.i = and i64 %conv1, %sub.i131 - %and6.i = shl nuw nsw i64 %shl216.i, %and.i128 - %or.i = or i64 %and4.i, %and6.i + %shl5.i = shl nuw nsw i64 %conv1, %and.i130 + %and6.i = and i64 %shl5.i, %shl2.i + %or.i = or disjoint i64 %and4.i, %and6.i %conv7.i = trunc i64 %or.i to i8 store i8 %conv7.i, ptr %61, align 1 - %add9.i = add nuw nsw i64 %remaining.7, %and.i128 - %cmp10.i132 = icmp ugt i64 %add9.i, 8 - br i1 %cmp10.i132, label %if.then.i, label %if.end + %add9.i = add nuw nsw i64 %remaining.7, %and.i130 + %cmp10.i134 = icmp ugt i64 %add9.i, 8 + br i1 %cmp10.i134, label %if.then.i, label %if.end if.then.i: ; preds = %_ZN8facebook5velox4bits6detail8loadBitsIhEET_PKmmh.exit %add.ptr.i = getelementptr inbounds i8, ptr %61, i64 1 %63 = trunc nuw nsw i64 %add9.i to i32 %conv14.i = add nuw nsw i32 %63, 248 %conv15.i = and i32 %conv14.i, 255 - %notmask17.i = shl nsw i32 -1, %conv15.i + %notmask16.i = shl nsw i32 -1, %conv15.i %64 = load i8, ptr %add.ptr.i, align 1 %conv19.i = zext i8 %64 to i64 - %65 = xor i32 %notmask17.i, 255 + %65 = xor i32 %notmask16.i, 255 %conv20.i = zext i32 %65 to i64 %not21.i = xor i64 %conv20.i, -1 %and22.i = and i64 %conv19.i, %not21.i - %sub25.i = sub nuw nsw i64 8, %and.i128 - %shr.i134 = lshr i64 %conv1, %sub25.i - %and26.i = and i64 %shr.i134, %conv20.i + %sub25.i = sub nuw nsw i64 8, %and.i130 + %shr.i136 = lshr i64 %conv1, %sub25.i + %and26.i = and i64 %shr.i136, %conv20.i %or27.i = or i64 %and22.i, %and26.i %conv28.i = trunc nuw i64 %or27.i to i8 store i8 %conv28.i, ptr %add.ptr.i, align 1 diff --git a/bench/wasmtime-rs/optimized/11ww7ts55o8z8j6m.ll b/bench/wasmtime-rs/optimized/11ww7ts55o8z8j6m.ll index 7cb6199268a..85d15bf9989 100644 --- a/bench/wasmtime-rs/optimized/11ww7ts55o8z8j6m.ll +++ b/bench/wasmtime-rs/optimized/11ww7ts55o8z8j6m.ll @@ -1487,31 +1487,32 @@ define hidden void @"_ZN16cranelift_entity4list19EntityList$LT$T$GT$6extend17ha6 "_ZN16cranelift_entity4list19EntityList$LT$T$GT$4grow17h30e01782bcf3b2ddE.exit": ; preds = %73 %78 = getelementptr inbounds i32, ptr %71, i64 %69 %79 = sub nsw i64 %.0.i, %9 + %80 = shl nsw i64 %79, 2 + %81 = shl nsw i64 %.0.i, 2 br label %"_ZN16cranelift_entity4list19EntityList$LT$T$GT$4grow17h30e01782bcf3b2ddE.exit.thread" "_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5630b3898d826c25E.exit.thread": ; preds = %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5630b3898d826c25E.exit", %"_ZN16cranelift_entity4list19EntityList$LT$T$GT$4grow17h30e01782bcf3b2ddE.exit.thread" ret void "_ZN16cranelift_entity4list19EntityList$LT$T$GT$4grow17h30e01782bcf3b2ddE.exit.thread": ; preds = %"_ZN16cranelift_entity4list19EntityList$LT$T$GT$4grow17h30e01782bcf3b2ddE.exit", %18 - %80 = phi i64 [ %79, %"_ZN16cranelift_entity4list19EntityList$LT$T$GT$4grow17h30e01782bcf3b2ddE.exit" ], [ 0, %18 ] + %.idx57 = phi i64 [ %80, %"_ZN16cranelift_entity4list19EntityList$LT$T$GT$4grow17h30e01782bcf3b2ddE.exit" ], [ 0, %18 ] %.sroa.0.0.i48 = phi ptr [ %78, %"_ZN16cranelift_entity4list19EntityList$LT$T$GT$4grow17h30e01782bcf3b2ddE.exit" ], [ @anon.d38b881a75336d54f1641bafdf4b5c5a.17.llvm.7615600370855926762, %18 ] - %.sroa.3.0.i47 = phi i64 [ %.0.i, %"_ZN16cranelift_entity4list19EntityList$LT$T$GT$4grow17h30e01782bcf3b2ddE.exit" ], [ 0, %18 ] - %.idx57 = shl nsw i64 %80, 2 - %81 = getelementptr i8, ptr %.sroa.0.0.i48, i64 %.idx57 - %82 = sub nsw i64 %.sroa.3.0.i47, %80 - %gepdiff = and i64 %82, 4611686018427387903 - %.0.sroa.speculated.i.i.i = tail call noundef i64 @llvm.umin.i64(i64 %9, i64 %gepdiff) + %.sroa.3.0.i47 = phi i64 [ %81, %"_ZN16cranelift_entity4list19EntityList$LT$T$GT$4grow17h30e01782bcf3b2ddE.exit" ], [ 0, %18 ] + %82 = getelementptr i8, ptr %.sroa.0.0.i48, i64 %.idx57 + %gepdiff = sub nsw i64 %.sroa.3.0.i47, %.idx57 + %83 = lshr exact i64 %gepdiff, 2 + %.0.sroa.speculated.i.i.i = tail call noundef i64 @llvm.umin.i64(i64 %9, i64 %83) %.not = icmp eq i64 %.0.sroa.speculated.i.i.i, 0 br i1 %.not, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5630b3898d826c25E.exit.thread", label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5630b3898d826c25E.exit" "_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5630b3898d826c25E.exit": ; preds = %"_ZN16cranelift_entity4list19EntityList$LT$T$GT$4grow17h30e01782bcf3b2ddE.exit.thread", %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5630b3898d826c25E.exit" - %.sroa.8.058 = phi i64 [ %86, %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5630b3898d826c25E.exit" ], [ 0, %"_ZN16cranelift_entity4list19EntityList$LT$T$GT$4grow17h30e01782bcf3b2ddE.exit.thread" ] - %83 = getelementptr inbounds i32, ptr %1, i64 %.sroa.8.058 - %84 = load i32, ptr %83, align 4, !alias.scope !255, !noalias !258, !noundef !4 - %85 = getelementptr inbounds i32, ptr %81, i64 %.sroa.8.058 - %86 = add nuw nsw i64 %.sroa.8.058, 1 - store i32 %84, ptr %85, align 4 - %exitcond.not = icmp eq i64 %86, %.0.sroa.speculated.i.i.i + %.sroa.8.058 = phi i64 [ %87, %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5630b3898d826c25E.exit" ], [ 0, %"_ZN16cranelift_entity4list19EntityList$LT$T$GT$4grow17h30e01782bcf3b2ddE.exit.thread" ] + %84 = getelementptr inbounds i32, ptr %1, i64 %.sroa.8.058 + %85 = load i32, ptr %84, align 4, !alias.scope !255, !noalias !258, !noundef !4 + %86 = getelementptr inbounds i32, ptr %82, i64 %.sroa.8.058 + %87 = add nuw nsw i64 %.sroa.8.058, 1 + store i32 %85, ptr %86, align 4 + %exitcond.not = icmp eq i64 %87, %.0.sroa.speculated.i.i.i br i1 %exitcond.not, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5630b3898d826c25E.exit.thread", label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5630b3898d826c25E.exit" } diff --git a/bench/wasmtime-rs/optimized/1bz8ofzmdclmzhoz.ll b/bench/wasmtime-rs/optimized/1bz8ofzmdclmzhoz.ll index 5de6aba85fd..db022da3135 100644 --- a/bench/wasmtime-rs/optimized/1bz8ofzmdclmzhoz.ll +++ b/bench/wasmtime-rs/optimized/1bz8ofzmdclmzhoz.ll @@ -13265,22 +13265,22 @@ define hidden void @"_ZN17cranelift_codegen8machinst5vcode14VCode$LT$I$GT$4emit1 br label %.loopexit.split-lp.i .loopexit.split-lp.loopexit.i: ; preds = %382, %374, %.noexc77.i, %368 - %lpad.loopexit142.i = landingpad { ptr, i32 } + %lpad.loopexit143.i = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.i .loopexit.split-lp.loopexit.split-lp.loopexit.i: ; preds = %404, %396, %.noexc86.i, %390 - %lpad.loopexit145.i = landingpad { ptr, i32 } + %lpad.loopexit146.i = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.i -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i: ; preds = %.invoke.i, %.invoke229.i, %300, %284 +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i: ; preds = %.invoke.i, %.invoke231.i, %300, %284 %lpad.loopexit.split-lp.i = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.i .loopexit.split-lp.i: ; preds = %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i, %.loopexit.split-lp.loopexit.split-lp.loopexit.i, %.loopexit.split-lp.loopexit.i, %.loopexit.i - %lpad.phi.i = phi { ptr, i32 } [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit142.i, %.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit145.i, %.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit.split-lp.i, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i ] + %lpad.phi.i = phi { ptr, i32 } [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit143.i, %.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit146.i, %.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit.split-lp.i, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i ] invoke void @"_ZN4core3ptr178drop_in_place$LT$std..collections..hash..set..HashSet$LT$cranelift_codegen..machinst..reg..RealReg$C$core..hash..BuildHasherDefault$LT$cranelift_codegen..fx..FxHasher$GT$$GT$$GT$17h874992beb802c4b3E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %71) #42 to label %.thread.i unwind label %410, !noalias !1626 @@ -13317,9 +13317,9 @@ define hidden void @"_ZN17cranelift_codegen8machinst5vcode14VCode$LT$I$GT$4emit1 br label %.outer.i 271: ; preds = %388, %.lr.ph.i - %.sroa.0.0179.i = phi ptr [ %.val.i, %.lr.ph.i ], [ %272, %388 ] - %272 = getelementptr inbounds i8, ptr %.sroa.0.0179.i, i64 12 - %273 = getelementptr inbounds i8, ptr %.sroa.0.0179.i, i64 8 + %.sroa.0.0180.i = phi ptr [ %.val.i, %.lr.ph.i ], [ %272, %388 ] + %272 = getelementptr inbounds i8, ptr %.sroa.0.0180.i, i64 12 + %273 = getelementptr inbounds i8, ptr %.sroa.0.0180.i, i64 8 %274 = load i32, ptr %273, align 4, !noalias !1626, !noundef !11 %275 = lshr i32 %274, 29 switch i32 %275, label %.invoke.i [ @@ -13380,7 +13380,7 @@ define hidden void @"_ZN17cranelift_codegen8machinst5vcode14VCode$LT$I$GT$4emit1 298: ; preds = %291 %299 = icmp ult i64 %256, %296 - br i1 %299, label %.invoke229.i, label %303 + br i1 %299, label %.invoke231.i, label %303 300: ; preds = %291 invoke void @_ZN4core5slice5index22slice_index_order_fail17h2e9882225a126cdcE(i64 noundef %293, i64 noundef %296, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.93d33193ed412401645690e7206ea482.166) #40 @@ -13389,33 +13389,34 @@ define hidden void @"_ZN17cranelift_codegen8machinst5vcode14VCode$LT$I$GT$4emit1 .noexc64.i: ; preds = %300 unreachable -.invoke229.i: ; preds = %303, %298 +.invoke231.i: ; preds = %303, %298 %301 = phi i64 [ %256, %298 ], [ %258, %303 ] %302 = phi ptr [ @anon.93d33193ed412401645690e7206ea482.166, %298 ], [ @anon.93d33193ed412401645690e7206ea482.167, %303 ] invoke void @_ZN4core5slice5index24slice_end_index_len_fail17h334e37603831ab29E(i64 noundef %296, i64 noundef %301, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %302) #40 - to label %.cont230.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i, !noalias !1626 + to label %.cont232.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i, !noalias !1626 -.cont230.i: ; preds = %.invoke229.i +.cont232.i: ; preds = %.invoke231.i unreachable 303: ; preds = %298 %.idx138.i = shl nuw nsw i64 %293, 2 %304 = getelementptr inbounds i8, ptr %254, i64 %.idx138.i %305 = icmp ult i64 %258, %296 - br i1 %305, label %.invoke229.i, label %306 + br i1 %305, label %.invoke231.i, label %306 306: ; preds = %303 %307 = getelementptr inbounds i8, ptr %260, i64 %.idx138.i - %308 = sub nsw i64 %296, %293 - %gepdiff.i = and i64 %308, 4611686018427387903 - %.not184.i = icmp eq i64 %gepdiff.i, 0 - br i1 %.not184.i, label %._crit_edge183.i, label %.lr.ph182.i + %.idx.i = shl nuw nsw i64 %296, 2 + %gepdiff.i = sub nsw i64 %.idx.i, %.idx138.i + %308 = lshr exact i64 %gepdiff.i, 2 + %.not186.i = icmp eq i64 %.idx.i, %.idx138.i + br i1 %.not186.i, label %._crit_edge184.i, label %.lr.ph183.i -._crit_edge183.i: ; preds = %.backedge.i, %306 +._crit_edge184.i: ; preds = %.backedge.i, %306 %309 = trunc i64 %.sroa.7.0.i to i32 br i1 %265, label %select.unfold.i, label %310 -310: ; preds = %._crit_edge183.i +310: ; preds = %._crit_edge184.i %311 = and i64 %.sroa.7.0.i, 4294967295 %312 = mul i64 %311, 5871781006564002453 %313 = lshr i64 %312, 57 @@ -13463,10 +13464,10 @@ define hidden void @"_ZN17cranelift_codegen8machinst5vcode14VCode$LT$I$GT$4emit1 %333 = add i64 %.sroa.01.0.i.i.i.i.i, %332 br label %315 -.lr.ph182.i: ; preds = %306, %.backedge.i - %.sroa.8.0180.i = phi i64 [ %334, %.backedge.i ], [ 0, %306 ] - %334 = add nuw nsw i64 %.sroa.8.0180.i, 1 - %335 = getelementptr inbounds i32, ptr %304, i64 %.sroa.8.0180.i +.lr.ph183.i: ; preds = %306, %.backedge.i + %.sroa.8.0181.i = phi i64 [ %334, %.backedge.i ], [ 0, %306 ] + %334 = add nuw nsw i64 %.sroa.8.0181.i, 1 + %335 = getelementptr inbounds i32, ptr %304, i64 %.sroa.8.0181.i %336 = load i32, ptr %335, align 4, !noalias !1626, !noundef !11 %337 = and i32 %336, 16777216 %trunc.not.i = icmp eq i32 %337, 0 @@ -13477,8 +13478,8 @@ define hidden void @"_ZN17cranelift_codegen8machinst5vcode14VCode$LT$I$GT$4emit1 %.sroa.4103.16.copyload.i = load <2 x i128>, ptr %gep.i, align 16, !alias.scope !1674, !noalias !1626 br label %select.unfold.i -select.unfold.i: ; preds = %319, %338, %._crit_edge183.i - %.sroa.0105.1.i = phi <2 x i128> [ %.sroa.4103.16.copyload.i, %338 ], [ zeroinitializer, %._crit_edge183.i ], [ zeroinitializer, %319 ] +select.unfold.i: ; preds = %319, %338, %._crit_edge184.i + %.sroa.0105.1.i = phi <2 x i128> [ %.sroa.4103.16.copyload.i, %338 ], [ zeroinitializer, %._crit_edge184.i ], [ zeroinitializer, %319 ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70), !noalias !1626 store <2 x i128> %.sroa.0105.1.i, ptr %70, align 16, !noalias !1626 br label %339 @@ -13563,8 +13564,8 @@ select.unfold.i: ; preds = %319, %338, %._crit_ .backedge: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h8a50264e7ad8a940E.exit.i", %.thread129.i br label %339 -364: ; preds = %.lr.ph182.i - %365 = getelementptr inbounds i32, ptr %307, i64 %.sroa.8.0180.i +364: ; preds = %.lr.ph183.i + %365 = getelementptr inbounds i32, ptr %307, i64 %.sroa.8.0181.i %366 = load i32, ptr %365, align 4, !noalias !1626, !noundef !11 %367 = lshr i32 %366, 29 switch i32 %367, label %.invoke.i [ @@ -13580,16 +13581,16 @@ select.unfold.i: ; preds = %319, %338, %._crit_ .cont.i: ; preds = %.invoke.i unreachable -.backedge.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h8a50264e7ad8a940E.exit83.i", %.thread132.i, %364, %364, %.lr.ph182.i - %exitcond.not.i = icmp eq i64 %334, %gepdiff.i - br i1 %exitcond.not.i, label %._crit_edge183.i, label %.lr.ph182.i +.backedge.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h8a50264e7ad8a940E.exit83.i", %.thread132.i, %364, %364, %.lr.ph183.i + %exitcond.not.i = icmp eq i64 %334, %308 + br i1 %exitcond.not.i, label %._crit_edge184.i, label %.lr.ph183.i 368: ; preds = %364 %369 = trunc i32 %366 to i8 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %66), !noalias !1626 store i8 %369, ptr %66, align 1, !noalias !1690 - %.mask141.i = and i32 %366, 255 - %370 = zext nneg i32 %.mask141.i to i64 + %.mask142.i = and i32 %366, 255 + %370 = zext nneg i32 %.mask142.i to i64 %371 = mul i64 %370, 5871781006564002453 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65), !noalias !1690 store ptr %66, ptr %65, align 8, !noalias !1693 diff --git a/bench/wireshark/optimized/packet-cops.c.ll b/bench/wireshark/optimized/packet-cops.c.ll index 29698297950..8e42d274f91 100644 --- a/bench/wireshark/optimized/packet-cops.c.ll +++ b/bench/wireshark/optimized/packet-cops.c.ll @@ -1275,23 +1275,23 @@ define internal i32 @dissect_cops_pdu(ptr noundef %0, ptr noundef %1, ptr nounde br label %49 49: ; preds = %.lr.ph, %dissect_cops_object.exit - %.0227274 = phi i32 [ 8, %.lr.ph ], [ %316, %dissect_cops_object.exit ] - %.0255273 = phi i32 [ 0, %.lr.ph ], [ %.1256, %dissect_cops_object.exit ] - %50 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %.0227274) #9 + %.0227273 = phi i32 [ 8, %.lr.ph ], [ %316, %dissect_cops_object.exit ] + %.0255272 = phi i32 [ 0, %.lr.ph ], [ %.1256, %dissect_cops_object.exit ] + %50 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %.0227273) #9 %51 = zext i16 %50 to i32 %52 = icmp ult i16 %50, 4 br i1 %52, label %dissect_cops_object.exit.thread, label %56 dissect_cops_object.exit.thread: ; preds = %49 %53 = load i32, ptr @hf_cops_obj_len, align 4 - %54 = call ptr @proto_tree_add_uint(ptr noundef %21, i32 noundef %53, ptr noundef %0, i32 noundef %.0227274, i32 noundef 2, i32 noundef %51) #9 + %54 = call ptr @proto_tree_add_uint(ptr noundef %21, i32 noundef %53, ptr noundef %0, i32 noundef %.0227273, i32 noundef 2, i32 noundef %51) #9 %55 = call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %1, ptr noundef %54, ptr noundef nonnull @ei_cops_bad_cops_object_length, ptr noundef nonnull @.str.647, i32 noundef %51, i32 noundef 4) #9 - br label %502 + br label %501 56: ; preds = %49 - %57 = add i32 %.0227274, 2 + %57 = add i32 %.0227273, 2 %58 = call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %57) #9 - %59 = add i32 %.0227274, 3 + %59 = add i32 %.0227273, 3 %60 = call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %59) #9 %61 = load i32, ptr @hf_cops_obj_c_num, align 4 %62 = zext i8 %58 to i32 @@ -1363,11 +1363,11 @@ switch.lookup: ; preds = %67 cops_c_type_to_str.exit.i: ; preds = %switch.lookup, %77, %75, %73, %72, %70, %69, %66, %64 %.0.i.i = phi ptr [ @.str.643, %77 ], [ @.str.652, %64 ], [ @.str.662, %70 ], [ @.str.665, %73 ], [ @.str.666, %75 ], [ %switch.select21.i.i, %66 ], [ %switch.select25.i.i, %69 ], [ %switch.select29.i.i, %72 ], [ %switch.load, %switch.lookup ] - %79 = call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format(ptr noundef %21, i32 noundef %61, ptr noundef %0, i32 noundef %.0227274, i32 noundef %51, i32 noundef %62, ptr noundef nonnull @.str.648, ptr noundef %63, ptr noundef %.0.i.i) #9 + %79 = call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format(ptr noundef %21, i32 noundef %61, ptr noundef %0, i32 noundef %.0227273, i32 noundef %51, i32 noundef %62, ptr noundef nonnull @.str.648, ptr noundef %63, ptr noundef %.0.i.i) #9 %80 = load i32, ptr @ett_cops_obj, align 4 %81 = call ptr @proto_item_add_subtree(ptr noundef %79, i32 noundef %80) #9 %82 = load i32, ptr @hf_cops_obj_len, align 4 - %83 = call ptr @proto_tree_add_uint(ptr noundef %81, i32 noundef %82, ptr noundef %0, i32 noundef %.0227274, i32 noundef 2, i32 noundef %51) #9 + %83 = call ptr @proto_tree_add_uint(ptr noundef %81, i32 noundef %82, ptr noundef %0, i32 noundef %.0227273, i32 noundef 2, i32 noundef %51) #9 %84 = load i32, ptr @hf_cops_obj_c_num, align 4 %85 = call ptr @proto_tree_add_uint(ptr noundef %81, i32 noundef %84, ptr noundef %0, i32 noundef %57, i32 noundef 1, i32 noundef %62) #9 switch i8 %58, label %99 [ @@ -1396,9 +1396,9 @@ cops_c_type_to_str.exit.i: ; preds = %switch.lookup, %77, br label %cops_c_type_to_str.exit75.i 89: ; preds = %cops_c_type_to_str.exit.i, %cops_c_type_to_str.exit.i - %switch.tableidx311 = add i8 %60, -1 - %90 = icmp ult i8 %switch.tableidx311, 5 - br i1 %90, label %switch.lookup310, label %99 + %switch.tableidx310 = add i8 %60, -1 + %90 = icmp ult i8 %switch.tableidx310, 5 + br i1 %90, label %switch.lookup309, label %99 91: ; preds = %cops_c_type_to_str.exit.i %switch.selectcmp22.i67.i = icmp eq i8 %60, 2 @@ -1429,14 +1429,14 @@ cops_c_type_to_str.exit.i: ; preds = %switch.lookup, %77, 99: ; preds = %89, %97, %95, %92, %86, %cops_c_type_to_str.exit.i br label %cops_c_type_to_str.exit75.i -switch.lookup310: ; preds = %89 - %100 = zext nneg i8 %switch.tableidx311 to i64 - %switch.gep312 = getelementptr inbounds [5 x ptr], ptr @switch.table.dissect_cops_pdu.1, i64 0, i64 %100 - %switch.load313 = load ptr, ptr %switch.gep312, align 8 +switch.lookup309: ; preds = %89 + %100 = zext nneg i8 %switch.tableidx310 to i64 + %switch.gep311 = getelementptr inbounds [5 x ptr], ptr @switch.table.dissect_cops_pdu.1, i64 0, i64 %100 + %switch.load312 = load ptr, ptr %switch.gep311, align 8 br label %cops_c_type_to_str.exit75.i -cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, %99, %97, %95, %94, %92, %91, %88, %86 - %.0.i62.i = phi ptr [ @.str.643, %99 ], [ @.str.652, %86 ], [ @.str.662, %92 ], [ @.str.665, %95 ], [ @.str.666, %97 ], [ %switch.select21.i74.i, %88 ], [ %switch.select25.i70.i, %91 ], [ %switch.select29.i66.i, %94 ], [ %switch.load313, %switch.lookup310 ] +cops_c_type_to_str.exit75.i: ; preds = %switch.lookup309, %99, %97, %95, %94, %92, %91, %88, %86 + %.0.i62.i = phi ptr [ @.str.643, %99 ], [ @.str.652, %86 ], [ @.str.662, %92 ], [ @.str.665, %95 ], [ @.str.666, %97 ], [ %switch.select21.i74.i, %88 ], [ %switch.select25.i70.i, %91 ], [ %switch.select29.i66.i, %94 ], [ %switch.load312, %switch.lookup309 ] %101 = load i32, ptr @hf_cops_obj_c_type, align 4 %102 = zext i8 %60 to i32 %char0.i = load i8, ptr %.0.i62.i, align 1 @@ -1444,7 +1444,7 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % %103 = select i1 %.not.i, ptr @.str.643, ptr @.str.650 %104 = select i1 %.not.i, ptr @.str.643, ptr @.str.651 %105 = call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format_value(ptr noundef %81, i32 noundef %101, ptr noundef %0, i32 noundef %59, i32 noundef 1, i32 noundef %102, ptr noundef nonnull @.str.649, ptr noundef nonnull %.0.i62.i, ptr noundef nonnull %103, i32 noundef %102, ptr noundef nonnull %104) #9 - %106 = add i32 %.0227274, 4 + %106 = add i32 %.0227273, 4 %107 = add nsw i32 %51, -4 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) @@ -1476,7 +1476,7 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % br i1 %109, label %110, label %dissect_cops_object.exit 110: ; preds = %108 - %111 = add i32 %107, %.0227274 + %111 = add i32 %107, %.0227273 %112 = call i32 @tvb_get_ntohl(ptr noundef %0, i32 noundef %111) #9 %113 = load i32, ptr @hf_cops_handle, align 4 %114 = call ptr @proto_tree_add_item(ptr noundef %81, i32 noundef %113, ptr noundef %0, i32 noundef %111, i32 noundef 4, i32 noundef 0) #9 @@ -1484,7 +1484,7 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % 115: ; preds = %cops_c_type_to_str.exit75.i %116 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %106) #9 - %117 = add i32 %.0227274, 6 + %117 = add i32 %.0227273, 6 %118 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %117) #9 %119 = load i32, ptr @ett_cops_r_type_flags, align 4 %120 = zext i16 %116 to i32 @@ -1504,7 +1504,7 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % ] 129: ; preds = %128 - %130 = add i32 %.0227274, 8 + %130 = add i32 %.0227273, 8 %131 = call i32 @tvb_get_ntohl(ptr noundef %0, i32 noundef %130) #9 %132 = load i32, ptr @ett_cops_itf, align 4 %133 = load ptr, ptr %46, align 8 @@ -1518,7 +1518,7 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % br label %153 141: ; preds = %128 - %142 = add i32 %.0227274, 20 + %142 = add i32 %.0227273, 20 %143 = call i32 @tvb_get_ntohl(ptr noundef %0, i32 noundef %142) #9 %144 = load i32, ptr @ett_cops_itf, align 4 %145 = load ptr, ptr %46, align 8 @@ -1541,7 +1541,7 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % 156: ; preds = %cops_c_type_to_str.exit75.i %157 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %106) #9 - %158 = add i32 %.0227274, 6 + %158 = add i32 %.0227273, 6 %159 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %158) #9 %160 = load i32, ptr @ett_cops_reason, align 4 %161 = zext i16 %157 to i32 @@ -1557,7 +1557,7 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % 169: ; preds = %156 %170 = call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %158) #9 %171 = zext i8 %170 to i32 - %172 = add i32 %.0227274, 7 + %172 = add i32 %.0227273, 7 %173 = call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %172) #9 %174 = zext i8 %173 to i32 %175 = call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format_value(ptr noundef %164, i32 noundef %168, ptr noundef %0, i32 noundef %158, i32 noundef 2, i32 noundef %163, ptr noundef nonnull @.str.672, i32 noundef %171, i32 noundef %174) #9 @@ -1575,7 +1575,7 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % 179: ; preds = %178 %180 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %106) #9 - %181 = add i32 %.0227274, 6 + %181 = add i32 %.0227273, 6 %182 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %181) #9 %183 = load i32, ptr @ett_cops_decision, align 4 %184 = zext i16 %180 to i32 @@ -1618,7 +1618,7 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % 201: ; preds = %200 %202 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %106) #9 - %203 = add i32 %.0227274, 6 + %203 = add i32 %.0227273, 6 %204 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %203) #9 %205 = load i32, ptr @ett_cops_error, align 4 %206 = zext i16 %202 to i32 @@ -1634,7 +1634,7 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % 214: ; preds = %201 %215 = call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %203) #9 %216 = zext i8 %215 to i32 - %217 = add i32 %.0227274, 7 + %217 = add i32 %.0227273, 7 %218 = call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %217) #9 %219 = zext i8 %218 to i32 %220 = call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format_value(ptr noundef %209, i32 noundef %213, ptr noundef %0, i32 noundef %203, i32 noundef 2, i32 noundef %208, ptr noundef nonnull @.str.672, i32 noundef %216, i32 noundef %219) #9 @@ -1676,7 +1676,7 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % br i1 %.not303.i.i, label %233, label %dissect_cops_object.exit 233: ; preds = %232 - %234 = add i32 %.0227274, 6 + %234 = add i32 %.0227273, 6 %235 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %234) #9 %236 = icmp eq i16 %235, 0 %237 = load i32, ptr @hf_cops_katimer, align 4 @@ -1727,8 +1727,8 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % ] 259: ; preds = %258 - %260 = add i32 %.0227274, 8 - %261 = add i32 %.0227274, 10 + %260 = add i32 %.0227273, 8 + %261 = add i32 %.0227273, 10 %262 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %261) #9 %263 = load i32, ptr @ett_cops_pdp, align 4 %264 = load ptr, ptr %46, align 8 @@ -1743,8 +1743,8 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % br label %287 273: ; preds = %258 - %274 = add i32 %.0227274, 20 - %275 = add i32 %.0227274, 22 + %274 = add i32 %.0227273, 20 + %275 = add i32 %.0227273, 22 %276 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %275) #9 %277 = load i32, ptr @ett_cops_pdp, align 4 %278 = load ptr, ptr %46, align 8 @@ -1772,7 +1772,7 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % br i1 %.not300.i.i, label %292, label %dissect_cops_object.exit 292: ; preds = %291 - %293 = add i32 %.0227274, 6 + %293 = add i32 %.0227273, 6 %294 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %293) #9 %295 = icmp eq i16 %294, 0 %296 = load i32, ptr @hf_cops_accttimer, align 4 @@ -1794,10 +1794,10 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % %303 = load i32, ptr @hf_cops_key_id, align 4 %304 = call ptr @proto_tree_add_item(ptr noundef %81, i32 noundef %303, ptr noundef %0, i32 noundef %106, i32 noundef 4, i32 noundef 0) #9 %305 = load i32, ptr @hf_cops_seq_num, align 4 - %306 = add i32 %.0227274, 8 + %306 = add i32 %.0227273, 8 %307 = call ptr @proto_tree_add_item(ptr noundef %81, i32 noundef %305, ptr noundef %0, i32 noundef %306, i32 noundef 4, i32 noundef 0) #9 %308 = load i32, ptr @hf_cops_keyed_message_digest, align 4 - %309 = add i32 %.0227274, 12 + %309 = add i32 %.0227273, 12 %310 = add nsw i32 %51, -12 %311 = call ptr @proto_tree_add_item(ptr noundef %81, i32 noundef %308, ptr noundef %0, i32 noundef %309, i32 noundef %310, i32 noundef 0) #9 br label %dissect_cops_object.exit @@ -1807,7 +1807,7 @@ cops_c_type_to_str.exit75.i: ; preds = %switch.lookup310, % br label %dissect_cops_object.exit dissect_cops_object.exit: ; preds = %108, %110, %115, %128, %153, %169, %176, %179, %193, %198, %.thread.i.i, %199, %200, %214, %221, %225, %227, %228, %229, %232, %238, %240, %242, %247, %250, %254, %255, %258, %287, %291, %297, %299, %301, %302, %312 - %.1256 = phi i32 [ %.0255273, %312 ], [ %.0255273, %302 ], [ %.0255273, %301 ], [ %.0255273, %297 ], [ %.0255273, %299 ], [ %.0255273, %291 ], [ %.0255273, %258 ], [ %.0255273, %287 ], [ %.0255273, %255 ], [ %.0255273, %254 ], [ %.0255273, %247 ], [ %.0255273, %250 ], [ %.0255273, %242 ], [ %.0255273, %238 ], [ %.0255273, %240 ], [ %.0255273, %232 ], [ %.0255273, %225 ], [ %.0255273, %227 ], [ %.0255273, %229 ], [ %.0255273, %228 ], [ %.0255273, %214 ], [ %.0255273, %221 ], [ %.0255273, %200 ], [ %.0255273, %198 ], [ %.0255273, %199 ], [ %.0255273, %.thread.i.i ], [ %.0255273, %193 ], [ %.0255273, %179 ], [ %.0255273, %169 ], [ %.0255273, %176 ], [ %.0255273, %128 ], [ %.0255273, %153 ], [ %.0255273, %115 ], [ %112, %110 ], [ %.0255273, %108 ] + %.1256 = phi i32 [ %.0255272, %312 ], [ %.0255272, %302 ], [ %.0255272, %301 ], [ %.0255272, %297 ], [ %.0255272, %299 ], [ %.0255272, %291 ], [ %.0255272, %258 ], [ %.0255272, %287 ], [ %.0255272, %255 ], [ %.0255272, %254 ], [ %.0255272, %247 ], [ %.0255272, %250 ], [ %.0255272, %242 ], [ %.0255272, %238 ], [ %.0255272, %240 ], [ %.0255272, %232 ], [ %.0255272, %225 ], [ %.0255272, %227 ], [ %.0255272, %229 ], [ %.0255272, %228 ], [ %.0255272, %214 ], [ %.0255272, %221 ], [ %.0255272, %200 ], [ %.0255272, %198 ], [ %.0255272, %199 ], [ %.0255272, %.thread.i.i ], [ %.0255272, %193 ], [ %.0255272, %179 ], [ %.0255272, %169 ], [ %.0255272, %176 ], [ %.0255272, %128 ], [ %.0255272, %153 ], [ %.0255272, %115 ], [ %112, %110 ], [ %.0255272, %108 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) @@ -1816,7 +1816,7 @@ dissect_cops_object.exit: ; preds = %108, %110, %115, %1 %reass.sub.i = and i32 %51, 65532 %315 = add nuw nsw i32 %reass.sub.i, 4 %.059.i = select i1 %.not61.i, i32 %51, i32 %315 - %316 = add i32 %.059.i, %.0227274 + %316 = add i32 %.059.i, %.0227273 %317 = call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %316) #9 %318 = icmp sgt i32 %317, 3 br i1 %318, label %49, label %._crit_edge, !llvm.loop !4 @@ -1839,7 +1839,7 @@ dissect_cops_object.exit: ; preds = %108, %110, %115, %1 %327 = add i8 %13, -11 %328 = icmp ult i8 %327, -6 %or.cond17 = and i1 %328, %326 - br i1 %or.cond17, label %502, label %329 + br i1 %or.cond17, label %501, label %329 329: ; preds = %325 %330 = icmp eq i8 %13, 1 @@ -1926,14 +1926,14 @@ dissect_cops_object.exit: ; preds = %108, %110, %115, %1 %378 = load i16, ptr %377, align 2 %379 = and i16 %378, 8 %.not237 = icmp eq i16 %379, 0 - br i1 %.not237, label %382, label %.preheader268 + br i1 %.not237, label %382, label %.preheader267 -.preheader268: ; preds = %374 +.preheader267: ; preds = %374 %380 = call i32 @wmem_array_get_count(ptr noundef %.0) #9 - %.not285 = icmp eq i32 %380, 0 - br i1 %.not285, label %.loopexit, label %.lr.ph278 + %.not284 = icmp eq i32 %380, 0 + br i1 %.not284, label %.loopexit, label %.lr.ph277 -.lr.ph278: ; preds = %.preheader268 +.lr.ph277: ; preds = %.preheader267 %381 = getelementptr inbounds i8, ptr %1, i64 20 br label %392 @@ -1956,9 +1956,9 @@ dissect_cops_object.exit: ; preds = %108, %110, %115, %1 call void @wmem_array_append(ptr noundef %.0, ptr noundef nonnull %8, i32 noundef 1) #9 br label %.loopexit -392: ; preds = %.lr.ph278, %proto_item_set_generated.exit - %.0228277 = phi i32 [ 0, %.lr.ph278 ], [ %412, %proto_item_set_generated.exit ] - %393 = call ptr @wmem_array_index(ptr noundef %.0, i32 noundef %.0228277) #9 +392: ; preds = %.lr.ph277, %proto_item_set_generated.exit + %.0228276 = phi i32 [ 0, %.lr.ph277 ], [ %412, %proto_item_set_generated.exit ] + %393 = call ptr @wmem_array_index(ptr noundef %.0, i32 noundef %.0228276) #9 %394 = load ptr, ptr %393, align 8 store ptr %394, ptr %8, align 8 %395 = getelementptr inbounds i8, ptr %394, i64 8 @@ -1993,12 +1993,12 @@ dissect_cops_object.exit: ; preds = %108, %110, %115, %1 br label %proto_item_set_generated.exit proto_item_set_generated.exit: ; preds = %408, %405, %402, %392, %399 - %412 = add nuw i32 %.0228277, 1 + %412 = add nuw i32 %.0228276, 1 %413 = call i32 @wmem_array_get_count(ptr noundef %.0) #9 %414 = icmp ult i32 %412, %413 br i1 %414, label %392, label %.loopexit, !llvm.loop !6 -.loopexit: ; preds = %proto_item_set_generated.exit, %.preheader268, %362, %382 +.loopexit: ; preds = %proto_item_set_generated.exit, %.preheader267, %362, %382 br i1 %352, label %415, label %proto_item_set_generated.exit251 415: ; preds = %.loopexit @@ -2007,7 +2007,7 @@ proto_item_set_generated.exit: ; preds = %408, %405, %402, %3 %418 = inttoptr i64 %417 to ptr %419 = call ptr @wmem_map_lookup(ptr noundef %416, ptr noundef %418) #9 %420 = icmp eq ptr %419, null - br i1 %420, label %502, label %421 + br i1 %420, label %501, label %421 421: ; preds = %415 %422 = getelementptr inbounds i8, ptr %1, i64 80 @@ -2017,167 +2017,165 @@ proto_item_set_generated.exit: ; preds = %408, %405, %402, %3 %426 = and i16 %425, 8 %.not238 = icmp eq i16 %426, 0 %427 = call i32 @wmem_array_get_count(ptr noundef nonnull %419) #9 - %.not287 = icmp eq i32 %427, 0 - br i1 %.not238, label %.preheader, label %.preheader266 + %.not286 = icmp eq i32 %427, 0 + br i1 %.not238, label %.preheader, label %.preheader265 -.preheader266: ; preds = %421 - br i1 %.not287, label %proto_item_set_generated.exit251, label %.lr.ph280 +.preheader265: ; preds = %421 + br i1 %.not286, label %proto_item_set_generated.exit251, label %.lr.ph279 -.lr.ph280: ; preds = %.preheader266 +.lr.ph279: ; preds = %.preheader265 %428 = getelementptr inbounds i8, ptr %1, i64 20 - br label %470 + br label %469 .preheader: ; preds = %421 - br i1 %.not287, label %proto_item_set_generated.exit251, label %.lr.ph283 + br i1 %.not286, label %proto_item_set_generated.exit251, label %.lr.ph282 -.lr.ph283: ; preds = %.preheader +.lr.ph282: ; preds = %.preheader %429 = getelementptr inbounds i8, ptr %1, i64 24 %430 = icmp eq i8 %13, 4 %or.cond53 = and i1 %430, %25 %431 = icmp eq i8 %13, 10 %or.cond56 = or i1 %431, %or.cond53 - %432 = add i8 %13, -3 - %or.cond29265 = icmp ult i8 %432, 2 - %or.cond243 = and i1 %or.cond29265, %25 - %433 = add i8 %13, -7 - %or.cond59 = icmp ult i8 %433, 2 - %434 = icmp eq i8 %13, 9 - %brmerge284 = or i1 %or.cond29, %or.cond56 - br label %435 - -435: ; preds = %.lr.ph283, %.thread263 - %.1282 = phi i32 [ 0, %.lr.ph283 ], [ %463, %.thread263 ] - %436 = call ptr @wmem_array_index(ptr noundef nonnull %419, i32 noundef %.1282) #9 - %437 = load ptr, ptr %436, align 8 - store ptr %437, ptr %8, align 8 - %438 = getelementptr inbounds i8, ptr %437, i64 16 - %439 = call i32 @nstime_cmp(ptr noundef nonnull %429, ptr noundef nonnull %438) #9 - %440 = icmp slt i32 %439, 1 - br i1 %440, label %.thread263, label %441 - -441: ; preds = %435 - %442 = load ptr, ptr %8, align 8 - %443 = getelementptr inbounds i8, ptr %442, i64 12 - %444 = load i32, ptr %443, align 4 - %.not239 = icmp eq i32 %444, 0 - br i1 %.not239, label %445, label %.thread263 - -445: ; preds = %441 - %446 = load i8, ptr %442, align 8 - %447 = icmp eq i8 %446, 1 - %or.cond43 = and i1 %341, %447 + %or.cond243 = or i1 %or.cond29, %or.cond53 + %432 = add i8 %13, -7 + %or.cond59 = icmp ult i8 %432, 2 + %433 = icmp eq i8 %13, 9 + %brmerge283 = or i1 %or.cond29, %or.cond56 + br label %434 + +434: ; preds = %.lr.ph282, %.thread263 + %.1281 = phi i32 [ 0, %.lr.ph282 ], [ %462, %.thread263 ] + %435 = call ptr @wmem_array_index(ptr noundef nonnull %419, i32 noundef %.1281) #9 + %436 = load ptr, ptr %435, align 8 + store ptr %436, ptr %8, align 8 + %437 = getelementptr inbounds i8, ptr %436, i64 16 + %438 = call i32 @nstime_cmp(ptr noundef nonnull %429, ptr noundef nonnull %437) #9 + %439 = icmp slt i32 %438, 1 + br i1 %439, label %.thread263, label %440 + +440: ; preds = %434 + %441 = load ptr, ptr %8, align 8 + %442 = getelementptr inbounds i8, ptr %441, i64 12 + %443 = load i32, ptr %442, align 4 + %.not239 = icmp eq i32 %443, 0 + br i1 %.not239, label %444, label %.thread263 + +444: ; preds = %440 + %445 = load i8, ptr %441, align 8 + %446 = icmp eq i8 %445, 1 + %or.cond43 = and i1 %341, %446 %or.cond45 = and i1 %25, %or.cond43 - br i1 %or.cond45, label %459, label %448 + br i1 %or.cond45, label %458, label %447 -448: ; preds = %445 - switch i8 %446, label %451 [ - i8 2, label %449 - i8 5, label %450 +447: ; preds = %444 + switch i8 %445, label %450 [ + i8 2, label %448 + i8 5, label %449 ] -449: ; preds = %448 - br i1 %or.cond243, label %459, label %.thread263 +448: ; preds = %447 + br i1 %or.cond243, label %458, label %.thread263 -450: ; preds = %448 - br i1 %brmerge284, label %459, label %.thread263 +449: ; preds = %447 + br i1 %brmerge283, label %458, label %.thread263 -451: ; preds = %448 - %452 = icmp eq i8 %446, 6 - %or.cond244 = and i1 %or.cond59, %452 - br i1 %or.cond244, label %459, label %453 +450: ; preds = %447 + %451 = icmp eq i8 %445, 6 + %or.cond244 = and i1 %or.cond59, %451 + br i1 %or.cond244, label %458, label %452 -453: ; preds = %451 - %454 = icmp eq i8 %446, 9 - br i1 %454, label %455, label %.thread263 +452: ; preds = %450 + %453 = icmp eq i8 %445, 9 + br i1 %453, label %454, label %.thread263 -455: ; preds = %453 - %456 = getelementptr inbounds i8, ptr %442, i64 4 - %457 = load i32, ptr %456, align 4 - %458 = icmp eq i32 %457, 0 - %or.cond62 = and i1 %434, %458 +454: ; preds = %452 + %455 = getelementptr inbounds i8, ptr %441, i64 4 + %456 = load i32, ptr %455, align 4 + %457 = icmp eq i32 %456, 0 + %or.cond62 = and i1 %433, %457 %or.cond64 = and i1 %25, %or.cond62 - br i1 %or.cond64, label %459, label %.thread263 + br i1 %or.cond64, label %458, label %.thread263 -459: ; preds = %450, %451, %455, %449, %445 - %460 = getelementptr inbounds i8, ptr %442, i64 12 - %461 = getelementptr inbounds i8, ptr %1, i64 20 - %462 = load i32, ptr %461, align 4 - store i32 %462, ptr %460, align 4 +458: ; preds = %449, %450, %454, %448, %444 + %459 = getelementptr inbounds i8, ptr %441, i64 12 + %460 = getelementptr inbounds i8, ptr %1, i64 20 + %461 = load i32, ptr %460, align 4 + store i32 %461, ptr %459, align 4 br label %proto_item_set_generated.exit251 -.thread263: ; preds = %450, %449, %453, %455, %435, %441 - %463 = add nuw i32 %.1282, 1 - %464 = call i32 @wmem_array_get_count(ptr noundef nonnull %419) #9 - %465 = icmp ult i32 %463, %464 - br i1 %465, label %435, label %proto_item_set_generated.exit251, !llvm.loop !7 - -466: ; preds = %470 - %467 = add nuw i32 %.2279, 1 - %468 = call i32 @wmem_array_get_count(ptr noundef nonnull %419) #9 - %469 = icmp ult i32 %467, %468 - br i1 %469, label %470, label %proto_item_set_generated.exit251, !llvm.loop !8 - -470: ; preds = %.lr.ph280, %466 - %.2279 = phi i32 [ 0, %.lr.ph280 ], [ %467, %466 ] - %471 = call ptr @wmem_array_index(ptr noundef nonnull %419, i32 noundef %.2279) #9 - %472 = load ptr, ptr %471, align 8 - store ptr %472, ptr %8, align 8 - %473 = getelementptr inbounds i8, ptr %472, i64 12 - %474 = load i32, ptr %473, align 4 - %475 = load i32, ptr %428, align 4 - %476 = icmp eq i32 %474, %475 - br i1 %476, label %477, label %466 - -477: ; preds = %470 - %478 = load i32, ptr @hf_cops_response_to, align 4 - %479 = getelementptr inbounds i8, ptr %472, i64 8 - %480 = load i32, ptr %479, align 8 - %481 = call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format(ptr noundef %21, i32 noundef %478, ptr noundef %0, i32 noundef 0, i32 noundef 0, i32 noundef %480, ptr noundef nonnull @.str.646, i32 noundef %480) #9 - %.not.i246 = icmp eq ptr %481, null - br i1 %.not.i246, label %proto_item_set_generated.exit248, label %482 - -482: ; preds = %477 - %483 = getelementptr inbounds i8, ptr %481, i64 32 - %484 = load ptr, ptr %483, align 8 - %.not5.i247 = icmp eq ptr %484, null - br i1 %.not5.i247, label %proto_item_set_generated.exit248, label %485 - -485: ; preds = %482 - %486 = getelementptr inbounds i8, ptr %484, i64 28 - %487 = load i32, ptr %486, align 4 - %488 = or i32 %487, 2 - store i32 %488, ptr %486, align 4 +.thread263: ; preds = %449, %448, %452, %454, %434, %440 + %462 = add nuw i32 %.1281, 1 + %463 = call i32 @wmem_array_get_count(ptr noundef nonnull %419) #9 + %464 = icmp ult i32 %462, %463 + br i1 %464, label %434, label %proto_item_set_generated.exit251, !llvm.loop !7 + +465: ; preds = %469 + %466 = add nuw i32 %.2278, 1 + %467 = call i32 @wmem_array_get_count(ptr noundef nonnull %419) #9 + %468 = icmp ult i32 %466, %467 + br i1 %468, label %469, label %proto_item_set_generated.exit251, !llvm.loop !8 + +469: ; preds = %.lr.ph279, %465 + %.2278 = phi i32 [ 0, %.lr.ph279 ], [ %466, %465 ] + %470 = call ptr @wmem_array_index(ptr noundef nonnull %419, i32 noundef %.2278) #9 + %471 = load ptr, ptr %470, align 8 + store ptr %471, ptr %8, align 8 + %472 = getelementptr inbounds i8, ptr %471, i64 12 + %473 = load i32, ptr %472, align 4 + %474 = load i32, ptr %428, align 4 + %475 = icmp eq i32 %473, %474 + br i1 %475, label %476, label %465 + +476: ; preds = %469 + %477 = load i32, ptr @hf_cops_response_to, align 4 + %478 = getelementptr inbounds i8, ptr %471, i64 8 + %479 = load i32, ptr %478, align 8 + %480 = call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format(ptr noundef %21, i32 noundef %477, ptr noundef %0, i32 noundef 0, i32 noundef 0, i32 noundef %479, ptr noundef nonnull @.str.646, i32 noundef %479) #9 + %.not.i246 = icmp eq ptr %480, null + br i1 %.not.i246, label %proto_item_set_generated.exit248, label %481 + +481: ; preds = %476 + %482 = getelementptr inbounds i8, ptr %480, i64 32 + %483 = load ptr, ptr %482, align 8 + %.not5.i247 = icmp eq ptr %483, null + br i1 %.not5.i247, label %proto_item_set_generated.exit248, label %484 + +484: ; preds = %481 + %485 = getelementptr inbounds i8, ptr %483, i64 28 + %486 = load i32, ptr %485, align 4 + %487 = or i32 %486, 2 + store i32 %487, ptr %485, align 4 br label %proto_item_set_generated.exit248 -proto_item_set_generated.exit248: ; preds = %477, %482, %485 - %489 = getelementptr inbounds i8, ptr %1, i64 24 - %490 = load ptr, ptr %8, align 8 - %491 = getelementptr inbounds i8, ptr %490, i64 16 - call void @nstime_delta(ptr noundef nonnull %9, ptr noundef nonnull %489, ptr noundef nonnull %491) #9 - %492 = load i32, ptr @hf_cops_response_time, align 4 - %493 = call ptr @proto_tree_add_time(ptr noundef %21, i32 noundef %492, ptr noundef %0, i32 noundef 0, i32 noundef 0, ptr noundef nonnull %9) #9 - %.not.i249 = icmp eq ptr %493, null - br i1 %.not.i249, label %proto_item_set_generated.exit251, label %494 - -494: ; preds = %proto_item_set_generated.exit248 - %495 = getelementptr inbounds i8, ptr %493, i64 32 - %496 = load ptr, ptr %495, align 8 - %.not5.i250 = icmp eq ptr %496, null - br i1 %.not5.i250, label %proto_item_set_generated.exit251, label %497 - -497: ; preds = %494 - %498 = getelementptr inbounds i8, ptr %496, i64 28 - %499 = load i32, ptr %498, align 4 - %500 = or i32 %499, 2 - store i32 %500, ptr %498, align 4 +proto_item_set_generated.exit248: ; preds = %476, %481, %484 + %488 = getelementptr inbounds i8, ptr %1, i64 24 + %489 = load ptr, ptr %8, align 8 + %490 = getelementptr inbounds i8, ptr %489, i64 16 + call void @nstime_delta(ptr noundef nonnull %9, ptr noundef nonnull %488, ptr noundef nonnull %490) #9 + %491 = load i32, ptr @hf_cops_response_time, align 4 + %492 = call ptr @proto_tree_add_time(ptr noundef %21, i32 noundef %491, ptr noundef %0, i32 noundef 0, i32 noundef 0, ptr noundef nonnull %9) #9 + %.not.i249 = icmp eq ptr %492, null + br i1 %.not.i249, label %proto_item_set_generated.exit251, label %493 + +493: ; preds = %proto_item_set_generated.exit248 + %494 = getelementptr inbounds i8, ptr %492, i64 32 + %495 = load ptr, ptr %494, align 8 + %.not5.i250 = icmp eq ptr %495, null + br i1 %.not5.i250, label %proto_item_set_generated.exit251, label %496 + +496: ; preds = %493 + %497 = getelementptr inbounds i8, ptr %495, i64 28 + %498 = load i32, ptr %497, align 4 + %499 = or i32 %498, 2 + store i32 %499, ptr %497, align 4 br label %proto_item_set_generated.exit251 -proto_item_set_generated.exit251: ; preds = %466, %.thread263, %.preheader266, %.preheader, %497, %494, %proto_item_set_generated.exit248, %459, %.loopexit - %501 = call i32 @tvb_reported_length(ptr noundef %0) #9 - br label %502 +proto_item_set_generated.exit251: ; preds = %465, %.thread263, %.preheader265, %.preheader, %496, %493, %proto_item_set_generated.exit248, %458, %.loopexit + %500 = call i32 @tvb_reported_length(ptr noundef %0) #9 + br label %501 -502: ; preds = %dissect_cops_object.exit.thread, %415, %325, %proto_item_set_generated.exit251 - %.0226 = phi i32 [ %501, %proto_item_set_generated.exit251 ], [ %.0227.lcssa, %325 ], [ %.0227.lcssa, %415 ], [ %.0227274, %dissect_cops_object.exit.thread ] +501: ; preds = %dissect_cops_object.exit.thread, %415, %325, %proto_item_set_generated.exit251 + %.0226 = phi i32 [ %500, %proto_item_set_generated.exit251 ], [ %.0227.lcssa, %325 ], [ %.0227.lcssa, %415 ], [ %.0227273, %dissect_cops_object.exit.thread ] ret i32 %.0226 } diff --git a/bench/wireshark/optimized/packet-opensafety.c.ll b/bench/wireshark/optimized/packet-opensafety.c.ll index 1c5715feac7..f980d802ad9 100644 --- a/bench/wireshark/optimized/packet-opensafety.c.ll +++ b/bench/wireshark/optimized/packet-opensafety.c.ll @@ -1333,7 +1333,7 @@ define internal fastcc range(i32 0, 2) i32 @findSafetyFrame(ptr nocapture nounde %17 = add i32 %.0136, 1 %18 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %1, i32 noundef %17) #10 %or.cond178 = icmp sgt i8 %15, -2 - br i1 %or.cond178, label %91, label %19 + br i1 %or.cond178, label %89, label %19 19: ; preds = %16 %20 = zext i8 %15 to i32 @@ -1417,18 +1417,18 @@ define internal fastcc range(i32 0, 2) i32 @findSafetyFrame(ptr nocapture nounde 61: ; preds = %54, %57 %.0151 = phi i16 [ %40, %57 ], [ %51, %54 ] %.3148 = phi i16 [ %60, %57 ], [ %55, %54 ] - %.0140 = phi i32 [ 0, %57 ], [ 1, %54 ] + %.0140 = phi i32 [ 0, %57 ], [ 2, %54 ] %.3 = phi i8 [ 1, %57 ], [ %., %54 ] %62 = icmp eq i16 %.0151, %.3148 br i1 %62, label %.thread, label %.loopexit .thread: ; preds = %50, %61 %.3232 = phi i8 [ %.3, %61 ], [ 2, %50 ] - %.0140231 = phi i32 [ %.0140, %61 ], [ 1, %50 ] + %.0140231 = phi i32 [ %.0140, %61 ], [ 2, %50 ] %.0151230 = phi i16 [ %.0151, %61 ], [ %51, %50 ] %.mask173 = and i32 %20, 248 %63 = icmp eq i32 %.mask173, 232 - br i1 %63, label %64, label %76 + br i1 %63, label %64, label %75 64: ; preds = %.thread %.not175 = icmp eq i8 %18, 0 @@ -1436,117 +1436,115 @@ define internal fastcc range(i32 0, 2) i32 @findSafetyFrame(ptr nocapture nounde 65: ; preds = %64 store i32 %32, ptr %4, align 4 - %66 = shl nuw nsw i32 %.0140231, 1 - %67 = add nuw nsw i32 %22, 11 - %68 = add nuw nsw i32 %67, %66 - store i32 %68, ptr %5, align 4 - %69 = add i32 %.0136, 8 - %70 = add i32 %69, %22 - %71 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %1, i32 noundef %70) #10 - %72 = zext i8 %71 to i16 - br i1 %27, label %73, label %75 + %66 = add nuw nsw i32 %22, 11 + %67 = add nuw nsw i32 %66, %.0140231 + store i32 %67, ptr %5, align 4 + %68 = add i32 %.0136, 8 + %69 = add i32 %68, %22 + %70 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %1, i32 noundef %69) #10 + %71 = zext i8 %70 to i16 + br i1 %27, label %72, label %74 -73: ; preds = %65 - %74 = tail call zeroext i16 @tvb_get_letohs(ptr noundef %1, i32 noundef %70) #10 - br label %75 +72: ; preds = %65 + %73 = tail call zeroext i16 @tvb_get_letohs(ptr noundef %1, i32 noundef %69) #10 + br label %74 -75: ; preds = %73, %65 - %.0149 = phi i16 [ %74, %73 ], [ %72, %65 ] +74: ; preds = %72, %65 + %.0149 = phi i16 [ %73, %72 ], [ %71, %65 ] %.not176 = icmp eq i16 %.0151230, %.0149 - br i1 %.not176, label %.loopexit, label %105 + br i1 %.not176, label %.loopexit, label %103 -76: ; preds = %.thread - %77 = add nuw nsw i32 %.0140231, %22 - %78 = shl nuw nsw i32 %77, 1 - %79 = add nuw nsw i32 %78, 11 - store i32 %79, ptr %5, align 4 +75: ; preds = %.thread + %76 = add nuw nsw i32 %23, 11 + %77 = add nuw nsw i32 %76, %.0140231 + store i32 %77, ptr %5, align 4 store i32 %32, ptr %4, align 4 - %80 = icmp eq i16 %.0151230, 0 - br i1 %80, label %81, label %105 - -81: ; preds = %76 - %82 = add i32 %.0136, 9 - %83 = add i32 %82, %23 - %84 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %1, i32 noundef %83) #10 - %85 = zext i8 %84 to i16 - br i1 %27, label %86, label %90 - -86: ; preds = %81 - %87 = add i32 %.0136, 10 - %88 = add i32 %87, %23 - %89 = tail call zeroext i16 @tvb_get_letohs(ptr noundef %1, i32 noundef %88) #10 - br label %90 - -90: ; preds = %86, %81 - %.1150 = phi i16 [ %89, %86 ], [ %85, %81 ] + %78 = icmp eq i16 %.0151230, 0 + br i1 %78, label %79, label %103 + +79: ; preds = %75 + %80 = add i32 %.0136, 9 + %81 = add i32 %80, %23 + %82 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %1, i32 noundef %81) #10 + %83 = zext i8 %82 to i16 + br i1 %27, label %84, label %88 + +84: ; preds = %79 + %85 = add i32 %.0136, 10 + %86 = add i32 %85, %23 + %87 = tail call zeroext i16 @tvb_get_letohs(ptr noundef %1, i32 noundef %86) #10 + br label %88 + +88: ; preds = %84, %79 + %.1150 = phi i16 [ %87, %84 ], [ %83, %79 ] %.not174 = icmp eq i16 %.1150, 0 - br i1 %.not174, label %.loopexit, label %105 - -91: ; preds = %16 - %92 = icmp eq i32 %.0152, 11 - br i1 %92, label %93, label %.loopexit - -93: ; preds = %91 - %94 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %1, i32 noundef %.0136) #10 - %95 = add i32 %.0136, 2 - %96 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %1, i32 noundef %95) #10 - %97 = and i8 %94, -8 - %98 = icmp ne i8 %97, -24 - %99 = icmp ugt i8 %96, 8 - %100 = select i1 %99, i8 13, i8 11 - %101 = zext i1 %98 to i8 - %.sink = shl i8 %96, %101 - %102 = add i8 %100, %.sink - %103 = icmp eq i8 %102, 11 - br i1 %103, label %.outer.backedge, label %.loopexit.loopexit - -.outer.backedge: ; preds = %93, %.loopexit - %.0152.be = phi i32 [ 12, %93 ], [ %104, %.loopexit ] - %.0136.be = phi i32 [ %17, %93 ], [ %.pre-phi, %.loopexit ] + br i1 %.not174, label %.loopexit, label %103 + +89: ; preds = %16 + %90 = icmp eq i32 %.0152, 11 + br i1 %90, label %91, label %.loopexit + +91: ; preds = %89 + %92 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %1, i32 noundef %.0136) #10 + %93 = add i32 %.0136, 2 + %94 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %1, i32 noundef %93) #10 + %95 = and i8 %92, -8 + %96 = icmp ne i8 %95, -24 + %97 = icmp ugt i8 %94, 8 + %98 = select i1 %97, i8 13, i8 11 + %99 = zext i1 %96 to i8 + %.sink = shl i8 %94, %99 + %100 = add i8 %98, %.sink + %101 = icmp eq i8 %100, 11 + br i1 %101, label %.outer.backedge, label %.loopexit.loopexit + +.outer.backedge: ; preds = %91, %.loopexit + %.0152.be = phi i32 [ 12, %91 ], [ %102, %.loopexit ] + %.0136.be = phi i32 [ %17, %91 ], [ %.pre-phi, %.loopexit ] br label %.outer, !llvm.loop !7 -.loopexit.loopexit: ; preds = %14, %93, %12, %11 +.loopexit.loopexit: ; preds = %14, %91, %12, %11 %.pre = add i32 %.0136, 1 br label %.loopexit -.loopexit: ; preds = %91, %.loopexit.loopexit, %34, %34, %19, %31, %36, %75, %64, %90, %61, %28 - %.pre-phi = phi i32 [ %.pre, %.loopexit.loopexit ], [ %17, %34 ], [ %17, %34 ], [ %17, %19 ], [ %17, %31 ], [ %17, %36 ], [ %17, %75 ], [ %17, %64 ], [ %17, %90 ], [ %17, %61 ], [ %17, %28 ], [ %17, %91 ] - %104 = tail call i32 @tvb_reported_length_remaining(ptr noundef %1, i32 noundef %.pre-phi) #10 +.loopexit: ; preds = %89, %.loopexit.loopexit, %34, %34, %19, %31, %36, %74, %64, %88, %61, %28 + %.pre-phi = phi i32 [ %.pre, %.loopexit.loopexit ], [ %17, %34 ], [ %17, %34 ], [ %17, %19 ], [ %17, %31 ], [ %17, %36 ], [ %17, %74 ], [ %17, %64 ], [ %17, %88 ], [ %17, %61 ], [ %17, %28 ], [ %17, %89 ] + %102 = tail call i32 @tvb_reported_length_remaining(ptr noundef %1, i32 noundef %.pre-phi) #10 br label %.outer.backedge -105: ; preds = %76, %90, %75 - %.3148.lcssa = phi i16 [ %.0151230, %76 ], [ 0, %90 ], [ %.0151230, %75 ] +103: ; preds = %75, %88, %74 + %.3148.lcssa = phi i16 [ %.0151230, %75 ], [ 0, %88 ], [ %.0151230, %74 ] %.not215 = icmp eq ptr %6, null - br i1 %.not215, label %113, label %.sink.split - -.sink.split: ; preds = %105 - %106 = getelementptr inbounds i8, ptr %6, i64 36 - store i8 %15, ptr %106, align 4 - %107 = getelementptr inbounds i8, ptr %6, i64 38 - store i8 %18, ptr %107, align 2 - %108 = load i32, ptr %5, align 4 - %109 = getelementptr inbounds i8, ptr %6, i64 40 - store i32 %108, ptr %109, align 8 - %110 = getelementptr inbounds i8, ptr %6, i64 56 - %111 = getelementptr inbounds i8, ptr %6, i64 58 - store i16 %.3148.lcssa, ptr %111, align 2 - store i8 %.3232, ptr %110, align 8 + br i1 %.not215, label %111, label %.sink.split + +.sink.split: ; preds = %103 + %104 = getelementptr inbounds i8, ptr %6, i64 36 + store i8 %15, ptr %104, align 4 + %105 = getelementptr inbounds i8, ptr %6, i64 38 + store i8 %18, ptr %105, align 2 + %106 = load i32, ptr %5, align 4 + %107 = getelementptr inbounds i8, ptr %6, i64 40 + store i32 %106, ptr %107, align 8 + %108 = getelementptr inbounds i8, ptr %6, i64 56 + %109 = getelementptr inbounds i8, ptr %6, i64 58 + store i16 %.3148.lcssa, ptr %109, align 2 + store i8 %.3232, ptr %108, align 8 %.not177 = icmp ne i8 %.3232, -1 - %112 = getelementptr inbounds i8, ptr %6, i64 64 + %110 = getelementptr inbounds i8, ptr %6, i64 64 %.243 = zext i1 %.not177 to i32 - store i32 %.243, ptr %112, align 8 - br label %113 + store i32 %.243, ptr %110, align 8 + br label %111 -113: ; preds = %.sink.split, %105 +111: ; preds = %.sink.split, %103 %.not216 = icmp eq i32 %3, 0 - br i1 %.not216, label %.thread188, label %114 + br i1 %.not216, label %.thread188, label %112 -114: ; preds = %113 +112: ; preds = %111 store i32 %2, ptr %4, align 4 br label %.thread188 -.thread188: ; preds = %.outer, %114, %113 - %.0187191 = phi i32 [ 1, %114 ], [ 1, %113 ], [ 0, %.outer ] +.thread188: ; preds = %.outer, %112, %111 + %.0187191 = phi i32 [ 1, %112 ], [ 1, %111 ], [ 0, %.outer ] ret i32 %.0187191 } diff --git a/bench/wolfssl/optimized/tls.c.ll b/bench/wolfssl/optimized/tls.c.ll index 2b99b6291a8..6c1bc7e9cb2 100644 --- a/bench/wolfssl/optimized/tls.c.ll +++ b/bench/wolfssl/optimized/tls.c.ll @@ -812,86 +812,87 @@ if.end47.thread.i: ; preds = %Hmac_HashUpdate.exi if.end47.i: ; preds = %if.end.i46 call void @llvm.memset.p0.i64(ptr align 1 %digest, i8 0, i64 %conv31.i, i1 false) - %cmp50178.not.i = icmp eq i32 %add10.i, 0 - br i1 %cmp50178.not.i, label %for.end143.i, label %for.body.lr.ph.i + %cmp50176.not.i = icmp eq i32 %add10.i, 0 + br i1 %cmp50176.not.i, label %for.end143.i, label %for.body.lr.ph.i for.body.lr.ph.i: ; preds = %if.end47.i, %if.end47.thread.i - %safeBlocks.0190.i = phi i32 [ %sub11.i, %if.end47.thread.i ], [ 0, %if.end47.i ] - %mul49.i = mul nsw i32 %safeBlocks.0190.i, %switch.load56 + %safeBlocks.0188.i = phi i32 [ %sub11.i, %if.end47.thread.i ], [ 0, %if.end47.i ] + %mul49.i = mul nsw i32 %safeBlocks.0188.i, %switch.load56 %23 = xor i32 %shr22.i, -1 %24 = xor i32 %shr21.i, -1 %25 = xor i32 %and15.i, -1 %sub97.i = add nsw i32 %switch.load56, -8 - %cmp123176.i.not = icmp eq i8 %0, 0 + %cmp123174.i.not = icmp eq i8 %0, 0 %26 = zext nneg i32 %sub97.i to i64 %wide.trip.count.i = zext nneg i32 %switch.load56 to i64 br label %for.body.i for.body.i: ; preds = %for.inc141.i, %for.body.lr.ph.i - %i.0180.i = phi i32 [ %safeBlocks.0190.i, %for.body.lr.ph.i ], [ %inc142.i, %for.inc141.i ] - %k.0179.i = phi i32 [ %mul49.i, %for.body.lr.ph.i ], [ %inc.i, %for.inc141.i ] - %sub1.i.i.i = add i32 %i.0180.i, %23 - %27 = xor i32 %i.0180.i, -1 + %i.0178.i = phi i32 [ %safeBlocks.0188.i, %for.body.lr.ph.i ], [ %inc142.i, %for.inc141.i ] + %k.0177.i = phi i32 [ %mul49.i, %for.body.lr.ph.i ], [ %inc.i, %for.inc141.i ] + %sub1.i.i.i = add i32 %i.0178.i, %23 + %27 = xor i32 %i.0178.i, -1 %sub1.i4.i.i = add i32 %shr22.i, %27 %shr.i.neg9.i.i = and i32 %sub1.i.i.i, %sub1.i4.i.i %and38.i.i = ashr i32 %shr.i.neg9.i.i, 31 %and3.i.i = trunc nsw i32 %and38.i.i to i8 - %sub1.i.i125.i = add i32 %i.0180.i, %24 + %sub1.i.i125.i = add i32 %i.0178.i, %24 %sub1.i4.i126.i = add i32 %shr21.i, %27 %shr.i.neg9.i127.i = and i32 %sub1.i.i125.i, %sub1.i4.i126.i %and38.i128.i = ashr i32 %shr.i.neg9.i127.i, 31 %and3.i129.i = trunc nsw i32 %and38.i128.i to i8 - %28 = xor i8 %and3.i.i, -1 + %28 = trunc nsw i32 %and38.i.i to i1 + %29 = xor i8 %and3.i.i, -1 %not90.i = xor i8 %and3.i129.i, -1 %or89.i = or i8 %and3.i.i, %not90.i - %29 = trunc nsw i32 %and38.i128.i to i1 + %30 = trunc nsw i32 %and38.i128.i to i1 br label %for.body57.i for.body57.i: ; preds = %if.end106.i, %for.body.i %indvars.iv.i = phi i64 [ 0, %for.body.i ], [ %indvars.iv.next.i, %if.end106.i ] - %k.1174.i = phi i32 [ %k.0179.i, %for.body.i ], [ %inc.i, %if.end106.i ] - %30 = trunc i64 %indvars.iv.i to i32 - %sub1.i.i130.i = add i32 %30, %25 - %31 = xor i32 %30, -1 - %sub1.i4.i131.i = add i32 %and15.i, %31 - %shr.i.neg9.i132.i = and i32 %sub1.i4.i131.i, %shr.i.neg9.i.i - %and38.i133172.i = and i32 %shr.i.neg9.i132.i, %sub1.i.i130.i - %32 = icmp sgt i32 %sub1.i.i130.i, -1 - %cmp68.i = icmp ult i32 %k.1174.i, 13 + %k.1172.i = phi i32 [ %k.0177.i, %for.body.i ], [ %inc.i, %if.end106.i ] + %31 = trunc i64 %indvars.iv.i to i32 + %sub1.i.i130.i = add i32 %31, %25 + %32 = xor i32 %31, -1 + %sub1.i4.i131.i = add i32 %and15.i, %32 + %shr.i.neg9.i132.i = and i32 %sub1.i.i130.i, %sub1.i4.i131.i + %isneg.i = icmp slt i32 %shr.i.neg9.i132.i, 0 + %33 = icmp sgt i32 %sub1.i.i130.i, -1 + %cmp68.i = icmp ult i32 %k.1172.i, 13 br i1 %cmp68.i, label %if.end81.sink.split.i, label %if.else73.i if.else73.i: ; preds = %for.body57.i - %cmp74.i = icmp ult i32 %k.1174.i, %sub5.i + %cmp74.i = icmp ult i32 %k.1172.i, %sub5.i br i1 %cmp74.i, label %if.then76.i, label %if.end81.i if.then76.i: ; preds = %if.else73.i - %sub77.i = add i32 %k.1174.i, -13 + %sub77.i = add i32 %k.1172.i, -13 br label %if.end81.sink.split.i if.end81.sink.split.i: ; preds = %if.then76.i, %for.body57.i - %sub77.sink.i = phi i32 [ %sub77.i, %if.then76.i ], [ %k.1174.i, %for.body57.i ] + %sub77.sink.i = phi i32 [ %sub77.i, %if.then76.i ], [ %k.1172.i, %for.body57.i ] %in.sink.i = phi ptr [ %in, %if.then76.i ], [ %myInner, %for.body57.i ] %idxprom78.i = zext i32 %sub77.sink.i to i64 %arrayidx79.i = getelementptr inbounds i8, ptr %in.sink.i, i64 %idxprom78.i - %33 = load i8, ptr %arrayidx79.i, align 1 + %34 = load i8, ptr %arrayidx79.i, align 1 br label %if.end81.i if.end81.i: ; preds = %if.end81.sink.split.i, %if.else73.i - %b.0.i = phi i8 [ 0, %if.else73.i ], [ %33, %if.end81.sink.split.i ] - %inc.i = add i32 %k.1174.i, 1 - %.not.i = icmp sgt i32 %and38.i133172.i, -1 - %or4.i.i = select i1 %.not.i, i8 %b.0.i, i8 -128 - %not.i = select i1 %32, i8 %28, i8 -1 + %b.0.i = phi i8 [ 0, %if.else73.i ], [ %34, %if.end81.sink.split.i ] + %inc.i = add i32 %k.1172.i, 1 + %35 = select i1 %isneg.i, i1 %28, i1 false + %or4.i.i = select i1 %35, i8 -128, i8 %b.0.i + %not.i = select i1 %33, i8 %29, i8 -1 %and8788.i = and i8 %or4.i.i, %not.i %and9590.i = and i8 %and8788.i, %or89.i %cmp98.not.i = icmp ult i64 %indvars.iv.i, %26 br i1 %cmp98.not.i, label %if.end106.i, label %if.then100.i if.then100.i: ; preds = %if.end81.i - %34 = sub nuw nsw i64 %indvars.iv.i, %26 - %arrayidx104.i = getelementptr inbounds [8 x i8], ptr %lenBytes.i, i64 0, i64 %34 - %35 = load i8, ptr %arrayidx104.i, align 1 - %or4.i141.i = select i1 %29, i8 %35, i8 %and8788.i + %36 = sub nuw nsw i64 %indvars.iv.i, %26 + %arrayidx104.i = getelementptr inbounds [8 x i8], ptr %lenBytes.i, i64 0, i64 %36 + %37 = load i8, ptr %arrayidx104.i, align 1 + %or4.i141.i = select i1 %30, i8 %37, i8 %and8788.i br label %if.end106.i if.end106.i: ; preds = %if.then100.i, %if.end81.i @@ -903,8 +904,8 @@ if.end106.i: ; preds = %if.then100.i, %if.e br i1 %exitcond.not.i, label %for.end.i, label %for.body57.i, !llvm.loop !7 for.end.i: ; preds = %if.end106.i - %36 = load i8, ptr %macType.i, align 8 - switch i8 %36, label %Hmac_UpdateFinal_CT.exit [ + %38 = load i8, ptr %macType.i, align 8 + switch i8 %38, label %Hmac_UpdateFinal_CT.exit [ i8 4, label %sw.bb.i150.i i8 6, label %sw.bb1.i148.i i8 7, label %sw.bb4.i146.i @@ -933,8 +934,8 @@ Hmac_HashUpdate.exit152.i: ; preds = %sw.bb7.i143.i, %sw. br i1 %cmp112.not.i, label %if.end115.i, label %Hmac_UpdateFinal_CT.exit if.end115.i: ; preds = %Hmac_HashUpdate.exit152.i - %37 = load i8, ptr %macType.i, align 8 - switch i8 %37, label %Hmac_UpdateFinal_CT.exit [ + %39 = load i8, ptr %macType.i, align 8 + switch i8 %39, label %Hmac_UpdateFinal_CT.exit [ i8 4, label %sw.bb.i155.i i8 6, label %sw.bb2.i.i47 i8 7, label %sw.bb5.i.i @@ -963,30 +964,30 @@ Hmac_HashFinalRaw.exit.i: ; preds = %sw.bb8.i.i, %sw.bb5 br i1 %cmp118.not.i, label %for.cond122.preheader.i, label %Hmac_UpdateFinal_CT.exit for.cond122.preheader.i: ; preds = %Hmac_HashFinalRaw.exit.i - br i1 %cmp123176.i.not, label %for.inc141.i, label %for.body125.i + br i1 %cmp123174.i.not, label %for.inc141.i, label %for.body125.i for.body125.i: ; preds = %for.cond122.preheader.i, %for.body125.i - %indvars.iv183.i = phi i64 [ %indvars.iv.next184.i, %for.body125.i ], [ 0, %for.cond122.preheader.i ] - %arrayidx127.i = getelementptr inbounds [144 x i8], ptr %hashBlock.i, i64 0, i64 %indvars.iv183.i - %38 = load i8, ptr %arrayidx127.i, align 1 - %and13084.i = and i8 %38, %and3.i129.i - %arrayidx134.i = getelementptr inbounds i8, ptr %innerHash.i, i64 %indvars.iv183.i - %39 = load i8, ptr %arrayidx134.i, align 1 - %or13685.i = or i8 %39, %and13084.i + %indvars.iv181.i = phi i64 [ %indvars.iv.next182.i, %for.body125.i ], [ 0, %for.cond122.preheader.i ] + %arrayidx127.i = getelementptr inbounds [144 x i8], ptr %hashBlock.i, i64 0, i64 %indvars.iv181.i + %40 = load i8, ptr %arrayidx127.i, align 1 + %and13084.i = and i8 %40, %and3.i129.i + %arrayidx134.i = getelementptr inbounds i8, ptr %innerHash.i, i64 %indvars.iv181.i + %41 = load i8, ptr %arrayidx134.i, align 1 + %or13685.i = or i8 %41, %and13084.i store i8 %or13685.i, ptr %arrayidx134.i, align 1 - %indvars.iv.next184.i = add nuw nsw i64 %indvars.iv183.i, 1 - %exitcond187.not.i = icmp eq i64 %indvars.iv.next184.i, %conv31.i - br i1 %exitcond187.not.i, label %for.inc141.i, label %for.body125.i, !llvm.loop !8 + %indvars.iv.next182.i = add nuw nsw i64 %indvars.iv181.i, 1 + %exitcond185.not.i = icmp eq i64 %indvars.iv.next182.i, %conv31.i + br i1 %exitcond185.not.i, label %for.inc141.i, label %for.body125.i, !llvm.loop !8 for.inc141.i: ; preds = %for.body125.i, %for.cond122.preheader.i - %inc142.i = add nuw nsw i32 %i.0180.i, 1 + %inc142.i = add nuw nsw i32 %i.0178.i, 1 %cmp50.i = icmp ult i32 %inc142.i, %add10.i br i1 %cmp50.i, label %for.body.i, label %for.end143.i, !llvm.loop !9 for.end143.i: ; preds = %for.inc141.i, %if.end47.i call void @llvm.lifetime.start.p0(i64 416, ptr nonnull %hash.i.i) - %40 = load i8, ptr %macType.i, align 8 - %conv.i158.i = zext i8 %40 to i32 + %42 = load i8, ptr %macType.i, align 8 + %conv.i158.i = zext i8 %42 to i32 %call.i159.i = call i32 @wc_HashGetDigestSize(i32 noundef %conv.i158.i) #16 %call1.i.i = call i32 @wc_HashGetBlockSize(i32 noundef %conv.i158.i) #16 %cmp.i.i = icmp sgt i32 %call.i159.i, -1 diff --git a/bench/zstd/optimized/huf_decompress.c.ll b/bench/zstd/optimized/huf_decompress.c.ll index 133ec09f9cd..6f038713e37 100644 --- a/bench/zstd/optimized/huf_decompress.c.ll +++ b/bench/zstd/optimized/huf_decompress.c.ll @@ -57,11 +57,7 @@ for.body.lr.ph.i: ; preds = %if.then2.i for.cond12.preheader.i: ; preds = %for.body.i, %if.then2.i %cmp1326.not.i = icmp eq i32 %1, 0 - br i1 %cmp1326.not.i, label %for.cond12.preheader.i.for.body26.preheader.i_crit_edge, label %for.body15.i.preheader - -for.cond12.preheader.i.for.body26.preheader.i_crit_edge: ; preds = %for.cond12.preheader.i - %.pre = zext nneg i32 %sub.i to i64 - br label %for.body26.preheader.i + br i1 %cmp1326.not.i, label %for.body26.preheader.i, label %for.body15.i.preheader for.body15.i.preheader: ; preds = %for.cond12.preheader.i %3 = and i32 %retval.sroa.0.0.copyload.i, 255 @@ -83,27 +79,27 @@ for.body.i: ; preds = %for.body.i, %for.bo %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %for.cond12.preheader.i, label %for.body.i, !llvm.loop !4 -for.body26.preheader.i: ; preds = %for.body15.i, %for.cond12.preheader.i.for.body26.preheader.i_crit_edge - %.pre-phi = phi i64 [ %.pre, %for.cond12.preheader.i.for.body26.preheader.i_crit_edge ], [ %6, %for.body15.i ] - %9 = xor i32 %1, -1 - %10 = add i32 %cond, %9 - %11 = zext i32 %10 to i64 - %12 = shl nuw nsw i64 %11, 2 - %13 = sub nsw i64 %.pre-phi, %11 - %14 = shl nsw i64 %13, 2 - %scevgep.i = getelementptr i8, ptr %workSpace, i64 %14 - %15 = add nuw nsw i64 %12, 4 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep.i, i8 0, i64 %15, i1 false) +for.body26.preheader.i: ; preds = %for.body15.i, %for.cond12.preheader.i + %9 = shl nuw nsw i32 %sub.i, 2 + %10 = zext nneg i32 %9 to i64 + %11 = xor i32 %1, -1 + %12 = add i32 %cond, %11 + %13 = zext i32 %12 to i64 + %14 = shl nuw nsw i64 %13, 2 + %15 = sub nsw i64 %10, %14 + %scevgep.i = getelementptr i8, ptr %workSpace, i64 %15 + %16 = add nuw nsw i64 %14, 4 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep.i, i8 0, i64 %16, i1 false) br label %for.body.lr.ph for.body15.i: ; preds = %for.body15.i.preheader, %for.body15.i %indvars.iv = phi i64 [ %umin, %for.body15.i.preheader ], [ %indvars.iv.next, %for.body15.i ] %s.127.i = phi i32 [ %cond, %for.body15.i.preheader ], [ %dec.i, %for.body15.i ] - %16 = sub nuw nsw i64 %indvars.iv, %6 - %arrayidx18.i = getelementptr inbounds i32, ptr %workSpace, i64 %16 - %17 = load i32, ptr %arrayidx18.i, align 4 + %17 = sub nuw nsw i64 %indvars.iv, %6 + %arrayidx18.i = getelementptr inbounds i32, ptr %workSpace, i64 %17 + %18 = load i32, ptr %arrayidx18.i, align 4 %arrayidx20.i = getelementptr inbounds i32, ptr %workSpace, i64 %indvars.iv - store i32 %17, ptr %arrayidx20.i, align 4 + store i32 %18, ptr %arrayidx20.i, align 4 %dec.i = add nsw i32 %s.127.i, -1 %cmp13.i = icmp ugt i32 %dec.i, %sub.i %indvars.iv.next = add nsw i64 %indvars.iv, -1 @@ -128,8 +124,8 @@ for.body.lr.ph: ; preds = %for.body26.preheade store i8 %dtd.sroa.6.0.extract.trunc, ptr %dtd.sroa.6.0..sroa_idx, align 1 %add24 = add nsw i32 %0, -3 %rankStart = getelementptr inbounds i8, ptr %workSpace, i64 52 - %18 = add nuw i32 %retval.0.i126, 1 - %wide.trip.count = zext i32 %18 to i64 + %19 = add nuw i32 %retval.0.i126, 1 + %wide.trip.count = zext i32 %19 to i64 br label %for.body for.cond32.preheader: ; preds = %for.body @@ -139,15 +135,15 @@ for.cond32.preheader: ; preds = %for.body for.cond36.preheader.lr.ph: ; preds = %for.cond32.preheader %symbols = getelementptr inbounds i8, ptr %workSpace, i64 980 %rankStart47 = getelementptr inbounds i8, ptr %workSpace, i64 52 - %19 = zext nneg i32 %add24 to i64 + %20 = zext nneg i32 %add24 to i64 br label %for.cond36.preheader for.body: ; preds = %for.body.lr.ph, %for.body %indvars.iv169 = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next170, %for.body ] %nextRankStart.0134 = phi i32 [ 0, %for.body.lr.ph ], [ %add29, %for.body ] %arrayidx = getelementptr inbounds [13 x i32], ptr %workSpace, i64 0, i64 %indvars.iv169 - %20 = load i32, ptr %arrayidx, align 4 - %add29 = add i32 %20, %nextRankStart.0134 + %21 = load i32, ptr %arrayidx, align 4 + %add29 = add i32 %21, %nextRankStart.0134 %arrayidx31 = getelementptr inbounds [13 x i32], ptr %rankStart, i64 0, i64 %indvars.iv169 store i32 %nextRankStart.0134, ptr %arrayidx31, align 4 %indvars.iv.next170 = add nuw nsw i64 %indvars.iv169, 1 @@ -159,33 +155,33 @@ for.cond36.preheader: ; preds = %for.cond36.preheade br label %for.body39 for.cond58.preheader.loopexit: ; preds = %for.inc55 - %21 = trunc nuw nsw i64 %indvars.iv.next178 to i32 + %22 = trunc nuw nsw i64 %indvars.iv.next178 to i32 br label %for.cond58.preheader for.cond58.preheader: ; preds = %for.cond58.preheader.loopexit, %for.cond32.preheader - %n.1.lcssa = phi i32 [ 0, %for.cond32.preheader ], [ %21, %for.cond58.preheader.loopexit ] + %n.1.lcssa = phi i32 [ 0, %for.cond32.preheader ], [ %22, %for.cond58.preheader.loopexit ] %cmp59139 = icmp slt i32 %n.1.lcssa, %0 br i1 %cmp59139, label %for.body61.lr.ph, label %for.end76 for.body61.lr.ph: ; preds = %for.cond58.preheader %symbols68 = getelementptr inbounds i8, ptr %workSpace, i64 980 %rankStart69 = getelementptr inbounds i8, ptr %workSpace, i64 52 - %22 = zext nneg i32 %n.1.lcssa to i64 + %23 = zext nneg i32 %n.1.lcssa to i64 %wide.trip.count183 = zext i32 %0 to i64 br label %for.body61 for.body39: ; preds = %for.cond36.preheader, %for.body39 %indvars.iv172 = phi i64 [ 0, %for.cond36.preheader ], [ %indvars.iv.next173, %for.body39 ] - %23 = or disjoint i64 %indvars.iv172, %indvars.iv177 - %arrayidx43 = getelementptr inbounds [256 x i8], ptr %huffWeight, i64 0, i64 %23 - %24 = load i8, ptr %arrayidx43, align 1 - %conv44 = zext i8 %24 to i64 - %conv46 = trunc i64 %23 to i8 + %24 = or disjoint i64 %indvars.iv172, %indvars.iv177 + %arrayidx43 = getelementptr inbounds [256 x i8], ptr %huffWeight, i64 0, i64 %24 + %25 = load i8, ptr %arrayidx43, align 1 + %conv44 = zext i8 %25 to i64 + %conv46 = trunc i64 %24 to i8 %arrayidx48 = getelementptr inbounds [13 x i32], ptr %rankStart47, i64 0, i64 %conv44 - %25 = load i32, ptr %arrayidx48, align 4 - %inc49 = add i32 %25, 1 + %26 = load i32, ptr %arrayidx48, align 4 + %inc49 = add i32 %26, 1 store i32 %inc49, ptr %arrayidx48, align 4 - %idxprom50 = zext i32 %25 to i64 + %idxprom50 = zext i32 %26 to i64 %arrayidx51 = getelementptr inbounds [256 x i8], ptr %symbols, i64 0, i64 %idxprom50 store i8 %conv46, ptr %arrayidx51, align 1 %indvars.iv.next173 = add nuw nsw i64 %indvars.iv172, 1 @@ -194,20 +190,20 @@ for.body39: ; preds = %for.cond36.preheade for.inc55: ; preds = %for.body39 %indvars.iv.next178 = add nuw nsw i64 %indvars.iv177, 4 - %cmp33 = icmp ult i64 %indvars.iv.next178, %19 + %cmp33 = icmp ult i64 %indvars.iv.next178, %20 br i1 %cmp33, label %for.cond36.preheader, label %for.cond58.preheader.loopexit, !llvm.loop !9 for.body61: ; preds = %for.body61.lr.ph, %for.body61 - %indvars.iv180 = phi i64 [ %22, %for.body61.lr.ph ], [ %indvars.iv.next181, %for.body61 ] + %indvars.iv180 = phi i64 [ %23, %for.body61.lr.ph ], [ %indvars.iv.next181, %for.body61 ] %arrayidx65 = getelementptr inbounds [256 x i8], ptr %huffWeight, i64 0, i64 %indvars.iv180 - %26 = load i8, ptr %arrayidx65, align 1 - %conv66 = zext i8 %26 to i64 + %27 = load i8, ptr %arrayidx65, align 1 + %conv66 = zext i8 %27 to i64 %conv67 = trunc i64 %indvars.iv180 to i8 %arrayidx70 = getelementptr inbounds [13 x i32], ptr %rankStart69, i64 0, i64 %conv66 - %27 = load i32, ptr %arrayidx70, align 4 - %inc71 = add i32 %27, 1 + %28 = load i32, ptr %arrayidx70, align 4 + %inc71 = add i32 %28, 1 store i32 %inc71, ptr %arrayidx70, align 4 - %idxprom72 = zext i32 %27 to i64 + %idxprom72 = zext i32 %28 to i64 %arrayidx73 = getelementptr inbounds [256 x i8], ptr %symbols68, i64 0, i64 %idxprom72 store i8 %conv67, ptr %arrayidx73, align 1 %indvars.iv.next181 = add nuw nsw i64 %indvars.iv180, 1 @@ -220,24 +216,24 @@ for.end76: ; preds = %for.body61, %for.co br i1 %cmp83158, label %for.body85.lr.ph, label %return for.body85.lr.ph: ; preds = %for.end76 - %28 = load i32, ptr %workSpace, align 4 + %29 = load i32, ptr %workSpace, align 4 %symbols151 = getelementptr inbounds i8, ptr %workSpace, i64 980 - %29 = zext i32 %add82 to i64 + %30 = zext i32 %add82 to i64 br label %for.body85 for.body85: ; preds = %for.body85.lr.ph, %sw.epilog %indvars.iv238 = phi i64 [ 1, %for.body85.lr.ph ], [ %indvars.iv.next239, %sw.epilog ] - %symbol.0161 = phi i32 [ %28, %for.body85.lr.ph ], [ %add206, %sw.epilog ] + %symbol.0161 = phi i32 [ %29, %for.body85.lr.ph ], [ %add206, %sw.epilog ] %rankStart80.0159 = phi i32 [ 0, %for.body85.lr.ph ], [ %add207, %sw.epilog ] %arrayidx88 = getelementptr inbounds [13 x i32], ptr %workSpace, i64 0, i64 %indvars.iv238 - %30 = load i32, ptr %arrayidx88, align 4 - %31 = trunc nuw i64 %indvars.iv238 to i32 - %shl = shl nuw i32 1, %31 + %31 = load i32, ptr %arrayidx88, align 4 + %32 = trunc nuw i64 %indvars.iv238 to i32 + %shl = shl nuw i32 1, %32 %shr = ashr exact i32 %shl, 1 - %32 = trunc i64 %indvars.iv238 to i32 - %33 = sub i32 %add82, %32 - %conv91 = trunc i32 %33 to i8 - %cmp166155 = icmp sgt i32 %30, 0 + %33 = trunc i64 %indvars.iv238 to i32 + %34 = sub i32 %add82, %33 + %conv91 = trunc i32 %34 to i8 + %cmp166155 = icmp sgt i32 %31, 0 switch i32 %shr, label %for.cond165.preheader [ i32 1, label %for.cond93.preheader i32 2, label %for.cond109.preheader @@ -249,96 +245,96 @@ for.cond146.preheader: ; preds = %for.body85 br i1 %cmp166155, label %for.body149.lr.ph, label %sw.epilog for.body149.lr.ph: ; preds = %for.cond146.preheader - %conv91.mask = and i32 %33, 255 + %conv91.mask = and i32 %34, 255 %conv1.i116 = zext nneg i32 %conv91.mask to i64 - %34 = sext i32 %symbol.0161 to i64 - %35 = sext i32 %rankStart80.0159 to i64 - %wide.trip.count193 = zext nneg i32 %30 to i64 + %35 = sext i32 %symbol.0161 to i64 + %36 = sext i32 %rankStart80.0159 to i64 + %wide.trip.count193 = zext nneg i32 %31 to i64 br label %for.body149 for.cond131.preheader: ; preds = %for.body85 br i1 %cmp166155, label %for.body134.lr.ph, label %sw.epilog for.body134.lr.ph: ; preds = %for.cond131.preheader - %conv91.mask127 = and i32 %33, 255 + %conv91.mask127 = and i32 %34, 255 %conv1.i = zext nneg i32 %conv91.mask127 to i64 - %36 = sext i32 %symbol.0161 to i64 - %37 = sext i32 %rankStart80.0159 to i64 - %wide.trip.count203 = zext nneg i32 %30 to i64 + %37 = sext i32 %symbol.0161 to i64 + %38 = sext i32 %rankStart80.0159 to i64 + %wide.trip.count203 = zext nneg i32 %31 to i64 br label %for.body134 for.cond109.preheader: ; preds = %for.body85 br i1 %cmp166155, label %for.body112.preheader, label %sw.epilog for.body112.preheader: ; preds = %for.cond109.preheader - %38 = sext i32 %symbol.0161 to i64 - %39 = sext i32 %rankStart80.0159 to i64 - %wide.trip.count213 = zext nneg i32 %30 to i64 + %39 = sext i32 %symbol.0161 to i64 + %40 = sext i32 %rankStart80.0159 to i64 + %wide.trip.count213 = zext nneg i32 %31 to i64 br label %for.body112 for.cond93.preheader: ; preds = %for.body85 br i1 %cmp166155, label %for.body96.preheader, label %sw.epilog for.body96.preheader: ; preds = %for.cond93.preheader - %40 = sext i32 %symbol.0161 to i64 - %41 = sext i32 %rankStart80.0159 to i64 - %wide.trip.count223 = zext nneg i32 %30 to i64 + %41 = sext i32 %symbol.0161 to i64 + %42 = sext i32 %rankStart80.0159 to i64 + %wide.trip.count223 = zext nneg i32 %31 to i64 br label %for.body96 for.cond165.preheader: ; preds = %for.body85 br i1 %cmp166155, label %for.body168.lr.ph, label %sw.epilog for.body168.lr.ph: ; preds = %for.cond165.preheader - %conv91.mask128 = and i32 %33, 255 + %conv91.mask128 = and i32 %34, 255 %conv1.i121 = zext nneg i32 %conv91.mask128 to i64 %cmp176153 = icmp sgt i32 %shr, 0 - %42 = sext i32 %shr to i64 - %43 = sext i32 %symbol.0161 to i64 - %44 = sext i32 %rankStart80.0159 to i64 - %wide.trip.count236 = zext nneg i32 %30 to i64 + %43 = sext i32 %shr to i64 + %44 = sext i32 %symbol.0161 to i64 + %45 = sext i32 %rankStart80.0159 to i64 + %wide.trip.count236 = zext nneg i32 %31 to i64 br label %for.body168 for.body96: ; preds = %for.body96.preheader, %for.body96 - %indvars.iv218 = phi i64 [ %41, %for.body96.preheader ], [ %indvars.iv.next219, %for.body96 ] + %indvars.iv218 = phi i64 [ %42, %for.body96.preheader ], [ %indvars.iv.next219, %for.body96 ] %indvars.iv215 = phi i64 [ 0, %for.body96.preheader ], [ %indvars.iv.next216, %for.body96 ] - %45 = add nsw i64 %indvars.iv215, %40 - %arrayidx100 = getelementptr inbounds [256 x i8], ptr %symbols151, i64 0, i64 %45 - %46 = load i8, ptr %arrayidx100, align 1 + %46 = add nsw i64 %indvars.iv215, %41 + %arrayidx100 = getelementptr inbounds [256 x i8], ptr %symbols151, i64 0, i64 %46 + %47 = load i8, ptr %arrayidx100, align 1 %arrayidx103 = getelementptr inbounds %struct.HUF_DEltX1, ptr %add.ptr, i64 %indvars.iv218 store i8 %conv91, ptr %arrayidx103, align 1 %D.sroa.2.0.arrayidx103.sroa_idx = getelementptr inbounds i8, ptr %arrayidx103, i64 1 - store i8 %46, ptr %D.sroa.2.0.arrayidx103.sroa_idx, align 1 + store i8 %47, ptr %D.sroa.2.0.arrayidx103.sroa_idx, align 1 %indvars.iv.next219 = add nsw i64 %indvars.iv218, 1 %indvars.iv.next216 = add nuw nsw i64 %indvars.iv215, 1 %exitcond224.not = icmp eq i64 %indvars.iv.next216, %wide.trip.count223 br i1 %exitcond224.not, label %sw.epilog, label %for.body96, !llvm.loop !11 for.body112: ; preds = %for.body112.preheader, %for.body112 - %indvars.iv208 = phi i64 [ %39, %for.body112.preheader ], [ %indvars.iv.next209, %for.body112 ] + %indvars.iv208 = phi i64 [ %40, %for.body112.preheader ], [ %indvars.iv.next209, %for.body112 ] %indvars.iv205 = phi i64 [ 0, %for.body112.preheader ], [ %indvars.iv.next206, %for.body112 ] - %47 = add nsw i64 %indvars.iv205, %38 - %arrayidx117 = getelementptr inbounds [256 x i8], ptr %symbols151, i64 0, i64 %47 - %48 = load i8, ptr %arrayidx117, align 1 + %48 = add nsw i64 %indvars.iv205, %39 + %arrayidx117 = getelementptr inbounds [256 x i8], ptr %symbols151, i64 0, i64 %48 + %49 = load i8, ptr %arrayidx117, align 1 %arrayidx122 = getelementptr inbounds %struct.HUF_DEltX1, ptr %add.ptr, i64 %indvars.iv208 store i8 %conv91, ptr %arrayidx122, align 1 %D113.sroa.3.0.arrayidx122.sroa_idx = getelementptr inbounds i8, ptr %arrayidx122, i64 1 - store i8 %48, ptr %D113.sroa.3.0.arrayidx122.sroa_idx, align 1 + store i8 %49, ptr %D113.sroa.3.0.arrayidx122.sroa_idx, align 1 %arrayidx125 = getelementptr i8, ptr %arrayidx122, i64 2 store i8 %conv91, ptr %arrayidx125, align 1 %D113.sroa.3.0.arrayidx125.sroa_idx = getelementptr i8, ptr %arrayidx122, i64 3 - store i8 %48, ptr %D113.sroa.3.0.arrayidx125.sroa_idx, align 1 + store i8 %49, ptr %D113.sroa.3.0.arrayidx125.sroa_idx, align 1 %indvars.iv.next209 = add nsw i64 %indvars.iv208, 2 %indvars.iv.next206 = add nuw nsw i64 %indvars.iv205, 1 %exitcond214.not = icmp eq i64 %indvars.iv.next206, %wide.trip.count213 br i1 %exitcond214.not, label %sw.epilog, label %for.body112, !llvm.loop !12 for.body134: ; preds = %for.body134.lr.ph, %for.body134 - %indvars.iv198 = phi i64 [ %37, %for.body134.lr.ph ], [ %indvars.iv.next199, %for.body134 ] + %indvars.iv198 = phi i64 [ %38, %for.body134.lr.ph ], [ %indvars.iv.next199, %for.body134 ] %indvars.iv195 = phi i64 [ 0, %for.body134.lr.ph ], [ %indvars.iv.next196, %for.body134 ] - %49 = add nsw i64 %indvars.iv195, %36 - %arrayidx138 = getelementptr inbounds [256 x i8], ptr %symbols151, i64 0, i64 %49 - %50 = load i8, ptr %arrayidx138, align 1 - %conv.i113 = zext i8 %50 to i64 + %50 = add nsw i64 %indvars.iv195, %37 + %arrayidx138 = getelementptr inbounds [256 x i8], ptr %symbols151, i64 0, i64 %50 + %51 = load i8, ptr %arrayidx138, align 1 + %conv.i113 = zext i8 %51 to i64 %shl.i = shl nuw nsw i64 %conv.i113, 8 %add.i = or disjoint i64 %shl.i, %conv1.i %mul.i = mul nuw i64 %add.i, 281479271743489 @@ -350,12 +346,12 @@ for.body134: ; preds = %for.body134.lr.ph, br i1 %exitcond204.not, label %sw.epilog, label %for.body134, !llvm.loop !13 for.body149: ; preds = %for.body149.lr.ph, %for.body149 - %indvars.iv188 = phi i64 [ %35, %for.body149.lr.ph ], [ %indvars.iv.next189, %for.body149 ] + %indvars.iv188 = phi i64 [ %36, %for.body149.lr.ph ], [ %indvars.iv.next189, %for.body149 ] %indvars.iv185 = phi i64 [ 0, %for.body149.lr.ph ], [ %indvars.iv.next186, %for.body149 ] - %51 = add nsw i64 %indvars.iv185, %34 - %arrayidx154 = getelementptr inbounds [256 x i8], ptr %symbols151, i64 0, i64 %51 - %52 = load i8, ptr %arrayidx154, align 1 - %conv.i114 = zext i8 %52 to i64 + %52 = add nsw i64 %indvars.iv185, %35 + %arrayidx154 = getelementptr inbounds [256 x i8], ptr %symbols151, i64 0, i64 %52 + %53 = load i8, ptr %arrayidx154, align 1 + %conv.i114 = zext i8 %53 to i64 %shl.i115 = shl nuw nsw i64 %conv.i114, 8 %add.i117 = or disjoint i64 %shl.i115, %conv1.i116 %mul.i118 = mul nuw i64 %add.i117, 281479271743489 @@ -369,12 +365,12 @@ for.body149: ; preds = %for.body149.lr.ph, br i1 %exitcond194.not, label %sw.epilog, label %for.body149, !llvm.loop !14 for.body168: ; preds = %for.body168.lr.ph, %for.end201 - %indvars.iv231 = phi i64 [ %44, %for.body168.lr.ph ], [ %indvars.iv.next232, %for.end201 ] + %indvars.iv231 = phi i64 [ %45, %for.body168.lr.ph ], [ %indvars.iv.next232, %for.end201 ] %indvars.iv228 = phi i64 [ 0, %for.body168.lr.ph ], [ %indvars.iv.next229, %for.end201 ] - %53 = add nsw i64 %indvars.iv228, %43 - %arrayidx173 = getelementptr inbounds [256 x i8], ptr %symbols151, i64 0, i64 %53 - %54 = load i8, ptr %arrayidx173, align 1 - %conv.i119 = zext i8 %54 to i64 + %54 = add nsw i64 %indvars.iv228, %44 + %arrayidx173 = getelementptr inbounds [256 x i8], ptr %symbols151, i64 0, i64 %54 + %55 = load i8, ptr %arrayidx173, align 1 + %conv.i119 = zext i8 %55 to i64 %shl.i120 = shl nuw nsw i64 %conv.i119, 8 %add.i122 = or disjoint i64 %shl.i120, %conv1.i121 %mul.i123 = mul nuw i64 %add.i122, 281479271743489 @@ -395,21 +391,21 @@ for.body178: ; preds = %for.body178.lr.ph, %add.ptr198 = getelementptr inbounds i8, ptr %add.ptr182, i64 24 store i64 %mul.i123, ptr %add.ptr198, align 1 %indvars.iv.next226 = add nuw nsw i64 %indvars.iv225, 16 - %cmp176 = icmp slt i64 %indvars.iv.next226, %42 + %cmp176 = icmp slt i64 %indvars.iv.next226, %43 br i1 %cmp176, label %for.body178, label %for.end201, !llvm.loop !15 for.end201: ; preds = %for.body178, %for.body168 - %indvars.iv.next232 = add nsw i64 %indvars.iv231, %42 + %indvars.iv.next232 = add nsw i64 %indvars.iv231, %43 %indvars.iv.next229 = add nuw nsw i64 %indvars.iv228, 1 %exitcond237.not = icmp eq i64 %indvars.iv.next229, %wide.trip.count236 br i1 %exitcond237.not, label %sw.epilog, label %for.body168, !llvm.loop !16 sw.epilog: ; preds = %for.body149, %for.body134, %for.body112, %for.body96, %for.end201, %for.cond146.preheader, %for.cond131.preheader, %for.cond109.preheader, %for.cond93.preheader, %for.cond165.preheader - %add206 = add nsw i32 %30, %symbol.0161 - %mul = mul nsw i32 %30, %shr + %add206 = add nsw i32 %31, %symbol.0161 + %mul = mul nsw i32 %31, %shr %add207 = add nsw i32 %mul, %rankStart80.0159 %indvars.iv.next239 = add nuw nsw i64 %indvars.iv238, 1 - %exitcond243.not = icmp eq i64 %indvars.iv.next239, %29 + %exitcond243.not = icmp eq i64 %indvars.iv.next239, %30 br i1 %exitcond243.not, label %return, label %for.body85, !llvm.loop !17 return: ; preds = %sw.epilog, %for.end76, %HUF_rescaleStats.exit, %if.end, %entry diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..0b42e331b13 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/102943" # Please rebase manually # git fetch origin