diff --git a/bench/abc/optimized/extraUtilMisc.ll b/bench/abc/optimized/extraUtilMisc.ll index 866dbe0fd9a..bace00c7c3b 100644 --- a/bench/abc/optimized/extraUtilMisc.ll +++ b/bench/abc/optimized/extraUtilMisc.ll @@ -648,19 +648,22 @@ define i32 @Extra_TruthPolarize(i32 noundef %0, i32 noundef %1, i32 noundef %2) ; Function Attrs: nofree norecurse nosync nounwind memory(none) uwtable define i32 @Extra_TruthCanonN(i32 noundef %0, i32 noundef %1) local_unnamed_addr #3 { + %3 = shl nuw i32 1, %1 %.not = icmp eq i32 %1, 31 br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %2 - %3 = shl nuw i32 1, %1 %4 = icmp sgt i32 %1, 0 %wide.trip.count.i = zext nneg i32 %1 to i64 - %smax16 = tail call i32 @llvm.smax.i32(i32 %3, i32 1) - br i1 %4, label %.lr.ph.preheader.i.us, label %Extra_TruthPolarize.exit + br i1 %4, label %.lr.ph.preheader.i.us, label %._crit_edge -.lr.ph.preheader.i.us: ; preds = %.lr.ph, %Extra_TruthPolarize.exit.loopexit.us - %.014.us = phi i32 [ %18, %Extra_TruthPolarize.exit.loopexit.us ], [ 0, %.lr.ph ] - %.01113.us = phi i32 [ %spec.select.us, %Extra_TruthPolarize.exit.loopexit.us ], [ -1, %.lr.ph ] +.lr.ph.preheader.i.us: ; preds = %.lr.ph + %smax = tail call i32 @llvm.smax.i32(i32 %3, i32 1) + br label %.lr.ph.preheader.i.us + +.lr.ph.preheader.i.us: ; preds = %.lr.ph.preheader.i.us.preheader, %Extra_TruthPolarize.exit.loopexit.us + %.014.us = phi i32 [ %18, %Extra_TruthPolarize.exit.loopexit.us ], [ 0, %.lr.ph.preheader.i.us.preheader ] + %.01113.us = phi i32 [ %spec.select.us, %Extra_TruthPolarize.exit.loopexit.us ], [ -1, %.lr.ph.preheader.i.us.preheader ] br label %.lr.ph.i.us .lr.ph.i.us: ; preds = %17, %.lr.ph.preheader.i.us @@ -692,19 +695,11 @@ define i32 @Extra_TruthCanonN(i32 noundef %0, i32 noundef %1) local_unnamed_addr Extra_TruthPolarize.exit.loopexit.us: ; preds = %17 %spec.select.us = tail call i32 @llvm.umin.i32(i32 %.01113.us, i32 %.1.i.us) %18 = add nuw nsw i32 %.014.us, 1 - %exitcond17.not = icmp eq i32 %18, %smax16 + %exitcond17.not = icmp eq i32 %18, %smax br i1 %exitcond17.not, label %._crit_edge, label %.lr.ph.preheader.i.us, !llvm.loop !29 -Extra_TruthPolarize.exit: ; preds = %.lr.ph, %Extra_TruthPolarize.exit - %.014 = phi i32 [ %19, %Extra_TruthPolarize.exit ], [ 0, %.lr.ph ] - %.01113 = phi i32 [ %spec.select, %Extra_TruthPolarize.exit ], [ -1, %.lr.ph ] - %spec.select = tail call i32 @llvm.umin.i32(i32 %.01113, i32 %0) - %19 = add nuw nsw i32 %.014, 1 - %exitcond.not = icmp eq i32 %19, %smax16 - br i1 %exitcond.not, label %._crit_edge, label %Extra_TruthPolarize.exit, !llvm.loop !29 - -._crit_edge: ; preds = %Extra_TruthPolarize.exit, %Extra_TruthPolarize.exit.loopexit.us, %2 - %.011.lcssa = phi i32 [ -1, %2 ], [ %spec.select.us, %Extra_TruthPolarize.exit.loopexit.us ], [ %spec.select, %Extra_TruthPolarize.exit ] +Extra_TruthPolarize.exit: ; preds = %Extra_TruthPolarize.exit.loopexit.us, %.lr.ph, %2 + %.014 = phi i32 [ -1, %2 ], [ %0, %.lr.ph ], [ %spec.select.us, %Extra_TruthPolarize.exit.loopexit.us ] ret i32 %.011.lcssa } diff --git a/bench/minetest/optimized/test_map.ll b/bench/minetest/optimized/test_map.ll index cc2d8d4c091..59c4d1cbce9 100644 --- a/bench/minetest/optimized/test_map.ll +++ b/bench/minetest/optimized/test_map.ll @@ -816,12 +816,12 @@ for.cond9.preheader.lr.ph.i: ; preds = %invoke.cont41 for.cond16.preheader.i.preheader: ; preds = %for.cond9.for.inc239_crit_edge.split.i, %for.cond9.preheader.lr.ph.i %indvars.iv1350 = phi i32 [ -1, %for.cond9.preheader.lr.ph.i ], [ %indvars.iv.next1351, %for.cond9.for.inc239_crit_edge.split.i ] %n_visited.0 = phi i32 [ 0, %for.cond9.preheader.lr.ph.i ], [ %inc.i.i, %for.cond9.for.inc239_crit_edge.split.i ] - %minp_visited.sroa.11.0 = phi i16 [ 0, %for.cond9.preheader.lr.ph.i ], [ %67, %for.cond9.for.inc239_crit_edge.split.i ] - %minp_visited.sroa.7.0 = phi i16 [ 0, %for.cond9.preheader.lr.ph.i ], [ %66, %for.cond9.for.inc239_crit_edge.split.i ] + %minp_visited.sroa.11.0 = phi i16 [ 0, %for.cond9.preheader.lr.ph.i ], [ %110, %for.cond9.for.inc239_crit_edge.split.i ] + %minp_visited.sroa.7.0 = phi i16 [ 0, %for.cond9.preheader.lr.ph.i ], [ %108, %for.cond9.for.inc239_crit_edge.split.i ] %minp_visited.sroa.0.0 = phi i16 [ 0, %for.cond9.preheader.lr.ph.i ], [ %65, %for.cond9.for.inc239_crit_edge.split.i ] - %maxp_visited.sroa.11.0 = phi i16 [ 0, %for.cond9.preheader.lr.ph.i ], [ %70, %for.cond9.for.inc239_crit_edge.split.i ] - %maxp_visited.sroa.7.0 = phi i16 [ 0, %for.cond9.preheader.lr.ph.i ], [ %69, %for.cond9.for.inc239_crit_edge.split.i ] - %maxp_visited.sroa.0.0 = phi i16 [ 0, %for.cond9.preheader.lr.ph.i ], [ %68, %for.cond9.for.inc239_crit_edge.split.i ] + %maxp_visited.sroa.11.0 = phi i16 [ 0, %for.cond9.preheader.lr.ph.i ], [ %109, %for.cond9.for.inc239_crit_edge.split.i ] + %maxp_visited.sroa.7.0 = phi i16 [ 0, %for.cond9.preheader.lr.ph.i ], [ %107, %for.cond9.for.inc239_crit_edge.split.i ] + %maxp_visited.sroa.0.0 = phi i16 [ 0, %for.cond9.preheader.lr.ph.i ], [ %66, %for.cond9.for.inc239_crit_edge.split.i ] %.mask = and i32 %indvars.iv1350, 65535 %bp.sroa.7.0.insert.ext.i = zext nneg i32 %.mask to i48 %bp.sroa.7.0.insert.shift.i = shl nuw i48 %bp.sroa.7.0.insert.ext.i, 32 @@ -837,12 +837,12 @@ for.cond16.preheader.i.preheader: ; preds = %for.cond9.for.inc23 for.body22.i.preheader: ; preds = %for.cond16.preheader.i.preheader, %for.cond16.for.inc234_crit_edge.split.i %indvars.iv1337 = phi i32 [ -1, %for.cond16.preheader.i.preheader ], [ %indvars.iv.next1338, %for.cond16.for.inc234_crit_edge.split.i ] %n_visited.1 = phi i32 [ %n_visited.0, %for.cond16.preheader.i.preheader ], [ %inc.i.i, %for.cond16.for.inc234_crit_edge.split.i ] - %minp_visited.sroa.11.1 = phi i16 [ %minp_visited.sroa.11.0, %for.cond16.preheader.i.preheader ], [ %67, %for.cond16.for.inc234_crit_edge.split.i ] - %minp_visited.sroa.7.1 = phi i16 [ %minp_visited.sroa.7.0, %for.cond16.preheader.i.preheader ], [ %66, %for.cond16.for.inc234_crit_edge.split.i ] + %minp_visited.sroa.11.1 = phi i16 [ %minp_visited.sroa.11.0, %for.cond16.preheader.i.preheader ], [ %110, %for.cond16.for.inc234_crit_edge.split.i ] + %minp_visited.sroa.7.1 = phi i16 [ %minp_visited.sroa.7.0, %for.cond16.preheader.i.preheader ], [ %108, %for.cond16.for.inc234_crit_edge.split.i ] %minp_visited.sroa.0.1 = phi i16 [ %minp_visited.sroa.0.0, %for.cond16.preheader.i.preheader ], [ %65, %for.cond16.for.inc234_crit_edge.split.i ] - %maxp_visited.sroa.11.1 = phi i16 [ %maxp_visited.sroa.11.0, %for.cond16.preheader.i.preheader ], [ %70, %for.cond16.for.inc234_crit_edge.split.i ] - %maxp_visited.sroa.7.1 = phi i16 [ %maxp_visited.sroa.7.0, %for.cond16.preheader.i.preheader ], [ %69, %for.cond16.for.inc234_crit_edge.split.i ] - %maxp_visited.sroa.0.1 = phi i16 [ %maxp_visited.sroa.0.0, %for.cond16.preheader.i.preheader ], [ %68, %for.cond16.for.inc234_crit_edge.split.i ] + %maxp_visited.sroa.11.1 = phi i16 [ %maxp_visited.sroa.11.0, %for.cond16.preheader.i.preheader ], [ %109, %for.cond16.for.inc234_crit_edge.split.i ] + %maxp_visited.sroa.7.1 = phi i16 [ %maxp_visited.sroa.7.0, %for.cond16.preheader.i.preheader ], [ %107, %for.cond16.for.inc234_crit_edge.split.i ] + %maxp_visited.sroa.0.1 = phi i16 [ %maxp_visited.sroa.0.0, %for.cond16.preheader.i.preheader ], [ %66, %for.cond16.for.inc234_crit_edge.split.i ] %.mask1355 = and i32 %indvars.iv1337, 65535 %8 = shl nsw i32 %indvars.iv1337, 4 %sub.i692 = sub nuw nsw i32 -10, %8 @@ -856,12 +856,12 @@ for.body22.i.preheader: ; preds = %for.cond16.preheade for.body22.i: ; preds = %for.cond178.cleanup215_crit_edge.i, %for.body22.i.preheader %indvars.iv = phi i32 [ -1, %for.body22.i.preheader ], [ %indvars.iv.next, %for.cond178.cleanup215_crit_edge.i ] %n_visited.2 = phi i32 [ %n_visited.1, %for.body22.i.preheader ], [ %inc.i.i, %for.cond178.cleanup215_crit_edge.i ] - %minp_visited.sroa.11.2 = phi i16 [ %minp_visited.sroa.11.1, %for.body22.i.preheader ], [ %67, %for.cond178.cleanup215_crit_edge.i ] - %minp_visited.sroa.7.2 = phi i16 [ %minp_visited.sroa.7.1, %for.body22.i.preheader ], [ %66, %for.cond178.cleanup215_crit_edge.i ] + %minp_visited.sroa.11.2 = phi i16 [ %minp_visited.sroa.11.1, %for.body22.i.preheader ], [ %110, %for.cond178.cleanup215_crit_edge.i ] + %minp_visited.sroa.7.2 = phi i16 [ %minp_visited.sroa.7.1, %for.body22.i.preheader ], [ %108, %for.cond178.cleanup215_crit_edge.i ] %minp_visited.sroa.0.2 = phi i16 [ %minp_visited.sroa.0.1, %for.body22.i.preheader ], [ %65, %for.cond178.cleanup215_crit_edge.i ] - %maxp_visited.sroa.11.2 = phi i16 [ %maxp_visited.sroa.11.1, %for.body22.i.preheader ], [ %70, %for.cond178.cleanup215_crit_edge.i ] - %maxp_visited.sroa.7.2 = phi i16 [ %maxp_visited.sroa.7.1, %for.body22.i.preheader ], [ %69, %for.cond178.cleanup215_crit_edge.i ] - %maxp_visited.sroa.0.2 = phi i16 [ %maxp_visited.sroa.0.1, %for.body22.i.preheader ], [ %68, %for.cond178.cleanup215_crit_edge.i ] + %maxp_visited.sroa.11.2 = phi i16 [ %maxp_visited.sroa.11.1, %for.body22.i.preheader ], [ %109, %for.cond178.cleanup215_crit_edge.i ] + %maxp_visited.sroa.7.2 = phi i16 [ %maxp_visited.sroa.7.1, %for.body22.i.preheader ], [ %107, %for.cond178.cleanup215_crit_edge.i ] + %maxp_visited.sroa.0.2 = phi i16 [ %maxp_visited.sroa.0.1, %for.body22.i.preheader ], [ %66, %for.cond178.cleanup215_crit_edge.i ] %11 = shl nsw i32 %indvars.iv, 16 %12 = or disjoint i32 %11, %.mask1355 %13 = zext i32 %12 to i48 @@ -883,12 +883,12 @@ for.cond184.preheader.i.preheader: ; preds = %for.body22.i for.cond184.preheader.i: ; preds = %for.cond184.for.inc213_crit_edge.split.i, %for.cond184.preheader.i.preheader %n_visited.3 = phi i32 [ %inc.i.i, %for.cond184.for.inc213_crit_edge.split.i ], [ %n_visited.2, %for.cond184.preheader.i.preheader ] - %minp_visited.sroa.11.3 = phi i16 [ %67, %for.cond184.for.inc213_crit_edge.split.i ], [ %minp_visited.sroa.11.2, %for.cond184.preheader.i.preheader ] - %minp_visited.sroa.7.3 = phi i16 [ %66, %for.cond184.for.inc213_crit_edge.split.i ], [ %minp_visited.sroa.7.2, %for.cond184.preheader.i.preheader ] + %minp_visited.sroa.11.3 = phi i16 [ %110, %for.cond184.for.inc213_crit_edge.split.i ], [ %minp_visited.sroa.11.2, %for.cond184.preheader.i.preheader ] + %minp_visited.sroa.7.3 = phi i16 [ %108, %for.cond184.for.inc213_crit_edge.split.i ], [ %minp_visited.sroa.7.2, %for.cond184.preheader.i.preheader ] %minp_visited.sroa.0.3 = phi i16 [ %65, %for.cond184.for.inc213_crit_edge.split.i ], [ %minp_visited.sroa.0.2, %for.cond184.preheader.i.preheader ] - %maxp_visited.sroa.11.3 = phi i16 [ %70, %for.cond184.for.inc213_crit_edge.split.i ], [ %maxp_visited.sroa.11.2, %for.cond184.preheader.i.preheader ] - %maxp_visited.sroa.7.3 = phi i16 [ %69, %for.cond184.for.inc213_crit_edge.split.i ], [ %maxp_visited.sroa.7.2, %for.cond184.preheader.i.preheader ] - %maxp_visited.sroa.0.3 = phi i16 [ %68, %for.cond184.for.inc213_crit_edge.split.i ], [ %maxp_visited.sroa.0.2, %for.cond184.preheader.i.preheader ] + %maxp_visited.sroa.11.3 = phi i16 [ %109, %for.cond184.for.inc213_crit_edge.split.i ], [ %maxp_visited.sroa.11.2, %for.cond184.preheader.i.preheader ] + %maxp_visited.sroa.7.3 = phi i16 [ %107, %for.cond184.for.inc213_crit_edge.split.i ], [ %maxp_visited.sroa.7.2, %for.cond184.preheader.i.preheader ] + %maxp_visited.sroa.0.3 = phi i16 [ %66, %for.cond184.for.inc213_crit_edge.split.i ], [ %maxp_visited.sroa.0.2, %for.cond184.preheader.i.preheader ] %z_block.0535.i = phi i16 [ %inc214.i, %for.cond184.for.inc213_crit_edge.split.i ], [ %conv99.i, %for.cond184.preheader.i.preheader ] %add13.i.i = add i16 %z_block.0535.i, %7 %conv.i.i = sext i16 %z_block.0535.i to i64 @@ -898,12 +898,10 @@ for.cond184.preheader.i: ; preds = %for.cond184.for.inc for.cond190.preheader.i: ; preds = %for.cond190.for.inc208_crit_edge.i, %for.cond184.preheader.i %n_visited.4 = phi i32 [ %n_visited.3, %for.cond184.preheader.i ], [ %inc.i.i, %for.cond190.for.inc208_crit_edge.i ] - %minp_visited.sroa.11.4 = phi i16 [ %minp_visited.sroa.11.3, %for.cond184.preheader.i ], [ %67, %for.cond190.for.inc208_crit_edge.i ] - %minp_visited.sroa.7.4 = phi i16 [ %minp_visited.sroa.7.3, %for.cond184.preheader.i ], [ %66, %for.cond190.for.inc208_crit_edge.i ] + %minp_visited.sroa.11.4 = phi i16 [ %minp_visited.sroa.7.3, %for.cond184.preheader.i ], [ %108, %for.cond190.for.inc208_crit_edge.i ] %minp_visited.sroa.0.4 = phi i16 [ %minp_visited.sroa.0.3, %for.cond184.preheader.i ], [ %65, %for.cond190.for.inc208_crit_edge.i ] - %maxp_visited.sroa.11.4 = phi i16 [ %maxp_visited.sroa.11.3, %for.cond184.preheader.i ], [ %70, %for.cond190.for.inc208_crit_edge.i ] - %maxp_visited.sroa.7.4 = phi i16 [ %maxp_visited.sroa.7.3, %for.cond184.preheader.i ], [ %69, %for.cond190.for.inc208_crit_edge.i ] - %maxp_visited.sroa.0.4 = phi i16 [ %maxp_visited.sroa.0.3, %for.cond184.preheader.i ], [ %68, %for.cond190.for.inc208_crit_edge.i ] + %maxp_visited.sroa.11.4 = phi i16 [ %maxp_visited.sroa.7.3, %for.cond184.preheader.i ], [ %107, %for.cond190.for.inc208_crit_edge.i ] + %maxp_visited.sroa.7.4 = phi i16 [ %maxp_visited.sroa.0.3, %for.cond184.preheader.i ], [ %66, %for.cond190.for.inc208_crit_edge.i ] %y_block.0532.i = phi i16 [ %conv73.i, %for.cond184.preheader.i ], [ %inc209.i, %for.cond190.for.inc208_crit_edge.i ] %add8.i.i = add i16 %y_block.0532.i, %16 %conv2.i.i = sext i16 %y_block.0532.i to i64 @@ -916,12 +914,8 @@ for.cond190.preheader.i: ; preds = %for.cond190.for.inc for.body195.i: ; preds = %"_ZZN7TestMap21testForEachNodeInAreaEP8IGameDefENK3$_0clEN3irr4core8vector3dIsEE7MapNode.exit.i", %for.cond190.preheader.i %n_visited.5 = phi i32 [ %n_visited.4, %for.cond190.preheader.i ], [ %inc.i.i, %"_ZZN7TestMap21testForEachNodeInAreaEP8IGameDefENK3$_0clEN3irr4core8vector3dIsEE7MapNode.exit.i" ] - %minp_visited.sroa.11.5 = phi i16 [ %minp_visited.sroa.11.4, %for.cond190.preheader.i ], [ %67, %"_ZZN7TestMap21testForEachNodeInAreaEP8IGameDefENK3$_0clEN3irr4core8vector3dIsEE7MapNode.exit.i" ] - %minp_visited.sroa.7.5 = phi i16 [ %minp_visited.sroa.7.4, %for.cond190.preheader.i ], [ %66, %"_ZZN7TestMap21testForEachNodeInAreaEP8IGameDefENK3$_0clEN3irr4core8vector3dIsEE7MapNode.exit.i" ] %minp_visited.sroa.0.5 = phi i16 [ %minp_visited.sroa.0.4, %for.cond190.preheader.i ], [ %65, %"_ZZN7TestMap21testForEachNodeInAreaEP8IGameDefENK3$_0clEN3irr4core8vector3dIsEE7MapNode.exit.i" ] - %maxp_visited.sroa.11.5 = phi i16 [ %maxp_visited.sroa.11.4, %for.cond190.preheader.i ], [ %70, %"_ZZN7TestMap21testForEachNodeInAreaEP8IGameDefENK3$_0clEN3irr4core8vector3dIsEE7MapNode.exit.i" ] - %maxp_visited.sroa.7.5 = phi i16 [ %maxp_visited.sroa.7.4, %for.cond190.preheader.i ], [ %69, %"_ZZN7TestMap21testForEachNodeInAreaEP8IGameDefENK3$_0clEN3irr4core8vector3dIsEE7MapNode.exit.i" ] - %maxp_visited.sroa.0.5 = phi i16 [ %maxp_visited.sroa.0.4, %for.cond190.preheader.i ], [ %68, %"_ZZN7TestMap21testForEachNodeInAreaEP8IGameDefENK3$_0clEN3irr4core8vector3dIsEE7MapNode.exit.i" ] + %maxp_visited.sroa.11.5 = phi i16 [ %maxp_visited.sroa.0.4, %for.cond190.preheader.i ], [ %66, %"_ZZN7TestMap21testForEachNodeInAreaEP8IGameDefENK3$_0clEN3irr4core8vector3dIsEE7MapNode.exit.i" ] %x_block.0529.i = phi i16 [ %conv47.i, %for.cond190.preheader.i ], [ %inc.i, %"_ZZN7TestMap21testForEachNodeInAreaEP8IGameDefENK3$_0clEN3irr4core8vector3dIsEE7MapNode.exit.i" ] %add.i.i = add i16 %x_block.0529.i, %10 br i1 %tobool.not.i, label %cond.end201.i, label %cond.true198.i @@ -1263,11 +1257,7 @@ common.resume.i: ; preds = %_ZNSt10_HashtableIN _ZNSt10_HashtableIN3irr4core8vector3dIsEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE16_M_insert_uniqueIRKS3_SJ_NS5_10_AllocNodeISaINS5_10_Hash_nodeIS3_Lb1EEEEEEEESt4pairINS5_14_Node_iteratorIS3_Lb1ELb1EEEbEOT_OT0_RKT1_.exit.i: ; preds = %_ZNKSt8__detail15_Hashtable_baseIN3irr4core8vector3dIsEES4_NS_9_IdentityESt8equal_toIS4_ESt4hashIS4_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb1ELb1EEEE12_M_equals_trIS4_EEbRKT_mRKNS_16_Hash_node_valueIS4_Lb1EEE.exit.i.i.i.i, %_ZNKSt8__detail15_Hashtable_baseIN3irr4core8vector3dIsEES4_NS_9_IdentityESt8equal_toIS4_ESt4hashIS4_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb1ELb1EEEE16_M_key_equals_trIS4_EEbRKT_RKNS_16_Hash_node_valueIS4_Lb1EEE.exit.i.i, %_ZNSt10_HashtableIN3irr4core8vector3dIsEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE21_M_insert_unique_nodeEmmPNS5_10_Hash_nodeIS3_Lb1EEEm.exit.i %65 = call i16 @llvm.smin.i16(i16 %add.i.i, i16 %minp_visited.sroa.0.5) - %66 = call i16 @llvm.smin.i16(i16 %add8.i.i, i16 %minp_visited.sroa.7.5) - %67 = call i16 @llvm.smin.i16(i16 %add13.i.i, i16 %minp_visited.sroa.11.5) - %68 = call i16 @llvm.smax.i16(i16 %maxp_visited.sroa.0.5, i16 %add.i.i) - %69 = call i16 @llvm.smax.i16(i16 %maxp_visited.sroa.7.5, i16 %add8.i.i) - %70 = call i16 @llvm.smax.i16(i16 %maxp_visited.sroa.11.5, i16 %add13.i.i) + %66 = call i16 @llvm.smax.i16(i16 %maxp_visited.sroa.0.5, i16 %add.i.i) %cmp.not.i.i = icmp eq i32 %n.sroa.0.0.i, 127 br i1 %cmp.not.i.i, label %"_ZZN7TestMap21testForEachNodeInAreaEP8IGameDefENK3$_0clEN3irr4core8vector3dIsEE7MapNode.exit.i", label %if.then.i.i @@ -1556,12 +1546,16 @@ _ZNSt8__detail9_Map_baseIN3irr4core8vector3dIsEESt4pairIKS4_7MapNodeESaIS8_ENS_1 br i1 %cmp193.not.i, label %for.cond190.for.inc208_crit_edge.i, label %for.body195.i, !llvm.loop !96 for.cond190.for.inc208_crit_edge.i: ; preds = %"_ZZN7TestMap21testForEachNodeInAreaEP8IGameDefENK3$_0clEN3irr4core8vector3dIsEE7MapNode.exit.i" + %107 = call i16 @llvm.smax.i16(i16 %maxp_visited.sroa.7.4, i16 %add8.i.i) + %108 = call i16 @llvm.smin.i16(i16 %minp_visited.sroa.7.4, i16 %add8.i.i) %inc209.i = add i16 %y_block.0532.i, 1 %conv185.i = sext i16 %inc209.i to i32 %cmp187.not.i = icmp slt i32 %15, %conv185.i br i1 %cmp187.not.i, label %for.cond184.for.inc213_crit_edge.split.i, label %for.cond190.preheader.i, !llvm.loop !97 for.cond184.for.inc213_crit_edge.split.i: ; preds = %for.cond190.for.inc208_crit_edge.i + %109 = call i16 @llvm.smax.i16(i16 %maxp_visited.sroa.11.3, i16 %add13.i.i) + %110 = call i16 @llvm.smin.i16(i16 %minp_visited.sroa.11.3, i16 %add13.i.i) %inc214.i = add i16 %z_block.0535.i, 1 %conv179.i = sext i16 %inc214.i to i32 %cmp181.not.i = icmp slt i32 %6, %conv179.i @@ -1816,9 +1810,9 @@ ehcleanup117: ; preds = %ehcleanup116, %lpad if.end118: ; preds = %if.end %cmp.i = icmp eq i16 %65, -10 - %cmp7.i = icmp eq i16 %66, -10 + %cmp7.i = icmp eq i16 %108, -10 %or.cond = select i1 %cmp.i, i1 %cmp7.i, i1 false - %cmp11.i = icmp eq i16 %67, -10 + %cmp11.i = icmp eq i16 %110, -10 %or.cond1208 = select i1 %or.cond, i1 %cmp11.i, i1 false br i1 %or.cond1208, label %if.end139, label %if.then123 @@ -1870,10 +1864,10 @@ cleanup.action137: ; preds = %ehcleanup133, %_ZNK br label %ehcleanup501 if.end139: ; preds = %if.end118 - %cmp.i739 = icmp eq i16 %68, 20 - %cmp7.i743 = icmp eq i16 %69, 20 + %cmp.i739 = icmp eq i16 %66, 20 + %cmp7.i743 = icmp eq i16 %107, 20 %or.cond1209 = select i1 %cmp.i739, i1 %cmp7.i743, i1 false - %cmp11.i747 = icmp eq i16 %70, 10 + %cmp11.i747 = icmp eq i16 %109, 10 %or.cond1210 = select i1 %or.cond1209, i1 %cmp11.i747, i1 false br i1 %or.cond1210, label %if.end158, label %if.then142 diff --git a/bench/mitsuba3/optimized/x86rapass.ll b/bench/mitsuba3/optimized/x86rapass.ll index 15a3d84e68f..84be3539153 100644 --- a/bench/mitsuba3/optimized/x86rapass.ll +++ b/bench/mitsuba3/optimized/x86rapass.ll @@ -5256,9 +5256,9 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_103x869X86RAPass8_rewriteEPNS0_8Bas %38 = zext i32 %34 to i64 br label %39 -39: ; preds = %.loopexit, %36 - %40 = phi i64 [ 0, %36 ], [ %75, %.loopexit ] - %41 = phi i32 [ 0, %36 ], [ %74, %.loopexit ] +39: ; preds = %73, %36 + %40 = phi i64 [ 0, %36 ], [ %75, %73 ] + %41 = phi i32 [ 0, %36 ], [ %74, %73 ] %42 = getelementptr inbounds nuw %"struct.asmjit::_abi_1_10::RATiedReg", ptr %32, i64 %40 %43 = getelementptr inbounds nuw i8, ptr %42, i64 24 %44 = load i32, ptr %43, align 4, !tbaa !108 @@ -5266,51 +5266,55 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_103x869X86RAPass8_rewriteEPNS0_8Bas %46 = load i8, ptr %45, align 2, !tbaa !11 %47 = zext i8 %46 to i32 %48 = icmp eq i32 %44, 0 - br i1 %48, label %.loopexit13, label %.preheader12 + br i1 %48, label %57, label %.preheader12 .preheader12: ; preds = %39, %.preheader12 - %49 = phi i32 [ %51, %.preheader12 ], [ %41, %39 ] - %50 = phi i32 [ %54, %.preheader12 ], [ %44, %39 ] - %51 = call noundef i32 @llvm.umax.i32(i32 %49, i32 %47) - %52 = call noundef i32 @llvm.cttz.i32(i32 %50, i1 true), !range !117 - %53 = add i32 %50, -1 - %54 = and i32 %53, %50 - %55 = zext nneg i32 %52 to i64 - %56 = getelementptr inbounds nuw i32, ptr %37, i64 %55 - store i32 %47, ptr %56, align 4, !tbaa !85 - %57 = icmp eq i32 %54, 0 - br i1 %57, label %.loopexit13, label %.preheader12, !llvm.loop !272 - -.loopexit13: ; preds = %.preheader12, %39 - %58 = phi i32 [ %41, %39 ], [ %51, %.preheader12 ] + %49 = phi i32 [ %52, %.preheader12 ], [ %44, %39 ] + %50 = call noundef i32 @llvm.cttz.i32(i32 %49, i1 true), !range !117 + %51 = add i32 %49, -1 + %52 = and i32 %51, %49 + %53 = zext nneg i32 %50 to i64 + %54 = getelementptr inbounds nuw i32, ptr %37, i64 %53 + store i32 %47, ptr %54, align 4, !tbaa !85 + %55 = icmp eq i32 %52, 0 + br i1 %55, label %.loopexit13, label %.preheader12, !llvm.loop !272 + +.loopexit13:; preds = %.preheader12 + %56 = call i32 @llvm.umax.i32(i32 %41, i32 %47) + br label %57 + +57: ; preds = %.loopexit13, %39 + %58 = phi i32 [ %41, %39 ], [ %56, %.loopexit13 ] %59 = getelementptr inbounds nuw i8, ptr %42, i64 28 %60 = load i32, ptr %59, align 4, !tbaa !109 %61 = getelementptr inbounds nuw i8, ptr %42, i64 15 %62 = load i8, ptr %61, align 1, !tbaa !11 %63 = zext i8 %62 to i32 %64 = icmp eq i32 %60, 0 - br i1 %64, label %.loopexit, label %.preheader - -.preheader: ; preds = %.loopexit13, %.preheader - %65 = phi i32 [ %67, %.preheader ], [ %58, %.loopexit13 ] - %66 = phi i32 [ %70, %.preheader ], [ %60, %.loopexit13 ] - %67 = call noundef i32 @llvm.umax.i32(i32 %65, i32 %63) - %68 = call noundef i32 @llvm.cttz.i32(i32 %66, i1 true), !range !117 - %69 = add i32 %66, -1 - %70 = and i32 %69, %66 - %71 = zext nneg i32 %68 to i64 - %72 = getelementptr inbounds nuw i32, ptr %37, i64 %71 - store i32 %63, ptr %72, align 4, !tbaa !85 - %73 = icmp eq i32 %70, 0 - br i1 %73, label %.loopexit, label %.preheader, !llvm.loop !273 - -.loopexit: ; preds = %.preheader, %.loopexit13 - %74 = phi i32 [ %58, %.loopexit13 ], [ %67, %.preheader ] + br i1 %64, label %73, label %.preheader + +.preheader: ; preds = %57, %.preheader + %65 = phi i32 [ %68, %.preheader ], [ %60, %57 ] + %66 = call noundef i32 @llvm.cttz.i32(i32 %65, i1 true), !range !117 + %67 = add i32 %65, -1 + %68 = and i32 %67, %65 + %69 = zext nneg i32 %66 to i64 + %70 = getelementptr inbounds nuw i32, ptr %37, i64 %69 + store i32 %63, ptr %70, align 4, !tbaa !85 + %71 = icmp eq i32 %68, 0 + br i1 %71, label %.loopexit, label %.preheader, !llvm.loop !273 + +.loopexit:; preds = %.preheader + %72 = call i32 @llvm.umax.i32(i32 %58, i32 %63) + br label %73 + +73: ; preds = %.loopexit, %57 + %74 = phi i32 [ %58, %57 ], [ %72, %.loopexit ] %75 = add nuw nsw i64 %40, 1 %76 = icmp eq i64 %75, %38 br i1 %76, label %77, label %39, !llvm.loop !274 -77: ; preds = %.loopexit +77: ; preds = %73 %78 = getelementptr inbounds nuw i8, ptr %26, i64 12 %79 = load i32, ptr %78, align 4, !tbaa !275 %80 = icmp slt i32 %79, 0 diff --git a/bench/postgres/optimized/inherit.ll b/bench/postgres/optimized/inherit.ll index a0f89b6334c..e78f9319956 100644 --- a/bench/postgres/optimized/inherit.ll +++ b/bench/postgres/optimized/inherit.ll @@ -1024,12 +1024,13 @@ select.unfold: ; preds = %63, %31, %.lr.ph, % br i1 %83, label %.lr.ph217, label %._crit_edge204 ._crit_edge204.loopexit: ; preds = %.lr.ph217 + %umin = call i32 @llvm.umin.i32(i32 %.795225, i32 %indvars243) %.pre = load i32, ptr %72, align 4 br label %._crit_edge204 ._crit_edge204: ; preds = %._crit_edge204.loopexit, %.lr.ph203, %75 %84 = phi i32 [ %76, %75 ], [ %76, %.lr.ph203 ], [ %.pre, %._crit_edge204.loopexit ] - %.896.lcssa = phi i32 [ %.795225, %75 ], [ %.795225, %.lr.ph203 ], [ %91, %._crit_edge204.loopexit ] + %.896.lcssa = phi i32 [ %.795225, %75 ], [ %.795225, %.lr.ph203 ], [ %umin, %._crit_edge204.loopexit ] %.8.lcssa = phi ptr [ %.7226, %75 ], [ %.7226, %.lr.ph203 ], [ %90, %._crit_edge204.loopexit ] %indvars.iv.next240 = add nuw nsw i64 %indvars.iv239, 1 %85 = sext i32 %84 to i64 @@ -1038,14 +1039,12 @@ select.unfold: ; preds = %63, %31, %.lr.ph, % .lr.ph217: ; preds = %.lr.ph203, %.lr.ph217 %indvars.iv236 = phi i64 [ %indvars.iv.next237, %.lr.ph217 ], [ 0, %.lr.ph203 ] - %.896199216 = phi i32 [ %91, %.lr.ph217 ], [ %.795225, %.lr.ph203 ] %.8201214 = phi ptr [ %90, %.lr.ph217 ], [ %.7226, %.lr.ph203 ] %86 = load ptr, ptr %81, align 8 %87 = getelementptr inbounds nuw %union.ListCell, ptr %86, i64 %indvars.iv236 %88 = load ptr, ptr %87, align 8 %89 = call ptr @make_restrictinfo(ptr noundef %0, ptr noundef %88, i1 noundef zeroext true, i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext false, i32 noundef %indvars243, ptr noundef null, ptr noundef null, ptr noundef null) #7 %90 = call ptr @lappend(ptr noundef %.8201214, ptr noundef %89) #7 - %91 = call i32 @llvm.umin.i32(i32 %.896199216, i32 %indvars243) %indvars.iv.next237 = add nuw nsw i64 %indvars.iv236, 1 %92 = load i32, ptr %80, align 4 %93 = sext i32 %92 to i64 diff --git a/bench/rocksdb/optimized/db_impl_compaction_flush.ll b/bench/rocksdb/optimized/db_impl_compaction_flush.ll index bb2c833fc03..0eb53b8c9df 100644 --- a/bench/rocksdb/optimized/db_impl_compaction_flush.ll +++ b/bench/rocksdb/optimized/db_impl_compaction_flush.ll @@ -3941,7 +3941,8 @@ define void @_ZN7rocksdb6DBImpl34InstallSuperVersionAndScheduleWorkEPNS_16Column br label %70 ._crit_edge: ; preds = %81 - store i64 %.sroa.speculated, ptr %22, align 8, !tbaa !835 + %umin = tail call i64 @llvm.umin.i64(i64 %32, i64 72057594037927935) + store i64 %umin, ptr %22, align 8, !tbaa !835 br label %33 33: ; preds = %._crit_edge, %20 @@ -4013,26 +4014,24 @@ _ZN7rocksdb6DBImpl24EnqueuePendingCompactionEPNS_16ColumnFamilyDataE.exit: ; pre ret void 70: ; preds = %.lr.ph, %81 - %.sroa.026.034 = phi ptr [ %.sroa.026.032, %.lr.ph ], [ %.sroa.026.0, %81 ] - %71 = phi i64 [ 72057594037927935, %.lr.ph ], [ %82, %81 ] - %72 = phi i64 [ 72057594037927935, %.lr.ph ], [ %.sroa.speculated, %81 ] - %73 = getelementptr inbounds nuw i8, ptr %.sroa.026.034, i64 1331 - %74 = load i8, ptr %73, align 1, !tbaa !854, !range !41, !noundef !42 - %75 = trunc nuw i8 %74 to i1 - br i1 %75, label %81, label %76 - -76: ; preds = %70 - %77 = getelementptr inbounds nuw i8, ptr %.sroa.026.034, i64 48 - %78 = load ptr, ptr %77, align 8, !tbaa !691 - %79 = getelementptr inbounds nuw i8, ptr %78, i64 3944 - %80 = load i64, ptr %79, align 8, !tbaa !855 - %.sroa.speculated23 = tail call i64 @llvm.umin.i64(i64 %80, i64 %71) + %.sroa.026.034 = phi ptr [ %.sroa.026.032, %.lr.ph ], [ %.sroa.026.0, %80 ] + %71 = phi i64 [ 72057594037927935, %.lr.ph ], [ %82, %80 ] + %72 = getelementptr inbounds nuw i8, ptr %.sroa.026.034, i64 1331 + %73 = load i8, ptr %72, align 1, !tbaa !854, !range !41, !noundef !42 + %74 = trunc nuw i8 %73 to i1 + br i1 %74, label %81, label %75 + +75: ; preds = %70 + %76 = getelementptr inbounds nuw i8, ptr %.sroa.026.034, i64 48 + %77 = load ptr, ptr %76, align 8, !tbaa !691 + %78 = getelementptr inbounds nuw i8, ptr %77, i64 3944 + %79 = load i64, ptr %78, align 8, !tbaa !855 + %.sroa.speculated23 = tail call i64 @llvm.umin.i64(i64 %79, i64 %71) store i64 %.sroa.speculated23, ptr %21, align 32, !tbaa !834 br label %81 -81: ; preds = %76, %70 - %82 = phi i64 [ %.sroa.speculated23, %76 ], [ %71, %70 ] - %.sroa.speculated = tail call i64 @llvm.umin.i64(i64 %32, i64 %72) +81: ; preds = %75, %70 + %82 = phi i64 [ %.sroa.speculated23, %75 ], [ %71, %70 ] %.sroa.026.0.in = getelementptr inbounds nuw i8, ptr %.sroa.026.034, i64 2536 %.sroa.026.0 = load ptr, ptr %.sroa.026.0.in, align 8, !tbaa !844 %.not29 = icmp eq ptr %.sroa.026.0, %28 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..0aac1e0d4bb 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/149858 export COMPTIME_MODE=0 # Please rebase manually