diff --git a/bench/actix-rs/optimized/5dylu5g0crehei80.ll b/bench/actix-rs/optimized/5dylu5g0crehei80.ll index fa76761894a..061757865a8 100644 --- a/bench/actix-rs/optimized/5dylu5g0crehei80.ll +++ b/bench/actix-rs/optimized/5dylu5g0crehei80.ll @@ -12273,9 +12273,7 @@ _ZN4http6header5value11HeaderValue8from_str17h65e04d006e83ee0aE.exit.i: ; preds 2467: ; preds = %2464 %.sroa.3268.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %39, i64 8 - %.sroa.3268.0.copyload.i = load i8, ptr %.sroa.3268.0..sroa_idx.i, align 8, !noalias !1152 - %.sroa.5269.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %39, i64 9 - %.sroa.5269.sroa.0.sroa.0.0.copyload.i = load i56, ptr %.sroa.5269.0..sroa_idx.i, align 1, !noalias !1152 + %.sroa.3268.0.copyload.i = load i64, ptr %.sroa.3268.0..sroa_idx.i, align 8, !noalias !1152 %.sroa.5269.sroa.3.0..sroa.5269.0..sroa_idx.sroa_idx.i = getelementptr inbounds nuw i8, ptr %39, i64 16 %.sroa.5269.sroa.3.0.copyload.i = load ptr, ptr %.sroa.5269.sroa.3.0..sroa.5269.0..sroa_idx.sroa_idx.i, align 8, !noalias !1152 %.sroa.5269.sroa.4.0..sroa.5269.0..sroa_idx.sroa_idx.i = getelementptr inbounds nuw i8, ptr %39, i64 24 @@ -12374,9 +12372,7 @@ _ZN4http6header5value11HeaderValue8from_str17h65e04d006e83ee0aE.exit.i: ; preds call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 8 dereferenceable(16) %2499, i64 16, i1 false), !noalias !1152 store i64 %2465, ptr %37, align 8, !noalias !1152 %.sroa.5281.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %37, i64 8 - store i8 %.sroa.3268.0.copyload.i, ptr %.sroa.5281.0..sroa_idx.i, align 8, !noalias !1152 - %.sroa.6282.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %37, i64 9 - store i56 %.sroa.5269.sroa.0.sroa.0.0.copyload.i, ptr %.sroa.6282.0..sroa_idx.i, align 1, !noalias !1152 + store i64 %.sroa.3268.0.copyload.i, ptr %.sroa.5281.0..sroa_idx.i, align 8, !noalias !1152 %.sroa.6282.sroa.5.0..sroa.6282.0..sroa_idx.sroa_idx.i = getelementptr inbounds nuw i8, ptr %37, i64 16 store ptr %.sroa.5269.sroa.3.0.copyload.i, ptr %.sroa.6282.sroa.5.0..sroa.6282.0..sroa_idx.sroa_idx.i, align 8, !noalias !1152 %.sroa.6282.sroa.6.0..sroa.6282.0..sroa_idx.sroa_idx.i = getelementptr inbounds nuw i8, ptr %37, i64 24 @@ -12780,11 +12776,7 @@ _ZN4http6header5value11HeaderValue8from_str17h65e04d006e83ee0aE.exit.i: ; preds to label %2627 unwind label %2017, !noalias !1156 2630: ; preds = %"_ZN4core3ptr47drop_in_place$LT$h2..client..ResponseFuture$GT$17h7b469d0a55d71443E.exit.i" - %.sroa.4.i.sroa.3.7.insert.ext.i = zext i8 %.sroa.3268.0.copyload.i to i64 - %.sroa.4.i.sroa.3.8.insert.ext.i = zext i56 %.sroa.5269.sroa.0.sroa.0.0.copyload.i to i64 - %.sroa.4.i.sroa.3.8.insert.shift.i = shl nuw i64 %.sroa.4.i.sroa.3.8.insert.ext.i, 8 - %.sroa.4.i.sroa.3.8.insert.insert.i = or disjoint i64 %.sroa.4.i.sroa.3.8.insert.shift.i, %.sroa.4.i.sroa.3.7.insert.ext.i - %2631 = inttoptr i64 %.sroa.4.i.sroa.3.8.insert.insert.i to ptr + %2631 = inttoptr i64 %.sroa.3268.0.copyload.i to ptr %2632 = ptrtoint ptr %.sroa.5269.sroa.5.sroa.0.0.copyload.i to i64 br label %2449 @@ -13818,7 +13810,7 @@ default.unreachable119: ; preds = %3 unreachable 30: ; preds = %99, %72, %24 - %.pn18 = phi { ptr, i32 } [ %100, %99 ], [ %.pn15.pn, %72 ], [ %25, %24 ] + %.pn18 = phi { ptr, i32 } [ %100, %101 ], [ %.pn15.pn, %72 ], [ %25, %24 ] %31 = getelementptr inbounds nuw i8, ptr %1, i64 593 %32 = load i8, ptr %31, align 1, !range !15, !noundef !7 %33 = trunc nuw i8 %32 to i1 @@ -13888,7 +13880,7 @@ default.unreachable119: ; preds = %3 to label %"_ZN4core3ptr402drop_in_place$LT$futures_util..sink..send..Send$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$C$actix_http..h1..Message$LT$$LP$actix_http..requests..head..RequestHeadType$C$actix_http..body..size..BodySize$RP$$GT$$GT$$GT$17h1df0d97a8620fad0E.exit" unwind label %64 common.ret: ; preds = %96, %81, %62 - %.sink = phi i8 [ 1, %96 ], [ 4, %81 ], [ 3, %62 ] + %.sink = phi i8 [ 1, %98 ], [ 4, %81 ], [ 3, %62 ] store i8 %.sink, ptr %11, align 8 ret void @@ -13919,15 +13911,15 @@ common.ret: ; preds = %96, %81, %62 br label %72 70: ; preds = %"_ZN4core3ptr402drop_in_place$LT$futures_util..sink..send..Send$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$C$actix_http..h1..Message$LT$$LP$actix_http..requests..head..RequestHeadType$C$actix_http..body..size..BodySize$RP$$GT$$GT$$GT$17h1df0d97a8620fad0E.exit", %98 - %.sroa.7.0 = phi ptr [ %.sroa.7.2, %98 ], [ %43, %"_ZN4core3ptr402drop_in_place$LT$futures_util..sink..send..Send$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$C$actix_http..h1..Message$LT$$LP$actix_http..requests..head..RequestHeadType$C$actix_http..body..size..BodySize$RP$$GT$$GT$$GT$17h1df0d97a8620fad0E.exit" ] - %.sroa.052.0 = phi i8 [ %.sroa.052.2, %98 ], [ 2, %"_ZN4core3ptr402drop_in_place$LT$futures_util..sink..send..Send$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$C$actix_http..h1..Message$LT$$LP$actix_http..requests..head..RequestHeadType$C$actix_http..body..size..BodySize$RP$$GT$$GT$$GT$17h1df0d97a8620fad0E.exit" ] - %.sroa.8.sroa.0.0 = phi ptr [ %.sroa.036.sroa.11.0103, %98 ], [ undef, %"_ZN4core3ptr402drop_in_place$LT$futures_util..sink..send..Send$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$C$actix_http..h1..Message$LT$$LP$actix_http..requests..head..RequestHeadType$C$actix_http..body..size..BodySize$RP$$GT$$GT$$GT$17h1df0d97a8620fad0E.exit" ] - %.sroa.8.sroa.4.sroa.0.0 = phi ptr [ %.sroa.8.sroa.4.sroa.0.2, %98 ], [ undef, %"_ZN4core3ptr402drop_in_place$LT$futures_util..sink..send..Send$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$C$actix_http..h1..Message$LT$$LP$actix_http..requests..head..RequestHeadType$C$actix_http..body..size..BodySize$RP$$GT$$GT$$GT$17h1df0d97a8620fad0E.exit" ] - %.sroa.8.sroa.4.sroa.3.sroa.0.0 = phi i64 [ %.sroa.8.sroa.4.sroa.3.sroa.0.2, %98 ], [ undef, %"_ZN4core3ptr402drop_in_place$LT$futures_util..sink..send..Send$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$C$actix_http..h1..Message$LT$$LP$actix_http..requests..head..RequestHeadType$C$actix_http..body..size..BodySize$RP$$GT$$GT$$GT$17h1df0d97a8620fad0E.exit" ] - %.sroa.8.sroa.4.sroa.3.sroa.3.0 = phi i64 [ %.sroa.8.sroa.4.sroa.3.sroa.3.2, %98 ], [ undef, %"_ZN4core3ptr402drop_in_place$LT$futures_util..sink..send..Send$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$C$actix_http..h1..Message$LT$$LP$actix_http..requests..head..RequestHeadType$C$actix_http..body..size..BodySize$RP$$GT$$GT$$GT$17h1df0d97a8620fad0E.exit" ] + %.sroa.7.0 = phi ptr [ %.sroa.7.2, %100 ], [ %43, %"_ZN4core3ptr402drop_in_place$LT$futures_util..sink..send..Send$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$C$actix_http..h1..Message$LT$$LP$actix_http..requests..head..RequestHeadType$C$actix_http..body..size..BodySize$RP$$GT$$GT$$GT$17h1df0d97a8620fad0E.exit" ] + %.sroa.052.0 = phi i8 [ %.sroa.052.2, %100 ], [ 2, %"_ZN4core3ptr402drop_in_place$LT$futures_util..sink..send..Send$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$C$actix_http..h1..Message$LT$$LP$actix_http..requests..head..RequestHeadType$C$actix_http..body..size..BodySize$RP$$GT$$GT$$GT$17h1df0d97a8620fad0E.exit" ] + %.sroa.8.sroa.0.0 = phi ptr [ %.sroa.036.sroa.11.0.copyload71, %100 ], [ undef, %"_ZN4core3ptr402drop_in_place$LT$futures_util..sink..send..Send$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$C$actix_http..h1..Message$LT$$LP$actix_http..requests..head..RequestHeadType$C$actix_http..body..size..BodySize$RP$$GT$$GT$$GT$17h1df0d97a8620fad0E.exit" ] + %.sroa.8.sroa.4.sroa.0.0 = phi ptr [ %.sroa.8.sroa.4.sroa.0.2, %100 ], [ undef, %"_ZN4core3ptr402drop_in_place$LT$futures_util..sink..send..Send$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$C$actix_http..h1..Message$LT$$LP$actix_http..requests..head..RequestHeadType$C$actix_http..body..size..BodySize$RP$$GT$$GT$$GT$17h1df0d97a8620fad0E.exit" ] + %.sroa.8.sroa.4.sroa.3.sroa.0.0 = phi i64 [ %.sroa.8.sroa.4.sroa.3.sroa.0.2, %100 ], [ undef, %"_ZN4core3ptr402drop_in_place$LT$futures_util..sink..send..Send$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$C$actix_http..h1..Message$LT$$LP$actix_http..requests..head..RequestHeadType$C$actix_http..body..size..BodySize$RP$$GT$$GT$$GT$17h1df0d97a8620fad0E.exit" ] + %.sroa.8.sroa.4.sroa.3.sroa.3.0 = phi i64 [ %.sroa.8.sroa.4.sroa.3.sroa.3.2, %100 ], [ undef, %"_ZN4core3ptr402drop_in_place$LT$futures_util..sink..send..Send$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$C$actix_http..h1..Message$LT$$LP$actix_http..requests..head..RequestHeadType$C$actix_http..body..size..BodySize$RP$$GT$$GT$$GT$17h1df0d97a8620fad0E.exit" ] %71 = getelementptr inbounds nuw i8, ptr %1, i64 336 invoke void @"_ZN4core3ptr244drop_in_place$LT$actix_codec..framed..Framed$LT$awc..client..connection..Connection$LT$tokio..net..tcp..stream..TcpStream$C$alloc..boxed..Box$LT$dyn$u20$awc..client..connection..ConnectionIo$GT$$GT$$C$actix_http..h1..client..ClientCodec$GT$$GT$17h30267f938018057aE"(ptr noalias noundef nonnull align 8 dereferenceable(256) %71) - to label %96 unwind label %99 + to label %98 unwind label %99 72: ; preds = %64, %39, %69 %.pn15.pn = phi { ptr, i32 } [ %.pn13, %69 ], [ %65, %64 ], [ %40, %39 ] @@ -13981,20 +13973,18 @@ common.ret: ; preds = %96, %81, %62 %86 = getelementptr inbounds nuw i8, ptr %7, i64 83 %87 = load i8, ptr %86, align 1, !range !555, !alias.scope !1649, !noalias !1646, !noundef !7 %88 = icmp eq i8 %87, 7 + %.sroa.036.sroa.0.0.copyload67 = load i64, ptr %7, align 8 + %.sroa.036.sroa.11.0..sroa_idx70 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %.sroa.036.sroa.11.0.copyload71 = load ptr, ptr %.sroa.036.sroa.11.0..sroa_idx70, align 8, !alias.scope !1651 + %.sroa.036.sroa.12.0..sroa_idx73 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %.sroa.036.sroa.12.sroa.0.0.copyload76 = load ptr, ptr %.sroa.036.sroa.12.0..sroa_idx73, align 8, !alias.scope !1651 + %.sroa.036.sroa.12.sroa.10.0..sroa.036.sroa.12.0..sroa_idx73.sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 24 + %.sroa.036.sroa.12.sroa.10.sroa.0.0.copyload79 = load ptr, ptr %.sroa.036.sroa.12.sroa.10.0..sroa.036.sroa.12.0..sroa_idx73.sroa_idx, align 8, !alias.scope !1651 + %.sroa.036.sroa.12.sroa.10.sroa.10.0..sroa.036.sroa.12.sroa.10.0..sroa.036.sroa.12.0..sroa_idx73.sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 32 + %.sroa.036.sroa.12.sroa.10.sroa.10.sroa.0.0.copyload82 = load i64, ptr %.sroa.036.sroa.12.sroa.10.sroa.10.0..sroa.036.sroa.12.sroa.10.0..sroa.036.sroa.12.0..sroa_idx73.sroa_idx.sroa_idx, align 8, !alias.scope !1651 br i1 %88, label %91, label %89 89: ; preds = %85 - %.sroa.036.sroa.0.0.copyload = load i8, ptr %7, align 8, !alias.scope !1651 - %.sroa.036.sroa.10.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 1 - %.sroa.036.sroa.10.sroa.0.0.copyload = load i56, ptr %.sroa.036.sroa.10.0..sroa_idx, align 1, !alias.scope !1651 - %.sroa.036.sroa.11.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 8 - %.sroa.036.sroa.11.0.copyload = load ptr, ptr %.sroa.036.sroa.11.0..sroa_idx, align 8, !alias.scope !1651 - %.sroa.036.sroa.12.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 16 - %.sroa.036.sroa.12.sroa.0.0.copyload = load ptr, ptr %.sroa.036.sroa.12.0..sroa_idx, align 8, !alias.scope !1651 - %.sroa.036.sroa.12.sroa.10.0..sroa.036.sroa.12.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 24 - %.sroa.036.sroa.12.sroa.10.sroa.0.0.copyload = load ptr, ptr %.sroa.036.sroa.12.sroa.10.0..sroa.036.sroa.12.0..sroa_idx.sroa_idx, align 8, !alias.scope !1651 - %.sroa.036.sroa.12.sroa.10.sroa.10.0..sroa.036.sroa.12.sroa.10.0..sroa.036.sroa.12.0..sroa_idx.sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 32 - %.sroa.036.sroa.12.sroa.10.sroa.10.sroa.0.0.copyload = load i64, ptr %.sroa.036.sroa.12.sroa.10.sroa.10.0..sroa.036.sroa.12.sroa.10.0..sroa.036.sroa.12.0..sroa_idx.sroa_idx.sroa_idx, align 8, !alias.scope !1651 %.sroa.036.sroa.12.sroa.10.sroa.10.sroa.10.0..sroa.036.sroa.12.sroa.10.sroa.10.0..sroa.036.sroa.12.sroa.10.0..sroa.036.sroa.12.0..sroa_idx.sroa_idx.sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 40 %.sroa.036.sroa.12.sroa.10.sroa.10.sroa.10.0.copyload = load i64, ptr %.sroa.036.sroa.12.sroa.10.sroa.10.sroa.10.0..sroa.036.sroa.12.sroa.10.sroa.10.0..sroa.036.sroa.12.sroa.10.0..sroa.036.sroa.12.0..sroa_idx.sroa_idx.sroa_idx.sroa_idx, align 8, !alias.scope !1651 %.sroa.036.sroa.12.sroa.11.0..sroa.036.sroa.12.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 48 @@ -14003,48 +13993,35 @@ common.ret: ; preds = %96, %81, %62 %.sroa.1240.0.copyload42 = load i32, ptr %.sroa.1240.0..sroa_idx41, align 4, !alias.scope !1651 call void @llvm.lifetime.end.p0(ptr nonnull %7) %90 = icmp eq i8 %87, 6 - br i1 %90, label %95, label %93 + br i1 %90, label %98, label %93 91: ; preds = %85 - %.sroa.036.sroa.0.0.copyload67 = load i64, ptr %7, align 8, !alias.scope !1651 - %.sroa.036.sroa.11.0..sroa_idx70 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %.sroa.036.sroa.11.0.copyload71 = load ptr, ptr %.sroa.036.sroa.11.0..sroa_idx70, align 8, !alias.scope !1651 - %.sroa.036.sroa.12.0..sroa_idx73 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %.sroa.036.sroa.12.sroa.0.0.copyload76 = load ptr, ptr %.sroa.036.sroa.12.0..sroa_idx73, align 8, !alias.scope !1651 - %.sroa.036.sroa.12.sroa.10.0..sroa.036.sroa.12.0..sroa_idx73.sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 24 - %.sroa.036.sroa.12.sroa.10.sroa.0.0.copyload79 = load ptr, ptr %.sroa.036.sroa.12.sroa.10.0..sroa.036.sroa.12.0..sroa_idx73.sroa_idx, align 8, !alias.scope !1651 - %.sroa.036.sroa.12.sroa.10.sroa.10.0..sroa.036.sroa.12.sroa.10.0..sroa.036.sroa.12.0..sroa_idx73.sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 32 - %.sroa.036.sroa.12.sroa.10.sroa.10.sroa.0.0.copyload82 = load i64, ptr %.sroa.036.sroa.12.sroa.10.sroa.10.0..sroa.036.sroa.12.sroa.10.0..sroa.036.sroa.12.0..sroa_idx73.sroa_idx.sroa_idx, align 8, !alias.scope !1651 call void @llvm.lifetime.end.p0(ptr nonnull %7) %92 = ptrtoint ptr %.sroa.036.sroa.12.sroa.10.sroa.0.0.copyload79 to i64 br label %98 93: ; preds = %89 + %94 = lshr i64 %.sroa.036.sroa.0.0.copyload67, 8 + %95 = trunc nuw i64 %94 to i56 + %96 = trunc i64 %.sroa.036.sroa.0.0.copyload67 to i8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(35) %.sroa.8.sroa.5, ptr noundef nonnull align 8 dereferenceable(35) %.sroa.044.sroa.7.sroa.3, i64 35, i1 false) %94 = getelementptr inbounds nuw i8, ptr %1, i64 336 %.sroa.059.0.copyload = load i64, ptr %94, align 8 %.sroa.460.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 344 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(248) %.sroa.14, ptr noundef nonnull align 8 dereferenceable(248) %.sroa.460.0..sroa_idx, i64 248, i1 false) - br label %96 - -95: ; preds = %89 - %.sroa.4.i23.sroa.3.7.insert.ext = zext i8 %.sroa.036.sroa.0.0.copyload to i64 - %.sroa.4.i23.sroa.3.8.insert.ext = zext i56 %.sroa.036.sroa.10.sroa.0.0.copyload to i64 - %.sroa.4.i23.sroa.3.8.insert.shift = shl nuw i64 %.sroa.4.i23.sroa.3.8.insert.ext, 8 - %.sroa.4.i23.sroa.3.8.insert.insert = or disjoint i64 %.sroa.4.i23.sroa.3.8.insert.shift, %.sroa.4.i23.sroa.3.7.insert.ext br label %98 96: ; preds = %70, %93 %.sroa.1058.1 = phi i64 [ %.sroa.059.0.copyload, %93 ], [ 2, %70 ] %.sroa.9.0 = phi i32 [ %.sroa.1240.0.copyload42, %93 ], [ undef, %70 ] %.sroa.857.0 = phi i8 [ %87, %93 ], [ undef, %70 ] - %.sroa.7.1 = phi ptr [ %.sroa.036.sroa.11.0.copyload, %93 ], [ %.sroa.7.0, %70 ] - %.sroa.052.1 = phi i8 [ %.sroa.036.sroa.0.0.copyload, %93 ], [ %.sroa.052.0, %70 ] - %.sroa.8.sroa.0.1 = phi ptr [ %.sroa.036.sroa.12.sroa.0.0.copyload, %93 ], [ %.sroa.8.sroa.0.0, %70 ] - %.sroa.8.sroa.4.sroa.0.1 = phi ptr [ %.sroa.036.sroa.12.sroa.10.sroa.0.0.copyload, %93 ], [ %.sroa.8.sroa.4.sroa.0.0, %70 ] - %.sroa.8.sroa.4.sroa.3.sroa.0.1 = phi i64 [ %.sroa.036.sroa.12.sroa.10.sroa.10.sroa.0.0.copyload, %93 ], [ %.sroa.8.sroa.4.sroa.3.sroa.0.0, %70 ] + %.sroa.7.1 = phi ptr [ %.sroa.036.sroa.11.0.copyload71, %93 ], [ %.sroa.7.0, %70 ] + %.sroa.052.1 = phi i8 [ %96, %93 ], [ %.sroa.052.0, %70 ] + %.sroa.8.sroa.0.1 = phi ptr [ %.sroa.036.sroa.12.sroa.0.0.copyload76, %93 ], [ %.sroa.8.sroa.0.0, %70 ] + %.sroa.8.sroa.4.sroa.0.1 = phi ptr [ %.sroa.036.sroa.12.sroa.10.sroa.0.0.copyload79, %93 ], [ %.sroa.8.sroa.4.sroa.0.0, %70 ] + %.sroa.8.sroa.4.sroa.3.sroa.0.1 = phi i64 [ %.sroa.036.sroa.12.sroa.10.sroa.10.sroa.0.0.copyload82, %93 ], [ %.sroa.8.sroa.4.sroa.3.sroa.0.0, %70 ] %.sroa.8.sroa.4.sroa.3.sroa.3.1 = phi i64 [ %.sroa.036.sroa.12.sroa.10.sroa.10.sroa.10.0.copyload, %93 ], [ %.sroa.8.sroa.4.sroa.3.sroa.3.0, %70 ] - %.sroa.554.sroa.0.1 = phi i56 [ %.sroa.036.sroa.10.sroa.0.0.copyload, %93 ], [ undef, %70 ] + %.sroa.554.sroa.0.1 = phi i56 [ %95, %93 ], [ undef, %70 ] %97 = getelementptr inbounds nuw i8, ptr %1, i64 593 store i8 0, ptr %97, align 1 call void @llvm.lifetime.end.p0(ptr nonnull %10) @@ -14073,14 +14050,12 @@ common.ret: ; preds = %96, %81, %62 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(248) %.sroa.14.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(248) %.sroa.14, i64 248, i1 false) br label %common.ret -98: ; preds = %95, %91 - %.sroa.036.sroa.11.0103 = phi ptr [ %.sroa.036.sroa.11.0.copyload71, %91 ], [ %.sroa.036.sroa.11.0.copyload, %95 ] - %.sroa.7.2.in = phi i64 [ %.sroa.036.sroa.0.0.copyload67, %91 ], [ %.sroa.4.i23.sroa.3.8.insert.insert, %95 ] - %.sroa.052.2 = phi i8 [ 1, %91 ], [ 3, %95 ] - %.sroa.8.sroa.4.sroa.0.2 = phi ptr [ %.sroa.036.sroa.12.sroa.0.0.copyload76, %91 ], [ undef, %95 ] - %.sroa.8.sroa.4.sroa.3.sroa.0.2 = phi i64 [ %92, %91 ], [ undef, %95 ] - %.sroa.8.sroa.4.sroa.3.sroa.3.2 = phi i64 [ %.sroa.036.sroa.12.sroa.10.sroa.10.sroa.0.0.copyload82, %91 ], [ undef, %95 ] - %.sroa.7.2 = inttoptr i64 %.sroa.7.2.in to ptr +98: ; preds = %89, %91 + %.sroa.036.sroa.11.0103 = phi i8 [ 1, %91 ], [ 3, %89 ] + %.sroa.7.2.in = phi ptr [ %.sroa.036.sroa.12.sroa.0.0.copyload76, %91 ], [ undef, %89 ] + %.sroa.052.2 = phi i64 [ %92, %91 ], [ undef, %89 ] + %.sroa.8.sroa.4.sroa.0.2 = phi i64 [ %.sroa.036.sroa.12.sroa.10.sroa.10.sroa.0.0.copyload82, %91 ], [ undef, %89 ] + %.sroa.7.2 = inttoptr i64 %.sroa.036.sroa.0.0.copyload67 to ptr br label %70 99: ; preds = %70 @@ -14096,7 +14071,7 @@ common.ret: ; preds = %96, %81, %62 102: ; preds = %30 invoke void @"_ZN4core3ptr64drop_in_place$LT$actix_http..requests..head..RequestHeadType$GT$17h4eac8e7d6afb3830E.llvm.3304932924735990938"(ptr noalias noundef nonnull align 8 dereferenceable(216) %10) #35 - to label %101 unwind label %28 + to label %103 unwind label %28 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable diff --git a/bench/boost/optimized/get_turns_areal_areal.ll b/bench/boost/optimized/get_turns_areal_areal.ll index f2475fc8b7e..b3171825d97 100644 --- a/bench/boost/optimized/get_turns_areal_areal.ll +++ b/bench/boost/optimized/get_turns_areal_areal.ll @@ -144275,7 +144275,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS ; Function Attrs: inlinehint mustprogress uwtable define linkonce_odr hidden void @_ZN5boost8geometry6detail3wkt18container_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEEE5applyINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSI_SaIcEEEEESR_EEEEvRT_RKSU_RKSR_SC_(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull align 8 dereferenceable(136) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(24) %3) local_unnamed_addr #4 comdat align 2 { - %5 = alloca %"class.boost::geometry::model::point", align 4 + %5 = alloca %"class.boost::geometry::model::point", align 8 tail call void @_ZN5boost8geometry6detail3wkt23handle_open_parenthesisINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS7_SaIcEEEEESG_EEEEvRT_RKSJ_RKSG_(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull align 8 dereferenceable(136) %1, ptr noundef nonnull align 8 dereferenceable(32) %2) %6 = getelementptr inbounds nuw i8, ptr %1, i64 96 %7 = getelementptr inbounds nuw i8, ptr %0, i64 96 @@ -144284,12 +144284,11 @@ define linkonce_odr hidden void @_ZN5boost8geometry6detail3wkt18container_append %10 = getelementptr inbounds nuw i8, ptr %1, i64 88 %11 = getelementptr inbounds nuw i8, ptr %0, i64 88 %12 = getelementptr inbounds nuw i8, ptr %0, i64 104 - %13 = getelementptr inbounds nuw i8, ptr %5, i64 4 - %14 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %15 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %13 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %14 = getelementptr inbounds nuw i8, ptr %3, i64 16 br label %16 -16: ; preds = %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit37, %4 +16: ; preds = %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit29, %4 %17 = load i8, ptr %6, align 8, !tbaa !2338, !range !17, !noundef !18 %18 = trunc nuw i8 %17 to i1 %19 = load i8, ptr %7, align 8, !range !17 @@ -144326,48 +144325,43 @@ _ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIc %34 = load i8, ptr %7, align 8, !range !17 %35 = trunc nuw i8 %34 to i1 %or.cond.i.i.i20 = select i1 %33, i1 %35, i1 false - br i1 %or.cond.i.i.i20, label %36, label %40 + br i1 %or.cond.i.i.i20, label %35, label %39 -36: ; preds = %31 - %37 = load ptr, ptr %8, align 8, !tbaa !174 - %38 = load ptr, ptr %9, align 8, !tbaa !174 - %39 = icmp eq ptr %37, %38 - br i1 %39, label %_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21, label %_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21.thread - -40: ; preds = %31 - %41 = icmp eq i8 %32, %34 - br i1 %41, label %.critedge19, label %_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21.thread - -_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21: ; preds = %36 - %42 = load ptr, ptr %10, align 8, !tbaa !174 - %43 = load ptr, ptr %11, align 8, !tbaa !174 +_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21: ; preds = %30 + %42 = load ptr, ptr %8, align 8, !tbaa !174 + %43 = load ptr, ptr %9, align 8, !tbaa !174 %44 = icmp eq ptr %42, %43 - br i1 %44, label %.critedge19, label %_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21.thread + br i1 %44, label %51, label %_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21.thread -_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21.thread: ; preds = %40, %36, %_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21 - %45 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.163) #56 - %46 = icmp eq i32 %45, 0 - %47 = load i32, ptr %5, align 4, !tbaa !263 - %48 = load i32, ptr %13, align 4, !tbaa !263 - %49 = load ptr, ptr %14, align 8, !tbaa !2334 - %50 = load ptr, ptr %15, align 8, !tbaa !2331 - %.not.i.i.i.i.i = icmp eq ptr %49, %50 - br i1 %.not.i.i.i.i.i, label %54, label %51 +_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21.thread: ; preds = %30 + %40 = icmp eq i8 %31, %33 + br i1 %40, label %.critedge19, label %_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21.thread -51: ; preds = %_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21.thread - %.sroa.5.0.insert.ext.i.i.i = zext i32 %48 to i64 - %.sroa.5.0.insert.shift.i.i.i = shl nuw i64 %.sroa.5.0.insert.ext.i.i.i, 32 - %.sroa.0.0.insert.ext.i.i.i = zext i32 %47 to i64 - %.sroa.0.0.insert.insert.i.i.i = or disjoint i64 %.sroa.5.0.insert.shift.i.i.i, %.sroa.0.0.insert.ext.i.i.i - store i64 %.sroa.0.0.insert.insert.i.i.i, ptr %49, align 4, !tbaa !24 - %52 = load ptr, ptr %14, align 8, !tbaa !2334 - %53 = getelementptr inbounds nuw i8, ptr %52, i64 8 - store ptr %53, ptr %14, align 8, !tbaa !2334 +_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21:; preds = %35 + %41 = load ptr, ptr %10, align 8, !tbaa !174 + %42 = load ptr, ptr %11, align 8, !tbaa !174 + %43 = icmp eq ptr %41, %42 + br i1 %43, label %.critedge19, label %_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21.thread + +_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21.thread:; preds = %39, %35, %_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21 + %44 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.163) #56 + %45 = icmp eq i32 %44, 0 + %46 = load i64, ptr %5, align 8 + %47 = load ptr, ptr %13, align 8, !tbaa !2334 + %48 = load ptr, ptr %14, align 8, !tbaa !2331 + %.not.i.i.i.i.i = icmp eq ptr %47, %48 + br i1 %.not.i.i.i.i.i, label %52, label %49 + +49: ; preds = %_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21.thread + store i64 %46, ptr %47, align 4, !tbaa !24 + %50 = load ptr, ptr %13, align 8, !tbaa !2334 + %51 = getelementptr inbounds nuw i8, ptr %50, i64 8 + store ptr %51, ptr %13, align 8, !tbaa !2334 br label %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit 54: ; preds = %_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21.thread %55 = load ptr, ptr %3, align 8, !tbaa !2329 - %56 = ptrtoint ptr %49 to i64 + %56 = ptrtoint ptr %47 to i64 %57 = ptrtoint ptr %55 to i64 %58 = sub i64 %56, %57 %59 = icmp eq i64 %58, 9223372036854775800 @@ -144389,19 +144383,15 @@ _ZNKSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE12_M %66 = shl nuw nsw i64 %65, 3 %67 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %66) #59 %68 = getelementptr inbounds i8, ptr %67, i64 %58 - %.sroa.5.0.insert.ext7.i.i.i = zext i32 %48 to i64 - %.sroa.5.0.insert.shift8.i.i.i = shl nuw i64 %.sroa.5.0.insert.ext7.i.i.i, 32 - %.sroa.0.0.insert.ext3.i.i.i = zext i32 %47 to i64 - %.sroa.0.0.insert.insert5.i.i.i = or disjoint i64 %.sroa.5.0.insert.shift8.i.i.i, %.sroa.0.0.insert.ext3.i.i.i - store i64 %.sroa.0.0.insert.insert5.i.i.i, ptr %68, align 4, !tbaa !24 - %69 = icmp sgt i64 %58, 0 - br i1 %69, label %70, label %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit16.i.i.i.i.i.i + store i64 %46, ptr %66, align 4, !tbaa !24 + %67 = icmp sgt i64 %56, 0 + br i1 %67, label %68, label %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit16.i.i.i.i.i.i -70: ; preds = %_ZNKSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE12_M_check_lenEmPKc.exit.i.i.i.i.i.i - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %67, ptr align 4 %55, i64 %58, i1 false) +68:; preds = %_ZNKSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE12_M_check_lenEmPKc.exit.i.i.i.i.i.i + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %65, ptr align 4 %53, i64 %58, i1 false) br label %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit16.i.i.i.i.i.i -_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit16.i.i.i.i.i.i: ; preds = %70, %_ZNKSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE12_M_check_lenEmPKc.exit.i.i.i.i.i.i +_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit16.i.i.i.i.i.i: ; preds = %68, %_ZNKSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE12_M_check_lenEmPKc.exit.i.i.i.i.i.i %71 = getelementptr inbounds nuw i8, ptr %68, i64 8 %.not.i17.i.i.i.i.i.i = icmp eq ptr %55, null br i1 %.not.i17.i.i.i.i.i.i, label %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i.i.i.i.i, label %72 @@ -144412,54 +144402,49 @@ _ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE11_S_ _ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i.i.i.i.i: ; preds = %72, %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit16.i.i.i.i.i.i store ptr %67, ptr %3, align 8, !tbaa !2329 - store ptr %71, ptr %14, align 8, !tbaa !2334 + store ptr %71, ptr %13, align 8, !tbaa !2334 %73 = getelementptr inbounds nuw %"class.boost::geometry::model::point", ptr %67, i64 %65 - store ptr %73, ptr %15, align 8, !tbaa !2331 + store ptr %73, ptr %14, align 8, !tbaa !2331 br label %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit -_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit: ; preds = %51, %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i.i.i.i.i - br i1 %46, label %74, label %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit37 +_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit: ; preds = %49, %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i.i.i.i.i + br i1 %45, label %74, label %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit29 74: ; preds = %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit %.sroa.0.0.copyload.i.i.i = load ptr, ptr %11, align 8, !tbaa !174 %75 = call noundef zeroext i1 @_ZN5boost14char_separatorIcSt11char_traitsIcEEclIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS2_SaIcEEEEESC_EEbRT_SE_RT0_(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr %.sroa.0.0.copyload.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %12) %76 = zext i1 %75 to i8 store i8 %76, ptr %7, align 8, !tbaa !2338 - br label %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit37 - -.critedge19: ; preds = %40, %_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21 - %77 = load i32, ptr %5, align 4, !tbaa !263 - %78 = load i32, ptr %13, align 4, !tbaa !263 - %79 = load ptr, ptr %14, align 8, !tbaa !2334 - %80 = load ptr, ptr %15, align 8, !tbaa !2331 - %.not.i.i.i.i.i22 = icmp eq ptr %79, %80 - br i1 %.not.i.i.i.i.i22, label %84, label %81 + br label %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit29 + +.critedge19: ; preds = %39, %_ZN5boost9iteratorsneINS_14token_iteratorINS_14char_separatorIcSt11char_traitsIcEEEN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcS5_SaIcEEEEESE_EESE_NS0_21forward_traversal_tagERKSE_lSG_SE_SH_SJ_lEENS0_6detail23enable_if_interoperableIT_T4_NS_3mpl6apply2INSK_12always_bool2ESM_SN_E4typeEE4typeERKNS0_15iterator_facadeISM_T0_T1_T2_T3_EERKNSV_ISN_T5_T6_T7_T8_EE.exit21 + %77 = load i64, ptr %5, align 8 + %78 = load ptr, ptr %13, align 8, !tbaa !2334 + %79 = load ptr, ptr %14, align 8, !tbaa !2331 + %.not.i.i.i.i.i22 = icmp eq ptr %78, %77 + br i1 %.not.i.i.i.i.i22, label %81, label %78 + +78: ; preds = %.critedge19 + store i64 %75, ptr %76, align 4, !tbaa !24 + %79 = load ptr, ptr %13, align 8, !tbaa !2334 + %80 = getelementptr inbounds nuw i8, ptr %79, i64 8 + store ptr %80, ptr %13, align 8, !tbaa !2334 + br label %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit29 81: ; preds = %.critedge19 - %.sroa.5.0.insert.ext.i.i.i23 = zext i32 %78 to i64 - %.sroa.5.0.insert.shift.i.i.i24 = shl nuw i64 %.sroa.5.0.insert.ext.i.i.i23, 32 - %.sroa.0.0.insert.ext.i.i.i25 = zext i32 %77 to i64 - %.sroa.0.0.insert.insert.i.i.i26 = or disjoint i64 %.sroa.5.0.insert.shift.i.i.i24, %.sroa.0.0.insert.ext.i.i.i25 - store i64 %.sroa.0.0.insert.insert.i.i.i26, ptr %79, align 4, !tbaa !24 - %82 = load ptr, ptr %14, align 8, !tbaa !2334 - %83 = getelementptr inbounds nuw i8, ptr %82, i64 8 - store ptr %83, ptr %14, align 8, !tbaa !2334 - br label %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit37 - -84: ; preds = %.critedge19 - %85 = load ptr, ptr %3, align 8, !tbaa !2329 - %86 = ptrtoint ptr %79 to i64 - %87 = ptrtoint ptr %85 to i64 - %88 = sub i64 %86, %87 - %89 = icmp eq i64 %88, 9223372036854775800 - br i1 %89, label %90, label %_ZNKSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE12_M_check_lenEmPKc.exit.i.i.i.i.i.i27 + %82 = load ptr, ptr %3, align 8, !tbaa !2329 + %83 = ptrtoint ptr %76 to i64 + %84 = ptrtoint ptr %82 to i64 + %85 = sub i64 %83, %84 + %86 = icmp eq i64 %85, 9223372036854775800 + br i1 %86, label %87, label %_ZNKSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE12_M_check_lenEmPKc.exit.i.i.i.i.i.i23 -90: ; preds = %84 +90: ; preds = %81 call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.477) #55 unreachable -_ZNKSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE12_M_check_lenEmPKc.exit.i.i.i.i.i.i27: ; preds = %84 - %91 = ashr exact i64 %88, 3 +_ZNKSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE12_M_check_lenEmPKc.exit.i.i.i.i.i.i27: ; preds = %81 + %91 = ashr exact i64 %85, 3 %.sroa.speculated.i.i.i.i.i.i.i28 = call i64 @llvm.umax.i64(i64 %91, i64 1) %92 = add nsw i64 %.sroa.speculated.i.i.i.i.i.i.i28, %91 %93 = icmp ult i64 %92, %91 @@ -144469,36 +144454,32 @@ _ZNKSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE12_M call void @llvm.assume(i1 %.not.i.i.i.i.i.i.i29) %96 = shl nuw nsw i64 %95, 3 %97 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %96) #59 - %98 = getelementptr inbounds i8, ptr %97, i64 %88 - %.sroa.5.0.insert.ext7.i.i.i30 = zext i32 %78 to i64 - %.sroa.5.0.insert.shift8.i.i.i31 = shl nuw i64 %.sroa.5.0.insert.ext7.i.i.i30, 32 - %.sroa.0.0.insert.ext3.i.i.i32 = zext i32 %77 to i64 - %.sroa.0.0.insert.insert5.i.i.i33 = or disjoint i64 %.sroa.5.0.insert.shift8.i.i.i31, %.sroa.0.0.insert.ext3.i.i.i32 - store i64 %.sroa.0.0.insert.insert5.i.i.i33, ptr %98, align 4, !tbaa !24 - %99 = icmp sgt i64 %88, 0 - br i1 %99, label %100, label %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit16.i.i.i.i.i.i34 - -100: ; preds = %_ZNKSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE12_M_check_lenEmPKc.exit.i.i.i.i.i.i27 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %97, ptr align 4 %85, i64 %88, i1 false) - br label %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit16.i.i.i.i.i.i34 - -_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit16.i.i.i.i.i.i34: ; preds = %100, %_ZNKSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE12_M_check_lenEmPKc.exit.i.i.i.i.i.i27 - %101 = getelementptr inbounds nuw i8, ptr %98, i64 8 - %.not.i17.i.i.i.i.i.i35 = icmp eq ptr %85, null - br i1 %.not.i17.i.i.i.i.i.i35, label %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i.i.i.i.i36, label %102 - -102: ; preds = %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit16.i.i.i.i.i.i34 - call void @_ZdlPvm(ptr noundef nonnull %85, i64 noundef %88) #58 - br label %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i.i.i.i.i36 - -_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i.i.i.i.i36: ; preds = %102, %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit16.i.i.i.i.i.i34 - store ptr %97, ptr %3, align 8, !tbaa !2329 - store ptr %101, ptr %14, align 8, !tbaa !2334 - %103 = getelementptr inbounds nuw %"class.boost::geometry::model::point", ptr %97, i64 %95 - store ptr %103, ptr %15, align 8, !tbaa !2331 - br label %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit37 - -_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit37: ; preds = %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i.i.i.i.i36, %81, %74, %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit + %98 = getelementptr inbounds i8, ptr %97, i64 %85 + store i64 %75, ptr %95, align 4, !tbaa !24 + %96 = icmp sgt i64 %85, 0 + br i1 %96, label %97, label %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit16.i.i.i.i.i.i26 + +97:; preds = %_ZNKSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE12_M_check_lenEmPKc.exit.i.i.i.i.i.i23 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %94, ptr align 4 %82, i64 %85, i1 false) + br label %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit16.i.i.i.i.i.i26 + +100: ; preds = %97, %_ZNKSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE12_M_check_lenEmPKc.exit.i.i.i.i.i.i27 + %98 = getelementptr inbounds nuw i8, ptr %95, i64 8 + %.not.i17.i.i.i.i.i.i27 = icmp eq ptr %82, null + br i1 %.not.i17.i.i.i.i.i.i27, label %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i.i.i.i.i28, label %99 + +99: ; preds = %100 + call void @_ZdlPvm(ptr noundef nonnull %82, i64 noundef %85) #58 + br label %_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i.i.i.i.i28 + +_ZNSt6vectorIN5boost8geometry5model5pointIiLm2ENS1_2cs9cartesianEEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i.i.i.i.i28:; preds = %99, %100 + store ptr %94, ptr %3, align 8, !tbaa !2329 + store ptr %98, ptr %13, align 8, !tbaa !2334 + %100 = getelementptr inbounds nuw %"class.boost::geometry::model::point", ptr %94, i64 %92 + store ptr %100, ptr %14, align 8, !tbaa !2331 + br label %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit29 + +_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit29:; preds = %102, %78, %72, %_ZN5boost8geometry6detail3wkt23stateful_range_appenderIRNS0_5model4ringINS4_5pointIiLm2ENS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEELNS0_16closure_selectorE1EE6appendESC_RKS9_b.exit call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %16, !llvm.loop !2375 diff --git a/bench/cmake/optimized/archive_read_support_format_zip.ll b/bench/cmake/optimized/archive_read_support_format_zip.ll index fd35db4c6fe..9bf7d03b836 100644 --- a/bench/cmake/optimized/archive_read_support_format_zip.ll +++ b/bench/cmake/optimized/archive_read_support_format_zip.ll @@ -6200,42 +6200,37 @@ define internal fastcc range(i32 -30, 1) i32 @zip_read_data_zipx_ppmd(ptr nounde 26: ; preds = %16 %27 = tail call i64 @__archive_read_consume(ptr noundef nonnull %0, i64 noundef 2) #21 - %.val.i = load i8, ptr %24, align 1, !tbaa !36 - %28 = getelementptr i8, ptr %24, i64 1 - %.val50.i = load i8, ptr %28, align 1, !tbaa !36 - %29 = zext i8 %.val50.i to i32 - %30 = zext i8 %.val.i to i32 - %31 = and i32 %30, 15 - %32 = add nuw nsw i32 %31, 1 - %33 = lshr i32 %29, 4 - %34 = icmp eq i32 %31, 0 - %35 = icmp ugt i8 %.val50.i, 47 - %or.cond.i = or i1 %35, %34 - br i1 %or.cond.i, label %36, label %37 - -36: ; preds = %26 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef nonnull %0, i32 noundef 84, ptr noundef nonnull @.str.107, i32 noundef %32, i32 noundef %33) #21 + %.val.i = load i16, ptr %24, align 1 + %28 = zext i16 %.val.i to i32 + %29 = and i32 %28, 15 + %30 = add nuw nsw i32 %29, 1 + %31 = lshr i32 %28, 12 + %32 = icmp eq i32 %29, 0 + %33 = icmp ugt i16 %.val.i, 12287 + %or.cond.i = or i1 %33, %32 + br i1 %or.cond.i, label %34, label %35 + +34:; preds = %26 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef nonnull %0, i32 noundef 84, ptr noundef nonnull @.str.107, i32 noundef %30, i32 noundef %31) #21 br label %zipx_ppmd8_init.exit.thread 37: ; preds = %26 %38 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @__archive_ppmd8_functions, i64 8), align 8, !tbaa !201 - %39 = shl nuw nsw i32 %29, 24 - %40 = shl nuw nsw i32 %30, 16 - %41 = or disjoint i32 %39, %40 - %42 = and i32 %41, 267386880 - %43 = add nuw nsw i32 %42, 1048576 - %44 = tail call i32 %38(ptr noundef nonnull %18, i32 noundef %43) #21 - %.not48.i = icmp eq i32 %44, 0 - br i1 %.not48.i, label %45, label %46 - -45: ; preds = %37 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef nonnull %0, i32 noundef 12, ptr noundef nonnull @.str.108, i32 noundef %43) #21 + %39 = shl nuw nsw i32 %28, 16 + %38 = and i32 %37, 267386880 + %39 = add nuw nsw i32 %38, 1048576 + %40 = tail call i32 %36(ptr noundef nonnull %18, i32 noundef %39) #21 + %.not48.i = icmp eq i32 %40, 0 + br i1 %.not48.i, label %41, label %42 + +41:; preds = %35 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef nonnull %0, i32 noundef 12, ptr noundef nonnull @.str.108, i32 noundef %39) #21 br label %zipx_ppmd8_init.exit.thread 46: ; preds = %37 store i8 1, ptr %11, align 8, !tbaa !102 %47 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @__archive_ppmd8_functions, i64 32), align 8, !tbaa !202 - %48 = tail call i32 %47(ptr noundef nonnull %18) #21 + %48 = tail call i32 %43(ptr noundef nonnull %18) #21 %.not49.i = icmp eq i32 %48, 0 br i1 %.not49.i, label %49, label %50 @@ -6245,7 +6240,7 @@ define internal fastcc range(i32 -30, 1) i32 @zip_read_data_zipx_ppmd(ptr nounde 50: ; preds = %46 %51 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @__archive_ppmd8_functions, i64 24), align 8, !tbaa !203 - tail call void %51(ptr noundef nonnull %18, i32 noundef %32, i32 noundef %33) #21 + tail call void %47(ptr noundef nonnull %18, i32 noundef %30, i32 noundef %31) #21 %52 = getelementptr inbounds nuw i8, ptr %7, i64 168 %53 = load ptr, ptr %52, align 8, !tbaa !101 tail call void @free(ptr noundef %53) #21 @@ -6291,8 +6286,8 @@ zipx_ppmd8_init.exit: ; preds = %50 br label %75 75: ; preds = %82, %68 - %.035 = phi i64 [ 0, %68 ], [ %86, %82 ] - %76 = call i32 %70(ptr noundef nonnull %71) #21 + %.035 = phi i64 [ 0, %64 ], [ %86, %78 ] + %76 = call i32 %66(ptr noundef nonnull %71) #21 %77 = icmp slt i32 %76, 0 br i1 %77, label %80, label %78 @@ -6327,8 +6322,8 @@ zipx_ppmd8_init.exit: ; preds = %50 br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %80 - %.not41 = phi i1 [ false, %80 ], [ %89, %.loopexit.loopexit ] - %.1369 = phi i64 [ %.035, %80 ], [ %86, %.loopexit.loopexit ] + %.not41 = phi i1 [ false, %76 ], [ %89, %.loopexit.loopexit ] + %.1369 = phi i64 [ %.035, %76 ], [ %86, %.loopexit.loopexit ] %90 = load i64, ptr %69, align 8, !tbaa !200 %91 = getelementptr inbounds nuw i8, ptr %7, i64 120 %92 = load i64, ptr %91, align 8, !tbaa !92 @@ -6346,7 +6341,7 @@ zipx_ppmd8_init.exit: ; preds = %50 100: ; preds = %.loopexit %101 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @__archive_ppmd8_functions, i64 16), align 8, !tbaa !103 - call void %101(ptr noundef nonnull %71) #21 + call void %97(ptr noundef nonnull %71) #21 %102 = getelementptr inbounds nuw i8, ptr %7, i64 7968 store i8 0, ptr %102, align 8, !tbaa !102 br label %103 @@ -6357,8 +6352,8 @@ zipx_ppmd8_init.exit: ; preds = %50 store i64 %.1369, ptr %2, align 8, !tbaa !69 br label %zipx_ppmd8_init.exit.thread -zipx_ppmd8_init.exit.thread: ; preds = %25, %45, %49, %57, %36, %.thread, %103, %67 - %.0 = phi i32 [ -30, %67 ], [ 0, %103 ], [ -30, %.thread ], [ -30, %25 ], [ -30, %45 ], [ -30, %49 ], [ -30, %57 ], [ -25, %36 ] +zipx_ppmd8_init.exit.thread: ; preds = %25, %41, %49, %57, %34, %.thread, %103, %67 + %.0 = phi i32 [ -30, %63 ], [ 0, %99 ], [ -30, %.thread ], [ -30, %25 ], [ -30, %41 ], [ -30, %45 ], [ -30, %53 ], [ -25, %34 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0 } diff --git a/bench/cpython/optimized/Hacl_Hash_Blake2b.ll b/bench/cpython/optimized/Hacl_Hash_Blake2b.ll index 42aa46b458d..5a3cbd3816b 100644 --- a/bench/cpython/optimized/Hacl_Hash_Blake2b.ll +++ b/bench/cpython/optimized/Hacl_Hash_Blake2b.ll @@ -2579,82 +2579,64 @@ define hidden void @python_hashlib_Hacl_Hash_Blake2b_hash_with_key_and_params(pt store i64 2270897969802886507, ptr %18, align 16, !tbaa !3 %19 = getelementptr inbounds nuw i8, ptr %9, i64 120 store i64 6620516959819538809, ptr %19, align 8, !tbaa !3 - %20 = getelementptr inbounds nuw i8, ptr %3, i64 1 - %21 = load i8, ptr %20, align 1, !tbaa !19 - %22 = load i8, ptr %3, align 8, !tbaa !22 + %20 = load i64, ptr %3, align 8 + %21 = lshr i64 %20, 8 + %22 = trunc i64 %21 to i8 %23 = getelementptr inbounds nuw i8, ptr %3, i64 24 - %24 = load ptr, ptr %23, align 8, !tbaa !23 + %24 = load ptr, ptr %23, align 8, !tbaa !22 %.val87 = load i64, ptr %24, align 1 %25 = getelementptr i8, ptr %24, i64 8 %.val86 = load i64, ptr %25, align 1 %26 = getelementptr inbounds nuw i8, ptr %3, i64 32 - %27 = load ptr, ptr %26, align 8, !tbaa !24 + %27 = load ptr, ptr %26, align 8, !tbaa !23 %.val85 = load i64, ptr %27, align 1 %28 = getelementptr i8, ptr %27, i64 8 %.val = load i64, ptr %28, align 1 - %29 = zext i8 %22 to i64 - %30 = zext i8 %21 to i64 - %31 = shl nuw nsw i64 %30, 8 - %32 = getelementptr inbounds nuw i8, ptr %3, i64 2 - %33 = load i8, ptr %32, align 2, !tbaa !25 - %34 = zext i8 %33 to i64 - %35 = shl nuw nsw i64 %34, 16 - %36 = getelementptr inbounds nuw i8, ptr %3, i64 3 - %37 = load i8, ptr %36, align 1, !tbaa !26 - %38 = zext i8 %37 to i64 - %39 = shl nuw nsw i64 %38, 24 - %40 = getelementptr inbounds nuw i8, ptr %3, i64 4 - %41 = load i32, ptr %40, align 4, !tbaa !27 - %42 = zext i32 %41 to i64 - %43 = shl nuw i64 %42, 32 - %44 = or disjoint i64 %31, %35 - %45 = or disjoint i64 %44, %39 - %46 = or disjoint i64 %45, %43 - %47 = or disjoint i64 %46, %29 - %48 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %49 = load i64, ptr %48, align 8, !tbaa !28 - %50 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %51 = load i16, ptr %50, align 8 - %52 = zext i16 %51 to i64 - %53 = xor i64 %47, 7640891576956012808 - %54 = xor i64 %49, -4942790177534073029 - %55 = xor i64 %52, 4354685564936845355 - %56 = xor i64 %.val87, 5840696475078001361 - %57 = xor i64 %.val86, -7276294671716946913 - %58 = xor i64 %.val85, 2270897969802886507 - %59 = xor i64 %.val, 6620516959819538809 - store i64 %53, ptr %9, align 16, !tbaa !3 - %60 = getelementptr inbounds nuw i8, ptr %9, i64 8 - store i64 %54, ptr %60, align 8, !tbaa !3 - %61 = getelementptr inbounds nuw i8, ptr %9, i64 16 - store i64 %55, ptr %61, align 16, !tbaa !3 - %62 = getelementptr inbounds nuw i8, ptr %9, i64 24 - store i64 -6534734903238641935, ptr %62, align 8, !tbaa !3 - store i64 %56, ptr %11, align 16, !tbaa !3 - %63 = getelementptr inbounds nuw i8, ptr %9, i64 40 - store i64 %57, ptr %63, align 8, !tbaa !3 - %64 = getelementptr inbounds nuw i8, ptr %9, i64 48 - store i64 %58, ptr %64, align 16, !tbaa !3 - %65 = getelementptr inbounds nuw i8, ptr %9, i64 56 - store i64 %59, ptr %65, align 8, !tbaa !3 - %.not.i = icmp eq i8 %21, 0 - br i1 %.not.i, label %73, label %66 - -66: ; preds = %5 + %29 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %30 = load i64, ptr %29, align 8, !tbaa !24 + %31 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %32 = load i16, ptr %31, align 8 + %33 = zext i16 %32 to i64 + %34 = xor i64 %20, 7640891576956012808 + %35 = xor i64 %30, -4942790177534073029 + %36 = xor i64 %33, 4354685564936845355 + %37 = xor i64 %.val87, 5840696475078001361 + %38 = xor i64 %.val86, -7276294671716946913 + %39 = xor i64 %.val85, 2270897969802886507 + %40 = xor i64 %.val, 6620516959819538809 + store i64 %34, ptr %9, align 16, !tbaa !3 + %41 = getelementptr inbounds nuw i8, ptr %9, i64 8 + store i64 %35, ptr %41, align 8, !tbaa !3 + %42 = getelementptr inbounds nuw i8, ptr %9, i64 16 + store i64 %36, ptr %42, align 16, !tbaa !3 + %43 = getelementptr inbounds nuw i8, ptr %9, i64 24 + store i64 -6534734903238641935, ptr %43, align 8, !tbaa !3 + store i64 %37, ptr %11, align 16, !tbaa !3 + %44 = getelementptr inbounds nuw i8, ptr %9, i64 40 + store i64 %38, ptr %44, align 8, !tbaa !3 + %45 = getelementptr inbounds nuw i8, ptr %9, i64 48 + store i64 %39, ptr %45, align 16, !tbaa !3 + %46 = getelementptr inbounds nuw i8, ptr %9, i64 56 + store i64 %40, ptr %46, align 8, !tbaa !3 + %.not.i = icmp eq i8 %22, 0 + br i1 %.not.i, label %55, label %47 + +47:; preds = %5 call void @llvm.lifetime.start.p0(ptr nonnull %8) - %67 = icmp slt i8 %21, 0 - %68 = sub nsw i64 128, %30 - %69 = select i1 %67, i64 0, i64 %68 - %70 = getelementptr i8, ptr %8, i64 %30 - call void @llvm.memset.p0.i64(ptr align 1 %70, i8 0, i64 %69, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %8, ptr noundef nonnull readonly align 1 dereferenceable(1) %4, i64 %30, i1 false) - %71 = icmp eq i32 %2, 0 - call fastcc void @update_block(ptr noundef nonnull %10, ptr noundef nonnull %9, i1 noundef zeroext %71, i1 noundef zeroext false, i64 128, i64 0, ptr noundef nonnull %8) + %48 = and i64 %21, 255 + %49 = icmp slt i8 %22, 0 + %50 = sub nsw i64 128, %48 + %51 = select i1 %49, i64 0, i64 %50 + %52 = getelementptr i8, ptr %8, i64 %48 + call void @llvm.memset.p0.i64(ptr align 1 %52, i8 0, i64 %51, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %8, ptr noundef nonnull readonly align 1 dereferenceable(1) %4, i64 %48, i1 false) + %53 = icmp eq i32 %2, 0 + call fastcc void @update_block(ptr noundef nonnull %10, ptr noundef nonnull %9, i1 noundef zeroext %53, i1 noundef zeroext false, i64 128, i64 0, ptr noundef nonnull %8) call void @Lib_Memzero0_memzero0(ptr noundef nonnull %8, i64 noundef 128) #19 call void @llvm.lifetime.end.p0(ptr nonnull %8) - br i1 %71, label %update.exit, label %72 + br i1 %53, label %update.exit, label %72 -72: ; preds = %66 +72: ; preds = %47 call fastcc void @update_blocks(i32 noundef %2, ptr noundef nonnull %10, ptr noundef nonnull %9, i64 128, ptr noundef readonly %1) br label %update.exit @@ -2700,32 +2682,33 @@ update_blocks.exit: ; preds = %.lr.ph.i.i, %73 call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %update.exit -update.exit: ; preds = %66, %72, %update_blocks.exit +update.exit: ; preds = %47, %72, %update_blocks.exit call void @llvm.lifetime.start.p0(ptr nonnull %7) %90 = getelementptr inbounds nuw i8, ptr %7, i64 32 %91 = load i64, ptr %9, align 16, !tbaa !3 store i64 %91, ptr %7, align 16 %92 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %93 = load i64, ptr %60, align 8, !tbaa !3 + %93 = load i64, ptr %41, align 8, !tbaa !3 store i64 %93, ptr %92, align 8 %94 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %95 = load i64, ptr %61, align 16, !tbaa !3 + %95 = load i64, ptr %42, align 16, !tbaa !3 store i64 %95, ptr %94, align 16 %96 = getelementptr inbounds nuw i8, ptr %7, i64 24 - %97 = load i64, ptr %62, align 8, !tbaa !3 + %97 = load i64, ptr %43, align 8, !tbaa !3 store i64 %97, ptr %96, align 8 %98 = load i64, ptr %11, align 16, !tbaa !3 store i64 %98, ptr %90, align 16 %99 = getelementptr inbounds nuw i8, ptr %7, i64 40 - %100 = load i64, ptr %63, align 8, !tbaa !3 + %100 = load i64, ptr %44, align 8, !tbaa !3 store i64 %100, ptr %99, align 8 %101 = getelementptr inbounds nuw i8, ptr %7, i64 48 - %102 = load i64, ptr %64, align 16, !tbaa !3 + %102 = load i64, ptr %45, align 16, !tbaa !3 store i64 %102, ptr %101, align 16 %103 = getelementptr inbounds nuw i8, ptr %7, i64 56 - %104 = load i64, ptr %65, align 8, !tbaa !3 + %104 = load i64, ptr %46, align 8, !tbaa !3 store i64 %104, ptr %103, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %0, ptr nonnull align 16 %7, i64 %29, i1 false) + %87 = and i64 %20, 255 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %0, ptr nonnull align 16 %7, i64 %87, i1 false) call void @Lib_Memzero0_memzero0(ptr noundef nonnull %7, i64 noundef 64) #19 call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @Lib_Memzero0_memzero0(ptr noundef nonnull %10, i64 noundef 128) #19 @@ -2847,10 +2830,6 @@ attributes #21 = { nounwind allocsize(0) } !19 = !{!20, !5, i64 1} !20 = !{!"Hacl_Hash_Blake2b_blake2_params_s", !5, i64 0, !5, i64 1, !5, i64 2, !5, i64 3, !18, i64 4, !4, i64 8, !5, i64 16, !5, i64 17, !16, i64 24, !16, i64 32} !21 = !{i64 0, i64 1, !9, i64 1, i64 1, !9, i64 2, i64 1, !10, i64 8, i64 8, !12, i64 16, i64 8, !12, i64 24, i64 8, !15, i64 32, i64 8, !3} -!22 = !{!20, !5, i64 0} -!23 = !{!20, !16, i64 24} -!24 = !{!20, !16, i64 32} -!25 = !{!20, !5, i64 2} -!26 = !{!20, !5, i64 3} -!27 = !{!20, !18, i64 4} -!28 = !{!20, !4, i64 8} +!22 = !{!20, !16, i64 24} +!23 = !{!20, !16, i64 32} +!24 = !{!20, !4, i64 8} diff --git a/bench/cpython/optimized/Hacl_Hash_Blake2b_Simd256.ll b/bench/cpython/optimized/Hacl_Hash_Blake2b_Simd256.ll index a92ebeca03a..0d9be48812b 100644 --- a/bench/cpython/optimized/Hacl_Hash_Blake2b_Simd256.ll +++ b/bench/cpython/optimized/Hacl_Hash_Blake2b_Simd256.ll @@ -1806,68 +1806,50 @@ define hidden void @python_hashlib_Hacl_Hash_Blake2b_Simd256_hash_with_key_and_p %11 = getelementptr inbounds nuw i8, ptr %7, i64 96 store <4 x i64> , ptr %10, align 32, !tbaa !3 store <4 x i64> , ptr %11, align 32, !tbaa !3 - %12 = getelementptr inbounds nuw i8, ptr %3, i64 1 - %13 = load i8, ptr %12, align 1, !tbaa !18 - %14 = load i8, ptr %3, align 8, !tbaa !21 + %12 = load i64, ptr %3, align 8 + %13 = trunc i64 %12 to i32 + %14 = lshr i32 %13, 8 %15 = getelementptr inbounds nuw i8, ptr %3, i64 24 - %16 = load ptr, ptr %15, align 8, !tbaa !22 + %16 = load ptr, ptr %15, align 8, !tbaa !21 %.val75 = load i64, ptr %16, align 1 %17 = getelementptr i8, ptr %16, i64 8 %.val74 = load i64, ptr %17, align 1 %18 = getelementptr inbounds nuw i8, ptr %3, i64 32 - %19 = load ptr, ptr %18, align 8, !tbaa !23 + %19 = load ptr, ptr %18, align 8, !tbaa !22 %.val73 = load i64, ptr %19, align 1 %20 = getelementptr i8, ptr %19, i64 8 %.val = load i64, ptr %20, align 1 - %21 = zext i8 %14 to i64 - %22 = zext i8 %13 to i64 - %23 = shl nuw nsw i64 %22, 8 - %24 = getelementptr inbounds nuw i8, ptr %3, i64 2 - %25 = load i8, ptr %24, align 2, !tbaa !24 - %26 = zext i8 %25 to i64 - %27 = shl nuw nsw i64 %26, 16 - %28 = getelementptr inbounds nuw i8, ptr %3, i64 3 - %29 = load i8, ptr %28, align 1, !tbaa !25 - %30 = zext i8 %29 to i64 - %31 = shl nuw nsw i64 %30, 24 - %32 = getelementptr inbounds nuw i8, ptr %3, i64 4 - %33 = load i32, ptr %32, align 4, !tbaa !26 - %34 = zext i32 %33 to i64 - %35 = shl nuw i64 %34, 32 - %36 = or disjoint i64 %23, %27 - %37 = or disjoint i64 %36, %31 - %38 = or disjoint i64 %37, %35 - %39 = or disjoint i64 %38, %21 - %40 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %41 = load i64, ptr %40, align 8, !tbaa !27 - %42 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %43 = load i16, ptr %42, align 8 - %44 = zext i16 %43 to i64 - %45 = xor i64 %39, 7640891576956012808 - %46 = xor i64 %41, -4942790177534073029 - %47 = xor i64 %44, 4354685564936845355 - %48 = xor i64 %.val75, 5840696475078001361 - %49 = xor i64 %.val74, -7276294671716946913 - %50 = xor i64 %.val73, 2270897969802886507 - %51 = xor i64 %.val, 6620516959819538809 - %52 = insertelement <4 x i64> , i64 %45, i64 0 - %53 = insertelement <4 x i64> %52, i64 %46, i64 1 - %54 = insertelement <4 x i64> %53, i64 %47, i64 2 - store <4 x i64> %54, ptr %7, align 32, !tbaa !3 - %55 = insertelement <4 x i64> poison, i64 %48, i64 0 - %56 = insertelement <4 x i64> %55, i64 %49, i64 1 - %57 = insertelement <4 x i64> %56, i64 %50, i64 2 - %58 = insertelement <4 x i64> %57, i64 %51, i64 3 - store <4 x i64> %58, ptr %9, align 32, !tbaa !3 - %59 = zext i8 %13 to i32 - call fastcc void @update(ptr noundef %8, ptr noundef %7, i32 noundef %59, ptr noundef %4, i32 noundef %2, ptr noundef %1) + %21 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %22 = load i64, ptr %21, align 8, !tbaa !23 + %23 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %24 = load i16, ptr %23, align 8 + %25 = zext i16 %24 to i64 + %26 = xor i64 %12, 7640891576956012808 + %27 = xor i64 %22, -4942790177534073029 + %28 = xor i64 %25, 4354685564936845355 + %29 = xor i64 %.val75, 5840696475078001361 + %30 = xor i64 %.val74, -7276294671716946913 + %31 = xor i64 %.val73, 2270897969802886507 + %32 = xor i64 %.val, 6620516959819538809 + %33 = insertelement <4 x i64> , i64 %26, i64 0 + %34 = insertelement <4 x i64> %33, i64 %27, i64 1 + %35 = insertelement <4 x i64> %34, i64 %28, i64 2 + store <4 x i64> %35, ptr %7, align 32, !tbaa !3 + %36 = insertelement <4 x i64> poison, i64 %29, i64 0 + %37 = insertelement <4 x i64> %36, i64 %30, i64 1 + %38 = insertelement <4 x i64> %37, i64 %31, i64 2 + %39 = insertelement <4 x i64> %38, i64 %32, i64 3 + store <4 x i64> %39, ptr %9, align 32, !tbaa !3 + %40 = and i32 %14, 255 + call fastcc void @update(ptr noundef %8, ptr noundef %7, i32 noundef %40, ptr noundef %4, i32 noundef %2, ptr noundef %1) call void @llvm.lifetime.start.p0(ptr nonnull %6) %60 = getelementptr inbounds nuw i8, ptr %6, i64 32 %61 = load <4 x i64>, ptr %7, align 32, !tbaa !3 store <4 x i64> %61, ptr %6, align 16, !tbaa !3 %62 = load <4 x i64>, ptr %9, align 32, !tbaa !3 store <4 x i64> %62, ptr %60, align 16, !tbaa !3 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %0, ptr nonnull align 16 %6, i64 %21, i1 false) + %44 = and i64 %12, 255 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %0, ptr nonnull align 16 %6, i64 %44, i1 false) call void @Lib_Memzero0_memzero0(ptr noundef nonnull %6, i64 noundef 64) #25 call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @Lib_Memzero0_memzero0(ptr noundef nonnull %8, i64 noundef 128) #25 @@ -1942,10 +1924,6 @@ attributes #28 = { nounwind allocsize(0) } !18 = !{!19, !4, i64 1} !19 = !{!"Hacl_Hash_Blake2b_blake2_params_s", !4, i64 0, !4, i64 1, !4, i64 2, !4, i64 3, !17, i64 4, !9, i64 8, !4, i64 16, !4, i64 17, !15, i64 24, !15, i64 32} !20 = !{i64 0, i64 1, !3, i64 1, i64 1, !3, i64 2, i64 1, !10, i64 8, i64 8, !12, i64 16, i64 8, !12, i64 24, i64 8, !14, i64 32, i64 8, !8} -!21 = !{!19, !4, i64 0} -!22 = !{!19, !15, i64 24} -!23 = !{!19, !15, i64 32} -!24 = !{!19, !4, i64 2} -!25 = !{!19, !4, i64 3} -!26 = !{!19, !17, i64 4} -!27 = !{!19, !9, i64 8} +!21 = !{!19, !15, i64 24} +!22 = !{!19, !15, i64 32} +!23 = !{!19, !9, i64 8} diff --git a/bench/cpython/optimized/Hacl_Hash_Blake2s_Simd128.ll b/bench/cpython/optimized/Hacl_Hash_Blake2s_Simd128.ll index 08bdef5e04d..6eeff537805 100644 --- a/bench/cpython/optimized/Hacl_Hash_Blake2s_Simd128.ll +++ b/bench/cpython/optimized/Hacl_Hash_Blake2s_Simd128.ll @@ -865,20 +865,15 @@ declare noalias noundef ptr @aligned_alloc(i64 allocalign noundef, i64 noundef) ; Function Attrs: mustprogress nofree nounwind willreturn uwtable define hidden noalias noundef ptr @python_hashlib_Hacl_Hash_Blake2s_Simd128_malloc_with_params_and_key(ptr noundef readonly captures(none) %0, i1 noundef zeroext %1, ptr noundef readonly captures(none) %2) local_unnamed_addr #11 { - %.sroa.02.0.copyload = load i8, ptr %0, align 8, !tbaa !3 - %.sroa.43.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 1 - %.sroa.43.0.copyload = load i8, ptr %.sroa.43.0..sroa_idx, align 1, !tbaa !3 - %.sroa.4.0.insert.ext = zext i8 %.sroa.02.0.copyload to i16 - %.sroa.4.0.insert.shift = shl nuw i16 %.sroa.4.0.insert.ext, 8 - %.sroa.01.0.insert.ext = zext i8 %.sroa.43.0.copyload to i16 - %.sroa.01.0.insert.insert = or disjoint i16 %.sroa.4.0.insert.shift, %.sroa.01.0.insert.ext + %.sroa.02.0.copyload = load i16, ptr %0, align 8 + %.sroa.01.0.insert.insert = tail call i16 @llvm.bswap.i16(i16 %.sroa.02.0.copyload) %4 = tail call noalias dereferenceable_or_null(64) ptr @calloc(i64 noundef 64, i64 noundef 1) #27 %5 = tail call noalias align 16 dereferenceable_or_null(64) ptr @aligned_alloc(i64 noundef 16, i64 noundef 64) #26 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %5, i8 0, i64 64, i1 false) %6 = tail call noalias align 16 dereferenceable_or_null(64) ptr @aligned_alloc(i64 noundef 16, i64 noundef 64) #26 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %6, i8 0, i64 32, i1 false) %7 = zext i1 %1 to i8 - %.not.i = icmp eq i8 %.sroa.43.0.copyload, 0 + %.not.i = icmp ult i16 %.sroa.02.0.copyload, 256 %..i = select i1 %.not.i, i64 0, i64 64 %8 = tail call noalias dereferenceable_or_null(40) ptr @malloc(i64 noundef 40) #28 store i16 %.sroa.01.0.insert.insert, ptr %8, align 8 @@ -897,11 +892,13 @@ define hidden noalias noundef ptr @python_hashlib_Hacl_Hash_Blake2s_Simd128_mall br i1 %.not.i, label %malloc_raw.exit, label %9 9: ; preds = %3 - %10 = zext i8 %.sroa.43.0.copyload to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %4, ptr readonly align 1 %2, i64 %10, i1 false) + %10 = lshr i16 %.sroa.02.0.copyload, 8 + %11 = zext nneg i16 %10 to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %4, ptr readonly align 1 %2, i64 %11, i1 false) br label %malloc_raw.exit malloc_raw.exit: ; preds = %3, %9 + %12 = zext i16 %.sroa.02.0.copyload to i32 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 2 %.sroa.5.0.copyload.i = load i16, ptr %.sroa.5.0..sroa_idx.i, align 2 %11 = zext i16 %.sroa.5.0.copyload.i to i32 @@ -929,33 +926,29 @@ malloc_raw.exit: ; preds = %3, %9 %.sroa.14.0.copyload.val.i = load i32, ptr %.sroa.14.0.copyload.i, align 1 %19 = getelementptr i8, ptr %.sroa.14.0.copyload.i, i64 4 %.val.i = load i32, ptr %19, align 1 - %20 = zext i8 %.sroa.02.0.copyload to i32 - %21 = zext i8 %.sroa.43.0.copyload to i32 - %22 = shl nuw nsw i32 %21, 8 - %23 = or disjoint i32 %22, %20 - %24 = or disjoint i32 %23, %12 - %25 = trunc i64 %.sroa.8.0.copyload.i to i32 - %26 = lshr i64 %.sroa.8.0.copyload.i, 32 - %27 = trunc nuw i64 %26 to i32 - %28 = xor i32 %24, 1779033703 - %29 = xor i32 %.sroa.7.0.copyload.i, -1150833019 - %30 = xor i32 %25, 1013904242 - %31 = xor i32 %14, %27 - %32 = xor i32 %31, -1521486534 - %33 = xor i32 %.sroa.1268.0.copyload.val.i, 1359893119 - %34 = xor i32 %.val114.i, -1694144372 - %35 = xor i32 %.sroa.14.0.copyload.val.i, 528734635 - %36 = xor i32 %.val.i, 1541459225 - %37 = insertelement <4 x i32> poison, i32 %28, i64 0 - %38 = insertelement <4 x i32> %37, i32 %29, i64 1 - %39 = insertelement <4 x i32> %38, i32 %30, i64 2 - %40 = insertelement <4 x i32> %39, i32 %32, i64 3 - store <4 x i32> %40, ptr %6, align 16, !tbaa !3 - %41 = insertelement <4 x i32> poison, i32 %33, i64 0 - %42 = insertelement <4 x i32> %41, i32 %34, i64 1 - %43 = insertelement <4 x i32> %42, i32 %35, i64 2 - %44 = insertelement <4 x i32> %43, i32 %36, i64 3 - store <4 x i32> %44, ptr %15, align 16, !tbaa !3 + %22 = or disjoint i32 %14, %12 + %23 = trunc i64 %.sroa.8.0.copyload.i to i32 + %24 = lshr i64 %.sroa.8.0.copyload.i, 32 + %25 = trunc nuw i64 %24 to i32 + %26 = xor i32 %22, 1779033703 + %27 = xor i32 %.sroa.7.0.copyload.i, -1150833019 + %28 = xor i32 %23, 1013904242 + %29 = xor i32 %16, %25 + %28 = xor i32 %29, -1521486534 + %29 = xor i32 %.sroa.1268.0.copyload.val.i, 1359893119 + %30 = xor i32 %.val114.i, -1694144372 + %31 = xor i32 %.sroa.14.0.copyload.val.i, 528734635 + %32 = xor i32 %.val.i, 1541459225 + %35 = insertelement <4 x i32> poison, i32 %26, i64 0 + %36 = insertelement <4 x i32> %35, i32 %27, i64 1 + %37 = insertelement <4 x i32> %36, i32 %28, i64 2 + %38 = insertelement <4 x i32> %37, i32 %30, i64 3 + store <4 x i32> %38, ptr %6, align 16, !tbaa !3 + %38 = insertelement <4 x i32> poison, i32 %29, i64 0 + %39 = insertelement <4 x i32> %38, i32 %30, i64 1 + %40 = insertelement <4 x i32> %39, i32 %33, i64 2 + %42 = insertelement <4 x i32> %40, i32 %34, i64 3 + store <4 x i32> %42, ptr %17, align 16, !tbaa !3 ret ptr %8 } @@ -1759,6 +1752,9 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #22 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare <4 x i32> @llvm.fshl.v4i32(<4 x i32>, <4 x i32>, <4 x i32>) #23 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i16 @llvm.bswap.i16(i16) #23 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) declare void @llvm.assume(i1 noundef) #24 diff --git a/bench/duckdb/optimized/regexp.ll b/bench/duckdb/optimized/regexp.ll index 049981885d5..06a7a71dc11 100644 --- a/bench/duckdb/optimized/regexp.ll +++ b/bench/duckdb/optimized/regexp.ll @@ -3809,9 +3809,10 @@ define hidden noundef nonnull ptr @_ZN10duckdb_re216CharClassBuilder4CopyEv(ptr .lr.ph: ; preds = %1, %_ZNSt3setIN10duckdb_re29RuneRangeENS0_13RuneRangeLessESaIS1_EE6insertEOS1_.exit %.sroa.010.015 = phi ptr [ %43, %_ZNSt3setIN10duckdb_re29RuneRangeENS0_13RuneRangeLessESaIS1_EE6insertEOS1_.exit ], [ %11, %1 ] %18 = getelementptr inbounds nuw i8, ptr %.sroa.010.015, i64 32 - %19 = load i32, ptr %18, align 4, !tbaa !129 - %20 = getelementptr inbounds nuw i8, ptr %.sroa.010.015, i64 36 - %21 = load i32, ptr %20, align 4, !tbaa !126 + %19 = load i64, ptr %18, align 4 + %20 = trunc i64 %19 to i32 + %21 = lshr i64 %19, 32 + %22 = trunc nuw i64 %21 to i32 %.02022.i.i.i = load ptr, ptr %4, align 8, !tbaa !44 %.not23.i.i.i = icmp eq ptr %.02022.i.i.i, null br i1 %.not23.i.i.i, label %._crit_edge.thread.i.i.i, label %.lr.ph.i.i.i @@ -3820,7 +3821,7 @@ define hidden noundef nonnull ptr @_ZN10duckdb_re216CharClassBuilder4CopyEv(ptr %.02024.i.i.i = phi ptr [ %.020.i.i.i, %.lr.ph.i.i.i ], [ %.02022.i.i.i, %.lr.ph ] %22 = getelementptr inbounds nuw i8, ptr %.02024.i.i.i, i64 32 %23 = load i32, ptr %22, align 4, !tbaa !129 - %24 = icmp slt i32 %21, %23 + %24 = icmp sgt i32 %24, %22 %.in.v.i.i.i = select i1 %24, i64 16, i64 24 %.in.i.i.i = getelementptr inbounds nuw i8, ptr %.02024.i.i.i, i64 %.in.v.i.i.i %.020.i.i.i = load ptr, ptr %.in.i.i.i, align 8, !tbaa !44 @@ -3841,37 +3842,33 @@ define hidden noundef nonnull ptr @_ZN10duckdb_re216CharClassBuilder4CopyEv(ptr br label %29 29: ; preds = %27, %._crit_edge.i.i.i - %.019.lcssa28.i.i.i = phi ptr [ %.019.lcssa29.i.i.i, %27 ], [ %.02024.i.i.i, %._crit_edge.i.i.i ] - %.sroa.05.0.i.i.i = phi ptr [ %28, %27 ], [ %.02024.i.i.i, %._crit_edge.i.i.i ] + %.019.lcssa28.i.i.i = phi ptr [ %.019.lcssa29.i.i.i, %28 ], [ %.02024.i.i.i, %._crit_edge.i.i.i ] + %.sroa.05.0.i.i.i = phi ptr [ %28, %28 ], [ %.02024.i.i.i, %._crit_edge.i.i.i ] %30 = getelementptr inbounds nuw i8, ptr %.sroa.05.0.i.i.i, i64 36 %31 = load i32, ptr %30, align 4, !tbaa !126 - %32 = icmp slt i32 %31, %19 + %32 = icmp slt i32 %31, %20 br i1 %32, label %select.unfold.i.i, label %_ZNSt3setIN10duckdb_re29RuneRangeENS0_13RuneRangeLessESaIS1_EE6insertEOS1_.exit select.unfold.i.i: ; preds = %29, %._crit_edge.thread.i.i.i - %.sroa.4.0.i.ph.i.i = phi ptr [ %.019.lcssa29.i.i.i, %._crit_edge.thread.i.i.i ], [ %.019.lcssa28.i.i.i, %29 ] + %.sroa.4.0.i.ph.i.i = phi ptr [ %.019.lcssa29.i.i.i, %._crit_edge.thread.i.i.i ], [ %.019.lcssa28.i.i.i, %30 ] %33 = icmp eq ptr %.sroa.4.0.i.ph.i.i, %3 br i1 %33, label %_ZNSt8_Rb_treeIN10duckdb_re29RuneRangeES1_St9_IdentityIS1_ENS0_13RuneRangeLessESaIS1_EE10_M_insert_IS1_NS6_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSC_OT_RT0_.exit.i.i, label %34 34: ; preds = %select.unfold.i.i %35 = getelementptr inbounds nuw i8, ptr %.sroa.4.0.i.ph.i.i, i64 32 %36 = load i32, ptr %35, align 4, !tbaa !129 - %37 = icmp slt i32 %21, %36 + %37 = icmp sgt i32 %37, %22 br label %_ZNSt8_Rb_treeIN10duckdb_re29RuneRangeES1_St9_IdentityIS1_ENS0_13RuneRangeLessESaIS1_EE10_M_insert_IS1_NS6_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSC_OT_RT0_.exit.i.i _ZNSt8_Rb_treeIN10duckdb_re29RuneRangeES1_St9_IdentityIS1_ENS0_13RuneRangeLessESaIS1_EE10_M_insert_IS1_NS6_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSC_OT_RT0_.exit.i.i: ; preds = %34, %select.unfold.i.i - %38 = phi i1 [ true, %select.unfold.i.i ], [ %37, %34 ] + %38 = phi i1 [ true, %select.unfold.i.i ], [ %37, %35 ] %39 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #31 %40 = getelementptr inbounds nuw i8, ptr %39, i64 32 - %.sroa.5.0.insert.ext = zext i32 %21 to i64 - %.sroa.5.0.insert.shift = shl nuw i64 %.sroa.5.0.insert.ext, 32 - %.sroa.0.0.insert.ext = zext i32 %19 to i64 - %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.5.0.insert.shift, %.sroa.0.0.insert.ext - store i64 %.sroa.0.0.insert.insert, ptr %40, align 4 - tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %38, ptr noundef nonnull %39, ptr noundef nonnull %.sroa.4.0.i.ph.i.i, ptr noundef nonnull align 8 dereferenceable(32) %3) #28 - %41 = load i64, ptr %7, align 8, !tbaa !50 - %42 = add i64 %41, 1 - store i64 %42, ptr %7, align 8, !tbaa !50 + store i64 %19, ptr %41, align 4 + tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %39, ptr noundef nonnull %40, ptr noundef nonnull %.sroa.4.0.i.ph.i.i, ptr noundef nonnull align 8 dereferenceable(32) %3) #28 + %42 = load i64, ptr %7, align 8, !tbaa !50 + %43 = add i64 %42, 1 + store i64 %43, ptr %7, align 8, !tbaa !50 br label %_ZNSt3setIN10duckdb_re29RuneRangeENS0_13RuneRangeLessESaIS1_EE6insertEOS1_.exit _ZNSt3setIN10duckdb_re29RuneRangeENS0_13RuneRangeLessESaIS1_EE6insertEOS1_.exit: ; preds = %29, %_ZNSt8_Rb_treeIN10duckdb_re29RuneRangeES1_St9_IdentityIS1_ENS0_13RuneRangeLessESaIS1_EE10_M_insert_IS1_NS6_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSC_OT_RT0_.exit.i.i diff --git a/bench/ffmpeg/optimized/avformat.ll b/bench/ffmpeg/optimized/avformat.ll index 67689d3bc0c..5ddc3796090 100644 --- a/bench/ffmpeg/optimized/avformat.ll +++ b/bench/ffmpeg/optimized/avformat.ll @@ -2045,42 +2045,43 @@ define i64 @av_guess_frame_rate(ptr noundef readnone captures(none) %0, ptr noun %5 = getelementptr inbounds nuw i8, ptr %1, i64 848 %6 = load ptr, ptr %5, align 8, !tbaa !136 %7 = getelementptr inbounds nuw i8, ptr %1, i64 88 - %.sroa.017.0.copyload = load i32, ptr %7, align 8, !tbaa !102 - %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 92 - %.sroa.7.0.copyload = load i32, ptr %.sroa.7.0..sroa_idx, align 4, !tbaa !102 - %8 = icmp sgt i32 %.sroa.017.0.copyload, 0 - %9 = icmp sgt i32 %.sroa.7.0.copyload, 0 - %or.cond = select i1 %8, i1 %9, i1 false - %10 = icmp sgt i32 %.sroa.037.0.copyload, 0 - %or.cond5 = select i1 %or.cond, i1 %10, i1 false - %11 = icmp sgt i32 %.sroa.9.0.copyload, 0 - %or.cond8 = select i1 %or.cond5, i1 %11, i1 false - br i1 %or.cond8, label %12, label %23 - -12: ; preds = %3 - %13 = uitofp nneg i32 %.sroa.017.0.copyload to double - %14 = uitofp nneg i32 %.sroa.7.0.copyload to double - %15 = fdiv nsz double %13, %14 - %16 = fcmp nsz olt double %15, 7.000000e+01 - br i1 %16, label %17, label %23 - -17: ; preds = %12 - %18 = uitofp nneg i32 %.sroa.037.0.copyload to double - %19 = uitofp nneg i32 %.sroa.9.0.copyload to double - %20 = fdiv nsz double %18, %19 - %21 = fcmp nsz ogt double %20, 2.100000e+02 - br i1 %21, label %22, label %23 - -22: ; preds = %17 - br label %23 - -23: ; preds = %22, %17, %12, %3 - %.sroa.037.0 = phi i32 [ %.sroa.017.0.copyload, %22 ], [ %.sroa.037.0.copyload, %17 ], [ %.sroa.037.0.copyload, %12 ], [ %.sroa.037.0.copyload, %3 ] - %.sroa.9.0 = phi i32 [ %.sroa.7.0.copyload, %22 ], [ %.sroa.9.0.copyload, %17 ], [ %.sroa.9.0.copyload, %12 ], [ %.sroa.9.0.copyload, %3 ] + %.sroa.017.0.copyload = load i64, ptr %7, align 8 + %8 = trunc i64 %.sroa.017.0.copyload to i32 + %9 = lshr i64 %.sroa.017.0.copyload, 32 + %10 = trunc nuw i64 %9 to i32 + %9 = icmp sgt i32 %8, 0 + %12 = icmp sgt i32 %10, 0 + %or.cond = select i1 %9, i1 %12, i1 false + %13 = icmp sgt i32 %.sroa.037.0.copyload, 0 + %or.cond5 = select i1 %or.cond, i1 %13, i1 false + %14 = icmp sgt i32 %.sroa.9.0.copyload, 0 + %or.cond8 = select i1 %or.cond5, i1 %14, i1 false + br i1 %or.cond8, label %15, label %26 + +15:; preds = %3 + %14 = uitofp nneg i32 %8 to double + %17 = uitofp nneg i32 %10 to double + %18 = fdiv nsz double %16, %17 + %19 = fcmp nsz olt double %18, 7.000000e+01 + br i1 %19, label %20, label %26 + +20:; preds = %15 + %19 = uitofp nneg i32 %.sroa.037.0.copyload to double + %22 = uitofp nneg i32 %.sroa.9.0.copyload to double + %23 = fdiv nsz double %21, %22 + %24 = fcmp nsz ogt double %23, 2.100000e+02 + br i1 %24, label %25, label %26 + +25:; preds = %20 + br label %26 + +26:; preds = %25, %20, %15, %3 + %.sroa.9.0 = phi i32 [ %8, %25 ], [ %.sroa.037.0.copyload, %20 ], [ %.sroa.037.0.copyload, %15 ], [ %.sroa.037.0.copyload, %3 ] + %.sroa.9.0 = phi i32 [ %10, %25 ], [ %.sroa.9.0.copyload, %20 ], [ %.sroa.9.0.copyload, %15 ], [ %.sroa.9.0.copyload, %3 ] %.not = icmp eq ptr %6, null br i1 %.not, label %54, label %24 -24: ; preds = %23 +24: ; preds = %26 %25 = getelementptr inbounds nuw i8, ptr %6, i64 24 %26 = load i32, ptr %25, align 8, !tbaa !137 %27 = and i32 %26, 16 @@ -2106,26 +2107,22 @@ define i64 @av_guess_frame_rate(ptr noundef readnone captures(none) %0, ptr noun 36: ; preds = %34 %37 = uitofp nneg i32 %.sroa.012.0.copyload to double %38 = uitofp nneg i32 %.sroa.6.0.copyload to double - %39 = fdiv nsz double %37, %38 - %40 = sitofp i32 %.sroa.037.0 to double - %41 = sitofp i32 %.sroa.9.0 to double %42 = fdiv nsz double %40, %41 - %43 = fmul nsz double %42, 0x3FE6666666666666 - %44 = fcmp nsz olt double %39, %43 - br i1 %44, label %45, label %54 + %43 = sitofp i32 %.sroa.9.0 to double + %44 = sitofp i32 %.sroa.9.0 to double + %45 = fdiv nsz double %43, %44 + %46 = fmul nsz double %45, 0x3FE6666666666666 + %47 = fcmp nsz olt double %42, %46 + br i1 %47, label %48, label %57 45: ; preds = %36 %.sroa.037.0.insert.ext41 = zext i32 %.sroa.037.0 to i64 %.sroa.9.0.insert.ext53 = zext i32 %.sroa.9.0 to i64 %.sroa.9.0.insert.shift54 = shl nuw i64 %.sroa.9.0.insert.ext53, 32 %.sroa.037.0.insert.insert43 = or disjoint i64 %.sroa.9.0.insert.shift54, %.sroa.037.0.insert.ext41 - %.sroa.7.0.insert.ext27 = zext i32 %.sroa.7.0.copyload to i64 - %.sroa.7.0.insert.shift28 = shl nuw i64 %.sroa.7.0.insert.ext27, 32 - %.sroa.017.0.insert.ext21 = zext i32 %.sroa.017.0.copyload to i64 - %.sroa.017.0.insert.insert23 = or disjoint i64 %.sroa.7.0.insert.shift28, %.sroa.017.0.insert.ext21 - %46 = tail call i64 @av_div_q(i64 %.sroa.017.0.insert.insert23, i64 %.sroa.037.0.insert.insert43) #16 - %.sroa.0.0.extract.trunc.i71 = trunc i64 %46 to i32 - %.sroa.2.0.extract.shift.i = lshr i64 %46, 32 + %49 = tail call i64 @av_div_q(i64 %.sroa.017.0.copyload, i64 %.sroa.037.0.insert.insert43) #16 + %.sroa.0.0.extract.trunc.i71 = trunc i64 %49 to i32 + %.sroa.2.0.extract.shift.i = lshr i64 %49, 32 %.sroa.2.0.extract.trunc.i = trunc nuw i64 %.sroa.2.0.extract.shift.i to i32 %47 = sitofp i32 %.sroa.0.0.extract.trunc.i71 to double %48 = sitofp i32 %.sroa.2.0.extract.trunc.i to double @@ -2138,9 +2135,9 @@ define i64 @av_guess_frame_rate(ptr noundef readnone captures(none) %0, ptr noun 53: ; preds = %45, %34 br label %54 -54: ; preds = %28, %36, %45, %53, %24, %23 - %.sroa.037.1 = phi i32 [ %.sroa.037.0, %24 ], [ %.sroa.037.0, %23 ], [ %.sroa.012.0.copyload, %53 ], [ %.sroa.037.0, %45 ], [ %.sroa.037.0, %36 ], [ %.sroa.037.0, %28 ] - %.sroa.9.1 = phi i32 [ %.sroa.9.0, %24 ], [ %.sroa.9.0, %23 ], [ %.sroa.6.0.copyload, %53 ], [ %.sroa.9.0, %45 ], [ %.sroa.9.0, %36 ], [ %.sroa.9.0, %28 ] +54: ; preds = %28, %36, %45, %53, %24, %26 + %.sroa.037.1 = phi i32 [ %.sroa.037.0, %27 ], [ %.sroa.037.0, %26 ], [ %.sroa.012.0.copyload, %56 ], [ %.sroa.9.0, %48 ], [ %.sroa.037.0, %39 ], [ %.sroa.037.0, %31 ] + %.sroa.9.1 = phi i32 [ %.sroa.9.0, %27 ], [ %.sroa.9.0, %26 ], [ %.sroa.6.0.copyload, %56 ], [ %.sroa.9.0, %48 ], [ %.sroa.9.0, %39 ], [ %.sroa.9.0, %31 ] %.sroa.9.0.insert.ext63 = zext i32 %.sroa.9.1 to i64 %.sroa.9.0.insert.shift64 = shl nuw i64 %.sroa.9.0.insert.ext63, 32 %.sroa.037.0.insert.ext49 = zext i32 %.sroa.037.1 to i64 diff --git a/bench/ffmpeg/optimized/mpeg.ll b/bench/ffmpeg/optimized/mpeg.ll index d693466d66a..58ce427762b 100644 --- a/bench/ffmpeg/optimized/mpeg.ll +++ b/bench/ffmpeg/optimized/mpeg.ll @@ -1696,16 +1696,11 @@ define internal i32 @vobsub_read_seek(ptr noundef %0, i32 noundef %1, i64 nounde %15 = load ptr, ptr %14, align 8, !tbaa !40 %16 = load ptr, ptr %15, align 8, !tbaa !42 %17 = getelementptr inbounds nuw i8, ptr %16, i64 32 - %.sroa.02.0.copyload = load i32, ptr %17, align 8, !tbaa !37 - %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %16, i64 36 - %.sroa.6.0.copyload = load i32, ptr %.sroa.6.0..sroa_idx, align 4, !tbaa !37 - %.sroa.6.0.insert.ext = zext i32 %.sroa.6.0.copyload to i64 - %.sroa.6.0.insert.shift = shl nuw i64 %.sroa.6.0.insert.ext, 32 - %.sroa.02.0.insert.ext = zext i32 %.sroa.02.0.copyload to i64 - %.sroa.02.0.insert.insert = or disjoint i64 %.sroa.6.0.insert.shift, %.sroa.02.0.insert.ext - %18 = tail call i64 @av_rescale_q(i64 noundef %3, i64 4294967296000001, i64 %.sroa.02.0.insert.insert) #15 - %19 = sext i32 %.sroa.6.0.copyload to i64 - %20 = sext i32 %.sroa.02.0.copyload to i64 + %.sroa.02.0.copyload = load i64, ptr %17, align 8 + %18 = tail call i64 @av_rescale_q(i64 noundef %3, i64 4294967296000001, i64 %.sroa.02.0.copyload) #15 + %19 = ashr i64 %.sroa.02.0.copyload, 32 + %sext = shl i64 %.sroa.02.0.copyload, 32 + %20 = ashr exact i64 %sext, 32 %21 = mul nsw i64 %20, 1000000 %22 = tail call i64 @av_rescale_rnd(i64 noundef %2, i64 noundef %19, i64 noundef %21, i32 noundef 8195) #15 %23 = tail call i64 @av_rescale_rnd(i64 noundef %4, i64 noundef %19, i64 noundef %21, i32 noundef 8194) #15 diff --git a/bench/ffmpeg/optimized/vf_detelecine.ll b/bench/ffmpeg/optimized/vf_detelecine.ll index 76697993eb0..dbe6e2a12fb 100644 --- a/bench/ffmpeg/optimized/vf_detelecine.ll +++ b/bench/ffmpeg/optimized/vf_detelecine.ll @@ -841,33 +841,30 @@ define internal range(i32 -22, 1) i32 @config_output(ptr noundef captures(none) %7 = icmp ne i32 %.sroa.07.0.copyload, 0 %8 = icmp ne i32 %.sroa.10.0.copyload, 0 %or.cond = select i1 %7, i1 %8, i1 false - br i1 %or.cond, label %10, label %9 - -9: ; preds = %1 - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef nonnull %2, i32 noundef 16, ptr noundef nonnull @.str.3, i32 noundef %.sroa.07.0.copyload, i32 noundef %.sroa.10.0.copyload) #5 - br label %31 + br i1 %or.cond, label %11, label %10 10: ; preds = %1 - %11 = getelementptr inbounds nuw i8, ptr %2, i64 72 - %12 = load ptr, ptr %11, align 8, !tbaa !4 - %13 = getelementptr inbounds nuw i8, ptr %12, i64 48 - %14 = load i64, ptr %13, align 8 - %.sroa.01.0.insert.insert.i = tail call i64 @llvm.fshl.i64(i64 %14, i64 %14, i64 32) - %.sroa.10.0.insert.ext = zext i32 %.sroa.10.0.copyload to i64 - %.sroa.10.0.insert.shift = shl nuw i64 %.sroa.10.0.insert.ext, 32 - %.sroa.07.0.insert.ext = zext i32 %.sroa.07.0.copyload to i64 - %.sroa.07.0.insert.insert = or disjoint i64 %.sroa.10.0.insert.shift, %.sroa.07.0.insert.ext - %15 = tail call i64 @av_mul_q(i64 %.sroa.07.0.insert.insert, i64 %.sroa.01.0.insert.insert.i) #6 - %.sroa.07.0.extract.trunc = trunc i64 %15 to i32 - %.sroa.10.0.extract.shift = lshr i64 %15, 32 + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef nonnull %2, i32 noundef 16, ptr noundef nonnull @.str.3, i32 noundef %7, i32 noundef %.sroa.10.0.copyload) #5 + br label %32 + +11:; preds = %1 + %.sroa.07.0.copyload = load i64, ptr %6, align 8 + %12 = getelementptr inbounds nuw i8, ptr %2, i64 72 + %13 = load ptr, ptr %12, align 8, !tbaa !4 + %14 = getelementptr inbounds nuw i8, ptr %13, i64 48 + %15 = load i64, ptr %14, align 8 + %15 = tail call i64 @llvm.fshl.i64(i64 %15, i64 %15, i64 32) + %16 = tail call i64 @av_mul_q(i64 %.sroa.07.0.copyload, i64 %15) #6 + %.sroa.07.0.extract.trunc = trunc i64 %16 to i32 + %.sroa.10.0.extract.shift = lshr i64 %16, 32 %.sroa.10.0.extract.trunc = trunc nuw i64 %.sroa.10.0.extract.shift to i32 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef nonnull %2, i32 noundef 40, ptr noundef nonnull @.str.4, i32 noundef %.sroa.07.0.copyload, i32 noundef %.sroa.10.0.copyload, i32 noundef %.sroa.07.0.extract.trunc, i32 noundef %.sroa.10.0.extract.trunc) #5 %16 = getelementptr inbounds nuw i8, ptr %0, i64 264 - store i64 %15, ptr %16, align 8 + store i64 %16, ptr %16, align 8 %17 = getelementptr inbounds nuw i8, ptr %0, i64 96 %18 = getelementptr inbounds nuw i8, ptr %5, i64 96 %19 = load i64, ptr %18, align 8 - %20 = load i64, ptr %13, align 8 + %20 = load i64, ptr %14, align 8 %21 = tail call i64 @av_mul_q(i64 %19, i64 %20) #6 store i64 %21, ptr %17, align 8 %22 = load i32, ptr %18, align 8, !tbaa !80 @@ -877,15 +874,15 @@ define internal range(i32 -22, 1) i32 @config_output(ptr noundef captures(none) %26 = lshr i64 %21, 32 %27 = trunc nuw i64 %26 to i32 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef nonnull %2, i32 noundef 40, ptr noundef nonnull @.str.5, i32 noundef %22, i32 noundef %24, i32 noundef %25, i32 noundef %27) #5 - %28 = getelementptr inbounds nuw i8, ptr %12, i64 56 + %28 = getelementptr inbounds nuw i8, ptr %13, i64 56 %29 = load i64, ptr %17, align 8 - %30 = tail call i64 @av_mul_q(i64 %15, i64 %29) #6 + %30 = tail call i64 @av_mul_q(i64 %16, i64 %29) #6 %.sroa.01.0.insert.insert.i46 = tail call i64 @llvm.fshl.i64(i64 %30, i64 %30, i64 32) store i64 %.sroa.01.0.insert.insert.i46, ptr %28, align 8 br label %31 -31: ; preds = %10, %9 - %.0 = phi i32 [ 0, %10 ], [ -22, %9 ] +31: ; preds = %11, %10 + %.0 = phi i32 [ 0, %11 ], [ -22, %10 ] ret i32 %.0 } diff --git a/bench/hdf5/optimized/H5HFcache.ll b/bench/hdf5/optimized/H5HFcache.ll index fd3be77fbed..b3b6a6a5d1c 100644 --- a/bench/hdf5/optimized/H5HFcache.ll +++ b/bench/hdf5/optimized/H5HFcache.ll @@ -4150,32 +4150,31 @@ define internal range(i32 -1, 2) i32 @H5HF__cache_dblock_verify_chksum(ptr nound %56 = add nuw nsw i64 %55, %53 %57 = and i64 %56, 4294967295 %58 = getelementptr inbounds nuw i8, ptr %47, i64 %57 - %59 = load i8, ptr %58, align 1, !tbaa !16 - %60 = zext i8 %59 to i32 - %61 = getelementptr inbounds nuw i8, ptr %58, i64 1 - %62 = load i8, ptr %61, align 1, !tbaa !16 - %63 = zext i8 %62 to i32 - %64 = shl nuw nsw i32 %63, 8 - %65 = or disjoint i32 %64, %60 - %66 = getelementptr inbounds nuw i8, ptr %58, i64 2 - %67 = load i8, ptr %66, align 1, !tbaa !16 - %68 = zext i8 %67 to i32 - %69 = shl nuw nsw i32 %68, 16 - %70 = getelementptr inbounds nuw i8, ptr %58, i64 3 - %71 = load i8, ptr %70, align 1, !tbaa !16 - %72 = zext i8 %71 to i32 - %73 = shl nuw i32 %72, 24 - %74 = or disjoint i32 %65, %69 - %75 = or disjoint i32 %74, %73 + %59 = load i16, ptr %58, align 1 + %60 = zext i16 %59 to i32 + %61 = trunc i16 %59 to i8 + %62 = getelementptr inbounds nuw i8, ptr %58, i64 1 + %63 = lshr i16 %59, 8 + %64 = trunc nuw i16 %63 to i8 + %65 = getelementptr inbounds nuw i8, ptr %58, i64 2 + %66 = load i8, ptr %65, align 1, !tbaa !16 + %67 = zext i8 %66 to i32 + %68 = shl nuw nsw i32 %67, 16 + %69 = getelementptr inbounds nuw i8, ptr %58, i64 3 + %70 = load i8, ptr %69, align 1, !tbaa !16 + %71 = zext i8 %70 to i32 + %72 = shl nuw i32 %71, 24 + %73 = or disjoint i32 %68, %60 + %74 = or disjoint i32 %73, %72 store i32 0, ptr %58, align 1 %76 = load ptr, ptr %5, align 8, !tbaa !143 %77 = load i64, ptr %4, align 8, !tbaa !14 %78 = call i32 @H5_checksum_metadata(ptr noundef %76, i64 noundef %77, i32 noundef 0) #9 - store i8 %59, ptr %58, align 1, !tbaa !16 - store i8 %62, ptr %61, align 1, !tbaa !16 - store i8 %67, ptr %66, align 1, !tbaa !16 - store i8 %71, ptr %70, align 1, !tbaa !16 - %.not55 = icmp eq i32 %75, %78 + store i8 %61, ptr %58, align 1, !tbaa !16 + store i8 %64, ptr %62, align 1, !tbaa !16 + store i8 %66, ptr %65, align 1, !tbaa !16 + store i8 %70, ptr %69, align 1, !tbaa !16 + %.not55 = icmp eq i32 %74, %78 br i1 %.not55, label %79, label %93 79: ; preds = %46 @@ -4204,7 +4203,7 @@ define internal range(i32 -1, 2) i32 @H5HF__cache_dblock_verify_chksum(ptr nound br label %93 93: ; preds = %.thread, %46, %14, %79, %90, %86 - %.1 = phi i32 [ -1, %86 ], [ 1, %90 ], [ 1, %79 ], [ 1, %14 ], [ 0, %46 ], [ -1, %.thread ] + %.1 = phi i32 [ -1, %85 ], [ 1, %89 ], [ 1, %78 ], [ 1, %14 ], [ 0, %46 ], [ -1, %.thread ] %94 = load ptr, ptr %5, align 8, !tbaa !143 %.not57 = icmp eq ptr %94, null %.not58 = icmp eq ptr %94, %0 @@ -4216,7 +4215,7 @@ define internal range(i32 -1, 2) i32 @H5HF__cache_dblock_verify_chksum(ptr nound br label %97 97: ; preds = %3, %95, %93 - %.052 = phi i32 [ %.1, %95 ], [ %.1, %93 ], [ 1, %3 ] + %.052 = phi i32 [ %.1, %94 ], [ %.1, %92 ], [ 1, %3 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i32 %.052 } diff --git a/bench/imgui/optimized/imgui_widgets.ll b/bench/imgui/optimized/imgui_widgets.ll index 1c61010a6c6..80996a8e506 100644 --- a/bench/imgui/optimized/imgui_widgets.ll +++ b/bench/imgui/optimized/imgui_widgets.ll @@ -3268,11 +3268,13 @@ define noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef %0, ptr noundef %21 = tail call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %0, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00) %22 = tail call noundef float @_ZN5ImGui14GetFrameHeightEv() %23 = getelementptr inbounds nuw i8, ptr %14, i64 280 - %24 = load i32, ptr %23, align 8 - %.sroa_idx114 = getelementptr inbounds nuw i8, ptr %14, i64 284 - %25 = load i32, ptr %.sroa_idx114, align 4 - %26 = bitcast i32 %24 to float + %24 = load <2 x float>, ptr %23, align 8 + %bc119 = bitcast <2 x float> %24 to <2 x i32> + %25 = extractelement <2 x i32> %bc119, i64 0 + %26 = bitcast <2 x float> %24 to <2 x i32> + %26 = extractelement <2 x i32> %bc, i64 1 %27 = bitcast i32 %25 to float + %28 = bitcast i32 %26 to float call void @llvm.lifetime.start.p0(ptr nonnull %4) %.sroa.026.0.vec.extract = extractelement <2 x float> %21, i64 0 %28 = fcmp ogt float %.sroa.026.0.vec.extract, 0.000000e+00 @@ -3285,25 +3287,25 @@ define noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef %0, ptr noundef br label %33 33: ; preds = %19, %29 - %34 = phi float [ %32, %29 ], [ 0.000000e+00, %19 ] + %34 = phi float [ %32, %30 ], [ 0.000000e+00, %19 ] %35 = fadd float %22, %34 %.sroa.026.4.vec.extract = extractelement <2 x float> %21, i64 1 %36 = getelementptr inbounds nuw i8, ptr %12, i64 3164 %37 = load float, ptr %36, align 4, !tbaa !170 %38 = tail call float @llvm.fmuladd.f32(float %37, float 2.000000e+00, float %.sroa.026.4.vec.extract) - %39 = fadd float %35, %26 - %40 = fadd float %38, %27 + %39 = fadd float %35, %27 + %40 = fadd float %38, %28 %.sroa.0.0.vec.insert.i = insertelement <2 x float> poison, float %39, i64 0 %.sroa.0.4.vec.insert.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i, float %40, i64 1 - store i32 %24, ptr %4, align 4 + store i32 %25, ptr %4, align 4 %.sroa_idx113 = getelementptr inbounds nuw i8, ptr %4, i64 4 - store i32 %25, ptr %.sroa_idx113, align 4 + store i32 %26, ptr %.sroa_idx113, align 4 %41 = getelementptr inbounds nuw i8, ptr %4, i64 8 store <2 x float> %.sroa.0.4.vec.insert.i, ptr %41, align 4 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %42 = fsub float %39, %26 + %42 = fsub float %39, %27 %43 = getelementptr inbounds nuw i8, ptr %4, i64 12 - %44 = fsub float %40, %27 + %44 = fsub float %40, %28 %.sroa.0.0.vec.insert.i.i = insertelement <2 x float> poison, float %42, i64 0 %.sroa.0.4.vec.insert.i.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i.i, float %44, i64 1 store <2 x float> %.sroa.0.4.vec.insert.i.i, ptr %3, align 8 @@ -3366,70 +3368,70 @@ _ZNK6ImRect8OverlapsERKS_.exit: ; preds = %66 br i1 %.not, label %134, label %76 76: ; preds = %.thread, %74 - %77 = phi i8 [ %73, %.thread ], [ %75, %74 ] + %77 = phi i8 [ %73, %.thread ], [ %75, %75 ] %78 = load ptr, ptr @GImGui, align 8, !tbaa !3 %79 = getelementptr inbounds nuw i8, ptr %78, i64 8928 %80 = load ptr, ptr %79, align 8, !tbaa !237 %81 = getelementptr inbounds nuw i8, ptr %80, i64 90 %82 = load i8, ptr %81, align 2, !tbaa !238, !range !153, !noundef !154 %83 = trunc nuw i8 %82 to i1 - br i1 %83, label %84, label %131 - -84: ; preds = %76 - %85 = getelementptr inbounds nuw i8, ptr %80, i64 40 - %86 = load ptr, ptr %85, align 8, !tbaa !243 - %87 = getelementptr inbounds nuw i8, ptr %78, i64 7488 - %88 = load i64, ptr %87, align 8, !tbaa !244 - %89 = getelementptr inbounds nuw i8, ptr %80, i64 88 - %90 = load i8, ptr %89, align 8, !tbaa !245 - %.not.i = icmp eq i8 %90, -1 - %91 = icmp eq i8 %90, 1 - %92 = zext i1 %91 to i8 - %.1.i = select i1 %.not.i, i8 %77, i8 %92 - %93 = getelementptr inbounds nuw i8, ptr %80, i64 91 - %94 = load i8, ptr %93, align 1, !tbaa !246, !range !153, !noundef !154 - %95 = trunc nuw i8 %94 to i1 - br i1 %95, label %96, label %130 - -96: ; preds = %84 - %97 = getelementptr inbounds nuw i8, ptr %80, i64 94 - %98 = load i8, ptr %97, align 2, !tbaa !247, !range !153, !noundef !154 - %99 = icmp eq i8 %98, 0 - br i1 %99, label %100, label %.critedge.i - -100: ; preds = %96 - %101 = getelementptr inbounds nuw i8, ptr %78, i64 8348 - %102 = load i32, ptr %101, align 4, !tbaa !248 - %103 = icmp eq i32 %102, %20 - br i1 %103, label %104, label %.critedge.i - -104: ; preds = %100 - store i8 1, ptr %97, align 2, !tbaa !247 - %105 = getelementptr inbounds nuw i8, ptr %86, i64 24 - %106 = load i64, ptr %105, align 8, !tbaa !249 - %107 = icmp eq i64 %106, -1 - br i1 %107, label %108, label %.critedge.thread.i - -108: ; preds = %104 - store i64 %88, ptr %105, align 8, !tbaa !249 - %109 = getelementptr inbounds nuw i8, ptr %86, i64 20 + br i1 %83, label %85, label %131 + +85: ; preds = %77 + %86 = getelementptr inbounds nuw i8, ptr %81, i64 40 + %87 = load ptr, ptr %86, align 8, !tbaa !243 + %88 = getelementptr inbounds nuw i8, ptr %79, i64 7488 + %89 = load i64, ptr %88, align 8, !tbaa !244 + %90 = getelementptr inbounds nuw i8, ptr %81, i64 88 + %91 = load i8, ptr %90, align 8, !tbaa !245 + %.not.i = icmp eq i8 %91, -1 + %92 = icmp eq i8 %91, 1 + %93 = zext i1 %92 to i8 + %.1.i = select i1 %.not.i, i8 %78, i8 %93 + %94 = getelementptr inbounds nuw i8, ptr %81, i64 91 + %95 = load i8, ptr %94, align 1, !tbaa !246, !range !153, !noundef !154 + %96 = trunc nuw i8 %95 to i1 + br i1 %96, label %97, label %131 + +97: ; preds = %85 + %98 = getelementptr inbounds nuw i8, ptr %81, i64 94 + %99 = load i8, ptr %98, align 2, !tbaa !247, !range !153, !noundef !154 + %100 = icmp eq i8 %99, 0 + br i1 %100, label %101, label %.critedge.i + +84: ; preds = %97 + %85 = getelementptr inbounds nuw i8, ptr %78, i64 8348 + %86 = load i32, ptr %85, align 4, !tbaa !248 + %104 = icmp eq i32 %86, %20 + br i1 %104, label %105, label %.critedge.i + +100: ; preds = %84 + store i8 1, ptr %98, align 2, !tbaa !247 + %106 = getelementptr inbounds nuw i8, ptr %87, i64 24 + %107 = load i64, ptr %106, align 8, !tbaa !249 + %108 = icmp eq i64 %107, -1 + br i1 %108, label %109, label %.critedge.thread.i + +108: ; preds = %105 + store i64 %89, ptr %106, align 8, !tbaa !249 + %109 = getelementptr inbounds nuw i8, ptr %87, i64 20 store i8 %.1.i, ptr %109, align 4, !tbaa !251 br label %.critedge.thread.i -.critedge.i: ; preds = %100, %96 - %110 = getelementptr inbounds nuw i8, ptr %86, i64 24 +.critedge.i: ; preds = %101, %97 + %110 = getelementptr inbounds nuw i8, ptr %87, i64 24 %111 = load i64, ptr %110, align 8, !tbaa !249 - %112 = icmp eq i64 %111, %88 + %112 = icmp eq i64 %111, %89 br i1 %112, label %.critedge.thread.i, label %113 113: ; preds = %.critedge.i %114 = getelementptr inbounds nuw i8, ptr %80, i64 93 %115 = load i8, ptr %114, align 1, !tbaa !252, !range !153, !noundef !154 - %.not45.i = icmp eq i8 %115, %98 + %.not45.i = icmp eq i8 %115, %99 br i1 %.not45.i, label %120, label %.critedge.thread.i -.critedge.thread.i: ; preds = %113, %.critedge.i, %108, %104 - %116 = getelementptr inbounds nuw i8, ptr %86, i64 20 +.critedge.thread.i: ; preds = %113, %.critedge.i, %108, %105 + %116 = getelementptr inbounds nuw i8, ptr %87, i64 20 %117 = load i8, ptr %116, align 4, !tbaa !251 %118 = icmp ne i8 %117, 0 %119 = zext i1 %118 to i8 @@ -3450,8 +3452,8 @@ _ZNK6ImRect8OverlapsERKS_.exit: ; preds = %66 %spec.select.i = select i1 %129, i8 0, i8 %.1.i br label %130 -130: ; preds = %125, %120, %.critedge.thread.i, %84 - %.2.i = phi i8 [ %.1.i, %84 ], [ %119, %.critedge.thread.i ], [ %.1.i, %120 ], [ %spec.select.i, %125 ] +130: ; preds = %125, %120, %.critedge.thread.i, %85 + %.2.i = phi i8 [ %.1.i, %85 ], [ %119, %.critedge.thread.i ], [ %.1.i, %121 ], [ %spec.select.i, %126 ] store i8 %.2.i, ptr %5, align 1, !tbaa !209 br label %131 @@ -3478,7 +3480,7 @@ _ZNK6ImRect8OverlapsERKS_.exit: ; preds = %66 br label %138 138: ; preds = %134, %131 - %139 = phi i8 [ %.pre, %131 ], [ %spec.select, %134 ] + %139 = phi i8 [ %.pre, %132 ], [ %spec.select, %135 ] %140 = load i8, ptr %1, align 1, !tbaa !209, !range !153, !noundef !154 %.not64 = icmp eq i8 %140, %139 br i1 %.not64, label %142, label %141 @@ -3490,21 +3492,16 @@ _ZNK6ImRect8OverlapsERKS_.exit: ; preds = %66 br label %142 142: ; preds = %141, %138 - %143 = fadd float %22, %26 %144 = fadd float %22, %27 - %.sroa.7.0.insert.ext = zext i32 %25 to i64 - %.sroa.7.0.insert.shift = shl nuw i64 %.sroa.7.0.insert.ext, 32 - %.sroa.0116.0.insert.ext = zext i32 %24 to i64 - %.sroa.0116.0.insert.insert = or disjoint i64 %.sroa.7.0.insert.shift, %.sroa.0116.0.insert.ext - %145 = bitcast i64 %.sroa.0116.0.insert.insert to <2 x float> - %146 = load i32, ptr %46, align 4, !tbaa !235 + %145 = fadd float %22, %28 + %146 = load i32, ptr %47, align 4, !tbaa !235 %147 = and i32 %146, 4096 %.not65 = icmp eq i32 %147, 0 br i1 %45, label %148, label %187 148: ; preds = %142 - %.sroa.0.0.vec.insert.i85 = insertelement <2 x float> poison, float %143, i64 0 - %.sroa.0.4.vec.insert.i86 = insertelement <2 x float> %.sroa.0.0.vec.insert.i85, float %144, i64 1 + %.sroa.0.0.vec.insert.i85 = insertelement <2 x float> poison, float %144, i64 0 + %.sroa.0.4.vec.insert.i86 = insertelement <2 x float> %.sroa.0.0.vec.insert.i85, float %145, i64 1 call void @_ZN5ImGui15RenderNavCursorERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %4, i32 noundef %20, i32 noundef 0) %149 = load i8, ptr %7, align 1, !tbaa !209, !range !153, !noundef !154 %150 = trunc nuw i8 %149 to i1 @@ -3515,7 +3512,7 @@ _ZNK6ImRect8OverlapsERKS_.exit: ; preds = %66 %155 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %154, float noundef 1.000000e+00) %156 = getelementptr inbounds nuw i8, ptr %12, i64 3168 %157 = load float, ptr %156, align 4, !tbaa !212 - call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %145, <2 x float> %.sroa.0.4.vec.insert.i86, i32 noundef %155, i1 noundef zeroext true, float noundef %157) + call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %24, <2 x float> %.sroa.0.4.vec.insert.i86, i32 noundef %155, i1 noundef zeroext true, float noundef %157) %158 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 18, float noundef 1.000000e+00) br i1 %.not65, label %172, label %159 @@ -3528,16 +3525,16 @@ _ZNK6ImRect8OverlapsERKS_.exit: ; preds = %66 %165 = getelementptr inbounds nuw i8, ptr %14, i64 704 %166 = load ptr, ptr %165, align 8, !tbaa !175 call void @llvm.lifetime.start.p0(ptr nonnull %9) - %.sroa.097.0.vec.extract101 = extractelement <2 x float> %145, i64 0 - %.sroa.097.4.vec.extract105 = extractelement <2 x float> %145, i64 1 - %167 = fadd float %164, %.sroa.097.0.vec.extract101 - %168 = fadd float %164, %.sroa.097.4.vec.extract105 + %.sroa.097.0.vec.extract101 = extractelement <2 x float> %24, i64 0 + %.sroa.097.4.vec.extract105 = extractelement <2 x float> %24, i64 1 + %167 = fadd float %.sroa.097.0.vec.extract101, %164 + %168 = fadd float %.sroa.097.4.vec.extract105, %164 %.sroa.0.0.vec.insert.i87 = insertelement <2 x float> poison, float %167, i64 0 %.sroa.0.4.vec.insert.i88 = insertelement <2 x float> %.sroa.0.0.vec.insert.i87, float %168, i64 1 store <2 x float> %.sroa.0.4.vec.insert.i88, ptr %9, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %10) - %169 = fsub float %143, %164 - %170 = fsub float %144, %164 + %169 = fsub float %144, %164 + %170 = fsub float %145, %164 %.sroa.0.0.vec.insert.i89 = insertelement <2 x float> poison, float %169, i64 0 %.sroa.0.4.vec.insert.i90 = insertelement <2 x float> %.sroa.0.0.vec.insert.i89, float %170, i64 1 store <2 x float> %.sroa.0.4.vec.insert.i90, ptr %10, align 8 @@ -3560,10 +3557,10 @@ _ZNK6ImRect8OverlapsERKS_.exit: ; preds = %66 %180 = select i1 %179, float 1.000000e+00, float %178 %181 = getelementptr inbounds nuw i8, ptr %14, i64 704 %182 = load ptr, ptr %181, align 8, !tbaa !175 - %.sroa.097.0.vec.extract = extractelement <2 x float> %145, i64 0 - %.sroa.097.4.vec.extract103 = extractelement <2 x float> %145, i64 1 - %183 = fadd float %180, %.sroa.097.0.vec.extract - %184 = fadd float %180, %.sroa.097.4.vec.extract103 + %.sroa.097.0.vec.extract = extractelement <2 x float> %24, i64 0 + %.sroa.097.4.vec.extract103 = extractelement <2 x float> %24, i64 1 + %183 = fadd float %.sroa.097.0.vec.extract, %180 + %184 = fadd float %.sroa.097.4.vec.extract103, %180 %.sroa.0.0.vec.insert.i91 = insertelement <2 x float> poison, float %183, i64 0 %.sroa.0.4.vec.insert.i92 = insertelement <2 x float> %.sroa.0.0.vec.insert.i91, float %184, i64 1 %185 = fneg float %180 @@ -3575,8 +3572,8 @@ _ZNK6ImRect8OverlapsERKS_.exit: ; preds = %66 call void @llvm.lifetime.start.p0(ptr nonnull %11) %188 = getelementptr inbounds nuw i8, ptr %12, i64 3184 %189 = load float, ptr %188, align 4, !tbaa !171 - %190 = fadd float %143, %189 - %.sroa.097.4.vec.extract = extractelement <2 x float> %145, i64 1 + %190 = fadd float %144, %189 + %.sroa.097.4.vec.extract = extractelement <2 x float> %24, i64 1 %191 = load float, ptr %36, align 4, !tbaa !170 %192 = fadd float %.sroa.097.4.vec.extract, %191 store float %190, ptr %11, align 8, !tbaa !159 @@ -3621,7 +3618,7 @@ _ZNK6ImRect8OverlapsERKS_.exit: ; preds = %66 br label %_ZNK6ImRect8OverlapsERKS_.exit.thread _ZNK6ImRect8OverlapsERKS_.exit.thread: ; preds = %54, %61, %66, %49, %50, %_ZNK6ImRect8OverlapsERKS_.exit, %205 - %.1 = phi i1 [ %207, %205 ], [ false, %_ZNK6ImRect8OverlapsERKS_.exit ], [ false, %50 ], [ false, %49 ], [ false, %66 ], [ false, %61 ], [ false, %54 ] + %.1 = phi i1 [ %207, %205 ], [ false, %_ZNK6ImRect8OverlapsERKS_.exit ], [ false, %51 ], [ false, %50 ], [ false, %67 ], [ false, %62 ], [ false, %55 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %208 diff --git a/bench/just-rs/optimized/1uppz7l1e89fp8n7.ll b/bench/just-rs/optimized/1uppz7l1e89fp8n7.ll index 26cb3948416..a04bc5a6bb6 100644 --- a/bench/just-rs/optimized/1uppz7l1e89fp8n7.ll +++ b/bench/just-rs/optimized/1uppz7l1e89fp8n7.ll @@ -6436,8 +6436,8 @@ common.resume: ; preds = %40, %24 define internal void @_ZN4just8function10capitalize17h19a41238f770bca4E(ptr noalias noundef writeonly sret({ i64, [3 x i64] }) align 8 captures(none) dereferenceable(32) %0, ptr noalias readonly align 8 captures(none) %1, ptr noalias noundef nonnull readonly align 1 captures(address) %2, i64 noundef %3) unnamed_addr #2 personality ptr @rust_eh_personality { %5 = alloca { { [2 x i32], i32 } }, align 8 %6 = alloca { { [2 x i32], i32 } }, align 8 - %7 = alloca [3 x i32], align 4 - %8 = alloca [3 x i32], align 4 + %7 = alloca [3 x i32], align 8 + %8 = alloca [3 x i32], align 8 %9 = alloca { { { i64, ptr, {} }, i64 } }, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %9) store i64 0, ptr %9, align 8 @@ -6451,16 +6451,14 @@ define internal void @_ZN4just8function10capitalize17h19a41238f770bca4E(ptr noal .lr.ph: ; preds = %4 %12 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %13 = getelementptr inbounds nuw i8, ptr %7, i64 4 %.sroa.4.0..sroa_idx.i23 = getelementptr inbounds nuw i8, ptr %5, i64 8 %14 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %15 = getelementptr inbounds nuw i8, ptr %8, i64 4 %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %6, i64 8 br label %16 16: ; preds = %.lr.ph, %74 - %.sroa.0.039 = phi ptr [ %2, %.lr.ph ], [ %.sroa.0.137, %74 ] - %.sroa.10.038 = phi i64 [ 0, %.lr.ph ], [ %58, %74 ] + %.sroa.0.039 = phi ptr [ %2, %.lr.ph ], [ %.sroa.0.137, %71 ] + %.sroa.10.038 = phi i64 [ 0, %.lr.ph ], [ %58, %71 ] %17 = getelementptr inbounds nuw i8, ptr %.sroa.0.039, i64 1 %18 = load i8, ptr %.sroa.0.039, align 1, !noalias !1648, !noundef !4 %19 = icmp sgt i8 %18, -1 @@ -6516,7 +6514,7 @@ define internal void @_ZN4just8function10capitalize17h19a41238f770bca4E(ptr noal %53 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2f4461582ec6620eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) #38 - to label %90 unwind label %88 + to label %86 unwind label %88 54: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i" %55 = getelementptr inbounds nuw i8, ptr %.sroa.0.039, i64 4 @@ -6530,8 +6528,8 @@ define internal void @_ZN4just8function10capitalize17h19a41238f770bca4E(ptr noal ret void .thread35: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8b7bbdcfba47b7a7E.exit13.i.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8b7bbdcfba47b7a7E.exit15.i.i.i", %30, %54 - %57 = phi i32 [ %50, %54 ], [ %28, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8b7bbdcfba47b7a7E.exit13.i.i.i" ], [ %40, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8b7bbdcfba47b7a7E.exit15.i.i.i" ], [ %31, %30 ] - %.sroa.0.137 = phi ptr [ %55, %54 ], [ %23, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8b7bbdcfba47b7a7E.exit13.i.i.i" ], [ %33, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8b7bbdcfba47b7a7E.exit15.i.i.i" ], [ %17, %30 ] + %57 = phi i32 [ %50, %52 ], [ %28, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8b7bbdcfba47b7a7E.exit13.i.i.i" ], [ %40, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8b7bbdcfba47b7a7E.exit15.i.i.i" ], [ %31, %28 ] + %.sroa.0.137 = phi ptr [ %55, %52 ], [ %23, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8b7bbdcfba47b7a7E.exit13.i.i.i" ], [ %33, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8b7bbdcfba47b7a7E.exit15.i.i.i" ], [ %17, %28 ] %58 = add i64 %.sroa.10.038, 1 %59 = icmp eq i64 %.sroa.10.038, 0 br i1 %59, label %60, label %61 @@ -6547,18 +6545,13 @@ define internal void @_ZN4just8function10capitalize17h19a41238f770bca4E(ptr noal to label %switch.lookup41 unwind label %52 switch.lookup: ; preds = %60 - %62 = load i32, ptr %14, align 4, !range !1661, !noalias !1655, !noundef !4 + %62 = load i32, ptr %14, align 8, !range !1661, !noalias !1655, !noundef !4 %63 = icmp eq i32 %62, 0 - %64 = load i32, ptr %15, align 4, !range !1661, !noalias !1655 - %65 = icmp eq i32 %64, 0 + %64 = load i64, ptr %8, align 8 + %65 = icmp ult i64 %64, 4294967296 %..i = select i1 %65, i32 1114113, i32 1114112 %.sroa.8.0.i = select i1 %63, i32 %..i, i32 %62 - %.sroa.0.0.i12 = load i32, ptr %8, align 4, !range !1661, !noalias !1655, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %8), !noalias !1655 - %.sroa.027.0.insert.ext = zext nneg i32 %.sroa.0.0.i12 to i64 - %.sroa.027.4.insert.ext = zext nneg i32 %64 to i64 - %.sroa.027.4.insert.shift = shl nuw nsw i64 %.sroa.027.4.insert.ext, 32 - %.sroa.027.4.insert.insert = or disjoint i64 %.sroa.027.4.insert.shift, %.sroa.027.0.insert.ext call void @llvm.experimental.noalias.scope.decl(metadata !1662) %66 = add nsw i32 %.sroa.8.0.i, -1114112 %67 = icmp ult i32 %66, 3 @@ -6577,10 +6570,10 @@ switch.lookup: ; preds = %60 "_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7a2752b7ca1ba8e4E.exit.i": ; preds = %72, %switch.lookup call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !1670 - store i64 %.sroa.027.4.insert.insert, ptr %6, align 8, !noalias !1670 + store i64 %.sroa.0.0.i12, ptr %6, align 8, !noalias !1670 store i32 %.sroa.8.0.i, ptr %.sroa.4.0..sroa_idx.i, align 8, !noalias !1670 invoke void @_ZN4core4iter6traits8iterator8Iterator4fold17h192866162217bdddE.llvm.3204583114324502961(ptr noalias noundef nonnull align 4 captures(none) dereferenceable(12) %6, ptr noalias noundef nonnull align 8 dereferenceable(24) %9) - to label %73 unwind label %52 + to label %70 unwind label %52 73: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7a2752b7ca1ba8e4E.exit.i" call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !1670 @@ -6591,18 +6584,13 @@ switch.lookup: ; preds = %60 br i1 %75, label %.thread, label %16 switch.lookup41: ; preds = %61 - %76 = load i32, ptr %12, align 4, !range !1661, !noalias !1658, !noundef !4 + %76 = load i32, ptr %12, align 8, !range !1661, !noalias !1658, !noundef !4 %77 = icmp eq i32 %76, 0 - %78 = load i32, ptr %13, align 4, !range !1661, !noalias !1658 - %79 = icmp eq i32 %78, 0 + %78 = load i64, ptr %7, align 8 + %79 = icmp ult i64 %78, 4294967296 %..i13 = select i1 %79, i32 1114113, i32 1114112 %.sroa.8.0.i14 = select i1 %77, i32 %..i13, i32 %76 - %.sroa.0.0.i15 = load i32, ptr %7, align 4, !range !1661, !noalias !1658, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !1658 - %.sroa.028.0.insert.ext = zext nneg i32 %.sroa.0.0.i15 to i64 - %.sroa.028.4.insert.ext = zext nneg i32 %78 to i64 - %.sroa.028.4.insert.shift = shl nuw nsw i64 %.sroa.028.4.insert.ext, 32 - %.sroa.028.4.insert.insert = or disjoint i64 %.sroa.028.4.insert.shift, %.sroa.028.0.insert.ext call void @llvm.experimental.noalias.scope.decl(metadata !1671) %80 = add nsw i32 %.sroa.8.0.i14, -1114112 %81 = icmp ult i32 %80, 3 @@ -6621,10 +6609,10 @@ switch.lookup41: ; preds = %61 "_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7a2752b7ca1ba8e4E.exit.i22": ; preds = %86, %switch.lookup41 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !1679 - store i64 %.sroa.028.4.insert.insert, ptr %5, align 8, !noalias !1679 + store i64 %.sroa.0.0.i15, ptr %5, align 8, !noalias !1679 store i32 %.sroa.8.0.i14, ptr %.sroa.4.0..sroa_idx.i23, align 8, !noalias !1679 invoke void @_ZN4core4iter6traits8iterator8Iterator4fold17h76763a802f2eb108E.llvm.3204583114324502961(ptr noalias noundef nonnull align 4 captures(none) dereferenceable(12) %5, ptr noalias noundef nonnull align 8 dereferenceable(24) %9) - to label %87 unwind label %52 + to label %83 unwind label %52 87: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7a2752b7ca1ba8e4E.exit.i22" call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !1679 diff --git a/bench/just-rs/optimized/uwydcyn8qeoqoev.ll b/bench/just-rs/optimized/uwydcyn8qeoqoev.ll index 66c1fed3a16..5eabf4f50fd 100644 --- a/bench/just-rs/optimized/uwydcyn8qeoqoev.ll +++ b/bench/just-rs/optimized/uwydcyn8qeoqoev.ll @@ -6764,7 +6764,7 @@ define hidden void @_ZN4just13compile_error12CompileError3new17h479473d03fa59996 define internal fastcc void @_ZN4just13compile_error10capitalize17h49501378fff1b08fE(ptr noalias noundef nonnull writeonly align 8 captures(none) dereferenceable(24) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #1 personality ptr @rust_eh_personality { %4 = alloca { { [2 x i32], i32 } }, align 8 %5 = alloca { { { i64, ptr, {} }, i64 } }, align 8 - %6 = alloca [3 x i32], align 4 + %6 = alloca [3 x i32], align 8 %7 = alloca { { { i64, ptr, {} }, i64 } }, align 8 %8 = getelementptr inbounds i8, ptr %1, i64 %2 %9 = icmp eq i64 %2, 0 @@ -6838,14 +6838,12 @@ define internal fastcc void @_ZN4just13compile_error10capitalize17h49501378fff1b call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !1048 call void @_ZN4core7unicode12unicode_data11conversions8to_upper17h3d15e8f6bc4279a0E(ptr noalias noundef nonnull sret([3 x i32]) align 4 captures(none) dereferenceable(12) %6, i32 noundef range(i32 0, 1114112) %.sroa.4.0.i.ph24), !noalias !1048 %48 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %49 = load i32, ptr %48, align 4, !range !1051, !noalias !1048, !noundef !4 + %49 = load i32, ptr %48, align 8, !range !1051, !noalias !1048, !noundef !4 %50 = icmp eq i32 %49, 0 - %51 = getelementptr inbounds nuw i8, ptr %6, i64 4 - %52 = load i32, ptr %51, align 4, !range !1051, !noalias !1048 - %53 = icmp eq i32 %52, 0 - %..i = select i1 %53, i32 1114113, i32 1114112 + %.sroa.0.0.i10 = load i64, ptr %6, align 8 + %51 = icmp ult i64 %.sroa.0.0.i10, 4294967296 + %..i = select i1 %51, i32 1114113, i32 1114112 %.sroa.8.0.i = select i1 %50, i32 %..i, i32 %49 - %.sroa.0.0.i10 = load i32, ptr %6, align 4, !range !1051, !noalias !1048, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !1048 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !1052 store i64 0, ptr %5, align 8, !noalias !1052 @@ -6862,16 +6860,12 @@ define internal fastcc void @_ZN4just13compile_error10capitalize17h49501378fff1b to label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7a2752b7ca1ba8e4E.exit.i.i" unwind label %56, !noalias !1052 "_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7a2752b7ca1ba8e4E.exit.i.i": ; preds = %.thread20 - %.sroa.013.4.insert.ext = zext nneg i32 %52 to i64 - %.sroa.013.4.insert.shift = shl nuw nsw i64 %.sroa.013.4.insert.ext, 32 - %.sroa.013.0.insert.ext = zext nneg i32 %.sroa.0.0.i10 to i64 - %.sroa.013.4.insert.insert = or disjoint i64 %.sroa.013.4.insert.shift, %.sroa.013.0.insert.ext call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !1056 - store i64 %.sroa.013.4.insert.insert, ptr %4, align 8, !noalias !1056 + store i64 %.sroa.0.0.i10, ptr %4, align 8, !noalias !1056 %.sroa.4.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %4, i64 8 store i32 %.sroa.8.0.i, ptr %.sroa.4.0..sroa_idx.i.i, align 8, !noalias !1056 invoke void @_ZN4core4iter6traits8iterator8Iterator4fold17h192866162217bdddE.llvm.3204583114324502961(ptr noalias noundef nonnull align 4 captures(none) dereferenceable(12) %4, ptr noalias noundef nonnull align 8 dereferenceable(24) %5) - to label %61 unwind label %56, !noalias !1052 + to label %59 unwind label %56, !noalias !1052 56: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7a2752b7ca1ba8e4E.exit.i.i", %.thread20 %57 = landingpad { ptr, i32 } @@ -6886,7 +6880,7 @@ define internal fastcc void @_ZN4just13compile_error10capitalize17h49501378fff1b unreachable common.resume: ; preds = %71, %56 - %common.resume.op = phi { ptr, i32 } [ %57, %56 ], [ %72, %71 ] + %common.resume.op = phi { ptr, i32 } [ %57, %54 ], [ %72, %69 ] resume { ptr, i32 } %common.resume.op 60: ; preds = %75, %.thread @@ -6928,7 +6922,7 @@ common.resume: ; preds = %71, %56 unreachable 75: ; preds = %.noexc.i, %61 - %76 = phi i64 [ %66, %61 ], [ %.pre.i.i.i, %.noexc.i ] + %76 = phi i64 [ %66, %59 ], [ %.pre.i.i.i, %.noexc.i ] %77 = getelementptr inbounds nuw i8, ptr %7, i64 8 %78 = load ptr, ptr %77, align 8, !alias.scope !1076, !noalias !1072, !nonnull !4, !noundef !4 %79 = getelementptr inbounds i8, ptr %78, i64 %76 diff --git a/bench/linux/optimized/addrconf.ll b/bench/linux/optimized/addrconf.ll index def71dd349f..d223d9e5ea0 100644 --- a/bench/linux/optimized/addrconf.ll +++ b/bench/linux/optimized/addrconf.ll @@ -1701,8 +1701,8 @@ define internal fastcc noundef range(i32 -1, 1) i32 @ipv6_generate_stable_addres %23 = getelementptr i8, ptr %0, i64 4 br label %24 -24: ; preds = %48, %21 - %25 = phi i8 [ %1, %21 ], [ %49, %48 ] +24: ; preds = %50, %21 + %25 = phi i8 [ %1, %21 ], [ %51, %50 ] tail call void @_raw_spin_lock_bh(ptr noundef nonnull @ipv6_generate_stable_address.lock) #20 tail call void @sha1_init(ptr noundef nonnull @ipv6_generate_stable_address.digest) #20 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) @ipv6_generate_stable_address.data, i8 0, i64 64, i1 false) @@ -1721,50 +1721,48 @@ define internal fastcc noundef range(i32 -1, 1) i32 @ipv6_generate_stable_addres store i8 %25, ptr getelementptr inbounds nuw (i8, ptr @ipv6_generate_stable_address.data, i64 56), align 1 tail call void @sha1_transform(ptr noundef nonnull @ipv6_generate_stable_address.digest, ptr noundef nonnull @ipv6_generate_stable_address.data, ptr noundef nonnull @ipv6_generate_stable_address.workspace) #20 %33 = load i64, ptr %0, align 4 - %34 = load i32, ptr @ipv6_generate_stable_address.digest, align 16 - %35 = load i32, ptr getelementptr inbounds nuw (i8, ptr @ipv6_generate_stable_address.digest, i64 4), align 4 + %34 = load i64, ptr @ipv6_generate_stable_address.digest, align 16 + %35 = trunc i64 %34 to i32 + %36 = lshr i64 %34, 32 + %37 = trunc nuw i64 %36 to i32 tail call void @_raw_spin_unlock_bh(ptr noundef nonnull @ipv6_generate_stable_address.lock) #20 - %36 = or i32 %35, %34 + %36 = or i32 %37, %35 %37 = icmp eq i32 %36, 0 - br i1 %37, label %48, label %38 + br i1 %37, label %50, label %38 38: ; preds = %24 - %39 = icmp eq i32 %34, -10616830 - %40 = and i32 %35, 254 + %39 = icmp eq i32 %35, -10616830 + %40 = and i32 %37, 254 %41 = icmp eq i32 %40, 254 %42 = and i1 %39, %41 - br i1 %42, label %48, label %43 + br i1 %42, label %50, label %45 + +45: ; preds = %40 + %46 = icmp eq i32 %35, -3 + %47 = and i32 %37, -2130706433 + %48 = icmp eq i32 %47, -2130706433 + %49 = and i1 %46, %48 + br i1 %49, label %50, label %59 + +50: ; preds = %45, %40, %24 + %51 = add i8 %25, 1 + %52 = zext i8 %51 to i32 + %53 = load ptr, ptr %2, align 8 + %54 = getelementptr inbounds nuw i8, ptr %53, i64 272 + %55 = load ptr, ptr %54, align 8 + %56 = getelementptr inbounds nuw i8, ptr %55, i64 1796 + %57 = load i32, ptr %56, align 4 + %58 = icmp slt i32 %57, %52 + br i1 %58, label %.loopexit, label %24 -43: ; preds = %38 - %44 = icmp eq i32 %34, -3 - %45 = and i32 %35, -2130706433 - %46 = icmp eq i32 %45, -2130706433 - %47 = and i1 %44, %46 - br i1 %47, label %48, label %57 - -48: ; preds = %43, %38, %24 - %49 = add i8 %25, 1 - %50 = zext i8 %49 to i32 - %51 = load ptr, ptr %2, align 8 - %52 = getelementptr inbounds nuw i8, ptr %51, i64 272 - %53 = load ptr, ptr %52, align 8 - %54 = getelementptr inbounds nuw i8, ptr %53, i64 1796 - %55 = load i32, ptr %54, align 4 - %56 = icmp slt i32 %55, %50 - br i1 %56, label %.loopexit, label %24 - -57: ; preds = %43 - %58 = zext i32 %34 to i64 - %59 = zext i32 %35 to i64 - %60 = shl nuw i64 %59, 32 - %61 = or disjoint i64 %60, %58 - %62 = getelementptr inbounds nuw i8, ptr %0, i64 8 +43: ; preds = %45 + %60 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %33, ptr %0, align 4 - store i64 %61, ptr %62, align 4 + store i64 %34, ptr %60, align 4 br label %.loopexit -.loopexit: ; preds = %48, %57, %10 - %63 = phi i32 [ 0, %57 ], [ -1, %10 ], [ -1, %48 ] +.loopexit: ; preds = %50, %59, %10 + %63 = phi i32 [ 0, %59 ], [ -1, %10 ], [ -1, %50 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %63 } diff --git a/bench/linux/optimized/generic.ll b/bench/linux/optimized/generic.ll index dab1be2febb..f74041947cd 100644 --- a/bench/linux/optimized/generic.ll +++ b/bench/linux/optimized/generic.ll @@ -1863,7 +1863,7 @@ define internal void @generic_set_mtrr(i32 noundef %0, i64 noundef %1, i64 nound 20: ; preds = %17, %15 call void @llvm.memset.p0.i64(ptr noundef align 4 dereferenceable(16) %7, i8 0, i64 16, i1 false) - br label %69 + br label %67 21: ; preds = %4 %22 = shl i64 %1, 12 @@ -1914,40 +1914,38 @@ define internal void @generic_set_mtrr(i32 noundef %0, i64 noundef %1, i64 nound 54: ; preds = %51, %49 %55 = add i32 %41, 513 - %56 = load i32, ptr %36, align 4 - %57 = load i32, ptr %40, align 4 - %58 = call i32 asm sideeffect "1: wrmsr ; xor $0,$0\0A2:\0A\09 .pushsection \22__ex_table\22,\22a\22\0A .balign 4\0A .long (1b) - .\0A .long (2b) - .\0A.macro extable_type_reg type:req reg:req\0A.set .Lfound, 0\0A.set .Lregnr, 0\0A.irp rs,rax,rcx,rdx,rbx,rsp,rbp,rsi,rdi,r8,r9,r10,r11,r12,r13,r14,r15\0A.ifc \\reg, %\\rs\0A.set .Lfound, .Lfound+1\0A.long \\type + (.Lregnr << 8)\0A.endif\0A.set .Lregnr, .Lregnr+1\0A.endr\0A.set .Lregnr, 0\0A.irp rs,eax,ecx,edx,ebx,esp,ebp,esi,edi,r8d,r9d,r10d,r11d,r12d,r13d,r14d,r15d\0A.ifc \\reg, %\\rs\0A.set .Lfound, .Lfound+1\0A.long \\type + (.Lregnr << 8)\0A.endif\0A.set .Lregnr, .Lregnr+1\0A.endr\0A.if (.Lfound != 1)\0A.error \22extable_type_reg: bad register argument\22\0A.endif\0A.endm\0Aextable_type_reg reg=$0, type=10 \0A.purgem extable_type_reg\0A .popsection\0A", "={ax},{cx},0,{dx},~{memory},~{dirflag},~{fpsr},~{flags}"(i32 %55, i32 %56, i32 %57) #17, !srcloc !25 + %56 = load i64, ptr %36, align 4 + %57 = trunc i64 %56 to i32 + %58 = lshr i64 %56, 32 + %59 = trunc nuw i64 %58 to i32 + %60 = call i32 asm sideeffect "1: wrmsr ; xor $0,$0\0A2:\0A\09 .pushsection \22__ex_table\22,\22a\22\0A .balign 4\0A .long (1b) - .\0A .long (2b) - .\0A.macro extable_type_reg type:req reg:req\0A.set .Lfound, 0\0A.set .Lregnr, 0\0A.irp rs,rax,rcx,rdx,rbx,rsp,rbp,rsi,rdi,r8,r9,r10,r11,r12,r13,r14,r15\0A.ifc \\reg, %\\rs\0A.set .Lfound, .Lfound+1\0A.long \\type + (.Lregnr << 8)\0A.endif\0A.set .Lregnr, .Lregnr+1\0A.endr\0A.set .Lregnr, 0\0A.irp rs,eax,ecx,edx,ebx,esp,ebp,esi,edi,r8d,r9d,r10d,r11d,r12d,r13d,r14d,r15d\0A.ifc \\reg, %\\rs\0A.set .Lfound, .Lfound+1\0A.long \\type + (.Lregnr << 8)\0A.endif\0A.set .Lregnr, .Lregnr+1\0A.endr\0A.if (.Lfound != 1)\0A.error \22extable_type_reg: bad register argument\22\0A.endif\0A.endm\0Aextable_type_reg reg=$0, type=10 \0A.purgem extable_type_reg\0A .popsection\0A", "={ax},{cx},0,{dx},~{memory},~{dirflag},~{fpsr},~{flags}"(i32 %55, i32 %57, i32 %59) #17, !srcloc !25 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 nuw (i8, ptr @__tracepoint_write_msr, i64 8), i32 2) #17 - to label %64 [label %59], !srcloc !23 + to label %62 [label %61], !srcloc !23 59: ; preds = %54 - %60 = zext i32 %57 to i64 - %61 = shl nuw i64 %60, 32 - %62 = zext i32 %56 to i64 - %63 = or disjoint i64 %61, %62 - call void @do_trace_write_msr(i32 noundef %55, i64 noundef %63, i32 noundef %58) #17 - br label %64 - -64: ; preds = %59, %54 - %65 = icmp slt i32 %58, 0 - br i1 %65, label %66, label %69 - -66: ; preds = %64 - %67 = call i32 asm "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #20, !srcloc !26 - %68 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.10, i32 noundef %67, i32 noundef %55, i32 noundef %56, i32 noundef %57) #18 - br label %69 + call void @do_trace_write_msr(i32 noundef %55, i64 noundef %56, i32 noundef %60) #17 + br label %62 + +62:; preds = %61, %54 + %63 = icmp slt i32 %60, 0 + br i1 %63, label %64, label %67 + +69: ; preds = %62 + %65 = call i32 asm "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #20, !srcloc !26 + %66 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.10, i32 noundef %65, i32 noundef %55, i32 noundef %57, i32 noundef %59) #18 + br label %67 -69: ; preds = %66, %64, %20 +67: ; preds = %64, %62, %20 call void @cache_enable() #17 %70 = and i64 %8, 512 %71 = icmp eq i64 %70, 0 br i1 %71, label %73, label %72 -72: ; preds = %69 +72: ; preds = %67 call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #17, !srcloc !42 br label %73 -73: ; preds = %72, %69 +73: ; preds = %72, %67 ret void } diff --git a/bench/linux/optimized/x86_pkg_temp_thermal.ll b/bench/linux/optimized/x86_pkg_temp_thermal.ll index b5e7d519bd0..16f4614df7e 100644 --- a/bench/linux/optimized/x86_pkg_temp_thermal.ll +++ b/bench/linux/optimized/x86_pkg_temp_thermal.ll @@ -420,7 +420,7 @@ define internal noundef i32 @pkg_thermal_cpu_offline(i32 noundef %0) #2 align 16 %44 = load i32, ptr %17, align 8 %45 = icmp ne i32 %44, %0 store i32 %37, ptr %17, align 8 - br i1 %39, label %64, label %46 + br i1 %39, label %61, label %46 46: ; preds = %43 %47 = load ptr, ptr @zones, align 8 @@ -433,52 +433,49 @@ define internal noundef i32 @pkg_thermal_cpu_offline(i32 noundef %0) #2 align 16 %54 = getelementptr ptr, ptr %47, i64 %53 store ptr null, ptr %54, align 8 %55 = getelementptr inbounds nuw i8, ptr %17, i64 8 - %56 = load i32, ptr %55, align 8 - %57 = getelementptr inbounds nuw i8, ptr %17, i64 12 - %58 = load i32, ptr %57, align 4 - 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 434, i32 %56, i32 %58) #8, !srcloc !15 + %56 = load i64, ptr %55, align 8 + %57 = trunc i64 %56 to i32 + %58 = lshr i64 %56, 32 + %59 = trunc nuw i64 %58 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 434, i32 %57, i32 %59) #8, !srcloc !15 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 nuw (i8, ptr @__tracepoint_write_msr, i64 8), i32 2) #8 - to label %64 [label %59], !srcloc !16 + to label %61 [label %60], !srcloc !16 59: ; preds = %46 - %60 = zext i32 %58 to i64 - %61 = shl nuw i64 %60, 32 - %62 = zext i32 %56 to i64 - %63 = or disjoint i64 %61, %62 - tail call void @do_trace_write_msr(i32 noundef 434, i64 noundef %63, i32 noundef 0) #8 - br label %64 - -64: ; preds = %59, %46, %43 - %65 = getelementptr inbounds nuw i8, ptr %17, i64 4 - %66 = load i8, ptr %65, align 4, !range !17, !noundef !18 - %67 = icmp eq i8 %66, 0 - %68 = select i1 %67, i1 true, i1 %45 + tail call void @do_trace_write_msr(i32 noundef 434, i64 noundef %56, i32 noundef 0) #8 + br label %61 + +61:; preds = %60, %46, %43 + %62 = getelementptr inbounds nuw i8, ptr %17, i64 4 + %63 = load i8, ptr %62, align 4, !range !17, !noundef !18 + %64 = icmp eq i8 %63, 0 + %65 = select i1 %64, i1 true, i1 %45 tail call void @_raw_spin_unlock_irq(ptr noundef nonnull @pkg_temp_lock) #8 - br i1 %68, label %80, label %69 + br i1 %65, label %80, label %69 -69: ; preds = %64 +69: ; preds = %61 %70 = getelementptr inbounds nuw i8, ptr %17, i64 16 %71 = tail call zeroext i1 @cancel_delayed_work_sync(ptr noundef nonnull %70) #8 tail call void @_raw_spin_lock_irq(ptr noundef nonnull @pkg_temp_lock) #8 - br i1 %39, label %72, label %81 + br i1 %39, label %69, label %81 + +69: ; preds = %66 + %70 = load i8, ptr %62, align 4, !range !17, !noundef !18 + %71 = icmp eq i8 %70, 0 + br i1 %71, label %.thread7, label %72 72: ; preds = %69 - %73 = load i8, ptr %65, align 4, !range !17, !noundef !18 - %74 = icmp eq i8 %73, 0 - br i1 %74, label %.thread7, label %75 - -75: ; preds = %72 - %76 = load i32, ptr @notify_delay_ms, align 4 - %77 = tail call i64 @__msecs_to_jiffies(i32 noundef %76) #8 - %78 = load ptr, ptr @system_wq, align 8 - %79 = tail call zeroext i1 @queue_delayed_work_on(i32 noundef %37, ptr noundef %78, ptr noundef nonnull %70, i64 noundef %77) #8 + %73 = load i32, ptr @notify_delay_ms, align 4 + %74 = tail call i64 @__msecs_to_jiffies(i32 noundef %73) #8 + %75 = load ptr, ptr @system_wq, align 8 + %76 = tail call zeroext i1 @queue_delayed_work_on(i32 noundef %37, ptr noundef %75, ptr noundef nonnull %67, i64 noundef %74) #8 br label %.thread7 -.thread7: ; preds = %75, %72 +.thread7: ; preds = %72, %69 tail call void @_raw_spin_unlock_irq(ptr noundef nonnull @pkg_temp_lock) #8 br label %.thread -80: ; preds = %64 +80: ; preds = %61 br i1 %39, label %.thread, label %82 81: ; preds = %69 diff --git a/bench/llvm/optimized/AArch64PBQPRegAlloc.ll b/bench/llvm/optimized/AArch64PBQPRegAlloc.ll index 29faed5e156..6f590bb35fd 100644 --- a/bench/llvm/optimized/AArch64PBQPRegAlloc.ll +++ b/bench/llvm/optimized/AArch64PBQPRegAlloc.ll @@ -3406,39 +3406,37 @@ define linkonce_odr hidden noundef ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_ %14 = zext i32 %13 to i64 %15 = getelementptr inbounds nuw float, ptr %9, i64 %14 %16 = tail call i64 @_ZN4llvm7hashing6detail23hash_combine_range_implIjEENSt9enable_ifIXsr16is_hashable_dataIT_EE5valueENS_9hash_codeEE4typeEPS4_S8_(ptr noundef %9, ptr noundef %15) - %17 = load i32, ptr %1, align 8, !tbaa !43 - %.sroa.0.0.insert.ext.i = zext i32 %17 to i64 - %18 = load i32, ptr %11, align 4, !tbaa !43 - %.sroa.0.4.insert.ext.i = zext i32 %18 to i64 - %.sroa.0.4.insert.shift.i = shl nuw i64 %.sroa.0.4.insert.ext.i, 32 - %.sroa.0.4.insert.insert.i = or disjoint i64 %.sroa.0.4.insert.shift.i, %.sroa.0.0.insert.ext.i - %19 = add i64 %16, 16 - %20 = tail call i64 @llvm.fshl.i64(i64 %19, i64 %19, i64 48) - %21 = xor i64 %20, %.sroa.0.4.insert.insert.i - %22 = xor i64 %21, -49064778989728563 - %23 = mul i64 %22, -7070675565921424023 - %24 = lshr i64 %23, 47 - %25 = xor i64 %20, %24 - %26 = xor i64 %25, %23 - %27 = mul i64 %26, -7070675565921424023 - %28 = lshr i64 %27, 47 - %29 = xor i64 %28, %27 - %30 = mul i64 %29, 3946327401 - %31 = xor i64 %30, %16 - %32 = trunc i64 %31 to i32 - %33 = add i32 %5, -1 - %34 = and i32 %33, %32 - %35 = load ptr, ptr %8, align 8 - %36 = mul i32 %18, %17 - %.fr = freeze i32 %36 - %37 = zext i32 %.fr to i64 - %.idx.i.i.i = shl nuw nsw i64 %37, 2 - %38 = getelementptr inbounds nuw i8, ptr %35, i64 %.idx.i.i.i + %17 = load i64, ptr %1, align 8 + %18 = trunc i64 %17 to i32 + %19 = lshr i64 %17, 32 + %20 = trunc nuw i64 %19 to i32 + %21 = add i64 %16, 16 + %22 = tail call i64 @llvm.fshl.i64(i64 %21, i64 %21, i64 48) + %23 = xor i64 %17, %22 + %24 = xor i64 %23, -49064778989728563 + %25 = mul i64 %24, -7070675565921424023 + %26 = lshr i64 %25, 47 + %27 = xor i64 %22, %26 + %28 = xor i64 %27, %25 + %29 = mul i64 %28, -7070675565921424023 + %30 = lshr i64 %29, 47 + %31 = xor i64 %30, %29 + %32 = mul i64 %31, 3946327401 + %29 = xor i64 %32, %16 + %34 = trunc i64 %29 to i32 + %35 = add i32 %5, -1 + %36 = and i32 %35, %34 + %37 = load ptr, ptr %8, align 8 + %38 = mul i32 %20, %18 + %.fr = freeze i32 %38 + %39 = zext i32 %.fr to i64 + %.idx.i.i.i = shl nuw nsw i64 %39, 2 + %40 = getelementptr inbounds nuw i8, ptr %37, i64 %.idx.i.i.i %.not9.i.i.i.i.i.i.i = icmp eq i32 %.fr, 0 br i1 %.not9.i.i.i.i.i.i.i, label %.split.us, label %.split .split.us: ; preds = %7, %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit.us - %.018.us = phi i32 [ %50, %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit.us ], [ %34, %7 ] + %.018.us = phi i32 [ %50, %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit.us ], [ %36, %7 ] %.016.us = phi i32 [ %48, %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit.us ], [ 1, %7 ] %39 = zext i32 %.018.us to i64 %40 = getelementptr inbounds nuw %"class.llvm::detail::DenseSetPair.290", ptr %3, i64 %39 @@ -3449,13 +3447,13 @@ define linkonce_odr hidden noundef ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_ 42: ; preds = %.split.us %43 = getelementptr inbounds nuw i8, ptr %41, i64 24 %44 = load i32, ptr %43, align 8, !tbaa !72 - %.not.i.i.i.us = icmp eq i32 %17, %44 + %.not.i.i.i.us = icmp eq i32 %46, %18 br i1 %.not.i.i.i.us, label %45, label %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit.us, !prof !405 45: ; preds = %42 %46 = getelementptr inbounds nuw i8, ptr %41, i64 28 %47 = load i32, ptr %46, align 4, !tbaa !81 - %.not5.i.i.i.us = icmp eq i32 %18, %47 + %.not5.i.i.i.us = icmp eq i32 %49, %20 br i1 %.not5.i.i.i.us, label %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit.thread28.loopexit.split.loop.exit, label %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit.us, !prof !405 _ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualEPNS6_9PoolEntryES9_.exit.us: ; preds = %.split.us @@ -3465,11 +3463,11 @@ _ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEnt _ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit.us: ; preds = %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualEPNS6_9PoolEntryES9_.exit.us, %45, %42 %48 = add i32 %.016.us, 1 %49 = add i32 %.016.us, %.018.us - %50 = and i32 %49, %33 + %50 = and i32 %49, %35 br label %.split.us, !llvm.loop !407 .split: ; preds = %7, %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit - %.018 = phi i32 [ %70, %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit ], [ %34, %7 ] + %.018 = phi i32 [ %70, %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit ], [ %36, %7 ] %.016 = phi i32 [ %68, %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit ], [ 1, %7 ] %51 = zext i32 %.018 to i64 %52 = getelementptr inbounds nuw %"class.llvm::detail::DenseSetPair.290", ptr %3, i64 %51 @@ -3480,13 +3478,13 @@ _ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEnt 54: ; preds = %.split %55 = getelementptr inbounds nuw i8, ptr %53, i64 24 %56 = load i32, ptr %55, align 8, !tbaa !72 - %.not.i.i.i = icmp eq i32 %17, %56 + %.not.i.i.i = icmp eq i32 %58, %18 br i1 %.not.i.i.i, label %57, label %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit, !prof !405 57: ; preds = %54 %58 = getelementptr inbounds nuw i8, ptr %53, i64 28 %59 = load i32, ptr %58, align 4, !tbaa !81 - %.not5.i.i.i = icmp eq i32 %18, %59 + %.not5.i.i.i = icmp eq i32 %61, %20 br i1 %.not5.i.i.i, label %.lr.ph.i.i.i.i.preheader.i.i.i, label %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit, !prof !405 .lr.ph.i.i.i.i.preheader.i.i.i: ; preds = %57 @@ -3495,8 +3493,8 @@ _ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEnt br label %.lr.ph.i.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i.i: ; preds = %65, %.lr.ph.i.i.i.i.preheader.i.i.i - %.011.i.i.i.i.i.i.i = phi ptr [ %67, %65 ], [ %61, %.lr.ph.i.i.i.i.preheader.i.i.i ] - %.0810.i.i.i.i.i.i.i = phi ptr [ %66, %65 ], [ %35, %.lr.ph.i.i.i.i.preheader.i.i.i ] + %.011.i.i.i.i.i.i.i = phi ptr [ %67, %67 ], [ %61, %.lr.ph.i.i.i.i.preheader.i.i.i ] + %.0810.i.i.i.i.i.i.i = phi ptr [ %66, %67 ], [ %37, %.lr.ph.i.i.i.i.preheader.i.i.i ] %62 = load float, ptr %.0810.i.i.i.i.i.i.i, align 4, !tbaa !70 %63 = load float, ptr %.011.i.i.i.i.i.i.i, align 4, !tbaa !70 %64 = fcmp oeq float %62, %63 @@ -3505,7 +3503,7 @@ _ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEnt 65: ; preds = %.lr.ph.i.i.i.i.i.i.i %66 = getelementptr inbounds nuw i8, ptr %.0810.i.i.i.i.i.i.i, i64 4 %67 = getelementptr inbounds nuw i8, ptr %.011.i.i.i.i.i.i.i, i64 4 - %.not.i.i.i.i.i.i.i = icmp eq ptr %66, %38 + %.not.i.i.i.i.i.i.i = icmp eq ptr %66, %40 br i1 %.not.i.i.i.i.i.i.i, label %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit.thread28.loopexit50, label %.lr.ph.i.i.i.i.i.i.i, !llvm.loop !408 _ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualEPNS6_9PoolEntryES9_.exit: ; preds = %.split @@ -3515,7 +3513,7 @@ _ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEnt _ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i, %54, %57, %_ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualEPNS6_9PoolEntryES9_.exit %68 = add i32 %.016, 1 %69 = add i32 %.016, %.018 - %70 = and i32 %69, %33 + %70 = and i32 %69, %35 br label %.split, !llvm.loop !407 _ZN4llvm4PBQP9ValuePoolINS0_8MDMatrixINS0_8RegAlloc14MatrixMetadataEEEE15PoolEntryDSInfo7isEqualINS0_6MatrixEEEbRKT_PNS6_9PoolEntryE.exit.thread28.loopexit.split.loop.exit: ; preds = %45 diff --git a/bench/llvm/optimized/SemaDecl.ll b/bench/llvm/optimized/SemaDecl.ll index 14582b250db..6e2f9671a76 100644 --- a/bench/llvm/optimized/SemaDecl.ll +++ b/bench/llvm/optimized/SemaDecl.ll @@ -60565,9 +60565,7 @@ _ZNK5clang15DeclarationName11getNameKindEv.exit.thread: ; preds = %1010 %.sroa.0.0.copyload.i693 = load i32, ptr %996, align 8, !tbaa !694 call void @_ZN5clang8SemaBase4DiagENS_14SourceLocationEjb(ptr dead_on_unwind nonnull writable sret(%"class.clang::SemaBase::SemaDiagnosticBuilder") align 8 %85, ptr noundef nonnull align 8 dereferenceable(8) %1016, i32 %.sroa.0.0.copyload.i693, i32 noundef 3585, i1 noundef zeroext false) #30 %1017 = getelementptr inbounds nuw i8, ptr %993, i64 36 - %.sroa.0273.0.copyload = load i32, ptr %1017, align 4, !tbaa !694 - %1018 = getelementptr inbounds nuw i8, ptr %993, i64 40 - %.sroa.0272.0.copyload = load i32, ptr %1018, align 8, !tbaa !694 + %.sroa.0273.0.copyload = load i64, ptr %1017, align 4 %1019 = getelementptr inbounds nuw i8, ptr %85, i64 120 %1020 = load i8, ptr %1019, align 8, !tbaa !780, !range !782, !noundef !783 %1021 = trunc nuw i8 %1020 to i1 @@ -60575,12 +60573,8 @@ _ZNK5clang15DeclarationName11getNameKindEv.exit.thread: ; preds = %1010 1022: ; preds = %1015 %1023 = getelementptr inbounds nuw i8, ptr %85, i64 32 - %.sroa.51657.0.insert.ext1658 = zext i32 %.sroa.0272.0.copyload to i64 - %.sroa.51657.0.insert.shift1659 = shl nuw i64 %.sroa.51657.0.insert.ext1658, 32 - %.sroa.01653.0.insert.ext1654 = zext i32 %.sroa.0273.0.copyload to i64 - %.sroa.01653.0.insert.insert1656 = or disjoint i64 %.sroa.51657.0.insert.shift1659, %.sroa.01653.0.insert.ext1654 call void @llvm.lifetime.start.p0(ptr nonnull %57) - store i64 %.sroa.01653.0.insert.insert1656, ptr %57, align 8 + store i64 %.sroa.0273.0.copyload, ptr %57, align 8 %.sroa.2.0..sroa_idx.i.i.i.i = getelementptr inbounds nuw i8, ptr %57, i64 8 store i8 1, ptr %.sroa.2.0..sroa_idx.i.i.i.i, align 8 call void @_ZNK5clang19StreamingDiagnostic14AddSourceRangeERKNS_15CharSourceRangeE(ptr noundef nonnull align 8 dereferenceable(84) %1023, ptr noundef nonnull align 4 dereferenceable(9) %57) @@ -60617,12 +60611,8 @@ _ZN5clang16CanonicalDeclPtrIKNS_12FunctionDeclEEC2EPS2_.exit.i695: ; preds = %10 %1041 = zext i32 %1040 to i64 %1042 = load ptr, ptr %1039, align 8, !tbaa !798 %1043 = getelementptr inbounds nuw %"struct.std::pair.2068", ptr %1042, i64 %1041, i32 2 - %.sroa.51657.0.insert.ext = zext i32 %.sroa.0272.0.copyload to i64 - %.sroa.51657.0.insert.shift = shl nuw i64 %.sroa.51657.0.insert.ext, 32 - %.sroa.01653.0.insert.ext = zext i32 %.sroa.0273.0.copyload to i64 - %.sroa.01653.0.insert.insert = or disjoint i64 %.sroa.51657.0.insert.shift, %.sroa.01653.0.insert.ext call void @llvm.lifetime.start.p0(ptr nonnull %56) - store i64 %.sroa.01653.0.insert.insert, ptr %56, align 8 + store i64 %.sroa.0273.0.copyload, ptr %56, align 8 %.sroa.2.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %56, i64 8 store i8 1, ptr %.sroa.2.0..sroa_idx.i.i.i, align 8 call void @_ZNK5clang19StreamingDiagnostic14AddSourceRangeERKNS_15CharSourceRangeE(ptr noundef nonnull align 8 dereferenceable(20) %1043, ptr noundef nonnull align 4 dereferenceable(9) %56) diff --git a/bench/llvm/optimized/SemaDeclCXX.ll b/bench/llvm/optimized/SemaDeclCXX.ll index eace1146da8..4e8a0c0ff67 100644 --- a/bench/llvm/optimized/SemaDeclCXX.ll +++ b/bench/llvm/optimized/SemaDeclCXX.ll @@ -33351,21 +33351,15 @@ _ZN5clanglsIPNS_14IdentifierInfoEEERKNS_8SemaBase21SemaDiagnosticBuilderES6_RKT_ %1212 = getelementptr inbounds nuw i8, ptr %3, i64 64 %1213 = load ptr, ptr %1212, align 8, !tbaa !21 %1214 = getelementptr inbounds nuw i8, ptr %1213, i64 36 - %.sroa.058.0.copyload = load i32, ptr %1214, align 4, !tbaa !51 - %1215 = getelementptr inbounds nuw i8, ptr %1213, i64 40 - %.sroa.057.0.copyload = load i32, ptr %1215, align 8, !tbaa !51 + %.sroa.058.0.copyload = load i64, ptr %1214, align 4 %1216 = load i8, ptr %1132, align 8, !tbaa !1066, !range !36, !noundef !37 %1217 = trunc nuw i8 %1216 to i1 br i1 %1217, label %1218, label %1220 1218: ; preds = %_ZN5clanglsIPNS_14IdentifierInfoEEERKNS_8SemaBase21SemaDiagnosticBuilderES6_RKT_.exit %1219 = getelementptr inbounds nuw i8, ptr %56, i64 32 - %.sroa.5.0.insert.ext535 = zext i32 %.sroa.057.0.copyload to i64 - %.sroa.5.0.insert.shift536 = shl nuw i64 %.sroa.5.0.insert.ext535, 32 - %.sroa.0531.0.insert.ext532 = zext i32 %.sroa.058.0.copyload to i64 - %.sroa.0531.0.insert.insert534 = or disjoint i64 %.sroa.5.0.insert.shift536, %.sroa.0531.0.insert.ext532 call void @llvm.lifetime.start.p0(ptr nonnull %24) - store i64 %.sroa.0531.0.insert.insert534, ptr %24, align 8 + store i64 %.sroa.058.0.copyload, ptr %24, align 8 %.sroa.2.0..sroa_idx.i.i.i.i = getelementptr inbounds nuw i8, ptr %24, i64 8 store i8 1, ptr %.sroa.2.0..sroa_idx.i.i.i.i, align 8 call void @_ZNK5clang19StreamingDiagnostic14AddSourceRangeERKNS_15CharSourceRangeE(ptr noundef nonnull align 8 dereferenceable(84) %1219, ptr noundef nonnull align 4 dereferenceable(9) %24) @@ -33402,12 +33396,8 @@ _ZN5clang16CanonicalDeclPtrIKNS_12FunctionDeclEEC2EPS2_.exit.i253: ; preds = %12 %1237 = zext i32 %1236 to i64 %1238 = load ptr, ptr %1235, align 8, !tbaa !1083 %1239 = getelementptr inbounds nuw %"struct.std::pair.2055", ptr %1238, i64 %1237, i32 2 - %.sroa.5.0.insert.ext = zext i32 %.sroa.057.0.copyload to i64 - %.sroa.5.0.insert.shift = shl nuw i64 %.sroa.5.0.insert.ext, 32 - %.sroa.0531.0.insert.ext = zext i32 %.sroa.058.0.copyload to i64 - %.sroa.0531.0.insert.insert = or disjoint i64 %.sroa.5.0.insert.shift, %.sroa.0531.0.insert.ext call void @llvm.lifetime.start.p0(ptr nonnull %23) - store i64 %.sroa.0531.0.insert.insert, ptr %23, align 8 + store i64 %.sroa.058.0.copyload, ptr %23, align 8 %.sroa.2.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %23, i64 8 store i8 1, ptr %.sroa.2.0..sroa_idx.i.i.i, align 8 call void @_ZNK5clang19StreamingDiagnostic14AddSourceRangeERKNS_15CharSourceRangeE(ptr noundef nonnull align 8 dereferenceable(20) %1239, ptr noundef nonnull align 4 dereferenceable(9) %23) @@ -103074,9 +103064,7 @@ _ZNK5clang8SemaBase21SemaDiagnosticBuilderlsINS_11SourceRangeEvEERKS1_OT_.exit53 %108 = getelementptr inbounds nuw i8, ptr %6, i64 8 %109 = load ptr, ptr %108, align 8, !tbaa !21 %110 = getelementptr inbounds nuw i8, ptr %109, i64 36 - %.sroa.011.0.copyload = load i32, ptr %110, align 4, !tbaa !51 - %111 = getelementptr inbounds nuw i8, ptr %109, i64 40 - %.sroa.010.0.copyload = load i32, ptr %111, align 8, !tbaa !51 + %.sroa.011.0.copyload = load i64, ptr %110, align 4 %112 = getelementptr inbounds nuw i8, ptr %23, i64 120 %113 = load i8, ptr %112, align 8, !tbaa !1066, !range !36, !noundef !37 %114 = trunc nuw i8 %113 to i1 @@ -103084,12 +103072,8 @@ _ZNK5clang8SemaBase21SemaDiagnosticBuilderlsINS_11SourceRangeEvEERKS1_OT_.exit53 115: ; preds = %105 %116 = getelementptr inbounds nuw i8, ptr %23, i64 32 - %.sroa.5.0.insert.ext78 = zext i32 %.sroa.010.0.copyload to i64 - %.sroa.5.0.insert.shift79 = shl nuw i64 %.sroa.5.0.insert.ext78, 32 - %.sroa.074.0.insert.ext75 = zext i32 %.sroa.011.0.copyload to i64 - %.sroa.074.0.insert.insert77 = or disjoint i64 %.sroa.5.0.insert.shift79, %.sroa.074.0.insert.ext75 call void @llvm.lifetime.start.p0(ptr nonnull %12) - store i64 %.sroa.074.0.insert.insert77, ptr %12, align 8 + store i64 %.sroa.011.0.copyload, ptr %12, align 8 %.sroa.2.0..sroa_idx.i.i.i.i60 = getelementptr inbounds nuw i8, ptr %12, i64 8 store i8 1, ptr %.sroa.2.0..sroa_idx.i.i.i.i60, align 8 call void @_ZNK5clang19StreamingDiagnostic14AddSourceRangeERKNS_15CharSourceRangeE(ptr noundef nonnull align 8 dereferenceable(84) %116, ptr noundef nonnull align 4 dereferenceable(9) %12) @@ -103126,12 +103110,8 @@ _ZN5clang16CanonicalDeclPtrIKNS_12FunctionDeclEEC2EPS2_.exit.i56: ; preds = %126 %134 = zext i32 %133 to i64 %135 = load ptr, ptr %132, align 8, !tbaa !1083 %136 = getelementptr inbounds nuw %"struct.std::pair.2055", ptr %135, i64 %134, i32 2 - %.sroa.5.0.insert.ext = zext i32 %.sroa.010.0.copyload to i64 - %.sroa.5.0.insert.shift = shl nuw i64 %.sroa.5.0.insert.ext, 32 - %.sroa.074.0.insert.ext = zext i32 %.sroa.011.0.copyload to i64 - %.sroa.074.0.insert.insert = or disjoint i64 %.sroa.5.0.insert.shift, %.sroa.074.0.insert.ext call void @llvm.lifetime.start.p0(ptr nonnull %11) - store i64 %.sroa.074.0.insert.insert, ptr %11, align 8 + store i64 %.sroa.011.0.copyload, ptr %11, align 8 %.sroa.2.0..sroa_idx.i.i.i58 = getelementptr inbounds nuw i8, ptr %11, i64 8 store i8 1, ptr %.sroa.2.0..sroa_idx.i.i.i58, align 8 call void @_ZNK5clang19StreamingDiagnostic14AddSourceRangeERKNS_15CharSourceRangeE(ptr noundef nonnull align 8 dereferenceable(20) %136, ptr noundef nonnull align 4 dereferenceable(9) %11) diff --git a/bench/meshlab/optimized/filter_icp.ll b/bench/meshlab/optimized/filter_icp.ll index 034d9a4c813..cdcf125b851 100644 --- a/bench/meshlab/optimized/filter_icp.ll +++ b/bench/meshlab/optimized/filter_icp.ll @@ -6777,26 +6777,21 @@ _ZN11GLLogStream4logfIJRiS1_PKcS3_EEEviS3_DpOT_.exit.i: ; preds = %110, %.noexc6 br label %_ZNK19MeshLabPluginLogger3logIJRiS1_PKcS3_EEEvS3_DpOT_.exit _ZNK19MeshLabPluginLogger3logIJRiS1_PKcS3_EEEvS3_DpOT_.exit: ; preds = %_ZN11GLLogStream4logfIJRiS1_PKcS3_EEEviS3_DpOT_.exit.i, %_ZN7QStringD2Ev.exit60 - %111 = load i32, ptr %.sroa.088.0109, align 4 - %112 = load i32, ptr %84, align 4 - %113 = load ptr, ptr %69, align 8 - %114 = load ptr, ptr %70, align 8 - %.not.i.i = icmp eq ptr %113, %114 - br i1 %.not.i.i, label %117, label %115 - -115: ; preds = %_ZNK19MeshLabPluginLogger3logIJRiS1_PKcS3_EEEvS3_DpOT_.exit - %.sroa.3.0.insert.ext = zext i32 %112 to i64 - %.sroa.3.0.insert.shift = shl nuw i64 %.sroa.3.0.insert.ext, 32 - %.sroa.0.0.insert.ext = zext i32 %111 to i64 - %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.3.0.insert.shift, %.sroa.0.0.insert.ext - store i64 %.sroa.0.0.insert.insert, ptr %113, align 4 - %116 = getelementptr inbounds nuw i8, ptr %113, i64 8 - store ptr %116, ptr %69, align 8 + %111 = load i64, ptr %.sroa.088.0109, align 4 + %112 = load ptr, ptr %69, align 8 + %113 = load ptr, ptr %70, align 8 + %.not.i.i = icmp eq ptr %112, %113 + br i1 %.not.i.i, label %116, label %114 + +114: ; preds = %_ZNK19MeshLabPluginLogger3logIJRiS1_PKcS3_EEEvS3_DpOT_.exit + store i64 %111, ptr %112, align 4 + %115 = getelementptr inbounds nuw i8, ptr %112, i64 8 + store ptr %115, ptr %69, align 8 br label %_ZNSt6vectorISt4pairIjjESaIS1_EE9push_backEOS1_.exit 117: ; preds = %_ZNK19MeshLabPluginLogger3logIJRiS1_PKcS3_EEEvS3_DpOT_.exit %118 = load ptr, ptr %12, align 8 - %119 = ptrtoint ptr %113 to i64 + %119 = ptrtoint ptr %112 to i64 %120 = ptrtoint ptr %118 to i64 %121 = sub i64 %119, %120 %122 = icmp eq i64 %121, 9223372036854775800 @@ -6824,12 +6819,8 @@ _ZNKSt6vectorISt4pairIjjESaIS1_EE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %117 .noexc65: ; preds = %_ZNKSt6vectorISt4pairIjjESaIS1_EE12_M_check_lenEmPKc.exit.i.i.i %131 = getelementptr inbounds i8, ptr %130, i64 %121 - %.sroa.3.0.insert.ext82 = zext i32 %112 to i64 - %.sroa.3.0.insert.shift83 = shl nuw i64 %.sroa.3.0.insert.ext82, 32 - %.sroa.0.0.insert.ext78 = zext i32 %111 to i64 - %.sroa.0.0.insert.insert80 = or disjoint i64 %.sroa.3.0.insert.shift83, %.sroa.0.0.insert.ext78 - store i64 %.sroa.0.0.insert.insert80, ptr %131, align 4 - %.not10.i.i.i.i.i.i.i = icmp eq ptr %118, %113 + store i64 %111, ptr %130, align 4 + %.not10.i.i.i.i.i.i.i = icmp eq ptr %118, %112 br i1 %.not10.i.i.i.i.i.i.i, label %_ZNSt6vectorISt4pairIjjESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit22.i.i.i, label %.lr.ph.i.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i.i: ; preds = %.noexc65, %.lr.ph.i.i.i.i.i.i.i @@ -6841,7 +6832,7 @@ _ZNKSt6vectorISt4pairIjjESaIS1_EE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %117 store i64 %132, ptr %.012.i.i.i.i.i.i.i, align 4, !alias.scope !59, !noalias !62 %133 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i.i.i.i.i, i64 8 %134 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i.i.i.i, i64 8 - %.not.i.i.i.i.i.i.i = icmp eq ptr %133, %113 + %.not.i.i.i.i.i.i.i = icmp eq ptr %133, %112 br i1 %.not.i.i.i.i.i.i.i, label %_ZNSt6vectorISt4pairIjjESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit22.i.i.i, label %.lr.ph.i.i.i.i.i.i.i, !llvm.loop !64 _ZNSt6vectorISt4pairIjjESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit22.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i, %.noexc65 @@ -6861,7 +6852,7 @@ _ZNSt6vectorISt4pairIjjESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__norma store ptr %137, ptr %70, align 8 br label %_ZNSt6vectorISt4pairIjjESaIS1_EE9push_backEOS1_.exit -_ZNSt6vectorISt4pairIjjESaIS1_EE9push_backEOS1_.exit: ; preds = %_ZNSt6vectorISt4pairIjjESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i.i, %115 +_ZNSt6vectorISt4pairIjjESaIS1_EE9push_backEOS1_.exit: ; preds = %_ZNSt6vectorISt4pairIjjESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i.i, %114 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #22 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #22 %138 = getelementptr inbounds nuw i8, ptr %.sroa.088.0109, i64 16 @@ -6901,7 +6892,7 @@ _ZNSt6vectorISt4pairIjjESaIS1_EE9push_backEOS1_.exit: ; preds = %_ZNSt6vectorISt br label %.body52 .body52: ; preds = %141, %89, %145, %143 - %.pn36 = phi { ptr, i32 } [ %lpad.phi102, %145 ], [ %144, %143 ], [ %142, %141 ], [ %90, %89 ] + %.pn36 = phi { ptr, i32 } [ %lpad.phi102, %144 ], [ %144, %142 ], [ %142, %140 ], [ %90, %89 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #22 br label %.body @@ -7014,12 +7005,12 @@ _ZNSt6vectorISt4pairIjjESaIS1_EED2Ev.exit: ; preds = %_ZN3vcg13OccupancyG br label %.body .body68: ; preds = %.body71, %147 - %.pn = phi { ptr, i32 } [ %148, %147 ], [ %162, %.body71 ] + %.pn = phi { ptr, i32 } [ %148, %146 ], [ %162, %.body71 ] call void @_ZN8QVariantD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #22 br label %.body .body: ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %76, %173, %.body68, %.body52, %139, %63 - %.pn38 = phi { ptr, i32 } [ %.pn36, %.body52 ], [ %140, %139 ], [ %64, %63 ], [ %.pn, %.body68 ], [ %174, %173 ], [ %77, %76 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit103, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp104, %.loopexit.split-lp.loopexit.split-lp ] + %.pn38 = phi { ptr, i32 } [ %.pn36, %.body52 ], [ %140, %138 ], [ %64, %63 ], [ %.pn, %.body68 ], [ %173, %172 ], [ %77, %76 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit103, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp104, %.loopexit.split-lp.loopexit.split-lp ] call void @_ZN3vcg13OccupancyGridI6CMeshOfED2Ev(ptr noundef nonnull align 8 dereferenceable(160) %13) #22 %175 = load ptr, ptr %12, align 8 %.not.i.i.i75 = icmp eq ptr %175, null @@ -7030,7 +7021,7 @@ _ZNSt6vectorISt4pairIjjESaIS1_EED2Ev.exit: ; preds = %_ZN3vcg13OccupancyG br label %_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev.exit76 _ZNSt6vectorISt4pairIjjESaIS1_EED2Ev.exit76: ; preds = %176, %.body, %61 - %.pn38.pn.pn = phi { ptr, i32 } [ %62, %61 ], [ %.pn38, %.body ], [ %.pn38, %176 ] + %.pn38.pn.pn = phi { ptr, i32 } [ %62, %61 ], [ %.pn38, %.body ], [ %.pn38, %175 ] resume { ptr, i32 } %.pn38.pn.pn } diff --git a/bench/meshlab/optimized/load_save.ll b/bench/meshlab/optimized/load_save.ll index cbd24e0dfcc..41be56e56e4 100644 --- a/bench/meshlab/optimized/load_save.ll +++ b/bench/meshlab/optimized/load_save.ll @@ -11499,7 +11499,7 @@ _ZN10QByteArrayD2Ev.exit: ; preds = %29, %_ZN9QtPrivate8 45: ; preds = %43 invoke void @__cxa_throw(ptr nonnull %42, ptr nonnull @_ZTI11MLException, ptr nonnull @_ZN11MLExceptionD2Ev) #31 - to label %169 unwind label %51 + to label %170 unwind label %51 46: ; preds = %61, %39, %28, %74, %55, %27, %_ZN7QStringD2Ev.exit %47 = landingpad { ptr, i32 } @@ -11569,7 +11569,7 @@ _ZN10QByteArrayD2Ev.exit: ; preds = %29, %_ZN9QtPrivate8 68: ; preds = %66 invoke void @__cxa_throw(ptr nonnull %65, ptr nonnull @_ZTI11MLException, ptr nonnull @_ZN11MLExceptionD2Ev) #31 - to label %169 unwind label %70 + to label %170 unwind label %70 .thread98: ; preds = %63 %69 = landingpad { ptr, i32 } @@ -11722,37 +11722,34 @@ _ZN7QStringD2Ev.exit79: ; preds = %_ZN9QtPrivate8RefCo 129: ; preds = %_ZN7QStringD2Ev.exit79 %130 = getelementptr inbounds nuw i8, ptr %12, i64 368 - %131 = load i32, ptr %130, align 8 - %132 = getelementptr inbounds nuw i8, ptr %12, i64 372 - %133 = load i32, ptr %132, align 4 - %134 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %.sroa.282.0.insert.ext = zext i32 %133 to i64 - %.sroa.282.0.insert.shift = shl nuw i64 %.sroa.282.0.insert.ext, 32 - %.sroa.081.0.insert.ext = zext i32 %131 to i64 - %.sroa.081.0.insert.insert = or disjoint i64 %.sroa.282.0.insert.shift, %.sroa.081.0.insert.ext - store i64 %.sroa.081.0.insert.insert, ptr %134, align 4 - %135 = uitofp i32 %131 to double + %131 = load i64, ptr %130, align 8 + %132 = trunc i64 %131 to i32 + %133 = lshr i64 %131, 32 + %134 = trunc nuw i64 %133 to i32 + %135 = getelementptr inbounds nuw i8, ptr %1, i64 4 + store i64 %131, ptr %135, align 4 + %136 = uitofp i32 %132 to double + %137 = fmul double %136, 5.000000e-01 + %138 = fptrunc double %137 to float + %135 = uitofp i32 %134 to double %136 = fmul double %135, 5.000000e-01 %137 = fptrunc double %136 to float - %138 = uitofp i32 %133 to double - %139 = fmul double %138, 5.000000e-01 - %140 = fptrunc double %139 to float - %141 = getelementptr inbounds nuw i8, ptr %1, i64 20 - store float %137, ptr %141, align 4 + %142 = getelementptr inbounds nuw i8, ptr %1, i64 20 + store float %138, ptr %142, align 4 %.sroa_idx80 = getelementptr inbounds nuw i8, ptr %1, i64 24 - store float %140, ptr %.sroa_idx80, align 8 + store float %141, ptr %.sroa_idx80, align 8 %142 = getelementptr inbounds nuw i8, ptr %12, i64 352 %143 = load double, ptr %142, align 8 %144 = uitofp i16 %94 to double %145 = fdiv double %143, %144 %146 = fptrunc double %145 to float %147 = fmul float %146, 3.600000e+01 - %148 = uitofp i32 %131 to float + %148 = uitofp i32 %132 to float %149 = fdiv float %147, %148 %150 = getelementptr inbounds nuw i8, ptr %1, i64 12 store float %149, ptr %150, align 4 %151 = fmul float %146, 2.400000e+01 - %152 = uitofp i32 %133 to float + %152 = uitofp i32 %134 to float %153 = fdiv float %151, %152 %154 = getelementptr inbounds nuw i8, ptr %1, i64 16 store float %153, ptr %154, align 8 @@ -11763,27 +11760,27 @@ _ZN7QStringD2Ev.exit79: ; preds = %_ZN9QtPrivate8RefCo %storemerge = phi float [ %155, %129 ], [ 5.000000e+01, %124 ] store float %storemerge, ptr %1, align 8 %157 = getelementptr inbounds nuw i8, ptr %12, i64 560 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #27 - %158 = getelementptr inbounds nuw i8, ptr %12, i64 528 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #27 - %159 = getelementptr inbounds nuw i8, ptr %12, i64 272 + %159 = getelementptr inbounds nuw i8, ptr %12, i64 528 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #27 - %160 = getelementptr inbounds nuw i8, ptr %12, i64 240 + %160 = getelementptr inbounds nuw i8, ptr %12, i64 272 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %160) #27 - %161 = getelementptr inbounds nuw i8, ptr %12, i64 208 + %161 = getelementptr inbounds nuw i8, ptr %12, i64 240 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %161) #27 - %162 = getelementptr inbounds nuw i8, ptr %12, i64 176 + %162 = getelementptr inbounds nuw i8, ptr %12, i64 208 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #27 - %163 = getelementptr inbounds nuw i8, ptr %12, i64 144 + %163 = getelementptr inbounds nuw i8, ptr %12, i64 176 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %163) #27 - %164 = getelementptr inbounds nuw i8, ptr %12, i64 112 + %164 = getelementptr inbounds nuw i8, ptr %12, i64 144 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #27 - %165 = getelementptr inbounds nuw i8, ptr %12, i64 72 + %165 = getelementptr inbounds nuw i8, ptr %12, i64 112 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %165) #27 - %166 = getelementptr inbounds nuw i8, ptr %12, i64 40 + %166 = getelementptr inbounds nuw i8, ptr %12, i64 72 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #27 - %167 = getelementptr inbounds nuw i8, ptr %12, i64 8 + %167 = getelementptr inbounds nuw i8, ptr %12, i64 40 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #27 + %168 = getelementptr inbounds nuw i8, ptr %12, i64 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #27 call void @_ZN6QImageD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #27 ret void diff --git a/bench/minetest/optimized/client.ll b/bench/minetest/optimized/client.ll index 7470029c444..992abed8c22 100644 --- a/bench/minetest/optimized/client.ll +++ b/bench/minetest/optimized/client.ll @@ -21055,9 +21055,12 @@ entry: %m_crack_level = getelementptr inbounds nuw i8, ptr %this, i64 724 %0 = load i32, ptr %m_crack_level, align 4, !tbaa !180 %m_crack_pos = getelementptr inbounds nuw i8, ptr %this, i64 728 - %old_crack_pos.sroa.0.0.copyload = load i16, ptr %m_crack_pos, align 8, !tbaa !220 + %old_crack_pos.sroa.0.0.copyload = load i32, ptr %m_crack_pos, align 8 + %1 = zext i32 %old_crack_pos.sroa.0.0.copyload to i48 + %2 = trunc i32 %old_crack_pos.sroa.0.0.copyload to i16 %old_crack_pos.sroa.6.0.m_crack_pos.sroa_idx = getelementptr inbounds nuw i8, ptr %this, i64 730 - %old_crack_pos.sroa.6.0.copyload = load i16, ptr %old_crack_pos.sroa.6.0.m_crack_pos.sroa_idx, align 2, !tbaa !220 + %3 = lshr i32 %old_crack_pos.sroa.0.0.copyload, 16 + %4 = trunc nuw i32 %3 to i16 %old_crack_pos.sroa.8.0.m_crack_pos.sroa_idx = getelementptr inbounds nuw i8, ptr %this, i64 732 %old_crack_pos.sroa.8.0.copyload = load i16, ptr %old_crack_pos.sroa.8.0.m_crack_pos.sroa_idx, align 4, !tbaa !220 store i32 %level, ptr %m_crack_level, align 4, !tbaa !180 @@ -21069,9 +21072,9 @@ entry: land.lhs.true: ; preds = %entry %cmp4 = icmp slt i32 %level, 0 - %cmp.i.i = icmp ne i16 %old_crack_pos.sroa.0.0.copyload, %pos.sroa.0.0.extract.trunc + %cmp.i.i = icmp ne i16 %2, %pos.sroa.0.0.extract.trunc %or.cond.not43 = select i1 %cmp4, i1 true, i1 %cmp.i.i - %cmp7.i.i = icmp ne i16 %old_crack_pos.sroa.6.0.copyload, %pos.sroa.5.0.extract.trunc + %cmp7.i.i = icmp ne i16 %4, %pos.sroa.5.0.extract.trunc %or.cond37.not42 = select i1 %or.cond.not43, i1 true, i1 %cmp7.i.i %cmp11.i.i = icmp ne i16 %old_crack_pos.sroa.8.0.copyload, %pos.sroa.7.0.extract.trunc %or.cond38 = select i1 %or.cond37.not42, i1 true, i1 %cmp11.i.i @@ -21080,11 +21083,7 @@ land.lhs.true: ; preds = %entry if.then: ; preds = %land.lhs.true %old_crack_pos.sroa.8.0.insert.ext = zext i16 %old_crack_pos.sroa.8.0.copyload to i48 %old_crack_pos.sroa.8.0.insert.shift = shl nuw i48 %old_crack_pos.sroa.8.0.insert.ext, 32 - %old_crack_pos.sroa.6.0.insert.ext = zext i16 %old_crack_pos.sroa.6.0.copyload to i48 - %old_crack_pos.sroa.6.0.insert.shift = shl nuw nsw i48 %old_crack_pos.sroa.6.0.insert.ext, 16 - %old_crack_pos.sroa.0.0.insert.ext = zext i16 %old_crack_pos.sroa.0.0.copyload to i48 - %old_crack_pos.sroa.6.0.insert.insert = or disjoint i48 %old_crack_pos.sroa.6.0.insert.shift, %old_crack_pos.sroa.0.0.insert.ext - %old_crack_pos.sroa.0.0.insert.insert = or disjoint i48 %old_crack_pos.sroa.6.0.insert.insert, %old_crack_pos.sroa.8.0.insert.shift + %old_crack_pos.sroa.0.0.insert.insert = or disjoint i48 %old_crack_pos.sroa.8.0.insert.shift, %1 tail call void @_ZN6Client24addUpdateMeshTaskForNodeEN3irr4core8vector3dIsEEbb(ptr noundef nonnull align 8 dereferenceable(1746) %this, i48 %old_crack_pos.sroa.0.0.insert.insert, i1 noundef zeroext false, i1 noundef zeroext true) br label %if.end @@ -21094,9 +21093,9 @@ if.end: ; preds = %if.then, %entry land.lhs.true6: ; preds = %if.end %cmp7 = icmp slt i32 %0, 0 - %cmp.i.i16 = icmp ne i16 %old_crack_pos.sroa.0.0.copyload, %pos.sroa.0.0.extract.trunc + %cmp.i.i16 = icmp ne i16 %2, %pos.sroa.0.0.extract.trunc %or.cond39.not45 = select i1 %cmp7, i1 true, i1 %cmp.i.i16 - %cmp7.i.i21 = icmp ne i16 %old_crack_pos.sroa.6.0.copyload, %pos.sroa.5.0.extract.trunc + %cmp7.i.i21 = icmp ne i16 %4, %pos.sroa.5.0.extract.trunc %or.cond40.not44 = select i1 %or.cond39.not45, i1 true, i1 %cmp7.i.i21 %cmp11.i.i25 = icmp ne i16 %old_crack_pos.sroa.8.0.copyload, %pos.sroa.7.0.extract.trunc %or.cond41 = select i1 %or.cond40.not44, i1 true, i1 %cmp11.i.i25 diff --git a/bench/minetest/optimized/guiChatConsole.ll b/bench/minetest/optimized/guiChatConsole.ll index 7e77ce517ba..2bd59cd832f 100644 --- a/bench/minetest/optimized/guiChatConsole.ll +++ b/bench/minetest/optimized/guiChatConsole.ll @@ -2678,15 +2678,16 @@ if.end: ; preds = %entry %vfn3 = getelementptr inbounds nuw i8, ptr %vtable2, i64 472 %3 = load ptr, ptr %vfn3, align 8 %call4 = tail call noundef nonnull align 4 dereferenceable(8) ptr %3(ptr noundef nonnull align 8 dereferenceable(8) %call) - %4 = load i32, ptr %call4, align 4, !tbaa !89 - %Height.i = getelementptr inbounds nuw i8, ptr %call4, i64 4 - %5 = load i32, ptr %Height.i, align 4, !tbaa !90 + %4 = load i64, ptr %call4, align 4 + %5 = trunc i64 %4 to i32 + %6 = lshr i64 %4, 32 + %7 = trunc nuw i64 %6 to i32 %m_screensize = getelementptr inbounds nuw i8, ptr %this, i64 336 %6 = load i32, ptr %m_screensize, align 8, !tbaa !43 - %cmp.i.i = icmp ne i32 %4, %6 + %cmp.i.i = icmp ne i32 %8, %5 %Y3.i.i = getelementptr inbounds nuw i8, ptr %this, i64 340 %7 = load i32, ptr %Y3.i.i, align 4 - %cmp4.i.i = icmp ne i32 %5, %7 + %cmp4.i.i = icmp ne i32 %9, %7 %.not.i = select i1 %cmp.i.i, i1 true, i1 %cmp4.i.i br i1 %.not.i, label %if.then6, label %if.end18 @@ -2697,27 +2698,23 @@ if.then6: ; preds = %if.end br i1 %cmp.not, label %if.end13, label %if.then8 if.then8: ; preds = %if.then6 - %mul = mul i32 %.pre, %5 + %mul = mul i32 %.pre, %7 %div = udiv i32 %mul, %7 store i32 %div, ptr %m_height.i.i.phi.trans.insert, align 4, !tbaa !51 br label %if.end13 if.end13: ; preds = %if.then8, %if.then6 %8 = phi i32 [ %div, %if.then8 ], [ %.pre, %if.then6 ] - %screensize.sroa.5.0.insert.ext = zext i32 %5 to i64 - %screensize.sroa.5.0.insert.shift = shl nuw i64 %screensize.sroa.5.0.insert.ext, 32 - %screensize.sroa.0.0.insert.ext = zext i32 %4 to i64 - %screensize.sroa.0.0.insert.insert = or disjoint i64 %screensize.sroa.5.0.insert.shift, %screensize.sroa.0.0.insert.ext - store i64 %screensize.sroa.0.0.insert.insert, ptr %m_screensize, align 8, !tbaa.struct !81 + store i64 %4, ptr %m_screensize, align 8, !tbaa.struct !81 %m_desired_height_fraction = getelementptr inbounds nuw i8, ptr %this, i64 364 %9 = load float, ptr %m_desired_height_fraction, align 4, !tbaa !111 - %conv = uitofp i32 %5 to float + %conv = uitofp i32 %7 to float %mul17 = fmul nsz float %9, %conv %m_desired_height = getelementptr inbounds nuw i8, ptr %this, i64 360 store float %mul17, ptr %m_desired_height, align 8, !tbaa !113 %m_fontsize.i = getelementptr inbounds nuw i8, ptr %this, i64 416 %10 = load i32, ptr %m_fontsize.i, align 8, !tbaa !115 - %div.i = udiv i32 %4, %10 + %div.i = udiv i32 %5, %10 %sub.i = add i32 %div.i, -2 %Y.i27 = getelementptr inbounds nuw i8, ptr %this, i64 420 %11 = load i32, ptr %Y.i27, align 4, !tbaa !116 @@ -2735,7 +2732,7 @@ if.end13: ; preds = %if.then8, %if.then6 %rect.sroa.4.0.DesiredRect.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %this, i64 100 store i32 0, ptr %rect.sroa.4.0.DesiredRect.sroa_idx.i.i, align 4, !tbaa !12 %rect.sroa.5.0.DesiredRect.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %this, i64 104 - store i32 %4, ptr %rect.sroa.5.0.DesiredRect.sroa_idx.i.i, align 8, !tbaa !12 + store i32 %5, ptr %rect.sroa.5.0.DesiredRect.sroa_idx.i.i, align 8, !tbaa !12 %rect.sroa.6.0.DesiredRect.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %this, i64 108 store i32 %8, ptr %rect.sroa.6.0.DesiredRect.sroa_idx.i.i, align 4, !tbaa !12 tail call void @_ZN3irr3gui11IGUIElement27recalculateAbsolutePositionEb(ptr noundef nonnull align 8 dereferenceable(308) %this, i1 noundef zeroext false) @@ -2770,7 +2767,7 @@ if.then24: ; preds = %if.end18 %vtable.i = load ptr, ptr %17, align 8, !tbaa !14 %vfn.i = getelementptr inbounds nuw i8, ptr %vtable.i, i64 48 %18 = load ptr, ptr %vfn.i, align 8 - %call.i = call noundef ptr %18(ptr noundef nonnull align 8 dereferenceable(8) %17) + %call.i = call noundef ptr %20(ptr noundef nonnull align 8 dereferenceable(8) %17) %m_background.i = getelementptr inbounds nuw i8, ptr %this, i64 392 %19 = load ptr, ptr %m_background.i, align 8, !tbaa !54 %cmp.not.i = icmp eq ptr %19, null @@ -2798,7 +2795,7 @@ if.then.i: ; preds = %if.then24 %vtable3.i = load ptr, ptr %call.i, align 8, !tbaa !14 %vfn4.i = getelementptr inbounds nuw i8, ptr %vtable3.i, i64 384 %22 = load ptr, ptr %vfn4.i, align 8 - call void %22(ptr noundef nonnull align 8 dereferenceable(8) %call.i, ptr noundef nonnull %19, ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp.i, ptr noundef nonnull align 4 dereferenceable(16) %sourcerect.i, ptr noundef nonnull %AbsoluteClippingRect.i, i32 %agg.tmp.sroa.0.0.copyload.i, i1 noundef zeroext false) + call void %24(ptr noundef nonnull align 8 dereferenceable(8) %call.i, ptr noundef nonnull %19, ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp.i, ptr noundef nonnull align 4 dereferenceable(16) %sourcerect.i, ptr noundef nonnull %AbsoluteClippingRect.i, i32 %agg.tmp.sroa.0.0.copyload.i, i1 noundef zeroext false) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp.i) call void @llvm.lifetime.end.p0(ptr nonnull %sourcerect.i) br label %_ZN14GUIChatConsole14drawBackgroundEv.exit @@ -2820,7 +2817,7 @@ if.else.i: ; preds = %if.then24 %vtable13.i = load ptr, ptr %call.i, align 8, !tbaa !14 %vfn14.i = getelementptr inbounds nuw i8, ptr %vtable13.i, i64 408 %25 = load ptr, ptr %vfn14.i, align 8 - call void %25(ptr noundef nonnull align 8 dereferenceable(8) %call.i, i32 %agg.tmp5.sroa.0.0.copyload.i, ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp7.i, ptr noundef nonnull %AbsoluteClippingRect11.i) + call void %27(ptr noundef nonnull align 8 dereferenceable(8) %call.i, i32 %agg.tmp5.sroa.0.0.copyload.i, ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp7.i, ptr noundef nonnull %AbsoluteClippingRect11.i) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp7.i) br label %_ZN14GUIChatConsole14drawBackgroundEv.exit @@ -2833,7 +2830,7 @@ if.end25: ; preds = %_ZN14GUIChatConsole %vtable.i32 = load ptr, ptr %this, align 8, !tbaa !14 %vfn.i33 = getelementptr inbounds nuw i8, ptr %vtable.i32, i64 104 %26 = load ptr, ptr %vfn.i33, align 8 - %call.i34 = call noundef zeroext i1 %26(ptr noundef nonnull align 8 dereferenceable(308) %this) + %call.i34 = call noundef zeroext i1 %28(ptr noundef nonnull align 8 dereferenceable(308) %this) br i1 %call.i34, label %if.then.i35, label %return if.then.i35: ; preds = %if.end25 @@ -2849,7 +2846,7 @@ for.body.i: ; preds = %if.then.i35, %for.b %vtable7.i = load ptr, ptr %27, align 8, !tbaa !14 %vfn8.i = getelementptr inbounds nuw i8, ptr %vtable7.i, i64 80 %28 = load ptr, ptr %vfn8.i, align 8 - call void %28(ptr noundef nonnull align 8 dereferenceable(308) %27) + call void %30(ptr noundef nonnull align 8 dereferenceable(308) %27) %__begin3.sroa.0.0.i = load ptr, ptr %__begin3.sroa.0.015.i, align 8, !tbaa !87 %cmp.i.not.i = icmp eq ptr %__begin3.sroa.0.0.i, %Children.i br i1 %cmp.i.not.i, label %return, label %for.body.i diff --git a/bench/minetest/optimized/pathfinder.ll b/bench/minetest/optimized/pathfinder.ll index ba0db86a42d..adb77f9e771 100644 --- a/bench/minetest/optimized/pathfinder.ll +++ b/bench/minetest/optimized/pathfinder.ll @@ -3829,9 +3829,11 @@ while.body.lr.ph: ; preds = %invoke.cont17 while.body: ; preds = %cleanup105, %while.body.lr.ph %11 = phi ptr [ %10, %while.body.lr.ph ], [ %51, %cleanup105 ] %12 = phi ptr [ %9, %while.body.lr.ph ], [ %50, %cleanup105 ] - %current_pos.sroa.0.0.copyload = load i16, ptr %12, align 2, !tbaa !14 - %current_pos.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 2 - %current_pos.sroa.9.0.copyload = load i16, ptr %current_pos.sroa.9.0..sroa_idx, align 2, !tbaa !14 + %current_pos.sroa.0.0.copyload = load i32, ptr %12, align 2 + %13 = zext i32 %current_pos.sroa.0.0.copyload to i48 + %14 = trunc i32 %current_pos.sroa.0.0.copyload to i16 + %15 = lshr i32 %current_pos.sroa.0.0.copyload, 16 + %16 = trunc nuw i32 %15 to i16 %current_pos.sroa.12.0..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 4 %current_pos.sroa.12.0.copyload = load i16, ptr %current_pos.sroa.12.0..sroa_idx, align 2, !tbaa !14 %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %11 to i64 @@ -3861,17 +3863,13 @@ invoke.cont30: ; preds = %.noexc, %while.body store ptr %incdec.ptr.i.i, ptr %_M_finish.i.i.i.i.i, align 8, !tbaa !118 %current_pos.sroa.12.0.insert.ext291 = zext i16 %current_pos.sroa.12.0.copyload to i48 %current_pos.sroa.12.0.insert.shift292 = shl nuw i48 %current_pos.sroa.12.0.insert.ext291, 32 - %current_pos.sroa.9.0.insert.ext286 = zext i16 %current_pos.sroa.9.0.copyload to i48 - %current_pos.sroa.9.0.insert.shift287 = shl nuw nsw i48 %current_pos.sroa.9.0.insert.ext286, 16 - %current_pos.sroa.0.0.insert.ext283 = zext i16 %current_pos.sroa.0.0.copyload to i48 - %14 = or disjoint i48 %current_pos.sroa.9.0.insert.shift287, %current_pos.sroa.0.0.insert.ext283 - %current_pos.sroa.0.0.insert.insert285 = or disjoint i48 %14, %current_pos.sroa.12.0.insert.shift292 - %15 = load i16, ptr %m_limits.i, align 2, !tbaa !109 - %sub.i.i = sub i16 %current_pos.sroa.0.0.copyload, %15 - %16 = load i16, ptr %Y.i.i, align 8, !tbaa !15 - %sub8.i.i = sub i16 %current_pos.sroa.9.0.copyload, %16 - %17 = load i16, ptr %Z.i.i, align 2, !tbaa !16 - %sub13.i.i = sub i16 %current_pos.sroa.12.0.copyload, %17 + %current_pos.sroa.0.0.insert.insert285 = or disjoint i48 %current_pos.sroa.12.0.insert.shift292, %13 + %18 = load i16, ptr %m_limits.i, align 2, !tbaa !109 + %sub.i.i = sub i16 %14, %18 + %19 = load i16, ptr %Y.i.i, align 8, !tbaa !15 + %sub8.i.i = sub i16 %16, %19 + %15 = load i16, ptr %Z.i.i, align 2, !tbaa !16 + %sub.i.i = sub i16 %current_pos.sroa.12.0.copyload, %15 %retval.sroa.3.0.insert.ext.i.i182 = zext i16 %sub13.i.i to i48 %retval.sroa.3.0.insert.shift.i.i183 = shl nuw i48 %retval.sroa.3.0.insert.ext.i.i182, 32 %retval.sroa.2.0.insert.ext.i.i184 = zext i16 %sub8.i.i to i48 @@ -3921,7 +3919,7 @@ if.end: ; preds = %land.lhs.true4.i %28 = load ptr, ptr %m_nodes_container.i, align 8, !tbaa !17 %vtable.i193 = load ptr, ptr %28, align 8, !tbaa !20 %29 = load ptr, ptr %vtable.i193, align 8 - %call.i194 = invoke noundef nonnull align 4 dereferenceable(92) ptr %29(ptr noundef nonnull align 8 dereferenceable(16) %28, i48 %retval.sroa.0.0.insert.insert.i.i188) + %call.i194 = invoke noundef nonnull align 4 dereferenceable(92) ptr %32(ptr noundef nonnull align 8 dereferenceable(16) %28, i48 %retval.sroa.0.0.insert.insert.i.i188) to label %invoke.cont39 unwind label %lpad38 invoke.cont39: ; preds = %if.end @@ -3939,8 +3937,8 @@ lpad38: ; preds = %if.end br label %ehcleanup117 if.end42: ; preds = %invoke.cont39 - %cmp.i196 = icmp eq i16 %current_pos.sroa.0.0.copyload, %add.i.i161 - %cmp7.i = icmp eq i16 %current_pos.sroa.9.0.copyload, %add8.i.i163 + %cmp.i196 = icmp eq i16 %add.i.i161, %14 + %cmp7.i = icmp eq i16 %add8.i.i163, %16 %or.cond314 = select i1 %cmp.i196, i1 %cmp7.i, i1 false %cmp11.i = icmp eq i16 %current_pos.sroa.12.0.copyload, %add13.i.i165 %or.cond315 = select i1 %or.cond314, i1 %cmp11.i, i1 false @@ -4083,8 +4081,8 @@ invoke.cont67: ; preds = %if.end24.sink.split %direction_3d.sroa.8.0.extract.trunc = trunc nuw i48 %direction_3d.sroa.8.0.extract.shift to i16 %conv = trunc i32 %cost.sroa.21.3 to i16 call void @llvm.lifetime.start.p0(ptr nonnull %neighbor) - %add.i219 = add i16 %current_pos.sroa.0.0.copyload, %direction_3d.sroa.0.0.extract.trunc - %add8.i = add i16 %current_pos.sroa.9.0.copyload, %conv + %add.i219 = add i16 %14, %direction_3d.sroa.0.0.extract.trunc + %add8.i = add i16 %16, %conv %add13.i = add i16 %current_pos.sroa.12.0.copyload, %direction_3d.sroa.8.0.extract.trunc %retval.sroa.3.0.insert.ext.i = zext i16 %add13.i to i48 %retval.sroa.3.0.insert.shift.i = shl nuw i48 %retval.sroa.3.0.insert.ext.i, 32 @@ -4110,7 +4108,7 @@ invoke.cont67: ; preds = %if.end24.sink.split %42 = load ptr, ptr %m_nodes_container.i, align 8, !tbaa !17 %vtable.i241 = load ptr, ptr %42, align 8, !tbaa !20 %43 = load ptr, ptr %vtable.i241, align 8 - %call.i242 = invoke noundef nonnull align 4 dereferenceable(92) ptr %43(ptr noundef nonnull align 8 dereferenceable(16) %42, i48 %retval.sroa.0.0.insert.insert.i.i239) + %call.i242 = invoke noundef nonnull align 4 dereferenceable(92) ptr %46(ptr noundef nonnull align 8 dereferenceable(16) %42, i48 %retval.sroa.0.0.insert.insert.i.i239) to label %invoke.cont72 unwind label %lpad71 invoke.cont72: ; preds = %invoke.cont67 diff --git a/bench/minetest/optimized/test_sao.ll b/bench/minetest/optimized/test_sao.ll index a83ca4ca84f..bc2180daee3 100644 --- a/bench/minetest/optimized/test_sao.ll +++ b/bench/minetest/optimized/test_sao.ll @@ -2608,14 +2608,11 @@ cleanup.action48: ; preds = %ehcleanup44, %_ZNKS if.end50: ; preds = %if.end32 %m_static_block = getelementptr inbounds nuw i8, ptr %call7, i64 14 - %a.sroa.0.0.copyload = load i16, ptr %m_static_block, align 2, !tbaa !110 - %a.sroa.6.0.m_static_block.sroa_idx = getelementptr inbounds nuw i8, ptr %call7, i64 16 - %a.sroa.6.0.copyload = load i16, ptr %a.sroa.6.0.m_static_block.sroa_idx, align 2, !tbaa !110 + %a.sroa.0.0.copyload = load i32, ptr %m_static_block, align 2 + %19 = zext i32 %a.sroa.0.0.copyload to i48 %a.sroa.7.0.m_static_block.sroa_idx = getelementptr inbounds nuw i8, ptr %call7, i64 18 %a.sroa.7.0.copyload = load i16, ptr %a.sroa.7.0.m_static_block.sroa_idx, align 2, !tbaa !110 - %cmp.i258 = icmp eq i16 %a.sroa.0.0.copyload, 0 - %cmp7.i = icmp eq i16 %a.sroa.6.0.copyload, -5 - %or.cond = select i1 %cmp.i258, i1 %cmp7.i, i1 false + %cmp.i258 = icmp eq i32 %a.sroa.0.0.copyload, -327680 %cmp11.i = icmp eq i16 %a.sroa.7.0.copyload, 0 %or.cond360 = select i1 %or.cond, i1 %cmp11.i, i1 false br i1 %or.cond360, label %if.end84, label %if.then52 @@ -2637,11 +2634,7 @@ invoke.cont56: ; preds = %invoke.cont54 invoke.cont58: ; preds = %invoke.cont56 %a.sroa.7.0.insert.ext = zext i16 %a.sroa.7.0.copyload to i48 %a.sroa.7.0.insert.shift = shl nuw i48 %a.sroa.7.0.insert.ext, 32 - %a.sroa.6.0.insert.ext = zext i16 %a.sroa.6.0.copyload to i48 - %a.sroa.6.0.insert.shift = shl nuw nsw i48 %a.sroa.6.0.insert.ext, 16 - %a.sroa.0.0.insert.ext = zext i16 %a.sroa.0.0.copyload to i48 - %a.sroa.6.0.insert.insert = or disjoint i48 %a.sroa.6.0.insert.shift, %a.sroa.0.0.insert.ext - %a.sroa.0.0.insert.insert = or disjoint i48 %a.sroa.6.0.insert.insert, %a.sroa.7.0.insert.shift + %a.sroa.0.0.insert.insert = or disjoint i48 %a.sroa.7.0.insert.shift, %19 %call62 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3irr4corelsIsEERSoS2_NS0_8vector3dIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %call.i262, i48 %a.sroa.0.0.insert.insert) to label %invoke.cont61 unwind label %lpad53 diff --git a/bench/msdfgen/optimized/msdf-error-correction.ll b/bench/msdfgen/optimized/msdf-error-correction.ll index 0e7b613e112..194688cc0ea 100644 --- a/bench/msdfgen/optimized/msdf-error-correction.ll +++ b/bench/msdfgen/optimized/msdf-error-correction.ll @@ -413,19 +413,16 @@ invoke.cont: %ref.tmp = alloca %"struct.msdfgen::BitmapRef.1", align 8 %ref.tmp4 = alloca %"struct.msdfgen::BitmapConstRef", align 8 %width = getelementptr inbounds nuw i8, ptr %sdf, i64 8 - %0 = load i32, ptr %width, align 8 + %0 = load i64, ptr %width, align 8 %height = getelementptr inbounds nuw i8, ptr %sdf, i64 12 - %1 = load i32, ptr %height, align 4 - %mul4.i = mul nsw i32 %1, %0 - %conv.i = sext i32 %mul4.i to i64 + %1 = lshr i64 %0, 32 + %mul4.i = mul i64 %1, %0 + %sext = shl i64 %mul4.i, 32 + %conv.i = ashr exact i64 %sext, 32 %call.i = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %conv.i) #10 - %stencilBuffer.sroa.6.8.insert.ext = zext i32 %1 to i64 - %stencilBuffer.sroa.6.8.insert.shift = shl nuw i64 %stencilBuffer.sroa.6.8.insert.ext, 32 - %stencilBuffer.sroa.4.8.insert.ext = zext i32 %0 to i64 - %stencilBuffer.sroa.4.8.insert.insert = or disjoint i64 %stencilBuffer.sroa.6.8.insert.shift, %stencilBuffer.sroa.4.8.insert.ext store ptr %call.i, ptr %ref.tmp, align 8 %2 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 8 - store i64 %stencilBuffer.sroa.4.8.insert.insert, ptr %2, align 8 + store i64 %0, ptr %2, align 8 invoke void @_ZN7msdfgen19MSDFErrorCorrectionC1ERKNS_9BitmapRefIhLi1EEERKNS_10ProjectionEd(ptr noundef nonnull align 8 dereferenceable(72) %ec, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(32) %projection, double noundef %range) to label %invoke.cont1 unwind label %_ZN7msdfgen6BitmapIhLi1EED2Ev.exit @@ -481,19 +478,16 @@ invoke.cont: %ref.tmp = alloca %"struct.msdfgen::BitmapRef.1", align 8 %ref.tmp4 = alloca %"struct.msdfgen::BitmapConstRef.2", align 8 %width = getelementptr inbounds nuw i8, ptr %sdf, i64 8 - %0 = load i32, ptr %width, align 8 + %0 = load i64, ptr %width, align 8 %height = getelementptr inbounds nuw i8, ptr %sdf, i64 12 - %1 = load i32, ptr %height, align 4 - %mul4.i = mul nsw i32 %1, %0 - %conv.i = sext i32 %mul4.i to i64 + %1 = lshr i64 %0, 32 + %mul4.i = mul i64 %1, %0 + %sext = shl i64 %mul4.i, 32 + %conv.i = ashr exact i64 %sext, 32 %call.i = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %conv.i) #10 - %stencilBuffer.sroa.6.8.insert.ext = zext i32 %1 to i64 - %stencilBuffer.sroa.6.8.insert.shift = shl nuw i64 %stencilBuffer.sroa.6.8.insert.ext, 32 - %stencilBuffer.sroa.4.8.insert.ext = zext i32 %0 to i64 - %stencilBuffer.sroa.4.8.insert.insert = or disjoint i64 %stencilBuffer.sroa.6.8.insert.shift, %stencilBuffer.sroa.4.8.insert.ext store ptr %call.i, ptr %ref.tmp, align 8 %2 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 8 - store i64 %stencilBuffer.sroa.4.8.insert.insert, ptr %2, align 8 + store i64 %0, ptr %2, align 8 invoke void @_ZN7msdfgen19MSDFErrorCorrectionC1ERKNS_9BitmapRefIhLi1EEERKNS_10ProjectionEd(ptr noundef nonnull align 8 dereferenceable(72) %ec, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(32) %projection, double noundef %range) to label %invoke.cont1 unwind label %_ZN7msdfgen6BitmapIhLi1EED2Ev.exit diff --git a/bench/opencv/optimized/grabcut.ll b/bench/opencv/optimized/grabcut.ll index d131fcd9980..2d7b7352c78 100644 --- a/bench/opencv/optimized/grabcut.ll +++ b/bench/opencv/optimized/grabcut.ll @@ -732,25 +732,22 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %_ZN store i32 50397184, ptr %21, align 8, !tbaa !4 store ptr %6, ptr %175, align 8, !tbaa !11 %177 = getelementptr inbounds nuw i8, ptr %0, i64 308 - %178 = load i32, ptr %177, align 4, !tbaa !70 - %179 = getelementptr inbounds nuw i8, ptr %0, i64 312 - %180 = load i32, ptr %179, align 8, !tbaa !71 - %181 = getelementptr inbounds nuw i8, ptr %0, i64 316 - %182 = load i32, ptr %181, align 4, !tbaa !72 - %183 = add nsw i32 %182, %178 - %184 = getelementptr inbounds nuw i8, ptr %0, i64 320 - %185 = load i32, ptr %184, align 8, !tbaa !73 - %186 = add nsw i32 %185, %180 - %.sroa.254.0.insert.ext = zext i32 %180 to i64 - %.sroa.254.0.insert.shift = shl nuw i64 %.sroa.254.0.insert.ext, 32 - %.sroa.053.0.insert.ext = zext i32 %178 to i64 - %.sroa.053.0.insert.insert = or disjoint i64 %.sroa.254.0.insert.shift, %.sroa.053.0.insert.ext - %.sroa.2.0.insert.ext = zext i32 %186 to i64 + %178 = load i64, ptr %177, align 4 + %179 = trunc i64 %178 to i32 + %180 = lshr i64 %178, 32 + %181 = trunc nuw i64 %180 to i32 + %182 = getelementptr inbounds nuw i8, ptr %0, i64 316 + %183 = load i32, ptr %182, align 4, !tbaa !70 + %184 = add nsw i32 %183, %179 + %185 = getelementptr inbounds nuw i8, ptr %0, i64 320 + %186 = load i32, ptr %185, align 8, !tbaa !71 + %187 = add nsw i32 %186, %181 + %.sroa.2.0.insert.ext = zext i32 %187 to i64 %.sroa.2.0.insert.shift = shl nuw i64 %.sroa.2.0.insert.ext, 32 - %.sroa.0.0.insert.ext = zext i32 %183 to i64 + %.sroa.0.0.insert.ext = zext i32 %184 to i64 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.2.0.insert.shift, %.sroa.0.0.insert.ext - invoke void @_ZN2cv9rectangleERKNS_17_InputOutputArrayENS_6Point_IiEES4_RKNS_7Scalar_IdEEiii(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 %.sroa.053.0.insert.insert, i64 %.sroa.0.0.insert.insert, ptr noundef nonnull align 8 dereferenceable(32) @_ZL5GREEN, i32 noundef 2, i32 noundef 8, i32 noundef 0) - to label %187 unwind label %188 + invoke void @_ZN2cv9rectangleERKNS_17_InputOutputArrayENS_6Point_IiEES4_RKNS_7Scalar_IdEEiii(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 %178, i64 %.sroa.0.0.insert.insert, ptr noundef nonnull align 8 dereferenceable(32) @_ZL5GREEN, i32 noundef 2, i32 noundef 8, i32 noundef 0) + to label %188 unwind label %188 187: ; preds = %174 call void @llvm.lifetime.end.p0(ptr nonnull %21) @@ -773,7 +770,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %_ZN %194 = getelementptr inbounds nuw i8, ptr %22, i64 8 store ptr %6, ptr %194, align 8, !tbaa !11 invoke void @_ZN2cv6imshowERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayE(ptr noundef nonnull align 8 dereferenceable(32) %191, ptr noundef nonnull align 8 dereferenceable(24) %22) - to label %195 unwind label %197 + to label %196 unwind label %197 195: ; preds = %190 call void @llvm.lifetime.end.p0(ptr nonnull %22) @@ -793,7 +790,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %_ZN br label %.body .body: ; preds = %134, %146, %158, %170, %188, %197, %113, %81, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %122, %111 - %.pn46.pn.pn = phi { ptr, i32 } [ %.pn30.pn.pn.pn.pn, %122 ], [ %112, %111 ], [ %114, %113 ], [ %.pn.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %82, %81 ], [ %135, %134 ], [ %147, %146 ], [ %159, %158 ], [ %171, %170 ], [ %198, %197 ], [ %189, %188 ] + %.pn46.pn.pn = phi { ptr, i32 } [ %.pn30.pn.pn.pn.pn, %122 ], [ %112, %111 ], [ %114, %113 ], [ %.pn.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %82, %81 ], [ %135, %134 ], [ %147, %146 ], [ %159, %158 ], [ %171, %170 ], [ %198, %198 ], [ %190, %189 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %7) #17 call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %6) #17 @@ -894,11 +891,11 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS %29 = getelementptr inbounds nuw i8, ptr %0, i64 308 %30 = load i32, ptr %29, align 4, !tbaa !36 %.sroa.speculated23 = call i32 @llvm.smax.i32(i32 %30, i32 0) - store i32 %.sroa.speculated23, ptr %29, align 4, !tbaa !70 + store i32 %.sroa.speculated23, ptr %29, align 4, !tbaa !72 %31 = getelementptr inbounds nuw i8, ptr %0, i64 312 %32 = load i32, ptr %31, align 8, !tbaa !36 %.sroa.speculated18 = call i32 @llvm.smax.i32(i32 %32, i32 0) - store i32 %.sroa.speculated18, ptr %31, align 8, !tbaa !71 + store i32 %.sroa.speculated18, ptr %31, align 8, !tbaa !73 %33 = getelementptr inbounds nuw i8, ptr %0, i64 316 %34 = getelementptr inbounds nuw i8, ptr %0, i64 8 %35 = load ptr, ptr %34, align 8, !tbaa !33 @@ -907,14 +904,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS %38 = sub nsw i32 %37, %.sroa.speculated23 %39 = load i32, ptr %33, align 4, !tbaa !36 %.sroa.speculated14 = call i32 @llvm.smin.i32(i32 %38, i32 %39) - store i32 %.sroa.speculated14, ptr %33, align 4, !tbaa !72 + store i32 %.sroa.speculated14, ptr %33, align 4, !tbaa !70 %40 = getelementptr inbounds nuw i8, ptr %0, i64 320 %41 = getelementptr inbounds nuw i8, ptr %35, i64 8 %42 = load i32, ptr %41, align 8, !tbaa !46 %43 = sub nsw i32 %42, %.sroa.speculated18 %44 = load i32, ptr %40, align 8, !tbaa !36 %.sroa.speculated = call i32 @llvm.smin.i32(i32 %43, i32 %44) - store i32 %.sroa.speculated, ptr %40, align 8, !tbaa !73 + store i32 %.sroa.speculated, ptr %40, align 8, !tbaa !71 call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @_ZN2cv3MatC1ERKS0_RKNS_5Rect_IiEE(ptr noundef nonnull align 8 dereferenceable(96) %6, ptr noundef nonnull align 8 dereferenceable(96) %9, ptr noundef nonnull align 4 dereferenceable(16) %29) call void @llvm.lifetime.start.p0(ptr nonnull %7) @@ -1231,13 +1228,13 @@ define hidden void @_ZN13GCApplication10mouseClickEiiiiPv(ptr noundef nonnull al 33: ; preds = %29 %34 = getelementptr inbounds nuw i8, ptr %0, i64 308 - %35 = load i32, ptr %34, align 4, !tbaa !70 + %35 = load i32, ptr %34, align 4, !tbaa !72 %36 = icmp eq i32 %35, %2 br i1 %36, label %41, label %37 37: ; preds = %33 %38 = getelementptr inbounds nuw i8, ptr %0, i64 312 - %39 = load i32, ptr %38, align 8, !tbaa !71 + %39 = load i32, ptr %38, align 8, !tbaa !73 %40 = icmp eq i32 %39, %3 br i1 %40, label %41, label %42 @@ -1399,9 +1396,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS 112: ; preds = %108 %113 = getelementptr inbounds nuw i8, ptr %0, i64 308 - %114 = load i32, ptr %113, align 4, !tbaa !70 + %114 = load i32, ptr %113, align 4, !tbaa !72 %115 = getelementptr inbounds nuw i8, ptr %0, i64 312 - %116 = load i32, ptr %115, align 8, !tbaa !71 + %116 = load i32, ptr %115, align 8, !tbaa !73 %117 = tail call i32 @llvm.smin.i32(i32 %2, i32 %114) %118 = tail call i32 @llvm.smin.i32(i32 %3, i32 %116) %119 = tail call i32 @llvm.smax.i32(i32 %114, i32 %2) @@ -2924,10 +2921,10 @@ attributes #20 = { builtin allocsize(0) } !67 = distinct !{!67, !65} !68 = distinct !{!68, !65} !69 = !{!17, !7, i64 304} -!70 = !{!17, !6, i64 308} -!71 = !{!17, !6, i64 312} -!72 = !{!17, !6, i64 316} -!73 = !{!17, !6, i64 320} +!70 = !{!17, !6, i64 316} +!71 = !{!17, !6, i64 320} +!72 = !{!17, !6, i64 308} +!73 = !{!17, !6, i64 312} !74 = !{!13, !14, i64 16} !75 = !{!76} !76 = distinct !{!76, !77, !"_ZSt19__relocate_object_aIN2cv6Point_IiEES2_SaIS2_EEvPT_PT0_RT1_: argument 0"} diff --git a/bench/opencv/optimized/perf_reduce.ll b/bench/opencv/optimized/perf_reduce.ll index 64e6fdfd9dd..c3df78eabae 100644 --- a/bench/opencv/optimized/perf_reduce.ll +++ b/bench/opencv/optimized/perf_reduce.ll @@ -2899,9 +2899,9 @@ define hidden void @_ZN11opencv_test24Size_MatType_ROp_reduceC12PerfTestBodyEv(p %7 = alloca %"class.cv::_OutputArray", align 8 %8 = tail call fastcc noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7testing18WithParamInterfaceISt5tupleIJN2cv5Size_IiEEN4perf7MatTypeEN11opencv_test12_GLOBAL__N_13ROpEEEE8GetParamEv() %9 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %.sroa.014.0.copyload = load i32, ptr %9, align 4, !tbaa !89 - %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 12 - %.sroa.5.0.copyload = load i32, ptr %.sroa.5.0..sroa_idx, align 4, !tbaa !89 + %.sroa.014.0.copyload = load i64, ptr %9, align 4 + %10 = lshr i64 %.sroa.014.0.copyload, 32 + %11 = trunc nuw i64 %10 to i32 %10 = tail call fastcc noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7testing18WithParamInterfaceISt5tupleIJN2cv5Size_IiEEN4perf7MatTypeEN11opencv_test12_GLOBAL__N_13ROpEEEE8GetParamEv() %11 = getelementptr inbounds nuw i8, ptr %10, i64 4 %12 = load i32, ptr %11, align 4, !tbaa !102 @@ -2912,7 +2912,7 @@ define hidden void @_ZN11opencv_test24Size_MatType_ROp_reduceC12PerfTestBodyEv(p br i1 %.not.not, label %15, label %17 15: ; preds = %1 - switch i32 %.val, label %17 [ + switch i32 %.val, label %19 [ i32 4, label %16 i32 1, label %16 i32 0, label %16 @@ -2922,17 +2922,13 @@ define hidden void @_ZN11opencv_test24Size_MatType_ROp_reduceC12PerfTestBodyEv(p br label %17 17: ; preds = %15, %16, %1 - %18 = phi i32 [ 4, %16 ], [ %12, %15 ], [ %12, %1 ] - %.023 = phi i32 [ 4, %16 ], [ -1, %15 ], [ -1, %1 ] + %18 = phi i32 [ 4, %18 ], [ %12, %17 ], [ %12, %1 ] + %.023 = phi i32 [ 4, %18 ], [ -1, %17 ], [ -1, %1 ] call void @llvm.lifetime.start.p0(ptr nonnull %2) - %.sroa.5.0.insert.ext = zext i32 %.sroa.5.0.copyload to i64 - %.sroa.5.0.insert.shift = shl nuw i64 %.sroa.5.0.insert.ext, 32 - %.sroa.014.0.insert.ext = zext i32 %.sroa.014.0.copyload to i64 - %.sroa.014.0.insert.insert = or disjoint i64 %.sroa.5.0.insert.shift, %.sroa.014.0.insert.ext - call void @_ZN2cv3MatC1ENS_5Size_IiEEi(ptr noundef nonnull align 8 dereferenceable(96) %2, i64 %.sroa.014.0.insert.insert, i32 noundef %12) + call void @_ZN2cv3MatC1ENS_5Size_IiEEi(ptr noundef nonnull align 8 dereferenceable(96) %2, i64 %.sroa.014.0.copyload, i32 noundef %14) call void @llvm.lifetime.start.p0(ptr nonnull %3) - invoke void @_ZN2cv3MatC1Eiii(ptr noundef nonnull align 8 dereferenceable(96) %3, i32 noundef %.sroa.5.0.copyload, i32 noundef 1, i32 noundef %18) - to label %19 unwind label %43 + invoke void @_ZN2cv3MatC1Eiii(ptr noundef nonnull align 8 dereferenceable(96) %3, i32 noundef %11, i32 noundef 1, i32 noundef %18) + to label %21 unwind label %45 19: ; preds = %17 %20 = getelementptr inbounds nuw i8, ptr %0, i64 240 @@ -2943,7 +2939,7 @@ define hidden void @_ZN11opencv_test24Size_MatType_ROp_reduceC12PerfTestBodyEv(p store i32 50397184, ptr %4, align 8, !tbaa !106 store ptr %2, ptr %21, align 8, !tbaa !109 %23 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4perf8TestBase14_declareHelper2inERKN2cv17_InputOutputArrayENS0_10WarmUpTypeE(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(24) %4, i32 noundef 2) - to label %24 unwind label %45 + to label %26 unwind label %47 24: ; preds = %19 call void @llvm.lifetime.start.p0(ptr nonnull %5) @@ -2953,7 +2949,7 @@ define hidden void @_ZN11opencv_test24Size_MatType_ROp_reduceC12PerfTestBodyEv(p store i32 50397184, ptr %5, align 8, !tbaa !106 store ptr %3, ptr %25, align 8, !tbaa !109 %27 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4perf8TestBase14_declareHelper3outERKN2cv17_InputOutputArrayENS0_10WarmUpTypeE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(24) %5, i32 noundef 1) - to label %28 unwind label %47 + to label %30 unwind label %49 28: ; preds = %24 call void @llvm.lifetime.end.p0(ptr nonnull %5) @@ -2971,14 +2967,14 @@ define hidden void @_ZN11opencv_test24Size_MatType_ROp_reduceC12PerfTestBodyEv(p 35: ; preds = %.preheader, %42 %36 = invoke noundef zeroext i1 @_ZN4perf8TestBase4nextEv(ptr noundef nonnull align 8 dereferenceable(248) %0) - to label %37 unwind label %.loopexit + to label %39 unwind label %.loopexit 37: ; preds = %35 br i1 %36, label %38, label %.critedge 38: ; preds = %37 %39 = invoke noundef zeroext i1 @_ZN4perf8TestBase10startTimerEv(ptr noundef nonnull align 8 dereferenceable(248) %0) - to label %40 unwind label %.loopexit + to label %42 unwind label %.loopexit 40: ; preds = %38 br i1 %39, label %41, label %.critedge @@ -2994,32 +2990,32 @@ define hidden void @_ZN11opencv_test24Size_MatType_ROp_reduceC12PerfTestBodyEv(p store i32 33619968, ptr %7, align 8, !tbaa !106 store ptr %3, ptr %33, align 8, !tbaa !109 invoke void @_ZN2cv6reduceERKNS_11_InputArrayERKNS_12_OutputArrayEiii(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef 1, i32 noundef %.val, i32 noundef %.023) - to label %42 unwind label %50 + to label %44 unwind label %50 42: ; preds = %41 call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) invoke void @_ZN4perf8TestBase9stopTimerEv(ptr noundef nonnull align 8 dereferenceable(248) %0) - to label %35 unwind label %.loopexit, !llvm.loop !141 - -43: ; preds = %17 - %44 = landingpad { ptr, i32 } - cleanup - br label %54 + to label %37 unwind label %.loopexit, !llvm.loop !141 45: ; preds = %19 %46 = landingpad { ptr, i32 } cleanup - br label %49 + br label %54 -47: ; preds = %24 +47: ; preds = %21 %48 = landingpad { ptr, i32 } cleanup + br label %51 + +49: ; preds = %26 + %50 = landingpad { ptr, i32 } + cleanup call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %49 -49: ; preds = %45, %47 - %.pn.pn.pn = phi { ptr, i32 } [ %48, %47 ], [ %46, %45 ] +49: ; preds = %47, %49 + %.pn.pn.pn = phi { ptr, i32 } [ %50, %49 ], [ %48, %47 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %53 @@ -3050,12 +3046,12 @@ define hidden void @_ZN11opencv_test24Size_MatType_ROp_reduceC12PerfTestBodyEv(p ret void 53: ; preds = %.loopexit, %.loopexit.split-lp, %50, %49 - %.pn30 = phi { ptr, i32 } [ %51, %50 ], [ %.pn.pn.pn, %49 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %.pn30 = phi { ptr, i32 } [ %51, %52 ], [ %.pn.pn.pn, %51 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %3) #33 br label %54 -54: ; preds = %53, %43 - %.pn30.pn = phi { ptr, i32 } [ %.pn30, %53 ], [ %44, %43 ] +54: ; preds = %53, %45 + %.pn30.pn = phi { ptr, i32 } [ %.pn30, %55 ], [ %46, %45 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %2) #33 call void @llvm.lifetime.end.p0(ptr nonnull %2) diff --git a/bench/opencv/optimized/perf_threshold.ll b/bench/opencv/optimized/perf_threshold.ll index 3bd694cfb7b..67992878102 100644 --- a/bench/opencv/optimized/perf_threshold.ll +++ b/bench/opencv/optimized/perf_threshold.ll @@ -5480,37 +5480,37 @@ define hidden void @_ZN11opencv_test72Size_AdaptThreshType_AdaptThreshMethod_Blo %11 = alloca %"class.cv::_InputArray", align 8 %12 = tail call fastcc noundef nonnull align 8 dereferenceable(28) ptr @_ZNK7testing18WithParamInterfaceISt5tupleIJN2cv5Size_IiEEN11opencv_test12_GLOBAL__N_115AdaptThreshTypeENS6_17AdaptThreshMethodEidEEE8GetParamEv() %13 = getelementptr inbounds nuw i8, ptr %12, i64 20 - %.sroa.06.0.copyload = load i32, ptr %13, align 4, !tbaa !89 - %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 24 - %.sroa.7.0.copyload = load i32, ptr %.sroa.7.0..sroa_idx, align 8, !tbaa !89 - %14 = tail call fastcc noundef nonnull align 8 dereferenceable(28) ptr @_ZNK7testing18WithParamInterfaceISt5tupleIJN2cv5Size_IiEEN11opencv_test12_GLOBAL__N_115AdaptThreshTypeENS6_17AdaptThreshMethodEidEEE8GetParamEv() - %15 = getelementptr inbounds nuw i8, ptr %14, i64 16 - %16 = load i32, ptr %15, align 8, !tbaa !89 + %.sroa.06.0.copyload = load i64, ptr %13, align 4 + %14 = trunc i64 %.sroa.06.0.copyload to i32 + %15 = lshr i64 %.sroa.06.0.copyload, 32 + %16 = trunc nuw i64 %15 to i32 %17 = tail call fastcc noundef nonnull align 8 dereferenceable(28) ptr @_ZNK7testing18WithParamInterfaceISt5tupleIJN2cv5Size_IiEEN11opencv_test12_GLOBAL__N_115AdaptThreshTypeENS6_17AdaptThreshMethodEidEEE8GetParamEv() - %18 = getelementptr inbounds nuw i8, ptr %17, i64 12 - %19 = load i32, ptr %18, align 4, !tbaa !89 + %18 = getelementptr inbounds nuw i8, ptr %17, i64 16 + %19 = load i32, ptr %18, align 8, !tbaa !89 %20 = tail call fastcc noundef nonnull align 8 dereferenceable(28) ptr @_ZNK7testing18WithParamInterfaceISt5tupleIJN2cv5Size_IiEEN11opencv_test12_GLOBAL__N_115AdaptThreshTypeENS6_17AdaptThreshMethodEidEEE8GetParamEv() - %21 = getelementptr inbounds nuw i8, ptr %20, i64 8 - %22 = load i32, ptr %21, align 8, !tbaa !89 + %21 = getelementptr inbounds nuw i8, ptr %20, i64 12 + %22 = load i32, ptr %21, align 4, !tbaa !89 %23 = tail call fastcc noundef nonnull align 8 dereferenceable(28) ptr @_ZNK7testing18WithParamInterfaceISt5tupleIJN2cv5Size_IiEEN11opencv_test12_GLOBAL__N_115AdaptThreshTypeENS6_17AdaptThreshMethodEidEEE8GetParamEv() - %24 = load double, ptr %23, align 8, !tbaa !316 - %25 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2cv6theRNGEv() - %26 = load i64, ptr %25, align 8, !tbaa !157 - %27 = and i64 %26, 4294967295 - %28 = mul nuw i64 %27, 4164903690 - %29 = lshr i64 %26, 32 - %30 = add nuw i64 %28, %29 - store i64 %30, ptr %25, align 8, !tbaa !157 - %31 = trunc i64 %30 to i32 - %32 = urem i32 %31, 253 - %33 = add nuw nsw i32 %32, 1 - %34 = uitofp nneg i32 %33 to double + %24 = getelementptr inbounds nuw i8, ptr %23, i64 8 + %25 = load i32, ptr %24, align 8, !tbaa !89 + %26 = tail call fastcc noundef nonnull align 8 dereferenceable(28) ptr @_ZNK7testing18WithParamInterfaceISt5tupleIJN2cv5Size_IiEEN11opencv_test12_GLOBAL__N_115AdaptThreshTypeENS6_17AdaptThreshMethodEidEEE8GetParamEv() + %27 = load double, ptr %26, align 8, !tbaa !316 + %28 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2cv6theRNGEv() + %29 = load i64, ptr %28, align 8, !tbaa !157 + %30 = and i64 %29, 4294967295 + %31 = mul nuw i64 %30, 4164903690 + %32 = lshr i64 %29, 32 + %33 = add nuw i64 %31, %32 + store i64 %33, ptr %28, align 8, !tbaa !157 + %34 = trunc i64 %33 to i32 + %35 = urem i32 %34, 253 + %36 = add nuw nsw i32 %35, 1 + %37 = uitofp nneg i32 %36 to double call void @llvm.lifetime.start.p0(ptr nonnull %2) - %35 = add nsw i32 %.sroa.06.0.copyload, 2 - %36 = add nsw i32 %.sroa.7.0.copyload, 2 - %.sroa.2.0.insert.ext = zext i32 %36 to i64 - %.sroa.2.0.insert.shift = shl nuw i64 %.sroa.2.0.insert.ext, 32 - %.sroa.037.0.insert.ext = zext i32 %35 to i64 + %35 = add i64 %.sroa.06.0.copyload, 2 + %39 = and i64 %.sroa.06.0.copyload, -4294967296 + %.sroa.2.0.insert.shift = add i64 %39, 8589934592 + %.sroa.037.0.insert.ext = and i64 %38, 4294967295 %.sroa.037.0.insert.insert = or disjoint i64 %.sroa.2.0.insert.shift, %.sroa.037.0.insert.ext call void @_ZN2cv3MatC1ENS_5Size_IiEEi(ptr noundef nonnull align 8 dereferenceable(96) %2, i64 %.sroa.037.0.insert.insert, i32 noundef 0) call void @llvm.lifetime.start.p0(ptr nonnull %3) @@ -5519,23 +5519,19 @@ define hidden void @_ZN11opencv_test72Size_AdaptThreshType_AdaptThreshMethod_Blo %37 = getelementptr inbounds nuw i8, ptr %4, i64 4 store i32 1, ptr %37, align 4, !tbaa !319 %38 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store i32 %.sroa.06.0.copyload, ptr %38, align 4, !tbaa !320 + store i32 %14, ptr %38, align 4, !tbaa !320 %39 = getelementptr inbounds nuw i8, ptr %4, i64 12 - store i32 %.sroa.7.0.copyload, ptr %39, align 4, !tbaa !321 + store i32 %16, ptr %39, align 4, !tbaa !321 invoke void @_ZN2cv3MatC1ERKS0_RKNS_5Rect_IiEE(ptr noundef nonnull align 8 dereferenceable(96) %3, ptr noundef nonnull align 8 dereferenceable(96) %2, ptr noundef nonnull align 4 dereferenceable(16) %4) to label %_ZNK2cv3MatclERKNS_5Rect_IiEE.exit unwind label %63 _ZNK2cv3MatclERKNS_5Rect_IiEE.exit: ; preds = %1 call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.start.p0(ptr nonnull %5) - %.sroa.7.0.insert.ext = zext i32 %.sroa.7.0.copyload to i64 - %.sroa.7.0.insert.shift = shl nuw i64 %.sroa.7.0.insert.ext, 32 - %.sroa.06.0.insert.ext = zext i32 %.sroa.06.0.copyload to i64 - %.sroa.06.0.insert.insert = or disjoint i64 %.sroa.7.0.insert.shift, %.sroa.06.0.insert.ext - invoke void @_ZN2cv3MatC1ENS_5Size_IiEEi(ptr noundef nonnull align 8 dereferenceable(96) %5, i64 %.sroa.06.0.insert.insert, i32 noundef 0) - to label %40 unwind label %65 - -40: ; preds = %_ZNK2cv3MatclERKNS_5Rect_IiEE.exit + invoke void @_ZN2cv3MatC1ENS_5Size_IiEEi(ptr noundef nonnull align 8 dereferenceable(96) %5, i64 %.sroa.06.0.copyload, i32 noundef 0) + to label %43 unwind label %68 + +43:; preds = %_ZNK2cv3MatclERKNS_5Rect_IiEE.exit call void @llvm.lifetime.start.p0(ptr nonnull %6) %41 = getelementptr inbounds nuw i8, ptr %6, i64 8 %42 = getelementptr inbounds nuw i8, ptr %6, i64 16 @@ -5544,9 +5540,9 @@ _ZNK2cv3MatclERKNS_5Rect_IiEE.exit: ; preds = %1 store ptr %3, ptr %41, align 8, !tbaa !162 %43 = getelementptr inbounds nuw i8, ptr %0, i64 240 %44 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4perf8TestBase14_declareHelper2inERKN2cv17_InputOutputArrayENS0_10WarmUpTypeE(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(24) %6, i32 noundef 2) - to label %45 unwind label %67 + to label %48 unwind label %67 -45: ; preds = %40 +45: ; preds = %43 call void @llvm.lifetime.start.p0(ptr nonnull %7) %46 = getelementptr inbounds nuw i8, ptr %7, i64 8 %47 = getelementptr inbounds nuw i8, ptr %7, i64 16 @@ -5554,7 +5550,7 @@ _ZNK2cv3MatclERKNS_5Rect_IiEE.exit: ; preds = %1 store i32 50397184, ptr %7, align 8, !tbaa !159 store ptr %5, ptr %46, align 8, !tbaa !162 %48 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4perf8TestBase14_declareHelper3outERKN2cv17_InputOutputArrayENS0_10WarmUpTypeE(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef 1) - to label %49 unwind label %69 + to label %52 unwind label %69 49: ; preds = %45 call void @llvm.lifetime.end.p0(ptr nonnull %7) @@ -5568,19 +5564,19 @@ _ZNK2cv3MatclERKNS_5Rect_IiEE.exit: ; preds = %1 55: ; preds = %62, %49 %56 = invoke noundef zeroext i1 @_ZN4perf8TestBase4nextEv(ptr noundef nonnull align 8 dereferenceable(248) %0) - to label %57 unwind label %72 - -57: ; preds = %55 - br i1 %56, label %58, label %.critedge - -58: ; preds = %57 - %59 = invoke noundef zeroext i1 @_ZN4perf8TestBase10startTimerEv(ptr noundef nonnull align 8 dereferenceable(248) %0) to label %60 unwind label %72 60: ; preds = %58 br i1 %59, label %61, label %.critedge 61: ; preds = %60 + %62 = invoke noundef zeroext i1 @_ZN4perf8TestBase10startTimerEv(ptr noundef nonnull align 8 dereferenceable(248) %0) + to label %63 unwind label %75 + +63: ; preds = %61 + br i1 %62, label %64, label %.critedge + +64: ; preds = %63 call void @llvm.lifetime.start.p0(ptr nonnull %8) store i32 0, ptr %50, align 8, !tbaa !164 store i32 0, ptr %51, align 4, !tbaa !165 @@ -5590,14 +5586,14 @@ _ZNK2cv3MatclERKNS_5Rect_IiEE.exit: ; preds = %1 store i64 0, ptr %54, align 8 store i32 33619968, ptr %9, align 8, !tbaa !159 store ptr %5, ptr %53, align 8, !tbaa !162 - invoke void @_ZN2cv17adaptiveThresholdERKNS_11_InputArrayERKNS_12_OutputArrayEdiiid(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %9, double noundef %34, i32 noundef %19, i32 noundef %16, i32 noundef %22, double noundef %24) - to label %62 unwind label %74 + invoke void @_ZN2cv17adaptiveThresholdERKNS_11_InputArrayERKNS_12_OutputArrayEdiiid(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %9, double noundef %37, i32 noundef %22, i32 noundef %19, i32 noundef %25, double noundef %27) + to label %65 unwind label %74 -62: ; preds = %61 +62: ; preds = %64 call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) invoke void @_ZN4perf8TestBase9stopTimerEv(ptr noundef nonnull align 8 dereferenceable(248) %0) - to label %55 unwind label %72, !llvm.loop !322 + to label %58 unwind label %72, !llvm.loop !322 63: ; preds = %1 %64 = landingpad { ptr, i32 } @@ -5610,7 +5606,7 @@ _ZNK2cv3MatclERKNS_5Rect_IiEE.exit: ; preds = %1 cleanup br label %95 -67: ; preds = %40 +67: ; preds = %43 %68 = landingpad { ptr, i32 } cleanup br label %71 @@ -5622,23 +5618,23 @@ _ZNK2cv3MatclERKNS_5Rect_IiEE.exit: ; preds = %1 br label %71 71: ; preds = %67, %69 - %.pn.pn.pn = phi { ptr, i32 } [ %70, %69 ], [ %68, %67 ] + %.pn.pn.pn = phi { ptr, i32 } [ %70, %72 ], [ %68, %70 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %94 -72: ; preds = %62, %58, %55 +72: ; preds = %62, %61, %55 %73 = landingpad { ptr, i32 } cleanup br label %94 -74: ; preds = %61 +74: ; preds = %64 %75 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %94 -.critedge: ; preds = %57, %60 +.critedge: ; preds = %60, %63 call void @llvm.lifetime.start.p0(ptr nonnull %10) %76 = getelementptr inbounds nuw i8, ptr %10, i64 16 store ptr %76, ptr %10, align 8, !tbaa !4 @@ -5656,7 +5652,7 @@ _ZNK2cv3MatclERKNS_5Rect_IiEE.exit: ; preds = %1 %81 = getelementptr inbounds nuw i8, ptr %11, i64 8 store ptr %5, ptr %81, align 8, !tbaa !162 %82 = invoke noundef nonnull align 8 dereferenceable(288) ptr @_ZN4perf10Regression3addEPNS_8TestBaseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKN2cv11_InputArrayEdNS_10ERROR_TYPEE(ptr noundef nonnull %0, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(24) %11, double noundef 0x3CB0000000000000, i32 noundef 0) - to label %83 unwind label %88 + to label %86 unwind label %88 83: ; preds = %.critedge call void @llvm.lifetime.end.p0(ptr nonnull %11) @@ -5707,18 +5703,18 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36: ; preds = %_ZN br label %94 94: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36, %74, %72, %71 - %.pn29 = phi { ptr, i32 } [ %73, %72 ], [ %75, %74 ], [ %89, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36 ], [ %.pn.pn.pn, %71 ] + %.pn29 = phi { ptr, i32 } [ %73, %75 ], [ %75, %77 ], [ %89, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36 ], [ %.pn.pn.pn, %74 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %5) #33 br label %95 95: ; preds = %94, %65 - %.pn29.pn = phi { ptr, i32 } [ %.pn29, %94 ], [ %66, %65 ] + %.pn29.pn = phi { ptr, i32 } [ %.pn29, %97 ], [ %66, %68 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %3) #33 br label %96 96: ; preds = %95, %63 - %.pn29.pn.pn = phi { ptr, i32 } [ %.pn29.pn, %95 ], [ %64, %63 ] + %.pn29.pn.pn = phi { ptr, i32 } [ %.pn29.pn, %98 ], [ %64, %66 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %2) #33 call void @llvm.lifetime.end.p0(ptr nonnull %2) diff --git a/bench/opencv/optimized/sparse_match_interpolators.ll b/bench/opencv/optimized/sparse_match_interpolators.ll index e8899dca5d3..2c8ace22013 100644 --- a/bench/opencv/optimized/sparse_match_interpolators.ll +++ b/bench/opencv/optimized/sparse_match_interpolators.ll @@ -4895,10 +4895,8 @@ _ZN2cv8ximgproc8nodeHeap3addENS0_4nodeE.exit: ; preds = %_ZN2cv8ximgproc8nod %137 = phi ptr [ %125, %.loopexit ], [ %97, %_ZN2cv8ximgproc8nodeHeap3addENS0_4nodeE.exit ] %indvars.iv64 = phi i64 [ %indvars.iv.next65, %.loopexit ], [ 0, %_ZN2cv8ximgproc8nodeHeap3addENS0_4nodeE.exit ] %138 = getelementptr inbounds nuw i8, ptr %137, i64 8 - %.sroa.0.0.copyload28.i = load i32, ptr %138, align 4, !tbaa !95 - %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %137, i64 12 - %.sroa.2.0.copyload.i = load i32, ptr %.sroa.2.0..sroa_idx.i, align 4, !tbaa !68 - %139 = sext i32 %.sroa.2.0.copyload.i to i64 + %.sroa.0.0.copyload28.i = load i64, ptr %138, align 4 + %139 = ashr i64 %.sroa.0.0.copyload28.i, 32 %140 = getelementptr inbounds i32, ptr %136, i64 %139 store i32 0, ptr %140, align 4, !tbaa !68 %141 = load i32, ptr %28, align 8, !tbaa !226 @@ -5015,13 +5013,16 @@ _ZN2cv8ximgproc8nodeHeap6getMinEv.exit: ; preds = %._crit_edge.i, %._c %storemerge.in.i = phi i32 [ %210, %._crit_edge37.i ], [ %.025.lcssa.i, %._crit_edge.i ] %storemerge.i = add nsw i32 %storemerge.in.i, -1 store i32 %storemerge.i, ptr %28, align 8, !tbaa !226 - %216 = bitcast i32 %.sroa.0.0.copyload28.i to float + %.sroa.0.0.extract.trunc = trunc i64 %.sroa.0.0.copyload28.i to i32 + %216 = bitcast i32 %.sroa.0.0.extract.trunc to float + %.sroa.6.0.extract.shift = lshr i64 %.sroa.0.0.copyload28.i, 32 + %.sroa.6.0.extract.trunc = trunc nuw i64 %.sroa.6.0.extract.shift to i32 %217 = getelementptr inbounds i8, ptr %30, i64 %139 store i8 1, ptr %217, align 1, !tbaa !231 %218 = getelementptr inbounds nuw i32, ptr %107, i64 %indvars.iv64 - store i32 %.sroa.2.0.copyload.i, ptr %218, align 4, !tbaa !68 + store i32 %.sroa.6.0.extract.trunc, ptr %218, align 4, !tbaa !68 %219 = getelementptr inbounds nuw float, ptr %114, i64 %indvars.iv64 - store i32 %.sroa.0.0.copyload28.i, ptr %219, align 4, !tbaa !95 + store i32 %.sroa.0.0.extract.trunc, ptr %219, align 4, !tbaa !95 %indvars.iv.next65 = add nuw nsw i64 %indvars.iv64, 1 %220 = load ptr, ptr %8, align 8, !tbaa !108 %221 = getelementptr inbounds nuw i8, ptr %220, i64 24 @@ -16563,10 +16564,8 @@ _ZN2cv8ximgproc8nodeHeap3addENS0_4nodeE.exit.i.i.i: ; preds = %_ZN2cv8ximgproc8n %145 = phi ptr [ %134, %.loopexit.i.i.i ], [ %113, %_ZN2cv8ximgproc8nodeHeap3addENS0_4nodeE.exit.i.i.i ] %indvars.iv32.i.i.i = phi i64 [ %indvars.iv.next33.i.i.i, %.loopexit.i.i.i ], [ 0, %_ZN2cv8ximgproc8nodeHeap3addENS0_4nodeE.exit.i.i.i ] %146 = getelementptr inbounds nuw i8, ptr %145, i64 8 - %.sroa.0.0.copyload28.i.i.i.i = load i32, ptr %146, align 4, !tbaa !95 - %.sroa.2.0..sroa_idx.i.i.i.i = getelementptr inbounds nuw i8, ptr %145, i64 12 - %.sroa.2.0.copyload.i.i.i.i = load i32, ptr %.sroa.2.0..sroa_idx.i.i.i.i, align 4, !tbaa !68 - %147 = sext i32 %.sroa.2.0.copyload.i.i.i.i to i64 + %.sroa.0.0.copyload28.i.i.i.i = load i64, ptr %146, align 4 + %147 = ashr i64 %.sroa.0.0.copyload28.i.i.i.i, 32 %148 = getelementptr inbounds i32, ptr %144, i64 %147 store i32 0, ptr %148, align 4, !tbaa !68 %149 = load i32, ptr %31, align 8, !tbaa !226 @@ -16683,13 +16682,16 @@ _ZN2cv8ximgproc8nodeHeap6getMinEv.exit.i.i.i: ; preds = %._crit_edge37.i.i.i %storemerge.in.i.i.i.i = phi i32 [ %218, %._crit_edge37.i.i.i.i ], [ %.025.lcssa.i.i.i.i, %._crit_edge.i.i.i.i ] %storemerge.i.i.i.i = add nsw i32 %storemerge.in.i.i.i.i, -1 store i32 %storemerge.i.i.i.i, ptr %31, align 8, !tbaa !226 - %224 = bitcast i32 %.sroa.0.0.copyload28.i.i.i.i to float + %.sroa.0.0.extract.trunc.i.i.i = trunc i64 %.sroa.0.0.copyload28.i.i.i.i to i32 + %224 = bitcast i32 %.sroa.0.0.extract.trunc.i.i.i to float + %.sroa.6.0.extract.shift.i.i.i = lshr i64 %.sroa.0.0.copyload28.i.i.i.i, 32 + %.sroa.6.0.extract.trunc.i.i.i = trunc nuw i64 %.sroa.6.0.extract.shift.i.i.i to i32 %225 = getelementptr inbounds nuw i32, ptr %.sroa.04.0.i.i.i, i64 %147 store i32 1, ptr %225, align 4, !tbaa !68 %226 = getelementptr inbounds nuw i32, ptr %120, i64 %indvars.iv32.i.i.i - store i32 %.sroa.2.0.copyload.i.i.i.i, ptr %226, align 4, !tbaa !68 + store i32 %.sroa.6.0.extract.trunc.i.i.i, ptr %226, align 4, !tbaa !68 %227 = getelementptr inbounds nuw float, ptr %125, i64 %indvars.iv32.i.i.i - store i32 %.sroa.0.0.copyload28.i.i.i.i, ptr %227, align 4, !tbaa !95 + store i32 %.sroa.0.0.extract.trunc.i.i.i, ptr %227, align 4, !tbaa !95 %indvars.iv.next33.i.i.i = add nuw nsw i64 %indvars.iv32.i.i.i, 1 %228 = load ptr, ptr %41, align 8, !tbaa !292 %229 = getelementptr inbounds nuw %"class.std::vector.3", ptr %228, i64 %147 diff --git a/bench/openssl/optimized/ofb64ede.ll b/bench/openssl/optimized/ofb64ede.ll index 900bf7f9240..6a90f308eac 100644 --- a/bench/openssl/optimized/ofb64ede.ll +++ b/bench/openssl/optimized/ofb64ede.ll @@ -10,70 +10,66 @@ define void @DES_ede3_ofb64_encrypt(ptr noundef readonly captures(none) %0, ptr %11 = load i32, ptr %7, align 4, !tbaa !3 call void @llvm.lifetime.start.p0(ptr nonnull %9) call void @llvm.lifetime.start.p0(ptr nonnull %10) - %12 = getelementptr inbounds nuw i8, ptr %6, i64 1 - %13 = load i8, ptr %6, align 1, !tbaa !7 - %14 = zext i8 %13 to i32 + %12 = load i16, ptr %6, align 1 + %13 = zext i16 %12 to i32 + %14 = trunc i16 %12 to i8 %15 = getelementptr inbounds nuw i8, ptr %6, i64 2 - %16 = load i8, ptr %12, align 1, !tbaa !7 - %17 = zext i8 %16 to i32 - %18 = shl nuw nsw i32 %17, 8 - %19 = or disjoint i32 %18, %14 - %20 = getelementptr inbounds nuw i8, ptr %6, i64 3 - %21 = load i8, ptr %15, align 1, !tbaa !7 - %22 = zext i8 %21 to i32 - %23 = shl nuw nsw i32 %22, 16 - %24 = getelementptr inbounds nuw i8, ptr %6, i64 4 - %25 = load i8, ptr %20, align 1, !tbaa !7 - %26 = zext i8 %25 to i32 - %27 = shl nuw i32 %26, 24 - %28 = or disjoint i32 %19, %23 - %29 = or disjoint i32 %28, %27 - %30 = getelementptr inbounds nuw i8, ptr %6, i64 5 - %31 = load i8, ptr %24, align 1, !tbaa !7 - %32 = zext i8 %31 to i32 - %33 = getelementptr inbounds nuw i8, ptr %6, i64 6 - %34 = load i8, ptr %30, align 1, !tbaa !7 - %35 = zext i8 %34 to i32 - %36 = shl nuw nsw i32 %35, 8 - %37 = or disjoint i32 %36, %32 - %38 = getelementptr inbounds nuw i8, ptr %6, i64 7 - %39 = load i8, ptr %33, align 1, !tbaa !7 - %40 = zext i8 %39 to i32 - %41 = shl nuw nsw i32 %40, 16 - %42 = load i8, ptr %38, align 1, !tbaa !7 - %43 = zext i8 %42 to i32 - %44 = shl nuw i32 %43, 24 - %45 = or disjoint i32 %37, %41 - %46 = or disjoint i32 %45, %44 - store i32 %29, ptr %10, align 4, !tbaa !3 - %47 = getelementptr inbounds nuw i8, ptr %10, i64 4 - store i32 %46, ptr %47, align 4, !tbaa !3 - %48 = getelementptr inbounds nuw i8, ptr %9, i64 1 - store i8 %13, ptr %9, align 4, !tbaa !7 - %49 = getelementptr inbounds nuw i8, ptr %9, i64 2 - store i8 %16, ptr %48, align 1, !tbaa !7 - %50 = getelementptr inbounds nuw i8, ptr %9, i64 3 - store i8 %21, ptr %49, align 2, !tbaa !7 - %51 = getelementptr inbounds nuw i8, ptr %9, i64 4 - store i8 %25, ptr %50, align 1, !tbaa !7 - %52 = getelementptr inbounds nuw i8, ptr %9, i64 5 - store i8 %31, ptr %51, align 4, !tbaa !7 - %53 = getelementptr inbounds nuw i8, ptr %9, i64 6 - store i8 %34, ptr %52, align 1, !tbaa !7 - %54 = getelementptr inbounds nuw i8, ptr %9, i64 7 - store i8 %39, ptr %53, align 2, !tbaa !7 - store i8 %42, ptr %54, align 1, !tbaa !7 + %16 = lshr i16 %12, 8 + %17 = trunc nuw i16 %16 to i8 + %18 = getelementptr inbounds nuw i8, ptr %6, i64 3 + %19 = load i8, ptr %15, align 1, !tbaa !7 + %20 = zext i8 %19 to i32 + %21 = shl nuw nsw i32 %20, 16 + %22 = getelementptr inbounds nuw i8, ptr %6, i64 4 + %23 = load i8, ptr %18, align 1, !tbaa !7 + %24 = zext i8 %23 to i32 + %25 = shl nuw i32 %24, 24 + %26 = or disjoint i32 %21, %13 + %27 = or disjoint i32 %26, %25 + %28 = load i16, ptr %22, align 1 + %29 = zext i16 %28 to i32 + %30 = trunc i16 %28 to i8 + %31 = getelementptr inbounds nuw i8, ptr %6, i64 6 + %32 = lshr i16 %28, 8 + %33 = trunc nuw i16 %32 to i8 + %34 = getelementptr inbounds nuw i8, ptr %6, i64 7 + %35 = load i8, ptr %31, align 1, !tbaa !7 + %36 = zext i8 %35 to i32 + %37 = shl nuw nsw i32 %36, 16 + %38 = load i8, ptr %34, align 1, !tbaa !7 + %39 = zext i8 %38 to i32 + %40 = shl nuw i32 %39, 24 + %41 = or disjoint i32 %37, %29 + %42 = or disjoint i32 %41, %40 + store i32 %27, ptr %10, align 4, !tbaa !3 + %43 = getelementptr inbounds nuw i8, ptr %10, i64 4 + store i32 %42, ptr %43, align 4, !tbaa !3 + %44 = getelementptr inbounds nuw i8, ptr %9, i64 1 + store i8 %14, ptr %9, align 4, !tbaa !7 + %47 = getelementptr inbounds nuw i8, ptr %9, i64 2 + store i8 %17, ptr %44, align 1, !tbaa !7 + %48 = getelementptr inbounds nuw i8, ptr %9, i64 3 + store i8 %19, ptr %45, align 2, !tbaa !7 + %49 = getelementptr inbounds nuw i8, ptr %9, i64 4 + store i8 %23, ptr %48, align 1, !tbaa !7 + %50 = getelementptr inbounds nuw i8, ptr %9, i64 5 + store i8 %30, ptr %49, align 4, !tbaa !7 + %51 = getelementptr inbounds nuw i8, ptr %9, i64 6 + store i8 %33, ptr %50, align 1, !tbaa !7 + %52 = getelementptr inbounds nuw i8, ptr %9, i64 7 + store i8 %35, ptr %51, align 2, !tbaa !7 + store i8 %38, ptr %50, align 1, !tbaa !7 %.not89 = icmp eq i64 %2, 0 br i1 %.not89, label %._crit_edge.thread, label %.lr.ph .lr.ph: ; preds = %8, %61 - %.in = phi i64 [ %55, %61 ], [ %2, %8 ] - %.095 = phi i32 [ %.1, %61 ], [ 0, %8 ] - %.08194 = phi i32 [ %70, %61 ], [ %11, %8 ] - %.08293 = phi i32 [ %.183, %61 ], [ %46, %8 ] - %.08492 = phi i32 [ %.185, %61 ], [ %29, %8 ] - %.08691 = phi ptr [ %62, %61 ], [ %0, %8 ] - %.08790 = phi ptr [ %68, %61 ], [ %1, %8 ] + %.in = phi i64 [ %55, %57 ], [ %2, %8 ] + %.095 = phi i32 [ %.1, %57 ], [ 0, %8 ] + %.08194 = phi i32 [ %70, %57 ], [ %11, %8 ] + %.08293 = phi i32 [ %.183, %57 ], [ %42, %8 ] + %.08492 = phi i32 [ %.185, %57 ], [ %27, %8 ] + %.08691 = phi ptr [ %62, %57 ], [ %0, %8 ] + %.08790 = phi ptr [ %68, %57 ], [ %1, %8 ] %55 = add nsw i64 %.in, -1 %56 = icmp eq i32 %.08194, 0 br i1 %56, label %57, label %61 @@ -81,16 +77,16 @@ define void @DES_ede3_ofb64_encrypt(ptr noundef readonly captures(none) %0, ptr 57: ; preds = %.lr.ph call void @DES_encrypt3(ptr noundef nonnull %10, ptr noundef %3, ptr noundef %4, ptr noundef %5) #3 %58 = load i32, ptr %10, align 4, !tbaa !3 - %59 = load i32, ptr %47, align 4, !tbaa !3 + %59 = load i32, ptr %43, align 4, !tbaa !3 store i32 %58, ptr %9, align 4 - store i32 %59, ptr %51, align 4 + store i32 %59, ptr %47, align 4 %60 = add nsw i32 %.095, 1 br label %61 61: ; preds = %57, %.lr.ph - %.185 = phi i32 [ %58, %57 ], [ %.08492, %.lr.ph ] - %.183 = phi i32 [ %59, %57 ], [ %.08293, %.lr.ph ] - %.1 = phi i32 [ %60, %57 ], [ %.095, %.lr.ph ] + %.185 = phi i32 [ %58, %53 ], [ %.08492, %.lr.ph ] + %.183 = phi i32 [ %59, %53 ], [ %.08293, %.lr.ph ] + %.1 = phi i32 [ %60, %53 ], [ %.095, %.lr.ph ] %62 = getelementptr inbounds nuw i8, ptr %.08691, i64 1 %63 = load i8, ptr %.08691, align 1, !tbaa !7 %64 = sext i32 %.08194 to i64 @@ -110,11 +106,11 @@ define void @DES_ede3_ofb64_encrypt(ptr noundef readonly captures(none) %0, ptr 72: ; preds = %._crit_edge store i32 %.185, ptr %6, align 1 - store i32 %.183, ptr %24, align 1 + store i32 %.183, ptr %22, align 1 br label %._crit_edge.thread ._crit_edge.thread: ; preds = %8, %72, %._crit_edge - %.081.lcssa104 = phi i32 [ %70, %72 ], [ %70, %._crit_edge ], [ %11, %8 ] + %.081.lcssa104 = phi i32 [ %70, %68 ], [ %70, %._crit_edge ], [ %11, %8 ] store i32 %.081.lcssa104, ptr %7, align 4, !tbaa !3 call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %9) diff --git a/bench/openssl/optimized/ofb64enc.ll b/bench/openssl/optimized/ofb64enc.ll index 5d9411ad76d..95160aecd93 100644 --- a/bench/openssl/optimized/ofb64enc.ll +++ b/bench/openssl/optimized/ofb64enc.ll @@ -10,70 +10,66 @@ define void @DES_ofb64_encrypt(ptr noundef readonly captures(none) %0, ptr nound %9 = load i32, ptr %5, align 4, !tbaa !3 call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @llvm.lifetime.start.p0(ptr nonnull %8) - %10 = getelementptr inbounds nuw i8, ptr %4, i64 1 - %11 = load i8, ptr %4, align 1, !tbaa !7 - %12 = zext i8 %11 to i32 + %10 = load i16, ptr %4, align 1 + %11 = zext i16 %10 to i32 + %12 = trunc i16 %10 to i8 %13 = getelementptr inbounds nuw i8, ptr %4, i64 2 - %14 = load i8, ptr %10, align 1, !tbaa !7 - %15 = zext i8 %14 to i32 - %16 = shl nuw nsw i32 %15, 8 - %17 = or disjoint i32 %16, %12 - %18 = getelementptr inbounds nuw i8, ptr %4, i64 3 - %19 = load i8, ptr %13, align 1, !tbaa !7 - %20 = zext i8 %19 to i32 - %21 = shl nuw nsw i32 %20, 16 - %22 = getelementptr inbounds nuw i8, ptr %4, i64 4 - %23 = load i8, ptr %18, align 1, !tbaa !7 - %24 = zext i8 %23 to i32 - %25 = shl nuw i32 %24, 24 - %26 = or disjoint i32 %17, %21 - %27 = or disjoint i32 %26, %25 - %28 = getelementptr inbounds nuw i8, ptr %4, i64 5 - %29 = load i8, ptr %22, align 1, !tbaa !7 - %30 = zext i8 %29 to i32 - %31 = getelementptr inbounds nuw i8, ptr %4, i64 6 - %32 = load i8, ptr %28, align 1, !tbaa !7 - %33 = zext i8 %32 to i32 - %34 = shl nuw nsw i32 %33, 8 - %35 = or disjoint i32 %34, %30 - %36 = getelementptr inbounds nuw i8, ptr %4, i64 7 - %37 = load i8, ptr %31, align 1, !tbaa !7 - %38 = zext i8 %37 to i32 - %39 = shl nuw nsw i32 %38, 16 - %40 = load i8, ptr %36, align 1, !tbaa !7 - %41 = zext i8 %40 to i32 - %42 = shl nuw i32 %41, 24 - %43 = or disjoint i32 %35, %39 - %44 = or disjoint i32 %43, %42 - store i32 %27, ptr %8, align 4, !tbaa !3 - %45 = getelementptr inbounds nuw i8, ptr %8, i64 4 - store i32 %44, ptr %45, align 4, !tbaa !3 - %46 = getelementptr inbounds nuw i8, ptr %7, i64 1 - store i8 %11, ptr %7, align 4, !tbaa !7 - %47 = getelementptr inbounds nuw i8, ptr %7, i64 2 - store i8 %14, ptr %46, align 1, !tbaa !7 - %48 = getelementptr inbounds nuw i8, ptr %7, i64 3 - store i8 %19, ptr %47, align 2, !tbaa !7 - %49 = getelementptr inbounds nuw i8, ptr %7, i64 4 - store i8 %23, ptr %48, align 1, !tbaa !7 - %50 = getelementptr inbounds nuw i8, ptr %7, i64 5 - store i8 %29, ptr %49, align 4, !tbaa !7 - %51 = getelementptr inbounds nuw i8, ptr %7, i64 6 - store i8 %32, ptr %50, align 1, !tbaa !7 - %52 = getelementptr inbounds nuw i8, ptr %7, i64 7 - store i8 %37, ptr %51, align 2, !tbaa !7 - store i8 %40, ptr %52, align 1, !tbaa !7 + %14 = lshr i16 %10, 8 + %15 = trunc nuw i16 %14 to i8 + %16 = getelementptr inbounds nuw i8, ptr %4, i64 3 + %17 = load i8, ptr %13, align 1, !tbaa !7 + %18 = zext i8 %17 to i32 + %19 = shl nuw nsw i32 %18, 16 + %20 = getelementptr inbounds nuw i8, ptr %4, i64 4 + %21 = load i8, ptr %16, align 1, !tbaa !7 + %22 = zext i8 %21 to i32 + %23 = shl nuw i32 %22, 24 + %24 = or disjoint i32 %19, %11 + %25 = or disjoint i32 %24, %23 + %26 = load i16, ptr %20, align 1 + %27 = zext i16 %26 to i32 + %28 = trunc i16 %26 to i8 + %29 = getelementptr inbounds nuw i8, ptr %4, i64 6 + %30 = lshr i16 %26, 8 + %31 = trunc nuw i16 %30 to i8 + %32 = getelementptr inbounds nuw i8, ptr %4, i64 7 + %33 = load i8, ptr %29, align 1, !tbaa !7 + %34 = zext i8 %33 to i32 + %35 = shl nuw nsw i32 %34, 16 + %36 = load i8, ptr %32, align 1, !tbaa !7 + %37 = zext i8 %36 to i32 + %38 = shl nuw i32 %37, 24 + %39 = or disjoint i32 %35, %27 + %40 = or disjoint i32 %39, %38 + store i32 %25, ptr %8, align 4, !tbaa !3 + %41 = getelementptr inbounds nuw i8, ptr %8, i64 4 + store i32 %40, ptr %41, align 4, !tbaa !3 + %42 = getelementptr inbounds nuw i8, ptr %7, i64 1 + store i8 %12, ptr %7, align 4, !tbaa !7 + %45 = getelementptr inbounds nuw i8, ptr %7, i64 2 + store i8 %15, ptr %42, align 1, !tbaa !7 + %46 = getelementptr inbounds nuw i8, ptr %7, i64 3 + store i8 %17, ptr %43, align 2, !tbaa !7 + %47 = getelementptr inbounds nuw i8, ptr %7, i64 4 + store i8 %21, ptr %46, align 1, !tbaa !7 + %48 = getelementptr inbounds nuw i8, ptr %7, i64 5 + store i8 %28, ptr %47, align 4, !tbaa !7 + %49 = getelementptr inbounds nuw i8, ptr %7, i64 6 + store i8 %31, ptr %48, align 1, !tbaa !7 + %50 = getelementptr inbounds nuw i8, ptr %7, i64 7 + store i8 %33, ptr %49, align 2, !tbaa !7 + store i8 %36, ptr %48, align 1, !tbaa !7 %.not83 = icmp eq i64 %2, 0 br i1 %.not83, label %._crit_edge.thread, label %.lr.ph .lr.ph: ; preds = %6, %61 - %53 = phi i32 [ %62, %61 ], [ %44, %6 ] - %54 = phi i32 [ %63, %61 ], [ %27, %6 ] - %.in = phi i64 [ %55, %61 ], [ %2, %6 ] - %.087 = phi i32 [ %.1, %61 ], [ 0, %6 ] - %.07986 = phi i32 [ %72, %61 ], [ %9, %6 ] - %.08085 = phi ptr [ %64, %61 ], [ %0, %6 ] - %.08184 = phi ptr [ %70, %61 ], [ %1, %6 ] + %53 = phi i32 [ %62, %57 ], [ %40, %6 ] + %54 = phi i32 [ %63, %57 ], [ %25, %6 ] + %.in = phi i64 [ %55, %57 ], [ %2, %6 ] + %.087 = phi i32 [ %.1, %57 ], [ 0, %6 ] + %.07986 = phi i32 [ %72, %57 ], [ %9, %6 ] + %.08085 = phi ptr [ %64, %57 ], [ %0, %6 ] + %.08184 = phi ptr [ %70, %57 ], [ %1, %6 ] %55 = add nsw i64 %.in, -1 %56 = icmp eq i32 %.07986, 0 br i1 %56, label %57, label %61 @@ -82,15 +78,15 @@ define void @DES_ofb64_encrypt(ptr noundef readonly captures(none) %0, ptr nound call void @DES_encrypt1(ptr noundef nonnull %8, ptr noundef %3, i32 noundef 1) #3 %58 = load i32, ptr %8, align 4, !tbaa !3 store i32 %58, ptr %7, align 4 - %59 = load i32, ptr %45, align 4, !tbaa !3 - store i32 %59, ptr %49, align 4 + %59 = load i32, ptr %41, align 4, !tbaa !3 + store i32 %59, ptr %45, align 4 %60 = add nsw i32 %.087, 1 br label %61 61: ; preds = %57, %.lr.ph - %62 = phi i32 [ %59, %57 ], [ %53, %.lr.ph ] - %63 = phi i32 [ %58, %57 ], [ %54, %.lr.ph ] - %.1 = phi i32 [ %60, %57 ], [ %.087, %.lr.ph ] + %62 = phi i32 [ %59, %53 ], [ %53, %.lr.ph ] + %63 = phi i32 [ %58, %53 ], [ %54, %.lr.ph ] + %.1 = phi i32 [ %60, %53 ], [ %.087, %.lr.ph ] %64 = getelementptr inbounds nuw i8, ptr %.08085, i64 1 %65 = load i8, ptr %.08085, align 1, !tbaa !7 %66 = sext i32 %.07986 to i64 @@ -110,11 +106,11 @@ define void @DES_ofb64_encrypt(ptr noundef readonly captures(none) %0, ptr nound 74: ; preds = %._crit_edge store i32 %63, ptr %4, align 1 - store i32 %62, ptr %22, align 1 + store i32 %62, ptr %20, align 1 br label %._crit_edge.thread ._crit_edge.thread: ; preds = %6, %74, %._crit_edge - %.079.lcssa92 = phi i32 [ %72, %74 ], [ %72, %._crit_edge ], [ %9, %6 ] + %.079.lcssa92 = phi i32 [ %72, %70 ], [ %72, %._crit_edge ], [ %9, %6 ] store i32 %.079.lcssa92, ptr %5, align 4, !tbaa !3 call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) diff --git a/bench/openssl/optimized/rc2ofb64.ll b/bench/openssl/optimized/rc2ofb64.ll index df68f50144b..915647661d4 100644 --- a/bench/openssl/optimized/rc2ofb64.ll +++ b/bench/openssl/optimized/rc2ofb64.ll @@ -10,70 +10,66 @@ define void @RC2_ofb64_encrypt(ptr noundef readonly captures(none) %0, ptr nound %9 = load i32, ptr %5, align 4, !tbaa !3 call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @llvm.lifetime.start.p0(ptr nonnull %8) - %10 = getelementptr inbounds nuw i8, ptr %4, i64 1 - %11 = load i8, ptr %4, align 1, !tbaa !7 - %12 = zext i8 %11 to i64 + %10 = load i16, ptr %4, align 1 + %11 = zext i16 %10 to i64 + %12 = trunc i16 %10 to i8 %13 = getelementptr inbounds nuw i8, ptr %4, i64 2 - %14 = load i8, ptr %10, align 1, !tbaa !7 - %15 = zext i8 %14 to i64 - %16 = shl nuw nsw i64 %15, 8 - %17 = or disjoint i64 %16, %12 - %18 = getelementptr inbounds nuw i8, ptr %4, i64 3 - %19 = load i8, ptr %13, align 1, !tbaa !7 - %20 = zext i8 %19 to i64 - %21 = shl nuw nsw i64 %20, 16 - %22 = getelementptr inbounds nuw i8, ptr %4, i64 4 - %23 = load i8, ptr %18, align 1, !tbaa !7 - %24 = zext i8 %23 to i64 - %25 = shl nuw nsw i64 %24, 24 - %26 = or disjoint i64 %17, %21 - %27 = or disjoint i64 %26, %25 - %28 = getelementptr inbounds nuw i8, ptr %4, i64 5 - %29 = load i8, ptr %22, align 1, !tbaa !7 - %30 = zext i8 %29 to i64 - %31 = getelementptr inbounds nuw i8, ptr %4, i64 6 - %32 = load i8, ptr %28, align 1, !tbaa !7 - %33 = zext i8 %32 to i64 - %34 = shl nuw nsw i64 %33, 8 - %35 = or disjoint i64 %34, %30 - %36 = getelementptr inbounds nuw i8, ptr %4, i64 7 - %37 = load i8, ptr %31, align 1, !tbaa !7 - %38 = zext i8 %37 to i64 - %39 = shl nuw nsw i64 %38, 16 - %40 = load i8, ptr %36, align 1, !tbaa !7 - %41 = zext i8 %40 to i64 - %42 = shl nuw nsw i64 %41, 24 - %43 = or disjoint i64 %35, %39 - %44 = or disjoint i64 %43, %42 - store i64 %27, ptr %8, align 16, !tbaa !8 - %45 = getelementptr inbounds nuw i8, ptr %8, i64 8 - store i64 %44, ptr %45, align 8, !tbaa !8 - %46 = getelementptr inbounds nuw i8, ptr %7, i64 1 - store i8 %11, ptr %7, align 4, !tbaa !7 - %47 = getelementptr inbounds nuw i8, ptr %7, i64 2 - store i8 %14, ptr %46, align 1, !tbaa !7 - %48 = getelementptr inbounds nuw i8, ptr %7, i64 3 - store i8 %19, ptr %47, align 2, !tbaa !7 - %49 = getelementptr inbounds nuw i8, ptr %7, i64 4 - store i8 %23, ptr %48, align 1, !tbaa !7 - %50 = getelementptr inbounds nuw i8, ptr %7, i64 5 - store i8 %29, ptr %49, align 4, !tbaa !7 - %51 = getelementptr inbounds nuw i8, ptr %7, i64 6 - store i8 %32, ptr %50, align 1, !tbaa !7 - %52 = getelementptr inbounds nuw i8, ptr %7, i64 7 - store i8 %37, ptr %51, align 2, !tbaa !7 - store i8 %40, ptr %52, align 1, !tbaa !7 + %14 = lshr i16 %10, 8 + %15 = trunc nuw i16 %14 to i8 + %16 = getelementptr inbounds nuw i8, ptr %4, i64 3 + %17 = load i8, ptr %13, align 1, !tbaa !7 + %18 = zext i8 %17 to i64 + %19 = shl nuw nsw i64 %18, 16 + %20 = getelementptr inbounds nuw i8, ptr %4, i64 4 + %21 = load i8, ptr %16, align 1, !tbaa !7 + %22 = zext i8 %21 to i64 + %23 = shl nuw nsw i64 %22, 24 + %24 = or disjoint i64 %19, %11 + %25 = or disjoint i64 %24, %23 + %26 = load i16, ptr %20, align 1 + %27 = zext i16 %26 to i64 + %28 = trunc i16 %26 to i8 + %29 = getelementptr inbounds nuw i8, ptr %4, i64 6 + %30 = lshr i16 %26, 8 + %31 = trunc nuw i16 %30 to i8 + %32 = getelementptr inbounds nuw i8, ptr %4, i64 7 + %33 = load i8, ptr %29, align 1, !tbaa !7 + %34 = zext i8 %33 to i64 + %35 = shl nuw nsw i64 %34, 16 + %36 = load i8, ptr %32, align 1, !tbaa !7 + %37 = zext i8 %36 to i64 + %38 = shl nuw nsw i64 %37, 24 + %39 = or disjoint i64 %35, %27 + %40 = or disjoint i64 %39, %38 + store i64 %25, ptr %8, align 16, !tbaa !8 + %41 = getelementptr inbounds nuw i8, ptr %8, i64 8 + store i64 %40, ptr %41, align 8, !tbaa !8 + %42 = getelementptr inbounds nuw i8, ptr %7, i64 1 + store i8 %12, ptr %7, align 4, !tbaa !7 + %45 = getelementptr inbounds nuw i8, ptr %7, i64 2 + store i8 %15, ptr %42, align 1, !tbaa !7 + %46 = getelementptr inbounds nuw i8, ptr %7, i64 3 + store i8 %17, ptr %43, align 2, !tbaa !7 + %47 = getelementptr inbounds nuw i8, ptr %7, i64 4 + store i8 %21, ptr %46, align 1, !tbaa !7 + %48 = getelementptr inbounds nuw i8, ptr %7, i64 5 + store i8 %28, ptr %47, align 4, !tbaa !7 + %49 = getelementptr inbounds nuw i8, ptr %7, i64 6 + store i8 %31, ptr %48, align 1, !tbaa !7 + %50 = getelementptr inbounds nuw i8, ptr %7, i64 7 + store i8 %33, ptr %49, align 2, !tbaa !7 + store i8 %36, ptr %48, align 1, !tbaa !7 %.not83 = icmp eq i64 %2, 0 br i1 %.not83, label %._crit_edge.thread, label %.lr.ph .lr.ph: ; preds = %6, %63 - %53 = phi i64 [ %64, %63 ], [ %44, %6 ] - %54 = phi i64 [ %65, %63 ], [ %27, %6 ] - %.in = phi i64 [ %55, %63 ], [ %2, %6 ] - %.087 = phi i32 [ %.1, %63 ], [ 0, %6 ] - %.07986 = phi i32 [ %74, %63 ], [ %9, %6 ] - %.08085 = phi ptr [ %66, %63 ], [ %0, %6 ] - %.08184 = phi ptr [ %72, %63 ], [ %1, %6 ] + %53 = phi i64 [ %64, %59 ], [ %40, %6 ] + %54 = phi i64 [ %65, %59 ], [ %25, %6 ] + %.in = phi i64 [ %55, %59 ], [ %2, %6 ] + %.087 = phi i32 [ %.1, %59 ], [ 0, %6 ] + %.07986 = phi i32 [ %74, %59 ], [ %9, %6 ] + %.08085 = phi ptr [ %66, %59 ], [ %0, %6 ] + %.08184 = phi ptr [ %72, %59 ], [ %1, %6 ] %55 = add nsw i64 %.in, -1 %56 = icmp eq i32 %.07986, 0 br i1 %56, label %57, label %63 @@ -83,16 +79,16 @@ define void @RC2_ofb64_encrypt(ptr noundef readonly captures(none) %0, ptr nound %58 = load i64, ptr %8, align 16, !tbaa !8 %59 = trunc i64 %58 to i32 store i32 %59, ptr %7, align 4 - %60 = load i64, ptr %45, align 8, !tbaa !8 + %60 = load i64, ptr %41, align 8, !tbaa !8 %61 = trunc i64 %60 to i32 - store i32 %61, ptr %49, align 4 + store i32 %61, ptr %45, align 4 %62 = add nsw i32 %.087, 1 br label %63 63: ; preds = %57, %.lr.ph - %64 = phi i64 [ %60, %57 ], [ %53, %.lr.ph ] - %65 = phi i64 [ %58, %57 ], [ %54, %.lr.ph ] - %.1 = phi i32 [ %62, %57 ], [ %.087, %.lr.ph ] + %64 = phi i64 [ %60, %53 ], [ %53, %.lr.ph ] + %65 = phi i64 [ %58, %53 ], [ %54, %.lr.ph ] + %.1 = phi i32 [ %62, %53 ], [ %.087, %.lr.ph ] %66 = getelementptr inbounds nuw i8, ptr %.08085, i64 1 %67 = load i8, ptr %.08085, align 1, !tbaa !7 %68 = sext i32 %.07986 to i64 @@ -114,11 +110,11 @@ define void @RC2_ofb64_encrypt(ptr noundef readonly captures(none) %0, ptr nound %77 = trunc i64 %65 to i32 store i32 %77, ptr %4, align 1 %78 = trunc i64 %64 to i32 - store i32 %78, ptr %22, align 1 + store i32 %78, ptr %20, align 1 br label %._crit_edge.thread ._crit_edge.thread: ; preds = %6, %76, %._crit_edge - %.079.lcssa92 = phi i32 [ %74, %76 ], [ %74, %._crit_edge ], [ %9, %6 ] + %.079.lcssa92 = phi i32 [ %74, %72 ], [ %74, %._crit_edge ], [ %9, %6 ] store i32 %.079.lcssa92, ptr %5, align 4, !tbaa !3 call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) diff --git a/bench/openusd/optimized/avif.ll b/bench/openusd/optimized/avif.ll index e7784dfedcb..a6203ddd942 100644 --- a/bench/openusd/optimized/avif.ll +++ b/bench/openusd/optimized/avif.ll @@ -1902,13 +1902,13 @@ define hidden range(i32 0, 2) i32 @avifCropRectConvertCleanApertureBox(ptr nound %16 = getelementptr inbounds nuw i8, ptr %1, i64 12 %17 = load i32, ptr %16, align 4 %18 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %19 = load i32, ptr %18, align 4 - %20 = getelementptr inbounds nuw i8, ptr %1, i64 20 - %21 = load i32, ptr %20, align 4 + %19 = load i64, ptr %18, align 4 + %20 = lshr i64 %19, 32 + %21 = trunc nuw i64 %20 to i32 %22 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %23 = load i32, ptr %22, align 4 - %24 = getelementptr inbounds nuw i8, ptr %1, i64 28 - %25 = load i32, ptr %24, align 4 + %23 = load i64, ptr %22, align 4 + %24 = lshr i64 %23, 32 + %25 = trunc nuw i64 %24 to i32 %26 = icmp slt i32 %13, 1 %27 = icmp slt i32 %17, 1 %or.cond = select i1 %26, i1 true, i1 %27 @@ -1969,11 +1969,7 @@ define hidden range(i32 0, 2) i32 @avifCropRectConvertCleanApertureBox(ptr nound %spec.select3.i = select i1 %.not.i, i64 4294967296, i64 8589934592 %.sroa.0.0.insert.ext.i = zext i32 %spec.select.i to i64 %.sroa.0.0.insert.insert.i = or disjoint i64 %spec.select3.i, %.sroa.0.0.insert.ext.i - %.sroa.218.0.insert.ext = zext nneg i32 %21 to i64 - %.sroa.218.0.insert.shift = shl nuw nsw i64 %.sroa.218.0.insert.ext, 32 - %.sroa.017.0.insert.ext = zext i32 %19 to i64 - %.sroa.017.0.insert.insert = or disjoint i64 %.sroa.218.0.insert.shift, %.sroa.017.0.insert.ext - %49 = call i32 @avifFractionAdd(i64 %.sroa.0.0.insert.insert.i, i64 %.sroa.017.0.insert.insert, ptr noundef nonnull %7) #14 + %49 = call i32 @avifFractionAdd(i64 %.sroa.0.0.insert.insert.i, i64 %19, ptr noundef nonnull %7) #14 %.not92 = icmp eq i32 %49, 0 br i1 %.not92, label %50, label %51 @@ -1989,11 +1985,7 @@ define hidden range(i32 0, 2) i32 @avifCropRectConvertCleanApertureBox(ptr nound %spec.select.i99 = ashr i32 %3, %53 %.sroa.0.0.insert.ext.i101 = zext i32 %spec.select.i99 to i64 %.sroa.0.0.insert.insert.i102 = or disjoint i64 %spec.select3.i100, %.sroa.0.0.insert.ext.i101 - %.sroa.216.0.insert.ext = zext nneg i32 %25 to i64 - %.sroa.216.0.insert.shift = shl nuw nsw i64 %.sroa.216.0.insert.ext, 32 - %.sroa.015.0.insert.ext = zext i32 %23 to i64 - %.sroa.015.0.insert.insert = or disjoint i64 %.sroa.216.0.insert.shift, %.sroa.015.0.insert.ext - %54 = call i32 @avifFractionAdd(i64 %.sroa.0.0.insert.insert.i102, i64 %.sroa.015.0.insert.insert, ptr noundef nonnull %8) #14 + %54 = call i32 @avifFractionAdd(i64 %.sroa.0.0.insert.insert.i102, i64 %23, ptr noundef nonnull %8) #14 %.not93 = icmp eq i32 %54, 0 br i1 %.not93, label %55, label %56 diff --git a/bench/openusd/optimized/prim.ll b/bench/openusd/optimized/prim.ll index 2772d644f5d..0eed8d806d1 100644 --- a/bench/openusd/optimized/prim.ll +++ b/bench/openusd/optimized/prim.ll @@ -40852,22 +40852,18 @@ _ZN32pxrInternal_v0_24__pxrReserved__7SdfPathD2Ev.exit: ; preds = %_ZN32pxrInter ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__7SdfPathESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterINS3_12FastLessThanEEEEvT_T0_(ptr %0) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { - %2 = load i32, ptr %0, align 4 + %2 = load i64, ptr %0, align 4 + %3 = trunc i64 %2 to i32 store i32 0, ptr %0, align 4 %3 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %4 = load i32, ptr %3, align 4 store i32 0, ptr %3, align 4 - %.sroa.5.0.insert.ext = zext i32 %4 to i64 - %.sroa.5.0.insert.shift = shl nuw i64 %.sroa.5.0.insert.ext, 32 - %.sroa.05.0.insert.ext = zext i32 %2 to i64 - %.sroa.05.0.insert.insert = or disjoint i64 %.sroa.5.0.insert.shift, %.sroa.05.0.insert.ext %.sroa.0.011 = getelementptr inbounds i8, ptr %0, i64 -8 %.0.copyload.i2.i.i12 = load i64, ptr %.sroa.0.011, align 4 - %5 = icmp ult i64 %.sroa.05.0.insert.insert, %.0.copyload.i2.i.i12 + %5 = icmp ult i64 %2, %.0.copyload.i2.i.i12 br i1 %5, label %.lr.ph, label %._crit_edge.thread ._crit_edge.thread: ; preds = %1 - store i32 %2, ptr %0, align 4 + store i32 %3, ptr %0, align 4 br label %_ZN32pxrInternal_v0_24__pxrReserved__7SdfPathD2Ev.exit .lr.ph: ; preds = %1, %_ZN32pxrInternal_v0_24__pxrReserved__7SdfPathaSEOS0_.exit @@ -40915,12 +40911,12 @@ _ZN32pxrInternal_v0_24__pxrReserved__7SdfPathaSEOS0_.exit: ; preds = %.lr.ph, %8 store i32 %27, ptr %25, align 4 %.sroa.0.0 = getelementptr inbounds i8, ptr %.sroa.0.014, i64 -8 %.0.copyload.i2.i.i = load i64, ptr %.sroa.0.0, align 4 - %28 = icmp ult i64 %.sroa.05.0.insert.insert, %.0.copyload.i2.i.i + %28 = icmp ult i64 %2, %.0.copyload.i2.i.i br i1 %28, label %.lr.ph, label %._crit_edge, !llvm.loop !435 ._crit_edge: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7SdfPathaSEOS0_.exit %.pre = load i32, ptr %.sroa.0.014, align 4 - store i32 %2, ptr %.sroa.0.014, align 4 + store i32 %3, ptr %.sroa.0.014, align 4 %.not.i.i.i1 = icmp eq i32 %.pre, 0 br i1 %.not.i.i.i1, label %_ZN32pxrInternal_v0_24__pxrReserved__7SdfPathD2Ev.exit, label %29 @@ -40952,8 +40948,10 @@ _ZN32pxrInternal_v0_24__pxrReserved__7SdfPathaSEOS0_.exit: ; preds = %.lr.ph, %8 _ZN32pxrInternal_v0_24__pxrReserved__7SdfPathD2Ev.exit: ; preds = %._crit_edge.thread, %42, %29, %._crit_edge %.sroa.07.0.lcssa19 = phi ptr [ %0, %._crit_edge.thread ], [ %.sroa.0.014, %42 ], [ %.sroa.0.014, %29 ], [ %.sroa.0.014, %._crit_edge ] - %46 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.lcssa19, i64 4 - store i32 %4, ptr %46, align 4 + %46 = lshr i64 %2, 32 + %47 = trunc nuw i64 %46 to i32 + %48 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.lcssa20, i64 4 + store i32 %47, ptr %48, align 4 ret void } diff --git a/bench/pola-rs/optimized/14pqkeep8nux61uultru6rglq.ll b/bench/pola-rs/optimized/14pqkeep8nux61uultru6rglq.ll index e67b1999460..65e48dad2e9 100644 --- a/bench/pola-rs/optimized/14pqkeep8nux61uultru6rglq.ll +++ b/bench/pola-rs/optimized/14pqkeep8nux61uultru6rglq.ll @@ -6211,9 +6211,8 @@ define internal fastcc { i64, i64 } @_ZN12polars_arrow20temporal_conversions24ut call void @llvm.lifetime.end.p0(ptr nonnull %5) %.sroa.05.0.copyload = load i32, ptr %6, align 4 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 4 - %.sroa.6.0.copyload = load i8, ptr %.sroa.6.0..sroa_idx, align 4 - %.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 5 - %.sroa.8.sroa.0.0.copyload = load i24, ptr %.sroa.8.0..sroa_idx, align 1 + %.sroa.6.0.copyload = load i32, ptr %.sroa.6.0..sroa_idx, align 4 + %40 = zext i32 %.sroa.6.0.copyload to i64 %.sroa.8.sroa.5.0..sroa.8.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 8 %.sroa.8.sroa.5.0.copyload = load i32, ptr %.sroa.8.sroa.5.0..sroa.8.0..sroa_idx.sroa_idx, align 4 call void @llvm.lifetime.end.p0(ptr nonnull %6) @@ -6244,26 +6243,22 @@ default.unreachable: ; preds = %39 br label %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit.i _ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit.i: ; preds = %45, %44 - %.sroa.05.0.i.i = phi i32 [ %.neg.i.i, %45 ], [ 0, %44 ] - %.sroa.0.0.i.i = phi i32 [ %50, %45 ], [ %42, %44 ] + %.sroa.05.0.i.i = phi i32 [ %.neg.i.i, %46 ], [ 0, %45 ] + %.sroa.0.0.i.i = phi i32 [ %50, %46 ], [ %42, %45 ] %51 = sdiv i32 %.sroa.0.0.i.i, 100 %52 = mul nsw i32 %.sroa.0.0.i.i, 1461 %53 = ashr i32 %52, 2 %54 = ashr i32 %51, 2 %55 = lshr i32 %.sroa.05.0.copyload, 4 %56 = and i32 %55, 511 - %.sroa.4.sroa.7.0.insert.ext24 = zext i24 %.sroa.8.sroa.0.0.copyload to i64 - %.sroa.4.sroa.7.0.insert.shift25 = shl nuw nsw i64 %.sroa.4.sroa.7.0.insert.ext24, 8 - %.sroa.4.sroa.0.0.insert.ext13 = zext i8 %.sroa.6.0.copyload to i64 - %.sroa.4.sroa.0.0.insert.insert15 = or disjoint i64 %.sroa.4.sroa.7.0.insert.shift25, %.sroa.4.sroa.0.0.insert.ext13 - %57 = add nuw nsw i32 %56, -719163 - %58 = add nsw i32 %57, %.sroa.05.0.i.i - %59 = sub nsw i32 %58, %51 - %60 = add nsw i32 %59, %53 - %narrow5.i = add nsw i32 %60, %54 - %61 = sext i32 %narrow5.i to i64 - %62 = mul nsw i64 %61, 86400 - %63 = add nsw i64 %62, %.sroa.4.sroa.0.0.insert.insert15 + %58 = add nuw nsw i32 %57, -719163 + %59 = add nsw i32 %58, %.sroa.05.0.i.i + %60 = sub nsw i32 %59, %52 + %61 = add nsw i32 %60, %54 + %57 = add nsw i32 %61, %55 + %62 = sext i32 %57 to i64 + %63 = mul nsw i64 %62, 86400 + %60 = add nsw i64 %63, %40 br label %"_ZN12polars_arrow20temporal_conversions24utf8_to_timestamp_scalar28_$u7b$$u7b$closure$u7d$$u7d$17hb1d3382bc172affaE.exit" 64: ; preds = %39 @@ -6279,30 +6274,26 @@ _ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit.i: ; br label %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit11.i _ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit11.i: ; preds = %65, %64 - %.sroa.05.0.i8.i = phi i32 [ %.neg.i10.i, %65 ], [ 0, %64 ] - %.sroa.0.0.i9.i = phi i32 [ %70, %65 ], [ %42, %64 ] + %.sroa.05.0.i8.i = phi i32 [ %.neg.i10.i, %66 ], [ 0, %65 ] + %.sroa.0.0.i9.i = phi i32 [ %70, %66 ], [ %42, %65 ] %71 = sdiv i32 %.sroa.0.0.i9.i, 100 %72 = mul nsw i32 %.sroa.0.0.i9.i, 1461 %73 = ashr i32 %72, 2 %74 = ashr i32 %71, 2 %75 = lshr i32 %.sroa.05.0.copyload, 4 %76 = and i32 %75, 511 - %.sroa.4.sroa.7.0.insert.ext20 = zext i24 %.sroa.8.sroa.0.0.copyload to i64 - %.sroa.4.sroa.7.0.insert.shift21 = shl nuw nsw i64 %.sroa.4.sroa.7.0.insert.ext20, 8 - %.sroa.4.sroa.0.0.insert.ext10 = zext i8 %.sroa.6.0.copyload to i64 - %.sroa.4.sroa.0.0.insert.insert12 = or disjoint i64 %.sroa.4.sroa.7.0.insert.shift21, %.sroa.4.sroa.0.0.insert.ext10 - %77 = add nuw nsw i32 %76, -719163 - %78 = add nsw i32 %77, %.sroa.05.0.i8.i - %79 = sub nsw i32 %78, %71 - %80 = add nsw i32 %79, %73 - %narrow4.i = add nsw i32 %80, %74 - %81 = sext i32 %narrow4.i to i64 - %82 = mul nsw i64 %81, 86400 - %83 = add nsw i64 %82, %.sroa.4.sroa.0.0.insert.insert12 - %84 = mul nsw i64 %83, 1000 - %85 = udiv i32 %.sroa.8.sroa.5.0.copyload, 1000000 - %86 = zext nneg i32 %85 to i64 - %87 = add nsw i64 %84, %86 + %78 = add nuw nsw i32 %77, -719163 + %79 = add nsw i32 %78, %.sroa.05.0.i8.i + %80 = sub nsw i32 %79, %72 + %81 = add nsw i32 %80, %74 + %77 = add nsw i32 %81, %75 + %82 = sext i32 %77 to i64 + %83 = mul nsw i64 %82, 86400 + %80 = add nsw i64 %83, %40 + %85 = mul nsw i64 %80, 1000 + %86 = udiv i32 %.sroa.8.sroa.5.0.copyload, 1000000 + %87 = zext nneg i32 %86 to i64 + %83 = add nsw i64 %85, %87 br label %"_ZN12polars_arrow20temporal_conversions24utf8_to_timestamp_scalar28_$u7b$$u7b$closure$u7d$$u7d$17hb1d3382bc172affaE.exit" 88: ; preds = %39 @@ -6318,30 +6309,26 @@ _ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit11.i: br label %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit15.i _ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit15.i: ; preds = %89, %88 - %.sroa.05.0.i12.i = phi i32 [ %.neg.i14.i, %89 ], [ 0, %88 ] - %.sroa.0.0.i13.i = phi i32 [ %94, %89 ], [ %42, %88 ] + %.sroa.05.0.i12.i = phi i32 [ %.neg.i14.i, %90 ], [ 0, %89 ] + %.sroa.0.0.i13.i = phi i32 [ %94, %90 ], [ %42, %89 ] %95 = sdiv i32 %.sroa.0.0.i13.i, 100 %96 = mul nsw i32 %.sroa.0.0.i13.i, 1461 %97 = ashr i32 %96, 2 %98 = ashr i32 %95, 2 %99 = lshr i32 %.sroa.05.0.copyload, 4 %100 = and i32 %99, 511 - %.sroa.4.sroa.7.0.insert.ext16 = zext i24 %.sroa.8.sroa.0.0.copyload to i64 - %.sroa.4.sroa.7.0.insert.shift17 = shl nuw nsw i64 %.sroa.4.sroa.7.0.insert.ext16, 8 - %.sroa.4.sroa.0.0.insert.ext7 = zext i8 %.sroa.6.0.copyload to i64 - %.sroa.4.sroa.0.0.insert.insert9 = or disjoint i64 %.sroa.4.sroa.7.0.insert.shift17, %.sroa.4.sroa.0.0.insert.ext7 - %101 = add nuw nsw i32 %100, -719163 - %102 = add nsw i32 %101, %.sroa.05.0.i12.i - %103 = sub nsw i32 %102, %95 - %104 = add nsw i32 %103, %97 - %narrow.i = add nsw i32 %104, %98 - %105 = sext i32 %narrow.i to i64 - %106 = mul nsw i64 %105, 86400 - %107 = add nsw i64 %106, %.sroa.4.sroa.0.0.insert.insert9 - %108 = mul i64 %107, 1000000 - %109 = udiv i32 %.sroa.8.sroa.5.0.copyload, 1000 - %110 = zext nneg i32 %109 to i64 - %111 = add i64 %108, %110 + %102 = add nuw nsw i32 %101, -719163 + %103 = add nsw i32 %102, %.sroa.05.0.i12.i + %104 = sub nsw i32 %103, %96 + %105 = add nsw i32 %104, %97 + %101 = add nsw i32 %105, %99 + %106 = sext i32 %101 to i64 + %107 = mul nsw i64 %106, 86400 + %104 = add nsw i64 %107, %40 + %109 = mul i64 %104, 1000000 + %110 = udiv i32 %.sroa.8.sroa.5.0.copyload, 1000 + %111 = zext nneg i32 %110 to i64 + %107 = add i64 %109, %111 br label %"_ZN12polars_arrow20temporal_conversions24utf8_to_timestamp_scalar28_$u7b$$u7b$closure$u7d$$u7d$17hb1d3382bc172affaE.exit" 112: ; preds = %39 @@ -6357,38 +6344,34 @@ _ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit15.i: br label %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit.i.i _ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit.i.i: ; preds = %113, %112 - %.sroa.05.0.i.i.i = phi i32 [ %.neg.i.i.i, %113 ], [ 0, %112 ] - %.sroa.0.0.i.i.i = phi i32 [ %118, %113 ], [ %42, %112 ] + %.sroa.05.0.i.i.i = phi i32 [ %.neg.i.i.i, %114 ], [ 0, %113 ] + %.sroa.0.0.i.i.i = phi i32 [ %118, %114 ], [ %42, %113 ] %119 = sdiv i32 %.sroa.0.0.i.i.i, 100 %120 = mul nsw i32 %.sroa.0.0.i.i.i, 1461 %121 = ashr i32 %120, 2 %122 = ashr i32 %119, 2 %123 = lshr i32 %.sroa.05.0.copyload, 4 %124 = and i32 %123, 511 - %.sroa.4.sroa.7.0.insert.ext = zext i24 %.sroa.8.sroa.0.0.copyload to i64 - %.sroa.4.sroa.7.0.insert.shift = shl nuw nsw i64 %.sroa.4.sroa.7.0.insert.ext, 8 - %.sroa.4.sroa.0.0.insert.ext = zext i8 %.sroa.6.0.copyload to i64 - %.sroa.4.sroa.0.0.insert.insert = or disjoint i64 %.sroa.4.sroa.7.0.insert.shift, %.sroa.4.sroa.0.0.insert.ext - %125 = add nuw nsw i32 %124, -719163 - %126 = add nsw i32 %125, %.sroa.05.0.i.i.i - %127 = sub nsw i32 %126, %119 - %128 = add nsw i32 %127, %121 - %narrow.i.i = add nsw i32 %128, %122 - %129 = sext i32 %narrow.i.i to i64 - %130 = mul nsw i64 %129, 86400 - %131 = add nsw i64 %130, %.sroa.4.sroa.0.0.insert.insert - %.lobit.i.i = lshr i64 %131, 63 - %.sroa.03.0.i.i = add nsw i64 %.lobit.i.i, %131 - %132 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %.sroa.03.0.i.i, i64 1000000000) - %133 = extractvalue { i64, i1 } %132, 1 - br i1 %133, label %"_ZN6chrono8datetime18DateTime$LT$Tz$GT$19timestamp_nanos_opt17ha0398bd7f12cce58E.exit.thread.i", label %"_ZN6chrono8datetime18DateTime$LT$Tz$GT$19timestamp_nanos_opt17ha0398bd7f12cce58E.exit.i", !prof !1090 + %126 = add nuw nsw i32 %125, -719163 + %127 = add nsw i32 %126, %.sroa.05.0.i.i.i + %128 = sub nsw i32 %127, %120 + %129 = add nsw i32 %128, %122 + %125 = add nsw i32 %129, %123 + %130 = sext i32 %125 to i64 + %131 = mul nsw i64 %130, 86400 + %128 = add nsw i64 %131, %40 + %.lobit.i.i = lshr i64 %128, 63 + %.sroa.03.0.i.i = add nsw i64 %.lobit.i.i, %132 + %133 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %.sroa.03.0.i.i, i64 1000000000) + %134 = extractvalue { i64, i1 } %133, 1 + br i1 %134, label %"_ZN6chrono8datetime18DateTime$LT$Tz$GT$19timestamp_nanos_opt17ha0398bd7f12cce58E.exit.thread.i", label %"_ZN6chrono8datetime18DateTime$LT$Tz$GT$19timestamp_nanos_opt17ha0398bd7f12cce58E.exit.i", !prof !1090 "_ZN6chrono8datetime18DateTime$LT$Tz$GT$19timestamp_nanos_opt17ha0398bd7f12cce58E.exit.i": ; preds = %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit.i.i - %134 = icmp slt i64 %131, 0 + %134 = icmp slt i64 %132, 0 %135 = zext i32 %.sroa.8.sroa.5.0.copyload to i64 %136 = add nsw i64 %135, -1000000000 %.sroa.06.0.i.i = select i1 %134, i64 %136, i64 %135 - %137 = extractvalue { i64, i1 } %132, 0 + %137 = extractvalue { i64, i1 } %133, 0 %138 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %137, i64 %.sroa.06.0.i.i) %139 = extractvalue { i64, i1 } %138, 1 %140 = extractvalue { i64, i1 } %138, 0 @@ -6399,7 +6382,7 @@ _ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit.i.i: unreachable "_ZN12polars_arrow20temporal_conversions24utf8_to_timestamp_scalar28_$u7b$$u7b$closure$u7d$$u7d$17hb1d3382bc172affaE.exit": ; preds = %"_ZN6chrono8datetime18DateTime$LT$Tz$GT$19timestamp_nanos_opt17ha0398bd7f12cce58E.exit.i", %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit15.i, %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit11.i, %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit.i, %38, %4 - %.sroa.4.0 = phi i64 [ undef, %4 ], [ undef, %38 ], [ %63, %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit.i ], [ %87, %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit11.i ], [ %111, %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit15.i ], [ %140, %"_ZN6chrono8datetime18DateTime$LT$Tz$GT$19timestamp_nanos_opt17ha0398bd7f12cce58E.exit.i" ] + %.sroa.4.0 = phi i64 [ undef, %4 ], [ undef, %38 ], [ %64, %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit.i ], [ %88, %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit11.i ], [ %112, %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit15.i ], [ %140, %"_ZN6chrono8datetime18DateTime$LT$Tz$GT$19timestamp_nanos_opt17ha0398bd7f12cce58E.exit.i" ] %.sroa.0.0 = phi i64 [ 0, %4 ], [ 0, %38 ], [ 1, %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit.i ], [ 1, %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit11.i ], [ 1, %_ZN6chrono5naive4date9NaiveDate16num_days_from_ce17h22b004717051d314E.exit15.i ], [ 1, %"_ZN6chrono8datetime18DateTime$LT$Tz$GT$19timestamp_nanos_opt17ha0398bd7f12cce58E.exit.i" ] call void @llvm.lifetime.end.p0(ptr nonnull %9) %141 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 diff --git a/bench/pola-rs/optimized/3j6s1s8bkufqpw2g2hh1cvgea.ll b/bench/pola-rs/optimized/3j6s1s8bkufqpw2g2hh1cvgea.ll index 5c9b32bc170..0d03de05299 100644 --- a/bench/pola-rs/optimized/3j6s1s8bkufqpw2g2hh1cvgea.ll +++ b/bench/pola-rs/optimized/3j6s1s8bkufqpw2g2hh1cvgea.ll @@ -41206,9 +41206,9 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso br i1 %11, label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17hb8443095260fa41bE.exit, label %12 12: ; preds = %9 - %13 = load i32, ptr %10, align 4, !alias.scope !4307, !noalias !4310, !noundef !3 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 12 - %15 = load i32, ptr %14, align 4, !alias.scope !4307, !noalias !4310, !noundef !3 + %13 = load i64, ptr %10, align 4 + %14 = lshr i64 %13, 32 + %15 = trunc nuw i64 %14 to i32 %16 = getelementptr inbounds nuw i8, ptr %0, i64 16 %17 = getelementptr { i32, i32 }, ptr %0, i64 %1 %18 = getelementptr i8, ptr %17, i64 -8 @@ -41245,15 +41245,11 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso ._crit_edge.i: ; preds = %.lr.ph41.i, %.preheader.i %.lcssa40.i = phi ptr [ %.lcssa32.i, %.preheader.i ], [ %22, %.lr.ph41.i ] %.lcssa38.i = phi i64 [ %.lcssa30.i, %.preheader.i ], [ %31, %.lr.ph41.i ] - %34 = icmp ult i32 %15, %.val1.i20.i + %34 = icmp ugt i32 %.val1.i20.i, %15 %35 = getelementptr inbounds nuw { i32, i32 }, ptr %10, i64 %.lcssa38.i %36 = load i64, ptr %35, align 4, !alias.scope !4307, !noalias !4320 store i64 %36, ptr %.lcssa40.i, align 4, !alias.scope !4307, !noalias !4320 - %.sroa.4.0.insert.ext.i = zext i32 %15 to i64 - %.sroa.4.0.insert.shift.i = shl nuw i64 %.sroa.4.0.insert.ext.i, 32 - %.sroa.0.0.insert.ext.i = zext i32 %13 to i64 - %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.4.0.insert.shift.i, %.sroa.0.0.insert.ext.i - store i64 %.sroa.0.0.insert.insert.i, ptr %35, align 4, !alias.scope !4307, !noalias !4320 + store i64 %13, ptr %35, align 4, !alias.scope !4307, !noalias !4320 %37 = zext i1 %34 to i64 %38 = add i64 %.lcssa38.i, %37 br label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17hb8443095260fa41bE.exit @@ -42114,9 +42110,9 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso br i1 %11, label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17heca7054ce40fefd4E.exit, label %12 12: ; preds = %9 - %13 = load i32, ptr %10, align 4, !alias.scope !4588, !noalias !4591, !noundef !3 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 12 - %15 = load i32, ptr %14, align 4, !alias.scope !4588, !noalias !4591, !noundef !3 + %13 = load i64, ptr %10, align 4 + %14 = lshr i64 %13, 32 + %15 = trunc nuw i64 %14 to i32 %16 = getelementptr inbounds nuw i8, ptr %0, i64 16 %17 = getelementptr { i32, i32 }, ptr %0, i64 %1 %18 = getelementptr i8, ptr %17, i64 -8 @@ -42157,11 +42153,7 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso %35 = getelementptr inbounds nuw { i32, i32 }, ptr %10, i64 %.lcssa38.i %36 = load i64, ptr %35, align 4, !alias.scope !4588, !noalias !4601 store i64 %36, ptr %.lcssa40.i, align 4, !alias.scope !4588, !noalias !4601 - %.sroa.4.0.insert.ext.i = zext i32 %15 to i64 - %.sroa.4.0.insert.shift.i = shl nuw i64 %.sroa.4.0.insert.ext.i, 32 - %.sroa.0.0.insert.ext.i = zext i32 %13 to i64 - %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.4.0.insert.shift.i, %.sroa.0.0.insert.ext.i - store i64 %.sroa.0.0.insert.insert.i, ptr %35, align 4, !alias.scope !4588, !noalias !4601 + store i64 %13, ptr %35, align 4, !alias.scope !4588, !noalias !4601 %37 = zext i1 %34 to i64 %38 = add i64 %.lcssa38.i, %37 br label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17heca7054ce40fefd4E.exit @@ -42691,9 +42683,9 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso br i1 %11, label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17h176e1671b056aa63E.exit, label %12 12: ; preds = %9 - %13 = load i32, ptr %10, align 4, !alias.scope !4748, !noalias !4751, !noundef !3 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 12 - %15 = load i32, ptr %14, align 4, !alias.scope !4748, !noalias !4751, !noundef !3 + %13 = load i64, ptr %10, align 4 + %14 = lshr i64 %13, 32 + %15 = trunc nuw i64 %14 to i32 %16 = getelementptr inbounds nuw i8, ptr %0, i64 16 %17 = getelementptr { i32, i32 }, ptr %0, i64 %1 %18 = getelementptr i8, ptr %17, i64 -8 @@ -42730,15 +42722,11 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso ._crit_edge.i: ; preds = %.lr.ph41.i, %.preheader.i %.lcssa40.i = phi ptr [ %.lcssa32.i, %.preheader.i ], [ %22, %.lr.ph41.i ] %.lcssa38.i = phi i64 [ %.lcssa30.i, %.preheader.i ], [ %31, %.lr.ph41.i ] - %34 = icmp ult i32 %15, %.val1.i20.i + %34 = icmp ugt i32 %.val1.i20.i, %15 %35 = getelementptr inbounds nuw { i32, i32 }, ptr %10, i64 %.lcssa38.i %36 = load i64, ptr %35, align 4, !alias.scope !4748, !noalias !4761 store i64 %36, ptr %.lcssa40.i, align 4, !alias.scope !4748, !noalias !4761 - %.sroa.4.0.insert.ext.i = zext i32 %15 to i64 - %.sroa.4.0.insert.shift.i = shl nuw i64 %.sroa.4.0.insert.ext.i, 32 - %.sroa.0.0.insert.ext.i = zext i32 %13 to i64 - %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.4.0.insert.shift.i, %.sroa.0.0.insert.ext.i - store i64 %.sroa.0.0.insert.insert.i, ptr %35, align 4, !alias.scope !4748, !noalias !4761 + store i64 %13, ptr %35, align 4, !alias.scope !4748, !noalias !4761 %37 = zext i1 %34 to i64 %38 = add i64 %.lcssa38.i, %37 br label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17h176e1671b056aa63E.exit @@ -44648,9 +44636,9 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso br i1 %11, label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17hf6ac3a48ac3526c4E.exit, label %12 12: ; preds = %9 - %13 = load i32, ptr %10, align 4, !alias.scope !5439, !noalias !5442, !noundef !3 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 12 - %15 = load i32, ptr %14, align 4, !alias.scope !5439, !noalias !5442, !noundef !3 + %13 = load i64, ptr %10, align 4 + %14 = lshr i64 %13, 32 + %15 = trunc nuw i64 %14 to i32 %16 = getelementptr inbounds nuw i8, ptr %0, i64 16 %17 = getelementptr { i32, i32 }, ptr %0, i64 %1 %18 = getelementptr i8, ptr %17, i64 -8 @@ -44687,15 +44675,11 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso ._crit_edge.i: ; preds = %.lr.ph41.i, %.preheader.i %.lcssa40.i = phi ptr [ %.lcssa32.i, %.preheader.i ], [ %22, %.lr.ph41.i ] %.lcssa38.i = phi i64 [ %.lcssa30.i, %.preheader.i ], [ %31, %.lr.ph41.i ] - %34 = icmp slt i32 %15, %.val1.i20.i + %34 = icmp sgt i32 %.val1.i20.i, %15 %35 = getelementptr inbounds nuw { i32, i32 }, ptr %10, i64 %.lcssa38.i %36 = load i64, ptr %35, align 4, !alias.scope !5439, !noalias !5452 store i64 %36, ptr %.lcssa40.i, align 4, !alias.scope !5439, !noalias !5452 - %.sroa.4.0.insert.ext.i = zext i32 %15 to i64 - %.sroa.4.0.insert.shift.i = shl nuw i64 %.sroa.4.0.insert.ext.i, 32 - %.sroa.0.0.insert.ext.i = zext i32 %13 to i64 - %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.4.0.insert.shift.i, %.sroa.0.0.insert.ext.i - store i64 %.sroa.0.0.insert.insert.i, ptr %35, align 4, !alias.scope !5439, !noalias !5452 + store i64 %13, ptr %35, align 4, !alias.scope !5439, !noalias !5452 %37 = zext i1 %34 to i64 %38 = add i64 %.lcssa38.i, %37 br label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17hf6ac3a48ac3526c4E.exit @@ -45755,9 +45739,9 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso br i1 %11, label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17he9e6228bade6ab3cE.exit, label %12 12: ; preds = %9 - %13 = load i32, ptr %10, align 4, !alias.scope !5810, !noalias !5813, !noundef !3 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 12 - %15 = load i32, ptr %14, align 4, !alias.scope !5810, !noalias !5813, !noundef !3 + %13 = load i64, ptr %10, align 4 + %14 = lshr i64 %13, 32 + %15 = trunc nuw i64 %14 to i32 %16 = getelementptr inbounds nuw i8, ptr %0, i64 16 %17 = getelementptr { i32, i32 }, ptr %0, i64 %1 %18 = getelementptr i8, ptr %17, i64 -8 @@ -45798,11 +45782,7 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso %35 = getelementptr inbounds nuw { i32, i32 }, ptr %10, i64 %.lcssa38.i %36 = load i64, ptr %35, align 4, !alias.scope !5810, !noalias !5823 store i64 %36, ptr %.lcssa40.i, align 4, !alias.scope !5810, !noalias !5823 - %.sroa.4.0.insert.ext.i = zext i32 %15 to i64 - %.sroa.4.0.insert.shift.i = shl nuw i64 %.sroa.4.0.insert.ext.i, 32 - %.sroa.0.0.insert.ext.i = zext i32 %13 to i64 - %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.4.0.insert.shift.i, %.sroa.0.0.insert.ext.i - store i64 %.sroa.0.0.insert.insert.i, ptr %35, align 4, !alias.scope !5810, !noalias !5823 + store i64 %13, ptr %35, align 4, !alias.scope !5810, !noalias !5823 %37 = zext i1 %34 to i64 %38 = add i64 %.lcssa38.i, %37 br label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17he9e6228bade6ab3cE.exit @@ -45984,9 +45964,9 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso br i1 %11, label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17h16ca55c7535e28aeE.exit, label %12 12: ; preds = %9 - %13 = load i32, ptr %10, align 4, !alias.scope !5879, !noalias !5882, !noundef !3 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 12 - %15 = load i32, ptr %14, align 4, !alias.scope !5879, !noalias !5882, !noundef !3 + %13 = load i64, ptr %10, align 4 + %14 = lshr i64 %13, 32 + %15 = trunc nuw i64 %14 to i32 %16 = getelementptr inbounds nuw i8, ptr %0, i64 16 %17 = getelementptr { i32, i32 }, ptr %0, i64 %1 %18 = getelementptr i8, ptr %17, i64 -8 @@ -46027,11 +46007,7 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso %35 = getelementptr inbounds nuw { i32, i32 }, ptr %10, i64 %.lcssa38.i %36 = load i64, ptr %35, align 4, !alias.scope !5879, !noalias !5892 store i64 %36, ptr %.lcssa40.i, align 4, !alias.scope !5879, !noalias !5892 - %.sroa.4.0.insert.ext.i = zext i32 %15 to i64 - %.sroa.4.0.insert.shift.i = shl nuw i64 %.sroa.4.0.insert.ext.i, 32 - %.sroa.0.0.insert.ext.i = zext i32 %13 to i64 - %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.4.0.insert.shift.i, %.sroa.0.0.insert.ext.i - store i64 %.sroa.0.0.insert.insert.i, ptr %35, align 4, !alias.scope !5879, !noalias !5892 + store i64 %13, ptr %35, align 4, !alias.scope !5879, !noalias !5892 %37 = zext i1 %34 to i64 %38 = add i64 %.lcssa38.i, %37 br label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17h16ca55c7535e28aeE.exit @@ -46213,9 +46189,9 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso br i1 %11, label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17h6b7b3cd203bb597dE.exit, label %12 12: ; preds = %9 - %13 = load i32, ptr %10, align 4, !alias.scope !5948, !noalias !5951, !noundef !3 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 12 - %15 = load i32, ptr %14, align 4, !alias.scope !5948, !noalias !5951, !noundef !3 + %13 = load i64, ptr %10, align 4 + %14 = lshr i64 %13, 32 + %15 = trunc nuw i64 %14 to i32 %16 = getelementptr inbounds nuw i8, ptr %0, i64 16 %17 = getelementptr { i32, i32 }, ptr %0, i64 %1 %18 = getelementptr i8, ptr %17, i64 -8 @@ -46252,15 +46228,11 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso ._crit_edge.i: ; preds = %.lr.ph41.i, %.preheader.i %.lcssa40.i = phi ptr [ %.lcssa32.i, %.preheader.i ], [ %22, %.lr.ph41.i ] %.lcssa38.i = phi i64 [ %.lcssa30.i, %.preheader.i ], [ %31, %.lr.ph41.i ] - %34 = icmp slt i32 %15, %.val1.i20.i + %34 = icmp sgt i32 %.val1.i20.i, %15 %35 = getelementptr inbounds nuw { i32, i32 }, ptr %10, i64 %.lcssa38.i %36 = load i64, ptr %35, align 4, !alias.scope !5948, !noalias !5961 store i64 %36, ptr %.lcssa40.i, align 4, !alias.scope !5948, !noalias !5961 - %.sroa.4.0.insert.ext.i = zext i32 %15 to i64 - %.sroa.4.0.insert.shift.i = shl nuw i64 %.sroa.4.0.insert.ext.i, 32 - %.sroa.0.0.insert.ext.i = zext i32 %13 to i64 - %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.4.0.insert.shift.i, %.sroa.0.0.insert.ext.i - store i64 %.sroa.0.0.insert.insert.i, ptr %35, align 4, !alias.scope !5948, !noalias !5961 + store i64 %13, ptr %35, align 4, !alias.scope !5948, !noalias !5961 %37 = zext i1 %34 to i64 %38 = add i64 %.lcssa38.i, %37 br label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17h6b7b3cd203bb597dE.exit @@ -47139,9 +47111,9 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso br i1 %11, label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17hec7e33cfbf7a54c2E.exit, label %12 12: ; preds = %9 - %13 = load i32, ptr %10, align 4, !alias.scope !6219, !noalias !6222, !noundef !3 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 12 - %15 = load i32, ptr %14, align 4, !alias.scope !6219, !noalias !6222, !noundef !3 + %13 = load i64, ptr %10, align 4 + %14 = lshr i64 %13, 32 + %15 = trunc nuw i64 %14 to i32 %16 = getelementptr inbounds nuw i8, ptr %0, i64 16 %17 = getelementptr { i32, i32 }, ptr %0, i64 %1 %18 = getelementptr i8, ptr %17, i64 -8 @@ -47182,11 +47154,7 @@ define hidden noundef range(i64 0, -1) i64 @_ZN4core5slice4sort8unstable9quickso %35 = getelementptr inbounds nuw { i32, i32 }, ptr %10, i64 %.lcssa38.i %36 = load i64, ptr %35, align 4, !alias.scope !6219, !noalias !6232 store i64 %36, ptr %.lcssa40.i, align 4, !alias.scope !6219, !noalias !6232 - %.sroa.4.0.insert.ext.i = zext i32 %15 to i64 - %.sroa.4.0.insert.shift.i = shl nuw i64 %.sroa.4.0.insert.ext.i, 32 - %.sroa.0.0.insert.ext.i = zext i32 %13 to i64 - %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.4.0.insert.shift.i, %.sroa.0.0.insert.ext.i - store i64 %.sroa.0.0.insert.insert.i, ptr %35, align 4, !alias.scope !6219, !noalias !6232 + store i64 %13, ptr %35, align 4, !alias.scope !6219, !noalias !6232 %37 = zext i1 %34 to i64 %38 = add i64 %.lcssa38.i, %37 br label %_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic17hec7e33cfbf7a54c2E.exit diff --git a/bench/rayon-rs/optimized/1j5m2t9gtbur4l2z.ll b/bench/rayon-rs/optimized/1j5m2t9gtbur4l2z.ll index 0c45ddd71f1..81d69670b27 100644 --- a/bench/rayon-rs/optimized/1j5m2t9gtbur4l2z.ll +++ b/bench/rayon-rs/optimized/1j5m2t9gtbur4l2z.ll @@ -93,36 +93,39 @@ _ZN4core4iter6traits10exact_size17ExactSizeIterator3len17h17811fb508d3f4d3E.exit ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable define { i64, i64 } @"_ZN5rayon15range_inclusive78_$LT$impl$u20$rayon..range_inclusive..private..RangeInteger$u20$for$u20$u8$GT$7opt_len17hf1808324f612c7dbE"(ptr noalias noundef readonly align 1 captures(none) dereferenceable(3) %0) unnamed_addr #0 personality ptr @rust_eh_personality { %2 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %3 = load i8, ptr %2, align 1, !alias.scope !31, !noundef !10 - %4 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %5 = load i8, ptr %4, align 1, !alias.scope !31, !noundef !10 - %.not.i = icmp ugt i8 %3, %5 - %6 = load i8, ptr %0, align 1, !range !11, !alias.scope !31 - %7 = trunc nuw i8 %6 to i1 - %.not = select i1 %.not.i, i1 true, i1 %7 - br i1 %.not, label %15, label %8 - -8: ; preds = %1 - %9 = tail call { i8, i1 } @llvm.uadd.with.overflow.i8(i8 %5, i8 1) - %10 = extractvalue { i8, i1 } %9, 1 - br i1 %10, label %13, label %11 - -11: ; preds = %8 + %3 = load i16, ptr %2, align 1, !alias.scope !31 + %4 = trunc i16 %3 to i7 + %5 = lshr i16 %3, 8 + %6 = trunc nuw i16 %5 to i8 + %.not.i = icmp ugt i8 %4, %6 + %7 = load i8, ptr %0, align 1, !range !11, !alias.scope !31 + %8 = trunc nuw i8 %7 to i1 + %.not = select i1 %.not.i, i1 true, i1 %8 + br i1 %.not, label %16, label %9 + +9:; preds = %1 + %10 = tail call { i8, i1 } @llvm.uadd.with.overflow.i8(i8 %6, i8 1) + %11 = extractvalue { i8, i1 } %10, 1 + br i1 %11, label %14, label %12 + +12:; preds = %9 %12 = extractvalue { i8, i1 } %9, 0 - %narrow.i.i.i = tail call i8 @llvm.usub.sat.i8(i8 %12, i8 %3) + %narrow.i.i.i = tail call i8 @llvm.usub.sat.i8(i8 %13, i8 %4) %.sink4.i.i.i = zext i8 %narrow.i.i.i to i64 br label %15 13: ; preds = %8 - %narrow.i.i.i.i.i25 = sub nuw nsw i8 %5, %3 - %.sink4.i.i.i.i.i = zext i8 %narrow.i.i.i.i.i25 to i64 - %14 = add nuw nsw i64 %.sink4.i.i.i.i.i, 1 - br label %15 - -15: ; preds = %11, %13, %1 - %.sroa.4.0 = phi i64 [ 0, %1 ], [ %.sink4.i.i.i, %11 ], [ %14, %13 ] - %16 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %.sroa.4.0, 1 - ret { i64, i64 } %16 + %.sroa.021.0.extract.trunc = zext i16 %3 to i64 + %.sink4.i.i.i.i.i = zext nneg i16 %5 to i64 + %narrow.i.i.i.i.i23 = sub nsw i64 %.sink4.i.i.i.i.i, %.sroa.021.0.extract.trunc + %.sink4.i.i.i.i.i = and i64 %narrow.i.i.i.i.i23, 255 + %15 = add nuw nsw i64 %.sink4.i.i.i.i.i, 1 + br label %16 + +16:; preds = %12, %13, %1 + %.sroa.4.0 = phi i64 [ 0, %1 ], [ %.sink4.i.i.i, %12 ], [ %15, %14 ] + %17 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %.sroa.4.0, 1 + ret { i64, i64 } %17 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable @@ -164,35 +167,38 @@ _ZN4core4iter6traits10exact_size17ExactSizeIterator3len17ha688b3e7a2bb5a4bE.exit ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable define { i64, i64 } @"_ZN5rayon15range_inclusive79_$LT$impl$u20$rayon..range_inclusive..private..RangeInteger$u20$for$u20$u16$GT$7opt_len17hbe3fab2b61ad69e5E"(ptr noalias noundef readonly align 2 captures(none) dereferenceable(6) %0) unnamed_addr #0 personality ptr @rust_eh_personality { - %2 = load i16, ptr %0, align 2, !alias.scope !50, !noundef !10 - %3 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %4 = load i16, ptr %3, align 2, !alias.scope !50, !noundef !10 - %.not.i = icmp ugt i16 %2, %4 - %5 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %6 = load i8, ptr %5, align 2, !range !11, !alias.scope !50 - %.not26 = icmp ne i8 %6, 0 - %.not = select i1 %.not.i, i1 true, i1 %.not26 - br i1 %.not, label %14, label %7 + %2 = load i32, ptr %0, align 2, !alias.scope !50 + %3 = trunc i32 %2 to i16 + %4 = lshr i32 %2, 16 + %5 = trunc nuw i32 %4 to i16 + %.not.i = icmp ugt i16 %3, %5 + %6 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %7 = load i8, ptr %6, align 2, !range !11, !alias.scope !50 + %.not24 = icmp ne i8 %7, 0 + %.not = select i1 %.not.i, i1 true, i1 %.not24 + br i1 %.not, label %15, label %8 7: ; preds = %1 - %8 = tail call { i16, i1 } @llvm.uadd.with.overflow.i16(i16 %4, i16 1) + %8 = tail call { i16, i1 } @llvm.uadd.with.overflow.i16(i16 %5, i16 1) %9 = extractvalue { i16, i1 } %8, 1 br i1 %9, label %12, label %10 10: ; preds = %7 %11 = extractvalue { i16, i1 } %8, 0 - %narrow.i.i.i = tail call i16 @llvm.usub.sat.i16(i16 %11, i16 %2) + %narrow.i.i.i = tail call i16 @llvm.usub.sat.i16(i16 %11, i16 %3) %.sink4.i.i.i = zext i16 %narrow.i.i.i to i64 br label %14 12: ; preds = %7 - %narrow.i.i.i.i.i25 = sub nuw nsw i16 %4, %2 - %.sink4.i.i.i.i.i = zext i16 %narrow.i.i.i.i.i25 to i64 - %13 = add nuw nsw i64 %.sink4.i.i.i.i.i, 1 - br label %14 + %.sroa.021.0.extract.trunc = zext i32 %2 to i64 + %.sink4.i.i.i.i.i = zext nneg i32 %4 to i64 + %narrow.i.i.i.i.i23 = sub nsw i64 %.sink4.i.i.i.i.i, %.sroa.021.0.extract.trunc + %.sink4.i.i.i.i.i = and i64 %narrow.i.i.i.i.i23, 65535 + %14 = add nuw nsw i64 %.sink4.i.i.i.i.i, 1 + br label %15 14: ; preds = %10, %12, %1 - %.sroa.4.0 = phi i64 [ 0, %1 ], [ %.sink4.i.i.i, %10 ], [ %13, %12 ] + %.sroa.4.0 = phi i64 [ 0, %1 ], [ %.sink4.i.i.i, %11 ], [ %13, %12 ] %15 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %.sroa.4.0, 1 ret { i64, i64 } %15 } @@ -271,42 +277,43 @@ _ZN4core4iter6traits10exact_size17ExactSizeIterator3len17h4be8c75358d8f93cE.exit ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable define { i64, i64 } @"_ZN5rayon15range_inclusive78_$LT$impl$u20$rayon..range_inclusive..private..RangeInteger$u20$for$u20$i8$GT$7opt_len17h0dbcbe400fbdccb6E"(ptr noalias noundef readonly align 1 captures(none) dereferenceable(3) %0) unnamed_addr #0 personality ptr @rust_eh_personality { %2 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %3 = load i8, ptr %2, align 1, !alias.scope !70, !noundef !10 - %4 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %5 = load i8, ptr %4, align 1, !alias.scope !70, !noundef !10 - %.not.i = icmp sgt i8 %3, %5 - %6 = load i8, ptr %0, align 1, !range !11, !alias.scope !70 - %7 = trunc nuw i8 %6 to i1 - %.not = select i1 %.not.i, i1 true, i1 %7 - br i1 %.not, label %23, label %8 - -8: ; preds = %1 - %9 = tail call { i8, i1 } @llvm.sadd.with.overflow.i8(i8 %5, i8 1) - %10 = extractvalue { i8, i1 } %9, 1 - br i1 %10, label %17, label %11 - -11: ; preds = %8 - %12 = extractvalue { i8, i1 } %9, 0 - %13 = icmp slt i8 %3, %12 - %14 = sext i8 %12 to i64 - %15 = sext i8 %3 to i64 - %16 = sub nsw i64 %14, %15 - %.sink4.i.i.i = select i1 %13, i64 %16, i64 0 - br label %23 - -17: ; preds = %8 - %18 = icmp slt i8 %3, %5 - %19 = zext nneg i8 %5 to i64 - %20 = sext i8 %3 to i64 - %reass.sub = sub nsw i64 %19, %20 - %21 = add nuw nsw i64 %reass.sub, 1 - %22 = select i1 %18, i64 %21, i64 1 - br label %23 - -23: ; preds = %11, %17, %1 - %.sroa.4.0 = phi i64 [ 0, %1 ], [ %.sink4.i.i.i, %11 ], [ %22, %17 ] - %24 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %.sroa.4.0, 1 - ret { i64, i64 } %24 + %3 = load i16, ptr %2, align 1, !alias.scope !70 + %4 = trunc i16 %3 to i7 + %5 = lshr i16 %3, 7 + %6 = trunc nuw i16 %5 to i8 + %.not.i = icmp sgt i8 %4, %6 + %7 = load i8, ptr %0, align 1, !range !11, !alias.scope !70 + %8 = trunc nuw i8 %7 to i1 + %.not = select i1 %.not.i, i1 true, i1 %8 + br i1 %.not, label %24, label %9 + +9:; preds = %1 + %10 = tail call { i8, i1 } @llvm.sadd.with.overflow.i8(i8 %6, i8 1) + %11 = extractvalue { i8, i1 } %10, 1 + br i1 %11, label %18, label %12 + +12:; preds = %9 + %13 = extractvalue { i8, i1 } %10, 0 + %14 = icmp sgt i8 %12, %4 + %15 = sext i8 %13 to i64 + %16 = sext i8 %4 to i64 + %17 = sub nsw i64 %15, %16 + %.sink4.i.i.i = select i1 %13, i64 %17, i64 0 + br label %24 + +18:; preds = %9 + %19 = icmp slt i8 %4, %6 + %20 = zext nneg i16 %5 to i64 + %21 = sext i8 %4 to i64 + %reass.sub = sub nsw i64 %20, %21 + %22 = add nsw i64 %reass.sub, 1 + %23 = select i1 %19, i64 %22, i64 1 + br label %24 + +24: ; preds = %11, %17, %1 + %.sroa.4.0 = phi i64 [ 0, %1 ], [ %.sink4.i.i.i, %12 ], [ %23, %18 ] + %25 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %.sroa.4.0, 1 + ret { i64, i64 } %25 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable @@ -382,41 +389,42 @@ _ZN4core4iter6traits10exact_size17ExactSizeIterator3len17h01ec6519ebae4e75E.exit ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable define { i64, i64 } @"_ZN5rayon15range_inclusive79_$LT$impl$u20$rayon..range_inclusive..private..RangeInteger$u20$for$u20$i16$GT$7opt_len17h5a6f0fdae9846c38E"(ptr noalias noundef readonly align 2 captures(none) dereferenceable(6) %0) unnamed_addr #0 personality ptr @rust_eh_personality { - %2 = load i16, ptr %0, align 2, !alias.scope !90, !noundef !10 - %3 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %4 = load i16, ptr %3, align 2, !alias.scope !90, !noundef !10 - %.not.i = icmp sgt i16 %2, %4 - %5 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %6 = load i8, ptr %5, align 2, !range !11, !alias.scope !90 - %.not25 = icmp ne i8 %6, 0 - %.not = select i1 %.not.i, i1 true, i1 %.not25 - br i1 %.not, label %22, label %7 + %2 = load i32, ptr %0, align 2, !alias.scope !90 + %3 = trunc i32 %2 to i16 + %4 = lshr i32 %2, 16 + %5 = trunc nuw i32 %4 to i16 + %.not.i = icmp sgt i16 %3, %5 + %6 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %7 = load i8, ptr %6, align 2, !range !11, !alias.scope !90 + %.not23 = icmp ne i8 %7, 0 + %.not = select i1 %.not.i, i1 true, i1 %.not23 + br i1 %.not, label %23, label %8 7: ; preds = %1 - %8 = tail call { i16, i1 } @llvm.sadd.with.overflow.i16(i16 %4, i16 1) + %8 = tail call { i16, i1 } @llvm.sadd.with.overflow.i16(i16 %5, i16 1) %9 = extractvalue { i16, i1 } %8, 1 br i1 %9, label %16, label %10 10: ; preds = %7 %11 = extractvalue { i16, i1 } %8, 0 - %12 = icmp slt i16 %2, %11 + %12 = icmp sgt i16 %12, %3 %13 = sext i16 %11 to i64 - %14 = sext i16 %2 to i64 + %14 = sext i16 %3 to i64 %15 = sub nsw i64 %13, %14 %.sink4.i.i.i = select i1 %12, i64 %15, i64 0 br label %22 16: ; preds = %7 - %17 = icmp slt i16 %2, %4 - %18 = zext nneg i16 %4 to i64 - %19 = sext i16 %2 to i64 + %17 = icmp slt i16 %3, %5 + %18 = zext nneg i32 %4 to i64 + %19 = sext i16 %3 to i64 %reass.sub = sub nsw i64 %18, %19 - %20 = add nuw nsw i64 %reass.sub, 1 + %20 = add nsw i64 %reass.sub, 1 %21 = select i1 %17, i64 %20, i64 1 br label %22 22: ; preds = %10, %16, %1 - %.sroa.4.0 = phi i64 [ 0, %1 ], [ %.sink4.i.i.i, %10 ], [ %21, %16 ] + %.sroa.4.0 = phi i64 [ 0, %1 ], [ %.sink4.i.i.i, %11 ], [ %21, %17 ] %23 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %.sroa.4.0, 1 ret { i64, i64 } %23 } diff --git a/bench/re2/optimized/regexp.ll b/bench/re2/optimized/regexp.ll index 224842c27cd..695baea80dd 100644 --- a/bench/re2/optimized/regexp.ll +++ b/bench/re2/optimized/regexp.ll @@ -3763,9 +3763,10 @@ for.body.lr.ph: ; preds = %invoke.cont for.body: ; preds = %for.body.lr.ph, %_ZNSt3setIN3re29RuneRangeENS0_13RuneRangeLessESaIS1_EE6insertEOS1_.exit %it.sroa.0.012 = phi ptr [ %0, %for.body.lr.ph ], [ %call.i, %_ZNSt3setIN3re29RuneRangeENS0_13RuneRangeLessESaIS1_EE6insertEOS1_.exit ] %_M_storage.i.i = getelementptr inbounds nuw i8, ptr %it.sroa.0.012, i64 32 - %1 = load i32, ptr %_M_storage.i.i, align 4 - %hi = getelementptr inbounds nuw i8, ptr %it.sroa.0.012, i64 36 - %2 = load i32, ptr %hi, align 4 + %1 = load i64, ptr %_M_storage.i.i, align 4 + %2 = trunc i64 %1 to i32 + %3 = lshr i64 %1, 32 + %4 = trunc nuw i64 %3 to i32 %__x.020.i.i.i = load ptr, ptr %_M_parent.i.i.i.i.i, align 8 %cmp.not21.i.i.i = icmp eq ptr %__x.020.i.i.i, null br i1 %cmp.not21.i.i.i, label %if.then.i.i.i, label %while.body.i.i.i @@ -3774,7 +3775,7 @@ while.body.i.i.i: ; preds = %for.body, %while.bo %__x.022.i.i.i = phi ptr [ %__x.0.i.i.i, %while.body.i.i.i ], [ %__x.020.i.i.i, %for.body ] %_M_storage.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__x.022.i.i.i, i64 32 %3 = load i32, ptr %_M_storage.i.i.i.i.i, align 4 - %cmp.i.i.i.i = icmp slt i32 %2, %3 + %cmp.i.i.i.i = icmp sgt i32 %5, %4 %cond.in.v.i.i.i = select i1 %cmp.i.i.i.i, i64 16, i64 24 %cond.in.i.i.i = getelementptr inbounds nuw i8, ptr %__x.022.i.i.i, i64 %cond.in.v.i.i.i %__x.0.i.i.i = load ptr, ptr %cond.in.i.i.i, align 8 @@ -3799,7 +3800,7 @@ if.end12.i.i.i: ; preds = %if.else.i.i.i, %whi %__j.sroa.0.0.i.i.i = phi ptr [ %call.i.i.i.i, %if.else.i.i.i ], [ %__x.022.i.i.i, %while.end.i.i.i ] %hi.i5.i.i.i = getelementptr inbounds nuw i8, ptr %__j.sroa.0.0.i.i.i, i64 36 %5 = load i32, ptr %hi.i5.i.i.i, align 4 - %cmp.i6.i.i.i = icmp slt i32 %5, %1 + %cmp.i6.i.i.i = icmp slt i32 %5, %2 br i1 %cmp.i6.i.i.i, label %if.then.i.i, label %_ZNSt3setIN3re29RuneRangeENS0_13RuneRangeLessESaIS1_EE6insertEOS1_.exit if.then.i.i: ; preds = %if.end12.i.i.i, %if.then.i.i.i @@ -3810,21 +3811,17 @@ if.then.i.i: ; preds = %if.end12.i.i.i, %if lor.rhs.i.i.i: ; preds = %if.then.i.i %_M_storage.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %retval.sroa.4.0.i.ph.i.i, i64 32 %6 = load i32, ptr %_M_storage.i.i.i.i.i.i, align 4 - %cmp.i.i7.i.i = icmp slt i32 %2, %6 + %cmp.i.i7.i.i = icmp sgt i32 %8, %4 br label %_ZNSt8_Rb_treeIN3re29RuneRangeES1_St9_IdentityIS1_ENS0_13RuneRangeLessESaIS1_EE10_M_insert_IS1_NS6_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSC_OT_RT0_.exit.i.i _ZNSt8_Rb_treeIN3re29RuneRangeES1_St9_IdentityIS1_ENS0_13RuneRangeLessESaIS1_EE10_M_insert_IS1_NS6_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSC_OT_RT0_.exit.i.i: ; preds = %lor.rhs.i.i.i, %if.then.i.i %7 = phi i1 [ true, %if.then.i.i ], [ %cmp.i.i7.i.i, %lor.rhs.i.i.i ] %call5.i.i.i.i.i.i.i.i = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #30 %_M_storage.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i.i.i.i.i.i, i64 32 - %ref.tmp6.sroa.3.0.insert.ext = zext i32 %2 to i64 - %ref.tmp6.sroa.3.0.insert.shift = shl nuw i64 %ref.tmp6.sroa.3.0.insert.ext, 32 - %ref.tmp6.sroa.0.0.insert.ext = zext i32 %1 to i64 - %ref.tmp6.sroa.0.0.insert.insert = or disjoint i64 %ref.tmp6.sroa.3.0.insert.shift, %ref.tmp6.sroa.0.0.insert.ext - store i64 %ref.tmp6.sroa.0.0.insert.insert, ptr %_M_storage.i.i.i.i.i.i.i, align 4 - tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %7, ptr noundef nonnull %call5.i.i.i.i.i.i.i.i, ptr noundef nonnull %retval.sroa.4.0.i.ph.i.i, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i.i) #26 - %8 = load i64, ptr %_M_node_count.i.i.i, align 8 - %inc.i.i.i = add i64 %8, 1 + store i64 %1, ptr %_M_storage.i.i.i.i.i.i.i, align 4 + tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %9, ptr noundef nonnull %call5.i.i.i.i.i.i.i.i, ptr noundef nonnull %retval.sroa.4.0.i.ph.i.i, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i.i) #26 + %10 = load i64, ptr %_M_node_count.i.i.i, align 8 + %inc.i.i.i = add i64 %10, 1 store i64 %inc.i.i.i, ptr %_M_node_count.i.i.i, align 8 br label %_ZNSt3setIN3re29RuneRangeENS0_13RuneRangeLessESaIS1_EE6insertEOS1_.exit diff --git a/bench/regex-rs/optimized/1x04d8372kemp7hd.ll b/bench/regex-rs/optimized/1x04d8372kemp7hd.ll index aef167e9211..c80158585d0 100644 --- a/bench/regex-rs/optimized/1x04d8372kemp7hd.ll +++ b/bench/regex-rs/optimized/1x04d8372kemp7hd.ll @@ -12623,16 +12623,12 @@ define noundef zeroext i1 @"_ZN80_$LT$regex_automata..util..alphabet..ByteClasse %.sroa.071.1.insert.insert99 = mul nuw nsw i64 %.sroa.071.0.insert.ext85, 4294967297 %.sroa.071.5.insert.insert125 = add nuw nsw i64 %.sroa.071.1.insert.insert99, 72057594054705152 %.sroa.458.0.extract.shift.i = shl nuw nsw i32 %..i2.i.i.i, 16 - %.sroa.458.0.extract.trunc.i = trunc nuw nsw i32 %.sroa.458.0.extract.shift.i to i24 %84 = icmp eq i8 %82, 2 br label %85 85: ; preds = %132, %81 %.sroa.071.1 = phi i64 [ 2, %81 ], [ %.sroa.071.7, %132 ] %.sroa.26.0 = phi i64 [ 0, %81 ], [ %.sroa.26.7, %132 ] - %.sroa.071.0.extract.trunc = trunc i64 %.sroa.071.1 to i8 - %.sroa.071.1.extract.shift = lshr i64 %.sroa.071.1, 8 - %.sroa.071.1.extract.trunc = trunc i64 %.sroa.071.1.extract.shift to i24 br i1 %trunc.i.i.i.i, label %.split.us.i.us.preheader.i, label %.split.i.preheader.i .split.us.i.us.preheader.i: ; preds = %85 @@ -12641,23 +12637,22 @@ define noundef zeroext i1 @"_ZN80_$LT$regex_automata..util..alphabet..ByteClasse br i1 %brmerge140, label %.split87.us.i.loopexit, label %.lr.ph.split.us .lr.ph.split.us: ; preds = %.split.us.i.us.preheader.i - %87 = icmp eq i8 %.sroa.071.0.extract.trunc, 2 - br i1 %87, label %.split87.us.i, label %.split89.us.i.loopexit - -.split.i.preheader.i: ; preds = %85, %103 - %.sroa.071.2 = phi i64 [ %.sroa.071.5.insert.insert, %103 ], [ %.sroa.071.1, %85 ] - %.sroa.26.1 = phi i64 [ %.sroa.26.4179, %103 ], [ %.sroa.26.0, %85 ] - %.sroa.458.0.extract.trunc85.i = phi i24 [ %.sroa.458.0.extract.trunc84.i, %103 ], [ %.sroa.071.1.extract.trunc, %85 ] - %88 = phi i8 [ %104, %103 ], [ %.sroa.071.0.extract.trunc, %85 ] + %87 = and i64 %.sroa.071.1, 255 + %88 = icmp eq i64 %87, 2 + br i1 %88, label %.split84.us.i, label %.split86.us.i + +.split.i.preheader.i:; preds = %85, %106 + %.sroa.26.1 = phi i64 [ %.sroa.071.5.insert.insert, %106 ], [ %.sroa.071.1, %85 ] + %.sroa.458.0.extract.trunc85.i = phi i64 [ %.sroa.24.4161, %106 ], [ %.sroa.24.0, %85 ] br label %.split.i.i .split.i.i: ; preds = %91, %.split.i.preheader.i - %.sroa.26.2 = phi i64 [ %.sroa.26.1, %.split.i.preheader.i ], [ %92, %91 ] + %.sroa.26.2 = phi i64 [ %.sroa.24.1, %.split.i.preheader.i ], [ %92, %91 ] %89 = icmp ult i64 %.sroa.26.2, 256 br i1 %89, label %91, label %.split21.us.i.loopexit.i .split21.us.i.loopexit.i: ; preds = %.split.i.i - %90 = icmp ugt i64 %.sroa.26.1, 256 + %90 = icmp ugt i64 %.sroa.24.1, 256 %brmerge = or i1 %90, %84 br i1 %brmerge, label %.split87.us.i, label %95 @@ -12671,7 +12666,6 @@ define noundef zeroext i1 @"_ZN80_$LT$regex_automata..util..alphabet..ByteClasse "_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit.i.thread": ; preds = %91 %.sroa.4.0.insert.ext.i.i.i63 = trunc nuw nsw i64 %.sroa.26.2 to i32 %.sroa.4.0.insert.shift.i.i.i64 = shl nuw nsw i32 %.sroa.4.0.insert.ext.i.i.i63, 8 - %.sroa.458.0.extract.trunc.i177 = trunc nuw i64 %.sroa.26.2 to i24 br label %95 .split87.us.i.loopexit: ; preds = %.split.us.i.us.preheader.i @@ -12679,27 +12673,27 @@ define noundef zeroext i1 @"_ZN80_$LT$regex_automata..util..alphabet..ByteClasse br label %.split87.us.i .split87.us.i: ; preds = %.split21.us.i.loopexit.i, %.split87.us.i.loopexit, %.lr.ph.split.us - %.sroa.071.3 = phi i64 [ %.sroa.071.5.insert.insert125, %.lr.ph.split.us ], [ %.sroa.071.1, %.split87.us.i.loopexit ], [ %.sroa.071.2, %.split21.us.i.loopexit.i ] - %.sroa.26.3 = phi i64 [ 257, %.lr.ph.split.us ], [ %spec.select, %.split87.us.i.loopexit ], [ 257, %.split21.us.i.loopexit.i ] + %.sroa.071.3 = phi i64 [ %.sroa.071.5.insert.insert125, %.lr.ph.split.us ], [ %.sroa.071.1, %.split84.us.i.loopexit ], [ %.sroa.071.2, %.split21.us.i.loopexit.i ] + %.sroa.26.3 = phi i64 [ 257, %.lr.ph.split.us ], [ %spec.select, %.split84.us.i.loopexit ], [ 257, %.split21.us.i.loopexit.i ] %.sroa.071.0.insert.mask = and i64 %.sroa.071.3, -256 %.sroa.071.0.insert.insert = or disjoint i64 %.sroa.071.0.insert.mask, 2 br label %"_ZN113_$LT$regex_automata..util..alphabet..ByteClassElementRanges$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h937e35ff2fad6632E.exit" 95: ; preds = %.split21.us.i.loopexit.i, %"_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit.i.thread" - %.sroa.458.0.extract.trunc.i183 = phi i24 [ %.sroa.458.0.extract.trunc.i177, %"_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit.i.thread" ], [ %.sroa.458.0.extract.trunc.i, %.split21.us.i.loopexit.i ] - %.sroa.458.0.extract.shift.i182 = phi i32 [ %.sroa.4.0.insert.ext.i.i.i63, %"_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit.i.thread" ], [ %.sroa.458.0.extract.shift.i, %.split21.us.i.loopexit.i ] - %.sroa.0.0.i.i62181 = phi i32 [ %.sroa.4.0.insert.shift.i.i.i64, %"_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit.i.thread" ], [ %spec.select15.i.i, %.split21.us.i.loopexit.i ] - %.sroa.4.sroa.0.0.i.i61180 = phi i32 [ %.sroa.4.0.insert.shift.i.i.i64, %"_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit.i.thread" ], [ %spec.select.i.i, %.split21.us.i.loopexit.i ] - %.sroa.26.4179 = phi i64 [ %92, %"_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit.i.thread" ], [ 257, %.split21.us.i.loopexit.i ] - %.sroa.057.0.extract.trunc.i.pre-phi178 = phi i8 [ 0, %"_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit.i.thread" ], [ %82, %.split21.us.i.loopexit.i ] - %96 = icmp eq i8 %88, 2 + %.sroa.458.0.extract.trunc.i183 = phi i32 [ %.sroa.4.0.insert.ext.i.i.i63, %"_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit.i.thread" ], [ %.sroa.458.0.extract.shift.i, %.split21.us.i.loopexit.i ] + %.sroa.458.0.extract.shift.i182 = phi i32 [ %.sroa.4.0.insert.shift.i.i.i64, %"_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit.i.thread" ], [ %spec.select15.i.i, %.split21.us.i.loopexit.i ] + %.sroa.0.0.i.i62181 = phi i32 [ %.sroa.4.0.insert.shift.i.i.i64, %"_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit.i.thread" ], [ %spec.select.i.i, %.split21.us.i.loopexit.i ] + %.sroa.4.sroa.0.0.i.i61180 = phi i64 [ %92, %"_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit.i.thread" ], [ 257, %.split21.us.i.loopexit.i ] + %.sroa.26.4179 = phi i8 [ 0, %"_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit.i.thread" ], [ %82, %.split21.us.i.loopexit.i ] + %96 = and i64 %.sroa.26.1, 255 + %96 = icmp eq i64 %96, 2 br i1 %96, label %97, label %99 97: ; preds = %95 - %98 = and i32 %.sroa.0.0.i.i62181, 3 - %.sroa.071.1.insert.insert96163 = or disjoint i32 %.sroa.4.sroa.0.0.i.i61180, %98 + %98 = and i32 %.sroa.0.0.i.i62163, 3 + %.sroa.071.1.insert.insert96163 = or disjoint i32 %.sroa.4.sroa.0.0.i.i61162, %98 %.sroa.071.1.insert.insert96 = zext nneg i32 %.sroa.071.1.insert.insert96163 to i64 - br label %103 + br label %106 99: ; preds = %95 %.sroa.071.4.extract.shift = lshr i64 %.sroa.071.2, 32 @@ -12710,71 +12704,54 @@ define noundef zeroext i1 @"_ZN80_$LT$regex_automata..util..alphabet..ByteClasse %.sroa.5.0.extract.shift.i.i = lshr i32 %.sroa.071.4.extract.trunc, 16 %.0.in.i.i = select i1 %trunc.i.i, i32 %.sroa.5.0.extract.shift.i.i, i32 %100 %narrow.i = add nuw nsw i32 %.0.in.i.i, 1 - %trunc.i69.i = trunc i32 %.sroa.0.0.i.i62181 to i1 - %101 = and i32 %.sroa.458.0.extract.shift.i182, 255 - %.sroa.5.0.extract.shift.i71.i = lshr i32 %.sroa.4.sroa.0.0.i.i61180, 16 + %trunc.i69.i = trunc i32 %.sroa.0.0.i.i62163 to i1 + %101 = and i32 %.sroa.458.0.extract.shift.i164, 255 + %.sroa.5.0.extract.shift.i71.i = lshr i32 %.sroa.4.sroa.0.0.i.i61162, 16 %.0.in.i72.i = select i1 %trunc.i69.i, i32 %.sroa.5.0.extract.shift.i71.i, i32 %101 %.not.i = icmp ne i32 %narrow.i, %.0.in.i72.i - %..i2.i.i = and i32 %.sroa.0.0.i.i62181, 1 + %..i2.i.i = and i32 %.sroa.0.0.i.i62163, 1 %102 = icmp ne i32 %..i2.i.i, 0 %or.cond.i = or i1 %102, %.not.i - br i1 %or.cond.i, label %.split89.us.i.loopexit151, label %105 + br i1 %or.cond.i, label %.split86.us.i.loopexit126, label %103 + +103: ; preds = %100 + %.pre141 = and i32 %.sroa.0.0.i.i62163, 2 + br label %106 -103: ; preds = %105, %97 - %.sroa.071.4.insert.ext.pre-phi.in = phi i32 [ %.pre157, %105 ], [ %98, %97 ] - %.sroa.071.4 = phi i64 [ %.sroa.071.0.insert.insert75, %105 ], [ %.sroa.071.1.insert.insert96, %97 ] - %.sroa.458.0.extract.trunc84.i = phi i24 [ %.sroa.458.0.extract.trunc85.i, %105 ], [ %.sroa.458.0.extract.trunc.i183, %97 ] - %104 = phi i8 [ %88, %105 ], [ %.sroa.057.0.extract.trunc.i.pre-phi178, %97 ] +106: ; preds = %._crit_edge, %97 + %.sroa.071.4.insert.ext.pre-phi.in = phi i32 [ %.pre141, %._crit_edge ], [ %99, %98 ] + %.sroa.071.4 = phi i64 [ %.sroa.071.2, %._crit_edge ], [ %.sroa.071.1.insert.insert97, %98 ] %.sroa.071.4.insert.ext.pre-phi = zext nneg i32 %.sroa.071.4.insert.ext.pre-phi.in to i64 %.sroa.071.4.insert.shift = shl nuw nsw i64 %.sroa.071.4.insert.ext.pre-phi, 32 %.sroa.071.4.insert.mask = and i64 %.sroa.071.4, 4294967295 %.sroa.071.4.insert.insert = or disjoint i64 %.sroa.071.4.insert.mask, %.sroa.071.4.insert.shift - %.sroa.071.5.insert.ext = zext nneg i32 %.sroa.458.0.extract.shift.i182 to i64 + %.sroa.071.5.insert.ext = zext nneg i32 %.sroa.458.0.extract.shift.i164 to i64 %.sroa.071.5.insert.shift = shl nuw nsw i64 %.sroa.071.5.insert.ext, 40 %.sroa.071.5.insert.insert = or disjoint i64 %.sroa.071.4.insert.insert, %.sroa.071.5.insert.shift br label %.split.i.preheader.i 105: ; preds = %99 - %.sroa.071.0.insert.ext = zext i8 %88 to i64 - %.sroa.071.0.insert.mask74 = and i64 %.sroa.071.2, -256 - %.sroa.071.0.insert.insert75 = or disjoint i64 %.sroa.071.0.insert.mask74, %.sroa.071.0.insert.ext - %.pre157 = and i32 %.sroa.0.0.i.i62181, 2 - br label %103 - -.split89.us.i.loopexit: ; preds = %.lr.ph.split.us - %.sroa.071.4.extract.shift106.le = lshr i64 %.sroa.071.1, 32 - br label %.split89.us.i - -.split89.us.i.loopexit151: ; preds = %99 - %106 = zext nneg i32 %.sroa.458.0.extract.shift.i182 to i64 - br label %.split89.us.i - -.split89.us.i: ; preds = %.split89.us.i.loopexit151, %.split89.us.i.loopexit - %.sroa.26.5 = phi i64 [ 257, %.split89.us.i.loopexit ], [ %.sroa.26.4179, %.split89.us.i.loopexit151 ] - %.us-phi.i = phi i8 [ %.sroa.071.0.extract.trunc, %.split89.us.i.loopexit ], [ %88, %.split89.us.i.loopexit151 ] - %.us-phi91.i = phi i24 [ %.sroa.071.1.extract.trunc, %.split89.us.i.loopexit ], [ %.sroa.458.0.extract.trunc85.i, %.split89.us.i.loopexit151 ] - %.us-phi93.i = phi i64 [ %.sroa.071.4.extract.shift106.le, %.split89.us.i.loopexit ], [ %.sroa.071.4.extract.shift, %.split89.us.i.loopexit151 ] - %.us-phi94.i = phi i8 [ %82, %.split89.us.i.loopexit ], [ %.sroa.057.0.extract.trunc.i.pre-phi178, %.split89.us.i.loopexit151 ] - %.us-phi95.i = phi i64 [ 65536, %.split89.us.i.loopexit ], [ %106, %.split89.us.i.loopexit151 ] - %.sroa.071.0.insert.ext77 = zext i8 %.us-phi94.i to i64 - %.sroa.071.1.insert.shift = shl nuw nsw i64 %.us-phi95.i, 8 - %.sroa.071.4.insert.shift110 = shl nuw nsw i64 %.sroa.071.0.insert.ext77, 32 - %107 = or disjoint i64 %.sroa.071.1.insert.shift, %.sroa.071.4.insert.shift110 - %.sroa.071.5.insert.shift120 = shl nuw nsw i64 %.us-phi95.i, 40 - %108 = or disjoint i64 %107, %.sroa.071.5.insert.shift120 - %.sroa.071.5.insert.insert122 = or disjoint i64 %108, %.sroa.071.0.insert.ext77 - %.sroa.542.0.insert.shift.i = shl nuw i64 %.us-phi93.i, 32 - %.sroa.441.0.insert.ext.i = zext i24 %.us-phi91.i to i64 - %.sroa.441.0.insert.shift.i = shl nuw nsw i64 %.sroa.441.0.insert.ext.i, 8 - %.sroa.040.0.insert.ext.i = zext i8 %.us-phi.i to i64 - %.sroa.441.0.insert.insert.i = or disjoint i64 %.sroa.441.0.insert.shift.i, %.sroa.040.0.insert.ext.i - %.sroa.040.0.insert.insert.i = or disjoint i64 %.sroa.441.0.insert.insert.i, %.sroa.542.0.insert.shift.i + %.sroa.071.0.insert.ext = zext nneg i32 %.sroa.458.0.extract.trunc.i183 to i64 + br label %.split86.us.i + +.split86.us.i:; preds = %.lr.ph.split.us, %102 + %.sroa.071.5 = phi i64 [ %.sroa.26.1, %.split86.us.i.loopexit126 ], [ %.sroa.071.1, %.lr.ph.split.us ] + %.sroa.24.5 = phi i64 [ %.sroa.24.4161, %.split86.us.i.loopexit126 ], [ 257, %.lr.ph.split.us ] + %.us-phi89.i = phi i8 [ %.sroa.26.4179, %.split86.us.i.loopexit126 ], [ %82, %.lr.ph.split.us ] + %.us-phi90.i = phi i64 [ %.sroa.071.0.insert.ext, %.split86.us.i.loopexit126 ], [ 65536, %.lr.ph.split.us ] + %.sroa.071.0.insert.ext78 = zext i8 %.us-phi89.i to i64 + %.sroa.071.1.insert.shift = shl nuw nsw i64 %.us-phi90.i, 8 + %.sroa.071.4.insert.shift108 = shl nuw nsw i64 %.sroa.071.0.insert.ext78, 32 + %107 = add nuw nsw i64 %.sroa.071.1.insert.shift, %.sroa.071.4.insert.shift108 + %.sroa.071.5.insert.shift118 = shl nuw nsw i64 %.us-phi90.i, 40 + %108 = add nuw nsw i64 %107, %.sroa.071.5.insert.shift118 + %.sroa.071.5.insert.insert120 = or disjoint i64 %108, %.sroa.071.0.insert.ext78 br label %"_ZN113_$LT$regex_automata..util..alphabet..ByteClassElementRanges$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h937e35ff2fad6632E.exit" -"_ZN113_$LT$regex_automata..util..alphabet..ByteClassElementRanges$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h937e35ff2fad6632E.exit": ; preds = %.split87.us.i, %.split89.us.i - %.sroa.071.7 = phi i64 [ %.sroa.071.0.insert.insert, %.split87.us.i ], [ %.sroa.071.5.insert.insert122, %.split89.us.i ] - %.sroa.26.7 = phi i64 [ %.sroa.26.3, %.split87.us.i ], [ %.sroa.26.5, %.split89.us.i ] - %.sroa.0.0.i = phi i64 [ %.sroa.071.3, %.split87.us.i ], [ %.sroa.040.0.insert.insert.i, %.split89.us.i ] +"_ZN113_$LT$regex_automata..util..alphabet..ByteClassElementRanges$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h937e35ff2fad6632E.exit": ; preds = %.split87.us.i, %.split86.us.i + %.sroa.071.7 = phi i64 [ %.sroa.071.0.insert.insert, %.split84.us.i ], [ %.sroa.071.5.insert.insert120, %.split86.us.i ] + %.sroa.26.7 = phi i64 [ %.sroa.26.3, %.split84.us.i ], [ %.sroa.24.5, %.split86.us.i ] + %.sroa.0.0.i = phi i64 [ %.sroa.071.3, %.split84.us.i ], [ %.sroa.071.5, %.split86.us.i ] %.sroa.038.0.extract.trunc = trunc i64 %.sroa.0.0.i to i8 %109 = icmp eq i8 %.sroa.038.0.extract.trunc, 2 br i1 %109, label %110, label %112 @@ -13073,7 +13050,6 @@ define i64 @"_ZN113_$LT$regex_automata..util..alphabet..ByteClassElementRanges$u %.sroa.4.0.extract.shift.i.i.i = lshr i32 %.sroa.05.0.copyload.fr.i, 8 %.sroa.4.0.extract.trunc.i.i.i = trunc i32 %.sroa.4.0.extract.shift.i.i.i to i8 %.promoted = load i64, ptr %3, align 8, !alias.scope !3385 - %.promoted81 = load i8, ptr %0, align 8 %..i2.i.i = and i32 %.sroa.05.0.copyload.fr.i, 1 %.not.i = icmp eq i32 %..i2.i.i, 0 %spec.select.i = shl nuw nsw i32 %..i2.i.i, 24 @@ -13081,7 +13057,6 @@ define i64 @"_ZN113_$LT$regex_automata..util..alphabet..ByteClassElementRanges$u %.sroa.620.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 1 %.sroa.620.sroa.5.0..sroa.620.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 4 %.sroa.652.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 5 - %.sroa.620.0..sroa_idx.promoted = load i24, ptr %.sroa.620.0..sroa_idx, align 1 br i1 %trunc.i.i.i, label %.split.us.i.us.preheader, label %.split.i.preheader .split.us.i.us.preheader: ; preds = %1 @@ -13096,8 +13071,10 @@ define i64 @"_ZN113_$LT$regex_automata..util..alphabet..ByteClassElementRanges$u br i1 %8, label %.split87.us, label %9 9: ; preds = %"_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit.us" - %10 = icmp eq i8 %.promoted81, 2 - br i1 %10, label %.split.us.i.us, label %.split89.us.loopexit + %.sroa.018.0.copyload.us = load i64, ptr %0, align 8 + %10 = and i64 %.sroa.018.0.copyload.us, 255 + %11 = icmp eq i64 %10, 2 + br i1 %11, label %.split.us.i.us, label %.split86.us .split.us.i.us: ; preds = %9 store i8 %6, ptr %0, align 8 @@ -13107,9 +13084,7 @@ define i64 @"_ZN113_$LT$regex_automata..util..alphabet..ByteClassElementRanges$u br label %.split87.us .split.i.preheader: ; preds = %1, %28 - %.sroa.458.0.extract.trunc85 = phi i24 [ %.sroa.458.0.extract.trunc84, %28 ], [ %.sroa.620.0..sroa_idx.promoted, %1 ] - %11 = phi i8 [ %29, %28 ], [ %.promoted81, %1 ] - %.promoted.i80 = phi i64 [ %.promoted.i77, %28 ], [ %.promoted, %1 ] + %.sroa.458.0.extract.trunc85 = phi i64 [ %.promoted.i77, %31 ], [ %.promoted, %1 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !3385) br label %.split.i @@ -13155,11 +13130,13 @@ define i64 @"_ZN113_$LT$regex_automata..util..alphabet..ByteClassElementRanges$u br label %22 20: ; preds = %"_ZN108_$LT$regex_automata..util..alphabet..ByteClassElements$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he836e12f071b565dE.exit" - %21 = icmp eq i8 %11, 2 - br i1 %21, label %23, label %24 + %.sroa.018.0.copyload = load i64, ptr %0, align 8 + %21 = trunc i64 %.sroa.018.0.copyload to i8 + %22 = icmp eq i8 %21, 2 + br i1 %22, label %24, label %25 -22: ; preds = %.split89.us, %.split87.us - %.sroa.0.0 = phi i64 [ %.sroa.0.0.copyload, %.split87.us ], [ %.sroa.040.0.insert.insert, %.split89.us ] +22: ; preds = %.split86.us, %.split87.us + %.sroa.0.0 = phi i64 [ %.sroa.0.0.copyload, %.split84.us ], [ %.us-phi, %.split86.us ] ret i64 %.sroa.0.0 23: ; preds = %20 @@ -13168,12 +13145,13 @@ define i64 @"_ZN113_$LT$regex_automata..util..alphabet..ByteClassElementRanges$u br label %28 24: ; preds = %20 - %.sroa.620.sroa.5.0.copyload = load i32, ptr %.sroa.620.sroa.5.0..sroa.620.0..sroa_idx.sroa_idx, align 4 - %trunc.i = trunc i32 %.sroa.620.sroa.5.0.copyload to i1 - %.sroa.4.0.extract.shift.i = lshr i32 %.sroa.620.sroa.5.0.copyload, 8 - %25 = and i32 %.sroa.4.0.extract.shift.i, 255 - %.sroa.5.0.extract.shift.i = lshr i32 %.sroa.620.sroa.5.0.copyload, 16 - %.0.in.i = select i1 %trunc.i, i32 %.sroa.5.0.extract.shift.i, i32 %25 + %26 = lshr i64 %.sroa.018.0.copyload, 32 + %trunc.i = trunc nuw i64 %26 to i32 + %trunc.i = trunc i64 %26 to i1 + %.sroa.4.0.extract.shift.i = lshr i32 %27, 8 + %28 = and i32 %.sroa.4.0.extract.shift.i, 255 + %.sroa.5.0.extract.shift.i = lshr i32 %27, 16 + %.0.in.i = select i1 %trunc.i, i32 %.sroa.5.0.extract.shift.i, i32 %28 %narrow = add nuw nsw i32 %.0.in.i, 1 %trunc.i69 = trunc i32 %.sroa.0.0.i to i1 %26 = and i32 %.sroa.458.0.extract.shift, 255 @@ -13183,41 +13161,26 @@ define i64 @"_ZN113_$LT$regex_automata..util..alphabet..ByteClassElementRanges$u %..i2.i = and i32 %.sroa.0.0.i, 1 %27 = icmp ne i32 %..i2.i, 0 %or.cond = or i1 %27, %.not - br i1 %or.cond, label %.split89.us, label %30 + br i1 %or.cond, label %.split86.us, label %30 28: ; preds = %30, %23 - %.sroa.458.0.extract.trunc84 = phi i24 [ %.sroa.458.0.extract.trunc85, %30 ], [ %.sroa.458.0.extract.trunc, %23 ] - %29 = phi i8 [ %11, %30 ], [ %.sroa.057.0.extract.trunc, %23 ] store i8 %.sroa.057.0.extract.trunc, ptr %.sroa.620.sroa.5.0..sroa.620.0..sroa_idx.sroa_idx, align 4 store i24 %.sroa.458.0.extract.trunc, ptr %.sroa.652.0..sroa_idx, align 1 br label %.split.i.preheader 30: ; preds = %24 - store i8 %11, ptr %0, align 8 + store i8 %21, ptr %0, align 8 br label %28 -.split89.us.loopexit: ; preds = %9 - %.sroa.620.sroa.5.0.copyload.us = load i32, ptr %.sroa.620.sroa.5.0..sroa.620.0..sroa_idx.sroa_idx, align 4 - br label %.split89.us - -.split89.us: ; preds = %24, %.split89.us.loopexit - %.us-phi = phi i8 [ %.promoted81, %.split89.us.loopexit ], [ %11, %24 ] - %.us-phi91 = phi i24 [ %.sroa.620.0..sroa_idx.promoted, %.split89.us.loopexit ], [ %.sroa.458.0.extract.trunc85, %24 ] - %.us-phi93 = phi i32 [ %.sroa.620.sroa.5.0.copyload.us, %.split89.us.loopexit ], [ %.sroa.620.sroa.5.0.copyload, %24 ] - %.us-phi94 = phi i8 [ %6, %.split89.us.loopexit ], [ %.sroa.057.0.extract.trunc, %24 ] - %.us-phi95 = phi i24 [ 65536, %.split89.us.loopexit ], [ %.sroa.458.0.extract.trunc, %24 ] - store i8 %.us-phi94, ptr %0, align 8 - store i24 %.us-phi95, ptr %.sroa.620.0..sroa_idx, align 1 - store i8 %.us-phi94, ptr %.sroa.620.sroa.5.0..sroa.620.0..sroa_idx.sroa_idx, align 4 - store i24 %.us-phi95, ptr %.sroa.652.0..sroa_idx, align 1 - %.sroa.542.0.insert.ext = zext i32 %.us-phi93 to i64 - %.sroa.542.0.insert.shift = shl nuw i64 %.sroa.542.0.insert.ext, 32 - %.sroa.441.0.insert.ext = zext i24 %.us-phi91 to i64 - %.sroa.441.0.insert.shift = shl nuw nsw i64 %.sroa.441.0.insert.ext, 8 - %.sroa.040.0.insert.ext = zext i8 %.us-phi to i64 - %.sroa.441.0.insert.insert = or disjoint i64 %.sroa.441.0.insert.shift, %.sroa.040.0.insert.ext - %.sroa.040.0.insert.insert = or disjoint i64 %.sroa.441.0.insert.insert, %.sroa.542.0.insert.shift - br label %22 +.split89.us.loopexit: ; preds = %25, %9 + %.us-phi = phi i64 [ %.sroa.018.0.copyload.us, %9 ], [ %.sroa.018.0.copyload, %25 ] + %.us-phi89 = phi i8 [ %6, %9 ], [ %.sroa.057.0.extract.trunc, %25 ] + %.us-phi90 = phi i24 [ 65536, %9 ], [ %.sroa.458.0.extract.trunc, %25 ] + store i8 %.us-phi89, ptr %0, align 8 + store i24 %.us-phi90, ptr %.sroa.620.0..sroa_idx, align 1 + store i8 %.us-phi89, ptr %.sroa.620.sroa.5.0..sroa.620.0..sroa_idx.sroa_idx, align 4 + store i24 %.us-phi90, ptr %.sroa.652.0..sroa_idx, align 1 + br label %23 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable diff --git a/bench/rust-analyzer-rs/optimized/1g0h5ha3lba2bol5.ll b/bench/rust-analyzer-rs/optimized/1g0h5ha3lba2bol5.ll index d684b61e544..0f8ab33ada0 100644 --- a/bench/rust-analyzer-rs/optimized/1g0h5ha3lba2bol5.ll +++ b/bench/rust-analyzer-rs/optimized/1g0h5ha3lba2bol5.ll @@ -20185,7 +20185,6 @@ _ZN4core4iter6traits8iterator8Iterator10min_by_key17h79bccab18907a4a8E.exit: ; p %177 = getelementptr inbounds nuw i8, ptr %12, i64 64 store ptr %15, ptr %177, align 8, !noalias !4119 %178 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %.sroa.2.0..sroa_idx.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %11, i64 4 %179 = icmp eq i64 %.val8.i.i, 0 br i1 %179, label %.loopexit.i, label %.lr.ph.i.i @@ -20214,23 +20213,25 @@ _ZN4core4iter6traits8iterator8Iterator10min_by_key17h79bccab18907a4a8E.exit: ; p br i1 %190, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17hd37ecf4aed9d5834E.exit.i.i.i.i.i.i.i.thread42.i.i", label %191 191: ; preds = %186 - %.sroa.06.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i = load i32, ptr %11, align 8, !noalias !4163 - %.sroa.2.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i = load i32, ptr %.sroa.2.0..sroa_idx.i.i.i.i.i.i.i.i.i.i.i.i, align 4, !noalias !4163 - %192 = load i32, ptr %13, align 4, !noalias !4168, !noundef !4 - %193 = icmp ugt i32 %.sroa.06.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i, %192 - br i1 %193, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17hd37ecf4aed9d5834E.exit.i.i.i.i.i.i.i.thread42.i.i", label %.critedge.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i + %.sroa.06.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i = load i64, ptr %11, align 8, !noalias !4115 + %192 = trunc i64 %.sroa.06.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i to i32 + %193 = lshr i64 %.sroa.06.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i, 32 + %194 = trunc nuw i64 %193 to i32 + %195 = load i32, ptr %13, align 4, !noalias !4168, !noundef !4 + %196 = icmp ult i32 %195, %192 + br i1 %196, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17hd37ecf4aed9d5834E.exit.i.i.i.i.i.i.i.thread42.i.i", label %.critedge.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i .critedge.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %191 %194 = load i32, ptr %15, align 8, !noalias !4168, !noundef !4 %195 = load i32, ptr %171, align 4, !noalias !4168, !noundef !4 - %196 = icmp ule i32 %194, %.sroa.06.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i - %switch.selectcmp.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp ule i32 %.sroa.2.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i, %195 + %196 = icmp ule i32 %194, %192 + %switch.selectcmp.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp uge i32 %198, %194 %spec.select.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = and i1 %196, %switch.selectcmp.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i br i1 %spec.select.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, label %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hd24515f403000440E.exit.i.i.i.i.i.i.i.i.i.i.i.i.i", label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17hd37ecf4aed9d5834E.exit.i.i.i.i.i.i.i.thread42.i.i" "_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hd24515f403000440E.exit.i.i.i.i.i.i.i.i.i.i.i.i.i": ; preds = %.critedge.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i - %197 = icmp ne i32 %.sroa.06.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i, %194 - %198 = icmp ne i32 %.sroa.2.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i, %195 + %197 = icmp ne i32 %197, %192 + %198 = icmp ne i32 %198, %194 %spec.select.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i9 = or i1 %197, %198 br i1 %spec.select.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i9, label %199, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17hd37ecf4aed9d5834E.exit.i.i.i.i.i.i.i.thread42.i.i" @@ -20260,10 +20261,6 @@ _ZN4core4iter6traits8iterator8Iterator6reduce17he96631a47dc93f33E.exit.thread11. br label %_ZN3hir15source_analyzer6adjust17h815145f6e380a7a4E.exit.i 203: ; preds = %199 - %204 = zext i32 %.sroa.2.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i to i64 - %205 = shl nuw i64 %204, 32 - %206 = zext i32 %.sroa.06.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i to i64 - %.sroa.06.4.insert.insert.i.i.i.i.i.i.i.i.i = or disjoint i64 %205, %206 %207 = ptrtoint ptr %175 to i64 %208 = ptrtoint ptr %184 to i64 %209 = sub nuw i64 %207, %208 @@ -20277,10 +20274,10 @@ _ZN4core4iter6traits8iterator8Iterator6reduce17he96631a47dc93f33E.exit.thread11. br label %213 213: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17hc3d941eee3b26be1E.exit.i.i.i.i.i.i.i.i", %203 - %.sroa.018.0.i.i.i = phi i64 [ %.sroa.06.4.insert.insert.i.i.i.i.i.i.i.i.i, %203 ], [ %.sroa.031.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17hc3d941eee3b26be1E.exit.i.i.i.i.i.i.i.i" ] - %.sroa.9.0.i.i.i = phi ptr [ %189, %203 ], [ %.sroa.732.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17hc3d941eee3b26be1E.exit.i.i.i.i.i.i.i.i" ] - %214 = phi i64 [ %200, %203 ], [ %233, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17hc3d941eee3b26be1E.exit.i.i.i.i.i.i.i.i" ] - %.0.i.i.i.i.i.i.i.i = phi i64 [ 0, %203 ], [ %234, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17hc3d941eee3b26be1E.exit.i.i.i.i.i.i.i.i" ] + %.sroa.018.0.i.i.i = phi i64 [ %.sroa.06.0.copyload.i.i.i.i.i.i.i.i.i.i.i.i, %206 ], [ %.sroa.031.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17hc3d941eee3b26be1E.exit.i.i.i.i.i.i.i.i" ] + %.sroa.9.0.i.i.i = phi ptr [ %189, %206 ], [ %.sroa.732.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17hc3d941eee3b26be1E.exit.i.i.i.i.i.i.i.i" ] + %214 = phi i64 [ %200, %206 ], [ %233, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17hc3d941eee3b26be1E.exit.i.i.i.i.i.i.i.i" ] + %.0.i.i.i.i.i.i.i.i = phi i64 [ 0, %206 ], [ %234, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17hc3d941eee3b26be1E.exit.i.i.i.i.i.i.i.i" ] %215 = getelementptr inbounds { i32, [1 x i32] }, ptr %184, i64 %.0.i.i.i.i.i.i.i.i call void @llvm.experimental.noalias.scope.decl(metadata !4198) call void @llvm.experimental.noalias.scope.decl(metadata !4201) @@ -20301,7 +20298,7 @@ _ZN4core4iter6traits8iterator8Iterator6reduce17he96631a47dc93f33E.exit.thread11. 222: ; preds = %217 %.sroa.010.0.copyload.i.i.i.i.i.i.i.i.i.i.i = load i32, ptr %9, align 8, !noalias !4217 %.sroa.2.0.copyload.i.i.i.i.i.i.i.i.i.i.i = load i32, ptr %.sroa.2.0..sroa_idx.i.i.i.i.i.i.i.i.i.i.i, align 4, !noalias !4217 - %223 = icmp ugt i32 %.sroa.010.0.copyload.i.i.i.i.i.i.i.i.i.i.i, %192 + %223 = icmp ugt i32 %.sroa.010.0.copyload.i.i.i.i.i.i.i.i.i.i.i, %195 br i1 %223, label %"_ZN4core4iter8adapters10filter_map15filter_map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h06f9f38bb0931d05E.exit.i.i.i.i.i.i.i.i.i.i", label %.critedge.i.i.i.i.i.i.i.i.i.i.i.i.i .critedge.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %222 diff --git a/bench/rust-analyzer-rs/optimized/357j944nkpwuonjr.ll b/bench/rust-analyzer-rs/optimized/357j944nkpwuonjr.ll index 5e5fb5c0047..8d8c8ff1112 100644 --- a/bench/rust-analyzer-rs/optimized/357j944nkpwuonjr.ll +++ b/bench/rust-analyzer-rs/optimized/357j944nkpwuonjr.ll @@ -74731,12 +74731,10 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hccd71802e1b704feE.exit.th %40 = load i64, ptr %5, align 8, !range !425, !noundef !14 %41 = icmp eq i64 %40, 2 %42 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %43 = load i8, ptr %42, align 8 - br i1 %41, label %47, label %44 + br i1 %41, label %46, label %43 44: ; preds = %39 - %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 9 - %.sroa.5.sroa.0.0.copyload = load i56, ptr %.sroa.5.0..sroa_idx, align 1 + %.sroa.423.0.copyload = load i64, ptr %42, align 8 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 16 %.sroa.5.sroa.4.0.copyload = load ptr, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx, align 8 %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 24 @@ -74747,11 +74745,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hccd71802e1b704feE.exit.th 45: ; preds = %44 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !13113 - %.sroa.2.sroa.3.0.insert.ext42 = zext i56 %.sroa.5.sroa.0.0.copyload to i64 - %.sroa.2.sroa.3.0.insert.shift43 = shl nuw i64 %.sroa.2.sroa.3.0.insert.ext42, 8 - %.sroa.2.sroa.0.0.insert.ext39 = zext i8 %43 to i64 - %.sroa.2.sroa.0.0.insert.insert41 = or disjoint i64 %.sroa.2.sroa.3.0.insert.shift43, %.sroa.2.sroa.0.0.insert.ext39 - store i64 %.sroa.2.sroa.0.0.insert.insert41, ptr %4, align 8, !noalias !13117 + store i64 %.sroa.423.0.copyload, ptr %4, align 8, !noalias !13117 %.sroa.638.8..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 store ptr %.sroa.5.sroa.4.0.copyload, ptr %.sroa.638.8..sroa_idx, align 8, !noalias !13117 %.sroa.7.8..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -74764,21 +74758,18 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hccd71802e1b704feE.exit.th br label %53 47: ; preds = %39 + %47 = load i8, ptr %42, align 8, !range !593, !noundef !14 call void @llvm.lifetime.end.p0(ptr nonnull %5) - %48 = trunc nuw i8 %43 to i1 + %48 = trunc nuw i8 %47 to i1 %49 = invoke noundef nonnull ptr @"_ZN6anyhow5error72_$LT$impl$u20$core..convert..From$LT$E$GT$$u20$for$u20$anyhow..Error$GT$4from17hb133c4ce1c5f6328E"(i1 noundef zeroext %48) to label %53 unwind label %37 "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17ha1175b695a68568dE.exit": ; preds = %44 - %.sroa.2.sroa.3.0.insert.ext = zext i56 %.sroa.5.sroa.0.0.copyload to i64 - %.sroa.2.sroa.3.0.insert.shift = shl nuw i64 %.sroa.2.sroa.3.0.insert.ext, 8 - %.sroa.2.sroa.0.0.insert.ext = zext i8 %43 to i64 - %.sroa.2.sroa.0.0.insert.insert = or disjoint i64 %.sroa.2.sroa.3.0.insert.shift, %.sroa.2.sroa.0.0.insert.ext - %50 = icmp eq i64 %.sroa.2.sroa.0.0.insert.insert, -9223372036854775808 + %50 = icmp eq i64 %.sroa.423.0.copyload, -9223372036854775808 br i1 %50, label %53, label %51 51: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17ha1175b695a68568dE.exit" - store i64 %.sroa.2.sroa.0.0.insert.insert, ptr %0, align 8 + store i64 %.sroa.423.0.copyload, ptr %0, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.5.sroa.4.0.copyload, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -74791,7 +74782,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hccd71802e1b704feE.exit.th ret void 53: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17ha1175b695a68568dE.exit", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17ha1175b695a68568dE.exit.thread", %47 - %.sink = phi ptr [ %49, %47 ], [ %46, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17ha1175b695a68568dE.exit.thread" ], [ %.sroa.5.sroa.4.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17ha1175b695a68568dE.exit" ] + %.sink = phi ptr [ %49, %46 ], [ %46, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17ha1175b695a68568dE.exit.thread" ], [ %.sroa.5.sroa.4.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17ha1175b695a68568dE.exit" ] %54 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sink, ptr %54, align 8 store i64 -9223372036854775808, ptr %0, align 8 @@ -89144,7 +89135,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hccd71802e1b704feE.exit.th to label %46 unwind label %44 43: ; preds = %80, %44 - %.pn = phi { ptr, i32 } [ %45, %44 ], [ %81, %80 ] + %.pn = phi { ptr, i32 } [ %45, %44 ], [ %81, %79 ] invoke fastcc void @"_ZN4core3ptr47drop_in_place$LT$tracing..span..EnteredSpan$GT$17h957f252789d25477E"(ptr noalias noundef align 8 dereferenceable(40) %15) #52 to label %.thread unwind label %90 @@ -89181,12 +89172,10 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hccd71802e1b704feE.exit.th %57 = load i64, ptr %10, align 8, !range !1096, !noundef !14 %58 = icmp eq i64 %57, -9223372036854775807 %59 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %60 = load i8, ptr %59, align 8 - br i1 %58, label %64, label %61 + br i1 %58, label %63, label %60 61: ; preds = %56 - %.sroa.549.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 9 - %.sroa.549.sroa.0.0.copyload = load i24, ptr %.sroa.549.0..sroa_idx, align 1 + %.sroa.448.0.copyload = load i32, ptr %59, align 8 %.sroa.549.sroa.4.0..sroa.549.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 12 %.sroa.549.sroa.4.0.copyload = load i32, ptr %.sroa.549.sroa.4.0..sroa.549.0..sroa_idx.sroa_idx, align 4 %.sroa.549.sroa.5.0..sroa.549.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 16 @@ -89195,23 +89184,12 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hccd71802e1b704feE.exit.th %62 = icmp eq i64 %57, -9223372036854775808 br i1 %62, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit.thread", label %63 -"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit.thread": ; preds = %61 - %.sroa.3.sroa.3.0.insert.ext86 = zext i24 %.sroa.549.sroa.0.0.copyload to i32 - %.sroa.3.sroa.3.0.insert.shift87 = shl nuw i32 %.sroa.3.sroa.3.0.insert.ext86, 8 - %.sroa.3.sroa.0.0.insert.ext83 = zext i8 %60 to i32 - %.sroa.3.sroa.0.0.insert.insert85 = or disjoint i32 %.sroa.3.sroa.3.0.insert.shift87, %.sroa.3.sroa.0.0.insert.ext83 - br label %68 - 63: ; preds = %61 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !15120 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !15120 store i64 %57, ptr %4, align 8, !noalias !15124 %.sroa.3.0..sroa_idx81 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %.sroa.3.sroa.3.0.insert.ext = zext i24 %.sroa.549.sroa.0.0.copyload to i32 - %.sroa.3.sroa.3.0.insert.shift = shl nuw i32 %.sroa.3.sroa.3.0.insert.ext, 8 - %.sroa.3.sroa.0.0.insert.ext = zext i8 %60 to i32 - %.sroa.3.sroa.0.0.insert.insert = or disjoint i32 %.sroa.3.sroa.3.0.insert.shift, %.sroa.3.sroa.0.0.insert.ext - store i32 %.sroa.3.sroa.0.0.insert.insert, ptr %.sroa.3.0..sroa_idx81, align 8, !noalias !15124 + store i32 %.sroa.448.0.copyload, ptr %.sroa.3.0..sroa_idx81, align 8, !noalias !15124 %.sroa.682.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 12 store i32 %.sroa.549.sroa.4.0.copyload, ptr %.sroa.682.0..sroa_idx, align 4, !noalias !15124 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -89220,10 +89198,11 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hccd71802e1b704feE.exit.th to label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit" unwind label %44 64: ; preds = %56 + %64 = load i8, ptr %59, align 8, !range !593, !noundef !14 call void @llvm.lifetime.end.p0(ptr nonnull %10) - %65 = trunc nuw i8 %60 to i1 + %65 = trunc nuw i8 %64 to i1 %66 = invoke noundef nonnull ptr @"_ZN6anyhow5error72_$LT$impl$u20$core..convert..From$LT$E$GT$$u20$for$u20$anyhow..Error$GT$4from17hb133c4ce1c5f6328E"(i1 noundef zeroext %65) - to label %96 unwind label %44 + to label %95 unwind label %44 "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit": ; preds = %63 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !15120 @@ -89238,14 +89217,14 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hccd71802e1b704feE.exit.th %67 = icmp eq i64 %.sroa.0.0.copyload, -9223372036854775808 br i1 %67, label %68, label %69 -68: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit.thread", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit" - %.sroa.6.091123.ph = phi i32 [ %.sroa.6.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit" ], [ %.sroa.3.sroa.0.0.insert.insert85, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit.thread" ] - %.sroa.9.092121.ph = phi i32 [ %.sroa.9.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit" ], [ %.sroa.549.sroa.4.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit.thread" ] +"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit.thread":; preds = %60, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit" + %.sroa.6.091123.ph = phi i32 [ %.sroa.6.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit" ], [ %.sroa.448.0.copyload, %60 ] + %.sroa.9.092121.ph = phi i32 [ %.sroa.9.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit" ], [ %.sroa.549.sroa.4.0.copyload, %60 ] call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.12) call void @llvm.lifetime.start.p0(ptr nonnull %9) call void @llvm.lifetime.start.p0(ptr nonnull %8) invoke void @_ZN13rust_analyzer12global_state19GlobalStateSnapshot15file_line_index17h7b5d2e85d5394017E(ptr noalias noundef nonnull sret({ [9 x i8], i8, [6 x i8] }) align 8 captures(none) dereferenceable(16) %8, ptr noundef nonnull align 8 %1, i32 noundef %49) - to label %71 unwind label %44 + to label %70 unwind label %44 69: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdc644f95b6f6cff8E.exit" %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 16 @@ -89258,7 +89237,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hccd71802e1b704feE.exit.th %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 12 store i32 %.sroa.9.0.copyload, ptr %.sroa.3.0..sroa_idx, align 4 %70 = invoke noundef nonnull ptr @"_ZN6anyhow5error72_$LT$impl$u20$core..convert..From$LT$E$GT$$u20$for$u20$anyhow..Error$GT$4from17h601e68df9956f332E"(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %6) - to label %94 unwind label %44 + to label %93 unwind label %44 71: ; preds = %68 %72 = getelementptr inbounds nuw i8, ptr %8, i64 9 @@ -89280,13 +89259,13 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hccd71802e1b704feE.exit.th %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 9 store i8 %73, ptr %.sroa.5.0..sroa_idx, align 1 invoke void @_ZN13rust_analyzer3lsp8to_proto5range17he84b03fc79b95d01E(ptr noalias noundef nonnull sret({ { i32, i32 }, { i32, i32 } }) align 4 captures(none) dereferenceable(16) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %9, i32 noundef %.sroa.6.091123.ph, i32 noundef %.sroa.9.092121.ph) - to label %82 unwind label %80 + to label %81 unwind label %80 77: ; preds = %71 call void @llvm.lifetime.end.p0(ptr nonnull %8) %78 = trunc nuw i8 %75 to i1 %79 = invoke noundef nonnull ptr @"_ZN6anyhow5error72_$LT$impl$u20$core..convert..From$LT$E$GT$$u20$for$u20$anyhow..Error$GT$4from17hb133c4ce1c5f6328E"(i1 noundef zeroext %78) - to label %92 unwind label %44 + to label %91 unwind label %44 80: ; preds = %76 %81 = landingpad { ptr, i32 } @@ -89321,7 +89300,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hccd71802e1b704feE.exit.th "_ZN4core3ptr57drop_in_place$LT$rust_analyzer..line_index..LineIndex$GT$17hd4740519ee83a39bE.exit.invoke": ; preds = %94, %96, %54, %92, %"_ZN4core3ptr57drop_in_place$LT$rust_analyzer..line_index..LineIndex$GT$17hd4740519ee83a39bE.exit" invoke fastcc void @"_ZN4core3ptr47drop_in_place$LT$tracing..span..EnteredSpan$GT$17h957f252789d25477E"(ptr noalias noundef align 8 dereferenceable(40) %15) - to label %89 unwind label %18 + to label %88 unwind label %18 89: ; preds = %"_ZN4core3ptr57drop_in_place$LT$rust_analyzer..line_index..LineIndex$GT$17hd4740519ee83a39bE.exit.invoke" call void @llvm.lifetime.end.p0(ptr nonnull %15) @@ -89358,7 +89337,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17hccd71802e1b704feE.exit.th .thread: ; preds = %43, %18, %.thread96 %.pn7395 = phi { ptr, i32 } [ %eh.lpad-body99, %.thread96 ], [ %lpad.thr_comm.split-lp, %18 ], [ %.pn, %43 ] invoke void @"_ZN4core3ptr69drop_in_place$LT$rust_analyzer..global_state..GlobalStateSnapshot$GT$17hb9993da6d74bc092E"(ptr noalias noundef nonnull align 8 dereferenceable(168) %1) #52 - to label %98 unwind label %90 + to label %97 unwind label %90 .thread96: ; preds = %38, %.thread100 %eh.lpad-body99 = phi { ptr, i32 } [ %lpad.thr_comm, %.thread100 ], [ %39, %38 ] diff --git a/bench/rust-analyzer-rs/optimized/3eest3j1daftelre.ll b/bench/rust-analyzer-rs/optimized/3eest3j1daftelre.ll index 4a0e3a839f9..646fa5bd753 100644 --- a/bench/rust-analyzer-rs/optimized/3eest3j1daftelre.ll +++ b/bench/rust-analyzer-rs/optimized/3eest3j1daftelre.ll @@ -29663,7 +29663,7 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %26, %.thread, %37 = invoke { ptr, i32 } @_ZN3hir9semantics13SemanticsImpl9find_file17hc9ba13b8f3fcb41cE(ptr noundef nonnull align 8 %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %2) to label %40 unwind label %38 -38: ; preds = %54, %140, %137, %134, %131, %128, %125, %122, %119, %117, %116, %110, %104, %98, %92, %86, %80, %74, %68, %_ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit +38: ; preds = %54, %143, %140, %137, %134, %131, %128, %125, %122, %120, %119, %116, %110, %104, %98, %92, %86, %80, %68, %_ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit %39 = landingpad { ptr, i32 } cleanup br label %.body @@ -29730,49 +29730,42 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %26, %.thread, 64: ; preds = %59 %.sroa.427.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 4 - %.sroa.427.0.copyload = load i32, ptr %.sroa.427.0..sroa_idx, align 4 - %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 8 - %.sroa.5.0.copyload = load i32, ptr %.sroa.5.0..sroa_idx, align 4 + %.sroa.427.0.copyload = load i64, ptr %.sroa.427.0..sroa_idx, align 4 + %65 = trunc i64 %.sroa.427.0.copyload to i32 + %66 = lshr i64 %.sroa.427.0.copyload, 32 + %67 = trunc nuw i64 %66 to i32 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 12 %.sroa.6.0.copyload = load i32, ptr %.sroa.6.0..sroa_idx, align 4 call void @llvm.lifetime.end.p0(ptr nonnull %11) switch i32 %62, label %default.unreachable59 [ - i32 8, label %110 + i32 8, label %113 i32 0, label %65 i32 1, label %68 - i32 2, label %74 - i32 3, label %80 - i32 4, label %86 - i32 5, label %92 - i32 6, label %98 - i32 7, label %104 + i32 2, label %77 + i32 3, label %83 + i32 4, label %89 + i32 5, label %95 + i32 6, label %101 + i32 7, label %107 ] 65: ; preds = %64 call void @llvm.lifetime.start.p0(ptr nonnull %10) %66 = load ptr, ptr %1, align 8, !nonnull !17, !align !680, !noundef !17 %67 = load ptr, ptr %49, align 8, !nonnull !17, !align !558, !noundef !17 - br i1 %5, label %117, label %116 + br i1 %5, label %137, label %119 68: ; preds = %64 - store i32 %.sroa.427.0.copyload, ptr %9, align 4 + store i32 %65, ptr %9, align 4 %.sroa.12.4..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 4 - store i32 %.sroa.5.0.copyload, ptr %.sroa.12.4..sroa_idx, align 4 + store i32 %67, ptr %.sroa.12.4..sroa_idx, align 4 %.sroa.14.4..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 8 store i32 %.sroa.6.0.copyload, ptr %.sroa.14.4..sroa_idx, align 4 %69 = load ptr, ptr %1, align 8, !nonnull !17, !align !680, !noundef !17 %70 = load ptr, ptr %49, align 8, !nonnull !17, !align !558, !noundef !17 %71 = getelementptr inbounds nuw i8, ptr %70, i64 1296 %72 = load ptr, ptr %71, align 8, !invariant.load !17, !nonnull !17 - %73 = invoke { ptr, ptr } %72(ptr noundef nonnull align 1 %69) - to label %119 unwind label %38 - -74: ; preds = %64 - %75 = load ptr, ptr %1, align 8, !nonnull !17, !align !680, !noundef !17 - %76 = load ptr, ptr %49, align 8, !nonnull !17, !align !558, !noundef !17 - %77 = getelementptr inbounds nuw i8, ptr %76, i64 1296 - %78 = load ptr, ptr %77, align 8, !invariant.load !17, !nonnull !17 - %79 = invoke { ptr, ptr } %78(ptr noundef nonnull align 1 %75) + %73 = invoke { ptr, ptr } %75(ptr noundef nonnull align 1 %69) to label %122 unwind label %38 80: ; preds = %64 @@ -29780,7 +29773,7 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %26, %.thread, %82 = load ptr, ptr %49, align 8, !nonnull !17, !align !558, !noundef !17 %83 = getelementptr inbounds nuw i8, ptr %82, i64 1296 %84 = load ptr, ptr %83, align 8, !invariant.load !17, !nonnull !17 - %85 = invoke { ptr, ptr } %84(ptr noundef nonnull align 1 %81) + %85 = invoke { ptr, ptr } %81(ptr noundef nonnull align 1 %81) to label %125 unwind label %38 86: ; preds = %64 @@ -29788,7 +29781,7 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %26, %.thread, %88 = load ptr, ptr %49, align 8, !nonnull !17, !align !558, !noundef !17 %89 = getelementptr inbounds nuw i8, ptr %88, i64 1296 %90 = load ptr, ptr %89, align 8, !invariant.load !17, !nonnull !17 - %91 = invoke { ptr, ptr } %90(ptr noundef nonnull align 1 %87) + %91 = invoke { ptr, ptr } %87(ptr noundef nonnull align 1 %87) to label %128 unwind label %38 92: ; preds = %64 @@ -29796,7 +29789,7 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %26, %.thread, %94 = load ptr, ptr %49, align 8, !nonnull !17, !align !558, !noundef !17 %95 = getelementptr inbounds nuw i8, ptr %94, i64 1296 %96 = load ptr, ptr %95, align 8, !invariant.load !17, !nonnull !17 - %97 = invoke { ptr, ptr } %96(ptr noundef nonnull align 1 %93) + %97 = invoke { ptr, ptr } %93(ptr noundef nonnull align 1 %93) to label %131 unwind label %38 98: ; preds = %64 @@ -29804,7 +29797,7 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %26, %.thread, %100 = load ptr, ptr %49, align 8, !nonnull !17, !align !558, !noundef !17 %101 = getelementptr inbounds nuw i8, ptr %100, i64 1296 %102 = load ptr, ptr %101, align 8, !invariant.load !17, !nonnull !17 - %103 = invoke { ptr, ptr } %102(ptr noundef nonnull align 1 %99) + %103 = invoke { ptr, ptr } %99(ptr noundef nonnull align 1 %99) to label %134 unwind label %38 104: ; preds = %64 @@ -29812,7 +29805,7 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %26, %.thread, %106 = load ptr, ptr %49, align 8, !nonnull !17, !align !558, !noundef !17 %107 = getelementptr inbounds nuw i8, ptr %106, i64 1296 %108 = load ptr, ptr %107, align 8, !invariant.load !17, !nonnull !17 - %109 = invoke { ptr, ptr } %108(ptr noundef nonnull align 1 %105) + %109 = invoke { ptr, ptr } %105(ptr noundef nonnull align 1 %105) to label %137 unwind label %38 110: ; preds = %64 @@ -29820,75 +29813,79 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %26, %.thread, %112 = load ptr, ptr %49, align 8, !nonnull !17, !align !558, !noundef !17 %113 = getelementptr inbounds nuw i8, ptr %112, i64 1296 %114 = load ptr, ptr %113, align 8, !invariant.load !17, !nonnull !17 - %115 = invoke { ptr, ptr } %114(ptr noundef nonnull align 1 %111) + %115 = invoke { ptr, ptr } %111(ptr noundef nonnull align 1 %111) to label %140 unwind label %38 -116: ; preds = %65 - invoke void @_ZN3hir15source_analyzer14SourceAnalyzer21new_for_body_no_infer17hf109f2d8bce40739E(ptr noalias noundef nonnull sret({ { { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }, { i32, [5 x i32] }, ptr, i32, [1 x i32] }) align 8 captures(none) dereferenceable(80) %10, ptr noundef nonnull align 1 %66, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %67, i32 noundef %.sroa.427.0.copyload, i32 noundef %.sroa.5.0.copyload, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %41, i32 noundef %42, i32 noundef %3, i32 %4) - to label %118 unwind label %38 - -117: ; preds = %65 - invoke void @_ZN3hir15source_analyzer14SourceAnalyzer12new_for_body17h7baf4451e5c4c1daE(ptr noalias noundef nonnull sret({ { { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }, { i32, [5 x i32] }, ptr, i32, [1 x i32] }) align 8 captures(none) dereferenceable(80) %10, ptr noundef nonnull align 1 %66, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %67, i32 noundef %.sroa.427.0.copyload, i32 noundef %.sroa.5.0.copyload, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %41, i32 noundef %42, i32 noundef %3, i32 %4) - to label %118 unwind label %38 - -118: ; preds = %117, %116 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(80) %10, i64 80, i1 false) - call void @llvm.lifetime.end.p0(ptr nonnull %10) - br label %144 - -119: ; preds = %68 - %120 = extractvalue { ptr, ptr } %73, 0 - %121 = extractvalue { ptr, ptr } %73, 1 - invoke void @"_ZN68_$LT$hir_def..ModuleId$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17h847dd91433299249E"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, ptr noalias noundef nonnull align 4 captures(none) dereferenceable(12) %9, ptr noundef nonnull align 1 %120, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %121) +116: ; preds = %64 + %114 = load ptr, ptr %1, align 8, !nonnull !17, !align !680, !noundef !17 + %115 = load ptr, ptr %49, align 8, !nonnull !17, !align !558, !noundef !17 + %116 = getelementptr inbounds nuw i8, ptr %115, i64 1296 + %117 = load ptr, ptr %116, align 8, !invariant.load !17, !nonnull !17 + %118 = invoke { ptr, ptr } %117(ptr noundef nonnull align 1 %114) to label %143 unwind label %38 -122: ; preds = %74 - %123 = extractvalue { ptr, ptr } %79, 0 - %124 = extractvalue { ptr, ptr } %79, 1 - invoke void @"_ZN67_$LT$hir_def..TraitId$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17h07fa6bebd8ac3558E"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, i32 noundef %.sroa.427.0.copyload, ptr noundef nonnull align 1 %123, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %124) - to label %143 unwind label %38 +134: ; preds = %68 + invoke void @_ZN3hir15source_analyzer14SourceAnalyzer21new_for_body_no_infer17hf109f2d8bce40739E(ptr noalias noundef nonnull sret({ { { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }, { i32, [5 x i32] }, ptr, i32, [1 x i32] }) align 8 captures(none) dereferenceable(80) %10, ptr noundef nonnull align 1 %69, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %70, i32 noundef %65, i32 noundef %67, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %41, i32 noundef %42, i32 noundef %3, i32 %4) + to label %121 unwind label %38 -125: ; preds = %80 - %126 = extractvalue { ptr, ptr } %85, 0 - %127 = extractvalue { ptr, ptr } %85, 1 - invoke void @"_ZN72_$LT$hir_def..TraitAliasId$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17hc1bd6dc3b166d6ccE"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, i32 noundef %.sroa.427.0.copyload, ptr noundef nonnull align 1 %126, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %127) - to label %143 unwind label %38 - -128: ; preds = %86 - %129 = extractvalue { ptr, ptr } %91, 0 - %130 = extractvalue { ptr, ptr } %91, 1 - invoke void @"_ZN66_$LT$hir_def..ImplId$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17h690d69c7a2925d35E"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, i32 noundef %.sroa.427.0.copyload, ptr noundef nonnull align 1 %129, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %130) - to label %143 unwind label %38 +137: ; preds = %68 + invoke void @_ZN3hir15source_analyzer14SourceAnalyzer12new_for_body17h7baf4451e5c4c1daE(ptr noalias noundef nonnull sret({ { { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }, { i32, [5 x i32] }, ptr, i32, [1 x i32] }) align 8 captures(none) dereferenceable(80) %10, ptr noundef nonnull align 1 %69, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %70, i32 noundef %65, i32 noundef %67, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %41, i32 noundef %42, i32 noundef %3, i32 %4) + to label %121 unwind label %38 -131: ; preds = %92 - %132 = extractvalue { ptr, ptr } %97, 0 - %133 = extractvalue { ptr, ptr } %97, 1 - invoke void @"_ZN52_$LT$T$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17hf35e47566c50b594E"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, i32 noundef %.sroa.427.0.copyload, ptr noundef nonnull align 1 %132, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %133) - to label %143 unwind label %38 - -134: ; preds = %98 - %135 = extractvalue { ptr, ptr } %103, 0 - %136 = extractvalue { ptr, ptr } %103, 1 - invoke void @"_ZN69_$LT$hir_def..VariantId$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17h74f26b1cf320dcc1E"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, i32 noundef %.sroa.427.0.copyload, i32 noundef %.sroa.5.0.copyload, ptr noundef nonnull align 1 %135, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %136) - to label %143 unwind label %38 - -137: ; preds = %104 - %138 = extractvalue { ptr, ptr } %109, 0 - %139 = extractvalue { ptr, ptr } %109, 1 - invoke void @"_ZN71_$LT$hir_def..TypeAliasId$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17h97e2087065ec3524E"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, i32 noundef %.sroa.427.0.copyload, ptr noundef nonnull align 1 %138, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %139) - to label %143 unwind label %38 - -140: ; preds = %110 - %141 = extractvalue { ptr, ptr } %115, 0 - %142 = extractvalue { ptr, ptr } %115, 1 - %.sroa.221.0.insert.ext = zext i32 %.sroa.5.0.copyload to i64 - %.sroa.221.0.insert.shift = shl nuw i64 %.sroa.221.0.insert.ext, 32 - %.sroa.020.0.insert.ext = zext i32 %.sroa.427.0.copyload to i64 - %.sroa.020.0.insert.insert = or disjoint i64 %.sroa.221.0.insert.shift, %.sroa.020.0.insert.ext - invoke void @"_ZN72_$LT$hir_def..GenericDefId$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17h12bebf0944b4c16aE"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, i64 %.sroa.020.0.insert.insert, ptr noundef nonnull align 1 %141, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %142) - to label %143 unwind label %38 - -143: ; preds = %119, %122, %125, %128, %131, %134, %137, %140 +140: ; preds = %120, %119 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(80) %10, i64 80, i1 false) + call void @llvm.lifetime.end.p0(ptr nonnull %10) + br label %147 + +122:; preds = %71 + %123 = extractvalue { ptr, ptr } %76, 0 + %124 = extractvalue { ptr, ptr } %76, 1 + invoke void @"_ZN68_$LT$hir_def..ModuleId$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17h847dd91433299249E"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, ptr noalias noundef nonnull align 4 captures(none) dereferenceable(12) %9, ptr noundef nonnull align 1 %123, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %124) + to label %146 unwind label %38 + +125: ; preds = %77 + %126 = extractvalue { ptr, ptr } %82, 0 + %127 = extractvalue { ptr, ptr } %82, 1 + invoke void @"_ZN67_$LT$hir_def..TraitId$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17h07fa6bebd8ac3558E"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, i32 noundef %65, ptr noundef nonnull align 1 %126, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %127) + to label %146 unwind label %38 + +128: ; preds = %83 + %129 = extractvalue { ptr, ptr } %88, 0 + %130 = extractvalue { ptr, ptr } %88, 1 + invoke void @"_ZN72_$LT$hir_def..TraitAliasId$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17hc1bd6dc3b166d6ccE"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, i32 noundef %65, ptr noundef nonnull align 1 %129, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %130) + to label %146 unwind label %38 + +131: ; preds = %89 + %132 = extractvalue { ptr, ptr } %94, 0 + %133 = extractvalue { ptr, ptr } %94, 1 + invoke void @"_ZN66_$LT$hir_def..ImplId$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17h690d69c7a2925d35E"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, i32 noundef %65, ptr noundef nonnull align 1 %132, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %133) + to label %146 unwind label %38 + +134: ; preds = %95 + %135 = extractvalue { ptr, ptr } %100, 0 + %136 = extractvalue { ptr, ptr } %100, 1 + invoke void @"_ZN52_$LT$T$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17hf35e47566c50b594E"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, i32 noundef %65, ptr noundef nonnull align 1 %135, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %136) + to label %146 unwind label %38 + +137: ; preds = %101 + %138 = extractvalue { ptr, ptr } %106, 0 + %139 = extractvalue { ptr, ptr } %106, 1 + invoke void @"_ZN69_$LT$hir_def..VariantId$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17h74f26b1cf320dcc1E"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, i32 noundef %65, i32 noundef %67, ptr noundef nonnull align 1 %138, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %139) + to label %146 unwind label %38 + +140: ; preds = %107 + %141 = extractvalue { ptr, ptr } %112, 0 + %142 = extractvalue { ptr, ptr } %112, 1 + invoke void @"_ZN71_$LT$hir_def..TypeAliasId$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17h97e2087065ec3524E"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, i32 noundef %65, ptr noundef nonnull align 1 %141, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %142) + to label %146 unwind label %38 + +143: ; preds = %113 + %144 = extractvalue { ptr, ptr } %118, 0 + %145 = extractvalue { ptr, ptr } %118, 1 + invoke void @"_ZN72_$LT$hir_def..GenericDefId$u20$as$u20$hir_def..resolver..HasResolver$GT$8resolver17h12bebf0944b4c16aE"(ptr noalias noundef nonnull sret({ { { i64, ptr, {} }, i64 }, { ptr, i32, [1 x i32] } }) align 8 captures(none) dereferenceable(40) %8, i64 %.sroa.427.0.copyload, ptr noundef nonnull align 1 %144, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %145) + to label %146 unwind label %38 + +146: ; preds = %122, %125, %128, %131, %134, %137, %140, %143 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %8, i64 40, i1 false) %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 40 store i32 5, ptr %.sroa.4.0..sroa_idx, align 8 @@ -29898,7 +29895,7 @@ _ZN7tracing4span4Span7entered17h75bf4b6a528220f6E.exit: ; preds = %26, %.thread, store i32 %42, ptr %.sroa.6.0..sroa_idx43, align 8 br label %144 -144: ; preds = %.thread52, %118, %143 +144: ; preds = %.thread52, %121, %146 call fastcc void @"_ZN4core3ptr47drop_in_place$LT$tracing..span..EnteredSpan$GT$17hfbdab9485e3bd147E"(ptr noalias noundef align 8 dereferenceable(40) %14) call void @llvm.lifetime.end.p0(ptr nonnull %14) ret void diff --git a/bench/rust-analyzer-rs/optimized/46lti8aa4smufhcb.ll b/bench/rust-analyzer-rs/optimized/46lti8aa4smufhcb.ll index 1a57d83ea30..8307913ec34 100644 --- a/bench/rust-analyzer-rs/optimized/46lti8aa4smufhcb.ll +++ b/bench/rust-analyzer-rs/optimized/46lti8aa4smufhcb.ll @@ -18670,10 +18670,11 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17h4d76fb1e81 44: ; preds = %.lr.ph, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread" %.sroa.020.0314 = phi i32 [ undef, %.lr.ph ], [ %.sroa.020.143.ph, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread" ] - %.sroa.4.0310 = phi i64 [ undef, %.lr.ph ], [ %.sroa.4.141.ph, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread" ] - %.sroa.8.0306 = phi i48 [ undef, %.lr.ph ], [ %.sroa.8.139.ph, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread" ] - %.sroa.10.0302 = phi i64 [ undef, %.lr.ph ], [ %.sroa.10.137.ph, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread" ] - %.sroa.11.0298 = phi ptr [ undef, %.lr.ph ], [ %.sroa.11.135.ph, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread" ] + %.sroa.4.0310 = phi i32 [ undef, %.lr.ph ], [ %.sroa.4.141.ph, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread" ] + %.sroa.8.0306 = phi i32 [ undef, %.lr.ph ], [ %.sroa.8.139.ph, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread" ] + %.sroa.10.0302 = phi i48 [ undef, %.lr.ph ], [ %.sroa.10.137.ph, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread" ] + %.sroa.11.0298 = phi i64 [ undef, %.lr.ph ], [ %.sroa.11.135.ph, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread" ] + %.sroa.12.0333 = phi ptr [ undef, %.lr.ph ], [ %.sroa.12.138.ph, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread" ] call void @llvm.lifetime.start.p0(ptr nonnull %19), !noalias !6750 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %19, ptr noundef nonnull align 8 dereferenceable(96) %22, i64 96, i1 false) call void @llvm.experimental.noalias.scope.decl(metadata !6754) @@ -18780,7 +18781,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17h4d76fb1e81 unreachable .body.i7: ; preds = %.loopexit79, %.loopexit.split-lp80, %79, %72 - %.pn.i8 = phi { ptr, i32 } [ %73, %79 ], [ %73, %72 ], [ %lpad.loopexit81, %.loopexit79 ], [ %lpad.loopexit.split-lp82, %.loopexit.split-lp80 ] + %.pn.i8 = phi { ptr, i32 } [ %73, %79 ], [ %73, %72 ], [ %lpad.loopexit81, %.loopexit90 ], [ %lpad.loopexit.split-lp82, %.loopexit.split-lp91 ] %89 = getelementptr inbounds nuw i8, ptr %46, i64 48 %90 = load i32, ptr %89, align 4, !noalias !6795, !noundef !4 %91 = add i32 %90, -1 @@ -19073,7 +19074,7 @@ common.resume.i: ; preds = %360, %"_ZN4core3ptr br label %.body.i.i.i .body.i.i.i: ; preds = %.loopexit85, %.loopexit.split-lp86, %287, %282, %216 - %eh.lpad-body.i.i.i = phi { ptr, i32 } [ %.pn2.i.i.i.i.i.i, %216 ], [ %283, %287 ], [ %283, %282 ], [ %lpad.loopexit87, %.loopexit85 ], [ %lpad.loopexit.split-lp88, %.loopexit.split-lp86 ] + %eh.lpad-body.i.i.i = phi { ptr, i32 } [ %.pn2.i.i.i.i.i.i, %216 ], [ %283, %287 ], [ %283, %282 ], [ %lpad.loopexit87, %.loopexit96 ], [ %lpad.loopexit.split-lp88, %.loopexit.split-lp97 ] %.val81.i.i.i = load ptr, ptr %38, align 8, !noalias !6872, !nonnull !4, !noundef !4 %172 = getelementptr inbounds nuw i8, ptr %.val81.i.i.i, i64 48 %173 = load i32, ptr %172, align 4, !noalias !6872, !noundef !4 @@ -19741,12 +19742,12 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit108.i.i.i: ; preds = %297 br label %347 347: ; preds = %.loopexit90, %"_ZN3ide6rename16find_definitions28_$u7b$$u7b$closure$u7d$$u7d$17h864eea0f150f215dE.exit.thread.i.i" - %.val288 = phi ptr [ %.val.le295, %"_ZN3ide6rename16find_definitions28_$u7b$$u7b$closure$u7d$$u7d$17h864eea0f150f215dE.exit.thread.i.i" ], [ %.val.le, %.loopexit90 ] - %.sroa.21.sroa.0.0.insert.insert53.i.i = phi i64 [ %.sroa.21.sroa.0.0.insert.ext46.i.i, %"_ZN3ide6rename16find_definitions28_$u7b$$u7b$closure$u7d$$u7d$17h864eea0f150f215dE.exit.thread.i.i" ], [ %.sroa.21.sroa.0.0.insert.insert53.i.i.ph, %.loopexit90 ] - %.sroa.13.2.extract.trunc52.i.i = phi i48 [ %.sroa.13.2.extract.trunc43.i.i, %"_ZN3ide6rename16find_definitions28_$u7b$$u7b$closure$u7d$$u7d$17h864eea0f150f215dE.exit.thread.i.i" ], [ %.sroa.13.2.extract.trunc52.i.i.ph, %.loopexit90 ] - %.sroa.13.0.extract.trunc51.i.i = phi i16 [ %.sroa.13.0.extract.trunc41.i.i, %"_ZN3ide6rename16find_definitions28_$u7b$$u7b$closure$u7d$$u7d$17h864eea0f150f215dE.exit.thread.i.i" ], [ %.sroa.13.0.extract.trunc51.i.i.ph, %.loopexit90 ] - %.sroa.54.8..sroa.54.12..sroa.5.0.copyload250.i.i = phi i32 [ %.sroa.54.8..sroa.54.8..sroa.54.12..sroa.5.0.copyload270.i.i, %"_ZN3ide6rename16find_definitions28_$u7b$$u7b$closure$u7d$$u7d$17h864eea0f150f215dE.exit.thread.i.i" ], [ %.sroa.54.8..sroa.54.12..sroa.5.0.copyload250.i.i.ph, %.loopexit90 ] - %.sroa.54.4..sroa.54.8..sroa.5.0.copyload149.i.i = phi i32 [ %.sroa.54.4..sroa.54.4..sroa.54.8..sroa.5.0.copyload166.i.i, %"_ZN3ide6rename16find_definitions28_$u7b$$u7b$closure$u7d$$u7d$17h864eea0f150f215dE.exit.thread.i.i" ], [ %.sroa.54.4..sroa.54.8..sroa.5.0.copyload149.i.i.ph, %.loopexit90 ] + %.val288 = phi ptr [ %.val.le295, %"_ZN3ide6rename16find_definitions28_$u7b$$u7b$closure$u7d$$u7d$17h864eea0f150f215dE.exit.thread.i.i" ], [ %.val.le, %.loopexit101 ] + %.sroa.21.sroa.0.0.insert.insert53.i.i = phi i64 [ %.sroa.21.sroa.0.0.insert.ext46.i.i, %"_ZN3ide6rename16find_definitions28_$u7b$$u7b$closure$u7d$$u7d$17h864eea0f150f215dE.exit.thread.i.i" ], [ %.sroa.21.sroa.0.0.insert.insert53.i.i.ph, %.loopexit101 ] + %.sroa.13.2.extract.trunc52.i.i = phi i48 [ %.sroa.13.2.extract.trunc43.i.i, %"_ZN3ide6rename16find_definitions28_$u7b$$u7b$closure$u7d$$u7d$17h864eea0f150f215dE.exit.thread.i.i" ], [ %.sroa.13.2.extract.trunc52.i.i.ph, %.loopexit101 ] + %.sroa.13.0.extract.trunc51.i.i = phi i16 [ %.sroa.13.0.extract.trunc41.i.i, %"_ZN3ide6rename16find_definitions28_$u7b$$u7b$closure$u7d$$u7d$17h864eea0f150f215dE.exit.thread.i.i" ], [ %.sroa.13.0.extract.trunc51.i.i.ph, %.loopexit101 ] + %.sroa.54.8..sroa.54.12..sroa.5.0.copyload250.i.i = phi i32 [ %.sroa.54.8..sroa.54.8..sroa.54.12..sroa.5.0.copyload270.i.i, %"_ZN3ide6rename16find_definitions28_$u7b$$u7b$closure$u7d$$u7d$17h864eea0f150f215dE.exit.thread.i.i" ], [ %.sroa.54.8..sroa.54.12..sroa.5.0.copyload250.i.i.ph, %.loopexit101 ] + %.sroa.54.4..sroa.54.8..sroa.5.0.copyload149.i.i = phi i32 [ %.sroa.54.4..sroa.54.4..sroa.54.8..sroa.5.0.copyload166.i.i, %"_ZN3ide6rename16find_definitions28_$u7b$$u7b$closure$u7d$$u7d$17h864eea0f150f215dE.exit.thread.i.i" ], [ %.sroa.54.4..sroa.54.8..sroa.5.0.copyload149.i.i.ph, %.loopexit101 ] %.sroa.5.sroa.5.0.insert.ext24.i.i = zext i32 %.sroa.54.8..sroa.54.12..sroa.5.0.copyload250.i.i to i64 %.sroa.5.sroa.5.0.insert.shift25.i.i = shl nuw i64 %.sroa.5.sroa.5.0.insert.ext24.i.i, 32 %.sroa.5.sroa.0.0.insert.ext21.i.i = zext i32 %.sroa.54.4..sroa.54.8..sroa.5.0.copyload149.i.i to i64 @@ -19809,10 +19810,6 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit108.i.i.i: ; preds = %297 "_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit": ; preds = %344 %362 = ptrtoint ptr %.sroa.54.i.sroa.0.2.i to i64 %.sroa.54.i.sroa.0.0.extract.trunc.i = trunc i64 %362 to i32 - %.sroa.5.sroa.5.0.insert.ext.i.i = zext i32 %.sroa.54.8..sroa.54.8..sroa.54.12..sroa.5.0.copyload285.i.i to i64 - %.sroa.5.sroa.5.0.insert.shift.i.i = shl nuw i64 %.sroa.5.sroa.5.0.insert.ext.i.i, 32 - %.sroa.5.sroa.0.0.insert.ext.i.i = zext i32 %.sroa.54.4..sroa.54.4..sroa.54.8..sroa.5.0.copyload186.i.i to i64 - %.sroa.5.sroa.0.0.insert.insert.i.i = or disjoint i64 %.sroa.5.sroa.5.0.insert.shift.i.i, %.sroa.5.sroa.0.0.insert.ext.i.i %363 = icmp eq i16 %.sroa.13.0.extract.trunc89.i.i, 274 br i1 %363, label %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread", label %"_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h12f6dce61817a578E.exit" @@ -19824,10 +19821,11 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit108.i.i.i: ; preds = %297 "_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread": ; preds = %344, %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17he567ab7527aac455E.exit40.thread.i.i.i.i.i", %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" %.sroa.020.143.ph = phi i32 [ %.sroa.54.i.sroa.0.0.extract.trunc.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ], [ %.sroa.020.0314, %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17he567ab7527aac455E.exit40.thread.i.i.i.i.i" ], [ %.sroa.020.0314, %344 ] - %.sroa.4.141.ph = phi i64 [ %.sroa.5.sroa.0.0.insert.insert.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ], [ %.sroa.4.0310, %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17he567ab7527aac455E.exit40.thread.i.i.i.i.i" ], [ %.sroa.4.0310, %344 ] - %.sroa.8.139.ph = phi i48 [ %.sroa.13.2.extract.trunc90.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ], [ %.sroa.8.0306, %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17he567ab7527aac455E.exit40.thread.i.i.i.i.i" ], [ %.sroa.8.0306, %344 ] - %.sroa.10.137.ph = phi i64 [ %.sroa.21.sroa.0.0.insert.insert91.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ], [ %.sroa.10.0302, %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17he567ab7527aac455E.exit40.thread.i.i.i.i.i" ], [ %.sroa.10.0302, %344 ] - %.sroa.11.135.ph = phi ptr [ %.sroa.26.287.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ], [ %.sroa.11.0298, %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17he567ab7527aac455E.exit40.thread.i.i.i.i.i" ], [ %.sroa.11.0298, %344 ] + %.sroa.4.141.ph = phi i32 [ %.sroa.54.4.98.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ], [ %.sroa.4.0310, %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17he567ab7527aac455E.exit40.thread.i.i.i.i.i" ], [ %.sroa.4.0310, %344 ] + %.sroa.8.139.ph = phi i32 [ %.sroa.54.8..sroa.54.8..sroa.54.12..sroa.5.0.copyload297.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ], [ %.sroa.8.0306, %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17he567ab7527aac455E.exit40.thread.i.i.i.i.i" ], [ %.sroa.8.0306, %344 ] + %.sroa.10.137.ph = phi i48 [ %.sroa.13.2.extract.trunc90.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ], [ %.sroa.10.0302, %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17he567ab7527aac455E.exit40.thread.i.i.i.i.i" ], [ %.sroa.10.0302, %344 ] + %.sroa.11.135.ph = phi i64 [ %.sroa.21.sroa.0.0.insert.insert91.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ], [ %.sroa.11.0298, %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17he567ab7527aac455E.exit40.thread.i.i.i.i.i" ], [ %.sroa.11.0298, %344 ] + %.sroa.12.138.ph = phi ptr [ %.sroa.26.299.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ], [ %.sroa.12.0333, %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17he567ab7527aac455E.exit40.thread.i.i.i.i.i" ], [ %.sroa.12.0333, %344 ] call void @llvm.lifetime.end.p0(ptr nonnull %20) call void @llvm.lifetime.start.p0(ptr nonnull %20) call void @"_ZN104_$LT$itertools..kmerge_impl..KMergeBy$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h436ff6c209d22b90E"(ptr noalias noundef nonnull sret({ i64, [12 x i64] }) align 8 captures(none) dereferenceable(104) %20, ptr noalias noundef nonnull align 8 dereferenceable(24) %1) @@ -19836,23 +19834,26 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit108.i.i.i: ; preds = %297 br i1 %.not, label %"_ZN4core3ptr659drop_in_place$LT$core..option..Option$LT$core..iter..adapters..flatten..FlatMap$LT$core..option..IntoIter$LT$rowan..api..SyntaxNode$LT$syntax..syntax_node..RustLanguage$GT$$GT$$C$core..iter..adapters..map..Map$LT$core..iter..sources..successors..Successors$LT$hir_expand..files..InFileWrapper$LT$span..HirFileId$C$rowan..api..SyntaxNode$LT$syntax..syntax_node..RustLanguage$GT$$GT$$C$hir..semantics..SemanticsImpl..ancestors_with_macros..$u7b$$u7b$closure$u7d$$u7d$$GT$$C$hir..semantics..SemanticsImpl..ancestors_with_macros..$u7b$$u7b$closure$u7d$$u7d$$GT$$C$hir..semantics..SemanticsImpl..token_ancestors_with_macros..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h0dbd933818910a99E.exit", label %44 "_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h12f6dce61817a578E.exit": ; preds = %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit", %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread45" - %.sroa.020.143 = phi i32 [ %.sroa.020.0314, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread45" ], [ %.sroa.54.i.sroa.0.0.extract.trunc.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ] - %.sroa.4.141 = phi i64 [ %.sroa.4.0310, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread45" ], [ %.sroa.5.sroa.0.0.insert.insert.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ] - %.sroa.8.139 = phi i48 [ %.sroa.8.0306, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread45" ], [ %.sroa.13.2.extract.trunc90.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ] - %.sroa.10.137 = phi i64 [ %.sroa.10.0302, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread45" ], [ %.sroa.21.sroa.0.0.insert.insert91.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ] - %.sroa.11.135 = phi ptr [ %.sroa.11.0298, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread45" ], [ %.sroa.26.287.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ] - %.sroa.5.0 = phi i16 [ 273, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread45" ], [ %.sroa.13.0.extract.trunc89.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ] - store i32 %.sroa.020.143, ptr %0, align 4, !alias.scope !7070 + %.sroa.020.143 = phi i32 [ %.sroa.020.0314, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread50" ], [ %.sroa.54.i.sroa.0.0.extract.trunc.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ] + %.sroa.4.141 = phi i32 [ %.sroa.4.0310, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread50" ], [ %.sroa.54.4.98.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ] + %.sroa.8.139 = phi i32 [ %.sroa.8.0306, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread50" ], [ %.sroa.54.8..sroa.54.8..sroa.54.12..sroa.5.0.copyload297.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ] + %.sroa.10.137 = phi i48 [ %.sroa.10.0302, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread50" ], [ %.sroa.13.2.extract.trunc90.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ] + %.sroa.11.135 = phi i64 [ %.sroa.11.0298, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread50" ], [ %.sroa.21.sroa.0.0.insert.insert91.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ] + %.sroa.5.0 = phi ptr [ %.sroa.12.0333, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread50" ], [ %.sroa.26.299.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ] + %.sroa.5.0 = phi i16 [ 273, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit.thread50" ], [ %.sroa.13.0.extract.trunc89.i.i, %"_ZN4core4iter8adapters10filter_map19filter_map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfc560dddd19c8c34E.exit" ] + store i32 %.sroa.020.148, ptr %0, align 4, !alias.scope !7070 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i64 %.sroa.4.141, ptr %.sroa.2.0..sroa_idx, align 4, !alias.scope !7070 - %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 - store i16 %.sroa.5.0, ptr %.sroa.3.0..sroa_idx, align 4, !alias.scope !7070 - %.sroa.425.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 14 - store i48 %.sroa.8.139, ptr %.sroa.425.0..sroa_idx, align 2, !alias.scope !7070 - %.sroa.526.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i64 %.sroa.10.137, ptr %.sroa.526.0..sroa_idx, align 4, !alias.scope !7070 - %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 28 - store ptr %.sroa.11.135, ptr %.sroa.6.0..sroa_idx, align 4, !alias.scope !7070 + store i32 %.sroa.4.141, ptr %.sroa.2.0..sroa_idx, align 4, !alias.scope !7070 + %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %.sroa.521.144, ptr %.sroa.3.0..sroa_idx, align 4, !alias.scope !7070 + %.sroa.425.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 + store i16 %.sroa.5.0, ptr %.sroa.425.0..sroa_idx, align 4, !alias.scope !7070 + %.sroa.526.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 14 + store i48 %.sroa.10.137, ptr %.sroa.526.0..sroa_idx, align 2, !alias.scope !7070 + %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i64 %.sroa.11.135, ptr %.sroa.6.0..sroa_idx, align 4, !alias.scope !7070 + %.sroa.7.0..sroa_idx28 = getelementptr inbounds nuw i8, ptr %0, i64 28 + store ptr %.sroa.12.138, ptr %.sroa.7.0..sroa_idx28, align 4, !alias.scope !7070 call void @llvm.lifetime.end.p0(ptr nonnull %20) br label %366 diff --git a/bench/rust-analyzer-rs/optimized/ax17c37uj31hhic.ll b/bench/rust-analyzer-rs/optimized/ax17c37uj31hhic.ll index f594a88a16a..1b64627377e 100644 --- a/bench/rust-analyzer-rs/optimized/ax17c37uj31hhic.ll +++ b/bench/rust-analyzer-rs/optimized/ax17c37uj31hhic.ll @@ -3208,32 +3208,26 @@ define hidden void @"_ZN4core4iter8adapters10filter_map15filter_map_fold28_$u7b$ %35 = getelementptr inbounds i8, ptr %28, i64 -12 %.sroa.09.0.copyload.i = load i32, ptr %35, align 4, !noalias !1207 %.sroa.2.0...sroa_idx.i = getelementptr inbounds i8, ptr %28, i64 -8 - %.sroa.2.0.copyload.i = load i32, ptr %.sroa.2.0...sroa_idx.i, align 4, !noalias !1207 - %.sroa.3.0...sroa_idx.i = getelementptr inbounds i8, ptr %28, i64 -4 - %.sroa.3.0.copyload.i = load i32, ptr %.sroa.3.0...sroa_idx.i, align 4, !noalias !1207 + %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0...sroa_idx.i, align 4, !noalias !1207 + %36 = trunc i64 %.sroa.2.0.copyload.i to i32 + %37 = lshr i64 %.sroa.2.0.copyload.i, 32 + %38 = trunc nuw i64 %37 to i32 %.sroa.04.sroa.0.0.copyload.i = load i32, ptr %2, align 4, !alias.scope !1201, !noalias !1236 %.sroa.04.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %2, i64 4 %.sroa.04.sroa.6.0.copyload.i = load i64, ptr %.sroa.04.sroa.6.0..sroa_idx.i, align 4, !alias.scope !1201, !noalias !1236 %36 = icmp eq i32 %.sroa.04.sroa.0.0.copyload.i, 0 - br i1 %36, label %37, label %38 + br i1 %36, label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.i", label %37 37: ; preds = %34 - %.sroa.04.sroa.6.4.insert.ext.i = zext i32 %.sroa.2.0.copyload.i to i64 - %.sroa.04.sroa.6.8.insert.ext.i = zext i32 %.sroa.3.0.copyload.i to i64 - %.sroa.04.sroa.6.8.insert.shift.i = shl nuw i64 %.sroa.04.sroa.6.8.insert.ext.i, 32 - %.sroa.04.sroa.6.8.insert.insert.i = or disjoint i64 %.sroa.04.sroa.6.8.insert.shift.i, %.sroa.04.sroa.6.4.insert.ext.i - br label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.i" - -38: ; preds = %34 %trunc.i.i = trunc nuw i32 %.sroa.09.0.copyload.i to i1 br i1 %trunc.i.i, label %39, label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.i" -39: ; preds = %38 +39: ; preds = %37 %.sroa.04.sroa.6.4.extract.trunc.i = trunc i64 %.sroa.04.sroa.6.0.copyload.i to i32 %.sroa.04.sroa.6.8.extract.shift.i = lshr i64 %.sroa.04.sroa.6.0.copyload.i, 32 %.sroa.04.sroa.6.8.extract.trunc.i = trunc nuw i64 %.sroa.04.sroa.6.8.extract.shift.i to i32 - %.0.sroa.speculated.i.i.i.i = tail call noundef i32 @llvm.umax.i32(i32 %.sroa.04.sroa.6.4.extract.trunc.i, i32 %.sroa.2.0.copyload.i) - %.0.sroa.speculated.i9.i.i.i = tail call noundef i32 @llvm.umin.i32(i32 %.sroa.04.sroa.6.8.extract.trunc.i, i32 %.sroa.3.0.copyload.i) + %.0.sroa.speculated.i.i.i.i = tail call noundef i32 @llvm.umax.i32(i32 %.sroa.04.sroa.6.4.extract.trunc.i, i32 %36) + %.0.sroa.speculated.i9.i.i.i = tail call noundef i32 @llvm.umin.i32(i32 %.sroa.04.sroa.6.8.extract.trunc.i, i32 %38) %40 = icmp ult i32 %.0.sroa.speculated.i9.i.i.i, %.0.sroa.speculated.i.i.i.i br i1 %40, label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17h77c103c5c0f4a5a8E.exit.thread", label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.thread18.i" @@ -3244,9 +3238,9 @@ define hidden void @"_ZN4core4iter8adapters10filter_map15filter_map_fold28_$u7b$ %.sroa.6.8.insert.insert.i = or disjoint i64 %.sroa.6.8.insert.shift.i, %.sroa.6.4.insert.ext.i br label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17h77c103c5c0f4a5a8E.exit" -"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.i": ; preds = %38, %37 - %.sroa.6.0.i = phi i64 [ %.sroa.04.sroa.6.8.insert.insert.i, %37 ], [ %.sroa.04.sroa.6.0.copyload.i, %38 ] - %.sroa.0.011.i = phi i32 [ %.sroa.09.0.copyload.i, %37 ], [ %.sroa.04.sroa.0.0.copyload.i, %38 ] +"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.i": ; preds = %37, %34 + %.sroa.6.0.i = phi i64 [ %.sroa.04.sroa.6.0.copyload.i, %40 ], [ %.sroa.2.0.copyload.i, %34 ] + %.sroa.0.011.i = phi i32 [ %.sroa.04.sroa.0.0.copyload.i, %40 ], [ %.sroa.09.0.copyload.i, %34 ] %41 = icmp eq i32 %.sroa.0.011.i, 2 br i1 %41, label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17h77c103c5c0f4a5a8E.exit.thread", label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17h77c103c5c0f4a5a8E.exit" @@ -9650,23 +9644,17 @@ define hidden void @"_ZN92_$LT$hashbrown..map..Iter$LT$K$C$V$GT$$u20$as$u20$core %37 = getelementptr inbounds i8, ptr %30, i64 -12 %.sroa.09.0.copyload.i.i = load i32, ptr %37, align 4, !noalias !2421 %.sroa.2.0...sroa_idx.i.i = getelementptr inbounds i8, ptr %30, i64 -8 - %.sroa.2.0.copyload.i.i = load i32, ptr %.sroa.2.0...sroa_idx.i.i, align 4, !noalias !2421 - %.sroa.3.0...sroa_idx.i.i = getelementptr inbounds i8, ptr %30, i64 -4 - %.sroa.3.0.copyload.i.i = load i32, ptr %.sroa.3.0...sroa_idx.i.i, align 4, !noalias !2421 + %.sroa.2.0.copyload.i.i = load i64, ptr %.sroa.2.0...sroa_idx.i.i, align 4, !noalias !2421 + %38 = trunc i64 %.sroa.2.0.copyload.i.i to i32 + %39 = lshr i64 %.sroa.2.0.copyload.i.i, 32 + %40 = trunc nuw i64 %39 to i32 %.sroa.04.sroa.0.0.copyload.i.i = load i32, ptr %7, align 4, !alias.scope !2450, !noalias !2451 %.sroa.04.sroa.6.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %1, i64 -8 %.sroa.04.sroa.6.0.copyload.i.i = load i64, ptr %.sroa.04.sroa.6.0..sroa_idx.i.i, align 4, !alias.scope !2450, !noalias !2451 %38 = icmp eq i32 %.sroa.04.sroa.0.0.copyload.i.i, 0 - br i1 %38, label %39, label %40 + br i1 %38, label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.i.i", label %40 39: ; preds = %36 - %.sroa.04.sroa.6.4.insert.ext.i.i = zext i32 %.sroa.2.0.copyload.i.i to i64 - %.sroa.04.sroa.6.8.insert.ext.i.i = zext i32 %.sroa.3.0.copyload.i.i to i64 - %.sroa.04.sroa.6.8.insert.shift.i.i = shl nuw i64 %.sroa.04.sroa.6.8.insert.ext.i.i, 32 - %.sroa.04.sroa.6.8.insert.insert.i.i = or disjoint i64 %.sroa.04.sroa.6.8.insert.shift.i.i, %.sroa.04.sroa.6.4.insert.ext.i.i - br label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.i.i" - -40: ; preds = %36 %trunc.i.i.i = trunc nuw i32 %.sroa.09.0.copyload.i.i to i1 br i1 %trunc.i.i.i, label %41, label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.i.i" @@ -9674,8 +9662,8 @@ define hidden void @"_ZN92_$LT$hashbrown..map..Iter$LT$K$C$V$GT$$u20$as$u20$core %.sroa.04.sroa.6.4.extract.trunc.i.i = trunc i64 %.sroa.04.sroa.6.0.copyload.i.i to i32 %.sroa.04.sroa.6.8.extract.shift.i.i = lshr i64 %.sroa.04.sroa.6.0.copyload.i.i, 32 %.sroa.04.sroa.6.8.extract.trunc.i.i = trunc nuw i64 %.sroa.04.sroa.6.8.extract.shift.i.i to i32 - %.0.sroa.speculated.i.i.i.i.i = tail call noundef i32 @llvm.umax.i32(i32 %.sroa.04.sroa.6.4.extract.trunc.i.i, i32 %.sroa.2.0.copyload.i.i) - %.0.sroa.speculated.i9.i.i.i.i = tail call noundef i32 @llvm.umin.i32(i32 %.sroa.04.sroa.6.8.extract.trunc.i.i, i32 %.sroa.3.0.copyload.i.i) + %.0.sroa.speculated.i.i.i.i.i = tail call noundef i32 @llvm.umax.i32(i32 %.sroa.04.sroa.6.4.extract.trunc.i.i, i32 %38) + %.0.sroa.speculated.i9.i.i.i.i = tail call noundef i32 @llvm.umin.i32(i32 %.sroa.04.sroa.6.8.extract.trunc.i.i, i32 %40) %42 = icmp ult i32 %.0.sroa.speculated.i9.i.i.i.i, %.0.sroa.speculated.i.i.i.i.i br i1 %42, label %"_ZN4core4iter8adapters10filter_map15filter_map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h7a29555b5c726892E.llvm.17704032041304388331.exit", label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.thread18.i.i" @@ -9686,9 +9674,9 @@ define hidden void @"_ZN92_$LT$hashbrown..map..Iter$LT$K$C$V$GT$$u20$as$u20$core %.sroa.6.8.insert.insert.i.i = or disjoint i64 %.sroa.6.8.insert.shift.i.i, %.sroa.6.4.insert.ext.i.i br label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17h77c103c5c0f4a5a8E.exit.i" -"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.i.i": ; preds = %40, %39 - %.sroa.6.0.i.i = phi i64 [ %.sroa.04.sroa.6.8.insert.insert.i.i, %39 ], [ %.sroa.04.sroa.6.0.copyload.i.i, %40 ] - %.sroa.0.011.i.i = phi i32 [ %.sroa.09.0.copyload.i.i, %39 ], [ %.sroa.04.sroa.0.0.copyload.i.i, %40 ] +"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.i.i": ; preds = %40, %36 + %.sroa.6.0.i.i = phi i64 [ %.sroa.04.sroa.6.0.copyload.i.i, %40 ], [ %.sroa.2.0.copyload.i.i, %36 ] + %.sroa.0.011.i.i = phi i32 [ %.sroa.04.sroa.0.0.copyload.i.i, %40 ], [ %.sroa.09.0.copyload.i.i, %36 ] %43 = icmp eq i32 %.sroa.0.011.i.i, 2 br i1 %43, label %"_ZN4core4iter8adapters10filter_map15filter_map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h7a29555b5c726892E.llvm.17704032041304388331.exit", label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17h77c103c5c0f4a5a8E.exit.i" @@ -27249,21 +27237,15 @@ define hidden void @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9fold_impl17h446796 %50 = getelementptr inbounds i8, ptr %43, i64 -12 %.sroa.09.0.copyload.i.i.i = load i32, ptr %50, align 4, !noalias !6471 %.sroa.2.0...sroa_idx.i.i.i = getelementptr inbounds i8, ptr %43, i64 -8 - %.sroa.2.0.copyload.i.i.i = load i32, ptr %.sroa.2.0...sroa_idx.i.i.i, align 4, !noalias !6471 - %.sroa.3.0...sroa_idx.i.i.i = getelementptr inbounds i8, ptr %43, i64 -4 - %.sroa.3.0.copyload.i.i.i = load i32, ptr %.sroa.3.0...sroa_idx.i.i.i, align 4, !noalias !6471 + %.sroa.2.0.copyload.i.i.i = load i64, ptr %.sroa.2.0...sroa_idx.i.i.i, align 4, !noalias !6471 + %51 = trunc i64 %.sroa.2.0.copyload.i.i.i to i32 + %52 = lshr i64 %.sroa.2.0.copyload.i.i.i, 32 + %53 = trunc nuw i64 %52 to i32 %.sroa.04.sroa.0.0.copyload.i.i.i = load i32, ptr %22, align 4, !alias.scope !6500, !noalias !6501 %.sroa.04.sroa.6.0..sroa_idx.i.i.i = getelementptr inbounds i8, ptr %20, i64 -8 %.sroa.04.sroa.6.0.copyload.i.i.i = load i64, ptr %.sroa.04.sroa.6.0..sroa_idx.i.i.i, align 4, !alias.scope !6500, !noalias !6501 %51 = icmp eq i32 %.sroa.04.sroa.0.0.copyload.i.i.i, 0 - br i1 %51, label %52, label %53 - -52: ; preds = %49 - %.sroa.04.sroa.6.4.insert.ext.i.i.i = zext i32 %.sroa.2.0.copyload.i.i.i to i64 - %.sroa.04.sroa.6.8.insert.ext.i.i.i = zext i32 %.sroa.3.0.copyload.i.i.i to i64 - %.sroa.04.sroa.6.8.insert.shift.i.i.i = shl nuw i64 %.sroa.04.sroa.6.8.insert.ext.i.i.i, 32 - %.sroa.04.sroa.6.8.insert.insert.i.i.i = or disjoint i64 %.sroa.04.sroa.6.8.insert.shift.i.i.i, %.sroa.04.sroa.6.4.insert.ext.i.i.i - br label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.i.i.i" + br i1 %51, label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.i.i.i", label %53 53: ; preds = %49 %trunc.i.i.i.i = trunc nuw i32 %.sroa.09.0.copyload.i.i.i to i1 @@ -27273,8 +27255,8 @@ define hidden void @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9fold_impl17h446796 %.sroa.04.sroa.6.4.extract.trunc.i.i.i = trunc i64 %.sroa.04.sroa.6.0.copyload.i.i.i to i32 %.sroa.04.sroa.6.8.extract.shift.i.i.i = lshr i64 %.sroa.04.sroa.6.0.copyload.i.i.i, 32 %.sroa.04.sroa.6.8.extract.trunc.i.i.i = trunc nuw i64 %.sroa.04.sroa.6.8.extract.shift.i.i.i to i32 - %.0.sroa.speculated.i.i.i.i.i.i = tail call noundef i32 @llvm.umax.i32(i32 %.sroa.04.sroa.6.4.extract.trunc.i.i.i, i32 %.sroa.2.0.copyload.i.i.i) - %.0.sroa.speculated.i9.i.i.i.i.i = tail call noundef i32 @llvm.umin.i32(i32 %.sroa.04.sroa.6.8.extract.trunc.i.i.i, i32 %.sroa.3.0.copyload.i.i.i) + %.0.sroa.speculated.i.i.i.i.i.i = tail call noundef i32 @llvm.umax.i32(i32 %.sroa.04.sroa.6.4.extract.trunc.i.i.i, i32 %51) + %.0.sroa.speculated.i9.i.i.i.i.i = tail call noundef i32 @llvm.umin.i32(i32 %.sroa.04.sroa.6.8.extract.trunc.i.i.i, i32 %53) %55 = icmp ult i32 %.0.sroa.speculated.i9.i.i.i.i.i, %.0.sroa.speculated.i.i.i.i.i.i br i1 %55, label %"_ZN92_$LT$hashbrown..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold28_$u7b$$u7b$closure$u7d$$u7d$17h4f93e566d727b78fE.llvm.17704032041304388331.exit", label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.thread18.i.i.i" @@ -27285,9 +27267,9 @@ define hidden void @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9fold_impl17h446796 %.sroa.6.8.insert.insert.i.i.i = or disjoint i64 %.sroa.6.8.insert.shift.i.i.i, %.sroa.6.4.insert.ext.i.i.i br label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17h77c103c5c0f4a5a8E.exit.i.i" -"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.i.i.i": ; preds = %53, %52 - %.sroa.6.0.i.i.i = phi i64 [ %.sroa.04.sroa.6.8.insert.insert.i.i.i, %52 ], [ %.sroa.04.sroa.6.0.copyload.i.i.i, %53 ] - %.sroa.0.011.i.i.i = phi i32 [ %.sroa.09.0.copyload.i.i.i, %52 ], [ %.sroa.04.sroa.0.0.copyload.i.i.i, %53 ] +"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17he836d197c28c8457E.exit.i.i.i": ; preds = %53, %49 + %.sroa.6.0.i.i.i = phi i64 [ %.sroa.04.sroa.6.0.copyload.i.i.i, %55 ], [ %.sroa.2.0.copyload.i.i.i, %49 ] + %.sroa.0.011.i.i.i = phi i32 [ %.sroa.04.sroa.0.0.copyload.i.i.i, %55 ], [ %.sroa.09.0.copyload.i.i.i, %49 ] %56 = icmp eq i32 %.sroa.0.011.i.i.i, 2 br i1 %56, label %"_ZN92_$LT$hashbrown..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold28_$u7b$$u7b$closure$u7d$$u7d$17h4f93e566d727b78fE.llvm.17704032041304388331.exit", label %"_ZN6ide_db6search11SearchScope12intersection28_$u7b$$u7b$closure$u7d$$u7d$17h77c103c5c0f4a5a8E.exit.i.i" diff --git a/bench/typst-rs/optimized/m09o5qr68f5khss.ll b/bench/typst-rs/optimized/m09o5qr68f5khss.ll index fc2b3aa3e05..cf094d8fde8 100644 --- a/bench/typst-rs/optimized/m09o5qr68f5khss.ll +++ b/bench/typst-rs/optimized/m09o5qr68f5khss.ll @@ -6950,48 +6950,41 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !1874 call void @"_ZN81_$LT$typst..text..FontFeatures$u20$as$u20$typst..foundations..cast..FromValue$GT$10from_value28_$u7b$$u7b$closure$u7d$$u7d$17hccfc95e7c97f48e6E.llvm.14728845296163125433"(ptr noalias noundef nonnull sret({ i32, [5 x i32] }) align 8 captures(none) dereferenceable(24) %5, ptr noalias nonnull align 1 poison, ptr noalias noundef nonnull readonly align 8 captures(none) dereferenceable(48) %7), !noalias !1879 %.sroa.0.0.copyload.i.i = load i32, ptr %5, align 8, !noalias !1874 - %.sroa.5.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %5, i64 8 - %.sroa.5.0.copyload.i.i = load i32, ptr %.sroa.5.0..sroa_idx.i.i, align 8, !noalias !1874 + %.sroa.5.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %5, i64 4 + %.sroa.5.0.copyload.i.i = load i64, ptr %.sroa.5.0..sroa_idx.i.i, align 4, !noalias !1866 + %12 = lshr i64 %.sroa.4.0.copyload.i.i, 32 + %13 = trunc nuw i64 %12 to i32 %.sroa.7.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %5, i64 12 %trunc.i.i.i.i = trunc nuw i32 %.sroa.0.0.copyload.i.i to i1 - br i1 %trunc.i.i.i.i, label %12, label %20 - -12: ; preds = %10 - %13 = load i64, ptr %3, align 8, !range !221, !alias.scope !1880, !noalias !1883, !noundef !4 - %14 = icmp ne i64 %13, 0 - %15 = getelementptr inbounds nuw i8, ptr %3, i64 23 - %16 = load i8, ptr %15, align 1, !alias.scope !1880, !noalias !1883 - %17 = icmp sgt i8 %16, -1 - %or.cond.i.i.i.i = select i1 %14, i1 %17, i1 false - br i1 %or.cond.i.i.i.i, label %18, label %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i.i" + br i1 %trunc.i.i.i.i, label %14, label %24 -18: ; preds = %12 - %19 = getelementptr inbounds nuw i8, ptr %3, i64 8 - invoke void @"_ZN68_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3d104556f500dee7E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %19) - to label %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i.i" unwind label %21, !noalias !1883 +18: ; preds = %10 + %15 = load i64, ptr %3, align 8, !range !221, !alias.scope !1880, !noalias !1883, !noundef !4 + %16 = icmp ne i64 %15, 0 + %17 = getelementptr inbounds nuw i8, ptr %3, i64 23 + %18 = load i8, ptr %17, align 1, !alias.scope !1880, !noalias !1883 + %19 = icmp sgt i8 %18, -1 + %or.cond.i.i.i.i = select i1 %16, i1 %19, i1 false + br i1 %or.cond.i.i.i.i, label %20, label %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i.i" -20: ; preds = %10 - %.sroa.4.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %5, i64 4 - %.sroa.4.0.copyload.i.i = load i32, ptr %.sroa.4.0..sroa_idx.i.i, align 4, !noalias !1874 - %.sroa.6.4.insert.ext.i = zext i32 %.sroa.4.0.copyload.i.i to i64 - %.sroa.6.8.insert.ext.i = zext i32 %.sroa.5.0.copyload.i.i to i64 - %.sroa.6.8.insert.shift.i = shl nuw i64 %.sroa.6.8.insert.ext.i, 32 - %.sroa.6.8.insert.insert.i = or disjoint i64 %.sroa.6.8.insert.shift.i, %.sroa.6.4.insert.ext.i - br label %23 +20: ; preds = %14 + %.sroa.4.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %3, i64 8 + invoke void @"_ZN68_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3d104556f500dee7E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %.sroa.4.0..sroa_idx.i.i) + to label %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i.i" unwind label %22, !noalias !1883 -21: ; preds = %18 +21: ; preds = %20 %22 = landingpad { ptr, i32 } cleanup store i64 1, ptr %3, align 8, !noalias !1883 - store i32 %.sroa.5.0.copyload.i.i, ptr %19, align 8, !noalias !1883 + store i32 %13, ptr %21, align 8, !noalias !1883 %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %3, i64 12 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx.i.i.i, ptr noundef nonnull align 4 dereferenceable(12) %.sroa.7.0..sroa_idx.i.i, i64 12, i1 false), !noalias !1888 resume { ptr, i32 } %22 -"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i.i": ; preds = %18, %12 +"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i.i": ; preds = %20, %14 store i64 1, ptr %3, align 8, !noalias !1883 %.sroa.5.0..sroa_idx4.i.i.i = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i32 %.sroa.5.0.copyload.i.i, ptr %.sroa.5.0..sroa_idx4.i.i.i, align 8, !noalias !1883 + store i32 %13, ptr %.sroa.5.0..sroa_idx4.i.i.i, align 8, !noalias !1883 %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx4.sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %3, i64 12 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx4.sroa_idx.i.i.i, ptr noundef nonnull align 4 dereferenceable(12) %.sroa.7.0..sroa_idx.i.i, i64 12, i1 false), !noalias !1888 br label %23 @@ -7001,9 +6994,9 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ store i32 2, ptr %0, align 4, !alias.scope !1889, !noalias !1892 br label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h2638e334b712c029E.llvm.14728845296163125433.exit -23: ; preds = %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i.i", %20 - %.sroa.6.1.i = phi i64 [ undef, %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i.i" ], [ %.sroa.6.8.insert.insert.i, %20 ] - %.sroa.04.0.i = phi i32 [ 0, %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i.i" ], [ 1, %20 ] +23: ; preds = %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i.i", %10 + %.sroa.6.1.i = phi i64 [ undef, %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i.i" ], [ %.sroa.4.0.copyload.i.i, %10 ] + %.sroa.04.0.i = phi i32 [ 0, %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i.i" ], [ 1, %10 ] call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !1874 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !1866 store i32 %.sroa.04.0.i, ptr %0, align 4, !alias.scope !1893, !noalias !1892 @@ -43822,51 +43815,44 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17h2638e334b7 call void @"_ZN81_$LT$typst..text..FontFeatures$u20$as$u20$typst..foundations..cast..FromValue$GT$10from_value28_$u7b$$u7b$closure$u7d$$u7d$17hccfc95e7c97f48e6E.llvm.14728845296163125433"(ptr noalias noundef nonnull sret({ i32, [5 x i32] }) align 8 captures(none) dereferenceable(24) %4, ptr noalias nonnull align 1 poison, ptr noalias noundef nonnull readonly align 8 captures(none) dereferenceable(48) %6), !noalias !11789 %.sroa.0.0.copyload.i = load i32, ptr %4, align 8, !noalias !11786 %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 4 - %.sroa.4.0.copyload.i = load i32, ptr %.sroa.4.0..sroa_idx.i, align 4, !noalias !11786 - %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 8 - %.sroa.5.0.copyload.i = load i32, ptr %.sroa.5.0..sroa_idx.i, align 8, !noalias !11786 + %.sroa.4.0.copyload.i = load i64, ptr %.sroa.4.0..sroa_idx.i, align 4 + %11 = lshr i64 %.sroa.4.0.copyload.i, 32 + %12 = trunc nuw i64 %11 to i32 %.sroa.7.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 12 tail call void @llvm.experimental.noalias.scope.decl(metadata !11790) %trunc.i.i.i = trunc nuw i32 %.sroa.0.0.copyload.i to i1 - br i1 %trunc.i.i.i, label %11, label %21 - -11: ; preds = %9 - %12 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %13 = load ptr, ptr %12, align 8, !alias.scope !11793, !noalias !11794, !nonnull !4, !align !36, !noundef !4 - %14 = load i64, ptr %13, align 8, !range !221, !alias.scope !11797, !noalias !11800, !noundef !4 - %15 = icmp ne i64 %14, 0 - %16 = getelementptr inbounds nuw i8, ptr %13, i64 23 - %17 = load i8, ptr %16, align 1, !alias.scope !11797, !noalias !11800 - %18 = icmp sgt i8 %17, -1 - %or.cond.i.i.i = select i1 %15, i1 %18, i1 false - br i1 %or.cond.i.i.i, label %19, label %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i" + br i1 %trunc.i.i.i, label %13, label %25 -19: ; preds = %11 - %20 = getelementptr inbounds nuw i8, ptr %13, i64 8 - invoke void @"_ZN68_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3d104556f500dee7E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %20) - to label %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i" unwind label %22, !noalias !11800 +19: ; preds = %9 + %20 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %15 = load ptr, ptr %14, align 8, !alias.scope !11793, !noalias !11794, !nonnull !4, !align !36, !noundef !4 + %16 = load i64, ptr %15, align 8, !range !221, !alias.scope !11797, !noalias !11800, !noundef !4 + %17 = icmp ne i64 %16, 0 + %18 = getelementptr inbounds nuw i8, ptr %15, i64 23 + %19 = load i8, ptr %18, align 1, !alias.scope !11797, !noalias !11800 + %20 = icmp sgt i8 %19, -1 + %or.cond.i.i.i = select i1 %17, i1 %20, i1 false + br i1 %or.cond.i.i.i, label %21, label %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i" -21: ; preds = %9 - %.sroa.6.4.insert.ext = zext i32 %.sroa.4.0.copyload.i to i64 - %.sroa.6.8.insert.ext = zext i32 %.sroa.5.0.copyload.i to i64 - %.sroa.6.8.insert.shift = shl nuw i64 %.sroa.6.8.insert.ext, 32 - %.sroa.6.8.insert.insert = or disjoint i64 %.sroa.6.8.insert.shift, %.sroa.6.4.insert.ext - br label %24 +21: ; preds = %19 + %22 = getelementptr inbounds nuw i8, ptr %15, i64 8 + invoke void @"_ZN68_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3d104556f500dee7E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %22) + to label %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i" unwind label %23, !noalias !11800 -22: ; preds = %19 +22: ; preds = %21 %23 = landingpad { ptr, i32 } cleanup - store i64 1, ptr %13, align 8, !noalias !11800 - store i32 %.sroa.5.0.copyload.i, ptr %20, align 8, !noalias !11800 - %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %13, i64 12 + store i64 1, ptr %15, align 8, !noalias !11800 + store i32 %12, ptr %22, align 8, !noalias !11800 + %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %15, i64 12 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx.i.i, ptr noundef nonnull align 4 dereferenceable(12) %.sroa.7.0..sroa_idx.i, i64 12, i1 false), !noalias !11786 resume { ptr, i32 } %23 -"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i": ; preds = %19, %11 - store i64 1, ptr %13, align 8, !noalias !11800 - %.sroa.5.0..sroa_idx4.i.i = getelementptr inbounds nuw i8, ptr %13, i64 8 - store i32 %.sroa.5.0.copyload.i, ptr %.sroa.5.0..sroa_idx4.i.i, align 8, !noalias !11800 - %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx4.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %13, i64 12 +"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i": ; preds = %21, %13 + store i64 1, ptr %15, align 8, !noalias !11800 + %.sroa.5.0..sroa_idx4.i.i = getelementptr inbounds nuw i8, ptr %15, i64 8 + store i32 %12, ptr %.sroa.5.0..sroa_idx4.i.i, align 8, !noalias !11800 + %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx4.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %15, i64 12 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx4.sroa_idx.i.i, ptr noundef nonnull align 4 dereferenceable(12) %.sroa.7.0..sroa_idx.i, i64 12, i1 false), !noalias !11786 br label %24 @@ -43875,9 +43861,9 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17h2638e334b7 store i32 2, ptr %0, align 4, !alias.scope !11801 br label %25 -24: ; preds = %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i", %21 - %.sroa.6.1 = phi i64 [ undef, %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i" ], [ %.sroa.6.8.insert.insert, %21 ] - %.sroa.04.0 = phi i32 [ 0, %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i" ], [ 1, %21 ] +24: ; preds = %9, %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i" + %.sroa.6.1 = phi i64 [ undef, %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i" ], [ %.sroa.4.0.copyload.i, %9 ] + %.sroa.04.0 = phi i32 [ 0, %"_ZN4core3ptr128drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$ecow..string..EcoString$GT$$GT$$GT$17h694b9f010db1ccdaE.exit.i.i" ], [ 1, %9 ] call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !11786 call void @llvm.lifetime.end.p0(ptr nonnull %6) store i32 %.sroa.04.0, ptr %0, align 4, !alias.scope !11804 diff --git a/bench/wasmtime-rs/optimized/24tijvi11z3k9odl.ll b/bench/wasmtime-rs/optimized/24tijvi11z3k9odl.ll index 2c40f03c917..9d84c14f749 100644 --- a/bench/wasmtime-rs/optimized/24tijvi11z3k9odl.ll +++ b/bench/wasmtime-rs/optimized/24tijvi11z3k9odl.ll @@ -4455,14 +4455,8 @@ define hidden void @"_ZN6wiggle27GuestPtr$LT$$u5b$T$u5d$$GT$12as_slice_mut17h3b2 %.sroa.422.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 16 %.sroa.422.0.copyload.i = load i64, ptr %.sroa.422.0..sroa_idx.i, align 8, !noalias !307 %.sroa.523.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 24 - %.sroa.523.0.copyload.i = load i32, ptr %.sroa.523.0..sroa_idx.i, align 8, !noalias !307 - %.sroa.624.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 28 - %.sroa.624.0.copyload.i = load i32, ptr %.sroa.624.0..sroa_idx.i, align 4, !noalias !307 + %.sroa.523.0.copyload.i = load i64, ptr %.sroa.523.0..sroa_idx.i, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !307 - %.sroa.1030.32.insert.ext = zext i32 %.sroa.523.0.copyload.i to i64 - %.sroa.1030.36.insert.ext = zext i32 %.sroa.624.0.copyload.i to i64 - %.sroa.1030.36.insert.shift = shl nuw i64 %.sroa.1030.36.insert.ext, 32 - %.sroa.1030.36.insert.insert = or disjoint i64 %.sroa.1030.36.insert.shift, %.sroa.1030.32.insert.ext tail call void @llvm.experimental.noalias.scope.decl(metadata !310) call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.13.sroa.5.i) call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !313 @@ -4472,14 +4466,17 @@ define hidden void @"_ZN6wiggle27GuestPtr$LT$$u5b$T$u5d$$GT$12as_slice_mut17h3b2 br i1 %18, label %"_ZN6wiggle25UnsafeGuestSlice$LT$T$GT$10mut_borrow17hb1877215fda606f7E.llvm.5331966815222788767.exit.i", label %19 19: ; preds = %14 - %20 = getelementptr inbounds nuw i8, ptr %7, i64 48 - %21 = load ptr, ptr %20, align 8, !invariant.load !7, !noalias !315, !nonnull !7 - call void %21(ptr noalias noundef nonnull sret({ i32, [15 x i32] }) align 8 captures(none) dereferenceable(64) %3, ptr noundef nonnull align 1 %5, i32 noundef %.sroa.523.0.copyload.i, i32 noundef %.sroa.624.0.copyload.i), !noalias !315 - %22 = load i32, ptr %3, align 8, !range !211, !noalias !315, !noundef !7 - %23 = icmp eq i32 %22, 11 - br i1 %23, label %"_ZN6wiggle25UnsafeGuestSlice$LT$T$GT$10mut_borrow17hb1877215fda606f7E.llvm.5331966815222788767.exit.i", label %24 - -24: ; preds = %19 + %20 = lshr i64 %.sroa.523.0.copyload.i, 32 + %21 = trunc nuw i64 %20 to i32 + %22 = trunc i64 %.sroa.523.0.copyload.i to i32 + %23 = getelementptr inbounds nuw i8, ptr %7, i64 48 + %24 = load ptr, ptr %23, align 8, !invariant.load !7, !noalias !315, !nonnull !7 + call void %24(ptr noalias noundef nonnull sret({ i32, [15 x i32] }) align 8 captures(none) dereferenceable(64) %3, ptr noundef nonnull align 1 %5, i32 noundef %22, i32 noundef %21), !noalias !315 + %25 = load i32, ptr %3, align 8, !range !211, !noalias !315, !noundef !7 + %26 = icmp eq i32 %25, 11 + br i1 %26, label %"_ZN6wiggle25UnsafeGuestSlice$LT$T$GT$10mut_borrow17hb1877215fda606f7E.llvm.5331966815222788767.exit.i", label %27 + +27: ; preds = %19 %.sroa.7.0..sroa_idx2.i = getelementptr inbounds nuw i8, ptr %3, i64 4 %.sroa.7.0.copyload3.i = load i32, ptr %.sroa.7.0..sroa_idx2.i, align 4, !noalias !319 %.sroa.74.0..sroa_idx5.i = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -4496,14 +4493,14 @@ define hidden void @"_ZN6wiggle27GuestPtr$LT$$u5b$T$u5d$$GT$12as_slice_mut17h3b2 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.13.sroa.5.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.13.sroa.5.0..sroa.13.0..sroa_idx20.sroa_idx.i, i64 16, i1 false), !noalias !313 br label %"_ZN6wiggle25UnsafeGuestSlice$LT$T$GT$10mut_borrow17hb1877215fda606f7E.llvm.5331966815222788767.exit.i" -"_ZN6wiggle25UnsafeGuestSlice$LT$T$GT$10mut_borrow17hb1877215fda606f7E.llvm.5331966815222788767.exit.i": ; preds = %19, %14, %24 - %.sroa.13.sroa.0.0.i = phi i64 [ %.sroa.13.sroa.0.0.copyload.i, %24 ], [ %.sroa.1030.36.insert.insert, %14 ], [ undef, %19 ] - %.sroa.12.0.i = phi ptr [ %.sroa.12.0.copyload17.i, %24 ], [ %7, %14 ], [ %7, %19 ] - %.sroa.11.0.i = phi ptr [ %.sroa.11.0.copyload13.i, %24 ], [ %5, %14 ], [ %5, %19 ] - %.sroa.10.0.i = phi i64 [ %.sroa.10.0.copyload9.i, %24 ], [ %.sroa.422.0.copyload.i, %14 ], [ %.sroa.422.0.copyload.i, %19 ] - %.sroa.74.0.i = phi ptr [ %.sroa.74.0.copyload6.i, %24 ], [ %.sroa.021.0.copyload.i, %14 ], [ %.sroa.021.0.copyload.i, %19 ] - %.sroa.7.0.i = phi i32 [ %.sroa.7.0.copyload3.i, %24 ], [ undef, %14 ], [ undef, %19 ] - %.sroa.0.0.i = phi i32 [ %22, %24 ], [ 12, %14 ], [ 11, %19 ] +"_ZN6wiggle25UnsafeGuestSlice$LT$T$GT$10mut_borrow17hb1877215fda606f7E.llvm.5331966815222788767.exit.i": ; preds = %19, %14, %27 + %.sroa.13.sroa.0.0.i = phi i64 [ %.sroa.13.sroa.0.0.copyload.i, %27 ], [ %.sroa.523.0.copyload.i, %14 ], [ undef, %19 ] + %.sroa.12.0.i = phi ptr [ %.sroa.12.0.copyload17.i, %27 ], [ %7, %14 ], [ %7, %19 ] + %.sroa.11.0.i = phi ptr [ %.sroa.11.0.copyload13.i, %27 ], [ %5, %14 ], [ %5, %19 ] + %.sroa.10.0.i = phi i64 [ %.sroa.10.0.copyload9.i, %27 ], [ %.sroa.422.0.copyload.i, %14 ], [ %.sroa.422.0.copyload.i, %19 ] + %.sroa.74.0.i = phi ptr [ %.sroa.74.0.copyload6.i, %27 ], [ %.sroa.021.0.copyload.i, %14 ], [ %.sroa.021.0.copyload.i, %19 ] + %.sroa.7.0.i = phi i32 [ %.sroa.7.0.copyload3.i, %27 ], [ undef, %14 ], [ undef, %19 ] + %.sroa.0.0.i = phi i32 [ %25, %27 ], [ 12, %14 ], [ 11, %19 ] call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !313 %25 = add nsw i32 %.sroa.0.0.i, -11 %narrow.i = tail call i32 @llvm.umin.i32(i32 %25, i32 2) diff --git a/bench/wasmtime-rs/optimized/4v5zacq1pia1727a.ll b/bench/wasmtime-rs/optimized/4v5zacq1pia1727a.ll index 684fdf70a44..9e976820f7e 100644 --- a/bench/wasmtime-rs/optimized/4v5zacq1pia1727a.ll +++ b/bench/wasmtime-rs/optimized/4v5zacq1pia1727a.ll @@ -568,9 +568,9 @@ define hidden zeroext i1 @"_ZN14cranelift_isle9serialize13Decomposition17best_co %3 = getelementptr inbounds nuw i8, ptr %1, i64 16 %.sroa.0.0.copyload = load i16, ptr %3, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 18 - %.sroa.3.0.copyload = load i16, ptr %.sroa.3.0..sroa_idx, align 2 - %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 20 - %.sroa.5.0.copyload = load i16, ptr %.sroa.5.0..sroa_idx, align 4 + %.sroa.3.0.copyload = load i32, ptr %.sroa.3.0..sroa_idx, align 2 + %4 = zext i32 %.sroa.3.0.copyload to i48 + %5 = shl nuw i48 %4, 14 %switch = icmp eq i16 %.sroa.0.0.copyload, 1 br i1 %switch, label %4, label %5 @@ -579,49 +579,45 @@ define hidden zeroext i1 @"_ZN14cranelift_isle9serialize13Decomposition17best_co unreachable 5: ; preds = %2 - %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %7 = load ptr, ptr %6, align 8, !nonnull !3, !align !4, !noundef !3 - %8 = tail call i64 @_ZN14cranelift_isle10trie_again9BindingId5index17h7cbb3f2975c0bf3bE(i16 %.sroa.3.0.copyload) - %9 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %10 = load i64, ptr %9, align 8, !noundef !3 - %11 = icmp ult i64 %8, %10 - br i1 %11, label %12, label %28, !prof !7 - -12: ; preds = %5 - %13 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %14 = load ptr, ptr %13, align 8, !nonnull !3, !noundef !3 - %15 = getelementptr inbounds [0 x i8], ptr %14, i64 0, i64 %8 - %16 = load i8, ptr %15, align 1, !range !8, !noundef !3 - %17 = icmp eq i8 %16, 3 - br i1 %17, label %_ZN14cranelift_isle9serialize5Score6update17h0d1baf10ec1c31a6E.exit, label %18 - -18: ; preds = %12 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %20 = load i64, ptr %19, align 8, !noundef !3 - %21 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %22 = load ptr, ptr %21, align 8, !nonnull !3, !align !4, !noundef !3 - %23 = load ptr, ptr %0, align 8, !nonnull !3, !align !4, !noundef !3 - %24 = getelementptr inbounds nuw i8, ptr %1, i64 8 - store i8 %16, ptr %24, align 8 - %.sroa.5.0.insert.ext = zext i16 %.sroa.5.0.copyload to i48 - %.sroa.5.0.insert.shift = shl nuw i48 %.sroa.5.0.insert.ext, 32 - %.sroa.3.0.insert.ext = zext i16 %.sroa.3.0.copyload to i48 - %.sroa.3.0.insert.shift = shl nuw nsw i48 %.sroa.3.0.insert.ext, 16 + %8 = trunc i32 %.sroa.3.0.copyload to i16 + %9 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %10 = load ptr, ptr %9, align 8, !nonnull !3, !align !4, !noundef !3 + %11 = tail call i64 @_ZN14cranelift_isle10trie_again9BindingId5index17h7cbb3f2975c0bf3bE(i16 %8) + %12 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %13 = load i64, ptr %12, align 8, !noundef !3 + %14 = icmp ult i64 %11, %13 + br i1 %14, label %15, label %31, !prof !7 + +15: ; preds = %7 + %16 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %17 = load ptr, ptr %14, align 8, !nonnull !3, !noundef !3 + %18 = getelementptr inbounds [0 x i8], ptr %15, i64 0, i64 %11 + %19 = load i8, ptr %18, align 1, !range !8, !noundef !3 + %20 = icmp eq i8 %19, 3 + br i1 %20, label %_ZN14cranelift_isle9serialize5Score6update17h0d1baf10ec1c31a6E.exit, label %21 + +21: ; preds = %15 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %23 = load i64, ptr %22, align 8, !noundef !3 + %24 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %23 = load ptr, ptr %24, align 8, !nonnull !3, !align !4, !noundef !3 + %26 = load ptr, ptr %0, align 8, !nonnull !3, !align !4, !noundef !3 + %27 = getelementptr inbounds nuw i8, ptr %1, i64 8 + store i8 %19, ptr %27, align 8 %.sroa.0.0.insert.ext = zext nneg i16 %.sroa.0.0.copyload to i48 - %.sroa.3.0.insert.insert = or disjoint i48 %.sroa.3.0.insert.shift, %.sroa.0.0.insert.ext - %.sroa.0.0.insert.insert = or disjoint i48 %.sroa.3.0.insert.insert, %.sroa.5.0.insert.shift - %25 = tail call { i64, i1 } @_ZN14cranelift_isle9serialize14HasControlFlow9partition17h81dbf483baf6fda1E(i48 %.sroa.0.0.insert.insert, ptr nonnull align 8 %23, ptr nonnull align 8 %22, i64 %20) - %26 = extractvalue { i64, i1 } %25, 0 - %27 = extractvalue { i64, i1 } %25, 1 - store i64 %26, ptr %1, align 8 + %.sroa.3.0.insert.insert = or disjoint i48 %5, %.sroa.0.0.insert.ext + %28 = tail call { i64, i1 } @_ZN14cranelift_isle9serialize14HasControlFlow9partition17h81dbf483baf6fda1E(i48 %.sroa.3.0.insert.insert, ptr nonnull align 8 %26, ptr nonnull align 8 %25, i64 %23) + %29 = extractvalue { i64, i1 } %28, 0 + %26 = extractvalue { i64, i1 } %28, 1 + store i64 %29, ptr %1, align 8 br label %_ZN14cranelift_isle9serialize5Score6update17h0d1baf10ec1c31a6E.exit -_ZN14cranelift_isle9serialize5Score6update17h0d1baf10ec1c31a6E.exit: ; preds = %12, %18 - %.0.i = phi i1 [ %27, %18 ], [ false, %12 ] +_ZN14cranelift_isle9serialize5Score6update17h0d1baf10ec1c31a6E.exit: ; preds = %15, %21 + %.0.i = phi i1 [ %26, %21 ], [ false, %15 ] ret i1 %.0.i 28: ; preds = %5 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 %8, i64 %10, ptr nonnull align 8 @anon.fd7e60ab9a15ebc6f18dcc2034e4fa44.21) #10 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 %11, i64 %13, ptr nonnull align 8 @anon.fd7e60ab9a15ebc6f18dcc2034e4fa44.21) #10 unreachable } diff --git a/bench/yara-x-rs/optimized/0n2x7v66evj4ga77peh4kez74.ll b/bench/yara-x-rs/optimized/0n2x7v66evj4ga77peh4kez74.ll index c302c3edc99..9537fc406d6 100644 --- a/bench/yara-x-rs/optimized/0n2x7v66evj4ga77peh4kez74.ll +++ b/bench/yara-x-rs/optimized/0n2x7v66evj4ga77peh4kez74.ll @@ -2004,9 +2004,7 @@ define hidden void @"_ZN115_$LT$nom..combinator..ParserIterator$LT$Input$C$Error %.sroa.523.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %3, i64 16 %.sroa.523.0.copyload.i.i = load i64, ptr %.sroa.523.0..sroa_idx.i.i, align 8, !noalias !61 %.sroa.624.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %3, i64 24 - %.sroa.624.sroa.0.0.copyload.i.i = load i32, ptr %.sroa.624.0..sroa_idx.i.i, align 8, !noalias !61 - %.sroa.624.sroa.5.0..sroa.624.0..sroa_idx.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %3, i64 28 - %.sroa.624.sroa.5.0.copyload.i.i = load i32, ptr %.sroa.624.sroa.5.0..sroa.624.0..sroa_idx.sroa_idx.i.i, align 4, !noalias !61 + %.sroa.624.sroa.0.0.copyload.i.i = load i64, ptr %.sroa.624.0..sroa_idx.i.i, align 8 %.sroa.624.sroa.6.0..sroa.624.0..sroa_idx.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %3, i64 32 %.sroa.624.sroa.6.0.copyload.i.i = load i32, ptr %.sroa.624.sroa.6.0..sroa.624.0..sroa_idx.sroa_idx.i.i, align 8, !noalias !61 %.sroa.624.sroa.7.0..sroa.624.0..sroa_idx.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %3, i64 36 @@ -2015,12 +2013,13 @@ define hidden void @"_ZN115_$LT$nom..combinator..ParserIterator$LT$Input$C$Error br i1 %16, label %25, label %18 18: ; preds = %10 - %19 = icmp eq i32 %.sroa.624.sroa.0.0.copyload.i.i, 0 - br i1 %19, label %.thread, label %20 + %19 = and i64 %.sroa.624.sroa.0.0.copyload.i.i, 4294967295 + %20 = icmp eq i64 %19, 0 + br i1 %20, label %.thread, label %21 20: ; preds = %18 %21 = icmp ne i32 %.sroa.624.sroa.6.0.copyload.i.i, 0 - %22 = icmp ne i32 %.sroa.624.sroa.5.0.copyload.i.i, 0 + %22 = icmp ugt i64 %.sroa.624.sroa.0.0.copyload.i.i, 4294967295 %or.cond.i.i = select i1 %21, i1 true, i1 %22 br i1 %or.cond.i.i, label %27, label %.thread @@ -2034,18 +2033,14 @@ define hidden void @"_ZN115_$LT$nom..combinator..ParserIterator$LT$Input$C$Error switch i64 %26, label %default.unreachable [ i64 0, label %28 i64 1, label %.thread - i64 2, label %31 + i64 2, label %32 ] 27: ; preds = %20 - %.sroa.15.sroa.7.0.insert.ext46 = zext i32 %.sroa.624.sroa.5.0.copyload.i.i to i64 - %.sroa.15.sroa.7.0.insert.shift47 = shl nuw i64 %.sroa.15.sroa.7.0.insert.ext46, 32 - %.sroa.15.sroa.0.0.insert.ext43 = zext i32 %.sroa.624.sroa.0.0.copyload.i.i to i64 - %.sroa.15.sroa.0.0.insert.insert45 = or disjoint i64 %.sroa.15.sroa.7.0.insert.shift47, %.sroa.15.sroa.0.0.insert.ext43 store ptr %.sroa.022.0.copyload.i.i, ptr %1, align 8 store i64 %.sroa.523.0.copyload.i.i, ptr %12, align 8 store i8 57, ptr %.sroa.44.0..sroa_idx, align 8 - store i64 %.sroa.15.sroa.0.0.insert.insert45, ptr %0, align 4 + store i64 %.sroa.624.sroa.0.0.copyload.i.i, ptr %0, align 4 %.sroa.453.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i32 %.sroa.624.sroa.6.0.copyload.i.i, ptr %.sroa.453.0..sroa_idx, align 4 %.sroa.554.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 @@ -2058,24 +2053,20 @@ default.unreachable: ; preds = %25 28: ; preds = %25 store i64 %.sroa.523.0.copyload.i.i, ptr %4, align 8 store i8 60, ptr %.sroa.44.0..sroa_idx, align 8 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 12 - store i8 2, ptr %29, align 4 - br label %33 - -.thread: ; preds = %20, %18, %25 - store i8 58, ptr %.sroa.44.0..sroa_idx, align 8 %30 = getelementptr inbounds nuw i8, ptr %0, i64 12 store i8 2, ptr %30, align 4 br label %33 -31: ; preds = %25 - %.sroa.15.sroa.7.0.insert.ext = zext i32 %.sroa.624.sroa.5.0.copyload.i.i to i64 - %.sroa.15.sroa.7.0.insert.shift = shl nuw i64 %.sroa.15.sroa.7.0.insert.ext, 32 - %.sroa.15.sroa.0.0.insert.ext = zext i32 %.sroa.624.sroa.0.0.copyload.i.i to i64 - %.sroa.15.sroa.0.0.insert.insert = or disjoint i64 %.sroa.15.sroa.7.0.insert.shift, %.sroa.15.sroa.0.0.insert.ext +31: ; preds = %21, %18, %25 + store i8 58, ptr %.sroa.44.0..sroa_idx, align 8 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 12 + store i8 2, ptr %31, align 4 + br label %34 + +32: ; preds = %26 store i64 %.sroa.523.0.copyload.i.i, ptr %4, align 8 %.sroa.461.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 24 - store i64 %.sroa.15.sroa.0.0.insert.insert, ptr %.sroa.461.0..sroa_idx, align 8 + store i64 %.sroa.624.sroa.0.0.copyload.i.i, ptr %.sroa.461.0..sroa_idx, align 8 store i32 %.sroa.624.sroa.6.0.copyload.i.i, ptr %.sroa.44.0..sroa_idx, align 8 %.sroa.663.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 36 store i32 %.sroa.624.sroa.7.0.copyload.i.i, ptr %.sroa.663.0..sroa_idx, align 4 @@ -2083,7 +2074,7 @@ default.unreachable: ; preds = %25 store i8 2, ptr %32, align 4 br label %33 -33: ; preds = %31, %.thread, %28, %27, %23 +33: ; preds = %32, %.thread, %28, %27, %23 ret void } @@ -2376,9 +2367,7 @@ define hidden void @"_ZN115_$LT$nom..combinator..ParserIterator$LT$Input$C$Error %.sroa.523.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %3, i64 16 %.sroa.523.0.copyload.i.i = load i64, ptr %.sroa.523.0..sroa_idx.i.i, align 8, !noalias !106 %.sroa.624.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %3, i64 24 - %.sroa.624.sroa.0.0.copyload.i.i = load i32, ptr %.sroa.624.0..sroa_idx.i.i, align 8, !noalias !106 - %.sroa.624.sroa.5.0..sroa.624.0..sroa_idx.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %3, i64 28 - %.sroa.624.sroa.5.0.copyload.i.i = load i32, ptr %.sroa.624.sroa.5.0..sroa.624.0..sroa_idx.sroa_idx.i.i, align 4, !noalias !106 + %.sroa.624.sroa.0.0.copyload.i.i = load i64, ptr %.sroa.624.0..sroa_idx.i.i, align 8 %.sroa.624.sroa.6.0..sroa.624.0..sroa_idx.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %3, i64 32 %.sroa.624.sroa.6.0.copyload.i.i = load i32, ptr %.sroa.624.sroa.6.0..sroa.624.0..sroa_idx.sroa_idx.i.i, align 8, !noalias !106 %.sroa.624.sroa.7.0..sroa.624.0..sroa_idx.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %3, i64 36 @@ -2387,12 +2376,13 @@ define hidden void @"_ZN115_$LT$nom..combinator..ParserIterator$LT$Input$C$Error br i1 %16, label %25, label %18 18: ; preds = %10 - %19 = icmp eq i32 %.sroa.624.sroa.0.0.copyload.i.i, 0 - br i1 %19, label %.thread, label %20 + %19 = and i64 %.sroa.624.sroa.0.0.copyload.i.i, 4294967295 + %20 = icmp eq i64 %19, 0 + br i1 %20, label %.thread, label %21 20: ; preds = %18 %21 = icmp ne i32 %.sroa.624.sroa.6.0.copyload.i.i, 0 - %22 = icmp ne i32 %.sroa.624.sroa.5.0.copyload.i.i, 0 + %22 = icmp ugt i64 %.sroa.624.sroa.0.0.copyload.i.i, 4294967295 %or.cond.i.i = select i1 %21, i1 true, i1 %22 br i1 %or.cond.i.i, label %27, label %.thread @@ -2406,18 +2396,14 @@ define hidden void @"_ZN115_$LT$nom..combinator..ParserIterator$LT$Input$C$Error switch i64 %26, label %default.unreachable [ i64 0, label %28 i64 1, label %.thread - i64 2, label %31 + i64 2, label %32 ] 27: ; preds = %20 - %.sroa.15.sroa.7.0.insert.ext46 = zext i32 %.sroa.624.sroa.5.0.copyload.i.i to i64 - %.sroa.15.sroa.7.0.insert.shift47 = shl nuw i64 %.sroa.15.sroa.7.0.insert.ext46, 32 - %.sroa.15.sroa.0.0.insert.ext43 = zext i32 %.sroa.624.sroa.0.0.copyload.i.i to i64 - %.sroa.15.sroa.0.0.insert.insert45 = or disjoint i64 %.sroa.15.sroa.7.0.insert.shift47, %.sroa.15.sroa.0.0.insert.ext43 store ptr %.sroa.022.0.copyload.i.i, ptr %1, align 8 store i64 %.sroa.523.0.copyload.i.i, ptr %12, align 8 store i8 57, ptr %.sroa.44.0..sroa_idx, align 8 - store i64 %.sroa.15.sroa.0.0.insert.insert45, ptr %0, align 4 + store i64 %.sroa.624.sroa.0.0.copyload.i.i, ptr %0, align 4 %.sroa.453.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i32 %.sroa.624.sroa.6.0.copyload.i.i, ptr %.sroa.453.0..sroa_idx, align 4 %.sroa.554.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 @@ -2430,24 +2416,20 @@ default.unreachable: ; preds = %25 28: ; preds = %25 store i64 %.sroa.523.0.copyload.i.i, ptr %4, align 8 store i8 60, ptr %.sroa.44.0..sroa_idx, align 8 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 12 - store i8 2, ptr %29, align 4 - br label %33 - -.thread: ; preds = %20, %18, %25 - store i8 58, ptr %.sroa.44.0..sroa_idx, align 8 %30 = getelementptr inbounds nuw i8, ptr %0, i64 12 store i8 2, ptr %30, align 4 br label %33 -31: ; preds = %25 - %.sroa.15.sroa.7.0.insert.ext = zext i32 %.sroa.624.sroa.5.0.copyload.i.i to i64 - %.sroa.15.sroa.7.0.insert.shift = shl nuw i64 %.sroa.15.sroa.7.0.insert.ext, 32 - %.sroa.15.sroa.0.0.insert.ext = zext i32 %.sroa.624.sroa.0.0.copyload.i.i to i64 - %.sroa.15.sroa.0.0.insert.insert = or disjoint i64 %.sroa.15.sroa.7.0.insert.shift, %.sroa.15.sroa.0.0.insert.ext +31: ; preds = %21, %18, %25 + store i8 58, ptr %.sroa.44.0..sroa_idx, align 8 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 12 + store i8 2, ptr %31, align 4 + br label %34 + +32: ; preds = %26 store i64 %.sroa.523.0.copyload.i.i, ptr %4, align 8 %.sroa.461.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 24 - store i64 %.sroa.15.sroa.0.0.insert.insert, ptr %.sroa.461.0..sroa_idx, align 8 + store i64 %.sroa.624.sroa.0.0.copyload.i.i, ptr %.sroa.461.0..sroa_idx, align 8 store i32 %.sroa.624.sroa.6.0.copyload.i.i, ptr %.sroa.44.0..sroa_idx, align 8 %.sroa.663.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 36 store i32 %.sroa.624.sroa.7.0.copyload.i.i, ptr %.sroa.663.0..sroa_idx, align 4 @@ -2455,7 +2437,7 @@ default.unreachable: ; preds = %25 store i8 2, ptr %32, align 4 br label %33 -33: ; preds = %31, %.thread, %28, %27, %23 +33: ; preds = %32, %.thread, %28, %27, %23 ret void } diff --git a/bench/yara-x-rs/optimized/7kdrv2ks7wriy60c55s9rwzp3.ll b/bench/yara-x-rs/optimized/7kdrv2ks7wriy60c55s9rwzp3.ll index d9b11b4ea52..616a26add37 100644 --- a/bench/yara-x-rs/optimized/7kdrv2ks7wriy60c55s9rwzp3.ll +++ b/bench/yara-x-rs/optimized/7kdrv2ks7wriy60c55s9rwzp3.ll @@ -95285,21 +95285,22 @@ define internal fastcc void @_ZN4core5slice4sort6shared9smallsort25insertion_sor .lr.ph: ; preds = %.lr.ph.preheader, %_ZN4core5slice4sort6shared9smallsort11insert_tail17h94388cdde1f8a879E.exit %.sroa.0.04 = phi ptr [ %.sroa.0.0, %_ZN4core5slice4sort6shared9smallsort11insert_tail17h94388cdde1f8a879E.exit ], [ %.sroa.0.01, %.lr.ph.preheader ] %.pn3 = phi ptr [ %.sroa.0.04, %_ZN4core5slice4sort6shared9smallsort11insert_tail17h94388cdde1f8a879E.exit ], [ %0, %.lr.ph.preheader ] - %.val11.i = load i32, ptr %.sroa.0.04, align 4, !range !505, !noundef !8 - %3 = getelementptr i8, ptr %.pn3, i64 12 - %.val12.i = load i32, ptr %3, align 4 + %.val11.i = load i64, ptr %.sroa.0.04, align 4 + %3 = trunc i64 %.val11.i to i32 + %4 = getelementptr i8, ptr %.pn3, i64 12 + %.val12.i = load i32, ptr %4, align 4 %.val13.i = load i32, ptr %.pn3, align 4, !range !505, !noundef !8 %4 = getelementptr i8, ptr %.pn3, i64 4 %.val14.i = load i32, ptr %4, align 4 - %5 = icmp eq i32 %.val11.i, %.val13.i + %5 = icmp eq i32 %.val13.i, %3 %6 = icmp ult i32 %.val12.i, %.val14.i - %7 = icmp samesign ult i32 %.val11.i, %.val13.i + %7 = icmp samesign ugt i32 %.val13.i, %3 %8 = select i1 %5, i1 %6, i1 %7 br i1 %8, label %.preheader, label %_ZN4core5slice4sort6shared9smallsort11insert_tail17h94388cdde1f8a879E.exit .preheader: ; preds = %.lr.ph, %11 - %.sroa.5.0.i = phi ptr [ %.sroa.0.0.i, %11 ], [ %.sroa.0.04, %.lr.ph ] - %.sroa.0.0.i = phi ptr [ %12, %11 ], [ %.pn3, %.lr.ph ] + %.sroa.5.0.i = phi ptr [ %.sroa.0.0.i, %12 ], [ %.sroa.0.04, %.lr.ph ] + %.sroa.0.0.i = phi ptr [ %12, %12 ], [ %.pn3, %.lr.ph ] %9 = load i64, ptr %.sroa.0.0.i, align 4 store i64 %9, ptr %.sroa.5.0.i, align 4 %10 = icmp eq ptr %.sroa.0.0.i, %0 @@ -95310,19 +95311,15 @@ define internal fastcc void @_ZN4core5slice4sort6shared9smallsort25insertion_sor %.val9.i = load i32, ptr %12, align 4, !range !505, !noundef !8 %13 = getelementptr i8, ptr %.sroa.0.0.i, i64 -4 %.val10.i = load i32, ptr %13, align 4 - %14 = icmp eq i32 %.val11.i, %.val9.i + %14 = icmp eq i32 %.val9.i, %3 %15 = icmp ult i32 %.val12.i, %.val10.i - %16 = icmp samesign ult i32 %.val11.i, %.val9.i + %16 = icmp samesign ugt i32 %.val9.i, %3 %17 = select i1 %14, i1 %15, i1 %16 br i1 %17, label %.preheader, label %18 18: ; preds = %11, %.preheader - %.sroa.0.0.i.lcssa = phi ptr [ %.sroa.0.0.i, %11 ], [ %0, %.preheader ] - %.sroa.0.sroa.5.0.insert.ext.i = zext i32 %.val12.i to i64 - %.sroa.0.sroa.5.0.insert.shift.i = shl nuw i64 %.sroa.0.sroa.5.0.insert.ext.i, 32 - %.sroa.0.sroa.0.0.insert.ext.i = zext nneg i32 %.val11.i to i64 - %.sroa.0.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.0.sroa.5.0.insert.shift.i, %.sroa.0.sroa.0.0.insert.ext.i - store i64 %.sroa.0.sroa.0.0.insert.insert.i, ptr %.sroa.0.0.i.lcssa, align 4, !noalias !11204 + %.sroa.0.0.i.lcssa = phi ptr [ %.sroa.0.0.i, %12 ], [ %0, %.preheader ] + store i64 %.val11.i, ptr %.sroa.0.0.i.lcssa, align 4, !noalias !11204 br label %_ZN4core5slice4sort6shared9smallsort11insert_tail17h94388cdde1f8a879E.exit _ZN4core5slice4sort6shared9smallsort11insert_tail17h94388cdde1f8a879E.exit: ; preds = %.lr.ph, %18 @@ -95345,21 +95342,22 @@ define internal fastcc void @_ZN4core5slice4sort6shared9smallsort25insertion_sor .lr.ph: ; preds = %.lr.ph.preheader, %_ZN4core5slice4sort6shared9smallsort11insert_tail17h9cbc3e718e667834E.exit %.sroa.0.04 = phi ptr [ %.sroa.0.0, %_ZN4core5slice4sort6shared9smallsort11insert_tail17h9cbc3e718e667834E.exit ], [ %.sroa.0.01, %.lr.ph.preheader ] %.pn3 = phi ptr [ %.sroa.0.04, %_ZN4core5slice4sort6shared9smallsort11insert_tail17h9cbc3e718e667834E.exit ], [ %0, %.lr.ph.preheader ] - %.val11.i = load i8, ptr %.sroa.0.04, align 1, !noundef !8 - %3 = getelementptr i8, ptr %.pn3, i64 3 - %.val12.i = load i8, ptr %3, align 1 + %.val11.i = load i16, ptr %.sroa.0.04, align 1 + %3 = trunc i16 %.val11.i to i8 + %4 = getelementptr i8, ptr %.pn3, i64 3 + %.val12.i = load i8, ptr %4, align 1 %.val13.i = load i8, ptr %.pn3, align 1, !noundef !8 %4 = getelementptr i8, ptr %.pn3, i64 1 %.val14.i = load i8, ptr %4, align 1 - %5 = icmp eq i8 %.val11.i, %.val13.i + %5 = icmp eq i8 %.val13.i, %3 %6 = icmp ult i8 %.val12.i, %.val14.i - %7 = icmp ult i8 %.val11.i, %.val13.i + %7 = icmp ugt i8 %.val13.i, %3 %8 = select i1 %5, i1 %6, i1 %7 br i1 %8, label %.preheader, label %_ZN4core5slice4sort6shared9smallsort11insert_tail17h9cbc3e718e667834E.exit .preheader: ; preds = %.lr.ph, %11 - %.sroa.5.0.i = phi ptr [ %.sroa.0.0.i, %11 ], [ %.sroa.0.04, %.lr.ph ] - %.sroa.0.0.i = phi ptr [ %12, %11 ], [ %.pn3, %.lr.ph ] + %.sroa.5.0.i = phi ptr [ %.sroa.0.0.i, %12 ], [ %.sroa.0.04, %.lr.ph ] + %.sroa.0.0.i = phi ptr [ %12, %12 ], [ %.pn3, %.lr.ph ] %9 = load i16, ptr %.sroa.0.0.i, align 1 store i16 %9, ptr %.sroa.5.0.i, align 1 %10 = icmp eq ptr %.sroa.0.0.i, %0 @@ -95370,19 +95368,15 @@ define internal fastcc void @_ZN4core5slice4sort6shared9smallsort25insertion_sor %.val9.i = load i8, ptr %12, align 1, !noundef !8 %13 = getelementptr i8, ptr %.sroa.0.0.i, i64 -1 %.val10.i = load i8, ptr %13, align 1 - %14 = icmp eq i8 %.val11.i, %.val9.i + %14 = icmp eq i8 %.val9.i, %3 %15 = icmp ult i8 %.val12.i, %.val10.i - %16 = icmp ult i8 %.val11.i, %.val9.i + %16 = icmp ugt i8 %.val9.i, %3 %17 = select i1 %14, i1 %15, i1 %16 br i1 %17, label %.preheader, label %18 18: ; preds = %11, %.preheader - %.sroa.0.0.i.lcssa = phi ptr [ %.sroa.0.0.i, %11 ], [ %0, %.preheader ] - %.sroa.0.sroa.5.0.insert.ext.i = zext i8 %.val12.i to i16 - %.sroa.0.sroa.5.0.insert.shift.i = shl nuw i16 %.sroa.0.sroa.5.0.insert.ext.i, 8 - %.sroa.0.sroa.0.0.insert.ext.i = zext i8 %.val11.i to i16 - %.sroa.0.sroa.0.0.insert.insert.i = or disjoint i16 %.sroa.0.sroa.5.0.insert.shift.i, %.sroa.0.sroa.0.0.insert.ext.i - store i16 %.sroa.0.sroa.0.0.insert.insert.i, ptr %.sroa.0.0.i.lcssa, align 1, !noalias !11209 + %.sroa.0.0.i.lcssa = phi ptr [ %.sroa.0.0.i, %12 ], [ %0, %.preheader ] + store i16 %.val11.i, ptr %.sroa.0.0.i.lcssa, align 1, !noalias !11209 br label %_ZN4core5slice4sort6shared9smallsort11insert_tail17h9cbc3e718e667834E.exit _ZN4core5slice4sort6shared9smallsort11insert_tail17h9cbc3e718e667834E.exit: ; preds = %.lr.ph, %18 diff --git a/bench/yara-x-rs/optimized/cco05ky1qb53ayhfyotquzvcb.ll b/bench/yara-x-rs/optimized/cco05ky1qb53ayhfyotquzvcb.ll index 1584eb2a689..e6b88615327 100644 --- a/bench/yara-x-rs/optimized/cco05ky1qb53ayhfyotquzvcb.ll +++ b/bench/yara-x-rs/optimized/cco05ky1qb53ayhfyotquzvcb.ll @@ -16885,13 +16885,14 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$19 15: ; preds = %2 %16 = getelementptr inbounds nuw i8, ptr %4, i64 4 - %17 = load i32, ptr %16, align 4, !noalias !702, !noundef !8 - %18 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %19 = load i32, ptr %18, align 4, !noalias !702, !noundef !8 + %17 = load i64, ptr %16, align 4 + %18 = trunc i64 %17 to i32 + %19 = lshr i64 %17, 32 + %20 = trunc nuw i64 %19 to i32 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !702 - store i32 %17, ptr %5, align 4, !noalias !702 + store i32 %18, ptr %5, align 4, !noalias !702 %20 = getelementptr inbounds nuw i8, ptr %5, i64 4 - store i32 %19, ptr %20, align 4, !noalias !702 + store i32 %20, ptr %20, align 4, !noalias !702 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !702 call fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$14get_source_str17hc80533020c15158dE"(ptr noalias noundef align 8 captures(none) dereferenceable(16) %3, ptr noalias noundef nonnull align 8 dereferenceable(504) %1, ptr noalias noundef readonly align 4 dereferenceable(8) %5), !noalias !706 %21 = load ptr, ptr %3, align 8, !noalias !702, !noundef !8 @@ -16905,7 +16906,7 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$19 br label %26 26: ; preds = %12, %24 - %.sroa.7.0.ph.in = phi i8 [ %25, %24 ], [ %14, %12 ] + %.sroa.7.0.ph.in = phi i8 [ %25, %25 ], [ %14, %12 ] call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !702 store i8 %.sroa.7.0.ph.in, ptr %0, align 8 %27 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -16915,16 +16916,12 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$19 28: ; preds = %15 %29 = load i64, ptr %23, align 8, !noalias !702, !noundef !8 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !702 - %.sroa.13.16.insert.ext = zext i32 %17 to i64 - %.sroa.13.20.insert.ext = zext i32 %19 to i64 - %.sroa.13.20.insert.shift = shl nuw i64 %.sroa.13.20.insert.ext, 32 - %.sroa.13.20.insert.insert = or disjoint i64 %.sroa.13.20.insert.shift, %.sroa.13.16.insert.ext call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !702 store ptr %21, ptr %9, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 8 store i64 %29, ptr %.sroa.3.0..sroa_idx, align 8 %.sroa.67.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 16 - store i64 %.sroa.13.20.insert.insert, ptr %.sroa.67.0..sroa_idx, align 8 + store i64 %17, ptr %.sroa.67.0..sroa_idx, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %8) %30 = call { i32, i32 } @"_ZN74_$LT$yara_x_parser..ast..Ident$u20$as$u20$yara_x_parser..ast..WithSpan$GT$4span17h6bb91581f81e016eE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %9) %31 = extractvalue { i32, i32 } %30, 0 @@ -16978,9 +16975,9 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$19 br label %57 57: ; preds = %37, %28, %48 - %58 = phi i32 [ %56, %48 ], [ %32, %28 ], [ %32, %37 ] - %59 = phi i32 [ %55, %48 ], [ %31, %28 ], [ %31, %37 ] - %.sroa.024.0 = phi i8 [ 1, %48 ], [ 0, %28 ], [ 0, %37 ] + %58 = phi i32 [ %56, %49 ], [ %32, %29 ], [ %32, %38 ] + %59 = phi i32 [ %55, %49 ], [ %31, %29 ], [ %31, %38 ] + %.sroa.024.0 = phi i8 [ 1, %49 ], [ 0, %29 ], [ 0, %38 ] store ptr %21, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %29, ptr %.sroa.4.0..sroa_idx, align 8 diff --git a/bench/zed-rs/optimized/3hzvg0vxovkxolvfr6bwvtv1m.ll b/bench/zed-rs/optimized/3hzvg0vxovkxolvfr6bwvtv1m.ll index 1671c28cb59..98ef0f3140b 100644 --- a/bench/zed-rs/optimized/3hzvg0vxovkxolvfr6bwvtv1m.ll +++ b/bench/zed-rs/optimized/3hzvg0vxovkxolvfr6bwvtv1m.ll @@ -52009,7 +52009,6 @@ define hidden void @"_ZN84_$LT$serde..__private..de..content..ContentVisitor$u20 %.sroa.3.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %7, i64 1 %.sroa.3.0..sroa_idx2.i.i = getelementptr inbounds nuw i8, ptr %6, i64 1 %.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.sroa.6.i.sroa.5.0..sroa.6.0..sroa_idx.i.sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 9 %.sroa.6.i.sroa.5.sroa.5.0..sroa.6.i.sroa.5.0..sroa.6.0..sroa_idx.i.sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 16 %.sroa.6.i.sroa.5.sroa.6.0..sroa.6.i.sroa.5.0..sroa.6.0..sroa_idx.i.sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 24 %.sroa.6.i.sroa.5.sroa.6.sroa.5.0..sroa.6.i.sroa.5.sroa.6.0..sroa.6.i.sroa.5.0..sroa.6.0..sroa_idx.i.sroa_idx.sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 32 @@ -52040,7 +52039,7 @@ define hidden void @"_ZN84_$LT$serde..__private..de..content..ContentVisitor$u20 unreachable 26: ; preds = %67, %20 - %.sroa.1016.0 = phi ptr [ undef, %20 ], [ %.sroa.1016.168, %67 ] + %.sroa.1016.0 = phi ptr [ undef, %20 ], [ %.sroa.1016.168, %70 ] call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !13207 invoke void @"_ZN79_$LT$serde_json..value..de..MapDeserializer$u20$as$u20$serde..de..MapAccess$GT$13next_key_seed17h12366cbb9bf4249bE"(ptr noalias noundef nonnull sret([32 x i8]) align 8 captures(none) dereferenceable(32) %7, ptr noalias noundef nonnull align 8 dereferenceable(104) %1) to label %.noexc5 unwind label %.loopexit @@ -52067,8 +52066,10 @@ define hidden void @"_ZN84_$LT$serde..__private..de..content..ContentVisitor$u20 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(31) %.sroa.3.0..sroa_idx2.i.i, ptr noundef nonnull align 1 dereferenceable(31) %.sroa.3.0..sroa_idx.i.i, i64 31, i1 false) call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !13207 %.sroa.0.0.copyload.i = load i64, ptr %1, align 8, !alias.scope !13215, !noalias !13218 - %.sroa.6.i.sroa.0.0.copyload = load i8, ptr %.sroa.6.0..sroa_idx.i, align 8, !noalias !13218 - %.sroa.6.i.sroa.5.sroa.0.0.copyload = load i56, ptr %.sroa.6.i.sroa.5.0..sroa.6.0..sroa_idx.i.sroa_idx, align 1, !noalias !13218 + %.sroa.6.i.sroa.0.0.copyload = load i64, ptr %.sroa.6.0..sroa_idx.i, align 8 + %32 = trunc i64 %.sroa.6.i.sroa.0.0.copyload to i8 + %33 = lshr i64 %.sroa.6.i.sroa.0.0.copyload, 8 + %34 = trunc nuw i64 %33 to i56 %.sroa.6.i.sroa.5.sroa.5.0.copyload = load i64, ptr %.sroa.6.i.sroa.5.sroa.5.0..sroa.6.i.sroa.5.0..sroa.6.0..sroa_idx.i.sroa_idx.sroa_idx, align 8, !noalias !13218 %.sroa.6.i.sroa.5.sroa.6.sroa.0.0.copyload = load i64, ptr %.sroa.6.i.sroa.5.sroa.6.0..sroa.6.i.sroa.5.0..sroa.6.0..sroa_idx.i.sroa_idx.sroa_idx, align 8, !noalias !13218 store i64 -9223372036854775803, ptr %1, align 8, !alias.scope !13215, !noalias !13218 @@ -52102,20 +52103,16 @@ default.unreachable: ; preds = %35 br label %.thread57 39: ; preds = %35 - %40 = and i8 %.sroa.6.i.sroa.0.0.copyload, 1 + %40 = and i8 %32, 1 store i8 0, ptr %5, align 8, !alias.scope !13228, !noalias !13226 store i8 %40, ptr %.sroa.4.0..sroa_idx.i.i, align 1, !alias.scope !13228, !noalias !13226 br label %.thread57 41: ; preds = %35 - %.sroa.042.sroa.4.0.insert.ext = zext i56 %.sroa.6.i.sroa.5.sroa.0.0.copyload to i64 - %.sroa.042.sroa.4.0.insert.shift = shl nuw i64 %.sroa.042.sroa.4.0.insert.ext, 8 - %.sroa.042.sroa.0.0.insert.ext = zext i8 %.sroa.6.i.sroa.0.0.copyload to i64 - %.sroa.042.sroa.0.0.insert.insert = or disjoint i64 %.sroa.042.sroa.4.0.insert.shift, %.sroa.042.sroa.0.0.insert.ext - switch i64 %.sroa.042.sroa.0.0.insert.insert, label %default.unreachable3.i.i [ - i64 0, label %42 - i64 1, label %43 - i64 2, label %44 + switch i64 %.sroa.6.i.sroa.0.0.copyload, label %default.unreachable3.i.i [ + i64 0, label %45 + i64 1, label %46 + i64 2, label %47 ] default.unreachable3.i.i: ; preds = %41 @@ -52138,8 +52135,8 @@ default.unreachable3.i.i: ; preds = %41 .thread78: ; preds = %35 store i8 12, ptr %5, align 8, !alias.scope !13244, !noalias !13247 - store i8 %.sroa.6.i.sroa.0.0.copyload, ptr %.sroa.4.i.i.sroa.3.0..sroa.4.0..sroa_idx.i1.i.sroa_idx, align 8, !noalias !13247 - store i56 %.sroa.6.i.sroa.5.sroa.0.0.copyload, ptr %.sroa.4.i.i.sroa.4.0..sroa.4.0..sroa_idx.i1.i.sroa_idx, align 1, !noalias !13247 + store i8 %32, ptr %.sroa.4.i.i.sroa.3.0..sroa.4.0..sroa_idx.i1.i.sroa_idx, align 8, !noalias !13247 + store i56 %34, ptr %.sroa.4.i.i.sroa.4.0..sroa.4.0..sroa_idx.i1.i.sroa_idx, align 1, !noalias !13247 store i64 %.sroa.6.i.sroa.5.sroa.5.0.copyload, ptr %.sroa.4.i.i.sroa.5.0..sroa.4.0..sroa_idx.i1.i.sroa_idx, align 8, !noalias !13247 store i64 %.sroa.6.i.sroa.5.sroa.6.sroa.0.0.copyload, ptr %.sroa.4.i.i.sroa.6.0..sroa.4.0..sroa_idx.i1.i.sroa_idx, align 8, !noalias !13247 call void @llvm.lifetime.end.p0(ptr nonnull %3) @@ -52147,22 +52144,22 @@ default.unreachable3.i.i: ; preds = %41 br label %._crit_edge 45: ; preds = %35 - store i8 %.sroa.6.i.sroa.0.0.copyload, ptr %4, align 8, !noalias !13220 - store i56 %.sroa.6.i.sroa.5.sroa.0.0.copyload, ptr %.sroa.1039.8..sroa_idx, align 1, !noalias !13220 + store i8 %32, ptr %4, align 8, !noalias !13220 + store i56 %34, ptr %.sroa.1039.8..sroa_idx, align 1, !noalias !13220 store i64 %.sroa.6.i.sroa.5.sroa.5.0.copyload, ptr %.sroa.1039.sroa.7.0..sroa.1039.8..sroa_idx.sroa_idx, align 8, !noalias !13220 store i64 %.sroa.6.i.sroa.5.sroa.6.sroa.0.0.copyload, ptr %.sroa.1039.sroa.8.0..sroa.1039.8..sroa_idx.sroa_idx, align 8, !noalias !13220 invoke void @_ZN10serde_json5value2de11visit_array17h43091db999858782E(ptr noalias noundef nonnull sret([32 x i8]) align 8 captures(none) dereferenceable(32) %5, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %4) - to label %48 unwind label %.loopexit69 + to label %51 unwind label %.loopexit69 46: ; preds = %35 store i64 %.sroa.0.0.copyload.i, ptr %3, align 8, !noalias !13220 - store i8 %.sroa.6.i.sroa.0.0.copyload, ptr %.sroa.535.0..sroa_idx, align 8, !noalias !13220 - store i56 %.sroa.6.i.sroa.5.sroa.0.0.copyload, ptr %.sroa.1039.0..sroa_idx, align 1, !noalias !13220 + store i8 %32, ptr %.sroa.535.0..sroa_idx, align 8, !noalias !13220 + store i56 %34, ptr %.sroa.1039.0..sroa_idx, align 1, !noalias !13220 store i64 %.sroa.6.i.sroa.5.sroa.5.0.copyload, ptr %.sroa.1039.sroa.7.0..sroa.1039.0..sroa_idx.sroa_idx, align 8, !noalias !13220 store i64 %.sroa.6.i.sroa.5.sroa.6.sroa.0.0.copyload, ptr %.sroa.1039.sroa.8.0..sroa.1039.0..sroa_idx.sroa_idx, align 8, !noalias !13220 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.1039.sroa.8.sroa.6.0..sroa.1039.sroa.8.0..sroa.1039.0..sroa_idx.sroa_idx.sroa_idx, ptr noundef nonnull align 8 dereferenceable(40) %.sroa.6.i.sroa.5.sroa.6.sroa.5.0..sroa.6.i.sroa.5.sroa.6.0..sroa.6.i.sroa.5.0..sroa.6.0..sroa_idx.i.sroa_idx.sroa_idx.sroa_idx, i64 40, i1 false) invoke void @_ZN10serde_json5value2de12visit_object17h2ac4f975e7dd30c1E(ptr noalias noundef nonnull sret([32 x i8]) align 8 captures(none) dereferenceable(32) %5, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(72) %3) - to label %48 unwind label %.loopexit69 + to label %51 unwind label %.loopexit69 .loopexit69: ; preds = %45, %46 %lpad.loopexit71 = landingpad { ptr, i32 } @@ -52200,7 +52197,7 @@ default.unreachable3.i.i: ; preds = %41 br label %.loopexit74 .loopexit74: ; preds = %33, %.loopexit74.loopexit - %50 = phi ptr [ %.pre, %.loopexit74.loopexit ], [ %34, %33 ] + %50 = phi ptr [ %.pre, %.loopexit74.loopexit ], [ %34, %36 ] call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !13207 invoke void @"_ZN4core3ptr59drop_in_place$LT$serde..__private..de..content..Content$GT$17h6b39c298c6b6dc45E.llvm.18293271457274314417"(ptr noalias noundef nonnull align 8 dereferenceable(32) %6) to label %.noexc6 unwind label %.loopexit.split-lp @@ -52226,7 +52223,7 @@ default.unreachable3.i.i: ; preds = %41 br label %.body .body: ; preds = %.loopexit, %.loopexit.split-lp, %63, %47 - %eh.lpad-body = phi { ptr, i32 } [ %lpad.phi73, %47 ], [ %64, %63 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %eh.lpad-body = phi { ptr, i32 } [ %lpad.phi73, %50 ], [ %64, %66 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN4core3ptr131drop_in_place$LT$alloc..vec..Vec$LT$$LP$serde..__private..de..content..Content$C$serde..__private..de..content..Content$RP$$GT$$GT$17hdf9d92e88dbe20eeE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %10) #64 to label %19 unwind label %73 @@ -52251,13 +52248,13 @@ default.unreachable3.i.i: ; preds = %41 br i1 %54, label %.loopexit75, label %55 55: ; preds = %.thread64, %53 - %.sroa.1016.168 = phi ptr [ %.sroa.1016.0, %.thread64 ], [ %.sroa.532.0.copyload, %53 ] - %.sroa.013.067 = phi i8 [ 22, %.thread64 ], [ %.sroa.030.0.copyload, %53 ] + %.sroa.1016.168 = phi ptr [ %.sroa.1016.0, %.thread64 ], [ %.sroa.532.0.copyload, %56 ] + %.sroa.013.067 = phi i8 [ 22, %.thread64 ], [ %.sroa.030.0.copyload, %56 ] %56 = icmp eq i8 %.sroa.013.067, 22 br i1 %56, label %71, label %58 .loopexit75: ; preds = %53, %.thread60 - %.sroa.1016.163 = phi ptr [ %.sroa.1016.1.ph, %.thread60 ], [ %.sroa.532.0.copyload, %53 ] + %.sroa.1016.163 = phi ptr [ %.sroa.1016.1.ph, %.thread60 ], [ %.sroa.532.0.copyload, %56 ] %57 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.1016.163, ptr %57, align 8 store i8 22, ptr %0, align 8 @@ -52276,7 +52273,7 @@ default.unreachable3.i.i: ; preds = %41 62: ; preds = %58 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h2df6c6217681a1b5E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %10) - to label %67 unwind label %63, !noalias !13253 + to label %70 unwind label %63, !noalias !13253 63: ; preds = %62 %64 = landingpad { ptr, i32 } diff --git a/bench/zed-rs/optimized/9k41n0dnz3hh6kxq426e2leu5.ll b/bench/zed-rs/optimized/9k41n0dnz3hh6kxq426e2leu5.ll index e3b6262f92d..49d8efa08da 100644 --- a/bench/zed-rs/optimized/9k41n0dnz3hh6kxq426e2leu5.ll +++ b/bench/zed-rs/optimized/9k41n0dnz3hh6kxq426e2leu5.ll @@ -345,14 +345,17 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h7c18eeda3b579930E call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 32, i1 false) %.sroa.016.0.copyload = load i64, ptr %13, align 8 %.sroa.618.0..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 8 - %.sroa.618.0.copyload = load i8, ptr %.sroa.618.0..sroa_idx, align 8 - %.sroa.721.0..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 9 - %.sroa.721.0.copyload = load i8, ptr %.sroa.721.0..sroa_idx, align 1 + %.sroa.618.0.copyload = load i16, ptr %.sroa.618.0..sroa_idx, align 8 + %35 = zext i16 %.sroa.618.0.copyload to i24 + %36 = shl nuw i24 %35, 8 %35 = icmp eq i64 %.sroa.016.0.copyload, 3 br i1 %35, label %"_ZN4core3ptr120drop_in_place$LT$http..request..Builder..body$LT$http_client..async_body..AsyncBody$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hbcfe42f25f91233dE.exit", label %36 36: ; preds = %34 %.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 10 + %39 = lshr i16 %.sroa.618.0.copyload, 8 + %40 = trunc nuw i16 %39 to i8 + %41 = trunc i16 %.sroa.618.0.copyload to i8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(214) %.sroa.832, ptr noundef nonnull align 2 dereferenceable(214) %.sroa.8.0..sroa_idx, i64 214, i1 false) %.sroa.832.224..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.832, i64 214 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(32) %.sroa.832.224..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 32, i1 false) @@ -363,9 +366,9 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h7c18eeda3b579930E store ptr %0, ptr %37, align 8 store i64 %.sroa.016.0.copyload, ptr %11, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 8 - store i8 %.sroa.618.0.copyload, ptr %.sroa.4.0..sroa_idx, align 8 + store i8 %41, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.511.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 9 - store i8 %.sroa.721.0.copyload, ptr %.sroa.511.0..sroa_idx, align 1 + store i8 %40, ptr %.sroa.511.0..sroa_idx, align 1 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(246) %.sroa.6.0..sroa_idx, ptr noundef nonnull align 2 dereferenceable(246) %.sroa.832, i64 246, i1 false) %38 = getelementptr inbounds nuw i8, ptr %11, i64 280 @@ -409,8 +412,8 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h7c18eeda3b579930E br label %51 51: ; preds = %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hae014e01cafd7640E.exit", %50 - %.sroa.3.0 = phi ptr [ @anon.29eebd7db1f9a93b7f855764ee7d5248.2, %50 ], [ @anon.29eebd7db1f9a93b7f855764ee7d5248.3, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hae014e01cafd7640E.exit" ] - %.sroa.0.0 = phi ptr [ %40, %50 ], [ %48, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hae014e01cafd7640E.exit" ] + %.sroa.3.0 = phi ptr [ @anon.29eebd7db1f9a93b7f855764ee7d5248.2, %55 ], [ @anon.29eebd7db1f9a93b7f855764ee7d5248.3, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hae014e01cafd7640E.exit" ] + %.sroa.0.0 = phi ptr [ %40, %55 ], [ %48, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hae014e01cafd7640E.exit" ] %52 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0, 0 %53 = insertvalue { ptr, ptr } %52, ptr %.sroa.3.0, 1 ret { ptr, ptr } %53 @@ -420,16 +423,11 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h7c18eeda3b579930E unreachable "_ZN5alloc5boxed12Box$LT$T$GT$3new17hae014e01cafd7640E.exit": ; preds = %"_ZN4core3ptr120drop_in_place$LT$http..request..Builder..body$LT$http_client..async_body..AsyncBody$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hbcfe42f25f91233dE.exit" - %.sroa.036.1.insert.ext = zext i8 %.sroa.618.0.copyload to i24 - %.sroa.036.1.insert.shift = shl nuw nsw i24 %.sroa.036.1.insert.ext, 8 - %.sroa.036.2.insert.ext = zext i8 %.sroa.721.0.copyload to i24 - %.sroa.036.2.insert.shift = shl nuw i24 %.sroa.036.2.insert.ext, 16 - %.sroa.036.2.insert.insert = or disjoint i24 %.sroa.036.2.insert.shift, %.sroa.036.1.insert.shift - store i24 %.sroa.036.2.insert.insert, ptr %48, align 1 - br label %51 + store i24 %36, ptr %53, align 1 + br label %56 "_ZN4core3ptr55drop_in_place$LT$http_client..async_body..AsyncBody$GT$17hbee6a7425d43ad96E.exit": ; preds = %43, %.body.thread59 - %eh.lpad-body58 = phi { ptr, i32 } [ %eh.lpad-body62, %.body.thread59 ], [ %44, %43 ] + %eh.lpad-body58 = phi { ptr, i32 } [ %eh.lpad-body62, %.body.thread59 ], [ %44, %48 ] resume { ptr, i32 } %eh.lpad-body58 .body.thread59: ; preds = %17, %.body.thread64 diff --git a/bench/zed-rs/optimized/b1zstcip87cpnqp265tsc7n2q.ll b/bench/zed-rs/optimized/b1zstcip87cpnqp265tsc7n2q.ll index a60b2dfce68..c2f5e1ad057 100644 --- a/bench/zed-rs/optimized/b1zstcip87cpnqp265tsc7n2q.ll +++ b/bench/zed-rs/optimized/b1zstcip87cpnqp265tsc7n2q.ll @@ -1111,14 +1111,17 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h646f54bbf3e825acE call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 32, i1 false) %.sroa.016.0.copyload = load i64, ptr %12, align 8 %.sroa.618.0..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 8 - %.sroa.618.0.copyload = load i8, ptr %.sroa.618.0..sroa_idx, align 8 - %.sroa.721.0..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 9 - %.sroa.721.0.copyload = load i8, ptr %.sroa.721.0..sroa_idx, align 1 + %.sroa.618.0.copyload = load i16, ptr %.sroa.618.0..sroa_idx, align 8 + %21 = zext i16 %.sroa.618.0.copyload to i24 + %22 = shl nuw i24 %21, 8 %21 = icmp eq i64 %.sroa.016.0.copyload, 3 br i1 %21, label %"_ZN4core3ptr120drop_in_place$LT$http..request..Builder..body$LT$http_client..async_body..AsyncBody$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h647ad17060c3d590E.exit", label %22 22: ; preds = %20 %.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 10 + %25 = lshr i16 %.sroa.618.0.copyload, 8 + %26 = trunc nuw i16 %25 to i8 + %27 = trunc i16 %.sroa.618.0.copyload to i8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(214) %.sroa.832, ptr noundef nonnull align 2 dereferenceable(214) %.sroa.8.0..sroa_idx, i64 214, i1 false) %.sroa.832.224..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.832, i64 214 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(32) %.sroa.832.224..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 32, i1 false) @@ -1129,9 +1132,9 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h646f54bbf3e825acE store ptr %0, ptr %23, align 8 store i64 %.sroa.016.0.copyload, ptr %10, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 8 - store i8 %.sroa.618.0.copyload, ptr %.sroa.4.0..sroa_idx, align 8 + store i8 %27, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.511.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 9 - store i8 %.sroa.721.0.copyload, ptr %.sroa.511.0..sroa_idx, align 1 + store i8 %26, ptr %.sroa.511.0..sroa_idx, align 1 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(246) %.sroa.6.0..sroa_idx, ptr noundef nonnull align 2 dereferenceable(246) %.sroa.832, i64 246, i1 false) %24 = getelementptr inbounds nuw i8, ptr %10, i64 280 @@ -1175,8 +1178,8 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h646f54bbf3e825acE br label %37 37: ; preds = %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h3672a4f2c2cbc7c2E.exit", %36 - %.sroa.3.0 = phi ptr [ @anon.5c6237a41bf86d18ca16c57b046a9bd5.20, %36 ], [ @anon.5c6237a41bf86d18ca16c57b046a9bd5.21, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h3672a4f2c2cbc7c2E.exit" ] - %.sroa.0.0 = phi ptr [ %26, %36 ], [ %34, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h3672a4f2c2cbc7c2E.exit" ] + %.sroa.3.0 = phi ptr [ @anon.5c6237a41bf86d18ca16c57b046a9bd5.20, %41 ], [ @anon.5c6237a41bf86d18ca16c57b046a9bd5.21, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h3672a4f2c2cbc7c2E.exit" ] + %.sroa.0.0 = phi ptr [ %26, %41 ], [ %34, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h3672a4f2c2cbc7c2E.exit" ] %38 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0, 0 %39 = insertvalue { ptr, ptr } %38, ptr %.sroa.3.0, 1 ret { ptr, ptr } %39 @@ -1186,16 +1189,11 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h646f54bbf3e825acE unreachable "_ZN5alloc5boxed12Box$LT$T$GT$3new17h3672a4f2c2cbc7c2E.exit": ; preds = %"_ZN4core3ptr120drop_in_place$LT$http..request..Builder..body$LT$http_client..async_body..AsyncBody$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h647ad17060c3d590E.exit" - %.sroa.036.1.insert.ext = zext i8 %.sroa.618.0.copyload to i24 - %.sroa.036.1.insert.shift = shl nuw nsw i24 %.sroa.036.1.insert.ext, 8 - %.sroa.036.2.insert.ext = zext i8 %.sroa.721.0.copyload to i24 - %.sroa.036.2.insert.shift = shl nuw i24 %.sroa.036.2.insert.ext, 16 - %.sroa.036.2.insert.insert = or disjoint i24 %.sroa.036.2.insert.shift, %.sroa.036.1.insert.shift - store i24 %.sroa.036.2.insert.insert, ptr %34, align 1 + store i24 %22, ptr %39, align 1 br label %37 -"_ZN4core3ptr55drop_in_place$LT$http_client..async_body..AsyncBody$GT$17h88f1b77dab0335e7E.exit": ; preds = %29, %40 - %eh.lpad-body55 = phi { ptr, i32 } [ %lpad.thr_comm, %40 ], [ %30, %29 ] +"_ZN4core3ptr55drop_in_place$LT$http_client..async_body..AsyncBody$GT$17h88f1b77dab0335e7E.exit":; preds = %34, %45 + %eh.lpad-body55 = phi { ptr, i32 } [ %lpad.thr_comm, %45 ], [ %35, %34 ] resume { ptr, i32 } %eh.lpad-body55 40: ; preds = %19, %5, %15 diff --git a/bench/zed-rs/optimized/dw4qzuo904yf8wu71sutofhxl.ll b/bench/zed-rs/optimized/dw4qzuo904yf8wu71sutofhxl.ll index a81aaed2d95..8f8772a1cbf 100644 --- a/bench/zed-rs/optimized/dw4qzuo904yf8wu71sutofhxl.ll +++ b/bench/zed-rs/optimized/dw4qzuo904yf8wu71sutofhxl.ll @@ -18417,9 +18417,6 @@ _ZN3exr5block5chunk27CompressedDeepScanLineBlock4read17he3d368247216b887E.exit: %.sroa.68.i.sroa.0.0.copyload368 = load i64, ptr %129, align 8, !noalias !3602 %.sroa.68.i.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %30, i64 16 %.sroa.68.i.sroa.8.0.copyload369 = load i64, ptr %.sroa.68.i.sroa.8.0..sroa_idx, align 8, !noalias !3602 - %.sroa.68.i.sroa.8.sroa.0.0.extract.trunc372 = trunc i64 %.sroa.68.i.sroa.8.0.copyload369 to i32 - %.sroa.68.i.sroa.8.sroa.7.0.extract.shift373 = lshr i64 %.sroa.68.i.sroa.8.0.copyload369, 32 - %.sroa.68.i.sroa.8.sroa.7.0.extract.trunc374 = trunc nuw i64 %.sroa.68.i.sroa.8.sroa.7.0.extract.shift373 to i32 %.sroa.68.i.sroa.11.0..sroa_idx = getelementptr inbounds nuw i8, ptr %30, i64 24 %.sroa.68.i.sroa.11.0.copyload370 = load i64, ptr %.sroa.68.i.sroa.11.0..sroa_idx, align 8, !noalias !3602 call void @llvm.lifetime.end.p0(ptr nonnull %30), !noalias !3602 @@ -18448,7 +18445,7 @@ _ZN3exr5block5chunk27CompressedDeepScanLineBlock4read17he3d368247216b887E.exit: br label %198 132: ; preds = %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit, %195, %133, %128 - %.sroa.828.sroa.8.sroa.8.sroa.0.0 = phi i32 [ %.sroa.5120.sroa.0.4.extract.trunc, %133 ], [ %.sroa.68.i.sroa.8.sroa.7.0.extract.trunc374, %128 ], [ %.sroa.6125.sroa.0.4.extract.trunc, %195 ], [ %.sroa.6.i.sroa.8.0.copyload412, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ] + %.sroa.828.sroa.8.sroa.8.sroa.0.0 = phi i64 [ %126, %133 ], [ %.sroa.68.i.sroa.8.0.copyload369, %128 ], [ %.sroa.6.0.copyload.i167, %195 ], [ %.sroa.6.i.sroa.7.0.copyload409, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ] %.sroa.828.sroa.8.sroa.8.sroa.8.0 = phi i64 [ %.sroa.6.0.copyload.i, %133 ], [ %.sroa.68.i.sroa.11.0.copyload370, %128 ], [ %.sroa.639.i.sroa.0.0.copyload441, %195 ], [ %.sroa.6.i.sroa.9.0.copyload415, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ] %.sroa.828.sroa.9.sroa.0.0 = phi i64 [ %.sroa.648.i.sroa.9.0.copyload382, %133 ], [ undef, %128 ], [ %.sroa.5.i159.sroa.0.0.copyload424, %195 ], [ %.sroa.5.i.sroa.8.0.copyload, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ] %.sroa.828.sroa.9.sroa.7.0 = phi i64 [ %106, %133 ], [ undef, %128 ], [ %.sroa.5.i159.sroa.7.0.copyload428, %195 ], [ %.sroa.5.i.sroa.10.0.copyload, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ] @@ -18457,10 +18454,12 @@ _ZN3exr5block5chunk27CompressedDeepScanLineBlock4read17he3d368247216b887E.exit: %.sroa.828.sroa.8.sroa.11.0 = phi i64 [ %.sroa.648.i.sroa.7.0.copyload380, %133 ], [ undef, %128 ], [ %.sroa.639.i.sroa.9.0.copyload445, %195 ], [ %.sroa.5.i.sroa.7.0.copyload389, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ] %.sroa.828.sroa.8.sroa.10.0 = phi i32 [ %.sroa.5120.sroa.8.20.extract.trunc, %133 ], [ undef, %128 ], [ %.sroa.6125.sroa.8.20.extract.trunc, %195 ], [ %.sroa.9.28.extract.trunc, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ] %.sroa.828.sroa.8.sroa.9.0 = phi i32 [ %.sroa.5120.sroa.8.16.extract.trunc, %133 ], [ %72, %128 ], [ %.sroa.6125.sroa.8.16.extract.trunc, %195 ], [ %.sroa.9.24.extract.trunc, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ] - %.sroa.828.sroa.8.sroa.0.0 = phi i32 [ %.sroa.5120.sroa.0.0.extract.trunc, %133 ], [ %.sroa.68.i.sroa.8.sroa.0.0.extract.trunc372, %128 ], [ %.sroa.6125.sroa.0.0.extract.trunc, %195 ], [ %.sroa.6.i.sroa.7.0.copyload409, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ] %.sroa.026.0 = phi i64 [ -9223372036854775806, %133 ], [ -9223372036854775808, %128 ], [ %.sroa.0118.0.copyload.i, %195 ], [ -9223372036854775807, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ] %.sroa.828.sroa.0.0 = phi i64 [ %.sroa.0136.0.copyload.i, %133 ], [ %.sroa.68.i.sroa.0.0.copyload368, %128 ], [ %192, %195 ], [ %.sroa.6.i.sroa.0.0.copyload407, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ] %.sroa.828.sroa.10.0 = phi i64 [ %.sroa.36.56.insert.ext, %133 ], [ undef, %128 ], [ %156, %195 ], [ undef, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ] + %.sroa.828.sroa.8.sroa.0.0 = trunc i64 %.sroa.828.sroa.8.sroa.8.sroa.0.0.in.in to i32 + %.sroa.828.sroa.8.sroa.8.sroa.0.0.in = lshr i64 %.sroa.828.sroa.8.sroa.8.sroa.0.0.in.in, 32 + %.sroa.828.sroa.8.sroa.8.sroa.0.0 = trunc nuw i64 %.sroa.828.sroa.8.sroa.8.sroa.0.0.in to i32 store i64 %.sroa.026.0, ptr %0, align 8 %.sroa.024.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sroa.828.sroa.0.0, ptr %.sroa.024.sroa.2.0..sroa_idx, align 8 @@ -18492,9 +18491,6 @@ _ZN3exr5block5chunk27CompressedDeepScanLineBlock4read17he3d368247216b887E.exit: 133: ; preds = %_ZN3exr5block5chunk27CompressedDeepScanLineBlock4read17he3d368247216b887E.exit %.sroa.36.56.insert.ext = zext i32 %88 to i64 - %.sroa.5120.sroa.0.0.extract.trunc = trunc i64 %126 to i32 - %.sroa.5120.sroa.0.4.extract.shift = lshr i64 %126, 32 - %.sroa.5120.sroa.0.4.extract.trunc = trunc nuw i64 %.sroa.5120.sroa.0.4.extract.shift to i32 %.sroa.5120.sroa.8.16.extract.trunc = trunc i64 %.sroa.648.i.sroa.0.0.copyload378 to i32 %.sroa.5120.sroa.8.20.extract.shift = lshr i64 %.sroa.648.i.sroa.0.0.copyload378, 32 %.sroa.5120.sroa.8.20.extract.trunc = trunc nuw i64 %.sroa.5120.sroa.8.20.extract.shift to i32 @@ -18619,16 +18615,10 @@ _ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit: ; preds %150 = getelementptr inbounds nuw i8, ptr %15, i64 8 %.sroa.6.i.sroa.0.0.copyload407 = load i64, ptr %150, align 8, !noalias !3681 %.sroa.6.i.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 16 - %.sroa.6.i.sroa.7.0.copyload409 = load i32, ptr %.sroa.6.i.sroa.7.0..sroa_idx, align 8, !noalias !3681 - %.sroa.6.i.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 20 - %.sroa.6.i.sroa.8.0.copyload412 = load i32, ptr %.sroa.6.i.sroa.8.0..sroa_idx, align 4, !noalias !3681 + %.sroa.6.i.sroa.7.0.copyload409 = load i64, ptr %.sroa.6.i.sroa.7.0..sroa_idx, align 8 %.sroa.6.i.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 24 %.sroa.6.i.sroa.9.0.copyload415 = load i64, ptr %.sroa.6.i.sroa.9.0..sroa_idx, align 8, !noalias !3681 call void @llvm.lifetime.end.p0(ptr nonnull %15), !noalias !3681 - %.sroa.4419.8.insert.ext = zext i32 %.sroa.6.i.sroa.7.0.copyload409 to i64 - %.sroa.4419.12.insert.ext = zext i32 %.sroa.6.i.sroa.8.0.copyload412 to i64 - %.sroa.4419.12.insert.shift = shl nuw i64 %.sroa.4419.12.insert.ext, 32 - %.sroa.4419.12.insert.insert = or disjoint i64 %.sroa.4419.12.insert.shift, %.sroa.4419.8.insert.ext %.sroa.9.24.extract.trunc = trunc i64 %.sroa.5.i.sroa.0.0.copyload385 to i32 %.sroa.9.28.extract.shift = lshr i64 %.sroa.5.i.sroa.0.0.copyload385, 32 %.sroa.9.28.extract.trunc = trunc nuw i64 %.sroa.9.28.extract.shift to i32 @@ -18809,7 +18799,7 @@ _ZN3exr5block5chunk23CompressedDeepTileBlock4read17hfe2931addf9090baE.exit: ; pr br i1 %193, label %_ZN3exr5block5chunk23CompressedDeepTileBlock4read17hfe2931addf9090baE.exit.thread, label %195 _ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit.thread: ; preds = %.sink.split.i151, %148, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit - %.sroa.7179.0490 = phi i64 [ %.sroa.4419.12.insert.insert, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ], [ %149, %.sink.split.i151 ], [ %.sroa.5.i.sroa.0.0.copyload385, %148 ] + %.sroa.7179.0490 = phi i64 [ %.sroa.6.i.sroa.7.0.copyload409, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ], [ %149, %.sink.split.i151 ], [ %.sroa.5.i.sroa.0.0.copyload385, %148 ] %.sroa.11182.sroa.10.0489 = phi i64 [ %.sroa.5.i.sroa.7.0.copyload389, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ], [ %.sroa.6.i.sroa.9.0.copyload, %.sink.split.i151 ], [ %.sroa.5.i.sroa.10.0.copyload401, %148 ] %.sroa.11182.sroa.9.0488 = phi i32 [ %.sroa.9.28.extract.trunc, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ], [ %.sroa.6.i.sroa.8.0.copyload, %.sink.split.i151 ], [ %.sroa.5.i.sroa.9.0.copyload397, %148 ] %.sroa.11182.sroa.8.0487 = phi i32 [ %.sroa.9.24.extract.trunc, %_ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit ], [ %.sroa.6.i.sroa.7.0.copyload, %.sink.split.i151 ], [ %.sroa.5.i.sroa.8.0.copyload393, %148 ] @@ -18828,9 +18818,6 @@ _ZN3exr5block5chunk19CompressedTileBlock4read17hd80716480d88bdf9E.exit.thread: ; br label %198 195: ; preds = %_ZN3exr5block5chunk23CompressedDeepTileBlock4read17hfe2931addf9090baE.exit - %.sroa.6125.sroa.0.0.extract.trunc = trunc i64 %.sroa.6.0.copyload.i167 to i32 - %.sroa.6125.sroa.0.4.extract.shift = lshr i64 %.sroa.6.0.copyload.i167, 32 - %.sroa.6125.sroa.0.4.extract.trunc = trunc nuw i64 %.sroa.6125.sroa.0.4.extract.shift to i32 %.sroa.6125.sroa.8.16.extract.trunc = trunc i64 %.sroa.639.i.sroa.7.0.copyload443 to i32 %.sroa.6125.sroa.8.20.extract.shift = lshr i64 %.sroa.639.i.sroa.7.0.copyload443, 32 %.sroa.6125.sroa.8.20.extract.trunc = trunc nuw i64 %.sroa.6125.sroa.8.20.extract.shift to i32 diff --git a/bench/zed-rs/optimized/eio6txv0nku2we5mnjcgiiw85.ll b/bench/zed-rs/optimized/eio6txv0nku2we5mnjcgiiw85.ll index 014e0f9a608..db4ed7eaad9 100644 --- a/bench/zed-rs/optimized/eio6txv0nku2we5mnjcgiiw85.ll +++ b/bench/zed-rs/optimized/eio6txv0nku2we5mnjcgiiw85.ll @@ -11984,14 +11984,17 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h83cf11e2f262d087E call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 32, i1 false) %.sroa.016.0.copyload = load i64, ptr %12, align 8 %.sroa.618.0..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 8 - %.sroa.618.0.copyload = load i8, ptr %.sroa.618.0..sroa_idx, align 8 - %.sroa.721.0..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 9 - %.sroa.721.0.copyload = load i8, ptr %.sroa.721.0..sroa_idx, align 1 + %.sroa.618.0.copyload = load i16, ptr %.sroa.618.0..sroa_idx, align 8 + %21 = zext i16 %.sroa.618.0.copyload to i24 + %22 = shl nuw i24 %21, 8 %21 = icmp eq i64 %.sroa.016.0.copyload, 3 br i1 %21, label %33, label %22 22: ; preds = %20 %.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 10 + %25 = lshr i16 %.sroa.618.0.copyload, 8 + %26 = trunc nuw i16 %25 to i8 + %27 = trunc i16 %.sroa.618.0.copyload to i8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(214) %.sroa.832, ptr noundef nonnull align 2 dereferenceable(214) %.sroa.8.0..sroa_idx, i64 214, i1 false) %.sroa.832.224..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.832, i64 214 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(32) %.sroa.832.224..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 32, i1 false) @@ -12002,9 +12005,9 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h83cf11e2f262d087E store ptr %0, ptr %23, align 8 store i64 %.sroa.016.0.copyload, ptr %10, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 8 - store i8 %.sroa.618.0.copyload, ptr %.sroa.4.0..sroa_idx, align 8 + store i8 %27, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.511.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 9 - store i8 %.sroa.721.0.copyload, ptr %.sroa.511.0..sroa_idx, align 1 + store i8 %26, ptr %.sroa.511.0..sroa_idx, align 1 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(246) %.sroa.6.0..sroa_idx, ptr noundef nonnull align 2 dereferenceable(246) %.sroa.832, i64 246, i1 false) %24 = getelementptr inbounds nuw i8, ptr %10, i64 280 @@ -12041,7 +12044,7 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h83cf11e2f262d087E %35 = add i64 %34, 9223372036854775807 %36 = icmp ult i64 %35, 3 %37 = select i1 %36, i64 %35, i64 1 - switch i64 %37, label %38 [ + switch i64 %37, label %43 [ i64 0, label %"_ZN4core3ptr120drop_in_place$LT$http..request..Builder..body$LT$http_client..async_body..AsyncBody$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hd2ef1580d5798b83E.exit" i64 1, label %49 ] @@ -12058,7 +12061,7 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h83cf11e2f262d087E 43: ; preds = %38 %44 = load ptr, ptr %39, align 8, !alias.scope !1549, !noundef !4 - invoke void %42(ptr noundef nonnull align 1 %44) + invoke void %47(ptr noundef nonnull align 1 %44) to label %"_ZN4core3ptr151drop_in_place$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_io..if_std..AsyncRead$u2b$core..marker..Send$u2b$core..marker..Sync$GT$$GT$$GT$17hc0352cfbb45e2d19E.llvm.6844594870300039520.exit.i.i.i" unwind label %45, !noalias !1549 45: ; preds = %43 @@ -12102,8 +12105,8 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h83cf11e2f262d087E br label %56 56: ; preds = %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h775197a09b08e25bE.exit", %55 - %.sroa.3.0 = phi ptr [ @anon.9f9ee1245a2c3b77b3b787f2dae510a1.20, %55 ], [ @anon.9f9ee1245a2c3b77b3b787f2dae510a1.21, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h775197a09b08e25bE.exit" ] - %.sroa.0.0 = phi ptr [ %26, %55 ], [ %60, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h775197a09b08e25bE.exit" ] + %.sroa.3.0 = phi ptr [ @anon.9f9ee1245a2c3b77b3b787f2dae510a1.20, %60 ], [ @anon.9f9ee1245a2c3b77b3b787f2dae510a1.21, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h775197a09b08e25bE.exit" ] + %.sroa.0.0 = phi ptr [ %26, %60 ], [ %60, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h775197a09b08e25bE.exit" ] %57 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0, 0 %58 = insertvalue { ptr, ptr } %57, ptr %.sroa.3.0, 1 ret { ptr, ptr } %58 @@ -12121,16 +12124,11 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h83cf11e2f262d087E unreachable "_ZN5alloc5boxed12Box$LT$T$GT$3new17h775197a09b08e25bE.exit": ; preds = %"_ZN4core3ptr120drop_in_place$LT$http..request..Builder..body$LT$http_client..async_body..AsyncBody$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hd2ef1580d5798b83E.exit" - %.sroa.036.1.insert.ext = zext i8 %.sroa.618.0.copyload to i24 - %.sroa.036.1.insert.shift = shl nuw nsw i24 %.sroa.036.1.insert.ext, 8 - %.sroa.036.2.insert.ext = zext i8 %.sroa.721.0.copyload to i24 - %.sroa.036.2.insert.shift = shl nuw i24 %.sroa.036.2.insert.ext, 16 - %.sroa.036.2.insert.insert = or disjoint i24 %.sroa.036.2.insert.shift, %.sroa.036.1.insert.shift - store i24 %.sroa.036.2.insert.insert, ptr %60, align 1 - br label %56 + store i24 %22, ptr %65, align 1 + br label %61 .body.thread: ; preds = %45, %29, %62 - %eh.lpad-body57 = phi { ptr, i32 } [ %lpad.thr_comm, %62 ], [ %30, %29 ], [ %46, %45 ] + %eh.lpad-body57 = phi { ptr, i32 } [ %lpad.thr_comm, %67 ], [ %30, %34 ], [ %46, %50 ] resume { ptr, i32 } %eh.lpad-body57 62: ; preds = %19, %5, %15 diff --git a/bench/zed-rs/optimized/f14rkn3hjaifgtm5q8vihlx5s.ll b/bench/zed-rs/optimized/f14rkn3hjaifgtm5q8vihlx5s.ll index a0c8ab6f076..67d52844159 100644 --- a/bench/zed-rs/optimized/f14rkn3hjaifgtm5q8vihlx5s.ll +++ b/bench/zed-rs/optimized/f14rkn3hjaifgtm5q8vihlx5s.ll @@ -5065,7 +5065,6 @@ define hidden { ptr, ptr } @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.6.sroa.7.i.i.i.i) tail call void @llvm.experimental.noalias.scope.decl(metadata !1131) %.sroa.0.0.copyload.i.i = load i64, ptr %13, align 8, !alias.scope !1134, !noalias !1135 - %.sroa.6.sroa.0.0.copyload.i.i = load i64, ptr %.sroa.6.0..sroa_idx.i.i, align 8, !alias.scope !1134, !noalias !1135 switch i64 %.sroa.0.0.copyload.i.i, label %34 [ i64 -9223372036854775807, label %23 i64 -9223372036854775808, label %35 @@ -5109,7 +5108,8 @@ define hidden { ptr, ptr } @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A 35: ; preds = %34, %19 %.sroa.12.0.i.i = phi i64 [ %.sroa.6.sroa.6.0.copyload.i.i, %34 ], [ undef, %19 ] - %.sroa.7.0.i.i = inttoptr i64 %.sroa.6.sroa.0.0.copyload.i.i to ptr + %.sroa.7.0.in.i.i = load i64, ptr %.sroa.6.0..sroa_idx.i.i, align 8, !alias.scope !1134, !noalias !1135 + %.sroa.7.0.i.i = inttoptr i64 %.sroa.7.0.in.i.i to ptr %.sroa.019.0.copyload.i.i = load i64, ptr %14, align 8, !alias.scope !1134, !noalias !1135 %.sroa.521.sroa.4.0.copyload.i.i = load i8, ptr %.sroa.521.sroa.4.0..sroa.521.0..sroa_idx.sroa_idx.i.i, align 8, !alias.scope !1134, !noalias !1135 switch i64 %.sroa.019.0.copyload.i.i, label %37 [ diff --git a/bench/zed-rs/optimized/f3wmqxw6x607w7cbx1edvfc95.ll b/bench/zed-rs/optimized/f3wmqxw6x607w7cbx1edvfc95.ll index 7636d642cdc..efaac420fa1 100644 --- a/bench/zed-rs/optimized/f3wmqxw6x607w7cbx1edvfc95.ll +++ b/bench/zed-rs/optimized/f3wmqxw6x607w7cbx1edvfc95.ll @@ -771,14 +771,17 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h5a3c98e76e659354E call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 32, i1 false) %.sroa.016.0.copyload = load i64, ptr %12, align 8 %.sroa.618.0..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 8 - %.sroa.618.0.copyload = load i8, ptr %.sroa.618.0..sroa_idx, align 8 - %.sroa.721.0..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 9 - %.sroa.721.0.copyload = load i8, ptr %.sroa.721.0..sroa_idx, align 1 + %.sroa.618.0.copyload = load i16, ptr %.sroa.618.0..sroa_idx, align 8 + %21 = zext i16 %.sroa.618.0.copyload to i24 + %22 = shl nuw i24 %21, 8 %21 = icmp eq i64 %.sroa.016.0.copyload, 3 br i1 %21, label %33, label %22 22: ; preds = %20 %.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 10 + %25 = lshr i16 %.sroa.618.0.copyload, 8 + %26 = trunc nuw i16 %25 to i8 + %27 = trunc i16 %.sroa.618.0.copyload to i8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(214) %.sroa.832, ptr noundef nonnull align 2 dereferenceable(214) %.sroa.8.0..sroa_idx, i64 214, i1 false) %.sroa.832.224..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.832, i64 214 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(32) %.sroa.832.224..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 32, i1 false) @@ -789,9 +792,9 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h5a3c98e76e659354E store ptr %0, ptr %23, align 8 store i64 %.sroa.016.0.copyload, ptr %10, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 8 - store i8 %.sroa.618.0.copyload, ptr %.sroa.4.0..sroa_idx, align 8 + store i8 %27, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.511.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 9 - store i8 %.sroa.721.0.copyload, ptr %.sroa.511.0..sroa_idx, align 1 + store i8 %26, ptr %.sroa.511.0..sroa_idx, align 1 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(246) %.sroa.6.0..sroa_idx, ptr noundef nonnull align 2 dereferenceable(246) %.sroa.832, i64 246, i1 false) %24 = getelementptr inbounds nuw i8, ptr %10, i64 280 @@ -828,7 +831,7 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h5a3c98e76e659354E %35 = add i64 %34, 9223372036854775807 %36 = icmp ult i64 %35, 3 %37 = select i1 %36, i64 %35, i64 1 - switch i64 %37, label %38 [ + switch i64 %37, label %43 [ i64 0, label %"_ZN4core3ptr120drop_in_place$LT$http..request..Builder..body$LT$http_client..async_body..AsyncBody$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hec6f6a2165861ec1E.exit" i64 1, label %49 ] @@ -845,7 +848,7 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h5a3c98e76e659354E 43: ; preds = %38 %44 = load ptr, ptr %39, align 8, !alias.scope !102, !noundef !4 - invoke void %42(ptr noundef nonnull align 1 %44) + invoke void %47(ptr noundef nonnull align 1 %44) to label %"_ZN4core3ptr151drop_in_place$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_io..if_std..AsyncRead$u2b$core..marker..Send$u2b$core..marker..Sync$GT$$GT$$GT$17h1616527ce3c67532E.llvm.3246130142079152848.exit.i.i.i" unwind label %45, !noalias !102 45: ; preds = %43 @@ -889,8 +892,8 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h5a3c98e76e659354E br label %56 56: ; preds = %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hdcad8d83ad916c74E.exit", %55 - %.sroa.3.0 = phi ptr [ @anon.d80e60adfe729c318e59c386bf5e42ea.10, %55 ], [ @anon.d80e60adfe729c318e59c386bf5e42ea.11, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hdcad8d83ad916c74E.exit" ] - %.sroa.0.0 = phi ptr [ %26, %55 ], [ %60, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hdcad8d83ad916c74E.exit" ] + %.sroa.3.0 = phi ptr [ @anon.d80e60adfe729c318e59c386bf5e42ea.10, %60 ], [ @anon.d80e60adfe729c318e59c386bf5e42ea.11, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hdcad8d83ad916c74E.exit" ] + %.sroa.0.0 = phi ptr [ %26, %60 ], [ %60, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hdcad8d83ad916c74E.exit" ] %57 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0, 0 %58 = insertvalue { ptr, ptr } %57, ptr %.sroa.3.0, 1 ret { ptr, ptr } %58 @@ -908,16 +911,11 @@ define hidden { ptr, ptr } @_ZN11http_client10HttpClient3get17h5a3c98e76e659354E unreachable "_ZN5alloc5boxed12Box$LT$T$GT$3new17hdcad8d83ad916c74E.exit": ; preds = %"_ZN4core3ptr120drop_in_place$LT$http..request..Builder..body$LT$http_client..async_body..AsyncBody$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hec6f6a2165861ec1E.exit" - %.sroa.036.1.insert.ext = zext i8 %.sroa.618.0.copyload to i24 - %.sroa.036.1.insert.shift = shl nuw nsw i24 %.sroa.036.1.insert.ext, 8 - %.sroa.036.2.insert.ext = zext i8 %.sroa.721.0.copyload to i24 - %.sroa.036.2.insert.shift = shl nuw i24 %.sroa.036.2.insert.ext, 16 - %.sroa.036.2.insert.insert = or disjoint i24 %.sroa.036.2.insert.shift, %.sroa.036.1.insert.shift - store i24 %.sroa.036.2.insert.insert, ptr %60, align 1 - br label %56 + store i24 %22, ptr %65, align 1 + br label %61 -.body.thread: ; preds = %45, %29, %62 - %eh.lpad-body57 = phi { ptr, i32 } [ %lpad.thr_comm, %62 ], [ %30, %29 ], [ %46, %45 ] +.body.thread:; preds = %50, %34, %67 + %eh.lpad-body57 = phi { ptr, i32 } [ %lpad.thr_comm, %67 ], [ %35, %34 ], [ %51, %50 ] resume { ptr, i32 } %eh.lpad-body57 62: ; preds = %19, %5, %15 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..ee244eca33d 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/155176 export COMPTIME_MODE=0 # Please rebase manually