diff --git a/bench/abc/optimized/cuddEssent.c.ll b/bench/abc/optimized/cuddEssent.c.ll index 0fdf56aa082..c4be3a1b65f 100644 --- a/bench/abc/optimized/cuddEssent.c.ll +++ b/bench/abc/optimized/cuddEssent.c.ll @@ -2167,7 +2167,7 @@ beforep.exit465.thread32: ; preds = %455, %451, %beforep br i1 %525, label %526, label %533 526: ; preds = %524 - %527 = add nsw i32 %518, -1 + %527 = add nsw i32 %518, -2 %528 = ashr i32 %527, 6 %529 = add nsw i32 %528, 1 %530 = sext i32 %529 to i64 @@ -2447,7 +2447,7 @@ tlcInfoAlloc.exit: ; preds = %2 br i1 %17, label %Cudd_tlcInfoFree.exit, label %18 18: ; preds = %12 - %19 = add nuw i64 %indvars.iv, 3 + %19 = add nuw i64 %indvars.iv, 2 %20 = lshr i64 %19, 3 %21 = and i64 %20, 268435448 %22 = add nuw nsw i64 %21, 8 diff --git a/bench/abseil-cpp/optimized/hash_instantiated_test.cc.ll b/bench/abseil-cpp/optimized/hash_instantiated_test.cc.ll index 06b8f7d0db3..54c3ed1f548 100644 --- a/bench/abseil-cpp/optimized/hash_instantiated_test.cc.ll +++ b/bench/abseil-cpp/optimized/hash_instantiated_test.cc.ll @@ -129239,9 +129239,9 @@ if.then12: ; preds = %if.then9 %11 = shl nuw nsw i8 %8, 1 %12 = tail call i8 @llvm.umin.i8(i8 %11, i8 61) %13 = shl nuw i8 %12, 2 - %mul.i.i.i.i.i = zext i8 %13 to i64 - %sub.i.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %sub.i.i.i.i.i.i, 504 + %reass.mul.i.i.i.i.i = zext i8 %13 to i64 + %sub.i.i.i.i = add nuw nsw i64 %reass.mul.i.i.i.i.i, 16 + %div1.i.i.i.i = and i64 %sub.i.i.i.i, 504 %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #33 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 @@ -130081,8 +130081,8 @@ while.body.preheader.i: ; preds = %if.end.i br label %while.body.i while.body.i: ; preds = %while.body.i, %while.body.preheader.i - %node.addr.071.i = phi ptr [ %5, %while.body.i ], [ %1, %while.body.preheader.i ] - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.071.i, i64 256 + %node.addr.070.i = phi ptr [ %5, %while.body.i ], [ %1, %while.body.preheader.i ] + %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.070.i, i64 256 %5 = load ptr, ptr %add.ptr.i.i.i.i.i, align 8 %arrayidx.i.i46.i = getelementptr i8, ptr %5, i64 11 %6 = load i8, ptr %arrayidx.i.i46.i, align 1 @@ -130108,8 +130108,8 @@ do.body.i: ; preds = %do.body.i.backedge, br i1 %cmp.i.not.i50.i, label %while.body22.i, label %if.end28.i while.body22.i: ; preds = %do.body.i, %while.body22.i - %node.addr.274.i = phi ptr [ %11, %while.body22.i ], [ %9, %do.body.i ] - %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.274.i, i64 256 + %node.addr.273.i = phi ptr [ %11, %while.body22.i ], [ %9, %do.body.i ] + %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.273.i, i64 256 %11 = load ptr, ptr %add.ptr.i.i.i.i53.i, align 8 %arrayidx.i.i51.i = getelementptr i8, ptr %11, i64 11 %12 = load i8, ptr %arrayidx.i.i51.i, align 1 @@ -130128,8 +130128,8 @@ if.end28.i: ; preds = %while.end24.i, %do. %pos.2.i = phi i64 [ %conv26.i, %while.end24.i ], [ %pos.1.i, %do.body.i ] %parent.2.i = phi ptr [ %14, %while.end24.i ], [ %parent.1.i, %do.body.i ] tail call void @_ZdlPv(ptr noundef nonnull %node.addr.1.i) #32 - %arrayidx.i62.i = getelementptr i8, ptr %parent.2.i, i64 10 - %15 = load i8, ptr %arrayidx.i62.i, align 1 + %arrayidx.i61.i = getelementptr i8, ptr %parent.2.i, i64 10 + %15 = load i8, ptr %arrayidx.i61.i, align 1 %conv35.i = zext i8 %15 to i64 %cmp36.not.not.i = icmp ult i64 %pos.2.i, %conv35.i br i1 %cmp36.not.not.i, label %do.body.i.backedge, label %do.body37.i @@ -130142,16 +130142,16 @@ do.body.i.backedge: ; preds = %if.end28.i, %do.end do.body37.i: ; preds = %if.end28.i, %if.end46.i %parent.3.i = phi ptr [ %17, %if.end46.i ], [ %parent.2.i, %if.end28.i ] - %add.ptr.i.i.i63.i = getelementptr i8, ptr %parent.3.i, i64 8 - %16 = load i8, ptr %add.ptr.i.i.i63.i, align 1 + %add.ptr.i.i.i62.i = getelementptr i8, ptr %parent.3.i, i64 8 + %16 = load i8, ptr %add.ptr.i.i.i62.i, align 1 %17 = load ptr, ptr %parent.3.i, align 8 tail call void @_ZdlPv(ptr noundef nonnull %parent.3.i) #32 %cmp44.i = icmp eq ptr %17, %4 br i1 %cmp44.i, label %if.end, label %if.end46.i if.end46.i: ; preds = %do.body37.i - %arrayidx.i65.i = getelementptr i8, ptr %17, i64 10 - %18 = load i8, ptr %arrayidx.i65.i, align 1 + %arrayidx.i64.i = getelementptr i8, ptr %17, i64 10 + %18 = load i8, ptr %arrayidx.i64.i, align 1 %cmp51.not.i = icmp ult i8 %16, %18 br i1 %cmp51.not.i, label %do.end52.i, label %do.body37.i, !llvm.loop !3685 @@ -130589,9 +130589,9 @@ if.then12: ; preds = %if.then9 %11 = shl nuw nsw i8 %8, 1 %12 = tail call i8 @llvm.umin.i8(i8 %11, i8 61) %13 = shl nuw i8 %12, 2 - %mul.i.i.i.i.i = zext i8 %13 to i64 - %sub.i.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %sub.i.i.i.i.i.i, 504 + %reass.mul.i.i.i.i.i = zext i8 %13 to i64 + %sub.i.i.i.i = add nuw nsw i64 %reass.mul.i.i.i.i.i, 16 + %div1.i.i.i.i = and i64 %sub.i.i.i.i, 504 %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #33 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 @@ -273332,9 +273332,8 @@ if.then12: ; preds = %if.then9 %11 = tail call i8 @llvm.umin.i8(i8 %10, i8 6) %narrow = mul nuw i8 %11, 40 %mul.i.i.i.i.i = zext i8 %narrow to i64 - %add.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %add.i.i.i.i.i, 496 - %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #33 + %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 16 + %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.i.i.i.i) #33 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 store i8 0, ptr %add.ptr.i.i.i.i.i.i5, align 1 @@ -273725,8 +273724,8 @@ while.body.preheader: ; preds = %if.end br label %while.body while.body: ; preds = %while.body.preheader, %while.body - %node.addr.095 = phi ptr [ %3, %while.body ], [ %node, %while.body.preheader ] - %add.ptr.i.i.i.i48 = getelementptr inbounds i8, ptr %node.addr.095, i64 256 + %node.addr.094 = phi ptr [ %3, %while.body ], [ %node, %while.body.preheader ] + %add.ptr.i.i.i.i48 = getelementptr inbounds i8, ptr %node.addr.094, i64 256 %3 = load ptr, ptr %add.ptr.i.i.i.i48, align 8 %arrayidx.i.i47 = getelementptr i8, ptr %3, i64 11 %4 = load i8, ptr %arrayidx.i.i47, align 1 @@ -273752,8 +273751,8 @@ do.body: ; preds = %do.body.backedge, % br i1 %cmp.i.not.i52, label %while.body22, label %if.end28 while.body22: ; preds = %do.body, %while.body22 - %node.addr.298 = phi ptr [ %9, %while.body22 ], [ %7, %do.body ] - %add.ptr.i.i.i.i55 = getelementptr inbounds i8, ptr %node.addr.298, i64 256 + %node.addr.297 = phi ptr [ %9, %while.body22 ], [ %7, %do.body ] + %add.ptr.i.i.i.i55 = getelementptr inbounds i8, ptr %node.addr.297, i64 256 %9 = load ptr, ptr %add.ptr.i.i.i.i55, align 8 %arrayidx.i.i53 = getelementptr i8, ptr %9, i64 11 %10 = load i8, ptr %arrayidx.i.i53, align 1 @@ -273789,8 +273788,8 @@ for.body.i63: ; preds = %if.end28, %for.body _ZN4absl18container_internal10btree_nodeINS0_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE15value_destroy_nEhhPSE_.exit68: ; preds = %for.body.i63, %if.end28 tail call void @_ZdlPv(ptr noundef %node.addr.1) #32 - %arrayidx.i75 = getelementptr i8, ptr %parent.2, i64 10 - %14 = load i8, ptr %arrayidx.i75, align 1 + %arrayidx.i74 = getelementptr i8, ptr %parent.2, i64 10 + %14 = load i8, ptr %arrayidx.i74, align 1 %conv35 = zext i8 %14 to i64 %cmp36.not.not = icmp ult i64 %pos.2, %conv35 br i1 %cmp36.not.not, label %do.body.backedge, label %do.body37 @@ -273804,31 +273803,31 @@ do.body.backedge: ; preds = %_ZN4absl18container do.body37: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE15value_destroy_nEhhPSE_.exit68, %if.end46 %15 = phi i8 [ %18, %if.end46 ], [ %14, %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE15value_destroy_nEhhPSE_.exit68 ] %parent.3 = phi ptr [ %17, %if.end46 ], [ %parent.2, %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE15value_destroy_nEhhPSE_.exit68 ] - %add.ptr.i.i.i76 = getelementptr i8, ptr %parent.3, i64 8 - %16 = load i8, ptr %add.ptr.i.i.i76, align 1 + %add.ptr.i.i.i75 = getelementptr i8, ptr %parent.3, i64 8 + %16 = load i8, ptr %add.ptr.i.i.i75, align 1 %17 = load ptr, ptr %parent.3, align 8 - %add.ptr.i.i.i.i78 = getelementptr inbounds i8, ptr %parent.3, i64 16 - %conv3.i80 = zext i8 %15 to i64 - %arrayidx.i6.i81 = getelementptr inbounds %"union.absl::container_internal::map_slot_type", ptr %add.ptr.i.i.i.i78, i64 %conv3.i80 - %cmp.not7.i82 = icmp eq i8 %15, 0 - br i1 %cmp.not7.i82, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE15value_destroy_nEhhPSE_.exit88, label %for.body.i83 - -for.body.i83: ; preds = %do.body37, %for.body.i83 - %s.08.i84 = phi ptr [ %incdec.ptr.i86, %for.body.i83 ], [ %add.ptr.i.i.i.i78, %do.body37 ] - %second.i.i.i.i.i.i85 = getelementptr inbounds i8, ptr %s.08.i84, i64 8 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i.i.i.i.i85) #29 - %incdec.ptr.i86 = getelementptr inbounds i8, ptr %s.08.i84, i64 40 - %cmp.not.i87 = icmp eq ptr %incdec.ptr.i86, %arrayidx.i6.i81 - br i1 %cmp.not.i87, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE15value_destroy_nEhhPSE_.exit88, label %for.body.i83, !llvm.loop !6773 - -_ZN4absl18container_internal10btree_nodeINS0_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE15value_destroy_nEhhPSE_.exit88: ; preds = %for.body.i83, %do.body37 + %add.ptr.i.i.i.i77 = getelementptr inbounds i8, ptr %parent.3, i64 16 + %conv3.i79 = zext i8 %15 to i64 + %arrayidx.i6.i80 = getelementptr inbounds %"union.absl::container_internal::map_slot_type", ptr %add.ptr.i.i.i.i77, i64 %conv3.i79 + %cmp.not7.i81 = icmp eq i8 %15, 0 + br i1 %cmp.not7.i81, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE15value_destroy_nEhhPSE_.exit87, label %for.body.i82 + +for.body.i82: ; preds = %do.body37, %for.body.i82 + %s.08.i83 = phi ptr [ %incdec.ptr.i85, %for.body.i82 ], [ %add.ptr.i.i.i.i77, %do.body37 ] + %second.i.i.i.i.i.i84 = getelementptr inbounds i8, ptr %s.08.i83, i64 8 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i.i.i.i.i84) #29 + %incdec.ptr.i85 = getelementptr inbounds i8, ptr %s.08.i83, i64 40 + %cmp.not.i86 = icmp eq ptr %incdec.ptr.i85, %arrayidx.i6.i80 + br i1 %cmp.not.i86, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE15value_destroy_nEhhPSE_.exit87, label %for.body.i82, !llvm.loop !6773 + +_ZN4absl18container_internal10btree_nodeINS0_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE15value_destroy_nEhhPSE_.exit87: ; preds = %for.body.i82, %do.body37 tail call void @_ZdlPv(ptr noundef %parent.3) #32 %cmp44 = icmp eq ptr %17, %2 br i1 %cmp44, label %return, label %if.end46 -if.end46: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE15value_destroy_nEhhPSE_.exit88 - %arrayidx.i89 = getelementptr i8, ptr %17, i64 10 - %18 = load i8, ptr %arrayidx.i89, align 1 +if.end46: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE15value_destroy_nEhhPSE_.exit87 + %arrayidx.i88 = getelementptr i8, ptr %17, i64 10 + %18 = load i8, ptr %arrayidx.i88, align 1 %cmp51.not = icmp ult i8 %16, %18 br i1 %cmp51.not, label %do.end52, label %do.body37, !llvm.loop !6777 @@ -273840,7 +273839,7 @@ return.sink.split: ; preds = %for.body.i, %if.end tail call void @_ZdlPv(ptr noundef %node) #32 br label %return -return: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE15value_destroy_nEhhPSE_.exit88, %return.sink.split +return: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS8_EELi256ELb0EEEE15value_destroy_nEhhPSE_.exit87, %return.sink.split ret void } @@ -274746,9 +274745,8 @@ if.then12: ; preds = %if.then9 %11 = tail call i8 @llvm.umin.i8(i8 %10, i8 6) %narrow = mul nuw i8 %11, 40 %mul.i.i.i.i.i = zext i8 %narrow to i64 - %add.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %add.i.i.i.i.i, 496 - %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #33 + %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 16 + %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.i.i.i.i) #33 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 store i8 0, ptr %add.ptr.i.i.i.i.i.i5, align 1 diff --git a/bench/abseil-cpp/optimized/str_split_test.cc.ll b/bench/abseil-cpp/optimized/str_split_test.cc.ll index 19d3b03ae13..965e677f966 100644 --- a/bench/abseil-cpp/optimized/str_split_test.cc.ll +++ b/bench/abseil-cpp/optimized/str_split_test.cc.ll @@ -72390,9 +72390,8 @@ if.then12: ; preds = %if.then9 %12 = tail call i8 @llvm.umin.i8(i8 %11, i8 15) %13 = shl nuw i8 %12, 4 %mul.i.i.i.i.i = zext i8 %13 to i64 - %add.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %add.i.i.i.i.i, 496 - %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #26 + %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 16 + %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.i.i.i.i) #26 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 store i8 0, ptr %add.ptr.i.i.i.i.i.i5, align 1 @@ -74878,8 +74877,8 @@ while.body.preheader.i: ; preds = %if.end.i br label %while.body.i while.body.i: ; preds = %while.body.i, %while.body.preheader.i - %node.addr.071.i = phi ptr [ %5, %while.body.i ], [ %1, %while.body.preheader.i ] - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.071.i, i64 256 + %node.addr.070.i = phi ptr [ %5, %while.body.i ], [ %1, %while.body.preheader.i ] + %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.070.i, i64 256 %5 = load ptr, ptr %add.ptr.i.i.i.i.i, align 8 %arrayidx.i.i46.i = getelementptr i8, ptr %5, i64 11 %6 = load i8, ptr %arrayidx.i.i46.i, align 1 @@ -74905,8 +74904,8 @@ do.body.i: ; preds = %do.body.i.backedge, br i1 %cmp.i.not.i50.i, label %while.body22.i, label %if.end28.i while.body22.i: ; preds = %do.body.i, %while.body22.i - %node.addr.274.i = phi ptr [ %11, %while.body22.i ], [ %9, %do.body.i ] - %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.274.i, i64 256 + %node.addr.273.i = phi ptr [ %11, %while.body22.i ], [ %9, %do.body.i ] + %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.273.i, i64 256 %11 = load ptr, ptr %add.ptr.i.i.i.i53.i, align 8 %arrayidx.i.i51.i = getelementptr i8, ptr %11, i64 11 %12 = load i8, ptr %arrayidx.i.i51.i, align 1 @@ -74925,8 +74924,8 @@ if.end28.i: ; preds = %while.end24.i, %do. %pos.2.i = phi i64 [ %conv26.i, %while.end24.i ], [ %pos.1.i, %do.body.i ] %parent.2.i = phi ptr [ %14, %while.end24.i ], [ %parent.1.i, %do.body.i ] tail call void @_ZdlPv(ptr noundef nonnull %node.addr.1.i) #25 - %arrayidx.i62.i = getelementptr i8, ptr %parent.2.i, i64 10 - %15 = load i8, ptr %arrayidx.i62.i, align 1 + %arrayidx.i61.i = getelementptr i8, ptr %parent.2.i, i64 10 + %15 = load i8, ptr %arrayidx.i61.i, align 1 %conv35.i = zext i8 %15 to i64 %cmp36.not.not.i = icmp ult i64 %pos.2.i, %conv35.i br i1 %cmp36.not.not.i, label %do.body.i.backedge, label %do.body37.i @@ -74939,16 +74938,16 @@ do.body.i.backedge: ; preds = %if.end28.i, %do.end do.body37.i: ; preds = %if.end28.i, %if.end46.i %parent.3.i = phi ptr [ %17, %if.end46.i ], [ %parent.2.i, %if.end28.i ] - %add.ptr.i.i.i63.i = getelementptr i8, ptr %parent.3.i, i64 8 - %16 = load i8, ptr %add.ptr.i.i.i63.i, align 1 + %add.ptr.i.i.i62.i = getelementptr i8, ptr %parent.3.i, i64 8 + %16 = load i8, ptr %add.ptr.i.i.i62.i, align 1 %17 = load ptr, ptr %parent.3.i, align 8 tail call void @_ZdlPv(ptr noundef nonnull %parent.3.i) #25 %cmp44.i = icmp eq ptr %17, %4 br i1 %cmp44.i, label %if.end, label %if.end46.i if.end46.i: ; preds = %do.body37.i - %arrayidx.i65.i = getelementptr i8, ptr %17, i64 10 - %18 = load i8, ptr %arrayidx.i65.i, align 1 + %arrayidx.i64.i = getelementptr i8, ptr %17, i64 10 + %18 = load i8, ptr %arrayidx.i64.i, align 1 %cmp51.not.i = icmp ult i8 %16, %18 br i1 %cmp51.not.i, label %do.end52.i, label %do.body37.i, !llvm.loop !1354 @@ -79478,9 +79477,8 @@ if.then12: ; preds = %if.then9 %12 = tail call i8 @llvm.umin.i8(i8 %11, i8 15) %13 = shl nuw i8 %12, 4 %mul.i.i.i.i.i = zext i8 %13 to i64 - %add.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %add.i.i.i.i.i, 496 - %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #26 + %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 16 + %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.i.i.i.i) #26 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 store i8 0, ptr %add.ptr.i.i.i.i.i.i5, align 1 @@ -81971,8 +81969,8 @@ while.body.preheader.i: ; preds = %if.end.i br label %while.body.i while.body.i: ; preds = %while.body.i, %while.body.preheader.i - %node.addr.071.i = phi ptr [ %5, %while.body.i ], [ %1, %while.body.preheader.i ] - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.071.i, i64 256 + %node.addr.070.i = phi ptr [ %5, %while.body.i ], [ %1, %while.body.preheader.i ] + %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.070.i, i64 256 %5 = load ptr, ptr %add.ptr.i.i.i.i.i, align 8 %arrayidx.i.i46.i = getelementptr i8, ptr %5, i64 11 %6 = load i8, ptr %arrayidx.i.i46.i, align 1 @@ -81998,8 +81996,8 @@ do.body.i: ; preds = %do.body.i.backedge, br i1 %cmp.i.not.i50.i, label %while.body22.i, label %if.end28.i while.body22.i: ; preds = %do.body.i, %while.body22.i - %node.addr.274.i = phi ptr [ %11, %while.body22.i ], [ %9, %do.body.i ] - %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.274.i, i64 256 + %node.addr.273.i = phi ptr [ %11, %while.body22.i ], [ %9, %do.body.i ] + %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.273.i, i64 256 %11 = load ptr, ptr %add.ptr.i.i.i.i53.i, align 8 %arrayidx.i.i51.i = getelementptr i8, ptr %11, i64 11 %12 = load i8, ptr %arrayidx.i.i51.i, align 1 @@ -82018,8 +82016,8 @@ if.end28.i: ; preds = %while.end24.i, %do. %pos.2.i = phi i64 [ %conv26.i, %while.end24.i ], [ %pos.1.i, %do.body.i ] %parent.2.i = phi ptr [ %14, %while.end24.i ], [ %parent.1.i, %do.body.i ] tail call void @_ZdlPv(ptr noundef nonnull %node.addr.1.i) #25 - %arrayidx.i62.i = getelementptr i8, ptr %parent.2.i, i64 10 - %15 = load i8, ptr %arrayidx.i62.i, align 1 + %arrayidx.i61.i = getelementptr i8, ptr %parent.2.i, i64 10 + %15 = load i8, ptr %arrayidx.i61.i, align 1 %conv35.i = zext i8 %15 to i64 %cmp36.not.not.i = icmp ult i64 %pos.2.i, %conv35.i br i1 %cmp36.not.not.i, label %do.body.i.backedge, label %do.body37.i @@ -82032,16 +82030,16 @@ do.body.i.backedge: ; preds = %if.end28.i, %do.end do.body37.i: ; preds = %if.end28.i, %if.end46.i %parent.3.i = phi ptr [ %17, %if.end46.i ], [ %parent.2.i, %if.end28.i ] - %add.ptr.i.i.i63.i = getelementptr i8, ptr %parent.3.i, i64 8 - %16 = load i8, ptr %add.ptr.i.i.i63.i, align 1 + %add.ptr.i.i.i62.i = getelementptr i8, ptr %parent.3.i, i64 8 + %16 = load i8, ptr %add.ptr.i.i.i62.i, align 1 %17 = load ptr, ptr %parent.3.i, align 8 tail call void @_ZdlPv(ptr noundef nonnull %parent.3.i) #25 %cmp44.i = icmp eq ptr %17, %4 br i1 %cmp44.i, label %if.end, label %if.end46.i if.end46.i: ; preds = %do.body37.i - %arrayidx.i65.i = getelementptr i8, ptr %17, i64 10 - %18 = load i8, ptr %arrayidx.i65.i, align 1 + %arrayidx.i64.i = getelementptr i8, ptr %17, i64 10 + %18 = load i8, ptr %arrayidx.i64.i, align 1 %cmp51.not.i = icmp ult i8 %16, %18 br i1 %cmp51.not.i, label %do.end52.i, label %do.body37.i, !llvm.loop !1441 @@ -113928,9 +113926,8 @@ if.then12: ; preds = %if.then9 %11 = tail call i8 @llvm.umin.i8(i8 %10, i8 5) %conv.i.i = zext nneg i8 %11 to i64 %mul.i.i.i.i.i = mul nuw nsw i64 %conv.i.i, 48 - %add.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %add.i.i.i.i.i, 1008 - %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #26 + %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 16 + %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.i.i.i.i) #26 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 store i8 0, ptr %add.ptr.i.i.i.i.i.i5, align 1 @@ -114318,8 +114315,8 @@ while.body.preheader: ; preds = %if.end br label %while.body while.body: ; preds = %while.body.preheader, %while.body - %node.addr.095 = phi ptr [ %3, %while.body ], [ %node, %while.body.preheader ] - %add.ptr.i.i.i.i48 = getelementptr inbounds i8, ptr %node.addr.095, i64 256 + %node.addr.094 = phi ptr [ %3, %while.body ], [ %node, %while.body.preheader ] + %add.ptr.i.i.i.i48 = getelementptr inbounds i8, ptr %node.addr.094, i64 256 %3 = load ptr, ptr %add.ptr.i.i.i.i48, align 8 %arrayidx.i.i47 = getelementptr i8, ptr %3, i64 11 %4 = load i8, ptr %arrayidx.i.i47, align 1 @@ -114345,8 +114342,8 @@ do.body: ; preds = %do.body.backedge, % br i1 %cmp.i.not.i52, label %while.body22, label %if.end28 while.body22: ; preds = %do.body, %while.body22 - %node.addr.298 = phi ptr [ %9, %while.body22 ], [ %7, %do.body ] - %add.ptr.i.i.i.i55 = getelementptr inbounds i8, ptr %node.addr.298, i64 256 + %node.addr.297 = phi ptr [ %9, %while.body22 ], [ %7, %do.body ] + %add.ptr.i.i.i.i55 = getelementptr inbounds i8, ptr %node.addr.297, i64 256 %9 = load ptr, ptr %add.ptr.i.i.i.i55, align 8 %arrayidx.i.i53 = getelementptr i8, ptr %9, i64 11 %10 = load i8, ptr %arrayidx.i.i53, align 1 @@ -114382,8 +114379,8 @@ for.body.i63: ; preds = %if.end28, %for.body _ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit68: ; preds = %for.body.i63, %if.end28 tail call void @_ZdlPv(ptr noundef %node.addr.1) #25 - %arrayidx.i75 = getelementptr i8, ptr %parent.2, i64 10 - %14 = load i8, ptr %arrayidx.i75, align 1 + %arrayidx.i74 = getelementptr i8, ptr %parent.2, i64 10 + %14 = load i8, ptr %arrayidx.i74, align 1 %conv35 = zext i8 %14 to i64 %cmp36.not.not = icmp ult i64 %pos.2, %conv35 br i1 %cmp36.not.not, label %do.body.backedge, label %do.body37 @@ -114397,31 +114394,31 @@ do.body.backedge: ; preds = %_ZN4absl18container do.body37: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit68, %if.end46 %15 = phi i8 [ %18, %if.end46 ], [ %14, %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit68 ] %parent.3 = phi ptr [ %17, %if.end46 ], [ %parent.2, %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit68 ] - %add.ptr.i.i.i76 = getelementptr i8, ptr %parent.3, i64 8 - %16 = load i8, ptr %add.ptr.i.i.i76, align 1 + %add.ptr.i.i.i75 = getelementptr i8, ptr %parent.3, i64 8 + %16 = load i8, ptr %add.ptr.i.i.i75, align 1 %17 = load ptr, ptr %parent.3, align 8 - %add.ptr.i.i.i.i78 = getelementptr inbounds i8, ptr %parent.3, i64 16 - %conv3.i80 = zext i8 %15 to i64 - %arrayidx.i6.i81 = getelementptr inbounds %"union.absl::container_internal::map_slot_type.1192", ptr %add.ptr.i.i.i.i78, i64 %conv3.i80 - %cmp.not7.i82 = icmp eq i8 %15, 0 - br i1 %cmp.not7.i82, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit88, label %for.body.i83 - -for.body.i83: ; preds = %do.body37, %for.body.i83 - %s.08.i84 = phi ptr [ %incdec.ptr.i86, %for.body.i83 ], [ %add.ptr.i.i.i.i78, %do.body37 ] - %second.i.i.i.i.i.i85 = getelementptr inbounds i8, ptr %s.08.i84, i64 16 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i.i.i.i.i85) #24 - %incdec.ptr.i86 = getelementptr inbounds i8, ptr %s.08.i84, i64 48 - %cmp.not.i87 = icmp eq ptr %incdec.ptr.i86, %arrayidx.i6.i81 - br i1 %cmp.not.i87, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit88, label %for.body.i83, !llvm.loop !1851 - -_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit88: ; preds = %for.body.i83, %do.body37 + %add.ptr.i.i.i.i77 = getelementptr inbounds i8, ptr %parent.3, i64 16 + %conv3.i79 = zext i8 %15 to i64 + %arrayidx.i6.i80 = getelementptr inbounds %"union.absl::container_internal::map_slot_type.1192", ptr %add.ptr.i.i.i.i77, i64 %conv3.i79 + %cmp.not7.i81 = icmp eq i8 %15, 0 + br i1 %cmp.not7.i81, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit87, label %for.body.i82 + +for.body.i82: ; preds = %do.body37, %for.body.i82 + %s.08.i83 = phi ptr [ %incdec.ptr.i85, %for.body.i82 ], [ %add.ptr.i.i.i.i77, %do.body37 ] + %second.i.i.i.i.i.i84 = getelementptr inbounds i8, ptr %s.08.i83, i64 16 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i.i.i.i.i84) #24 + %incdec.ptr.i85 = getelementptr inbounds i8, ptr %s.08.i83, i64 48 + %cmp.not.i86 = icmp eq ptr %incdec.ptr.i85, %arrayidx.i6.i80 + br i1 %cmp.not.i86, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit87, label %for.body.i82, !llvm.loop !1851 + +_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit87: ; preds = %for.body.i82, %do.body37 tail call void @_ZdlPv(ptr noundef %parent.3) #25 %cmp44 = icmp eq ptr %17, %2 br i1 %cmp44, label %return, label %if.end46 -if.end46: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit88 - %arrayidx.i89 = getelementptr i8, ptr %17, i64 10 - %18 = load i8, ptr %arrayidx.i89, align 1 +if.end46: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit87 + %arrayidx.i88 = getelementptr i8, ptr %17, i64 10 + %18 = load i8, ptr %arrayidx.i88, align 1 %cmp51.not = icmp ult i8 %16, %18 br i1 %cmp51.not, label %do.end52, label %do.body37, !llvm.loop !1855 @@ -114433,7 +114430,7 @@ return.sink.split: ; preds = %for.body.i, %if.end tail call void @_ZdlPv(ptr noundef %node) #25 br label %return -return: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit88, %return.sink.split +return: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit87, %return.sink.split ret void } @@ -117283,9 +117280,8 @@ if.then12: ; preds = %if.then9 %11 = tail call i8 @llvm.umin.i8(i8 %10, i8 5) %conv.i.i = zext nneg i8 %11 to i64 %mul.i.i.i.i.i = mul nuw nsw i64 %conv.i.i, 48 - %add.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %add.i.i.i.i.i, 1008 - %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #26 + %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 16 + %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.i.i.i.i) #26 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 store i8 0, ptr %add.ptr.i.i.i.i.i.i5, align 1 @@ -117672,8 +117668,8 @@ while.body.preheader: ; preds = %if.end br label %while.body while.body: ; preds = %while.body.preheader, %while.body - %node.addr.093 = phi ptr [ %3, %while.body ], [ %node, %while.body.preheader ] - %add.ptr.i.i.i.i48 = getelementptr inbounds i8, ptr %node.addr.093, i64 256 + %node.addr.092 = phi ptr [ %3, %while.body ], [ %node, %while.body.preheader ] + %add.ptr.i.i.i.i48 = getelementptr inbounds i8, ptr %node.addr.092, i64 256 %3 = load ptr, ptr %add.ptr.i.i.i.i48, align 8 %arrayidx.i.i47 = getelementptr i8, ptr %3, i64 11 %4 = load i8, ptr %arrayidx.i.i47, align 1 @@ -117699,8 +117695,8 @@ do.body: ; preds = %do.body.backedge, % br i1 %cmp.i.not.i52, label %while.body22, label %if.end28 while.body22: ; preds = %do.body, %while.body22 - %node.addr.296 = phi ptr [ %9, %while.body22 ], [ %7, %do.body ] - %add.ptr.i.i.i.i55 = getelementptr inbounds i8, ptr %node.addr.296, i64 256 + %node.addr.295 = phi ptr [ %9, %while.body22 ], [ %7, %do.body ] + %add.ptr.i.i.i.i55 = getelementptr inbounds i8, ptr %node.addr.295, i64 256 %9 = load ptr, ptr %add.ptr.i.i.i.i55, align 8 %arrayidx.i.i53 = getelementptr i8, ptr %9, i64 11 %10 = load i8, ptr %arrayidx.i.i53, align 1 @@ -117735,8 +117731,8 @@ for.body.i63: ; preds = %if.end28, %for.body _ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit67: ; preds = %for.body.i63, %if.end28 tail call void @_ZdlPv(ptr noundef %node.addr.1) #25 - %arrayidx.i74 = getelementptr i8, ptr %parent.2, i64 10 - %14 = load i8, ptr %arrayidx.i74, align 1 + %arrayidx.i73 = getelementptr i8, ptr %parent.2, i64 10 + %14 = load i8, ptr %arrayidx.i73, align 1 %conv35 = zext i8 %14 to i64 %cmp36.not.not = icmp ult i64 %pos.2, %conv35 br i1 %cmp36.not.not, label %do.body.backedge, label %do.body37 @@ -117750,30 +117746,30 @@ do.body.backedge: ; preds = %_ZN4absl18container do.body37: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit67, %if.end46 %15 = phi i8 [ %18, %if.end46 ], [ %14, %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit67 ] %parent.3 = phi ptr [ %17, %if.end46 ], [ %parent.2, %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit67 ] - %add.ptr.i.i.i75 = getelementptr i8, ptr %parent.3, i64 8 - %16 = load i8, ptr %add.ptr.i.i.i75, align 1 + %add.ptr.i.i.i74 = getelementptr i8, ptr %parent.3, i64 8 + %16 = load i8, ptr %add.ptr.i.i.i74, align 1 %17 = load ptr, ptr %parent.3, align 8 - %add.ptr.i.i.i.i77 = getelementptr inbounds i8, ptr %parent.3, i64 16 - %conv3.i79 = zext i8 %15 to i64 - %arrayidx.i6.i80 = getelementptr inbounds %"union.absl::container_internal::map_slot_type.1253", ptr %add.ptr.i.i.i.i77, i64 %conv3.i79 - %cmp.not7.i81 = icmp eq i8 %15, 0 - br i1 %cmp.not7.i81, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit86, label %for.body.i82 + %add.ptr.i.i.i.i76 = getelementptr inbounds i8, ptr %parent.3, i64 16 + %conv3.i78 = zext i8 %15 to i64 + %arrayidx.i6.i79 = getelementptr inbounds %"union.absl::container_internal::map_slot_type.1253", ptr %add.ptr.i.i.i.i76, i64 %conv3.i78 + %cmp.not7.i80 = icmp eq i8 %15, 0 + br i1 %cmp.not7.i80, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit85, label %for.body.i81 -for.body.i82: ; preds = %do.body37, %for.body.i82 - %s.08.i83 = phi ptr [ %incdec.ptr.i84, %for.body.i82 ], [ %add.ptr.i.i.i.i77, %do.body37 ] - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %s.08.i83) #24 - %incdec.ptr.i84 = getelementptr inbounds i8, ptr %s.08.i83, i64 48 - %cmp.not.i85 = icmp eq ptr %incdec.ptr.i84, %arrayidx.i6.i80 - br i1 %cmp.not.i85, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit86, label %for.body.i82, !llvm.loop !1893 +for.body.i81: ; preds = %do.body37, %for.body.i81 + %s.08.i82 = phi ptr [ %incdec.ptr.i83, %for.body.i81 ], [ %add.ptr.i.i.i.i76, %do.body37 ] + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %s.08.i82) #24 + %incdec.ptr.i83 = getelementptr inbounds i8, ptr %s.08.i82, i64 48 + %cmp.not.i84 = icmp eq ptr %incdec.ptr.i83, %arrayidx.i6.i79 + br i1 %cmp.not.i84, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit85, label %for.body.i81, !llvm.loop !1893 -_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit86: ; preds = %for.body.i82, %do.body37 +_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit85: ; preds = %for.body.i81, %do.body37 tail call void @_ZdlPv(ptr noundef %parent.3) #25 %cmp44 = icmp eq ptr %17, %2 br i1 %cmp44, label %return, label %if.end46 -if.end46: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit86 - %arrayidx.i87 = getelementptr i8, ptr %17, i64 10 - %18 = load i8, ptr %arrayidx.i87, align 1 +if.end46: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit85 + %arrayidx.i86 = getelementptr i8, ptr %17, i64 10 + %18 = load i8, ptr %arrayidx.i86, align 1 %cmp51.not = icmp ult i8 %16, %18 br i1 %cmp51.not, label %do.end52, label %do.body37, !llvm.loop !1897 @@ -117785,7 +117781,7 @@ return.sink.split: ; preds = %for.body.i, %if.end tail call void @_ZdlPv(ptr noundef %node) #25 br label %return -return: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit86, %return.sink.split +return: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb0EEEE15value_destroy_nEhhPSG_.exit85, %return.sink.split ret void } @@ -127266,9 +127262,8 @@ if.then12: ; preds = %if.then9 %11 = tail call i8 @llvm.umin.i8(i8 %10, i8 5) %conv.i.i = zext nneg i8 %11 to i64 %mul.i.i.i.i.i = mul nuw nsw i64 %conv.i.i, 48 - %add.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %add.i.i.i.i.i, 1008 - %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #26 + %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 16 + %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.i.i.i.i) #26 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 store i8 0, ptr %add.ptr.i.i.i.i.i.i5, align 1 @@ -127656,8 +127651,8 @@ while.body.preheader: ; preds = %if.end br label %while.body while.body: ; preds = %while.body.preheader, %while.body - %node.addr.095 = phi ptr [ %3, %while.body ], [ %node, %while.body.preheader ] - %add.ptr.i.i.i.i48 = getelementptr inbounds i8, ptr %node.addr.095, i64 256 + %node.addr.094 = phi ptr [ %3, %while.body ], [ %node, %while.body.preheader ] + %add.ptr.i.i.i.i48 = getelementptr inbounds i8, ptr %node.addr.094, i64 256 %3 = load ptr, ptr %add.ptr.i.i.i.i48, align 8 %arrayidx.i.i47 = getelementptr i8, ptr %3, i64 11 %4 = load i8, ptr %arrayidx.i.i47, align 1 @@ -127683,8 +127678,8 @@ do.body: ; preds = %do.body.backedge, % br i1 %cmp.i.not.i52, label %while.body22, label %if.end28 while.body22: ; preds = %do.body, %while.body22 - %node.addr.298 = phi ptr [ %9, %while.body22 ], [ %7, %do.body ] - %add.ptr.i.i.i.i55 = getelementptr inbounds i8, ptr %node.addr.298, i64 256 + %node.addr.297 = phi ptr [ %9, %while.body22 ], [ %7, %do.body ] + %add.ptr.i.i.i.i55 = getelementptr inbounds i8, ptr %node.addr.297, i64 256 %9 = load ptr, ptr %add.ptr.i.i.i.i55, align 8 %arrayidx.i.i53 = getelementptr i8, ptr %9, i64 11 %10 = load i8, ptr %arrayidx.i.i53, align 1 @@ -127720,8 +127715,8 @@ for.body.i63: ; preds = %if.end28, %for.body _ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit68: ; preds = %for.body.i63, %if.end28 tail call void @_ZdlPv(ptr noundef %node.addr.1) #25 - %arrayidx.i75 = getelementptr i8, ptr %parent.2, i64 10 - %14 = load i8, ptr %arrayidx.i75, align 1 + %arrayidx.i74 = getelementptr i8, ptr %parent.2, i64 10 + %14 = load i8, ptr %arrayidx.i74, align 1 %conv35 = zext i8 %14 to i64 %cmp36.not.not = icmp ult i64 %pos.2, %conv35 br i1 %cmp36.not.not, label %do.body.backedge, label %do.body37 @@ -127735,31 +127730,31 @@ do.body.backedge: ; preds = %_ZN4absl18container do.body37: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit68, %if.end46 %15 = phi i8 [ %18, %if.end46 ], [ %14, %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit68 ] %parent.3 = phi ptr [ %17, %if.end46 ], [ %parent.2, %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit68 ] - %add.ptr.i.i.i76 = getelementptr i8, ptr %parent.3, i64 8 - %16 = load i8, ptr %add.ptr.i.i.i76, align 1 + %add.ptr.i.i.i75 = getelementptr i8, ptr %parent.3, i64 8 + %16 = load i8, ptr %add.ptr.i.i.i75, align 1 %17 = load ptr, ptr %parent.3, align 8 - %add.ptr.i.i.i.i78 = getelementptr inbounds i8, ptr %parent.3, i64 16 - %conv3.i80 = zext i8 %15 to i64 - %arrayidx.i6.i81 = getelementptr inbounds %"union.absl::container_internal::map_slot_type.1192", ptr %add.ptr.i.i.i.i78, i64 %conv3.i80 - %cmp.not7.i82 = icmp eq i8 %15, 0 - br i1 %cmp.not7.i82, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit88, label %for.body.i83 - -for.body.i83: ; preds = %do.body37, %for.body.i83 - %s.08.i84 = phi ptr [ %incdec.ptr.i86, %for.body.i83 ], [ %add.ptr.i.i.i.i78, %do.body37 ] - %second.i.i.i.i.i.i85 = getelementptr inbounds i8, ptr %s.08.i84, i64 16 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i.i.i.i.i85) #24 - %incdec.ptr.i86 = getelementptr inbounds i8, ptr %s.08.i84, i64 48 - %cmp.not.i87 = icmp eq ptr %incdec.ptr.i86, %arrayidx.i6.i81 - br i1 %cmp.not.i87, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit88, label %for.body.i83, !llvm.loop !2017 - -_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit88: ; preds = %for.body.i83, %do.body37 + %add.ptr.i.i.i.i77 = getelementptr inbounds i8, ptr %parent.3, i64 16 + %conv3.i79 = zext i8 %15 to i64 + %arrayidx.i6.i80 = getelementptr inbounds %"union.absl::container_internal::map_slot_type.1192", ptr %add.ptr.i.i.i.i77, i64 %conv3.i79 + %cmp.not7.i81 = icmp eq i8 %15, 0 + br i1 %cmp.not7.i81, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit87, label %for.body.i82 + +for.body.i82: ; preds = %do.body37, %for.body.i82 + %s.08.i83 = phi ptr [ %incdec.ptr.i85, %for.body.i82 ], [ %add.ptr.i.i.i.i77, %do.body37 ] + %second.i.i.i.i.i.i84 = getelementptr inbounds i8, ptr %s.08.i83, i64 16 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i.i.i.i.i84) #24 + %incdec.ptr.i85 = getelementptr inbounds i8, ptr %s.08.i83, i64 48 + %cmp.not.i86 = icmp eq ptr %incdec.ptr.i85, %arrayidx.i6.i80 + br i1 %cmp.not.i86, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit87, label %for.body.i82, !llvm.loop !2017 + +_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit87: ; preds = %for.body.i82, %do.body37 tail call void @_ZdlPv(ptr noundef %parent.3) #25 %cmp44 = icmp eq ptr %17, %2 br i1 %cmp44, label %return, label %if.end46 -if.end46: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit88 - %arrayidx.i89 = getelementptr i8, ptr %17, i64 10 - %18 = load i8, ptr %arrayidx.i89, align 1 +if.end46: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit87 + %arrayidx.i88 = getelementptr i8, ptr %17, i64 10 + %18 = load i8, ptr %arrayidx.i88, align 1 %cmp51.not = icmp ult i8 %16, %18 br i1 %cmp51.not, label %do.end52, label %do.body37, !llvm.loop !2021 @@ -127771,7 +127766,7 @@ return.sink.split: ; preds = %for.body.i, %if.end tail call void @_ZdlPv(ptr noundef %node) #25 br label %return -return: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit88, %return.sink.split +return: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsISt17basic_string_viewIcSt11char_traitsIcEENSt7__cxx1112basic_stringIcS5_SaIcEEESt4lessIS6_ESaISt4pairIKS6_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit87, %return.sink.split ret void } @@ -130665,9 +130660,8 @@ if.then12: ; preds = %if.then9 %11 = tail call i8 @llvm.umin.i8(i8 %10, i8 5) %conv.i.i = zext nneg i8 %11 to i64 %mul.i.i.i.i.i = mul nuw nsw i64 %conv.i.i, 48 - %add.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %add.i.i.i.i.i, 1008 - %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #26 + %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 16 + %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.i.i.i.i) #26 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 store i8 0, ptr %add.ptr.i.i.i.i.i.i5, align 1 @@ -131054,8 +131048,8 @@ while.body.preheader: ; preds = %if.end br label %while.body while.body: ; preds = %while.body.preheader, %while.body - %node.addr.093 = phi ptr [ %3, %while.body ], [ %node, %while.body.preheader ] - %add.ptr.i.i.i.i48 = getelementptr inbounds i8, ptr %node.addr.093, i64 256 + %node.addr.092 = phi ptr [ %3, %while.body ], [ %node, %while.body.preheader ] + %add.ptr.i.i.i.i48 = getelementptr inbounds i8, ptr %node.addr.092, i64 256 %3 = load ptr, ptr %add.ptr.i.i.i.i48, align 8 %arrayidx.i.i47 = getelementptr i8, ptr %3, i64 11 %4 = load i8, ptr %arrayidx.i.i47, align 1 @@ -131081,8 +131075,8 @@ do.body: ; preds = %do.body.backedge, % br i1 %cmp.i.not.i52, label %while.body22, label %if.end28 while.body22: ; preds = %do.body, %while.body22 - %node.addr.296 = phi ptr [ %9, %while.body22 ], [ %7, %do.body ] - %add.ptr.i.i.i.i55 = getelementptr inbounds i8, ptr %node.addr.296, i64 256 + %node.addr.295 = phi ptr [ %9, %while.body22 ], [ %7, %do.body ] + %add.ptr.i.i.i.i55 = getelementptr inbounds i8, ptr %node.addr.295, i64 256 %9 = load ptr, ptr %add.ptr.i.i.i.i55, align 8 %arrayidx.i.i53 = getelementptr i8, ptr %9, i64 11 %10 = load i8, ptr %arrayidx.i.i53, align 1 @@ -131117,8 +131111,8 @@ for.body.i63: ; preds = %if.end28, %for.body _ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit67: ; preds = %for.body.i63, %if.end28 tail call void @_ZdlPv(ptr noundef %node.addr.1) #25 - %arrayidx.i74 = getelementptr i8, ptr %parent.2, i64 10 - %14 = load i8, ptr %arrayidx.i74, align 1 + %arrayidx.i73 = getelementptr i8, ptr %parent.2, i64 10 + %14 = load i8, ptr %arrayidx.i73, align 1 %conv35 = zext i8 %14 to i64 %cmp36.not.not = icmp ult i64 %pos.2, %conv35 br i1 %cmp36.not.not, label %do.body.backedge, label %do.body37 @@ -131132,30 +131126,30 @@ do.body.backedge: ; preds = %_ZN4absl18container do.body37: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit67, %if.end46 %15 = phi i8 [ %18, %if.end46 ], [ %14, %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit67 ] %parent.3 = phi ptr [ %17, %if.end46 ], [ %parent.2, %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit67 ] - %add.ptr.i.i.i75 = getelementptr i8, ptr %parent.3, i64 8 - %16 = load i8, ptr %add.ptr.i.i.i75, align 1 + %add.ptr.i.i.i74 = getelementptr i8, ptr %parent.3, i64 8 + %16 = load i8, ptr %add.ptr.i.i.i74, align 1 %17 = load ptr, ptr %parent.3, align 8 - %add.ptr.i.i.i.i77 = getelementptr inbounds i8, ptr %parent.3, i64 16 - %conv3.i79 = zext i8 %15 to i64 - %arrayidx.i6.i80 = getelementptr inbounds %"union.absl::container_internal::map_slot_type.1253", ptr %add.ptr.i.i.i.i77, i64 %conv3.i79 - %cmp.not7.i81 = icmp eq i8 %15, 0 - br i1 %cmp.not7.i81, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit86, label %for.body.i82 + %add.ptr.i.i.i.i76 = getelementptr inbounds i8, ptr %parent.3, i64 16 + %conv3.i78 = zext i8 %15 to i64 + %arrayidx.i6.i79 = getelementptr inbounds %"union.absl::container_internal::map_slot_type.1253", ptr %add.ptr.i.i.i.i76, i64 %conv3.i78 + %cmp.not7.i80 = icmp eq i8 %15, 0 + br i1 %cmp.not7.i80, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit85, label %for.body.i81 -for.body.i82: ; preds = %do.body37, %for.body.i82 - %s.08.i83 = phi ptr [ %incdec.ptr.i84, %for.body.i82 ], [ %add.ptr.i.i.i.i77, %do.body37 ] - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %s.08.i83) #24 - %incdec.ptr.i84 = getelementptr inbounds i8, ptr %s.08.i83, i64 48 - %cmp.not.i85 = icmp eq ptr %incdec.ptr.i84, %arrayidx.i6.i80 - br i1 %cmp.not.i85, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit86, label %for.body.i82, !llvm.loop !2053 +for.body.i81: ; preds = %do.body37, %for.body.i81 + %s.08.i82 = phi ptr [ %incdec.ptr.i83, %for.body.i81 ], [ %add.ptr.i.i.i.i76, %do.body37 ] + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %s.08.i82) #24 + %incdec.ptr.i83 = getelementptr inbounds i8, ptr %s.08.i82, i64 48 + %cmp.not.i84 = icmp eq ptr %incdec.ptr.i83, %arrayidx.i6.i79 + br i1 %cmp.not.i84, label %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit85, label %for.body.i81, !llvm.loop !2053 -_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit86: ; preds = %for.body.i82, %do.body37 +_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit85: ; preds = %for.body.i81, %do.body37 tail call void @_ZdlPv(ptr noundef %parent.3) #25 %cmp44 = icmp eq ptr %17, %2 br i1 %cmp44, label %return, label %if.end46 -if.end46: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit86 - %arrayidx.i87 = getelementptr i8, ptr %17, i64 10 - %18 = load i8, ptr %arrayidx.i87, align 1 +if.end46: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit85 + %arrayidx.i86 = getelementptr i8, ptr %17, i64 10 + %18 = load i8, ptr %arrayidx.i86, align 1 %cmp51.not = icmp ult i8 %16, %18 br i1 %cmp51.not, label %do.end52, label %do.body37, !llvm.loop !2057 @@ -131167,7 +131161,7 @@ return.sink.split: ; preds = %for.body.i, %if.end tail call void @_ZdlPv(ptr noundef %node) #25 br label %return -return: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit86, %return.sink.split +return: ; preds = %_ZN4absl18container_internal10btree_nodeINS0_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt17basic_string_viewIcS6_ESt4lessIS8_ESaISt4pairIKS8_SA_EELi256ELb1EEEE15value_destroy_nEhhPSG_.exit85, %return.sink.split ret void } diff --git a/bench/actix-rs/optimized/2ltm6szalsytk9dh.ll b/bench/actix-rs/optimized/2ltm6szalsytk9dh.ll index 01c794a7b1c..db59e159910 100644 --- a/bench/actix-rs/optimized/2ltm6szalsytk9dh.ll +++ b/bench/actix-rs/optimized/2ltm6szalsytk9dh.ll @@ -580,16 +580,15 @@ define hidden void @"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$$u5b$a %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !alias.scope !87, !noundef !10 %11 = mul nsw i64 %10, 24 - %12 = add i64 %11, 23 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8fe78ee86ab2a44eE.llvm.1258706989952115916.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8fe78ee86ab2a44eE.llvm.1258706989952115916.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #18, !noalias !87 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #18, !noalias !87 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8fe78ee86ab2a44eE.llvm.1258706989952115916.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8fe78ee86ab2a44eE.llvm.1258706989952115916.exit": ; preds = %1, %4, %8, %15 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8fe78ee86ab2a44eE.llvm.1258706989952115916.exit": ; preds = %1, %4, %8, %14 ret void } @@ -5816,16 +5815,15 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !noundef !10 %11 = mul nsw i64 %10, 24 - %12 = add i64 %11, 23 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0462b954ab3c04d1E.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0462b954ab3c04d1E.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #18 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #18 br label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0462b954ab3c04d1E.exit" -"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0462b954ab3c04d1E.exit": ; preds = %15, %8, %1, %4 +"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0462b954ab3c04d1E.exit": ; preds = %14, %8, %1, %4 ret void } diff --git a/bench/actix-rs/optimized/520p8qtoxfmkvgyc.ll b/bench/actix-rs/optimized/520p8qtoxfmkvgyc.ll index 2db8badc71a..f8fa8f333b9 100644 --- a/bench/actix-rs/optimized/520p8qtoxfmkvgyc.ll +++ b/bench/actix-rs/optimized/520p8qtoxfmkvgyc.ll @@ -340,7 +340,7 @@ _ZN4core4hash11BuildHasher8hash_one17h839b4014e967008fE.exit.i.i.i.i: ; preds = "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h44944d555b126c70E.exit.backedge.i.i.i.i.i.i": ; preds = %110, %103, %.lr.ph.i.i.i.i.i.i %.not.i4.not.i.i.i.i.i.i = icmp eq i16 %89, 0 - %108 = add i16 %89, -1 + %108 = add i16 %89, -2 %109 = and i16 %108, %89 br i1 %.not.i4.not.i.i.i.i.i.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h44944d555b126c70E.exit._crit_edge.i.i.i.i.i.i", label %.lr.ph.i.i.i.i.i.i @@ -649,7 +649,7 @@ _ZN4core4hash11BuildHasher8hash_one17h839b4014e967008fE.exit.i.i.i.i: ; preds = "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h44944d555b126c70E.exit.backedge.i.i.i.i.i.i": ; preds = %110, %103, %.lr.ph.i.i.i.i.i.i %.not.i4.not.i.i.i.i.i.i = icmp eq i16 %89, 0 - %108 = add i16 %89, -1 + %108 = add i16 %89, -2 %109 = and i16 %108, %89 br i1 %.not.i4.not.i.i.i.i.i.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h44944d555b126c70E.exit._crit_edge.i.i.i.i.i.i", label %.lr.ph.i.i.i.i.i.i @@ -5449,7 +5449,7 @@ _ZN4core4hash11BuildHasher8hash_one17h839b4014e967008fE.exit: ; preds = %26, %36 "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h44944d555b126c70E.exit.backedge.i.i": ; preds = %81, %74, %.lr.ph.i.i %.not.i4.not.i.i = icmp eq i16 %60, 0 - %79 = add i16 %60, -1 + %79 = add i16 %60, -2 %80 = and i16 %79, %60 br i1 %.not.i4.not.i.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h44944d555b126c70E.exit._crit_edge.i.i", label %.lr.ph.i.i @@ -5602,7 +5602,7 @@ _ZN4core4hash11BuildHasher8hash_one17h839b4014e967008fE.exit: ; preds = %26, %36 "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h44944d555b126c70E.exit.backedge.i.i": ; preds = %81, %74, %.lr.ph.i.i %.not.i4.not.i.i = icmp eq i16 %60, 0 - %79 = add i16 %60, -1 + %79 = add i16 %60, -2 %80 = and i16 %79, %60 br i1 %.not.i4.not.i.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h44944d555b126c70E.exit._crit_edge.i.i", label %.lr.ph.i.i @@ -9983,7 +9983,7 @@ define hidden noundef align 8 ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h44944d555b126c70E.exit.backedge.i": ; preds = %39, %32, %.lr.ph.i %.not.i4.not.i = icmp eq i16 %18, 0 - %37 = add i16 %18, -1 + %37 = add i16 %18, -2 %38 = and i16 %37, %18 br i1 %.not.i4.not.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h44944d555b126c70E.exit._crit_edge.i", label %.lr.ph.i @@ -10071,7 +10071,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h1f41 "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h44944d555b126c70E.exit.backedge": ; preds = %32, %39, %.lr.ph %.not.i4.not = icmp eq i16 %18, 0 - %37 = add i16 %18, -1 + %37 = add i16 %18, -2 %38 = and i16 %37, %18 br i1 %.not.i4.not, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h44944d555b126c70E.exit._crit_edge", label %.lr.ph @@ -11375,7 +11375,7 @@ define void @_ZN10actix_http6header3map9HeaderMap6append17heeb61e8216d45b51E(ptr "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf3412c0415337fd1E.exit.backedge.i.i": ; preds = %.noexc13.i, %85, %.lr.ph.i.i %.not.i4.not.i.i = icmp eq i16 %71, 0 - %90 = add i16 %71, -1 + %90 = add i16 %71, -2 %91 = and i16 %90, %71 br i1 %.not.i4.not.i.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf3412c0415337fd1E.exit._crit_edge.i.i", label %.lr.ph.i.i diff --git a/bench/actix-rs/optimized/x5wdyzwp9hx5e8t.ll b/bench/actix-rs/optimized/x5wdyzwp9hx5e8t.ll index 4af7fc93134..b40818aa549 100644 --- a/bench/actix-rs/optimized/x5wdyzwp9hx5e8t.ll +++ b/bench/actix-rs/optimized/x5wdyzwp9hx5e8t.ll @@ -2396,16 +2396,15 @@ define hidden void @"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$$u5b$a %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !alias.scope !462, !noundef !5 %11 = mul nsw i64 %10, 24 - %12 = add i64 %11, 23 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h18c555bd802e239eE.llvm.11632439649900387884.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h18c555bd802e239eE.llvm.11632439649900387884.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #31, !noalias !462 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #31, !noalias !462 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h18c555bd802e239eE.llvm.11632439649900387884.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h18c555bd802e239eE.llvm.11632439649900387884.exit": ; preds = %1, %4, %8, %15 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h18c555bd802e239eE.llvm.11632439649900387884.exit": ; preds = %1, %4, %8, %14 ret void } @@ -18683,93 +18682,92 @@ define hidden void @"_ZN4core3ptr51drop_in_place$LT$actix_web..scope..ScopeFacto 24: ; preds = %"_ZN4core3ptr388drop_in_place$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$17h2533ef7ecf4bda3bE.exit.i.i" %25 = mul nsw i64 %.val1, 200 - %26 = add i64 %25, 23 - %27 = and i64 %26, -8 - %28 = icmp eq i64 %27, 0 - br i1 %28, label %"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit", label %29 + %26 = add i64 %25, 16 + %27 = icmp eq i64 %26, 0 + br i1 %27, label %"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit", label %28 -29: ; preds = %24 - tail call void @__rust_dealloc(ptr noundef nonnull %.val, i64 noundef %27, i64 noundef 8) #31 +28: ; preds = %24 + tail call void @__rust_dealloc(ptr noundef nonnull %.val, i64 noundef %26, i64 noundef 8) #31 br label %"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit" .body: ; preds = %12 - %30 = getelementptr inbounds i8, ptr %0, i64 16 - invoke void @"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %30) #32 - to label %common.resume unwind label %62 + %29 = getelementptr inbounds i8, ptr %0, i64 16 + invoke void @"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %29) #32 + to label %common.resume unwind label %61 -"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit": ; preds = %29, %24, %"_ZN4core3ptr388drop_in_place$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$17h2533ef7ecf4bda3bE.exit.i.i", %1 - %31 = getelementptr inbounds i8, ptr %0, i64 16 +"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit": ; preds = %28, %24, %"_ZN4core3ptr388drop_in_place$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$17h2533ef7ecf4bda3bE.exit.i.i", %1 + %30 = getelementptr inbounds i8, ptr %0, i64 16 tail call void @llvm.experimental.noalias.scope.decl(metadata !6632) tail call void @llvm.experimental.noalias.scope.decl(metadata !6635) - %32 = load ptr, ptr %31, align 8, !alias.scope !6638, !nonnull !5, !noundef !5 - %33 = load i64, ptr %32, align 8, !noalias !6638, !noundef !5 - %34 = add i64 %33, -1 - store i64 %34, ptr %32, align 8, !noalias !6638 - %35 = icmp eq i64 %34, 0 - br i1 %35, label %36, label %"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E.exit" + %31 = load ptr, ptr %30, align 8, !alias.scope !6638, !nonnull !5, !noundef !5 + %32 = load i64, ptr %31, align 8, !noalias !6638, !noundef !5 + %33 = add i64 %32, -1 + store i64 %33, ptr %31, align 8, !noalias !6638 + %34 = icmp eq i64 %33, 0 + br i1 %34, label %35, label %"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E.exit" -36: ; preds = %"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit" - %37 = getelementptr inbounds i8, ptr %32, i64 16 +35: ; preds = %"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit" + %36 = getelementptr inbounds i8, ptr %31, i64 16 tail call void @llvm.experimental.noalias.scope.decl(metadata !6639) tail call void @llvm.experimental.noalias.scope.decl(metadata !6642) - %38 = load ptr, ptr %37, align 8, !alias.scope !6645, !noalias !6638, !noundef !5 - %39 = getelementptr inbounds i8, ptr %32, i64 24 - %40 = load ptr, ptr %39, align 8, !alias.scope !6645, !noalias !6638, !nonnull !5, !align !35, !noundef !5 - %41 = load ptr, ptr %40, align 8, !invariant.load !5, !noalias !6646, !nonnull !5 - invoke void %41(ptr noundef nonnull align 1 %38) - to label %50 unwind label %42, !noalias !6646 - -42: ; preds = %36 - %43 = landingpad { ptr, i32 } + %37 = load ptr, ptr %36, align 8, !alias.scope !6645, !noalias !6638, !noundef !5 + %38 = getelementptr inbounds i8, ptr %31, i64 24 + %39 = load ptr, ptr %38, align 8, !alias.scope !6645, !noalias !6638, !nonnull !5, !align !35, !noundef !5 + %40 = load ptr, ptr %39, align 8, !invariant.load !5, !noalias !6646, !nonnull !5 + invoke void %40(ptr noundef nonnull align 1 %37) + to label %49 unwind label %41, !noalias !6646 + +41: ; preds = %35 + %42 = landingpad { ptr, i32 } cleanup - %44 = getelementptr inbounds i8, ptr %40, i64 8 - %45 = load i64, ptr %44, align 8, !range !171, !invariant.load !5, !noalias !6647 - %46 = getelementptr inbounds i8, ptr %40, i64 16 - %47 = load i64, ptr %46, align 8, !range !175, !invariant.load !5, !noalias !6647 - %48 = icmp ult i64 %47, -9223372036854775807 - tail call void @llvm.assume(i1 %48) - %49 = icmp eq i64 %45, 0 - br i1 %49, label %common.resume, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i" + %43 = getelementptr inbounds i8, ptr %39, i64 8 + %44 = load i64, ptr %43, align 8, !range !171, !invariant.load !5, !noalias !6647 + %45 = getelementptr inbounds i8, ptr %39, i64 16 + %46 = load i64, ptr %45, align 8, !range !175, !invariant.load !5, !noalias !6647 + %47 = icmp ult i64 %46, -9223372036854775807 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %44, 0 + br i1 %48, label %common.resume, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i": ; preds = %42 - tail call void @__rust_dealloc(ptr noundef nonnull %38, i64 noundef %45, i64 noundef %47) #31, !noalias !6647 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i": ; preds = %41 + tail call void @__rust_dealloc(ptr noundef nonnull %37, i64 noundef %44, i64 noundef %46) #31, !noalias !6647 br label %common.resume -50: ; preds = %36 - %51 = getelementptr inbounds i8, ptr %40, i64 8 - %52 = load i64, ptr %51, align 8, !range !171, !invariant.load !5, !noalias !6650 - %53 = getelementptr inbounds i8, ptr %40, i64 16 - %54 = load i64, ptr %53, align 8, !range !175, !invariant.load !5, !noalias !6650 - %55 = icmp ult i64 %54, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp eq i64 %52, 0 - br i1 %56, label %"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i1.i.i.i.i" - -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i1.i.i.i.i": ; preds = %50 - tail call void @__rust_dealloc(ptr noundef nonnull %38, i64 noundef %52, i64 noundef %54) #31, !noalias !6650 +49: ; preds = %35 + %50 = getelementptr inbounds i8, ptr %39, i64 8 + %51 = load i64, ptr %50, align 8, !range !171, !invariant.load !5, !noalias !6650 + %52 = getelementptr inbounds i8, ptr %39, i64 16 + %53 = load i64, ptr %52, align 8, !range !175, !invariant.load !5, !noalias !6650 + %54 = icmp ult i64 %53, -9223372036854775807 + tail call void @llvm.assume(i1 %54) + %55 = icmp eq i64 %51, 0 + br i1 %55, label %"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i1.i.i.i.i" + +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i1.i.i.i.i": ; preds = %49 + tail call void @__rust_dealloc(ptr noundef nonnull %37, i64 noundef %51, i64 noundef %53) #31, !noalias !6650 br label %"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i" -common.resume: ; preds = %.body, %42, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i" - %common.resume.op = phi { ptr, i32 } [ %43, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i" ], [ %43, %42 ], [ %15, %.body ] +common.resume: ; preds = %.body, %41, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i" + %common.resume.op = phi { ptr, i32 } [ %42, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i" ], [ %42, %41 ], [ %15, %.body ] resume { ptr, i32 } %common.resume.op -"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i1.i.i.i.i", %50 - %57 = getelementptr inbounds i8, ptr %32, i64 8 - %58 = load i64, ptr %57, align 8, !noalias !6638, !noundef !5 - %59 = add i64 %58, -1 - store i64 %59, ptr %57, align 8, !noalias !6638 - %60 = icmp eq i64 %59, 0 - br i1 %60, label %61, label %"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E.exit" +"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i1.i.i.i.i", %49 + %56 = getelementptr inbounds i8, ptr %31, i64 8 + %57 = load i64, ptr %56, align 8, !noalias !6638, !noundef !5 + %58 = add i64 %57, -1 + store i64 %58, ptr %56, align 8, !noalias !6638 + %59 = icmp eq i64 %58, 0 + br i1 %59, label %60, label %"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E.exit" -61: ; preds = %"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i" - tail call void @__rust_dealloc(ptr noundef nonnull %32, i64 noundef 32, i64 noundef 8) #31, !noalias !6638 +60: ; preds = %"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i" + tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef 32, i64 noundef 8) #31, !noalias !6638 br label %"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E.exit" -"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E.exit": ; preds = %"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit", %"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i", %61 +"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E.exit": ; preds = %"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit", %"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i", %60 ret void -62: ; preds = %.body - %63 = landingpad { ptr, i32 } +61: ; preds = %.body + %62 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #33 unreachable @@ -25011,93 +25009,92 @@ define hidden void @"_ZN4core3ptr62drop_in_place$LT$actix_web..app_service..AppR 24: ; preds = %"_ZN4core3ptr388drop_in_place$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$17h2533ef7ecf4bda3bE.exit.i.i" %25 = mul nsw i64 %.val1, 200 - %26 = add i64 %25, 23 - %27 = and i64 %26, -8 - %28 = icmp eq i64 %27, 0 - br i1 %28, label %"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit", label %29 + %26 = add i64 %25, 16 + %27 = icmp eq i64 %26, 0 + br i1 %27, label %"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit", label %28 -29: ; preds = %24 - tail call void @__rust_dealloc(ptr noundef nonnull %.val, i64 noundef %27, i64 noundef 8) #31 +28: ; preds = %24 + tail call void @__rust_dealloc(ptr noundef nonnull %.val, i64 noundef %26, i64 noundef 8) #31 br label %"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit" .body: ; preds = %12 - %30 = getelementptr inbounds i8, ptr %0, i64 16 - invoke void @"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %30) #32 - to label %common.resume unwind label %62 + %29 = getelementptr inbounds i8, ptr %0, i64 16 + invoke void @"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %29) #32 + to label %common.resume unwind label %61 -"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit": ; preds = %29, %24, %"_ZN4core3ptr388drop_in_place$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$17h2533ef7ecf4bda3bE.exit.i.i", %1 - %31 = getelementptr inbounds i8, ptr %0, i64 16 +"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit": ; preds = %28, %24, %"_ZN4core3ptr388drop_in_place$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$17h2533ef7ecf4bda3bE.exit.i.i", %1 + %30 = getelementptr inbounds i8, ptr %0, i64 16 tail call void @llvm.experimental.noalias.scope.decl(metadata !9144) tail call void @llvm.experimental.noalias.scope.decl(metadata !9147) - %32 = load ptr, ptr %31, align 8, !alias.scope !9150, !nonnull !5, !noundef !5 - %33 = load i64, ptr %32, align 8, !noalias !9150, !noundef !5 - %34 = add i64 %33, -1 - store i64 %34, ptr %32, align 8, !noalias !9150 - %35 = icmp eq i64 %34, 0 - br i1 %35, label %36, label %"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E.exit" + %31 = load ptr, ptr %30, align 8, !alias.scope !9150, !nonnull !5, !noundef !5 + %32 = load i64, ptr %31, align 8, !noalias !9150, !noundef !5 + %33 = add i64 %32, -1 + store i64 %33, ptr %31, align 8, !noalias !9150 + %34 = icmp eq i64 %33, 0 + br i1 %34, label %35, label %"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E.exit" -36: ; preds = %"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit" - %37 = getelementptr inbounds i8, ptr %32, i64 16 +35: ; preds = %"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit" + %36 = getelementptr inbounds i8, ptr %31, i64 16 tail call void @llvm.experimental.noalias.scope.decl(metadata !9151) tail call void @llvm.experimental.noalias.scope.decl(metadata !9154) - %38 = load ptr, ptr %37, align 8, !alias.scope !9157, !noalias !9150, !noundef !5 - %39 = getelementptr inbounds i8, ptr %32, i64 24 - %40 = load ptr, ptr %39, align 8, !alias.scope !9157, !noalias !9150, !nonnull !5, !align !35, !noundef !5 - %41 = load ptr, ptr %40, align 8, !invariant.load !5, !noalias !9158, !nonnull !5 - invoke void %41(ptr noundef nonnull align 1 %38) - to label %50 unwind label %42, !noalias !9158 - -42: ; preds = %36 - %43 = landingpad { ptr, i32 } + %37 = load ptr, ptr %36, align 8, !alias.scope !9157, !noalias !9150, !noundef !5 + %38 = getelementptr inbounds i8, ptr %31, i64 24 + %39 = load ptr, ptr %38, align 8, !alias.scope !9157, !noalias !9150, !nonnull !5, !align !35, !noundef !5 + %40 = load ptr, ptr %39, align 8, !invariant.load !5, !noalias !9158, !nonnull !5 + invoke void %40(ptr noundef nonnull align 1 %37) + to label %49 unwind label %41, !noalias !9158 + +41: ; preds = %35 + %42 = landingpad { ptr, i32 } cleanup - %44 = getelementptr inbounds i8, ptr %40, i64 8 - %45 = load i64, ptr %44, align 8, !range !171, !invariant.load !5, !noalias !9159 - %46 = getelementptr inbounds i8, ptr %40, i64 16 - %47 = load i64, ptr %46, align 8, !range !175, !invariant.load !5, !noalias !9159 - %48 = icmp ult i64 %47, -9223372036854775807 - tail call void @llvm.assume(i1 %48) - %49 = icmp eq i64 %45, 0 - br i1 %49, label %common.resume, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i" + %43 = getelementptr inbounds i8, ptr %39, i64 8 + %44 = load i64, ptr %43, align 8, !range !171, !invariant.load !5, !noalias !9159 + %45 = getelementptr inbounds i8, ptr %39, i64 16 + %46 = load i64, ptr %45, align 8, !range !175, !invariant.load !5, !noalias !9159 + %47 = icmp ult i64 %46, -9223372036854775807 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %44, 0 + br i1 %48, label %common.resume, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i": ; preds = %42 - tail call void @__rust_dealloc(ptr noundef nonnull %38, i64 noundef %45, i64 noundef %47) #31, !noalias !9159 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i": ; preds = %41 + tail call void @__rust_dealloc(ptr noundef nonnull %37, i64 noundef %44, i64 noundef %46) #31, !noalias !9159 br label %common.resume -50: ; preds = %36 - %51 = getelementptr inbounds i8, ptr %40, i64 8 - %52 = load i64, ptr %51, align 8, !range !171, !invariant.load !5, !noalias !9162 - %53 = getelementptr inbounds i8, ptr %40, i64 16 - %54 = load i64, ptr %53, align 8, !range !175, !invariant.load !5, !noalias !9162 - %55 = icmp ult i64 %54, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp eq i64 %52, 0 - br i1 %56, label %"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i1.i.i.i.i" - -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i1.i.i.i.i": ; preds = %50 - tail call void @__rust_dealloc(ptr noundef nonnull %38, i64 noundef %52, i64 noundef %54) #31, !noalias !9162 +49: ; preds = %35 + %50 = getelementptr inbounds i8, ptr %39, i64 8 + %51 = load i64, ptr %50, align 8, !range !171, !invariant.load !5, !noalias !9162 + %52 = getelementptr inbounds i8, ptr %39, i64 16 + %53 = load i64, ptr %52, align 8, !range !175, !invariant.load !5, !noalias !9162 + %54 = icmp ult i64 %53, -9223372036854775807 + tail call void @llvm.assume(i1 %54) + %55 = icmp eq i64 %51, 0 + br i1 %55, label %"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i1.i.i.i.i" + +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i1.i.i.i.i": ; preds = %49 + tail call void @__rust_dealloc(ptr noundef nonnull %37, i64 noundef %51, i64 noundef %53) #31, !noalias !9162 br label %"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i" -common.resume: ; preds = %.body, %42, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i" - %common.resume.op = phi { ptr, i32 } [ %43, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i" ], [ %43, %42 ], [ %15, %.body ] +common.resume: ; preds = %.body, %41, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i" + %common.resume.op = phi { ptr, i32 } [ %42, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i.i.i.i.i" ], [ %42, %41 ], [ %15, %.body ] resume { ptr, i32 } %common.resume.op -"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i1.i.i.i.i", %50 - %57 = getelementptr inbounds i8, ptr %32, i64 8 - %58 = load i64, ptr %57, align 8, !noalias !9150, !noundef !5 - %59 = add i64 %58, -1 - store i64 %59, ptr %57, align 8, !noalias !9150 - %60 = icmp eq i64 %59, 0 - br i1 %60, label %61, label %"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E.exit" +"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.11632439649900387884.exit.i1.i.i.i.i", %49 + %56 = getelementptr inbounds i8, ptr %31, i64 8 + %57 = load i64, ptr %56, align 8, !noalias !9150, !noundef !5 + %58 = add i64 %57, -1 + store i64 %58, ptr %56, align 8, !noalias !9150 + %59 = icmp eq i64 %58, 0 + br i1 %59, label %60, label %"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E.exit" -61: ; preds = %"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i" - tail call void @__rust_dealloc(ptr noundef nonnull %32, i64 noundef 32, i64 noundef 8) #31, !noalias !9150 +60: ; preds = %"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i" + tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef 32, i64 noundef 8) #31, !noalias !9150 br label %"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E.exit" -"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E.exit": ; preds = %"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit", %"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i", %61 +"_ZN4core3ptr216drop_in_place$LT$alloc..rc..Rc$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$$GT$17hf455d38691dd9902E.exit": ; preds = %"_ZN4core3ptr409drop_in_place$LT$alloc..rc..Rc$LT$$u5b$$LP$actix_router..resource..ResourceDef$C$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$C$core..cell..RefCell$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$$GT$$GT$$RP$$u5d$$GT$$GT$17h0c6621e22f9308d1E.exit", %"_ZN4core3ptr195drop_in_place$LT$actix_service..boxed..BoxServiceFactory$LT$$LP$$RP$$C$actix_web..service..ServiceRequest$C$actix_web..service..ServiceResponse$C$actix_web..error..error..Error$C$$LP$$RP$$GT$$GT$17hd2ba18b716403708E.exit.i.i", %60 ret void -62: ; preds = %.body - %63 = landingpad { ptr, i32 } +61: ; preds = %.body + %62 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #33 unreachable @@ -38072,16 +38069,15 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !noundef !5 %11 = mul nsw i64 %10, 24 - %12 = add i64 %11, 23 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h72e62a6171d829dbE.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h72e62a6171d829dbE.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #31 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #31 br label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h72e62a6171d829dbE.exit" -"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h72e62a6171d829dbE.exit": ; preds = %15, %8, %1, %4 +"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h72e62a6171d829dbE.exit": ; preds = %14, %8, %1, %4 ret void } diff --git a/bench/bdwgc/optimized/gc.c.ll b/bench/bdwgc/optimized/gc.c.ll index 9ced0d842fb..f8b023d7e8d 100644 --- a/bench/bdwgc/optimized/gc.c.ll +++ b/bench/bdwgc/optimized/gc.c.ll @@ -2578,7 +2578,7 @@ GC_lock.exit: ; preds = %.preheader.i.i, %GC br i1 %.not7.i.i, label %GC_generic_malloc_inner.exit, label %61 61: ; preds = %57, %56 - %62 = add i64 %54, 4095 + %62 = add i64 %53, 4080 %63 = and i64 %62, -4096 tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %55, i8 0, i64 %63, i1 false) br label %GC_generic_malloc_inner.exit @@ -2733,7 +2733,7 @@ GC_lock.exit: ; preds = %.preheader.i.i, %GC br i1 %.b.i.i, label %GC_generic_malloc_inner.exit.thread.thread34, label %40 GC_generic_malloc_inner.exit.thread.thread34: ; preds = %36 - %37 = add i64 %34, 4095 + %37 = add i64 %33, 4080 %38 = and i64 %37, -4096 tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %35, i8 0, i64 %38, i1 false) %39 = getelementptr inbounds i8, ptr %35, i64 32 @@ -2773,7 +2773,7 @@ GC_generic_malloc_inner.exit.thread27: ; preds = %31, %GC_generic_mal br label %103 GC_generic_malloc_inner.exit.thread: ; preds = %40 - %52 = add i64 %34, 4095 + %52 = add i64 %33, 4080 %53 = and i64 %52, -4096 tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %35, i8 0, i64 %53, i1 false) br label %.sink.split @@ -9480,7 +9480,7 @@ GC_lock.exit: ; preds = %.preheader.i.i, %GC br i1 %or.cond.not.i, label %51, label %GC_generic_malloc_inner.exit.thread.i 51: ; preds = %49 - %52 = add i64 %47, 4095 + %52 = add i64 %46, 4080 %53 = and i64 %52, -4096 tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %48, i8 0, i64 %53, i1 false) br label %GC_generic_malloc_inner.exit.thread.i @@ -13611,7 +13611,7 @@ GC_lock.exit67: ; preds = %.preheader.i.i65, % br i1 %.b57, label %75, label %78 75: ; preds = %74 - %76 = add i64 %.043, 4095 + %76 = add i64 %.043, 4080 %77 = and i64 %76, -4096 tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %72, i8 0, i64 %77, i1 false) br label %81 @@ -13641,7 +13641,7 @@ GC_lock.exit67: ; preds = %.preheader.i.i65, % .thread69: ; preds = %84 %86 = getelementptr inbounds i8, ptr %72, i64 16 - %87 = add i64 %.043, 4095 + %87 = add i64 %.043, 4080 %88 = and i64 %87, -4096 %89 = add i64 %88, -16 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %86, i8 0, i64 %89, i1 false) @@ -16044,7 +16044,7 @@ GC_build_fl4.exit.i163: ; preds = %433 br i1 %.not7.i.i, label %GC_generic_malloc_inner.exit.thread, label %463 463: ; preds = %460, %459 - %464 = add i64 %457, 4095 + %464 = add i64 %456, 4080 %465 = and i64 %464, -4096 tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %458, i8 0, i64 %465, i1 false) br label %GC_generic_malloc_inner.exit.thread @@ -24874,7 +24874,7 @@ block_add_size.exit: ; preds = %37 %47 = getelementptr inbounds i8, ptr %46, i64 32 %48 = load i64, ptr %47, align 8 %49 = shl i64 %48, 3 - %50 = add i64 %49, 4095 + %50 = add i64 %49, 4088 %51 = and i64 %50, -4096 %52 = add i64 %51, %21 br label %53 @@ -40811,7 +40811,7 @@ define internal fastcc void @GC_grow_table(ptr nocapture noundef %0, ptr nocaptu br i1 %or.cond41.not, label %38, label %.preheader 38: ; preds = %36 - %39 = add i64 %34, 4095 + %39 = add i64 %33, 4080 %40 = and i64 %39, -4096 call void @llvm.memset.p0.i64(ptr nonnull align 1 %35, i8 0, i64 %40, i1 false) br label %.preheader diff --git a/bench/c3c/optimized/types.c.ll b/bench/c3c/optimized/types.c.ll index 78de780490f..d7abef1a1b9 100644 --- a/bench/c3c/optimized/types.c.ll +++ b/bench/c3c/optimized/types.c.ll @@ -4549,7 +4549,7 @@ create_type_cache.exit: ; preds = %189 %.sroa.317.0.extract.trunc.i103 = trunc nuw i64 %.sroa.317.0.extract.shift.i102 to i32 %205 = and i32 %203, 254 %206 = shl i32 %202, 6 - %207 = add i32 %206, 224 + %207 = add i32 %206, 192 %208 = and i32 %207, 65280 %209 = or disjoint i32 %208, %205 %210 = shl i32 %.sroa.015.0.extract.trunc.i101, 13 diff --git a/bench/ceres/optimized/schur_eliminator_2_d_d.cc.ll b/bench/ceres/optimized/schur_eliminator_2_d_d.cc.ll index 2951536fd97..40f1bbe4646 100644 --- a/bench/ceres/optimized/schur_eliminator_2_d_d.cc.ll +++ b/bench/ceres/optimized/schur_eliminator_2_d_d.cc.ll @@ -7427,7 +7427,7 @@ _ZN5ceres8internalL10MVM_mat4x1EiPKdiS2_Pdi.exit.us: ; preds = %.lr.ph149.i.us, br label %.preheader.i .preheader.i.us92.preheader: ; preds = %.lr.ph91.split - %138 = add nsw i32 %.pre, -1 + %138 = add nsw i32 %1, -4 %139 = lshr i32 %138, 2 %140 = zext nneg i32 %139 to i64 %141 = shl nuw nsw i64 %140, 5 @@ -26518,7 +26518,7 @@ _ZN5Eigen8internal14aligned_mallocEm.exit: ; preds = %37, %29, %34 %58 = tail call ptr @__cxa_allocate_exception(i64 8) #28 store ptr getelementptr inbounds (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %58, align 8 invoke void @__cxa_throw(ptr nonnull %58, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #31 - to label %.cont unwind label %171 + to label %.cont unwind label %168 .cont: ; preds = %.invoke unreachable @@ -26552,272 +26552,269 @@ _ZN5Eigen8internal14aligned_mallocEm.exit: ; preds = %37, %29, %34 %75 = add i64 %74, %71 %76 = icmp sgt i64 %68, 3 %smax.i.us = call i64 @llvm.smax.i64(i64 %71, i64 4) - %77 = add nsw i64 %smax.i.us, -1 - %78 = and i64 %77, -4 - %79 = add nuw nsw i64 %78, 4 - %80 = icmp eq i64 %.0142243.us, 0 - %or.cond.us = or i1 %spec.select, %80 - %81 = getelementptr double, ptr %7, i64 %.0142243.us - br label %82 + %77 = icmp eq i64 %.0142243.us, 0 + %or.cond.us = or i1 %spec.select, %77 + %78 = getelementptr double, ptr %7, i64 %.0142243.us + br label %79 -82: ; preds = %.lr.ph.us, %.loopexit.us - %.0141242.us = phi i64 [ 0, %.lr.ph.us ], [ %83, %.loopexit.us ] - %83 = add nsw i64 %.0141242.us, %17 - %.sroa.speculated189.us = call i64 @llvm.smin.i64(i64 %2, i64 %83) - %84 = sub nsw i64 %.sroa.speculated189.us, %.0141242.us - %85 = mul nsw i64 %.0141242.us, %4 - %86 = getelementptr double, ptr %69, i64 %85 +79: ; preds = %.lr.ph.us, %.loopexit.us + %.0141242.us = phi i64 [ 0, %.lr.ph.us ], [ %80, %.loopexit.us ] + %80 = add nsw i64 %.0141242.us, %17 + %.sroa.speculated189.us = call i64 @llvm.smin.i64(i64 %2, i64 %80) + %81 = sub nsw i64 %.sroa.speculated189.us, %.0141242.us + %82 = mul nsw i64 %.0141242.us, %4 + %83 = getelementptr double, ptr %69, i64 %82 call void asm sideeffect "#EIGEN PRODUCT PACK LHS", "~{dirflag},~{fpsr},~{flags}"() #28, !srcloc !149 br i1 %76, label %.preheader88.lr.ph.i.us, label %.preheader87.i.us -.preheader88.lr.ph.i.us: ; preds = %82 - %87 = icmp sgt i64 %84, 0 - br i1 %87, label %.preheader88.us.i.us, label %.preheader87.i.us +.preheader88.lr.ph.i.us: ; preds = %79 + %84 = icmp sgt i64 %81, 0 + br i1 %84, label %.preheader88.us.i.us, label %.preheader87.i.us .preheader88.us.i.us: ; preds = %.preheader88.lr.ph.i.us, %._crit_edge.us.i.us - %.07992.us.i.us = phi i64 [ %101, %._crit_edge.us.i.us ], [ 0, %.preheader88.lr.ph.i.us ] - %.08091.us.i.us = phi i64 [ %99, %._crit_edge.us.i.us ], [ 0, %.preheader88.lr.ph.i.us ] - %88 = or disjoint i64 %.07992.us.i.us, 2 - %89 = getelementptr double, ptr %86, i64 %.07992.us.i.us - %90 = getelementptr double, ptr %86, i64 %88 - br label %91 - -91: ; preds = %91, %.preheader88.us.i.us - %.07890.us.i.us = phi i64 [ 0, %.preheader88.us.i.us ], [ %100, %91 ] - %.18189.us.i.us = phi i64 [ %.08091.us.i.us, %.preheader88.us.i.us ], [ %99, %91 ] - %92 = mul nsw i64 %.07890.us.i.us, %4 - %93 = getelementptr double, ptr %89, i64 %92 - %94 = load <2 x double>, ptr %93, align 1 - %95 = getelementptr double, ptr %90, i64 %92 - %96 = load <2 x double>, ptr %95, align 1 - %97 = getelementptr inbounds double, ptr %43, i64 %.18189.us.i.us - store <2 x double> %94, ptr %97, align 16 - %98 = getelementptr i8, ptr %97, i64 16 - store <2 x double> %96, ptr %98, align 16 - %99 = add nsw i64 %.18189.us.i.us, 4 - %100 = add nuw nsw i64 %.07890.us.i.us, 1 - %exitcond.not.i.us = icmp eq i64 %100, %84 - br i1 %exitcond.not.i.us, label %._crit_edge.us.i.us, label %91, !llvm.loop !274 - -._crit_edge.us.i.us: ; preds = %91 - %101 = add nuw nsw i64 %.07992.us.i.us, 4 - %102 = icmp slt i64 %101, %71 - br i1 %102, label %.preheader88.us.i.us, label %.preheader87.i.us, !llvm.loop !275 - -.preheader87.i.us: ; preds = %._crit_edge.us.i.us, %.preheader88.lr.ph.i.us, %82 - %.080.lcssa.i.us = phi i64 [ 0, %82 ], [ 0, %.preheader88.lr.ph.i.us ], [ %99, %._crit_edge.us.i.us ] - %.079.lcssa.i.us = phi i64 [ 0, %82 ], [ %79, %.preheader88.lr.ph.i.us ], [ %101, %._crit_edge.us.i.us ] - %103 = icmp slt i64 %.079.lcssa.i.us, %75 - br i1 %103, label %.preheader86.lr.ph.i.us, label %.preheader85.i.us + %.07992.us.i.us = phi i64 [ %98, %._crit_edge.us.i.us ], [ 0, %.preheader88.lr.ph.i.us ] + %.08091.us.i.us = phi i64 [ %96, %._crit_edge.us.i.us ], [ 0, %.preheader88.lr.ph.i.us ] + %85 = or disjoint i64 %.07992.us.i.us, 2 + %86 = getelementptr double, ptr %83, i64 %.07992.us.i.us + %87 = getelementptr double, ptr %83, i64 %85 + br label %88 + +88: ; preds = %88, %.preheader88.us.i.us + %.07890.us.i.us = phi i64 [ 0, %.preheader88.us.i.us ], [ %97, %88 ] + %.18189.us.i.us = phi i64 [ %.08091.us.i.us, %.preheader88.us.i.us ], [ %96, %88 ] + %89 = mul nsw i64 %.07890.us.i.us, %4 + %90 = getelementptr double, ptr %86, i64 %89 + %91 = load <2 x double>, ptr %90, align 1 + %92 = getelementptr double, ptr %87, i64 %89 + %93 = load <2 x double>, ptr %92, align 1 + %94 = getelementptr inbounds double, ptr %43, i64 %.18189.us.i.us + store <2 x double> %91, ptr %94, align 16 + %95 = getelementptr i8, ptr %94, i64 16 + store <2 x double> %93, ptr %95, align 16 + %96 = add nsw i64 %.18189.us.i.us, 4 + %97 = add nuw nsw i64 %.07890.us.i.us, 1 + %exitcond.not.i.us = icmp eq i64 %97, %81 + br i1 %exitcond.not.i.us, label %._crit_edge.us.i.us, label %88, !llvm.loop !274 + +._crit_edge.us.i.us: ; preds = %88 + %98 = add nuw nsw i64 %.07992.us.i.us, 4 + %99 = icmp slt i64 %98, %71 + br i1 %99, label %.preheader88.us.i.us, label %.preheader87.i.us, !llvm.loop !275 + +.preheader87.i.us: ; preds = %._crit_edge.us.i.us, %.preheader88.lr.ph.i.us, %79 + %.080.lcssa.i.us = phi i64 [ 0, %79 ], [ 0, %.preheader88.lr.ph.i.us ], [ %96, %._crit_edge.us.i.us ] + %.079.lcssa.i.us = phi i64 [ 0, %79 ], [ %smax.i.us, %.preheader88.lr.ph.i.us ], [ %98, %._crit_edge.us.i.us ] + %100 = icmp slt i64 %.079.lcssa.i.us, %75 + br i1 %100, label %.preheader86.lr.ph.i.us, label %.preheader85.i.us .preheader86.lr.ph.i.us: ; preds = %.preheader87.i.us - %104 = icmp sgt i64 %84, 0 - br i1 %104, label %.preheader86.us.i.us, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us + %101 = icmp sgt i64 %81, 0 + br i1 %101, label %.preheader86.us.i.us, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us .preheader86.us.i.us: ; preds = %.preheader86.lr.ph.i.us, %._crit_edge.us102.i.us - %.199.us.i.us = phi i64 [ %113, %._crit_edge.us102.i.us ], [ %.079.lcssa.i.us, %.preheader86.lr.ph.i.us ] - %.28298.us.i.us = phi i64 [ %111, %._crit_edge.us102.i.us ], [ %.080.lcssa.i.us, %.preheader86.lr.ph.i.us ] - %105 = getelementptr double, ptr %86, i64 %.199.us.i.us - br label %106 + %.199.us.i.us = phi i64 [ %110, %._crit_edge.us102.i.us ], [ %.079.lcssa.i.us, %.preheader86.lr.ph.i.us ] + %.28298.us.i.us = phi i64 [ %108, %._crit_edge.us102.i.us ], [ %.080.lcssa.i.us, %.preheader86.lr.ph.i.us ] + %102 = getelementptr double, ptr %83, i64 %.199.us.i.us + br label %103 -106: ; preds = %106, %.preheader86.us.i.us - %.07797.us.i.us = phi i64 [ 0, %.preheader86.us.i.us ], [ %112, %106 ] - %.396.us.i.us = phi i64 [ %.28298.us.i.us, %.preheader86.us.i.us ], [ %111, %106 ] - %107 = mul nsw i64 %.07797.us.i.us, %4 - %108 = getelementptr double, ptr %105, i64 %107 - %109 = load <2 x double>, ptr %108, align 1 - %110 = getelementptr inbounds double, ptr %43, i64 %.396.us.i.us - store <2 x double> %109, ptr %110, align 16 - %111 = add nsw i64 %.396.us.i.us, 2 - %112 = add nuw nsw i64 %.07797.us.i.us, 1 - %exitcond122.not.i.us = icmp eq i64 %112, %84 - br i1 %exitcond122.not.i.us, label %._crit_edge.us102.i.us, label %106, !llvm.loop !276 - -._crit_edge.us102.i.us: ; preds = %106 - %113 = add nuw nsw i64 %.199.us.i.us, 2 - %114 = icmp slt i64 %113, %75 - br i1 %114, label %.preheader86.us.i.us, label %.preheader85.i.us, !llvm.loop !277 +103: ; preds = %103, %.preheader86.us.i.us + %.07797.us.i.us = phi i64 [ 0, %.preheader86.us.i.us ], [ %109, %103 ] + %.396.us.i.us = phi i64 [ %.28298.us.i.us, %.preheader86.us.i.us ], [ %108, %103 ] + %104 = mul nsw i64 %.07797.us.i.us, %4 + %105 = getelementptr double, ptr %102, i64 %104 + %106 = load <2 x double>, ptr %105, align 1 + %107 = getelementptr inbounds double, ptr %43, i64 %.396.us.i.us + store <2 x double> %106, ptr %107, align 16 + %108 = add nsw i64 %.396.us.i.us, 2 + %109 = add nuw nsw i64 %.07797.us.i.us, 1 + %exitcond122.not.i.us = icmp eq i64 %109, %81 + br i1 %exitcond122.not.i.us, label %._crit_edge.us102.i.us, label %103, !llvm.loop !276 + +._crit_edge.us102.i.us: ; preds = %103 + %110 = add nuw nsw i64 %.199.us.i.us, 2 + %111 = icmp slt i64 %110, %75 + br i1 %111, label %.preheader86.us.i.us, label %.preheader85.i.us, !llvm.loop !277 .preheader85.i.us: ; preds = %._crit_edge.us102.i.us, %.preheader87.i.us - %.282.lcssa.i.us = phi i64 [ %.080.lcssa.i.us, %.preheader87.i.us ], [ %111, %._crit_edge.us102.i.us ] - %.1.lcssa.i.us = phi i64 [ %.079.lcssa.i.us, %.preheader87.i.us ], [ %113, %._crit_edge.us102.i.us ] - %115 = icmp slt i64 %.1.lcssa.i.us, %68 - %116 = icmp sgt i64 %84, 0 - %or.cond231.us = select i1 %115, i1 %116, i1 false + %.282.lcssa.i.us = phi i64 [ %.080.lcssa.i.us, %.preheader87.i.us ], [ %108, %._crit_edge.us102.i.us ] + %.1.lcssa.i.us = phi i64 [ %.079.lcssa.i.us, %.preheader87.i.us ], [ %110, %._crit_edge.us102.i.us ] + %112 = icmp slt i64 %.1.lcssa.i.us, %68 + %113 = icmp sgt i64 %81, 0 + %or.cond231.us = select i1 %112, i1 %113, i1 false br i1 %or.cond231.us, label %.preheader.us.i.us, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us .preheader.us.i.us: ; preds = %.preheader85.i.us, %._crit_edge.us111.i.us - %.2109.us.i.us = phi i64 [ %125, %._crit_edge.us111.i.us ], [ %.1.lcssa.i.us, %.preheader85.i.us ] - %.4108.us.i.us = phi i64 [ %122, %._crit_edge.us111.i.us ], [ %.282.lcssa.i.us, %.preheader85.i.us ] - %117 = getelementptr double, ptr %86, i64 %.2109.us.i.us - br label %118 - -118: ; preds = %118, %.preheader.us.i.us - %.0107.us.i.us = phi i64 [ 0, %.preheader.us.i.us ], [ %124, %118 ] - %.5106.us.i.us = phi i64 [ %.4108.us.i.us, %.preheader.us.i.us ], [ %122, %118 ] - %119 = mul nsw i64 %.0107.us.i.us, %4 - %120 = getelementptr double, ptr %117, i64 %119 - %121 = load double, ptr %120, align 8 - %122 = add nsw i64 %.5106.us.i.us, 1 - %123 = getelementptr inbounds double, ptr %43, i64 %.5106.us.i.us - store double %121, ptr %123, align 8 - %124 = add nuw nsw i64 %.0107.us.i.us, 1 - %exitcond123.not.i.us = icmp eq i64 %124, %84 - br i1 %exitcond123.not.i.us, label %._crit_edge.us111.i.us, label %118, !llvm.loop !278 - -._crit_edge.us111.i.us: ; preds = %118 - %125 = add nuw nsw i64 %.2109.us.i.us, 1 - %exitcond124.not.i.us = icmp eq i64 %125, %68 + %.2109.us.i.us = phi i64 [ %122, %._crit_edge.us111.i.us ], [ %.1.lcssa.i.us, %.preheader85.i.us ] + %.4108.us.i.us = phi i64 [ %119, %._crit_edge.us111.i.us ], [ %.282.lcssa.i.us, %.preheader85.i.us ] + %114 = getelementptr double, ptr %83, i64 %.2109.us.i.us + br label %115 + +115: ; preds = %115, %.preheader.us.i.us + %.0107.us.i.us = phi i64 [ 0, %.preheader.us.i.us ], [ %121, %115 ] + %.5106.us.i.us = phi i64 [ %.4108.us.i.us, %.preheader.us.i.us ], [ %119, %115 ] + %116 = mul nsw i64 %.0107.us.i.us, %4 + %117 = getelementptr double, ptr %114, i64 %116 + %118 = load double, ptr %117, align 8 + %119 = add nsw i64 %.5106.us.i.us, 1 + %120 = getelementptr inbounds double, ptr %43, i64 %.5106.us.i.us + store double %118, ptr %120, align 8 + %121 = add nuw nsw i64 %.0107.us.i.us, 1 + %exitcond123.not.i.us = icmp eq i64 %121, %81 + br i1 %exitcond123.not.i.us, label %._crit_edge.us111.i.us, label %115, !llvm.loop !278 + +._crit_edge.us111.i.us: ; preds = %115 + %122 = add nuw nsw i64 %.2109.us.i.us, 1 + %exitcond124.not.i.us = icmp eq i64 %122, %68 br i1 %exitcond124.not.i.us, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us, label %.preheader.us.i.us, !llvm.loop !279 _ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us: ; preds = %._crit_edge.us111.i.us, %.preheader86.lr.ph.i.us, %.preheader85.i.us - %126 = phi i1 [ %116, %.preheader85.i.us ], [ false, %.preheader86.lr.ph.i.us ], [ %116, %._crit_edge.us111.i.us ] - %127 = mul nsw i64 %.0141242.us, %6 - %invariant.gep.us = getelementptr double, ptr %5, i64 %127 - br label %128 + %123 = phi i1 [ %113, %.preheader85.i.us ], [ false, %.preheader86.lr.ph.i.us ], [ %113, %._crit_edge.us111.i.us ] + %124 = mul nsw i64 %.0141242.us, %6 + %invariant.gep.us = getelementptr double, ptr %5, i64 %124 + br label %125 -128: ; preds = %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1ELb0ELb0EEclEPdRKS3_llll.exit.us, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us - %.0139.us = phi i64 [ 0, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us ], [ %131, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1ELb0ELb0EEclEPdRKS3_llll.exit.us ] - %129 = icmp slt i64 %.0139.us, %1 - br i1 %129, label %130, label %.loopexit.us +125: ; preds = %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1ELb0ELb0EEclEPdRKS3_llll.exit.us, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us + %.0139.us = phi i64 [ 0, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us ], [ %128, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1ELb0ELb0EEclEPdRKS3_llll.exit.us ] + %126 = icmp slt i64 %.0139.us, %1 + br i1 %126, label %127, label %.loopexit.us -130: ; preds = %128 - %131 = add nsw i64 %.0139.us, %.sroa.speculated207 - %.sroa.speculated.us = call i64 @llvm.smin.i64(i64 %1, i64 %131) - %132 = sub nsw i64 %.sroa.speculated.us, %.0139.us - br i1 %or.cond.us, label %133, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1ELb0ELb0EEclEPdRKS3_llll.exit.us +127: ; preds = %125 + %128 = add nsw i64 %.0139.us, %.sroa.speculated207 + %.sroa.speculated.us = call i64 @llvm.smin.i64(i64 %1, i64 %128) + %129 = sub nsw i64 %.sroa.speculated.us, %.0139.us + br i1 %or.cond.us, label %130, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1ELb0ELb0EEclEPdRKS3_llll.exit.us -133: ; preds = %130 +130: ; preds = %127 %gep.us = getelementptr double, ptr %invariant.gep.us, i64 %.0139.us call void asm sideeffect "#EIGEN PRODUCT PACK RHS ROWMAJOR", "~{dirflag},~{fpsr},~{flags}"() #28, !srcloc !136 - %134 = sdiv i64 %132, 4 - %135 = shl nsw i64 %134, 2 - %136 = icmp sgt i64 %132, 3 - %or.cond232.us = select i1 %136, i1 %126, i1 false + %131 = sdiv i64 %129, 4 + %132 = shl nsw i64 %131, 2 + %133 = icmp sgt i64 %129, 3 + %or.cond232.us = select i1 %133, i1 %123, i1 false br i1 %or.cond232.us, label %.preheader61.us.i.us, label %.preheader60.i.us -.preheader61.us.i.us: ; preds = %133, %._crit_edge.us.i176.us - %.05365.us.i.us = phi i64 [ %154, %._crit_edge.us.i176.us ], [ 0, %133 ] - %.05464.us.i.us = phi i64 [ %152, %._crit_edge.us.i176.us ], [ 0, %133 ] - %137 = getelementptr double, ptr %gep.us, i64 %.05365.us.i.us - br label %138 +.preheader61.us.i.us: ; preds = %130, %._crit_edge.us.i176.us + %.05365.us.i.us = phi i64 [ %151, %._crit_edge.us.i176.us ], [ 0, %130 ] + %.05464.us.i.us = phi i64 [ %149, %._crit_edge.us.i176.us ], [ 0, %130 ] + %134 = getelementptr double, ptr %gep.us, i64 %.05365.us.i.us + br label %135 -138: ; preds = %138, %.preheader61.us.i.us - %.05263.us.i.us = phi i64 [ 0, %.preheader61.us.i.us ], [ %153, %138 ] - %.162.us.i.us = phi i64 [ %.05464.us.i.us, %.preheader61.us.i.us ], [ %152, %138 ] - %139 = mul nsw i64 %.05263.us.i.us, %6 - %140 = getelementptr double, ptr %137, i64 %139 +135: ; preds = %135, %.preheader61.us.i.us + %.05263.us.i.us = phi i64 [ 0, %.preheader61.us.i.us ], [ %150, %135 ] + %.162.us.i.us = phi i64 [ %.05464.us.i.us, %.preheader61.us.i.us ], [ %149, %135 ] + %136 = mul nsw i64 %.05263.us.i.us, %6 + %137 = getelementptr double, ptr %134, i64 %136 + %138 = load double, ptr %137, align 8 + %139 = getelementptr inbounds double, ptr %61, i64 %.162.us.i.us + store double %138, ptr %139, align 8 + %140 = getelementptr inbounds i8, ptr %137, i64 8 %141 = load double, ptr %140, align 8 - %142 = getelementptr inbounds double, ptr %61, i64 %.162.us.i.us + %142 = getelementptr i8, ptr %139, i64 8 store double %141, ptr %142, align 8 - %143 = getelementptr inbounds i8, ptr %140, i64 8 + %143 = getelementptr inbounds i8, ptr %137, i64 16 %144 = load double, ptr %143, align 8 - %145 = getelementptr i8, ptr %142, i64 8 + %145 = getelementptr i8, ptr %139, i64 16 store double %144, ptr %145, align 8 - %146 = getelementptr inbounds i8, ptr %140, i64 16 + %146 = getelementptr inbounds i8, ptr %137, i64 24 %147 = load double, ptr %146, align 8 - %148 = getelementptr i8, ptr %142, i64 16 + %148 = getelementptr i8, ptr %139, i64 24 store double %147, ptr %148, align 8 - %149 = getelementptr inbounds i8, ptr %140, i64 24 - %150 = load double, ptr %149, align 8 - %151 = getelementptr i8, ptr %142, i64 24 - store double %150, ptr %151, align 8 - %152 = add nsw i64 %.162.us.i.us, 4 - %153 = add nuw nsw i64 %.05263.us.i.us, 1 - %exitcond.not.i175.us = icmp eq i64 %153, %84 - br i1 %exitcond.not.i175.us, label %._crit_edge.us.i176.us, label %138, !llvm.loop !137 - -._crit_edge.us.i176.us: ; preds = %138 - %154 = add nuw nsw i64 %.05365.us.i.us, 4 - %155 = icmp slt i64 %154, %135 - br i1 %155, label %.preheader61.us.i.us, label %.preheader60.i.us, !llvm.loop !138 - -.preheader60.i.us: ; preds = %._crit_edge.us.i176.us, %133 - %.054.lcssa.i.us = phi i64 [ 0, %133 ], [ %152, %._crit_edge.us.i176.us ] - %156 = icmp slt i64 %135, %132 - %or.cond233.us = select i1 %156, i1 %126, i1 false + %149 = add nsw i64 %.162.us.i.us, 4 + %150 = add nuw nsw i64 %.05263.us.i.us, 1 + %exitcond.not.i175.us = icmp eq i64 %150, %81 + br i1 %exitcond.not.i175.us, label %._crit_edge.us.i176.us, label %135, !llvm.loop !137 + +._crit_edge.us.i176.us: ; preds = %135 + %151 = add nuw nsw i64 %.05365.us.i.us, 4 + %152 = icmp slt i64 %151, %132 + br i1 %152, label %.preheader61.us.i.us, label %.preheader60.i.us, !llvm.loop !138 + +.preheader60.i.us: ; preds = %._crit_edge.us.i176.us, %130 + %.054.lcssa.i.us = phi i64 [ 0, %130 ], [ %149, %._crit_edge.us.i176.us ] + %153 = icmp slt i64 %132, %129 + %or.cond233.us = select i1 %153, i1 %123, i1 false br i1 %or.cond233.us, label %.preheader.us.i174.us, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1ELb0ELb0EEclEPdRKS3_llll.exit.us .preheader.us.i174.us: ; preds = %.preheader60.i.us, %._crit_edge.us72.i.us - %.05170.us.i.us = phi i64 [ %165, %._crit_edge.us72.i.us ], [ %135, %.preheader60.i.us ] - %.269.us.i.us = phi i64 [ %163, %._crit_edge.us72.i.us ], [ %.054.lcssa.i.us, %.preheader60.i.us ] - %157 = getelementptr double, ptr %gep.us, i64 %.05170.us.i.us - br label %158 + %.05170.us.i.us = phi i64 [ %162, %._crit_edge.us72.i.us ], [ %132, %.preheader60.i.us ] + %.269.us.i.us = phi i64 [ %160, %._crit_edge.us72.i.us ], [ %.054.lcssa.i.us, %.preheader60.i.us ] + %154 = getelementptr double, ptr %gep.us, i64 %.05170.us.i.us + br label %155 -158: ; preds = %158, %.preheader.us.i174.us - %.068.us.i.us = phi i64 [ 0, %.preheader.us.i174.us ], [ %164, %158 ] - %.367.us.i.us = phi i64 [ %.269.us.i.us, %.preheader.us.i174.us ], [ %163, %158 ] - %159 = mul nsw i64 %.068.us.i.us, %6 - %160 = getelementptr double, ptr %157, i64 %159 - %161 = load double, ptr %160, align 8 - %162 = getelementptr inbounds double, ptr %61, i64 %.367.us.i.us - store double %161, ptr %162, align 8 - %163 = add nsw i64 %.367.us.i.us, 1 - %164 = add nuw nsw i64 %.068.us.i.us, 1 - %exitcond77.not.i.us = icmp eq i64 %164, %84 - br i1 %exitcond77.not.i.us, label %._crit_edge.us72.i.us, label %158, !llvm.loop !139 - -._crit_edge.us72.i.us: ; preds = %158 - %165 = add nsw i64 %.05170.us.i.us, 1 - %exitcond78.not.i.us = icmp eq i64 %165, %132 +155: ; preds = %155, %.preheader.us.i174.us + %.068.us.i.us = phi i64 [ 0, %.preheader.us.i174.us ], [ %161, %155 ] + %.367.us.i.us = phi i64 [ %.269.us.i.us, %.preheader.us.i174.us ], [ %160, %155 ] + %156 = mul nsw i64 %.068.us.i.us, %6 + %157 = getelementptr double, ptr %154, i64 %156 + %158 = load double, ptr %157, align 8 + %159 = getelementptr inbounds double, ptr %61, i64 %.367.us.i.us + store double %158, ptr %159, align 8 + %160 = add nsw i64 %.367.us.i.us, 1 + %161 = add nuw nsw i64 %.068.us.i.us, 1 + %exitcond77.not.i.us = icmp eq i64 %161, %81 + br i1 %exitcond77.not.i.us, label %._crit_edge.us72.i.us, label %155, !llvm.loop !139 + +._crit_edge.us72.i.us: ; preds = %155 + %162 = add nsw i64 %.05170.us.i.us, 1 + %exitcond78.not.i.us = icmp eq i64 %162, %129 br i1 %exitcond78.not.i.us, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1ELb0ELb0EEclEPdRKS3_llll.exit.us, label %.preheader.us.i174.us, !llvm.loop !140 -_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1ELb0ELb0EEclEPdRKS3_llll.exit.us: ; preds = %._crit_edge.us72.i.us, %.preheader60.i.us, %130 - %166 = mul nsw i64 %.0139.us, %9 - %167 = getelementptr double, ptr %81, i64 %166 - store ptr %167, ptr %15, align 8 +_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1ELb0ELb0EEclEPdRKS3_llll.exit.us: ; preds = %._crit_edge.us72.i.us, %.preheader60.i.us, %127 + %163 = mul nsw i64 %.0139.us, %9 + %164 = getelementptr double, ptr %78, i64 %163 + store ptr %164, ptr %15, align 8 store i64 %9, ptr %66, align 8 - invoke void @_ZN5Eigen8internal11gebp_kernelIddlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi4ELb0ELb0EEclERKS3_PKdS8_llldllll(ptr noundef nonnull align 1 dereferenceable(1) %14, ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull %43, ptr noundef nonnull %61, i64 noundef %68, i64 noundef %84, i64 noundef %132, double noundef %10, i64 noundef -1, i64 noundef -1, i64 noundef 0, i64 noundef 0) - to label %128 unwind label %.split.us, !llvm.loop !806 + invoke void @_ZN5Eigen8internal11gebp_kernelIddlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi4ELb0ELb0EEclERKS3_PKdS8_llldllll(ptr noundef nonnull align 1 dereferenceable(1) %14, ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull %43, ptr noundef nonnull %61, i64 noundef %68, i64 noundef %81, i64 noundef %129, double noundef %10, i64 noundef -1, i64 noundef -1, i64 noundef 0, i64 noundef 0) + to label %125 unwind label %.split.us, !llvm.loop !806 -.loopexit.us: ; preds = %128 - %168 = icmp slt i64 %83, %2 - br i1 %168, label %82, label %..loopexit235_crit_edge.us, !llvm.loop !807 +.loopexit.us: ; preds = %125 + %165 = icmp slt i64 %80, %2 + br i1 %165, label %79, label %..loopexit235_crit_edge.us, !llvm.loop !807 ..loopexit235_crit_edge.us: ; preds = %.loopexit.us - %169 = icmp slt i64 %67, %0 - br i1 %169, label %.lr.ph.us, label %._crit_edge, !llvm.loop !808 + %166 = icmp slt i64 %67, %0 + br i1 %166, label %.lr.ph.us, label %._crit_edge, !llvm.loop !808 .split.us: ; preds = %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1ELb0ELb0EEclEPdRKS3_llll.exit.us - %170 = landingpad { ptr, i32 } + %167 = landingpad { ptr, i32 } cleanup - br i1 %62, label %173, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit + br i1 %62, label %170, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit -171: ; preds = %.invoke - %172 = landingpad { ptr, i32 } +168: ; preds = %.invoke + %169 = landingpad { ptr, i32 } cleanup br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit -173: ; preds = %.split.us +170: ; preds = %.split.us call void @free(ptr noundef %60) #28 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit ._crit_edge: ; preds = %..loopexit235_crit_edge.us, %.lr.ph244, %59 - br i1 %62, label %174, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit177 + br i1 %62, label %171, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit177 -174: ; preds = %._crit_edge +171: ; preds = %._crit_edge call void @free(ptr noundef %60) #28 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit177 -_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit177: ; preds = %._crit_edge, %174 - br i1 %44, label %175, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit178 +_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit177: ; preds = %._crit_edge, %171 + br i1 %44, label %172, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit178 -175: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit177 +172: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit177 call void @free(ptr noundef %42) #28 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit178 -_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit178: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit177, %175 +_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit178: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit177, %172 ret void -_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit: ; preds = %173, %.split.us, %171 - %.pn = phi { ptr, i32 } [ %172, %171 ], [ %170, %.split.us ], [ %170, %173 ] - br i1 %44, label %176, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit179 +_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit: ; preds = %170, %.split.us, %168 + %.pn = phi { ptr, i32 } [ %169, %168 ], [ %167, %.split.us ], [ %167, %170 ] + br i1 %44, label %173, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit179 -176: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit +173: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit call void @free(ptr noundef %42) #28 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit179 -_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit179: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit, %176 +_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit179: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit, %173 resume { ptr, i32 } %.pn } diff --git a/bench/clamav/optimized/entconv.c.ll b/bench/clamav/optimized/entconv.c.ll index ef92a81f094..1fd1810e8b5 100644 --- a/bench/clamav/optimized/entconv.c.ll +++ b/bench/clamav/optimized/entconv.c.ll @@ -1906,20 +1906,15 @@ define ptr @cli_utf16toascii(ptr nocapture noundef readonly %0, i32 noundef %1) br label %.loopexit 5: ; preds = %2 - %spec.select = and i32 %1, -2 %6 = lshr i32 %1, 1 %7 = add nuw i32 %6, 1 %8 = zext i32 %7 to i64 %9 = tail call ptr @cli_max_calloc(i64 noundef %8, i64 noundef 1) #17 %.not22 = icmp eq ptr %9, null - br i1 %.not22, label %.loopexit, label %.preheader + br i1 %.not22, label %.loopexit, label %.lr.ph.preheader -.preheader: ; preds = %5 - %.not = icmp eq i32 %spec.select, 0 - br i1 %.not, label %.loopexit, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %.preheader - %10 = add i32 %spec.select, -1 +.lr.ph.preheader: ; preds = %5 + %10 = add i32 %1, -2 %11 = lshr i32 %10, 1 %12 = add nuw nsw i32 %11, 1 %wide.trip.count = zext nneg i32 %12 to i64 @@ -1943,8 +1938,8 @@ define ptr @cli_utf16toascii(ptr nocapture noundef readonly %0, i32 noundef %1) %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.loopexit, label %.lr.ph -.loopexit: ; preds = %.lr.ph, %.preheader, %5, %4 - %.018 = phi ptr [ null, %4 ], [ null, %5 ], [ %9, %.preheader ], [ %9, %.lr.ph ] +.loopexit: ; preds = %.lr.ph, %5, %4 + %.018 = phi ptr [ null, %4 ], [ null, %5 ], [ %9, %.lr.ph ] ret ptr %.018 } diff --git a/bench/cvc5/optimized/equality_engine.cpp.ll b/bench/cvc5/optimized/equality_engine.cpp.ll index 693d7cffe11..073a25b24dd 100644 --- a/bench/cvc5/optimized/equality_engine.cpp.ll +++ b/bench/cvc5/optimized/equality_engine.cpp.ll @@ -6736,7 +6736,7 @@ define hidden noundef i32 @_ZN4cvc58internal6theory2eq14EqualityEngine17newTrigg entry: %conv = zext i32 %newSetTriggersSize to i64 %mul = shl nuw nsw i64 %conv, 2 - %add2 = add nuw nsw i64 %mul, 11 + %add2 = add nuw nsw i64 %mul, 8 %and = and i64 %add2, 34359738360 %d_triggerDatabaseSize = getelementptr inbounds i8, ptr %this, i64 1296 %d_data.i.i = getelementptr inbounds i8, ptr %this, i64 1336 @@ -13133,7 +13133,7 @@ invoke.cont512: ; preds = %invoke.cont508, %if store i32 %add510, ptr %d_data.i.i1890, align 8 %conv.i1899 = zext i32 %newSetTriggersSize.0.lcssa to i64 %mul.i = shl nuw nsw i64 %conv.i1899, 2 - %add2.i = add nuw nsw i64 %mul.i, 11 + %add2.i = add nuw nsw i64 %mul.i, 8 %and.i1900 = and i64 %add2.i, 34359738360 %d_triggerDatabaseSize.i = getelementptr inbounds i8, ptr %this, i64 1296 %d_data.i.i.i1901 = getelementptr inbounds i8, ptr %this, i64 1336 @@ -26507,7 +26507,7 @@ invoke.cont111: ; preds = %invoke.cont108, %if store i32 %add, ptr %d_data.i.i428, align 8 %conv.i436 = zext i32 %newSetTriggersSize.1 to i64 %mul.i = shl nuw nsw i64 %conv.i436, 2 - %add2.i = add nuw nsw i64 %mul.i, 11 + %add2.i = add nuw nsw i64 %mul.i, 8 %and.i437 = and i64 %add2.i, 34359738360 %d_triggerDatabaseSize.i = getelementptr inbounds i8, ptr %this, i64 1296 %d_data.i.i.i = getelementptr inbounds i8, ptr %this, i64 1336 diff --git a/bench/darktable/optimized/introspection_colorcorrection.c.ll b/bench/darktable/optimized/introspection_colorcorrection.c.ll index 054adae8df5..52d81b5eae8 100644 --- a/bench/darktable/optimized/introspection_colorcorrection.c.ll +++ b/bench/darktable/optimized/introspection_colorcorrection.c.ll @@ -199,104 +199,101 @@ define void @process(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noun 55: ; preds = %37 %56 = shl i64 %30, 2 - %57 = add i64 %56, -4 - %58 = and i64 %57, -16 - %59 = add i64 %58, 16 - %60 = getelementptr i8, ptr %3, i64 %59 - %61 = getelementptr i8, ptr %2, i64 %59 - %62 = icmp ugt ptr %61, %3 - %63 = icmp ugt ptr %60, %2 - %64 = and i1 %62, %63 - br i1 %64, label %.preheader, label %65 - -65: ; preds = %55 - %66 = and i64 %35, 9223372036854775800 - %67 = insertelement <8 x float> poison, float %16, i64 0 - %68 = shufflevector <8 x float> %67, <8 x float> poison, <8 x i32> zeroinitializer - %69 = insertelement <8 x float> poison, float %18, i64 0 - %70 = shufflevector <8 x float> %69, <8 x float> poison, <8 x i32> zeroinitializer - %71 = insertelement <8 x float> poison, float %15, i64 0 - %72 = shufflevector <8 x float> %71, <8 x float> poison, <8 x i32> zeroinitializer - %73 = insertelement <8 x float> poison, float %20, i64 0 - %74 = shufflevector <8 x float> %73, <8 x float> poison, <8 x i32> zeroinitializer - %75 = insertelement <8 x float> poison, float %22, i64 0 - %76 = shufflevector <8 x float> %75, <8 x float> poison, <8 x i32> zeroinitializer - br label %77 - -77: ; preds = %77, %65 - %78 = phi i64 [ 0, %65 ], [ %101, %77 ] - %79 = phi <8 x i64> [ , %65 ], [ %102, %77 ] - %80 = shl i64 %78, 2 - %81 = getelementptr inbounds float, ptr %2, <8 x i64> %79 - %82 = tail call <8 x float> @llvm.masked.gather.v8f32.v8p0(<8 x ptr> %81, i32 4, <8 x i1> , <8 x float> poison), !tbaa !6, !alias.scope !36 - %83 = getelementptr float, ptr %2, i64 %80 - %84 = load <32 x float>, ptr %83, align 64, !tbaa !6 - %85 = shufflevector <32 x float> %84, <32 x float> poison, <8 x i32> - %86 = shufflevector <32 x float> %84, <32 x float> poison, <8 x i32> - %87 = shufflevector <32 x float> %84, <32 x float> poison, <8 x i32> - %88 = shufflevector <32 x float> %84, <32 x float> poison, <8 x i32> - %89 = fmul reassoc nsz arcp contract afn <8 x float> %82, %68 - %90 = fadd reassoc nsz arcp contract afn <8 x float> %89, %70 - %91 = fadd reassoc nsz arcp contract afn <8 x float> %90, %86 - %92 = fmul reassoc nsz arcp contract afn <8 x float> %91, %72 - %93 = fmul reassoc nsz arcp contract afn <8 x float> %85, %74 - %94 = fadd reassoc nsz arcp contract afn <8 x float> %87, %76 - %95 = fadd reassoc nsz arcp contract afn <8 x float> %94, %93 - %96 = fmul reassoc nsz arcp contract afn <8 x float> %95, %72 - %97 = getelementptr float, ptr %3, i64 %80 - %98 = shufflevector <8 x float> %82, <8 x float> %92, <16 x i32> - %99 = shufflevector <8 x float> %96, <8 x float> %88, <16 x i32> - %100 = shufflevector <16 x float> %98, <16 x float> %99, <32 x i32> - store <32 x float> %100, ptr %97, align 64, !tbaa !6 - %101 = add nuw i64 %78, 8 - %102 = add <8 x i64> %79, - %103 = icmp eq i64 %101, %66 - br i1 %103, label %104, label %77, !llvm.loop !39 - -104: ; preds = %77 - %105 = shl i64 %66, 2 - %106 = icmp eq i64 %35, %66 - br i1 %106, label %.loopexit, label %.preheader - -.preheader: ; preds = %104, %55, %37, %32 - %.ph = phi i64 [ %105, %104 ], [ 0, %32 ], [ 0, %37 ], [ 0, %55 ] - br label %107 - -107: ; preds = %.preheader, %107 - %108 = phi i64 [ %133, %107 ], [ %.ph, %.preheader ] - %109 = getelementptr inbounds float, ptr %2, i64 %108 - %110 = load float, ptr %109, align 16, !tbaa !6 - %111 = getelementptr inbounds float, ptr %3, i64 %108 - store float %110, ptr %111, align 16, !tbaa !6 - %112 = or disjoint i64 %108, 1 - %113 = getelementptr inbounds float, ptr %2, i64 %112 - %114 = load float, ptr %113, align 4, !tbaa !6 - %115 = fmul reassoc nsz arcp contract afn float %110, %16 - %116 = fadd reassoc nsz arcp contract afn float %115, %18 - %117 = fadd reassoc nsz arcp contract afn float %116, %114 - %118 = fmul reassoc nsz arcp contract afn float %117, %15 - %119 = getelementptr inbounds float, ptr %3, i64 %112 - store float %118, ptr %119, align 4, !tbaa !6 - %120 = or disjoint i64 %108, 2 - %121 = getelementptr inbounds float, ptr %2, i64 %120 - %122 = load float, ptr %121, align 8, !tbaa !6 - %123 = load float, ptr %109, align 16, !tbaa !6 - %124 = fmul reassoc nsz arcp contract afn float %123, %20 - %125 = fadd reassoc nsz arcp contract afn float %122, %22 - %126 = fadd reassoc nsz arcp contract afn float %125, %124 - %127 = fmul reassoc nsz arcp contract afn float %126, %15 - %128 = getelementptr inbounds float, ptr %3, i64 %120 - store float %127, ptr %128, align 8, !tbaa !6 - %129 = or disjoint i64 %108, 3 - %130 = getelementptr inbounds float, ptr %2, i64 %129 - %131 = load float, ptr %130, align 4, !tbaa !6 - %132 = getelementptr inbounds float, ptr %3, i64 %129 - store float %131, ptr %132, align 4, !tbaa !6 - %133 = add nuw i64 %108, 4 - %134 = icmp ult i64 %133, %30 - br i1 %134, label %107, label %.loopexit, !llvm.loop !42 - -.loopexit: ; preds = %107, %104, %13, %6 + %57 = getelementptr i8, ptr %3, i64 %56 + %58 = getelementptr i8, ptr %2, i64 %56 + %59 = icmp ugt ptr %58, %3 + %60 = icmp ugt ptr %57, %2 + %61 = and i1 %59, %60 + br i1 %61, label %.preheader, label %62 + +62: ; preds = %55 + %63 = and i64 %35, 9223372036854775800 + %64 = insertelement <8 x float> poison, float %16, i64 0 + %65 = shufflevector <8 x float> %64, <8 x float> poison, <8 x i32> zeroinitializer + %66 = insertelement <8 x float> poison, float %18, i64 0 + %67 = shufflevector <8 x float> %66, <8 x float> poison, <8 x i32> zeroinitializer + %68 = insertelement <8 x float> poison, float %15, i64 0 + %69 = shufflevector <8 x float> %68, <8 x float> poison, <8 x i32> zeroinitializer + %70 = insertelement <8 x float> poison, float %20, i64 0 + %71 = shufflevector <8 x float> %70, <8 x float> poison, <8 x i32> zeroinitializer + %72 = insertelement <8 x float> poison, float %22, i64 0 + %73 = shufflevector <8 x float> %72, <8 x float> poison, <8 x i32> zeroinitializer + br label %74 + +74: ; preds = %74, %62 + %75 = phi i64 [ 0, %62 ], [ %98, %74 ] + %76 = phi <8 x i64> [ , %62 ], [ %99, %74 ] + %77 = shl i64 %75, 2 + %78 = getelementptr inbounds float, ptr %2, <8 x i64> %76 + %79 = tail call <8 x float> @llvm.masked.gather.v8f32.v8p0(<8 x ptr> %78, i32 4, <8 x i1> , <8 x float> poison), !tbaa !6, !alias.scope !36 + %80 = getelementptr float, ptr %2, i64 %77 + %81 = load <32 x float>, ptr %80, align 64, !tbaa !6 + %82 = shufflevector <32 x float> %81, <32 x float> poison, <8 x i32> + %83 = shufflevector <32 x float> %81, <32 x float> poison, <8 x i32> + %84 = shufflevector <32 x float> %81, <32 x float> poison, <8 x i32> + %85 = shufflevector <32 x float> %81, <32 x float> poison, <8 x i32> + %86 = fmul reassoc nsz arcp contract afn <8 x float> %79, %65 + %87 = fadd reassoc nsz arcp contract afn <8 x float> %86, %67 + %88 = fadd reassoc nsz arcp contract afn <8 x float> %87, %83 + %89 = fmul reassoc nsz arcp contract afn <8 x float> %88, %69 + %90 = fmul reassoc nsz arcp contract afn <8 x float> %82, %71 + %91 = fadd reassoc nsz arcp contract afn <8 x float> %84, %73 + %92 = fadd reassoc nsz arcp contract afn <8 x float> %91, %90 + %93 = fmul reassoc nsz arcp contract afn <8 x float> %92, %69 + %94 = getelementptr float, ptr %3, i64 %77 + %95 = shufflevector <8 x float> %79, <8 x float> %89, <16 x i32> + %96 = shufflevector <8 x float> %93, <8 x float> %85, <16 x i32> + %97 = shufflevector <16 x float> %95, <16 x float> %96, <32 x i32> + store <32 x float> %97, ptr %94, align 64, !tbaa !6 + %98 = add nuw i64 %75, 8 + %99 = add <8 x i64> %76, + %100 = icmp eq i64 %98, %63 + br i1 %100, label %101, label %74, !llvm.loop !39 + +101: ; preds = %74 + %102 = shl i64 %63, 2 + %103 = icmp eq i64 %35, %63 + br i1 %103, label %.loopexit, label %.preheader + +.preheader: ; preds = %101, %55, %37, %32 + %.ph = phi i64 [ %102, %101 ], [ 0, %32 ], [ 0, %37 ], [ 0, %55 ] + br label %104 + +104: ; preds = %.preheader, %104 + %105 = phi i64 [ %130, %104 ], [ %.ph, %.preheader ] + %106 = getelementptr inbounds float, ptr %2, i64 %105 + %107 = load float, ptr %106, align 16, !tbaa !6 + %108 = getelementptr inbounds float, ptr %3, i64 %105 + store float %107, ptr %108, align 16, !tbaa !6 + %109 = or disjoint i64 %105, 1 + %110 = getelementptr inbounds float, ptr %2, i64 %109 + %111 = load float, ptr %110, align 4, !tbaa !6 + %112 = fmul reassoc nsz arcp contract afn float %107, %16 + %113 = fadd reassoc nsz arcp contract afn float %112, %18 + %114 = fadd reassoc nsz arcp contract afn float %113, %111 + %115 = fmul reassoc nsz arcp contract afn float %114, %15 + %116 = getelementptr inbounds float, ptr %3, i64 %109 + store float %115, ptr %116, align 4, !tbaa !6 + %117 = or disjoint i64 %105, 2 + %118 = getelementptr inbounds float, ptr %2, i64 %117 + %119 = load float, ptr %118, align 8, !tbaa !6 + %120 = load float, ptr %106, align 16, !tbaa !6 + %121 = fmul reassoc nsz arcp contract afn float %120, %20 + %122 = fadd reassoc nsz arcp contract afn float %119, %22 + %123 = fadd reassoc nsz arcp contract afn float %122, %121 + %124 = fmul reassoc nsz arcp contract afn float %123, %15 + %125 = getelementptr inbounds float, ptr %3, i64 %117 + store float %124, ptr %125, align 8, !tbaa !6 + %126 = or disjoint i64 %105, 3 + %127 = getelementptr inbounds float, ptr %2, i64 %126 + %128 = load float, ptr %127, align 4, !tbaa !6 + %129 = getelementptr inbounds float, ptr %3, i64 %126 + store float %128, ptr %129, align 4, !tbaa !6 + %130 = add nuw i64 %105, 4 + %131 = icmp ult i64 %130, %30 + br i1 %131, label %104, label %.loopexit, !llvm.loop !42 + +.loopexit: ; preds = %104, %101, %13, %6 ret void } diff --git a/bench/darktable/optimized/introspection_vibrance.c.ll b/bench/darktable/optimized/introspection_vibrance.c.ll index 70b84966b83..1b16500344b 100644 --- a/bench/darktable/optimized/introspection_vibrance.c.ll +++ b/bench/darktable/optimized/introspection_vibrance.c.ll @@ -112,115 +112,112 @@ define void @process(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noun %25 = fptrunc double %24 to float %26 = fmul reassoc nsz arcp contract afn float %25, 3.906250e-03 %27 = zext nneg i32 %17 to i64 - %28 = add nsw i64 %27, -1 - %29 = lshr i64 %28, 2 + %28 = add nsw i64 %27, -4 + %29 = lshr exact i64 %28, 2 %30 = add nuw nsw i64 %29, 1 %31 = icmp ult i32 %17, 33 br i1 %31, label %.loopexit1, label %32 32: ; preds = %19 %33 = shl nuw nsw i64 %27, 2 - %34 = add nsw i64 %33, -4 - %35 = and i64 %34, -16 - %36 = add nuw nsw i64 %35, 16 - %37 = getelementptr i8, ptr %3, i64 %36 - %38 = getelementptr i8, ptr %2, i64 %36 - %39 = icmp ugt ptr %38, %3 - %40 = icmp ugt ptr %37, %2 - %41 = and i1 %39, %40 - br i1 %41, label %.loopexit1, label %42 - -42: ; preds = %32 - %43 = and i64 %30, 7 - %44 = icmp eq i64 %43, 0 - %45 = select i1 %44, i64 8, i64 %43 - %46 = sub nsw i64 %30, %45 - %47 = insertelement <8 x float> poison, float %26, i64 0 - %48 = shufflevector <8 x float> %47, <8 x float> poison, <8 x i32> zeroinitializer - %invariant.op = fmul reassoc nsz arcp contract afn <8 x float> %48, - br label %49 - -49: ; preds = %49, %42 - %50 = phi i64 [ 0, %42 ], [ %76, %49 ] - %51 = shl i64 %50, 2 - %52 = or disjoint i64 %51, 1 - %53 = getelementptr inbounds float, ptr %2, i64 %52 - %54 = load <32 x float>, ptr %53, align 4, !tbaa !26 - %55 = fmul reassoc nsz arcp contract afn <32 x float> %54, %54 - %56 = shufflevector <32 x float> %55, <32 x float> poison, <8 x i32> - %57 = shufflevector <32 x float> %55, <32 x float> poison, <8 x i32> - %58 = fadd reassoc nsz arcp contract afn <8 x float> %57, %56 - %59 = tail call reassoc nsz arcp contract afn <8 x float> @llvm.sqrt.v8f32(<8 x float> %58) - %60 = fmul reassoc nsz arcp contract afn <8 x float> %59, %48 - %.reass = fmul reassoc nsz arcp contract afn <8 x float> %59, %invariant.op - %61 = fsub reassoc nsz arcp contract afn <8 x float> , %.reass - %62 = fadd reassoc nsz arcp contract afn <8 x float> %60, - %63 = getelementptr inbounds float, ptr %2, i64 %51 - %64 = load <32 x float>, ptr %63, align 4, !tbaa !26 - %65 = shufflevector <32 x float> %64, <32 x float> poison, <8 x i32> - %66 = shufflevector <32 x float> %64, <32 x float> poison, <8 x i32> - %67 = shufflevector <32 x float> %64, <32 x float> poison, <8 x i32> - %68 = shufflevector <32 x float> %64, <32 x float> poison, <8 x i32> - %69 = fmul reassoc nsz arcp contract afn <8 x float> %61, %65 - %70 = fmul reassoc nsz arcp contract afn <8 x float> %62, %66 - %71 = fmul reassoc nsz arcp contract afn <8 x float> %62, %67 - %72 = getelementptr float, ptr %3, i64 %51 - %73 = shufflevector <8 x float> %69, <8 x float> %70, <16 x i32> - %74 = shufflevector <8 x float> %71, <8 x float> %68, <16 x i32> - %75 = shufflevector <16 x float> %73, <16 x float> %74, <32 x i32> - store <32 x float> %75, ptr %72, align 4, !tbaa !26 - %76 = add nuw i64 %50, 8 - %77 = icmp eq i64 %76, %46 - br i1 %77, label %.loopexit1.loopexit, label %49, !llvm.loop !27 - -.loopexit1.loopexit: ; preds = %49 - %78 = shl nsw i64 %46, 2 + %34 = getelementptr i8, ptr %3, i64 %33 + %35 = getelementptr i8, ptr %2, i64 %33 + %36 = icmp ugt ptr %35, %3 + %37 = icmp ugt ptr %34, %2 + %38 = and i1 %36, %37 + br i1 %38, label %.loopexit1, label %39 + +39: ; preds = %32 + %40 = and i64 %30, 7 + %41 = icmp eq i64 %40, 0 + %42 = select i1 %41, i64 8, i64 %40 + %43 = sub nsw i64 %30, %42 + %44 = insertelement <8 x float> poison, float %26, i64 0 + %45 = shufflevector <8 x float> %44, <8 x float> poison, <8 x i32> zeroinitializer + %invariant.op = fmul reassoc nsz arcp contract afn <8 x float> %45, + br label %46 + +46: ; preds = %46, %39 + %47 = phi i64 [ 0, %39 ], [ %73, %46 ] + %48 = shl i64 %47, 2 + %49 = or disjoint i64 %48, 1 + %50 = getelementptr inbounds float, ptr %2, i64 %49 + %51 = load <32 x float>, ptr %50, align 4, !tbaa !26 + %52 = fmul reassoc nsz arcp contract afn <32 x float> %51, %51 + %53 = shufflevector <32 x float> %52, <32 x float> poison, <8 x i32> + %54 = shufflevector <32 x float> %52, <32 x float> poison, <8 x i32> + %55 = fadd reassoc nsz arcp contract afn <8 x float> %54, %53 + %56 = tail call reassoc nsz arcp contract afn <8 x float> @llvm.sqrt.v8f32(<8 x float> %55) + %57 = fmul reassoc nsz arcp contract afn <8 x float> %56, %45 + %.reass = fmul reassoc nsz arcp contract afn <8 x float> %56, %invariant.op + %58 = fsub reassoc nsz arcp contract afn <8 x float> , %.reass + %59 = fadd reassoc nsz arcp contract afn <8 x float> %57, + %60 = getelementptr inbounds float, ptr %2, i64 %48 + %61 = load <32 x float>, ptr %60, align 4, !tbaa !26 + %62 = shufflevector <32 x float> %61, <32 x float> poison, <8 x i32> + %63 = shufflevector <32 x float> %61, <32 x float> poison, <8 x i32> + %64 = shufflevector <32 x float> %61, <32 x float> poison, <8 x i32> + %65 = shufflevector <32 x float> %61, <32 x float> poison, <8 x i32> + %66 = fmul reassoc nsz arcp contract afn <8 x float> %58, %62 + %67 = fmul reassoc nsz arcp contract afn <8 x float> %59, %63 + %68 = fmul reassoc nsz arcp contract afn <8 x float> %59, %64 + %69 = getelementptr float, ptr %3, i64 %48 + %70 = shufflevector <8 x float> %66, <8 x float> %67, <16 x i32> + %71 = shufflevector <8 x float> %68, <8 x float> %65, <16 x i32> + %72 = shufflevector <16 x float> %70, <16 x float> %71, <32 x i32> + store <32 x float> %72, ptr %69, align 4, !tbaa !26 + %73 = add nuw i64 %47, 8 + %74 = icmp eq i64 %73, %43 + br i1 %74, label %.loopexit1.loopexit, label %46, !llvm.loop !27 + +.loopexit1.loopexit: ; preds = %46 + %75 = shl nsw i64 %43, 2 br label %.loopexit1 .loopexit1: ; preds = %.loopexit1.loopexit, %32, %19 - %79 = phi i64 [ 0, %32 ], [ 0, %19 ], [ %78, %.loopexit1.loopexit ] + %76 = phi i64 [ 0, %32 ], [ 0, %19 ], [ %75, %.loopexit1.loopexit ] %invariant.op2 = fmul reassoc nsz arcp contract afn float %25, 0x3F50000000000000 - br label %80 - -80: ; preds = %80, %.loopexit1 - %81 = phi i64 [ %109, %80 ], [ %79, %.loopexit1 ] - %82 = or disjoint i64 %81, 1 - %83 = getelementptr inbounds float, ptr %2, i64 %82 - %84 = load float, ptr %83, align 4, !tbaa !26 - %85 = fmul reassoc nsz arcp contract afn float %84, %84 - %86 = or disjoint i64 %81, 2 - %87 = getelementptr inbounds float, ptr %2, i64 %86 - %88 = load float, ptr %87, align 4, !tbaa !26 - %89 = fmul reassoc nsz arcp contract afn float %88, %88 - %90 = fadd reassoc nsz arcp contract afn float %89, %85 - %91 = tail call reassoc nsz arcp contract afn float @llvm.sqrt.f32(float %90) - %92 = fmul reassoc nsz arcp contract afn float %91, %26 - %.reass3 = fmul reassoc nsz arcp contract afn float %91, %invariant.op2 - %93 = fsub reassoc nsz arcp contract afn float 1.000000e+00, %.reass3 - %94 = fadd reassoc nsz arcp contract afn float %92, 1.000000e+00 - %95 = getelementptr inbounds float, ptr %2, i64 %81 - %96 = load float, ptr %95, align 4, !tbaa !26 - %97 = fmul reassoc nsz arcp contract afn float %93, %96 - %98 = getelementptr inbounds float, ptr %3, i64 %81 + br label %77 + +77: ; preds = %77, %.loopexit1 + %78 = phi i64 [ %106, %77 ], [ %76, %.loopexit1 ] + %79 = or disjoint i64 %78, 1 + %80 = getelementptr inbounds float, ptr %2, i64 %79 + %81 = load float, ptr %80, align 4, !tbaa !26 + %82 = fmul reassoc nsz arcp contract afn float %81, %81 + %83 = or disjoint i64 %78, 2 + %84 = getelementptr inbounds float, ptr %2, i64 %83 + %85 = load float, ptr %84, align 4, !tbaa !26 + %86 = fmul reassoc nsz arcp contract afn float %85, %85 + %87 = fadd reassoc nsz arcp contract afn float %86, %82 + %88 = tail call reassoc nsz arcp contract afn float @llvm.sqrt.f32(float %87) + %89 = fmul reassoc nsz arcp contract afn float %88, %26 + %.reass3 = fmul reassoc nsz arcp contract afn float %88, %invariant.op2 + %90 = fsub reassoc nsz arcp contract afn float 1.000000e+00, %.reass3 + %91 = fadd reassoc nsz arcp contract afn float %89, 1.000000e+00 + %92 = getelementptr inbounds float, ptr %2, i64 %78 + %93 = load float, ptr %92, align 4, !tbaa !26 + %94 = fmul reassoc nsz arcp contract afn float %90, %93 + %95 = getelementptr inbounds float, ptr %3, i64 %78 + store float %94, ptr %95, align 4, !tbaa !26 + %96 = load float, ptr %80, align 4, !tbaa !26 + %97 = fmul reassoc nsz arcp contract afn float %91, %96 + %98 = getelementptr inbounds float, ptr %3, i64 %79 store float %97, ptr %98, align 4, !tbaa !26 - %99 = load float, ptr %83, align 4, !tbaa !26 - %100 = fmul reassoc nsz arcp contract afn float %94, %99 - %101 = getelementptr inbounds float, ptr %3, i64 %82 + %99 = load float, ptr %84, align 4, !tbaa !26 + %100 = fmul reassoc nsz arcp contract afn float %91, %99 + %101 = getelementptr inbounds float, ptr %3, i64 %83 store float %100, ptr %101, align 4, !tbaa !26 - %102 = load float, ptr %87, align 4, !tbaa !26 - %103 = fmul reassoc nsz arcp contract afn float %94, %102 - %104 = getelementptr inbounds float, ptr %3, i64 %86 - store float %103, ptr %104, align 4, !tbaa !26 - %105 = or disjoint i64 %81, 3 - %106 = getelementptr inbounds float, ptr %2, i64 %105 - %107 = load float, ptr %106, align 4, !tbaa !26 - %108 = getelementptr inbounds float, ptr %3, i64 %105 - store float %107, ptr %108, align 4, !tbaa !26 - %109 = add nuw nsw i64 %81, 4 - %110 = icmp ult i64 %109, %27 - br i1 %110, label %80, label %.loopexit, !llvm.loop !30 - -.loopexit: ; preds = %80, %11, %6 + %102 = or disjoint i64 %78, 3 + %103 = getelementptr inbounds float, ptr %2, i64 %102 + %104 = load float, ptr %103, align 4, !tbaa !26 + %105 = getelementptr inbounds float, ptr %3, i64 %102 + store float %104, ptr %105, align 4, !tbaa !26 + %106 = add nuw nsw i64 %78, 4 + %107 = icmp ult i64 %106, %27 + br i1 %107, label %77, label %.loopexit, !llvm.loop !30 + +.loopexit: ; preds = %77, %11, %6 ret void } diff --git a/bench/delta-rs/optimized/1ccryk2t8gtcl1j4.ll b/bench/delta-rs/optimized/1ccryk2t8gtcl1j4.ll index 9ff573b266e..617a7a21ba0 100644 --- a/bench/delta-rs/optimized/1ccryk2t8gtcl1j4.ll +++ b/bench/delta-rs/optimized/1ccryk2t8gtcl1j4.ll @@ -863,16 +863,15 @@ define hidden void @"_ZN4core3ptr133drop_in_place$LT$alloc..sync..Weak$LT$$u5b$a %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !alias.scope !406, !noundef !4 %11 = shl nsw i64 %10, 3 - %12 = add i64 %11, 23 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0f001b4a4a2f0111E.llvm.11705908289436625823.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0f001b4a4a2f0111E.llvm.11705908289436625823.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #15, !noalias !406 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #15, !noalias !406 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0f001b4a4a2f0111E.llvm.11705908289436625823.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0f001b4a4a2f0111E.llvm.11705908289436625823.exit": ; preds = %1, %4, %8, %15 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0f001b4a4a2f0111E.llvm.11705908289436625823.exit": ; preds = %1, %4, %8, %14 ret void } @@ -894,16 +893,15 @@ define hidden void @"_ZN4core3ptr146drop_in_place$LT$alloc..sync..Weak$LT$$u5b$$ %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !alias.scope !409, !noundef !4 %11 = shl nsw i64 %10, 4 - %12 = add i64 %11, 23 - %13 = and i64 %12, -16 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1ef82dfc1a5166efE.llvm.11705908289436625823.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1ef82dfc1a5166efE.llvm.11705908289436625823.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #15, !noalias !409 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #15, !noalias !409 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1ef82dfc1a5166efE.llvm.11705908289436625823.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1ef82dfc1a5166efE.llvm.11705908289436625823.exit": ; preds = %1, %4, %8, %15 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1ef82dfc1a5166efE.llvm.11705908289436625823.exit": ; preds = %1, %4, %8, %14 ret void } @@ -30218,16 +30216,15 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !noundef !4 %11 = shl nsw i64 %10, 3 - %12 = add i64 %11, 23 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hac9da670e5b554aeE.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hac9da670e5b554aeE.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #15 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #15 br label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hac9da670e5b554aeE.exit" -"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hac9da670e5b554aeE.exit": ; preds = %15, %8, %1, %4 +"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hac9da670e5b554aeE.exit": ; preds = %14, %8, %1, %4 ret void } @@ -30248,16 +30245,15 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !noundef !4 %11 = shl nsw i64 %10, 4 - %12 = add i64 %11, 23 - %13 = and i64 %12, -16 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hac9da670e5b554aeE.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hac9da670e5b554aeE.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #15 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #15 br label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hac9da670e5b554aeE.exit" -"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hac9da670e5b554aeE.exit": ; preds = %15, %8, %1, %4 +"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hac9da670e5b554aeE.exit": ; preds = %14, %8, %1, %4 ret void } diff --git a/bench/delta-rs/optimized/3s3f23ex69abms10.ll b/bench/delta-rs/optimized/3s3f23ex69abms10.ll index 32a56390798..cc18fb54de3 100644 --- a/bench/delta-rs/optimized/3s3f23ex69abms10.ll +++ b/bench/delta-rs/optimized/3s3f23ex69abms10.ll @@ -12715,16 +12715,15 @@ define hidden void @"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$$u5b$a %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !alias.scope !2956, !noundef !5 %11 = mul nsw i64 %10, 24 - %12 = add i64 %11, 23 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h901a2bc7c9e8f9d2E.llvm.4057250340930679409.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h901a2bc7c9e8f9d2E.llvm.4057250340930679409.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #33, !noalias !2956 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #33, !noalias !2956 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h901a2bc7c9e8f9d2E.llvm.4057250340930679409.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h901a2bc7c9e8f9d2E.llvm.4057250340930679409.exit": ; preds = %1, %4, %8, %15 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h901a2bc7c9e8f9d2E.llvm.4057250340930679409.exit": ; preds = %1, %4, %8, %14 ret void } @@ -39130,16 +39129,15 @@ define hidden void @"_ZN4core3ptr133drop_in_place$LT$alloc..sync..Weak$LT$$u5b$a %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !alias.scope !13745, !noundef !5 %11 = shl nsw i64 %10, 3 - %12 = add i64 %11, 23 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h776b83bea138fea0E.llvm.4057250340930679409.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h776b83bea138fea0E.llvm.4057250340930679409.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #33, !noalias !13745 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #33, !noalias !13745 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h776b83bea138fea0E.llvm.4057250340930679409.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h776b83bea138fea0E.llvm.4057250340930679409.exit": ; preds = %1, %4, %8, %15 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h776b83bea138fea0E.llvm.4057250340930679409.exit": ; preds = %1, %4, %8, %14 ret void } @@ -46767,16 +46765,15 @@ define hidden void @"_ZN4core3ptr146drop_in_place$LT$alloc..sync..Weak$LT$$u5b$$ %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !alias.scope !16828, !noundef !5 %11 = shl nsw i64 %10, 4 - %12 = add i64 %11, 23 - %13 = and i64 %12, -16 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd5c2b50f1b6ba7fcE.llvm.4057250340930679409.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd5c2b50f1b6ba7fcE.llvm.4057250340930679409.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #33, !noalias !16828 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #33, !noalias !16828 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd5c2b50f1b6ba7fcE.llvm.4057250340930679409.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd5c2b50f1b6ba7fcE.llvm.4057250340930679409.exit": ; preds = %1, %4, %8, %15 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd5c2b50f1b6ba7fcE.llvm.4057250340930679409.exit": ; preds = %1, %4, %8, %14 ret void } @@ -228912,16 +228909,15 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !noundef !5 %11 = shl nsw i64 %10, 3 - %12 = add i64 %11, 23 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #33 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #33 br label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit" -"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit": ; preds = %15, %8, %1, %4 +"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit": ; preds = %14, %8, %1, %4 ret void } @@ -229476,16 +229472,15 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !noundef !5 %11 = mul nsw i64 %10, 24 - %12 = add i64 %11, 23 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #33 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #33 br label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit" -"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit": ; preds = %15, %8, %1, %4 +"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit": ; preds = %14, %8, %1, %4 ret void } @@ -230604,16 +230599,15 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !noundef !5 %11 = shl nsw i64 %10, 4 - %12 = add i64 %11, 23 - %13 = and i64 %12, -16 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #33 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #33 br label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit" -"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit": ; preds = %15, %8, %1, %4 +"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h5b002b81370f4925E.llvm.4057250340930679409.exit": ; preds = %14, %8, %1, %4 ret void } diff --git a/bench/diesel-rs/optimized/2nnbd38jnysamhhd.ll b/bench/diesel-rs/optimized/2nnbd38jnysamhhd.ll index 3a02daa0b7f..ebd7de44899 100644 --- a/bench/diesel-rs/optimized/2nnbd38jnysamhhd.ll +++ b/bench/diesel-rs/optimized/2nnbd38jnysamhhd.ll @@ -134,16 +134,15 @@ define hidden void @"_ZN4core3ptr101drop_in_place$LT$alloc..rc..Rc$LT$$u5b$core. 17: ; preds = %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit.i" %18 = mul nsw i64 %7, 24 - %19 = add i64 %18, 23 - %20 = and i64 %19, -8 - %21 = icmp eq i64 %20, 0 - br i1 %21, label %"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he0add8d2cba38133E.llvm.10987160594893011292.exit", label %22 + %19 = add i64 %18, 16 + %20 = icmp eq i64 %19, 0 + br i1 %20, label %"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he0add8d2cba38133E.llvm.10987160594893011292.exit", label %21 -22: ; preds = %17 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %20, i64 noundef 8) #13, !noalias !19 +21: ; preds = %17 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %19, i64 noundef 8) #13, !noalias !19 br label %"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he0add8d2cba38133E.llvm.10987160594893011292.exit" -"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he0add8d2cba38133E.llvm.10987160594893011292.exit": ; preds = %1, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit.i", %17, %22 +"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he0add8d2cba38133E.llvm.10987160594893011292.exit": ; preds = %1, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit.i", %17, %21 ret void } @@ -282,7 +281,7 @@ define hidden void @"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$all %3 = icmp eq ptr %2, null br i1 %3, label %"_ZN4core3ptr101drop_in_place$LT$alloc..rc..Rc$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$$GT$17h3ebf6c0d9adadea4E.llvm.10987160594893011292.exit", label %4 -"_ZN4core3ptr101drop_in_place$LT$alloc..rc..Rc$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$$GT$17h3ebf6c0d9adadea4E.llvm.10987160594893011292.exit": ; preds = %24, %19, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit.i.i", %4, %1 +"_ZN4core3ptr101drop_in_place$LT$alloc..rc..Rc$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$$GT$17h3ebf6c0d9adadea4E.llvm.10987160594893011292.exit": ; preds = %23, %19, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit.i.i", %4, %1 ret void 4: ; preds = %1 @@ -332,13 +331,12 @@ define hidden void @"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$all 19: ; preds = %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit.i.i" %20 = mul nsw i64 %9, 24 - %21 = add i64 %20, 23 - %22 = and i64 %21, -8 - %23 = icmp eq i64 %22, 0 - br i1 %23, label %"_ZN4core3ptr101drop_in_place$LT$alloc..rc..Rc$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$$GT$17h3ebf6c0d9adadea4E.llvm.10987160594893011292.exit", label %24 + %21 = add i64 %20, 16 + %22 = icmp eq i64 %21, 0 + br i1 %22, label %"_ZN4core3ptr101drop_in_place$LT$alloc..rc..Rc$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$$GT$17h3ebf6c0d9adadea4E.llvm.10987160594893011292.exit", label %23 -24: ; preds = %19 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %22, i64 noundef 8) #13, !noalias !81 +23: ; preds = %19 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %21, i64 noundef 8) #13, !noalias !81 br label %"_ZN4core3ptr101drop_in_place$LT$alloc..rc..Rc$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$$GT$17h3ebf6c0d9adadea4E.llvm.10987160594893011292.exit" } @@ -2310,16 +2308,15 @@ define hidden void @"_ZN4core3ptr86drop_in_place$LT$diesel..sqlite..connection.. 38: ; preds = %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit.i.i.i" %39 = mul nsw i64 %28, 24 - %40 = add i64 %39, 23 - %41 = and i64 %40, -8 - %42 = icmp eq i64 %41, 0 - br i1 %42, label %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..rc..Rc$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$$GT$$GT$17h57d94e1aff01d95bE.llvm.10987160594893011292.exit", label %43 + %40 = add i64 %39, 16 + %41 = icmp eq i64 %40, 0 + br i1 %41, label %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..rc..Rc$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$$GT$$GT$17h57d94e1aff01d95bE.llvm.10987160594893011292.exit", label %42 -43: ; preds = %38 - tail call void @__rust_dealloc(ptr noundef nonnull %21, i64 noundef %41, i64 noundef 8) #13, !noalias !1035 +42: ; preds = %38 + tail call void @__rust_dealloc(ptr noundef nonnull %21, i64 noundef %40, i64 noundef 8) #13, !noalias !1035 br label %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..rc..Rc$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$$GT$$GT$17h57d94e1aff01d95bE.llvm.10987160594893011292.exit" -"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..rc..Rc$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$$GT$$GT$17h57d94e1aff01d95bE.llvm.10987160594893011292.exit": ; preds = %"_ZN4core3ptr93drop_in_place$LT$diesel..sqlite..connection..statement_iterator..PrivateStatementIterator$GT$17hb674998a29416202E.llvm.10987160594893011292.exit", %23, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit.i.i.i", %38, %43 +"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..rc..Rc$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$$GT$$GT$17h57d94e1aff01d95bE.llvm.10987160594893011292.exit": ; preds = %"_ZN4core3ptr93drop_in_place$LT$diesel..sqlite..connection..statement_iterator..PrivateStatementIterator$GT$17hb674998a29416202E.llvm.10987160594893011292.exit", %23, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit.i.i.i", %38, %42 ret void } @@ -2915,7 +2912,7 @@ define hidden void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops.. %3 = add i64 %.val, -1 store i64 %3, ptr %2, align 8 %4 = icmp eq i64 %3, 0 - br i1 %4, label %5, label %75 + br i1 %4, label %5, label %74 5: ; preds = %1 tail call void @llvm.experimental.noalias.scope.decl(metadata !1134) @@ -3094,28 +3091,27 @@ common.resume.i.i.i: ; preds = %.body.i.i.i, %12, % 65: ; preds = %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit.i.i.i.i.i" %66 = mul nsw i64 %55, 24 - %67 = add i64 %66, 23 - %68 = and i64 %67, -8 - %69 = icmp eq i64 %68, 0 - br i1 %69, label %"_ZN4core3ptr97drop_in_place$LT$core..cell..RefCell$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$17h777d03b077e748deE.exit", label %70 + %67 = add i64 %66, 16 + %68 = icmp eq i64 %67, 0 + br i1 %68, label %"_ZN4core3ptr97drop_in_place$LT$core..cell..RefCell$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$17h777d03b077e748deE.exit", label %69 -70: ; preds = %65 - tail call void @__rust_dealloc(ptr noundef nonnull %50, i64 noundef %68, i64 noundef 8) #13, !noalias !1165 +69: ; preds = %65 + tail call void @__rust_dealloc(ptr noundef nonnull %50, i64 noundef %67, i64 noundef 8) #13, !noalias !1165 br label %"_ZN4core3ptr97drop_in_place$LT$core..cell..RefCell$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$17h777d03b077e748deE.exit" -"_ZN4core3ptr97drop_in_place$LT$core..cell..RefCell$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$17h777d03b077e748deE.exit": ; preds = %15, %15, %17, %"_ZN4core3ptr130drop_in_place$LT$alloc..vec..Vec$LT$core..option..Option$LT$diesel..sqlite..connection..sqlite_value..OwnedSqliteValue$GT$$GT$$GT$17he98e644c6f158207E.exit.i.i.i", %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit.i.i.i.i.i", %65, %70 - %71 = getelementptr i8, ptr %2, i64 8 - %.val2 = load i64, ptr %71, align 8, !noundef !4 - %72 = add i64 %.val2, -1 - store i64 %72, ptr %71, align 8 - %73 = icmp eq i64 %72, 0 - br i1 %73, label %74, label %75 +"_ZN4core3ptr97drop_in_place$LT$core..cell..RefCell$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$17h777d03b077e748deE.exit": ; preds = %15, %15, %17, %"_ZN4core3ptr130drop_in_place$LT$alloc..vec..Vec$LT$core..option..Option$LT$diesel..sqlite..connection..sqlite_value..OwnedSqliteValue$GT$$GT$$GT$17he98e644c6f158207E.exit.i.i.i", %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit.i.i.i.i.i", %65, %69 + %70 = getelementptr i8, ptr %2, i64 8 + %.val2 = load i64, ptr %70, align 8, !noundef !4 + %71 = add i64 %.val2, -1 + store i64 %71, ptr %70, align 8 + %72 = icmp eq i64 %71, 0 + br i1 %72, label %73, label %74 -74: ; preds = %"_ZN4core3ptr97drop_in_place$LT$core..cell..RefCell$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$17h777d03b077e748deE.exit" +73: ; preds = %"_ZN4core3ptr97drop_in_place$LT$core..cell..RefCell$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$17h777d03b077e748deE.exit" tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 128, i64 noundef 8) #13 - br label %75 + br label %74 -75: ; preds = %74, %"_ZN4core3ptr97drop_in_place$LT$core..cell..RefCell$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$17h777d03b077e748deE.exit", %1 +74: ; preds = %73, %"_ZN4core3ptr97drop_in_place$LT$core..cell..RefCell$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$17h777d03b077e748deE.exit", %1 ret void } @@ -3166,16 +3162,15 @@ define hidden void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops.. 17: ; preds = %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit" %18 = mul nsw i64 %7, 24 - %19 = add i64 %18, 23 - %20 = and i64 %19, -8 - %21 = icmp eq i64 %20, 0 - br i1 %21, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.10987160594893011292.exit", label %22 + %19 = add i64 %18, 16 + %20 = icmp eq i64 %19, 0 + br i1 %20, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.10987160594893011292.exit", label %21 -22: ; preds = %17 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %20, i64 noundef 8) #13 +21: ; preds = %17 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %19, i64 noundef 8) #13 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.10987160594893011292.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.10987160594893011292.exit": ; preds = %22, %17, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit", %1 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.10987160594893011292.exit": ; preds = %21, %17, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h491766d4e9fcd3e8E.exit", %1 ret void } diff --git a/bench/diesel-rs/optimized/5ced59ru0k2b91x9.ll b/bench/diesel-rs/optimized/5ced59ru0k2b91x9.ll index 6c536a1e636..a97661eff20 100644 --- a/bench/diesel-rs/optimized/5ced59ru0k2b91x9.ll +++ b/bench/diesel-rs/optimized/5ced59ru0k2b91x9.ll @@ -441,16 +441,15 @@ define hidden void @"_ZN4core3ptr101drop_in_place$LT$alloc..rc..Rc$LT$$u5b$core. 22: ; preds = %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit.i" %23 = mul nsw i64 %7, 24 - %24 = add i64 %23, 23 - %25 = and i64 %24, -8 - %26 = icmp eq i64 %25, 0 - br i1 %26, label %"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h566908caf190da8aE.llvm.2909037117879540835.exit", label %27 + %24 = add i64 %23, 16 + %25 = icmp eq i64 %24, 0 + br i1 %25, label %"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h566908caf190da8aE.llvm.2909037117879540835.exit", label %26 -27: ; preds = %22 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %25, i64 noundef 8) #25, !noalias !51 +26: ; preds = %22 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %24, i64 noundef 8) #25, !noalias !51 br label %"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h566908caf190da8aE.llvm.2909037117879540835.exit" -"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h566908caf190da8aE.llvm.2909037117879540835.exit": ; preds = %1, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit.i", %22, %27 +"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h566908caf190da8aE.llvm.2909037117879540835.exit": ; preds = %1, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit.i", %22, %26 ret void } @@ -6997,7 +6996,7 @@ common.resume: ; preds = %19, %4 invoke void @"_ZN4core3ptr130drop_in_place$LT$alloc..vec..Vec$LT$core..option..Option$LT$diesel..sqlite..connection..sqlite_value..OwnedSqliteValue$GT$$GT$$GT$17hd21fcfe231fe1ed2E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %18) to label %22 unwind label %19 -"_ZN4core3ptr67drop_in_place$LT$diesel..sqlite..connection..stmt..StatementUse$GT$17hc56927dc247cb147E.exit": ; preds = %49, %44, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit.i.i", %22, %13, %11, %7 +"_ZN4core3ptr67drop_in_place$LT$diesel..sqlite..connection..stmt..StatementUse$GT$17hc56927dc247cb147E.exit": ; preds = %48, %44, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit.i.i", %22, %13, %11, %7 ret void 19: ; preds = %17 @@ -7063,13 +7062,12 @@ common.resume: ; preds = %19, %4 44: ; preds = %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit.i.i" %45 = mul nsw i64 %29, 24 - %46 = add i64 %45, 23 - %47 = and i64 %46, -8 - %48 = icmp eq i64 %47, 0 - br i1 %48, label %"_ZN4core3ptr67drop_in_place$LT$diesel..sqlite..connection..stmt..StatementUse$GT$17hc56927dc247cb147E.exit", label %49 + %46 = add i64 %45, 16 + %47 = icmp eq i64 %46, 0 + br i1 %47, label %"_ZN4core3ptr67drop_in_place$LT$diesel..sqlite..connection..stmt..StatementUse$GT$17hc56927dc247cb147E.exit", label %48 -49: ; preds = %44 - tail call void @__rust_dealloc(ptr noundef nonnull %24, i64 noundef %47, i64 noundef 8) #25, !noalias !3613 +48: ; preds = %44 + tail call void @__rust_dealloc(ptr noundef nonnull %24, i64 noundef %46, i64 noundef 8) #25, !noalias !3613 br label %"_ZN4core3ptr67drop_in_place$LT$diesel..sqlite..connection..stmt..StatementUse$GT$17hc56927dc247cb147E.exit" } @@ -7180,34 +7178,33 @@ define hidden void @"_ZN4core3ptr71drop_in_place$LT$diesel..sqlite..connection.. 34: ; preds = %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit.i.i" %35 = mul nsw i64 %19, 24 - %36 = add i64 %35, 23 - %37 = and i64 %36, -8 - %38 = icmp eq i64 %37, 0 - br i1 %38, label %"_ZN92_$LT$diesel..sqlite..connection..functions..FunctionRow$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8f297e8b42d9433eE.exit", label %39 + %36 = add i64 %35, 16 + %37 = icmp eq i64 %36, 0 + br i1 %37, label %"_ZN92_$LT$diesel..sqlite..connection..functions..FunctionRow$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8f297e8b42d9433eE.exit", label %38 -39: ; preds = %34 - tail call void @__rust_dealloc(ptr noundef nonnull %14, i64 noundef %37, i64 noundef 8) #25, !noalias !3673 +38: ; preds = %34 + tail call void @__rust_dealloc(ptr noundef nonnull %14, i64 noundef %36, i64 noundef 8) #25, !noalias !3673 br label %"_ZN92_$LT$diesel..sqlite..connection..functions..FunctionRow$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8f297e8b42d9433eE.exit" -"_ZN92_$LT$diesel..sqlite..connection..functions..FunctionRow$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8f297e8b42d9433eE.exit": ; preds = %39, %34, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit.i.i", %12, %8, %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$9is_unique17hc1db5a1ed129f391E.llvm.2909037117879540835.exit.i", %1 +"_ZN92_$LT$diesel..sqlite..connection..functions..FunctionRow$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8f297e8b42d9433eE.exit": ; preds = %38, %34, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit.i.i", %12, %8, %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$9is_unique17hc1db5a1ed129f391E.llvm.2909037117879540835.exit.i", %1 %.val.i.i = load i64, ptr %2, align 8, !noalias !3699, !noundef !4 - %40 = add i64 %.val.i.i, -1 - store i64 %40, ptr %2, align 8, !noalias !3699 - %41 = icmp eq i64 %40, 0 - br i1 %41, label %42, label %"_ZN4core3ptr164drop_in_place$LT$alloc..rc..Rc$LT$core..cell..RefCell$LT$core..mem..manually_drop..ManuallyDrop$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$$GT$$GT$17hcf4ba4da0a93ae77E.llvm.2909037117879540835.exit" + %39 = add i64 %.val.i.i, -1 + store i64 %39, ptr %2, align 8, !noalias !3699 + %40 = icmp eq i64 %39, 0 + br i1 %40, label %41, label %"_ZN4core3ptr164drop_in_place$LT$alloc..rc..Rc$LT$core..cell..RefCell$LT$core..mem..manually_drop..ManuallyDrop$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$$GT$$GT$17hcf4ba4da0a93ae77E.llvm.2909037117879540835.exit" -42: ; preds = %"_ZN92_$LT$diesel..sqlite..connection..functions..FunctionRow$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8f297e8b42d9433eE.exit" +41: ; preds = %"_ZN92_$LT$diesel..sqlite..connection..functions..FunctionRow$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8f297e8b42d9433eE.exit" %.val2.i.i1 = load i64, ptr %3, align 8, !noalias !3699, !noundef !4 - %43 = add i64 %.val2.i.i1, -1 - store i64 %43, ptr %3, align 8, !noalias !3699 - %44 = icmp eq i64 %43, 0 - br i1 %44, label %45, label %"_ZN4core3ptr164drop_in_place$LT$alloc..rc..Rc$LT$core..cell..RefCell$LT$core..mem..manually_drop..ManuallyDrop$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$$GT$$GT$17hcf4ba4da0a93ae77E.llvm.2909037117879540835.exit" + %42 = add i64 %.val2.i.i1, -1 + store i64 %42, ptr %3, align 8, !noalias !3699 + %43 = icmp eq i64 %42, 0 + br i1 %43, label %44, label %"_ZN4core3ptr164drop_in_place$LT$alloc..rc..Rc$LT$core..cell..RefCell$LT$core..mem..manually_drop..ManuallyDrop$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$$GT$$GT$17hcf4ba4da0a93ae77E.llvm.2909037117879540835.exit" -45: ; preds = %42 +44: ; preds = %41 tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 128, i64 noundef 8) #25, !noalias !3699 br label %"_ZN4core3ptr164drop_in_place$LT$alloc..rc..Rc$LT$core..cell..RefCell$LT$core..mem..manually_drop..ManuallyDrop$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$$GT$$GT$17hcf4ba4da0a93ae77E.llvm.2909037117879540835.exit" -"_ZN4core3ptr164drop_in_place$LT$alloc..rc..Rc$LT$core..cell..RefCell$LT$core..mem..manually_drop..ManuallyDrop$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$$GT$$GT$17hcf4ba4da0a93ae77E.llvm.2909037117879540835.exit": ; preds = %"_ZN92_$LT$diesel..sqlite..connection..functions..FunctionRow$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8f297e8b42d9433eE.exit", %42, %45 +"_ZN4core3ptr164drop_in_place$LT$alloc..rc..Rc$LT$core..cell..RefCell$LT$core..mem..manually_drop..ManuallyDrop$LT$diesel..sqlite..connection..row..PrivateSqliteRow$GT$$GT$$GT$$GT$17hcf4ba4da0a93ae77E.llvm.2909037117879540835.exit": ; preds = %"_ZN92_$LT$diesel..sqlite..connection..functions..FunctionRow$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8f297e8b42d9433eE.exit", %41, %44 ret void } @@ -10052,16 +10049,15 @@ define hidden void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops.. 22: ; preds = %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit" %23 = mul nsw i64 %7, 24 - %24 = add i64 %23, 23 - %25 = and i64 %24, -8 - %26 = icmp eq i64 %25, 0 - br i1 %26, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.2909037117879540835.exit", label %27 + %24 = add i64 %23, 16 + %25 = icmp eq i64 %24, 0 + br i1 %25, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.2909037117879540835.exit", label %26 -27: ; preds = %22 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %25, i64 noundef 8) #25 +26: ; preds = %22 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %24, i64 noundef 8) #25 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.2909037117879540835.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.2909037117879540835.exit": ; preds = %27, %22, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit", %1 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.2909037117879540835.exit": ; preds = %26, %22, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit", %1 ret void } @@ -12582,7 +12578,7 @@ define void @"_ZN92_$LT$diesel..sqlite..connection..functions..FunctionRow$u20$a %11 = icmp eq i64 %10, 2 br i1 %11, label %12, label %"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h566908caf190da8aE.llvm.2909037117879540835.exit" -"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h566908caf190da8aE.llvm.2909037117879540835.exit": ; preds = %1, %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$9is_unique17hc1db5a1ed129f391E.llvm.2909037117879540835.exit", %39, %34, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit.i", %12, %8 +"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h566908caf190da8aE.llvm.2909037117879540835.exit": ; preds = %1, %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$9is_unique17hc1db5a1ed129f391E.llvm.2909037117879540835.exit", %38, %34, %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit.i", %12, %8 ret void 12: ; preds = %8 @@ -12639,13 +12635,12 @@ define void @"_ZN92_$LT$diesel..sqlite..connection..functions..FunctionRow$u20$a 34: ; preds = %"_ZN4core3ptr80drop_in_place$LT$$u5b$core..option..Option$LT$alloc..string..String$GT$$u5d$$GT$17h9f4393cf90536be7E.llvm.2909037117879540835.exit.i" %35 = mul nsw i64 %19, 24 - %36 = add i64 %35, 23 - %37 = and i64 %36, -8 - %38 = icmp eq i64 %37, 0 - br i1 %38, label %"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h566908caf190da8aE.llvm.2909037117879540835.exit", label %39 + %36 = add i64 %35, 16 + %37 = icmp eq i64 %36, 0 + br i1 %37, label %"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h566908caf190da8aE.llvm.2909037117879540835.exit", label %38 -39: ; preds = %34 - tail call void @__rust_dealloc(ptr noundef nonnull %14, i64 noundef %37, i64 noundef 8) #25, !noalias !5575 +38: ; preds = %34 + tail call void @__rust_dealloc(ptr noundef nonnull %14, i64 noundef %36, i64 noundef 8) #25, !noalias !5575 br label %"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h566908caf190da8aE.llvm.2909037117879540835.exit" } diff --git a/bench/draco/optimized/symbol_encoding.cc.ll b/bench/draco/optimized/symbol_encoding.cc.ll index 537ca773b9c..8efd8dc1940 100644 --- a/bench/draco/optimized/symbol_encoding.cc.ll +++ b/bench/draco/optimized/symbol_encoding.cc.ll @@ -1159,7 +1159,7 @@ define linkonce_odr noundef zeroext i1 @_ZN5draco19EncodeTaggedSymbolsINS_17RAns %35 = sub i64 %33, %34 %36 = getelementptr inbounds i8, ptr %8, i64 56 store i64 %35, ptr %36, align 8 - %37 = add i64 %29, 39 + %37 = add i64 %29, 38 %38 = lshr i64 %37, 3 %39 = add nuw nsw i64 %38, 8 %40 = add i64 %39, %35 @@ -4485,7 +4485,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -4659,7 +4659,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -4833,7 +4833,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -5007,7 +5007,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -5181,7 +5181,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -5355,7 +5355,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -5529,7 +5529,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -5703,7 +5703,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -5877,7 +5877,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -6051,7 +6051,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -6225,7 +6225,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -6399,7 +6399,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -6573,7 +6573,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -6747,7 +6747,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -6921,7 +6921,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -7095,7 +7095,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -7269,7 +7269,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 @@ -7443,7 +7443,7 @@ _ZNSt6vectorImSaImEEC2EmRKmRKS0_.exit: ; preds = %.noexc, %4 %33 = sub i64 %31, %32 %34 = getelementptr inbounds i8, ptr %5, i64 56 store i64 %33, ptr %34, align 8 - %35 = add i64 %27, 39 + %35 = add i64 %27, 38 %36 = lshr i64 %35, 3 %37 = add nuw nsw i64 %36, 8 %38 = add i64 %37, %33 diff --git a/bench/duckdb/optimized/ub_duckdb_storage_compression.cpp.ll b/bench/duckdb/optimized/ub_duckdb_storage_compression.cpp.ll index 7f544562b03..6f7c8949f3b 100644 --- a/bench/duckdb/optimized/ub_duckdb_storage_compression.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_storage_compression.cpp.ll @@ -31796,7 +31796,7 @@ entry: %max_rle_count = getelementptr inbounds i8, ptr %this, i64 96 %1 = load i64, ptr %max_rle_count, align 8, !tbaa !943 %mul2 = shl i64 %1, 1 - %add.i = add i64 %mul, 15 + %add.i = add i64 %mul, 14 %div1.i = and i64 %add.i, -8 %add6 = add i64 %div1.i, %mul %handle = getelementptr inbounds i8, ptr %this, i64 32 @@ -33574,7 +33574,7 @@ entry: %1 = load i64, ptr %max_rle_count, align 8, !tbaa !977 %mul2 = shl i64 %1, 2 %mul4 = shl i64 %0, 2 - %add.i = add i64 %mul4, 15 + %add.i = add i64 %mul4, 12 %div1.i = and i64 %add.i, -8 %add6 = add i64 %div1.i, %mul %handle = getelementptr inbounds i8, ptr %this, i64 32 @@ -35298,19 +35298,18 @@ entry: %1 = load i64, ptr %max_rle_count, align 8, !tbaa !1011 %mul2 = shl i64 %1, 3 %mul4 = shl i64 %0, 3 - %add.i = add i64 %mul4, 15 - %div1.i = and i64 %add.i, -8 - %add6 = add i64 %div1.i, %mul + %add.i = add i64 %mul4, 8 + %add6 = add i64 %add.i, %mul %handle = getelementptr inbounds i8, ptr %this, i64 32 %node.i = getelementptr inbounds i8, ptr %this, i64 48 %2 = load ptr, ptr %node.i, align 8, !tbaa !207 %buffer.i = getelementptr inbounds i8, ptr %2, i64 24 %3 = load ptr, ptr %buffer.i, align 8, !tbaa !209 - %add.ptr = getelementptr inbounds i8, ptr %3, i64 %div1.i + %add.ptr = getelementptr inbounds i8, ptr %3, i64 %add.i %4 = getelementptr i8, ptr %3, i64 %mul2 %add.ptr8 = getelementptr i8, ptr %4, i64 8 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr, ptr align 1 %add.ptr8, i64 %mul, i1 false) - store i64 %div1.i, ptr %3, align 1 + store i64 %add.i, ptr %3, align 1 tail call void @_ZN6duckdb12BufferHandle7DestroyEv(ptr noundef nonnull align 8 dereferenceable(24) %handle) %checkpointer = getelementptr inbounds i8, ptr %this, i64 8 %5 = load ptr, ptr %checkpointer, align 8, !tbaa !1009 @@ -40138,7 +40137,7 @@ entry: %max_rle_count = getelementptr inbounds i8, ptr %this, i64 96 %1 = load i64, ptr %max_rle_count, align 8, !tbaa !1111 %mul2 = shl i64 %1, 1 - %add.i = add i64 %mul, 15 + %add.i = add i64 %mul, 14 %div1.i = and i64 %add.i, -8 %add6 = add i64 %div1.i, %mul %handle = getelementptr inbounds i8, ptr %this, i64 32 @@ -41916,7 +41915,7 @@ entry: %1 = load i64, ptr %max_rle_count, align 8, !tbaa !1145 %mul2 = shl i64 %1, 2 %mul4 = shl i64 %0, 2 - %add.i = add i64 %mul4, 15 + %add.i = add i64 %mul4, 12 %div1.i = and i64 %add.i, -8 %add6 = add i64 %div1.i, %mul %handle = getelementptr inbounds i8, ptr %this, i64 32 @@ -43632,19 +43631,18 @@ entry: %1 = load i64, ptr %max_rle_count, align 8, !tbaa !1179 %mul2 = shl i64 %1, 3 %mul4 = shl i64 %0, 3 - %add.i = add i64 %mul4, 15 - %div1.i = and i64 %add.i, -8 - %add6 = add i64 %div1.i, %mul + %add.i = add i64 %mul4, 8 + %add6 = add i64 %add.i, %mul %handle = getelementptr inbounds i8, ptr %this, i64 32 %node.i = getelementptr inbounds i8, ptr %this, i64 48 %2 = load ptr, ptr %node.i, align 8, !tbaa !207 %buffer.i = getelementptr inbounds i8, ptr %2, i64 24 %3 = load ptr, ptr %buffer.i, align 8, !tbaa !209 - %add.ptr = getelementptr inbounds i8, ptr %3, i64 %div1.i + %add.ptr = getelementptr inbounds i8, ptr %3, i64 %add.i %4 = getelementptr i8, ptr %3, i64 %mul2 %add.ptr8 = getelementptr i8, ptr %4, i64 8 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr, ptr align 1 %add.ptr8, i64 %mul, i1 false) - store i64 %div1.i, ptr %3, align 1 + store i64 %add.i, ptr %3, align 1 tail call void @_ZN6duckdb12BufferHandle7DestroyEv(ptr noundef nonnull align 8 dereferenceable(24) %handle) %checkpointer = getelementptr inbounds i8, ptr %this, i64 8 %5 = load ptr, ptr %checkpointer, align 8, !tbaa !1177 @@ -45368,7 +45366,7 @@ entry: %1 = load i64, ptr %max_rle_count, align 8, !tbaa !1213 %mul2 = shl i64 %1, 2 %mul4 = shl i64 %0, 2 - %add.i = add i64 %mul4, 15 + %add.i = add i64 %mul4, 12 %div1.i = and i64 %add.i, -8 %add6 = add i64 %div1.i, %mul %handle = getelementptr inbounds i8, ptr %this, i64 32 @@ -47154,19 +47152,18 @@ entry: %1 = load i64, ptr %max_rle_count, align 8, !tbaa !1247 %mul2 = shl i64 %1, 3 %mul4 = shl i64 %0, 3 - %add.i = add i64 %mul4, 15 - %div1.i = and i64 %add.i, -8 - %add6 = add i64 %div1.i, %mul + %add.i = add i64 %mul4, 8 + %add6 = add i64 %add.i, %mul %handle = getelementptr inbounds i8, ptr %this, i64 32 %node.i = getelementptr inbounds i8, ptr %this, i64 48 %2 = load ptr, ptr %node.i, align 8, !tbaa !207 %buffer.i = getelementptr inbounds i8, ptr %2, i64 24 %3 = load ptr, ptr %buffer.i, align 8, !tbaa !209 - %add.ptr = getelementptr inbounds i8, ptr %3, i64 %div1.i + %add.ptr = getelementptr inbounds i8, ptr %3, i64 %add.i %4 = getelementptr i8, ptr %3, i64 %mul2 %add.ptr8 = getelementptr i8, ptr %4, i64 8 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr, ptr align 1 %add.ptr8, i64 %mul, i1 false) - store i64 %div1.i, ptr %3, align 1 + store i64 %add.i, ptr %3, align 1 tail call void @_ZN6duckdb12BufferHandle7DestroyEv(ptr noundef nonnull align 8 dereferenceable(24) %handle) %checkpointer = getelementptr inbounds i8, ptr %this, i64 8 %5 = load ptr, ptr %checkpointer, align 8, !tbaa !1245 @@ -47906,19 +47903,18 @@ entry: %1 = load i64, ptr %max_rle_count, align 8, !tbaa !1257 %mul2 = shl i64 %1, 3 %mul4 = shl i64 %0, 3 - %add.i = add i64 %mul4, 15 - %div1.i = and i64 %add.i, -8 - %add6 = add i64 %div1.i, %mul + %add.i = add i64 %mul4, 8 + %add6 = add i64 %add.i, %mul %handle = getelementptr inbounds i8, ptr %this, i64 32 %node.i = getelementptr inbounds i8, ptr %this, i64 48 %2 = load ptr, ptr %node.i, align 8, !tbaa !207 %buffer.i = getelementptr inbounds i8, ptr %2, i64 24 %3 = load ptr, ptr %buffer.i, align 8, !tbaa !209 - %add.ptr = getelementptr inbounds i8, ptr %3, i64 %div1.i + %add.ptr = getelementptr inbounds i8, ptr %3, i64 %add.i %4 = getelementptr i8, ptr %3, i64 %mul2 %add.ptr8 = getelementptr i8, ptr %4, i64 8 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr, ptr align 1 %add.ptr8, i64 %mul, i1 false) - store i64 %div1.i, ptr %3, align 1 + store i64 %add.i, ptr %3, align 1 tail call void @_ZN6duckdb12BufferHandle7DestroyEv(ptr noundef nonnull align 8 dereferenceable(24) %handle) %checkpointer = getelementptr inbounds i8, ptr %this, i64 8 %5 = load ptr, ptr %checkpointer, align 8, !tbaa !1255 @@ -55149,7 +55145,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 10 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 8 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1386 @@ -55221,7 +55217,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 9 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 8 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1386 @@ -58860,7 +58856,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 13 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 12 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1475 @@ -58972,7 +58968,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 11 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 8 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1475 @@ -62650,7 +62646,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 19 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 16 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1566 @@ -62751,7 +62747,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 15 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 12 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1566 @@ -66011,7 +66007,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 31 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 28 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1647 @@ -66116,7 +66112,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 23 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 20 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1647 @@ -70137,7 +70133,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 10 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 8 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1717 @@ -70209,7 +70205,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 9 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 8 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1717 @@ -73534,7 +73530,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 13 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 12 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1801 @@ -73646,7 +73642,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 11 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 8 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1801 @@ -76969,7 +76965,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 19 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 16 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1888 @@ -77070,7 +77066,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 15 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 12 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1888 @@ -80288,7 +80284,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 31 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 28 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1964 @@ -80393,7 +80389,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 23 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 20 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !1964 @@ -83696,7 +83692,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 55 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 52 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !2019 @@ -83804,7 +83800,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 39 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 36 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !2019 @@ -85425,7 +85421,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 31 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 28 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !2036 @@ -85533,7 +85529,7 @@ entry: %mul.i = mul i64 %retval.0.i.i, %conv.i %div2.i = lshr exact i64 %mul.i, 3 %data_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 56 - %add.i.i.i.i = add nuw nsw i64 %div2.i, 23 + %add.i.i.i.i = add nuw nsw i64 %div2.i, 20 %div1.i.i.i.i = and i64 %add.i.i.i.i, 4611686018427387896 %metadata_ptr.i.i.i = getelementptr inbounds i8, ptr %data_ptr, i64 64 %0 = load ptr, ptr %metadata_ptr.i.i.i, align 8, !tbaa !2036 diff --git a/bench/duckdb/optimized/ub_duckdb_transaction.cpp.ll b/bench/duckdb/optimized/ub_duckdb_transaction.cpp.ll index 2d822bf7a62..e98a4adfed3 100644 --- a/bench/duckdb/optimized/ub_duckdb_transaction.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_transaction.cpp.ll @@ -4559,13 +4559,12 @@ define void @_ZN6duckdb15DuckTransaction10PushDeleteERNS_9DataTableERNS_17RowVer entry: %undo_buffer = getelementptr inbounds i8, ptr %this, i64 128 %mul = shl i64 %count, 3 - %add.i.i = add i64 %mul, 55 - %div1.i.i = and i64 %add.i.i, -8 - %add.i = add i64 %div1.i.i, 8 + %add.i = add i64 %mul, 56 %call2.i = tail call noundef ptr @_ZN6duckdb14ArenaAllocator8AllocateEm(ptr noundef nonnull align 8 dereferenceable(64) %undo_buffer, i64 noundef %add.i) store i32 3, ptr %call2.i, align 1 %add.ptr.i = getelementptr inbounds i8, ptr %call2.i, i64 4 - %conv.i = trunc i64 %div1.i.i to i32 + %0 = trunc i64 %mul to i32 + %conv.i = add i32 %0, 48 store i32 %conv.i, ptr %add.ptr.i, align 1 %add.ptr3.i = getelementptr inbounds i8, ptr %call2.i, i64 8 %version_info = getelementptr inbounds i8, ptr %call2.i, i64 16 @@ -4604,13 +4603,12 @@ define noundef nonnull ptr @_ZN6duckdb15DuckTransaction16CreateUpdateInfoEmm(ptr entry: %undo_buffer = getelementptr inbounds i8, ptr %this, i64 128 %add = shl i64 %type_size, 11 - %add.i.i = add i64 %add, 8271 - %div1.i.i = and i64 %add.i.i, -1976 - %add.i = add nuw nsw i64 %div1.i.i, 8 + %add.i = add i64 %add, 8272 %call2.i = tail call noundef ptr @_ZN6duckdb14ArenaAllocator8AllocateEm(ptr noundef nonnull align 8 dereferenceable(64) %undo_buffer, i64 noundef %add.i) store i32 4, ptr %call2.i, align 1 %add.ptr.i = getelementptr inbounds i8, ptr %call2.i, i64 4 - %conv.i = trunc i64 %div1.i.i to i32 + %0 = trunc i64 %add to i32 + %conv.i = add i32 %0, 8264 store i32 %conv.i, ptr %add.ptr.i, align 1 %add.ptr3.i = getelementptr inbounds i8, ptr %call2.i, i64 8 %max = getelementptr inbounds i8, ptr %call2.i, i64 44 @@ -4622,9 +4620,9 @@ entry: %tuple_data = getelementptr inbounds i8, ptr %call2.i, i64 56 store ptr %add.ptr6, ptr %tuple_data, align 8, !tbaa !245 %transaction_id = getelementptr inbounds i8, ptr %this, i64 48 - %0 = load i64, ptr %transaction_id, align 8, !tbaa !109 + %1 = load i64, ptr %transaction_id, align 8, !tbaa !109 %version_number = getelementptr inbounds i8, ptr %call2.i, i64 24 - store atomic i64 %0, ptr %version_number seq_cst, align 8 + store atomic i64 %1, ptr %version_number seq_cst, align 8 ret ptr %add.ptr3.i } diff --git a/bench/eastl/optimized/TestFixedTupleVector.cpp.ll b/bench/eastl/optimized/TestFixedTupleVector.cpp.ll index b0c0f4af65e..92ae10095af 100644 --- a/bench/eastl/optimized/TestFixedTupleVector.cpp.ll +++ b/bench/eastl/optimized/TestFixedTupleVector.cpp.ll @@ -1764,12 +1764,12 @@ invoke.cont219: ; preds = %_ZN5eastl18fixed_tu if.then.i.i752: ; preds = %invoke.cont219 %mul.i.i.i753 = shl i64 %add.i732, 1 - %add.i.i.i13493 = add i64 %mul.i.i.i753, 15 + %add.i.i.i13493 = add i64 %mul.i.i.i753, 14 %and.i.i.i.i13494 = and i64 %add.i.i.i13493, -16 %mul.i.i.i.i13495 = shl i64 %add.i732, 5 %add.i.i.i.i13496 = add i64 %and.i.i.i.i13494, %mul.i.i.i.i13495 %mul.i.i.i.i.i13497 = mul i64 %add.i732, 6 - %add.i.i.i.i.i13498 = add i64 %mul.i.i.i.i.i13497, 7 + %add.i.i.i.i.i13498 = add i64 %mul.i.i.i.i.i13497, 6 %sub.i.i.i.i.i.i13499 = add i64 %add.i.i.i.i.i13498, %add.i.i.i.i13496 %and.i.i.i.i.i.i13500 = and i64 %sub.i.i.i.i.i.i13499, -8 %mul.i.i.i.i.i.i13501 = mul i64 %add.i732, 48 @@ -1861,12 +1861,12 @@ invoke.cont221: ; preds = %.noexc754, %invoke. if.then.i.i777: ; preds = %invoke.cont221 %mul.i.i.i778 = shl i64 %add.i757, 1 - %add.i.i.i13537 = add i64 %mul.i.i.i778, 15 + %add.i.i.i13537 = add i64 %mul.i.i.i778, 14 %and.i.i.i.i13538 = and i64 %add.i.i.i13537, -16 %mul.i.i.i.i13539 = shl i64 %add.i757, 5 %add.i.i.i.i13540 = add i64 %and.i.i.i.i13538, %mul.i.i.i.i13539 %mul.i.i.i.i.i13541 = mul i64 %add.i757, 6 - %add.i.i.i.i.i13542 = add i64 %mul.i.i.i.i.i13541, 7 + %add.i.i.i.i.i13542 = add i64 %mul.i.i.i.i.i13541, 6 %sub.i.i.i.i.i.i13543 = add i64 %add.i.i.i.i.i13542, %add.i.i.i.i13540 %and.i.i.i.i.i.i13544 = and i64 %sub.i.i.i.i.i.i13543, -8 %mul.i.i.i.i.i.i13545 = mul i64 %add.i757, 48 @@ -1958,12 +1958,12 @@ invoke.cont223: ; preds = %.noexc779, %invoke. if.then.i.i802: ; preds = %invoke.cont223 %mul.i.i.i803 = shl i64 %add.i782, 1 - %add.i.i.i13581 = add i64 %mul.i.i.i803, 15 + %add.i.i.i13581 = add i64 %mul.i.i.i803, 14 %and.i.i.i.i13582 = and i64 %add.i.i.i13581, -16 %mul.i.i.i.i13583 = shl i64 %add.i782, 5 %add.i.i.i.i13584 = add i64 %and.i.i.i.i13582, %mul.i.i.i.i13583 %mul.i.i.i.i.i13585 = mul i64 %add.i782, 6 - %add.i.i.i.i.i13586 = add i64 %mul.i.i.i.i.i13585, 7 + %add.i.i.i.i.i13586 = add i64 %mul.i.i.i.i.i13585, 6 %sub.i.i.i.i.i.i13587 = add i64 %add.i.i.i.i.i13586, %add.i.i.i.i13584 %and.i.i.i.i.i.i13588 = and i64 %sub.i.i.i.i.i.i13587, -8 %mul.i.i.i.i.i.i13589 = mul i64 %add.i782, 48 @@ -2055,12 +2055,12 @@ invoke.cont225: ; preds = %.noexc804, %invoke. if.then.i.i827: ; preds = %invoke.cont225 %mul.i.i.i828 = shl i64 %add.i807, 1 - %add.i.i.i13625 = add i64 %mul.i.i.i828, 15 + %add.i.i.i13625 = add i64 %mul.i.i.i828, 14 %and.i.i.i.i13626 = and i64 %add.i.i.i13625, -16 %mul.i.i.i.i13627 = shl i64 %add.i807, 5 %add.i.i.i.i13628 = add i64 %and.i.i.i.i13626, %mul.i.i.i.i13627 %mul.i.i.i.i.i13629 = mul i64 %add.i807, 6 - %add.i.i.i.i.i13630 = add i64 %mul.i.i.i.i.i13629, 7 + %add.i.i.i.i.i13630 = add i64 %mul.i.i.i.i.i13629, 6 %sub.i.i.i.i.i.i13631 = add i64 %add.i.i.i.i.i13630, %add.i.i.i.i13628 %and.i.i.i.i.i.i13632 = and i64 %sub.i.i.i.i.i.i13631, -8 %mul.i.i.i.i.i.i13633 = mul i64 %add.i807, 48 @@ -16366,10 +16366,10 @@ _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAll to label %call.i.i.i.i.i.i.i.i.i.noexc14128 unwind label %lpad.i10207 call.i.i.i.i.i.i.i.i.i.noexc14128: ; preds = %_ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateINS_22fixed_vector_allocatorILm64ELm1ELm8ELm0ELb1ENS_9allocatorEEELm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSC_mm.exit.i.i - %reass.add.i.i = shl i64 %2913, 3 + %factor.i.i = shl i64 %2913, 3 %mul.i.i.i.i14117 = shl i64 %2913, 2 %2914 = ptrtoint ptr %call.i.i.i.i.i.i.i.i.i14129 to i64 - %add.i6.i.i.i.i14119 = add i64 %reass.add.i.i, %2914 + %add.i6.i.i.i.i14119 = add i64 %factor.i.i, %2914 %2915 = inttoptr i64 %add.i6.i.i.i.i14119 to ptr %add.i6.i.i.i = add i64 %mul.i.i.i.i14117, %2914 %2916 = inttoptr i64 %add.i6.i.i.i to ptr @@ -16891,10 +16891,10 @@ _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAll to label %call.i.i.i.i.i.i.i.i.i.noexc14192 unwind label %lpad.i10426 call.i.i.i.i.i.i.i.i.i.noexc14192: ; preds = %_ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateINS_22fixed_vector_allocatorILm64ELm1ELm8ELm0ELb1ENS_9allocatorEEELm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSC_mm.exit.i.i14176 - %reass.add.i.i14178 = shl i64 %3006, 3 + %factor.i.i14178 = shl i64 %3006, 3 %mul.i.i.i.i14177 = shl i64 %3006, 2 %3007 = ptrtoint ptr %call.i.i.i.i.i.i.i.i.i14193 to i64 - %add.i6.i.i.i.i14180 = add i64 %reass.add.i.i14178, %3007 + %add.i6.i.i.i.i14180 = add i64 %factor.i.i14178, %3007 %3008 = inttoptr i64 %add.i6.i.i.i.i14180 to ptr %add.i6.i.i.i14181 = add i64 %mul.i.i.i.i14177, %3007 %3009 = inttoptr i64 %add.i6.i.i.i14181 to ptr @@ -17204,10 +17204,10 @@ _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAll to label %call.i.i.i.i.i.i.i.i.i.noexc14257 unwind label %lpad.i10531 call.i.i.i.i.i.i.i.i.i.noexc14257: ; preds = %_ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateINS_22fixed_vector_allocatorILm64ELm1ELm8ELm0ELb1ENS_9allocatorEEELm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSC_mm.exit.i.i14241 - %reass.add.i.i14243 = shl i64 %3068, 3 + %factor.i.i14243 = shl i64 %3068, 3 %mul.i.i.i.i14242 = shl i64 %3068, 2 %3069 = ptrtoint ptr %call.i.i.i.i.i.i.i.i.i14258 to i64 - %add.i6.i.i.i.i14245 = add i64 %reass.add.i.i14243, %3069 + %add.i6.i.i.i.i14245 = add i64 %factor.i.i14243, %3069 %3070 = inttoptr i64 %add.i6.i.i.i.i14245 to ptr %add.i6.i.i.i14246 = add i64 %mul.i.i.i.i14242, %3069 %3071 = inttoptr i64 %add.i6.i.i.i14246 to ptr @@ -24195,12 +24195,12 @@ invoke.cont219: ; preds = %_ZN5eastl18fixed_tu if.then.i.i752: ; preds = %invoke.cont219 %mul.i.i.i753 = shl i64 %add.i732, 1 - %add.i.i.i13493 = add i64 %mul.i.i.i753, 15 + %add.i.i.i13493 = add i64 %mul.i.i.i753, 14 %and.i.i.i.i13494 = and i64 %add.i.i.i13493, -16 %mul.i.i.i.i13495 = shl i64 %add.i732, 5 %add.i.i.i.i13496 = add i64 %and.i.i.i.i13494, %mul.i.i.i.i13495 %mul.i.i.i.i.i13497 = mul i64 %add.i732, 6 - %add.i.i.i.i.i13498 = add i64 %mul.i.i.i.i.i13497, 7 + %add.i.i.i.i.i13498 = add i64 %mul.i.i.i.i.i13497, 6 %sub.i.i.i.i.i.i13499 = add i64 %add.i.i.i.i.i13498, %add.i.i.i.i13496 %and.i.i.i.i.i.i13500 = and i64 %sub.i.i.i.i.i.i13499, -8 %mul.i.i.i.i.i.i13501 = mul i64 %add.i732, 48 @@ -24292,12 +24292,12 @@ invoke.cont221: ; preds = %.noexc754, %invoke. if.then.i.i777: ; preds = %invoke.cont221 %mul.i.i.i778 = shl i64 %add.i757, 1 - %add.i.i.i13537 = add i64 %mul.i.i.i778, 15 + %add.i.i.i13537 = add i64 %mul.i.i.i778, 14 %and.i.i.i.i13538 = and i64 %add.i.i.i13537, -16 %mul.i.i.i.i13539 = shl i64 %add.i757, 5 %add.i.i.i.i13540 = add i64 %and.i.i.i.i13538, %mul.i.i.i.i13539 %mul.i.i.i.i.i13541 = mul i64 %add.i757, 6 - %add.i.i.i.i.i13542 = add i64 %mul.i.i.i.i.i13541, 7 + %add.i.i.i.i.i13542 = add i64 %mul.i.i.i.i.i13541, 6 %sub.i.i.i.i.i.i13543 = add i64 %add.i.i.i.i.i13542, %add.i.i.i.i13540 %and.i.i.i.i.i.i13544 = and i64 %sub.i.i.i.i.i.i13543, -8 %mul.i.i.i.i.i.i13545 = mul i64 %add.i757, 48 @@ -24389,12 +24389,12 @@ invoke.cont223: ; preds = %.noexc779, %invoke. if.then.i.i802: ; preds = %invoke.cont223 %mul.i.i.i803 = shl i64 %add.i782, 1 - %add.i.i.i13581 = add i64 %mul.i.i.i803, 15 + %add.i.i.i13581 = add i64 %mul.i.i.i803, 14 %and.i.i.i.i13582 = and i64 %add.i.i.i13581, -16 %mul.i.i.i.i13583 = shl i64 %add.i782, 5 %add.i.i.i.i13584 = add i64 %and.i.i.i.i13582, %mul.i.i.i.i13583 %mul.i.i.i.i.i13585 = mul i64 %add.i782, 6 - %add.i.i.i.i.i13586 = add i64 %mul.i.i.i.i.i13585, 7 + %add.i.i.i.i.i13586 = add i64 %mul.i.i.i.i.i13585, 6 %sub.i.i.i.i.i.i13587 = add i64 %add.i.i.i.i.i13586, %add.i.i.i.i13584 %and.i.i.i.i.i.i13588 = and i64 %sub.i.i.i.i.i.i13587, -8 %mul.i.i.i.i.i.i13589 = mul i64 %add.i782, 48 @@ -24486,12 +24486,12 @@ invoke.cont225: ; preds = %.noexc804, %invoke. if.then.i.i827: ; preds = %invoke.cont225 %mul.i.i.i828 = shl i64 %add.i807, 1 - %add.i.i.i13625 = add i64 %mul.i.i.i828, 15 + %add.i.i.i13625 = add i64 %mul.i.i.i828, 14 %and.i.i.i.i13626 = and i64 %add.i.i.i13625, -16 %mul.i.i.i.i13627 = shl i64 %add.i807, 5 %add.i.i.i.i13628 = add i64 %and.i.i.i.i13626, %mul.i.i.i.i13627 %mul.i.i.i.i.i13629 = mul i64 %add.i807, 6 - %add.i.i.i.i.i13630 = add i64 %mul.i.i.i.i.i13629, 7 + %add.i.i.i.i.i13630 = add i64 %mul.i.i.i.i.i13629, 6 %sub.i.i.i.i.i.i13631 = add i64 %add.i.i.i.i.i13630, %add.i.i.i.i13628 %and.i.i.i.i.i.i13632 = and i64 %sub.i.i.i.i.i.i13631, -8 %mul.i.i.i.i.i.i13633 = mul i64 %add.i807, 48 @@ -38358,10 +38358,10 @@ _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAll to label %call.i.i.i.i.i.i.i.i.i.noexc14128 unwind label %lpad.i10207 call.i.i.i.i.i.i.i.i.i.noexc14128: ; preds = %_ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateINS_22fixed_vector_allocatorILm512ELm1ELm8ELm0ELb1ENS_9allocatorEEELm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSC_mm.exit.i.i - %reass.add.i.i = shl i64 %2797, 3 + %factor.i.i = shl i64 %2797, 3 %mul.i.i.i.i14117 = shl i64 %2797, 2 %2798 = ptrtoint ptr %call.i.i.i.i.i.i.i.i.i14129 to i64 - %add.i6.i.i.i.i14119 = add i64 %reass.add.i.i, %2798 + %add.i6.i.i.i.i14119 = add i64 %factor.i.i, %2798 %2799 = inttoptr i64 %add.i6.i.i.i.i14119 to ptr %add.i6.i.i.i = add i64 %mul.i.i.i.i14117, %2798 %2800 = inttoptr i64 %add.i6.i.i.i to ptr @@ -38883,10 +38883,10 @@ _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAll to label %call.i.i.i.i.i.i.i.i.i.noexc14192 unwind label %lpad.i10426 call.i.i.i.i.i.i.i.i.i.noexc14192: ; preds = %_ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateINS_22fixed_vector_allocatorILm512ELm1ELm8ELm0ELb1ENS_9allocatorEEELm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSC_mm.exit.i.i14176 - %reass.add.i.i14178 = shl i64 %2890, 3 + %factor.i.i14178 = shl i64 %2890, 3 %mul.i.i.i.i14177 = shl i64 %2890, 2 %2891 = ptrtoint ptr %call.i.i.i.i.i.i.i.i.i14193 to i64 - %add.i6.i.i.i.i14180 = add i64 %reass.add.i.i14178, %2891 + %add.i6.i.i.i.i14180 = add i64 %factor.i.i14178, %2891 %2892 = inttoptr i64 %add.i6.i.i.i.i14180 to ptr %add.i6.i.i.i14181 = add i64 %mul.i.i.i.i14177, %2891 %2893 = inttoptr i64 %add.i6.i.i.i14181 to ptr @@ -39196,10 +39196,10 @@ _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAll to label %call.i.i.i.i.i.i.i.i.i.noexc14257 unwind label %lpad.i10531 call.i.i.i.i.i.i.i.i.i.noexc14257: ; preds = %_ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateINS_22fixed_vector_allocatorILm512ELm1ELm8ELm0ELb1ENS_9allocatorEEELm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSC_mm.exit.i.i14241 - %reass.add.i.i14243 = shl i64 %2952, 3 + %factor.i.i14243 = shl i64 %2952, 3 %mul.i.i.i.i14242 = shl i64 %2952, 2 %2953 = ptrtoint ptr %call.i.i.i.i.i.i.i.i.i14258 to i64 - %add.i6.i.i.i.i14245 = add i64 %reass.add.i.i14243, %2953 + %add.i6.i.i.i.i14245 = add i64 %factor.i.i14243, %2953 %2954 = inttoptr i64 %add.i6.i.i.i.i14245 to ptr %add.i6.i.i.i14246 = add i64 %mul.i.i.i.i14242, %2953 %2955 = inttoptr i64 %add.i6.i.i.i14246 to ptr @@ -46054,7 +46054,7 @@ _ZN5eastl16TupleVecInternal12TupleVecImplINS_22fixed_vector_allocatorILm1856ELm1 store volatile i32 -559038242, ptr null, align 4294967296 %cmp.i.i.i.i.i.i.i.i.i.i926 = icmp eq i64 %176, 0 call void @llvm.assume(i1 %cmp.i.i.i.i.i.i.i.i.i.i926) - %add.i.i.i.i929 = add nuw nsw i64 %178, 7 + %add.i.i.i.i929 = add nuw nsw i64 %178, 6 %and.i.i.i.i.i930 = and i64 %add.i.i.i.i929, 56 %mul.i.i.i.i.i931 = mul nuw nsw i64 %178, 24 %add.i.i.i.i.i932 = add nuw nsw i64 %and.i.i.i.i.i930, %mul.i.i.i.i.i931 @@ -46348,7 +46348,7 @@ _ZN5eastl16TupleVecInternal12TupleVecImplINS_22fixed_vector_allocatorILm1856ELm1 store volatile i32 -559038242, ptr null, align 4294967296 %cmp.i.i.i.i.i.i.i.i.i.i1071 = icmp eq i64 %215, 0 call void @llvm.assume(i1 %cmp.i.i.i.i.i.i.i.i.i.i1071) - %add.i.i.i.i1074 = add nuw nsw i64 %217, 7 + %add.i.i.i.i1074 = add nuw nsw i64 %217, 6 %and.i.i.i.i.i1075 = and i64 %add.i.i.i.i1074, 56 %mul.i.i.i.i.i1076 = mul nuw nsw i64 %217, 24 %add.i.i.i.i.i1077 = add nuw nsw i64 %and.i.i.i.i.i1075, %mul.i.i.i.i.i1076 @@ -65761,8 +65761,8 @@ for.body.i.i.preheader.i: ; preds = %entry %5 = ptrtoint ptr %call.i.i.i.i.i.i.i.i.i to i64 %add.i6.i.i.i = add i64 %mul.i.i.i.i, %5 %6 = inttoptr i64 %add.i6.i.i.i to ptr - %reass.add.i.i = shl i64 %1, 3 - %add.i6.i.i.i.i = add i64 %reass.add.i.i, %5 + %factor.i.i = shl i64 %1, 3 + %add.i6.i.i.i.i = add i64 %factor.i.i, %5 %7 = inttoptr i64 %add.i6.i.i.i.i to ptr %gepdiff.i = shl nsw i64 %1, 2 tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %call.i.i.i.i.i.i.i.i.i, ptr align 4 %4, i64 %gepdiff.i, i1 false) @@ -67511,11 +67511,11 @@ _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAll %cond.i = select i1 %cmp.not.i, i64 1, i64 %mul.i %cond.i39 = tail call noundef i64 @llvm.umax.i64(i64 %cond.i, i64 %add) %mul.i.i = shl i64 %cond.i39, 2 - %reass.add = shl i64 %cond.i39, 3 + %factor = shl i64 %cond.i39, 3 %add.i.i.i.i = shl i64 %cond.i39, 5 %call.i.i.i.i.i.i.i = tail call noundef ptr @_ZnamPKcijS0_i(i64 noundef %add.i.i.i.i, ptr noundef null, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) %3 = ptrtoint ptr %call.i.i.i.i.i.i.i to i64 - %add.i6.i.i = add i64 %reass.add, %3 + %add.i6.i.i = add i64 %factor, %3 %4 = inttoptr i64 %add.i6.i.i to ptr %add.i6.i = add i64 %mul.i.i, %3 %5 = inttoptr i64 %add.i6.i to ptr @@ -69211,7 +69211,7 @@ if.end146: ; preds = %while.body.i300, %_ define linkonce_odr dso_local void @_ZN5eastl16TupleVecInternal12TupleVecImplINS_22fixed_vector_allocatorILm64ELm1ELm8ELm0ELb1ENS_9allocatorEEENS_16integer_sequenceImJLm0ELm1ELm2EEEEJi12MoveOnlyType10TestObjectEE12DoReallocateEmm(ptr noundef nonnull align 8 dereferenceable(72) %this, i64 noundef %oldNumElements, i64 noundef %requiredCapacity) local_unnamed_addr #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %mul.i.i = shl i64 %requiredCapacity, 2 - %reass.add = shl i64 %requiredCapacity, 3 + %factor = shl i64 %requiredCapacity, 3 %add.i.i.i.i = shl i64 %requiredCapacity, 5 %tobool.not.i.i.i.i = icmp eq i64 %requiredCapacity, 0 br i1 %tobool.not.i.i.i.i, label %_ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateINS_22fixed_vector_allocatorILm64ELm1ELm8ELm0ELb1ENS_9allocatorEEELm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSC_mm.exit, label %cond.true.i.i.i.i @@ -69223,7 +69223,7 @@ cond.true.i.i.i.i: ; preds = %entry _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateINS_22fixed_vector_allocatorILm64ELm1ELm8ELm0ELb1ENS_9allocatorEEELm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSC_mm.exit: ; preds = %entry, %cond.true.i.i.i.i %cond.i.i.i.i = phi ptr [ %call.i.i.i.i.i.i.i, %cond.true.i.i.i.i ], [ null, %entry ] %0 = ptrtoint ptr %cond.i.i.i.i to i64 - %add.i6.i.i = add i64 %reass.add, %0 + %add.i6.i.i = add i64 %factor, %0 %1 = inttoptr i64 %add.i6.i.i to ptr %add.i6.i = add i64 %mul.i.i, %0 %2 = inttoptr i64 %add.i6.i to ptr @@ -69438,11 +69438,11 @@ entry: _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateINS_22fixed_vector_allocatorILm64ELm1ELm8ELm0ELb1ENS_9allocatorEEELm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSC_mm.exit.i: ; preds = %entry %mul.i.i.i = shl i64 %sub.i.i, 2 - %reass.add.i = shl i64 %sub.i.i, 3 + %factor.i = shl i64 %sub.i.i, 3 %add.i.i.i.i.i = shl i64 %sub.i.i, 5 %call.i.i.i.i.i.i.i.i = tail call noundef ptr @_ZnamPKcijS0_i(i64 noundef %add.i.i.i.i.i, ptr noundef null, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) %3 = ptrtoint ptr %call.i.i.i.i.i.i.i.i to i64 - %add.i6.i.i.i = add i64 %reass.add.i, %3 + %add.i6.i.i.i = add i64 %factor.i, %3 %4 = inttoptr i64 %add.i6.i.i.i to ptr %add.i6.i.i = add i64 %mul.i.i.i, %3 %5 = inttoptr i64 %add.i6.i.i to ptr @@ -72399,8 +72399,8 @@ for.body.i.i.preheader.i: ; preds = %entry %5 = ptrtoint ptr %call.i.i.i.i.i.i.i.i.i to i64 %add.i6.i.i.i = add i64 %mul.i.i.i.i, %5 %6 = inttoptr i64 %add.i6.i.i.i to ptr - %reass.add.i.i = shl i64 %1, 3 - %add.i6.i.i.i.i = add i64 %reass.add.i.i, %5 + %factor.i.i = shl i64 %1, 3 + %add.i6.i.i.i.i = add i64 %factor.i.i, %5 %7 = inttoptr i64 %add.i6.i.i.i.i to ptr %gepdiff.i = shl nsw i64 %1, 2 tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %call.i.i.i.i.i.i.i.i.i, ptr align 4 %4, i64 %gepdiff.i, i1 false) @@ -74149,11 +74149,11 @@ _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAll %cond.i = select i1 %cmp.not.i, i64 1, i64 %mul.i %cond.i39 = tail call noundef i64 @llvm.umax.i64(i64 %cond.i, i64 %add) %mul.i.i = shl i64 %cond.i39, 2 - %reass.add = shl i64 %cond.i39, 3 + %factor = shl i64 %cond.i39, 3 %add.i.i.i.i = shl i64 %cond.i39, 5 %call.i.i.i.i.i.i.i = tail call noundef ptr @_ZnamPKcijS0_i(i64 noundef %add.i.i.i.i, ptr noundef null, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) %3 = ptrtoint ptr %call.i.i.i.i.i.i.i to i64 - %add.i6.i.i = add i64 %reass.add, %3 + %add.i6.i.i = add i64 %factor, %3 %4 = inttoptr i64 %add.i6.i.i to ptr %add.i6.i = add i64 %mul.i.i, %3 %5 = inttoptr i64 %add.i6.i to ptr @@ -75603,7 +75603,7 @@ if.end146: ; preds = %while.body.i300, %_ define linkonce_odr dso_local void @_ZN5eastl16TupleVecInternal12TupleVecImplINS_22fixed_vector_allocatorILm512ELm1ELm8ELm0ELb1ENS_9allocatorEEENS_16integer_sequenceImJLm0ELm1ELm2EEEEJi12MoveOnlyType10TestObjectEE12DoReallocateEmm(ptr noundef nonnull align 8 dereferenceable(72) %this, i64 noundef %oldNumElements, i64 noundef %requiredCapacity) local_unnamed_addr #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %mul.i.i = shl i64 %requiredCapacity, 2 - %reass.add = shl i64 %requiredCapacity, 3 + %factor = shl i64 %requiredCapacity, 3 %add.i.i.i.i = shl i64 %requiredCapacity, 5 %tobool.not.i.i.i.i = icmp eq i64 %requiredCapacity, 0 br i1 %tobool.not.i.i.i.i, label %_ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateINS_22fixed_vector_allocatorILm512ELm1ELm8ELm0ELb1ENS_9allocatorEEELm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSC_mm.exit, label %cond.true.i.i.i.i @@ -75615,7 +75615,7 @@ cond.true.i.i.i.i: ; preds = %entry _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateINS_22fixed_vector_allocatorILm512ELm1ELm8ELm0ELb1ENS_9allocatorEEELm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSC_mm.exit: ; preds = %entry, %cond.true.i.i.i.i %cond.i.i.i.i = phi ptr [ %call.i.i.i.i.i.i.i, %cond.true.i.i.i.i ], [ null, %entry ] %0 = ptrtoint ptr %cond.i.i.i.i to i64 - %add.i6.i.i = add i64 %reass.add, %0 + %add.i6.i.i = add i64 %factor, %0 %1 = inttoptr i64 %add.i6.i.i to ptr %add.i6.i = add i64 %mul.i.i, %0 %2 = inttoptr i64 %add.i6.i to ptr @@ -75830,11 +75830,11 @@ entry: _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateINS_22fixed_vector_allocatorILm512ELm1ELm8ELm0ELb1ENS_9allocatorEEELm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSC_mm.exit.i: ; preds = %entry %mul.i.i.i = shl i64 %sub.i.i, 2 - %reass.add.i = shl i64 %sub.i.i, 3 + %factor.i = shl i64 %sub.i.i, 3 %add.i.i.i.i.i = shl i64 %sub.i.i, 5 %call.i.i.i.i.i.i.i.i = tail call noundef ptr @_ZnamPKcijS0_i(i64 noundef %add.i.i.i.i.i, ptr noundef null, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) %3 = ptrtoint ptr %call.i.i.i.i.i.i.i.i to i64 - %add.i6.i.i.i = add i64 %reass.add.i, %3 + %add.i6.i.i.i = add i64 %factor.i, %3 %4 = inttoptr i64 %add.i6.i.i.i to ptr %add.i6.i.i = add i64 %mul.i.i.i, %3 %5 = inttoptr i64 %add.i6.i.i to ptr @@ -78827,9 +78827,9 @@ invoke.cont11: _ZN5eastl16TupleVecInternal12TupleVecImplINS_22fixed_vector_allocatorILm2048ELm1ELm8ELm0ELb0ENS_9allocatorEEENS_16integer_sequenceImJLm0ELm1ELm2EEEEJi12MoveOnlyType10TestObjectEE23DoConditionalReallocateEmmm.exit.i.thread: ; preds = %invoke.cont11 store volatile i32 -559038242, ptr null, align 4294967296 - %reass.add.i.i.i = shl i64 %8, 3 - %9 = inttoptr i64 %reass.add.i.i.i to ptr %mul.i.i.i.i.i = shl i64 %8, 2 + %factor.i.i.i = shl i64 %8, 3 + %9 = inttoptr i64 %factor.i.i.i to ptr %10 = inttoptr i64 %mul.i.i.i.i.i to ptr %add.i.i.i.i.i.i.i = shl i64 %8, 5 store ptr null, ptr %this, align 8 @@ -78982,9 +78982,9 @@ invoke.cont9: _ZN5eastl16TupleVecInternal12TupleVecImplINS_22fixed_vector_allocatorILm2048ELm1ELm8ELm0ELb0ENS_9allocatorEEENS_16integer_sequenceImJLm0ELm1ELm2EEEEJi12MoveOnlyType10TestObjectEE23DoConditionalReallocateEmmm.exit.i.thread: ; preds = %invoke.cont9 store volatile i32 -559038242, ptr null, align 4294967296 - %reass.add.i.i.i = shl i64 %8, 3 - %9 = inttoptr i64 %reass.add.i.i.i to ptr %mul.i.i.i.i.i = shl i64 %8, 2 + %factor.i.i.i = shl i64 %8, 3 + %9 = inttoptr i64 %factor.i.i.i to ptr %10 = inttoptr i64 %mul.i.i.i.i.i to ptr %add.i.i.i.i.i.i.i = shl i64 %8, 5 store ptr null, ptr %this, align 8 @@ -79130,8 +79130,8 @@ _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAll %cond.i39 = tail call noundef i64 @llvm.umax.i64(i64 %cond.i, i64 %add) store volatile i32 -559038242, ptr null, align 4294967296 %mul.i.i = shl i64 %cond.i39, 2 - %reass.add = shl i64 %cond.i39, 3 - %3 = inttoptr i64 %reass.add to ptr + %factor = shl i64 %cond.i39, 3 + %3 = inttoptr i64 %factor to ptr %4 = inttoptr i64 %mul.i.i to ptr %cmp.i.i.i.i.i.i.i.i = icmp eq i64 %0, 0 tail call void @llvm.assume(i1 %cmp.i.i.i.i.i.i.i.i) @@ -79380,9 +79380,9 @@ _ZN5eastl16TupleVecInternal12TupleVecImplINS_22fixed_vector_allocatorILm2048ELm1 _ZN5eastl16TupleVecInternal12TupleVecImplINS_22fixed_vector_allocatorILm2048ELm1ELm8ELm0ELb0ENS_9allocatorEEENS_16integer_sequenceImJLm0ELm1ELm2EEEEJi12MoveOnlyType10TestObjectEE23DoConditionalReallocateEmmm.exit.i.thread: ; preds = %_ZN5eastl16TupleVecInternal12TupleVecImplINS_22fixed_vector_allocatorILm2048ELm1ELm8ELm0ELb0ENS_9allocatorEEENS_16integer_sequenceImJLm0ELm1ELm2EEEEJi12MoveOnlyType10TestObjectEE5clearEv.exit store volatile i32 -559038242, ptr null, align 4294967296 %add.ptr17.i.i.i = getelementptr inbounds i8, ptr %this, i64 8 - %reass.add.i.i.i = shl i64 %6, 3 - %8 = inttoptr i64 %reass.add.i.i.i to ptr %mul.i.i.i.i.i = shl i64 %6, 2 + %factor.i.i.i = shl i64 %6, 3 + %8 = inttoptr i64 %factor.i.i.i to ptr %9 = inttoptr i64 %mul.i.i.i.i.i to ptr %add.i.i.i.i.i.i.i = shl i64 %6, 5 store ptr null, ptr %this, align 8 diff --git a/bench/eastl/optimized/TestTupleVector.cpp.ll b/bench/eastl/optimized/TestTupleVector.cpp.ll index 752fc5c57c1..ab8d18886b5 100644 --- a/bench/eastl/optimized/TestTupleVector.cpp.ll +++ b/bench/eastl/optimized/TestTupleVector.cpp.ll @@ -19546,12 +19546,12 @@ entry: if.then.i: ; preds = %entry %mul.i.i = shl i64 %add, 1 - %sub.i.i.i.i.i = add i64 %mul.i.i, 15 + %sub.i.i.i.i.i = add i64 %mul.i.i, 14 %and.i.i.i.i.i = and i64 %sub.i.i.i.i.i, -16 %mul.i.i.i.i.i = shl i64 %add, 5 %add.i.i.i.i.i = add i64 %and.i.i.i.i.i, %mul.i.i.i.i.i %mul.i.i.i.i.i.i = mul i64 %add, 6 - %add.i.i.i.i.i.i = add i64 %mul.i.i.i.i.i.i, 7 + %add.i.i.i.i.i.i = add i64 %mul.i.i.i.i.i.i, 6 %sub.i.i.i.i.i.i.i = add i64 %add.i.i.i.i.i.i, %add.i.i.i.i.i %and.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i, -8 %mul.i.i.i.i.i.i.i = mul i64 %add, 48 @@ -20636,8 +20636,8 @@ for.body.i.i.preheader.i: ; preds = %entry %4 = ptrtoint ptr %call.i.i.i.i.i.i.i.i to i64 %add.i6.i.i.i = add i64 %mul.i.i.i.i, %4 %5 = inttoptr i64 %add.i6.i.i.i to ptr - %reass.add.i.i = shl i64 %1, 3 - %add.i6.i.i.i.i = add i64 %reass.add.i.i, %4 + %factor.i.i = shl i64 %1, 3 + %add.i6.i.i.i.i = add i64 %factor.i.i, %4 %6 = inttoptr i64 %add.i6.i.i.i.i to ptr %gepdiff.i = shl nsw i64 %1, 2 tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %call.i.i.i.i.i.i.i.i, ptr align 4 %3, i64 %gepdiff.i, i1 false) @@ -22436,11 +22436,11 @@ _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAll %cond.i = select i1 %cmp.not.i, i64 1, i64 %mul.i %cond.i39 = tail call noundef i64 @llvm.umax.i64(i64 %cond.i, i64 %add) %mul.i.i = shl i64 %cond.i39, 2 - %reass.add = shl i64 %cond.i39, 3 + %factor = shl i64 %cond.i39, 3 %add.i.i.i.i = shl i64 %cond.i39, 5 %call.i.i.i.i.i.i = tail call noundef ptr @_ZnamPKcijS0_i(i64 noundef %add.i.i.i.i, ptr noundef null, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) %3 = ptrtoint ptr %call.i.i.i.i.i.i to i64 - %add.i6.i.i = add i64 %reass.add, %3 + %add.i6.i.i = add i64 %factor, %3 %4 = inttoptr i64 %add.i6.i.i to ptr %add.i6.i = add i64 %mul.i.i, %3 %5 = inttoptr i64 %add.i6.i to ptr @@ -23390,7 +23390,7 @@ declare noundef ptr @_ZN15MallocAllocator8allocateEmi(ptr noundef nonnull align define linkonce_odr dso_local void @_ZN5eastl16TupleVecInternal12TupleVecImplINS_9allocatorENS_16integer_sequenceImJLm0ELm1ELm2EEEEJi12MoveOnlyType10TestObjectEE12DoReallocateEmm(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %oldNumElements, i64 noundef %requiredCapacity) local_unnamed_addr #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %mul.i.i = shl i64 %requiredCapacity, 2 - %reass.add = shl i64 %requiredCapacity, 3 + %factor = shl i64 %requiredCapacity, 3 %add.i.i.i.i = shl i64 %requiredCapacity, 5 %tobool.not.i.i.i.i = icmp eq i64 %requiredCapacity, 0 br i1 %tobool.not.i.i.i.i, label %_ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateINS_9allocatorELm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSA_mm.exit, label %cond.true.i.i.i.i @@ -23402,7 +23402,7 @@ cond.true.i.i.i.i: ; preds = %entry _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateINS_9allocatorELm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSA_mm.exit: ; preds = %entry, %cond.true.i.i.i.i %cond.i.i.i.i = phi ptr [ %call.i.i.i.i.i.i, %cond.true.i.i.i.i ], [ null, %entry ] %0 = ptrtoint ptr %cond.i.i.i.i to i64 - %add.i6.i.i = add i64 %reass.add, %0 + %add.i6.i.i = add i64 %factor, %0 %1 = inttoptr i64 %add.i6.i.i to ptr %add.i6.i = add i64 %mul.i.i, %0 %2 = inttoptr i64 %add.i6.i to ptr @@ -25050,7 +25050,7 @@ if.end20: ; preds = %for.cond.for.end_cr define linkonce_odr dso_local void @_ZN5eastl16TupleVecInternal12TupleVecImplI15MallocAllocatorNS_16integer_sequenceImJLm0ELm1ELm2EEEEJi12MoveOnlyType10TestObjectEE12DoReallocateEmm(ptr noundef nonnull align 8 dereferenceable(72) %this, i64 noundef %oldNumElements, i64 noundef %requiredCapacity) local_unnamed_addr #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %mul.i.i = shl i64 %requiredCapacity, 2 - %reass.add = shl i64 %requiredCapacity, 3 + %factor = shl i64 %requiredCapacity, 3 %add.i.i.i.i = shl i64 %requiredCapacity, 5 %tobool.not.i.i.i.i = icmp eq i64 %requiredCapacity, 0 br i1 %tobool.not.i.i.i.i, label %_ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateI15MallocAllocatorLm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSA_mm.exit, label %cond.true.i.i.i.i @@ -25063,7 +25063,7 @@ cond.true.i.i.i.i: ; preds = %entry _ZN5eastl16TupleVecInternal13TupleRecurserIJi12MoveOnlyType10TestObjectEE10DoAllocateI15MallocAllocatorLm0ENS_16integer_sequenceImJLm0ELm1ELm2EEEEJiS2_S3_EEENS_4pairIPvmEERNS0_12TupleVecImplIT_T1_JDpT2_EEEPSA_mm.exit: ; preds = %entry, %cond.true.i.i.i.i %cond.i.i.i.i = phi ptr [ %call.i.i.i.i.i, %cond.true.i.i.i.i ], [ null, %entry ] %0 = ptrtoint ptr %cond.i.i.i.i to i64 - %add.i6.i.i = add i64 %reass.add, %0 + %add.i6.i.i = add i64 %factor, %0 %1 = inttoptr i64 %add.i6.i.i to ptr %add.i6.i = add i64 %mul.i.i, %0 %2 = inttoptr i64 %add.i6.i to ptr diff --git a/bench/hermes/optimized/APFloat.cpp.ll b/bench/hermes/optimized/APFloat.cpp.ll index 3629e576478..9516b5a1845 100644 --- a/bench/hermes/optimized/APFloat.cpp.ll +++ b/bench/hermes/optimized/APFloat.cpp.ll @@ -6103,11 +6103,7 @@ for.cond: ; preds = %_ZN4llvh6detail9IEE %sub10 = sub i32 %sub5, %12 store ptr %calcSemantics, ptr %decSig, align 8 %cmp.i.i.i = icmp ugt i32 %mul, 127 - br i1 %cmp.i.i.i, label %if.then.i.i.i, label %for.cond._ZN4llvh6detail9IEEEFloatC2ERKNS_12fltSemanticsENS_11APFloatBase16uninitializedTagE.exit_crit_edge - -for.cond._ZN4llvh6detail9IEEEFloatC2ERKNS_12fltSemanticsENS_11APFloatBase16uninitializedTagE.exit_crit_edge: ; preds = %for.cond - %.pre = load ptr, ptr %significand.i.i.i, align 8 - br label %_ZN4llvh6detail9IEEEFloatC2ERKNS_12fltSemanticsENS_11APFloatBase16uninitializedTagE.exit + br i1 %cmp.i.i.i, label %if.then.i.i.i, label %_ZN4llvh6detail9IEEEFloatC2ERKNS_12fltSemanticsENS_11APFloatBase16uninitializedTagE.exit if.then.i.i.i: ; preds = %for.cond %13 = lshr exact i32 %mul, 3 @@ -6116,34 +6112,31 @@ if.then.i.i.i: ; preds = %for.cond store ptr %call2.i.i.i, ptr %significand.i.i.i, align 8 br label %_ZN4llvh6detail9IEEEFloatC2ERKNS_12fltSemanticsENS_11APFloatBase16uninitializedTagE.exit -_ZN4llvh6detail9IEEEFloatC2ERKNS_12fltSemanticsENS_11APFloatBase16uninitializedTagE.exit: ; preds = %for.cond._ZN4llvh6detail9IEEEFloatC2ERKNS_12fltSemanticsENS_11APFloatBase16uninitializedTagE.exit_crit_edge, %if.then.i.i.i - %15 = phi ptr [ %.pre, %for.cond._ZN4llvh6detail9IEEEFloatC2ERKNS_12fltSemanticsENS_11APFloatBase16uninitializedTagE.exit_crit_edge ], [ %call2.i.i.i, %if.then.i.i.i ] +_ZN4llvh6detail9IEEEFloatC2ERKNS_12fltSemanticsENS_11APFloatBase16uninitializedTagE.exit: ; preds = %for.cond, %if.then.i.i.i + %retval.0.i.i = phi ptr [ %call2.i.i.i, %if.then.i.i.i ], [ %significand.i.i.i, %for.cond ] %bf.load.i.i = load i8, ptr %category.i.i, align 2 %bf.clear.i.i = and i8 %bf.load.i.i, -16 %bf.load = load i8, ptr %sign, align 2 - %16 = and i8 %bf.load, 8 - %bf.set.i = or disjoint i8 %bf.clear.i.i, %16 + %15 = and i8 %bf.load, 8 + %bf.set.i = or disjoint i8 %bf.clear.i.i, %15 %bf.set4.i = or disjoint i8 %bf.set.i, 3 store i8 %bf.set4.i, ptr %category.i.i, align 2 - %17 = load i16, ptr %minExponent.i, align 2 - %sub.i18 = add i16 %17, -1 + %16 = load i16, ptr %minExponent.i, align 2 + %sub.i18 = add i16 %16, -1 store i16 %sub.i18, ptr %exponent.i, align 8 - %18 = add i32 %mul, -65 - %cmp.i.i = icmp ult i32 %18, -128 - %retval.0.i.i = select i1 %cmp.i.i, ptr %15, ptr %significand.i.i.i %div1.i.i.i = and i32 %parts.0, 67108863 - call void @_ZN4llvh5APInt5tcSetEPmmj(ptr noundef %retval.0.i.i, i64 noundef 0, i32 noundef %div1.i.i.i) #26 + call void @_ZN4llvh5APInt5tcSetEPmmj(ptr noundef nonnull %retval.0.i.i, i64 noundef 0, i32 noundef %div1.i.i.i) #26 store ptr %calcSemantics, ptr %pow5, align 8 - %19 = load i32, ptr %precision6, align 4 - %sub.i.i.i.i = add i32 %19, 64 + %17 = load i32, ptr %precision6, align 4 + %sub.i.i.i.i = add i32 %17, 64 %cmp.i.i20 = icmp ugt i32 %sub.i.i.i.i, 127 br i1 %cmp.i.i20, label %if.then.i.i, label %_ZN4llvh6detail9IEEEFloatC2ERKNS_12fltSemanticsE.exit if.then.i.i: ; preds = %_ZN4llvh6detail9IEEEFloatC2ERKNS_12fltSemanticsENS_11APFloatBase16uninitializedTagE.exit - %20 = lshr i32 %sub.i.i.i.i, 3 - %21 = and i32 %20, 536870904 - %22 = zext nneg i32 %21 to i64 - %call2.i.i = call noalias noundef nonnull ptr @_Znam(i64 noundef %22) #24 + %18 = lshr i32 %sub.i.i.i.i, 3 + %19 = and i32 %18, 536870904 + %20 = zext nneg i32 %19 to i64 + %call2.i.i = call noalias noundef nonnull ptr @_Znam(i64 noundef %20) #24 store ptr %call2.i.i, ptr %significand.i.i25, align 8 br label %_ZN4llvh6detail9IEEEFloatC2ERKNS_12fltSemanticsE.exit @@ -6154,8 +6147,8 @@ _ZN4llvh6detail9IEEEFloatC2ERKNS_12fltSemanticsE.exit: ; preds = %_ZN4llvh6detai store i8 %bf.set.i24, ptr %category.i21, align 2 %call11 = call noundef i32 @_ZN4llvh6detail9IEEEFloat24convertFromUnsignedPartsEPKmjNS_11APFloatBase12roundingModeE(ptr noundef nonnull align 8 dereferenceable(24) %decSig, ptr noundef %decSigParts, i32 noundef %sigPartCount, i32 noundef 0) %call13 = call noundef i32 @_ZN4llvh6detail9IEEEFloat24convertFromUnsignedPartsEPKmjNS_11APFloatBase12roundingModeE(ptr noundef nonnull align 8 dereferenceable(24) %pow5, ptr noundef nonnull %pow5Parts, i32 noundef %result.0.lcssa51.i, i32 noundef 0) - %23 = load i16, ptr %exponent.i, align 8 - %conv15 = add i16 %23, %10 + %21 = load i16, ptr %exponent.i, align 8 + %conv15 = add i16 %21, %10 store i16 %conv15, ptr %exponent.i, align 8 br i1 %cmp3, label %if.then, label %if.else @@ -6167,28 +6160,28 @@ if.then: ; preds = %_ZN4llvh6detail9IEE if.else: ; preds = %_ZN4llvh6detail9IEEEFloatC2ERKNS_12fltSemanticsE.exit %call20 = call noundef i32 @_ZN4llvh6detail9IEEEFloat17divideSignificandERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %decSig, ptr noundef nonnull align 8 dereferenceable(24) %pow5) - %24 = load i16, ptr %exponent.i, align 8 - %25 = load ptr, ptr %this, align 8 - %minExponent = getelementptr inbounds i8, ptr %25, i64 2 - %26 = load i16, ptr %minExponent, align 2 - %cmp25 = icmp slt i16 %24, %26 + %22 = load i16, ptr %exponent.i, align 8 + %23 = load ptr, ptr %this, align 8 + %minExponent = getelementptr inbounds i8, ptr %23, i64 2 + %24 = load i16, ptr %minExponent, align 2 + %cmp25 = icmp slt i16 %22, %24 br i1 %cmp25, label %if.then26, label %if.end38 if.then26: ; preds = %if.else - %conv24 = sext i16 %26 to i32 - %conv22 = sext i16 %24 to i32 + %conv24 = sext i16 %24 to i32 + %conv22 = sext i16 %22 to i32 %sub32 = sub nsw i32 %conv24, %conv22 %add33 = add i32 %sub32, %sub10 - %27 = load i32, ptr %precision6, align 4 - %spec.select = call i32 @llvm.umin.i32(i32 %add33, i32 %27) + %25 = load i32, ptr %precision6, align 4 + %spec.select = call i32 @llvm.umin.i32(i32 %add33, i32 %25) br label %if.end38 if.end38: ; preds = %if.then26, %if.else %excessPrecision.1 = phi i32 [ %sub10, %if.else ], [ %spec.select, %if.then26 ] %truncatedBits.1 = phi i32 [ %sub10, %if.else ], [ %add33, %if.then26 ] - %28 = or i32 %call20, %call13 - %29 = icmp eq i32 %28, 0 - %cond41 = select i1 %29, i32 0, i32 2 + %26 = or i32 %call20, %call13 + %27 = icmp eq i32 %26, 0 + %cond41 = select i1 %27, i32 0, i32 2 br label %if.end42 if.end42: ; preds = %if.end38, %if.then @@ -6207,23 +6200,23 @@ if.end42: ; preds = %if.end38, %if.then %add5.i = or disjoint i32 %mul4.i, %conv2.i %retval.0.i = select i1 %cmp.i27, i32 %mul.i28, i32 %add5.i %conv47 = zext nneg i32 %retval.0.i to i64 - %30 = load ptr, ptr %decSig, align 8 - %precision.i.i = getelementptr inbounds i8, ptr %30, i64 4 - %31 = load i32, ptr %precision.i.i, align 4 - %32 = add i32 %31, -64 - %cmp.i29 = icmp ult i32 %32, -128 - %33 = load ptr, ptr %significand.i.i.i, align 8 - %retval.0.i30 = select i1 %cmp.i29, ptr %33, ptr %significand.i.i.i + %28 = load ptr, ptr %decSig, align 8 + %precision.i.i = getelementptr inbounds i8, ptr %28, i64 4 + %29 = load i32, ptr %precision.i.i, align 4 + %30 = add i32 %29, -64 + %cmp.i29 = icmp ult i32 %30, -128 + %31 = load ptr, ptr %significand.i.i.i, align 8 + %retval.0.i30 = select i1 %cmp.i29, ptr %31, ptr %significand.i.i.i %dec.i = add i32 %excessPrecision.0, -1 %div23.i = lshr i32 %dec.i, 6 %rem.i = and i32 %dec.i, 63 %idxprom.i31 = zext nneg i32 %div23.i to i64 %arrayidx.i = getelementptr inbounds i64, ptr %retval.0.i30, i64 %idxprom.i31 - %34 = load i64, ptr %arrayidx.i, align 8 + %32 = load i64, ptr %arrayidx.i, align 8 %sub.i32 = xor i32 %rem.i, 63 %sh_prom.i = zext nneg i32 %sub.i32 to i64 %shr.i33 = lshr i64 -1, %sh_prom.i - %and.i34 = and i64 %34, %shr.i33 + %and.i34 = and i64 %32, %shr.i33 %sh_prom2.i = zext nneg i32 %rem.i to i64 %shl.i = shl nuw i64 1, %sh_prom2.i %boundary.0.i = select i1 %1, i64 %shl.i, i64 0 @@ -6248,12 +6241,12 @@ while.cond.i: ; preds = %if.end11.i, %while. while.body.i: ; preds = %while.cond.i %idxprom16.i = zext nneg i32 %dec14.i to i64 %arrayidx17.i = getelementptr inbounds i64, ptr %retval.0.i30, i64 %idxprom16.i - %35 = load i64, ptr %arrayidx17.i, align 8 - %tobool18.not.i = icmp eq i64 %35, 0 + %33 = load i64, ptr %arrayidx17.i, align 8 + %tobool18.not.i = icmp eq i64 %33, 0 br i1 %tobool18.not.i, label %while.cond.i, label %_ZN4llvhL16ulpsFromBoundaryEPKmjb.exit, !llvm.loop !29 while.end.i: ; preds = %while.cond.i - %36 = load i64, ptr %retval.0.i30, align 8 + %34 = load i64, ptr %retval.0.i30, align 8 br label %_ZN4llvhL16ulpsFromBoundaryEPKmjb.exit if.else22.i: ; preds = %if.end11.i @@ -6270,53 +6263,53 @@ while.cond26.i: ; preds = %if.else22.i, %while while.body29.i: ; preds = %while.cond26.i %idxprom30.i = zext nneg i32 %dec27.i to i64 %arrayidx31.i = getelementptr inbounds i64, ptr %retval.0.i30, i64 %idxprom30.i - %37 = load i64, ptr %arrayidx31.i, align 8 - %tobool32.not.i = icmp eq i64 %37, -1 + %35 = load i64, ptr %arrayidx31.i, align 8 + %tobool32.not.i = icmp eq i64 %35, -1 br i1 %tobool32.not.i, label %while.cond26.i, label %_ZN4llvhL16ulpsFromBoundaryEPKmjb.exit, !llvm.loop !30 while.end35.i: ; preds = %while.cond26.i - %38 = load i64, ptr %retval.0.i30, align 8 - %sub37.i = sub i64 0, %38 + %36 = load i64, ptr %retval.0.i30, align 8 + %sub37.i = sub i64 0, %36 br label %_ZN4llvhL16ulpsFromBoundaryEPKmjb.exit _ZN4llvhL16ulpsFromBoundaryEPKmjb.exit: ; preds = %while.body29.i, %while.body.i, %if.then3.i, %while.end.i, %if.else22.i, %while.end35.i - %retval.0.i37 = phi i64 [ %36, %while.end.i ], [ %sub37.i, %while.end35.i ], [ %sub5.sub4.i, %if.then3.i ], [ -1, %if.else22.i ], [ -1, %while.body.i ], [ -1, %while.body29.i ] + %retval.0.i37 = phi i64 [ %34, %while.end.i ], [ %sub37.i, %while.end35.i ], [ %sub5.sub4.i, %if.then3.i ], [ -1, %if.else22.i ], [ -1, %while.body.i ], [ -1, %while.body29.i ] %mul51 = shl i64 %retval.0.i37, 1 %cmp52.not.not = icmp ult i64 %mul51, %conv47 br i1 %cmp52.not.not, label %cleanup, label %if.then53 if.then53: ; preds = %_ZN4llvhL16ulpsFromBoundaryEPKmjb.exit - %39 = load ptr, ptr %this, align 8 - %precision.i.i38 = getelementptr inbounds i8, ptr %39, i64 4 - %40 = load i32, ptr %precision.i.i38, align 4 - %41 = add i32 %40, -64 - %cmp.i39 = icmp ult i32 %41, -128 - %42 = load ptr, ptr %significand.i40, align 8 - %retval.0.i41 = select i1 %cmp.i39, ptr %42, ptr %significand.i40 - %sub.i.i = add i32 %40, 64 + %37 = load ptr, ptr %this, align 8 + %precision.i.i38 = getelementptr inbounds i8, ptr %37, i64 4 + %38 = load i32, ptr %precision.i.i38, align 4 + %39 = add i32 %38, -64 + %cmp.i39 = icmp ult i32 %39, -128 + %40 = load ptr, ptr %significand.i40, align 8 + %retval.0.i41 = select i1 %cmp.i39, ptr %40, ptr %significand.i40 + %sub.i.i = add i32 %38, 64 %div1.i.i = lshr i32 %sub.i.i, 6 - %43 = load i32, ptr %precision6, align 4 - %sub58 = sub i32 %43, %excessPrecision.0 + %41 = load i32, ptr %precision6, align 4 + %sub58 = sub i32 %41, %excessPrecision.0 call void @_ZN4llvh5APInt9tcExtractEPmjPKmjj(ptr noundef %retval.0.i41, i32 noundef %div1.i.i, ptr noundef nonnull %retval.0.i30, i32 noundef %sub58, i32 noundef %excessPrecision.0) #26 - %44 = load i16, ptr %exponent.i, align 8 - %conv60 = zext i16 %44 to i32 - %45 = load ptr, ptr %this, align 8 - %precision62 = getelementptr inbounds i8, ptr %45, i64 4 - %46 = load i32, ptr %precision62, align 4 - %47 = load i32, ptr %precision6, align 4 + %42 = load i16, ptr %exponent.i, align 8 + %conv60 = zext i16 %42 to i32 + %43 = load ptr, ptr %this, align 8 + %precision62 = getelementptr inbounds i8, ptr %43, i64 4 + %44 = load i32, ptr %precision62, align 4 + %45 = load i32, ptr %precision6, align 4 %sub65.neg = add i32 %excessPrecision.0, %conv60 - %add63 = add i32 %sub65.neg, %46 - %sub66 = sub i32 %add63, %47 + %add63 = add i32 %sub65.neg, %44 + %sub66 = sub i32 %add63, %45 %conv67 = trunc i32 %sub66 to i16 store i16 %conv67, ptr %exponent68, align 8 - %48 = load ptr, ptr %decSig, align 8 - %precision.i.i46 = getelementptr inbounds i8, ptr %48, i64 4 - %49 = load i32, ptr %precision.i.i46, align 4 - %50 = add i32 %49, -64 - %cmp.i47 = icmp ult i32 %50, -128 - %51 = load ptr, ptr %significand.i.i.i, align 8 - %retval.0.i49 = select i1 %cmp.i47, ptr %51, ptr %significand.i.i.i - %sub.i.i51 = add i32 %49, 64 + %46 = load ptr, ptr %decSig, align 8 + %precision.i.i46 = getelementptr inbounds i8, ptr %46, i64 4 + %47 = load i32, ptr %precision.i.i46, align 4 + %48 = add i32 %47, -64 + %cmp.i47 = icmp ult i32 %48, -128 + %49 = load ptr, ptr %significand.i.i.i, align 8 + %retval.0.i49 = select i1 %cmp.i47, ptr %49, ptr %significand.i.i.i + %sub.i.i51 = add i32 %47, 64 %div1.i.i52 = lshr i32 %sub.i.i51, 6 %call.i = call noundef i32 @_ZN4llvh5APInt5tcLSBEPKmj(ptr noundef %retval.0.i49, i32 noundef %div1.i.i52) #26 %cmp.not.i = icmp ugt i32 %truncatedBits.0, %call.i @@ -6348,37 +6341,37 @@ _ZN4llvhL29lostFractionThroughTruncationEPKmjj.exit: ; preds = %if.then53, %if.e cleanup: ; preds = %_ZN4llvhL16ulpsFromBoundaryEPKmjb.exit, %_ZN4llvhL29lostFractionThroughTruncationEPKmjj.exit %retval.1 = phi i32 [ %call72, %_ZN4llvhL29lostFractionThroughTruncationEPKmjj.exit ], [ %retval.0, %_ZN4llvhL16ulpsFromBoundaryEPKmjb.exit ] - %52 = load ptr, ptr %pow5, align 8 - %precision.i.i.i.i58 = getelementptr inbounds i8, ptr %52, i64 4 - %53 = load i32, ptr %precision.i.i.i.i58, align 4 - %54 = add i32 %53, -64 - %cmp.i.i.i59 = icmp ult i32 %54, -128 + %50 = load ptr, ptr %pow5, align 8 + %precision.i.i.i.i58 = getelementptr inbounds i8, ptr %50, i64 4 + %51 = load i32, ptr %precision.i.i.i.i58, align 4 + %52 = add i32 %51, -64 + %cmp.i.i.i59 = icmp ult i32 %52, -128 br i1 %cmp.i.i.i59, label %if.then.i.i60, label %_ZN4llvh6detail9IEEEFloatD2Ev.exit if.then.i.i60: ; preds = %cleanup - %55 = load ptr, ptr %significand.i.i25, align 8 - %isnull.i.i = icmp eq ptr %55, null + %53 = load ptr, ptr %significand.i.i25, align 8 + %isnull.i.i = icmp eq ptr %53, null br i1 %isnull.i.i, label %_ZN4llvh6detail9IEEEFloatD2Ev.exit, label %delete.notnull.i.i delete.notnull.i.i: ; preds = %if.then.i.i60 - call void @_ZdaPv(ptr noundef nonnull %55) #25 + call void @_ZdaPv(ptr noundef nonnull %53) #25 br label %_ZN4llvh6detail9IEEEFloatD2Ev.exit _ZN4llvh6detail9IEEEFloatD2Ev.exit: ; preds = %cleanup, %if.then.i.i60, %delete.notnull.i.i - %56 = load ptr, ptr %decSig, align 8 - %precision.i.i.i.i62 = getelementptr inbounds i8, ptr %56, i64 4 - %57 = load i32, ptr %precision.i.i.i.i62, align 4 - %58 = add i32 %57, -64 - %cmp.i.i.i63 = icmp ult i32 %58, -128 + %54 = load ptr, ptr %decSig, align 8 + %precision.i.i.i.i62 = getelementptr inbounds i8, ptr %54, i64 4 + %55 = load i32, ptr %precision.i.i.i.i62, align 4 + %56 = add i32 %55, -64 + %cmp.i.i.i63 = icmp ult i32 %56, -128 br i1 %cmp.i.i.i63, label %if.then.i.i64, label %_ZN4llvh6detail9IEEEFloatD2Ev.exit68 if.then.i.i64: ; preds = %_ZN4llvh6detail9IEEEFloatD2Ev.exit - %59 = load ptr, ptr %significand.i.i.i, align 8 - %isnull.i.i66 = icmp eq ptr %59, null + %57 = load ptr, ptr %significand.i.i.i, align 8 + %isnull.i.i66 = icmp eq ptr %57, null br i1 %isnull.i.i66, label %_ZN4llvh6detail9IEEEFloatD2Ev.exit68, label %delete.notnull.i.i67 delete.notnull.i.i67: ; preds = %if.then.i.i64 - call void @_ZdaPv(ptr noundef nonnull %59) #25 + call void @_ZdaPv(ptr noundef nonnull %57) #25 br label %_ZN4llvh6detail9IEEEFloatD2Ev.exit68 _ZN4llvh6detail9IEEEFloatD2Ev.exit68: ; preds = %_ZN4llvh6detail9IEEEFloatD2Ev.exit, %if.then.i.i64, %delete.notnull.i.i67 diff --git a/bench/hermes/optimized/Domain.cpp.ll b/bench/hermes/optimized/Domain.cpp.ll index 5871bc978d0..eee7e7f56cb 100644 --- a/bench/hermes/optimized/Domain.cpp.ll +++ b/bench/hermes/optimized/Domain.cpp.ll @@ -321,11 +321,10 @@ if.end24: ; preds = %if.then11 if.end.i: ; preds = %if.end24 %mul.i.i.i.i = shl nuw nsw i32 %conv25, 3 - %sub.i.i.i.i.i = add nuw nsw i32 %mul.i.i.i.i, 15 - %div1.i.i.i.i.i = and i32 %sub.i.i.i.i.i, 8388600 + %sub.i.i.i.i.i = add nuw nsw i32 %mul.i.i.i.i, 8 %level_.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1656 %8 = load ptr, ptr %level_.i.i.i.i.i.i.i, align 8 - %idx.ext.i.i.i.i.i.i.i = zext nneg i32 %div1.i.i.i.i.i to i64 + %idx.ext.i.i.i.i.i.i.i = zext nneg i32 %sub.i.i.i.i.i to i64 %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %8, i64 %idx.ext.i.i.i.i.i.i.i %effectiveEnd_.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 1664 %9 = load ptr, ptr %effectiveEnd_.i.i.i.i.i.i.i.i, align 8 @@ -334,7 +333,7 @@ if.end.i: ; preds = %if.end24 cond.true.i.i.i.i.i.i: ; preds = %if.end.i %heapStorage_.i.i.i = getelementptr inbounds i8, ptr %runtime, i64 840 - %call3.i.i.i.i.i.i = tail call noundef ptr @_ZN6hermes2vm7HadesGC9allocSlowEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i.i.i, i32 noundef %div1.i.i.i.i.i) #13 + %call3.i.i.i.i.i.i = tail call noundef ptr @_ZN6hermes2vm7HadesGC9allocSlowEj(ptr noundef nonnull align 8 dereferenceable(8152) %heapStorage_.i.i.i, i32 noundef %sub.i.i.i.i.i) #13 br label %_ZN6hermes2vm16ArrayStorageBaseINS0_11HermesValueEE6createERNS0_7RuntimeEj.exit.thread cond.false.i.i.i.i.i.i: ; preds = %if.end.i @@ -344,7 +343,7 @@ cond.false.i.i.i.i.i.i: ; preds = %if.end.i _ZN6hermes2vm16ArrayStorageBaseINS0_11HermesValueEE6createERNS0_7RuntimeEj.exit.thread: ; preds = %cond.true.i.i.i.i.i.i, %cond.false.i.i.i.i.i.i %cond.i.i.i.i.i.i = phi ptr [ %call3.i.i.i.i.i.i, %cond.true.i.i.i.i.i.i ], [ %8, %cond.false.i.i.i.i.i.i ] store i64 0, ptr %cond.i.i.i.i.i.i, align 8 - %bf.set7.i.i.i.i.i.i.i = or disjoint i32 %div1.i.i.i.i.i, 234881024 + %bf.set7.i.i.i.i.i.i.i = or disjoint i32 %sub.i.i.i.i.i, 234881024 store i32 %bf.set7.i.i.i.i.i.i.i, ptr %cond.i.i.i.i.i.i, align 4 %10 = ptrtoint ptr %cond.i.i.i.i.i.i to i64 %11 = or i64 %10, -281474976710656 diff --git a/bench/hermes/optimized/dtoa.c.ll b/bench/hermes/optimized/dtoa.c.ll index 9079e56c9fe..edcb5eb7f43 100644 --- a/bench/hermes/optimized/dtoa.c.ll +++ b/bench/hermes/optimized/dtoa.c.ll @@ -1072,9 +1072,8 @@ if.else.i.i.i: ; preds = %for.end.i.i %sub.i.i.i = add nsw i32 %shl.i.i.i, -1 %conv.i.i.i = zext nneg i32 %sub.i.i.i to i64 %mul.i.i.i = shl nuw nsw i64 %conv.i.i.i, 2 - %sub5.i.i.i = add nuw nsw i64 %mul.i.i.i, 39 - %mul20.i.i.i = and i64 %sub5.i.i.i, 17179869176 - %call.i.i.i = call noalias ptr @malloc(i64 noundef %mul20.i.i.i) #19 + %sub5.i.i.i = add nuw nsw i64 %mul.i.i.i, 36 + %call.i.i.i = call noalias ptr @malloc(i64 noundef %sub5.i.i.i) #19 %used_heap.i.i.i = getelementptr inbounds i8, ptr %dalloc, i64 4 store i32 1, ptr %used_heap.i.i.i, align 4 br label %if.end.i.i.i @@ -1085,7 +1084,7 @@ land.lhs.true9.i.i.i: ; preds = %if.end486.i, %land. %sub23.i.i.i = add nsw i32 %shl22.i.i.i, -1 %conv24.i.i.i = zext nneg i32 %sub23.i.i.i to i64 %mul25.i.i.i = shl nuw nsw i64 %conv24.i.i.i, 2 - %sub526.i.i.i = add nuw nsw i64 %mul25.i.i.i, 39 + %sub526.i.i.i = add nuw nsw i64 %mul25.i.i.i, 36 %div21.i.i.i = lshr i64 %sub526.i.i.i, 3 %add.ptr.i.i.i = getelementptr inbounds double, ptr %private_mem.i, i64 %div21.i.i.i store ptr %add.ptr.i.i.i, ptr %pmem_next.i, align 8 @@ -1206,7 +1205,7 @@ if.else.i393.i: ; preds = %for.cond489.i %sub.i395.i = add nsw i32 %shl.i394.i, -1 %conv.i396.i = zext nneg i32 %sub.i395.i to i64 %mul.i.i = shl nuw nsw i64 %conv.i396.i, 2 - %sub5.i.i = add nuw nsw i64 %mul.i.i, 39 + %sub5.i.i = add nuw nsw i64 %mul.i.i, 36 br label %if.else18.i.i land.lhs.true9.i.i: ; preds = %land.lhs.true.i.i @@ -1214,7 +1213,7 @@ land.lhs.true9.i.i: ; preds = %land.lhs.true.i.i %sub23.i.i = add nsw i32 %shl22.i.i, -1 %conv24.i.i = zext nneg i32 %sub23.i.i to i64 %mul25.i.i = shl nuw nsw i64 %conv24.i.i, 2 - %sub526.i.i = add nuw nsw i64 %mul25.i.i, 39 + %sub526.i.i = add nuw nsw i64 %mul25.i.i, 36 %div21.i.i = lshr i64 %sub526.i.i, 3 %113 = load ptr, ptr %pmem_next.i, align 8 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %113 to i64 @@ -3178,7 +3177,7 @@ if.else.i.i: ; preds = %for.end.i %sub.i.i = add nsw i32 %shl.i.i, -1 %conv.i.i = zext nneg i32 %sub.i.i to i64 %mul.i.i = shl nuw nsw i64 %conv.i.i, 2 - %sub5.i.i = add nuw nsw i64 %mul.i.i, 39 + %sub5.i.i = add nuw nsw i64 %mul.i.i, 36 br label %if.else18.i.i land.lhs.true9.i.i: ; preds = %land.lhs.true.i.i @@ -3186,7 +3185,7 @@ land.lhs.true9.i.i: ; preds = %land.lhs.true.i.i %sub23.i.i = add nsw i32 %shl22.i.i, -1 %conv24.i.i = zext nneg i32 %sub23.i.i to i64 %mul25.i.i = shl nuw nsw i64 %conv24.i.i, 2 - %sub526.i.i = add nuw nsw i64 %mul25.i.i, 39 + %sub526.i.i = add nuw nsw i64 %mul25.i.i, 36 %div21.i.i = lshr i64 %sub526.i.i, 3 %pmem_next.i.i = getelementptr inbounds i8, ptr %dalloc, i64 8 %37 = load ptr, ptr %pmem_next.i.i, align 8 @@ -4109,7 +4108,7 @@ if.else.i527: ; preds = %if.then505 %sub.i529 = add nsw i32 %shl.i528, -1 %conv.i530 = zext nneg i32 %sub.i529 to i64 %mul.i = shl nuw nsw i64 %conv.i530, 2 - %sub5.i = add nuw nsw i64 %mul.i, 39 + %sub5.i = add nuw nsw i64 %mul.i, 36 br label %if.else18.i land.lhs.true9.i: ; preds = %land.lhs.true.i @@ -4117,7 +4116,7 @@ land.lhs.true9.i: ; preds = %land.lhs.true.i %sub23.i = add nsw i32 %shl22.i, -1 %conv24.i = zext nneg i32 %sub23.i to i64 %mul25.i = shl nuw nsw i64 %conv24.i, 2 - %sub526.i = add nuw nsw i64 %mul25.i, 39 + %sub526.i = add nuw nsw i64 %mul25.i, 36 %div21.i = lshr i64 %sub526.i, 3 %pmem_next.i = getelementptr inbounds i8, ptr %dalloc, i64 8 %107 = load ptr, ptr %pmem_next.i, align 8 @@ -5151,7 +5150,7 @@ if.else.i: ; preds = %entry %sub.i = add nsw i32 %shl.i, -1 %conv.i = zext nneg i32 %sub.i to i64 %mul.i = shl nuw nsw i64 %conv.i, 2 - %sub5.i = add nuw nsw i64 %mul.i, 39 + %sub5.i = add nuw nsw i64 %mul.i, 36 br label %if.else18.i land.lhs.true9.i: ; preds = %land.lhs.true.i @@ -5159,7 +5158,7 @@ land.lhs.true9.i: ; preds = %land.lhs.true.i %sub23.i = add nsw i32 %shl22.i, -1 %conv24.i = zext nneg i32 %sub23.i to i64 %mul25.i = shl nuw nsw i64 %conv24.i, 2 - %sub526.i = add nuw nsw i64 %mul25.i, 39 + %sub526.i = add nuw nsw i64 %mul25.i, 36 %div21.i = lshr i64 %sub526.i, 3 %pmem_next.i = getelementptr inbounds i8, ptr %dalloc, i64 8 %8 = load ptr, ptr %pmem_next.i, align 8 @@ -5347,7 +5346,7 @@ if.else.i: ; preds = %for.end %sub.i = add nsw i32 %shl.i, -1 %conv.i = zext nneg i32 %sub.i to i64 %mul.i = shl nuw nsw i64 %conv.i, 2 - %sub5.i = add nuw nsw i64 %mul.i, 39 + %sub5.i = add nuw nsw i64 %mul.i, 36 br label %if.else18.i land.lhs.true9.i: ; preds = %land.lhs.true.i @@ -5355,7 +5354,7 @@ land.lhs.true9.i: ; preds = %land.lhs.true.i %sub23.i = add nsw i32 %shl22.i, -1 %conv24.i = zext nneg i32 %sub23.i to i64 %mul25.i = shl nuw nsw i64 %conv24.i, 2 - %sub526.i = add nuw nsw i64 %mul25.i, 39 + %sub526.i = add nuw nsw i64 %mul25.i, 36 %div21.i = lshr i64 %sub526.i, 3 %pmem_next.i = getelementptr inbounds i8, ptr %dalloc, i64 8 %5 = load ptr, ptr %pmem_next.i, align 8 @@ -5550,7 +5549,7 @@ if.else.i: ; preds = %if.then9 %sub.i = add nsw i32 %shl.i, -1 %conv.i = zext nneg i32 %sub.i to i64 %mul.i = shl nuw nsw i64 %conv.i, 2 - %sub5.i = add nuw nsw i64 %mul.i, 39 + %sub5.i = add nuw nsw i64 %mul.i, 36 br label %if.else18.i land.lhs.true9.i: ; preds = %land.lhs.true.i @@ -5558,7 +5557,7 @@ land.lhs.true9.i: ; preds = %land.lhs.true.i %sub23.i = add nsw i32 %shl22.i, -1 %conv24.i = zext nneg i32 %sub23.i to i64 %mul25.i = shl nuw nsw i64 %conv24.i, 2 - %sub526.i = add nuw nsw i64 %mul25.i, 39 + %sub526.i = add nuw nsw i64 %mul25.i, 36 %div21.i = lshr i64 %sub526.i, 3 %pmem_next.i = getelementptr inbounds i8, ptr %dalloc, i64 8 %6 = load ptr, ptr %pmem_next.i, align 8 @@ -5958,7 +5957,7 @@ if.else.i: ; preds = %if.end %sub.i34 = add nsw i32 %shl.i, -1 %conv.i = zext nneg i32 %sub.i34 to i64 %mul.i = shl nuw nsw i64 %conv.i, 2 - %sub5.i = add nuw nsw i64 %mul.i, 39 + %sub5.i = add nuw nsw i64 %mul.i, 36 br label %if.else18.i35 land.lhs.true9.i48: ; preds = %land.lhs.true.i @@ -5966,7 +5965,7 @@ land.lhs.true9.i48: ; preds = %land.lhs.true.i %sub23.i = add nsw i32 %shl22.i, -1 %conv24.i = zext nneg i32 %sub23.i to i64 %mul25.i = shl nuw nsw i64 %conv24.i, 2 - %sub526.i = add nuw nsw i64 %mul25.i, 39 + %sub526.i = add nuw nsw i64 %mul25.i, 36 %div21.i = lshr i64 %sub526.i, 3 %pmem_next.i49 = getelementptr inbounds i8, ptr %dalloc, i64 8 %11 = load ptr, ptr %pmem_next.i49, align 8 @@ -6508,7 +6507,7 @@ if.else.i.i: ; preds = %for.end.i %sub.i.i = add nsw i32 %shl.i.i, -1 %conv.i.i = zext nneg i32 %sub.i.i to i64 %mul.i.i = shl nuw nsw i64 %conv.i.i, 2 - %sub5.i.i = add nuw nsw i64 %mul.i.i, 39 + %sub5.i.i = add nuw nsw i64 %mul.i.i, 36 br label %if.else18.i.i land.lhs.true9.i.i: ; preds = %land.lhs.true.i.i @@ -6516,7 +6515,7 @@ land.lhs.true9.i.i: ; preds = %land.lhs.true.i.i %sub23.i.i = add nsw i32 %shl22.i.i, -1 %conv24.i.i = zext nneg i32 %sub23.i.i to i64 %mul25.i.i = shl nuw nsw i64 %conv24.i.i, 2 - %sub526.i.i = add nuw nsw i64 %mul25.i.i, 39 + %sub526.i.i = add nuw nsw i64 %mul25.i.i, 36 %div21.i.i = lshr i64 %sub526.i.i, 3 %pmem_next.i.i = getelementptr inbounds i8, ptr %dalloc, i64 8 %37 = load ptr, ptr %pmem_next.i.i, align 8 @@ -7425,7 +7424,7 @@ if.else.i508: ; preds = %if.then499 %sub.i510 = add nsw i32 %shl.i509, -1 %conv.i511 = zext nneg i32 %sub.i510 to i64 %mul.i = shl nuw nsw i64 %conv.i511, 2 - %sub5.i = add nuw nsw i64 %mul.i, 39 + %sub5.i = add nuw nsw i64 %mul.i, 36 br label %if.else18.i land.lhs.true9.i: ; preds = %land.lhs.true.i @@ -7433,7 +7432,7 @@ land.lhs.true9.i: ; preds = %land.lhs.true.i %sub23.i = add nsw i32 %shl22.i, -1 %conv24.i = zext nneg i32 %sub23.i to i64 %mul25.i = shl nuw nsw i64 %conv24.i, 2 - %sub526.i = add nuw nsw i64 %mul25.i, 39 + %sub526.i = add nuw nsw i64 %mul25.i, 36 %div21.i = lshr i64 %sub526.i, 3 %pmem_next.i = getelementptr inbounds i8, ptr %dalloc, i64 8 %107 = load ptr, ptr %pmem_next.i, align 8 diff --git a/bench/hyperscan/optimized/flood_compile.cpp.ll b/bench/hyperscan/optimized/flood_compile.cpp.ll index ac3d4932f9b..4908e82c43a 100644 --- a/bench/hyperscan/optimized/flood_compile.cpp.ll +++ b/bench/hyperscan/optimized/flood_compile.cpp.ll @@ -728,14 +728,13 @@ for.end231: ; preds = %for.inc229 %flood2chars.val = load i64, ptr %_M_node_count.i.i.i.i.i, align 8 %conv234 = and i64 %flood2chars.val, 4294967295 %mul = mul nuw nsw i64 %conv234, 208 - %add235 = add nuw nsw i64 %mul, 1039 - %and236 = and i64 %add235, 2199023255536 - invoke void @_ZN3ue212bytecode_ptrIhEC2Emm(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, i64 noundef %and236, i64 noundef 16) + %add235 = add nuw nsw i64 %mul, 1024 + invoke void @_ZN3ue212bytecode_ptrIhEC2Emm(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, i64 noundef %add235, i64 noundef 16) to label %invoke.cont237 unwind label %lpad224.loopexit.split-lp invoke.cont237: ; preds = %for.end231 %84 = load ptr, ptr %agg.result, align 8, !alias.scope !12 - call void @llvm.memset.p0.i64(ptr align 1 %84, i8 0, i64 %and236, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %84, i8 0, i64 %add235, i1 false) %85 = load ptr, ptr %agg.result, align 8 %add.ptr = getelementptr inbounds i8, ptr %85, i64 1024 %flood2chars.val140 = load ptr, ptr %_M_left.i.i.i.i.i, align 8 diff --git a/bench/imgui/optimized/imgui_tables.cpp.ll b/bench/imgui/optimized/imgui_tables.cpp.ll index d8d94be2220..99d402aa708 100644 --- a/bench/imgui/optimized/imgui_tables.cpp.ll +++ b/bench/imgui/optimized/imgui_tables.cpp.ll @@ -1110,7 +1110,7 @@ if.then337: ; preds = %if.end334.thread, % %arrayidx6.i.i = getelementptr inbounds i8, ptr %span_allocator.i, i64 44 store i32 %mul3.i, ptr %arrayidx6.i.i, align 4 %mul5.i = shl i32 %columns_count, 3 - %add9.i24.i = add i32 %mul3.i, 3 + %add9.i24.i = add i32 %mul3.i, 2 %add.i26.i = add i32 %add9.i24.i, %mul.i %and.i27.i = and i32 %add.i26.i, -4 %arrayidx.i29.i = getelementptr inbounds i8, ptr %span_allocator.i, i64 24 @@ -1588,7 +1588,7 @@ entry: %arrayidx6.i = getelementptr inbounds i8, ptr %span_allocator, i64 44 store i32 %mul3, ptr %arrayidx6.i, align 4 %mul5 = shl i32 %columns_count, 3 - %add9.i24 = add i32 %mul3, 3 + %add9.i24 = add i32 %mul3, 2 %add.i26 = add i32 %add9.i24, %mul %and.i27 = and i32 %add.i26, -4 %arrayidx.i29 = getelementptr inbounds i8, ptr %span_allocator, i64 24 @@ -7287,7 +7287,7 @@ arrayctor.cont: ; preds = %arrayctor.loop %ColumnsCount = getelementptr inbounds i8, ptr %table, i64 108 %4 = load i32, ptr %ColumnsCount, align 4 %mul = shl nsw i32 %4, 1 - %add.i = add nsw i32 %mul, 35 + %add.i = add nsw i32 %mul, 34 %5 = ashr i32 %add.i, 3 %shl.i = and i32 %5, -4 %TempBuffer = getelementptr inbounds i8, ptr %0, i64 25016 @@ -12277,9 +12277,8 @@ entry: %SettingsTables = getelementptr inbounds i8, ptr %0, i64 24384 %mul.i = shl i32 %columns_count, 4 %1 = load i32, ptr %SettingsTables, align 8 - %2 = add i32 %mul.i, 27 - %conv.i4 = and i32 %2, -8 - %add4.i = add nsw i32 %1, %conv.i4 + %2 = add i32 %mul.i, 24 + %add4.i = add nsw i32 %1, %2 %Capacity.i.i = getelementptr inbounds i8, ptr %0, i64 24388 %3 = load i32, ptr %Capacity.i.i, align 4 %cmp.i.i = icmp sgt i32 %add4.i, %3 @@ -12328,7 +12327,7 @@ _ZN13ImChunkStreamI18ImGuiTableSettingsE11alloc_chunkEm.exit: ; preds = %entry._ %Data.i = getelementptr inbounds i8, ptr %0, i64 24392 %idx.ext.i = sext i32 %1 to i64 %add.ptr.i = getelementptr inbounds i8, ptr %7, i64 %idx.ext.i - store i32 %conv.i4, ptr %add.ptr.i, align 4 + store i32 %2, ptr %add.ptr.i, align 4 %8 = load ptr, ptr %Data.i, align 8 %add.ptr10.i = getelementptr inbounds i8, ptr %8, i64 %idx.ext.i %add.ptr13.i = getelementptr inbounds i8, ptr %add.ptr10.i, i64 4 @@ -13329,9 +13328,8 @@ if.then20: ; preds = %for.body17 %13 = load i16, ptr %ColumnsCount21, align 4 %conv.i25 = sext i16 %13 to i32 %mul.i26 = shl nsw i32 %conv.i25, 4 - %14 = add nsw i32 %mul.i26, 27 - %conv.i28 = and i32 %14, -8 - %add4.i = add nsw i32 %conv.i28, %11 + %14 = add nsw i32 %mul.i26, 24 + %add4.i = add nsw i32 %14, %11 %cmp.i.i = icmp sgt i32 %add4.i, %10 br i1 %cmp.i.i, label %if.then.i.i, label %invoke.cont25 @@ -13372,7 +13370,7 @@ invoke.cont25: ; preds = %if.then20, %if.end7 store i32 %add4.i, ptr %new_chunk_stream, align 8 %idx.ext.i30 = sext i32 %11 to i64 %add.ptr.i31 = getelementptr inbounds i8, ptr %16, i64 %idx.ext.i30 - store i32 %conv.i28, ptr %add.ptr.i31, align 4 + store i32 %14, ptr %add.ptr.i31, align 4 %17 = load ptr, ptr %Data.phi.trans.insert.i, align 8 %add.ptr10.i = getelementptr inbounds i8, ptr %17, i64 %idx.ext.i30 %add.ptr13.i = getelementptr inbounds i8, ptr %add.ptr10.i, i64 4 diff --git a/bench/jemalloc/optimized/base.ll b/bench/jemalloc/optimized/base.ll index fcb448ef036..61e9b54a375 100644 --- a/bench/jemalloc/optimized/base.ll +++ b/bench/jemalloc/optimized/base.ll @@ -191,7 +191,7 @@ entry: %add1 = add i64 %sub, %and %add2 = sub i64 0, %and %and3 = and i64 %add1, %add2 - %add5 = add i64 %and, 143 + %add5 = add i64 %alignment, 143 %and8 = and i64 %add5, %add2 %add11 = add i64 %and3, %and8 %cmp.i43 = icmp ugt i64 %add11, 8070450532247928832 @@ -1086,8 +1086,7 @@ malloc_mutex_lock.exit: ; preds = %if.end.i27, %if.the br i1 %cmp.i, label %if.then.i, label %if.end.i if.then.i: ; preds = %malloc_mutex_lock.exit - %sub.i = add nsw i64 %add4, -9 - %shr.i = lshr i64 %sub.i, 3 + %shr.i = lshr exact i64 %sub5, 3 %arrayidx.i = getelementptr inbounds [0 x i8], ptr @sz_size2index_tab, i64 0, i64 %shr.i %3 = load i8, ptr %arrayidx.i, align 1 %conv.i33 = zext i8 %3 to i32 diff --git a/bench/just-rs/optimized/15iymzte00kmcyqz.ll b/bench/just-rs/optimized/15iymzte00kmcyqz.ll index bc203d99e07..8c0af53b12c 100644 --- a/bench/just-rs/optimized/15iymzte00kmcyqz.ll +++ b/bench/just-rs/optimized/15iymzte00kmcyqz.ll @@ -6778,7 +6778,7 @@ define hidden void @"_ZN9hashbrown11rustc_entry62_$LT$impl$u20$hashbrown..map..H "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h9dae702efa3f7211E.llvm.5593464411486612011.exit.backedge.i": ; preds = %60, %52 %.not.i4.not.i = icmp eq i16 %53, 0 - %62 = add i16 %53, -1 + %62 = add i16 %53, -2 %63 = and i16 %62, %53 br i1 %.not.i4.not.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h9dae702efa3f7211E.llvm.5593464411486612011.exit._crit_edge.i", label %52 @@ -7310,7 +7310,7 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd276ce11003d0a9eE.exit.backedge.i.i": ; preds = %61, %.lr.ph.i.i %.not.i4.not.i.i = icmp eq i16 %53, 0 - %64 = add i16 %53, -1 + %64 = add i16 %53, -2 %65 = and i16 %64, %53 br i1 %.not.i4.not.i.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd276ce11003d0a9eE.exit._crit_edge.i.i", label %.lr.ph.i.i @@ -7756,7 +7756,7 @@ define hidden noundef align 8 dereferenceable_or_null(56) ptr @"_ZN9hashbrown3ma "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd276ce11003d0a9eE.exit.backedge.i.i": ; preds = %61, %.lr.ph.i.i %.not.i4.not.i.i = icmp eq i16 %53, 0 - %64 = add i16 %53, -1 + %64 = add i16 %53, -2 %65 = and i16 %64, %53 br i1 %.not.i4.not.i.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd276ce11003d0a9eE.exit._crit_edge.i.i", label %.lr.ph.i.i @@ -12205,7 +12205,7 @@ define internal fastcc i64 @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 47: ; preds = %.thread.i.i %48 = extractvalue { i64, i1 } %45, 0 - %49 = add nuw i64 %48, 15 + %49 = add nuw i64 %48, 8 %50 = and i64 %49, -16 %51 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %52 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %50, i64 %51) @@ -13016,7 +13016,7 @@ define internal fastcc i64 @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 48: ; preds = %.thread.i.i %49 = extractvalue { i64, i1 } %46, 0 - %50 = add nuw i64 %49, 15 + %50 = add nuw i64 %49, 8 %51 = and i64 %50, -16 %52 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %53 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %51, i64 %52) @@ -13434,7 +13434,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 51: ; preds = %.thread.i.i %52 = extractvalue { i64, i1 } %49, 0 - %53 = add nuw i64 %52, 15 + %53 = add nuw i64 %52, 8 %54 = and i64 %53, -16 %55 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %56 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %54, i64 %55) @@ -13857,7 +13857,7 @@ define internal fastcc i64 @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 47: ; preds = %.thread.i.i %48 = extractvalue { i64, i1 } %45, 0 - %49 = add nuw i64 %48, 15 + %49 = add nuw i64 %48, 8 %50 = and i64 %49, -16 %51 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %52 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %50, i64 %51) @@ -14268,7 +14268,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 51: ; preds = %.thread.i.i %52 = extractvalue { i64, i1 } %49, 0 - %53 = add nuw i64 %52, 15 + %53 = add nuw i64 %52, 8 %54 = and i64 %53, -16 %55 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %56 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %54, i64 %55) @@ -14684,7 +14684,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 48: ; preds = %.thread.i.i %49 = extractvalue { i64, i1 } %46, 0 - %50 = add nuw i64 %49, 15 + %50 = add nuw i64 %49, 8 %51 = and i64 %50, -16 %52 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %53 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %51, i64 %52) @@ -15644,7 +15644,7 @@ define hidden noundef align 8 dereferenceable_or_null(72) ptr @"_ZN9hashbrown3ra "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd276ce11003d0a9eE.exit.backedge.i": ; preds = %26, %.lr.ph.i %.not.i4.not.i = icmp eq i16 %18, 0 - %29 = add i16 %18, -1 + %29 = add i16 %18, -2 %30 = and i16 %29, %18 br i1 %.not.i4.not.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd276ce11003d0a9eE.exit._crit_edge.i", label %.lr.ph.i @@ -15796,7 +15796,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h24ee "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd276ce11003d0a9eE.exit.backedge": ; preds = %26, %.lr.ph %.not.i4.not = icmp eq i16 %18, 0 - %29 = add i16 %18, -1 + %29 = add i16 %18, -2 %30 = and i16 %29, %18 br i1 %.not.i4.not, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd276ce11003d0a9eE.exit._crit_edge", label %.lr.ph @@ -15975,7 +15975,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h758f "_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.llvm.5593464411486612011.exit.backedge.us.us": ; preds = %32, %34, %"_ZN123_$LT$similar..algorithms..utils..IdentifyDistinct$LT$Int$GT$..new..Key$LT$Old$C$New$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h15b081d9e1380771E.exit.sink.split.i.i.us.us" %.not.i4.not.us.us = icmp eq i16 %22, 0 - %37 = add i16 %22, -1 + %37 = add i16 %22, -2 %38 = and i16 %37, %22 br i1 %.not.i4.not.us.us, label %"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.llvm.5593464411486612011.exit._crit_edge.split.us.us", label %.lr.ph.us @@ -16027,7 +16027,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h758f "_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.llvm.5593464411486612011.exit.backedge": ; preds = %.lr.ph, %"_ZN123_$LT$similar..algorithms..utils..IdentifyDistinct$LT$Int$GT$..new..Key$LT$Old$C$New$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h15b081d9e1380771E.exit.sink.split.i.i" %.not.i4.not = icmp eq i16 %46, 0 - %54 = add i16 %46, -1 + %54 = add i16 %46, -2 %55 = and i16 %54, %46 br i1 %.not.i4.not, label %"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.llvm.5593464411486612011.exit._crit_edge.split", label %.lr.ph @@ -16245,7 +16245,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hf713 "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h9dae702efa3f7211E.llvm.5593464411486612011.exit.backedge": ; preds = %26, %18 %.not.i4.not = icmp eq i16 %19, 0 - %28 = add i16 %19, -1 + %28 = add i16 %19, -2 %29 = and i16 %28, %19 br i1 %.not.i4.not, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h9dae702efa3f7211E.llvm.5593464411486612011.exit._crit_edge", label %18 diff --git a/bench/libphonenumber/optimized/generate_geocoding_data.cc.ll b/bench/libphonenumber/optimized/generate_geocoding_data.cc.ll index 5197944d0d0..1b57735b9bf 100644 --- a/bench/libphonenumber/optimized/generate_geocoding_data.cc.ll +++ b/bench/libphonenumber/optimized/generate_geocoding_data.cc.ll @@ -4995,158 +4995,157 @@ _ZN4absl7debian218container_internal14btree_iteratorINS1_10btree_nodeINS1_10map_ %30 = phi i8 [ %.pre, %_ZN4absl7debian218container_internal14btree_iteratorINS1_10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiSA_EELi256ELb0EEEEERSF_PSF_EmmEv.exit ], [ %10, %._crit_edge ] %31 = phi ptr [ %storemerge.lcssa.i.i.i, %_ZN4absl7debian218container_internal14btree_iteratorINS1_10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiSA_EELi256ELb0EEEEERSF_PSF_EmmEv.exit ], [ %1, %._crit_edge ] %32 = icmp eq i8 %29, %30 - br i1 %32, label %33, label %60 + br i1 %32, label %33, label %59 33: ; preds = %27 %34 = icmp ult i8 %29, 6 - br i1 %34, label %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE18new_leaf_root_nodeEi.exit, label %59 + br i1 %34, label %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE18new_leaf_root_nodeEi.exit, label %58 _ZN4absl7debian218container_internal5btreeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE18new_leaf_root_nodeEi.exit: ; preds = %33 %35 = shl nuw nsw i8 %29, 1 %36 = tail call i8 @llvm.umin.i8(i8 %35, i8 6) %narrow = mul nuw i8 %36, 40 %37 = zext i8 %narrow to i64 - %38 = add nuw nsw i64 %37, 19 - %39 = and i64 %38, 496 - %40 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %39) #26 - store ptr %40, ptr %40, align 8 - %41 = getelementptr inbounds i8, ptr %40, i64 8 + %38 = add nuw nsw i64 %37, 16 + %39 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %38) #26 + store ptr %39, ptr %39, align 8 + %40 = getelementptr inbounds i8, ptr %39, i64 8 + store i8 0, ptr %40, align 1 + %41 = getelementptr inbounds i8, ptr %39, i64 9 store i8 0, ptr %41, align 1 - %42 = getelementptr inbounds i8, ptr %40, i64 9 + %42 = getelementptr inbounds i8, ptr %39, i64 10 store i8 0, ptr %42, align 1 - %43 = getelementptr inbounds i8, ptr %40, i64 10 - store i8 0, ptr %43, align 1 - %44 = getelementptr inbounds i8, ptr %40, i64 11 - store i8 %36, ptr %44, align 1 - store ptr %40, ptr %7, align 8 - %45 = load ptr, ptr %0, align 8 - %46 = getelementptr inbounds i8, ptr %45, i64 10 - %47 = load i8, ptr %46, align 1 - %48 = zext i8 %47 to i64 - %49 = getelementptr inbounds i8, ptr %45, i64 16 - %50 = getelementptr inbounds %"union.absl::debian2::container_internal::map_slot_type", ptr %49, i64 %48 - %.not14.i = icmp eq i8 %47, 0 + %43 = getelementptr inbounds i8, ptr %39, i64 11 + store i8 %36, ptr %43, align 1 + store ptr %39, ptr %7, align 8 + %44 = load ptr, ptr %0, align 8 + %45 = getelementptr inbounds i8, ptr %44, i64 10 + %46 = load i8, ptr %45, align 1 + %47 = zext i8 %46 to i64 + %48 = getelementptr inbounds i8, ptr %44, i64 16 + %49 = getelementptr inbounds %"union.absl::debian2::container_internal::map_slot_type", ptr %48, i64 %47 + %.not14.i = icmp eq i8 %46, 0 br i1 %.not14.i, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE10transfer_nElllPSH_PSF_.exit, label %.lr.ph.preheader.i .lr.ph.preheader.i: ; preds = %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE18new_leaf_root_nodeEi.exit - %51 = getelementptr inbounds i8, ptr %40, i64 16 + %50 = getelementptr inbounds i8, ptr %39, i64 16 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i - %.016.i = phi ptr [ %56, %.lr.ph.i ], [ %51, %.lr.ph.preheader.i ] - %.01215.i = phi ptr [ %55, %.lr.ph.i ], [ %49, %.lr.ph.preheader.i ] - %52 = load i32, ptr %.01215.i, align 8 - store i32 %52, ptr %.016.i, align 8 - %53 = getelementptr inbounds i8, ptr %.016.i, i64 8 - %54 = getelementptr inbounds i8, ptr %.01215.i, i64 8 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(32) %54) #23 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #23 - %55 = getelementptr inbounds i8, ptr %.01215.i, i64 40 - %56 = getelementptr inbounds i8, ptr %.016.i, i64 40 - %.not.i = icmp eq ptr %55, %50 + %.016.i = phi ptr [ %55, %.lr.ph.i ], [ %50, %.lr.ph.preheader.i ] + %.01215.i = phi ptr [ %54, %.lr.ph.i ], [ %48, %.lr.ph.preheader.i ] + %51 = load i32, ptr %.01215.i, align 8 + store i32 %51, ptr %.016.i, align 8 + %52 = getelementptr inbounds i8, ptr %.016.i, i64 8 + %53 = getelementptr inbounds i8, ptr %.01215.i, i64 8 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 8 dereferenceable(32) %53) #23 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #23 + %54 = getelementptr inbounds i8, ptr %.01215.i, i64 40 + %55 = getelementptr inbounds i8, ptr %.016.i, i64 40 + %.not.i = icmp eq ptr %54, %49 br i1 %.not.i, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE10transfer_nElllPSH_PSF_.exit.loopexit, label %.lr.ph.i, !llvm.loop !88 _ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE10transfer_nElllPSH_PSF_.exit.loopexit: ; preds = %.lr.ph.i - %.pre28 = load i8, ptr %46, align 1 + %.pre28 = load i8, ptr %45, align 1 br label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE10transfer_nElllPSH_PSF_.exit _ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE10transfer_nElllPSH_PSF_.exit: ; preds = %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE10transfer_nElllPSH_PSF_.exit.loopexit, %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE18new_leaf_root_nodeEi.exit - %57 = phi i8 [ %.pre28, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE10transfer_nElllPSH_PSF_.exit.loopexit ], [ 0, %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE18new_leaf_root_nodeEi.exit ] - store i8 %57, ptr %43, align 1 - store i8 0, ptr %46, align 1 - tail call void @_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE16clear_and_deleteEPSH_PSF_(ptr noundef nonnull %45, ptr noundef nonnull %0) - %58 = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %40, ptr %58, align 8 - store ptr %40, ptr %0, align 8 - br label %60 + %56 = phi i8 [ %.pre28, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE10transfer_nElllPSH_PSF_.exit.loopexit ], [ 0, %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE18new_leaf_root_nodeEi.exit ] + store i8 %56, ptr %42, align 1 + store i8 0, ptr %45, align 1 + tail call void @_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE16clear_and_deleteEPSH_PSF_(ptr noundef nonnull %44, ptr noundef nonnull %0) + %57 = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %39, ptr %57, align 8 + store ptr %39, ptr %0, align 8 + br label %59 -59: ; preds = %33 +58: ; preds = %33 call void @_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE18rebalance_or_splitEPNS1_14btree_iteratorINS1_10btree_nodeISG_EERSE_PSE_EE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %7) %.pre29 = load ptr, ptr %7, align 8 %.pre30 = load i32, ptr %8, align 8 - br label %60 + br label %59 -60: ; preds = %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE10transfer_nElllPSH_PSF_.exit, %59, %27 - %61 = phi i32 [ %28, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE10transfer_nElllPSH_PSF_.exit ], [ %.pre30, %59 ], [ %28, %27 ] - %62 = phi ptr [ %40, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE10transfer_nElllPSH_PSF_.exit ], [ %.pre29, %59 ], [ %31, %27 ] - %63 = sext i32 %61 to i64 - %64 = getelementptr inbounds i8, ptr %62, i64 10 - %65 = load i8, ptr %64, align 1 - %66 = zext i8 %65 to i64 - %67 = icmp slt i64 %63, %66 - br i1 %67, label %.lr.ph.preheader.i.i, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE19transfer_n_backwardElllPSH_PSF_.exit.i - -.lr.ph.preheader.i.i: ; preds = %60 - %.neg = sub nsw i64 %63, %66 - %68 = getelementptr inbounds i8, ptr %62, i64 16 - %69 = shl nuw nsw i64 %66, 32 - %sext.i.i = add nsw i64 %69, -4294967296 - %70 = ashr exact i64 %sext.i.i, 32 - %71 = getelementptr inbounds %"union.absl::debian2::container_internal::map_slot_type", ptr %68, i64 %70 - %72 = getelementptr inbounds %"union.absl::debian2::container_internal::map_slot_type", ptr %71, i64 %.neg - %73 = getelementptr inbounds %"union.absl::debian2::container_internal::map_slot_type", ptr %68, i64 %66 +59: ; preds = %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE10transfer_nElllPSH_PSF_.exit, %58, %27 + %60 = phi i32 [ %28, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE10transfer_nElllPSH_PSF_.exit ], [ %.pre30, %58 ], [ %28, %27 ] + %61 = phi ptr [ %39, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE10transfer_nElllPSH_PSF_.exit ], [ %.pre29, %58 ], [ %31, %27 ] + %62 = sext i32 %60 to i64 + %63 = getelementptr inbounds i8, ptr %61, i64 10 + %64 = load i8, ptr %63, align 1 + %65 = zext i8 %64 to i64 + %66 = icmp slt i64 %62, %65 + br i1 %66, label %.lr.ph.preheader.i.i, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE19transfer_n_backwardElllPSH_PSF_.exit.i + +.lr.ph.preheader.i.i: ; preds = %59 + %.neg = sub nsw i64 %62, %65 + %67 = getelementptr inbounds i8, ptr %61, i64 16 + %68 = shl nuw nsw i64 %65, 32 + %sext.i.i = add nsw i64 %68, -4294967296 + %69 = ashr exact i64 %sext.i.i, 32 + %70 = getelementptr inbounds %"union.absl::debian2::container_internal::map_slot_type", ptr %67, i64 %69 + %71 = getelementptr inbounds %"union.absl::debian2::container_internal::map_slot_type", ptr %70, i64 %.neg + %72 = getelementptr inbounds %"union.absl::debian2::container_internal::map_slot_type", ptr %67, i64 %65 br label %.lr.ph.i.i .lr.ph.i.i: ; preds = %.lr.ph.i.i, %.lr.ph.preheader.i.i - %.018.i.i = phi ptr [ %78, %.lr.ph.i.i ], [ %73, %.lr.ph.preheader.i.i ] - %.01417.i.i = phi ptr [ %77, %.lr.ph.i.i ], [ %71, %.lr.ph.preheader.i.i ] - %74 = load i32, ptr %.01417.i.i, align 8 - store i32 %74, ptr %.018.i.i, align 8 - %75 = getelementptr inbounds i8, ptr %.018.i.i, i64 8 - %76 = getelementptr inbounds i8, ptr %.01417.i.i, i64 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull align 8 dereferenceable(32) %76) #23 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #23 - %77 = getelementptr inbounds i8, ptr %.01417.i.i, i64 -40 - %78 = getelementptr inbounds i8, ptr %.018.i.i, i64 -40 - %.not.i.i22 = icmp eq ptr %77, %72 + %.018.i.i = phi ptr [ %77, %.lr.ph.i.i ], [ %72, %.lr.ph.preheader.i.i ] + %.01417.i.i = phi ptr [ %76, %.lr.ph.i.i ], [ %70, %.lr.ph.preheader.i.i ] + %73 = load i32, ptr %.01417.i.i, align 8 + store i32 %73, ptr %.018.i.i, align 8 + %74 = getelementptr inbounds i8, ptr %.018.i.i, i64 8 + %75 = getelementptr inbounds i8, ptr %.01417.i.i, i64 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 8 dereferenceable(32) %75) #23 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #23 + %76 = getelementptr inbounds i8, ptr %.01417.i.i, i64 -40 + %77 = getelementptr inbounds i8, ptr %.018.i.i, i64 -40 + %.not.i.i22 = icmp eq ptr %76, %71 br i1 %.not.i.i22, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE19transfer_n_backwardElllPSH_PSF_.exit.i, label %.lr.ph.i.i, !llvm.loop !89 -_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE19transfer_n_backwardElllPSH_PSF_.exit.i: ; preds = %.lr.ph.i.i, %60 - %79 = getelementptr inbounds i8, ptr %62, i64 16 - %80 = and i64 %63, 255 - %81 = getelementptr inbounds %"union.absl::debian2::container_internal::map_slot_type", ptr %79, i64 %80 - %82 = load i64, ptr %4, align 8 - %83 = inttoptr i64 %82 to ptr - %84 = load i32, ptr %83, align 4 - store i32 %84, ptr %81, align 8 - %85 = getelementptr inbounds i8, ptr %81, i64 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #23 - %86 = load i8, ptr %64, align 1 - %87 = add i8 %86, 1 - store i8 %87, ptr %64, align 1 - %88 = getelementptr inbounds i8, ptr %62, i64 11 - %89 = load i8, ptr %88, align 1 - %.not.i20 = icmp eq i8 %89, 0 - br i1 %.not.i20, label %90, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE13emplace_valueIJRKSt21piecewise_construct_tSt5tupleIJRSD_EESM_IJEEEEEvlPSF_DpOT_.exit - -90: ; preds = %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE19transfer_n_backwardElllPSH_PSF_.exit.i - %91 = zext i8 %87 to i64 - %92 = add nsw i64 %63, 1 - %93 = icmp slt i64 %92, %91 - br i1 %93, label %.lr.ph.i21, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE13emplace_valueIJRKSt21piecewise_construct_tSt5tupleIJRSD_EESM_IJEEEEEvlPSF_DpOT_.exit - -.lr.ph.i21: ; preds = %90 - %94 = getelementptr inbounds i8, ptr %62, i64 256 - br label %95 - -95: ; preds = %95, %.lr.ph.i21 - %indvars.iv.i = phi i64 [ %91, %.lr.ph.i21 ], [ %indvars.iv.next.i, %95 ] +_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE19transfer_n_backwardElllPSH_PSF_.exit.i: ; preds = %.lr.ph.i.i, %59 + %78 = getelementptr inbounds i8, ptr %61, i64 16 + %79 = and i64 %62, 255 + %80 = getelementptr inbounds %"union.absl::debian2::container_internal::map_slot_type", ptr %78, i64 %79 + %81 = load i64, ptr %4, align 8 + %82 = inttoptr i64 %81 to ptr + %83 = load i32, ptr %82, align 4 + store i32 %83, ptr %80, align 8 + %84 = getelementptr inbounds i8, ptr %80, i64 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #23 + %85 = load i8, ptr %63, align 1 + %86 = add i8 %85, 1 + store i8 %86, ptr %63, align 1 + %87 = getelementptr inbounds i8, ptr %61, i64 11 + %88 = load i8, ptr %87, align 1 + %.not.i20 = icmp eq i8 %88, 0 + br i1 %.not.i20, label %89, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE13emplace_valueIJRKSt21piecewise_construct_tSt5tupleIJRSD_EESM_IJEEEEEvlPSF_DpOT_.exit + +89: ; preds = %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE19transfer_n_backwardElllPSH_PSF_.exit.i + %90 = zext i8 %86 to i64 + %91 = add nsw i64 %62, 1 + %92 = icmp slt i64 %91, %90 + br i1 %92, label %.lr.ph.i21, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE13emplace_valueIJRKSt21piecewise_construct_tSt5tupleIJRSD_EESM_IJEEEEEvlPSF_DpOT_.exit + +.lr.ph.i21: ; preds = %89 + %93 = getelementptr inbounds i8, ptr %61, i64 256 + br label %94 + +94: ; preds = %94, %.lr.ph.i21 + %indvars.iv.i = phi i64 [ %90, %.lr.ph.i21 ], [ %indvars.iv.next.i, %94 ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %96 = getelementptr inbounds ptr, ptr %94, i64 %indvars.iv.next.i - %97 = load ptr, ptr %96, align 8 - %98 = getelementptr inbounds ptr, ptr %94, i64 %indvars.iv.i - store ptr %97, ptr %98, align 8 - %99 = trunc i64 %indvars.iv.i to i8 - %100 = getelementptr inbounds i8, ptr %97, i64 8 - store i8 %99, ptr %100, align 1 - %101 = icmp slt i64 %92, %indvars.iv.next.i - br i1 %101, label %95, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE13emplace_valueIJRKSt21piecewise_construct_tSt5tupleIJRSD_EESM_IJEEEEEvlPSF_DpOT_.exit, !llvm.loop !90 - -_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE13emplace_valueIJRKSt21piecewise_construct_tSt5tupleIJRSD_EESM_IJEEEEEvlPSF_DpOT_.exit: ; preds = %95, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE19transfer_n_backwardElllPSH_PSF_.exit.i, %90 - %102 = getelementptr inbounds i8, ptr %0, i64 16 - %103 = load i64, ptr %102, align 8 - %104 = add nsw i64 %103, 1 - store i64 %104, ptr %102, align 8 + %95 = getelementptr inbounds ptr, ptr %93, i64 %indvars.iv.next.i + %96 = load ptr, ptr %95, align 8 + %97 = getelementptr inbounds ptr, ptr %93, i64 %indvars.iv.i + store ptr %96, ptr %97, align 8 + %98 = trunc i64 %indvars.iv.i to i8 + %99 = getelementptr inbounds i8, ptr %96, i64 8 + store i8 %98, ptr %99, align 1 + %100 = icmp slt i64 %91, %indvars.iv.next.i + br i1 %100, label %94, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE13emplace_valueIJRKSt21piecewise_construct_tSt5tupleIJRSD_EESM_IJEEEEEvlPSF_DpOT_.exit, !llvm.loop !90 + +_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE13emplace_valueIJRKSt21piecewise_construct_tSt5tupleIJRSD_EESM_IJEEEEEvlPSF_DpOT_.exit: ; preds = %94, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIiESaISt4pairIKiS9_EELi256ELb0EEEE19transfer_n_backwardElllPSH_PSF_.exit.i, %89 + %101 = getelementptr inbounds i8, ptr %0, i64 16 + %102 = load i64, ptr %101, align 8 + %103 = add nsw i64 %102, 1 + store i64 %103, ptr %101, align 8 %.sroa.0.0.copyload = load ptr, ptr %7, align 8 %.sroa.2.0.copyload = load i32, ptr %8, align 8 %.fca.0.insert = insertvalue { ptr, i32 } poison, ptr %.sroa.0.0.copyload, 0 @@ -5954,7 +5953,7 @@ _ZN4absl7debian218container_internal5btreeINS1_10set_paramsIiSt4lessIiESaIiELi25 %34 = tail call i8 @llvm.umin.i8(i8 %33, i8 61) %35 = shl nuw i8 %34, 2 %36 = zext i8 %35 to i64 - %37 = add nuw nsw i64 %36, 19 + %37 = add nuw nsw i64 %36, 16 %38 = and i64 %37, 504 %39 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %38) #26 store ptr %39, ptr %39, align 8 diff --git a/bench/libquic/optimized/dtoa.cc.ll b/bench/libquic/optimized/dtoa.cc.ll index 65ff78faadc..6c315e65816 100644 --- a/bench/libquic/optimized/dtoa.cc.ll +++ b/bench/libquic/optimized/dtoa.cc.ll @@ -963,7 +963,7 @@ if.else.i.i: ; preds = %for.end.i309 %sub.i.i = add nsw i32 %shl.i.i, -1 %conv.i.i = zext nneg i32 %sub.i.i to i64 %mul.i.i = shl nuw nsw i64 %conv.i.i, 2 - %sub6.i.i = add nuw nsw i64 %mul.i.i, 39 + %sub6.i.i = add nuw nsw i64 %mul.i.i, 36 br label %if.else14.i.i land.lhs.true9.i.i: ; preds = %land.lhs.true.i.i @@ -971,7 +971,7 @@ land.lhs.true9.i.i: ; preds = %land.lhs.true.i.i %sub17.i.i = add nsw i32 %shl16.i.i, -1 %conv18.i.i = zext nneg i32 %sub17.i.i to i64 %mul19.i.i = shl nuw nsw i64 %conv18.i.i, 2 - %sub620.i.i = add nuw nsw i64 %mul19.i.i, 39 + %sub620.i.i = add nuw nsw i64 %mul19.i.i, 36 %div15.i.i = lshr i64 %sub620.i.i, 3 %106 = load ptr, ptr @_ZL9pmem_next, align 8 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %106 to i64 @@ -1105,7 +1105,7 @@ if.else.i311: ; preds = %for.cond437 %sub.i313 = add nsw i32 %shl.i312, -1 %conv.i314 = zext nneg i32 %sub.i313 to i64 %mul.i = shl nuw nsw i64 %conv.i314, 2 - %sub6.i = add nuw nsw i64 %mul.i, 39 + %sub6.i = add nuw nsw i64 %mul.i, 36 br label %if.else14.i land.lhs.true9.i: ; preds = %land.lhs.true.i @@ -1113,7 +1113,7 @@ land.lhs.true9.i: ; preds = %land.lhs.true.i %sub17.i = add nsw i32 %shl16.i, -1 %conv18.i = zext nneg i32 %sub17.i to i64 %mul19.i = shl nuw nsw i64 %conv18.i, 2 - %sub620.i = add nuw nsw i64 %mul19.i, 39 + %sub620.i = add nuw nsw i64 %mul19.i, 36 %div15.i = lshr i64 %sub620.i, 3 %114 = load ptr, ptr @_ZL9pmem_next, align 8 %sub.ptr.lhs.cast.i = ptrtoint ptr %114 to i64 @@ -3026,7 +3026,7 @@ if.else.i: ; preds = %entry %sub.i = add nsw i32 %shl.i, -1 %conv.i = zext nneg i32 %sub.i to i64 %mul.i = shl nuw nsw i64 %conv.i, 2 - %sub6.i = add nuw nsw i64 %mul.i, 39 + %sub6.i = add nuw nsw i64 %mul.i, 36 br label %if.else14.i land.lhs.true9.i: ; preds = %land.lhs.true.i @@ -3034,7 +3034,7 @@ land.lhs.true9.i: ; preds = %land.lhs.true.i %sub17.i = add nsw i32 %shl16.i, -1 %conv18.i = zext nneg i32 %sub17.i to i64 %mul19.i = shl nuw nsw i64 %conv18.i, 2 - %sub620.i = add nuw nsw i64 %mul19.i, 39 + %sub620.i = add nuw nsw i64 %mul19.i, 36 %div15.i = lshr i64 %sub620.i, 3 %8 = load ptr, ptr @_ZL9pmem_next, align 8 %sub.ptr.lhs.cast.i = ptrtoint ptr %8 to i64 @@ -3214,7 +3214,7 @@ if.else.i: ; preds = %for.end %sub.i = add nsw i32 %shl.i, -1 %conv.i = zext nneg i32 %sub.i to i64 %mul.i = shl nuw nsw i64 %conv.i, 2 - %sub6.i = add nuw nsw i64 %mul.i, 39 + %sub6.i = add nuw nsw i64 %mul.i, 36 br label %if.else14.i land.lhs.true9.i: ; preds = %land.lhs.true.i @@ -3222,7 +3222,7 @@ land.lhs.true9.i: ; preds = %land.lhs.true.i %sub17.i = add nsw i32 %shl16.i, -1 %conv18.i = zext nneg i32 %sub17.i to i64 %mul19.i = shl nuw nsw i64 %conv18.i, 2 - %sub620.i = add nuw nsw i64 %mul19.i, 39 + %sub620.i = add nuw nsw i64 %mul19.i, 36 %div15.i = lshr i64 %sub620.i, 3 %5 = load ptr, ptr @_ZL9pmem_next, align 8 %sub.ptr.lhs.cast.i = ptrtoint ptr %5 to i64 @@ -3458,7 +3458,7 @@ if.else.i: ; preds = %if.end %sub.i33 = add nsw i32 %shl.i, -1 %conv.i = zext nneg i32 %sub.i33 to i64 %mul.i = shl nuw nsw i64 %conv.i, 2 - %sub6.i = add nuw nsw i64 %mul.i, 39 + %sub6.i = add nuw nsw i64 %mul.i, 36 br label %if.else14.i34 land.lhs.true9.i45: ; preds = %land.lhs.true.i @@ -3466,7 +3466,7 @@ land.lhs.true9.i45: ; preds = %land.lhs.true.i %sub17.i = add nsw i32 %shl16.i, -1 %conv18.i = zext nneg i32 %sub17.i to i64 %mul19.i = shl nuw nsw i64 %conv18.i, 2 - %sub620.i = add nuw nsw i64 %mul19.i, 39 + %sub620.i = add nuw nsw i64 %mul19.i, 36 %div15.i = lshr i64 %sub620.i, 3 %10 = load ptr, ptr @_ZL9pmem_next, align 8 %sub.ptr.lhs.cast.i46 = ptrtoint ptr %10 to i64 @@ -4044,7 +4044,7 @@ if.else.i.i393: ; preds = %for.end.i391 %sub.i.i = add nsw i32 %shl.i.i, -1 %conv.i.i = zext nneg i32 %sub.i.i to i64 %mul.i.i = shl nuw nsw i64 %conv.i.i, 2 - %sub6.i.i = add nuw nsw i64 %mul.i.i, 39 + %sub6.i.i = add nuw nsw i64 %mul.i.i, 36 br label %if.else14.i.i land.lhs.true9.i.i: ; preds = %land.lhs.true.i.i @@ -4052,7 +4052,7 @@ land.lhs.true9.i.i: ; preds = %land.lhs.true.i.i %sub17.i.i = add nsw i32 %shl16.i.i, -1 %conv18.i.i = zext nneg i32 %sub17.i.i to i64 %mul19.i.i = shl nuw nsw i64 %conv18.i.i, 2 - %sub620.i.i = add nuw nsw i64 %mul19.i.i, 39 + %sub620.i.i = add nuw nsw i64 %mul19.i.i, 36 %div15.i.i = lshr i64 %sub620.i.i, 3 %37 = load ptr, ptr @_ZL9pmem_next, align 8 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %37 to i64 @@ -4896,7 +4896,7 @@ if.else.i479: ; preds = %if.then447 %sub.i481 = add nsw i32 %shl.i480, -1 %conv.i482 = zext nneg i32 %sub.i481 to i64 %mul.i = shl nuw nsw i64 %conv.i482, 2 - %sub6.i = add nuw nsw i64 %mul.i, 39 + %sub6.i = add nuw nsw i64 %mul.i, 36 br label %if.else14.i land.lhs.true9.i: ; preds = %land.lhs.true.i @@ -4904,7 +4904,7 @@ land.lhs.true9.i: ; preds = %land.lhs.true.i %sub17.i = add nsw i32 %shl16.i490, -1 %conv18.i = zext nneg i32 %sub17.i to i64 %mul19.i = shl nuw nsw i64 %conv18.i, 2 - %sub620.i = add nuw nsw i64 %mul19.i, 39 + %sub620.i = add nuw nsw i64 %mul19.i, 36 %div15.i = lshr i64 %sub620.i, 3 %97 = load ptr, ptr @_ZL9pmem_next, align 8 %sub.ptr.lhs.cast.i = ptrtoint ptr %97 to i64 @@ -5544,7 +5544,7 @@ if.else.i: ; preds = %if.then7 %sub.i = add nsw i32 %shl.i, -1 %conv.i = zext nneg i32 %sub.i to i64 %mul.i = shl nuw nsw i64 %conv.i, 2 - %sub6.i = add nuw nsw i64 %mul.i, 39 + %sub6.i = add nuw nsw i64 %mul.i, 36 br label %if.else14.i land.lhs.true9.i: ; preds = %land.lhs.true.i @@ -5552,7 +5552,7 @@ land.lhs.true9.i: ; preds = %land.lhs.true.i %sub17.i = add nsw i32 %shl16.i, -1 %conv18.i = zext nneg i32 %sub17.i to i64 %mul19.i = shl nuw nsw i64 %conv18.i, 2 - %sub620.i = add nuw nsw i64 %mul19.i, 39 + %sub620.i = add nuw nsw i64 %mul19.i, 36 %div15.i = lshr i64 %sub620.i, 3 %6 = load ptr, ptr @_ZL9pmem_next, align 8 %sub.ptr.lhs.cast.i = ptrtoint ptr %6 to i64 diff --git a/bench/libquic/optimized/pickle.cc.ll b/bench/libquic/optimized/pickle.cc.ll index 49de8d3a3b0..d58b7597525 100644 --- a/bench/libquic/optimized/pickle.cc.ll +++ b/bench/libquic/optimized/pickle.cc.ll @@ -127,7 +127,7 @@ entry: if.then30.i.i: ; preds = %entry %mul.i.i = shl i64 %1, 1 %cmp32.i.i = icmp ugt i64 %mul.i.i, 4096 - %sub.i12.i.i = add i64 %mul.i.i, 4095 + %sub.i12.i.i = add i64 %mul.i.i, 4094 %and.i13.i.i = and i64 %sub.i12.i.i, -4096 %sub.i.i = add i64 %and.i13.i.i, -64 %new_capacity.0.i.i = select i1 %cmp32.i.i, i64 %sub.i.i, i64 %mul.i.i @@ -169,7 +169,7 @@ entry: if.then30.i.i: ; preds = %entry %mul.i.i = shl i64 %1, 1 %cmp32.i.i = icmp ugt i64 %mul.i.i, 4096 - %sub.i12.i.i = add i64 %mul.i.i, 4095 + %sub.i12.i.i = add i64 %mul.i.i, 4094 %and.i13.i.i = and i64 %sub.i12.i.i, -4096 %sub.i.i = add i64 %and.i13.i.i, -64 %new_capacity.0.i.i = select i1 %cmp32.i.i, i64 %sub.i.i, i64 %mul.i.i @@ -208,7 +208,7 @@ entry: if.then30.i.i: ; preds = %entry %mul.i.i = shl i64 %1, 1 %cmp32.i.i = icmp ugt i64 %mul.i.i, 4096 - %sub.i12.i.i = add i64 %mul.i.i, 4095 + %sub.i12.i.i = add i64 %mul.i.i, 4094 %and.i13.i.i = and i64 %sub.i12.i.i, -4096 %sub.i.i = add i64 %and.i13.i.i, -64 %new_capacity.0.i.i = select i1 %cmp32.i.i, i64 %sub.i.i, i64 %mul.i.i @@ -694,7 +694,7 @@ if.then.i.i: ; preds = %lor.lhs.false.i.i, br label %return _ZN4base14PickleIterator24GetReadPointerAndAdvanceEim.exit: ; preds = %lor.lhs.false.i.i - %sub.i.i.i.i = add nuw nsw i64 %mul.i, 3 + %sub.i.i.i.i = add nuw nsw i64 %mul.i, 2 %and.i.i.i.i = and i64 %sub.i.i.i.i, 4294967292 %cmp.i.i.i3 = icmp ult i64 %sub.i.i, %and.i.i.i.i %add.i.i.i = add i64 %and.i.i.i.i, %add.i.i.i.i @@ -753,7 +753,7 @@ if.then.i.i: ; preds = %lor.lhs.false.i.i, br label %return _ZN4base14PickleIterator24GetReadPointerAndAdvanceEim.exit: ; preds = %lor.lhs.false.i.i - %sub.i.i.i.i = add nuw nsw i64 %mul.i, 3 + %sub.i.i.i.i = add nuw nsw i64 %mul.i, 2 %and.i.i.i.i = and i64 %sub.i.i.i.i, 4294967292 %cmp.i.i.i3 = icmp ult i64 %sub.i.i, %and.i.i.i.i %add.i.i.i = add i64 %and.i.i.i.i, %add.i.i.i.i @@ -914,7 +914,7 @@ entry: %call.tr = trunc i64 %call to i32 %conv = shl i32 %call.tr, 1 %conv.i = sext i32 %conv to i64 - %sub.i.i = add nsw i64 %conv.i, 3 + %sub.i.i = add nsw i64 %conv.i, 2 %and.i.i = and i64 %sub.i.i, -4 %1 = load i64, ptr %this, align 8 %add.i = add i64 %and.i.i, %1 @@ -1279,7 +1279,7 @@ entry: if.then30.i.i.i.i.i: ; preds = %entry %mul.i.i.i.i.i = shl i64 %1, 1 %cmp32.i.i.i.i.i = icmp ugt i64 %mul.i.i.i.i.i, 4096 - %sub.i12.i.i.i.i.i = add i64 %mul.i.i.i.i.i, 4095 + %sub.i12.i.i.i.i.i = add i64 %mul.i.i.i.i.i, 4094 %and.i13.i.i.i.i.i = and i64 %sub.i12.i.i.i.i.i, -4096 %sub.i.i.i.i.i = add i64 %and.i13.i.i.i.i.i, -64 %new_capacity.0.i.i.i.i.i = select i1 %cmp32.i.i.i.i.i, i64 %sub.i.i.i.i.i, i64 %mul.i.i.i.i.i @@ -1315,7 +1315,7 @@ if.end: ; preds = %if.then30.i.i.i.i.i if.then30.i.i.i: ; preds = %if.end %mul.i.i.i = shl i64 %6, 1 %cmp32.i.i.i = icmp ugt i64 %mul.i.i.i, 4096 - %sub.i12.i.i.i = add i64 %mul.i.i.i, 4095 + %sub.i12.i.i.i = add i64 %mul.i.i.i, 4094 %and.i13.i.i.i = and i64 %sub.i12.i.i.i, -4096 %sub.i.i.i = add i64 %and.i13.i.i.i, -64 %new_capacity.0.i.i.i = select i1 %cmp32.i.i.i, i64 %sub.i.i.i, i64 %mul.i.i.i @@ -1358,7 +1358,7 @@ entry: if.then30.i.i: ; preds = %entry %mul.i.i = shl i64 %1, 1 %cmp32.i.i = icmp ugt i64 %mul.i.i, 4096 - %sub.i12.i.i = add i64 %mul.i.i, 4095 + %sub.i12.i.i = add i64 %mul.i.i, 4094 %and.i13.i.i = and i64 %sub.i12.i.i, -4096 %sub.i.i = add i64 %and.i13.i.i, -64 %new_capacity.0.i.i = select i1 %cmp32.i.i, i64 %sub.i.i, i64 %mul.i.i @@ -1404,7 +1404,7 @@ entry: if.then30.i.i.i.i.i: ; preds = %entry %mul.i.i.i.i.i = shl i64 %1, 1 %cmp32.i.i.i.i.i = icmp ugt i64 %mul.i.i.i.i.i, 4096 - %sub.i12.i.i.i.i.i = add i64 %mul.i.i.i.i.i, 4095 + %sub.i12.i.i.i.i.i = add i64 %mul.i.i.i.i.i, 4094 %and.i13.i.i.i.i.i = and i64 %sub.i12.i.i.i.i.i, -4096 %sub.i.i.i.i.i = add i64 %and.i13.i.i.i.i.i, -64 %new_capacity.0.i.i.i.i.i = select i1 %cmp32.i.i.i.i.i, i64 %sub.i.i.i.i.i, i64 %mul.i.i.i.i.i @@ -1430,7 +1430,7 @@ if.end: ; preds = %if.then30.i.i.i.i.i %call4.tr = trunc i64 %call4 to i32 %conv7 = shl i32 %call4.tr, 1 %conv.i = sext i32 %conv7 to i64 - %sub.i.i.i.i = add nsw i64 %conv.i, 3 + %sub.i.i.i.i = add nsw i64 %conv.i, 2 %and.i.i.i.i = and i64 %sub.i.i.i.i, -4 %5 = load i64, ptr %write_offset_.i.i.i.i.i, align 8 %add.i.i.i = add i64 %and.i.i.i.i, %5 @@ -1441,7 +1441,7 @@ if.end: ; preds = %if.then30.i.i.i.i.i if.then30.i.i.i: ; preds = %if.end %mul.i.i.i = shl i64 %6, 1 %cmp32.i.i.i = icmp ugt i64 %mul.i.i.i, 4096 - %sub.i12.i.i.i = add i64 %mul.i.i.i, 4095 + %sub.i12.i.i.i = add i64 %mul.i.i.i, 4094 %and.i13.i.i.i = and i64 %sub.i12.i.i.i, -4096 %sub.i.i.i = add i64 %and.i13.i.i.i, -64 %new_capacity.0.i.i.i = select i1 %cmp32.i.i.i, i64 %sub.i.i.i, i64 %mul.i.i.i @@ -1487,7 +1487,7 @@ land.lhs.true: ; preds = %entry if.then30.i.i.i.i.i: ; preds = %land.lhs.true %mul.i.i.i.i.i = shl i64 %1, 1 %cmp32.i.i.i.i.i = icmp ugt i64 %mul.i.i.i.i.i, 4096 - %sub.i12.i.i.i.i.i = add i64 %mul.i.i.i.i.i, 4095 + %sub.i12.i.i.i.i.i = add i64 %mul.i.i.i.i.i, 4094 %and.i13.i.i.i.i.i = and i64 %sub.i12.i.i.i.i.i, -4096 %sub.i.i.i.i.i = add i64 %and.i13.i.i.i.i.i, -64 %new_capacity.0.i.i.i.i.i = select i1 %cmp32.i.i.i.i.i, i64 %sub.i.i.i.i.i, i64 %mul.i.i.i.i.i @@ -1520,7 +1520,7 @@ land.rhs: ; preds = %if.then30.i.i.i.i.i if.then30.i.i.i: ; preds = %land.rhs %mul.i.i.i = shl i64 %6, 1 %cmp32.i.i.i = icmp ugt i64 %mul.i.i.i, 4096 - %sub.i12.i.i.i = add i64 %mul.i.i.i, 4095 + %sub.i12.i.i.i = add i64 %mul.i.i.i, 4094 %and.i13.i.i.i = and i64 %sub.i12.i.i.i, -4096 %sub.i.i.i = add i64 %and.i13.i.i.i, -64 %new_capacity.0.i.i.i = select i1 %cmp32.i.i.i, i64 %sub.i.i.i, i64 %mul.i.i.i @@ -1625,7 +1625,7 @@ entry: if.then30.i: ; preds = %entry %mul.i = shl i64 %1, 1 %cmp32.i = icmp ugt i64 %mul.i, 4096 - %sub.i12.i = add i64 %mul.i, 4095 + %sub.i12.i = add i64 %mul.i, 4094 %and.i13.i = and i64 %sub.i12.i, -4096 %sub.i = add i64 %and.i13.i, -64 %new_capacity.0.i = select i1 %cmp32.i, i64 %sub.i, i64 %mul.i diff --git a/bench/linux/optimized/ip6_tables.ll b/bench/linux/optimized/ip6_tables.ll index e669bc102a3..a5e31d41247 100644 --- a/bench/linux/optimized/ip6_tables.ll +++ b/bench/linux/optimized/ip6_tables.ll @@ -96,95 +96,94 @@ define dso_local ptr @ip6t_alloc_initial_table(ptr noundef %0) #0 align 16 { %4 = tail call i32 asm "# ALT: oldnstr\0A661:\0A\09call __sw_hweight32\0A662:\0A# ALT: padding\0A.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\0A663:\0A.pushsection .altinstructions,\22a\22\0A .long 661b - .\0A .long 6641f - .\0A .4byte ( 4*32+23)\0A .byte 663b-661b\0A .byte 6651f-6641f\0A.popsection\0A.pushsection .altinstr_replacement, \22ax\22\0A# ALT: replacement 1\0A6641:\0A\09popcntl $1, $0\0A6651:\0A.popsection\0A", "={ax},{di},~{dirflag},~{fpsr},~{flags}"(i32 %3) #12, !srcloc !5 %5 = zext i32 %4 to i64 %6 = mul nuw nsw i64 %5, 208 - %7 = add nuw nsw i64 %6, 103 - %8 = and i64 %7, 2199023255536 - %9 = add nuw nsw i64 %8, 232 - %10 = tail call noalias align 8 ptr @__kmalloc(i64 noundef %9, i32 noundef 3520) #13 - %11 = icmp eq ptr %10, null - br i1 %11, label %.loopexit, label %12 - -12: ; preds = %1 - %13 = getelementptr i8, ptr %10, i64 %8 - %14 = getelementptr inbounds i8, ptr %0, i64 56 - %15 = tail call i64 @strscpy_pad(ptr noundef nonnull %10, ptr noundef %14, i64 noundef 32) #14 - tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(140) %13, i8 0, i64 140, i1 false) - %16 = getelementptr inbounds i8, ptr %13, i64 140 - store i16 168, ptr %16, align 4 - %17 = getelementptr inbounds i8, ptr %13, i64 142 - store i16 232, ptr %17, align 2 - %18 = getelementptr inbounds i8, ptr %13, i64 144 - tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(24) %18, i8 0, i64 24, i1 false) - %19 = getelementptr inbounds i8, ptr %13, i64 168 - store i16 64, ptr %19, align 8 - %20 = getelementptr inbounds i8, ptr %13, i64 170 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef align 2 dereferenceable(29) %20, ptr noundef nonnull align 2 dereferenceable(29) @.str, i64 29, i1 false) - %21 = getelementptr inbounds i8, ptr %13, i64 199 - store i8 0, ptr %21, align 1 - %22 = getelementptr inbounds i8, ptr %13, i64 200 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef align 8 dereferenceable(30) %22, ptr noundef nonnull align 8 dereferenceable(30) @.str.1, i64 30, i1 false) - %23 = getelementptr inbounds i8, ptr %10, i64 32 - store i32 %3, ptr %23, align 8 - %24 = add i32 %4, 1 - %25 = getelementptr inbounds i8, ptr %10, i64 36 - store i32 %24, ptr %25, align 4 - %26 = trunc i64 %6 to i32 - %27 = add i32 %26, 232 - %28 = getelementptr inbounds i8, ptr %10, i64 40 - store i32 %27, ptr %28, align 8 - %29 = icmp eq i32 %3, 0 - br i1 %29, label %.loopexit, label %30 - -30: ; preds = %12 - %31 = getelementptr inbounds i8, ptr %10, i64 44 - %32 = getelementptr inbounds i8, ptr %10, i64 64 - %33 = getelementptr inbounds i8, ptr %10, i64 96 - br label %34 - -34: ; preds = %55, %30 - %35 = phi i64 [ 0, %30 ], [ %59, %55 ] - %36 = phi i32 [ %3, %30 ], [ %58, %55 ] - %37 = phi i32 [ 0, %30 ], [ %57, %55 ] - %38 = phi i32 [ 0, %30 ], [ %56, %55 ] - %39 = and i32 %36, 1 - %40 = icmp eq i32 %39, 0 - br i1 %40, label %55, label %41 - -41: ; preds = %34 - %42 = getelementptr [5 x i32], ptr %31, i64 0, i64 %35 - store i32 %37, ptr %42, align 4 - %43 = getelementptr [5 x i32], ptr %32, i64 0, i64 %35 - store i32 %37, ptr %43, align 4 - %44 = add i32 %38, 1 - %45 = zext i32 %38 to i64 - %46 = getelementptr [0 x %struct.ip6t_standard], ptr %33, i64 0, i64 %45 - tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(140) %46, i8 0, i64 140, i1 false) - %47 = getelementptr inbounds i8, ptr %46, i64 140 - store i16 168, ptr %47, align 4 - %48 = getelementptr inbounds i8, ptr %46, i64 142 - store i16 208, ptr %48, align 2 - %49 = getelementptr inbounds i8, ptr %46, i64 144 - tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(24) %49, i8 0, i64 24, i1 false) - %50 = getelementptr inbounds i8, ptr %46, i64 168 - store i16 40, ptr %50, align 8 - %51 = getelementptr inbounds i8, ptr %46, i64 170 - %52 = getelementptr inbounds i8, ptr %46, i64 200 - tail call void @llvm.memset.p0.i64(ptr noundef align 2 dereferenceable(30) %51, i8 0, i64 30, i1 false) - store i32 -2, ptr %52, align 8 - %53 = getelementptr inbounds i8, ptr %46, i64 204 - store i32 0, ptr %53, align 4 - %54 = add i32 %37, 208 - br label %55 - -55: ; preds = %41, %34 - %56 = phi i32 [ %44, %41 ], [ %38, %34 ] - %57 = phi i32 [ %54, %41 ], [ %37, %34 ] - %58 = lshr i32 %36, 1 - %59 = add nuw nsw i64 %35, 1 - %60 = icmp ult i32 %36, 2 - br i1 %60, label %.loopexit, label %34, !llvm.loop !6 - -.loopexit: ; preds = %55, %12, %1 - ret ptr %10 + %7 = add nuw nsw i64 %6, 328 + %8 = tail call noalias align 8 ptr @__kmalloc(i64 noundef %7, i32 noundef 3520) #13 + %9 = icmp eq ptr %8, null + br i1 %9, label %.loopexit, label %10 + +10: ; preds = %1 + %11 = getelementptr i8, ptr %8, i64 %6 + %12 = getelementptr i8, ptr %11, i64 96 + %13 = getelementptr inbounds i8, ptr %0, i64 56 + %14 = tail call i64 @strscpy_pad(ptr noundef nonnull %8, ptr noundef %13, i64 noundef 32) #14 + tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(140) %12, i8 0, i64 140, i1 false) + %15 = getelementptr i8, ptr %11, i64 236 + store i16 168, ptr %15, align 4 + %16 = getelementptr i8, ptr %11, i64 238 + store i16 232, ptr %16, align 2 + %17 = getelementptr i8, ptr %11, i64 240 + tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(24) %17, i8 0, i64 24, i1 false) + %18 = getelementptr i8, ptr %11, i64 264 + store i16 64, ptr %18, align 8 + %19 = getelementptr i8, ptr %11, i64 266 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef align 2 dereferenceable(29) %19, ptr noundef nonnull align 2 dereferenceable(29) @.str, i64 29, i1 false) + %20 = getelementptr i8, ptr %11, i64 295 + store i8 0, ptr %20, align 1 + %21 = getelementptr i8, ptr %11, i64 296 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef align 8 dereferenceable(30) %21, ptr noundef nonnull align 8 dereferenceable(30) @.str.1, i64 30, i1 false) + %22 = getelementptr inbounds i8, ptr %8, i64 32 + store i32 %3, ptr %22, align 8 + %23 = add i32 %4, 1 + %24 = getelementptr inbounds i8, ptr %8, i64 36 + store i32 %23, ptr %24, align 4 + %25 = trunc i64 %6 to i32 + %26 = add i32 %25, 232 + %27 = getelementptr inbounds i8, ptr %8, i64 40 + store i32 %26, ptr %27, align 8 + %28 = icmp eq i32 %3, 0 + br i1 %28, label %.loopexit, label %29 + +29: ; preds = %10 + %30 = getelementptr inbounds i8, ptr %8, i64 44 + %31 = getelementptr inbounds i8, ptr %8, i64 64 + %32 = getelementptr inbounds i8, ptr %8, i64 96 + br label %33 + +33: ; preds = %54, %29 + %34 = phi i64 [ 0, %29 ], [ %58, %54 ] + %35 = phi i32 [ %3, %29 ], [ %57, %54 ] + %36 = phi i32 [ 0, %29 ], [ %56, %54 ] + %37 = phi i32 [ 0, %29 ], [ %55, %54 ] + %38 = and i32 %35, 1 + %39 = icmp eq i32 %38, 0 + br i1 %39, label %54, label %40 + +40: ; preds = %33 + %41 = getelementptr [5 x i32], ptr %30, i64 0, i64 %34 + store i32 %36, ptr %41, align 4 + %42 = getelementptr [5 x i32], ptr %31, i64 0, i64 %34 + store i32 %36, ptr %42, align 4 + %43 = add i32 %37, 1 + %44 = zext i32 %37 to i64 + %45 = getelementptr [0 x %struct.ip6t_standard], ptr %32, i64 0, i64 %44 + tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(140) %45, i8 0, i64 140, i1 false) + %46 = getelementptr inbounds i8, ptr %45, i64 140 + store i16 168, ptr %46, align 4 + %47 = getelementptr inbounds i8, ptr %45, i64 142 + store i16 208, ptr %47, align 2 + %48 = getelementptr inbounds i8, ptr %45, i64 144 + tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(24) %48, i8 0, i64 24, i1 false) + %49 = getelementptr inbounds i8, ptr %45, i64 168 + store i16 40, ptr %49, align 8 + %50 = getelementptr inbounds i8, ptr %45, i64 170 + %51 = getelementptr inbounds i8, ptr %45, i64 200 + tail call void @llvm.memset.p0.i64(ptr noundef align 2 dereferenceable(30) %50, i8 0, i64 30, i1 false) + store i32 -2, ptr %51, align 8 + %52 = getelementptr inbounds i8, ptr %45, i64 204 + store i32 0, ptr %52, align 4 + %53 = add i32 %36, 208 + br label %54 + +54: ; preds = %40, %33 + %55 = phi i32 [ %43, %40 ], [ %37, %33 ] + %56 = phi i32 [ %53, %40 ], [ %36, %33 ] + %57 = lshr i32 %35, 1 + %58 = add nuw nsw i64 %34, 1 + %59 = icmp ult i32 %35, 2 + br i1 %59, label %.loopexit, label %33, !llvm.loop !6 + +.loopexit: ; preds = %54, %10, %1 + ret ptr %8 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/linux/optimized/ip_tables.ll b/bench/linux/optimized/ip_tables.ll index 1197c8f0628..89b5c5ccbd6 100644 --- a/bench/linux/optimized/ip_tables.ll +++ b/bench/linux/optimized/ip_tables.ll @@ -95,93 +95,92 @@ define dso_local ptr @ipt_alloc_initial_table(ptr noundef %0) #0 align 16 { %4 = tail call i32 asm "# ALT: oldnstr\0A661:\0A\09call __sw_hweight32\0A662:\0A# ALT: padding\0A.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\0A663:\0A.pushsection .altinstructions,\22a\22\0A .long 661b - .\0A .long 6641f - .\0A .4byte ( 4*32+23)\0A .byte 663b-661b\0A .byte 6651f-6641f\0A.popsection\0A.pushsection .altinstr_replacement, \22ax\22\0A# ALT: replacement 1\0A6641:\0A\09popcntl $1, $0\0A6651:\0A.popsection\0A", "={ax},{di},~{dirflag},~{fpsr},~{flags}"(i32 %3) #13, !srcloc !5 %5 = zext i32 %4 to i64 %6 = mul nuw nsw i64 %5, 152 - %7 = add nuw nsw i64 %6, 103 - %8 = and i64 %7, 2199023255544 - %9 = add nuw nsw i64 %8, 176 - %10 = tail call noalias align 8 ptr @__kmalloc(i64 noundef %9, i32 noundef 3520) #14 - %11 = icmp eq ptr %10, null - br i1 %11, label %.loopexit, label %12 - -12: ; preds = %1 - %13 = getelementptr i8, ptr %10, i64 %8 - %14 = getelementptr inbounds i8, ptr %0, i64 56 - %15 = tail call i64 @strscpy_pad(ptr noundef nonnull %10, ptr noundef %14, i64 noundef 32) #15 - tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(88) %13, i8 0, i64 88, i1 false) - %16 = getelementptr inbounds i8, ptr %13, i64 88 - store i16 112, ptr %16, align 8 - %17 = getelementptr inbounds i8, ptr %13, i64 90 - store i16 176, ptr %17, align 2 - %18 = getelementptr inbounds i8, ptr %13, i64 92 - tail call void @llvm.memset.p0.i64(ptr noundef align 4 dereferenceable(20) %18, i8 0, i64 20, i1 false) - %19 = getelementptr inbounds i8, ptr %13, i64 112 - store i16 64, ptr %19, align 8 - %20 = getelementptr inbounds i8, ptr %13, i64 114 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef align 2 dereferenceable(29) %20, ptr noundef nonnull align 2 dereferenceable(29) @.str, i64 29, i1 false) - %21 = getelementptr inbounds i8, ptr %13, i64 143 - store i8 0, ptr %21, align 1 - %22 = getelementptr inbounds i8, ptr %13, i64 144 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef align 8 dereferenceable(30) %22, ptr noundef nonnull align 8 dereferenceable(30) @.str.1, i64 30, i1 false) - %23 = getelementptr inbounds i8, ptr %10, i64 32 - store i32 %3, ptr %23, align 8 - %24 = add i32 %4, 1 - %25 = getelementptr inbounds i8, ptr %10, i64 36 - store i32 %24, ptr %25, align 4 - %26 = trunc i64 %6 to i32 - %27 = add i32 %26, 176 - %28 = getelementptr inbounds i8, ptr %10, i64 40 - store i32 %27, ptr %28, align 8 - %29 = icmp eq i32 %3, 0 - br i1 %29, label %.loopexit, label %30 - -30: ; preds = %12 - %31 = getelementptr inbounds i8, ptr %10, i64 44 - %32 = getelementptr inbounds i8, ptr %10, i64 64 - %33 = getelementptr inbounds i8, ptr %10, i64 96 - br label %34 - -34: ; preds = %54, %30 - %35 = phi i64 [ 0, %30 ], [ %58, %54 ] - %36 = phi i32 [ %3, %30 ], [ %57, %54 ] - %37 = phi i32 [ 0, %30 ], [ %56, %54 ] - %38 = phi i32 [ 0, %30 ], [ %55, %54 ] - %39 = and i32 %36, 1 - %40 = icmp eq i32 %39, 0 - br i1 %40, label %54, label %41 - -41: ; preds = %34 - %42 = getelementptr [5 x i32], ptr %31, i64 0, i64 %35 - store i32 %37, ptr %42, align 4 - %43 = getelementptr [5 x i32], ptr %32, i64 0, i64 %35 - store i32 %37, ptr %43, align 4 - %44 = add i32 %38, 1 - %45 = zext i32 %38 to i64 - %46 = getelementptr [0 x %struct.ipt_standard], ptr %33, i64 0, i64 %45 - tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(88) %46, i8 0, i64 88, i1 false) - %47 = getelementptr inbounds i8, ptr %46, i64 88 - store i16 112, ptr %47, align 8 - %48 = getelementptr inbounds i8, ptr %46, i64 90 - store i16 152, ptr %48, align 2 - %49 = getelementptr inbounds i8, ptr %46, i64 92 - tail call void @llvm.memset.p0.i64(ptr noundef align 4 dereferenceable(20) %49, i8 0, i64 20, i1 false) - %50 = getelementptr inbounds i8, ptr %46, i64 112 - store i16 40, ptr %50, align 8 - %51 = getelementptr inbounds i8, ptr %46, i64 114 - %52 = getelementptr inbounds i8, ptr %46, i64 144 - tail call void @llvm.memset.p0.i64(ptr noundef align 2 dereferenceable(30) %51, i8 0, i64 30, i1 false) - store i32 -2, ptr %52, align 8 - %53 = add i32 %37, 152 - br label %54 - -54: ; preds = %41, %34 - %55 = phi i32 [ %44, %41 ], [ %38, %34 ] - %56 = phi i32 [ %53, %41 ], [ %37, %34 ] - %57 = lshr i32 %36, 1 - %58 = add nuw nsw i64 %35, 1 - %59 = icmp ult i32 %36, 2 - br i1 %59, label %.loopexit, label %34, !llvm.loop !6 - -.loopexit: ; preds = %54, %12, %1 - ret ptr %10 + %7 = add nuw nsw i64 %6, 272 + %8 = tail call noalias align 8 ptr @__kmalloc(i64 noundef %7, i32 noundef 3520) #14 + %9 = icmp eq ptr %8, null + br i1 %9, label %.loopexit, label %10 + +10: ; preds = %1 + %11 = getelementptr i8, ptr %8, i64 %6 + %12 = getelementptr i8, ptr %11, i64 96 + %13 = getelementptr inbounds i8, ptr %0, i64 56 + %14 = tail call i64 @strscpy_pad(ptr noundef nonnull %8, ptr noundef %13, i64 noundef 32) #15 + tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(88) %12, i8 0, i64 88, i1 false) + %15 = getelementptr i8, ptr %11, i64 184 + store i16 112, ptr %15, align 8 + %16 = getelementptr i8, ptr %11, i64 186 + store i16 176, ptr %16, align 2 + %17 = getelementptr i8, ptr %11, i64 188 + tail call void @llvm.memset.p0.i64(ptr noundef align 4 dereferenceable(20) %17, i8 0, i64 20, i1 false) + %18 = getelementptr i8, ptr %11, i64 208 + store i16 64, ptr %18, align 8 + %19 = getelementptr i8, ptr %11, i64 210 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef align 2 dereferenceable(29) %19, ptr noundef nonnull align 2 dereferenceable(29) @.str, i64 29, i1 false) + %20 = getelementptr i8, ptr %11, i64 239 + store i8 0, ptr %20, align 1 + %21 = getelementptr i8, ptr %11, i64 240 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef align 8 dereferenceable(30) %21, ptr noundef nonnull align 8 dereferenceable(30) @.str.1, i64 30, i1 false) + %22 = getelementptr inbounds i8, ptr %8, i64 32 + store i32 %3, ptr %22, align 8 + %23 = add i32 %4, 1 + %24 = getelementptr inbounds i8, ptr %8, i64 36 + store i32 %23, ptr %24, align 4 + %25 = trunc i64 %6 to i32 + %26 = add i32 %25, 176 + %27 = getelementptr inbounds i8, ptr %8, i64 40 + store i32 %26, ptr %27, align 8 + %28 = icmp eq i32 %3, 0 + br i1 %28, label %.loopexit, label %29 + +29: ; preds = %10 + %30 = getelementptr inbounds i8, ptr %8, i64 44 + %31 = getelementptr inbounds i8, ptr %8, i64 64 + %32 = getelementptr inbounds i8, ptr %8, i64 96 + br label %33 + +33: ; preds = %53, %29 + %34 = phi i64 [ 0, %29 ], [ %57, %53 ] + %35 = phi i32 [ %3, %29 ], [ %56, %53 ] + %36 = phi i32 [ 0, %29 ], [ %55, %53 ] + %37 = phi i32 [ 0, %29 ], [ %54, %53 ] + %38 = and i32 %35, 1 + %39 = icmp eq i32 %38, 0 + br i1 %39, label %53, label %40 + +40: ; preds = %33 + %41 = getelementptr [5 x i32], ptr %30, i64 0, i64 %34 + store i32 %36, ptr %41, align 4 + %42 = getelementptr [5 x i32], ptr %31, i64 0, i64 %34 + store i32 %36, ptr %42, align 4 + %43 = add i32 %37, 1 + %44 = zext i32 %37 to i64 + %45 = getelementptr [0 x %struct.ipt_standard], ptr %32, i64 0, i64 %44 + tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(88) %45, i8 0, i64 88, i1 false) + %46 = getelementptr inbounds i8, ptr %45, i64 88 + store i16 112, ptr %46, align 8 + %47 = getelementptr inbounds i8, ptr %45, i64 90 + store i16 152, ptr %47, align 2 + %48 = getelementptr inbounds i8, ptr %45, i64 92 + tail call void @llvm.memset.p0.i64(ptr noundef align 4 dereferenceable(20) %48, i8 0, i64 20, i1 false) + %49 = getelementptr inbounds i8, ptr %45, i64 112 + store i16 40, ptr %49, align 8 + %50 = getelementptr inbounds i8, ptr %45, i64 114 + %51 = getelementptr inbounds i8, ptr %45, i64 144 + tail call void @llvm.memset.p0.i64(ptr noundef align 2 dereferenceable(30) %50, i8 0, i64 30, i1 false) + store i32 -2, ptr %51, align 8 + %52 = add i32 %36, 152 + br label %53 + +53: ; preds = %40, %33 + %54 = phi i32 [ %43, %40 ], [ %37, %33 ] + %55 = phi i32 [ %52, %40 ], [ %36, %33 ] + %56 = lshr i32 %35, 1 + %57 = add nuw nsw i64 %34, 1 + %58 = icmp ult i32 %35, 2 + br i1 %58, label %.loopexit, label %33, !llvm.loop !6 + +.loopexit: ; preds = %53, %10, %1 + ret ptr %8 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/linux/optimized/pt.ll b/bench/linux/optimized/pt.ll index fb076857325..69e633ed612 100644 --- a/bench/linux/optimized/pt.ll +++ b/bench/linux/optimized/pt.ll @@ -960,7 +960,7 @@ define internal fastcc void @pt_config_buffer(ptr nocapture noundef nonnull read %4 = getelementptr inbounds i8, ptr %0, i64 81 %5 = load i8, ptr %4, align 1, !range !12, !noundef !13 %6 = icmp eq i8 %5, 0 - br i1 %6, label %16, label %7 + br i1 %6, label %15, label %7 7: ; preds = %1 %8 = getelementptr inbounds i8, ptr %0, i64 120 @@ -969,22 +969,22 @@ define internal fastcc void @pt_config_buffer(ptr nocapture noundef nonnull read %11 = getelementptr inbounds i8, ptr %0, i64 56 %12 = load i64, ptr %11, align 8 %13 = shl i64 %12, 12 - %14 = add i64 %13, -1 - %15 = lshr i64 %14, 7 + %14 = add i64 %13, -128 br label %23 -16: ; preds = %1 - %17 = getelementptr inbounds i8, ptr %0, i64 32 - %18 = load ptr, ptr %17, align 8 - %19 = getelementptr i8, ptr %18, i64 -4056 - %20 = getelementptr inbounds i8, ptr %0, i64 40 - %21 = load i32, ptr %20, align 8 - %22 = zext i32 %21 to i64 +15: ; preds = %1 + %16 = getelementptr inbounds i8, ptr %0, i64 32 + %17 = load ptr, ptr %16, align 8 + %18 = getelementptr i8, ptr %17, i64 -4056 + %19 = getelementptr inbounds i8, ptr %0, i64 40 + %20 = load i32, ptr %19, align 8 + %21 = zext i32 %20 to i64 + %22 = shl nuw nsw i64 %21, 7 br label %23 -23: ; preds = %16, %7 - %24 = phi i64 [ %15, %7 ], [ %22, %16 ] - %25 = phi ptr [ %10, %7 ], [ %19, %16 ] +23: ; preds = %15, %7 + %24 = phi i64 [ %14, %7 ], [ %22, %15 ] + %25 = phi ptr [ %10, %7 ], [ %18, %15 ] %26 = ptrtoint ptr %25 to i64 %27 = add i64 %26, 2147483648 %28 = icmp ugt ptr %25, inttoptr (i64 -2147483649 to ptr) @@ -1012,31 +1012,30 @@ define internal fastcc void @pt_config_buffer(ptr nocapture noundef nonnull read br label %42 42: ; preds = %41, %37, %23 - %43 = shl nuw i64 %24, 7 - %44 = getelementptr inbounds i8, ptr %0, i64 48 - %45 = load i64, ptr %44, align 8 - %46 = shl i64 %45, 32 - %47 = or i64 %46, %43 - %48 = or disjoint i64 %47, 127 - %49 = getelementptr inbounds i8, ptr %3, i64 176 - %50 = load i64, ptr %49, align 8 - %51 = icmp eq i64 %50, %48 - br i1 %51, label %57, label %52 - -52: ; preds = %42 - store i64 %48, ptr %49, align 8 - %53 = trunc i64 %48 to i32 - %54 = lshr i64 %47, 32 - %55 = trunc nuw i64 %54 to i32 - tail call void asm sideeffect "1: wrmsr\0A2:\0A .pushsection \22__ex_table\22,\22a\22\0A .balign 4\0A .long (1b) - .\0A .long (2b) - .\0A .long 8 \0A .popsection\0A", "{cx},{ax},{dx},~{memory},~{dirflag},~{fpsr},~{flags}"(i32 1377, i32 %53, i32 %55) #19, !srcloc !8 + %43 = getelementptr inbounds i8, ptr %0, i64 48 + %44 = load i64, ptr %43, align 8 + %45 = shl i64 %44, 32 + %46 = or i64 %45, %24 + %47 = or disjoint i64 %46, 127 + %48 = getelementptr inbounds i8, ptr %3, i64 176 + %49 = load i64, ptr %48, align 8 + %50 = icmp eq i64 %49, %47 + br i1 %50, label %56, label %51 + +51: ; preds = %42 + store i64 %47, ptr %48, align 8 + %52 = trunc i64 %47 to i32 + %53 = lshr i64 %46, 32 + %54 = trunc nuw i64 %53 to i32 + tail call void asm sideeffect "1: wrmsr\0A2:\0A .pushsection \22__ex_table\22,\22a\22\0A .balign 4\0A .long (1b) - .\0A .long (2b) - .\0A .long 8 \0A .popsection\0A", "{cx},{ax},{dx},~{memory},~{dirflag},~{fpsr},~{flags}"(i32 1377, i32 %52, i32 %54) #19, !srcloc !8 callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds (i8, ptr @__tracepoint_write_msr, i64 8), i32 2) #19 - to label %57 [label %56], !srcloc !9 + to label %56 [label %55], !srcloc !9 -56: ; preds = %52 - tail call void @do_trace_write_msr(i32 noundef 1377, i64 noundef %48, i32 noundef 0) #19 - br label %57 +55: ; preds = %51 + tail call void @do_trace_write_msr(i32 noundef 1377, i64 noundef %47, i32 noundef 0) #19 + br label %56 -57: ; preds = %56, %52, %42 +56: ; preds = %55, %51, %42 ret void } diff --git a/bench/linux/optimized/rtnetlink.ll b/bench/linux/optimized/rtnetlink.ll index f6cd31e0251..67c45dcbb46 100644 --- a/bench/linux/optimized/rtnetlink.ll +++ b/bench/linux/optimized/rtnetlink.ll @@ -2529,25 +2529,23 @@ define internal fastcc i64 @if_nlmsg_size(ptr noundef %0, i32 noundef %1) unname 144: ; preds = %138 %145 = shl i32 %1, 2 %146 = and i32 %145, 4 - %147 = add nuw nsw i32 %146, 7 - %148 = and i32 %147, 12 - %149 = icmp eq i32 %134, 0 - %150 = select i1 %149, i64 8, i64 20 + %147 = icmp eq i32 %134, 0 + %148 = select i1 %147, i64 8, i64 20 tail call void @__rcu_read_unlock() #18 - %151 = icmp eq i32 %139, 0 - %152 = mul i32 %139, 132 - %153 = add i32 %152, 4 - %154 = select i1 %151, i32 0, i32 %153 - %155 = zext i32 %154 to i64 - %156 = add nuw nsw i32 %148, 1132 - %157 = zext nneg i32 %156 to i64 - %158 = add nsw i64 %30, %157 - %159 = add nsw i64 %158, %66 - %160 = add i64 %159, %116 - %161 = add i64 %160, %132 - %162 = add i64 %161, %150 - %163 = add i64 %162, %155 - ret i64 %163 + %149 = icmp eq i32 %139, 0 + %150 = mul i32 %139, 132 + %151 = add i32 %150, 4 + %152 = select i1 %149, i32 0, i32 %151 + %153 = zext i32 %152 to i64 + %154 = or disjoint i32 %146, 1136 + %155 = zext nneg i32 %154 to i64 + %156 = add nsw i64 %30, %155 + %157 = add nsw i64 %156, %66 + %158 = add i64 %157, %116 + %159 = add i64 %158, %132 + %160 = add i64 %159, %148 + %161 = add i64 %160, %153 + ret i64 %161 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -14524,37 +14522,35 @@ define internal fastcc void @rtnl_fdb_notify(ptr nocapture noundef nonnull reado %8 = getelementptr inbounds i8, ptr %0, i64 813 %9 = load i8, ptr %8, align 1 %10 = zext i8 %9 to i32 - %11 = add nuw nsw i32 %10, 7 + %11 = add nuw nsw i32 %10, 43 %12 = and i32 %11, 508 - %13 = add nuw nsw i32 %12, 39 - %14 = and i32 %13, 1020 - %15 = tail call ptr @__alloc_skb(i32 noundef %14, i32 noundef 2080, i32 noundef 0, i32 noundef -1) #18 - %16 = icmp eq ptr %15, null - br i1 %16, label %25, label %17 + %13 = tail call ptr @__alloc_skb(i32 noundef %12, i32 noundef 2080, i32 noundef 0, i32 noundef -1) #18 + %14 = icmp eq ptr %13, null + br i1 %14, label %23, label %15 -17: ; preds = %5 - %18 = tail call fastcc i32 @nlmsg_populate_fdb_fill(ptr noundef nonnull %15, ptr noundef nonnull %0, ptr noundef %1, i16 noundef zeroext %2, i32 noundef 0, i32 noundef 0, i32 noundef %3, i32 noundef 0, i16 noundef zeroext %4) - %19 = icmp slt i32 %18, 0 - br i1 %19, label %20, label %21 +15: ; preds = %5 + %16 = tail call fastcc i32 @nlmsg_populate_fdb_fill(ptr noundef nonnull %13, ptr noundef nonnull %0, ptr noundef %1, i16 noundef zeroext %2, i32 noundef 0, i32 noundef 0, i32 noundef %3, i32 noundef 0, i16 noundef zeroext %4) + %17 = icmp slt i32 %16, 0 + br i1 %17, label %18, label %19 -20: ; preds = %17 - tail call void @kfree_skb_reason(ptr noundef nonnull %15, i32 noundef 2) #18 - br label %25 +18: ; preds = %15 + tail call void @kfree_skb_reason(ptr noundef nonnull %13, i32 noundef 2) #18 + br label %23 -21: ; preds = %17 - %22 = getelementptr inbounds i8, ptr %7, i64 272 - %23 = load ptr, ptr %22, align 16 - %24 = tail call i32 @nlmsg_notify(ptr noundef %23, ptr noundef nonnull %15, i32 noundef 0, i32 noundef 3, i32 noundef 0, i32 noundef 2080) #18 - br label %30 +19: ; preds = %15 + %20 = getelementptr inbounds i8, ptr %7, i64 272 + %21 = load ptr, ptr %20, align 16 + %22 = tail call i32 @nlmsg_notify(ptr noundef %21, ptr noundef nonnull %13, i32 noundef 0, i32 noundef 3, i32 noundef 0, i32 noundef 2080) #18 + br label %28 -25: ; preds = %20, %5 - %26 = phi i32 [ %18, %20 ], [ -105, %5 ] - %27 = getelementptr inbounds i8, ptr %7, i64 272 - %28 = load ptr, ptr %27, align 16 - %29 = tail call i32 @netlink_set_err(ptr noundef %28, i32 noundef 0, i32 noundef 3, i32 noundef %26) #18 - br label %30 +23: ; preds = %18, %5 + %24 = phi i32 [ %16, %18 ], [ -105, %5 ] + %25 = getelementptr inbounds i8, ptr %7, i64 272 + %26 = load ptr, ptr %25, align 16 + %27 = tail call i32 @netlink_set_err(ptr noundef %26, i32 noundef 0, i32 noundef 3, i32 noundef %24) #18 + br label %28 -30: ; preds = %25, %21 +28: ; preds = %23, %19 ret void } diff --git a/bench/linux/optimized/strset.ll b/bench/linux/optimized/strset.ll index 09831979ed8..fe43f6bd7c4 100644 --- a/bench/linux/optimized/strset.ll +++ b/bench/linux/optimized/strset.ll @@ -456,9 +456,9 @@ define internal i32 @strset_reply_size(ptr nocapture noundef readonly %0, ptr no %7 = getelementptr inbounds i8, ptr %0, i64 20 br i1 %5, label %.split.us, label %.split -.split.us: ; preds = %2, %53 - %8 = phi i64 [ %54, %53 ], [ 0, %2 ] - %9 = phi i32 [ %.ph.us, %53 ], [ 4, %2 ] +.split.us: ; preds = %2, %49 + %8 = phi i64 [ %50, %49 ], [ 0, %2 ] + %9 = phi i32 [ %.ph.us, %49 ], [ 4, %2 ] %10 = getelementptr [21 x %struct.strset_info], ptr %6, i64 0, i64 %8 %11 = load i8, ptr %10, align 8, !range !15, !noundef !16 %12 = icmp eq i8 %11, 0 @@ -468,14 +468,14 @@ define internal i32 @strset_reply_size(ptr nocapture noundef readonly %0, ptr no %14 = getelementptr inbounds i8, ptr %10, i64 8 %15 = load ptr, ptr %14, align 8 %16 = icmp eq ptr %15, null - br i1 %16, label %53, label %17 + br i1 %16, label %49, label %17 17: ; preds = %13, %.split.us %18 = load ptr, ptr %1, align 8 %19 = icmp eq ptr %18, null %20 = zext i1 %19 to i8 %.not6.us = icmp eq i8 %11, %20 - br i1 %.not6.us, label %53, label %21 + br i1 %.not6.us, label %49, label %21 21: ; preds = %17 %22 = load i8, ptr %7, align 4, !range !15, !noundef !16 @@ -494,99 +494,91 @@ define internal i32 @strset_reply_size(ptr nocapture noundef readonly %0, ptr no br label %33 33: ; preds = %33, %29 - %34 = phi i64 [ 0, %29 ], [ %43, %33 ] - %35 = phi i32 [ 0, %29 ], [ %42, %33 ] + %34 = phi i64 [ 0, %29 ], [ %42, %33 ] + %35 = phi i32 [ 0, %29 ], [ %41, %33 ] %36 = getelementptr [32 x i8], ptr %31, i64 %34 %37 = tail call i64 @strnlen(ptr noundef %36, i64 noundef 32) %38 = trunc i64 %37 to i32 %39 = and i32 %38, -4 - %40 = add i32 %39, 23 - %41 = and i32 %40, -4 - %42 = add i32 %41, %35 - %43 = add nuw nsw i64 %34, 1 - %44 = icmp eq i64 %43, %32 - br i1 %44, label %45, label %33, !llvm.loop !20 - -45: ; preds = %33 - %46 = add i32 %42, 7 - %47 = and i32 %46, -4 - %48 = add i32 %47, 23 - %49 = and i32 %48, -4 - %50 = icmp slt i32 %48, 0 - br i1 %50, label %.split8.us, label %.thread.us - -.thread.us: ; preds = %45, %21 - %51 = phi i32 [ %49, %45 ], [ %28, %21 ] - %52 = add i32 %51, %9 - br label %53 - -53: ; preds = %.thread.us, %17, %13 - %.ph.us = phi i32 [ %9, %13 ], [ %9, %17 ], [ %52, %.thread.us ] - %54 = add nuw nsw i64 %8, 1 - %55 = icmp eq i64 %54, 21 - br i1 %55, label %.split8.us, label %.split.us, !llvm.loop !21 - -.split: ; preds = %2, %94 - %56 = phi i64 [ %95, %94 ], [ 0, %2 ] - %57 = phi i32 [ %.ph, %94 ], [ 4, %2 ] - %58 = trunc i64 %56 to i32 - %59 = shl nuw nsw i32 1, %58 - %60 = and i32 %59, %4 - %.not = icmp eq i32 %60, 0 - br i1 %.not, label %94, label %61 - -61: ; preds = %.split - %62 = getelementptr [21 x %struct.strset_info], ptr %6, i64 0, i64 %56 - %63 = load i8, ptr %7, align 4, !range !15, !noundef !16 - %64 = icmp ne i8 %63, 0 - %65 = getelementptr inbounds i8, ptr %62, i64 4 - %66 = load i32, ptr %65, align 4 - %67 = icmp eq i32 %66, 0 - %68 = or i1 %64, %67 - %69 = select i1 %67, i32 0, i32 20 - br i1 %68, label %.thread, label %70 - -70: ; preds = %61 - %71 = getelementptr inbounds i8, ptr %62, i64 8 - %72 = load ptr, ptr %71, align 8 - %73 = zext i32 %66 to i64 - br label %74 - -74: ; preds = %74, %70 - %75 = phi i64 [ 0, %70 ], [ %84, %74 ] - %76 = phi i32 [ 0, %70 ], [ %83, %74 ] - %77 = getelementptr [32 x i8], ptr %72, i64 %75 - %78 = tail call i64 @strnlen(ptr noundef %77, i64 noundef 32) - %79 = trunc i64 %78 to i32 - %80 = and i32 %79, -4 - %81 = add i32 %80, 23 - %82 = and i32 %81, -4 - %83 = add i32 %82, %76 - %84 = add nuw nsw i64 %75, 1 - %85 = icmp eq i64 %84, %73 - br i1 %85, label %86, label %74, !llvm.loop !20 - -86: ; preds = %74 - %87 = add i32 %83, 7 - %88 = and i32 %87, -4 - %89 = add i32 %88, 23 - %90 = and i32 %89, -4 - %91 = icmp slt i32 %89, 0 - br i1 %91, label %.split8.us, label %.thread - -.thread: ; preds = %61, %86 - %92 = phi i32 [ %90, %86 ], [ %69, %61 ] - %93 = add i32 %92, %57 - br label %94 - -94: ; preds = %.thread, %.split - %.ph = phi i32 [ %57, %.split ], [ %93, %.thread ] - %95 = add nuw nsw i64 %56, 1 - %96 = icmp eq i64 %95, 21 - br i1 %96, label %.split8.us, label %.split, !llvm.loop !21 - -.split8.us: ; preds = %94, %86, %45, %53 - %.us-phi = phi i32 [ %.ph.us, %53 ], [ %49, %45 ], [ %.ph, %94 ], [ %90, %86 ] + %40 = add i32 %35, 20 + %41 = add i32 %40, %39 + %42 = add nuw nsw i64 %34, 1 + %43 = icmp eq i64 %42, %32 + br i1 %43, label %44, label %33, !llvm.loop !20 + +44: ; preds = %33 + %45 = add i32 %41, 24 + %46 = icmp slt i32 %45, 0 + br i1 %46, label %.split8.us, label %.thread.us + +.thread.us: ; preds = %44, %21 + %47 = phi i32 [ %45, %44 ], [ %28, %21 ] + %48 = add i32 %47, %9 + br label %49 + +49: ; preds = %.thread.us, %17, %13 + %.ph.us = phi i32 [ %9, %13 ], [ %9, %17 ], [ %48, %.thread.us ] + %50 = add nuw nsw i64 %8, 1 + %51 = icmp eq i64 %50, 21 + br i1 %51, label %.split8.us, label %.split.us, !llvm.loop !21 + +.split: ; preds = %2, %86 + %52 = phi i64 [ %87, %86 ], [ 0, %2 ] + %53 = phi i32 [ %.ph, %86 ], [ 4, %2 ] + %54 = trunc i64 %52 to i32 + %55 = shl nuw nsw i32 1, %54 + %56 = and i32 %55, %4 + %.not = icmp eq i32 %56, 0 + br i1 %.not, label %86, label %57 + +57: ; preds = %.split + %58 = getelementptr [21 x %struct.strset_info], ptr %6, i64 0, i64 %52 + %59 = load i8, ptr %7, align 4, !range !15, !noundef !16 + %60 = icmp ne i8 %59, 0 + %61 = getelementptr inbounds i8, ptr %58, i64 4 + %62 = load i32, ptr %61, align 4 + %63 = icmp eq i32 %62, 0 + %64 = or i1 %60, %63 + %65 = select i1 %63, i32 0, i32 20 + br i1 %64, label %.thread, label %66 + +66: ; preds = %57 + %67 = getelementptr inbounds i8, ptr %58, i64 8 + %68 = load ptr, ptr %67, align 8 + %69 = zext i32 %62 to i64 + br label %70 + +70: ; preds = %70, %66 + %71 = phi i64 [ 0, %66 ], [ %79, %70 ] + %72 = phi i32 [ 0, %66 ], [ %78, %70 ] + %73 = getelementptr [32 x i8], ptr %68, i64 %71 + %74 = tail call i64 @strnlen(ptr noundef %73, i64 noundef 32) + %75 = trunc i64 %74 to i32 + %76 = and i32 %75, -4 + %77 = add i32 %72, 20 + %78 = add i32 %77, %76 + %79 = add nuw nsw i64 %71, 1 + %80 = icmp eq i64 %79, %69 + br i1 %80, label %81, label %70, !llvm.loop !20 + +81: ; preds = %70 + %82 = add i32 %78, 24 + %83 = icmp slt i32 %82, 0 + br i1 %83, label %.split8.us, label %.thread + +.thread: ; preds = %57, %81 + %84 = phi i32 [ %82, %81 ], [ %65, %57 ] + %85 = add i32 %84, %53 + br label %86 + +86: ; preds = %.thread, %.split + %.ph = phi i32 [ %53, %.split ], [ %85, %.thread ] + %87 = add nuw nsw i64 %52, 1 + %88 = icmp eq i64 %87, 21 + br i1 %88, label %.split8.us, label %.split, !llvm.loop !21 + +.split8.us: ; preds = %86, %81, %44, %49 + %.us-phi = phi i32 [ %.ph.us, %49 ], [ %45, %44 ], [ %.ph, %86 ], [ %82, %81 ] ret i32 %.us-phi } diff --git a/bench/linux/optimized/xhci-trace.ll b/bench/linux/optimized/xhci-trace.ll index bc2553032bd..df97868a64c 100644 --- a/bench/linux/optimized/xhci-trace.ll +++ b/bench/linux/optimized/xhci-trace.ll @@ -3344,69 +3344,67 @@ define internal void @perf_trace_xhci_log_ctx(ptr noundef %0, ptr nocapture noun 28: ; preds = %4 %29 = load volatile ptr, ptr %24, align 8 %30 = icmp eq ptr %29, null - br i1 %30, label %74, label %31 + br i1 %30, label %72, label %31 31: ; preds = %28, %4 store i32 0, ptr %6, align 4, !annotation !62 - %32 = add i32 %18, 51 - %33 = and i32 %32, -16 - %34 = add nsw i32 %33, -4 - %35 = call ptr @perf_trace_buf_alloc(i32 noundef %34, ptr noundef nonnull %5, ptr noundef nonnull %6) #11 - %36 = icmp eq ptr %35, null - br i1 %36, label %74, label %37 - -37: ; preds = %31 - %38 = load ptr, ptr %5, align 8 - %39 = call ptr @llvm.returnaddress(i32 0) - %40 = ptrtoint ptr %39 to i64 - %41 = getelementptr inbounds i8, ptr %38, i64 128 - store i64 %40, ptr %41, align 8 - %42 = call ptr @llvm.frameaddress.p0(i32 0) - %43 = ptrtoint ptr %42 to i64 - %44 = getelementptr inbounds i8, ptr %38, i64 152 - store i64 %43, ptr %44, align 8 - %45 = getelementptr inbounds i8, ptr %38, i64 136 - store i64 16, ptr %45, align 8 - %46 = getelementptr inbounds i8, ptr %38, i64 144 - store i64 0, ptr %46, align 8 - %47 = getelementptr inbounds i8, ptr %35, i64 36 - store i32 %20, ptr %47, align 4 - %48 = load i32, ptr %7, align 4 - %49 = and i32 %48, 4 - %50 = getelementptr inbounds i8, ptr %35, i64 8 - store i32 %49, ptr %50, align 8 - %51 = load i32, ptr %2, align 8 - %52 = getelementptr inbounds i8, ptr %35, i64 12 - store i32 %51, ptr %52, align 4 - %53 = getelementptr inbounds i8, ptr %2, i64 16 - %54 = load i64, ptr %53, align 8 - %55 = getelementptr inbounds i8, ptr %35, i64 16 - store i64 %54, ptr %55, align 8 - %56 = getelementptr inbounds i8, ptr %2, i64 8 - %57 = load ptr, ptr %56, align 8 - %58 = getelementptr inbounds i8, ptr %35, i64 24 - store ptr %57, ptr %58, align 8 - %59 = getelementptr inbounds i8, ptr %35, i64 32 - store i32 %3, ptr %59, align 8 - %60 = getelementptr i8, ptr %35, i64 40 - %61 = load ptr, ptr %56, align 8 - %62 = load i32, ptr %7, align 4 - %63 = shl i32 %62, 5 - %64 = and i32 %63, 128 - %65 = or disjoint i32 %64, 32 - %66 = load i32, ptr %2, align 8 - %67 = icmp eq i32 %66, 2 - %68 = zext i1 %67 to i32 - %69 = add i32 %15, %68 - %70 = mul i32 %69, %65 - %71 = zext i32 %70 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %60, ptr align 1 %61, i64 %71, i1 false) - %72 = load i32, ptr %6, align 4 - %73 = load ptr, ptr %5, align 8 - call void @perf_trace_run_bpf_submit(ptr noundef nonnull %35, i32 noundef %34, i32 noundef %72, ptr noundef %0, i64 noundef 1, ptr noundef %73, ptr noundef %24, ptr noundef null) #11 - br label %74 - -74: ; preds = %37, %31, %28 + %32 = add i32 %18, 44 + %33 = call ptr @perf_trace_buf_alloc(i32 noundef %32, ptr noundef nonnull %5, ptr noundef nonnull %6) #11 + %34 = icmp eq ptr %33, null + br i1 %34, label %72, label %35 + +35: ; preds = %31 + %36 = load ptr, ptr %5, align 8 + %37 = call ptr @llvm.returnaddress(i32 0) + %38 = ptrtoint ptr %37 to i64 + %39 = getelementptr inbounds i8, ptr %36, i64 128 + store i64 %38, ptr %39, align 8 + %40 = call ptr @llvm.frameaddress.p0(i32 0) + %41 = ptrtoint ptr %40 to i64 + %42 = getelementptr inbounds i8, ptr %36, i64 152 + store i64 %41, ptr %42, align 8 + %43 = getelementptr inbounds i8, ptr %36, i64 136 + store i64 16, ptr %43, align 8 + %44 = getelementptr inbounds i8, ptr %36, i64 144 + store i64 0, ptr %44, align 8 + %45 = getelementptr inbounds i8, ptr %33, i64 36 + store i32 %20, ptr %45, align 4 + %46 = load i32, ptr %7, align 4 + %47 = and i32 %46, 4 + %48 = getelementptr inbounds i8, ptr %33, i64 8 + store i32 %47, ptr %48, align 8 + %49 = load i32, ptr %2, align 8 + %50 = getelementptr inbounds i8, ptr %33, i64 12 + store i32 %49, ptr %50, align 4 + %51 = getelementptr inbounds i8, ptr %2, i64 16 + %52 = load i64, ptr %51, align 8 + %53 = getelementptr inbounds i8, ptr %33, i64 16 + store i64 %52, ptr %53, align 8 + %54 = getelementptr inbounds i8, ptr %2, i64 8 + %55 = load ptr, ptr %54, align 8 + %56 = getelementptr inbounds i8, ptr %33, i64 24 + store ptr %55, ptr %56, align 8 + %57 = getelementptr inbounds i8, ptr %33, i64 32 + store i32 %3, ptr %57, align 8 + %58 = getelementptr i8, ptr %33, i64 40 + %59 = load ptr, ptr %54, align 8 + %60 = load i32, ptr %7, align 4 + %61 = shl i32 %60, 5 + %62 = and i32 %61, 128 + %63 = or disjoint i32 %62, 32 + %64 = load i32, ptr %2, align 8 + %65 = icmp eq i32 %64, 2 + %66 = zext i1 %65 to i32 + %67 = add i32 %15, %66 + %68 = mul i32 %67, %63 + %69 = zext i32 %68 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %58, ptr align 1 %59, i64 %69, i1 false) + %70 = load i32, ptr %6, align 4 + %71 = load ptr, ptr %5, align 8 + call void @perf_trace_run_bpf_submit(ptr noundef nonnull %33, i32 noundef %32, i32 noundef %70, ptr noundef %0, i64 noundef 1, ptr noundef %71, ptr noundef %24, ptr noundef null) #11 + br label %72 + +72: ; preds = %35, %31, %28 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #11 ret void diff --git a/bench/llama.cpp/optimized/ggml.c.ll b/bench/llama.cpp/optimized/ggml.c.ll index 2163a692bd1..1492ece8843 100644 --- a/bench/llama.cpp/optimized/ggml.c.ll +++ b/bench/llama.cpp/optimized/ggml.c.ll @@ -11855,19 +11855,19 @@ do.end136: ; preds = %do.body103 %mul5.i = mul i64 %mul.i, %8 %mul8.i = mul i64 %mul5.i, %2 %mul = mul i64 %mul8.i, %4 - %sub = add i64 %mul, 15 + %sub = add i64 %mul, 12 %and = and i64 %sub, -16 %mul5.i56 = mul i64 %mul.i, %3 %mul8.i58 = mul i64 %mul5.i56, %9 %mul139 = mul i64 %mul8.i58, %4 - %sub141 = add i64 %mul139, 15 + %sub141 = add i64 %mul139, 12 %and142 = and i64 %sub141, -16 %add143 = add i64 %and142, %and %mul.i61 = shl i64 %9, 2 %mul5.i63 = mul i64 %mul.i61, %0 %mul8.i65 = mul i64 %mul5.i63, %3 %mul144 = mul i64 %mul8.i65, %4 - %sub146 = add i64 %mul144, 15 + %sub146 = add i64 %mul144, 12 %and147 = and i64 %sub146, -16 %add148 = add i64 %add143, %and147 %div66 = lshr exact i64 %add148, 2 @@ -16442,7 +16442,7 @@ ggml_graph_nbytes.exit: ; preds = %cond.true.i.i, %con %mul.i = shl i64 %size, 3 %add3.i = select i1 %grads, i64 %mul.i, i64 0 %mul5.i = shl i64 %cond.i.i, 3 - %nbytes.0.i = add i64 %mul1.i, 95 + %nbytes.0.i = add i64 %mul1.i, 88 %add6.i = add i64 %nbytes.0.i, %add3.i %sub = add i64 %add6.i, %mul5.i %and = and i64 %sub, -16 @@ -16475,7 +16475,7 @@ cond.true.i.i.i: ; preds = %while.end.i.i.i %arrayidx4.i.i.i = getelementptr inbounds [32 x i64], ptr @ggml_hash_size.primes, i64 0, i64 %l.1.i.i.i %0 = load i64, ptr %arrayidx4.i.i.i, align 8 %1 = shl i64 %0, 3 - %2 = add i64 %1, 32863 + %2 = add i64 %1, 32856 %3 = and i64 %2, -16 %4 = add i64 %3, 32 br label %ggml_graph_overhead_custom.exit @@ -19107,7 +19107,7 @@ ggml_graph_overhead_custom.exit: ; preds = %cond.true.i.i.i, %c %cond.i.i.i = phi i64 [ %13, %cond.true.i.i.i ], [ %or.i.i.i, %cond.false.i.i.i ] %mul1.i.i = shl nsw i64 %conv38, 4 %mul5.i.i = shl i64 %cond.i.i.i, 3 - %nbytes.0.i.i = add nsw i64 %mul1.i.i, 95 + %nbytes.0.i.i = add nsw i64 %mul1.i.i, 88 %sub.i = add i64 %nbytes.0.i.i, %mul5.i.i %and.i = and i64 %sub.i, -16 %add1.i = add i64 %11, 32 diff --git a/bench/meshlab/optimized/MarchingCubes.cpp.ll b/bench/meshlab/optimized/MarchingCubes.cpp.ll index 5792913e787..38cf5ad7dab 100644 --- a/bench/meshlab/optimized/MarchingCubes.cpp.ll +++ b/bench/meshlab/optimized/MarchingCubes.cpp.ll @@ -382,67 +382,67 @@ define noundef i32 @_ZN4Cube19FaceAdjacentToEdgesEii(i32 noundef %0, i32 noundef ] _ZN4Cube9FaceIndexEiii.exit.i: ; preds = %2 - %7 = icmp eq i32 %6, 0 - %spec.select.i = select i1 %7, i32 2, i32 3 - %8 = icmp eq i32 %4, 0 - %.0.i6.i = select i1 %8, i32 4, i32 5 + %.not.not.i = icmp eq i32 %6, 0 + %spec.select.i = select i1 %.not.not.i, i32 2, i32 3 + %.not.not31.i = icmp eq i32 %4, 0 + %.0.i6.i = select i1 %.not.not31.i, i32 4, i32 5 br label %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit _ZN4Cube9FaceIndexEiii.exit9.i: ; preds = %2 %.lobit30.i = lshr exact i32 %6, 1 - %9 = icmp eq i32 %4, 0 - %.0.i12.i = select i1 %9, i32 4, i32 5 + %7 = icmp eq i32 %4, 0 + %.0.i12.i = select i1 %7, i32 4, i32 5 br label %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit _ZN4Cube9FaceIndexEiii.exit16.i: ; preds = %2 %.lobit.i = lshr exact i32 %6, 1 - %10 = icmp eq i32 %4, 0 - %.0.i18.i = select i1 %10, i32 2, i32 3 + %8 = icmp eq i32 %4, 0 + %.0.i18.i = select i1 %8, i32 2, i32 3 br label %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit _ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit: ; preds = %_ZN4Cube9FaceIndexEiii.exit.i, %_ZN4Cube9FaceIndexEiii.exit9.i, %_ZN4Cube9FaceIndexEiii.exit16.i, %2 - %.128 = phi i32 [ undef, %2 ], [ %.lobit.i, %_ZN4Cube9FaceIndexEiii.exit16.i ], [ %.lobit30.i, %_ZN4Cube9FaceIndexEiii.exit9.i ], [ %spec.select.i, %_ZN4Cube9FaceIndexEiii.exit.i ] - %.026 = phi i32 [ undef, %2 ], [ %.0.i18.i, %_ZN4Cube9FaceIndexEiii.exit16.i ], [ %.0.i12.i, %_ZN4Cube9FaceIndexEiii.exit9.i ], [ %.0.i6.i, %_ZN4Cube9FaceIndexEiii.exit.i ] - %11 = ashr i32 %1, 2 - %12 = and i32 %1, 2 - %13 = shl i32 %1, 1 - %14 = and i32 %13, 2 - switch i32 %11, label %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit18 [ + %.130 = phi i32 [ undef, %2 ], [ %.lobit.i, %_ZN4Cube9FaceIndexEiii.exit16.i ], [ %.lobit30.i, %_ZN4Cube9FaceIndexEiii.exit9.i ], [ %spec.select.i, %_ZN4Cube9FaceIndexEiii.exit.i ] + %.028 = phi i32 [ undef, %2 ], [ %.0.i18.i, %_ZN4Cube9FaceIndexEiii.exit16.i ], [ %.0.i12.i, %_ZN4Cube9FaceIndexEiii.exit9.i ], [ %.0.i6.i, %_ZN4Cube9FaceIndexEiii.exit.i ] + %9 = ashr i32 %1, 2 + %10 = and i32 %1, 2 + %11 = shl i32 %1, 1 + %12 = and i32 %11, 2 + switch i32 %9, label %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit20 [ i32 0, label %_ZN4Cube9FaceIndexEiii.exit.i15 i32 1, label %_ZN4Cube9FaceIndexEiii.exit9.i12 i32 2, label %_ZN4Cube9FaceIndexEiii.exit16.i7 ] _ZN4Cube9FaceIndexEiii.exit.i15: ; preds = %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit - %15 = icmp eq i32 %14, 0 - %spec.select.i16 = select i1 %15, i32 2, i32 3 - %16 = icmp eq i32 %12, 0 - %.0.i6.i17 = select i1 %16, i32 4, i32 5 - br label %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit18 + %.not.not.i16 = icmp eq i32 %12, 0 + %spec.select.i17 = select i1 %.not.not.i16, i32 2, i32 3 + %.not.not31.i18 = icmp eq i32 %10, 0 + %.0.i6.i19 = select i1 %.not.not31.i18, i32 4, i32 5 + br label %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit20 _ZN4Cube9FaceIndexEiii.exit9.i12: ; preds = %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit - %.lobit30.i13 = lshr exact i32 %14, 1 - %17 = icmp eq i32 %12, 0 - %.0.i12.i14 = select i1 %17, i32 4, i32 5 - br label %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit18 + %.lobit30.i13 = lshr exact i32 %12, 1 + %13 = icmp eq i32 %10, 0 + %.0.i12.i14 = select i1 %13, i32 4, i32 5 + br label %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit20 _ZN4Cube9FaceIndexEiii.exit16.i7: ; preds = %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit - %.lobit.i8 = lshr exact i32 %14, 1 - %18 = icmp eq i32 %12, 0 - %.0.i18.i9 = select i1 %18, i32 2, i32 3 - br label %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit18 - -_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit18: ; preds = %_ZN4Cube9FaceIndexEiii.exit.i15, %_ZN4Cube9FaceIndexEiii.exit9.i12, %_ZN4Cube9FaceIndexEiii.exit16.i7, %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit - %.1 = phi i32 [ undef, %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit ], [ %.lobit.i8, %_ZN4Cube9FaceIndexEiii.exit16.i7 ], [ %.lobit30.i13, %_ZN4Cube9FaceIndexEiii.exit9.i12 ], [ %spec.select.i16, %_ZN4Cube9FaceIndexEiii.exit.i15 ] - %.024 = phi i32 [ undef, %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit ], [ %.0.i18.i9, %_ZN4Cube9FaceIndexEiii.exit16.i7 ], [ %.0.i12.i14, %_ZN4Cube9FaceIndexEiii.exit9.i12 ], [ %.0.i6.i17, %_ZN4Cube9FaceIndexEiii.exit.i15 ] - %19 = icmp eq i32 %.128, %.1 - %20 = icmp eq i32 %.128, %.024 - %or.cond29 = or i1 %19, %20 - %21 = icmp eq i32 %.026, %.1 - %22 = icmp eq i32 %.026, %.024 - %or.cond = or i1 %21, %22 - %spec.select = select i1 %or.cond, i32 %.026, i32 -1 - %.0 = select i1 %or.cond29, i32 %.128, i32 %spec.select + %.lobit.i8 = lshr exact i32 %12, 1 + %14 = icmp eq i32 %10, 0 + %.0.i18.i9 = select i1 %14, i32 2, i32 3 + br label %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit20 + +_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit20: ; preds = %_ZN4Cube9FaceIndexEiii.exit.i15, %_ZN4Cube9FaceIndexEiii.exit9.i12, %_ZN4Cube9FaceIndexEiii.exit16.i7, %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit + %.1 = phi i32 [ undef, %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit ], [ %.lobit.i8, %_ZN4Cube9FaceIndexEiii.exit16.i7 ], [ %.lobit30.i13, %_ZN4Cube9FaceIndexEiii.exit9.i12 ], [ %spec.select.i17, %_ZN4Cube9FaceIndexEiii.exit.i15 ] + %.026 = phi i32 [ undef, %_ZN4Cube19FacesAdjacentToEdgeEiRiS0_.exit ], [ %.0.i18.i9, %_ZN4Cube9FaceIndexEiii.exit16.i7 ], [ %.0.i12.i14, %_ZN4Cube9FaceIndexEiii.exit9.i12 ], [ %.0.i6.i19, %_ZN4Cube9FaceIndexEiii.exit.i15 ] + %15 = icmp eq i32 %.130, %.1 + %16 = icmp eq i32 %.130, %.026 + %or.cond31 = or i1 %15, %16 + %17 = icmp eq i32 %.028, %.1 + %18 = icmp eq i32 %.028, %.026 + %or.cond = or i1 %17, %18 + %spec.select = select i1 %or.cond, i32 %.028, i32 -1 + %.0 = select i1 %or.cond31, i32 %.130, i32 %spec.select ret i32 %.0 } @@ -452,40 +452,40 @@ define void @_ZN4Cube19FacesAdjacentToEdgeEiRiS0_(i32 noundef %0, ptr nocapture %5 = and i32 %0, 2 %6 = shl i32 %0, 1 %7 = and i32 %6, 2 - switch i32 %4, label %12 [ + switch i32 %4, label %10 [ i32 0, label %_ZN4Cube9FaceIndexEiii.exit i32 1, label %_ZN4Cube9FaceIndexEiii.exit9 i32 2, label %_ZN4Cube9FaceIndexEiii.exit16 ] _ZN4Cube9FaceIndexEiii.exit: ; preds = %3 - %8 = icmp eq i32 %7, 0 - %spec.select = select i1 %8, i32 2, i32 3 + %.not.not = icmp eq i32 %7, 0 + %spec.select = select i1 %.not.not, i32 2, i32 3 store i32 %spec.select, ptr %1, align 4 - %9 = icmp eq i32 %5, 0 - %.0.i6 = select i1 %9, i32 4, i32 5 + %.not.not31 = icmp eq i32 %5, 0 + %.0.i6 = select i1 %.not.not31, i32 4, i32 5 br label %.sink.split _ZN4Cube9FaceIndexEiii.exit9: ; preds = %3 %.lobit30 = lshr exact i32 %7, 1 store i32 %.lobit30, ptr %1, align 4 - %10 = icmp eq i32 %5, 0 - %.0.i12 = select i1 %10, i32 4, i32 5 + %8 = icmp eq i32 %5, 0 + %.0.i12 = select i1 %8, i32 4, i32 5 br label %.sink.split _ZN4Cube9FaceIndexEiii.exit16: ; preds = %3 %.lobit = lshr exact i32 %7, 1 store i32 %.lobit, ptr %1, align 4 - %11 = icmp eq i32 %5, 0 - %.0.i18 = select i1 %11, i32 2, i32 3 + %9 = icmp eq i32 %5, 0 + %.0.i18 = select i1 %9, i32 2, i32 3 br label %.sink.split .sink.split: ; preds = %_ZN4Cube9FaceIndexEiii.exit, %_ZN4Cube9FaceIndexEiii.exit9, %_ZN4Cube9FaceIndexEiii.exit16 %.0.i18.sink = phi i32 [ %.0.i18, %_ZN4Cube9FaceIndexEiii.exit16 ], [ %.0.i12, %_ZN4Cube9FaceIndexEiii.exit9 ], [ %.0.i6, %_ZN4Cube9FaceIndexEiii.exit ] store i32 %.0.i18.sink, ptr %2, align 4 - br label %12 + br label %10 -12: ; preds = %.sink.split, %3 +10: ; preds = %.sink.split, %3 ret void } diff --git a/bench/meshlab/optimized/gltf_loader.cpp.ll b/bench/meshlab/optimized/gltf_loader.cpp.ll index 72ae05818df..9191b222893 100644 --- a/bench/meshlab/optimized/gltf_loader.cpp.ll +++ b/bench/meshlab/optimized/gltf_loader.cpp.ll @@ -6532,7 +6532,7 @@ _ZL15stbi__jpeg_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit: ; preds call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %15) call void @free(ptr noundef nonnull %34) #54 - br label %2812 + br label %2813 1665: ; preds = %_ZL15stbi__jpeg_testP13stbi__context.exit %1666 = getelementptr inbounds i8, ptr %0, i64 48 @@ -6694,7 +6694,7 @@ _ZL10stbi__get8P13stbi__context.exit.i.i: ; preds = %_ZL19stbi__refill_b _ZL14stbi__png_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit: ; preds = %1700, %1720, %1728 %.043.i.i = phi ptr [ null, %1700 ], [ %.0.i.i93, %1728 ], [ null, %1720 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) - br label %2812 + br label %2813 1734: ; preds = %_ZL10stbi__get8P13stbi__context.exit.i.i store ptr @.str.40, ptr @_ZL22stbi__g_failure_reason, align 8 @@ -6986,7 +6986,7 @@ _ZL14stbi__bmp_testP13stbi__context.exit.thread: ; preds = %_ZL10stbi__get8P13s store ptr %1846, ptr %29, align 8 %1847 = load ptr, ptr %30, align 8 store ptr %1847, ptr %32, align 8 - br label %2766 + br label %2767 _ZL14stbi__bmp_testP13stbi__context.exit.thread129: ; preds = %_ZL13stbi__get16leP13stbi__context.exit37.i.i, %_ZL13stbi__get16leP13stbi__context.exit37.i.i, %_ZL13stbi__get16leP13stbi__context.exit37.i.i, %_ZL13stbi__get16leP13stbi__context.exit37.i.i %1848 = load ptr, ptr %27, align 8 @@ -7001,7 +7001,7 @@ _ZL14stbi__bmp_testP13stbi__context.exit: ; preds = %_ZL13stbi__get16leP store ptr %1850, ptr %29, align 8 %1851 = load ptr, ptr %30, align 8 store ptr %1851, ptr %32, align 8 - br i1 %.not132, label %1852, label %2766 + br i1 %.not132, label %1852, label %2767 1852: ; preds = %_ZL14stbi__bmp_testP13stbi__context.exit.thread129, %_ZL14stbi__bmp_testP13stbi__context.exit call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %9) @@ -8751,23 +8751,24 @@ _ZL10stbi__skipP13stbi__contexti.exit451.i: ; preds = %2724, %2720 2733: ; preds = %.loopexit17.i %2734 = load i32, ptr %0, align 8 - %2735 = shl i32 %2730, 2 - %2736 = mul i32 %2735, %2734 - %2737 = add i32 %2736, -1 + %2735 = shl i32 %2734, 2 + %2736 = mul i32 %2735, %2730 + %2737 = add i32 %2736, -4 %2738 = icmp sgt i32 %2737, -1 br i1 %2738, label %.lr.ph67.preheader.i, label %.loopexit15.i .lr.ph67.preheader.i: ; preds = %2733 - %2739 = zext nneg i32 %2737 to i64 + %2739 = add i32 %2736, -1 + %2740 = zext i32 %2739 to i64 br label %.lr.ph67.i .lr.ph67.i: ; preds = %.lr.ph67.i, %.lr.ph67.preheader.i - %indvars.iv82.i = phi i64 [ %2739, %.lr.ph67.preheader.i ], [ %indvars.iv.next83.i, %.lr.ph67.i ] - %2740 = getelementptr inbounds i8, ptr %1904, i64 %indvars.iv82.i - store i8 -1, ptr %2740, align 1 + %indvars.iv82.i = phi i64 [ %2740, %.lr.ph67.preheader.i ], [ %indvars.iv.next83.i, %.lr.ph67.i ] + %2741 = getelementptr inbounds i8, ptr %1904, i64 %indvars.iv82.i + store i8 -1, ptr %2741, align 1 %indvars.iv.next83.i = add nsw i64 %indvars.iv82.i, -4 - %2741 = icmp ugt i64 %indvars.iv82.i, 3 - br i1 %2741, label %.lr.ph67.i, label %.loopexit15.i, !llvm.loop !65 + %2742 = icmp ugt i64 %indvars.iv82.i, 3 + br i1 %2742, label %.lr.ph67.i, label %.loopexit15.i, !llvm.loop !65 .loopexit15.i: ; preds = %.lr.ph67.i, %2733, %.loopexit17.i br i1 %1859, label %.preheader.i, label %.loopexit15..loopexit_crit_edge.i @@ -8777,47 +8778,47 @@ _ZL10stbi__skipP13stbi__contexti.exit451.i: ; preds = %2724, %2720 br label %.loopexit.i .preheader.i: ; preds = %.loopexit15.i - %2742 = ashr i32 %2730, 1 - %2743 = icmp sgt i32 %2742, 0 + %2743 = ashr i32 %2730, 1 + %2744 = icmp sgt i32 %2743, 0 %.pre103.pre107.i = load i32, ptr %0, align 8 - br i1 %2743, label %.lr.ph73.i, label %.loopexit.i + br i1 %2744, label %.lr.ph73.i, label %.loopexit.i .lr.ph73.i: ; preds = %.preheader.i %factor.op.mul.i = mul i32 %.pre103.pre107.i, %..i - %2744 = icmp sgt i32 %factor.op.mul.i, 0 - br i1 %2744, label %.lr.ph70.us.preheader.i, label %.loopexit.i + %2745 = icmp sgt i32 %factor.op.mul.i, 0 + br i1 %2745, label %.lr.ph70.us.preheader.i, label %.loopexit.i .lr.ph70.us.preheader.i: ; preds = %.lr.ph73.i - %wide.trip.count93.i = zext nneg i32 %2742 to i64 + %wide.trip.count93.i = zext nneg i32 %2743 to i64 %wide.trip.count88.i = zext nneg i32 %factor.op.mul.i to i64 br label %.lr.ph70.us.i .lr.ph70.us.i: ; preds = %._crit_edge71.us.i, %.lr.ph70.us.preheader.i %indvars.iv90.i = phi i64 [ 0, %.lr.ph70.us.preheader.i ], [ %indvars.iv.next91.i, %._crit_edge71.us.i ] - %2745 = trunc nuw nsw i64 %indvars.iv90.i to i32 - %.reass.us.i = mul i32 %factor.op.mul.i, %2745 - %2746 = zext i32 %.reass.us.i to i64 - %2747 = getelementptr inbounds i8, ptr %1904, i64 %2746 - %2748 = xor i32 %2745, -1 - %2749 = add i32 %2730, %2748 - %2750 = mul i32 %2749, %factor.op.mul.i - %2751 = zext i32 %2750 to i64 - %2752 = getelementptr inbounds i8, ptr %1904, i64 %2751 - br label %2753 - -2753: ; preds = %2753, %.lr.ph70.us.i - %indvars.iv85.i = phi i64 [ 0, %.lr.ph70.us.i ], [ %indvars.iv.next86.i, %2753 ] - %2754 = getelementptr inbounds i8, ptr %2747, i64 %indvars.iv85.i - %2755 = load i8, ptr %2754, align 1 - %2756 = getelementptr inbounds i8, ptr %2752, i64 %indvars.iv85.i - %2757 = load i8, ptr %2756, align 1 - store i8 %2757, ptr %2754, align 1 - store i8 %2755, ptr %2756, align 1 + %2746 = trunc nuw nsw i64 %indvars.iv90.i to i32 + %.reass.us.i = mul i32 %factor.op.mul.i, %2746 + %2747 = zext i32 %.reass.us.i to i64 + %2748 = getelementptr inbounds i8, ptr %1904, i64 %2747 + %2749 = xor i32 %2746, -1 + %2750 = add i32 %2730, %2749 + %2751 = mul i32 %2750, %factor.op.mul.i + %2752 = zext i32 %2751 to i64 + %2753 = getelementptr inbounds i8, ptr %1904, i64 %2752 + br label %2754 + +2754: ; preds = %2754, %.lr.ph70.us.i + %indvars.iv85.i = phi i64 [ 0, %.lr.ph70.us.i ], [ %indvars.iv.next86.i, %2754 ] + %2755 = getelementptr inbounds i8, ptr %2748, i64 %indvars.iv85.i + %2756 = load i8, ptr %2755, align 1 + %2757 = getelementptr inbounds i8, ptr %2753, i64 %indvars.iv85.i + %2758 = load i8, ptr %2757, align 1 + store i8 %2758, ptr %2755, align 1 + store i8 %2756, ptr %2757, align 1 %indvars.iv.next86.i = add nuw nsw i64 %indvars.iv85.i, 1 %exitcond89.not.i = icmp eq i64 %indvars.iv.next86.i, %wide.trip.count88.i - br i1 %exitcond89.not.i, label %._crit_edge71.us.i, label %2753, !llvm.loop !66 + br i1 %exitcond89.not.i, label %._crit_edge71.us.i, label %2754, !llvm.loop !66 -._crit_edge71.us.i: ; preds = %2753 +._crit_edge71.us.i: ; preds = %2754 %indvars.iv.next91.i = add nuw nsw i64 %indvars.iv90.i, 1 %exitcond94.not.i = icmp eq i64 %indvars.iv.next91.i, %wide.trip.count93.i br i1 %exitcond94.not.i, label %.loopexit.i, label %.lr.ph70.us.i, !llvm.loop !67 @@ -8826,143 +8827,143 @@ _ZL10stbi__skipP13stbi__contexti.exit451.i: ; preds = %2724, %2720 %.pre103.i = phi i32 [ %.pre103.pre.i, %.loopexit15..loopexit_crit_edge.i ], [ %.pre103.pre107.i, %.preheader.i ], [ %.pre103.pre107.i, %.lr.ph73.i ], [ %.pre103.pre107.i, %._crit_edge71.us.i ] %.not320.i = icmp eq i32 %4, %..i %or.cond.i = or i1 %.not313.i, %.not320.i - br i1 %or.cond.i, label %2761, label %2758 + br i1 %or.cond.i, label %2762, label %2759 -2758: ; preds = %.loopexit.i - %2759 = tail call fastcc noundef ptr @_ZL20stbi__convert_formatPhiijj(ptr noundef nonnull %1904, i32 noundef %..i, i32 noundef %4, i32 noundef %.pre103.i, i32 noundef %2730) - %2760 = icmp eq ptr %2759, null - br i1 %2760, label %_ZL14stbi__bmp_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit, label %._crit_edge101.i +2759: ; preds = %.loopexit.i + %2760 = tail call fastcc noundef ptr @_ZL20stbi__convert_formatPhiijj(ptr noundef nonnull %1904, i32 noundef %..i, i32 noundef %4, i32 noundef %.pre103.i, i32 noundef %2730) + %2761 = icmp eq ptr %2760, null + br i1 %2761, label %_ZL14stbi__bmp_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit, label %._crit_edge101.i -._crit_edge101.i: ; preds = %2758 +._crit_edge101.i: ; preds = %2759 %.pre102.i = load i32, ptr %0, align 8 - br label %2761 - -2761: ; preds = %._crit_edge101.i, %.loopexit.i - %2762 = phi i32 [ %.pre102.i, %._crit_edge101.i ], [ %.pre103.i, %.loopexit.i ] - %.0254.i = phi ptr [ %2759, %._crit_edge101.i ], [ %1904, %.loopexit.i ] - store i32 %2762, ptr %1, align 4 - %2763 = load i32, ptr %1857, align 4 - store i32 %2763, ptr %2, align 4 + br label %2762 + +2762: ; preds = %._crit_edge101.i, %.loopexit.i + %2763 = phi i32 [ %.pre102.i, %._crit_edge101.i ], [ %.pre103.i, %.loopexit.i ] + %.0254.i = phi ptr [ %2760, %._crit_edge101.i ], [ %1904, %.loopexit.i ] + store i32 %2763, ptr %1, align 4 + %2764 = load i32, ptr %1857, align 4 + store i32 %2764, ptr %2, align 4 %.not321.i = icmp eq ptr %3, null - br i1 %.not321.i, label %_ZL14stbi__bmp_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit, label %2764 + br i1 %.not321.i, label %_ZL14stbi__bmp_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit, label %2765 -2764: ; preds = %2761 - %2765 = load i32, ptr %1890, align 8 - store i32 %2765, ptr %3, align 4 +2765: ; preds = %2762 + %2766 = load i32, ptr %1890, align 8 + store i32 %2766, ptr %3, align 4 br label %_ZL14stbi__bmp_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit -_ZL14stbi__bmp_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit: ; preds = %1852, %1899, %_ZL17stbi__malloc_mad3iiii.exit.thread.i, %1911, %2036, %2349, %2758, %2761, %2764 - %.0.i = phi ptr [ null, %1911 ], [ null, %2036 ], [ null, %2349 ], [ null, %_ZL17stbi__malloc_mad3iiii.exit.thread.i ], [ null, %1899 ], [ null, %1852 ], [ null, %2758 ], [ %.0254.i, %2764 ], [ %.0254.i, %2761 ] +_ZL14stbi__bmp_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit: ; preds = %1852, %1899, %_ZL17stbi__malloc_mad3iiii.exit.thread.i, %1911, %2036, %2349, %2759, %2762, %2765 + %.0.i = phi ptr [ null, %1911 ], [ null, %2036 ], [ null, %2349 ], [ null, %_ZL17stbi__malloc_mad3iiii.exit.thread.i ], [ null, %1899 ], [ null, %1852 ], [ null, %2759 ], [ %.0254.i, %2765 ], [ %.0254.i, %2762 ] call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %9) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) - br label %2812 + br label %2813 -2766: ; preds = %_ZL14stbi__bmp_testP13stbi__context.exit.thread, %_ZL14stbi__bmp_testP13stbi__context.exit - %2767 = tail call fastcc noundef i32 @_ZL14stbi__gif_testP13stbi__context(ptr noundef %0) - %.not77 = icmp eq i32 %2767, 0 - br i1 %.not77, label %2782, label %2768 +2767: ; preds = %_ZL14stbi__bmp_testP13stbi__context.exit.thread, %_ZL14stbi__bmp_testP13stbi__context.exit + %2768 = tail call fastcc noundef i32 @_ZL14stbi__gif_testP13stbi__context(ptr noundef %0) + %.not77 = icmp eq i32 %2768, 0 + br i1 %.not77, label %2783, label %2769 -2768: ; preds = %2766 +2769: ; preds = %2767 call void @llvm.lifetime.start.p0(i64 34928, ptr nonnull %8) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(34928) %8, i8 0, i64 34928, i1 false) - %2769 = call fastcc noundef ptr @_ZL19stbi__gif_load_nextP13stbi__contextP9stbi__gifPiiPh(ptr noundef %0, ptr noundef %8, ptr noundef %3, ptr noundef null) - %2770 = icmp eq ptr %2769, %0 - %.not1.i = icmp eq ptr %2769, null - %.not.i122 = or i1 %2770, %.not1.i - br i1 %.not.i122, label %_ZL14stbi__gif_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit, label %2771 - -2771: ; preds = %2768 - %2772 = load i32, ptr %8, align 8 - store i32 %2772, ptr %1, align 4 - %2773 = getelementptr inbounds i8, ptr %8, i64 4 - %2774 = load i32, ptr %2773, align 4 - store i32 %2774, ptr %2, align 4 - %2775 = and i32 %4, -5 - %or.cond.not.i = icmp eq i32 %2775, 0 - br i1 %or.cond.not.i, label %_ZL14stbi__gif_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit, label %2776 - -2776: ; preds = %2771 - %2777 = call fastcc noundef ptr @_ZL20stbi__convert_formatPhiijj(ptr noundef nonnull %2769, i32 noundef 4, i32 noundef %4, i32 noundef %2772, i32 noundef %2774) + %2770 = call fastcc noundef ptr @_ZL19stbi__gif_load_nextP13stbi__contextP9stbi__gifPiiPh(ptr noundef %0, ptr noundef %8, ptr noundef %3, ptr noundef null) + %2771 = icmp eq ptr %2770, %0 + %.not1.i = icmp eq ptr %2770, null + %.not.i122 = or i1 %2771, %.not1.i + br i1 %.not.i122, label %_ZL14stbi__gif_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit, label %2772 + +2772: ; preds = %2769 + %2773 = load i32, ptr %8, align 8 + store i32 %2773, ptr %1, align 4 + %2774 = getelementptr inbounds i8, ptr %8, i64 4 + %2775 = load i32, ptr %2774, align 4 + store i32 %2775, ptr %2, align 4 + %2776 = and i32 %4, -5 + %or.cond.not.i = icmp eq i32 %2776, 0 + br i1 %or.cond.not.i, label %_ZL14stbi__gif_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit, label %2777 + +2777: ; preds = %2772 + %2778 = call fastcc noundef ptr @_ZL20stbi__convert_formatPhiijj(ptr noundef nonnull %2770, i32 noundef 4, i32 noundef %4, i32 noundef %2773, i32 noundef %2775) br label %_ZL14stbi__gif_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit -_ZL14stbi__gif_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit: ; preds = %2768, %2771, %2776 - %.0.i123 = phi ptr [ %2777, %2776 ], [ %2769, %2771 ], [ null, %2768 ] - %2778 = getelementptr inbounds i8, ptr %8, i64 24 - %2779 = load ptr, ptr %2778, align 8 - call void @free(ptr noundef %2779) #54 - %2780 = getelementptr inbounds i8, ptr %8, i64 16 - %2781 = load ptr, ptr %2780, align 8 - call void @free(ptr noundef %2781) #54 +_ZL14stbi__gif_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit: ; preds = %2769, %2772, %2777 + %.0.i123 = phi ptr [ %2778, %2777 ], [ %2770, %2772 ], [ null, %2769 ] + %2779 = getelementptr inbounds i8, ptr %8, i64 24 + %2780 = load ptr, ptr %2779, align 8 + call void @free(ptr noundef %2780) #54 + %2781 = getelementptr inbounds i8, ptr %8, i64 16 + %2782 = load ptr, ptr %2781, align 8 + call void @free(ptr noundef %2782) #54 call void @llvm.lifetime.end.p0(i64 34928, ptr nonnull %8) - br label %2812 - -2782: ; preds = %2766 - %2783 = tail call fastcc noundef i32 @_ZL13stbi__get32beP13stbi__context(ptr noundef nonnull %0) - %.not133 = icmp eq i32 %2783, 943870035 - %2784 = load ptr, ptr %27, align 8 - store ptr %2784, ptr %29, align 8 - %2785 = load ptr, ptr %30, align 8 - store ptr %2785, ptr %32, align 8 - br i1 %.not133, label %2786, label %2788 - -2786: ; preds = %2782 - %2787 = tail call fastcc noundef ptr @_ZL14stbi__psd_loadP13stbi__contextPiS1_S1_iP17stbi__result_infoi(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, ptr noundef %5, i32 noundef %6) - br label %2812 - -2788: ; preds = %2782 - %2789 = tail call fastcc noundef i32 @_ZL14stbi__pic_testP13stbi__context(ptr noundef %0) - %.not79 = icmp eq i32 %2789, 0 - br i1 %.not79, label %2792, label %2790 - -2790: ; preds = %2788 - %2791 = tail call fastcc noundef ptr @_ZL14stbi__pic_loadP13stbi__contextPiS1_S1_iP17stbi__result_info(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) - br label %2812 - -2792: ; preds = %2788 - %2793 = tail call fastcc noundef i32 @_ZL14stbi__pnm_testP13stbi__context(ptr noundef %0) - %.not80 = icmp eq i32 %2793, 0 - br i1 %.not80, label %2796, label %2794 - -2794: ; preds = %2792 - %2795 = tail call fastcc noundef ptr @_ZL14stbi__pnm_loadP13stbi__contextPiS1_S1_iP17stbi__result_info(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) - br label %2812 - -2796: ; preds = %2792 - %2797 = tail call fastcc noundef i32 @_ZL14stbi__hdr_testP13stbi__context(ptr noundef %0) - %.not81 = icmp eq i32 %2797, 0 - br i1 %.not81, label %2807, label %2798 - -2798: ; preds = %2796 - %2799 = tail call fastcc noundef ptr @_ZL14stbi__hdr_loadP13stbi__contextPiS1_S1_iP17stbi__result_info(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) - %2800 = load i32, ptr %1, align 4 - %2801 = load i32, ptr %2, align 4 + br label %2813 + +2783: ; preds = %2767 + %2784 = tail call fastcc noundef i32 @_ZL13stbi__get32beP13stbi__context(ptr noundef nonnull %0) + %.not133 = icmp eq i32 %2784, 943870035 + %2785 = load ptr, ptr %27, align 8 + store ptr %2785, ptr %29, align 8 + %2786 = load ptr, ptr %30, align 8 + store ptr %2786, ptr %32, align 8 + br i1 %.not133, label %2787, label %2789 + +2787: ; preds = %2783 + %2788 = tail call fastcc noundef ptr @_ZL14stbi__psd_loadP13stbi__contextPiS1_S1_iP17stbi__result_infoi(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, ptr noundef %5, i32 noundef %6) + br label %2813 + +2789: ; preds = %2783 + %2790 = tail call fastcc noundef i32 @_ZL14stbi__pic_testP13stbi__context(ptr noundef %0) + %.not79 = icmp eq i32 %2790, 0 + br i1 %.not79, label %2793, label %2791 + +2791: ; preds = %2789 + %2792 = tail call fastcc noundef ptr @_ZL14stbi__pic_loadP13stbi__contextPiS1_S1_iP17stbi__result_info(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) + br label %2813 + +2793: ; preds = %2789 + %2794 = tail call fastcc noundef i32 @_ZL14stbi__pnm_testP13stbi__context(ptr noundef %0) + %.not80 = icmp eq i32 %2794, 0 + br i1 %.not80, label %2797, label %2795 + +2795: ; preds = %2793 + %2796 = tail call fastcc noundef ptr @_ZL14stbi__pnm_loadP13stbi__contextPiS1_S1_iP17stbi__result_info(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) + br label %2813 + +2797: ; preds = %2793 + %2798 = tail call fastcc noundef i32 @_ZL14stbi__hdr_testP13stbi__context(ptr noundef %0) + %.not81 = icmp eq i32 %2798, 0 + br i1 %.not81, label %2808, label %2799 + +2799: ; preds = %2797 + %2800 = tail call fastcc noundef ptr @_ZL14stbi__hdr_loadP13stbi__contextPiS1_S1_iP17stbi__result_info(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) + %2801 = load i32, ptr %1, align 4 + %2802 = load i32, ptr %2, align 4 %.not83 = icmp eq i32 %4, 0 - br i1 %.not83, label %2802, label %2804 + br i1 %.not83, label %2803, label %2805 -2802: ; preds = %2798 - %2803 = load i32, ptr %3, align 4 - br label %2804 +2803: ; preds = %2799 + %2804 = load i32, ptr %3, align 4 + br label %2805 -2804: ; preds = %2798, %2802 - %2805 = phi i32 [ %2803, %2802 ], [ %4, %2798 ] - %2806 = tail call fastcc noundef ptr @_ZL16stbi__hdr_to_ldrPfiii(ptr noundef %2799, i32 noundef %2800, i32 noundef %2801, i32 noundef %2805) - br label %2812 +2805: ; preds = %2799, %2803 + %2806 = phi i32 [ %2804, %2803 ], [ %4, %2799 ] + %2807 = tail call fastcc noundef ptr @_ZL16stbi__hdr_to_ldrPfiii(ptr noundef %2800, i32 noundef %2801, i32 noundef %2802, i32 noundef %2806) + br label %2813 -2807: ; preds = %2796 - %2808 = tail call fastcc noundef i32 @_ZL14stbi__tga_testP13stbi__context(ptr noundef %0) - %.not82 = icmp eq i32 %2808, 0 - br i1 %.not82, label %2811, label %2809 +2808: ; preds = %2797 + %2809 = tail call fastcc noundef i32 @_ZL14stbi__tga_testP13stbi__context(ptr noundef %0) + %.not82 = icmp eq i32 %2809, 0 + br i1 %.not82, label %2812, label %2810 -2809: ; preds = %2807 - %2810 = tail call fastcc noundef ptr @_ZL14stbi__tga_loadP13stbi__contextPiS1_S1_iP17stbi__result_info(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) - br label %2812 +2810: ; preds = %2808 + %2811 = tail call fastcc noundef ptr @_ZL14stbi__tga_loadP13stbi__contextPiS1_S1_iP17stbi__result_info(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) + br label %2813 -2811: ; preds = %2807 +2812: ; preds = %2808 store ptr @.str.8, ptr @_ZL22stbi__g_failure_reason, align 8 - br label %2812 + br label %2813 -2812: ; preds = %2811, %2809, %2804, %2794, %2790, %2786, %_ZL14stbi__gif_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit, %_ZL14stbi__bmp_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit, %_ZL14stbi__png_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit, %_ZL15stbi__jpeg_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit - %.0 = phi ptr [ %.0.i.i, %_ZL15stbi__jpeg_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit ], [ %.043.i.i, %_ZL14stbi__png_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit ], [ %.0.i, %_ZL14stbi__bmp_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit ], [ %.0.i123, %_ZL14stbi__gif_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit ], [ %2787, %2786 ], [ %2791, %2790 ], [ %2795, %2794 ], [ %2806, %2804 ], [ %2810, %2809 ], [ null, %2811 ] +2813: ; preds = %2812, %2810, %2805, %2795, %2791, %2787, %_ZL14stbi__gif_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit, %_ZL14stbi__bmp_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit, %_ZL14stbi__png_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit, %_ZL15stbi__jpeg_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit + %.0 = phi ptr [ %.0.i.i, %_ZL15stbi__jpeg_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit ], [ %.043.i.i, %_ZL14stbi__png_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit ], [ %.0.i, %_ZL14stbi__bmp_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit ], [ %.0.i123, %_ZL14stbi__gif_loadP13stbi__contextPiS1_S1_iP17stbi__result_info.exit ], [ %2788, %2787 ], [ %2792, %2791 ], [ %2796, %2795 ], [ %2807, %2805 ], [ %2811, %2810 ], [ null, %2812 ] ret ptr %.0 } diff --git a/bench/miniaudio/optimized/unity.c.ll b/bench/miniaudio/optimized/unity.c.ll index cd63853aaa1..02c593baa44 100644 --- a/bench/miniaudio/optimized/unity.c.ll +++ b/bench/miniaudio/optimized/unity.c.ll @@ -3007,12 +3007,12 @@ if.end3: ; preds = %if.end.i %add.i.i = zext i1 %cmp.i16.not.i to i32 %spec.select.i = add nuw nsw i32 %div.i15.i, %add.i.i %1 = shl nuw nsw i32 %spec.select.i, 2 - %narrow.i = add nuw nsw i32 %1, 7 + %narrow.i = add nuw nsw i32 %1, 4 %2 = and i32 %narrow.i, 2147483640 %and.i = zext nneg i32 %2 to i64 %conv10.i = zext i32 %0 to i64 %mul11.i = shl nuw nsw i64 %conv10.i, 2 - %add12.i = add nuw nsw i64 %mul11.i, 7 + %add12.i = add nuw nsw i64 %mul11.i, 4 %and13.i = and i64 %add12.i, 34359738360 %add15.i = add nuw nsw i64 %and13.i, %and.i store i64 %add15.i, ptr %pHeapSizeInBytes, align 8 @@ -3048,12 +3048,12 @@ if.end6: ; preds = %if.end.i %add.i.i = zext i1 %cmp.i16.not.i to i32 %spec.select.i = add nuw nsw i32 %div.i15.i, %add.i.i %1 = shl nuw nsw i32 %spec.select.i, 2 - %narrow.i = add nuw nsw i32 %1, 7 + %narrow.i = add nuw nsw i32 %1, 4 %2 = and i32 %narrow.i, 2147483640 %and.i = zext nneg i32 %2 to i64 %conv10.i = zext i32 %0 to i64 %mul11.i = shl nuw nsw i64 %conv10.i, 2 - %add12.i = add nuw nsw i64 %mul11.i, 7 + %add12.i = add nuw nsw i64 %mul11.i, 4 %and13.i = and i64 %add12.i, 34359738360 %add15.i = add nuw nsw i64 %and13.i, %and.i %_pHeap = getelementptr inbounds i8, ptr %pAllocator, i64 32 @@ -3098,12 +3098,12 @@ if.end: ; preds = %if.end.i.i %add.i.i.i = zext i1 %cmp.i16.not.i.i to i32 %spec.select.i.i = add nuw nsw i32 %div.i15.i.i, %add.i.i.i %1 = shl nuw nsw i32 %spec.select.i.i, 2 - %narrow.i.i = add nuw nsw i32 %1, 7 + %narrow.i.i = add nuw nsw i32 %1, 4 %2 = and i32 %narrow.i.i, 2147483640 %and.i.i = zext nneg i32 %2 to i64 %conv10.i.i = zext i32 %0 to i64 %mul11.i.i = shl nuw nsw i64 %conv10.i.i, 2 - %add12.i.i = add nuw nsw i64 %mul11.i.i, 7 + %add12.i.i = add nuw nsw i64 %mul11.i.i, 4 %and13.i.i = and i64 %add12.i.i, 34359738360 %add15.i.i = add nuw nsw i64 %and13.i.i, %and.i.i %cmp1.not = icmp eq i64 %add15.i.i, 0 @@ -3158,12 +3158,12 @@ if.end6.i: ; preds = %if.end.i.i11 %add.i.i.i16 = zext i1 %cmp.i16.not.i.i15 to i32 %spec.select.i.i17 = add nuw nsw i32 %div.i15.i.i13, %add.i.i.i16 %6 = shl nuw nsw i32 %spec.select.i.i17, 2 - %narrow.i.i18 = add nuw nsw i32 %6, 7 + %narrow.i.i18 = add nuw nsw i32 %6, 4 %7 = and i32 %narrow.i.i18, 2147483640 %and.i.i19 = zext nneg i32 %7 to i64 %conv10.i.i20 = zext i32 %5 to i64 %mul11.i.i21 = shl nuw nsw i64 %conv10.i.i20, 2 - %add12.i.i22 = add nuw nsw i64 %mul11.i.i21, 7 + %add12.i.i22 = add nuw nsw i64 %mul11.i.i21, 4 %and13.i.i23 = and i64 %add12.i.i22, 34359738360 %add15.i.i24 = add nuw nsw i64 %and13.i.i23, %and.i.i19 %_pHeap.i = getelementptr inbounds i8, ptr %pAllocator, i64 32 @@ -3490,12 +3490,12 @@ if.end3: ; preds = %if.end.i %add.i.i.i.i = zext i1 %cmp.i16.not.i.i.i to i32 %spec.select.i.i.i = add nuw nsw i32 %div.i15.i.i.i, %add.i.i.i.i %1 = shl nuw nsw i32 %spec.select.i.i.i, 2 - %narrow.i.i.i = add nuw nsw i32 %1, 7 + %narrow.i.i.i = add nuw nsw i32 %1, 4 %2 = and i32 %narrow.i.i.i, 2147483640 %and.i.i.i = zext nneg i32 %2 to i64 %conv10.i.i.i = zext i32 %0 to i64 %mul11.i.i.i = shl nuw nsw i64 %conv10.i.i.i, 2 - %add12.i.i.i = add nuw nsw i64 %mul11.i.i.i, 7 + %add12.i.i.i = add nuw nsw i64 %mul11.i.i.i, 4 %and13.i.i.i = and i64 %add12.i.i.i, 34359738360 %mul.i = mul nuw nsw i64 %conv10.i.i.i, 104 %add15.i.i.i = add nuw nsw i64 %and13.i.i.i, %mul.i @@ -3532,12 +3532,12 @@ if.end3: ; preds = %if.end.i %add.i.i.i.i = zext i1 %cmp.i16.not.i.i.i to i32 %spec.select.i.i.i = add nuw nsw i32 %div.i15.i.i.i, %add.i.i.i.i %1 = shl nuw nsw i32 %spec.select.i.i.i, 2 - %narrow.i.i.i = add nuw nsw i32 %1, 7 + %narrow.i.i.i = add nuw nsw i32 %1, 4 %2 = and i32 %narrow.i.i.i, 2147483640 %and.i.i.i = zext nneg i32 %2 to i64 %conv10.i.i.i = zext i32 %0 to i64 %mul11.i.i.i = shl nuw nsw i64 %conv10.i.i.i, 2 - %add12.i.i.i = add nuw nsw i64 %mul11.i.i.i, 7 + %add12.i.i.i = add nuw nsw i64 %mul11.i.i.i, 4 %and13.i.i.i = and i64 %add12.i.i.i, 34359738360 %add15.i.i.i = add nuw nsw i64 %and13.i.i.i, %and.i.i.i %_pHeap = getelementptr inbounds i8, ptr %pQueue, i64 176 @@ -3574,12 +3574,12 @@ if.end6.i: ; preds = %ma_zero_memory_defa %add.i.i.i = zext i1 %cmp.i16.not.i.i to i32 %spec.select.i.i = add nuw nsw i32 %div.i15.i.i, %add.i.i.i %6 = shl nuw nsw i32 %spec.select.i.i, 2 - %narrow.i.i = add nuw nsw i32 %6, 7 + %narrow.i.i = add nuw nsw i32 %6, 4 %7 = and i32 %narrow.i.i, 2147483640 %and.i.i = zext nneg i32 %7 to i64 %conv10.i.i = zext i32 %5 to i64 %mul11.i.i = shl nuw nsw i64 %conv10.i.i, 2 - %add12.i.i = add nuw nsw i64 %mul11.i.i, 7 + %add12.i.i = add nuw nsw i64 %mul11.i.i, 4 %and13.i.i = and i64 %add12.i.i, 34359738360 %add15.i.i = add nuw nsw i64 %and13.i.i, %and.i.i %_pHeap.i = getelementptr inbounds i8, ptr %pQueue, i64 152 @@ -3753,12 +3753,12 @@ if.end: ; preds = %if.end.i.i %add.i.i.i.i.i = zext i1 %cmp.i16.not.i.i.i.i to i32 %spec.select.i.i.i.i = add nuw nsw i32 %div.i15.i.i.i.i, %add.i.i.i.i.i %1 = shl nuw nsw i32 %spec.select.i.i.i.i, 2 - %narrow.i.i.i.i = add nuw nsw i32 %1, 7 + %narrow.i.i.i.i = add nuw nsw i32 %1, 4 %2 = and i32 %narrow.i.i.i.i, 2147483640 %and.i.i.i.i = zext nneg i32 %2 to i64 %conv10.i.i.i.i = zext i32 %0 to i64 %mul11.i.i.i.i = shl nuw nsw i64 %conv10.i.i.i.i, 2 - %add12.i.i.i.i = add nuw nsw i64 %mul11.i.i.i.i, 7 + %add12.i.i.i.i = add nuw nsw i64 %mul11.i.i.i.i, 4 %and13.i.i.i.i = and i64 %add12.i.i.i.i, 34359738360 %mul.i.i = mul nuw nsw i64 %conv10.i.i.i.i, 104 %add15.i.i.i.i = add nuw nsw i64 %and13.i.i.i.i, %mul.i.i @@ -19927,7 +19927,7 @@ if.end.i: ; preds = %entry if.end3: ; preds = %if.end.i %conv.i = zext i32 %0 to i64 %mul.i = shl nuw nsw i64 %conv.i, 2 - %add8.i = add nuw nsw i64 %mul.i, 7 + %add8.i = add nuw nsw i64 %mul.i, 4 %and.i = and i64 %add8.i, 34359738360 store i64 %and.i, ptr %pHeapSizeInBytes, align 8 br label %return @@ -19957,7 +19957,7 @@ if.end.i: ; preds = %if.then2.i10 if.end3: ; preds = %if.end.i %conv.i = zext i32 %0 to i64 %mul.i = shl nuw nsw i64 %conv.i, 2 - %add8.i = add nuw nsw i64 %mul.i, 7 + %add8.i = add nuw nsw i64 %mul.i, 4 %and.i = and i64 %add8.i, 34359738360 %_pHeap = getelementptr inbounds i8, ptr %pLPF, i64 24 store ptr %pHeap, ptr %_pHeap, align 8 @@ -20115,7 +20115,7 @@ if.end.i.i: ; preds = %entry if.end: ; preds = %if.end.i.i %conv.i.i = zext i32 %0 to i64 %mul.i.i = shl nuw nsw i64 %conv.i.i, 2 - %add8.i.i = add nuw nsw i64 %mul.i.i, 7 + %add8.i.i = add nuw nsw i64 %mul.i.i, 4 %and.i.i = and i64 %add8.i.i, 34359738360 %cmp1.not = icmp eq i64 %and.i.i, 0 br i1 %cmp1.not, label %if.end7, label %if.then2 @@ -20158,7 +20158,7 @@ if.end.i.i10: ; preds = %if.end7 if.end3.i12: ; preds = %if.end.i.i10 %conv.i.i13 = zext i32 %3 to i64 %mul.i.i14 = shl nuw nsw i64 %conv.i.i13, 2 - %add8.i.i15 = add nuw nsw i64 %mul.i.i14, 7 + %add8.i.i15 = add nuw nsw i64 %mul.i.i14, 4 %and.i.i16 = and i64 %add8.i.i15, 34359738360 %_pHeap.i = getelementptr inbounds i8, ptr %pLPF, i64 24 store ptr %pHeap.0, ptr %_pHeap.i, align 8 @@ -20994,7 +20994,7 @@ if.end6.i: ; preds = %if.end3.i %cmp947.not.i = icmp eq i32 %rem.i.i, 0 %conv.i.i.i = zext i32 %0 to i64 %mul.i.i.i = shl nuw nsw i64 %conv.i.i.i, 2 - %add8.i.i.i = add nuw nsw i64 %mul.i.i.i, 7 + %add8.i.i.i = add nuw nsw i64 %mul.i.i.i, 4 %and.i.i.i = and i64 %add8.i.i.i, 34359738360 %add.i = add nuw nsw i64 %and.i.i.i, 40 %2 = select i1 %cmp947.not.i, i64 0, i64 %add.i @@ -21143,7 +21143,7 @@ if.end6.i: ; preds = %if.end.i %cmp947.not.i = icmp eq i32 %rem.i, 0 %conv.i.i.i = zext i32 %7 to i64 %mul.i.i.i = shl nuw nsw i64 %conv.i.i.i, 2 - %add8.i.i.i = add nuw nsw i64 %mul.i.i.i, 7 + %add8.i.i.i = add nuw nsw i64 %mul.i.i.i, 4 %and.i.i.i = and i64 %add8.i.i.i, 34359738360 %add.i = add nuw nsw i64 %and.i.i.i, 40 %8 = select i1 %cmp947.not.i, i64 0, i64 %add.i @@ -21328,7 +21328,7 @@ if.end3.i90: ; preds = %if.then49 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(40) %34, i8 0, i64 40, i1 false) %conv.i.i91 = zext i32 %19 to i64 %mul.i.i92 = shl nuw nsw i64 %conv.i.i91, 2 - %add8.i.i93 = add nuw nsw i64 %mul.i.i92, 7 + %add8.i.i93 = add nuw nsw i64 %mul.i.i92, 4 %and.i.i94 = and i64 %add8.i.i93, 34359738360 %_pHeap.i = getelementptr inbounds i8, ptr %34, i64 24 store ptr %17, ptr %_pHeap.i, align 8 @@ -21582,7 +21582,7 @@ if.end6.i.i: ; preds = %if.end3.i.i %cmp947.not.i.i = icmp eq i32 %rem.i.i.i, 0 %conv.i.i.i.i = zext i32 %0 to i64 %mul.i.i.i.i = shl nuw nsw i64 %conv.i.i.i.i, 2 - %add8.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i, 7 + %add8.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i, 4 %and.i.i.i.i = and i64 %add8.i.i.i.i, 34359738360 %add.i.i = add nuw nsw i64 %and.i.i.i.i, 40 %2 = select i1 %cmp947.not.i.i, i64 0, i64 %add.i.i @@ -22548,7 +22548,7 @@ if.end.i: ; preds = %entry if.end3: ; preds = %if.end.i %conv.i = zext i32 %0 to i64 %mul.i = shl nuw nsw i64 %conv.i, 2 - %add8.i = add nuw nsw i64 %mul.i, 7 + %add8.i = add nuw nsw i64 %mul.i, 4 %and.i = and i64 %add8.i, 34359738360 store i64 %and.i, ptr %pHeapSizeInBytes, align 8 br label %return @@ -22578,7 +22578,7 @@ if.end.i: ; preds = %if.then2.i10 if.end3: ; preds = %if.end.i %conv.i = zext i32 %0 to i64 %mul.i = shl nuw nsw i64 %conv.i, 2 - %add8.i = add nuw nsw i64 %mul.i, 7 + %add8.i = add nuw nsw i64 %mul.i, 4 %and.i = and i64 %add8.i, 34359738360 %_pHeap = getelementptr inbounds i8, ptr %pLPF, i64 24 store ptr %pHeap, ptr %_pHeap, align 8 @@ -22736,7 +22736,7 @@ if.end.i.i: ; preds = %entry if.end: ; preds = %if.end.i.i %conv.i.i = zext i32 %0 to i64 %mul.i.i = shl nuw nsw i64 %conv.i.i, 2 - %add8.i.i = add nuw nsw i64 %mul.i.i, 7 + %add8.i.i = add nuw nsw i64 %mul.i.i, 4 %and.i.i = and i64 %add8.i.i, 34359738360 %cmp1.not = icmp eq i64 %and.i.i, 0 br i1 %cmp1.not, label %if.end7, label %if.then2 @@ -22779,7 +22779,7 @@ if.end.i.i10: ; preds = %if.end7 if.end3.i12: ; preds = %if.end.i.i10 %conv.i.i13 = zext i32 %3 to i64 %mul.i.i14 = shl nuw nsw i64 %conv.i.i13, 2 - %add8.i.i15 = add nuw nsw i64 %mul.i.i14, 7 + %add8.i.i15 = add nuw nsw i64 %mul.i.i14, 4 %and.i.i16 = and i64 %add8.i.i15, 34359738360 %_pHeap.i = getelementptr inbounds i8, ptr %pLPF, i64 24 store ptr %pHeap.0, ptr %_pHeap.i, align 8 @@ -23563,7 +23563,7 @@ if.end6.i: ; preds = %if.end3.i %cmp947.not.i = icmp eq i32 %rem.i.i, 0 %conv.i.i.i = zext i32 %0 to i64 %mul.i.i.i = shl nuw nsw i64 %conv.i.i.i, 2 - %add8.i.i.i = add nuw nsw i64 %mul.i.i.i, 7 + %add8.i.i.i = add nuw nsw i64 %mul.i.i.i, 4 %and.i.i.i = and i64 %add8.i.i.i, 34359738360 %add.i = add nuw nsw i64 %and.i.i.i, 40 %2 = select i1 %cmp947.not.i, i64 0, i64 %add.i @@ -23712,7 +23712,7 @@ if.end6.i: ; preds = %if.end.i %cmp947.not.i = icmp eq i32 %rem.i, 0 %conv.i.i.i = zext i32 %7 to i64 %mul.i.i.i = shl nuw nsw i64 %conv.i.i.i, 2 - %add8.i.i.i = add nuw nsw i64 %mul.i.i.i, 7 + %add8.i.i.i = add nuw nsw i64 %mul.i.i.i, 4 %and.i.i.i = and i64 %add8.i.i.i, 34359738360 %add.i = add nuw nsw i64 %and.i.i.i, 40 %8 = select i1 %cmp947.not.i, i64 0, i64 %add.i @@ -23897,7 +23897,7 @@ if.end3.i90: ; preds = %if.then49 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(40) %34, i8 0, i64 40, i1 false) %conv.i.i91 = zext i32 %19 to i64 %mul.i.i92 = shl nuw nsw i64 %conv.i.i91, 2 - %add8.i.i93 = add nuw nsw i64 %mul.i.i92, 7 + %add8.i.i93 = add nuw nsw i64 %mul.i.i92, 4 %and.i.i94 = and i64 %add8.i.i93, 34359738360 %_pHeap.i = getelementptr inbounds i8, ptr %34, i64 24 store ptr %17, ptr %_pHeap.i, align 8 @@ -24151,7 +24151,7 @@ if.end6.i.i: ; preds = %if.end3.i.i %cmp947.not.i.i = icmp eq i32 %rem.i.i.i, 0 %conv.i.i.i.i = zext i32 %0 to i64 %mul.i.i.i.i = shl nuw nsw i64 %conv.i.i.i.i, 2 - %add8.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i, 7 + %add8.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i, 4 %and.i.i.i.i = and i64 %add8.i.i.i.i, 34359738360 %add.i.i = add nuw nsw i64 %and.i.i.i.i, 40 %2 = select i1 %cmp947.not.i.i, i64 0, i64 %add.i.i @@ -31765,7 +31765,7 @@ if.end3.i: ; preds = %lor.lhs.false.i.i %3 = select i1 %cmp4.not.i, i64 0, i64 %and.i %conv12.i = zext i32 %1 to i64 %mul13.i = shl nuw nsw i64 %conv12.i, 2 - %add14.i = add nuw nsw i64 %mul13.i, 7 + %add14.i = add nuw nsw i64 %mul13.i, 4 %and15.i = and i64 %add14.i, 34359738360 %mul15.i.i.i = shl nuw nsw i64 %conv12.i, 3 %add17.i = add nuw nsw i64 %and15.i, %mul15.i.i.i @@ -31813,7 +31813,7 @@ if.end3.i: ; preds = %lor.lhs.false.i.i %3 = select i1 %cmp4.not.i, i64 0, i64 %and.i %conv12.i = zext i32 %1 to i64 %mul13.i = shl nuw nsw i64 %conv12.i, 2 - %add14.i = add nuw nsw i64 %mul13.i, 7 + %add14.i = add nuw nsw i64 %mul13.i, 4 %and15.i = and i64 %add14.i, 34359738360 %add17.i = add nuw nsw i64 %3, %and15.i %mul15.i.i.i = shl nuw nsw i64 %conv12.i, 3 @@ -32154,7 +32154,7 @@ if.end: ; preds = %lor.lhs.false.i.i.i %3 = select i1 %cmp4.not.i.i, i64 0, i64 %and.i.i %conv12.i.i = zext i32 %1 to i64 %mul13.i.i = shl nuw nsw i64 %conv12.i.i, 2 - %add14.i.i = add nuw nsw i64 %mul13.i.i, 7 + %add14.i.i = add nuw nsw i64 %mul13.i.i, 4 %and15.i.i = and i64 %add14.i.i, 34359738360 %mul15.i.i.i.i = shl nuw nsw i64 %conv12.i.i, 3 %add17.i.i = add nuw nsw i64 %and15.i.i, %mul15.i.i.i.i @@ -35747,14 +35747,14 @@ if.end6.i.i.i: ; preds = %if.end5.i %..i = select i1 %cmp11.i, i64 2, i64 1 %mul17.i = shl nuw nsw i64 %conv.i, %..i %storemerge30.i = shl nuw nsw i64 %mul17.i, 1 - %add39.i = add nuw nsw i64 %storemerge30.i, 7 + %add39.i = add nuw nsw i64 %storemerge30.i, 4 %lpfOrder.i = getelementptr inbounds i8, ptr %pConfig, i64 16 %2 = load i32, ptr %lpfOrder.i, align 8 %cond.i.i = tail call i32 @llvm.umin.i32(i32 %2, i32 8) %rem.i.i.i.i = and i32 %cond.i.i, 1 %cmp947.not.i.i.i = icmp eq i32 %rem.i.i.i.i, 0 %mul.i.i.i.i.i = shl nuw nsw i64 %conv.i, 2 - %add8.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 7 + %add8.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 4 %and.i.i.i.i.i = and i64 %add8.i.i.i.i.i, 34359738360 %add.i.i.i = add nuw nsw i64 %and.i.i.i.i.i, 40 %3 = select i1 %cmp947.not.i.i.i, i64 0, i64 %add.i.i.i @@ -35821,7 +35821,7 @@ if.end6.i.i.i: ; preds = %if.end5.i %x1Offset.i = getelementptr inbounds i8, ptr %heapLayout, i64 16 store i64 %mul17.i, ptr %x1Offset.i, align 8 %storemerge30.i = shl nuw nsw i64 %mul17.i, 1 - %add39.i = add nuw nsw i64 %storemerge30.i, 7 + %add39.i = add nuw nsw i64 %storemerge30.i, 6 %and.i = and i64 %add39.i, 137438953464 %lpfOffset.i = getelementptr inbounds i8, ptr %heapLayout, i64 24 store i64 %and.i, ptr %lpfOffset.i, align 8 @@ -35831,7 +35831,7 @@ if.end6.i.i.i: ; preds = %if.end5.i %rem.i.i.i.i = and i32 %cond.i.i, 1 %cmp947.not.i.i.i = icmp eq i32 %rem.i.i.i.i, 0 %mul.i.i.i.i.i = shl nuw nsw i64 %conv.i, 2 - %add8.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 7 + %add8.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 4 %and.i.i.i.i.i = and i64 %add8.i.i.i.i.i, 34359738360 %add.i.i.i = add nuw nsw i64 %and.i.i.i.i.i, 40 %4 = select i1 %cmp947.not.i.i.i, i64 0, i64 %add.i.i.i @@ -36032,14 +36032,14 @@ if.end6.i.i.i.i: ; preds = %if.end5.i.i %..i.i = select i1 %cmp11.i.i, i64 2, i64 1 %mul17.i.i = shl nuw nsw i64 %conv.i.i, %..i.i %storemerge30.i.i = shl nuw nsw i64 %mul17.i.i, 1 - %add39.i.i = add nuw nsw i64 %storemerge30.i.i, 7 + %add39.i.i = add nuw nsw i64 %storemerge30.i.i, 4 %lpfOrder.i.i = getelementptr inbounds i8, ptr %pConfig, i64 16 %2 = load i32, ptr %lpfOrder.i.i, align 8 %cond.i.i.i = tail call i32 @llvm.umin.i32(i32 %2, i32 8) %rem.i.i.i.i.i = and i32 %cond.i.i.i, 1 %cmp947.not.i.i.i.i = icmp eq i32 %rem.i.i.i.i.i, 0 %mul.i.i.i.i.i.i = shl nuw nsw i64 %conv.i.i, 2 - %add8.i.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i.i, 7 + %add8.i.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i.i, 4 %and.i.i.i.i.i.i = and i64 %add8.i.i.i.i.i.i, 34359738360 %add.i.i.i.i = add nuw nsw i64 %and.i.i.i.i.i.i, 40 %3 = select i1 %cmp947.not.i.i.i.i, i64 0, i64 %add.i.i.i.i @@ -70681,7 +70681,7 @@ if.then33.i: ; preds = %if.end3.i if.end3: ; preds = %if.end3.i, %if.end29.i.thread, %if.then33.i %2 = phi i64 [ %mul38.i, %if.then33.i ], [ %add28.i, %if.end29.i.thread ], [ 0, %if.end3.i ] - %add43.i = add nuw nsw i64 %2, 7 + %add43.i = add nuw nsw i64 %2, 4 %and.i = and i64 %add43.i, 9223372036854775800 store i64 %and.i, ptr %pHeapSizeInBytes, align 8 br label %return @@ -70737,7 +70737,7 @@ if.end3: ; preds = %if.end29.i.thread, %heapLayout.sroa.12.056 = phi i64 [ 0, %if.then33.i ], [ %add21.i, %if.end29.i.thread ] %heapLayout.sroa.10.055 = phi i64 [ 0, %if.then33.i ], [ %add14.i, %if.end29.i.thread ] %2 = phi i64 [ %mul38.i, %if.then33.i ], [ %add28.i, %if.end29.i.thread ] - %add43.i = add nuw nsw i64 %2, 7 + %add43.i = add nuw nsw i64 %2, 4 %and.i = and i64 %add43.i, 9223372036854775800 %_pHeap = getelementptr inbounds i8, ptr %pNoise, i64 136 store ptr %pHeap, ptr %_pHeap, align 8 @@ -70879,7 +70879,7 @@ if.then33.i.i: ; preds = %if.end3.i.i if.end: ; preds = %if.then33.i.i, %if.end29.i.thread.i %2 = phi i64 [ %mul38.i.i, %if.then33.i.i ], [ %add28.i.i, %if.end29.i.thread.i ] - %add43.i.i = add nuw nsw i64 %2, 7 + %add43.i.i = add nuw nsw i64 %2, 4 %and.i.i = and i64 %add43.i.i, 9223372036854775800 %cmp1.not = icmp eq i64 %and.i.i, 0 br i1 %cmp1.not, label %if.end7, label %if.then2 @@ -82962,7 +82962,7 @@ if.end44: ; preds = %if.end30 %12 = select i1 %cmp38.not, i64 8, i64 0 %conv12.i.i = zext i32 %cond16 to i64 %mul13.i.i = shl nuw nsw i64 %conv12.i.i, 2 - %add14.i.i = add nuw nsw i64 %mul13.i.i, 7 + %add14.i.i = add nuw nsw i64 %mul13.i.i, 4 %and15.i.i = and i64 %add14.i.i, 34359738360 %mul15.i.i.i.i = shl nuw nsw i64 %conv12.i.i, 3 %spatializerOffset = getelementptr inbounds i8, ptr %pHeapLayout, i64 24 @@ -124397,12 +124397,12 @@ if.end6.i.i.i.i: ; preds = %if.end5.i.i %..i.i = select i1 %cmp11.i.i, i64 2, i64 1 %mul17.i.i = shl nuw nsw i64 %conv.i.i, %..i.i %storemerge30.i.i = shl nuw nsw i64 %mul17.i.i, 1 - %add39.i.i = add nuw nsw i64 %storemerge30.i.i, 7 + %add39.i.i = add nuw nsw i64 %storemerge30.i.i, 4 %cond.i.i.i = tail call i32 @llvm.umin.i32(i32 %2, i32 8) %rem.i.i.i.i.i = and i32 %cond.i.i.i, 1 %cmp947.not.i.i.i.i = icmp eq i32 %rem.i.i.i.i.i, 0 %mul.i.i.i.i.i.i = shl nuw nsw i64 %conv.i.i, 2 - %add8.i.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i.i, 7 + %add8.i.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i.i, 4 %and.i.i.i.i.i.i = and i64 %add8.i.i.i.i.i.i, 34359738360 %add.i.i.i.i = add nuw nsw i64 %and.i.i.i.i.i.i, 40 %3 = select i1 %cmp947.not.i.i.i.i, i64 0, i64 %add.i.i.i.i diff --git a/bench/nori/optimized/nanovg.c.ll b/bench/nori/optimized/nanovg.c.ll index 0bcfb759173..dd436ab716f 100644 --- a/bench/nori/optimized/nanovg.c.ll +++ b/bench/nori/optimized/nanovg.c.ll @@ -1593,7 +1593,7 @@ stbtt__GetGlyfOffset.exit: ; preds = %77 %108 = load ptr, ptr %0, align 8 %109 = getelementptr inbounds i8, ptr %108, i64 20616 %110 = load i32, ptr %109, align 8 - %111 = add nuw nsw i32 %narrow, 15 + %111 = add nuw nsw i32 %narrow, 14 %112 = and i32 %111, 2147483632 %113 = add nsw i32 %112, %110 %114 = icmp sgt i32 %113, 96000 @@ -2346,7 +2346,7 @@ stbtt__close_shape.exit396: ; preds = %349, %366, %370 %521 = load ptr, ptr %0, align 8 %522 = getelementptr inbounds i8, ptr %521, i64 20616 %523 = load i32, ptr %522, align 8 - %524 = add i32 %520, 15 + %524 = add i32 %520, 14 %525 = and i32 %524, -16 %526 = add nsw i32 %523, %525 %527 = icmp sgt i32 %526, 96000 @@ -3755,7 +3755,7 @@ define dso_local void @stbtt_Rasterize(ptr nocapture noundef readonly %0, float %27 = shl i32 %spec.select.i, 2 %28 = getelementptr inbounds i8, ptr %11, i64 20616 %29 = load i32, ptr %28, align 8 - %30 = add i32 %27, 15 + %30 = add i32 %27, 12 %31 = and i32 %30, -16 %32 = add nsw i32 %29, %31 %33 = icmp sgt i32 %32, 96000 @@ -3793,7 +3793,7 @@ fons__tmpalloc.exit.i: ; preds = %26 48: ; preds = %.preheader.split.us.i %49 = shl i32 %45, 3 %50 = load i32, ptr %28, align 8 - %51 = add i32 %49, 15 + %51 = add i32 %49, 8 %52 = and i32 %51, -16 %53 = add nsw i32 %50, %52 %54 = icmp sgt i32 %53, 96000 @@ -3953,10 +3953,10 @@ stbtt_FlattenCurves.exit: ; preds = %._crit_edge107.us.i %.not.i = icmp eq i32 %10, 0 %122 = select i1 %.not.i, float %5, float %118 %123 = mul i32 %121, 20 - %124 = add i32 %123, 35 - %125 = and i32 %124, -16 + %124 = and i32 %123, -16 + %125 = add i32 %124, 32 %126 = load i32, ptr %28, align 8 - %127 = add nsw i32 %126, %125 + %127 = add nsw i32 %125, %126 %128 = icmp sgt i32 %127, 96000 br i1 %128, label %129, label %fons__tmpalloc.exit.i23 @@ -4238,9 +4238,9 @@ stbtt__sort_edges.exit.i: ; preds = %238, %._crit_edge11 241: ; preds = %stbtt__sort_edges.exit.i %242 = shl i32 %239, 3 %243 = load i32, ptr %28, align 8 - %244 = add i32 %242, 19 - %245 = and i32 %244, -16 - %246 = add nsw i32 %243, %245 + %244 = and i32 %242, -16 + %245 = add i32 %244, 16 + %246 = add nsw i32 %245, %243 %247 = icmp sgt i32 %246, 96000 br i1 %247, label %248, label %254 @@ -8350,7 +8350,7 @@ define dso_local range(i32 0, 2) i32 @stbtt_PackFontRanges(ptr nocapture noundef ._crit_edge60.loopexit: ; preds = %.lr.ph59 %28 = mul i32 %27, 24 - %29 = add i32 %28, 15 + %29 = add i32 %28, 8 %30 = and i32 %29, -16 br label %._crit_edge60 @@ -24534,7 +24534,7 @@ define dso_local float @nvgText(ptr noundef %0, float noundef %1, float noundef br i1 %109, label %110, label %nvg__allocTempVerts.exit 110: ; preds = %50 - %111 = add nuw nsw i32 %104, 255 + %111 = add nuw nsw i32 %104, 254 %112 = and i32 %111, 2147483392 %113 = getelementptr inbounds i8, ptr %106, i64 32 %114 = load ptr, ptr %113, align 8 @@ -30710,7 +30710,7 @@ stbi__jpeg_load.exit: ; preds = %1202, %39, %.loopex call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %15) call void @free(ptr noundef nonnull %34) #57 - br label %2816 + br label %2817 1665: ; preds = %stbi__jpeg_test.exit %1666 = getelementptr inbounds i8, ptr %0, i64 48 @@ -30872,7 +30872,7 @@ stbi__get8.exit.i.i: ; preds = %stbi__refill_buffer stbi__png_load.exit: ; preds = %1700, %1720, %1728 %.043.i.i = phi ptr [ null, %1700 ], [ %.0.i.i93, %1728 ], [ null, %1720 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) - br label %2816 + br label %2817 1734: ; preds = %stbi__get8.exit.i.i store ptr @.str.52, ptr @stbi__g_failure_reason, align 8 @@ -31164,7 +31164,7 @@ stbi__bmp_test.exit.thread: ; preds = %stbi__get8.exit.i.i store ptr %1846, ptr %29, align 8 %1847 = load ptr, ptr %30, align 8 store ptr %1847, ptr %32, align 8 - br label %2766 + br label %2767 stbi__bmp_test.exit.thread129: ; preds = %stbi__get16le.exit37.i.i, %stbi__get16le.exit37.i.i, %stbi__get16le.exit37.i.i, %stbi__get16le.exit37.i.i %1848 = load ptr, ptr %27, align 8 @@ -31179,7 +31179,7 @@ stbi__bmp_test.exit: ; preds = %stbi__get16le.exit3 store ptr %1850, ptr %29, align 8 %1851 = load ptr, ptr %30, align 8 store ptr %1851, ptr %32, align 8 - br i1 %.not132, label %1852, label %2766 + br i1 %.not132, label %1852, label %2767 1852: ; preds = %stbi__bmp_test.exit.thread129, %stbi__bmp_test.exit call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %9) @@ -32929,23 +32929,24 @@ stbi__skip.exit451.i: ; preds = %2724, %2720 2733: ; preds = %.loopexit17.i %2734 = load i32, ptr %0, align 8 - %2735 = shl i32 %2730, 2 - %2736 = mul i32 %2735, %2734 - %2737 = add i32 %2736, -1 + %2735 = shl i32 %2734, 2 + %2736 = mul i32 %2735, %2730 + %2737 = add i32 %2736, -4 %2738 = icmp sgt i32 %2737, -1 br i1 %2738, label %.lr.ph67.preheader.i, label %.loopexit15.i .lr.ph67.preheader.i: ; preds = %2733 - %2739 = zext nneg i32 %2737 to i64 + %2739 = add i32 %2736, -1 + %2740 = zext i32 %2739 to i64 br label %.lr.ph67.i .lr.ph67.i: ; preds = %.lr.ph67.i, %.lr.ph67.preheader.i - %indvars.iv82.i = phi i64 [ %2739, %.lr.ph67.preheader.i ], [ %indvars.iv.next83.i, %.lr.ph67.i ] - %2740 = getelementptr inbounds i8, ptr %1904, i64 %indvars.iv82.i - store i8 -1, ptr %2740, align 1 + %indvars.iv82.i = phi i64 [ %2740, %.lr.ph67.preheader.i ], [ %indvars.iv.next83.i, %.lr.ph67.i ] + %2741 = getelementptr inbounds i8, ptr %1904, i64 %indvars.iv82.i + store i8 -1, ptr %2741, align 1 %indvars.iv.next83.i = add nsw i64 %indvars.iv82.i, -4 - %2741 = icmp ugt i64 %indvars.iv82.i, 3 - br i1 %2741, label %.lr.ph67.i, label %.loopexit15.i, !llvm.loop !191 + %2742 = icmp ugt i64 %indvars.iv82.i, 3 + br i1 %2742, label %.lr.ph67.i, label %.loopexit15.i, !llvm.loop !191 .loopexit15.i: ; preds = %.lr.ph67.i, %2733, %.loopexit17.i br i1 %1859, label %.preheader.i, label %.loopexit15..loopexit_crit_edge.i @@ -32955,47 +32956,47 @@ stbi__skip.exit451.i: ; preds = %2724, %2720 br label %.loopexit.i .preheader.i: ; preds = %.loopexit15.i - %2742 = ashr i32 %2730, 1 - %2743 = icmp sgt i32 %2742, 0 + %2743 = ashr i32 %2730, 1 + %2744 = icmp sgt i32 %2743, 0 %.pre103.pre107.i = load i32, ptr %0, align 8 - br i1 %2743, label %.lr.ph73.i, label %.loopexit.i + br i1 %2744, label %.lr.ph73.i, label %.loopexit.i .lr.ph73.i: ; preds = %.preheader.i %factor.op.mul.i = mul i32 %.pre103.pre107.i, %..i - %2744 = icmp sgt i32 %factor.op.mul.i, 0 - br i1 %2744, label %.lr.ph70.us.preheader.i, label %.loopexit.i + %2745 = icmp sgt i32 %factor.op.mul.i, 0 + br i1 %2745, label %.lr.ph70.us.preheader.i, label %.loopexit.i .lr.ph70.us.preheader.i: ; preds = %.lr.ph73.i - %wide.trip.count93.i = zext nneg i32 %2742 to i64 + %wide.trip.count93.i = zext nneg i32 %2743 to i64 %wide.trip.count88.i = zext nneg i32 %factor.op.mul.i to i64 br label %.lr.ph70.us.i .lr.ph70.us.i: ; preds = %._crit_edge71.us.i, %.lr.ph70.us.preheader.i %indvars.iv90.i = phi i64 [ 0, %.lr.ph70.us.preheader.i ], [ %indvars.iv.next91.i, %._crit_edge71.us.i ] - %2745 = trunc nuw nsw i64 %indvars.iv90.i to i32 - %.reass.us.i = mul i32 %factor.op.mul.i, %2745 - %2746 = zext i32 %.reass.us.i to i64 - %2747 = getelementptr inbounds i8, ptr %1904, i64 %2746 - %2748 = xor i32 %2745, -1 - %2749 = add i32 %2730, %2748 - %2750 = mul i32 %2749, %factor.op.mul.i - %2751 = zext i32 %2750 to i64 - %2752 = getelementptr inbounds i8, ptr %1904, i64 %2751 - br label %2753 - -2753: ; preds = %2753, %.lr.ph70.us.i - %indvars.iv85.i = phi i64 [ 0, %.lr.ph70.us.i ], [ %indvars.iv.next86.i, %2753 ] - %2754 = getelementptr inbounds i8, ptr %2747, i64 %indvars.iv85.i - %2755 = load i8, ptr %2754, align 1 - %2756 = getelementptr inbounds i8, ptr %2752, i64 %indvars.iv85.i - %2757 = load i8, ptr %2756, align 1 - store i8 %2757, ptr %2754, align 1 - store i8 %2755, ptr %2756, align 1 + %2746 = trunc nuw nsw i64 %indvars.iv90.i to i32 + %.reass.us.i = mul i32 %factor.op.mul.i, %2746 + %2747 = zext i32 %.reass.us.i to i64 + %2748 = getelementptr inbounds i8, ptr %1904, i64 %2747 + %2749 = xor i32 %2746, -1 + %2750 = add i32 %2730, %2749 + %2751 = mul i32 %2750, %factor.op.mul.i + %2752 = zext i32 %2751 to i64 + %2753 = getelementptr inbounds i8, ptr %1904, i64 %2752 + br label %2754 + +2754: ; preds = %2754, %.lr.ph70.us.i + %indvars.iv85.i = phi i64 [ 0, %.lr.ph70.us.i ], [ %indvars.iv.next86.i, %2754 ] + %2755 = getelementptr inbounds i8, ptr %2748, i64 %indvars.iv85.i + %2756 = load i8, ptr %2755, align 1 + %2757 = getelementptr inbounds i8, ptr %2753, i64 %indvars.iv85.i + %2758 = load i8, ptr %2757, align 1 + store i8 %2758, ptr %2755, align 1 + store i8 %2756, ptr %2757, align 1 %indvars.iv.next86.i = add nuw nsw i64 %indvars.iv85.i, 1 %exitcond89.not.i = icmp eq i64 %indvars.iv.next86.i, %wide.trip.count88.i - br i1 %exitcond89.not.i, label %._crit_edge71.us.i, label %2753, !llvm.loop !192 + br i1 %exitcond89.not.i, label %._crit_edge71.us.i, label %2754, !llvm.loop !192 -._crit_edge71.us.i: ; preds = %2753 +._crit_edge71.us.i: ; preds = %2754 %indvars.iv.next91.i = add nuw nsw i64 %indvars.iv90.i, 1 %exitcond94.not.i = icmp eq i64 %indvars.iv.next91.i, %wide.trip.count93.i br i1 %exitcond94.not.i, label %.loopexit.i, label %.lr.ph70.us.i, !llvm.loop !193 @@ -33004,153 +33005,153 @@ stbi__skip.exit451.i: ; preds = %2724, %2720 %.pre103.i = phi i32 [ %.pre103.pre.i, %.loopexit15..loopexit_crit_edge.i ], [ %.pre103.pre107.i, %.preheader.i ], [ %.pre103.pre107.i, %.lr.ph73.i ], [ %.pre103.pre107.i, %._crit_edge71.us.i ] %.not320.i = icmp eq i32 %4, %..i %or.cond.i = or i1 %.not313.i, %.not320.i - br i1 %or.cond.i, label %2761, label %2758 + br i1 %or.cond.i, label %2762, label %2759 -2758: ; preds = %.loopexit.i - %2759 = tail call fastcc ptr @stbi__convert_format(ptr noundef nonnull %1904, i32 noundef %..i, i32 noundef %4, i32 noundef %.pre103.i, i32 noundef %2730) - %2760 = icmp eq ptr %2759, null - br i1 %2760, label %stbi__bmp_load.exit, label %._crit_edge101.i +2759: ; preds = %.loopexit.i + %2760 = tail call fastcc ptr @stbi__convert_format(ptr noundef nonnull %1904, i32 noundef %..i, i32 noundef %4, i32 noundef %.pre103.i, i32 noundef %2730) + %2761 = icmp eq ptr %2760, null + br i1 %2761, label %stbi__bmp_load.exit, label %._crit_edge101.i -._crit_edge101.i: ; preds = %2758 +._crit_edge101.i: ; preds = %2759 %.pre102.i = load i32, ptr %0, align 8 - br label %2761 - -2761: ; preds = %._crit_edge101.i, %.loopexit.i - %2762 = phi i32 [ %.pre102.i, %._crit_edge101.i ], [ %.pre103.i, %.loopexit.i ] - %.0254.i = phi ptr [ %2759, %._crit_edge101.i ], [ %1904, %.loopexit.i ] - store i32 %2762, ptr %1, align 4 - %2763 = load i32, ptr %1857, align 4 - store i32 %2763, ptr %2, align 4 + br label %2762 + +2762: ; preds = %._crit_edge101.i, %.loopexit.i + %2763 = phi i32 [ %.pre102.i, %._crit_edge101.i ], [ %.pre103.i, %.loopexit.i ] + %.0254.i = phi ptr [ %2760, %._crit_edge101.i ], [ %1904, %.loopexit.i ] + store i32 %2763, ptr %1, align 4 + %2764 = load i32, ptr %1857, align 4 + store i32 %2764, ptr %2, align 4 %.not321.i = icmp eq ptr %3, null - br i1 %.not321.i, label %stbi__bmp_load.exit, label %2764 + br i1 %.not321.i, label %stbi__bmp_load.exit, label %2765 -2764: ; preds = %2761 - %2765 = load i32, ptr %1890, align 8 - store i32 %2765, ptr %3, align 4 +2765: ; preds = %2762 + %2766 = load i32, ptr %1890, align 8 + store i32 %2766, ptr %3, align 4 br label %stbi__bmp_load.exit -stbi__bmp_load.exit: ; preds = %1852, %1899, %stbi__malloc_mad3.exit.thread.i, %1911, %2036, %2349, %2758, %2761, %2764 - %.0.i = phi ptr [ null, %1911 ], [ null, %2036 ], [ null, %2349 ], [ null, %stbi__malloc_mad3.exit.thread.i ], [ null, %1899 ], [ null, %1852 ], [ null, %2758 ], [ %.0254.i, %2764 ], [ %.0254.i, %2761 ] +stbi__bmp_load.exit: ; preds = %1852, %1899, %stbi__malloc_mad3.exit.thread.i, %1911, %2036, %2349, %2759, %2762, %2765 + %.0.i = phi ptr [ null, %1911 ], [ null, %2036 ], [ null, %2349 ], [ null, %stbi__malloc_mad3.exit.thread.i ], [ null, %1899 ], [ null, %1852 ], [ null, %2759 ], [ %.0254.i, %2765 ], [ %.0254.i, %2762 ] call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %9) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) - br label %2816 + br label %2817 -2766: ; preds = %stbi__bmp_test.exit.thread, %stbi__bmp_test.exit - %2767 = tail call fastcc i32 @stbi__gif_test(ptr noundef %0) - %.not77 = icmp eq i32 %2767, 0 - br i1 %.not77, label %2786, label %2768 +2767: ; preds = %stbi__bmp_test.exit.thread, %stbi__bmp_test.exit + %2768 = tail call fastcc i32 @stbi__gif_test(ptr noundef %0) + %.not77 = icmp eq i32 %2768, 0 + br i1 %.not77, label %2787, label %2769 -2768: ; preds = %2766 +2769: ; preds = %2767 call void @llvm.lifetime.start.p0(i64 34928, ptr nonnull %8) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(34928) %8, i8 0, i64 34928, i1 false) - %2769 = call fastcc ptr @stbi__gif_load_next(ptr noundef %0, ptr noundef %8, ptr noundef %3, ptr noundef null) - %2770 = icmp eq ptr %2769, %0 - %.not1.i = icmp eq ptr %2769, null - %.not.i122 = or i1 %2770, %.not1.i - br i1 %.not.i122, label %2778, label %2771 - -2771: ; preds = %2768 - %2772 = load i32, ptr %8, align 8 - store i32 %2772, ptr %1, align 4 - %2773 = getelementptr inbounds i8, ptr %8, i64 4 - %2774 = load i32, ptr %2773, align 4 - store i32 %2774, ptr %2, align 4 - %2775 = and i32 %4, -5 - %or.cond.not.i = icmp eq i32 %2775, 0 - br i1 %or.cond.not.i, label %stbi__gif_load.exit, label %2776 - -2776: ; preds = %2771 - %2777 = call fastcc ptr @stbi__convert_format(ptr noundef nonnull %2769, i32 noundef 4, i32 noundef %4, i32 noundef %2772, i32 noundef %2774) + %2770 = call fastcc ptr @stbi__gif_load_next(ptr noundef %0, ptr noundef %8, ptr noundef %3, ptr noundef null) + %2771 = icmp eq ptr %2770, %0 + %.not1.i = icmp eq ptr %2770, null + %.not.i122 = or i1 %2771, %.not1.i + br i1 %.not.i122, label %2779, label %2772 + +2772: ; preds = %2769 + %2773 = load i32, ptr %8, align 8 + store i32 %2773, ptr %1, align 4 + %2774 = getelementptr inbounds i8, ptr %8, i64 4 + %2775 = load i32, ptr %2774, align 4 + store i32 %2775, ptr %2, align 4 + %2776 = and i32 %4, -5 + %or.cond.not.i = icmp eq i32 %2776, 0 + br i1 %or.cond.not.i, label %stbi__gif_load.exit, label %2777 + +2777: ; preds = %2772 + %2778 = call fastcc ptr @stbi__convert_format(ptr noundef nonnull %2770, i32 noundef 4, i32 noundef %4, i32 noundef %2773, i32 noundef %2775) br label %stbi__gif_load.exit -2778: ; preds = %2768 - %2779 = getelementptr inbounds i8, ptr %8, i64 8 - %2780 = load ptr, ptr %2779, align 8 - %.not15.i = icmp eq ptr %2780, null - br i1 %.not15.i, label %stbi__gif_load.exit, label %2781 +2779: ; preds = %2769 + %2780 = getelementptr inbounds i8, ptr %8, i64 8 + %2781 = load ptr, ptr %2780, align 8 + %.not15.i = icmp eq ptr %2781, null + br i1 %.not15.i, label %stbi__gif_load.exit, label %2782 -2781: ; preds = %2778 - call void @free(ptr noundef nonnull %2780) #57 +2782: ; preds = %2779 + call void @free(ptr noundef nonnull %2781) #57 br label %stbi__gif_load.exit -stbi__gif_load.exit: ; preds = %2771, %2776, %2778, %2781 - %.0.i123 = phi ptr [ %2777, %2776 ], [ %2769, %2771 ], [ null, %2781 ], [ null, %2778 ] - %2782 = getelementptr inbounds i8, ptr %8, i64 24 - %2783 = load ptr, ptr %2782, align 8 - call void @free(ptr noundef %2783) #57 - %2784 = getelementptr inbounds i8, ptr %8, i64 16 - %2785 = load ptr, ptr %2784, align 8 - call void @free(ptr noundef %2785) #57 +stbi__gif_load.exit: ; preds = %2772, %2777, %2779, %2782 + %.0.i123 = phi ptr [ %2778, %2777 ], [ %2770, %2772 ], [ null, %2782 ], [ null, %2779 ] + %2783 = getelementptr inbounds i8, ptr %8, i64 24 + %2784 = load ptr, ptr %2783, align 8 + call void @free(ptr noundef %2784) #57 + %2785 = getelementptr inbounds i8, ptr %8, i64 16 + %2786 = load ptr, ptr %2785, align 8 + call void @free(ptr noundef %2786) #57 call void @llvm.lifetime.end.p0(i64 34928, ptr nonnull %8) - br label %2816 - -2786: ; preds = %2766 - %2787 = tail call fastcc i32 @stbi__get32be(ptr noundef nonnull %0) - %.not133 = icmp eq i32 %2787, 943870035 - %2788 = load ptr, ptr %27, align 8 - store ptr %2788, ptr %29, align 8 - %2789 = load ptr, ptr %30, align 8 - store ptr %2789, ptr %32, align 8 - br i1 %.not133, label %2790, label %2792 - -2790: ; preds = %2786 - %2791 = tail call fastcc ptr @stbi__psd_load(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, ptr noundef %5, i32 noundef %6) - br label %2816 - -2792: ; preds = %2786 - %2793 = tail call fastcc i32 @stbi__pic_test(ptr noundef %0) - %.not79 = icmp eq i32 %2793, 0 - br i1 %.not79, label %2796, label %2794 - -2794: ; preds = %2792 - %2795 = tail call fastcc ptr @stbi__pic_load(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) - br label %2816 - -2796: ; preds = %2792 - %2797 = tail call fastcc i32 @stbi__pnm_test(ptr noundef %0) - %.not80 = icmp eq i32 %2797, 0 - br i1 %.not80, label %2800, label %2798 - -2798: ; preds = %2796 - %2799 = tail call fastcc ptr @stbi__pnm_load(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) - br label %2816 - -2800: ; preds = %2796 - %2801 = tail call fastcc i32 @stbi__hdr_test(ptr noundef %0) - %.not81 = icmp eq i32 %2801, 0 - br i1 %.not81, label %2811, label %2802 - -2802: ; preds = %2800 - %2803 = tail call fastcc ptr @stbi__hdr_load(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) - %2804 = load i32, ptr %1, align 4 - %2805 = load i32, ptr %2, align 4 + br label %2817 + +2787: ; preds = %2767 + %2788 = tail call fastcc i32 @stbi__get32be(ptr noundef nonnull %0) + %.not133 = icmp eq i32 %2788, 943870035 + %2789 = load ptr, ptr %27, align 8 + store ptr %2789, ptr %29, align 8 + %2790 = load ptr, ptr %30, align 8 + store ptr %2790, ptr %32, align 8 + br i1 %.not133, label %2791, label %2793 + +2791: ; preds = %2787 + %2792 = tail call fastcc ptr @stbi__psd_load(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, ptr noundef %5, i32 noundef %6) + br label %2817 + +2793: ; preds = %2787 + %2794 = tail call fastcc i32 @stbi__pic_test(ptr noundef %0) + %.not79 = icmp eq i32 %2794, 0 + br i1 %.not79, label %2797, label %2795 + +2795: ; preds = %2793 + %2796 = tail call fastcc ptr @stbi__pic_load(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) + br label %2817 + +2797: ; preds = %2793 + %2798 = tail call fastcc i32 @stbi__pnm_test(ptr noundef %0) + %.not80 = icmp eq i32 %2798, 0 + br i1 %.not80, label %2801, label %2799 + +2799: ; preds = %2797 + %2800 = tail call fastcc ptr @stbi__pnm_load(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) + br label %2817 + +2801: ; preds = %2797 + %2802 = tail call fastcc i32 @stbi__hdr_test(ptr noundef %0) + %.not81 = icmp eq i32 %2802, 0 + br i1 %.not81, label %2812, label %2803 + +2803: ; preds = %2801 + %2804 = tail call fastcc ptr @stbi__hdr_load(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) + %2805 = load i32, ptr %1, align 4 + %2806 = load i32, ptr %2, align 4 %.not83 = icmp eq i32 %4, 0 - br i1 %.not83, label %2806, label %2808 + br i1 %.not83, label %2807, label %2809 -2806: ; preds = %2802 - %2807 = load i32, ptr %3, align 4 - br label %2808 +2807: ; preds = %2803 + %2808 = load i32, ptr %3, align 4 + br label %2809 -2808: ; preds = %2802, %2806 - %2809 = phi i32 [ %2807, %2806 ], [ %4, %2802 ] - %2810 = tail call fastcc ptr @stbi__hdr_to_ldr(ptr noundef %2803, i32 noundef %2804, i32 noundef %2805, i32 noundef %2809) - br label %2816 +2809: ; preds = %2803, %2807 + %2810 = phi i32 [ %2808, %2807 ], [ %4, %2803 ] + %2811 = tail call fastcc ptr @stbi__hdr_to_ldr(ptr noundef %2804, i32 noundef %2805, i32 noundef %2806, i32 noundef %2810) + br label %2817 -2811: ; preds = %2800 - %2812 = tail call fastcc i32 @stbi__tga_test(ptr noundef %0) - %.not82 = icmp eq i32 %2812, 0 - br i1 %.not82, label %2815, label %2813 +2812: ; preds = %2801 + %2813 = tail call fastcc i32 @stbi__tga_test(ptr noundef %0) + %.not82 = icmp eq i32 %2813, 0 + br i1 %.not82, label %2816, label %2814 -2813: ; preds = %2811 - %2814 = tail call fastcc ptr @stbi__tga_load(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) - br label %2816 +2814: ; preds = %2812 + %2815 = tail call fastcc ptr @stbi__tga_load(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) + br label %2817 -2815: ; preds = %2811 +2816: ; preds = %2812 store ptr @.str.19, ptr @stbi__g_failure_reason, align 8 - br label %2816 + br label %2817 -2816: ; preds = %2815, %2813, %2808, %2798, %2794, %2790, %stbi__gif_load.exit, %stbi__bmp_load.exit, %stbi__png_load.exit, %stbi__jpeg_load.exit - %.0 = phi ptr [ %.0.i.i, %stbi__jpeg_load.exit ], [ %.043.i.i, %stbi__png_load.exit ], [ %.0.i, %stbi__bmp_load.exit ], [ %.0.i123, %stbi__gif_load.exit ], [ %2791, %2790 ], [ %2795, %2794 ], [ %2799, %2798 ], [ %2810, %2808 ], [ %2814, %2813 ], [ null, %2815 ] +2817: ; preds = %2816, %2814, %2809, %2799, %2795, %2791, %stbi__gif_load.exit, %stbi__bmp_load.exit, %stbi__png_load.exit, %stbi__jpeg_load.exit + %.0 = phi ptr [ %.0.i.i, %stbi__jpeg_load.exit ], [ %.043.i.i, %stbi__png_load.exit ], [ %.0.i, %stbi__bmp_load.exit ], [ %.0.i123, %stbi__gif_load.exit ], [ %2792, %2791 ], [ %2796, %2795 ], [ %2800, %2799 ], [ %2811, %2809 ], [ %2815, %2814 ], [ null, %2816 ] ret ptr %.0 } diff --git a/bench/openblas/optimized/daxpy_k.c.ll b/bench/openblas/optimized/daxpy_k.c.ll index 50ba1ca81ba..203c71ba10f 100644 --- a/bench/openblas/optimized/daxpy_k.c.ll +++ b/bench/openblas/optimized/daxpy_k.c.ll @@ -117,85 +117,78 @@ define noundef i32 @daxpy_k(i64 noundef %0, i64 noundef %1, i64 noundef %2, doub 88: ; preds = %12 %89 = and i64 %0, 9223372036854775804 %90 = icmp eq i64 %89, 0 - br i1 %90, label %98, label %91 + br i1 %90, label %.loopexit15, label %91 91: ; preds = %88 %92 = shl nsw i64 %5, 2 %93 = shl nsw i64 %7, 2 - %94 = add nsw i64 %89, -1 %.idx = shl i64 %5, 4 %.idx6 = mul i64 %5, 24 %.idx7 = shl i64 %7, 4 %.idx8 = mul i64 %7, 24 - br label %103 - -95: ; preds = %103 - %96 = and i64 %94, -4 - %97 = add nuw nsw i64 %96, 4 - br label %98 - -98: ; preds = %95, %88 - %99 = phi i64 [ 0, %88 ], [ %132, %95 ] - %100 = phi i64 [ 0, %88 ], [ %131, %95 ] - %101 = phi i64 [ 0, %88 ], [ %97, %95 ] - %102 = icmp slt i64 %101, %0 - br i1 %102, label %.preheader13, label %.loopexit - -103: ; preds = %103, %91 - %104 = phi i64 [ 0, %91 ], [ %133, %103 ] - %105 = phi i64 [ 0, %91 ], [ %131, %103 ] - %106 = phi i64 [ 0, %91 ], [ %132, %103 ] - %107 = getelementptr inbounds double, ptr %4, i64 %105 + br label %97 + +.loopexit15: ; preds = %97, %88 + %94 = phi i64 [ 0, %88 ], [ %126, %97 ] + %95 = phi i64 [ 0, %88 ], [ %125, %97 ] + %96 = icmp slt i64 %89, %0 + br i1 %96, label %.preheader13, label %.loopexit + +97: ; preds = %97, %91 + %98 = phi i64 [ 0, %91 ], [ %127, %97 ] + %99 = phi i64 [ 0, %91 ], [ %125, %97 ] + %100 = phi i64 [ 0, %91 ], [ %126, %97 ] + %101 = getelementptr inbounds double, ptr %4, i64 %99 + %102 = load double, ptr %101, align 8, !tbaa !10 + %103 = fmul double %3, %102 + %104 = getelementptr double, ptr %101, i64 %5 + %105 = load double, ptr %104, align 8, !tbaa !10 + %106 = fmul double %3, %105 + %107 = getelementptr i8, ptr %101, i64 %.idx %108 = load double, ptr %107, align 8, !tbaa !10 %109 = fmul double %3, %108 - %110 = getelementptr double, ptr %107, i64 %5 + %110 = getelementptr i8, ptr %101, i64 %.idx6 %111 = load double, ptr %110, align 8, !tbaa !10 %112 = fmul double %3, %111 - %113 = getelementptr i8, ptr %107, i64 %.idx + %113 = getelementptr inbounds double, ptr %6, i64 %100 %114 = load double, ptr %113, align 8, !tbaa !10 - %115 = fmul double %3, %114 - %116 = getelementptr i8, ptr %107, i64 %.idx6 + %115 = fadd double %103, %114 + store double %115, ptr %113, align 8, !tbaa !10 + %116 = getelementptr double, ptr %113, i64 %7 %117 = load double, ptr %116, align 8, !tbaa !10 - %118 = fmul double %3, %117 - %119 = getelementptr inbounds double, ptr %6, i64 %106 + %118 = fadd double %106, %117 + store double %118, ptr %116, align 8, !tbaa !10 + %119 = getelementptr i8, ptr %113, i64 %.idx7 %120 = load double, ptr %119, align 8, !tbaa !10 %121 = fadd double %109, %120 store double %121, ptr %119, align 8, !tbaa !10 - %122 = getelementptr double, ptr %119, i64 %7 + %122 = getelementptr i8, ptr %113, i64 %.idx8 %123 = load double, ptr %122, align 8, !tbaa !10 %124 = fadd double %112, %123 store double %124, ptr %122, align 8, !tbaa !10 - %125 = getelementptr i8, ptr %119, i64 %.idx7 - %126 = load double, ptr %125, align 8, !tbaa !10 - %127 = fadd double %115, %126 - store double %127, ptr %125, align 8, !tbaa !10 - %128 = getelementptr i8, ptr %119, i64 %.idx8 - %129 = load double, ptr %128, align 8, !tbaa !10 - %130 = fadd double %118, %129 - store double %130, ptr %128, align 8, !tbaa !10 - %131 = add nsw i64 %105, %92 - %132 = add nsw i64 %106, %93 - %133 = add nuw nsw i64 %104, 4 - %134 = icmp ult i64 %133, %89 - br i1 %134, label %103, label %95, !llvm.loop !13 - -.preheader13: ; preds = %98, %.preheader13 - %135 = phi i64 [ %145, %.preheader13 ], [ %101, %98 ] - %136 = phi i64 [ %143, %.preheader13 ], [ %100, %98 ] - %137 = phi i64 [ %144, %.preheader13 ], [ %99, %98 ] - %138 = getelementptr inbounds double, ptr %4, i64 %136 - %139 = load double, ptr %138, align 8, !tbaa !10 - %140 = getelementptr inbounds double, ptr %6, i64 %137 - %141 = load double, ptr %140, align 8, !tbaa !10 - %142 = tail call double @llvm.fmuladd.f64(double %3, double %139, double %141) - store double %142, ptr %140, align 8, !tbaa !10 - %143 = add nsw i64 %136, %5 - %144 = add nsw i64 %137, %7 - %145 = add nuw nsw i64 %135, 1 - %146 = icmp eq i64 %145, %0 - br i1 %146, label %.loopexit, label %.preheader13, !llvm.loop !14 - -.loopexit: ; preds = %.preheader13, %.preheader, %98, %.loopexit10, %10 + %125 = add nsw i64 %99, %92 + %126 = add nsw i64 %100, %93 + %127 = add nuw nsw i64 %98, 4 + %128 = icmp ult i64 %127, %89 + br i1 %128, label %97, label %.loopexit15, !llvm.loop !13 + +.preheader13: ; preds = %.loopexit15, %.preheader13 + %129 = phi i64 [ %139, %.preheader13 ], [ %89, %.loopexit15 ] + %130 = phi i64 [ %137, %.preheader13 ], [ %95, %.loopexit15 ] + %131 = phi i64 [ %138, %.preheader13 ], [ %94, %.loopexit15 ] + %132 = getelementptr inbounds double, ptr %4, i64 %130 + %133 = load double, ptr %132, align 8, !tbaa !10 + %134 = getelementptr inbounds double, ptr %6, i64 %131 + %135 = load double, ptr %134, align 8, !tbaa !10 + %136 = tail call double @llvm.fmuladd.f64(double %3, double %133, double %135) + store double %136, ptr %134, align 8, !tbaa !10 + %137 = add nsw i64 %130, %5 + %138 = add nsw i64 %131, %7 + %139 = add nuw nsw i64 %129, 1 + %140 = icmp eq i64 %139, %0 + br i1 %140, label %.loopexit, label %.preheader13, !llvm.loop !14 + +.loopexit: ; preds = %.preheader13, %.preheader, %.loopexit15, %.loopexit10, %10 ret i32 0 } diff --git a/bench/openblas/optimized/ddot_k.c.ll b/bench/openblas/optimized/ddot_k.c.ll index 5b4b600b67b..feec5c72728 100644 --- a/bench/openblas/optimized/ddot_k.c.ll +++ b/bench/openblas/optimized/ddot_k.c.ll @@ -207,92 +207,85 @@ define internal fastcc double @dot_compute(i64 noundef %0, ptr nocapture noundef 126: ; preds = %7 %127 = and i64 %0, 9223372036854775804 %128 = icmp eq i64 %127, 0 - br i1 %128, label %136, label %129 + br i1 %128, label %.loopexit13, label %129 129: ; preds = %126 %130 = shl nsw i64 %2, 2 %131 = shl nsw i64 %4, 2 - %132 = add nsw i64 %127, -1 %.idx = shl i64 %4, 4 %.idx6 = shl i64 %2, 4 %.idx7 = mul i64 %4, 24 %.idx8 = mul i64 %2, 24 - br label %143 - -133: ; preds = %143 - %134 = and i64 %132, -4 - %135 = add nuw nsw i64 %134, 4 - br label %136 - -136: ; preds = %133, %126 - %137 = phi double [ 0.000000e+00, %126 ], [ %172, %133 ] - %138 = phi double [ 0.000000e+00, %126 ], [ %174, %133 ] - %139 = phi i64 [ 0, %126 ], [ %170, %133 ] - %140 = phi i64 [ 0, %126 ], [ %169, %133 ] - %141 = phi i64 [ 0, %126 ], [ %135, %133 ] - %142 = icmp slt i64 %141, %0 - br i1 %142, label %.preheader11, label %.loopexit12 - -143: ; preds = %143, %129 - %144 = phi i64 [ 0, %129 ], [ %175, %143 ] - %145 = phi i64 [ 0, %129 ], [ %169, %143 ] - %146 = phi i64 [ 0, %129 ], [ %170, %143 ] - %147 = phi double [ 0.000000e+00, %129 ], [ %174, %143 ] - %148 = phi double [ 0.000000e+00, %129 ], [ %172, %143 ] - %149 = getelementptr inbounds double, ptr %3, i64 %146 - %150 = load double, ptr %149, align 8, !tbaa !3 - %151 = getelementptr inbounds double, ptr %1, i64 %145 - %152 = load double, ptr %151, align 8, !tbaa !3 - %153 = fmul double %150, %152 - %154 = getelementptr double, ptr %149, i64 %4 - %155 = load double, ptr %154, align 8, !tbaa !3 - %156 = getelementptr double, ptr %151, i64 %2 - %157 = load double, ptr %156, align 8, !tbaa !3 - %158 = fmul double %155, %157 - %159 = getelementptr i8, ptr %149, i64 %.idx - %160 = load double, ptr %159, align 8, !tbaa !3 - %161 = getelementptr i8, ptr %151, i64 %.idx6 - %162 = load double, ptr %161, align 8, !tbaa !3 - %163 = fmul double %160, %162 - %164 = getelementptr i8, ptr %149, i64 %.idx7 - %165 = load double, ptr %164, align 8, !tbaa !3 - %166 = getelementptr i8, ptr %151, i64 %.idx8 - %167 = load double, ptr %166, align 8, !tbaa !3 - %168 = fmul double %165, %167 - %169 = add nsw i64 %145, %130 - %170 = add nsw i64 %146, %131 - %171 = fadd double %153, %163 - %172 = fadd double %148, %171 - %173 = fadd double %158, %168 - %174 = fadd double %147, %173 - %175 = add nuw nsw i64 %144, 4 - %176 = icmp ult i64 %175, %127 - br i1 %176, label %143, label %133, !llvm.loop !14 - -.preheader11: ; preds = %136, %.preheader11 - %177 = phi i64 [ %188, %.preheader11 ], [ %141, %136 ] - %178 = phi i64 [ %186, %.preheader11 ], [ %140, %136 ] - %179 = phi i64 [ %187, %.preheader11 ], [ %139, %136 ] - %180 = phi double [ %185, %.preheader11 ], [ %137, %136 ] - %181 = getelementptr inbounds double, ptr %3, i64 %179 - %182 = load double, ptr %181, align 8, !tbaa !3 - %183 = getelementptr inbounds double, ptr %1, i64 %178 - %184 = load double, ptr %183, align 8, !tbaa !3 - %185 = tail call double @llvm.fmuladd.f64(double %182, double %184, double %180) - %186 = add nsw i64 %178, %2 - %187 = add nsw i64 %179, %4 - %188 = add nuw nsw i64 %177, 1 - %189 = icmp eq i64 %188, %0 - br i1 %189, label %.loopexit12, label %.preheader11, !llvm.loop !15 - -.loopexit12: ; preds = %.preheader11, %136 - %190 = phi double [ %137, %136 ], [ %185, %.preheader11 ] - %191 = fadd double %138, %190 + br label %137 + +.loopexit13: ; preds = %137, %126 + %132 = phi double [ 0.000000e+00, %126 ], [ %166, %137 ] + %133 = phi double [ 0.000000e+00, %126 ], [ %168, %137 ] + %134 = phi i64 [ 0, %126 ], [ %164, %137 ] + %135 = phi i64 [ 0, %126 ], [ %163, %137 ] + %136 = icmp slt i64 %127, %0 + br i1 %136, label %.preheader11, label %.loopexit12 + +137: ; preds = %137, %129 + %138 = phi i64 [ 0, %129 ], [ %169, %137 ] + %139 = phi i64 [ 0, %129 ], [ %163, %137 ] + %140 = phi i64 [ 0, %129 ], [ %164, %137 ] + %141 = phi double [ 0.000000e+00, %129 ], [ %168, %137 ] + %142 = phi double [ 0.000000e+00, %129 ], [ %166, %137 ] + %143 = getelementptr inbounds double, ptr %3, i64 %140 + %144 = load double, ptr %143, align 8, !tbaa !3 + %145 = getelementptr inbounds double, ptr %1, i64 %139 + %146 = load double, ptr %145, align 8, !tbaa !3 + %147 = fmul double %144, %146 + %148 = getelementptr double, ptr %143, i64 %4 + %149 = load double, ptr %148, align 8, !tbaa !3 + %150 = getelementptr double, ptr %145, i64 %2 + %151 = load double, ptr %150, align 8, !tbaa !3 + %152 = fmul double %149, %151 + %153 = getelementptr i8, ptr %143, i64 %.idx + %154 = load double, ptr %153, align 8, !tbaa !3 + %155 = getelementptr i8, ptr %145, i64 %.idx6 + %156 = load double, ptr %155, align 8, !tbaa !3 + %157 = fmul double %154, %156 + %158 = getelementptr i8, ptr %143, i64 %.idx7 + %159 = load double, ptr %158, align 8, !tbaa !3 + %160 = getelementptr i8, ptr %145, i64 %.idx8 + %161 = load double, ptr %160, align 8, !tbaa !3 + %162 = fmul double %159, %161 + %163 = add nsw i64 %139, %130 + %164 = add nsw i64 %140, %131 + %165 = fadd double %147, %157 + %166 = fadd double %142, %165 + %167 = fadd double %152, %162 + %168 = fadd double %141, %167 + %169 = add nuw nsw i64 %138, 4 + %170 = icmp ult i64 %169, %127 + br i1 %170, label %137, label %.loopexit13, !llvm.loop !14 + +.preheader11: ; preds = %.loopexit13, %.preheader11 + %171 = phi i64 [ %182, %.preheader11 ], [ %127, %.loopexit13 ] + %172 = phi i64 [ %180, %.preheader11 ], [ %135, %.loopexit13 ] + %173 = phi i64 [ %181, %.preheader11 ], [ %134, %.loopexit13 ] + %174 = phi double [ %179, %.preheader11 ], [ %132, %.loopexit13 ] + %175 = getelementptr inbounds double, ptr %3, i64 %173 + %176 = load double, ptr %175, align 8, !tbaa !3 + %177 = getelementptr inbounds double, ptr %1, i64 %172 + %178 = load double, ptr %177, align 8, !tbaa !3 + %179 = tail call double @llvm.fmuladd.f64(double %176, double %178, double %174) + %180 = add nsw i64 %172, %2 + %181 = add nsw i64 %173, %4 + %182 = add nuw nsw i64 %171, 1 + %183 = icmp eq i64 %182, %0 + br i1 %183, label %.loopexit12, label %.preheader11, !llvm.loop !15 + +.loopexit12: ; preds = %.preheader11, %.loopexit13 + %184 = phi double [ %132, %.loopexit13 ], [ %179, %.preheader11 ] + %185 = fadd double %133, %184 br label %.loopexit .loopexit: ; preds = %.preheader, %.loopexit12, %114, %5 - %192 = phi double [ %191, %.loopexit12 ], [ 0.000000e+00, %5 ], [ %115, %114 ], [ %123, %.preheader ] - ret double %192 + %186 = phi double [ %185, %.loopexit12 ], [ 0.000000e+00, %5 ], [ %115, %114 ], [ %123, %.preheader ] + ret double %186 } declare i32 @blas_level1_thread_with_return_value(i32 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i32 noundef) local_unnamed_addr #3 diff --git a/bench/openblas/optimized/dsdot_k.c.ll b/bench/openblas/optimized/dsdot_k.c.ll index fabd615351c..b36c7768fc3 100644 --- a/bench/openblas/optimized/dsdot_k.c.ll +++ b/bench/openblas/optimized/dsdot_k.c.ll @@ -86,74 +86,67 @@ define double @dsdot_k(i64 noundef %0, ptr nocapture noundef readonly %1, i64 no 66: ; preds = %7 %67 = and i64 %0, 9223372036854775806 %68 = icmp eq i64 %67, 0 - br i1 %68, label %76, label %69 + br i1 %68, label %.loopexit8, label %69 69: ; preds = %66 %70 = shl nsw i64 %2, 1 %71 = shl nsw i64 %4, 1 - %72 = add nsw i64 %67, -1 - br label %82 - -73: ; preds = %82 - %74 = and i64 %72, -2 - %75 = add nuw nsw i64 %74, 2 br label %76 -76: ; preds = %73, %66 - %77 = phi i64 [ 0, %66 ], [ %75, %73 ] - %78 = phi i64 [ 0, %66 ], [ %102, %73 ] - %79 = phi i64 [ 0, %66 ], [ %103, %73 ] - %80 = phi double [ 0.000000e+00, %66 ], [ %101, %73 ] - %81 = icmp slt i64 %77, %0 - br i1 %81, label %.preheader6, label %.loopexit7 - -82: ; preds = %82, %69 - %83 = phi double [ 0.000000e+00, %69 ], [ %101, %82 ] - %84 = phi i64 [ 0, %69 ], [ %103, %82 ] - %85 = phi i64 [ 0, %69 ], [ %102, %82 ] - %86 = phi i64 [ 0, %69 ], [ %104, %82 ] - %87 = getelementptr inbounds float, ptr %3, i64 %84 +.loopexit8: ; preds = %76, %66 + %72 = phi i64 [ 0, %66 ], [ %96, %76 ] + %73 = phi i64 [ 0, %66 ], [ %97, %76 ] + %74 = phi double [ 0.000000e+00, %66 ], [ %95, %76 ] + %75 = icmp slt i64 %67, %0 + br i1 %75, label %.preheader6, label %.loopexit7 + +76: ; preds = %76, %69 + %77 = phi double [ 0.000000e+00, %69 ], [ %95, %76 ] + %78 = phi i64 [ 0, %69 ], [ %97, %76 ] + %79 = phi i64 [ 0, %69 ], [ %96, %76 ] + %80 = phi i64 [ 0, %69 ], [ %98, %76 ] + %81 = getelementptr inbounds float, ptr %3, i64 %78 + %82 = load float, ptr %81, align 4, !tbaa !9 + %83 = fpext float %82 to double + %84 = getelementptr inbounds float, ptr %1, i64 %79 + %85 = load float, ptr %84, align 4, !tbaa !9 + %86 = fpext float %85 to double + %87 = getelementptr float, ptr %81, i64 %4 %88 = load float, ptr %87, align 4, !tbaa !9 %89 = fpext float %88 to double - %90 = getelementptr inbounds float, ptr %1, i64 %85 + %90 = getelementptr float, ptr %84, i64 %2 %91 = load float, ptr %90, align 4, !tbaa !9 %92 = fpext float %91 to double - %93 = getelementptr float, ptr %87, i64 %4 - %94 = load float, ptr %93, align 4, !tbaa !9 - %95 = fpext float %94 to double - %96 = getelementptr float, ptr %90, i64 %2 - %97 = load float, ptr %96, align 4, !tbaa !9 - %98 = fpext float %97 to double - %99 = fmul double %95, %98 - %100 = tail call double @llvm.fmuladd.f64(double %89, double %92, double %99) - %101 = fadd double %83, %100 - %102 = add nsw i64 %85, %70 - %103 = add nsw i64 %84, %71 - %104 = add nuw nsw i64 %86, 2 - %105 = icmp ult i64 %104, %67 - br i1 %105, label %82, label %73, !llvm.loop !12 - -.preheader6: ; preds = %76, %.preheader6 - %106 = phi double [ %116, %.preheader6 ], [ %80, %76 ] - %107 = phi i64 [ %118, %.preheader6 ], [ %79, %76 ] - %108 = phi i64 [ %117, %.preheader6 ], [ %78, %76 ] - %109 = phi i64 [ %119, %.preheader6 ], [ %77, %76 ] - %110 = getelementptr inbounds float, ptr %3, i64 %107 - %111 = load float, ptr %110, align 4, !tbaa !9 - %112 = fpext float %111 to double - %113 = getelementptr inbounds float, ptr %1, i64 %108 - %114 = load float, ptr %113, align 4, !tbaa !9 - %115 = fpext float %114 to double - %116 = tail call double @llvm.fmuladd.f64(double %112, double %115, double %106) - %117 = add nsw i64 %108, %2 - %118 = add nsw i64 %107, %4 - %119 = add nuw nsw i64 %109, 1 - %120 = icmp eq i64 %119, %0 - br i1 %120, label %.loopexit7, label %.preheader6, !llvm.loop !13 - -.loopexit7: ; preds = %.preheader6, %76, %.loopexit, %5 - %121 = phi double [ %65, %.loopexit ], [ 0.000000e+00, %5 ], [ %80, %76 ], [ %116, %.preheader6 ] - ret double %121 + %93 = fmul double %89, %92 + %94 = tail call double @llvm.fmuladd.f64(double %83, double %86, double %93) + %95 = fadd double %77, %94 + %96 = add nsw i64 %79, %70 + %97 = add nsw i64 %78, %71 + %98 = add nuw nsw i64 %80, 2 + %99 = icmp ult i64 %98, %67 + br i1 %99, label %76, label %.loopexit8, !llvm.loop !12 + +.preheader6: ; preds = %.loopexit8, %.preheader6 + %100 = phi double [ %110, %.preheader6 ], [ %74, %.loopexit8 ] + %101 = phi i64 [ %112, %.preheader6 ], [ %73, %.loopexit8 ] + %102 = phi i64 [ %111, %.preheader6 ], [ %72, %.loopexit8 ] + %103 = phi i64 [ %113, %.preheader6 ], [ %67, %.loopexit8 ] + %104 = getelementptr inbounds float, ptr %3, i64 %101 + %105 = load float, ptr %104, align 4, !tbaa !9 + %106 = fpext float %105 to double + %107 = getelementptr inbounds float, ptr %1, i64 %102 + %108 = load float, ptr %107, align 4, !tbaa !9 + %109 = fpext float %108 to double + %110 = tail call double @llvm.fmuladd.f64(double %106, double %109, double %100) + %111 = add nsw i64 %102, %2 + %112 = add nsw i64 %101, %4 + %113 = add nuw nsw i64 %103, 1 + %114 = icmp eq i64 %113, %0 + br i1 %114, label %.loopexit7, label %.preheader6, !llvm.loop !13 + +.loopexit7: ; preds = %.preheader6, %.loopexit8, %.loopexit, %5 + %115 = phi double [ %65, %.loopexit ], [ 0.000000e+00, %5 ], [ %74, %.loopexit8 ], [ %110, %.preheader6 ] + ret double %115 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) diff --git a/bench/opencc/optimized/louds-trie.cc.ll b/bench/opencc/optimized/louds-trie.cc.ll index 7b9135d311c..3c6cf2adfe5 100644 --- a/bench/opencc/optimized/louds-trie.cc.ll +++ b/bench/opencc/optimized/louds-trie.cc.ll @@ -3847,47 +3847,47 @@ define noundef i64 @_ZNK6marisa8grimoire4trie9LoudsTrie7io_sizeEv(ptr nocapture %47 = add i64 %31, 7 %48 = and i64 %47, -8 %49 = mul i64 %35, 12 - %50 = add i64 %49, 7 + %50 = add i64 %49, 4 %51 = and i64 %50, -8 %52 = shl i64 %37, 2 - %53 = add i64 %52, 7 + %53 = add i64 %52, 4 %54 = and i64 %53, -8 %55 = shl i64 %39, 2 - %56 = add i64 %55, 7 + %56 = add i64 %55, 4 %57 = and i64 %56, -8 %58 = add i64 %27, 7 %59 = and i64 %58, -8 %60 = mul i64 %21, 12 - %61 = add i64 %60, 7 + %61 = add i64 %60, 4 %62 = and i64 %61, -8 %63 = shl i64 %23, 2 - %64 = add i64 %63, 7 + %64 = add i64 %63, 4 %65 = and i64 %64, -8 %66 = shl i64 %25, 2 - %67 = add i64 %66, 7 + %67 = add i64 %66, 4 %68 = and i64 %67, -8 %69 = mul i64 %13, 12 - %70 = add i64 %69, 7 + %70 = add i64 %69, 4 %71 = and i64 %70, -8 %72 = shl i64 %15, 2 - %73 = add i64 %72, 7 + %73 = add i64 %72, 4 %74 = and i64 %73, -8 %75 = shl i64 %17, 2 - %76 = add i64 %75, 7 + %76 = add i64 %75, 4 %77 = and i64 %76, -8 %78 = mul i64 %5, 12 - %79 = add i64 %78, 7 + %79 = add i64 %78, 4 %80 = and i64 %79, -8 %81 = shl i64 %7, 2 - %82 = add i64 %81, 7 + %82 = add i64 %81, 4 %83 = and i64 %82, -8 %84 = shl i64 %9, 2 - %85 = add i64 %84, 7 + %85 = add i64 %84, 4 %86 = and i64 %85, -8 %87 = getelementptr inbounds i8, ptr %0, i64 1032 %88 = load i64, ptr %87, align 8 %89 = mul i64 %88, 12 - %90 = add i64 %89, 7 + %90 = add i64 %89, 4 %91 = and i64 %90, -8 %reass.add = add i64 %11, %3 %reass.add1 = add i64 %reass.add, %19 diff --git a/bench/opencv/optimized/emd_new.cpp.ll b/bench/opencv/optimized/emd_new.cpp.ll index fdf22b53b7b..78d5e2c95d9 100644 --- a/bench/opencv/optimized/emd_new.cpp.ll +++ b/bench/opencv/optimized/emd_new.cpp.ll @@ -3408,13 +3408,13 @@ define linkonce_odr hidden void @_ZN2cv5utils10BufferArea8allocateIiEEvRPT_mt(pt 22: ; preds = %19 %23 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 24: ; preds = %20 %25 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #17 - br label %75 + br label %76 26: ; preds = %4 %.not = icmp eq i64 %2, 0 @@ -3435,13 +3435,13 @@ define linkonce_odr hidden void @_ZN2cv5utils10BufferArea8allocateIiEEvRPT_mt(pt 30: ; preds = %27 %31 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 32: ; preds = %28 %33 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #17 - br label %75 + br label %76 34: ; preds = %26 %.not24 = icmp eq i16 %3, 0 @@ -3462,13 +3462,13 @@ define linkonce_odr hidden void @_ZN2cv5utils10BufferArea8allocateIiEEvRPT_mt(pt 38: ; preds = %35 %39 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 40: ; preds = %36 %41 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #17 - br label %75 + br label %76 42: ; preds = %34 %43 = and i16 %3, 3 @@ -3490,81 +3490,82 @@ define linkonce_odr hidden void @_ZN2cv5utils10BufferArea8allocateIiEEvRPT_mt(pt 48: ; preds = %45 %49 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 50: ; preds = %46 %51 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #17 - br label %75 + br label %76 52: ; preds = %42 - %53 = tail call range(i16 1, 15) i16 @llvm.ctpop.i16(i16 %3) - %54 = icmp ult i16 %53, 2 - br i1 %54, label %62, label %55 + %53 = add i16 %3, -4 + %54 = and i16 %53, %3 + %55 = icmp eq i16 %54, 0 + br i1 %55, label %63, label %56 -55: ; preds = %52 +56: ; preds = %52 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #17 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %14) - to label %56 unwind label %58 + to label %57 unwind label %59 -56: ; preds = %55 +57: ; preds = %56 invoke void @_ZN2cv5errorEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcS9_i(i32 noundef -215, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @__func__._ZN2cv5utils10BufferArea8allocateIiEEvRPT_mt, ptr noundef nonnull @.str.28, i32 noundef 73) #16 - to label %57 unwind label %60 + to label %58 unwind label %61 -57: ; preds = %56 +58: ; preds = %57 unreachable -58: ; preds = %55 - %59 = landingpad { ptr, i32 } +59: ; preds = %56 + %60 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 -60: ; preds = %56 - %61 = landingpad { ptr, i32 } +61: ; preds = %57 + %62 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #17 - br label %75 + br label %76 -62: ; preds = %52 +63: ; preds = %52 tail call void @_ZN2cv5utils10BufferArea9allocate_EPPvtmt(ptr noundef nonnull align 8 dereferenceable(41) %0, ptr noundef nonnull %1, i16 noundef zeroext 4, i64 noundef %2, i16 noundef zeroext %3) - %63 = getelementptr inbounds i8, ptr %0, i64 40 - %64 = load i8, ptr %63, align 8 - %65 = trunc i8 %64 to i1 - %66 = load ptr, ptr %1, align 8 - %.not31 = icmp eq ptr %66, null - %or.cond = select i1 %65, i1 %.not31, i1 false - br i1 %or.cond, label %67, label %74 - -67: ; preds = %62 + %64 = getelementptr inbounds i8, ptr %0, i64 40 + %65 = load i8, ptr %64, align 8 + %66 = trunc i8 %65 to i1 + %67 = load ptr, ptr %1, align 8 + %.not31 = icmp eq ptr %67, null + %or.cond = select i1 %66, i1 %.not31, i1 false + br i1 %or.cond, label %68, label %75 + +68: ; preds = %63 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #17 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.33, ptr noundef nonnull align 1 dereferenceable(1) %16) - to label %68 unwind label %70 + to label %69 unwind label %71 -68: ; preds = %67 +69: ; preds = %68 invoke void @_ZN2cv5errorEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcS9_i(i32 noundef -215, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @__func__._ZN2cv5utils10BufferArea8allocateIiEEvRPT_mt, ptr noundef nonnull @.str.28, i32 noundef 78) #16 - to label %69 unwind label %72 + to label %70 unwind label %73 -69: ; preds = %68 +70: ; preds = %69 unreachable -70: ; preds = %67 - %71 = landingpad { ptr, i32 } +71: ; preds = %68 + %72 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 -72: ; preds = %68 - %73 = landingpad { ptr, i32 } +73: ; preds = %69 + %74 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #17 - br label %75 + br label %76 -74: ; preds = %62 +75: ; preds = %63 ret void -75: ; preds = %70, %72, %58, %60, %48, %50, %38, %40, %30, %32, %22, %24 - %.sink = phi ptr [ %6, %24 ], [ %6, %22 ], [ %8, %32 ], [ %8, %30 ], [ %10, %40 ], [ %10, %38 ], [ %12, %50 ], [ %12, %48 ], [ %14, %60 ], [ %14, %58 ], [ %16, %72 ], [ %16, %70 ] - %.pn32.pn = phi { ptr, i32 } [ %25, %24 ], [ %23, %22 ], [ %33, %32 ], [ %31, %30 ], [ %41, %40 ], [ %39, %38 ], [ %51, %50 ], [ %49, %48 ], [ %61, %60 ], [ %59, %58 ], [ %73, %72 ], [ %71, %70 ] +76: ; preds = %71, %73, %59, %61, %48, %50, %38, %40, %30, %32, %22, %24 + %.sink = phi ptr [ %6, %24 ], [ %6, %22 ], [ %8, %32 ], [ %8, %30 ], [ %10, %40 ], [ %10, %38 ], [ %12, %50 ], [ %12, %48 ], [ %14, %61 ], [ %14, %59 ], [ %16, %73 ], [ %16, %71 ] + %.pn32.pn = phi { ptr, i32 } [ %25, %24 ], [ %23, %22 ], [ %33, %32 ], [ %31, %30 ], [ %41, %40 ], [ %39, %38 ], [ %51, %50 ], [ %49, %48 ], [ %62, %61 ], [ %60, %59 ], [ %74, %73 ], [ %72, %71 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %.sink) #17 resume { ptr, i32 } %.pn32.pn } @@ -3602,13 +3603,13 @@ define linkonce_odr hidden void @_ZN2cv5utils10BufferArea8allocateIfEEvRPT_mt(pt 22: ; preds = %19 %23 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 24: ; preds = %20 %25 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #17 - br label %75 + br label %76 26: ; preds = %4 %.not = icmp eq i64 %2, 0 @@ -3629,13 +3630,13 @@ define linkonce_odr hidden void @_ZN2cv5utils10BufferArea8allocateIfEEvRPT_mt(pt 30: ; preds = %27 %31 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 32: ; preds = %28 %33 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #17 - br label %75 + br label %76 34: ; preds = %26 %.not24 = icmp eq i16 %3, 0 @@ -3656,13 +3657,13 @@ define linkonce_odr hidden void @_ZN2cv5utils10BufferArea8allocateIfEEvRPT_mt(pt 38: ; preds = %35 %39 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 40: ; preds = %36 %41 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #17 - br label %75 + br label %76 42: ; preds = %34 %43 = and i16 %3, 3 @@ -3684,81 +3685,82 @@ define linkonce_odr hidden void @_ZN2cv5utils10BufferArea8allocateIfEEvRPT_mt(pt 48: ; preds = %45 %49 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 50: ; preds = %46 %51 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #17 - br label %75 + br label %76 52: ; preds = %42 - %53 = tail call range(i16 1, 15) i16 @llvm.ctpop.i16(i16 %3) - %54 = icmp ult i16 %53, 2 - br i1 %54, label %62, label %55 + %53 = add i16 %3, -4 + %54 = and i16 %53, %3 + %55 = icmp eq i16 %54, 0 + br i1 %55, label %63, label %56 -55: ; preds = %52 +56: ; preds = %52 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #17 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %14) - to label %56 unwind label %58 + to label %57 unwind label %59 -56: ; preds = %55 +57: ; preds = %56 invoke void @_ZN2cv5errorEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcS9_i(i32 noundef -215, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @__func__._ZN2cv5utils10BufferArea8allocateIiEEvRPT_mt, ptr noundef nonnull @.str.28, i32 noundef 73) #16 - to label %57 unwind label %60 + to label %58 unwind label %61 -57: ; preds = %56 +58: ; preds = %57 unreachable -58: ; preds = %55 - %59 = landingpad { ptr, i32 } +59: ; preds = %56 + %60 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 -60: ; preds = %56 - %61 = landingpad { ptr, i32 } +61: ; preds = %57 + %62 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #17 - br label %75 + br label %76 -62: ; preds = %52 +63: ; preds = %52 tail call void @_ZN2cv5utils10BufferArea9allocate_EPPvtmt(ptr noundef nonnull align 8 dereferenceable(41) %0, ptr noundef nonnull %1, i16 noundef zeroext 4, i64 noundef %2, i16 noundef zeroext %3) - %63 = getelementptr inbounds i8, ptr %0, i64 40 - %64 = load i8, ptr %63, align 8 - %65 = trunc i8 %64 to i1 - %66 = load ptr, ptr %1, align 8 - %.not31 = icmp eq ptr %66, null - %or.cond = select i1 %65, i1 %.not31, i1 false - br i1 %or.cond, label %67, label %74 - -67: ; preds = %62 + %64 = getelementptr inbounds i8, ptr %0, i64 40 + %65 = load i8, ptr %64, align 8 + %66 = trunc i8 %65 to i1 + %67 = load ptr, ptr %1, align 8 + %.not31 = icmp eq ptr %67, null + %or.cond = select i1 %66, i1 %.not31, i1 false + br i1 %or.cond, label %68, label %75 + +68: ; preds = %63 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #17 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.33, ptr noundef nonnull align 1 dereferenceable(1) %16) - to label %68 unwind label %70 + to label %69 unwind label %71 -68: ; preds = %67 +69: ; preds = %68 invoke void @_ZN2cv5errorEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcS9_i(i32 noundef -215, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @__func__._ZN2cv5utils10BufferArea8allocateIiEEvRPT_mt, ptr noundef nonnull @.str.28, i32 noundef 78) #16 - to label %69 unwind label %72 + to label %70 unwind label %73 -69: ; preds = %68 +70: ; preds = %69 unreachable -70: ; preds = %67 - %71 = landingpad { ptr, i32 } +71: ; preds = %68 + %72 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 -72: ; preds = %68 - %73 = landingpad { ptr, i32 } +73: ; preds = %69 + %74 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #17 - br label %75 + br label %76 -74: ; preds = %62 +75: ; preds = %63 ret void -75: ; preds = %70, %72, %58, %60, %48, %50, %38, %40, %30, %32, %22, %24 - %.sink = phi ptr [ %6, %24 ], [ %6, %22 ], [ %8, %32 ], [ %8, %30 ], [ %10, %40 ], [ %10, %38 ], [ %12, %50 ], [ %12, %48 ], [ %14, %60 ], [ %14, %58 ], [ %16, %72 ], [ %16, %70 ] - %.pn32.pn = phi { ptr, i32 } [ %25, %24 ], [ %23, %22 ], [ %33, %32 ], [ %31, %30 ], [ %41, %40 ], [ %39, %38 ], [ %51, %50 ], [ %49, %48 ], [ %61, %60 ], [ %59, %58 ], [ %73, %72 ], [ %71, %70 ] +76: ; preds = %71, %73, %59, %61, %48, %50, %38, %40, %30, %32, %22, %24 + %.sink = phi ptr [ %6, %24 ], [ %6, %22 ], [ %8, %32 ], [ %8, %30 ], [ %10, %40 ], [ %10, %38 ], [ %12, %50 ], [ %12, %48 ], [ %14, %61 ], [ %14, %59 ], [ %16, %73 ], [ %16, %71 ] + %.pn32.pn = phi { ptr, i32 } [ %25, %24 ], [ %23, %22 ], [ %33, %32 ], [ %31, %30 ], [ %41, %40 ], [ %39, %38 ], [ %51, %50 ], [ %49, %48 ], [ %62, %61 ], [ %60, %59 ], [ %74, %73 ], [ %72, %71 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %.sink) #17 resume { ptr, i32 } %.pn32.pn } diff --git a/bench/opencv/optimized/fast.cpp.ll b/bench/opencv/optimized/fast.cpp.ll index b992bf0915c..0824af51e83 100644 --- a/bench/opencv/optimized/fast.cpp.ll +++ b/bench/opencv/optimized/fast.cpp.ll @@ -2719,13 +2719,13 @@ define linkonce_odr hidden void @_ZN2cv5utils10BufferArea8allocateIiEEvRPT_mt(pt 22: ; preds = %19 %23 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 24: ; preds = %20 %25 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #16 - br label %75 + br label %76 26: ; preds = %4 %.not = icmp eq i64 %2, 0 @@ -2746,13 +2746,13 @@ define linkonce_odr hidden void @_ZN2cv5utils10BufferArea8allocateIiEEvRPT_mt(pt 30: ; preds = %27 %31 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 32: ; preds = %28 %33 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #16 - br label %75 + br label %76 34: ; preds = %26 %.not24 = icmp eq i16 %3, 0 @@ -2773,13 +2773,13 @@ define linkonce_odr hidden void @_ZN2cv5utils10BufferArea8allocateIiEEvRPT_mt(pt 38: ; preds = %35 %39 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 40: ; preds = %36 %41 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #16 - br label %75 + br label %76 42: ; preds = %34 %43 = and i16 %3, 3 @@ -2801,81 +2801,82 @@ define linkonce_odr hidden void @_ZN2cv5utils10BufferArea8allocateIiEEvRPT_mt(pt 48: ; preds = %45 %49 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 50: ; preds = %46 %51 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #16 - br label %75 + br label %76 52: ; preds = %42 - %53 = tail call range(i16 1, 15) i16 @llvm.ctpop.i16(i16 %3) - %54 = icmp ult i16 %53, 2 - br i1 %54, label %62, label %55 + %53 = add i16 %3, -4 + %54 = and i16 %53, %3 + %55 = icmp eq i16 %54, 0 + br i1 %55, label %63, label %56 -55: ; preds = %52 +56: ; preds = %52 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #16 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.12, ptr noundef nonnull align 1 dereferenceable(1) %14) - to label %56 unwind label %58 + to label %57 unwind label %59 -56: ; preds = %55 +57: ; preds = %56 invoke void @_ZN2cv5errorEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcS9_i(i32 noundef -215, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @__func__._ZN2cv5utils10BufferArea8allocateIhEEvRPT_mt, ptr noundef nonnull @.str.8, i32 noundef 73) #18 - to label %57 unwind label %60 + to label %58 unwind label %61 -57: ; preds = %56 +58: ; preds = %57 unreachable -58: ; preds = %55 - %59 = landingpad { ptr, i32 } +59: ; preds = %56 + %60 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 -60: ; preds = %56 - %61 = landingpad { ptr, i32 } +61: ; preds = %57 + %62 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #16 - br label %75 + br label %76 -62: ; preds = %52 +63: ; preds = %52 tail call void @_ZN2cv5utils10BufferArea9allocate_EPPvtmt(ptr noundef nonnull align 8 dereferenceable(41) %0, ptr noundef nonnull %1, i16 noundef zeroext 4, i64 noundef %2, i16 noundef zeroext %3) - %63 = getelementptr inbounds i8, ptr %0, i64 40 - %64 = load i8, ptr %63, align 8 - %65 = trunc i8 %64 to i1 - %66 = load ptr, ptr %1, align 8 - %.not31 = icmp eq ptr %66, null - %or.cond = select i1 %65, i1 %.not31, i1 false - br i1 %or.cond, label %67, label %74 - -67: ; preds = %62 + %64 = getelementptr inbounds i8, ptr %0, i64 40 + %65 = load i8, ptr %64, align 8 + %66 = trunc i8 %65 to i1 + %67 = load ptr, ptr %1, align 8 + %.not31 = icmp eq ptr %67, null + %or.cond = select i1 %66, i1 %.not31, i1 false + br i1 %or.cond, label %68, label %75 + +68: ; preds = %63 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #16 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %16) - to label %68 unwind label %70 + to label %69 unwind label %71 -68: ; preds = %67 +69: ; preds = %68 invoke void @_ZN2cv5errorEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcS9_i(i32 noundef -215, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @__func__._ZN2cv5utils10BufferArea8allocateIhEEvRPT_mt, ptr noundef nonnull @.str.8, i32 noundef 78) #18 - to label %69 unwind label %72 + to label %70 unwind label %73 -69: ; preds = %68 +70: ; preds = %69 unreachable -70: ; preds = %67 - %71 = landingpad { ptr, i32 } +71: ; preds = %68 + %72 = landingpad { ptr, i32 } cleanup - br label %75 + br label %76 -72: ; preds = %68 - %73 = landingpad { ptr, i32 } +73: ; preds = %69 + %74 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #16 - br label %75 + br label %76 -74: ; preds = %62 +75: ; preds = %63 ret void -75: ; preds = %70, %72, %58, %60, %48, %50, %38, %40, %30, %32, %22, %24 - %.sink = phi ptr [ %6, %24 ], [ %6, %22 ], [ %8, %32 ], [ %8, %30 ], [ %10, %40 ], [ %10, %38 ], [ %12, %50 ], [ %12, %48 ], [ %14, %60 ], [ %14, %58 ], [ %16, %72 ], [ %16, %70 ] - %.pn32.pn = phi { ptr, i32 } [ %25, %24 ], [ %23, %22 ], [ %33, %32 ], [ %31, %30 ], [ %41, %40 ], [ %39, %38 ], [ %51, %50 ], [ %49, %48 ], [ %61, %60 ], [ %59, %58 ], [ %73, %72 ], [ %71, %70 ] +76: ; preds = %71, %73, %59, %61, %48, %50, %38, %40, %30, %32, %22, %24 + %.sink = phi ptr [ %6, %24 ], [ %6, %22 ], [ %8, %32 ], [ %8, %30 ], [ %10, %40 ], [ %10, %38 ], [ %12, %50 ], [ %12, %48 ], [ %14, %61 ], [ %14, %59 ], [ %16, %73 ], [ %16, %71 ] + %.pn32.pn = phi { ptr, i32 } [ %25, %24 ], [ %23, %22 ], [ %33, %32 ], [ %31, %30 ], [ %41, %40 ], [ %39, %38 ], [ %51, %50 ], [ %49, %48 ], [ %62, %61 ], [ %60, %59 ], [ %74, %73 ], [ %72, %71 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %.sink) #16 resume { ptr, i32 } %.pn32.pn } diff --git a/bench/openjdk/optimized/c1_FrameMap.ll b/bench/openjdk/optimized/c1_FrameMap.ll index c5f9b5fba6c..adcc5301b1f 100644 --- a/bench/openjdk/optimized/c1_FrameMap.ll +++ b/bench/openjdk/optimized/c1_FrameMap.ll @@ -737,105 +737,104 @@ define hidden noundef zeroext i1 @_ZN8FrameMap14finalize_frameEi(ptr noundef non %6 = add i32 %5, 7 %7 = and i32 %6, -8 %8 = shl nsw i32 %1, 2 - %9 = add i32 %8, 7 + %9 = add i32 %8, 4 %10 = add i32 %9, %7 - %11 = and i32 %10, -8 - %12 = getelementptr inbounds i8, ptr %0, i64 8 - %13 = load i32, ptr %12, align 8 - %14 = shl nsw i32 %13, 4 - %15 = add i32 %14, 39 - %16 = add i32 %15, %11 - %17 = ashr i32 %16, 2 - %18 = and i32 %17, -4 - store i32 %18, ptr %0, align 8 - %19 = getelementptr inbounds i8, ptr %0, i64 24 + %11 = getelementptr inbounds i8, ptr %0, i64 8 + %12 = load i32, ptr %11, align 8 + %13 = shl nsw i32 %12, 4 + %14 = add nsw i32 %10, %13 + %15 = and i32 %14, -16 + %16 = add i32 %15, 32 + %17 = ashr exact i32 %16, 2 + store i32 %17, ptr %0, align 8 + %18 = getelementptr inbounds i8, ptr %0, i64 24 + %19 = load ptr, ptr %18, align 8 %20 = load ptr, ptr %19, align 8 - %21 = load ptr, ptr %20, align 8 - %22 = load i32, ptr %21, align 4 - %23 = icmp sgt i32 %22, 0 - br i1 %23, label %.lr.ph, label %._crit_edge + %21 = load i32, ptr %20, align 4 + %22 = icmp sgt i32 %21, 0 + br i1 %22, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %2 - %24 = getelementptr inbounds i8, ptr %0, i64 32 - br label %25 + %23 = getelementptr inbounds i8, ptr %0, i64 32 + br label %24 -25: ; preds = %.lr.ph, %_ZNK7LIR_Opr4typeEv.exit +24: ; preds = %.lr.ph, %_ZNK7LIR_Opr4typeEv.exit %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %_ZNK7LIR_Opr4typeEv.exit ] - %26 = phi ptr [ %21, %.lr.ph ], [ %66, %_ZNK7LIR_Opr4typeEv.exit ] - %.079 = phi i32 [ 0, %.lr.ph ], [ %64, %_ZNK7LIR_Opr4typeEv.exit ] - %27 = getelementptr inbounds i8, ptr %26, i64 8 - %28 = load ptr, ptr %27, align 8 - %29 = getelementptr inbounds %class.LIR_Opr, ptr %28, i64 %indvars.iv - %.sroa.0.0.copyload.i = load i64, ptr %29, align 8 - %30 = and i64 %.sroa.0.0.copyload.i, 7 - %31 = icmp eq i64 %30, 1 - br i1 %31, label %32, label %42 - -32: ; preds = %25 - %33 = load ptr, ptr %24, align 8 - %34 = load i32, ptr %0, align 8 - %35 = shl nsw i32 %34, 2 - %36 = getelementptr inbounds i8, ptr %33, i64 8 - %37 = load ptr, ptr %36, align 8 - %38 = sext i32 %.079 to i64 - %39 = getelementptr inbounds i32, ptr %37, i64 %38 - %40 = load i32, ptr %39, align 4 - %41 = add nsw i32 %40, %35 - store i32 %41, ptr %39, align 4 - br label %42 - -42: ; preds = %32, %25 - %43 = and i64 %.sroa.0.0.copyload.i, 1 - %44 = icmp eq i64 %43, 0 - br i1 %44, label %45, label %52 + %25 = phi ptr [ %20, %.lr.ph ], [ %65, %_ZNK7LIR_Opr4typeEv.exit ] + %.079 = phi i32 [ 0, %.lr.ph ], [ %63, %_ZNK7LIR_Opr4typeEv.exit ] + %26 = getelementptr inbounds i8, ptr %25, i64 8 + %27 = load ptr, ptr %26, align 8 + %28 = getelementptr inbounds %class.LIR_Opr, ptr %27, i64 %indvars.iv + %.sroa.0.0.copyload.i = load i64, ptr %28, align 8 + %29 = and i64 %.sroa.0.0.copyload.i, 7 + %30 = icmp eq i64 %29, 1 + br i1 %30, label %31, label %41 + +31: ; preds = %24 + %32 = load ptr, ptr %23, align 8 + %33 = load i32, ptr %0, align 8 + %34 = shl nsw i32 %33, 2 + %35 = getelementptr inbounds i8, ptr %32, i64 8 + %36 = load ptr, ptr %35, align 8 + %37 = sext i32 %.079 to i64 + %38 = getelementptr inbounds i32, ptr %36, i64 %37 + %39 = load i32, ptr %38, align 4 + %40 = add nsw i32 %39, %34 + store i32 %40, ptr %38, align 4 + br label %41 -45: ; preds = %42 - %46 = inttoptr i64 %.sroa.0.0.copyload.i to ptr - %47 = load ptr, ptr %46, align 8 - %48 = getelementptr inbounds i8, ptr %47, i64 16 - %49 = load ptr, ptr %48, align 8 - %50 = tail call noundef zeroext i8 %49(ptr noundef nonnull align 8 dereferenceable(8) %46) #9 - %51 = zext i8 %50 to i64 +41: ; preds = %31, %24 + %42 = and i64 %.sroa.0.0.copyload.i, 1 + %43 = icmp eq i64 %42, 0 + br i1 %43, label %44, label %51 + +44: ; preds = %41 + %45 = inttoptr i64 %.sroa.0.0.copyload.i to ptr + %46 = load ptr, ptr %45, align 8 + %47 = getelementptr inbounds i8, ptr %46, i64 16 + %48 = load ptr, ptr %47, align 8 + %49 = tail call noundef zeroext i8 %48(ptr noundef nonnull align 8 dereferenceable(8) %45) #9 + %50 = zext i8 %49 to i64 br label %_ZNK7LIR_Opr4typeEv.exit -52: ; preds = %42 - %53 = icmp eq i64 %30, 7 - %54 = trunc i64 %.sroa.0.0.copyload.i to i32 - %55 = lshr i32 %54, 3 - %56 = and i32 %55, 15 - %57 = add nsw i32 %56, -1 - %switch.tableidx = select i1 %53, i32 -1, i32 %57 - %58 = icmp ult i32 %switch.tableidx, 7 - br i1 %58, label %switch.lookup, label %59 - -59: ; preds = %52 - %60 = load ptr, ptr @g_assert_poison, align 8 - store i8 88, ptr %60, align 1 +51: ; preds = %41 + %52 = icmp eq i64 %29, 7 + %53 = trunc i64 %.sroa.0.0.copyload.i to i32 + %54 = lshr i32 %53, 3 + %55 = and i32 %54, 15 + %56 = add nsw i32 %55, -1 + %switch.tableidx = select i1 %52, i32 -1, i32 %56 + %57 = icmp ult i32 %switch.tableidx, 7 + br i1 %57, label %switch.lookup, label %58 + +58: ; preds = %51 + %59 = load ptr, ptr @g_assert_poison, align 8 + store i8 88, ptr %59, align 1 tail call void @_Z28report_should_not_reach_herePKci(ptr noundef nonnull @.str.4, i32 noundef 508) #10 unreachable -switch.lookup: ; preds = %52 - %61 = zext nneg i32 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds [7 x i64], ptr @switch.table._ZN8FrameMap14finalize_frameEi, i64 0, i64 %61 +switch.lookup: ; preds = %51 + %60 = zext nneg i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds [7 x i64], ptr @switch.table._ZN8FrameMap14finalize_frameEi, i64 0, i64 %60 %switch.load = load i64, ptr %switch.gep, align 8 br label %_ZNK7LIR_Opr4typeEv.exit -_ZNK7LIR_Opr4typeEv.exit: ; preds = %switch.lookup, %45 - %.0.i = phi i64 [ %51, %45 ], [ %switch.load, %switch.lookup ] - %62 = getelementptr inbounds [20 x i32], ptr @type2size, i64 0, i64 %.0.i - %63 = load i32, ptr %62, align 4 - %64 = add nsw i32 %63, %.079 +_ZNK7LIR_Opr4typeEv.exit: ; preds = %switch.lookup, %44 + %.0.i = phi i64 [ %50, %44 ], [ %switch.load, %switch.lookup ] + %61 = getelementptr inbounds [20 x i32], ptr @type2size, i64 0, i64 %.0.i + %62 = load i32, ptr %61, align 4 + %63 = add nsw i32 %62, %.079 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %65 = load ptr, ptr %19, align 8 - %66 = load ptr, ptr %65, align 8 - %67 = load i32, ptr %66, align 4 - %68 = sext i32 %67 to i64 - %69 = icmp slt i64 %indvars.iv.next, %68 - br i1 %69, label %25, label %._crit_edge, !llvm.loop !15 + %64 = load ptr, ptr %18, align 8 + %65 = load ptr, ptr %64, align 8 + %66 = load i32, ptr %65, align 4 + %67 = sext i32 %66 to i64 + %68 = icmp slt i64 %indvars.iv.next, %67 + br i1 %68, label %24, label %._crit_edge, !llvm.loop !15 ._crit_edge: ; preds = %_ZNK7LIR_Opr4typeEv.exit, %2 - %70 = tail call noundef zeroext i1 @_ZN8FrameMap14validate_frameEv(ptr noundef nonnull align 8 dereferenceable(40) %0) #9 - ret i1 %70 + %69 = tail call noundef zeroext i1 @_ZN8FrameMap14validate_frameEv(ptr noundef nonnull align 8 dereferenceable(40) %0) #9 + ret i1 %69 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable @@ -847,7 +846,7 @@ define hidden noundef i32 @_ZNK8FrameMap26sp_offset_for_monitor_baseEi(ptr nocap %7 = getelementptr inbounds i8, ptr %0, i64 12 %8 = load i32, ptr %7, align 4 %9 = shl nsw i32 %8, 2 - %10 = add i32 %9, 7 + %10 = add i32 %9, 4 %11 = add i32 %10, %6 %12 = and i32 %11, -8 %13 = shl nsw i32 %1, 4 @@ -1024,7 +1023,7 @@ define hidden noundef i32 @_ZNK8FrameMap26sp_offset_for_monitor_lockEi(ptr nocap %7 = getelementptr inbounds i8, ptr %0, i64 12 %8 = load i32, ptr %7, align 4 %9 = shl nsw i32 %8, 2 - %10 = add i32 %9, 7 + %10 = add i32 %9, 4 %11 = add i32 %10, %6 %12 = and i32 %11, -8 %13 = shl nsw i32 %1, 4 @@ -1041,7 +1040,7 @@ define hidden noundef range(i32 -2147483640, -2147483648) i32 @_ZNK8FrameMap28sp %7 = getelementptr inbounds i8, ptr %0, i64 12 %8 = load i32, ptr %7, align 4 %9 = shl nsw i32 %8, 2 - %10 = add i32 %9, 7 + %10 = add i32 %9, 4 %11 = add i32 %10, %6 %12 = and i32 %11, -8 %13 = shl nsw i32 %1, 4 diff --git a/bench/openjdk/optimized/cmscgats.ll b/bench/openjdk/optimized/cmscgats.ll index 6a93d07614f..54240740707 100644 --- a/bench/openjdk/optimized/cmscgats.ll +++ b/bench/openjdk/optimized/cmscgats.ll @@ -5854,7 +5854,7 @@ GetTable.exit: ; preds = %5, %7 %11 = getelementptr inbounds i8, ptr %.0.i, i64 1048 %12 = load ptr, ptr %11, align 8 %.not = icmp eq ptr %12, null - br i1 %.not, label %13, label %72 + br i1 %.not, label %13, label %71 13: ; preds = %GetTable.exit %14 = load i32, ptr %2, align 4 @@ -5914,7 +5914,7 @@ satoi.exit: ; preds = %cmsIT8GetProperty.e 37: ; preds = %satoi.exit.thread, %satoi.exit tail call void (ptr, ptr, ...) @SynError(ptr noundef nonnull %0, ptr noundef nonnull @.str.149) - br label %72 + br label %71 38: ; preds = %satoi.exit %39 = shl i32 %spec.select.i, 3 @@ -5924,73 +5924,72 @@ satoi.exit: ; preds = %cmsIT8GetProperty.e %43 = getelementptr inbounds i8, ptr %0, i64 271356 %44 = load i32, ptr %43, align 4 %45 = sub i32 %42, %44 - %46 = add i32 %39, 15 - %47 = and i32 %46, -8 - %48 = icmp ugt i32 %47, %45 - br i1 %48, label %49, label %thread-pre-split.i - -49: ; preds = %38 - %50 = icmp eq i32 %42, 0 - %51 = shl i32 %42, 1 - %storemerge.i = select i1 %50, i32 20480, i32 %51 - %storemerge25.i = tail call i32 @llvm.umax.i32(i32 %storemerge.i, i32 %47) + %46 = add i32 %39, 8 + %47 = icmp ugt i32 %46, %45 + br i1 %47, label %48, label %thread-pre-split.i + +48: ; preds = %38 + %49 = icmp eq i32 %42, 0 + %50 = shl i32 %42, 1 + %storemerge.i = select i1 %49, i32 20480, i32 %50 + %storemerge25.i = tail call i32 @llvm.umax.i32(i32 %storemerge.i, i32 %46) store i32 %storemerge25.i, ptr %41, align 8 store i32 0, ptr %43, align 4 - %52 = getelementptr inbounds i8, ptr %0, i64 271736 - %53 = load ptr, ptr %52, align 8 - %54 = tail call ptr @_cmsMallocZero(ptr noundef %53, i32 noundef %storemerge25.i) #17 - %.not.i.i15 = icmp eq ptr %54, null - br i1 %.not.i.i15, label %AllocBigBlock.exit.i, label %55 - -55: ; preds = %49 - %56 = load ptr, ptr %52, align 8 - %57 = tail call ptr @_cmsMallocZero(ptr noundef %56, i32 noundef 16) #17 - %58 = icmp eq ptr %57, null - br i1 %58, label %59, label %61 - -59: ; preds = %55 - %60 = load ptr, ptr %52, align 8 - tail call void @_cmsFree(ptr noundef %60, ptr noundef nonnull %54) #17 + %51 = getelementptr inbounds i8, ptr %0, i64 271736 + %52 = load ptr, ptr %51, align 8 + %53 = tail call ptr @_cmsMallocZero(ptr noundef %52, i32 noundef %storemerge25.i) #17 + %.not.i.i15 = icmp eq ptr %53, null + br i1 %.not.i.i15, label %AllocBigBlock.exit.i, label %54 + +54: ; preds = %48 + %55 = load ptr, ptr %51, align 8 + %56 = tail call ptr @_cmsMallocZero(ptr noundef %55, i32 noundef 16) #17 + %57 = icmp eq ptr %56, null + br i1 %57, label %58, label %60 + +58: ; preds = %54 + %59 = load ptr, ptr %51, align 8 + tail call void @_cmsFree(ptr noundef %59, ptr noundef nonnull %53) #17 br label %AllocBigBlock.exit.i -61: ; preds = %55 - %62 = getelementptr inbounds i8, ptr %57, i64 8 - store ptr %54, ptr %62, align 8 - %63 = getelementptr inbounds i8, ptr %0, i64 271336 - %64 = load ptr, ptr %63, align 8 - store ptr %64, ptr %57, align 8 - store ptr %57, ptr %63, align 8 +60: ; preds = %54 + %61 = getelementptr inbounds i8, ptr %56, i64 8 + store ptr %53, ptr %61, align 8 + %62 = getelementptr inbounds i8, ptr %0, i64 271336 + %63 = load ptr, ptr %62, align 8 + store ptr %63, ptr %56, align 8 + store ptr %56, ptr %62, align 8 br label %AllocBigBlock.exit.i -AllocBigBlock.exit.i: ; preds = %61, %59, %49 - %.0.i.i16 = phi ptr [ null, %59 ], [ %54, %61 ], [ null, %49 ] +AllocBigBlock.exit.i: ; preds = %60, %58, %48 + %.0.i.i16 = phi ptr [ null, %58 ], [ %53, %60 ], [ null, %48 ] store ptr %.0.i.i16, ptr %40, align 8 - br label %65 + br label %64 thread-pre-split.i: ; preds = %38 %.pr.i = load ptr, ptr %40, align 8 - br label %65 + br label %64 -65: ; preds = %thread-pre-split.i, %AllocBigBlock.exit.i - %66 = phi ptr [ %.pr.i, %thread-pre-split.i ], [ %.0.i.i16, %AllocBigBlock.exit.i ] - %67 = icmp eq ptr %66, null - br i1 %67, label %AllocChunk.exit.thread, label %AllocChunk.exit +64: ; preds = %thread-pre-split.i, %AllocBigBlock.exit.i + %65 = phi ptr [ %.pr.i, %thread-pre-split.i ], [ %.0.i.i16, %AllocBigBlock.exit.i ] + %66 = icmp eq ptr %65, null + br i1 %66, label %AllocChunk.exit.thread, label %AllocChunk.exit -AllocChunk.exit.thread: ; preds = %65 +AllocChunk.exit.thread: ; preds = %64 store ptr null, ptr %11, align 8 tail call void (ptr, ptr, ...) @SynError(ptr noundef nonnull %0, ptr noundef nonnull @.str.150) - br label %72 + br label %71 -AllocChunk.exit: ; preds = %65 - %68 = load i32, ptr %43, align 4 - %69 = zext i32 %68 to i64 - %70 = getelementptr inbounds i8, ptr %66, i64 %69 - %71 = add i32 %68, %47 - store i32 %71, ptr %43, align 4 - store ptr %70, ptr %11, align 8 - br label %72 +AllocChunk.exit: ; preds = %64 + %67 = load i32, ptr %43, align 4 + %68 = zext i32 %67 to i64 + %69 = getelementptr inbounds i8, ptr %65, i64 %68 + %70 = add i32 %67, %46 + store i32 %70, ptr %43, align 4 + store ptr %69, ptr %11, align 8 + br label %71 -72: ; preds = %AllocChunk.exit, %GetTable.exit, %AllocChunk.exit.thread, %37 +71: ; preds = %AllocChunk.exit, %GetTable.exit, %AllocChunk.exit.thread, %37 %.0 = phi i32 [ 0, %37 ], [ 0, %AllocChunk.exit.thread ], [ 1, %GetTable.exit ], [ 1, %AllocChunk.exit ] ret i32 %.0 } @@ -7460,7 +7459,7 @@ switch.early.test286: ; preds = %48 %73 = getelementptr inbounds i8, ptr %69, i64 271356 %74 = load i32, ptr %73, align 4 %75 = sub i32 %72, %74 - %76 = add i32 %68, 7 + %76 = add i32 %68, 6 %77 = and i32 %76, -8 %78 = icmp ugt i32 %77, %75 br i1 %78, label %79, label %thread-pre-split.i.i @@ -9030,7 +9029,7 @@ define internal fastcc void @StringAppend(ptr nocapture noundef %0, i8 noundef s %14 = getelementptr inbounds i8, ptr %10, i64 271356 %15 = load i32, ptr %14, align 4 %16 = sub i32 %13, %15 - %17 = add i32 %9, 7 + %17 = add i32 %9, 6 %18 = and i32 %17, -8 %19 = icmp ugt i32 %18, %16 br i1 %19, label %20, label %thread-pre-split.i diff --git a/bench/openjdk/optimized/g1CardSet.ll b/bench/openjdk/optimized/g1CardSet.ll index efcf4d33f50..dfd25793669 100644 --- a/bench/openjdk/optimized/g1CardSet.ll +++ b/bench/openjdk/optimized/g1CardSet.ll @@ -524,7 +524,7 @@ define hidden void @_ZN22G1CardSetConfigurationC2Ejjdjdjj(ptr nocapture noundef %45 = getelementptr inbounds i8, ptr %41, i64 40 store i8 6, ptr %45, align 8 %46 = getelementptr inbounds i8, ptr %41, i64 44 - %47 = add i32 %44, 23 + %47 = add i32 %44, 22 %48 = and i32 %47, -8 store i32 %48, ptr %46, align 4 %49 = getelementptr inbounds i8, ptr %41, i64 48 @@ -545,56 +545,54 @@ define hidden void @_ZN22G1CardSetConfigurationC2Ejjdjdjj(ptr nocapture noundef %60 = getelementptr inbounds i8, ptr %52, i64 72 store i8 6, ptr %60, align 8 %61 = getelementptr inbounds i8, ptr %52, i64 76 - %62 = add nuw nsw i32 %59, 23 - %63 = and i32 %62, 2147483640 - store i32 %63, ptr %61, align 4 - %64 = getelementptr inbounds i8, ptr %52, i64 80 - store i32 2, ptr %64, align 8 - %65 = getelementptr inbounds i8, ptr %52, i64 84 - store i32 256, ptr %65, align 4 - %66 = getelementptr inbounds i8, ptr %52, i64 88 - store i32 8, ptr %66, align 8 + %62 = add nuw nsw i32 %59, 16 + store i32 %62, ptr %61, align 4 + %63 = getelementptr inbounds i8, ptr %52, i64 80 + store i32 2, ptr %63, align 8 + %64 = getelementptr inbounds i8, ptr %52, i64 84 + store i32 256, ptr %64, align 4 + %65 = getelementptr inbounds i8, ptr %52, i64 88 + store i32 8, ptr %65, align 8 store ptr getelementptr inbounds inrange(-16, 8) (i8, ptr @_ZTV21G1CardSetAllocOptions, i64 16), ptr %53, align 8 - %67 = load ptr, ptr %35, align 8 - %68 = getelementptr inbounds i8, ptr %67, i64 96 - %69 = load i32, ptr %11, align 8 - %70 = shl i32 %69, 3 - %71 = getelementptr inbounds i8, ptr %67, i64 104 - store i8 6, ptr %71, align 8 - %72 = getelementptr inbounds i8, ptr %67, i64 108 - %73 = add i32 %70, 23 - %74 = and i32 %73, -8 - store i32 %74, ptr %72, align 4 - %75 = getelementptr inbounds i8, ptr %67, i64 112 - store i32 2, ptr %75, align 8 - %76 = getelementptr inbounds i8, ptr %67, i64 116 - store i32 256, ptr %76, align 4 - %77 = getelementptr inbounds i8, ptr %67, i64 120 - store i32 8, ptr %77, align 8 - store ptr getelementptr inbounds inrange(-16, 8) (i8, ptr @_ZTV21G1CardSetAllocOptions, i64 16), ptr %68, align 8 + %66 = load ptr, ptr %35, align 8 + %67 = getelementptr inbounds i8, ptr %66, i64 96 + %68 = load i32, ptr %11, align 8 + %69 = shl i32 %68, 3 + %70 = getelementptr inbounds i8, ptr %66, i64 104 + store i8 6, ptr %70, align 8 + %71 = getelementptr inbounds i8, ptr %66, i64 108 + %72 = add i32 %69, 16 + store i32 %72, ptr %71, align 4 + %73 = getelementptr inbounds i8, ptr %66, i64 112 + store i32 2, ptr %73, align 8 + %74 = getelementptr inbounds i8, ptr %66, i64 116 + store i32 256, ptr %74, align 4 + %75 = getelementptr inbounds i8, ptr %66, i64 120 + store i32 8, ptr %75, align 8 + store ptr getelementptr inbounds inrange(-16, 8) (i8, ptr @_ZTV21G1CardSetAllocOptions, i64 16), ptr %67, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) store i32 2, ptr %9, align 8 %.sroa.21.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %9, i64 8 store ptr @_ZN16LogTagSetMappingILN6LogTag4typeE49ELS1_130ELS1_0ELS1_0ELS1_0ELS1_0EE7_tagsetE, ptr %.sroa.21.0..sroa_idx.i.i, align 8 - %78 = load i32, ptr %0, align 8 - %79 = udiv i32 59, %78 - %80 = load i32, ptr %10, align 4 - %81 = zext i32 %80 to i64 - %82 = shl nuw nsw i64 %81, 1 - %83 = add nuw nsw i64 %82, 16 - %84 = load i32, ptr %11, align 8 - %85 = load i32, ptr %13, align 8 - %86 = load i32, ptr %17, align 4 - %87 = zext i32 %86 to i64 - %88 = add nuw nsw i64 %87, 63 - %89 = lshr i64 %88, 3 - %90 = and i64 %89, 1073741816 - %91 = add nuw nsw i64 %90, 16 - %92 = load i32, ptr %23, align 8 - %93 = load i32, ptr %31, align 4 - %94 = shl nuw i32 1, %93 - %95 = load i32, ptr %12, align 4 - call void (ptr, ptr, ...) @_ZN19GCLogPreciousHandle5writeEPKcz(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull @.str, i32 noundef %79, i64 noundef 8, i32 noundef %80, i64 noundef %83, i32 noundef %84, i32 noundef %85, i32 noundef %86, i64 noundef %91, i32 noundef %92, i32 noundef %94, i32 noundef %95) + %76 = load i32, ptr %0, align 8 + %77 = udiv i32 59, %76 + %78 = load i32, ptr %10, align 4 + %79 = zext i32 %78 to i64 + %80 = shl nuw nsw i64 %79, 1 + %81 = add nuw nsw i64 %80, 16 + %82 = load i32, ptr %11, align 8 + %83 = load i32, ptr %13, align 8 + %84 = load i32, ptr %17, align 4 + %85 = zext i32 %84 to i64 + %86 = add nuw nsw i64 %85, 63 + %87 = lshr i64 %86, 3 + %88 = and i64 %87, 1073741816 + %89 = add nuw nsw i64 %88, 16 + %90 = load i32, ptr %23, align 8 + %91 = load i32, ptr %31, align 4 + %92 = shl nuw i32 1, %91 + %93 = load i32, ptr %12, align 4 + call void (ptr, ptr, ...) @_ZN19GCLogPreciousHandle5writeEPKcz(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull @.str, i32 noundef %77, i64 noundef 8, i32 noundef %78, i64 noundef %81, i32 noundef %82, i32 noundef %83, i32 noundef %84, i64 noundef %89, i32 noundef %90, i32 noundef %92, i32 noundef %93) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) ret void } @@ -644,7 +642,7 @@ define hidden void @_ZN22G1CardSetConfiguration27init_card_set_alloc_optionsEv(p %14 = getelementptr inbounds i8, ptr %9, i64 40 store i8 6, ptr %14, align 8 %15 = getelementptr inbounds i8, ptr %9, i64 44 - %16 = add i32 %13, 23 + %16 = add i32 %13, 22 %17 = and i32 %16, -8 store i32 %17, ptr %15, align 4 %18 = getelementptr inbounds i8, ptr %9, i64 48 @@ -666,34 +664,32 @@ define hidden void @_ZN22G1CardSetConfiguration27init_card_set_alloc_optionsEv(p %30 = getelementptr inbounds i8, ptr %21, i64 72 store i8 6, ptr %30, align 8 %31 = getelementptr inbounds i8, ptr %21, i64 76 - %32 = add nuw nsw i32 %29, 23 - %33 = and i32 %32, 2147483640 - store i32 %33, ptr %31, align 4 - %34 = getelementptr inbounds i8, ptr %21, i64 80 - store i32 2, ptr %34, align 8 - %35 = getelementptr inbounds i8, ptr %21, i64 84 - store i32 256, ptr %35, align 4 - %36 = getelementptr inbounds i8, ptr %21, i64 88 - store i32 8, ptr %36, align 8 + %32 = add nuw nsw i32 %29, 16 + store i32 %32, ptr %31, align 4 + %33 = getelementptr inbounds i8, ptr %21, i64 80 + store i32 2, ptr %33, align 8 + %34 = getelementptr inbounds i8, ptr %21, i64 84 + store i32 256, ptr %34, align 4 + %35 = getelementptr inbounds i8, ptr %21, i64 88 + store i32 8, ptr %35, align 8 store ptr getelementptr inbounds inrange(-16, 8) (i8, ptr @_ZTV21G1CardSetAllocOptions, i64 16), ptr %22, align 8 - %37 = load ptr, ptr %3, align 8 - %38 = getelementptr inbounds i8, ptr %37, i64 96 - %39 = getelementptr inbounds i8, ptr %0, i64 8 - %40 = load i32, ptr %39, align 8 - %41 = shl i32 %40, 3 - %42 = getelementptr inbounds i8, ptr %37, i64 104 - store i8 6, ptr %42, align 8 - %43 = getelementptr inbounds i8, ptr %37, i64 108 - %44 = add i32 %41, 23 - %45 = and i32 %44, -8 - store i32 %45, ptr %43, align 4 - %46 = getelementptr inbounds i8, ptr %37, i64 112 - store i32 2, ptr %46, align 8 - %47 = getelementptr inbounds i8, ptr %37, i64 116 - store i32 256, ptr %47, align 4 - %48 = getelementptr inbounds i8, ptr %37, i64 120 - store i32 8, ptr %48, align 8 - store ptr getelementptr inbounds inrange(-16, 8) (i8, ptr @_ZTV21G1CardSetAllocOptions, i64 16), ptr %38, align 8 + %36 = load ptr, ptr %3, align 8 + %37 = getelementptr inbounds i8, ptr %36, i64 96 + %38 = getelementptr inbounds i8, ptr %0, i64 8 + %39 = load i32, ptr %38, align 8 + %40 = shl i32 %39, 3 + %41 = getelementptr inbounds i8, ptr %36, i64 104 + store i8 6, ptr %41, align 8 + %42 = getelementptr inbounds i8, ptr %36, i64 108 + %43 = add i32 %40, 16 + store i32 %43, ptr %42, align 4 + %44 = getelementptr inbounds i8, ptr %36, i64 112 + store i32 2, ptr %44, align 8 + %45 = getelementptr inbounds i8, ptr %36, i64 116 + store i32 256, ptr %45, align 4 + %46 = getelementptr inbounds i8, ptr %36, i64 120 + store i32 8, ptr %46, align 8 + store ptr getelementptr inbounds inrange(-16, 8) (i8, ptr @_ZTV21G1CardSetAllocOptions, i64 16), ptr %37, align 8 ret void } @@ -10997,7 +10993,7 @@ define linkonce_odr hidden void @_ZN21OopOopIterateDispatchI14G1CMOopClosureE5Ta %25 = select i1 %24, i32 16, i32 20 %26 = load i8, ptr @UseCompressedOops, align 1 %27 = trunc i8 %26 to i1 - %narrow.i.i.i.i.i = add nuw nsw i32 %25, 7 + %narrow.i.i.i.i.i = add nuw nsw i32 %25, 4 %28 = and i32 %narrow.i.i.i.i.i, 24 %29 = select i1 %27, i32 %25, i32 %28 %30 = ptrtoint ptr %1 to i64 @@ -11091,7 +11087,7 @@ define linkonce_odr hidden void @_ZN21OopOopIterateDispatchI14G1CMOopClosureE5Ta %25 = select i1 %24, i32 16, i32 20 %26 = load i8, ptr @UseCompressedOops, align 1 %27 = trunc i8 %26 to i1 - %narrow.i.i.i.i.i = add nuw nsw i32 %25, 7 + %narrow.i.i.i.i.i = add nuw nsw i32 %25, 4 %28 = and i32 %narrow.i.i.i.i.i, 24 %29 = select i1 %27, i32 %25, i32 %28 %30 = ptrtoint ptr %1 to i64 @@ -15424,7 +15420,7 @@ define linkonce_odr hidden void @_ZN28OopOopIterateBoundedDispatchI14G1CMOopClos %28 = select i1 %27, i32 16, i32 20 %29 = load i8, ptr @UseCompressedOops, align 1 %30 = trunc i8 %29 to i1 - %narrow.i.i.i.i.i = add nuw nsw i32 %28, 7 + %narrow.i.i.i.i.i = add nuw nsw i32 %28, 4 %31 = and i32 %narrow.i.i.i.i.i, 24 %32 = select i1 %30, i32 %28, i32 %31 %33 = ptrtoint ptr %1 to i64 @@ -15523,7 +15519,7 @@ define linkonce_odr hidden void @_ZN28OopOopIterateBoundedDispatchI14G1CMOopClos %28 = select i1 %27, i32 16, i32 20 %29 = load i8, ptr @UseCompressedOops, align 1 %30 = trunc i8 %29 to i1 - %narrow.i.i.i.i.i = add nuw nsw i32 %28, 7 + %narrow.i.i.i.i.i = add nuw nsw i32 %28, 4 %31 = and i32 %narrow.i.i.i.i.i, 24 %32 = select i1 %30, i32 %28, i32 %31 %33 = ptrtoint ptr %1 to i64 diff --git a/bench/openspiel/optimized/best_response_test.cc.ll b/bench/openspiel/optimized/best_response_test.cc.ll index f3fa0331c46..67d826ce919 100644 --- a/bench/openspiel/optimized/best_response_test.cc.ll +++ b/bench/openspiel/optimized/best_response_test.cc.ll @@ -11312,7 +11312,7 @@ define linkonce_odr dso_local void @_ZN4absl7debian218container_internal10btree_ %.not73 = icmp eq i8 %4, 0 %5 = getelementptr inbounds i8, ptr %0, i64 10 %6 = load i8, ptr %5, align 1 - br i1 %.not73, label %19, label %7 + br i1 %.not73, label %18, label %7 7: ; preds = %2 %8 = zext i8 %6 to i64 @@ -11344,187 +11344,185 @@ _ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10 %14 = select i1 %13, i8 10, i8 %12 %15 = zext i8 %14 to i64 %16 = mul nuw nsw i64 %15, 24 - %17 = add nuw nsw i64 %16, 19 - %18 = and i64 %17, 16376 + %17 = add nuw nsw i64 %16, 16 br label %.loopexit.sink.split -19: ; preds = %2 - %20 = icmp eq i8 %6, 0 - br i1 %20, label %.loopexit.sink.split, label %.lr.ph88.preheader +18: ; preds = %2 + %19 = icmp eq i8 %6, 0 + br i1 %19, label %.loopexit.sink.split, label %.lr.ph88.preheader -.lr.ph88.preheader: ; preds = %19 - %21 = load ptr, ptr %0, align 8 +.lr.ph88.preheader: ; preds = %18 + %20 = load ptr, ptr %0, align 8 br label %.lr.ph88 .lr.ph88: ; preds = %.lr.ph88.preheader, %.lr.ph88 - %.04987 = phi ptr [ %23, %.lr.ph88 ], [ %0, %.lr.ph88.preheader ] - %22 = getelementptr inbounds i8, ptr %.04987, i64 256 - %23 = load ptr, ptr %22, align 8 - %24 = getelementptr inbounds i8, ptr %23, i64 11 - %25 = load i8, ptr %24, align 1 - %.not74 = icmp eq i8 %25, 0 + %.04987 = phi ptr [ %22, %.lr.ph88 ], [ %0, %.lr.ph88.preheader ] + %21 = getelementptr inbounds i8, ptr %.04987, i64 256 + %22 = load ptr, ptr %21, align 8 + %23 = getelementptr inbounds i8, ptr %22, i64 11 + %24 = load i8, ptr %23, align 1 + %.not74 = icmp eq i8 %24, 0 br i1 %.not74, label %.lr.ph88, label %._crit_edge, !llvm.loop !45 ._crit_edge: ; preds = %.lr.ph88 - %26 = getelementptr inbounds i8, ptr %23, i64 8 - %27 = load i8, ptr %26, align 1 - %28 = zext i8 %27 to i32 - %29 = load ptr, ptr %23, align 8 - br label %30 - -30: ; preds = %.backedge, %._crit_edge - %.147 = phi i32 [ %28, %._crit_edge ], [ %.147.be, %.backedge ] - %.1 = phi ptr [ %29, %._crit_edge ], [ %.1.be, %.backedge ] - %31 = getelementptr inbounds i8, ptr %.1, i64 256 - %32 = sext i32 %.147 to i64 - %33 = getelementptr inbounds ptr, ptr %31, i64 %32 - %34 = load ptr, ptr %33, align 8 - %35 = getelementptr inbounds i8, ptr %34, i64 11 - %36 = load i8, ptr %35, align 1 - %.not75 = icmp eq i8 %36, 0 - br i1 %.not75, label %.lr.ph91, label %45 - -.lr.ph91: ; preds = %30, %.lr.ph91 - %.25190 = phi ptr [ %38, %.lr.ph91 ], [ %34, %30 ] - %37 = getelementptr inbounds i8, ptr %.25190, i64 256 - %38 = load ptr, ptr %37, align 8 - %39 = getelementptr inbounds i8, ptr %38, i64 11 - %40 = load i8, ptr %39, align 1 - %.not76 = icmp eq i8 %40, 0 + %25 = getelementptr inbounds i8, ptr %22, i64 8 + %26 = load i8, ptr %25, align 1 + %27 = zext i8 %26 to i32 + %28 = load ptr, ptr %22, align 8 + br label %29 + +29: ; preds = %.backedge, %._crit_edge + %.147 = phi i32 [ %27, %._crit_edge ], [ %.147.be, %.backedge ] + %.1 = phi ptr [ %28, %._crit_edge ], [ %.1.be, %.backedge ] + %30 = getelementptr inbounds i8, ptr %.1, i64 256 + %31 = sext i32 %.147 to i64 + %32 = getelementptr inbounds ptr, ptr %30, i64 %31 + %33 = load ptr, ptr %32, align 8 + %34 = getelementptr inbounds i8, ptr %33, i64 11 + %35 = load i8, ptr %34, align 1 + %.not75 = icmp eq i8 %35, 0 + br i1 %.not75, label %.lr.ph91, label %44 + +.lr.ph91: ; preds = %29, %.lr.ph91 + %.25190 = phi ptr [ %37, %.lr.ph91 ], [ %33, %29 ] + %36 = getelementptr inbounds i8, ptr %.25190, i64 256 + %37 = load ptr, ptr %36, align 8 + %38 = getelementptr inbounds i8, ptr %37, i64 11 + %39 = load i8, ptr %38, align 1 + %.not76 = icmp eq i8 %39, 0 br i1 %.not76, label %.lr.ph91, label %._crit_edge92, !llvm.loop !46 ._crit_edge92: ; preds = %.lr.ph91 - %41 = getelementptr inbounds i8, ptr %38, i64 8 - %42 = load i8, ptr %41, align 1 - %43 = zext i8 %42 to i32 - %44 = load ptr, ptr %38, align 8 - br label %45 - -45: ; preds = %._crit_edge92, %30 - %.150 = phi ptr [ %34, %30 ], [ %38, %._crit_edge92 ] - %.248 = phi i32 [ %.147, %30 ], [ %43, %._crit_edge92 ] - %.2 = phi ptr [ %.1, %30 ], [ %44, %._crit_edge92 ] - %46 = getelementptr inbounds i8, ptr %.150, i64 10 - %47 = load i8, ptr %46, align 1 - %48 = zext i8 %47 to i64 - %.idx103 = mul nuw nsw i64 %48, 24 + %40 = getelementptr inbounds i8, ptr %37, i64 8 + %41 = load i8, ptr %40, align 1 + %42 = zext i8 %41 to i32 + %43 = load ptr, ptr %37, align 8 + br label %44 + +44: ; preds = %._crit_edge92, %29 + %.150 = phi ptr [ %33, %29 ], [ %37, %._crit_edge92 ] + %.248 = phi i32 [ %.147, %29 ], [ %42, %._crit_edge92 ] + %.2 = phi ptr [ %.1, %29 ], [ %43, %._crit_edge92 ] + %45 = getelementptr inbounds i8, ptr %.150, i64 10 + %46 = load i8, ptr %45, align 1 + %47 = zext i8 %46 to i64 + %.idx103 = mul nuw nsw i64 %47, 24 %.add = add nuw nsw i64 %.idx103, 16 %.ptr105 = getelementptr inbounds i8, ptr %.150, i64 %.add - %.not.i5694 = icmp eq i8 %47, 0 + %.not.i5694 = icmp eq i8 %46, 0 br i1 %.not.i5694, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57, label %.lr.ph97.preheader -.lr.ph97.preheader: ; preds = %45 +.lr.ph97.preheader: ; preds = %44 %.ptr104 = getelementptr inbounds i8, ptr %.150, i64 16 br label %.lr.ph97 .lr.ph97: ; preds = %.lr.ph97.preheader, %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit - %.0.i5595 = phi ptr [ %77, %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit ], [ %.ptr104, %.lr.ph97.preheader ] - %49 = getelementptr inbounds nuw i8, ptr %.0.i5595, i64 16 - %50 = load ptr, ptr %49, align 8 - %.not.i61 = icmp eq ptr %50, null - br i1 %.not.i61, label %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit, label %51 - -51: ; preds = %.lr.ph97 - %52 = getelementptr inbounds nuw i8, ptr %50, i64 128 - %53 = getelementptr inbounds nuw i8, ptr %50, i64 144 - %54 = load i64, ptr %53, align 8 - %55 = icmp eq i64 %54, 0 - br i1 %55, label %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i, label %56 - -56: ; preds = %51 - %57 = load ptr, ptr %52, align 8 - invoke void @_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE16clear_and_deleteEPSJ_PSH_(ptr noundef %57, ptr noundef nonnull %52) - to label %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i unwind label %61 - -_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i: ; preds = %56, %51 - store ptr @_ZZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE9EmptyNodeEvE10empty_node, ptr %52, align 8 - %58 = getelementptr inbounds nuw i8, ptr %50, i64 136 - store ptr @_ZZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE9EmptyNodeEvE10empty_node, ptr %58, align 8 - store i64 0, ptr %53, align 8 - %59 = getelementptr inbounds nuw i8, ptr %50, i64 112 - %60 = load i64, ptr %59, align 8 - %.not.i.i.i.i.i = icmp eq i64 %60, 0 + %.0.i5595 = phi ptr [ %76, %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit ], [ %.ptr104, %.lr.ph97.preheader ] + %48 = getelementptr inbounds nuw i8, ptr %.0.i5595, i64 16 + %49 = load ptr, ptr %48, align 8 + %.not.i61 = icmp eq ptr %49, null + br i1 %.not.i61, label %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit, label %50 + +50: ; preds = %.lr.ph97 + %51 = getelementptr inbounds nuw i8, ptr %49, i64 128 + %52 = getelementptr inbounds nuw i8, ptr %49, i64 144 + %53 = load i64, ptr %52, align 8 + %54 = icmp eq i64 %53, 0 + br i1 %54, label %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i, label %55 + +55: ; preds = %50 + %56 = load ptr, ptr %51, align 8 + invoke void @_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE16clear_and_deleteEPSJ_PSH_(ptr noundef %56, ptr noundef nonnull %51) + to label %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i unwind label %60 + +_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i: ; preds = %55, %50 + store ptr @_ZZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE9EmptyNodeEvE10empty_node, ptr %51, align 8 + %57 = getelementptr inbounds nuw i8, ptr %49, i64 136 + store ptr @_ZZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE9EmptyNodeEvE10empty_node, ptr %57, align 8 + store i64 0, ptr %52, align 8 + %58 = getelementptr inbounds nuw i8, ptr %49, i64 112 + %59 = load i64, ptr %58, align 8 + %.not.i.i.i.i.i = icmp eq i64 %59, 0 br i1 %.not.i.i.i.i.i, label %_ZN4absl7debian213flat_hash_setIlNS0_13hash_internal4HashIlEESt8equal_toIlESaIlEED2Ev.exit.i.i, label %.preheader.preheader.i.i.i.i.i -61: ; preds = %56 - %62 = landingpad { ptr, i32 } +60: ; preds = %55 + %61 = landingpad { ptr, i32 } catch ptr null - %63 = extractvalue { ptr, i32 } %62, 0 - tail call void @__clang_call_terminate(ptr %63) #22 + %62 = extractvalue { ptr, i32 } %61, 0 + tail call void @__clang_call_terminate(ptr %62) #22 unreachable .preheader.preheader.i.i.i.i.i: ; preds = %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i - %64 = getelementptr inbounds nuw i8, ptr %50, i64 88 - %65 = getelementptr inbounds nuw i8, ptr %50, i64 96 - %66 = load ptr, ptr %64, align 8 - %67 = add i64 %60, 24 - %68 = shl i64 %60, 3 - %69 = add i64 %67, %68 - %70 = and i64 %69, -8 - tail call void @_ZdlPvm(ptr noundef %66, i64 noundef %70) #23 - store ptr @_ZZN4absl7debian218container_internal10EmptyGroupEvE11empty_group, ptr %64, align 8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %65, i8 0, i64 32, i1 false) + %63 = getelementptr inbounds nuw i8, ptr %49, i64 88 + %64 = getelementptr inbounds nuw i8, ptr %49, i64 96 + %65 = load ptr, ptr %63, align 8 + %66 = add i64 %59, 24 + %67 = shl i64 %59, 3 + %68 = add i64 %66, %67 + %69 = and i64 %68, -8 + tail call void @_ZdlPvm(ptr noundef %65, i64 noundef %69) #23 + store ptr @_ZZN4absl7debian218container_internal10EmptyGroupEvE11empty_group, ptr %63, align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %64, i8 0, i64 32, i1 false) br label %_ZN4absl7debian213flat_hash_setIlNS0_13hash_internal4HashIlEESt8equal_toIlESaIlEED2Ev.exit.i.i _ZN4absl7debian213flat_hash_setIlNS0_13hash_internal4HashIlEESt8equal_toIlESaIlEED2Ev.exit.i.i: ; preds = %.preheader.preheader.i.i.i.i.i, %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i - %71 = getelementptr inbounds nuw i8, ptr %50, i64 40 + %70 = getelementptr inbounds nuw i8, ptr %49, i64 40 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #21 + %71 = getelementptr inbounds nuw i8, ptr %49, i64 8 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #21 - %72 = getelementptr inbounds nuw i8, ptr %50, i64 8 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #21 - %73 = load ptr, ptr %50, align 8 - %.not.i.i.i = icmp eq ptr %73, null + %72 = load ptr, ptr %49, align 8 + %.not.i.i.i = icmp eq ptr %72, null br i1 %.not.i.i.i, label %_ZNKSt14default_deleteIN10open_spiel10algorithms11HistoryNodeEEclEPS2_.exit.i, label %_ZNKSt14default_deleteIN10open_spiel5StateEEclEPS1_.exit.i.i.i _ZNKSt14default_deleteIN10open_spiel5StateEEclEPS1_.exit.i.i.i: ; preds = %_ZN4absl7debian213flat_hash_setIlNS0_13hash_internal4HashIlEESt8equal_toIlESaIlEED2Ev.exit.i.i - %74 = load ptr, ptr %73, align 8 - %75 = getelementptr inbounds i8, ptr %74, i64 8 - %76 = load ptr, ptr %75, align 8 - tail call void %76(ptr noundef nonnull align 8 dereferenceable(60) %73) #21 + %73 = load ptr, ptr %72, align 8 + %74 = getelementptr inbounds i8, ptr %73, i64 8 + %75 = load ptr, ptr %74, align 8 + tail call void %75(ptr noundef nonnull align 8 dereferenceable(60) %72) #21 br label %_ZNKSt14default_deleteIN10open_spiel10algorithms11HistoryNodeEEclEPS2_.exit.i _ZNKSt14default_deleteIN10open_spiel10algorithms11HistoryNodeEEclEPS2_.exit.i: ; preds = %_ZN4absl7debian213flat_hash_setIlNS0_13hash_internal4HashIlEESt8equal_toIlESaIlEED2Ev.exit.i.i, %_ZNKSt14default_deleteIN10open_spiel5StateEEclEPS1_.exit.i.i.i - tail call void @_ZdlPvm(ptr noundef nonnull %50, i64 noundef 152) #23 + tail call void @_ZdlPvm(ptr noundef nonnull %49, i64 noundef 152) #23 br label %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit _ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit: ; preds = %.lr.ph97, %_ZNKSt14default_deleteIN10open_spiel10algorithms11HistoryNodeEEclEPS2_.exit.i - store ptr null, ptr %49, align 8 - %77 = getelementptr inbounds i8, ptr %.0.i5595, i64 24 - %.not.i56 = icmp eq ptr %77, %.ptr105 + store ptr null, ptr %48, align 8 + %76 = getelementptr inbounds i8, ptr %.0.i5595, i64 24 + %.not.i56 = icmp eq ptr %76, %.ptr105 br i1 %.not.i56, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57, label %.lr.ph97, !llvm.loop !44 -_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57: ; preds = %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit, %45 - %78 = getelementptr inbounds i8, ptr %.150, i64 11 - %79 = load i8, ptr %78, align 1 - %80 = icmp eq i8 %79, 0 - %81 = select i1 %80, i8 10, i8 %79 - %82 = zext i8 %81 to i64 - %83 = mul nuw nsw i64 %82, 24 - %84 = add nuw nsw i64 %83, 19 - %85 = and i64 %84, 16376 - tail call void @_ZdlPvm(ptr noundef %.150, i64 noundef %85) #23 - %86 = getelementptr inbounds i8, ptr %.2, i64 10 - %87 = load i8, ptr %86, align 1 - %88 = zext i8 %87 to i32 - %.not.not = icmp slt i32 %.248, %88 +_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57: ; preds = %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit, %44 + %77 = getelementptr inbounds i8, ptr %.150, i64 11 + %78 = load i8, ptr %77, align 1 + %79 = icmp eq i8 %78, 0 + %80 = select i1 %79, i8 10, i8 %78 + %81 = zext i8 %80 to i64 + %82 = mul nuw nsw i64 %81, 24 + %83 = add nuw nsw i64 %82, 16 + tail call void @_ZdlPvm(ptr noundef %.150, i64 noundef %83) #23 + %84 = getelementptr inbounds i8, ptr %.2, i64 10 + %85 = load i8, ptr %84, align 1 + %86 = zext i8 %85 to i32 + %.not.not = icmp slt i32 %.248, %86 br i1 %.not.not, label %.backedge, label %.preheader77 -.backedge: ; preds = %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57, %127 - %.147.be.in = phi i32 [ %.248, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57 ], [ %128, %127 ] - %.1.be = phi ptr [ %.2, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57 ], [ %92, %127 ] +.backedge: ; preds = %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57, %125 + %.147.be.in = phi i32 [ %.248, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57 ], [ %126, %125 ] + %.1.be = phi ptr [ %.2, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57 ], [ %90, %125 ] %.147.be = add nuw nsw i32 %.147.be.in, 1 - br label %30, !llvm.loop !47 - -.preheader77: ; preds = %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57, %124 - %89 = phi i8 [ %126, %124 ], [ %87, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57 ] - %.3 = phi ptr [ %92, %124 ], [ %.2, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57 ] - %90 = getelementptr inbounds i8, ptr %.3, i64 8 - %91 = load i8, ptr %90, align 1 - %92 = load ptr, ptr %.3, align 8 - %93 = zext i8 %89 to i64 - %.idx106 = mul nuw nsw i64 %93, 24 + br label %29, !llvm.loop !47 + +.preheader77: ; preds = %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57, %122 + %87 = phi i8 [ %124, %122 ], [ %85, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57 ] + %.3 = phi ptr [ %90, %122 ], [ %.2, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit57 ] + %88 = getelementptr inbounds i8, ptr %.3, i64 8 + %89 = load i8, ptr %88, align 1 + %90 = load ptr, ptr %.3, align 8 + %91 = zext i8 %87 to i64 + %.idx106 = mul nuw nsw i64 %91, 24 %.add107 = add nuw nsw i64 %.idx106, 16 %.ptr109 = getelementptr inbounds i8, ptr %.3, i64 %.add107 - %.not.i5998 = icmp eq i8 %89, 0 + %.not.i5998 = icmp eq i8 %87, 0 br i1 %.not.i5998, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit60, label %.lr.ph101.preheader .lr.ph101.preheader: ; preds = %.preheader77 @@ -11532,97 +11530,97 @@ _ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10 br label %.lr.ph101 .lr.ph101: ; preds = %.lr.ph101.preheader, %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit72 - %.0.i5899 = phi ptr [ %122, %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit72 ], [ %.ptr108, %.lr.ph101.preheader ] - %94 = getelementptr inbounds nuw i8, ptr %.0.i5899, i64 16 - %95 = load ptr, ptr %94, align 8 - %.not.i62 = icmp eq ptr %95, null - br i1 %.not.i62, label %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit72, label %96 - -96: ; preds = %.lr.ph101 - %97 = getelementptr inbounds nuw i8, ptr %95, i64 128 - %98 = getelementptr inbounds nuw i8, ptr %95, i64 144 - %99 = load i64, ptr %98, align 8 - %100 = icmp eq i64 %99, 0 - br i1 %100, label %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i64, label %101 - -101: ; preds = %96 - %102 = load ptr, ptr %97, align 8 - invoke void @_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE16clear_and_deleteEPSJ_PSH_(ptr noundef %102, ptr noundef nonnull %97) - to label %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i64 unwind label %106 - -_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i64: ; preds = %101, %96 - store ptr @_ZZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE9EmptyNodeEvE10empty_node, ptr %97, align 8 - %103 = getelementptr inbounds nuw i8, ptr %95, i64 136 - store ptr @_ZZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE9EmptyNodeEvE10empty_node, ptr %103, align 8 - store i64 0, ptr %98, align 8 - %104 = getelementptr inbounds nuw i8, ptr %95, i64 112 - %105 = load i64, ptr %104, align 8 - %.not.i.i.i.i.i65 = icmp eq i64 %105, 0 + %.0.i5899 = phi ptr [ %120, %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit72 ], [ %.ptr108, %.lr.ph101.preheader ] + %92 = getelementptr inbounds nuw i8, ptr %.0.i5899, i64 16 + %93 = load ptr, ptr %92, align 8 + %.not.i62 = icmp eq ptr %93, null + br i1 %.not.i62, label %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit72, label %94 + +94: ; preds = %.lr.ph101 + %95 = getelementptr inbounds nuw i8, ptr %93, i64 128 + %96 = getelementptr inbounds nuw i8, ptr %93, i64 144 + %97 = load i64, ptr %96, align 8 + %98 = icmp eq i64 %97, 0 + br i1 %98, label %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i64, label %99 + +99: ; preds = %94 + %100 = load ptr, ptr %95, align 8 + invoke void @_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE16clear_and_deleteEPSJ_PSH_(ptr noundef %100, ptr noundef nonnull %95) + to label %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i64 unwind label %104 + +_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i64: ; preds = %99, %94 + store ptr @_ZZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE9EmptyNodeEvE10empty_node, ptr %95, align 8 + %101 = getelementptr inbounds nuw i8, ptr %93, i64 136 + store ptr @_ZZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE9EmptyNodeEvE10empty_node, ptr %101, align 8 + store i64 0, ptr %96, align 8 + %102 = getelementptr inbounds nuw i8, ptr %93, i64 112 + %103 = load i64, ptr %102, align 8 + %.not.i.i.i.i.i65 = icmp eq i64 %103, 0 br i1 %.not.i.i.i.i.i65, label %_ZN4absl7debian213flat_hash_setIlNS0_13hash_internal4HashIlEESt8equal_toIlESaIlEED2Ev.exit.i.i67, label %.preheader.preheader.i.i.i.i.i66 -106: ; preds = %101 - %107 = landingpad { ptr, i32 } +104: ; preds = %99 + %105 = landingpad { ptr, i32 } catch ptr null - %108 = extractvalue { ptr, i32 } %107, 0 - tail call void @__clang_call_terminate(ptr %108) #22 + %106 = extractvalue { ptr, i32 } %105, 0 + tail call void @__clang_call_terminate(ptr %106) #22 unreachable .preheader.preheader.i.i.i.i.i66: ; preds = %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i64 - %109 = getelementptr inbounds nuw i8, ptr %95, i64 88 - %110 = getelementptr inbounds nuw i8, ptr %95, i64 96 - %111 = load ptr, ptr %109, align 8 - %112 = add i64 %105, 24 - %113 = shl i64 %105, 3 - %114 = add i64 %112, %113 - %115 = and i64 %114, -8 - tail call void @_ZdlPvm(ptr noundef %111, i64 noundef %115) #23 - store ptr @_ZZN4absl7debian218container_internal10EmptyGroupEvE11empty_group, ptr %109, align 8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %110, i8 0, i64 32, i1 false) + %107 = getelementptr inbounds nuw i8, ptr %93, i64 88 + %108 = getelementptr inbounds nuw i8, ptr %93, i64 96 + %109 = load ptr, ptr %107, align 8 + %110 = add i64 %103, 24 + %111 = shl i64 %103, 3 + %112 = add i64 %110, %111 + %113 = and i64 %112, -8 + tail call void @_ZdlPvm(ptr noundef %109, i64 noundef %113) #23 + store ptr @_ZZN4absl7debian218container_internal10EmptyGroupEvE11empty_group, ptr %107, align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %108, i8 0, i64 32, i1 false) br label %_ZN4absl7debian213flat_hash_setIlNS0_13hash_internal4HashIlEESt8equal_toIlESaIlEED2Ev.exit.i.i67 _ZN4absl7debian213flat_hash_setIlNS0_13hash_internal4HashIlEESt8equal_toIlESaIlEED2Ev.exit.i.i67: ; preds = %.preheader.preheader.i.i.i.i.i66, %_ZN4absl7debian218container_internal5btreeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE5clearEv.exit.i64 - %116 = getelementptr inbounds nuw i8, ptr %95, i64 40 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #21 - %117 = getelementptr inbounds nuw i8, ptr %95, i64 8 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #21 - %118 = load ptr, ptr %95, align 8 - %.not.i.i.i68 = icmp eq ptr %118, null + %114 = getelementptr inbounds nuw i8, ptr %93, i64 40 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #21 + %115 = getelementptr inbounds nuw i8, ptr %93, i64 8 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #21 + %116 = load ptr, ptr %93, align 8 + %.not.i.i.i68 = icmp eq ptr %116, null br i1 %.not.i.i.i68, label %_ZNKSt14default_deleteIN10open_spiel10algorithms11HistoryNodeEEclEPS2_.exit.i71, label %_ZNKSt14default_deleteIN10open_spiel5StateEEclEPS1_.exit.i.i.i69 _ZNKSt14default_deleteIN10open_spiel5StateEEclEPS1_.exit.i.i.i69: ; preds = %_ZN4absl7debian213flat_hash_setIlNS0_13hash_internal4HashIlEESt8equal_toIlESaIlEED2Ev.exit.i.i67 + %117 = load ptr, ptr %116, align 8 + %118 = getelementptr inbounds i8, ptr %117, i64 8 %119 = load ptr, ptr %118, align 8 - %120 = getelementptr inbounds i8, ptr %119, i64 8 - %121 = load ptr, ptr %120, align 8 - tail call void %121(ptr noundef nonnull align 8 dereferenceable(60) %118) #21 + tail call void %119(ptr noundef nonnull align 8 dereferenceable(60) %116) #21 br label %_ZNKSt14default_deleteIN10open_spiel10algorithms11HistoryNodeEEclEPS2_.exit.i71 _ZNKSt14default_deleteIN10open_spiel10algorithms11HistoryNodeEEclEPS2_.exit.i71: ; preds = %_ZN4absl7debian213flat_hash_setIlNS0_13hash_internal4HashIlEESt8equal_toIlESaIlEED2Ev.exit.i.i67, %_ZNKSt14default_deleteIN10open_spiel5StateEEclEPS1_.exit.i.i.i69 - tail call void @_ZdlPvm(ptr noundef nonnull %95, i64 noundef 152) #23 + tail call void @_ZdlPvm(ptr noundef nonnull %93, i64 noundef 152) #23 br label %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit72 _ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit72: ; preds = %.lr.ph101, %_ZNKSt14default_deleteIN10open_spiel10algorithms11HistoryNodeEEclEPS2_.exit.i71 - store ptr null, ptr %94, align 8 - %122 = getelementptr inbounds i8, ptr %.0.i5899, i64 24 - %.not.i59 = icmp eq ptr %122, %.ptr109 + store ptr null, ptr %92, align 8 + %120 = getelementptr inbounds i8, ptr %.0.i5899, i64 24 + %.not.i59 = icmp eq ptr %120, %.ptr109 br i1 %.not.i59, label %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit60, label %.lr.ph101, !llvm.loop !44 _ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit60: ; preds = %_ZNSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS2_EED2Ev.exit72, %.preheader77 tail call void @_ZdlPvm(ptr noundef %.3, i64 noundef 344) #23 - %123 = icmp eq ptr %92, %21 - br i1 %123, label %.loopexit, label %124 + %121 = icmp eq ptr %90, %20 + br i1 %121, label %.loopexit, label %122 -124: ; preds = %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit60 - %125 = getelementptr inbounds i8, ptr %92, i64 10 - %126 = load i8, ptr %125, align 1 - %.not = icmp ult i8 %91, %126 - br i1 %.not, label %127, label %.preheader77, !llvm.loop !48 +122: ; preds = %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit60 + %123 = getelementptr inbounds i8, ptr %90, i64 10 + %124 = load i8, ptr %123, align 1 + %.not = icmp ult i8 %89, %124 + br i1 %.not, label %125, label %.preheader77, !llvm.loop !48 -127: ; preds = %124 - %128 = zext i8 %91 to i32 +125: ; preds = %122 + %126 = zext i8 %89 to i32 br label %.backedge -.loopexit.sink.split: ; preds = %19, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit - %.sink = phi i64 [ %18, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit ], [ 344, %19 ] +.loopexit.sink.split: ; preds = %18, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit + %.sink = phi i64 [ %17, %_ZN4absl7debian218container_internal10btree_nodeINS1_10map_paramsIlSt4pairIdSt10unique_ptrIN10open_spiel10algorithms11HistoryNodeESt14default_deleteIS8_EEESt4lessIlESaIS4_IKlSC_EELi256ELb0EEEE15value_destroy_nEhhPSH_.exit ], [ 344, %18 ] tail call void @_ZdlPvm(ptr noundef nonnull %0, i64 noundef %.sink) #23 br label %.loopexit diff --git a/bench/openssl/optimized/libcrypto-lib-curve448.ll b/bench/openssl/optimized/libcrypto-lib-curve448.ll index 35af94e53ef..992d93c7d42 100644 --- a/bench/openssl/optimized/libcrypto-lib-curve448.ll +++ b/bench/openssl/optimized/libcrypto-lib-curve448.ll @@ -938,15 +938,14 @@ entry: call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(57) %enc2, ptr noundef nonnull align 1 dereferenceable(57) %enc, i64 57, i1 false) %arrayidx = getelementptr inbounds i8, ptr %enc2, i64 56 %0 = load i8, ptr %arrayidx, align 8 - %1 = and i8 %0, -128 - %conv1 = zext i8 %1 to i64 - %sub.i = add nsw i64 %conv1, -1 + %conv1 = zext i8 %0 to i64 + %sub.i = add nsw i64 %conv1, -128 %shr.neg.i.i = ashr i64 %sub.i, 63 - %2 = and i8 %0, 127 - store i8 %2, ptr %arrayidx, align 8 + %1 = and i8 %0, 127 + store i8 %1, ptr %arrayidx, align 8 %y = getelementptr inbounds i8, ptr %p, i64 64 %call8 = call i64 @gf_deserialize(ptr noundef nonnull %y, ptr noundef nonnull %enc2, i32 noundef 1, i8 noundef zeroext 0) #7 - %3 = load i8, ptr %arrayidx, align 8 + %2 = load i8, ptr %arrayidx, align 8 call void @ossl_gf_sqr(ptr noundef %p, ptr noundef nonnull %y) #7 %z = getelementptr inbounds i8, ptr %p, i64 128 call void @gf_sub(ptr noundef nonnull %z, ptr noundef nonnull @ONE, ptr noundef %p) #7 @@ -958,22 +957,22 @@ entry: %call36 = call i64 @gf_isr(ptr noundef nonnull %t, ptr noundef %p) #7 call void @ossl_gf_mul(ptr noundef %p, ptr noundef nonnull %t, ptr noundef nonnull %z) #7 %call48 = call i64 @gf_lobit(ptr noundef %p) #7 - %4 = xor i64 %call48, %shr.neg.i.i - %xor = xor i64 %4, -1 + %3 = xor i64 %call48, %shr.neg.i.i + %xor = xor i64 %3, -1 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %y.i) call void @gf_sub(ptr noundef nonnull %y.i, ptr noundef nonnull @ZERO, ptr noundef %p) #7 - %5 = call i64 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i64 %xor) #8, !srcloc !19 - %6 = call i64 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i64 %4) #8, !srcloc !19 + %4 = call i64 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i64 %xor) #8, !srcloc !19 + %5 = call i64 asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"(i64 %3) #8, !srcloc !19 br label %for.body.i.i for.body.i.i: ; preds = %for.body.i.i, %entry %i.05.i.i = phi i64 [ 0, %entry ], [ %inc.i.i, %for.body.i.i ] %arrayidx1.i.i = getelementptr inbounds [8 x i64], ptr %y.i, i64 0, i64 %i.05.i.i - %7 = load i64, ptr %arrayidx1.i.i, align 8 + %6 = load i64, ptr %arrayidx1.i.i, align 8 %arrayidx4.i.i = getelementptr inbounds [8 x i64], ptr %p, i64 0, i64 %i.05.i.i - %8 = load i64, ptr %arrayidx4.i.i, align 8 - %and.i.i.i = and i64 %7, %5 - %and2.i.i.i = and i64 %8, %6 + %7 = load i64, ptr %arrayidx4.i.i, align 8 + %and.i.i.i = and i64 %6, %4 + %and2.i.i.i = and i64 %7, %5 %or.i.i.i = or i64 %and2.i.i.i, %and.i.i.i store i64 %or.i.i.i, ptr %arrayidx4.i.i, align 8 %inc.i.i = add nuw nsw i64 %i.05.i.i, 1 @@ -981,7 +980,7 @@ for.body.i.i: ; preds = %for.body.i.i, %entr br i1 %exitcond.not.i.i, label %gf_cond_neg.exit, label %for.body.i.i, !llvm.loop !20 gf_cond_neg.exit: ; preds = %for.body.i.i - %isneg = icmp eq i8 %3, 0 + %isneg = icmp eq i8 %2, 0 %and12 = select i1 %isneg, i64 %call8, i64 0 %and37 = and i64 %call36, %and12 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %y.i) diff --git a/bench/php/optimized/zend_ast.ll b/bench/php/optimized/zend_ast.ll index 1781869b913..6c743560ed3 100644 --- a/bench/php/optimized/zend_ast.ll +++ b/bench/php/optimized/zend_ast.ll @@ -1837,7 +1837,7 @@ define noundef ptr @zend_ast_list_add(ptr noundef %0, ptr noundef %1) local_unna %6 = tail call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 %4) %7 = icmp ult i32 %6, 2 %or.cond = select i1 %5, i1 %7, i1 false - br i1 %or.cond, label %8, label %36 + br i1 %or.cond, label %8, label %35 8: ; preds = %2 %9 = zext i32 %4 to i64 @@ -1848,55 +1848,54 @@ define noundef ptr @zend_ast_list_add(ptr noundef %0, ptr noundef %1) local_unna %14 = shl nuw nsw i64 %13, 3 %15 = load ptr, ptr getelementptr inbounds (i8, ptr @compiler_globals, i64 432), align 8 %16 = load ptr, ptr %15, align 8 - %17 = add nuw nsw i64 %14, 23 - %18 = and i64 %17, 68719476720 - %19 = getelementptr inbounds i8, ptr %15, i64 8 - %20 = load ptr, ptr %19, align 8 - %21 = ptrtoint ptr %20 to i64 - %22 = ptrtoint ptr %16 to i64 - %23 = sub i64 %21, %22 - %.not.i.i = icmp ugt i64 %18, %23 - br i1 %.not.i.i, label %26, label %24 - -24: ; preds = %8 - %25 = getelementptr inbounds i8, ptr %16, i64 %18 - store ptr %25, ptr %15, align 8 + %17 = add nuw nsw i64 %14, 16 + %18 = getelementptr inbounds i8, ptr %15, i64 8 + %19 = load ptr, ptr %18, align 8 + %20 = ptrtoint ptr %19 to i64 + %21 = ptrtoint ptr %16 to i64 + %22 = sub i64 %20, %21 + %.not.i.i = icmp ugt i64 %17, %22 + br i1 %.not.i.i, label %25, label %23 + +23: ; preds = %8 + %24 = getelementptr inbounds i8, ptr %16, i64 %17 + store ptr %24, ptr %15, align 8 br label %zend_ast_realloc.exit -26: ; preds = %8 - %27 = add nuw nsw i64 %18, 24 - %28 = ptrtoint ptr %15 to i64 - %29 = sub i64 %21, %28 - %..i.i = tail call i64 @llvm.umax.i64(i64 %27, i64 %29) - %30 = tail call noalias ptr @_emalloc(i64 noundef %..i.i) #13 - %31 = getelementptr inbounds i8, ptr %30, i64 24 - %32 = getelementptr inbounds i8, ptr %31, i64 %18 - store ptr %32, ptr %30, align 8 - %33 = getelementptr inbounds i8, ptr %30, i64 %..i.i - %34 = getelementptr inbounds i8, ptr %30, i64 8 - store ptr %33, ptr %34, align 8 - %35 = getelementptr inbounds i8, ptr %30, i64 16 - store ptr %15, ptr %35, align 8 - store ptr %30, ptr getelementptr inbounds (i8, ptr @compiler_globals, i64 432), align 8 +25: ; preds = %8 + %26 = add nuw nsw i64 %14, 40 + %27 = ptrtoint ptr %15 to i64 + %28 = sub i64 %20, %27 + %..i.i = tail call i64 @llvm.umax.i64(i64 %26, i64 %28) + %29 = tail call noalias ptr @_emalloc(i64 noundef %..i.i) #13 + %30 = getelementptr inbounds i8, ptr %29, i64 24 + %31 = getelementptr inbounds i8, ptr %30, i64 %17 + store ptr %31, ptr %29, align 8 + %32 = getelementptr inbounds i8, ptr %29, i64 %..i.i + %33 = getelementptr inbounds i8, ptr %29, i64 8 + store ptr %32, ptr %33, align 8 + %34 = getelementptr inbounds i8, ptr %29, i64 16 + store ptr %15, ptr %34, align 8 + store ptr %29, ptr getelementptr inbounds (i8, ptr @compiler_globals, i64 432), align 8 br label %zend_ast_realloc.exit -zend_ast_realloc.exit: ; preds = %24, %26 - %.0.i.i = phi ptr [ %16, %24 ], [ %31, %26 ] +zend_ast_realloc.exit: ; preds = %23, %25 + %.0.i.i = phi ptr [ %16, %23 ], [ %30, %25 ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0.i.i, ptr noundef nonnull readonly align 1 dereferenceable(1) %0, i64 %11, i1 false) %.phi.trans.insert = getelementptr inbounds i8, ptr %.0.i.i, i64 8 %.pre = load i32, ptr %.phi.trans.insert, align 8 - br label %36 + br label %35 -36: ; preds = %zend_ast_realloc.exit, %2 - %37 = phi i32 [ %.pre, %zend_ast_realloc.exit ], [ %4, %2 ] +35: ; preds = %zend_ast_realloc.exit, %2 + %36 = phi i32 [ %.pre, %zend_ast_realloc.exit ], [ %4, %2 ] %.0 = phi ptr [ %.0.i.i, %zend_ast_realloc.exit ], [ %0, %2 ] - %38 = getelementptr inbounds i8, ptr %.0, i64 16 - %39 = getelementptr inbounds i8, ptr %.0, i64 8 - %40 = add i32 %37, 1 - store i32 %40, ptr %39, align 8 - %41 = zext i32 %37 to i64 - %42 = getelementptr inbounds [1 x ptr], ptr %38, i64 0, i64 %41 - store ptr %1, ptr %42, align 8 + %37 = getelementptr inbounds i8, ptr %.0, i64 16 + %38 = getelementptr inbounds i8, ptr %.0, i64 8 + %39 = add i32 %36, 1 + store i32 %39, ptr %38, align 8 + %40 = zext i32 %36 to i64 + %41 = getelementptr inbounds [1 x ptr], ptr %37, i64 0, i64 %40 + store ptr %1, ptr %41, align 8 ret ptr %.0 } diff --git a/bench/php/optimized/zend_inheritance.ll b/bench/php/optimized/zend_inheritance.ll index 39d6f76e045..25a3fce8248 100644 --- a/bench/php/optimized/zend_inheritance.ll +++ b/bench/php/optimized/zend_inheritance.ll @@ -11513,7 +11513,7 @@ define internal fastcc void @zend_type_copy_ctor(ptr nocapture noundef %0) unnam %3 = load i32, ptr %2, align 8 %4 = and i32 %3, 4194304 %.not = icmp eq i32 %4, 0 - br i1 %.not, label %41, label %5 + br i1 %.not, label %39, label %5 5: ; preds = %1 %6 = load ptr, ptr %0, align 8 @@ -11524,85 +11524,83 @@ define internal fastcc void @zend_type_copy_ctor(ptr nocapture noundef %0) unnam %11 = add nuw nsw i64 %10, 24 %12 = load ptr, ptr getelementptr inbounds (i8, ptr @compiler_globals, i64 336), align 8 %13 = load ptr, ptr %12, align 8 - %14 = add nuw nsw i64 %10, 31 - %15 = and i64 %14, 137438953464 - %16 = getelementptr inbounds i8, ptr %12, i64 8 - %17 = load ptr, ptr %16, align 8 - %18 = ptrtoint ptr %17 to i64 - %19 = ptrtoint ptr %13 to i64 - %20 = sub i64 %18, %19 - %.not.i = icmp ugt i64 %15, %20 - br i1 %.not.i, label %23, label %21 + %14 = getelementptr inbounds i8, ptr %12, i64 8 + %15 = load ptr, ptr %14, align 8 + %16 = ptrtoint ptr %15 to i64 + %17 = ptrtoint ptr %13 to i64 + %18 = sub i64 %16, %17 + %.not.i = icmp ugt i64 %11, %18 + br i1 %.not.i, label %21, label %19 + +19: ; preds = %5 + %20 = getelementptr inbounds i8, ptr %13, i64 %11 + store ptr %20, ptr %12, align 8 + br label %31 21: ; preds = %5 - %22 = getelementptr inbounds i8, ptr %13, i64 %15 - store ptr %22, ptr %12, align 8 - br label %33 - -23: ; preds = %5 - %24 = add nuw nsw i64 %15, 24 - %25 = ptrtoint ptr %12 to i64 - %26 = sub i64 %18, %25 - %..i = tail call i64 @llvm.umax.i64(i64 %24, i64 %26) - %27 = tail call noalias ptr @_emalloc(i64 noundef %..i) #17 - %28 = getelementptr inbounds i8, ptr %27, i64 24 - %29 = getelementptr inbounds i8, ptr %28, i64 %15 - store ptr %29, ptr %27, align 8 - %30 = getelementptr inbounds i8, ptr %27, i64 %..i - %31 = getelementptr inbounds i8, ptr %27, i64 8 - store ptr %30, ptr %31, align 8 - %32 = getelementptr inbounds i8, ptr %27, i64 16 - store ptr %12, ptr %32, align 8 - store ptr %27, ptr getelementptr inbounds (i8, ptr @compiler_globals, i64 336), align 8 - br label %33 + %22 = add nuw nsw i64 %10, 48 + %23 = ptrtoint ptr %12 to i64 + %24 = sub i64 %16, %23 + %..i = tail call i64 @llvm.umax.i64(i64 %22, i64 %24) + %25 = tail call noalias ptr @_emalloc(i64 noundef %..i) #17 + %26 = getelementptr inbounds i8, ptr %25, i64 24 + %27 = getelementptr inbounds i8, ptr %26, i64 %11 + store ptr %27, ptr %25, align 8 + %28 = getelementptr inbounds i8, ptr %25, i64 %..i + %29 = getelementptr inbounds i8, ptr %25, i64 8 + store ptr %28, ptr %29, align 8 + %30 = getelementptr inbounds i8, ptr %25, i64 16 + store ptr %12, ptr %30, align 8 + store ptr %25, ptr getelementptr inbounds (i8, ptr @compiler_globals, i64 336), align 8 + br label %31 -33: ; preds = %23, %21 - %.0121.i = phi ptr [ %13, %21 ], [ %28, %23 ] +31: ; preds = %21, %19 + %.0121.i = phi ptr [ %13, %19 ], [ %26, %21 ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.0121.i, ptr noundef nonnull align 8 dereferenceable(1) %6, i64 %11, i1 false) store ptr %.0121.i, ptr %0, align 8 - %34 = load i32, ptr %2, align 8 - %35 = and i32 %34, -30408705 - %36 = or disjoint i32 %35, 5242880 - store i32 %36, ptr %2, align 8 - %37 = load i32, ptr %.0121.i, align 8 - %38 = zext i32 %37 to i64 - %.idx = shl nuw nsw i64 %38, 4 + %32 = load i32, ptr %2, align 8 + %33 = and i32 %32, -30408705 + %34 = or disjoint i32 %33, 5242880 + store i32 %34, ptr %2, align 8 + %35 = load i32, ptr %.0121.i, align 8 + %36 = zext i32 %35 to i64 + %.idx = shl nuw nsw i64 %36, 4 %.add = or disjoint i64 %.idx, 8 %.ptr12 = getelementptr inbounds i8, ptr %.0121.i, i64 %.add - %.not13 = icmp eq i32 %37, 0 + %.not13 = icmp eq i32 %35, 0 br i1 %.not13, label %zend_type_list_copy_ctor.exit, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %33 +.lr.ph.preheader: ; preds = %31 %.ptr = getelementptr inbounds i8, ptr %.0121.i, i64 8 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.0.i11 = phi ptr [ %39, %.lr.ph ], [ %.ptr, %.lr.ph.preheader ] + %.0.i11 = phi ptr [ %37, %.lr.ph ], [ %.ptr, %.lr.ph.preheader ] tail call fastcc void @zend_type_copy_ctor(ptr noundef nonnull %.0.i11) - %39 = getelementptr inbounds i8, ptr %.0.i11, i64 16 - %40 = icmp ult ptr %39, %.ptr12 - br i1 %40, label %.lr.ph, label %zend_type_list_copy_ctor.exit - -41: ; preds = %1 - %42 = and i32 %3, 16777216 - %.not9 = icmp eq i32 %42, 0 - br i1 %.not9, label %zend_type_list_copy_ctor.exit, label %43 - -43: ; preds = %41 - %44 = load ptr, ptr %0, align 8 - %45 = getelementptr inbounds i8, ptr %44, i64 4 - %46 = load i32, ptr %45, align 4 - %47 = and i32 %46, 64 - %.not10 = icmp eq i32 %47, 0 - br i1 %.not10, label %48, label %zend_type_list_copy_ctor.exit - -48: ; preds = %43 - %49 = load i32, ptr %44, align 4 - %50 = add i32 %49, 1 - store i32 %50, ptr %44, align 4 + %37 = getelementptr inbounds i8, ptr %.0.i11, i64 16 + %38 = icmp ult ptr %37, %.ptr12 + br i1 %38, label %.lr.ph, label %zend_type_list_copy_ctor.exit + +39: ; preds = %1 + %40 = and i32 %3, 16777216 + %.not9 = icmp eq i32 %40, 0 + br i1 %.not9, label %zend_type_list_copy_ctor.exit, label %41 + +41: ; preds = %39 + %42 = load ptr, ptr %0, align 8 + %43 = getelementptr inbounds i8, ptr %42, i64 4 + %44 = load i32, ptr %43, align 4 + %45 = and i32 %44, 64 + %.not10 = icmp eq i32 %45, 0 + br i1 %.not10, label %46, label %zend_type_list_copy_ctor.exit + +46: ; preds = %41 + %47 = load i32, ptr %42, align 4 + %48 = add i32 %47, 1 + store i32 %48, ptr %42, align 4 br label %zend_type_list_copy_ctor.exit -zend_type_list_copy_ctor.exit: ; preds = %.lr.ph, %33, %43, %41, %48 +zend_type_list_copy_ctor.exit: ; preds = %.lr.ph, %31, %41, %39, %46 ret void } diff --git a/bench/postgres/optimized/array_expanded.ll b/bench/postgres/optimized/array_expanded.ll index 9b6c6562559..b8b42c4723c 100644 --- a/bench/postgres/optimized/array_expanded.ll +++ b/bench/postgres/optimized/array_expanded.ll @@ -145,7 +145,7 @@ copy_byval_expanded_array.exit: ; preds = %71, %75 store i64 %82, ptr %83, align 8 %84 = getelementptr inbounds i8, ptr %6, i64 112 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %84, i8 0, i64 24, i1 false) - br label %152 + br label %151 85: ; preds = %16, %30, %11, %3 %.072 = phi ptr [ %spec.store.select, %30 ], [ %spec.store.select, %16 ], [ %2, %11 ], [ %2, %3 ] @@ -232,30 +232,29 @@ copy_byval_expanded_array.exit: ; preds = %71, %75 135: ; preds = %130 %136 = sext i32 %134 to i64 - br label %143 + br label %142 137: ; preds = %130 %138 = load i32, ptr %88, align 4 %139 = sext i32 %138 to i64 %140 = shl nsw i64 %139, 3 - %141 = add nsw i64 %140, 23 - %142 = and i64 %141, -8 - br label %143 - -143: ; preds = %137, %135 - %144 = phi i64 [ %136, %135 ], [ %142, %137 ] - %145 = getelementptr i8, ptr %87, i64 %144 - %146 = getelementptr inbounds i8, ptr %6, i64 120 - store ptr %145, ptr %146, align 8 - %147 = load i32, ptr %87, align 4 - %148 = lshr i32 %147, 2 - %149 = zext nneg i32 %148 to i64 - %150 = getelementptr i8, ptr %87, i64 %149 - %151 = getelementptr inbounds i8, ptr %6, i64 128 - store ptr %150, ptr %151, align 8 - br label %152 - -152: ; preds = %143, %copy_byval_expanded_array.exit + %141 = add nsw i64 %140, 16 + br label %142 + +142: ; preds = %137, %135 + %143 = phi i64 [ %136, %135 ], [ %141, %137 ] + %144 = getelementptr i8, ptr %87, i64 %143 + %145 = getelementptr inbounds i8, ptr %6, i64 120 + store ptr %144, ptr %145, align 8 + %146 = load i32, ptr %87, align 4 + %147 = lshr i32 %146, 2 + %148 = zext nneg i32 %147 to i64 + %149 = getelementptr i8, ptr %87, i64 %148 + %150 = getelementptr inbounds i8, ptr %6, i64 128 + store ptr %149, ptr %150, align 8 + br label %151 + +151: ; preds = %142, %copy_byval_expanded_array.exit %.0.in = getelementptr inbounds i8, ptr %6, i64 24 %.0 = ptrtoint ptr %.0.in to i64 ret i64 %.0 @@ -437,13 +436,13 @@ define internal i64 @EA_get_flat_size(ptr nocapture noundef %0) #0 { %5 = load i32, ptr %3, align 4 %6 = lshr i32 %5, 2 %7 = zext nneg i32 %6 to i64 - br label %92 + br label %93 8: ; preds = %1 %9 = getelementptr inbounds i8, ptr %0, i64 104 %10 = load i64, ptr %9, align 8 %.not63 = icmp eq i64 %10, 0 - br i1 %.not63, label %11, label %92 + br i1 %.not63, label %11, label %93 11: ; preds = %8 %12 = getelementptr inbounds i8, ptr %0, i64 100 @@ -582,7 +581,7 @@ define internal i64 @EA_get_flat_size(ptr nocapture noundef %0) #0 { %.not64 = icmp eq ptr %19, null %81 = sext i32 %15 to i64 %82 = shl nsw i64 %81, 3 - br i1 %.not64, label %89, label %83 + br i1 %.not64, label %90, label %83 83: ; preds = %._crit_edge %84 = add i32 %13, 7 @@ -590,21 +589,21 @@ define internal i64 @EA_get_flat_size(ptr nocapture noundef %0) #0 { %86 = sext i32 %85 to i64 %87 = add nsw i64 %82, 23 %88 = add nsw i64 %87, %86 - br label %91 + %89 = and i64 %88, -8 + br label %92 -89: ; preds = %._crit_edge - %90 = add nsw i64 %82, 23 - br label %91 +90: ; preds = %._crit_edge + %91 = add nsw i64 %82, 16 + br label %92 -91: ; preds = %89, %83 - %.pn.in = phi i64 [ %88, %83 ], [ %90, %89 ] - %.pn = and i64 %.pn.in, -8 +92: ; preds = %90, %83 + %.pn = phi i64 [ %89, %83 ], [ %91, %90 ] %.2 = add i64 %.pn, %.054.lcssa store i64 %.2, ptr %9, align 8 - br label %92 + br label %93 -92: ; preds = %8, %91, %4 - %.055 = phi i64 [ %7, %4 ], [ %.2, %91 ], [ %10, %8 ] +93: ; preds = %8, %92, %4 + %.055 = phi i64 [ %7, %4 ], [ %.2, %92 ], [ %10, %8 ] ret i64 %.055 } diff --git a/bench/postgres/optimized/gindesc.ll b/bench/postgres/optimized/gindesc.ll index 84f84557e32..0d0b82125dd 100644 --- a/bench/postgres/optimized/gindesc.ll +++ b/bench/postgres/optimized/gindesc.ll @@ -223,81 +223,79 @@ define internal fastcc void @desc_recompress_leaf(ptr noundef %0, ptr nocapture %6 = getelementptr i8, ptr %1, i64 2 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %38 - %.03244 = phi i32 [ %39, %38 ], [ 0, %.lr.ph.preheader ] - %.03343 = phi ptr [ %.238, %38 ], [ %6, %.lr.ph.preheader ] +.lr.ph: ; preds = %.lr.ph.preheader, %36 + %.03244 = phi i32 [ %37, %36 ], [ 0, %.lr.ph.preheader ] + %.03343 = phi ptr [ %.238, %36 ], [ %6, %.lr.ph.preheader ] %7 = getelementptr i8, ptr %.03343, i64 1 %8 = load i8, ptr %.03343, align 1 %9 = getelementptr i8, ptr %.03343, i64 2 %10 = load i8, ptr %7, align 1 %11 = and i8 %10, -2 %or.cond = icmp eq i8 %11, 2 - br i1 %or.cond, label %.thread, label %20 + br i1 %or.cond, label %.thread, label %18 .thread: ; preds = %.lr.ph %12 = getelementptr i8, ptr %.03343, i64 8 %13 = load i16, ptr %12, align 2 %14 = zext i16 %13 to i64 - %15 = add nuw nsw i64 %14, 1 + %15 = add nuw nsw i64 %14, 9 %16 = and i64 %15, 131070 - %17 = add nuw nsw i64 %16, 9 - %18 = and i64 %17, 262142 - %19 = getelementptr i8, ptr %9, i64 %18 - br label %28 + %17 = getelementptr i8, ptr %9, i64 %16 + br label %26 -20: ; preds = %.lr.ph - %21 = icmp eq i8 %10, 4 - br i1 %21, label %.thread35, label %28 +18: ; preds = %.lr.ph + %19 = icmp eq i8 %10, 4 + br i1 %19, label %.thread35, label %26 -.thread35: ; preds = %20 +.thread35: ; preds = %18 %.0.copyload = load i16, ptr %9, align 1 - %22 = getelementptr i8, ptr %.03343, i64 4 - %23 = zext i16 %.0.copyload to i64 - %24 = mul nuw nsw i64 %23, 6 - %25 = getelementptr i8, ptr %22, i64 %24 - %26 = zext i16 %.0.copyload to i32 - %27 = zext i8 %8 to i32 - tail call void (ptr, ptr, ...) @appendStringInfo(ptr noundef %0, ptr noundef nonnull @.str.19, i32 noundef %27, i32 noundef %26) #3 - br label %38 - -28: ; preds = %.thread, %20 - %.2 = phi ptr [ %9, %20 ], [ %19, %.thread ] - switch i8 %10, label %35 [ - i8 3, label %33 - i8 1, label %29 - i8 2, label %31 + %20 = getelementptr i8, ptr %.03343, i64 4 + %21 = zext i16 %.0.copyload to i64 + %22 = mul nuw nsw i64 %21, 6 + %23 = getelementptr i8, ptr %20, i64 %22 + %24 = zext i16 %.0.copyload to i32 + %25 = zext i8 %8 to i32 + tail call void (ptr, ptr, ...) @appendStringInfo(ptr noundef %0, ptr noundef nonnull @.str.19, i32 noundef %25, i32 noundef %24) #3 + br label %36 + +26: ; preds = %.thread, %18 + %.2 = phi ptr [ %9, %18 ], [ %17, %.thread ] + switch i8 %10, label %33 [ + i8 3, label %31 + i8 1, label %27 + i8 2, label %29 ] -29: ; preds = %28 +27: ; preds = %26 + %28 = zext i8 %8 to i32 + tail call void (ptr, ptr, ...) @appendStringInfo(ptr noundef %0, ptr noundef nonnull @.str.20, i32 noundef %28) #3 + br label %36 + +29: ; preds = %26 %30 = zext i8 %8 to i32 - tail call void (ptr, ptr, ...) @appendStringInfo(ptr noundef %0, ptr noundef nonnull @.str.20, i32 noundef %30) #3 - br label %38 + tail call void (ptr, ptr, ...) @appendStringInfo(ptr noundef %0, ptr noundef nonnull @.str.21, i32 noundef %30) #3 + br label %36 -31: ; preds = %28 +31: ; preds = %26 %32 = zext i8 %8 to i32 - tail call void (ptr, ptr, ...) @appendStringInfo(ptr noundef %0, ptr noundef nonnull @.str.21, i32 noundef %32) #3 - br label %38 - -33: ; preds = %28 - %34 = zext i8 %8 to i32 - tail call void (ptr, ptr, ...) @appendStringInfo(ptr noundef %0, ptr noundef nonnull @.str.22, i32 noundef %34) #3 - br label %38 - -35: ; preds = %28 - %36 = zext i8 %10 to i32 - %37 = zext i8 %8 to i32 - tail call void (ptr, ptr, ...) @appendStringInfo(ptr noundef %0, ptr noundef nonnull @.str.23, i32 noundef %37, i32 noundef %36) #3 + tail call void (ptr, ptr, ...) @appendStringInfo(ptr noundef %0, ptr noundef nonnull @.str.22, i32 noundef %32) #3 + br label %36 + +33: ; preds = %26 + %34 = zext i8 %10 to i32 + %35 = zext i8 %8 to i32 + tail call void (ptr, ptr, ...) @appendStringInfo(ptr noundef %0, ptr noundef nonnull @.str.23, i32 noundef %35, i32 noundef %34) #3 br label %.loopexit -38: ; preds = %.thread35, %29, %31, %33 - %.238 = phi ptr [ %25, %.thread35 ], [ %.2, %29 ], [ %.2, %31 ], [ %.2, %33 ] - %39 = add nuw nsw i32 %.03244, 1 - %40 = load i16, ptr %1, align 2 - %41 = zext i16 %40 to i32 - %42 = icmp ult i32 %39, %41 - br i1 %42, label %.lr.ph, label %.loopexit, !llvm.loop !5 +36: ; preds = %.thread35, %27, %29, %31 + %.238 = phi ptr [ %23, %.thread35 ], [ %.2, %27 ], [ %.2, %29 ], [ %.2, %31 ] + %37 = add nuw nsw i32 %.03244, 1 + %38 = load i16, ptr %1, align 2 + %39 = zext i16 %38 to i32 + %40 = icmp ult i32 %37, %39 + br i1 %40, label %.lr.ph, label %.loopexit, !llvm.loop !5 -.loopexit: ; preds = %38, %2, %35 +.loopexit: ; preds = %36, %2, %33 ret void } diff --git a/bench/postgres/optimized/lockfuncs.ll b/bench/postgres/optimized/lockfuncs.ll index 5ed38687b9e..1ace52413ea 100644 --- a/bench/postgres/optimized/lockfuncs.ll +++ b/bench/postgres/optimized/lockfuncs.ll @@ -873,95 +873,93 @@ define dso_local range(i64 0, 2) i64 @pg_isolation_test_session_is_blocked(ptr n %18 = sext i32 %16 to i64 %.phi.trans.insert = getelementptr inbounds i8, ptr %9, i64 4 %.pre = load i32, ptr %.phi.trans.insert, align 4 - br label %26 + br label %25 19: ; preds = %14 %20 = getelementptr inbounds i8, ptr %9, i64 4 %21 = load i32, ptr %20, align 4 %22 = sext i32 %21 to i64 %23 = shl nsw i64 %22, 3 - %24 = add nsw i64 %23, 23 - %25 = and i64 %24, -8 - br label %26 - -26: ; preds = %19, %17 - %27 = phi i32 [ %.pre, %17 ], [ %21, %19 ] - %28 = phi i64 [ %18, %17 ], [ %25, %19 ] - %29 = getelementptr i8, ptr %9, i64 %28 - %30 = getelementptr i8, ptr %9, i64 16 - %31 = tail call i32 @ArrayGetNItems(i32 noundef %27, ptr noundef %30) #6 + %24 = add nsw i64 %23, 16 + br label %25 + +25: ; preds = %19, %17 + %26 = phi i32 [ %.pre, %17 ], [ %21, %19 ] + %27 = phi i64 [ %18, %17 ], [ %24, %19 ] + %28 = getelementptr i8, ptr %9, i64 %27 + %29 = getelementptr i8, ptr %9, i64 16 + %30 = tail call i32 @ArrayGetNItems(i32 noundef %26, ptr noundef %29) #6 %sext = shl i64 %4, 32 - %32 = ashr exact i64 %sext, 32 - %33 = tail call i64 @DirectFunctionCall1Coll(ptr noundef nonnull @pg_blocking_pids, i32 noundef 0, i64 noundef %32) #6 - %34 = inttoptr i64 %33 to ptr - %35 = tail call ptr @pg_detoast_datum(ptr noundef %34) #6 - %36 = getelementptr inbounds i8, ptr %35, i64 8 - %37 = load i32, ptr %36, align 4 - %.not31 = icmp eq i32 %37, 0 - br i1 %.not31, label %40, label %38 - -38: ; preds = %26 - %39 = sext i32 %37 to i64 - %.phi.trans.insert42 = getelementptr inbounds i8, ptr %35, i64 4 + %31 = ashr exact i64 %sext, 32 + %32 = tail call i64 @DirectFunctionCall1Coll(ptr noundef nonnull @pg_blocking_pids, i32 noundef 0, i64 noundef %31) #6 + %33 = inttoptr i64 %32 to ptr + %34 = tail call ptr @pg_detoast_datum(ptr noundef %33) #6 + %35 = getelementptr inbounds i8, ptr %34, i64 8 + %36 = load i32, ptr %35, align 4 + %.not31 = icmp eq i32 %36, 0 + br i1 %.not31, label %39, label %37 + +37: ; preds = %25 + %38 = sext i32 %36 to i64 + %.phi.trans.insert42 = getelementptr inbounds i8, ptr %34, i64 4 %.pre43 = load i32, ptr %.phi.trans.insert42, align 4 - br label %47 + br label %45 -40: ; preds = %26 - %41 = getelementptr inbounds i8, ptr %35, i64 4 - %42 = load i32, ptr %41, align 4 - %43 = sext i32 %42 to i64 - %44 = shl nsw i64 %43, 3 - %45 = add nsw i64 %44, 23 - %46 = and i64 %45, -8 - br label %47 - -47: ; preds = %40, %38 - %48 = phi i32 [ %.pre43, %38 ], [ %42, %40 ] - %49 = phi i64 [ %39, %38 ], [ %46, %40 ] - %50 = getelementptr i8, ptr %35, i64 %49 - %51 = getelementptr i8, ptr %35, i64 16 - %52 = tail call i32 @ArrayGetNItems(i32 noundef %48, ptr noundef %51) #6 - %53 = icmp sgt i32 %52, 0 - %54 = icmp sgt i32 %31, 0 - %or.cond = select i1 %53, i1 %54, i1 false +39: ; preds = %25 + %40 = getelementptr inbounds i8, ptr %34, i64 4 + %41 = load i32, ptr %40, align 4 + %42 = sext i32 %41 to i64 + %43 = shl nsw i64 %42, 3 + %44 = add nsw i64 %43, 16 + br label %45 + +45: ; preds = %39, %37 + %46 = phi i32 [ %.pre43, %37 ], [ %41, %39 ] + %47 = phi i64 [ %38, %37 ], [ %44, %39 ] + %48 = getelementptr i8, ptr %34, i64 %47 + %49 = getelementptr i8, ptr %34, i64 16 + %50 = tail call i32 @ArrayGetNItems(i32 noundef %46, ptr noundef %49) #6 + %51 = icmp sgt i32 %50, 0 + %52 = icmp sgt i32 %30, 0 + %or.cond = select i1 %51, i1 %52, i1 false br i1 %or.cond, label %.preheader.us.preheader, label %._crit_edge34 -.preheader.us.preheader: ; preds = %47 - %wide.trip.count40 = zext nneg i32 %52 to i64 - %wide.trip.count = zext nneg i32 %31 to i64 +.preheader.us.preheader: ; preds = %45 + %wide.trip.count40 = zext nneg i32 %50 to i64 + %wide.trip.count = zext nneg i32 %30 to i64 br label %.preheader.us .preheader.us: ; preds = %.preheader.us.preheader, %._crit_edge.us %indvars.iv37 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next38, %._crit_edge.us ] - %55 = getelementptr i32, ptr %50, i64 %indvars.iv37 - %56 = load i32, ptr %55, align 4 - br label %58 + %53 = getelementptr i32, ptr %48, i64 %indvars.iv37 + %54 = load i32, ptr %53, align 4 + br label %56 -57: ; preds = %58 +55: ; preds = %56 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge.us, label %58, !llvm.loop !13 + br i1 %exitcond.not, label %._crit_edge.us, label %56, !llvm.loop !13 -58: ; preds = %.preheader.us, %57 - %indvars.iv = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next, %57 ] - %59 = getelementptr i32, ptr %29, i64 %indvars.iv - %60 = load i32, ptr %59, align 4 - %61 = icmp eq i32 %56, %60 - br i1 %61, label %.loopexit, label %57 +56: ; preds = %.preheader.us, %55 + %indvars.iv = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next, %55 ] + %57 = getelementptr i32, ptr %28, i64 %indvars.iv + %58 = load i32, ptr %57, align 4 + %59 = icmp eq i32 %54, %58 + br i1 %59, label %.loopexit, label %55 -._crit_edge.us: ; preds = %57 +._crit_edge.us: ; preds = %55 %indvars.iv.next38 = add nuw nsw i64 %indvars.iv37, 1 %exitcond41.not = icmp eq i64 %indvars.iv.next38, %wide.trip.count40 br i1 %exitcond41.not, label %._crit_edge34, label %.preheader.us, !llvm.loop !14 -._crit_edge34: ; preds = %._crit_edge.us, %47 - %62 = call i32 @GetSafeSnapshotBlockingPids(i32 noundef %5, ptr noundef nonnull %2, i32 noundef 1) #6 - %63 = icmp sgt i32 %62, 0 - %spec.select = zext i1 %63 to i64 +._crit_edge34: ; preds = %._crit_edge.us, %45 + %60 = call i32 @GetSafeSnapshotBlockingPids(i32 noundef %5, ptr noundef nonnull %2, i32 noundef 1) #6 + %61 = icmp sgt i32 %60, 0 + %spec.select = zext i1 %61 to i64 br label %.loopexit -.loopexit: ; preds = %58, %._crit_edge34 - %.028 = phi i64 [ %spec.select, %._crit_edge34 ], [ 1, %58 ] +.loopexit: ; preds = %56, %._crit_edge34 + %.028 = phi i64 [ %spec.select, %._crit_edge34 ], [ 1, %56 ] ret i64 %.028 } diff --git a/bench/postgres/optimized/pg_publication.ll b/bench/postgres/optimized/pg_publication.ll index 77963d2fe4c..51405f2a5f6 100644 --- a/bench/postgres/optimized/pg_publication.ll +++ b/bench/postgres/optimized/pg_publication.ll @@ -881,57 +881,56 @@ define dso_local ptr @pub_collist_to_bitmapset(ptr noundef %0, i64 noundef %1, p 10: ; preds = %3 %11 = sext i32 %9 to i64 - br label %19 + br label %18 12: ; preds = %3 %13 = getelementptr inbounds i8, ptr %5, i64 4 %14 = load i32, ptr %13, align 4 %15 = sext i32 %14 to i64 %16 = shl nsw i64 %15, 3 - %17 = add nsw i64 %16, 23 - %18 = and i64 %17, -8 - br label %19 + %17 = add nsw i64 %16, 16 + br label %18 -19: ; preds = %12, %10 - %20 = phi i64 [ %11, %10 ], [ %18, %12 ] - %21 = getelementptr i8, ptr %5, i64 %20 +18: ; preds = %12, %10 + %19 = phi i64 [ %11, %10 ], [ %17, %12 ] + %20 = getelementptr i8, ptr %5, i64 %19 %.not24 = icmp eq ptr %2, null - br i1 %.not24, label %24, label %22 + br i1 %.not24, label %23, label %21 -22: ; preds = %19 - %23 = load ptr, ptr @CurrentMemoryContext, align 8 +21: ; preds = %18 + %22 = load ptr, ptr @CurrentMemoryContext, align 8 store ptr %2, ptr @CurrentMemoryContext, align 8 - br label %24 + br label %23 -24: ; preds = %22, %19 - %.018 = phi ptr [ %23, %22 ], [ null, %19 ] - %25 = icmp sgt i32 %7, 0 - br i1 %25, label %.lr.ph.preheader, label %._crit_edge +23: ; preds = %21, %18 + %.018 = phi ptr [ %22, %21 ], [ null, %18 ] + %24 = icmp sgt i32 %7, 0 + br i1 %24, label %.lr.ph.preheader, label %._crit_edge -.lr.ph.preheader: ; preds = %24 +.lr.ph.preheader: ; preds = %23 %wide.trip.count = zext nneg i32 %7 to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %.125 = phi ptr [ %0, %.lr.ph.preheader ], [ %29, %.lr.ph ] - %26 = getelementptr i16, ptr %21, i64 %indvars.iv - %27 = load i16, ptr %26, align 2 - %28 = sext i16 %27 to i32 - %29 = tail call ptr @bms_add_member(ptr noundef %.125, i32 noundef %28) #6 + %.125 = phi ptr [ %0, %.lr.ph.preheader ], [ %28, %.lr.ph ] + %25 = getelementptr i16, ptr %20, i64 %indvars.iv + %26 = load i16, ptr %25, align 2 + %27 = sext i16 %26 to i32 + %28 = tail call ptr @bms_add_member(ptr noundef %.125, i32 noundef %27) #6 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !10 -._crit_edge: ; preds = %.lr.ph, %24 - %.1.lcssa = phi ptr [ %0, %24 ], [ %29, %.lr.ph ] - br i1 %.not24, label %31, label %30 +._crit_edge: ; preds = %.lr.ph, %23 + %.1.lcssa = phi ptr [ %0, %23 ], [ %28, %.lr.ph ] + br i1 %.not24, label %30, label %29 -30: ; preds = %._crit_edge +29: ; preds = %._crit_edge store ptr %.018, ptr @CurrentMemoryContext, align 8 - br label %31 + br label %30 -31: ; preds = %30, %._crit_edge +30: ; preds = %29, %._crit_edge ret ptr %.1.lcssa } diff --git a/bench/postgres/optimized/tsrank.ll b/bench/postgres/optimized/tsrank.ll index fc20b9c9bc5..43c8d684710 100644 --- a/bench/postgres/optimized/tsrank.ll +++ b/bench/postgres/optimized/tsrank.ll @@ -580,55 +580,54 @@ define internal fastcc noundef nonnull ptr @getWeights(ptr noundef %0) unnamed_a 27: ; preds = %24 %28 = sext i32 %26 to i64 - br label %35 + br label %34 29: ; preds = %24 %30 = load i32, ptr %4, align 4 %31 = sext i32 %30 to i64 %32 = shl nsw i64 %31, 3 - %33 = add nsw i64 %32, 23 - %34 = and i64 %33, -8 - br label %35 + %33 = add nsw i64 %32, 16 + br label %34 -35: ; preds = %29, %27 - %36 = phi i64 [ %28, %27 ], [ %34, %29 ] - %37 = getelementptr i8, ptr %0, i64 %36 - br label %39 +34: ; preds = %29, %27 + %35 = phi i64 [ %28, %27 ], [ %33, %29 ] + %36 = getelementptr i8, ptr %0, i64 %35 + br label %38 -38: ; preds = %46 +37: ; preds = %45 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %.loopexit, label %39, !llvm.loop !12 - -39: ; preds = %35, %38 - %indvars.iv = phi i64 [ 0, %35 ], [ %indvars.iv.next, %38 ] - %40 = getelementptr float, ptr %37, i64 %indvars.iv - %41 = load float, ptr %40, align 4 - %42 = fcmp ult float %41, 0.000000e+00 - br i1 %42, label %43, label %46 - -43: ; preds = %39 - %44 = getelementptr [4 x float], ptr @weights, i64 0, i64 %indvars.iv - %45 = load float, ptr %44, align 4 - br label %46 - -46: ; preds = %39, %43 - %47 = phi float [ %45, %43 ], [ %41, %39 ] - %48 = getelementptr [4 x float], ptr @getWeights.ws, i64 0, i64 %indvars.iv - store float %47, ptr %48, align 4 - %49 = fcmp ogt float %47, 1.000000e+00 - br i1 %49, label %50, label %38 - -50: ; preds = %46 - %51 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #12 - tail call void @llvm.assume(i1 %51) - %52 = tail call i32 @errcode(i32 noundef 50856066) #11 - %53 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.4) #11 + br i1 %exitcond.not, label %.loopexit, label %38, !llvm.loop !12 + +38: ; preds = %34, %37 + %indvars.iv = phi i64 [ 0, %34 ], [ %indvars.iv.next, %37 ] + %39 = getelementptr float, ptr %36, i64 %indvars.iv + %40 = load float, ptr %39, align 4 + %41 = fcmp ult float %40, 0.000000e+00 + br i1 %41, label %42, label %45 + +42: ; preds = %38 + %43 = getelementptr [4 x float], ptr @weights, i64 0, i64 %indvars.iv + %44 = load float, ptr %43, align 4 + br label %45 + +45: ; preds = %38, %42 + %46 = phi float [ %44, %42 ], [ %40, %38 ] + %47 = getelementptr [4 x float], ptr @getWeights.ws, i64 0, i64 %indvars.iv + store float %46, ptr %47, align 4 + %48 = fcmp ogt float %46, 1.000000e+00 + br i1 %48, label %49, label %37 + +49: ; preds = %45 + %50 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #12 + tail call void @llvm.assume(i1 %50) + %51 = tail call i32 @errcode(i32 noundef 50856066) #11 + %52 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.4) #11 tail call void @errfinish(ptr noundef nonnull @.str.1, i32 noundef 431, ptr noundef nonnull @__func__.getWeights) #11 unreachable -.loopexit: ; preds = %38, %1 - %.0 = phi ptr [ @weights, %1 ], [ @getWeights.ws, %38 ] +.loopexit: ; preds = %37, %1 + %.0 = phi ptr [ @weights, %1 ], [ @getWeights.ws, %37 ] ret ptr %.0 } diff --git a/bench/postgres/optimized/twophase.ll b/bench/postgres/optimized/twophase.ll index dcada6f6eb7..317bc86bdfc 100644 --- a/bench/postgres/optimized/twophase.ll +++ b/bench/postgres/optimized/twophase.ll @@ -179,34 +179,33 @@ define dso_local void @TwoPhaseShmemInit() local_unnamed_addr #0 { %17 = load i32, ptr @max_prepared_xacts, align 4 %18 = sext i32 %17 to i64 %19 = shl nsw i64 %18, 3 - %20 = add nsw i64 %19, 23 - %21 = and i64 %20, -8 - %22 = getelementptr i8, ptr %12, i64 %21 - %23 = icmp sgt i32 %17, 0 - br i1 %23, label %.lr.ph, label %.loopexit + %20 = getelementptr i8, ptr %12, i64 %19 + %21 = getelementptr i8, ptr %20, i64 16 + %22 = icmp sgt i32 %17, 0 + br i1 %22, label %.lr.ph, label %.loopexit .lr.ph: ; preds = %15, %.lr.ph %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %15 ] - %24 = load ptr, ptr %12, align 8 - %25 = getelementptr %struct.GlobalTransactionData, ptr %22, i64 %indvars.iv - store ptr %24, ptr %25, align 8 - store ptr %25, ptr %12, align 8 - %26 = load ptr, ptr @PreparedXactProcs, align 8 - %27 = getelementptr %struct.PGPROC, ptr %26, i64 %indvars.iv - %28 = load ptr, ptr @ProcGlobal, align 8 - %29 = load ptr, ptr %28, align 8 - %30 = ptrtoint ptr %27 to i64 - %31 = ptrtoint ptr %29 to i64 - %32 = sub i64 %30, %31 - %33 = sdiv exact i64 %32, 888 - %34 = trunc i64 %33 to i32 - %35 = getelementptr inbounds i8, ptr %25, i64 8 - store i32 %34, ptr %35, align 8 + %23 = load ptr, ptr %12, align 8 + %24 = getelementptr %struct.GlobalTransactionData, ptr %21, i64 %indvars.iv + store ptr %23, ptr %24, align 8 + store ptr %24, ptr %12, align 8 + %25 = load ptr, ptr @PreparedXactProcs, align 8 + %26 = getelementptr %struct.PGPROC, ptr %25, i64 %indvars.iv + %27 = load ptr, ptr @ProcGlobal, align 8 + %28 = load ptr, ptr %27, align 8 + %29 = ptrtoint ptr %26 to i64 + %30 = ptrtoint ptr %28 to i64 + %31 = sub i64 %29, %30 + %32 = sdiv exact i64 %31, 888 + %33 = trunc i64 %32 to i32 + %34 = getelementptr inbounds i8, ptr %24, i64 8 + store i32 %33, ptr %34, align 8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %36 = load i32, ptr @max_prepared_xacts, align 4 - %37 = sext i32 %36 to i64 - %38 = icmp slt i64 %indvars.iv.next, %37 - br i1 %38, label %.lr.ph, label %.loopexit, !llvm.loop !5 + %35 = load i32, ptr @max_prepared_xacts, align 4 + %36 = sext i32 %35 to i64 + %37 = icmp slt i64 %indvars.iv.next, %36 + br i1 %37, label %.lr.ph, label %.loopexit, !llvm.loop !5 .loopexit: ; preds = %.lr.ph, %15, %0 ret void @@ -1113,7 +1112,7 @@ save_state_data.exit17: ; preds = %._crit_edge.i13, %7 105: ; preds = %save_state_data.exit17 %106 = load ptr, ptr %3, align 8 %107 = shl i32 %103, 2 - %108 = add i32 %107, 7 + %108 = add i32 %107, 4 %109 = and i32 %108, -8 %110 = icmp ugt i32 %109, %101 br i1 %110, label %111, label %._crit_edge.i18 @@ -1204,7 +1203,7 @@ GXactLoadSubxactData.exit: ; preds = %146, %144, %save_st 156: ; preds = %GXactLoadSubxactData.exit %157 = load ptr, ptr %4, align 8 %158 = mul i32 %154, 12 - %159 = add i32 %158, 7 + %159 = add i32 %158, 4 %160 = and i32 %159, -8 %161 = icmp ugt i32 %160, %153 br i1 %161, label %162, label %._crit_edge.i23 @@ -1267,7 +1266,7 @@ save_state_data.exit27: ; preds = %._crit_edge.i23, %1 191: ; preds = %188 %192 = load ptr, ptr %5, align 8 %193 = mul i32 %189, 12 - %194 = add i32 %193, 7 + %194 = add i32 %193, 4 %195 = and i32 %194, -8 %196 = load i32, ptr @records.3, align 8 %197 = icmp ugt i32 %195, %196 @@ -1330,7 +1329,7 @@ save_state_data.exit32: ; preds = %._crit_edge.i28, %1 227: ; preds = %224 %228 = load ptr, ptr %7, align 8 %229 = mul i32 %225, 12 - %230 = add i32 %229, 7 + %230 = add i32 %229, 4 %231 = and i32 %230, -8 %232 = load i32, ptr @records.3, align 8 %233 = icmp ugt i32 %231, %232 @@ -1393,7 +1392,7 @@ save_state_data.exit37: ; preds = %._crit_edge.i33, %2 263: ; preds = %260 %264 = load ptr, ptr %6, align 8 %265 = mul i32 %261, 12 - %266 = add i32 %265, 7 + %266 = add i32 %265, 4 %267 = and i32 %266, -8 %268 = load i32, ptr @records.3, align 8 %269 = icmp ugt i32 %267, %268 @@ -2174,35 +2173,35 @@ LockGXact.exit: ; preds = %47 %90 = load i32, ptr %89, align 4 %91 = sext i32 %90 to i64 %92 = shl nsw i64 %91, 2 - %93 = add nsw i64 %92, 7 + %93 = add nsw i64 %92, 4 %94 = and i64 %93, -8 %95 = getelementptr i8, ptr %88, i64 %94 %96 = getelementptr inbounds i8, ptr %81, i64 32 %97 = load i32, ptr %96, align 8 %98 = sext i32 %97 to i64 %99 = mul nsw i64 %98, 12 - %100 = add nsw i64 %99, 7 + %100 = add nsw i64 %99, 4 %101 = and i64 %100, -8 %102 = getelementptr i8, ptr %95, i64 %101 %103 = getelementptr inbounds i8, ptr %81, i64 36 %104 = load i32, ptr %103, align 4 %105 = sext i32 %104 to i64 %106 = mul nsw i64 %105, 12 - %107 = add nsw i64 %106, 7 + %107 = add nsw i64 %106, 4 %108 = and i64 %107, -8 %109 = getelementptr i8, ptr %102, i64 %108 %110 = getelementptr inbounds i8, ptr %81, i64 40 %111 = load i32, ptr %110, align 8 %112 = sext i32 %111 to i64 %113 = mul nsw i64 %112, 12 - %114 = add nsw i64 %113, 7 + %114 = add nsw i64 %113, 4 %115 = and i64 %114, -8 %116 = getelementptr i8, ptr %109, i64 %115 %117 = getelementptr inbounds i8, ptr %81, i64 44 %118 = load i32, ptr %117, align 4 %119 = sext i32 %118 to i64 %120 = mul nsw i64 %119, 12 - %121 = add nsw i64 %120, 7 + %121 = add nsw i64 %120, 4 %122 = and i64 %121, -8 %123 = getelementptr i8, ptr %116, i64 %122 %124 = getelementptr inbounds i8, ptr %81, i64 48 @@ -3486,35 +3485,35 @@ define dso_local void @RecoverPreparedTransactions() local_unnamed_addr #0 { %34 = load i32, ptr %33, align 4 %35 = sext i32 %34 to i64 %36 = shl nsw i64 %35, 2 - %37 = add nsw i64 %36, 7 + %37 = add nsw i64 %36, 4 %38 = and i64 %37, -8 %39 = getelementptr i8, ptr %32, i64 %38 %40 = getelementptr inbounds i8, ptr %19, i64 32 %41 = load i32, ptr %40, align 8 %42 = sext i32 %41 to i64 %43 = mul nsw i64 %42, 12 - %44 = add nsw i64 %43, 7 + %44 = add nsw i64 %43, 4 %45 = and i64 %44, -8 %46 = getelementptr i8, ptr %39, i64 %45 %47 = getelementptr inbounds i8, ptr %19, i64 36 %48 = load i32, ptr %47, align 4 %49 = sext i32 %48 to i64 %50 = mul nsw i64 %49, 12 - %51 = add nsw i64 %50, 7 + %51 = add nsw i64 %50, 4 %52 = and i64 %51, -8 %53 = getelementptr i8, ptr %46, i64 %52 %54 = getelementptr inbounds i8, ptr %19, i64 40 %55 = load i32, ptr %54, align 8 %56 = sext i32 %55 to i64 %57 = mul nsw i64 %56, 12 - %58 = add nsw i64 %57, 7 + %58 = add nsw i64 %57, 4 %59 = and i64 %58, -8 %60 = getelementptr i8, ptr %53, i64 %59 %61 = getelementptr inbounds i8, ptr %19, i64 44 %62 = load i32, ptr %61, align 4 %63 = sext i32 %62 to i64 %64 = mul nsw i64 %63, 12 - %65 = add nsw i64 %64, 7 + %65 = add nsw i64 %64, 4 %66 = and i64 %65, -8 %67 = getelementptr i8, ptr %60, i64 %66 %68 = getelementptr inbounds i8, ptr %19, i64 48 diff --git a/bench/protobuf/optimized/command_line_interface.cc.ll b/bench/protobuf/optimized/command_line_interface.cc.ll index a5d632aec0b..63810de5feb 100644 --- a/bench/protobuf/optimized/command_line_interface.cc.ll +++ b/bench/protobuf/optimized/command_line_interface.cc.ll @@ -16562,8 +16562,8 @@ while.body.preheader: ; preds = %if.end br label %while.body while.body: ; preds = %while.body.preheader, %while.body - %node.addr.099 = phi ptr [ %3, %while.body ], [ %node, %while.body.preheader ] - %add.ptr.i.i.i.i48 = getelementptr inbounds i8, ptr %node.addr.099, i64 560 + %node.addr.098 = phi ptr [ %3, %while.body ], [ %node, %while.body.preheader ] + %add.ptr.i.i.i.i48 = getelementptr inbounds i8, ptr %node.addr.098, i64 560 %3 = load ptr, ptr %add.ptr.i.i.i.i48, align 8 %arrayidx.i.i47 = getelementptr i8, ptr %3, i64 11 %4 = load i8, ptr %arrayidx.i.i47, align 1 @@ -16589,8 +16589,8 @@ do.body: ; preds = %do.body.backedge, % br i1 %cmp.i.not.i52, label %while.body22, label %if.end28 while.body22: ; preds = %do.body, %while.body22 - %node.addr.2102 = phi ptr [ %9, %while.body22 ], [ %7, %do.body ] - %add.ptr.i.i.i.i55 = getelementptr inbounds i8, ptr %node.addr.2102, i64 560 + %node.addr.2101 = phi ptr [ %9, %while.body22 ], [ %7, %do.body ] + %add.ptr.i.i.i.i55 = getelementptr inbounds i8, ptr %node.addr.2101, i64 560 %9 = load ptr, ptr %add.ptr.i.i.i.i55, align 8 %arrayidx.i.i53 = getelementptr i8, ptr %9, i64 11 %10 = load i8, ptr %arrayidx.i.i53, align 1 @@ -16631,8 +16631,8 @@ for.body.i63: ; preds = %if.end28, %for.body _ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6google8protobuf8compiler20CommandLineInterface13GeneratorInfoESt4lessIS9_ESaISt4pairIKS9_SE_EELi256ELb0EEEE15value_destroy_nEhhPSK_.exit70: ; preds = %for.body.i63, %if.end28 tail call void @_ZdlPv(ptr noundef %node.addr.1) #32 - %arrayidx.i77 = getelementptr i8, ptr %parent.2, i64 10 - %14 = load i8, ptr %arrayidx.i77, align 1 + %arrayidx.i76 = getelementptr i8, ptr %parent.2, i64 10 + %14 = load i8, ptr %arrayidx.i76, align 1 %conv35 = zext i8 %14 to i64 %cmp36.not.not = icmp ult i64 %pos.2, %conv35 br i1 %cmp36.not.not, label %do.body.backedge, label %do.body37 @@ -16646,36 +16646,36 @@ do.body.backedge: ; preds = %_ZN4absl12lts_20230 do.body37: ; preds = %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6google8protobuf8compiler20CommandLineInterface13GeneratorInfoESt4lessIS9_ESaISt4pairIKS9_SE_EELi256ELb0EEEE15value_destroy_nEhhPSK_.exit70, %if.end46 %15 = phi i8 [ %18, %if.end46 ], [ %14, %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6google8protobuf8compiler20CommandLineInterface13GeneratorInfoESt4lessIS9_ESaISt4pairIKS9_SE_EELi256ELb0EEEE15value_destroy_nEhhPSK_.exit70 ] %parent.3 = phi ptr [ %17, %if.end46 ], [ %parent.2, %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6google8protobuf8compiler20CommandLineInterface13GeneratorInfoESt4lessIS9_ESaISt4pairIKS9_SE_EELi256ELb0EEEE15value_destroy_nEhhPSK_.exit70 ] - %add.ptr.i.i.i78 = getelementptr i8, ptr %parent.3, i64 8 - %16 = load i8, ptr %add.ptr.i.i.i78, align 1 + %add.ptr.i.i.i77 = getelementptr i8, ptr %parent.3, i64 8 + %16 = load i8, ptr %add.ptr.i.i.i77, align 1 %17 = load ptr, ptr %parent.3, align 8 - %add.ptr.i.i.i.i80 = getelementptr inbounds i8, ptr %parent.3, i64 16 - %conv3.i82 = zext i8 %15 to i64 - %arrayidx.i6.i83 = getelementptr inbounds %"union.absl::lts_20230802::container_internal::map_slot_type.398", ptr %add.ptr.i.i.i.i80, i64 %conv3.i82 - %cmp.not7.i84 = icmp eq i8 %15, 0 - br i1 %cmp.not7.i84, label %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6google8protobuf8compiler20CommandLineInterface13GeneratorInfoESt4lessIS9_ESaISt4pairIKS9_SE_EELi256ELb0EEEE15value_destroy_nEhhPSK_.exit92, label %for.body.i85 - -for.body.i85: ; preds = %do.body37, %for.body.i85 - %s.08.i86 = phi ptr [ %incdec.ptr.i90, %for.body.i85 ], [ %add.ptr.i.i.i.i80, %do.body37 ] - %second.i.i.i.i.i.i87 = getelementptr inbounds i8, ptr %s.08.i86, i64 32 - %help_text.i.i.i.i.i.i.i88 = getelementptr inbounds i8, ptr %s.08.i86, i64 104 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %help_text.i.i.i.i.i.i.i88) #30 - %option_flag_name.i.i.i.i.i.i.i89 = getelementptr inbounds i8, ptr %s.08.i86, i64 64 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %option_flag_name.i.i.i.i.i.i.i89) #30 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i.i.i.i.i87) #30 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %s.08.i86) #30 - %incdec.ptr.i90 = getelementptr inbounds i8, ptr %s.08.i86, i64 136 - %cmp.not.i91 = icmp eq ptr %incdec.ptr.i90, %arrayidx.i6.i83 - br i1 %cmp.not.i91, label %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6google8protobuf8compiler20CommandLineInterface13GeneratorInfoESt4lessIS9_ESaISt4pairIKS9_SE_EELi256ELb0EEEE15value_destroy_nEhhPSK_.exit92, label %for.body.i85, !llvm.loop !265 - -_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6google8protobuf8compiler20CommandLineInterface13GeneratorInfoESt4lessIS9_ESaISt4pairIKS9_SE_EELi256ELb0EEEE15value_destroy_nEhhPSK_.exit92: ; preds = %for.body.i85, %do.body37 + %add.ptr.i.i.i.i79 = getelementptr inbounds i8, ptr %parent.3, i64 16 + %conv3.i81 = zext i8 %15 to i64 + %arrayidx.i6.i82 = getelementptr inbounds %"union.absl::lts_20230802::container_internal::map_slot_type.398", ptr %add.ptr.i.i.i.i79, i64 %conv3.i81 + %cmp.not7.i83 = icmp eq i8 %15, 0 + br i1 %cmp.not7.i83, label %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6google8protobuf8compiler20CommandLineInterface13GeneratorInfoESt4lessIS9_ESaISt4pairIKS9_SE_EELi256ELb0EEEE15value_destroy_nEhhPSK_.exit91, label %for.body.i84 + +for.body.i84: ; preds = %do.body37, %for.body.i84 + %s.08.i85 = phi ptr [ %incdec.ptr.i89, %for.body.i84 ], [ %add.ptr.i.i.i.i79, %do.body37 ] + %second.i.i.i.i.i.i86 = getelementptr inbounds i8, ptr %s.08.i85, i64 32 + %help_text.i.i.i.i.i.i.i87 = getelementptr inbounds i8, ptr %s.08.i85, i64 104 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %help_text.i.i.i.i.i.i.i87) #30 + %option_flag_name.i.i.i.i.i.i.i88 = getelementptr inbounds i8, ptr %s.08.i85, i64 64 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %option_flag_name.i.i.i.i.i.i.i88) #30 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i.i.i.i.i86) #30 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %s.08.i85) #30 + %incdec.ptr.i89 = getelementptr inbounds i8, ptr %s.08.i85, i64 136 + %cmp.not.i90 = icmp eq ptr %incdec.ptr.i89, %arrayidx.i6.i82 + br i1 %cmp.not.i90, label %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6google8protobuf8compiler20CommandLineInterface13GeneratorInfoESt4lessIS9_ESaISt4pairIKS9_SE_EELi256ELb0EEEE15value_destroy_nEhhPSK_.exit91, label %for.body.i84, !llvm.loop !265 + +_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6google8protobuf8compiler20CommandLineInterface13GeneratorInfoESt4lessIS9_ESaISt4pairIKS9_SE_EELi256ELb0EEEE15value_destroy_nEhhPSK_.exit91: ; preds = %for.body.i84, %do.body37 tail call void @_ZdlPv(ptr noundef %parent.3) #32 %cmp44 = icmp eq ptr %17, %2 br i1 %cmp44, label %return, label %if.end46 -if.end46: ; preds = %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6google8protobuf8compiler20CommandLineInterface13GeneratorInfoESt4lessIS9_ESaISt4pairIKS9_SE_EELi256ELb0EEEE15value_destroy_nEhhPSK_.exit92 - %arrayidx.i93 = getelementptr i8, ptr %17, i64 10 - %18 = load i8, ptr %arrayidx.i93, align 1 +if.end46: ; preds = %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6google8protobuf8compiler20CommandLineInterface13GeneratorInfoESt4lessIS9_ESaISt4pairIKS9_SE_EELi256ELb0EEEE15value_destroy_nEhhPSK_.exit91 + %arrayidx.i92 = getelementptr i8, ptr %17, i64 10 + %18 = load i8, ptr %arrayidx.i92, align 1 %cmp51.not = icmp ult i8 %16, %18 br i1 %cmp51.not, label %do.end52, label %do.body37, !llvm.loop !269 @@ -16687,7 +16687,7 @@ return.sink.split: ; preds = %for.body.i, %if.end tail call void @_ZdlPv(ptr noundef %node) #32 br label %return -return: ; preds = %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6google8protobuf8compiler20CommandLineInterface13GeneratorInfoESt4lessIS9_ESaISt4pairIKS9_SE_EELi256ELb0EEEE15value_destroy_nEhhPSK_.exit92, %return.sink.split +return: ; preds = %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6google8protobuf8compiler20CommandLineInterface13GeneratorInfoESt4lessIS9_ESaISt4pairIKS9_SE_EELi256ELb0EEEE15value_destroy_nEhhPSK_.exit91, %return.sink.split ret void } @@ -18566,9 +18566,8 @@ if.then12: ; preds = %if.then9 %12 = tail call i8 @llvm.umin.i8(i8 %11, i8 30) %13 = shl nuw i8 %12, 3 %mul.i.i.i.i.i = zext i8 %13 to i64 - %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 23 - %div1.i.i.i.i = and i64 %sub.i.i.i.i, 496 - %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #33 + %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 16 + %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.i.i.i.i) #33 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 store i8 0, ptr %add.ptr.i.i.i.i.i.i5, align 1 @@ -22693,9 +22692,8 @@ if.then16: ; preds = %if.then13 %11 = tail call i8 @llvm.umin.i8(i8 %10, i8 4) %conv.i.i = zext nneg i8 %11 to i64 %mul.i.i.i.i.i = mul nuw nsw i64 %conv.i.i, 136 - %add.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %add.i.i.i.i.i, 2032 - %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #33 + %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 16 + %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.i.i.i.i) #33 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 store i8 0, ptr %add.ptr.i.i.i.i.i.i5, align 1 diff --git a/bench/protobuf/optimized/descriptor.cc.ll b/bench/protobuf/optimized/descriptor.cc.ll index d52c52f2759..a15fec21e5e 100644 --- a/bench/protobuf/optimized/descriptor.cc.ll +++ b/bench/protobuf/optimized/descriptor.cc.ll @@ -27575,7 +27575,7 @@ cond.false.i51.i: ; preds = %.noexc85 invoke.cont: ; preds = %.noexc85 %mul.i52.i = shl i32 %122, 2 - %add.i.i53.i = add i32 %mul.i52.i, 7 + %add.i.i53.i = add i32 %mul.i52.i, 4 %and.i.i54.i = and i32 %add.i.i53.i, -8 %123 = load i32, ptr %total_.i.i, align 4 %conv11.i.i = add i32 %123, %and.i.i54.i @@ -27583,7 +27583,7 @@ invoke.cont: ; preds = %.noexc85 %public_dependency_.i.i.i.i = getelementptr inbounds i8, ptr %original_proto, i64 144 %124 = load i32, ptr %public_dependency_.i.i.i.i, align 8 %mul.i60.i = shl i32 %124, 2 - %add.i.i61.i = add i32 %mul.i60.i, 7 + %add.i.i61.i = add i32 %mul.i60.i, 4 %and.i.i62.i = and i32 %add.i.i61.i, -8 %conv11.i64.i = add i32 %and.i.i62.i, %conv11.i.i %current_size_.i.i.i.i.i = getelementptr inbounds i8, ptr %original_proto, i64 32 @@ -36010,7 +36010,7 @@ cleanup.done: ; preds = %entry %used_ = getelementptr inbounds i8, ptr %this, i64 168 %0 = load i32, ptr %used_, align 8 %mul = shl i32 %array_size, 2 - %add.i = add i32 %mul, 7 + %add.i = add i32 %mul, 4 %and.i = and i32 %add.i, -8 %conv8 = add i32 %0, %and.i store i32 %conv8, ptr %used_, align 8 @@ -39677,7 +39677,7 @@ while.end15.i: ; preds = %_ZN6google8protobuf to label %if.end.i69 unwind label %lpad.loopexit.split-lp.loopexit if.else.i.i68: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeIiLi8EEEiii.exit.i - %sub.i.i.i = add nuw nsw i64 %mul.i, 15 + %sub.i.i.i = add nuw nsw i64 %mul.i, 12 %and.i.i.i = and i64 %sub.i.i.i, 17179869176 %call2.i.i76 = invoke noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i.i, i64 noundef %and.i.i.i) to label %if.end.i69 unwind label %lpad.loopexit.split-lp.loopexit @@ -57275,8 +57275,8 @@ while.body.preheader.i: ; preds = %if.end.i br label %while.body.i while.body.i: ; preds = %while.body.i, %while.body.preheader.i - %node.addr.071.i = phi ptr [ %5, %while.body.i ], [ %1, %while.body.preheader.i ] - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.071.i, i64 256 + %node.addr.070.i = phi ptr [ %5, %while.body.i ], [ %1, %while.body.preheader.i ] + %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.070.i, i64 256 %5 = load ptr, ptr %add.ptr.i.i.i.i.i, align 8 %arrayidx.i.i46.i = getelementptr i8, ptr %5, i64 11 %6 = load i8, ptr %arrayidx.i.i46.i, align 1 @@ -57302,8 +57302,8 @@ do.body.i: ; preds = %do.body.i.backedge, br i1 %cmp.i.not.i50.i, label %while.body22.i, label %if.end28.i while.body22.i: ; preds = %do.body.i, %while.body22.i - %node.addr.274.i = phi ptr [ %11, %while.body22.i ], [ %9, %do.body.i ] - %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.274.i, i64 256 + %node.addr.273.i = phi ptr [ %11, %while.body22.i ], [ %9, %do.body.i ] + %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.273.i, i64 256 %11 = load ptr, ptr %add.ptr.i.i.i.i53.i, align 8 %arrayidx.i.i51.i = getelementptr i8, ptr %11, i64 11 %12 = load i8, ptr %arrayidx.i.i51.i, align 1 @@ -57322,8 +57322,8 @@ if.end28.i: ; preds = %while.end24.i, %do. %pos.2.i = phi i64 [ %conv26.i, %while.end24.i ], [ %pos.1.i, %do.body.i ] %parent.2.i = phi ptr [ %14, %while.end24.i ], [ %parent.1.i, %do.body.i ] tail call void @_ZdlPv(ptr noundef nonnull %node.addr.1.i) #39 - %arrayidx.i62.i = getelementptr i8, ptr %parent.2.i, i64 10 - %15 = load i8, ptr %arrayidx.i62.i, align 1 + %arrayidx.i61.i = getelementptr i8, ptr %parent.2.i, i64 10 + %15 = load i8, ptr %arrayidx.i61.i, align 1 %conv35.i = zext i8 %15 to i64 %cmp36.not.not.i = icmp ult i64 %pos.2.i, %conv35.i br i1 %cmp36.not.not.i, label %do.body.i.backedge, label %do.body37.i @@ -57336,16 +57336,16 @@ do.body.i.backedge: ; preds = %if.end28.i, %do.end do.body37.i: ; preds = %if.end28.i, %if.end46.i %parent.3.i = phi ptr [ %17, %if.end46.i ], [ %parent.2.i, %if.end28.i ] - %add.ptr.i.i.i63.i = getelementptr i8, ptr %parent.3.i, i64 8 - %16 = load i8, ptr %add.ptr.i.i.i63.i, align 1 + %add.ptr.i.i.i62.i = getelementptr i8, ptr %parent.3.i, i64 8 + %16 = load i8, ptr %add.ptr.i.i.i62.i, align 1 %17 = load ptr, ptr %parent.3.i, align 8 tail call void @_ZdlPv(ptr noundef nonnull %parent.3.i) #39 %cmp44.i = icmp eq ptr %17, %4 br i1 %cmp44.i, label %if.end, label %if.end46.i if.end46.i: ; preds = %do.body37.i - %arrayidx.i65.i = getelementptr i8, ptr %17, i64 10 - %18 = load i8, ptr %arrayidx.i65.i, align 1 + %arrayidx.i64.i = getelementptr i8, ptr %17, i64 10 + %18 = load i8, ptr %arrayidx.i64.i, align 1 %cmp51.not.i = icmp ult i8 %16, %18 br i1 %cmp51.not.i, label %do.end52.i, label %do.body37.i, !llvm.loop !817 @@ -58570,7 +58570,7 @@ while.end15: ; preds = %_ZN6google8protobuf br label %if.end if.else.i: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeIiLi8EEEiii.exit - %sub.i.i = add nuw nsw i64 %mul, 15 + %sub.i.i = add nuw nsw i64 %mul, 12 %and.i.i = and i64 %sub.i.i, 17179869176 %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %and.i.i) br label %if.end @@ -65281,8 +65281,8 @@ while.body.preheader.i: ; preds = %if.end.i br label %while.body.i while.body.i: ; preds = %while.body.i, %while.body.preheader.i - %node.addr.071.i = phi ptr [ %7, %while.body.i ], [ %3, %while.body.preheader.i ] - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.071.i, i64 256 + %node.addr.070.i = phi ptr [ %7, %while.body.i ], [ %3, %while.body.preheader.i ] + %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.070.i, i64 256 %7 = load ptr, ptr %add.ptr.i.i.i.i.i, align 8 %arrayidx.i.i46.i = getelementptr i8, ptr %7, i64 11 %8 = load i8, ptr %arrayidx.i.i46.i, align 1 @@ -65308,8 +65308,8 @@ do.body.i: ; preds = %do.body.i.backedge, br i1 %cmp.i.not.i50.i, label %while.body22.i, label %if.end28.i while.body22.i: ; preds = %do.body.i, %while.body22.i - %node.addr.274.i = phi ptr [ %13, %while.body22.i ], [ %11, %do.body.i ] - %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.274.i, i64 256 + %node.addr.273.i = phi ptr [ %13, %while.body22.i ], [ %11, %do.body.i ] + %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.273.i, i64 256 %13 = load ptr, ptr %add.ptr.i.i.i.i53.i, align 8 %arrayidx.i.i51.i = getelementptr i8, ptr %13, i64 11 %14 = load i8, ptr %arrayidx.i.i51.i, align 1 @@ -65328,8 +65328,8 @@ if.end28.i: ; preds = %while.end24.i, %do. %pos.2.i = phi i64 [ %conv26.i, %while.end24.i ], [ %pos.1.i, %do.body.i ] %parent.2.i = phi ptr [ %16, %while.end24.i ], [ %parent.1.i, %do.body.i ] tail call void @_ZdlPv(ptr noundef nonnull %node.addr.1.i) #39 - %arrayidx.i62.i = getelementptr i8, ptr %parent.2.i, i64 10 - %17 = load i8, ptr %arrayidx.i62.i, align 1 + %arrayidx.i61.i = getelementptr i8, ptr %parent.2.i, i64 10 + %17 = load i8, ptr %arrayidx.i61.i, align 1 %conv35.i = zext i8 %17 to i64 %cmp36.not.not.i = icmp ult i64 %pos.2.i, %conv35.i br i1 %cmp36.not.not.i, label %do.body.i.backedge, label %do.body37.i @@ -65342,16 +65342,16 @@ do.body.i.backedge: ; preds = %if.end28.i, %do.end do.body37.i: ; preds = %if.end28.i, %if.end46.i %parent.3.i = phi ptr [ %19, %if.end46.i ], [ %parent.2.i, %if.end28.i ] - %add.ptr.i.i.i63.i = getelementptr i8, ptr %parent.3.i, i64 8 - %18 = load i8, ptr %add.ptr.i.i.i63.i, align 1 + %add.ptr.i.i.i62.i = getelementptr i8, ptr %parent.3.i, i64 8 + %18 = load i8, ptr %add.ptr.i.i.i62.i, align 1 %19 = load ptr, ptr %parent.3.i, align 8 tail call void @_ZdlPv(ptr noundef nonnull %parent.3.i) #39 %cmp44.i = icmp eq ptr %19, %6 br i1 %cmp44.i, label %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsISt4pairIPKN6google8protobuf10DescriptorEiEPKNS6_15FieldDescriptorESt4lessISA_ESaIS4_IKSA_SD_EELi256ELb0EEEE16clear_and_deleteEPSK_PSI_.exit, label %if.end46.i if.end46.i: ; preds = %do.body37.i - %arrayidx.i65.i = getelementptr i8, ptr %19, i64 10 - %20 = load i8, ptr %arrayidx.i65.i, align 1 + %arrayidx.i64.i = getelementptr i8, ptr %19, i64 10 + %20 = load i8, ptr %arrayidx.i64.i, align 1 %cmp51.not.i = icmp ult i8 %18, %20 br i1 %cmp51.not.i, label %do.end52.i, label %do.body37.i, !llvm.loop !817 @@ -65709,8 +65709,8 @@ while.body.preheader.i: ; preds = %if.end.i br label %while.body.i while.body.i: ; preds = %while.body.i, %while.body.preheader.i - %node.addr.071.i = phi ptr [ %9, %while.body.i ], [ %0, %while.body.preheader.i ] - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.071.i, i64 256 + %node.addr.070.i = phi ptr [ %9, %while.body.i ], [ %0, %while.body.preheader.i ] + %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.070.i, i64 256 %9 = load ptr, ptr %add.ptr.i.i.i.i.i, align 8 %arrayidx.i.i46.i = getelementptr i8, ptr %9, i64 11 %10 = load i8, ptr %arrayidx.i.i46.i, align 1 @@ -65736,8 +65736,8 @@ do.body.i: ; preds = %do.body.i.backedge, br i1 %cmp.i.not.i50.i, label %while.body22.i, label %if.end28.i while.body22.i: ; preds = %do.body.i, %while.body22.i - %node.addr.274.i = phi ptr [ %15, %while.body22.i ], [ %13, %do.body.i ] - %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.274.i, i64 256 + %node.addr.273.i = phi ptr [ %15, %while.body22.i ], [ %13, %do.body.i ] + %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.273.i, i64 256 %15 = load ptr, ptr %add.ptr.i.i.i.i53.i, align 8 %arrayidx.i.i51.i = getelementptr i8, ptr %15, i64 11 %16 = load i8, ptr %arrayidx.i.i51.i, align 1 @@ -65756,8 +65756,8 @@ if.end28.i: ; preds = %while.end24.i, %do. %pos.2.i = phi i64 [ %conv26.i, %while.end24.i ], [ %pos.1.i, %do.body.i ] %parent.2.i = phi ptr [ %18, %while.end24.i ], [ %parent.1.i, %do.body.i ] tail call void @_ZdlPv(ptr noundef nonnull %node.addr.1.i) #39 - %arrayidx.i62.i = getelementptr i8, ptr %parent.2.i, i64 10 - %19 = load i8, ptr %arrayidx.i62.i, align 1 + %arrayidx.i61.i = getelementptr i8, ptr %parent.2.i, i64 10 + %19 = load i8, ptr %arrayidx.i61.i, align 1 %conv35.i = zext i8 %19 to i64 %cmp36.not.not.i = icmp ult i64 %pos.2.i, %conv35.i br i1 %cmp36.not.not.i, label %do.body.i.backedge, label %do.body37.i @@ -65770,16 +65770,16 @@ do.body.i.backedge: ; preds = %if.end28.i, %do.end do.body37.i: ; preds = %if.end28.i, %if.end46.i %parent.3.i = phi ptr [ %21, %if.end46.i ], [ %parent.2.i, %if.end28.i ] - %add.ptr.i.i.i63.i = getelementptr i8, ptr %parent.3.i, i64 8 - %20 = load i8, ptr %add.ptr.i.i.i63.i, align 1 + %add.ptr.i.i.i62.i = getelementptr i8, ptr %parent.3.i, i64 8 + %20 = load i8, ptr %add.ptr.i.i.i62.i, align 1 %21 = load ptr, ptr %parent.3.i, align 8 tail call void @_ZdlPv(ptr noundef nonnull %parent.3.i) #39 %cmp44.i = icmp eq ptr %21, %8 br i1 %cmp44.i, label %return, label %if.end46.i if.end46.i: ; preds = %do.body37.i - %arrayidx.i65.i = getelementptr i8, ptr %21, i64 10 - %22 = load i8, ptr %arrayidx.i65.i, align 1 + %arrayidx.i64.i = getelementptr i8, ptr %21, i64 10 + %22 = load i8, ptr %arrayidx.i64.i, align 1 %cmp51.not.i = icmp ult i8 %20, %22 br i1 %cmp51.not.i, label %do.end52.i, label %do.body37.i, !llvm.loop !817 @@ -68538,9 +68538,8 @@ if.then12: ; preds = %if.then9 %12 = tail call i8 @llvm.umin.i8(i8 %11, i8 10) %conv.i.i = zext nneg i8 %12 to i64 %mul.i.i.i.i.i = mul nuw nsw i64 %conv.i.i, 24 - %add.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %add.i.i.i.i.i, 1008 - %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #42 + %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 16 + %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.i.i.i.i) #42 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 store i8 0, ptr %add.ptr.i.i.i.i.i.i5, align 1 diff --git a/bench/protobuf/optimized/enum.cc.ll b/bench/protobuf/optimized/enum.cc.ll index 932213238ef..3ef6711004f 100644 --- a/bench/protobuf/optimized/enum.cc.ll +++ b/bench/protobuf/optimized/enum.cc.ll @@ -12719,8 +12719,8 @@ while.body.preheader: ; preds = %if.end br label %while.body while.body: ; preds = %while.body.preheader, %while.body - %node.addr.093 = phi ptr [ %3, %while.body ], [ %node, %while.body.preheader ] - %add.ptr.i.i.i.i48 = getelementptr inbounds i8, ptr %node.addr.093, i64 256 + %node.addr.092 = phi ptr [ %3, %while.body ], [ %node, %while.body.preheader ] + %add.ptr.i.i.i.i48 = getelementptr inbounds i8, ptr %node.addr.092, i64 256 %3 = load ptr, ptr %add.ptr.i.i.i.i48, align 8 %arrayidx.i.i47 = getelementptr i8, ptr %3, i64 11 %4 = load i8, ptr %arrayidx.i.i47, align 1 @@ -12746,8 +12746,8 @@ do.body: ; preds = %do.body.backedge, % br i1 %cmp.i.not.i52, label %while.body22, label %if.end28 while.body22: ; preds = %do.body, %while.body22 - %node.addr.296 = phi ptr [ %9, %while.body22 ], [ %7, %do.body ] - %add.ptr.i.i.i.i55 = getelementptr inbounds i8, ptr %node.addr.296, i64 256 + %node.addr.295 = phi ptr [ %9, %while.body22 ], [ %7, %do.body ] + %add.ptr.i.i.i.i55 = getelementptr inbounds i8, ptr %node.addr.295, i64 256 %9 = load ptr, ptr %add.ptr.i.i.i.i55, align 8 %arrayidx.i.i53 = getelementptr i8, ptr %9, i64 11 %10 = load i8, ptr %arrayidx.i.i53, align 1 @@ -12782,8 +12782,8 @@ for.body.i63: ; preds = %if.end28, %for.body _ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit67: ; preds = %for.body.i63, %if.end28 tail call void @_ZdlPv(ptr noundef %node.addr.1) #28 - %arrayidx.i74 = getelementptr i8, ptr %parent.2, i64 10 - %14 = load i8, ptr %arrayidx.i74, align 1 + %arrayidx.i73 = getelementptr i8, ptr %parent.2, i64 10 + %14 = load i8, ptr %arrayidx.i73, align 1 %conv35 = zext i8 %14 to i64 %cmp36.not.not = icmp ult i64 %pos.2, %conv35 br i1 %cmp36.not.not, label %do.body.backedge, label %do.body37 @@ -12797,30 +12797,30 @@ do.body.backedge: ; preds = %_ZN4absl12lts_20230 do.body37: ; preds = %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit67, %if.end46 %15 = phi i8 [ %18, %if.end46 ], [ %14, %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit67 ] %parent.3 = phi ptr [ %17, %if.end46 ], [ %parent.2, %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit67 ] - %add.ptr.i.i.i75 = getelementptr i8, ptr %parent.3, i64 8 - %16 = load i8, ptr %add.ptr.i.i.i75, align 1 + %add.ptr.i.i.i74 = getelementptr i8, ptr %parent.3, i64 8 + %16 = load i8, ptr %add.ptr.i.i.i74, align 1 %17 = load ptr, ptr %parent.3, align 8 - %add.ptr.i.i.i.i77 = getelementptr inbounds i8, ptr %parent.3, i64 16 - %conv3.i79 = zext i8 %15 to i64 - %arrayidx.i6.i80 = getelementptr inbounds %"union.absl::lts_20230802::container_internal::map_slot_type.281", ptr %add.ptr.i.i.i.i77, i64 %conv3.i79 - %cmp.not7.i81 = icmp eq i8 %15, 0 - br i1 %cmp.not7.i81, label %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit86, label %for.body.i82 - -for.body.i82: ; preds = %do.body37, %for.body.i82 - %s.08.i83 = phi ptr [ %incdec.ptr.i84, %for.body.i82 ], [ %add.ptr.i.i.i.i77, %do.body37 ] - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %s.08.i83) #27 - %incdec.ptr.i84 = getelementptr inbounds i8, ptr %s.08.i83, i64 40 - %cmp.not.i85 = icmp eq ptr %incdec.ptr.i84, %arrayidx.i6.i80 - br i1 %cmp.not.i85, label %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit86, label %for.body.i82, !llvm.loop !255 - -_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit86: ; preds = %for.body.i82, %do.body37 + %add.ptr.i.i.i.i76 = getelementptr inbounds i8, ptr %parent.3, i64 16 + %conv3.i78 = zext i8 %15 to i64 + %arrayidx.i6.i79 = getelementptr inbounds %"union.absl::lts_20230802::container_internal::map_slot_type.281", ptr %add.ptr.i.i.i.i76, i64 %conv3.i78 + %cmp.not7.i80 = icmp eq i8 %15, 0 + br i1 %cmp.not7.i80, label %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit85, label %for.body.i81 + +for.body.i81: ; preds = %do.body37, %for.body.i81 + %s.08.i82 = phi ptr [ %incdec.ptr.i83, %for.body.i81 ], [ %add.ptr.i.i.i.i76, %do.body37 ] + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %s.08.i82) #27 + %incdec.ptr.i83 = getelementptr inbounds i8, ptr %s.08.i82, i64 40 + %cmp.not.i84 = icmp eq ptr %incdec.ptr.i83, %arrayidx.i6.i79 + br i1 %cmp.not.i84, label %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit85, label %for.body.i81, !llvm.loop !255 + +_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit85: ; preds = %for.body.i81, %do.body37 tail call void @_ZdlPv(ptr noundef %parent.3) #28 %cmp44 = icmp eq ptr %17, %2 br i1 %cmp44, label %return, label %if.end46 -if.end46: ; preds = %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit86 - %arrayidx.i87 = getelementptr i8, ptr %17, i64 10 - %18 = load i8, ptr %arrayidx.i87, align 1 +if.end46: ; preds = %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit85 + %arrayidx.i86 = getelementptr i8, ptr %17, i64 10 + %18 = load i8, ptr %arrayidx.i86, align 1 %cmp51.not = icmp ult i8 %16, %18 br i1 %cmp51.not, label %do.end52, label %do.body37, !llvm.loop !259 @@ -12832,7 +12832,7 @@ return.sink.split: ; preds = %for.body.i, %if.end tail call void @_ZdlPv(ptr noundef %node) #28 br label %return -return: ; preds = %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit86, %return.sink.split +return: ; preds = %_ZN4absl12lts_2023080218container_internal10btree_nodeINS1_10map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS9_ESaISt4pairIKS9_iEELi256ELb0EEEE15value_destroy_nEhhPSF_.exit85, %return.sink.split ret void } @@ -15139,9 +15139,8 @@ if.then12: ; preds = %if.then9 %11 = tail call i8 @llvm.umin.i8(i8 %10, i8 6) %narrow = mul nuw i8 %11, 40 %mul.i.i.i.i.i = zext i8 %narrow to i64 - %add.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %add.i.i.i.i.i, 496 - %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #29 + %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 16 + %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.i.i.i.i) #29 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 store i8 0, ptr %add.ptr.i.i.i.i.i.i5, align 1 diff --git a/bench/protobuf/optimized/extension_set.cc.ll b/bench/protobuf/optimized/extension_set.cc.ll index 1970d3e2fc9..649c50aa6be 100644 --- a/bench/protobuf/optimized/extension_set.cc.ll +++ b/bench/protobuf/optimized/extension_set.cc.ll @@ -16528,7 +16528,7 @@ while.end15: ; preds = %_ZN6google8protobuf br label %if.end if.else.i: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeIiLi8EEEiii.exit - %sub.i.i = add nuw nsw i64 %mul, 15 + %sub.i.i = add nuw nsw i64 %mul, 12 %and.i.i = and i64 %sub.i.i, 17179869176 %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %and.i.i) br label %if.end @@ -16676,17 +16676,15 @@ _ZN6google8protobuf8internal20CalculateReserveSizeIlLi8EEEiii.exit: ; preds = %e %conv = zext nneg i32 %retval.0.i to i64 %mul = shl nuw nsw i64 %conv, 3 %cmp = icmp eq ptr %cond.i, null + %add = add nuw nsw i64 %mul, 8 br i1 %cmp, label %while.end15, label %if.else.i while.end15: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeIlLi8EEEiii.exit - %add = add nuw nsw i64 %mul, 8 %call.i15 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %add) #35 br label %if.end if.else.i: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeIlLi8EEEiii.exit - %sub.i.i = add nuw nsw i64 %mul, 15 - %and.i.i = and i64 %sub.i.i, 34359738360 - %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %and.i.i) + %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %add) br label %if.end if.end: ; preds = %if.else.i, %while.end15 @@ -16828,7 +16826,7 @@ while.end15: ; preds = %_ZN6google8protobuf br label %if.end if.else.i: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeIjLi8EEEiii.exit - %sub.i.i = add nuw nsw i64 %mul, 15 + %sub.i.i = add nuw nsw i64 %mul, 12 %and.i.i = and i64 %sub.i.i, 17179869176 %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %and.i.i) br label %if.end @@ -16965,17 +16963,15 @@ _ZN6google8protobuf8internal20CalculateReserveSizeImLi8EEEiii.exit: ; preds = %e %conv = zext nneg i32 %retval.0.i to i64 %mul = shl nuw nsw i64 %conv, 3 %cmp = icmp eq ptr %cond.i, null + %add = add nuw nsw i64 %mul, 8 br i1 %cmp, label %while.end15, label %if.else.i while.end15: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeImLi8EEEiii.exit - %add = add nuw nsw i64 %mul, 8 %call.i15 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %add) #35 br label %if.end if.else.i: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeImLi8EEEiii.exit - %sub.i.i = add nuw nsw i64 %mul, 15 - %and.i.i = and i64 %sub.i.i, 34359738360 - %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %and.i.i) + %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %add) br label %if.end if.end: ; preds = %if.else.i, %while.end15 @@ -17117,7 +17113,7 @@ while.end15: ; preds = %_ZN6google8protobuf br label %if.end if.else.i: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeIfLi8EEEiii.exit - %sub.i.i = add nuw nsw i64 %mul, 15 + %sub.i.i = add nuw nsw i64 %mul, 12 %and.i.i = and i64 %sub.i.i, 17179869176 %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %and.i.i) br label %if.end @@ -17254,17 +17250,15 @@ _ZN6google8protobuf8internal20CalculateReserveSizeIdLi8EEEiii.exit: ; preds = %e %conv = zext nneg i32 %retval.0.i to i64 %mul = shl nuw nsw i64 %conv, 3 %cmp = icmp eq ptr %cond.i, null + %add = add nuw nsw i64 %mul, 8 br i1 %cmp, label %while.end15, label %if.else.i while.end15: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeIdLi8EEEiii.exit - %add = add nuw nsw i64 %mul, 8 %call.i15 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %add) #35 br label %if.end if.else.i: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeIdLi8EEEiii.exit - %sub.i.i = add nuw nsw i64 %mul, 15 - %and.i.i = and i64 %sub.i.i, 34359738360 - %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %and.i.i) + %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %add) br label %if.end if.end: ; preds = %if.else.i, %while.end15 diff --git a/bench/protobuf/optimized/generated_message_tctable_lite.cc.ll b/bench/protobuf/optimized/generated_message_tctable_lite.cc.ll index d45949c86ad..e01f387081f 100644 --- a/bench/protobuf/optimized/generated_message_tctable_lite.cc.ll +++ b/bench/protobuf/optimized/generated_message_tctable_lite.cc.ll @@ -22569,17 +22569,15 @@ _ZN6google8protobuf8internal20CalculateReserveSizeImLi8EEEiii.exit: ; preds = %e %conv = zext nneg i32 %retval.0.i to i64 %mul = shl nuw nsw i64 %conv, 3 %cmp = icmp eq ptr %cond.i, null + %add = add nuw nsw i64 %mul, 8 br i1 %cmp, label %while.end15, label %if.else.i while.end15: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeImLi8EEEiii.exit - %add = add nuw nsw i64 %mul, 8 %call.i15 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %add) #31 br label %if.end if.else.i: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeImLi8EEEiii.exit - %sub.i.i = add nuw nsw i64 %mul, 15 - %and.i.i = and i64 %sub.i.i, 34359738360 - %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %and.i.i) + %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %add) br label %if.end if.end: ; preds = %if.else.i, %while.end15 @@ -22737,7 +22735,7 @@ while.end15: ; preds = %_ZN6google8protobuf br label %if.end if.else.i: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeIjLi8EEEiii.exit - %sub.i.i = add nuw nsw i64 %mul, 15 + %sub.i.i = add nuw nsw i64 %mul, 12 %and.i.i = and i64 %sub.i.i, 17179869176 %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %and.i.i) br label %if.end @@ -36812,7 +36810,7 @@ while.end15: ; preds = %_ZN6google8protobuf br label %if.end if.else.i: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeIiLi8EEEiii.exit - %sub.i.i = add nuw nsw i64 %mul, 15 + %sub.i.i = add nuw nsw i64 %mul, 12 %and.i.i = and i64 %sub.i.i, 17179869176 %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %and.i.i) br label %if.end @@ -36949,17 +36947,15 @@ _ZN6google8protobuf8internal20CalculateReserveSizeIlLi8EEEiii.exit: ; preds = %e %conv = zext nneg i32 %retval.0.i to i64 %mul = shl nuw nsw i64 %conv, 3 %cmp = icmp eq ptr %cond.i, null + %add = add nuw nsw i64 %mul, 8 br i1 %cmp, label %while.end15, label %if.else.i while.end15: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeIlLi8EEEiii.exit - %add = add nuw nsw i64 %mul, 8 %call.i15 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %add) #31 br label %if.end if.else.i: ; preds = %_ZN6google8protobuf8internal20CalculateReserveSizeIlLi8EEEiii.exit - %sub.i.i = add nuw nsw i64 %mul, 15 - %and.i.i = and i64 %sub.i.i, 34359738360 - %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %and.i.i) + %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %cond.i, i64 noundef %add) br label %if.end if.end: ; preds = %if.else.i, %while.end15 diff --git a/bench/protobuf/optimized/message_builder.cc.ll b/bench/protobuf/optimized/message_builder.cc.ll index 74335d7ca7f..7a5093826e1 100644 --- a/bench/protobuf/optimized/message_builder.cc.ll +++ b/bench/protobuf/optimized/message_builder.cc.ll @@ -8438,8 +8438,8 @@ while.body.preheader.i: ; preds = %if.end.i br label %while.body.i while.body.i: ; preds = %while.body.i, %while.body.preheader.i - %node.addr.071.i = phi ptr [ %5, %while.body.i ], [ %1, %while.body.preheader.i ] - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.071.i, i64 256 + %node.addr.070.i = phi ptr [ %5, %while.body.i ], [ %1, %while.body.preheader.i ] + %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.070.i, i64 256 %5 = load ptr, ptr %add.ptr.i.i.i.i.i, align 8 %arrayidx.i.i46.i = getelementptr i8, ptr %5, i64 11 %6 = load i8, ptr %arrayidx.i.i46.i, align 1 @@ -8465,8 +8465,8 @@ do.body.i: ; preds = %do.body.i.backedge, br i1 %cmp.i.not.i50.i, label %while.body22.i, label %if.end28.i while.body22.i: ; preds = %do.body.i, %while.body22.i - %node.addr.274.i = phi ptr [ %11, %while.body22.i ], [ %9, %do.body.i ] - %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.274.i, i64 256 + %node.addr.273.i = phi ptr [ %11, %while.body22.i ], [ %9, %do.body.i ] + %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.273.i, i64 256 %11 = load ptr, ptr %add.ptr.i.i.i.i53.i, align 8 %arrayidx.i.i51.i = getelementptr i8, ptr %11, i64 11 %12 = load i8, ptr %arrayidx.i.i51.i, align 1 @@ -8485,8 +8485,8 @@ if.end28.i: ; preds = %while.end24.i, %do. %pos.2.i = phi i64 [ %conv26.i, %while.end24.i ], [ %pos.1.i, %do.body.i ] %parent.2.i = phi ptr [ %14, %while.end24.i ], [ %parent.1.i, %do.body.i ] tail call void @_ZdlPv(ptr noundef nonnull %node.addr.1.i) #27 - %arrayidx.i62.i = getelementptr i8, ptr %parent.2.i, i64 10 - %15 = load i8, ptr %arrayidx.i62.i, align 1 + %arrayidx.i61.i = getelementptr i8, ptr %parent.2.i, i64 10 + %15 = load i8, ptr %arrayidx.i61.i, align 1 %conv35.i = zext i8 %15 to i64 %cmp36.not.not.i = icmp ult i64 %pos.2.i, %conv35.i br i1 %cmp36.not.not.i, label %do.body.i.backedge, label %do.body37.i @@ -8499,16 +8499,16 @@ do.body.i.backedge: ; preds = %if.end28.i, %do.end do.body37.i: ; preds = %if.end28.i, %if.end46.i %parent.3.i = phi ptr [ %17, %if.end46.i ], [ %parent.2.i, %if.end28.i ] - %add.ptr.i.i.i63.i = getelementptr i8, ptr %parent.3.i, i64 8 - %16 = load i8, ptr %add.ptr.i.i.i63.i, align 1 + %add.ptr.i.i.i62.i = getelementptr i8, ptr %parent.3.i, i64 8 + %16 = load i8, ptr %add.ptr.i.i.i62.i, align 1 %17 = load ptr, ptr %parent.3.i, align 8 tail call void @_ZdlPv(ptr noundef nonnull %parent.3.i) #27 %cmp44.i = icmp eq ptr %17, %4 br i1 %cmp44.i, label %if.end, label %if.end46.i if.end46.i: ; preds = %do.body37.i - %arrayidx.i65.i = getelementptr i8, ptr %17, i64 10 - %18 = load i8, ptr %arrayidx.i65.i, align 1 + %arrayidx.i64.i = getelementptr i8, ptr %17, i64 10 + %18 = load i8, ptr %arrayidx.i64.i, align 1 %cmp51.not.i = icmp ult i8 %16, %18 br i1 %cmp51.not.i, label %do.end52.i, label %do.body37.i, !llvm.loop !367 @@ -8677,8 +8677,8 @@ while.body.preheader.i: ; preds = %if.end.i br label %while.body.i while.body.i: ; preds = %while.body.i, %while.body.preheader.i - %node.addr.071.i = phi ptr [ %5, %while.body.i ], [ %1, %while.body.preheader.i ] - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.071.i, i64 256 + %node.addr.070.i = phi ptr [ %5, %while.body.i ], [ %1, %while.body.preheader.i ] + %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.070.i, i64 256 %5 = load ptr, ptr %add.ptr.i.i.i.i.i, align 8 %arrayidx.i.i46.i = getelementptr i8, ptr %5, i64 11 %6 = load i8, ptr %arrayidx.i.i46.i, align 1 @@ -8704,8 +8704,8 @@ do.body.i: ; preds = %do.body.i.backedge, br i1 %cmp.i.not.i50.i, label %while.body22.i, label %if.end28.i while.body22.i: ; preds = %do.body.i, %while.body22.i - %node.addr.274.i = phi ptr [ %11, %while.body22.i ], [ %9, %do.body.i ] - %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.274.i, i64 256 + %node.addr.273.i = phi ptr [ %11, %while.body22.i ], [ %9, %do.body.i ] + %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.273.i, i64 256 %11 = load ptr, ptr %add.ptr.i.i.i.i53.i, align 8 %arrayidx.i.i51.i = getelementptr i8, ptr %11, i64 11 %12 = load i8, ptr %arrayidx.i.i51.i, align 1 @@ -8724,8 +8724,8 @@ if.end28.i: ; preds = %while.end24.i, %do. %pos.2.i = phi i64 [ %conv26.i, %while.end24.i ], [ %pos.1.i, %do.body.i ] %parent.2.i = phi ptr [ %14, %while.end24.i ], [ %parent.1.i, %do.body.i ] tail call void @_ZdlPv(ptr noundef nonnull %node.addr.1.i) #27 - %arrayidx.i62.i = getelementptr i8, ptr %parent.2.i, i64 10 - %15 = load i8, ptr %arrayidx.i62.i, align 1 + %arrayidx.i61.i = getelementptr i8, ptr %parent.2.i, i64 10 + %15 = load i8, ptr %arrayidx.i61.i, align 1 %conv35.i = zext i8 %15 to i64 %cmp36.not.not.i = icmp ult i64 %pos.2.i, %conv35.i br i1 %cmp36.not.not.i, label %do.body.i.backedge, label %do.body37.i @@ -8738,16 +8738,16 @@ do.body.i.backedge: ; preds = %if.end28.i, %do.end do.body37.i: ; preds = %if.end28.i, %if.end46.i %parent.3.i = phi ptr [ %17, %if.end46.i ], [ %parent.2.i, %if.end28.i ] - %add.ptr.i.i.i63.i = getelementptr i8, ptr %parent.3.i, i64 8 - %16 = load i8, ptr %add.ptr.i.i.i63.i, align 1 + %add.ptr.i.i.i62.i = getelementptr i8, ptr %parent.3.i, i64 8 + %16 = load i8, ptr %add.ptr.i.i.i62.i, align 1 %17 = load ptr, ptr %parent.3.i, align 8 tail call void @_ZdlPv(ptr noundef nonnull %parent.3.i) #27 %cmp44.i = icmp eq ptr %17, %4 br i1 %cmp44.i, label %if.end, label %if.end46.i if.end46.i: ; preds = %do.body37.i - %arrayidx.i65.i = getelementptr i8, ptr %17, i64 10 - %18 = load i8, ptr %arrayidx.i65.i, align 1 + %arrayidx.i64.i = getelementptr i8, ptr %17, i64 10 + %18 = load i8, ptr %arrayidx.i64.i, align 1 %cmp51.not.i = icmp ult i8 %16, %18 br i1 %cmp51.not.i, label %do.end52.i, label %do.body37.i, !llvm.loop !371 @@ -8851,9 +8851,8 @@ if.then12: ; preds = %if.then9 %12 = tail call i8 @llvm.umin.i8(i8 %11, i8 15) %13 = shl nuw i8 %12, 4 %mul.i.i.i.i.i = zext i8 %13 to i64 - %add.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %add.i.i.i.i.i, 496 - %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #26 + %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 16 + %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.i.i.i.i) #26 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 store i8 0, ptr %add.ptr.i.i.i.i.i.i5, align 1 @@ -11910,9 +11909,9 @@ if.then12: ; preds = %if.then9 %11 = shl nuw nsw i8 %8, 1 %12 = tail call i8 @llvm.umin.i8(i8 %11, i8 61) %13 = shl nuw i8 %12, 2 - %mul.i.i.i.i.i = zext i8 %13 to i64 - %sub.i.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %sub.i.i.i.i.i.i, 504 + %reass.mul.i.i.i.i.i = zext i8 %13 to i64 + %sub.i.i.i.i = add nuw nsw i64 %reass.mul.i.i.i.i.i, 16 + %div1.i.i.i.i = and i64 %sub.i.i.i.i, 504 %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #26 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 diff --git a/bench/protobuf/optimized/message_builder_lite.cc.ll b/bench/protobuf/optimized/message_builder_lite.cc.ll index 986763db3f2..444e1ce1e78 100644 --- a/bench/protobuf/optimized/message_builder_lite.cc.ll +++ b/bench/protobuf/optimized/message_builder_lite.cc.ll @@ -1830,8 +1830,8 @@ while.body.preheader.i: ; preds = %if.end.i br label %while.body.i while.body.i: ; preds = %while.body.i, %while.body.preheader.i - %node.addr.071.i = phi ptr [ %5, %while.body.i ], [ %1, %while.body.preheader.i ] - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.071.i, i64 256 + %node.addr.070.i = phi ptr [ %5, %while.body.i ], [ %1, %while.body.preheader.i ] + %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %node.addr.070.i, i64 256 %5 = load ptr, ptr %add.ptr.i.i.i.i.i, align 8 %arrayidx.i.i46.i = getelementptr i8, ptr %5, i64 11 %6 = load i8, ptr %arrayidx.i.i46.i, align 1 @@ -1857,8 +1857,8 @@ do.body.i: ; preds = %do.body.i.backedge, br i1 %cmp.i.not.i50.i, label %while.body22.i, label %if.end28.i while.body22.i: ; preds = %do.body.i, %while.body22.i - %node.addr.274.i = phi ptr [ %11, %while.body22.i ], [ %9, %do.body.i ] - %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.274.i, i64 256 + %node.addr.273.i = phi ptr [ %11, %while.body22.i ], [ %9, %do.body.i ] + %add.ptr.i.i.i.i53.i = getelementptr inbounds i8, ptr %node.addr.273.i, i64 256 %11 = load ptr, ptr %add.ptr.i.i.i.i53.i, align 8 %arrayidx.i.i51.i = getelementptr i8, ptr %11, i64 11 %12 = load i8, ptr %arrayidx.i.i51.i, align 1 @@ -1877,8 +1877,8 @@ if.end28.i: ; preds = %while.end24.i, %do. %pos.2.i = phi i64 [ %conv26.i, %while.end24.i ], [ %pos.1.i, %do.body.i ] %parent.2.i = phi ptr [ %14, %while.end24.i ], [ %parent.1.i, %do.body.i ] tail call void @_ZdlPv(ptr noundef nonnull %node.addr.1.i) #27 - %arrayidx.i62.i = getelementptr i8, ptr %parent.2.i, i64 10 - %15 = load i8, ptr %arrayidx.i62.i, align 1 + %arrayidx.i61.i = getelementptr i8, ptr %parent.2.i, i64 10 + %15 = load i8, ptr %arrayidx.i61.i, align 1 %conv35.i = zext i8 %15 to i64 %cmp36.not.not.i = icmp ult i64 %pos.2.i, %conv35.i br i1 %cmp36.not.not.i, label %do.body.i.backedge, label %do.body37.i @@ -1891,16 +1891,16 @@ do.body.i.backedge: ; preds = %if.end28.i, %do.end do.body37.i: ; preds = %if.end28.i, %if.end46.i %parent.3.i = phi ptr [ %17, %if.end46.i ], [ %parent.2.i, %if.end28.i ] - %add.ptr.i.i.i63.i = getelementptr i8, ptr %parent.3.i, i64 8 - %16 = load i8, ptr %add.ptr.i.i.i63.i, align 1 + %add.ptr.i.i.i62.i = getelementptr i8, ptr %parent.3.i, i64 8 + %16 = load i8, ptr %add.ptr.i.i.i62.i, align 1 %17 = load ptr, ptr %parent.3.i, align 8 tail call void @_ZdlPv(ptr noundef nonnull %parent.3.i) #27 %cmp44.i = icmp eq ptr %17, %4 br i1 %cmp44.i, label %if.end, label %if.end46.i if.end46.i: ; preds = %do.body37.i - %arrayidx.i65.i = getelementptr i8, ptr %17, i64 10 - %18 = load i8, ptr %arrayidx.i65.i, align 1 + %arrayidx.i64.i = getelementptr i8, ptr %17, i64 10 + %18 = load i8, ptr %arrayidx.i64.i, align 1 %cmp51.not.i = icmp ult i8 %16, %18 br i1 %cmp51.not.i, label %do.end52.i, label %do.body37.i, !llvm.loop !73 @@ -2600,9 +2600,8 @@ if.then12: ; preds = %if.then9 %12 = tail call i8 @llvm.umin.i8(i8 %11, i8 15) %13 = shl nuw i8 %12, 4 %mul.i.i.i.i.i = zext i8 %13 to i64 - %add.i.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 19 - %div1.i.i.i.i = and i64 %add.i.i.i.i.i, 496 - %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %div1.i.i.i.i) #26 + %sub.i.i.i.i = add nuw nsw i64 %mul.i.i.i.i.i, 16 + %call5.i.i2.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.i.i.i.i) #26 store ptr %call5.i.i2.i.i.i.i, ptr %call5.i.i2.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i5 = getelementptr i8, ptr %call5.i.i2.i.i.i.i, i64 8 store i8 0, ptr %add.ptr.i.i.i.i.i.i5, align 1 diff --git a/bench/protobuf/optimized/repeated_ptr_field.cc.ll b/bench/protobuf/optimized/repeated_ptr_field.cc.ll index f6a1d24dc5b..72cbff9a60c 100644 --- a/bench/protobuf/optimized/repeated_ptr_field.cc.ll +++ b/bench/protobuf/optimized/repeated_ptr_field.cc.ll @@ -70,17 +70,15 @@ while.end: ; preds = %entry, %if.end.i, % %conv = zext nneg i32 %retval.0.i to i64 %mul = shl nuw nsw i64 %conv, 3 %cmp = icmp eq ptr %1, null + %add15 = add nuw nsw i64 %mul, 8 br i1 %cmp, label %if.then, label %if.else.i if.then: ; preds = %while.end - %add15 = add nuw nsw i64 %mul, 8 %call.i29 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %add15) #15 br label %if.end if.else.i: ; preds = %while.end - %sub.i.i = add nuw nsw i64 %mul, 15 - %and.i.i = and i64 %sub.i.i, 34359738360 - %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %1, i64 noundef %and.i.i) + %call2.i = tail call noundef ptr @_ZN6google8protobuf5Arena16AllocateForArrayEm(ptr noundef nonnull align 8 dereferenceable(144) %1, i64 noundef %add15) br label %if.end if.end: ; preds = %if.else.i, %if.then diff --git a/bench/pybind11/optimized/test_eigen_matrix.cpp.ll b/bench/pybind11/optimized/test_eigen_matrix.cpp.ll index 856ee121ff5..761f634da90 100644 --- a/bench/pybind11/optimized/test_eigen_matrix.cpp.ll +++ b/bench/pybind11/optimized/test_eigen_matrix.cpp.ll @@ -105143,7 +105143,7 @@ _ZN5Eigen8internal14aligned_mallocEm.exit: ; preds = %37, %29, %34 %58 = tail call ptr @__cxa_allocate_exception(i64 8) #37 store ptr getelementptr inbounds (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %58, align 8 invoke void @__cxa_throw(ptr nonnull %58, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #42 - to label %.cont unwind label %182 + to label %.cont unwind label %179 .cont: ; preds = %.invoke unreachable @@ -105177,281 +105177,278 @@ _ZN5Eigen8internal14aligned_mallocEm.exit: ; preds = %37, %29, %34 %75 = add i64 %74, %71 %76 = icmp sgt i64 %68, 3 %smax.i.us = call i64 @llvm.smax.i64(i64 %71, i64 4) - %77 = add nsw i64 %smax.i.us, -1 - %78 = and i64 %77, -4 - %79 = add nuw nsw i64 %78, 4 - %80 = icmp eq i64 %.0142241.us, 0 - %or.cond.us = or i1 %spec.select, %80 - %81 = getelementptr double, ptr %7, i64 %.0142241.us - br label %82 - -82: ; preds = %.lr.ph.us, %.loopexit.us - %.0141240.us = phi i64 [ 0, %.lr.ph.us ], [ %83, %.loopexit.us ] - %83 = add nsw i64 %.0141240.us, %17 - %.sroa.speculated187.us = call i64 @llvm.smin.i64(i64 %2, i64 %83) - %84 = sub nsw i64 %.sroa.speculated187.us, %.0141240.us - %85 = mul nsw i64 %.0141240.us, %4 - %86 = getelementptr double, ptr %69, i64 %85 + %77 = icmp eq i64 %.0142241.us, 0 + %or.cond.us = or i1 %spec.select, %77 + %78 = getelementptr double, ptr %7, i64 %.0142241.us + br label %79 + +79: ; preds = %.lr.ph.us, %.loopexit.us + %.0141240.us = phi i64 [ 0, %.lr.ph.us ], [ %80, %.loopexit.us ] + %80 = add nsw i64 %.0141240.us, %17 + %.sroa.speculated187.us = call i64 @llvm.smin.i64(i64 %2, i64 %80) + %81 = sub nsw i64 %.sroa.speculated187.us, %.0141240.us + %82 = mul nsw i64 %.0141240.us, %4 + %83 = getelementptr double, ptr %69, i64 %82 call void asm sideeffect "#EIGEN PRODUCT PACK LHS", "~{dirflag},~{fpsr},~{flags}"() #37, !srcloc !3545 br i1 %76, label %.preheader88.lr.ph.i.us, label %.preheader87.i.us -.preheader88.lr.ph.i.us: ; preds = %82 - %87 = icmp sgt i64 %84, 0 - br i1 %87, label %.preheader88.us.i.us, label %.preheader87.i.us +.preheader88.lr.ph.i.us: ; preds = %79 + %84 = icmp sgt i64 %81, 0 + br i1 %84, label %.preheader88.us.i.us, label %.preheader87.i.us .preheader88.us.i.us: ; preds = %.preheader88.lr.ph.i.us, %._crit_edge.us.i.us - %.07992.us.i.us = phi i64 [ %101, %._crit_edge.us.i.us ], [ 0, %.preheader88.lr.ph.i.us ] - %.08091.us.i.us = phi i64 [ %99, %._crit_edge.us.i.us ], [ 0, %.preheader88.lr.ph.i.us ] - %88 = or disjoint i64 %.07992.us.i.us, 2 - %89 = getelementptr double, ptr %86, i64 %.07992.us.i.us - %90 = getelementptr double, ptr %86, i64 %88 - br label %91 + %.07992.us.i.us = phi i64 [ %98, %._crit_edge.us.i.us ], [ 0, %.preheader88.lr.ph.i.us ] + %.08091.us.i.us = phi i64 [ %96, %._crit_edge.us.i.us ], [ 0, %.preheader88.lr.ph.i.us ] + %85 = or disjoint i64 %.07992.us.i.us, 2 + %86 = getelementptr double, ptr %83, i64 %.07992.us.i.us + %87 = getelementptr double, ptr %83, i64 %85 + br label %88 -91: ; preds = %91, %.preheader88.us.i.us - %.07890.us.i.us = phi i64 [ 0, %.preheader88.us.i.us ], [ %100, %91 ] - %.18189.us.i.us = phi i64 [ %.08091.us.i.us, %.preheader88.us.i.us ], [ %99, %91 ] - %92 = mul nsw i64 %.07890.us.i.us, %4 - %93 = getelementptr double, ptr %89, i64 %92 - %94 = load <2 x double>, ptr %93, align 1 - %95 = getelementptr double, ptr %90, i64 %92 - %96 = load <2 x double>, ptr %95, align 1 - %97 = getelementptr inbounds double, ptr %43, i64 %.18189.us.i.us - store <2 x double> %94, ptr %97, align 16 - %98 = getelementptr i8, ptr %97, i64 16 - store <2 x double> %96, ptr %98, align 16 - %99 = add nsw i64 %.18189.us.i.us, 4 - %100 = add nuw nsw i64 %.07890.us.i.us, 1 - %exitcond.not.i.us = icmp eq i64 %100, %84 - br i1 %exitcond.not.i.us, label %._crit_edge.us.i.us, label %91, !llvm.loop !3546 - -._crit_edge.us.i.us: ; preds = %91 - %101 = add nuw nsw i64 %.07992.us.i.us, 4 - %102 = icmp slt i64 %101, %71 - br i1 %102, label %.preheader88.us.i.us, label %.preheader87.i.us, !llvm.loop !3547 - -.preheader87.i.us: ; preds = %._crit_edge.us.i.us, %.preheader88.lr.ph.i.us, %82 - %.080.lcssa.i.us = phi i64 [ 0, %82 ], [ 0, %.preheader88.lr.ph.i.us ], [ %99, %._crit_edge.us.i.us ] - %.079.lcssa.i.us = phi i64 [ 0, %82 ], [ %79, %.preheader88.lr.ph.i.us ], [ %101, %._crit_edge.us.i.us ] - %103 = icmp slt i64 %.079.lcssa.i.us, %75 - br i1 %103, label %.preheader86.lr.ph.i.us, label %.preheader85.i.us +88: ; preds = %88, %.preheader88.us.i.us + %.07890.us.i.us = phi i64 [ 0, %.preheader88.us.i.us ], [ %97, %88 ] + %.18189.us.i.us = phi i64 [ %.08091.us.i.us, %.preheader88.us.i.us ], [ %96, %88 ] + %89 = mul nsw i64 %.07890.us.i.us, %4 + %90 = getelementptr double, ptr %86, i64 %89 + %91 = load <2 x double>, ptr %90, align 1 + %92 = getelementptr double, ptr %87, i64 %89 + %93 = load <2 x double>, ptr %92, align 1 + %94 = getelementptr inbounds double, ptr %43, i64 %.18189.us.i.us + store <2 x double> %91, ptr %94, align 16 + %95 = getelementptr i8, ptr %94, i64 16 + store <2 x double> %93, ptr %95, align 16 + %96 = add nsw i64 %.18189.us.i.us, 4 + %97 = add nuw nsw i64 %.07890.us.i.us, 1 + %exitcond.not.i.us = icmp eq i64 %97, %81 + br i1 %exitcond.not.i.us, label %._crit_edge.us.i.us, label %88, !llvm.loop !3546 + +._crit_edge.us.i.us: ; preds = %88 + %98 = add nuw nsw i64 %.07992.us.i.us, 4 + %99 = icmp slt i64 %98, %71 + br i1 %99, label %.preheader88.us.i.us, label %.preheader87.i.us, !llvm.loop !3547 + +.preheader87.i.us: ; preds = %._crit_edge.us.i.us, %.preheader88.lr.ph.i.us, %79 + %.080.lcssa.i.us = phi i64 [ 0, %79 ], [ 0, %.preheader88.lr.ph.i.us ], [ %96, %._crit_edge.us.i.us ] + %.079.lcssa.i.us = phi i64 [ 0, %79 ], [ %smax.i.us, %.preheader88.lr.ph.i.us ], [ %98, %._crit_edge.us.i.us ] + %100 = icmp slt i64 %.079.lcssa.i.us, %75 + br i1 %100, label %.preheader86.lr.ph.i.us, label %.preheader85.i.us .preheader86.lr.ph.i.us: ; preds = %.preheader87.i.us - %104 = icmp sgt i64 %84, 0 - br i1 %104, label %.preheader86.us.i.us, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us + %101 = icmp sgt i64 %81, 0 + br i1 %101, label %.preheader86.us.i.us, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us .preheader86.us.i.us: ; preds = %.preheader86.lr.ph.i.us, %._crit_edge.us102.i.us - %.199.us.i.us = phi i64 [ %113, %._crit_edge.us102.i.us ], [ %.079.lcssa.i.us, %.preheader86.lr.ph.i.us ] - %.28298.us.i.us = phi i64 [ %111, %._crit_edge.us102.i.us ], [ %.080.lcssa.i.us, %.preheader86.lr.ph.i.us ] - %105 = getelementptr double, ptr %86, i64 %.199.us.i.us - br label %106 - -106: ; preds = %106, %.preheader86.us.i.us - %.07797.us.i.us = phi i64 [ 0, %.preheader86.us.i.us ], [ %112, %106 ] - %.396.us.i.us = phi i64 [ %.28298.us.i.us, %.preheader86.us.i.us ], [ %111, %106 ] - %107 = mul nsw i64 %.07797.us.i.us, %4 - %108 = getelementptr double, ptr %105, i64 %107 - %109 = load <2 x double>, ptr %108, align 1 - %110 = getelementptr inbounds double, ptr %43, i64 %.396.us.i.us - store <2 x double> %109, ptr %110, align 16 - %111 = add nsw i64 %.396.us.i.us, 2 - %112 = add nuw nsw i64 %.07797.us.i.us, 1 - %exitcond122.not.i.us = icmp eq i64 %112, %84 - br i1 %exitcond122.not.i.us, label %._crit_edge.us102.i.us, label %106, !llvm.loop !3548 - -._crit_edge.us102.i.us: ; preds = %106 - %113 = add nuw nsw i64 %.199.us.i.us, 2 - %114 = icmp slt i64 %113, %75 - br i1 %114, label %.preheader86.us.i.us, label %.preheader85.i.us, !llvm.loop !3549 + %.199.us.i.us = phi i64 [ %110, %._crit_edge.us102.i.us ], [ %.079.lcssa.i.us, %.preheader86.lr.ph.i.us ] + %.28298.us.i.us = phi i64 [ %108, %._crit_edge.us102.i.us ], [ %.080.lcssa.i.us, %.preheader86.lr.ph.i.us ] + %102 = getelementptr double, ptr %83, i64 %.199.us.i.us + br label %103 + +103: ; preds = %103, %.preheader86.us.i.us + %.07797.us.i.us = phi i64 [ 0, %.preheader86.us.i.us ], [ %109, %103 ] + %.396.us.i.us = phi i64 [ %.28298.us.i.us, %.preheader86.us.i.us ], [ %108, %103 ] + %104 = mul nsw i64 %.07797.us.i.us, %4 + %105 = getelementptr double, ptr %102, i64 %104 + %106 = load <2 x double>, ptr %105, align 1 + %107 = getelementptr inbounds double, ptr %43, i64 %.396.us.i.us + store <2 x double> %106, ptr %107, align 16 + %108 = add nsw i64 %.396.us.i.us, 2 + %109 = add nuw nsw i64 %.07797.us.i.us, 1 + %exitcond122.not.i.us = icmp eq i64 %109, %81 + br i1 %exitcond122.not.i.us, label %._crit_edge.us102.i.us, label %103, !llvm.loop !3548 + +._crit_edge.us102.i.us: ; preds = %103 + %110 = add nuw nsw i64 %.199.us.i.us, 2 + %111 = icmp slt i64 %110, %75 + br i1 %111, label %.preheader86.us.i.us, label %.preheader85.i.us, !llvm.loop !3549 .preheader85.i.us: ; preds = %._crit_edge.us102.i.us, %.preheader87.i.us - %.282.lcssa.i.us = phi i64 [ %.080.lcssa.i.us, %.preheader87.i.us ], [ %111, %._crit_edge.us102.i.us ] - %.1.lcssa.i.us = phi i64 [ %.079.lcssa.i.us, %.preheader87.i.us ], [ %113, %._crit_edge.us102.i.us ] - %115 = icmp slt i64 %.1.lcssa.i.us, %68 - %116 = icmp sgt i64 %84, 0 - %or.cond229.us = select i1 %115, i1 %116, i1 false + %.282.lcssa.i.us = phi i64 [ %.080.lcssa.i.us, %.preheader87.i.us ], [ %108, %._crit_edge.us102.i.us ] + %.1.lcssa.i.us = phi i64 [ %.079.lcssa.i.us, %.preheader87.i.us ], [ %110, %._crit_edge.us102.i.us ] + %112 = icmp slt i64 %.1.lcssa.i.us, %68 + %113 = icmp sgt i64 %81, 0 + %or.cond229.us = select i1 %112, i1 %113, i1 false br i1 %or.cond229.us, label %.preheader.us.i.us, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us .preheader.us.i.us: ; preds = %.preheader85.i.us, %._crit_edge.us111.i.us - %.2109.us.i.us = phi i64 [ %125, %._crit_edge.us111.i.us ], [ %.1.lcssa.i.us, %.preheader85.i.us ] - %.4108.us.i.us = phi i64 [ %122, %._crit_edge.us111.i.us ], [ %.282.lcssa.i.us, %.preheader85.i.us ] - %117 = getelementptr double, ptr %86, i64 %.2109.us.i.us - br label %118 + %.2109.us.i.us = phi i64 [ %122, %._crit_edge.us111.i.us ], [ %.1.lcssa.i.us, %.preheader85.i.us ] + %.4108.us.i.us = phi i64 [ %119, %._crit_edge.us111.i.us ], [ %.282.lcssa.i.us, %.preheader85.i.us ] + %114 = getelementptr double, ptr %83, i64 %.2109.us.i.us + br label %115 -118: ; preds = %118, %.preheader.us.i.us - %.0107.us.i.us = phi i64 [ 0, %.preheader.us.i.us ], [ %124, %118 ] - %.5106.us.i.us = phi i64 [ %.4108.us.i.us, %.preheader.us.i.us ], [ %122, %118 ] - %119 = mul nsw i64 %.0107.us.i.us, %4 - %120 = getelementptr double, ptr %117, i64 %119 - %121 = load double, ptr %120, align 8 - %122 = add nsw i64 %.5106.us.i.us, 1 - %123 = getelementptr inbounds double, ptr %43, i64 %.5106.us.i.us - store double %121, ptr %123, align 8 - %124 = add nuw nsw i64 %.0107.us.i.us, 1 - %exitcond123.not.i.us = icmp eq i64 %124, %84 - br i1 %exitcond123.not.i.us, label %._crit_edge.us111.i.us, label %118, !llvm.loop !3550 - -._crit_edge.us111.i.us: ; preds = %118 - %125 = add nuw nsw i64 %.2109.us.i.us, 1 - %exitcond124.not.i.us = icmp eq i64 %125, %68 +115: ; preds = %115, %.preheader.us.i.us + %.0107.us.i.us = phi i64 [ 0, %.preheader.us.i.us ], [ %121, %115 ] + %.5106.us.i.us = phi i64 [ %.4108.us.i.us, %.preheader.us.i.us ], [ %119, %115 ] + %116 = mul nsw i64 %.0107.us.i.us, %4 + %117 = getelementptr double, ptr %114, i64 %116 + %118 = load double, ptr %117, align 8 + %119 = add nsw i64 %.5106.us.i.us, 1 + %120 = getelementptr inbounds double, ptr %43, i64 %.5106.us.i.us + store double %118, ptr %120, align 8 + %121 = add nuw nsw i64 %.0107.us.i.us, 1 + %exitcond123.not.i.us = icmp eq i64 %121, %81 + br i1 %exitcond123.not.i.us, label %._crit_edge.us111.i.us, label %115, !llvm.loop !3550 + +._crit_edge.us111.i.us: ; preds = %115 + %122 = add nuw nsw i64 %.2109.us.i.us, 1 + %exitcond124.not.i.us = icmp eq i64 %122, %68 br i1 %exitcond124.not.i.us, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us, label %.preheader.us.i.us, !llvm.loop !3551 _ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us: ; preds = %._crit_edge.us111.i.us, %.preheader86.lr.ph.i.us, %.preheader85.i.us - %126 = phi i1 [ %116, %.preheader85.i.us ], [ false, %.preheader86.lr.ph.i.us ], [ %116, %._crit_edge.us111.i.us ] - %127 = getelementptr double, ptr %5, i64 %.0141240.us - br label %128 + %123 = phi i1 [ %113, %.preheader85.i.us ], [ false, %.preheader86.lr.ph.i.us ], [ %113, %._crit_edge.us111.i.us ] + %124 = getelementptr double, ptr %5, i64 %.0141240.us + br label %125 -128: ; preds = %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.us, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us - %.0139.us = phi i64 [ 0, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us ], [ %131, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.us ] - %129 = icmp slt i64 %.0139.us, %1 - br i1 %129, label %130, label %.loopexit.us +125: ; preds = %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.us, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us + %.0139.us = phi i64 [ 0, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi2EDv2_dLi0ELb0ELb0EEclEPdRKS3_llll.exit.us ], [ %128, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.us ] + %126 = icmp slt i64 %.0139.us, %1 + br i1 %126, label %127, label %.loopexit.us -130: ; preds = %128 - %131 = add nsw i64 %.0139.us, %.sroa.speculated205 - %.sroa.speculated.us = call i64 @llvm.smin.i64(i64 %1, i64 %131) - %132 = sub nsw i64 %.sroa.speculated.us, %.0139.us - br i1 %or.cond.us, label %133, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.us - -133: ; preds = %130 - %134 = mul nsw i64 %.0139.us, %6 - %135 = getelementptr double, ptr %127, i64 %134 +127: ; preds = %125 + %128 = add nsw i64 %.0139.us, %.sroa.speculated205 + %.sroa.speculated.us = call i64 @llvm.smin.i64(i64 %1, i64 %128) + %129 = sub nsw i64 %.sroa.speculated.us, %.0139.us + br i1 %or.cond.us, label %130, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.us + +130: ; preds = %127 + %131 = mul nsw i64 %.0139.us, %6 + %132 = getelementptr double, ptr %124, i64 %131 call void asm sideeffect "#EIGEN PRODUCT PACK RHS COLMAJOR", "~{dirflag},~{fpsr},~{flags}"() #37, !srcloc !1894 - %136 = sdiv i64 %132, 4 - %137 = shl nsw i64 %136, 2 - %138 = icmp sgt i64 %132, 3 - %or.cond230.us = select i1 %138, i1 %126, i1 false + %133 = sdiv i64 %129, 4 + %134 = shl nsw i64 %133, 2 + %135 = icmp sgt i64 %129, 3 + %or.cond230.us = select i1 %135, i1 %123, i1 false br i1 %or.cond230.us, label %.lr.ph.us.i.us, label %.preheader.i.us -.lr.ph.us.i.us: ; preds = %133, %._crit_edge.us.i174.us - %.094109.us.i.us = phi i64 [ %165, %._crit_edge.us.i174.us ], [ 0, %133 ] - %.095108.us.i.us = phi i64 [ %163, %._crit_edge.us.i174.us ], [ 0, %133 ] - %139 = mul nsw i64 %.094109.us.i.us, %6 - %140 = getelementptr inbounds double, ptr %135, i64 %139 - %141 = or disjoint i64 %.094109.us.i.us, 1 +.lr.ph.us.i.us: ; preds = %130, %._crit_edge.us.i174.us + %.094109.us.i.us = phi i64 [ %162, %._crit_edge.us.i174.us ], [ 0, %130 ] + %.095108.us.i.us = phi i64 [ %160, %._crit_edge.us.i174.us ], [ 0, %130 ] + %136 = mul nsw i64 %.094109.us.i.us, %6 + %137 = getelementptr inbounds double, ptr %132, i64 %136 + %138 = or disjoint i64 %.094109.us.i.us, 1 + %139 = mul nsw i64 %138, %6 + %140 = getelementptr inbounds double, ptr %132, i64 %139 + %141 = or disjoint i64 %.094109.us.i.us, 2 %142 = mul nsw i64 %141, %6 - %143 = getelementptr inbounds double, ptr %135, i64 %142 - %144 = or disjoint i64 %.094109.us.i.us, 2 + %143 = getelementptr inbounds double, ptr %132, i64 %142 + %144 = or disjoint i64 %.094109.us.i.us, 3 %145 = mul nsw i64 %144, %6 - %146 = getelementptr inbounds double, ptr %135, i64 %145 - %147 = or disjoint i64 %.094109.us.i.us, 3 - %148 = mul nsw i64 %147, %6 - %149 = getelementptr inbounds double, ptr %135, i64 %148 - br label %150 + %146 = getelementptr inbounds double, ptr %132, i64 %145 + br label %147 -150: ; preds = %150, %.lr.ph.us.i.us - %.093107.us.i.us = phi i64 [ 0, %.lr.ph.us.i.us ], [ %164, %150 ] - %.1106.us.i.us = phi i64 [ %.095108.us.i.us, %.lr.ph.us.i.us ], [ %163, %150 ] +147: ; preds = %147, %.lr.ph.us.i.us + %.093107.us.i.us = phi i64 [ 0, %.lr.ph.us.i.us ], [ %161, %147 ] + %.1106.us.i.us = phi i64 [ %.095108.us.i.us, %.lr.ph.us.i.us ], [ %160, %147 ] + %148 = getelementptr inbounds double, ptr %137, i64 %.093107.us.i.us + %149 = load double, ptr %148, align 8 + %150 = getelementptr inbounds double, ptr %61, i64 %.1106.us.i.us + store double %149, ptr %150, align 8 %151 = getelementptr inbounds double, ptr %140, i64 %.093107.us.i.us %152 = load double, ptr %151, align 8 - %153 = getelementptr inbounds double, ptr %61, i64 %.1106.us.i.us + %153 = getelementptr i8, ptr %150, i64 8 store double %152, ptr %153, align 8 %154 = getelementptr inbounds double, ptr %143, i64 %.093107.us.i.us %155 = load double, ptr %154, align 8 - %156 = getelementptr i8, ptr %153, i64 8 + %156 = getelementptr i8, ptr %150, i64 16 store double %155, ptr %156, align 8 %157 = getelementptr inbounds double, ptr %146, i64 %.093107.us.i.us %158 = load double, ptr %157, align 8 - %159 = getelementptr i8, ptr %153, i64 16 + %159 = getelementptr i8, ptr %150, i64 24 store double %158, ptr %159, align 8 - %160 = getelementptr inbounds double, ptr %149, i64 %.093107.us.i.us - %161 = load double, ptr %160, align 8 - %162 = getelementptr i8, ptr %153, i64 24 - store double %161, ptr %162, align 8 - %163 = add nsw i64 %.1106.us.i.us, 4 - %164 = add nuw nsw i64 %.093107.us.i.us, 1 - %exitcond.not.i173.us = icmp eq i64 %164, %84 - br i1 %exitcond.not.i173.us, label %._crit_edge.us.i174.us, label %150, !llvm.loop !2019 - -._crit_edge.us.i174.us: ; preds = %150 - %165 = add nuw nsw i64 %.094109.us.i.us, 4 - %166 = icmp slt i64 %165, %137 - br i1 %166, label %.lr.ph.us.i.us, label %.preheader.i.us, !llvm.loop !2020 - -.preheader.i.us: ; preds = %._crit_edge.us.i174.us, %133 - %.095.lcssa.i.us = phi i64 [ 0, %133 ], [ %163, %._crit_edge.us.i174.us ] - %167 = icmp slt i64 %137, %132 - %or.cond231.us = select i1 %167, i1 %126, i1 false + %160 = add nsw i64 %.1106.us.i.us, 4 + %161 = add nuw nsw i64 %.093107.us.i.us, 1 + %exitcond.not.i173.us = icmp eq i64 %161, %81 + br i1 %exitcond.not.i173.us, label %._crit_edge.us.i174.us, label %147, !llvm.loop !2019 + +._crit_edge.us.i174.us: ; preds = %147 + %162 = add nuw nsw i64 %.094109.us.i.us, 4 + %163 = icmp slt i64 %162, %134 + br i1 %163, label %.lr.ph.us.i.us, label %.preheader.i.us, !llvm.loop !2020 + +.preheader.i.us: ; preds = %._crit_edge.us.i174.us, %130 + %.095.lcssa.i.us = phi i64 [ 0, %130 ], [ %160, %._crit_edge.us.i174.us ] + %164 = icmp slt i64 %134, %129 + %or.cond231.us = select i1 %164, i1 %123, i1 false br i1 %or.cond231.us, label %.lr.ph.us119.i.us, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.us .lr.ph.us119.i.us: ; preds = %.preheader.i.us, %._crit_edge.us120.i.us - %.092116.us.i.us = phi i64 [ %176, %._crit_edge.us120.i.us ], [ %137, %.preheader.i.us ] - %.2115.us.i.us = phi i64 [ %174, %._crit_edge.us120.i.us ], [ %.095.lcssa.i.us, %.preheader.i.us ] - %168 = mul nsw i64 %.092116.us.i.us, %6 - %169 = getelementptr inbounds double, ptr %135, i64 %168 - br label %170 - -170: ; preds = %170, %.lr.ph.us119.i.us - %.0114.us.i.us = phi i64 [ 0, %.lr.ph.us119.i.us ], [ %175, %170 ] - %.3113.us.i.us = phi i64 [ %.2115.us.i.us, %.lr.ph.us119.i.us ], [ %174, %170 ] - %171 = getelementptr inbounds double, ptr %169, i64 %.0114.us.i.us - %172 = load double, ptr %171, align 8 - %173 = getelementptr inbounds double, ptr %61, i64 %.3113.us.i.us - store double %172, ptr %173, align 8 - %174 = add nsw i64 %.3113.us.i.us, 1 - %175 = add nuw nsw i64 %.0114.us.i.us, 1 - %exitcond125.not.i.us = icmp eq i64 %175, %84 - br i1 %exitcond125.not.i.us, label %._crit_edge.us120.i.us, label %170, !llvm.loop !2021 - -._crit_edge.us120.i.us: ; preds = %170 - %176 = add nsw i64 %.092116.us.i.us, 1 - %exitcond126.not.i.us = icmp eq i64 %176, %132 + %.092116.us.i.us = phi i64 [ %173, %._crit_edge.us120.i.us ], [ %134, %.preheader.i.us ] + %.2115.us.i.us = phi i64 [ %171, %._crit_edge.us120.i.us ], [ %.095.lcssa.i.us, %.preheader.i.us ] + %165 = mul nsw i64 %.092116.us.i.us, %6 + %166 = getelementptr inbounds double, ptr %132, i64 %165 + br label %167 + +167: ; preds = %167, %.lr.ph.us119.i.us + %.0114.us.i.us = phi i64 [ 0, %.lr.ph.us119.i.us ], [ %172, %167 ] + %.3113.us.i.us = phi i64 [ %.2115.us.i.us, %.lr.ph.us119.i.us ], [ %171, %167 ] + %168 = getelementptr inbounds double, ptr %166, i64 %.0114.us.i.us + %169 = load double, ptr %168, align 8 + %170 = getelementptr inbounds double, ptr %61, i64 %.3113.us.i.us + store double %169, ptr %170, align 8 + %171 = add nsw i64 %.3113.us.i.us, 1 + %172 = add nuw nsw i64 %.0114.us.i.us, 1 + %exitcond125.not.i.us = icmp eq i64 %172, %81 + br i1 %exitcond125.not.i.us, label %._crit_edge.us120.i.us, label %167, !llvm.loop !2021 + +._crit_edge.us120.i.us: ; preds = %167 + %173 = add nsw i64 %.092116.us.i.us, 1 + %exitcond126.not.i.us = icmp eq i64 %173, %129 br i1 %exitcond126.not.i.us, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.us, label %.lr.ph.us119.i.us, !llvm.loop !2022 -_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.us: ; preds = %._crit_edge.us120.i.us, %.preheader.i.us, %130 - %177 = mul nsw i64 %.0139.us, %9 - %178 = getelementptr double, ptr %81, i64 %177 - store ptr %178, ptr %15, align 8 +_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.us: ; preds = %._crit_edge.us120.i.us, %.preheader.i.us, %127 + %174 = mul nsw i64 %.0139.us, %9 + %175 = getelementptr double, ptr %78, i64 %174 + store ptr %175, ptr %15, align 8 store i64 %9, ptr %66, align 8 - invoke void @_ZN5Eigen8internal11gebp_kernelIddlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi4ELb0ELb0EEclERKS3_PKdS8_llldllll(ptr noundef nonnull align 1 dereferenceable(1) %14, ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull %43, ptr noundef nonnull %61, i64 noundef %68, i64 noundef %84, i64 noundef %132, double noundef %10, i64 noundef -1, i64 noundef -1, i64 noundef 0, i64 noundef 0) - to label %128 unwind label %.split.us, !llvm.loop !3552 + invoke void @_ZN5Eigen8internal11gebp_kernelIddlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi4ELb0ELb0EEclERKS3_PKdS8_llldllll(ptr noundef nonnull align 1 dereferenceable(1) %14, ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull %43, ptr noundef nonnull %61, i64 noundef %68, i64 noundef %81, i64 noundef %129, double noundef %10, i64 noundef -1, i64 noundef -1, i64 noundef 0, i64 noundef 0) + to label %125 unwind label %.split.us, !llvm.loop !3552 -.loopexit.us: ; preds = %128 - %179 = icmp slt i64 %83, %2 - br i1 %179, label %82, label %..loopexit233_crit_edge.us, !llvm.loop !3553 +.loopexit.us: ; preds = %125 + %176 = icmp slt i64 %80, %2 + br i1 %176, label %79, label %..loopexit233_crit_edge.us, !llvm.loop !3553 ..loopexit233_crit_edge.us: ; preds = %.loopexit.us - %180 = icmp slt i64 %67, %0 - br i1 %180, label %.lr.ph.us, label %._crit_edge, !llvm.loop !3554 + %177 = icmp slt i64 %67, %0 + br i1 %177, label %.lr.ph.us, label %._crit_edge, !llvm.loop !3554 .split.us: ; preds = %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.us - %181 = landingpad { ptr, i32 } + %178 = landingpad { ptr, i32 } cleanup - br i1 %62, label %184, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit + br i1 %62, label %181, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit -182: ; preds = %.invoke - %183 = landingpad { ptr, i32 } +179: ; preds = %.invoke + %180 = landingpad { ptr, i32 } cleanup br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit -184: ; preds = %.split.us +181: ; preds = %.split.us call void @free(ptr noundef %60) #37 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit ._crit_edge: ; preds = %..loopexit233_crit_edge.us, %.lr.ph242, %59 - br i1 %62, label %185, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit175 + br i1 %62, label %182, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit175 -185: ; preds = %._crit_edge +182: ; preds = %._crit_edge call void @free(ptr noundef %60) #37 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit175 -_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit175: ; preds = %._crit_edge, %185 - br i1 %44, label %186, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit176 +_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit175: ; preds = %._crit_edge, %182 + br i1 %44, label %183, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit176 -186: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit175 +183: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit175 call void @free(ptr noundef %42) #37 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit176 -_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit176: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit175, %186 +_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit176: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit175, %183 ret void -_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit: ; preds = %184, %.split.us, %182 - %.pn = phi { ptr, i32 } [ %183, %182 ], [ %181, %.split.us ], [ %181, %184 ] - br i1 %44, label %187, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit177 +_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit: ; preds = %181, %.split.us, %179 + %.pn = phi { ptr, i32 } [ %180, %179 ], [ %178, %.split.us ], [ %178, %181 ] + br i1 %44, label %184, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit177 -187: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit +184: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit call void @free(ptr noundef %42) #37 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit177 -_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit177: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit, %187 +_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit177: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit, %184 resume { ptr, i32 } %.pn } diff --git a/bench/ripgrep-rs/optimized/2byk283iafgd1x3i.ll b/bench/ripgrep-rs/optimized/2byk283iafgd1x3i.ll index 4d6177323f0..c3129a905a2 100644 --- a/bench/ripgrep-rs/optimized/2byk283iafgd1x3i.ll +++ b/bench/ripgrep-rs/optimized/2byk283iafgd1x3i.ll @@ -745,7 +745,7 @@ define hidden void @"_ZN9hashbrown11rustc_entry62_$LT$impl$u20$hashbrown..map..H "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h587935674ad7ba52E.llvm.7257343334495624931.exit.backedge.i": ; preds = %36, %.lr.ph.i %.not.i4.not.i = icmp eq i16 %28, 0 - %39 = add i16 %28, -1 + %39 = add i16 %28, -2 %40 = and i16 %39, %28 br i1 %.not.i4.not.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h587935674ad7ba52E.llvm.7257343334495624931.exit._crit_edge.i", label %.lr.ph.i @@ -889,7 +889,7 @@ define hidden void @"_ZN9hashbrown11rustc_entry62_$LT$impl$u20$hashbrown..map..H "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h6aa4f039008751fbE.llvm.7257343334495624931.exit.backedge.i": ; preds = %36, %.lr.ph.i %.not.i4.not.i = icmp eq i16 %28, 0 - %39 = add i16 %28, -1 + %39 = add i16 %28, -2 %40 = and i16 %39, %28 br i1 %.not.i4.not.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h6aa4f039008751fbE.llvm.7257343334495624931.exit._crit_edge.i", label %.lr.ph.i @@ -1023,7 +1023,7 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h7f05db44de279c2eE.exit.backedge.i.i": ; preds = %32, %.lr.ph.i.i %.not.i4.not.i.i = icmp eq i16 %24, 0 - %35 = add i16 %24, -1 + %35 = add i16 %24, -2 %36 = and i16 %35, %24 br i1 %.not.i4.not.i.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h7f05db44de279c2eE.exit._crit_edge.i.i", label %.lr.ph.i.i @@ -1140,7 +1140,7 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17hc5 "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h8545181607a027c6E.exit.backedge.i.i": ; preds = %44, %35 %.not.i.not.i.i = icmp eq i16 %36, 0 - %47 = add i16 %36, -1 + %47 = add i16 %36, -2 %48 = and i16 %47, %36 br i1 %.not.i.not.i.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h8545181607a027c6E.exit._crit_edge.i.i", label %35 @@ -1354,7 +1354,7 @@ define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN9hashbrown3ma "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h9757cdb19163ab5dE.exit.backedge.i.i": ; preds = %35, %.lr.ph.i.i %.not.i4.not.i.i = icmp eq i16 %27, 0 - %38 = add i16 %27, -1 + %38 = add i16 %27, -2 %39 = and i16 %38, %27 br i1 %.not.i4.not.i.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h9757cdb19163ab5dE.exit._crit_edge.i.i", label %.lr.ph.i.i @@ -1507,7 +1507,7 @@ define hidden noundef align 8 dereferenceable_or_null(48) ptr @"_ZN9hashbrown3ra "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h7f05db44de279c2eE.exit.backedge.i": ; preds = %26, %.lr.ph.i %.not.i4.not.i = icmp eq i16 %18, 0 - %29 = add i16 %18, -1 + %29 = add i16 %18, -2 %30 = and i16 %29, %18 br i1 %.not.i4.not.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h7f05db44de279c2eE.exit._crit_edge.i", label %.lr.ph.i @@ -1585,7 +1585,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h0af0 "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h587935674ad7ba52E.llvm.7257343334495624931.exit.backedge": ; preds = %27, %.lr.ph %.not.i4.not = icmp eq i16 %19, 0 - %30 = add i16 %19, -1 + %30 = add i16 %19, -2 %31 = and i16 %30, %19 br i1 %.not.i4.not, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h587935674ad7ba52E.llvm.7257343334495624931.exit._crit_edge", label %.lr.ph @@ -1660,7 +1660,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h43d8 "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h9757cdb19163ab5dE.exit.backedge": ; preds = %29, %.lr.ph %.not.i4.not = icmp eq i16 %21, 0 - %32 = add i16 %21, -1 + %32 = add i16 %21, -2 %33 = and i16 %32, %21 br i1 %.not.i4.not, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h9757cdb19163ab5dE.exit._crit_edge", label %.lr.ph @@ -1735,7 +1735,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h7d4e "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h6aa4f039008751fbE.llvm.7257343334495624931.exit.backedge": ; preds = %27, %.lr.ph %.not.i4.not = icmp eq i16 %19, 0 - %30 = add i16 %19, -1 + %30 = add i16 %19, -2 %31 = and i16 %30, %19 br i1 %.not.i4.not, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h6aa4f039008751fbE.llvm.7257343334495624931.exit._crit_edge", label %.lr.ph @@ -1806,7 +1806,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h8730 "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h7f05db44de279c2eE.exit.backedge": ; preds = %26, %.lr.ph %.not.i4.not = icmp eq i16 %18, 0 - %29 = add i16 %18, -1 + %29 = add i16 %18, -2 %30 = and i16 %29, %18 br i1 %.not.i4.not, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h7f05db44de279c2eE.exit._crit_edge", label %.lr.ph @@ -1943,7 +1943,7 @@ define hidden noundef align 8 dereferenceable_or_null(48) ptr @"_ZN9hashbrown3ra "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h9757cdb19163ab5dE.exit.backedge.i": ; preds = %29, %.lr.ph.i %.not.i4.not.i = icmp eq i16 %21, 0 - %32 = add i16 %21, -1 + %32 = add i16 %21, -2 %33 = and i16 %32, %21 br i1 %.not.i4.not.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h9757cdb19163ab5dE.exit._crit_edge.i", label %.lr.ph.i diff --git a/bench/rust-analyzer-rs/optimized/1lnhy2v45voxjwry.ll b/bench/rust-analyzer-rs/optimized/1lnhy2v45voxjwry.ll index a830bc77cf7..857c36c3673 100644 --- a/bench/rust-analyzer-rs/optimized/1lnhy2v45voxjwry.ll +++ b/bench/rust-analyzer-rs/optimized/1lnhy2v45voxjwry.ll @@ -86971,33 +86971,29 @@ define hidden void @"_ZN5rowan3arc12Arc$LT$T$GT$9drop_slow17hbdfd34deee9b5620E"( 8: ; preds = %7, %1 %9 = landingpad { ptr, i32 } cleanup - %10 = add i64 %4, 23 + %10 = add i64 %4, 31 %11 = and i64 %10, -8 - %12 = add i64 %11, 15 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h725124473ee935a2E.exit.i", label %15 + %12 = icmp eq i64 %11, 0 + br i1 %12, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h725124473ee935a2E.exit.i", label %13 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #49 +13: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %11, i64 noundef 8) #49 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h725124473ee935a2E.exit.i" "_ZN4core3ptr130drop_in_place$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$17h930876d43e882d36E.exit.i": ; preds = %7, %.noexc.i - %16 = add i64 %4, 23 - %17 = and i64 %16, -8 - %18 = add i64 %17, 15 - %19 = and i64 %18, -8 - %20 = icmp eq i64 %19, 0 - br i1 %20, label %"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h982dd8b456c01389E.exit", label %21 + %14 = add i64 %4, 31 + %15 = and i64 %14, -8 + %16 = icmp eq i64 %15, 0 + br i1 %16, label %"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h982dd8b456c01389E.exit", label %17 -21: ; preds = %"_ZN4core3ptr130drop_in_place$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$17h930876d43e882d36E.exit.i" - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %19, i64 noundef 8) #49 +17: ; preds = %"_ZN4core3ptr130drop_in_place$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$17h930876d43e882d36E.exit.i" + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %15, i64 noundef 8) #49 br label %"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h982dd8b456c01389E.exit" -"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h725124473ee935a2E.exit.i": ; preds = %15, %8 +"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h725124473ee935a2E.exit.i": ; preds = %13, %8 resume { ptr, i32 } %9 -"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h982dd8b456c01389E.exit": ; preds = %"_ZN4core3ptr130drop_in_place$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$17h930876d43e882d36E.exit.i", %21 +"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h982dd8b456c01389E.exit": ; preds = %"_ZN4core3ptr130drop_in_place$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$17h930876d43e882d36E.exit.i", %17 ret void } @@ -87014,18 +87010,14 @@ define hidden void @"_ZN5rowan3arc12Arc$LT$T$GT$9drop_slow17hf6cec9063965141bE"( %7 = landingpad { ptr, i32 } cleanup %8 = shl nsw i64 %4, 4 - %9 = add i64 %8, 23 - %10 = and i64 %9, -16 - %11 = or disjoint i64 %10, 8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %11, i64 noundef 8) #49 + %9 = add i64 %8, 24 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %9, i64 noundef 8) #49 resume { ptr, i32 } %7 "_ZN4core3ptr181drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..node..GreenNodeHead$C$$u5b$rowan..green..node..GreenChild$u5d$$GT$$GT$$GT$$GT$17h3824b71e95a19864E.exit": ; preds = %1 - %12 = shl nsw i64 %4, 4 - %13 = add i64 %12, 23 - %14 = and i64 %13, -16 - %15 = or disjoint i64 %14, 8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %15, i64 noundef 8) #49 + %10 = shl nsw i64 %4, 4 + %11 = add i64 %10, 24 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %11, i64 noundef 8) #49 ret void } diff --git a/bench/rust-analyzer-rs/optimized/1lra012089cno2qn.ll b/bench/rust-analyzer-rs/optimized/1lra012089cno2qn.ll index c1e1dd0fffc..981f18506d2 100644 --- a/bench/rust-analyzer-rs/optimized/1lra012089cno2qn.ll +++ b/bench/rust-analyzer-rs/optimized/1lra012089cno2qn.ll @@ -108290,27 +108290,23 @@ define hidden void @"_ZN5rowan3arc12Arc$LT$T$GT$9drop_slow17h146a4ab306912a26E"( 8: ; preds = %7, %1 %9 = landingpad { ptr, i32 } cleanup - %10 = add i64 %4, 23 + %10 = add i64 %4, 31 %11 = and i64 %10, -8 - %12 = add i64 %11, 15 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1b3b86aad2b95ccaE.exit.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.1186121590401690724.exit.i.i" + %12 = icmp eq i64 %11, 0 + br i1 %12, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1b3b86aad2b95ccaE.exit.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.1186121590401690724.exit.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.1186121590401690724.exit.i.i": ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #36 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %11, i64 noundef 8) #36 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1b3b86aad2b95ccaE.exit.i" "_ZN4core3ptr130drop_in_place$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$17h6a2927c214911499E.exit.i": ; preds = %7, %.noexc.i - %15 = add i64 %4, 23 - %16 = and i64 %15, -8 - %17 = add i64 %16, 15 - %18 = and i64 %17, -8 - %19 = icmp eq i64 %18, 0 - br i1 %19, label %"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h437b65d7dae2ce04E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.1186121590401690724.exit.i5.i" + %13 = add i64 %4, 31 + %14 = and i64 %13, -8 + %15 = icmp eq i64 %14, 0 + br i1 %15, label %"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h437b65d7dae2ce04E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.1186121590401690724.exit.i5.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.1186121590401690724.exit.i5.i": ; preds = %"_ZN4core3ptr130drop_in_place$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$17h6a2927c214911499E.exit.i" - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %18, i64 noundef 8) #36 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef 8) #36 br label %"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h437b65d7dae2ce04E.exit" "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1b3b86aad2b95ccaE.exit.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.1186121590401690724.exit.i.i", %8 @@ -108333,18 +108329,14 @@ define hidden void @"_ZN5rowan3arc12Arc$LT$T$GT$9drop_slow17h90116cb0398a8b22E"( %7 = landingpad { ptr, i32 } cleanup %8 = shl nsw i64 %4, 4 - %9 = add i64 %8, 23 - %10 = and i64 %9, -16 - %11 = or disjoint i64 %10, 8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %11, i64 noundef 8) #36 + %9 = add i64 %8, 24 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %9, i64 noundef 8) #36 resume { ptr, i32 } %7 "_ZN4core3ptr181drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..node..GreenNodeHead$C$$u5b$rowan..green..node..GreenChild$u5d$$GT$$GT$$GT$$GT$17he17d2e3edc4cc052E.exit": ; preds = %1 - %12 = shl nsw i64 %4, 4 - %13 = add i64 %12, 23 - %14 = and i64 %13, -16 - %15 = or disjoint i64 %14, 8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %15, i64 noundef 8) #36 + %10 = shl nsw i64 %4, 4 + %11 = add i64 %10, 24 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %11, i64 noundef 8) #36 ret void } diff --git a/bench/rust-analyzer-rs/optimized/1x0y9zi6lpw009zm.ll b/bench/rust-analyzer-rs/optimized/1x0y9zi6lpw009zm.ll index e5e5c2d222a..5ef19272f60 100644 --- a/bench/rust-analyzer-rs/optimized/1x0y9zi6lpw009zm.ll +++ b/bench/rust-analyzer-rs/optimized/1x0y9zi6lpw009zm.ll @@ -5925,33 +5925,29 @@ define hidden void @"_ZN5rowan3arc12Arc$LT$T$GT$9drop_slow17h1a725ea9607b1d89E"( 8: ; preds = %7, %1 %9 = landingpad { ptr, i32 } cleanup - %10 = add i64 %4, 23 + %10 = add i64 %4, 31 %11 = and i64 %10, -8 - %12 = add i64 %11, 15 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h954680b50f8b6d10E.exit.i", label %15 + %12 = icmp eq i64 %11, 0 + br i1 %12, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h954680b50f8b6d10E.exit.i", label %13 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #37 +13: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %11, i64 noundef 8) #37 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h954680b50f8b6d10E.exit.i" "_ZN4core3ptr130drop_in_place$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$17h801b274cdfa0ef47E.exit.i": ; preds = %7, %.noexc.i - %16 = add i64 %4, 23 - %17 = and i64 %16, -8 - %18 = add i64 %17, 15 - %19 = and i64 %18, -8 - %20 = icmp eq i64 %19, 0 - br i1 %20, label %"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h90cfdec6a51470f5E.exit", label %21 - -21: ; preds = %"_ZN4core3ptr130drop_in_place$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$17h801b274cdfa0ef47E.exit.i" - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %19, i64 noundef 8) #37 + %14 = add i64 %4, 31 + %15 = and i64 %14, -8 + %16 = icmp eq i64 %15, 0 + br i1 %16, label %"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h90cfdec6a51470f5E.exit", label %17 + +17: ; preds = %"_ZN4core3ptr130drop_in_place$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$17h801b274cdfa0ef47E.exit.i" + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %15, i64 noundef 8) #37 br label %"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h90cfdec6a51470f5E.exit" -"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h954680b50f8b6d10E.exit.i": ; preds = %15, %8 +"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h954680b50f8b6d10E.exit.i": ; preds = %13, %8 resume { ptr, i32 } %9 -"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h90cfdec6a51470f5E.exit": ; preds = %"_ZN4core3ptr130drop_in_place$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$17h801b274cdfa0ef47E.exit.i", %21 +"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h90cfdec6a51470f5E.exit": ; preds = %"_ZN4core3ptr130drop_in_place$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$17h801b274cdfa0ef47E.exit.i", %17 ret void } @@ -5968,18 +5964,14 @@ define hidden void @"_ZN5rowan3arc12Arc$LT$T$GT$9drop_slow17h29a0efbd8d4e9d38E"( %7 = landingpad { ptr, i32 } cleanup %8 = shl nsw i64 %4, 4 - %9 = add i64 %8, 23 - %10 = and i64 %9, -16 - %11 = or disjoint i64 %10, 8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %11, i64 noundef 8) #37 + %9 = add i64 %8, 24 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %9, i64 noundef 8) #37 resume { ptr, i32 } %7 "_ZN4core3ptr181drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..node..GreenNodeHead$C$$u5b$rowan..green..node..GreenChild$u5d$$GT$$GT$$GT$$GT$17he2ce211bb17ff72eE.exit": ; preds = %1 - %12 = shl nsw i64 %4, 4 - %13 = add i64 %12, 23 - %14 = and i64 %13, -16 - %15 = or disjoint i64 %14, 8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %15, i64 noundef 8) #37 + %10 = shl nsw i64 %4, 4 + %11 = add i64 %10, 24 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %11, i64 noundef 8) #37 ret void } diff --git a/bench/rust-analyzer-rs/optimized/3fqz5uk7bi62noyj.ll b/bench/rust-analyzer-rs/optimized/3fqz5uk7bi62noyj.ll index fc397fdeb7d..5a5fc1442b7 100644 --- a/bench/rust-analyzer-rs/optimized/3fqz5uk7bi62noyj.ll +++ b/bench/rust-analyzer-rs/optimized/3fqz5uk7bi62noyj.ll @@ -2714,27 +2714,23 @@ define hidden void @"_ZN5rowan3arc12Arc$LT$T$GT$9drop_slow17h9520f3e9938c1e18E"( 8: ; preds = %7, %1 %9 = landingpad { ptr, i32 } cleanup - %10 = add i64 %4, 23 + %10 = add i64 %4, 31 %11 = and i64 %10, -8 - %12 = add i64 %11, 15 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb7bd836c22bdc680E.exit.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i" + %12 = icmp eq i64 %11, 0 + br i1 %12, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb7bd836c22bdc680E.exit.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i": ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #36 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %11, i64 noundef 8) #36 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb7bd836c22bdc680E.exit.i" "_ZN4core3ptr130drop_in_place$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$17hec53fbd085cef388E.exit.i": ; preds = %7, %.noexc.i - %15 = add i64 %4, 23 - %16 = and i64 %15, -8 - %17 = add i64 %16, 15 - %18 = and i64 %17, -8 - %19 = icmp eq i64 %18, 0 - br i1 %19, label %"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h356823397761511eE.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i5.i" + %13 = add i64 %4, 31 + %14 = and i64 %13, -8 + %15 = icmp eq i64 %14, 0 + br i1 %15, label %"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h356823397761511eE.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i5.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i5.i": ; preds = %"_ZN4core3ptr130drop_in_place$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$17hec53fbd085cef388E.exit.i" - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %18, i64 noundef 8) #36 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef 8) #36 br label %"_ZN4core3ptr155drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..token..GreenTokenHead$C$$u5b$u8$u5d$$GT$$GT$$GT$$GT$17h356823397761511eE.exit" "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb7bd836c22bdc680E.exit.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i", %8 @@ -2757,18 +2753,14 @@ define hidden void @"_ZN5rowan3arc12Arc$LT$T$GT$9drop_slow17hf7dd5dbda4fc9a40E"( %7 = landingpad { ptr, i32 } cleanup %8 = shl nsw i64 %4, 4 - %9 = add i64 %8, 23 - %10 = and i64 %9, -16 - %11 = or disjoint i64 %10, 8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %11, i64 noundef 8) #36 + %9 = add i64 %8, 24 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %9, i64 noundef 8) #36 resume { ptr, i32 } %7 "_ZN4core3ptr181drop_in_place$LT$alloc..boxed..Box$LT$rowan..arc..ArcInner$LT$rowan..arc..HeaderSlice$LT$rowan..green..node..GreenNodeHead$C$$u5b$rowan..green..node..GreenChild$u5d$$GT$$GT$$GT$$GT$17h3423452cbc591797E.exit": ; preds = %1 - %12 = shl nsw i64 %4, 4 - %13 = add i64 %12, 23 - %14 = and i64 %13, -16 - %15 = or disjoint i64 %14, 8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %15, i64 noundef 8) #36 + %10 = shl nsw i64 %4, 4 + %11 = add i64 %10, 24 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %11, i64 noundef 8) #36 ret void } @@ -3348,7 +3340,7 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h90eddd773bbbed2c %2 = getelementptr inbounds i8, ptr %0, i64 8 %3 = load i64, ptr %2, align 8, !noundef !4 %4 = shl nsw i64 %3, 2 - %5 = add i64 %4, 15 + %5 = add i64 %4, 12 %6 = and i64 %5, -8 %7 = icmp eq i64 %6, 0 br i1 %7, label %"_ZN4core3ptr133drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$$u5b$la_arena..Idx$LT$base_db..input..CrateData$GT$$u5d$$GT$$GT$$GT$17h540d2ce74e8a0183E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i" @@ -3432,16 +3424,13 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17hdc53f6d518014c4c %2 = getelementptr inbounds i8, ptr %0, i64 8 %3 = load i64, ptr %2, align 8, !noundef !4 %4 = shl nsw i64 %3, 3 - %5 = add i64 %4, 15 - %6 = and i64 %5, -8 - %7 = add i64 %6, 15 - %8 = and i64 %7, -8 - %9 = icmp eq i64 %8, 0 - br i1 %9, label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$salsa..DatabaseKeyIndex$u5d$$GT$$GT$$GT$$GT$17h23d869be486e2609E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i" + %5 = add i64 %4, 16 + %6 = icmp eq i64 %5, 0 + br i1 %6, label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$salsa..DatabaseKeyIndex$u5d$$GT$$GT$$GT$$GT$17h23d869be486e2609E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i": ; preds = %1 - %10 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %10, i64 noundef %8, i64 noundef 8) #36 + %7 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 + tail call void @__rust_dealloc(ptr noundef nonnull %7, i64 noundef %5, i64 noundef 8) #36 br label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$salsa..DatabaseKeyIndex$u5d$$GT$$GT$$GT$$GT$17h23d869be486e2609E.exit" "_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$salsa..DatabaseKeyIndex$u5d$$GT$$GT$$GT$$GT$17h23d869be486e2609E.exit": ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i" @@ -3647,7 +3636,7 @@ define hidden { ptr, i64 } @"_ZN8triomphe6header96_$LT$impl$u20$triomphe..arc..A unreachable "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h7ba6e769f35971e0E.exit.i.i.i": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h7f2424c8acffe504E.exit.i" - %10 = add nuw i64 %6, 15 + %10 = add nuw i64 %6, 12 %11 = and i64 %10, -8 %12 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 %13 = tail call noundef align 8 ptr @__rust_alloc(i64 noundef %11, i64 noundef 8) #36 @@ -3752,7 +3741,7 @@ define hidden { ptr, i64 } @"_ZN8triomphe6header96_$LT$impl$u20$triomphe..arc..A unreachable "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h7ba6e769f35971e0E.exit.i.i.i": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h7f2424c8acffe504E.exit.i" - %18 = add nuw nsw i64 %9, 15 + %18 = add nuw nsw i64 %9, 12 %19 = and i64 %18, 9223372036854775800 %20 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 %21 = tail call noundef align 8 ptr @__rust_alloc(i64 noundef %19, i64 noundef 8) #36 diff --git a/bench/rust-analyzer-rs/optimized/54fx8hdjlkc0fd42.ll b/bench/rust-analyzer-rs/optimized/54fx8hdjlkc0fd42.ll index 2fa81e10d0b..8733ccc7087 100644 --- a/bench/rust-analyzer-rs/optimized/54fx8hdjlkc0fd42.ll +++ b/bench/rust-analyzer-rs/optimized/54fx8hdjlkc0fd42.ll @@ -28071,24 +28071,22 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h180f103e6ca3b2f7 .body.i: ; preds = %"_ZN4core3ptr67drop_in_place$LT$chalk_ir..Ty$LT$hir_ty..interner..Interner$GT$$GT$17h90351352b6688ac6E.exit7.i.i.i" %18 = shl nsw i64 %4, 3 - %19 = add i64 %18, 15 - %20 = and i64 %19, -8 - %21 = icmp eq i64 %20, 0 - br i1 %21, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc091cab8b2c1d695E.exit.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i" + %19 = add i64 %18, 8 + %20 = icmp eq i64 %19, 0 + br i1 %20, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc091cab8b2c1d695E.exit.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i": ; preds = %.body.i - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %20, i64 noundef 8) #61 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %19, i64 noundef 8) #61 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc091cab8b2c1d695E.exit.i" "_ZN4core3ptr108drop_in_place$LT$triomphe..arc..ArcInner$LT$$u5b$chalk_ir..Ty$LT$hir_ty..interner..Interner$GT$$u5d$$GT$$GT$17h76dedfd4ec567273E.exit.i": ; preds = %"_ZN4core3ptr67drop_in_place$LT$chalk_ir..Ty$LT$hir_ty..interner..Interner$GT$$GT$17h90351352b6688ac6E.exit.i.i.i" - %22 = shl nsw i64 %4, 3 - %23 = add i64 %22, 15 - %24 = and i64 %23, -8 - %25 = icmp eq i64 %24, 0 - br i1 %25, label %"_ZN4core3ptr133drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$$u5b$chalk_ir..Ty$LT$hir_ty..interner..Interner$GT$$u5d$$GT$$GT$$GT$17hae1bddf5f2471bbeE.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i4.i" + %21 = shl nsw i64 %4, 3 + %22 = add i64 %21, 8 + %23 = icmp eq i64 %22, 0 + br i1 %23, label %"_ZN4core3ptr133drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$$u5b$chalk_ir..Ty$LT$hir_ty..interner..Interner$GT$$u5d$$GT$$GT$$GT$17hae1bddf5f2471bbeE.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i4.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i4.i": ; preds = %"_ZN4core3ptr108drop_in_place$LT$triomphe..arc..ArcInner$LT$$u5b$chalk_ir..Ty$LT$hir_ty..interner..Interner$GT$$u5d$$GT$$GT$17h76dedfd4ec567273E.exit.i" - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %24, i64 noundef 8) #61 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %22, i64 noundef 8) #61 br label %"_ZN4core3ptr133drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$$u5b$chalk_ir..Ty$LT$hir_ty..interner..Interner$GT$$u5d$$GT$$GT$$GT$17hae1bddf5f2471bbeE.exit" "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc091cab8b2c1d695E.exit.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i", %.body.i @@ -28278,7 +28276,7 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h60b03ee84759d946 %2 = getelementptr inbounds i8, ptr %0, i64 8 %3 = load i64, ptr %2, align 8, !noundef !11 %4 = shl nsw i64 %3, 2 - %5 = add i64 %4, 15 + %5 = add i64 %4, 12 %6 = and i64 %5, -8 %7 = icmp eq i64 %6, 0 br i1 %7, label %"_ZN4core3ptr133drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$$u5b$la_arena..Idx$LT$base_db..input..CrateData$GT$$u5d$$GT$$GT$$GT$17h403cf013f3ac2358E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i" @@ -28414,7 +28412,7 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h8473e51e0719a50e %15 = getelementptr inbounds i8, ptr %7, i64 8 %16 = load i64, ptr %15, align 8, !alias.scope !7131, !noundef !11 %17 = shl nsw i64 %16, 2 - %18 = add i64 %17, 15 + %18 = add i64 %17, 12 %19 = and i64 %18, -8 %20 = icmp eq i64 %19, 0 br i1 %20, label %"_ZN4core3ptr73drop_in_place$LT$triomphe..arc..Arc$LT$$u5b$hir_def..TraitId$u5d$$GT$$GT$17ha09dc899cc3a5c6cE.llvm.273501356006530532.exit.i.i.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i.i.i.i.i.i.i" @@ -29079,7 +29077,7 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17hd69b0d1649d797dd %2 = getelementptr inbounds i8, ptr %0, i64 8 %3 = load i64, ptr %2, align 8, !noundef !11 %4 = shl nsw i64 %3, 2 - %5 = add i64 %4, 15 + %5 = add i64 %4, 12 %6 = and i64 %5, -8 %7 = icmp eq i64 %6, 0 br i1 %7, label %"_ZN4core3ptr103drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$$u5b$hir_def..TraitId$u5d$$GT$$GT$$GT$17h9208633aaf0be881E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i" @@ -29106,28 +29104,22 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17hda8df0146fc2d512 %7 = landingpad { ptr, i32 } cleanup %8 = mul nsw i64 %4, 24 - %9 = add i64 %8, 15 - %10 = and i64 %9, -8 - %11 = add i64 %10, 15 - %12 = and i64 %11, -8 - %13 = icmp eq i64 %12, 0 - br i1 %13, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h28ddde5fa3cd4757E.exit.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i" + %9 = add i64 %8, 16 + %10 = icmp eq i64 %9, 0 + br i1 %10, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h28ddde5fa3cd4757E.exit.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i": ; preds = %6 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #61 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %9, i64 noundef 8) #61 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h28ddde5fa3cd4757E.exit.i" "_ZN4core3ptr175drop_in_place$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$hir_expand..attrs..Attr$u5d$$GT$$GT$$GT$17h2b6786ec9fe13576E.exit.i": ; preds = %1 - %14 = mul nsw i64 %4, 24 - %15 = add i64 %14, 15 - %16 = and i64 %15, -8 - %17 = add i64 %16, 15 - %18 = and i64 %17, -8 - %19 = icmp eq i64 %18, 0 - br i1 %19, label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$hir_expand..attrs..Attr$u5d$$GT$$GT$$GT$$GT$17h94fb6b92cb44b4c5E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i4.i" + %11 = mul nsw i64 %4, 24 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$hir_expand..attrs..Attr$u5d$$GT$$GT$$GT$$GT$17h94fb6b92cb44b4c5E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i4.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i4.i": ; preds = %"_ZN4core3ptr175drop_in_place$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$hir_expand..attrs..Attr$u5d$$GT$$GT$$GT$17h2b6786ec9fe13576E.exit.i" - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %18, i64 noundef 8) #61 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #61 br label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$hir_expand..attrs..Attr$u5d$$GT$$GT$$GT$$GT$17h94fb6b92cb44b4c5E.exit" "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h28ddde5fa3cd4757E.exit.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit.i.i", %6 diff --git a/bench/rust-analyzer-rs/optimized/ii5fl5y94ca5wd9.ll b/bench/rust-analyzer-rs/optimized/ii5fl5y94ca5wd9.ll index ad881f3ba89..4141d071916 100644 --- a/bench/rust-analyzer-rs/optimized/ii5fl5y94ca5wd9.ll +++ b/bench/rust-analyzer-rs/optimized/ii5fl5y94ca5wd9.ll @@ -444,7 +444,7 @@ define hidden { ptr, i64 } @"_ZN121_$LT$triomphe..unique_arc..UniqueArc$LT$$u5b$ unreachable "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h4b55f931065f9310E.exit.i.i.i.i": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h1f1bad206ec3a259E.exit.i.i" - %18 = add nuw nsw i64 %9, 15 + %18 = add nuw nsw i64 %9, 12 %19 = and i64 %18, 9223372036854775800 %20 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !65 %21 = tail call noundef align 8 ptr @__rust_alloc(i64 noundef %19, i64 noundef 8) #61, !noalias !65 @@ -2606,7 +2606,7 @@ define internal fastcc void @"_ZN4core3ptr101drop_in_place$LT$core..option..Opti 5: ; preds = %2 %6 = load atomic i64, ptr %.0.val acquire, align 8 %7 = shl nsw i64 %.8.val, 2 - %8 = add i64 %7, 15 + %8 = add i64 %7, 12 %9 = and i64 %8, -8 %10 = icmp eq i64 %9, 0 br i1 %10, label %"_ZN4core3ptr73drop_in_place$LT$triomphe..arc..Arc$LT$$u5b$hir_def..TraitId$u5d$$GT$$GT$17hd2d5f6effb70e704E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8873333117009505138.exit.i.i.i.i.i" @@ -22671,16 +22671,13 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h1ab1bb5aad6bb8c2 %2 = getelementptr inbounds i8, ptr %0, i64 8 %3 = load i64, ptr %2, align 8, !noundef !4 %4 = shl nsw i64 %3, 3 - %5 = add i64 %4, 15 - %6 = and i64 %5, -8 - %7 = add i64 %6, 15 - %8 = and i64 %7, -8 - %9 = icmp eq i64 %8, 0 - br i1 %9, label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$salsa..DatabaseKeyIndex$u5d$$GT$$GT$$GT$$GT$17h3cc2e312c7444a94E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8873333117009505138.exit.i.i" + %5 = add i64 %4, 16 + %6 = icmp eq i64 %5, 0 + br i1 %6, label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$salsa..DatabaseKeyIndex$u5d$$GT$$GT$$GT$$GT$17h3cc2e312c7444a94E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8873333117009505138.exit.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8873333117009505138.exit.i.i": ; preds = %1 - %10 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %10, i64 noundef %8, i64 noundef 8) #61 + %7 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 + tail call void @__rust_dealloc(ptr noundef nonnull %7, i64 noundef %5, i64 noundef 8) #61 br label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$salsa..DatabaseKeyIndex$u5d$$GT$$GT$$GT$$GT$17h3cc2e312c7444a94E.exit" "_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$salsa..DatabaseKeyIndex$u5d$$GT$$GT$$GT$$GT$17h3cc2e312c7444a94E.exit": ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8873333117009505138.exit.i.i" @@ -22880,7 +22877,7 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h2def808f7c4a8def %15 = getelementptr inbounds i8, ptr %7, i64 8 %16 = load i64, ptr %15, align 8, !alias.scope !5273, !noundef !4 %17 = shl nsw i64 %16, 2 - %18 = add i64 %17, 15 + %18 = add i64 %17, 12 %19 = and i64 %18, -8 %20 = icmp eq i64 %19, 0 br i1 %20, label %"_ZN4core3ptr73drop_in_place$LT$triomphe..arc..Arc$LT$$u5b$hir_def..TraitId$u5d$$GT$$GT$17hd2d5f6effb70e704E.llvm.18266587286026290509.exit.i.i.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8873333117009505138.exit.i.i.i.i.i.i.i.i" @@ -24153,7 +24150,7 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17ha958a24d488ad05c %2 = getelementptr inbounds i8, ptr %0, i64 8 %3 = load i64, ptr %2, align 8, !noundef !4 %4 = shl nsw i64 %3, 2 - %5 = add i64 %4, 15 + %5 = add i64 %4, 12 %6 = and i64 %5, -8 %7 = icmp eq i64 %6, 0 br i1 %7, label %"_ZN4core3ptr103drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$$u5b$hir_def..TraitId$u5d$$GT$$GT$$GT$17h35039aa6885c1fd5E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8873333117009505138.exit.i.i" @@ -24745,28 +24742,22 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17he1f0c0ff3416f795 %7 = landingpad { ptr, i32 } cleanup %8 = mul nsw i64 %4, 24 - %9 = add i64 %8, 15 - %10 = and i64 %9, -8 - %11 = add i64 %10, 15 - %12 = and i64 %11, -8 - %13 = icmp eq i64 %12, 0 - br i1 %13, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd603e98b6f6ccc49E.exit.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8873333117009505138.exit.i.i" + %9 = add i64 %8, 16 + %10 = icmp eq i64 %9, 0 + br i1 %10, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd603e98b6f6ccc49E.exit.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8873333117009505138.exit.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8873333117009505138.exit.i.i": ; preds = %6 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #61 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %9, i64 noundef 8) #61 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd603e98b6f6ccc49E.exit.i" "_ZN4core3ptr175drop_in_place$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$hir_expand..attrs..Attr$u5d$$GT$$GT$$GT$17h283546b9d15e4693E.exit.i": ; preds = %1 - %14 = mul nsw i64 %4, 24 - %15 = add i64 %14, 15 - %16 = and i64 %15, -8 - %17 = add i64 %16, 15 - %18 = and i64 %17, -8 - %19 = icmp eq i64 %18, 0 - br i1 %19, label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$hir_expand..attrs..Attr$u5d$$GT$$GT$$GT$$GT$17h5bd061f2cd1df21fE.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8873333117009505138.exit.i4.i" + %11 = mul nsw i64 %4, 24 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$hir_expand..attrs..Attr$u5d$$GT$$GT$$GT$$GT$17h5bd061f2cd1df21fE.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8873333117009505138.exit.i4.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8873333117009505138.exit.i4.i": ; preds = %"_ZN4core3ptr175drop_in_place$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$hir_expand..attrs..Attr$u5d$$GT$$GT$$GT$17h283546b9d15e4693E.exit.i" - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %18, i64 noundef 8) #61 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #61 br label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$hir_expand..attrs..Attr$u5d$$GT$$GT$$GT$$GT$17h5bd061f2cd1df21fE.exit" "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd603e98b6f6ccc49E.exit.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8873333117009505138.exit.i.i", %6 diff --git a/bench/sentencepiece/optimized/arena.cc.ll b/bench/sentencepiece/optimized/arena.cc.ll index e565070dffd..fb5c24249c9 100644 --- a/bench/sentencepiece/optimized/arena.cc.ll +++ b/bench/sentencepiece/optimized/arena.cc.ll @@ -887,145 +887,141 @@ tailrecurse: ; preds = %_ZN6google8protobuf .thread: ; preds = %11, %tailrecurse %14 = phi i64 [ 8, %tailrecurse ], [ %spec.select, %11 ] %15 = shl nuw nsw i64 %14, 4 - %16 = add nuw nsw i64 %15, 23 - %17 = and i64 %16, 4080 - %18 = load ptr, ptr %5, align 8 - %19 = load ptr, ptr %6, align 8 + %16 = add nuw nsw i64 %15, 16 + %17 = load ptr, ptr %5, align 8 + %18 = load ptr, ptr %6, align 8 + %19 = ptrtoint ptr %17 to i64 %20 = ptrtoint ptr %18 to i64 - %21 = ptrtoint ptr %19 to i64 - %22 = sub i64 %20, %21 - %.not7.i = icmp ugt i64 %17, %22 + %21 = sub i64 %19, %20 + %.not7.i = icmp ugt i64 %16, %21 br i1 %.not7.i, label %.lr.ph.i, label %_ZN6google8protobuf8internal11SerialArena15AllocateAlignedEm.exit .lr.ph.i: ; preds = %.thread %.pre.i = load ptr, ptr %7, align 8 - %23 = add nuw nsw i64 %17, 24 - %24 = tail call i64 @llvm.umax.i64(i64 %17, i64 232) - %.sroa.speculated.i27 = add nuw nsw i64 %24, 24 - br label %25 - -25: ; preds = %_ZN6google8protobuf8internal9ArenaImpl9NewBufferEmm.exit, %.lr.ph.i - %26 = phi ptr [ %.pre.i, %.lr.ph.i ], [ %56, %_ZN6google8protobuf8internal9ArenaImpl9NewBufferEmm.exit ] - %27 = phi i64 [ %21, %.lr.ph.i ], [ %67, %_ZN6google8protobuf8internal9ArenaImpl9NewBufferEmm.exit ] - %28 = phi i64 [ %20, %.lr.ph.i ], [ %66, %_ZN6google8protobuf8internal9ArenaImpl9NewBufferEmm.exit ] - %29 = getelementptr inbounds i8, ptr %26, i64 16 - %30 = load i64, ptr %29, align 8 - %.neg.i.i = sub i64 %27, %28 - %31 = add i64 %.neg.i.i, %30 - %32 = getelementptr inbounds i8, ptr %26, i64 8 - store i64 %31, ptr %32, align 8 - %33 = load ptr, ptr %7, align 8 - %34 = load ptr, ptr %0, align 8 - %.not.i.i = icmp eq ptr %33, null + %22 = add nuw nsw i64 %15, 40 + %.sroa.speculated.i26 = tail call i64 @llvm.umax.i64(i64 %22, i64 256) + br label %23 + +23: ; preds = %_ZN6google8protobuf8internal9ArenaImpl9NewBufferEmm.exit, %.lr.ph.i + %24 = phi ptr [ %.pre.i, %.lr.ph.i ], [ %53, %_ZN6google8protobuf8internal9ArenaImpl9NewBufferEmm.exit ] + %25 = phi i64 [ %20, %.lr.ph.i ], [ %64, %_ZN6google8protobuf8internal9ArenaImpl9NewBufferEmm.exit ] + %26 = phi i64 [ %19, %.lr.ph.i ], [ %63, %_ZN6google8protobuf8internal9ArenaImpl9NewBufferEmm.exit ] + %27 = getelementptr inbounds i8, ptr %24, i64 16 + %28 = load i64, ptr %27, align 8 + %.neg.i.i = sub i64 %25, %26 + %29 = add i64 %.neg.i.i, %28 + %30 = getelementptr inbounds i8, ptr %24, i64 8 + store i64 %29, ptr %30, align 8 + %31 = load ptr, ptr %7, align 8 + %32 = load ptr, ptr %0, align 8 + %.not.i.i = icmp eq ptr %31, null br i1 %.not.i.i, label %_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i.thread, label %_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i -_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i.thread: ; preds = %25 - %35 = getelementptr inbounds i8, ptr %34, i64 32 - %36 = load ptr, ptr %35, align 8 - %.not20.i23 = icmp eq ptr %36, null - br i1 %.not20.i23, label %.thread25, label %.thread31 - -_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i: ; preds = %25 - %37 = getelementptr inbounds i8, ptr %33, i64 16 - %38 = load i64, ptr %37, align 8 - %.not.i20 = icmp eq i64 %38, -1 - %39 = getelementptr inbounds i8, ptr %34, i64 32 - %40 = load ptr, ptr %39, align 8 - %.not20.i = icmp eq ptr %40, null - br i1 %.not.i20, label %43, label %41 +_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i.thread: ; preds = %23 + %33 = getelementptr inbounds i8, ptr %32, i64 32 + %34 = load ptr, ptr %33, align 8 + %.not20.i23 = icmp eq ptr %34, null + br i1 %.not20.i23, label %.critedge.i.thread, label %.critedge.i.thread30 + +_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i: ; preds = %23 + %35 = getelementptr inbounds i8, ptr %31, i64 16 + %36 = load i64, ptr %35, align 8 + %.not.i20 = icmp eq i64 %36, -1 + %37 = getelementptr inbounds i8, ptr %32, i64 32 + %38 = load ptr, ptr %37, align 8 + %.not20.i = icmp eq ptr %38, null + br i1 %.not.i20, label %41, label %39 -41: ; preds = %_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i - br i1 %.not20.i, label %.thread36, label %46 +39: ; preds = %_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i + br i1 %.not20.i, label %.critedge.i.thread35, label %.critedge.i + +.critedge.i.thread35: ; preds = %39 + %40 = shl i64 %36, 1 + %.sroa.speculated29.i36 = tail call i64 @llvm.umin.i64(i64 %40, i64 8192) + %.sroa.speculated.i37 = tail call i64 @llvm.umax.i64(i64 %.sroa.speculated29.i36, i64 %22) + br label %.critedge.i.thread -.thread36: ; preds = %41 - %42 = shl i64 %38, 1 - %.sroa.speculated29.i37 = tail call i64 @llvm.umin.i64(i64 %42, i64 8192) - %.sroa.speculated.i38 = tail call i64 @llvm.umax.i64(i64 %.sroa.speculated29.i37, i64 %23) - br label %.thread25 +41: ; preds = %_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i + br i1 %.not20.i, label %.critedge.i.thread, label %.critedge.i.thread30 -43: ; preds = %_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i - br i1 %.not20.i, label %.thread25, label %.thread31 +.critedge.i.thread30: ; preds = %41, %_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i.thread + %42 = phi ptr [ %34, %_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i.thread ], [ %38, %41 ] + %43 = load i64, ptr %42, align 8 + br label %47 -.thread31: ; preds = %43, %_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i.thread - %44 = phi ptr [ %36, %_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i.thread ], [ %40, %43 ] +.critedge.i: ; preds = %39 + %44 = getelementptr inbounds i8, ptr %38, i64 8 %45 = load i64, ptr %44, align 8 - br label %50 - -46: ; preds = %41 - %47 = getelementptr inbounds i8, ptr %40, i64 8 - %48 = load i64, ptr %47, align 8 - %49 = shl i64 %38, 1 - %.sroa.speculated29.i = tail call i64 @llvm.umin.i64(i64 %48, i64 %49) - br label %50 - -50: ; preds = %46, %.thread31 - %.sroa.speculated29.i.sink = phi i64 [ %.sroa.speculated29.i, %46 ], [ %45, %.thread31 ] - %51 = phi ptr [ %40, %46 ], [ %44, %.thread31 ] - %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %.sroa.speculated29.i.sink, i64 %23) - %52 = getelementptr inbounds i8, ptr %51, i64 16 - %53 = load ptr, ptr %52, align 8 - %54 = tail call noundef ptr %53(i64 noundef %.sroa.speculated.i) + %46 = shl i64 %36, 1 + %.sroa.speculated29.i = tail call i64 @llvm.umin.i64(i64 %45, i64 %46) + br label %47 + +47: ; preds = %.critedge.i, %.critedge.i.thread30 + %.sroa.speculated29.i.sink = phi i64 [ %.sroa.speculated29.i, %.critedge.i ], [ %43, %.critedge.i.thread30 ] + %48 = phi ptr [ %38, %.critedge.i ], [ %42, %.critedge.i.thread30 ] + %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %.sroa.speculated29.i.sink, i64 %22) + %49 = getelementptr inbounds i8, ptr %48, i64 16 + %50 = load ptr, ptr %49, align 8 + %51 = tail call noundef ptr %50(i64 noundef %.sroa.speculated.i) br label %_ZN6google8protobuf8internal9ArenaImpl9NewBufferEmm.exit -.thread25: ; preds = %.thread36, %_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i.thread, %43 - %.sroa.speculated.i30 = phi i64 [ %.sroa.speculated.i27, %43 ], [ %.sroa.speculated.i27, %_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i.thread ], [ %.sroa.speculated.i38, %.thread36 ] - %55 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %.sroa.speculated.i30) #24 +.critedge.i.thread: ; preds = %_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i.thread, %41, %.critedge.i.thread35 + %.sroa.speculated.i29 = phi i64 [ %.sroa.speculated.i37, %.critedge.i.thread35 ], [ %.sroa.speculated.i26, %41 ], [ %.sroa.speculated.i26, %_ZN6google8protobuf8internal11SerialArena8NewBlockEPNS2_5BlockEmPNS1_9ArenaImplE.exit.i.thread ] + %52 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %.sroa.speculated.i29) #24 br label %_ZN6google8protobuf8internal9ArenaImpl9NewBufferEmm.exit -_ZN6google8protobuf8internal9ArenaImpl9NewBufferEmm.exit: ; preds = %50, %.thread25 - %.sroa.speculated.i29 = phi i64 [ %.sroa.speculated.i, %50 ], [ %.sroa.speculated.i30, %.thread25 ] - %56 = phi ptr [ %54, %50 ], [ %55, %.thread25 ] - %57 = getelementptr inbounds i8, ptr %34, i64 16 - %58 = atomicrmw add ptr %57, i64 %.sroa.speculated.i29 monotonic, align 8 - %59 = ptrtoint ptr %33 to i64 - store i64 %59, ptr %56, align 8 - %60 = getelementptr inbounds i8, ptr %56, i64 8 - store i64 24, ptr %60, align 8 - %61 = getelementptr inbounds i8, ptr %56, i64 16 - store i64 %.sroa.speculated.i29, ptr %61, align 8 - store ptr %56, ptr %7, align 8 - %62 = load i64, ptr %60, align 8 - %63 = getelementptr inbounds i8, ptr %56, i64 %62 - store ptr %63, ptr %6, align 8 - %64 = load i64, ptr %61, align 8 - %65 = getelementptr inbounds i8, ptr %56, i64 %64 - store ptr %65, ptr %5, align 8 - %66 = ptrtoint ptr %65 to i64 - %67 = ptrtoint ptr %63 to i64 - %gepdiff.i = sub nsw i64 %64, %62 - %.not.i = icmp ugt i64 %17, %gepdiff.i - br i1 %.not.i, label %25, label %_ZN6google8protobuf8internal11SerialArena15AllocateAlignedEm.exit.loopexit +_ZN6google8protobuf8internal9ArenaImpl9NewBufferEmm.exit: ; preds = %47, %.critedge.i.thread + %.sroa.speculated.i28 = phi i64 [ %.sroa.speculated.i, %47 ], [ %.sroa.speculated.i29, %.critedge.i.thread ] + %53 = phi ptr [ %51, %47 ], [ %52, %.critedge.i.thread ] + %54 = getelementptr inbounds i8, ptr %32, i64 16 + %55 = atomicrmw add ptr %54, i64 %.sroa.speculated.i28 monotonic, align 8 + %56 = ptrtoint ptr %31 to i64 + store i64 %56, ptr %53, align 8 + %57 = getelementptr inbounds i8, ptr %53, i64 8 + store i64 24, ptr %57, align 8 + %58 = getelementptr inbounds i8, ptr %53, i64 16 + store i64 %.sroa.speculated.i28, ptr %58, align 8 + store ptr %53, ptr %7, align 8 + %59 = load i64, ptr %57, align 8 + %60 = getelementptr inbounds i8, ptr %53, i64 %59 + store ptr %60, ptr %6, align 8 + %61 = load i64, ptr %58, align 8 + %62 = getelementptr inbounds i8, ptr %53, i64 %61 + store ptr %62, ptr %5, align 8 + %63 = ptrtoint ptr %62 to i64 + %64 = ptrtoint ptr %60 to i64 + %gepdiff.i = sub nsw i64 %61, %59 + %.not.i = icmp ugt i64 %16, %gepdiff.i + br i1 %.not.i, label %23, label %_ZN6google8protobuf8internal11SerialArena15AllocateAlignedEm.exit.loopexit _ZN6google8protobuf8internal11SerialArena15AllocateAlignedEm.exit.loopexit: ; preds = %_ZN6google8protobuf8internal9ArenaImpl9NewBufferEmm.exit %.pre19 = load ptr, ptr %4, align 8 br label %_ZN6google8protobuf8internal11SerialArena15AllocateAlignedEm.exit _ZN6google8protobuf8internal11SerialArena15AllocateAlignedEm.exit: ; preds = %_ZN6google8protobuf8internal11SerialArena15AllocateAlignedEm.exit.loopexit, %.thread - %68 = phi ptr [ %10, %.thread ], [ %.pre19, %_ZN6google8protobuf8internal11SerialArena15AllocateAlignedEm.exit.loopexit ] - %.lcssa.i = phi ptr [ %19, %.thread ], [ %63, %_ZN6google8protobuf8internal11SerialArena15AllocateAlignedEm.exit.loopexit ] - %69 = getelementptr inbounds i8, ptr %.lcssa.i, i64 %17 - store ptr %69, ptr %6, align 8 - %70 = getelementptr inbounds i8, ptr %.lcssa.i, i64 8 - store ptr %68, ptr %70, align 8 + %65 = phi ptr [ %10, %.thread ], [ %.pre19, %_ZN6google8protobuf8internal11SerialArena15AllocateAlignedEm.exit.loopexit ] + %.lcssa.i = phi ptr [ %18, %.thread ], [ %60, %_ZN6google8protobuf8internal11SerialArena15AllocateAlignedEm.exit.loopexit ] + %66 = getelementptr inbounds i8, ptr %.lcssa.i, i64 %16 + store ptr %66, ptr %6, align 8 + %67 = getelementptr inbounds i8, ptr %.lcssa.i, i64 8 + store ptr %65, ptr %67, align 8 store i64 %14, ptr %.lcssa.i, align 8 store ptr %.lcssa.i, ptr %4, align 8 %.ptr = getelementptr inbounds i8, ptr %.lcssa.i, i64 16 store ptr %.ptr, ptr %8, align 8 - %.add = add nuw nsw i64 %15, 16 - %.ptr15 = getelementptr inbounds i8, ptr %.lcssa.i, i64 %.add - store ptr %.ptr15, ptr %9, align 8 - %71 = icmp eq i64 %14, 0 - br i1 %71, label %tailrecurse, label %_ZN6google8protobuf8internal11SerialArena10AddCleanupEPvPFvS3_E.exit + store ptr %66, ptr %9, align 8 + %68 = icmp eq i64 %14, 0 + br i1 %68, label %tailrecurse, label %_ZN6google8protobuf8internal11SerialArena10AddCleanupEPvPFvS3_E.exit _ZN6google8protobuf8internal11SerialArena10AddCleanupEPvPFvS3_E.exit: ; preds = %_ZN6google8protobuf8internal11SerialArena15AllocateAlignedEm.exit %.ptr.le = getelementptr inbounds i8, ptr %.lcssa.i, i64 16 store ptr %1, ptr %.ptr.le, align 8 - %72 = load ptr, ptr %8, align 8 - %73 = getelementptr inbounds i8, ptr %72, i64 8 - store ptr %2, ptr %73, align 8 - %74 = load ptr, ptr %8, align 8 - %75 = getelementptr inbounds i8, ptr %74, i64 16 - store ptr %75, ptr %8, align 8 + %69 = load ptr, ptr %8, align 8 + %70 = getelementptr inbounds i8, ptr %69, i64 8 + store ptr %2, ptr %70, align 8 + %71 = load ptr, ptr %8, align 8 + %72 = getelementptr inbounds i8, ptr %71, i64 16 + store ptr %72, ptr %8, align 8 ret void } diff --git a/bench/simdjson/optimized/simdjson.cpp.ll b/bench/simdjson/optimized/simdjson.cpp.ll index 2f666a164cf..58764b2dd43 100644 --- a/bench/simdjson/optimized/simdjson.cpp.ll +++ b/bench/simdjson/optimized/simdjson.cpp.ll @@ -14916,7 +14916,7 @@ if.end: ; preds = %entry %add.i.i.i.i = add i32 %idx, %cast.i.i.i.i.i %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i, i64 4 store i32 %add.i.i.i.i, ptr %arrayidx.i.i.i.i, align 4 - %sub.i.i.i.i.i.i = add i64 %and.i.i.i.i.i, -1 + %sub.i.i.i.i.i.i = add i64 %and.i.i.i.i.i, -2 %and.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i, %and.i.i.i.i.i %this.val.i.i.i.i = load ptr, ptr %this, align 8 %3 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i, i1 true) @@ -14924,7 +14924,7 @@ if.end: ; preds = %entry %add.i.i.i.i.i = add i32 %idx, %cast.i.i.i.i.i.i %arrayidx.i.i.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i.i, i64 8 store i32 %add.i.i.i.i.i, ptr %arrayidx.i.i.i.i.i, align 4 - %sub.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i, -1 + %sub.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i, -2 %and.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i, %and.i.i.i.i.i.i %this.val3.i.i.i.i = load ptr, ptr %this, align 8 %4 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i.i, i1 true) @@ -14936,7 +14936,7 @@ if.end: ; preds = %entry br i1 %cmp.i, label %if.then.i, label %if.end8 if.then.i: ; preds = %if.end - %sub.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i.i, -1 + %sub.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i.i, -2 %and.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i, %and.i.i.i.i.i.i.i %this.val.i.i4.i = load ptr, ptr %this, align 8 %5 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i.i.i, i1 true) @@ -14944,7 +14944,7 @@ if.then.i: ; preds = %if.end %add.i.i.i6.i = add i32 %idx, %cast.i.i.i.i5.i %arrayidx.i.i.i7.i = getelementptr inbounds i8, ptr %this.val.i.i4.i, i64 16 store i32 %add.i.i.i6.i, ptr %arrayidx.i.i.i7.i, align 4 - %sub.i.i.i.i.i8.i = add i64 %and.i.i.i.i.i.i.i.i, -1 + %sub.i.i.i.i.i8.i = add i64 %and.i.i.i.i.i.i.i.i, -2 %and.i.i.i.i.i9.i = and i64 %sub.i.i.i.i.i8.i, %and.i.i.i.i.i.i.i.i %this.val.i.i.i10.i = load ptr, ptr %this, align 8 %6 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i9.i, i1 true) @@ -14960,7 +14960,7 @@ if.then.i: ; preds = %if.end %add.i.i.i.i.i17.i = add i32 %idx, %cast.i.i.i.i.i.i16.i %arrayidx.i.i.i.i.i18.i = getelementptr inbounds i8, ptr %this.val.i.i.i.i.i, i64 24 store i32 %add.i.i.i.i.i17.i, ptr %arrayidx.i.i.i.i.i18.i, align 4 - %sub.i.i.i.i.i.i.i19.i = add i64 %and.i.i.i.i.i.i15.i, -1 + %sub.i.i.i.i.i.i.i19.i = add i64 %and.i.i.i.i.i.i15.i, -2 %and.i.i.i.i.i.i.i20.i = and i64 %sub.i.i.i.i.i.i.i19.i, %and.i.i.i.i.i.i15.i %this.val3.i.i.i.i.i = load ptr, ptr %this, align 8 %8 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i.i20.i, i1 true) @@ -14972,7 +14972,7 @@ if.then.i: ; preds = %if.end br i1 %cmp.i.i, label %if.then.i.i, label %if.end8 if.then.i.i: ; preds = %if.then.i - %sub.i.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i.i20.i, -1 + %sub.i.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i.i20.i, -2 %and.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i, %and.i.i.i.i.i.i.i20.i %this.val.i.i4.i.i = load ptr, ptr %this, align 8 %9 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i.i.i.i, i1 true) @@ -14980,7 +14980,7 @@ if.then.i.i: ; preds = %if.then.i %add.i.i.i6.i.i = add i32 %idx, %cast.i.i.i.i5.i.i %arrayidx.i.i.i7.i.i = getelementptr inbounds i8, ptr %this.val.i.i4.i.i, i64 32 store i32 %add.i.i.i6.i.i, ptr %arrayidx.i.i.i7.i.i, align 4 - %sub.i.i.i.i.i8.i.i = add i64 %and.i.i.i.i.i.i.i.i.i, -1 + %sub.i.i.i.i.i8.i.i = add i64 %and.i.i.i.i.i.i.i.i.i, -2 %and.i.i.i.i.i9.i.i = and i64 %sub.i.i.i.i.i8.i.i, %and.i.i.i.i.i.i.i.i.i %this.val.i.i.i10.i.i = load ptr, ptr %this, align 8 %10 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i9.i.i, i1 true) @@ -14988,7 +14988,7 @@ if.then.i.i: ; preds = %if.then.i %add.i.i.i.i12.i.i = add i32 %idx, %cast.i.i.i.i.i11.i.i %arrayidx.i.i.i.i13.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i10.i.i, i64 36 store i32 %add.i.i.i.i12.i.i, ptr %arrayidx.i.i.i.i13.i.i, align 4 - %sub.i.i.i.i.i.i14.i.i = add i64 %and.i.i.i.i.i9.i.i, -1 + %sub.i.i.i.i.i.i14.i.i = add i64 %and.i.i.i.i.i9.i.i, -2 %and.i.i.i.i.i.i15.i.i = and i64 %sub.i.i.i.i.i.i14.i.i, %and.i.i.i.i.i9.i.i %this.val.i.i.i.i.i.i = load ptr, ptr %this, align 8 %11 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i15.i.i, i1 true) @@ -15008,7 +15008,7 @@ if.then.i.i: ; preds = %if.then.i br i1 %cmp.i.i.i, label %if.then.i.i.i, label %if.end8 if.then.i.i.i: ; preds = %if.then.i.i - %sub.i.i.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i.i20.i.i, -1 + %sub.i.i.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i.i20.i.i, -2 %and.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i, %and.i.i.i.i.i.i.i20.i.i %this.val.i.i4.i.i.i = load ptr, ptr %this, align 8 %13 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i.i.i.i.i, i1 true) @@ -15016,7 +15016,7 @@ if.then.i.i.i: ; preds = %if.then.i.i %add.i.i.i6.i.i.i = add i32 %idx, %cast.i.i.i.i5.i.i.i %arrayidx.i.i.i7.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i4.i.i.i, i64 48 store i32 %add.i.i.i6.i.i.i, ptr %arrayidx.i.i.i7.i.i.i, align 4 - %sub.i.i.i.i.i8.i.i.i = add i64 %and.i.i.i.i.i.i.i.i.i.i, -1 + %sub.i.i.i.i.i8.i.i.i = add i64 %and.i.i.i.i.i.i.i.i.i.i, -2 %and.i.i.i.i.i9.i.i.i = and i64 %sub.i.i.i.i.i8.i.i.i, %and.i.i.i.i.i.i.i.i.i.i %this.val.i.i.i10.i.i.i = load ptr, ptr %this, align 8 %14 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i9.i.i.i, i1 true) @@ -15024,7 +15024,7 @@ if.then.i.i.i: ; preds = %if.then.i.i %add.i.i.i.i12.i.i.i = add i32 %idx, %cast.i.i.i.i.i11.i.i.i %arrayidx.i.i.i.i13.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i10.i.i.i, i64 52 store i32 %add.i.i.i.i12.i.i.i, ptr %arrayidx.i.i.i.i13.i.i.i, align 4 - %sub.i.i.i.i.i.i14.i.i.i = add i64 %and.i.i.i.i.i9.i.i.i, -1 + %sub.i.i.i.i.i.i14.i.i.i = add i64 %and.i.i.i.i.i9.i.i.i, -2 %and.i.i.i.i.i.i15.i.i.i = and i64 %sub.i.i.i.i.i.i14.i.i.i, %and.i.i.i.i.i9.i.i.i %this.val.i.i.i.i.i.i.i = load ptr, ptr %this, align 8 %15 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i15.i.i.i, i1 true) @@ -15032,7 +15032,7 @@ if.then.i.i.i: ; preds = %if.then.i.i %add.i.i.i.i.i17.i.i.i = add i32 %idx, %cast.i.i.i.i.i.i16.i.i.i %arrayidx.i.i.i.i.i18.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i.i.i.i.i, i64 56 store i32 %add.i.i.i.i.i17.i.i.i, ptr %arrayidx.i.i.i.i.i18.i.i.i, align 4 - %sub.i.i.i.i.i.i.i19.i.i.i = add i64 %and.i.i.i.i.i.i15.i.i.i, -1 + %sub.i.i.i.i.i.i.i19.i.i.i = add i64 %and.i.i.i.i.i.i15.i.i.i, -2 %and.i.i.i.i.i.i.i20.i.i.i = and i64 %sub.i.i.i.i.i.i.i19.i.i.i, %and.i.i.i.i.i.i15.i.i.i %this.val3.i.i.i.i.i.i.i = load ptr, ptr %this, align 8 %16 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i.i20.i.i.i, i1 true) @@ -15052,7 +15052,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i %add.i.i.i6.i.i.i.i = add i32 %idx, %cast.i.i.i.i5.i.i.i.i %arrayidx.i.i.i7.i.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i4.i.i.i.i, i64 64 store i32 %add.i.i.i6.i.i.i.i, ptr %arrayidx.i.i.i7.i.i.i.i, align 4 - %sub.i.i.i.i.i8.i.i.i.i = add i64 %and.i.i.i.i.i.i.i.i.i.i.i, -1 + %sub.i.i.i.i.i8.i.i.i.i = add i64 %and.i.i.i.i.i.i.i.i.i.i.i, -2 %and.i.i.i.i.i9.i.i.i.i = and i64 %sub.i.i.i.i.i8.i.i.i.i, %and.i.i.i.i.i.i.i.i.i.i.i %this.val.i.i.i10.i.i.i.i = load ptr, ptr %this, align 8 %18 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i9.i.i.i.i, i1 true) @@ -15060,7 +15060,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i %add.i.i.i.i12.i.i.i.i = add i32 %idx, %cast.i.i.i.i.i11.i.i.i.i %arrayidx.i.i.i.i13.i.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i10.i.i.i.i, i64 68 store i32 %add.i.i.i.i12.i.i.i.i, ptr %arrayidx.i.i.i.i13.i.i.i.i, align 4 - %sub.i.i.i.i.i.i14.i.i.i.i = add i64 %and.i.i.i.i.i9.i.i.i.i, -1 + %sub.i.i.i.i.i.i14.i.i.i.i = add i64 %and.i.i.i.i.i9.i.i.i.i, -2 %and.i.i.i.i.i.i15.i.i.i.i = and i64 %sub.i.i.i.i.i.i14.i.i.i.i, %and.i.i.i.i.i9.i.i.i.i %this.val.i.i.i.i.i.i.i.i = load ptr, ptr %this, align 8 %19 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i15.i.i.i.i, i1 true) @@ -15068,7 +15068,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i %add.i.i.i.i.i17.i.i.i.i = add i32 %idx, %cast.i.i.i.i.i.i16.i.i.i.i %arrayidx.i.i.i.i.i18.i.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i.i.i.i.i.i, i64 72 store i32 %add.i.i.i.i.i17.i.i.i.i, ptr %arrayidx.i.i.i.i.i18.i.i.i.i, align 4 - %sub.i.i.i.i.i.i.i19.i.i.i.i = add i64 %and.i.i.i.i.i.i15.i.i.i.i, -1 + %sub.i.i.i.i.i.i.i19.i.i.i.i = add i64 %and.i.i.i.i.i.i15.i.i.i.i, -2 %and.i.i.i.i.i.i.i20.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i19.i.i.i.i, %and.i.i.i.i.i.i15.i.i.i.i %this.val3.i.i.i.i.i.i.i.i = load ptr, ptr %this, align 8 %20 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i.i20.i.i.i.i, i1 true) @@ -15080,7 +15080,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i br i1 %cmp.i.i.i.i.i, label %_ZN8simdjson7haswell12_GLOBAL__N_16stage111bit_indexer21write_indexes_steppedILi0ELi24ELi4EEEijRmi.exit, label %if.end8 _ZN8simdjson7haswell12_GLOBAL__N_16stage111bit_indexer21write_indexes_steppedILi0ELi24ELi4EEEijRmi.exit: ; preds = %if.then.i.i.i.i - %sub.i.i.i.i.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i.i20.i.i.i.i, -1 + %sub.i.i.i.i.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i.i20.i.i.i.i, -2 %and.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i.i.i, %and.i.i.i.i.i.i.i20.i.i.i.i %this.val.i.i4.i.i.i.i.i = load ptr, ptr %this, align 8 %21 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i.i.i.i.i.i.i, i1 true) @@ -15096,7 +15096,7 @@ _ZN8simdjson7haswell12_GLOBAL__N_16stage111bit_indexer21write_indexes_steppedILi %add.i.i.i.i12.i.i.i.i.i = add i32 %idx, %cast.i.i.i.i.i11.i.i.i.i.i %arrayidx.i.i.i.i13.i.i.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i10.i.i.i.i.i, i64 84 store i32 %add.i.i.i.i12.i.i.i.i.i, ptr %arrayidx.i.i.i.i13.i.i.i.i.i, align 4 - %sub.i.i.i.i.i.i14.i.i.i.i.i = add i64 %and.i.i.i.i.i9.i.i.i.i.i, -1 + %sub.i.i.i.i.i.i14.i.i.i.i.i = add i64 %and.i.i.i.i.i9.i.i.i.i.i, -2 %and.i.i.i.i.i.i15.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i14.i.i.i.i.i, %and.i.i.i.i.i9.i.i.i.i.i %this.val.i.i.i.i.i.i.i.i.i = load ptr, ptr %this, align 8 %23 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i15.i.i.i.i.i, i1 true) @@ -15104,7 +15104,7 @@ _ZN8simdjson7haswell12_GLOBAL__N_16stage111bit_indexer21write_indexes_steppedILi %add.i.i.i.i.i17.i.i.i.i.i = add i32 %idx, %cast.i.i.i.i.i.i16.i.i.i.i.i %arrayidx.i.i.i.i.i18.i.i.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i.i.i.i.i.i.i, i64 88 store i32 %add.i.i.i.i.i17.i.i.i.i.i, ptr %arrayidx.i.i.i.i.i18.i.i.i.i.i, align 4 - %sub.i.i.i.i.i.i.i19.i.i.i.i.i = add i64 %and.i.i.i.i.i.i15.i.i.i.i.i, -1 + %sub.i.i.i.i.i.i.i19.i.i.i.i.i = add i64 %and.i.i.i.i.i.i15.i.i.i.i.i, -2 %and.i.i.i.i.i.i.i20.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i19.i.i.i.i.i, %and.i.i.i.i.i.i15.i.i.i.i.i %this.val3.i.i.i.i.i.i.i.i.i = load ptr, ptr %this, align 8 %24 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i.i20.i.i.i.i.i, i1 true) @@ -15116,7 +15116,7 @@ _ZN8simdjson7haswell12_GLOBAL__N_16stage111bit_indexer21write_indexes_steppedILi br i1 %cmp733, label %for.body.preheader, label %if.end8 for.body.preheader: ; preds = %_ZN8simdjson7haswell12_GLOBAL__N_16stage111bit_indexer21write_indexes_steppedILi0ELi24ELi4EEEijRmi.exit - %sub.i.i.i.i.i.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i.i20.i.i.i.i.i, -1 + %sub.i.i.i.i.i.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i.i20.i.i.i.i.i, -2 %and.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i.i.i.i, %and.i.i.i.i.i.i.i20.i.i.i.i.i br label %for.body @@ -17831,7 +17831,7 @@ if.end: ; preds = %entry %add.i.i.i.i = add i32 %idx, %cast.i.i.i.i.i %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i, i64 4 store i32 %add.i.i.i.i, ptr %arrayidx.i.i.i.i, align 4 - %sub.i.i.i.i.i = add i64 %and.i.i.i.i, -1 + %sub.i.i.i.i.i = add i64 %and.i.i.i.i, -2 %and.i.i.i.i.i = and i64 %sub.i.i.i.i.i, %and.i.i.i.i %this.val.i.i.i.i = load ptr, ptr %this, align 8 %3 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i, i1 true) @@ -17839,7 +17839,7 @@ if.end: ; preds = %entry %add.i.i.i.i.i = add i32 %idx, %cast.i.i.i.i.i.i %arrayidx.i.i.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i.i, i64 8 store i32 %add.i.i.i.i.i, ptr %arrayidx.i.i.i.i.i, align 4 - %sub.i.i.i.i.i.i = add i64 %and.i.i.i.i.i, -1 + %sub.i.i.i.i.i.i = add i64 %and.i.i.i.i.i, -2 %and.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i, %and.i.i.i.i.i %this.val3.i.i.i.i = load ptr, ptr %this, align 8 %4 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i, i1 true) @@ -17851,7 +17851,7 @@ if.end: ; preds = %entry br i1 %cmp.i, label %if.then.i, label %if.end8 if.then.i: ; preds = %if.end - %sub.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i, -1 + %sub.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i, -2 %and.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i, %and.i.i.i.i.i.i %this.val.i.i4.i = load ptr, ptr %this, align 8 %5 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i.i, i1 true) @@ -17859,7 +17859,7 @@ if.then.i: ; preds = %if.end %add.i.i.i6.i = add i32 %idx, %cast.i.i.i.i5.i %arrayidx.i.i.i7.i = getelementptr inbounds i8, ptr %this.val.i.i4.i, i64 16 store i32 %add.i.i.i6.i, ptr %arrayidx.i.i.i7.i, align 4 - %sub.i.i.i.i8.i = add i64 %and.i.i.i.i.i.i.i, -1 + %sub.i.i.i.i8.i = add i64 %and.i.i.i.i.i.i.i, -2 %and.i.i.i.i9.i = and i64 %sub.i.i.i.i8.i, %and.i.i.i.i.i.i.i %this.val.i.i.i10.i = load ptr, ptr %this, align 8 %6 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i9.i, i1 true) @@ -17875,7 +17875,7 @@ if.then.i: ; preds = %if.end %add.i.i.i.i.i17.i = add i32 %idx, %cast.i.i.i.i.i.i16.i %arrayidx.i.i.i.i.i18.i = getelementptr inbounds i8, ptr %this.val.i.i.i.i.i, i64 24 store i32 %add.i.i.i.i.i17.i, ptr %arrayidx.i.i.i.i.i18.i, align 4 - %sub.i.i.i.i.i.i19.i = add i64 %and.i.i.i.i.i15.i, -1 + %sub.i.i.i.i.i.i19.i = add i64 %and.i.i.i.i.i15.i, -2 %and.i.i.i.i.i.i20.i = and i64 %sub.i.i.i.i.i.i19.i, %and.i.i.i.i.i15.i %this.val3.i.i.i.i.i = load ptr, ptr %this, align 8 %8 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i20.i, i1 true) @@ -17887,7 +17887,7 @@ if.then.i: ; preds = %if.end br i1 %cmp.i.i, label %if.then.i.i, label %if.end8 if.then.i.i: ; preds = %if.then.i - %sub.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i20.i, -1 + %sub.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i20.i, -2 %and.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i, %and.i.i.i.i.i.i20.i %this.val.i.i4.i.i = load ptr, ptr %this, align 8 %9 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i.i.i, i1 true) @@ -17895,7 +17895,7 @@ if.then.i.i: ; preds = %if.then.i %add.i.i.i6.i.i = add i32 %idx, %cast.i.i.i.i5.i.i %arrayidx.i.i.i7.i.i = getelementptr inbounds i8, ptr %this.val.i.i4.i.i, i64 32 store i32 %add.i.i.i6.i.i, ptr %arrayidx.i.i.i7.i.i, align 4 - %sub.i.i.i.i8.i.i = add i64 %and.i.i.i.i.i.i.i.i, -1 + %sub.i.i.i.i8.i.i = add i64 %and.i.i.i.i.i.i.i.i, -2 %and.i.i.i.i9.i.i = and i64 %sub.i.i.i.i8.i.i, %and.i.i.i.i.i.i.i.i %this.val.i.i.i10.i.i = load ptr, ptr %this, align 8 %10 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i9.i.i, i1 true) @@ -17903,7 +17903,7 @@ if.then.i.i: ; preds = %if.then.i %add.i.i.i.i12.i.i = add i32 %idx, %cast.i.i.i.i.i11.i.i %arrayidx.i.i.i.i13.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i10.i.i, i64 36 store i32 %add.i.i.i.i12.i.i, ptr %arrayidx.i.i.i.i13.i.i, align 4 - %sub.i.i.i.i.i14.i.i = add i64 %and.i.i.i.i9.i.i, -1 + %sub.i.i.i.i.i14.i.i = add i64 %and.i.i.i.i9.i.i, -2 %and.i.i.i.i.i15.i.i = and i64 %sub.i.i.i.i.i14.i.i, %and.i.i.i.i9.i.i %this.val.i.i.i.i.i.i = load ptr, ptr %this, align 8 %11 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i15.i.i, i1 true) @@ -17923,7 +17923,7 @@ if.then.i.i: ; preds = %if.then.i br i1 %cmp.i.i.i, label %if.then.i.i.i, label %if.end8 if.then.i.i.i: ; preds = %if.then.i.i - %sub.i.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i20.i.i, -1 + %sub.i.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i20.i.i, -2 %and.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i, %and.i.i.i.i.i.i20.i.i %this.val.i.i4.i.i.i = load ptr, ptr %this, align 8 %13 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i.i.i.i, i1 true) @@ -17931,7 +17931,7 @@ if.then.i.i.i: ; preds = %if.then.i.i %add.i.i.i6.i.i.i = add i32 %idx, %cast.i.i.i.i5.i.i.i %arrayidx.i.i.i7.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i4.i.i.i, i64 48 store i32 %add.i.i.i6.i.i.i, ptr %arrayidx.i.i.i7.i.i.i, align 4 - %sub.i.i.i.i8.i.i.i = add i64 %and.i.i.i.i.i.i.i.i.i, -1 + %sub.i.i.i.i8.i.i.i = add i64 %and.i.i.i.i.i.i.i.i.i, -2 %and.i.i.i.i9.i.i.i = and i64 %sub.i.i.i.i8.i.i.i, %and.i.i.i.i.i.i.i.i.i %this.val.i.i.i10.i.i.i = load ptr, ptr %this, align 8 %14 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i9.i.i.i, i1 true) @@ -17939,7 +17939,7 @@ if.then.i.i.i: ; preds = %if.then.i.i %add.i.i.i.i12.i.i.i = add i32 %idx, %cast.i.i.i.i.i11.i.i.i %arrayidx.i.i.i.i13.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i10.i.i.i, i64 52 store i32 %add.i.i.i.i12.i.i.i, ptr %arrayidx.i.i.i.i13.i.i.i, align 4 - %sub.i.i.i.i.i14.i.i.i = add i64 %and.i.i.i.i9.i.i.i, -1 + %sub.i.i.i.i.i14.i.i.i = add i64 %and.i.i.i.i9.i.i.i, -2 %and.i.i.i.i.i15.i.i.i = and i64 %sub.i.i.i.i.i14.i.i.i, %and.i.i.i.i9.i.i.i %this.val.i.i.i.i.i.i.i = load ptr, ptr %this, align 8 %15 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i15.i.i.i, i1 true) @@ -17947,7 +17947,7 @@ if.then.i.i.i: ; preds = %if.then.i.i %add.i.i.i.i.i17.i.i.i = add i32 %idx, %cast.i.i.i.i.i.i16.i.i.i %arrayidx.i.i.i.i.i18.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i.i.i.i.i, i64 56 store i32 %add.i.i.i.i.i17.i.i.i, ptr %arrayidx.i.i.i.i.i18.i.i.i, align 4 - %sub.i.i.i.i.i.i19.i.i.i = add i64 %and.i.i.i.i.i15.i.i.i, -1 + %sub.i.i.i.i.i.i19.i.i.i = add i64 %and.i.i.i.i.i15.i.i.i, -2 %and.i.i.i.i.i.i20.i.i.i = and i64 %sub.i.i.i.i.i.i19.i.i.i, %and.i.i.i.i.i15.i.i.i %this.val3.i.i.i.i.i.i.i = load ptr, ptr %this, align 8 %16 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i20.i.i.i, i1 true) @@ -17967,7 +17967,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i %add.i.i.i6.i.i.i.i = add i32 %idx, %cast.i.i.i.i5.i.i.i.i %arrayidx.i.i.i7.i.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i4.i.i.i.i, i64 64 store i32 %add.i.i.i6.i.i.i.i, ptr %arrayidx.i.i.i7.i.i.i.i, align 4 - %sub.i.i.i.i8.i.i.i.i = add i64 %and.i.i.i.i.i.i.i.i.i.i, -1 + %sub.i.i.i.i8.i.i.i.i = add i64 %and.i.i.i.i.i.i.i.i.i.i, -2 %and.i.i.i.i9.i.i.i.i = and i64 %sub.i.i.i.i8.i.i.i.i, %and.i.i.i.i.i.i.i.i.i.i %this.val.i.i.i10.i.i.i.i = load ptr, ptr %this, align 8 %18 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i9.i.i.i.i, i1 true) @@ -17975,7 +17975,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i %add.i.i.i.i12.i.i.i.i = add i32 %idx, %cast.i.i.i.i.i11.i.i.i.i %arrayidx.i.i.i.i13.i.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i10.i.i.i.i, i64 68 store i32 %add.i.i.i.i12.i.i.i.i, ptr %arrayidx.i.i.i.i13.i.i.i.i, align 4 - %sub.i.i.i.i.i14.i.i.i.i = add i64 %and.i.i.i.i9.i.i.i.i, -1 + %sub.i.i.i.i.i14.i.i.i.i = add i64 %and.i.i.i.i9.i.i.i.i, -2 %and.i.i.i.i.i15.i.i.i.i = and i64 %sub.i.i.i.i.i14.i.i.i.i, %and.i.i.i.i9.i.i.i.i %this.val.i.i.i.i.i.i.i.i = load ptr, ptr %this, align 8 %19 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i15.i.i.i.i, i1 true) @@ -17983,7 +17983,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i %add.i.i.i.i.i17.i.i.i.i = add i32 %idx, %cast.i.i.i.i.i.i16.i.i.i.i %arrayidx.i.i.i.i.i18.i.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i.i.i.i.i.i, i64 72 store i32 %add.i.i.i.i.i17.i.i.i.i, ptr %arrayidx.i.i.i.i.i18.i.i.i.i, align 4 - %sub.i.i.i.i.i.i19.i.i.i.i = add i64 %and.i.i.i.i.i15.i.i.i.i, -1 + %sub.i.i.i.i.i.i19.i.i.i.i = add i64 %and.i.i.i.i.i15.i.i.i.i, -2 %and.i.i.i.i.i.i20.i.i.i.i = and i64 %sub.i.i.i.i.i.i19.i.i.i.i, %and.i.i.i.i.i15.i.i.i.i %this.val3.i.i.i.i.i.i.i.i = load ptr, ptr %this, align 8 %20 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i20.i.i.i.i, i1 true) @@ -17995,7 +17995,7 @@ if.then.i.i.i.i: ; preds = %if.then.i.i.i br i1 %cmp.i.i.i.i.i, label %_ZN8simdjson8westmere12_GLOBAL__N_16stage111bit_indexer21write_indexes_steppedILi0ELi24ELi4EEEijRmi.exit, label %if.end8 _ZN8simdjson8westmere12_GLOBAL__N_16stage111bit_indexer21write_indexes_steppedILi0ELi24ELi4EEEijRmi.exit: ; preds = %if.then.i.i.i.i - %sub.i.i.i.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i20.i.i.i.i, -1 + %sub.i.i.i.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i20.i.i.i.i, -2 %and.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i.i, %and.i.i.i.i.i.i20.i.i.i.i %this.val.i.i4.i.i.i.i.i = load ptr, ptr %this, align 8 %21 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i.i.i.i.i.i, i1 true) @@ -18011,7 +18011,7 @@ _ZN8simdjson8westmere12_GLOBAL__N_16stage111bit_indexer21write_indexes_steppedIL %add.i.i.i.i12.i.i.i.i.i = add i32 %idx, %cast.i.i.i.i.i11.i.i.i.i.i %arrayidx.i.i.i.i13.i.i.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i10.i.i.i.i.i, i64 84 store i32 %add.i.i.i.i12.i.i.i.i.i, ptr %arrayidx.i.i.i.i13.i.i.i.i.i, align 4 - %sub.i.i.i.i.i14.i.i.i.i.i = add i64 %and.i.i.i.i9.i.i.i.i.i, -1 + %sub.i.i.i.i.i14.i.i.i.i.i = add i64 %and.i.i.i.i9.i.i.i.i.i, -2 %and.i.i.i.i.i15.i.i.i.i.i = and i64 %sub.i.i.i.i.i14.i.i.i.i.i, %and.i.i.i.i9.i.i.i.i.i %this.val.i.i.i.i.i.i.i.i.i = load ptr, ptr %this, align 8 %23 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i15.i.i.i.i.i, i1 true) @@ -18019,7 +18019,7 @@ _ZN8simdjson8westmere12_GLOBAL__N_16stage111bit_indexer21write_indexes_steppedIL %add.i.i.i.i.i17.i.i.i.i.i = add i32 %idx, %cast.i.i.i.i.i.i16.i.i.i.i.i %arrayidx.i.i.i.i.i18.i.i.i.i.i = getelementptr inbounds i8, ptr %this.val.i.i.i.i.i.i.i.i.i, i64 88 store i32 %add.i.i.i.i.i17.i.i.i.i.i, ptr %arrayidx.i.i.i.i.i18.i.i.i.i.i, align 4 - %sub.i.i.i.i.i.i19.i.i.i.i.i = add i64 %and.i.i.i.i.i15.i.i.i.i.i, -1 + %sub.i.i.i.i.i.i19.i.i.i.i.i = add i64 %and.i.i.i.i.i15.i.i.i.i.i, -2 %and.i.i.i.i.i.i20.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i19.i.i.i.i.i, %and.i.i.i.i.i15.i.i.i.i.i %this.val3.i.i.i.i.i.i.i.i.i = load ptr, ptr %this, align 8 %24 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i.i.i.i.i.i20.i.i.i.i.i, i1 true) @@ -18031,7 +18031,7 @@ _ZN8simdjson8westmere12_GLOBAL__N_16stage111bit_indexer21write_indexes_steppedIL br i1 %cmp733, label %for.body.preheader, label %if.end8 for.body.preheader: ; preds = %_ZN8simdjson8westmere12_GLOBAL__N_16stage111bit_indexer21write_indexes_steppedILi0ELi24ELi4EEEijRmi.exit - %sub.i.i.i.i.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i20.i.i.i.i.i, -1 + %sub.i.i.i.i.i.i.i.i.i.i.i.i = add i64 %and.i.i.i.i.i.i20.i.i.i.i.i, -2 %and.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i.i.i, %and.i.i.i.i.i.i20.i.i.i.i.i br label %for.body diff --git a/bench/soc-simulator/optimized/verilated.ll b/bench/soc-simulator/optimized/verilated.ll index 84917565c2e..dda3de7d8f1 100644 --- a/bench/soc-simulator/optimized/verilated.ll +++ b/bench/soc-simulator/optimized/verilated.ll @@ -19324,104 +19324,103 @@ define dso_local void @_Z18VL_CVT_PACK_STR_NWB5cxx11iPKj(ptr dead_on_unwind noal %7 = shl nsw i32 %1, 5 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %20 - %.0.in20 = phi i32 [ %8, %20 ], [ %7, %.lr.ph.preheader ] - %.01419 = phi ptr [ %.1, %20 ], [ %4, %.lr.ph.preheader ] - %.01518 = phi i64 [ %.116, %20 ], [ 0, %.lr.ph.preheader ] - %.0 = add nsw i32 %.0.in20, -1 - %8 = and i32 %.0, -8 - %9 = lshr i32 %.0, 5 - %10 = zext nneg i32 %9 to i64 - %11 = getelementptr inbounds i32, ptr %2, i64 %10 - %12 = load i32, ptr %11, align 4 - %13 = and i32 %.0, 24 - %14 = lshr i32 %12, %13 - %15 = and i32 %14, 255 - %.not = icmp eq i32 %15, 0 - br i1 %.not, label %20, label %16 +.lr.ph: ; preds = %.lr.ph.preheader, %19 + %.0.in20 = phi i32 [ %.0, %19 ], [ %7, %.lr.ph.preheader ] + %.01419 = phi ptr [ %.1, %19 ], [ %4, %.lr.ph.preheader ] + %.01518 = phi i64 [ %.116, %19 ], [ 0, %.lr.ph.preheader ] + %.0 = add nsw i32 %.0.in20, -8 + %8 = lshr i32 %.0, 5 + %9 = zext nneg i32 %8 to i64 + %10 = getelementptr inbounds i32, ptr %2, i64 %9 + %11 = load i32, ptr %10, align 4 + %12 = and i32 %.0, 24 + %13 = lshr i32 %11, %12 + %14 = and i32 %13, 255 + %.not = icmp eq i32 %14, 0 + br i1 %.not, label %19, label %15 -16: ; preds = %.lr.ph - %17 = trunc i32 %14 to i8 - %18 = getelementptr inbounds i8, ptr %.01419, i64 1 - store i8 %17, ptr %.01419, align 1 - %19 = add i64 %.01518, 1 - br label %20 +15: ; preds = %.lr.ph + %16 = trunc i32 %13 to i8 + %17 = getelementptr inbounds i8, ptr %.01419, i64 1 + store i8 %16, ptr %.01419, align 1 + %18 = add i64 %.01518, 1 + br label %19 -20: ; preds = %.lr.ph, %16 - %.116 = phi i64 [ %19, %16 ], [ %.01518, %.lr.ph ] - %.1 = phi ptr [ %18, %16 ], [ %.01419, %.lr.ph ] - %21 = icmp sgt i32 %8, 0 - br i1 %21, label %.lr.ph, label %._crit_edge, !llvm.loop !135 +19: ; preds = %.lr.ph, %15 + %.116 = phi i64 [ %18, %15 ], [ %.01518, %.lr.ph ] + %.1 = phi ptr [ %17, %15 ], [ %.01419, %.lr.ph ] + %20 = icmp ugt i32 %.0.in20, 8 + br i1 %20, label %.lr.ph, label %._crit_edge, !llvm.loop !135 -._crit_edge: ; preds = %20, %3 - %.015.lcssa = phi i64 [ 0, %3 ], [ %.116, %20 ] +._crit_edge: ; preds = %19, %3 + %.015.lcssa = phi i64 [ 0, %3 ], [ %.116, %19 ] call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #23 - %22 = getelementptr inbounds i8, ptr %0, i64 16 + %21 = getelementptr inbounds i8, ptr %0, i64 16 call void @_ZNSaIcEC2ERKS_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 1 dereferenceable(1) %5) #23 - store ptr %22, ptr %0, align 8 - %23 = icmp ugt i64 %.015.lcssa, 15 - br i1 %23, label %25, label %._crit_edge.i.i + store ptr %21, ptr %0, align 8 + %22 = icmp ugt i64 %.015.lcssa, 15 + br i1 %22, label %24, label %._crit_edge.i.i -.body: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i, %31, %27 - %24 = landingpad { ptr, i32 } +.body: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i, %30, %26 + %23 = landingpad { ptr, i32 } cleanup call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %0) #23 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #23 - resume { ptr, i32 } %24 + resume { ptr, i32 } %23 -25: ; preds = %._crit_edge - %26 = icmp slt i64 %.015.lcssa, 0 - br i1 %26, label %27, label %28 +24: ; preds = %._crit_edge + %25 = icmp slt i64 %.015.lcssa, 0 + br i1 %25, label %26, label %27 -27: ; preds = %25 +26: ; preds = %24 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.150) #53 to label %.noexc.i unwind label %.body -.noexc.i: ; preds = %27 +.noexc.i: ; preds = %26 unreachable -28: ; preds = %25 - %29 = add nuw i64 %.015.lcssa, 1 - %30 = icmp slt i64 %29, 0 - br i1 %30, label %31, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i +27: ; preds = %24 + %28 = add nuw i64 %.015.lcssa, 1 + %29 = icmp slt i64 %28, 0 + br i1 %29, label %30, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i -31: ; preds = %28 +30: ; preds = %27 invoke void @_ZSt17__throw_bad_allocv() #53 to label %.noexc9.i unwind label %.body -.noexc9.i: ; preds = %31 +.noexc9.i: ; preds = %30 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i: ; preds = %28 - %32 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %29) #55 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i: ; preds = %27 + %31 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %28) #55 to label %.noexc10.i unwind label %.body .noexc10.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i - store ptr %32, ptr %0, align 8 - store i64 %.015.lcssa, ptr %22, align 8 + store ptr %31, ptr %0, align 8 + store i64 %.015.lcssa, ptr %21, align 8 br label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.noexc10.i, %._crit_edge - %33 = phi ptr [ %32, %.noexc10.i ], [ %22, %._crit_edge ] - switch i64 %.015.lcssa, label %36 [ - i64 1, label %34 - i64 0, label %37 + %32 = phi ptr [ %31, %.noexc10.i ], [ %21, %._crit_edge ] + switch i64 %.015.lcssa, label %35 [ + i64 1, label %33 + i64 0, label %36 ] -34: ; preds = %._crit_edge.i.i - %35 = load i8, ptr %4, align 16 - store i8 %35, ptr %33, align 1 - br label %37 +33: ; preds = %._crit_edge.i.i + %34 = load i8, ptr %4, align 16 + store i8 %34, ptr %32, align 1 + br label %36 -36: ; preds = %._crit_edge.i.i - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %33, ptr nonnull align 16 %4, i64 %.015.lcssa, i1 false) - br label %37 +35: ; preds = %._crit_edge.i.i + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %32, ptr nonnull align 16 %4, i64 %.015.lcssa, i1 false) + br label %36 -37: ; preds = %36, %34, %._crit_edge.i.i - %38 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.015.lcssa, ptr %38, align 8 - %39 = getelementptr inbounds i8, ptr %33, i64 %.015.lcssa - store i8 0, ptr %39, align 1 +36: ; preds = %35, %33, %._crit_edge.i.i + %37 = getelementptr inbounds i8, ptr %0, i64 8 + store i64 %.015.lcssa, ptr %37, align 8 + %38 = getelementptr inbounds i8, ptr %32, i64 %.015.lcssa + store i8 0, ptr %38, align 1 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #23 ret void } diff --git a/bench/softposit-rs/optimized/8mae6k72v4zmmji.ll b/bench/softposit-rs/optimized/8mae6k72v4zmmji.ll index 7e4b1b7f2b6..14e23e8c68e 100644 --- a/bench/softposit-rs/optimized/8mae6k72v4zmmji.ll +++ b/bench/softposit-rs/optimized/8mae6k72v4zmmji.ll @@ -251,7 +251,7 @@ define hidden noundef i32 @"_ZN9softposit5p32e27convert41_$LT$impl$u20$softposit br i1 %33, label %_ZN9softposit5p32e27convert22convert_u32_to_p32bits17h615e043045e072d1E.exit, label %34 34: ; preds = %._crit_edge.i - %35 = add nuw i32 %31, 2147483647 + %35 = add nuw i32 %31, 2147483646 %36 = shl i32 16, %22 %37 = or i32 %35, %36 %38 = and i32 %37, %20 @@ -682,7 +682,7 @@ _ZN9softposit5p32e24math5sleef6kernel5ilogb17ha7a236f09951602dE.exit: ; preds = br i1 %77, label %_ZN9softposit5p32e27convert22convert_u32_to_p32bits17h615e043045e072d1E.exit.i, label %78 78: ; preds = %._crit_edge.i.i4 - %79 = add nuw i32 %75, 2147483647 + %79 = add nuw i32 %75, 2147483646 %80 = shl i32 16, %66 %81 = or i32 %79, %80 %82 = and i32 %81, %64 @@ -851,7 +851,7 @@ define hidden noundef i32 @_ZN9softposit5p32e24math5sleef6kernel5atan217h9b8a551 br i1 %67, label %_ZN9softposit5p32e27convert22convert_u32_to_p32bits17h615e043045e072d1E.exit.i, label %68 68: ; preds = %._crit_edge.i.i - %69 = add nuw i32 %65, 2147483647 + %69 = add nuw i32 %65, 2147483646 %70 = shl i32 16, %56 %71 = or i32 %69, %70 %72 = and i32 %71, %54 @@ -1538,7 +1538,7 @@ _ZN9softposit5p32e24math5sleef6kernel5ilogb17ha7a236f09951602dE.exit: ; preds = br i1 %76, label %_ZN9softposit5p32e27convert22convert_u32_to_p32bits17h615e043045e072d1E.exit.i, label %77 77: ; preds = %._crit_edge.i.i8 - %78 = add nuw i32 %74, 2147483647 + %78 = add nuw i32 %74, 2147483646 %79 = shl i32 16, %65 %80 = or i32 %78, %79 %81 = and i32 %80, %63 @@ -1992,7 +1992,7 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 br i1 %108, label %_ZN9softposit5p32e27convert22convert_u32_to_p32bits17h615e043045e072d1E.exit.i, label %109 109: ; preds = %._crit_edge.i.i - %110 = add nuw i32 %106, 2147483647 + %110 = add nuw i32 %106, 2147483646 %111 = shl i32 16, %97 %112 = or i32 %110, %111 %113 = and i32 %112, %95 diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index 4932d32f931..141e3fa6495 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -18702,10 +18702,10 @@ sqlite3PagerOpenWal.exit.thread28: ; preds = %187, %190, %183, %1 %235 = zext i8 %234 to i32 %236 = shl nuw nsw i32 %235, 16 %237 = or disjoint i32 %236, %232 - %238 = add nuw nsw i32 %237, 16777215 + %238 = add nuw nsw i32 %237, 16776960 %239 = and i32 %238, %237 %240 = icmp ne i32 %239, 0 - %241 = add nsw i32 %237, -65537 + %241 = add nsw i32 %237, -65792 %242 = icmp ult i32 %241, -65280 %or.cond3.i.i = or i1 %242, %240 br i1 %or.cond3.i.i, label %.loopexit.i, label %243 @@ -58752,7 +58752,7 @@ sqlite3PagerSetBusyHandler.exit: ; preds = %sqlite3PagerReadFil br i1 %or.cond235, label %538, label %535 535: ; preds = %524 - %536 = add nuw nsw i32 %532, 131071 + %536 = add nuw nsw i32 %532, 130816 %537 = and i32 %536, %532 %.not214 = icmp eq i32 %537, 0 br i1 %.not214, label %542, label %538 @@ -276365,7 +276365,7 @@ whereNthSubterm.exit231.thread: ; preds = %169, %whereNthSubte br i1 %.not36.i, label %215, label %whereCombineDisjuncts.exit 215: ; preds = %207 - %216 = add nuw nsw i32 %196, 63 + %216 = add nuw nsw i32 %196, 62 %217 = and i32 %216, %196 %.not37.i = icmp eq i32 %217, 0 %218 = and i32 %196, 24 diff --git a/bench/stb/optimized/stb_vorbis.c.ll b/bench/stb/optimized/stb_vorbis.c.ll index c542cc686be..a93d1662568 100644 --- a/bench/stb/optimized/stb_vorbis.c.ll +++ b/bench/stb/optimized/stb_vorbis.c.ll @@ -1203,10 +1203,8 @@ for.end: ; preds = %for.body, %ilog.exi ; Function Attrs: nofree nounwind memory(write, argmem: readwrite, inaccessiblemem: readwrite) uwtable define range(i32 0, 2) i32 @init_blocksize(ptr nocapture noundef %f, i32 noundef %b, i32 noundef %n) local_unnamed_addr #23 { entry: - %shr1 = and i32 %n, -4 %0 = shl i32 %n, 1 - %mul = and i32 %0, -4 - %add.i = add nsw i32 %mul, 7 + %add.i = add nsw i32 %0, 4 %and.i = and i32 %add.i, -8 %setup_memory_required.i = getelementptr inbounds i8, ptr %f, i64 8 %1 = load i32, ptr %setup_memory_required.i, align 8 @@ -1283,7 +1281,7 @@ setup_malloc.exit65: ; preds = %if.then.i51, %if.en %B = getelementptr inbounds i8, ptr %f, i64 1432 %arrayidx9 = getelementptr inbounds [2 x ptr], ptr %B, i64 0, i64 %idxprom store ptr %retval.0.i59, ptr %arrayidx9, align 8 - %add.i66 = add nsw i32 %shr1, 7 + %add.i66 = add nsw i32 %n, 4 %and.i67 = and i32 %add.i66, -8 %9 = load i32, ptr %setup_memory_required.i, align 8 %add1.i69 = add i32 %9, %and.i67 @@ -1482,8 +1480,7 @@ for.body.i113: ; preds = %for.body.i113, %for br i1 %exitcond.not.i124, label %compute_window.exit, label %for.body.i113, !llvm.loop !21 compute_window.exit: ; preds = %for.body.i113, %if.end50 - %mul55 = and i32 %shr.i, -2 - %add.i125 = add nsw i32 %mul55, 7 + %add.i125 = add nsw i32 %shr.i, 6 %and.i126 = and i32 %add.i125, -8 %26 = load i32, ptr %setup_memory_required.i, align 8 %add1.i128 = add i32 %26, %and.i126 @@ -5590,7 +5587,7 @@ entry: if.then.i: ; preds = %entry %mul = shl i32 %shr, 2 - %add.i = add nsw i32 %mul, 7 + %add.i = add nsw i32 %mul, 4 %and.i = and i32 %add.i, -8 %sub.i = sub nsw i32 %0, %and.i %setup_offset.i = getelementptr inbounds i8, ptr %f, i64 144 @@ -9786,7 +9783,7 @@ if.then643: ; preds = %if.end640 setup_temp_free.exit924.thread: ; preds = %if.then643 %69 = load i32, ptr %sorted_entries1042, align 8 %mul646 = shl i32 %69, 2 - %add.i919 = add nsw i32 %mul646, 7 + %add.i919 = add nsw i32 %mul646, 4 %and.i920 = and i32 %add.i919, -8 %70 = load i32, ptr %temp_offset.i, align 4 %add1.i922 = add nsw i32 %and.i920, %70 @@ -9805,7 +9802,7 @@ setup_temp_free.exit933.thread: ; preds = %setup_temp_free.exi %codewords6481407 = phi ptr [ %codewords6481405, %setup_temp_free.exit924.thread ], [ %codewords648, %setup_temp_free.exit924 ] %72 = load i32, ptr %sorted_entries1042, align 8 %mul651 = shl i32 %72, 2 - %add.i928 = add nsw i32 %mul651, 7 + %add.i928 = add nsw i32 %mul651, 4 %and.i929 = and i32 %add.i928, -8 %73 = load i32, ptr %temp_offset.i, align 4 %add1.i931 = add nsw i32 %and.i929, %73 @@ -9940,7 +9937,7 @@ if.then725: ; preds = %for.body719 if.then.i949: ; preds = %if.then725 %85 = load i32, ptr %lookup_values699, align 4 %mul728 = shl i32 %85, 1 - %add.i950 = add nsw i32 %mul728, 7 + %add.i950 = add nsw i32 %mul728, 6 %and.i951 = and i32 %add.i950, -8 %86 = load i32, ptr %temp_offset.i, align 4 %add1.i953 = add nsw i32 %and.i951, %86 @@ -10006,7 +10003,7 @@ if.then776: ; preds = %if.end772 if.then.i959: ; preds = %if.then776 %95 = load i32, ptr %lookup_values699, align 4 %mul779 = shl i32 %95, 1 - %add.i960 = add nsw i32 %mul779, 7 + %add.i960 = add nsw i32 %mul779, 6 %and.i961 = and i32 %add.i960, -8 %96 = load i32, ptr %temp_offset.i, align 4 %add1.i963 = add nsw i32 %and.i961, %96 @@ -10094,7 +10091,7 @@ if.then836: ; preds = %if.then831 if.then.i969: ; preds = %if.then836 %mul839 = shl i32 %110, 1 - %add.i970 = add nsw i32 %mul839, 7 + %add.i970 = add nsw i32 %mul839, 6 %and.i971 = and i32 %add.i970, -8 %112 = load i32, ptr %temp_offset.i, align 4 %add1.i973 = add nsw i32 %112, %and.i971 @@ -10145,7 +10142,7 @@ if.then864: ; preds = %if.else853 if.then.i979: ; preds = %if.then864 %115 = load i32, ptr %lookup_values699, align 4 %mul867 = shl i32 %115, 1 - %add.i980 = add nsw i32 %mul867, 7 + %add.i980 = add nsw i32 %mul867, 6 %and.i981 = and i32 %add.i980, -8 %116 = load i32, ptr %temp_offset.i, align 4 %add1.i983 = add nsw i32 %and.i981, %116 @@ -10191,7 +10188,7 @@ skip: ; preds = %for.body875, %for.c if.then.i989: ; preds = %skip %126 = load i32, ptr %lookup_values699, align 4 %mul898 = shl i32 %126, 1 - %add.i990 = add nsw i32 %mul898, 7 + %add.i990 = add nsw i32 %mul898, 6 %and.i991 = and i32 %add.i990, -8 %127 = load i32, ptr %temp_offset.i, align 4 %add1.i993 = add nsw i32 %and.i991, %127 diff --git a/bench/tree-sitter-rs/optimized/r2wcjjxpw45z4gt.ll b/bench/tree-sitter-rs/optimized/r2wcjjxpw45z4gt.ll index 9decf308bb9..6c834620545 100644 --- a/bench/tree-sitter-rs/optimized/r2wcjjxpw45z4gt.ll +++ b/bench/tree-sitter-rs/optimized/r2wcjjxpw45z4gt.ll @@ -5890,7 +5890,7 @@ define hidden void @"_ZN76_$LT$hashbrown..raw..RawTable$LT$T$C$A$GT$$u20$as$u20$ 13: ; preds = %9 %14 = extractvalue { i64, i1 } %11, 0 - %15 = add nuw i64 %14, 15 + %15 = add nuw i64 %14, 8 %16 = and i64 %15, -16 %17 = add i64 %6, 17 %18 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %16, i64 %17) @@ -24757,7 +24757,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 53: ; preds = %.thread.i.i %54 = extractvalue { i64, i1 } %51, 0 - %55 = add nuw i64 %54, 15 + %55 = add nuw i64 %54, 8 %56 = and i64 %55, -16 %57 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %58 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %56, i64 %57) @@ -25177,7 +25177,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 52: ; preds = %.thread.i.i %53 = extractvalue { i64, i1 } %50, 0 - %54 = add nuw i64 %53, 15 + %54 = add nuw i64 %53, 8 %55 = and i64 %54, -16 %56 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %57 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %55, i64 %56) @@ -25593,7 +25593,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 52: ; preds = %.thread.i.i %53 = extractvalue { i64, i1 } %50, 0 - %54 = add nuw i64 %53, 15 + %54 = add nuw i64 %53, 8 %55 = and i64 %54, -16 %56 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %57 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %55, i64 %56) @@ -26329,7 +26329,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 49: ; preds = %.thread.i.i %50 = extractvalue { i64, i1 } %47, 0 - %51 = add nuw i64 %50, 15 + %51 = add nuw i64 %50, 8 %52 = and i64 %51, -16 %53 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %54 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %52, i64 %53) @@ -26673,7 +26673,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 52: ; preds = %.thread.i.i %53 = extractvalue { i64, i1 } %50, 0 - %54 = add nuw i64 %53, 15 + %54 = add nuw i64 %53, 8 %55 = and i64 %54, -16 %56 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %57 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %55, i64 %56) @@ -27083,7 +27083,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 52: ; preds = %.thread.i.i %53 = extractvalue { i64, i1 } %50, 0 - %54 = add nuw i64 %53, 15 + %54 = add nuw i64 %53, 8 %55 = and i64 %54, -16 %56 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %57 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %55, i64 %56) @@ -27496,7 +27496,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 49: ; preds = %.thread.i.i %50 = extractvalue { i64, i1 } %47, 0 - %51 = add nuw i64 %50, 15 + %51 = add nuw i64 %50, 8 %52 = and i64 %51, -16 %53 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %54 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %52, i64 %53) @@ -28244,7 +28244,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 49: ; preds = %.thread.i.i %50 = extractvalue { i64, i1 } %47, 0 - %51 = add nuw i64 %50, 15 + %51 = add nuw i64 %50, 8 %52 = and i64 %51, -16 %53 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %54 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %52, i64 %53) @@ -28587,7 +28587,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 51: ; preds = %.thread.i.i %52 = extractvalue { i64, i1 } %49, 0 - %53 = add nuw i64 %52, 15 + %53 = add nuw i64 %52, 8 %54 = and i64 %53, -16 %55 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %56 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %54, i64 %55) @@ -29003,7 +29003,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 53: ; preds = %.thread.i.i %54 = extractvalue { i64, i1 } %51, 0 - %55 = add nuw i64 %54, 15 + %55 = add nuw i64 %54, 8 %56 = and i64 %55, -16 %57 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %58 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %56, i64 %57) @@ -29420,7 +29420,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 49: ; preds = %.thread.i.i %50 = extractvalue { i64, i1 } %47, 0 - %51 = add nuw i64 %50, 15 + %51 = add nuw i64 %50, 8 %52 = and i64 %51, -16 %53 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %54 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %52, i64 %53) @@ -30587,7 +30587,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 53: ; preds = %.thread.i.i %54 = extractvalue { i64, i1 } %51, 0 - %55 = add nuw i64 %54, 15 + %55 = add nuw i64 %54, 8 %56 = and i64 %55, -16 %57 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %58 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %56, i64 %57) @@ -31008,7 +31008,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 53: ; preds = %.thread.i.i %54 = extractvalue { i64, i1 } %51, 0 - %55 = add nuw i64 %54, 15 + %55 = add nuw i64 %54, 8 %56 = and i64 %55, -16 %57 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %58 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %56, i64 %57) @@ -31428,7 +31428,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 52: ; preds = %.thread.i.i %53 = extractvalue { i64, i1 } %50, 0 - %54 = add nuw i64 %53, 15 + %54 = add nuw i64 %53, 8 %55 = and i64 %54, -16 %56 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %57 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %55, i64 %56) @@ -32651,7 +32651,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 53: ; preds = %.thread.i.i %54 = extractvalue { i64, i1 } %51, 0 - %55 = add nuw i64 %54, 15 + %55 = add nuw i64 %54, 8 %56 = and i64 %55, -16 %57 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %58 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %56, i64 %57) @@ -33889,7 +33889,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 52: ; preds = %.thread.i.i %53 = extractvalue { i64, i1 } %50, 0 - %54 = add nuw i64 %53, 15 + %54 = add nuw i64 %53, 8 %55 = and i64 %54, -16 %56 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %57 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %55, i64 %56) @@ -34306,7 +34306,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 52: ; preds = %.thread.i.i %53 = extractvalue { i64, i1 } %50, 0 - %54 = add nuw i64 %53, 15 + %54 = add nuw i64 %53, 8 %55 = and i64 %54, -16 %56 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %57 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %55, i64 %56) @@ -34721,7 +34721,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 51: ; preds = %.thread.i.i %52 = extractvalue { i64, i1 } %49, 0 - %53 = add nuw i64 %52, 15 + %53 = add nuw i64 %52, 8 %54 = and i64 %53, -16 %55 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %56 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %54, i64 %55) @@ -35126,7 +35126,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 51: ; preds = %.thread.i.i %52 = extractvalue { i64, i1 } %49, 0 - %53 = add nuw i64 %52, 15 + %53 = add nuw i64 %52, 8 %54 = and i64 %53, -16 %55 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %56 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %54, i64 %55) @@ -36361,7 +36361,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 52: ; preds = %.thread.i.i %53 = extractvalue { i64, i1 } %50, 0 - %54 = add nuw i64 %53, 15 + %54 = add nuw i64 %53, 8 %55 = and i64 %54, -16 %56 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %57 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %55, i64 %56) @@ -37107,7 +37107,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 53: ; preds = %.thread.i.i %54 = extractvalue { i64, i1 } %51, 0 - %55 = add nuw i64 %54, 15 + %55 = add nuw i64 %54, 8 %56 = and i64 %55, -16 %57 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %58 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %56, i64 %57) @@ -37528,7 +37528,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r 53: ; preds = %.thread.i.i %54 = extractvalue { i64, i1 } %51, 0 - %55 = add nuw i64 %54, 15 + %55 = add nuw i64 %54, 8 %56 = and i64 %55, -16 %57 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %58 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %56, i64 %57) @@ -41000,7 +41000,7 @@ define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$16with_capacity_in1 26: ; preds = %.thread.i %27 = extractvalue { i64, i1 } %24, 0 - %28 = add nuw i64 %27, 15 + %28 = add nuw i64 %27, 8 %29 = and i64 %28, -16 %30 = add nuw nsw i64 %.sroa.6.051.i, 16 %31 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %29, i64 %30) @@ -41103,7 +41103,7 @@ define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$16with_capacity_in1 26: ; preds = %.thread.i %27 = extractvalue { i64, i1 } %24, 0 - %28 = add nuw i64 %27, 15 + %28 = add nuw i64 %27, 8 %29 = and i64 %28, -16 %30 = add nuw nsw i64 %.sroa.6.051.i, 16 %31 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %29, i64 %30) @@ -41269,7 +41269,7 @@ define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$17new_uninitialized 7: ; preds = %3 %8 = extractvalue { i64, i1 } %5, 0 - %9 = add nuw i64 %8, 15 + %9 = add nuw i64 %8, 8 %10 = and i64 %9, -16 %11 = add nuw nsw i64 %1, 16 %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) diff --git a/bench/velox/optimized/SubscriptUtil.cpp.ll b/bench/velox/optimized/SubscriptUtil.cpp.ll index 54a3eae215b..6fecd625765 100644 --- a/bench/velox/optimized/SubscriptUtil.cpp.ll +++ b/bench/velox/optimized/SubscriptUtil.cpp.ll @@ -25021,7 +25021,7 @@ if.then28.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end21.i.i.i.i.i. store ptr @_ZN5folly3f146detail15kEmptyTagVectorE, ptr %chunks_2.i.i.i.i.i.i.i.i, align 8 store i64 0, ptr %chunkMask_3.i.i.i.i.i.i.i.i, align 8 %14 = load ptr, ptr %second.i, align 8 - %sub.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i, 15 + %sub.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i, 8 %div1.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i.i.i.i, -16 %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %14, align 8 %vfn.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 128 @@ -25118,7 +25118,7 @@ if.then28.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end21.i.i.i.i.i. store ptr @_ZN5folly3f146detail15kEmptyTagVectorE, ptr %chunks_.i.i.i.i.i.i.i.i.i.i.i.i, align 8 store i64 0, ptr %chunkMask_.i.i.i.i.i.i.i.i.i.i.i.i.i, align 8 %10 = load ptr, ptr %second.i.i.i.i.i.i, align 8 - %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i.i.i, 15 + %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i.i.i, 8 %div1.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, -16 %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %10, align 8 %vfn.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 128 @@ -27830,7 +27830,7 @@ entry: %retval.0.i32 = select i1 %cmp.i28, i64 %add.i30, i64 %mul3.i31 store i64 %retval.0.i32, ptr %newAllocSize, align 8 %1 = load ptr, ptr %this, align 8 - %sub.i.i.i = add i64 %retval.0.i32, 15 + %sub.i.i.i = add i64 %retval.0.i32, 8 %div1.i.i.i = and i64 %sub.i.i.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %1, align 8 %vfn.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i, i64 104 @@ -28659,7 +28659,7 @@ if.then28.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end21.i.i.i.i.i. store ptr @_ZN5folly3f146detail15kEmptyTagVectorE, ptr %chunks_2.i.i.i.i.i.i.i.i, align 8 store i64 0, ptr %chunkMask_3.i.i.i.i.i.i.i.i, align 8 %14 = load ptr, ptr %second.i, align 8 - %sub.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i, 15 + %sub.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i, 8 %div1.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i.i.i.i, -16 %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %14, align 8 %vfn.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 128 @@ -28750,7 +28750,7 @@ if.then28.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end21.i.i.i.i.i. store ptr @_ZN5folly3f146detail15kEmptyTagVectorE, ptr %chunks_.i.i.i.i.i.i.i.i.i.i.i.i, align 8 store i64 0, ptr %chunkMask_.i.i.i.i.i.i.i.i.i.i.i.i.i, align 8 %10 = load ptr, ptr %second.i.i.i.i.i.i, align 8 - %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i.i.i, 15 + %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i.i.i, 8 %div1.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, -16 %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %10, align 8 %vfn.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 128 @@ -30299,7 +30299,7 @@ entry: %retval.0.i32 = select i1 %cmp.i28, i64 %add.i30, i64 %mul3.i31 store i64 %retval.0.i32, ptr %newAllocSize, align 8 %1 = load ptr, ptr %this, align 8 - %sub.i.i.i = add i64 %retval.0.i32, 15 + %sub.i.i.i = add i64 %retval.0.i32, 8 %div1.i.i.i = and i64 %sub.i.i.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %1, align 8 %vfn.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i, i64 104 @@ -30939,7 +30939,7 @@ if.then28.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end21.i.i.i.i.i. store ptr @_ZN5folly3f146detail15kEmptyTagVectorE, ptr %chunks_2.i.i.i.i.i.i.i.i, align 8 store i64 0, ptr %chunkMask_3.i.i.i.i.i.i.i.i, align 8 %14 = load ptr, ptr %second.i, align 8 - %sub.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i, 15 + %sub.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i, 8 %div1.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i.i.i.i, -16 %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %14, align 8 %vfn.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 128 @@ -31030,7 +31030,7 @@ if.then28.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end21.i.i.i.i.i. store ptr @_ZN5folly3f146detail15kEmptyTagVectorE, ptr %chunks_.i.i.i.i.i.i.i.i.i.i.i.i, align 8 store i64 0, ptr %chunkMask_.i.i.i.i.i.i.i.i.i.i.i.i.i, align 8 %10 = load ptr, ptr %second.i.i.i.i.i.i, align 8 - %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i.i.i, 15 + %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i.i.i, 8 %div1.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, -16 %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %10, align 8 %vfn.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 128 @@ -32579,7 +32579,7 @@ entry: %retval.0.i32 = select i1 %cmp.i28, i64 %add.i30, i64 %mul3.i31 store i64 %retval.0.i32, ptr %newAllocSize, align 8 %1 = load ptr, ptr %this, align 8 - %sub.i.i.i = add i64 %retval.0.i32, 15 + %sub.i.i.i = add i64 %retval.0.i32, 8 %div1.i.i.i = and i64 %sub.i.i.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %1, align 8 %vfn.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i, i64 104 @@ -33219,7 +33219,7 @@ if.then28.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end21.i.i.i.i.i. store ptr @_ZN5folly3f146detail15kEmptyTagVectorE, ptr %chunks_2.i.i.i.i.i.i.i.i, align 8 store i64 0, ptr %chunkMask_3.i.i.i.i.i.i.i.i, align 8 %14 = load ptr, ptr %second.i, align 8 - %sub.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i, 15 + %sub.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i, 8 %div1.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i.i.i.i, -16 %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %14, align 8 %vfn.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 128 @@ -33310,7 +33310,7 @@ if.then28.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end21.i.i.i.i.i. store ptr @_ZN5folly3f146detail15kEmptyTagVectorE, ptr %chunks_.i.i.i.i.i.i.i.i.i.i.i.i, align 8 store i64 0, ptr %chunkMask_.i.i.i.i.i.i.i.i.i.i.i.i.i, align 8 %10 = load ptr, ptr %second.i.i.i.i.i.i, align 8 - %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i.i.i, 15 + %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i.i.i, 8 %div1.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, -16 %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %10, align 8 %vfn.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 128 @@ -34859,7 +34859,7 @@ entry: %retval.0.i32 = select i1 %cmp.i28, i64 %add.i30, i64 %mul3.i31 store i64 %retval.0.i32, ptr %newAllocSize, align 8 %1 = load ptr, ptr %this, align 8 - %sub.i.i.i = add i64 %retval.0.i32, 15 + %sub.i.i.i = add i64 %retval.0.i32, 8 %div1.i.i.i = and i64 %sub.i.i.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %1, align 8 %vfn.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i, i64 104 @@ -38010,7 +38010,7 @@ if.then.i: ; preds = %if.end, %if.end21, %and.i.i.i = and i64 %retval.0.i.neg, -8 %mul.i.i = mul nuw nsw i64 %conv.i.i, 40 %mul.i.i14 = mul i64 %mul.i.i, %add.i.i - %add.i.i15 = add i64 %mul.i.i14, 15 + %add.i.i15 = add i64 %mul.i.i14, 8 %sub.i.i2.i = sub i64 %add.i.i15, %and.i.i.i %div1.i.i.i = and i64 %sub.i.i2.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %16, align 8 @@ -38793,7 +38793,7 @@ entry: %and.i.i.i = and i64 %sub.i.i.i, -8 %sub1.i.i = sub i64 0, %and.i.i.i %mul.i.i = mul i64 %mul.i27, 40 - %add.i.i = add i64 %mul.i.i, 15 + %add.i.i = add i64 %mul.i.i, 8 %sub.i.i6.i = sub i64 %add.i.i, %and.i.i.i %div1.i.i.i = and i64 %sub.i.i6.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %1, align 8 @@ -39226,7 +39226,7 @@ if.then2.i: ; preds = %if.end.i %and.i.i.i = and i64 %sub.i.i.i, -8 %mul.i.i = mul i64 %cond.i, 40 %reass.sub = sub i64 %mul.i.i, %and.i.i.i - %sub.i.i3.i = add i64 %reass.sub, 15 + %sub.i.i3.i = add i64 %reass.sub, 8 %div1.i.i.i = and i64 %sub.i.i3.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %38, align 8 %vfn.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i, i64 128 @@ -40251,7 +40251,7 @@ if.then28.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end21.i.i.i.i.i. store ptr @_ZN5folly3f146detail15kEmptyTagVectorE, ptr %chunks_2.i.i.i.i.i.i.i.i, align 8 store i64 0, ptr %chunkMask_3.i.i.i.i.i.i.i.i, align 8 %14 = load ptr, ptr %second.i, align 8 - %sub.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i, 15 + %sub.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i, 8 %div1.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i.i.i.i, -16 %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %14, align 8 %vfn.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 128 @@ -40342,7 +40342,7 @@ if.then28.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end21.i.i.i.i.i. store ptr @_ZN5folly3f146detail15kEmptyTagVectorE, ptr %chunks_.i.i.i.i.i.i.i.i.i.i.i.i, align 8 store i64 0, ptr %chunkMask_.i.i.i.i.i.i.i.i.i.i.i.i.i, align 8 %10 = load ptr, ptr %second.i.i.i.i.i.i, align 8 - %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i.i.i, 15 + %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = add nuw i64 %retval.0.i.i.i.i.i.i.i.i.i.i.i.i.i, 8 %div1.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, -16 %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %10, align 8 %vfn.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 128 @@ -41932,7 +41932,7 @@ entry: %retval.0.i32 = select i1 %cmp.i28, i64 %add.i30, i64 %mul3.i31 store i64 %retval.0.i32, ptr %newAllocSize, align 8 %1 = load ptr, ptr %this, align 8 - %sub.i.i.i = add i64 %retval.0.i32, 15 + %sub.i.i.i = add i64 %retval.0.i32, 8 %div1.i.i.i = and i64 %sub.i.i.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %1, align 8 %vfn.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i, i64 104 @@ -45006,7 +45006,7 @@ if.then.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end21.i.i.i.i.i. %and.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %retval.0.i.neg.i.i.i.i.i.i.i.i.i.i, -8 %mul.i.i.i.i.i.i.i.i.i.i.i.i = mul nuw nsw i64 %conv.i.i.i.i.i.i.i.i.i.i.i.i, 24 %mul.i.i14.i.i.i.i.i.i.i.i.i.i = mul i64 %mul.i.i.i.i.i.i.i.i.i.i.i.i, %add.i.i.i.i.i.i.i.i.i.i.i.i - %add.i.i15.i.i.i.i.i.i.i.i.i.i = add i64 %mul.i.i14.i.i.i.i.i.i.i.i.i.i, 15 + %add.i.i15.i.i.i.i.i.i.i.i.i.i = add i64 %mul.i.i14.i.i.i.i.i.i.i.i.i.i, 8 %sub.i.i2.i.i.i.i.i.i.i.i.i.i.i = sub i64 %add.i.i15.i.i.i.i.i.i.i.i.i.i, %and.i.i.i.i.i.i.i.i.i.i.i.i.i %div1.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i2.i.i.i.i.i.i.i.i.i.i.i, -16 %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %11, align 8 @@ -45111,7 +45111,7 @@ if.then.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end21.i.i.i.i.i. %and.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %retval.0.i.neg.i.i.i.i.i.i.i.i.i.i.i.i, -8 %mul.i.i.i.i.i.i.i.i.i.i.i.i.i.i = mul nuw nsw i64 %conv.i.i.i.i.i.i.i.i.i.i.i.i.i.i, 24 %mul.i.i14.i.i.i.i.i.i.i.i.i.i.i.i = mul i64 %mul.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %add.i.i.i.i.i.i.i.i.i.i.i.i.i.i - %add.i.i15.i.i.i.i.i.i.i.i.i.i.i.i = add i64 %mul.i.i14.i.i.i.i.i.i.i.i.i.i.i.i, 15 + %add.i.i15.i.i.i.i.i.i.i.i.i.i.i.i = add i64 %mul.i.i14.i.i.i.i.i.i.i.i.i.i.i.i, 8 %sub.i.i2.i.i.i.i.i.i.i.i.i.i.i.i.i = sub i64 %add.i.i15.i.i.i.i.i.i.i.i.i.i.i.i, %and.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i %div1.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i2.i.i.i.i.i.i.i.i.i.i.i.i.i, -16 %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %8, align 8 @@ -45165,7 +45165,7 @@ if.then.i: ; preds = %if.end, %if.end21, %and.i.i.i = and i64 %retval.0.i.neg, -8 %mul.i.i = mul nuw nsw i64 %conv.i.i, 40 %mul.i.i14 = mul i64 %mul.i.i, %add.i.i - %add.i.i15 = add i64 %mul.i.i14, 15 + %add.i.i15 = add i64 %mul.i.i14, 8 %sub.i.i2.i = sub i64 %add.i.i15, %and.i.i.i %div1.i.i.i = and i64 %sub.i.i2.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %16, align 8 @@ -46038,7 +46038,7 @@ entry: %and.i.i.i = and i64 %sub.i.i.i, -8 %sub1.i.i = sub i64 0, %and.i.i.i %mul.i.i = mul i64 %mul.i27, 40 - %add.i.i = add i64 %mul.i.i, 15 + %add.i.i = add i64 %mul.i.i, 8 %sub.i.i6.i = sub i64 %add.i.i, %and.i.i.i %div1.i.i.i = and i64 %sub.i.i6.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %1, align 8 @@ -46471,7 +46471,7 @@ if.then2.i: ; preds = %if.end.i %and.i.i.i = and i64 %sub.i.i.i, -8 %mul.i.i = mul i64 %cond.i, 40 %reass.sub = sub i64 %mul.i.i, %and.i.i.i - %sub.i.i3.i = add i64 %reass.sub, 15 + %sub.i.i3.i = add i64 %reass.sub, 8 %div1.i.i.i = and i64 %sub.i.i3.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %38, align 8 %vfn.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i, i64 128 @@ -46923,7 +46923,7 @@ entry: %and.i.i.i = and i64 %sub.i.i.i, -8 %sub1.i.i = sub i64 0, %and.i.i.i %mul.i.i = mul i64 %mul.i27, 24 - %add.i.i = add i64 %mul.i.i, 15 + %add.i.i = add i64 %mul.i.i, 8 %sub.i.i6.i = sub i64 %add.i.i, %and.i.i.i %div1.i.i.i = and i64 %sub.i.i6.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %1, align 8 @@ -47368,7 +47368,7 @@ if.then2.i.i: ; preds = %if.end.i.i %and.i.i.i.i = and i64 %sub.i.i.i.i, -8 %mul.i.i.i = mul i64 %cond.i.i, 24 %reass.sub = sub i64 %mul.i.i.i, %and.i.i.i.i - %sub.i.i3.i.i = add i64 %reass.sub, 15 + %sub.i.i3.i.i = add i64 %reass.sub, 8 %div1.i.i.i.i = and i64 %sub.i.i3.i.i, -16 %vtable.i.i.i.i.i.i = load ptr, ptr %81, align 8 %vfn.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i, i64 128 @@ -47539,7 +47539,7 @@ if.then2.i: ; preds = %if.end.i %and.i.i.i = and i64 %sub.i.i.i, -8 %mul.i.i = mul i64 %cond.i, 24 %reass.sub = sub i64 %mul.i.i, %and.i.i.i - %sub.i.i3.i = add i64 %reass.sub, 15 + %sub.i.i3.i = add i64 %reass.sub, 8 %div1.i.i.i = and i64 %sub.i.i3.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %38, align 8 %vfn.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i, i64 128 @@ -48376,7 +48376,7 @@ if.then.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end21.i.i.i.i.i. %and.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %retval.0.i.neg.i.i.i.i.i.i.i.i.i.i, -8 %mul.i.i.i.i.i.i.i.i.i.i.i.i = mul nuw nsw i64 %conv.i.i.i.i.i.i.i.i.i.i.i.i, 24 %mul.i.i14.i.i.i.i.i.i.i.i.i.i = mul i64 %mul.i.i.i.i.i.i.i.i.i.i.i.i, %add.i.i.i.i.i.i.i.i.i.i.i.i - %add.i.i15.i.i.i.i.i.i.i.i.i.i = add i64 %mul.i.i14.i.i.i.i.i.i.i.i.i.i, 15 + %add.i.i15.i.i.i.i.i.i.i.i.i.i = add i64 %mul.i.i14.i.i.i.i.i.i.i.i.i.i, 8 %sub.i.i2.i.i.i.i.i.i.i.i.i.i.i = sub i64 %add.i.i15.i.i.i.i.i.i.i.i.i.i, %and.i.i.i.i.i.i.i.i.i.i.i.i.i %div1.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i2.i.i.i.i.i.i.i.i.i.i.i, -16 %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %11, align 8 @@ -48481,7 +48481,7 @@ if.then.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end21.i.i.i.i.i. %and.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %retval.0.i.neg.i.i.i.i.i.i.i.i.i.i.i.i, -8 %mul.i.i.i.i.i.i.i.i.i.i.i.i.i.i = mul nuw nsw i64 %conv.i.i.i.i.i.i.i.i.i.i.i.i.i.i, 24 %mul.i.i14.i.i.i.i.i.i.i.i.i.i.i.i = mul i64 %mul.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %add.i.i.i.i.i.i.i.i.i.i.i.i.i.i - %add.i.i15.i.i.i.i.i.i.i.i.i.i.i.i = add i64 %mul.i.i14.i.i.i.i.i.i.i.i.i.i.i.i, 15 + %add.i.i15.i.i.i.i.i.i.i.i.i.i.i.i = add i64 %mul.i.i14.i.i.i.i.i.i.i.i.i.i.i.i, 8 %sub.i.i2.i.i.i.i.i.i.i.i.i.i.i.i.i = sub i64 %add.i.i15.i.i.i.i.i.i.i.i.i.i.i.i, %and.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i %div1.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = and i64 %sub.i.i2.i.i.i.i.i.i.i.i.i.i.i.i.i, -16 %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %8, align 8 @@ -48535,7 +48535,7 @@ if.then.i: ; preds = %if.end, %if.end21, %and.i.i.i = and i64 %retval.0.i.neg, -8 %mul.i.i = mul nuw nsw i64 %conv.i.i, 40 %mul.i.i14 = mul i64 %mul.i.i, %add.i.i - %add.i.i15 = add i64 %mul.i.i14, 15 + %add.i.i15 = add i64 %mul.i.i14, 8 %sub.i.i2.i = sub i64 %add.i.i15, %and.i.i.i %div1.i.i.i = and i64 %sub.i.i2.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %16, align 8 @@ -49348,7 +49348,7 @@ entry: %and.i.i.i = and i64 %sub.i.i.i, -8 %sub1.i.i = sub i64 0, %and.i.i.i %mul.i.i = mul i64 %mul.i27, 40 - %add.i.i = add i64 %mul.i.i, 15 + %add.i.i = add i64 %mul.i.i, 8 %sub.i.i6.i = sub i64 %add.i.i, %and.i.i.i %div1.i.i.i = and i64 %sub.i.i6.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %1, align 8 @@ -49781,7 +49781,7 @@ if.then2.i: ; preds = %if.end.i %and.i.i.i = and i64 %sub.i.i.i, -8 %mul.i.i = mul i64 %cond.i, 40 %reass.sub = sub i64 %mul.i.i, %and.i.i.i - %sub.i.i3.i = add i64 %reass.sub, 15 + %sub.i.i3.i = add i64 %reass.sub, 8 %div1.i.i.i = and i64 %sub.i.i3.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %38, align 8 %vfn.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i, i64 128 @@ -50107,7 +50107,7 @@ entry: %and.i.i.i = and i64 %sub.i.i.i, -8 %sub1.i.i = sub i64 0, %and.i.i.i %mul.i.i = mul i64 %mul.i27, 24 - %add.i.i = add i64 %mul.i.i, 15 + %add.i.i = add i64 %mul.i.i, 8 %sub.i.i6.i = sub i64 %add.i.i, %and.i.i.i %div1.i.i.i = and i64 %sub.i.i6.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %1, align 8 @@ -50515,7 +50515,7 @@ if.then2.i.i: ; preds = %if.end.i.i %and.i.i.i.i = and i64 %sub.i.i.i.i, -8 %mul.i.i.i = mul i64 %cond.i.i, 24 %reass.sub = sub i64 %mul.i.i.i, %and.i.i.i.i - %sub.i.i3.i.i = add i64 %reass.sub, 15 + %sub.i.i3.i.i = add i64 %reass.sub, 8 %div1.i.i.i.i = and i64 %sub.i.i3.i.i, -16 %vtable.i.i.i.i.i.i = load ptr, ptr %71, align 8 %vfn.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i, i64 128 @@ -50637,7 +50637,7 @@ if.then2.i: ; preds = %if.end.i %and.i.i.i = and i64 %sub.i.i.i, -8 %mul.i.i = mul i64 %cond.i, 24 %reass.sub = sub i64 %mul.i.i, %and.i.i.i - %sub.i.i3.i = add i64 %reass.sub, 15 + %sub.i.i3.i = add i64 %reass.sub, 8 %div1.i.i.i = and i64 %sub.i.i3.i, -16 %vtable.i.i.i.i.i = load ptr, ptr %38, align 8 %vfn.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i, i64 128 diff --git a/bench/wireshark/optimized/packet-gryphon.c.ll b/bench/wireshark/optimized/packet-gryphon.c.ll index 8aae796dafd..9bdd4f86be0 100644 --- a/bench/wireshark/optimized/packet-gryphon.c.ll +++ b/bench/wireshark/optimized/packet-gryphon.c.ll @@ -2982,19 +2982,18 @@ define internal fastcc range(i32 20, 132113) i32 @cmd_setfilt(ptr noundef %0, pt %21 = shl nuw nsw i32 %11, 1 %22 = tail call ptr @proto_tree_add_item(ptr noundef %1, i32 noundef %20, ptr noundef %0, i32 noundef 20, i32 noundef %21, i32 noundef 0) #4 %23 = add nuw nsw i32 %21, 20 - %24 = add nuw nsw i32 %21, 3 - %25 = and i32 %24, 2 - %.not37.not = icmp eq i32 %25, 0 - br i1 %.not37.not, label %26, label %.thread - -26: ; preds = %19 - %27 = load i32, ptr @hf_gryphon_setfilt_padding, align 4 - %28 = tail call ptr @proto_tree_add_item(ptr noundef %1, i32 noundef %27, ptr noundef %0, i32 noundef %23, i32 noundef 2, i32 noundef 0) #4 - %29 = add nuw nsw i32 %21, 22 + %24 = and i32 %21, 2 + %.not37 = icmp eq i32 %24, 0 + br i1 %.not37, label %.thread, label %25 + +25: ; preds = %19 + %26 = load i32, ptr @hf_gryphon_setfilt_padding, align 4 + %27 = tail call ptr @proto_tree_add_item(ptr noundef %1, i32 noundef %26, ptr noundef %0, i32 noundef %23, i32 noundef %24, i32 noundef 0) #4 + %28 = add nuw nsw i32 %23, %24 br label %.thread -.thread: ; preds = %2, %26, %19 - %.1 = phi i32 [ %29, %26 ], [ %23, %19 ], [ 20, %2 ] +.thread: ; preds = %2, %25, %19 + %.1 = phi i32 [ %28, %25 ], [ %23, %19 ], [ 20, %2 ] ret i32 %.1 } diff --git a/bench/wireshark/optimized/packet-pdcp-lte.c.ll b/bench/wireshark/optimized/packet-pdcp-lte.c.ll index 93eb0d53419..6735d5e92ad 100644 --- a/bench/wireshark/optimized/packet-pdcp-lte.c.ll +++ b/bench/wireshark/optimized/packet-pdcp-lte.c.ll @@ -3304,8 +3304,8 @@ define internal fastcc void @checkChannelSequenceInfo(ptr noundef %0, ptr nounde %33 = or disjoint i32 %32, %28 store i32 %33, ptr getelementptr inbounds (i8, ptr @get_report_hash_key.key, i64 4), align 4 %34 = tail call ptr @wmem_map_lookup(ptr noundef %14, ptr noundef nonnull @get_report_hash_key.key) #13 - %.not101 = icmp eq ptr %34, null - br i1 %.not101, label %174, label %.sink.split + %.not102 = icmp eq ptr %34, null + br i1 %.not102, label %174, label %.sink.split 35: ; preds = %7 %36 = getelementptr inbounds i8, ptr %2, i64 2 @@ -3375,9 +3375,9 @@ define internal fastcc void @checkChannelSequenceInfo(ptr noundef %0, ptr nounde 75: ; preds = %64, %73, %72, %71, %70 %.090 = phi i32 [ 262144, %73 ], [ 32768, %72 ], [ 4096, %71 ], [ 128, %70 ], [ 32, %64 ] - br i1 %.not98.not, label %.thread107, label %84 + br i1 %.not98.not, label %.thread108, label %84 -.thread107: ; preds = %75 +.thread108: ; preds = %75 store i32 1, ptr %66, align 4 %76 = getelementptr inbounds i8, ptr %.0, i64 8 %77 = load i32, ptr %76, align 4 @@ -3410,11 +3410,12 @@ define internal fastcc void @checkChannelSequenceInfo(ptr noundef %0, ptr nounde 94: ; preds = %84 %95 = sub i32 %.090, %3 %96 = add i32 %95, %88 - %97 = and i32 %96, %87 - %98 = icmp ugt i32 %97, 15 + %97 = add nsw i32 %.090, -16 + %98 = and i32 %96, %97 + %.not99 = icmp eq i32 %98, 0 %99 = getelementptr inbounds i8, ptr %66, i64 28 %100 = getelementptr inbounds i8, ptr %66, i64 16 - br i1 %98, label %101, label %112 + br i1 %.not99, label %112, label %101 101: ; preds = %94 store i32 4, ptr %99, align 4 @@ -3465,15 +3466,15 @@ define internal fastcc void @checkChannelSequenceInfo(ptr noundef %0, ptr nounde store i32 %125, ptr %93, align 4 br label %126 -126: ; preds = %.thread107, %124, %117 - %127 = phi i32 [ %82, %.thread107 ], [ %121, %124 ], [ %121, %117 ] - %128 = phi ptr [ %81, %.thread107 ], [ %120, %124 ], [ %120, %117 ] +126: ; preds = %.thread108, %124, %117 + %127 = phi i32 [ %82, %.thread108 ], [ %121, %124 ], [ %121, %117 ] + %128 = phi ptr [ %81, %.thread108 ], [ %120, %124 ], [ %120, %117 ] %129 = getelementptr inbounds i8, ptr %0, i64 20 %130 = load i32, ptr %129, align 4 store i32 %130, ptr %128, align 4 store i32 %3, ptr %.0, align 4 - %.not99 = icmp eq i32 %127, 0 - br i1 %.not99, label %152, label %131 + %.not100 = icmp eq i32 %127, 0 + br i1 %.not100, label %152, label %131 131: ; preds = %126 %132 = load ptr, ptr @pdcp_lte_sequence_analysis_report_hash, align 8 @@ -3496,8 +3497,8 @@ define internal fastcc void @checkChannelSequenceInfo(ptr noundef %0, ptr nounde %147 = or disjoint i32 %146, %142 store i32 %147, ptr getelementptr inbounds (i8, ptr @get_report_hash_key.key, i64 4), align 4 %148 = tail call ptr @wmem_map_lookup(ptr noundef %132, ptr noundef nonnull @get_report_hash_key.key) #13 - %.not100 = icmp eq ptr %148, null - br i1 %.not100, label %152, label %149 + %.not101 = icmp eq ptr %148, null + br i1 %.not101, label %152, label %149 149: ; preds = %131 %150 = load i32, ptr %129, align 4 diff --git a/bench/wolfssl/optimized/ecc.c.ll b/bench/wolfssl/optimized/ecc.c.ll index 5e5ad42f694..aac3ee485d8 100644 --- a/bench/wolfssl/optimized/ecc.c.ll +++ b/bench/wolfssl/optimized/ecc.c.ll @@ -3690,9 +3690,9 @@ lor.lhs.false: ; preds = %entry cond.false: ; preds = %lor.lhs.false %1 = load i32, ptr %0, align 8 %mul = shl nsw i32 %1, 3 - %2 = add i32 %mul, 63 + %2 = add i32 %mul, 56 %3 = icmp ult i32 %2, 64 - %4 = lshr i32 %2, 2 + %4 = lshr exact i32 %2, 2 %5 = and i32 %4, 1073741808 %narrow = add nuw nsw i32 %5, 16 %narrow74 = select i1 %3, i32 16, i32 %narrow @@ -3700,7 +3700,7 @@ cond.false: ; preds = %lor.lhs.false %vla6471 = alloca i8, i64 %cond26.ph.ph, align 16 %6 = load i32, ptr %0, align 8 %mul39 = shl nsw i32 %6, 3 - %7 = add i32 %mul39, 63 + %7 = add i32 %mul39, 56 %8 = icmp ult i32 %7, 64 br i1 %8, label %cond.end70, label %cond.false58 @@ -3713,7 +3713,7 @@ lor.lhs.false31: ; preds = %lor.lhs.false br label %cond.end70 cond.false58: ; preds = %cond.false - %9 = lshr i32 %7, 2 + %9 = lshr exact i32 %7, 2 %10 = and i32 %9, 1073741808 %narrow57 = add nuw nsw i32 %10, 16 %11 = zext nneg i32 %narrow57 to i64 @@ -3742,7 +3742,7 @@ if.end90: ; preds = %cond.end70 cond.false95: ; preds = %if.end90 %14 = load i32, ptr %13, align 8 %mul98 = shl nsw i32 %14, 3 - %15 = add i32 %mul98, 63 + %15 = add i32 %mul98, 56 %16 = icmp ult i32 %15, 64 br i1 %16, label %cond.false135.thread, label %cond.false154 @@ -3751,12 +3751,12 @@ cond.false135.thread: ; preds = %cond.false95 br label %cond.false175 cond.false154: ; preds = %cond.false95 - %17 = lshr i32 %15, 2 + %17 = lshr exact i32 %15, 2 %18 = and i32 %17, 1073741808 %narrow58 = add nuw nsw i32 %18, 16 %19 = zext nneg i32 %narrow58 to i64 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %vla66, i8 0, i64 %19, i1 false) - %20 = lshr i32 %15, 2 + %20 = lshr exact i32 %15, 2 %21 = and i32 %20, 1073741808 %narrow59 = add nuw nsw i32 %21, 16 %22 = zext nneg i32 %narrow59 to i64 @@ -3788,7 +3788,7 @@ if.end195: ; preds = %cond.end179 cond.false200: ; preds = %if.end195 %26 = load i32, ptr %25, align 8 %mul203 = shl nsw i32 %26, 3 - %27 = add i32 %mul203, 63 + %27 = add i32 %mul203, 56 %28 = lshr i32 %27, 5 %29 = or i32 %28, 1 br label %cond.end204 @@ -3837,12 +3837,12 @@ lor.lhs.false: ; preds = %entry cond.false: ; preds = %lor.lhs.false %1 = load i32, ptr %0, align 8 %mul = shl nsw i32 %1, 3 - %2 = add i32 %mul, 63 + %2 = add i32 %mul, 56 %3 = icmp ult i32 %2, 64 br i1 %3, label %cond.end25, label %cond.false13 cond.false13: ; preds = %cond.false - %4 = lshr i32 %2, 2 + %4 = lshr exact i32 %2, 2 %5 = and i32 %4, 1073741808 %narrow = add nuw nsw i32 %5, 16 %6 = zext nneg i32 %narrow to i64 @@ -3888,9 +3888,9 @@ lor.lhs.false53: ; preds = %if.end50 cond.end67: ; preds = %lor.lhs.false53 %13 = load i32, ptr %12, align 8 %mul66 = shl nsw i32 %13, 3 - %sub70 = add i32 %mul66, 63 + %sub70 = add i32 %mul66, 56 %cmp74 = icmp ult i32 %sub70, 64 - %14 = lshr i32 %sub70, 2 + %14 = lshr exact i32 %sub70, 2 %15 = and i32 %14, 1073741808 %narrow50 = add nuw nsw i32 %15, 16 %narrow59 = select i1 %cmp74, i32 16, i32 %narrow50 @@ -3977,7 +3977,7 @@ entry: cond.false: ; preds = %entry %1 = load i32, ptr %0, align 8 %mul = shl nsw i32 %1, 3 - %2 = add i32 %mul, 63 + %2 = add i32 %mul, 56 %3 = icmp ult i32 %2, 64 br i1 %3, label %cond.false30.thread, label %cond.false49 @@ -3986,12 +3986,12 @@ cond.false30.thread: ; preds = %cond.false br label %cond.false72 cond.false49: ; preds = %cond.false - %4 = lshr i32 %2, 2 + %4 = lshr exact i32 %2, 2 %5 = and i32 %4, 1073741808 %narrow = add nuw nsw i32 %5, 16 %6 = zext nneg i32 %narrow to i64 %vla70 = alloca i8, i64 %6, align 16 - %7 = lshr i32 %2, 2 + %7 = lshr exact i32 %2, 2 %8 = and i32 %7, 1073741808 %narrow68 = add nuw nsw i32 %8, 16 %9 = zext nneg i32 %narrow68 to i64 @@ -4971,9 +4971,9 @@ lor.lhs.false: ; preds = %entry cond.false: ; preds = %lor.lhs.false %1 = load i32, ptr %0, align 8 %mul = shl nsw i32 %1, 3 - %2 = add i32 %mul, 63 + %2 = add i32 %mul, 56 %3 = icmp ult i32 %2, 64 - %4 = lshr i32 %2, 2 + %4 = lshr exact i32 %2, 2 %5 = and i32 %4, 1073741808 %narrow = add nuw nsw i32 %5, 16 %narrow76 = select i1 %3, i32 16, i32 %narrow @@ -4981,7 +4981,7 @@ cond.false: ; preds = %lor.lhs.false %vla6673 = alloca i8, i64 %cond26.ph.ph, align 16 %6 = load i32, ptr %0, align 8 %mul39 = shl nsw i32 %6, 3 - %7 = add i32 %mul39, 63 + %7 = add i32 %mul39, 56 %8 = icmp ult i32 %7, 64 br i1 %8, label %cond.end70, label %cond.false58 @@ -4994,7 +4994,7 @@ lor.lhs.false31: ; preds = %lor.lhs.false br label %cond.end70 cond.false58: ; preds = %cond.false - %9 = lshr i32 %7, 2 + %9 = lshr exact i32 %7, 2 %10 = and i32 %9, 1073741808 %narrow60 = add nuw nsw i32 %10, 16 %11 = zext nneg i32 %narrow60 to i64 @@ -5021,7 +5021,7 @@ if.end: ; preds = %cond.end70 cond.false91: ; preds = %if.end %13 = load i32, ptr %12, align 8 %mul94 = shl nsw i32 %13, 3 - %14 = add i32 %mul94, 63 + %14 = add i32 %mul94, 56 %15 = icmp ult i32 %14, 64 br i1 %15, label %cond.false131.thread, label %cond.false150 @@ -5030,12 +5030,12 @@ cond.false131.thread: ; preds = %cond.false91 br label %cond.false171 cond.false150: ; preds = %cond.false91 - %16 = lshr i32 %14, 2 + %16 = lshr exact i32 %14, 2 %17 = and i32 %16, 1073741808 %narrow61 = add nuw nsw i32 %17, 16 %18 = zext nneg i32 %narrow61 to i64 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %vla68, i8 0, i64 %18, i1 false) - %19 = lshr i32 %14, 2 + %19 = lshr exact i32 %14, 2 %20 = and i32 %19, 1073741808 %narrow62 = add nuw nsw i32 %20, 16 %21 = zext nneg i32 %narrow62 to i64 @@ -5067,7 +5067,7 @@ if.end188: ; preds = %cond.end175 cond.false193: ; preds = %if.end188 %25 = load i32, ptr %24, align 8 %mul196 = shl nsw i32 %25, 3 - %26 = add i32 %mul196, 63 + %26 = add i32 %mul196, 56 %27 = lshr i32 %26, 5 %28 = or i32 %27, 1 br label %cond.end197 @@ -5249,7 +5249,7 @@ entry: cond.false: ; preds = %entry %1 = load i32, ptr %0, align 8 %mul = shl nsw i32 %1, 3 - %2 = add i32 %mul, 63 + %2 = add i32 %mul, 56 %3 = icmp ult i32 %2, 64 br i1 %3, label %cond.false71.thread, label %cond.false90 @@ -5259,17 +5259,17 @@ cond.false71.thread: ; preds = %cond.false br label %cond.false111 cond.false90: ; preds = %cond.false - %4 = lshr i32 %2, 2 + %4 = lshr exact i32 %2, 2 %5 = and i32 %4, 1073741808 %narrow = add nuw nsw i32 %5, 16 %6 = zext nneg i32 %narrow to i64 %vla125 = alloca i8, i64 %6, align 16 - %7 = lshr i32 %2, 2 + %7 = lshr exact i32 %2, 2 %8 = and i32 %7, 1073741808 %narrow87 = add nuw nsw i32 %8, 16 %9 = zext nneg i32 %narrow87 to i64 %vla66132 = alloca i8, i64 %9, align 16 - %10 = lshr i32 %2, 2 + %10 = lshr exact i32 %2, 2 %11 = and i32 %10, 1073741808 %narrow88 = add nuw nsw i32 %11, 16 %12 = zext nneg i32 %narrow88 to i64 @@ -5328,9 +5328,9 @@ if.end146: ; preds = %if.then126, %if.the cond.false151: ; preds = %if.end146 %17 = load i32, ptr %16, align 8 %mul154 = shl nsw i32 %17, 3 - %18 = add i32 %mul154, 63 + %18 = add i32 %mul154, 56 %19 = icmp ult i32 %18, 64 - %20 = lshr i32 %18, 2 + %20 = lshr exact i32 %18, 2 %21 = and i32 %20, 1073741808 %narrow90 = add nuw nsw i32 %21, 16 %narrow369 = select i1 %19, i32 16, i32 %narrow90 diff --git a/bench/yyjson/optimized/yyjson.c.ll b/bench/yyjson/optimized/yyjson.c.ll index 7aab64a788e..5ec8e007308 100644 --- a/bench/yyjson/optimized/yyjson.c.ll +++ b/bench/yyjson/optimized/yyjson.c.ll @@ -39786,14 +39786,13 @@ get_enc_table_with_flag.exit328: ; preds = %if.else %294 = load i64, ptr %uni.i, align 8 %295 = shl i64 %294, 1 %mul.i63 = and i64 %295, -32 - %add.i1055.i = add i64 %mul.i63, 71 - %and.i1058.i = and i64 %add.i1055.i, -32 - %call33.i = tail call ptr %alc.sroa.0.0(ptr noundef %alc.sroa.7.0, i64 noundef %and.i1058.i) #28 + %add.i1055.i = add i64 %mul.i63, 64 + %call33.i = tail call ptr %alc.sroa.0.0(ptr noundef %alc.sroa.7.0, i64 noundef %add.i1055.i) #28 %tobool34.i.not = icmp eq ptr %call33.i, null br i1 %tobool34.i.not, label %fail_alloc.i66, label %if.end.i69 if.end.i69: ; preds = %get_enc_table_with_flag.exit328 - %add.ptr.i70 = getelementptr inbounds i8, ptr %call33.i, i64 %and.i1058.i + %add.ptr.i70 = getelementptr inbounds i8, ptr %call33.i, i64 %add.i1055.i %296 = load i64, ptr %val, align 8 %and.i888.i4538 = and i64 %296, 7 %cmp37.i = icmp eq i64 %and.i888.i4538, 7 @@ -39821,7 +39820,7 @@ val_begin.i.outer: ; preds = %val_begin.i.outer.b %cur.i37.0.ph = phi ptr [ %incdec.ptr49.i, %if.end.i69 ], [ %cur.i37.0.ph.be, %val_begin.i.outer.backedge ] %end.i.0.ph = phi ptr [ %add.ptr.i70, %if.end.i69 ], [ %end.i.0.ph.be, %val_begin.i.outer.backedge ] %ctx.i38.0.ph = phi ptr [ %add.ptr.i70, %if.end.i69 ], [ %ctx.i38.0.ph.be, %val_begin.i.outer.backedge ] - %alc_len.i.0.ph = phi i64 [ %and.i1058.i, %if.end.i69 ], [ %alc_len.i.0.ph.be, %val_begin.i.outer.backedge ] + %alc_len.i.0.ph = phi i64 [ %add.i1055.i, %if.end.i69 ], [ %alc_len.i.0.ph.be, %val_begin.i.outer.backedge ] %level.i.0.ph = phi i64 [ 1, %if.end.i69 ], [ %level.i.0.ph.be, %val_begin.i.outer.backedge ] %conv178.i = zext nneg i8 %ctn_obj.i.0.ph to i32 %mul189.i = shl i64 %level.i.0.ph, 2 @@ -43493,7 +43492,7 @@ get_enc_table_with_flag.exit: ; preds = %if.else %598 = load i64, ptr %uni.i141, align 8 %div.i1424516 = lshr i64 %598, 4 %mul.i143 = mul i64 %div.i1424516, 18 - %add.i763.i = add i64 %mul.i143, 71 + %add.i763.i = add i64 %mul.i143, 70 %and.i766.i = and i64 %add.i763.i, -8 %call26.i = tail call ptr %alc.sroa.0.0(ptr noundef %alc.sroa.7.0, i64 noundef %and.i766.i) #28 %tobool.i145.not = icmp eq ptr %call26.i, null @@ -50383,14 +50382,13 @@ get_enc_table_with_flag.exit.i311: ; preds = %if.else %and.i1143.i = and i32 %flg, 128 %cmp.i1144.i.not = icmp eq i32 %and.i1143.i, 0 %mul.i = shl i64 %estimated_val_num, 5 - %add.i1073.i = add i64 %mul.i, 79 - %and.i1076.i = and i64 %add.i1073.i, -32 - %call33.i = tail call ptr %alc.sroa.0.0(ptr noundef %alc.sroa.7.0, i64 noundef %and.i1076.i) #28 + %add.i1073.i = add i64 %mul.i, 64 + %call33.i = tail call ptr %alc.sroa.0.0(ptr noundef %alc.sroa.7.0, i64 noundef %add.i1073.i) #28 %tobool34.i.not = icmp eq ptr %call33.i, null br i1 %tobool34.i.not, label %fail_alloc.i, label %if.end.i if.end.i: ; preds = %get_enc_table_with_flag.exit.i311 - %add.ptr.i = getelementptr inbounds i8, ptr %call33.i, i64 %and.i1076.i + %add.ptr.i = getelementptr inbounds i8, ptr %call33.i, i64 %add.i1073.i %294 = load i64, ptr %val, align 8 %and.i906.i4558 = and i64 %294, 7 %cmp37.i = icmp eq i64 %and.i906.i4558, 7 @@ -50427,7 +50425,7 @@ val_begin.i.outer: ; preds = %val_begin.i.outer.b %ctn_len.i.0.ph = phi i64 [ %shl.i, %cond.end.i ], [ %ctn_len.i.0.ph.be, %val_begin.i.outer.backedge ] %ctn.i.0.ph = phi ptr [ %val, %cond.end.i ], [ %ctn.i.0.ph.be, %val_begin.i.outer.backedge ] %level.i.0.ph = phi i64 [ 1, %cond.end.i ], [ %level.i.0.ph.be, %val_begin.i.outer.backedge ] - %alc_len.i.0.ph = phi i64 [ %and.i1076.i, %cond.end.i ], [ %alc_len.i.0.ph.be, %val_begin.i.outer.backedge ] + %alc_len.i.0.ph = phi i64 [ %add.i1073.i, %cond.end.i ], [ %alc_len.i.0.ph.be, %val_begin.i.outer.backedge ] %ctx.i.0.ph = phi ptr [ %add.ptr.i, %cond.end.i ], [ %ctx.i.0.ph.be, %val_begin.i.outer.backedge ] %end.i.0.ph = phi ptr [ %add.ptr.i, %cond.end.i ], [ %end.i.0.ph.be, %val_begin.i.outer.backedge ] %cur.i.0.ph = phi ptr [ %incdec.ptr49.i, %cond.end.i ], [ %cur.i.0.ph.be, %val_begin.i.outer.backedge ] @@ -54127,7 +54125,7 @@ get_enc_table_with_flag.exit.i1734: ; preds = %if.else %and.i843.i = and i32 %flg, 128 %cmp.i844.i.not = icmp eq i32 %and.i843.i, 0 %mul.i1748 = mul i64 %estimated_val_num, 18 - %add.i781.i = add i64 %mul.i1748, 79 + %add.i781.i = add i64 %mul.i1748, 78 %and.i784.i = and i64 %add.i781.i, -16 %call26.i = tail call ptr %alc.sroa.0.0(ptr noundef %alc.sroa.7.0, i64 noundef %and.i784.i) #28 %tobool.i.not = icmp eq ptr %call26.i, null diff --git a/bench/zed-rs/optimized/0iiiyswaig4ii0l3mvzlvi4mz.ll b/bench/zed-rs/optimized/0iiiyswaig4ii0l3mvzlvi4mz.ll index 61863bcf22d..6192e796b8f 100644 --- a/bench/zed-rs/optimized/0iiiyswaig4ii0l3mvzlvi4mz.ll +++ b/bench/zed-rs/optimized/0iiiyswaig4ii0l3mvzlvi4mz.ll @@ -2879,7 +2879,7 @@ define hidden void @"_ZN4core3ptr119drop_in_place$LT$alloc..sync..Weak$LT$$u5b$l %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !alias.scope !975, !noundef !5 %11 = shl nsw i64 %10, 2 - %12 = add i64 %11, 23 + %12 = add i64 %11, 20 %13 = and i64 %12, -8 %14 = icmp eq i64 %13, 0 br i1 %14, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h70afd268c2089133E.llvm.11559491167337075541.exit", label %15 @@ -4850,16 +4850,15 @@ define hidden void @"_ZN4core3ptr137drop_in_place$LT$alloc..sync..Weak$LT$$u5b$t %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !alias.scope !1565, !noundef !5 %11 = mul nsw i64 %10, 88 - %12 = add i64 %11, 23 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd1979e5d4f95130bE.llvm.11559491167337075541.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd1979e5d4f95130bE.llvm.11559491167337075541.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #20, !noalias !1565 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #20, !noalias !1565 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd1979e5d4f95130bE.llvm.11559491167337075541.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd1979e5d4f95130bE.llvm.11559491167337075541.exit": ; preds = %1, %4, %8, %15 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd1979e5d4f95130bE.llvm.11559491167337075541.exit": ; preds = %1, %4, %8, %14 ret void } @@ -27151,7 +27150,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !noundef !5 %11 = shl nsw i64 %10, 2 - %12 = add i64 %11, 23 + %12 = add i64 %11, 20 %13 = and i64 %12, -8 %14 = icmp eq i64 %13, 0 br i1 %14, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hf2ec5ac50b0dc46eE.llvm.11559491167337075541.exit", label %15 @@ -27589,16 +27588,15 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !noundef !5 %11 = mul nsw i64 %10, 88 - %12 = add i64 %11, 23 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hf2ec5ac50b0dc46eE.llvm.11559491167337075541.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hf2ec5ac50b0dc46eE.llvm.11559491167337075541.exit", label %14 -15: ; preds = %8 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #20 +14: ; preds = %8 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #20 br label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hf2ec5ac50b0dc46eE.llvm.11559491167337075541.exit" -"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hf2ec5ac50b0dc46eE.llvm.11559491167337075541.exit": ; preds = %15, %8, %1, %4 +"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hf2ec5ac50b0dc46eE.llvm.11559491167337075541.exit": ; preds = %14, %8, %1, %4 ret void } diff --git a/bench/zed-rs/optimized/1b5ll0cnnio0vvxmolgooij5i.ll b/bench/zed-rs/optimized/1b5ll0cnnio0vvxmolgooij5i.ll index fbe4dd1424b..a2fa62cee07 100644 --- a/bench/zed-rs/optimized/1b5ll0cnnio0vvxmolgooij5i.ll +++ b/bench/zed-rs/optimized/1b5ll0cnnio0vvxmolgooij5i.ll @@ -25155,7 +25155,7 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h47e897b78ca4a9 10: ; preds = %6 fence acquire %11 = shl nsw i64 %4, 2 - %12 = add i64 %11, 23 + %12 = add i64 %11, 20 %13 = and i64 %12, -8 %14 = icmp eq i64 %13, 0 br i1 %14, label %"_ZN4core3ptr119drop_in_place$LT$alloc..sync..Weak$LT$$u5b$language..highlight_map..HighlightId$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17h5aa642d24ee13cbbE.exit", label %15 @@ -30005,16 +30005,15 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17he7b6a9e8191b0d 19: ; preds = %15 fence acquire %20 = mul nsw i64 %4, 24 - %21 = add i64 %20, 23 - %22 = and i64 %21, -8 - %23 = icmp eq i64 %22, 0 - br i1 %23, label %"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$$u5b$alloc..string..String$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17h0a5ca327a466fc2eE.exit", label %24 + %21 = add i64 %20, 16 + %22 = icmp eq i64 %21, 0 + br i1 %22, label %"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$$u5b$alloc..string..String$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17h0a5ca327a466fc2eE.exit", label %23 -24: ; preds = %19 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %22, i64 noundef 8) #66, !noalias !7782 +23: ; preds = %19 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %21, i64 noundef 8) #66, !noalias !7782 br label %"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$$u5b$alloc..string..String$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17h0a5ca327a466fc2eE.exit" -"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$$u5b$alloc..string..String$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17h0a5ca327a466fc2eE.exit": ; preds = %"_ZN4core3ptr52drop_in_place$LT$$u5b$alloc..string..String$u5d$$GT$17hbc6846e4b2d90870E.exit", %15, %19, %24 +"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$$u5b$alloc..string..String$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17h0a5ca327a466fc2eE.exit": ; preds = %"_ZN4core3ptr52drop_in_place$LT$$u5b$alloc..string..String$u5d$$GT$17hbc6846e4b2d90870E.exit", %15, %19, %23 ret void } @@ -30208,16 +30207,15 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17hf5157fa3595852 10: ; preds = %6 fence acquire %11 = mul nsw i64 %4, 88 - %12 = add i64 %11, 23 - %13 = and i64 %12, -8 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN4core3ptr137drop_in_place$LT$alloc..sync..Weak$LT$$u5b$text..selection..Selection$LT$text..anchor..Anchor$GT$$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17hae084aeb106fcc60E.exit", label %15 + %12 = add i64 %11, 16 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN4core3ptr137drop_in_place$LT$alloc..sync..Weak$LT$$u5b$text..selection..Selection$LT$text..anchor..Anchor$GT$$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17hae084aeb106fcc60E.exit", label %14 -15: ; preds = %10 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %13, i64 noundef 8) #66, !noalias !7891 +14: ; preds = %10 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %12, i64 noundef 8) #66, !noalias !7891 br label %"_ZN4core3ptr137drop_in_place$LT$alloc..sync..Weak$LT$$u5b$text..selection..Selection$LT$text..anchor..Anchor$GT$$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17hae084aeb106fcc60E.exit" -"_ZN4core3ptr137drop_in_place$LT$alloc..sync..Weak$LT$$u5b$text..selection..Selection$LT$text..anchor..Anchor$GT$$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17hae084aeb106fcc60E.exit": ; preds = %1, %6, %10, %15 +"_ZN4core3ptr137drop_in_place$LT$alloc..sync..Weak$LT$$u5b$text..selection..Selection$LT$text..anchor..Anchor$GT$$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17hae084aeb106fcc60E.exit": ; preds = %1, %6, %10, %14 ret void } diff --git a/bench/zed-rs/optimized/20bojkdmib70qaf6g4ckgq5lq.ll b/bench/zed-rs/optimized/20bojkdmib70qaf6g4ckgq5lq.ll index 25f17ed1645..8aa9e9f3e90 100644 --- a/bench/zed-rs/optimized/20bojkdmib70qaf6g4ckgq5lq.ll +++ b/bench/zed-rs/optimized/20bojkdmib70qaf6g4ckgq5lq.ll @@ -5847,16 +5847,15 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17hfbf3dd526402e3 36: ; preds = %32 fence acquire %37 = mul nsw i64 %5, 24 - %38 = add i64 %37, 23 - %39 = and i64 %38, -8 - %40 = icmp eq i64 %39, 0 - br i1 %40, label %"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$$u5b$alloc..string..String$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17h8e3847a2fd691ad6E.exit", label %41 + %38 = add i64 %37, 16 + %39 = icmp eq i64 %38, 0 + br i1 %39, label %"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$$u5b$alloc..string..String$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17h8e3847a2fd691ad6E.exit", label %40 -41: ; preds = %36 - tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %39, i64 noundef 8) #33, !noalias !1356 +40: ; preds = %36 + tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %38, i64 noundef 8) #33, !noalias !1356 br label %"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$$u5b$alloc..string..String$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17h8e3847a2fd691ad6E.exit" -"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$$u5b$alloc..string..String$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17h8e3847a2fd691ad6E.exit": ; preds = %"_ZN4core3ptr52drop_in_place$LT$$u5b$alloc..string..String$u5d$$GT$17h45e8ba53b77cfe01E.exit", %32, %36, %41 +"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$$u5b$alloc..string..String$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17h8e3847a2fd691ad6E.exit": ; preds = %"_ZN4core3ptr52drop_in_place$LT$$u5b$alloc..string..String$u5d$$GT$17h45e8ba53b77cfe01E.exit", %32, %36, %40 ret void } @@ -5900,7 +5899,7 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17hfc851f035cfe0b 10: ; preds = %6 fence acquire %11 = shl nsw i64 %4, 2 - %12 = add i64 %11, 23 + %12 = add i64 %11, 20 %13 = and i64 %12, -8 %14 = icmp eq i64 %13, 0 br i1 %14, label %"_ZN4core3ptr119drop_in_place$LT$alloc..sync..Weak$LT$$u5b$language..highlight_map..HighlightId$u5d$$C$$RF$alloc..alloc..Global$GT$$GT$17h631ec887ae6add4dE.exit", label %15 diff --git a/bench/zstd/optimized/zstd_compress.c.ll b/bench/zstd/optimized/zstd_compress.c.ll index 425513ef11d..cde958dc711 100644 --- a/bench/zstd/optimized/zstd_compress.c.ll +++ b/bench/zstd/optimized/zstd_compress.c.ll @@ -2948,7 +2948,7 @@ cond.end.i: ; preds = %cond.true.i, %ZSTD_ %conv.i = select i1 %8, i64 3, i64 4 %div.i = udiv i64 %cond25, %conv.i %mul = shl i64 %div.i, 3 - %add.i.i = add i64 %mul, 63 + %add.i.i = add i64 %mul, 56 %and.i.i = and i64 %add.i.i, -64 %hashLog.i = getelementptr inbounds i8, ptr %cParams, i64 8 %9 = load i32, ptr %hashLog.i, align 4 @@ -2977,15 +2977,15 @@ cond.end.i: ; preds = %cond.true.i, %ZSTD_ %14 = load i32, ptr %ldmParams, align 4 %cmp41 = icmp eq i32 %14, 1 %mul43 = mul i64 %call40, 12 - %add.i.i22 = add i64 %mul43, 63 + %add.i.i22 = add i64 %mul43, 60 %and.i.i23 = and i64 %add.i.i22, -64 %cond47 = select i1 %cmp41, i64 %and.i.i23, i64 0 %tobool.not = icmp eq i32 %isStatic, 0 %div.i24 = udiv i64 %cond25, 3 %tobool57.not = icmp eq i32 %useSequenceProducer, 0 %add.i25 = shl i64 %div.i24, 4 - %add.i.i26 = add i64 %add.i25, 79 - %and.i.i27 = and i64 %add.i.i26, -64 + %15 = and i64 %add.i25, -64 + %and.i.i27 = add i64 %15, 64 %cond63 = select i1 %tobool57.not, i64 0, i64 %and.i.i27 %mul32 = mul nuw nsw i64 %div.i, 3 %add65 = select i1 %tobool.not, i64 20184, i64 25440 @@ -12390,7 +12390,7 @@ do.end200: ; preds = %if.then196, %ZSTD_c do.end224: ; preds = %do.end200 %mul = shl i64 %div.i, 3 - %add.i.i = add i64 %mul, 63 + %add.i.i = add i64 %mul, 56 %and.i.i205 = and i64 %add.i.i, -64 %31 = load i32, ptr %phase.i200616, align 8 %cmp.i.i.i = icmp ult i32 %31, 2 @@ -12476,7 +12476,7 @@ if.then230: ; preds = %ZSTD_cwksp_reserve_ %42 = load i32, ptr %hashLog, align 4 %sh_prom232 = zext nneg i32 %42 to i64 %mul234 = shl i64 8, %sh_prom232 - %add.i.i211 = add nuw i64 %mul234, 63 + %add.i.i211 = add nuw i64 %mul234, 56 %and.i.i212 = and i64 %add.i.i211, -64 %cmp.i.i.i214 = icmp ult i32 %40, 2 br i1 %cmp.i.i.i214, label %if.then5.i.i.i234, label %ZSTD_cwksp_internal_advance_phase.exit.i.i215 @@ -12549,7 +12549,7 @@ ZSTD_cwksp_reserve_aligned.exit248: ; preds = %if.then5.i.i.i234, store ptr %retval.0.i.i227, ptr %hashTable, align 8 tail call void @llvm.memset.p0.i64(ptr align 4 %retval.0.i.i227, i8 0, i64 %mul234, i1 false) %mul239 = mul i64 %call52, 12 - %add.i.i249 = add i64 %mul239, 63 + %add.i.i249 = add i64 %mul239, 60 %and.i.i250 = and i64 %add.i.i249, -64 %50 = load i32, ptr %phase.i200616, align 8 %cmp.i.i.i252 = icmp ult i32 %50, 2 @@ -12655,7 +12655,7 @@ if.then247: ; preds = %if.end244 %extSeqBufCapacity = getelementptr inbounds i8, ptr %zc, i64 5248 store i64 %add.i290, ptr %extSeqBufCapacity, align 8 %mul249 = shl i64 %add.i290, 4 - %add.i.i291 = add i64 %mul249, 63 + %add.i.i291 = add i64 %mul249, 48 %and.i.i292 = and i64 %add.i.i291, -64 %cmp.i.i.i294 = icmp ult i32 %61, 2 br i1 %cmp.i.i.i294, label %if.then5.i.i.i314, label %ZSTD_cwksp_internal_advance_phase.exit.i.i295 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..d4c5d2e1111 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/111233 # Please rebase manually # git fetch origin