diff --git a/bench/abc/optimized/extraUtilMemory.c.ll b/bench/abc/optimized/extraUtilMemory.c.ll index 9fa3a98216e..59c5fab82b5 100644 --- a/bench/abc/optimized/extraUtilMemory.c.ll +++ b/bench/abc/optimized/extraUtilMemory.c.ll @@ -560,10 +560,10 @@ Extra_MmFixedStart.exit: ; preds = %Extra_MmFixedStart. store i32 %8, ptr %calloc.i, align 8 %9 = icmp slt i32 %8, 64 %10 = lshr i32 8192, %7 - %11 = tail call i32 @llvm.umax.i32(i32 %10, i32 8) - %12 = getelementptr inbounds i8, ptr %calloc.i, i64 24 - %13 = select i1 %9, i32 1024, i32 %11 - store i32 %13, ptr %12, align 8 + %11 = getelementptr inbounds i8, ptr %calloc.i, i64 24 + %12 = tail call i32 @llvm.umax.i32(i32 %10, i32 8) + %13 = select i1 %9, i32 1024, i32 %12 + store i32 %13, ptr %11, align 8 %14 = getelementptr inbounds i8, ptr %calloc.i, i64 28 store i32 64, ptr %14, align 4 %15 = getelementptr inbounds i8, ptr %calloc.i, i64 32 diff --git a/bench/abseil-cpp/optimized/numbers_test.cc.ll b/bench/abseil-cpp/optimized/numbers_test.cc.ll index ef8249387e5..232bbb59673 100644 --- a/bench/abseil-cpp/optimized/numbers_test.cc.ll +++ b/bench/abseil-cpp/optimized/numbers_test.cc.ll @@ -76553,10 +76553,10 @@ invoke.cont67.i: ; preds = %invoke.cont64.i for.body83.lr.ph.i: ; preds = %invoke.cont67.i %31 = load i64, ptr %_M_node_count.i.i.i.i, align 8 + %cmp71.i = icmp ugt i64 %31, 5000000 %div.i = udiv i64 5000000, %31 %conv70.i = trunc nuw nsw i64 %div.i to i32 %32 = uitofp nneg i32 %conv70.i to double - %cmp71.i = icmp ugt i64 %31, 5000000 %conv103.i = select i1 %cmp71.i, double 1.000000e+00, double %32 br label %for.body83.i diff --git a/bench/actix-rs/optimized/2pgtlhl4qd060m9c.ll b/bench/actix-rs/optimized/2pgtlhl4qd060m9c.ll index d888e48d6d7..c1c77b41b05 100644 --- a/bench/actix-rs/optimized/2pgtlhl4qd060m9c.ll +++ b/bench/actix-rs/optimized/2pgtlhl4qd060m9c.ll @@ -7057,7 +7057,7 @@ define void @_ZN9actix_web10middleware6logger10FormatText14render_request17h7ad8 i64 14, label %93 ] -19: ; preds = %266, %247, %235, %232, %191, %159, %156, %3 +19: ; preds = %262, %243, %231, %228, %191, %159, %156, %3 ret void 20: ; preds = %3 @@ -7139,8 +7139,8 @@ _ZN9actix_web7request11HttpRequest12query_string17h34cb9023686cd4a1E.exit: ; pre call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #24, !noalias !911 unreachable -common.resume: ; preds = %154, %157, %233, %245, %264, %160, %192, %185, %226, %48 - %common.resume.op = phi { ptr, i32 } [ %49, %48 ], [ %265, %264 ], [ %246, %245 ], [ %234, %233 ], [ %227, %226 ], [ %193, %192 ], [ %186, %185 ], [ %161, %160 ], [ %158, %157 ], [ %155, %154 ] +common.resume: ; preds = %154, %157, %229, %241, %260, %160, %192, %185, %222, %48 + %common.resume.op = phi { ptr, i32 } [ %49, %48 ], [ %261, %260 ], [ %242, %241 ], [ %230, %229 ], [ %223, %222 ], [ %193, %192 ], [ %186, %185 ], [ %161, %160 ], [ %158, %157 ], [ %155, %154 ] resume { ptr, i32 } %common.resume.op "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h6de4b8ad545de968E.exit": ; preds = %41 @@ -7222,7 +7222,7 @@ _ZN9actix_web7service14ServiceRequest4path17hde7ab9445683f59eE.exit: ; preds = % tail call void @llvm.assume(i1 %83) tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %82, ptr nonnull align 1 %.sroa.0.0.i144, i64 %.sroa.3.0.i143, i1 false) invoke fastcc void @"_ZN4core3ptr62drop_in_place$LT$actix_web..middleware..logger..FormatText$GT$17hf3839ad75e8d115aE"(ptr noalias noundef align 8 dereferenceable(48) %0) - to label %235 unwind label %233 + to label %231 unwind label %229 84: ; preds = %3 %85 = getelementptr inbounds i8, ptr %0, i64 8 @@ -7233,13 +7233,13 @@ _ZN9actix_web7service14ServiceRequest4path17hde7ab9445683f59eE.exit: ; preds = % %90 = getelementptr inbounds i8, ptr %89, i64 160 %91 = tail call noundef align 8 ptr @_ZN10actix_http6header3map9HeaderMap9get_value17hc2e3facb01e6397cE.llvm.5350303487615222083(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %90, ptr noundef nonnull align 8 %85) %92 = icmp eq ptr %91, null - br i1 %92, label %_ZN10actix_http6header3map9HeaderMap3get17h6e5c2eb97cd33725E.exit.thread, label %236 + br i1 %92, label %_ZN10actix_http6header3map9HeaderMap3get17h6e5c2eb97cd33725E.exit.thread, label %232 93: ; preds = %3 %94 = getelementptr inbounds i8, ptr %0, i64 8 %95 = load ptr, ptr %94, align 8, !noundef !4 %96 = icmp eq ptr %95, null - br i1 %96, label %248, label %253 + br i1 %96, label %244, label %249 _ZN9actix_web7request11HttpRequest12query_string17h34cb9023686cd4a1E.exit.thread: ; preds = %20 %.phi.trans.insert = getelementptr inbounds i8, ptr %23, i64 112 @@ -7563,7 +7563,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit189: ; preds = %"_ZN4core3str21_$LT call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.8235.0..sroa_idx236, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.10, i64 16, i1 false) br label %19 -192: ; preds = %218, %216 +192: ; preds = %214, %212 %193 = landingpad { ptr, i32 } cleanup %194 = icmp ne ptr %201, null @@ -7586,51 +7586,44 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit189: ; preds = %"_ZN4core3str21_$LT %..val.i138 = load ptr, ptr %205, align 8, !alias.scope !982, !nonnull !4 %206 = getelementptr inbounds i8, ptr %200, i64 88 %..val2.i139 = load i64, ptr %206, align 8, !alias.scope !982 - %.sroa.3.0.i140 = select i1 %204, i64 undef, i64 %..val2.i139 - %.sroa.0.0.i141 = select i1 %204, ptr null, ptr %..val.i138 - %207 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i141, 0 - %208 = insertvalue { ptr, i64 } %207, i64 %.sroa.3.0.i140, 1 - %209 = getelementptr inbounds i8, ptr %200, i64 48 - %210 = load i64, ptr %209, align 8, !range !109, !alias.scope !985, !noundef !4 - %211 = icmp eq i64 %210, -9223372036854775808 - %212 = getelementptr inbounds i8, ptr %200, i64 56 - %..val.i190 = load ptr, ptr %212, align 8, !alias.scope !985, !nonnull !4 - %213 = getelementptr inbounds i8, ptr %200, i64 64 - %..val2.i191 = load i64, ptr %213, align 8, !alias.scope !985 - %.sroa.3.0.i192 = select i1 %211, i64 undef, i64 %..val2.i191 - %.sroa.0.0.i193 = select i1 %211, ptr null, ptr %..val.i190 - %214 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i193, 0 - %215 = insertvalue { ptr, i64 } %214, i64 %.sroa.3.0.i192, 1 + %207 = getelementptr inbounds i8, ptr %200, i64 48 + %208 = load i64, ptr %207, align 8, !range !109, !alias.scope !985, !noundef !4 + %209 = icmp eq i64 %208, -9223372036854775808 + %210 = getelementptr inbounds i8, ptr %200, i64 56 + %..val.i190 = load ptr, ptr %210, align 8, !alias.scope !985, !nonnull !4 + %211 = getelementptr inbounds i8, ptr %200, i64 64 + %..val2.i191 = load i64, ptr %211, align 8, !alias.scope !985 + %.sroa.3.0.i192 = select i1 %209, i64 undef, i64 %..val2.i191 + %.sroa.0.0.i193 = select i1 %209, ptr null, ptr %..val.i190 %spec.select = select i1 %204, ptr %.sroa.0.0.i193, ptr %..val.i138 - %spec.select127 = select i1 %204, { ptr, i64 } %215, { ptr, i64 } %208 - %.sroa.649.0 = extractvalue { ptr, i64 } %spec.select127, 1 - %.not119 = and i1 %204, %211 - br i1 %.not119, label %218, label %216 + %.sroa.649.0 = select i1 %204, i64 %.sroa.3.0.i192, i64 %..val2.i139 + %.not119 = and i1 %204, %209 + br i1 %.not119, label %214, label %212 -216: ; preds = %197 - %217 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h47c9ed78f471a9edE"(i64 noundef %.sroa.649.0, i1 noundef zeroext false) - to label %220 unwind label %192 +212: ; preds = %197 + %213 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h47c9ed78f471a9edE"(i64 noundef %.sroa.649.0, i1 noundef zeroext false) + to label %216 unwind label %192 -218: ; preds = %197 - %219 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h47c9ed78f471a9edE"(i64 noundef 1, i1 noundef zeroext false) - to label %223 unwind label %192 +214: ; preds = %197 + %215 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h47c9ed78f471a9edE"(i64 noundef 1, i1 noundef zeroext false) + to label %219 unwind label %192 -220: ; preds = %216 - %221 = extractvalue { i64, ptr } %217, 1 - %222 = icmp ne ptr %221, null - tail call void @llvm.assume(i1 %222) - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %221, ptr nonnull align 1 %spec.select, i64 %.sroa.649.0, i1 false) - br label %228 - -223: ; preds = %218 - %224 = extractvalue { i64, ptr } %219, 1 - %225 = icmp ne ptr %224, null - tail call void @llvm.assume(i1 %225) - store i8 45, ptr %224, align 1 - br label %228 - -226: ; preds = %228 - %227 = landingpad { ptr, i32 } +216: ; preds = %212 + %217 = extractvalue { i64, ptr } %213, 1 + %218 = icmp ne ptr %217, null + tail call void @llvm.assume(i1 %218) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %217, ptr nonnull align 1 %spec.select, i64 %.sroa.649.0, i1 false) + br label %224 + +219: ; preds = %214 + %220 = extractvalue { i64, ptr } %215, 1 + %221 = icmp ne ptr %220, null + tail call void @llvm.assume(i1 %221) + store i8 45, ptr %220, align 1 + br label %224 + +222: ; preds = %224 + %223 = landingpad { ptr, i32 } cleanup store i64 0, ptr %0, align 8 %.sroa.5244.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 @@ -7643,20 +7636,20 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit189: ; preds = %"_ZN4core3str21_$LT call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.8253.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.10241, i64 16, i1 false) br label %common.resume -228: ; preds = %220, %223 - %.pn = phi { i64, ptr } [ %219, %223 ], [ %217, %220 ] - %.sroa.6239.0 = phi ptr [ %224, %223 ], [ %221, %220 ] - %.sroa.8240.0 = phi i64 [ 1, %223 ], [ %.sroa.649.0, %220 ] +224: ; preds = %216, %219 + %.pn = phi { i64, ptr } [ %215, %219 ], [ %213, %216 ] + %.sroa.6239.0 = phi ptr [ %220, %219 ], [ %217, %216 ] + %.sroa.8240.0 = phi i64 [ 1, %219 ], [ %.sroa.649.0, %216 ] %.sroa.4238.0 = extractvalue { i64, ptr } %.pn, 0 - %229 = icmp ne ptr %201, null - tail call void @llvm.assume(i1 %229) - %230 = load i64, ptr %201, align 8, !noalias !988, !noundef !4 - %231 = add i64 %230, -1 - store i64 %231, ptr %201, align 8, !noalias !988 + %225 = icmp ne ptr %201, null + tail call void @llvm.assume(i1 %225) + %226 = load i64, ptr %201, align 8, !noalias !988, !noundef !4 + %227 = add i64 %226, -1 + store i64 %227, ptr %201, align 8, !noalias !988 invoke fastcc void @"_ZN4core3ptr62drop_in_place$LT$actix_web..middleware..logger..FormatText$GT$17hf3839ad75e8d115aE"(ptr noalias noundef align 8 dereferenceable(48) %0) - to label %232 unwind label %226 + to label %228 unwind label %222 -232: ; preds = %228 +228: ; preds = %224 store i64 0, ptr %0, align 8 %.sroa.5244.0..sroa_idx245 = getelementptr inbounds i8, ptr %0, i64 8 store i64 %.sroa.4238.0, ptr %.sroa.5244.0..sroa_idx245, align 8 @@ -7668,8 +7661,8 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit189: ; preds = %"_ZN4core3str21_$LT call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.8253.0..sroa_idx254, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.10241, i64 16, i1 false) br label %19 -233: ; preds = %_ZN9actix_web7service14ServiceRequest4path17hde7ab9445683f59eE.exit - %234 = landingpad { ptr, i32 } +229: ; preds = %_ZN9actix_web7service14ServiceRequest4path17hde7ab9445683f59eE.exit + %230 = landingpad { ptr, i32 } cleanup store i64 0, ptr %0, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 @@ -7680,7 +7673,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit189: ; preds = %"_ZN4core3str21_$LT store i64 %.sroa.3.0.i143, ptr %.sroa.5.sroa.6.0..sroa.5.0..sroa_idx.sroa_idx, align 8 br label %common.resume -235: ; preds = %_ZN9actix_web7service14ServiceRequest4path17hde7ab9445683f59eE.exit +231: ; preds = %_ZN9actix_web7service14ServiceRequest4path17hde7ab9445683f59eE.exit store i64 0, ptr %0, align 8 %.sroa.5.0..sroa_idx19 = getelementptr inbounds i8, ptr %0, i64 8 store i64 %81, ptr %.sroa.5.0..sroa_idx19, align 8 @@ -7690,87 +7683,87 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit189: ; preds = %"_ZN4core3str21_$LT store i64 %.sroa.3.0.i143, ptr %.sroa.5.sroa.6.0..sroa.5.0..sroa_idx19.sroa_idx, align 8 br label %19 -236: ; preds = %84 - %237 = tail call noundef nonnull align 8 ptr @_ZN10actix_http6header3map5Value5first17hfed213afae29d954E(ptr noundef nonnull align 8 %91) - %238 = tail call { ptr, i64 } @_ZN4http6header5value11HeaderValue6to_str17h5eb48323f4d80c17E(ptr noundef nonnull align 8 %237) - %239 = extractvalue { ptr, i64 } %238, 0 - %.not118 = icmp eq ptr %239, null - %240 = extractvalue { ptr, i64 } %238, 1 - %.sroa.040.1 = select i1 %.not118, ptr @anon.c8ce99f97dd1a7c2d7b2e82421dc6b83.76, ptr %239 - %.sroa.441.1 = select i1 %.not118, i64 1, i64 %240 +232: ; preds = %84 + %233 = tail call noundef nonnull align 8 ptr @_ZN10actix_http6header3map5Value5first17hfed213afae29d954E(ptr noundef nonnull align 8 %91) + %234 = tail call { ptr, i64 } @_ZN4http6header5value11HeaderValue6to_str17h5eb48323f4d80c17E(ptr noundef nonnull align 8 %233) + %235 = extractvalue { ptr, i64 } %234, 0 + %.not118 = icmp eq ptr %235, null + %236 = extractvalue { ptr, i64 } %234, 1 + %.sroa.040.1 = select i1 %.not118, ptr @anon.c8ce99f97dd1a7c2d7b2e82421dc6b83.76, ptr %235 + %.sroa.441.1 = select i1 %.not118, i64 1, i64 %236 br label %_ZN10actix_http6header3map9HeaderMap3get17h6e5c2eb97cd33725E.exit.thread -_ZN10actix_http6header3map9HeaderMap3get17h6e5c2eb97cd33725E.exit.thread: ; preds = %84, %236 - %.sroa.040.0 = phi ptr [ %.sroa.040.1, %236 ], [ @anon.c8ce99f97dd1a7c2d7b2e82421dc6b83.76, %84 ] - %.sroa.441.0 = phi i64 [ %.sroa.441.1, %236 ], [ 1, %84 ] - %241 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h47c9ed78f471a9edE"(i64 noundef %.sroa.441.0, i1 noundef zeroext false) - %242 = extractvalue { i64, ptr } %241, 0 - %243 = extractvalue { i64, ptr } %241, 1 - %244 = icmp ne ptr %243, null - tail call void @llvm.assume(i1 %244) - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %243, ptr nonnull align 1 %.sroa.040.0, i64 %.sroa.441.0, i1 false) +_ZN10actix_http6header3map9HeaderMap3get17h6e5c2eb97cd33725E.exit.thread: ; preds = %84, %232 + %.sroa.040.0 = phi ptr [ %.sroa.040.1, %232 ], [ @anon.c8ce99f97dd1a7c2d7b2e82421dc6b83.76, %84 ] + %.sroa.441.0 = phi i64 [ %.sroa.441.1, %232 ], [ 1, %84 ] + %237 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h47c9ed78f471a9edE"(i64 noundef %.sroa.441.0, i1 noundef zeroext false) + %238 = extractvalue { i64, ptr } %237, 0 + %239 = extractvalue { i64, ptr } %237, 1 + %240 = icmp ne ptr %239, null + tail call void @llvm.assume(i1 %240) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %239, ptr nonnull align 1 %.sroa.040.0, i64 %.sroa.441.0, i1 false) invoke fastcc void @"_ZN4core3ptr62drop_in_place$LT$actix_web..middleware..logger..FormatText$GT$17hf3839ad75e8d115aE"(ptr noalias noundef align 8 dereferenceable(48) %0) - to label %247 unwind label %245 + to label %243 unwind label %241 -245: ; preds = %_ZN10actix_http6header3map9HeaderMap3get17h6e5c2eb97cd33725E.exit.thread - %246 = landingpad { ptr, i32 } +241: ; preds = %_ZN10actix_http6header3map9HeaderMap3get17h6e5c2eb97cd33725E.exit.thread + %242 = landingpad { ptr, i32 } cleanup store i64 0, ptr %0, align 8 - store i64 %242, ptr %85, align 8 + store i64 %238, ptr %85, align 8 %.sroa.535.sroa.5.0..sroa.535.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %243, ptr %.sroa.535.sroa.5.0..sroa.535.0..sroa_idx.sroa_idx, align 8 + store ptr %239, ptr %.sroa.535.sroa.5.0..sroa.535.0..sroa_idx.sroa_idx, align 8 %.sroa.535.sroa.6.0..sroa.535.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 store i64 %.sroa.441.0, ptr %.sroa.535.sroa.6.0..sroa.535.0..sroa_idx.sroa_idx, align 8 br label %common.resume -247: ; preds = %_ZN10actix_http6header3map9HeaderMap3get17h6e5c2eb97cd33725E.exit.thread +243: ; preds = %_ZN10actix_http6header3map9HeaderMap3get17h6e5c2eb97cd33725E.exit.thread store i64 0, ptr %0, align 8 - store i64 %242, ptr %85, align 8 + store i64 %238, ptr %85, align 8 %.sroa.535.sroa.5.0..sroa.535.0..sroa_idx36.sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %243, ptr %.sroa.535.sroa.5.0..sroa.535.0..sroa_idx36.sroa_idx, align 8 + store ptr %239, ptr %.sroa.535.sroa.5.0..sroa.535.0..sroa_idx36.sroa_idx, align 8 %.sroa.535.sroa.6.0..sroa.535.0..sroa_idx36.sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 store i64 %.sroa.441.0, ptr %.sroa.535.sroa.6.0..sroa.535.0..sroa_idx36.sroa_idx, align 8 br label %19 -248: ; preds = %93 - %249 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h47c9ed78f471a9edE"(i64 noundef 1, i1 noundef zeroext false) - %250 = extractvalue { i64, ptr } %249, 0 - %251 = extractvalue { i64, ptr } %249, 1 - %252 = icmp ne ptr %251, null - tail call void @llvm.assume(i1 %252) - store i8 45, ptr %251, align 1 - br label %263 +244: ; preds = %93 + %245 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h47c9ed78f471a9edE"(i64 noundef 1, i1 noundef zeroext false) + %246 = extractvalue { i64, ptr } %245, 0 + %247 = extractvalue { i64, ptr } %245, 1 + %248 = icmp ne ptr %247, null + tail call void @llvm.assume(i1 %248) + store i8 45, ptr %247, align 1 + br label %259 -253: ; preds = %93 +249: ; preds = %93 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) - %254 = getelementptr inbounds i8, ptr %0, i64 16 - %.val135 = load ptr, ptr %254, align 8, !nonnull !4, !align !5, !noundef !4 - %255 = getelementptr inbounds i8, ptr %.val135, i64 16 - %256 = load i64, ptr %255, align 8, !range !32, !invariant.load !4, !noalias !995 - %257 = add i64 %256, -1 - %258 = and i64 %257, -16 - %259 = getelementptr i8, ptr %95, i64 %258 - %260 = getelementptr i8, ptr %259, i64 16 - %261 = getelementptr inbounds i8, ptr %.val135, i64 40 - %262 = load ptr, ptr %261, align 8, !invariant.load !4, !noalias !995, !nonnull !4 - call void %262(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %7, ptr noundef align 1 %260, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %2) + %250 = getelementptr inbounds i8, ptr %0, i64 16 + %.val135 = load ptr, ptr %250, align 8, !nonnull !4, !align !5, !noundef !4 + %251 = getelementptr inbounds i8, ptr %.val135, i64 16 + %252 = load i64, ptr %251, align 8, !range !32, !invariant.load !4, !noalias !995 + %253 = add i64 %252, -1 + %254 = and i64 %253, -16 + %255 = getelementptr i8, ptr %95, i64 %254 + %256 = getelementptr i8, ptr %255, i64 16 + %257 = getelementptr inbounds i8, ptr %.val135, i64 40 + %258 = load ptr, ptr %257, align 8, !invariant.load !4, !noalias !995, !nonnull !4 + call void %258(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %7, ptr noundef align 1 %256, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %2) %.sroa.455.sroa.0.0.copyload110 = load i64, ptr %7, align 8 %.sroa.455.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %7, i64 8 %.sroa.455.sroa.4.0.copyload112 = load ptr, ptr %.sroa.455.sroa.4.0..sroa_idx, align 8 %.sroa.455.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %7, i64 16 %.sroa.455.sroa.5.0.copyload114 = load i64, ptr %.sroa.455.sroa.5.0..sroa_idx, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) - br label %263 + br label %259 -263: ; preds = %253, %248 - %.sroa.455.sroa.0.0 = phi i64 [ %250, %248 ], [ %.sroa.455.sroa.0.0.copyload110, %253 ] - %.sroa.455.sroa.4.0 = phi ptr [ %251, %248 ], [ %.sroa.455.sroa.4.0.copyload112, %253 ] - %.sroa.455.sroa.5.0 = phi i64 [ 1, %248 ], [ %.sroa.455.sroa.5.0.copyload114, %253 ] +259: ; preds = %249, %244 + %.sroa.455.sroa.0.0 = phi i64 [ %246, %244 ], [ %.sroa.455.sroa.0.0.copyload110, %249 ] + %.sroa.455.sroa.4.0 = phi ptr [ %247, %244 ], [ %.sroa.455.sroa.4.0.copyload112, %249 ] + %.sroa.455.sroa.5.0 = phi i64 [ 1, %244 ], [ %.sroa.455.sroa.5.0.copyload114, %249 ] invoke fastcc void @"_ZN4core3ptr62drop_in_place$LT$actix_web..middleware..logger..FormatText$GT$17hf3839ad75e8d115aE"(ptr noalias noundef align 8 dereferenceable(48) %0) - to label %266 unwind label %264 + to label %262 unwind label %260 -264: ; preds = %263 - %265 = landingpad { ptr, i32 } +260: ; preds = %259 + %261 = landingpad { ptr, i32 } cleanup store i64 0, ptr %0, align 8 store i64 %.sroa.455.sroa.0.0, ptr %94, align 8 @@ -7782,7 +7775,7 @@ _ZN10actix_http6header3map9HeaderMap3get17h6e5c2eb97cd33725E.exit.thread: ; pred call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.657.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.657, i64 16, i1 false) br label %common.resume -266: ; preds = %263 +262: ; preds = %259 store i64 0, ptr %0, align 8 store i64 %.sroa.455.sroa.0.0, ptr %94, align 8 %.sroa.455.sroa.4.0..sroa.455.0..sroa_idx56.sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 diff --git a/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll b/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll index 925bdcea077..489bb6dd8f1 100644 --- a/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll +++ b/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll @@ -6442,12 +6442,12 @@ define internal fastcc noundef i64 @_ZN6brotli3enc19backward_references2hq17Find %122 = and i32 %110, 31 %123 = zext nneg i32 %122 to i64 %124 = icmp eq i64 %.074211, %123 - %125 = shl nuw nsw i64 %123, 32 - %126 = and i64 %117, 4294967295 - %127 = shl nuw nsw i64 %.074211, 37 - %128 = select i1 %124, i64 0, i64 %125 - %129 = or disjoint i64 %128, %127 - %130 = or disjoint i64 %129, %126 + %125 = and i64 %117, 4294967295 + %126 = shl nuw nsw i64 %.074211, 37 + %127 = shl nuw nsw i64 %123, 32 + %128 = select i1 %124, i64 0, i64 %127 + %129 = or disjoint i64 %128, %126 + %130 = or disjoint i64 %129, %125 store i64 %130, ptr %121, align 8 %131 = add nuw i64 %.4212, 1 br label %112 diff --git a/bench/base64-rs/optimized/1a4jkh1d8jsuhv4c.ll b/bench/base64-rs/optimized/1a4jkh1d8jsuhv4c.ll index 918606f8764..8bd2f9f35d3 100644 --- a/bench/base64-rs/optimized/1a4jkh1d8jsuhv4c.ll +++ b/bench/base64-rs/optimized/1a4jkh1d8jsuhv4c.ll @@ -40,8 +40,8 @@ define hidden void @_ZN6base646engine15general_purpose6decode18complete_quads_le 10: ; preds = %22, %18, %6 %11 = tail call i64 @llvm.usub.sat.i64(i64 %2, i64 %3) %12 = icmp eq i64 %3, 0 - %13 = select i1 %12, i64 4, i64 0 - %14 = tail call i64 @llvm.usub.sat.i64(i64 %11, i64 %13) + %13 = tail call i64 @llvm.usub.sat.i64(i64 %11, i64 4) + %14 = select i1 %12, i64 %13, i64 %11 %15 = lshr i64 %14, 2 %16 = mul nuw i64 %15, 3 %17 = icmp ult i64 %4, %16 diff --git a/bench/boost/optimized/path.ll b/bench/boost/optimized/path.ll index 114309e0d73..596ecdd56a5 100644 --- a/bench/boost/optimized/path.ll +++ b/bench/boost/optimized/path.ll @@ -93,9 +93,9 @@ _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %18 %.not.i.i = icmp eq ptr %25, null %26 = ptrtoint ptr %25 to i64 %27 = ptrtoint ptr %19 to i64 - %28 = sub i64 %26, %27 - %.0.i.i = select i1 %.not.i.i, i64 %24, i64 %28, !prof !14 - %29 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %26, %27 + %28 = add i64 %reass.sub, 2 + %29 = select i1 %.not.i.i, i64 %6, i64 %28, !prof !14 %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %30, ptr %0, align 8, !tbaa !12 %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -648,9 +648,9 @@ _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %18 %.not.i.i = icmp eq ptr %25, null %26 = ptrtoint ptr %25 to i64 %27 = ptrtoint ptr %19 to i64 - %28 = sub i64 %26, %27 - %.0.i.i = select i1 %.not.i.i, i64 %24, i64 %28, !prof !14 - %29 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %26, %27 + %28 = add i64 %reass.sub, 2 + %29 = select i1 %.not.i.i, i64 %6, i64 %28, !prof !14 %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %30, ptr %0, align 8, !tbaa !12 %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -1221,9 +1221,9 @@ _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %20 %.not.i.i = icmp eq ptr %25, null %26 = ptrtoint ptr %25 to i64 %27 = ptrtoint ptr %21 to i64 - %28 = sub i64 %26, %27 - %.0.i.i = select i1 %.not.i.i, i64 %24, i64 %28, !prof !14 - %29 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %26, %27 + %28 = add i64 %reass.sub, 2 + %29 = select i1 %.not.i.i, i64 %6, i64 %28, !prof !14 %.not = icmp eq i64 %29, 0 br i1 %.not, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm.exit, label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread63 @@ -1469,9 +1469,9 @@ _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %20 %.not.i.i = icmp eq ptr %25, null %26 = ptrtoint ptr %25 to i64 %27 = ptrtoint ptr %21 to i64 - %28 = sub i64 %26, %27 - %.0.i.i = select i1 %.not.i.i, i64 %24, i64 %28, !prof !14 - %29 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %26, %27 + %28 = add i64 %reass.sub, 2 + %29 = select i1 %.not.i.i, i64 %6, i64 %28, !prof !14 %.not = icmp eq i64 %29, 0 br i1 %.not, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm.exit, label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread63 @@ -1901,9 +1901,9 @@ define void @_ZN5boost10filesystem6detail15path_algorithms9append_v4ERNS0_4pathE %.not.i.i = icmp eq ptr %32, null %33 = ptrtoint ptr %32 to i64 %34 = ptrtoint ptr %27 to i64 - %35 = sub i64 %33, %34 - %.0.i.i = select i1 %.not.i.i, i64 %31, i64 %35, !prof !14 - %36 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %33, %34 + %35 = add i64 %reass.sub, 2 + %36 = select i1 %.not.i.i, i64 %16, i64 %35, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %24, %30, %19, %20, %26 @@ -1949,9 +1949,9 @@ _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread: ; preds = %13, %.not.i.i51 = icmp eq ptr %56, null %57 = ptrtoint ptr %56 to i64 %58 = ptrtoint ptr %51 to i64 - %59 = sub i64 %57, %58 - %.0.i.i52 = select i1 %.not.i.i51, i64 %55, i64 %59, !prof !14 - %60 = add i64 %.0.i.i52, 2 + %reass.sub74 = sub i64 %57, %58 + %59 = add i64 %reass.sub74, 2 + %60 = select i1 %.not.i.i51, i64 %10, i64 %59, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit55 _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit55: ; preds = %48, %54, %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread, %41, %44, %50 @@ -2115,19 +2115,19 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit58: ; preds = %_ZN %.not.i.i.i.i = icmp eq ptr %131, null %132 = ptrtoint ptr %131 to i64 %133 = ptrtoint ptr %126 to i64 - %134 = sub i64 %132, %133 - %.0.i.i.i.i = select i1 %.not.i.i.i.i, i64 %130, i64 %134, !prof !14 - %135 = add i64 %.0.i.i.i.i, 2 + %reass.sub75 = sub i64 %132, %133 + %134 = add i64 %reass.sub75, 2 + %135 = select i1 %.not.i.i.i.i, i64 %113, i64 %134, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i.i _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i.i: ; preds = %129, %125, %123, %119, %116, %111 - %.0.i.i59 = phi i64 [ 0, %111 ], [ 0, %125 ], [ 0, %119 ], [ 0, %116 ], [ %135, %129 ], [ 2, %123 ] - %umin.i.i.i = tail call i64 @llvm.umin.i64(i64 %113, i64 %.0.i.i59) + %.0.i.i = phi i64 [ 0, %111 ], [ 0, %125 ], [ 0, %119 ], [ 0, %116 ], [ %135, %129 ], [ 2, %123 ] + %umin.i.i.i = tail call i64 @llvm.umin.i64(i64 %113, i64 %.0.i.i) br label %136 136: ; preds = %138, %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i.i %.0.i.i.i = phi i64 [ %113, %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i.i ], [ %139, %138 ] - %137 = icmp ugt i64 %.0.i.i.i, %.0.i.i59 + %137 = icmp ugt i64 %.0.i.i.i, %.0.i.i br i1 %137, label %138, label %_ZN5boost10filesystem6detail15path_algorithms15has_filename_v4ERKNS0_4pathE.exit 138: ; preds = %136 @@ -2368,9 +2368,9 @@ define void @_ZN5boost10filesystem6detail15path_algorithms12increment_v3ERNS0_11 %.not.i.i = icmp eq ptr %34, null %35 = ptrtoint ptr %34 to i64 %36 = ptrtoint ptr %29 to i64 - %37 = sub i64 %35, %36 - %.0.i.i = select i1 %.not.i.i, i64 %33, i64 %37, !prof !14 - %38 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %35, %36 + %37 = add i64 %reass.sub, 2 + %38 = select i1 %.not.i.i, i64 %5, i64 %37, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %26, %32, %18, %21, %22, %28 @@ -2658,9 +2658,9 @@ define void @_ZN5boost10filesystem6detail15path_algorithms12increment_v4ERNS0_11 %.not.i.i = icmp eq ptr %44, null %45 = ptrtoint ptr %44 to i64 %46 = ptrtoint ptr %39 to i64 - %47 = sub i64 %45, %46 - %.0.i.i = select i1 %.not.i.i, i64 %43, i64 %47, !prof !14 - %48 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %45, %46 + %47 = add i64 %reass.sub, 2 + %48 = select i1 %.not.i.i, i64 %5, i64 %47, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %36, %42, %28, %31, %32, %38 @@ -2668,7 +2668,7 @@ _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %36, %42, %2 %.021.i = phi i64 [ 0, %31 ], [ 0, %38 ], [ 0, %32 ], [ %5, %28 ], [ %48, %42 ], [ 2, %36 ] %49 = icmp eq i64 %20, %.021.i %50 = icmp eq i64 %7, %.0 - %or.cond = and i1 %50, %49 + %or.cond = select i1 %49, i1 %50, i1 false br i1 %or.cond, label %51, label %.preheader .preheader: ; preds = %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit @@ -2997,9 +2997,9 @@ _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i.i: ; preds = %23 %.not.i.i.i.i = icmp eq ptr %28, null %29 = ptrtoint ptr %28 to i64 %30 = ptrtoint ptr %24 to i64 - %31 = sub i64 %29, %30 - %.0.i.i.i.i = select i1 %.not.i.i.i.i, i64 %27, i64 %31, !prof !14 - %32 = add i64 %.0.i.i.i.i, 2 + %reass.sub = sub i64 %29, %30 + %31 = add i64 %reass.sub, 2 + %32 = select i1 %.not.i.i.i.i, i64 %10, i64 %31, !prof !14 %.not.i.i = icmp eq i64 %32, 0 br i1 %.not.i.i, label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread.i.i, label %_ZN12_GLOBAL__N_113first_elementERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmS8_.exit.thread.thread @@ -3492,9 +3492,9 @@ define void @_ZN5boost10filesystem6detail15path_algorithms18remove_filename_v3ER %.not.i.i.i.i = icmp eq ptr %22, null %23 = ptrtoint ptr %22 to i64 %24 = ptrtoint ptr %17 to i64 - %25 = sub i64 %23, %24 - %.0.i.i.i.i = select i1 %.not.i.i.i.i, i64 %21, i64 %25, !prof !14 - %26 = add i64 %.0.i.i.i.i, 2 + %reass.sub = sub i64 %23, %24 + %25 = add i64 %reass.sub, 2 + %26 = select i1 %.not.i.i.i.i, i64 %3, i64 %25, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i.i _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i.i: ; preds = %20, %16, %14, %10, %9, %6, %1 @@ -3594,9 +3594,9 @@ define noundef nonnull align 8 dereferenceable(32) ptr @_ZN5boost10filesystem4pa %.not.i.i.i = icmp eq ptr %22, null %23 = ptrtoint ptr %22 to i64 %24 = ptrtoint ptr %17 to i64 - %25 = sub i64 %23, %24 - %.0.i.i.i = select i1 %.not.i.i.i, i64 %21, i64 %25, !prof !14 - %26 = add i64 %.0.i.i.i, 2 + %reass.sub = sub i64 %23, %24 + %25 = add i64 %reass.sub, 2 + %26 = select i1 %.not.i.i.i, i64 %3, i64 %25, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i: ; preds = %20, %16, %14, %10, %9, %6, %1 @@ -3694,9 +3694,9 @@ define void @_ZN5boost10filesystem6detail15path_algorithms18remove_filename_v4ER %.not.i.i.i = icmp eq ptr %21, null %22 = ptrtoint ptr %21 to i64 %23 = ptrtoint ptr %16 to i64 - %24 = sub i64 %22, %23 - %.0.i.i.i = select i1 %.not.i.i.i, i64 %20, i64 %24, !prof !14 - %25 = add i64 %.0.i.i.i, 2 + %reass.sub = sub i64 %22, %23 + %24 = add i64 %reass.sub, 2 + %25 = select i1 %.not.i.i.i, i64 %3, i64 %24, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i: ; preds = %19, %15, %13, %9, %6, %1 @@ -3761,9 +3761,9 @@ define noundef i64 @_ZN5boost10filesystem6detail15path_algorithms21find_filename %.not.i.i = icmp eq ptr %21, null %22 = ptrtoint ptr %21 to i64 %23 = ptrtoint ptr %16 to i64 - %24 = sub i64 %22, %23 - %.0.i.i = select i1 %.not.i.i, i64 %20, i64 %24, !prof !14 - %25 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %22, %23 + %24 = add i64 %reass.sub, 2 + %25 = select i1 %.not.i.i, i64 %3, i64 %24, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %13, %19, %1, %6, %9, %15 @@ -4159,9 +4159,9 @@ define noundef i64 @_ZN5boost10filesystem6detail15path_algorithms22find_extensio %.not.i.i = icmp eq ptr %21, null %22 = ptrtoint ptr %21 to i64 %23 = ptrtoint ptr %16 to i64 - %24 = sub i64 %22, %23 - %.0.i.i = select i1 %.not.i.i, i64 %20, i64 %24, !prof !14 - %25 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %22, %23 + %24 = add i64 %reass.sub, 2 + %25 = select i1 %.not.i.i, i64 %3, i64 %24, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %13, %19, %1, %6, %9, %15 @@ -4270,9 +4270,9 @@ define noundef i64 @_ZN5boost10filesystem6detail15path_algorithms19find_root_nam %.not.i.i = icmp eq ptr %21, null %22 = ptrtoint ptr %21 to i64 %23 = ptrtoint ptr %16 to i64 - %24 = sub i64 %22, %23 - %.0.i.i = select i1 %.not.i.i, i64 %20, i64 %24, !prof !14 - %25 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %22, %23 + %24 = add i64 %reass.sub, 2 + %25 = select i1 %.not.i.i, i64 %4, i64 %24, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %13, %19, %1, %6, %9, %15 @@ -4319,9 +4319,9 @@ define noundef i64 @_ZN5boost10filesystem6detail15path_algorithms19find_root_pat %.not.i.i = icmp eq ptr %22, null %23 = ptrtoint ptr %22 to i64 %24 = ptrtoint ptr %17 to i64 - %25 = sub i64 %23, %24 - %.0.i.i = select i1 %.not.i.i, i64 %21, i64 %25, !prof !14 - %26 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %23, %24 + %25 = add i64 %reass.sub, 2 + %26 = select i1 %.not.i.i, i64 %4, i64 %25, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %14, %20, %1, %6, %9, %10, %16 @@ -4372,9 +4372,9 @@ define { i64, i64 } @_ZN5boost10filesystem6detail15path_algorithms19find_root_di %.not.i.i = icmp eq ptr %22, null %23 = ptrtoint ptr %22 to i64 %24 = ptrtoint ptr %17 to i64 - %25 = sub i64 %23, %24 - %.0.i.i = select i1 %.not.i.i, i64 %21, i64 %25, !prof !14 - %26 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %23, %24 + %25 = add i64 %reass.sub, 2 + %26 = select i1 %.not.i.i, i64 %4, i64 %25, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %14, %20, %1, %6, %9, %10, %16 @@ -4425,9 +4425,9 @@ define { i64, i64 } @_ZN5boost10filesystem6detail15path_algorithms18find_relativ %.not.i.i = icmp eq ptr %22, null %23 = ptrtoint ptr %22 to i64 %24 = ptrtoint ptr %17 to i64 - %25 = sub i64 %23, %24 - %.0.i.i = select i1 %.not.i.i, i64 %21, i64 %25, !prof !14 - %26 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %23, %24 + %25 = add i64 %reass.sub, 2 + %26 = select i1 %.not.i.i, i64 %4, i64 %25, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %14, %20, %1, %9, %10, %16 @@ -4498,9 +4498,9 @@ define noundef i64 @_ZN5boost10filesystem6detail15path_algorithms21find_parent_p %.not.i.i = icmp eq ptr %22, null %23 = ptrtoint ptr %22 to i64 %24 = ptrtoint ptr %17 to i64 - %25 = sub i64 %23, %24 - %.0.i.i = select i1 %.not.i.i, i64 %21, i64 %25, !prof !14 - %26 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %23, %24 + %25 = add i64 %reass.sub, 2 + %26 = select i1 %.not.i.i, i64 %3, i64 %25, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %14, %20, %1, %6, %9, %10, %16 @@ -4599,9 +4599,9 @@ define void @_ZN5boost10filesystem6detail15path_algorithms11filename_v3ERKNS0_4p %.not.i.i = icmp eq ptr %25, null %26 = ptrtoint ptr %25 to i64 %27 = ptrtoint ptr %20 to i64 - %28 = sub i64 %26, %27 - %.0.i.i = select i1 %.not.i.i, i64 %24, i64 %28, !prof !14 - %29 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %26, %27 + %28 = add i64 %reass.sub, 2 + %29 = select i1 %.not.i.i, i64 %6, i64 %28, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %17, %23, %2, %12, %13, %19 @@ -4908,9 +4908,9 @@ define void @_ZN5boost10filesystem6detail15path_algorithms7stem_v4ERKNS0_4pathE( %.not.i.i.i.i = icmp eq ptr %23, null %24 = ptrtoint ptr %23 to i64 %25 = ptrtoint ptr %18 to i64 - %26 = sub i64 %24, %25 - %.0.i.i.i.i = select i1 %.not.i.i.i.i, i64 %22, i64 %26, !prof !14 - %27 = add i64 %.0.i.i.i.i, 2 + %reass.sub = sub i64 %24, %25 + %26 = add i64 %reass.sub, 2 + %27 = select i1 %.not.i.i.i.i, i64 %5, i64 %26, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i.i _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i.i: ; preds = %21, %17, %15, %11, %8, %2 @@ -5090,9 +5090,9 @@ define noundef nonnull align 8 dereferenceable(32) ptr @_ZN5boost10filesystem4pa %.not.i.i.i.i = icmp eq ptr %22, null %23 = ptrtoint ptr %22 to i64 %24 = ptrtoint ptr %17 to i64 - %25 = sub i64 %23, %24 - %.0.i.i.i.i = select i1 %.not.i.i.i.i, i64 %21, i64 %25, !prof !14 - %26 = add i64 %.0.i.i.i.i, 2 + %reass.sub = sub i64 %23, %24 + %25 = add i64 %reass.sub, 2 + %26 = select i1 %.not.i.i.i.i, i64 %4, i64 %25, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i.i _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.i.i: ; preds = %20, %16, %14, %10, %7, %2 @@ -6216,9 +6216,9 @@ _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread: ; preds = %8 %.not.i.i = icmp eq ptr %26, null %27 = ptrtoint ptr %26 to i64 %28 = ptrtoint ptr %21 to i64 - %29 = sub i64 %27, %28 - %.0.i.i = select i1 %.not.i.i, i64 %25, i64 %29, !prof !14 - %30 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %27, %28 + %29 = add i64 %reass.sub, 2 + %30 = select i1 %.not.i.i, i64 %5, i64 %29, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %18, %24, %1, %13, %14, %20 @@ -6380,9 +6380,9 @@ _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread: ; preds = %8 %.not.i.i = icmp eq ptr %26, null %27 = ptrtoint ptr %26 to i64 %28 = ptrtoint ptr %21 to i64 - %29 = sub i64 %27, %28 - %.0.i.i = select i1 %.not.i.i, i64 %25, i64 %29, !prof !14 - %30 = add i64 %.0.i.i, 2 + %reass.sub = sub i64 %27, %28 + %29 = add i64 %reass.sub, 2 + %30 = select i1 %.not.i.i, i64 %5, i64 %29, !prof !14 br label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %18, %24, %1, %13, %14, %20 diff --git a/bench/box2d/optimized/b2_collision.cpp.ll b/bench/box2d/optimized/b2_collision.cpp.ll index c1f3753b5ca..daada8c7fbd 100644 --- a/bench/box2d/optimized/b2_collision.cpp.ll +++ b/bench/box2d/optimized/b2_collision.cpp.ll @@ -1288,18 +1288,18 @@ for.body.us: ; preds = %for.cond11.for.cond %indvars.iv96 = phi i64 [ %indvars.iv.next97, %for.cond11.for.cond.loopexit_crit_edge.us ], [ 0, %for.body.lr.ph ] %cmp6.us = icmp samesign ult i64 %indvars.iv96, %2 %indvars.iv.next97 = add nuw nsw i64 %indvars.iv96, 1 - %3 = and i64 %indvars.iv.next97, 4294967295 %arrayidx.us = getelementptr inbounds [8 x %struct.b2Vec2], ptr %hull, i64 0, i64 %indvars.iv96 - %4 = load float, ptr %arrayidx.us, align 4 + %3 = load float, ptr %arrayidx.us, align 4 %arrayidx.sroa_idx.us = getelementptr inbounds i8, ptr %arrayidx.us, i64 4 - %5 = load float, ptr %arrayidx.sroa_idx.us, align 4 - %idxprom8.us = select i1 %cmp6.us, i64 %3, i64 0 + %4 = load float, ptr %arrayidx.sroa_idx.us, align 4 + %5 = and i64 %indvars.iv.next97, 4294967295 + %idxprom8.us = select i1 %cmp6.us, i64 %5, i64 0 %arrayidx9.us = getelementptr inbounds [8 x %struct.b2Vec2], ptr %hull, i64 0, i64 %idxprom8.us %6 = load float, ptr %arrayidx9.us, align 4 - %sub.i.us = fsub float %6, %4 + %sub.i.us = fsub float %6, %3 %y.i.us = getelementptr inbounds i8, ptr %arrayidx9.us, i64 4 %7 = load float, ptr %y.i.us, align 4 - %sub3.i.us = fsub float %7, %5 + %sub3.i.us = fsub float %7, %4 %retval.sroa.0.0.vec.insert.i.us = insertelement <2 x float> poison, float %sub.i.us, i64 0 %retval.sroa.0.4.vec.insert.i.us = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i.us, float %sub3.i.us, i64 1 %mul4.i.i.us = fmul float %sub3.i.us, %sub3.i.us @@ -1333,10 +1333,10 @@ for.body14.us: ; preds = %_ZN6b2Vec29Normaliz if.end19.us: ; preds = %for.body14.us %arrayidx22.us = getelementptr inbounds [8 x %struct.b2Vec2], ptr %hull, i64 0, i64 %indvars.iv %10 = load float, ptr %arrayidx22.us, align 4 - %sub.i31.us = fsub float %10, %4 + %sub.i31.us = fsub float %10, %3 %y.i32.us = getelementptr inbounds i8, ptr %arrayidx22.us, i64 4 %11 = load float, ptr %y.i32.us, align 4 - %sub3.i34.us = fsub float %11, %5 + %sub3.i34.us = fsub float %11, %4 %neg.i.us = fmul float %sub3.i34.us, %9 %12 = tail call noundef float @llvm.fmuladd.f32(float %sub.i31.us, float %e.sroa.0.4.vec.extract86.us, float %neg.i.us) %cmp25.us = fcmp ult float %12, 0.000000e+00 diff --git a/bench/bullet3/optimized/btGImpactBvh.ll b/bench/bullet3/optimized/btGImpactBvh.ll index 373552f7c1c..af906923efb 100644 --- a/bench/bullet3/optimized/btGImpactBvh.ll +++ b/bench/bullet3/optimized/btGImpactBvh.ll @@ -1809,16 +1809,16 @@ for.body42: ; preds = %for.end38, %for.con %indvars.iv121 = phi i64 [ %indvars.iv.next122, %for.cond40.loopexit ], [ 0, %for.end38 ] %indvars.iv.next122 = add nuw nsw i64 %indvars.iv121, 1 %41 = icmp eq i64 %indvars.iv.next122, 3 - %42 = and i64 %indvars.iv.next122, 4294967295 %rem45.cmp = icmp eq i64 %indvars.iv121, 0 - %43 = trunc i64 %indvars.iv121 to i32 - %44 = add i32 %43, -1 - %rem45 = select i1 %rem45.cmp, i32 2, i32 %44 + %42 = trunc i64 %indvars.iv121 to i32 + %43 = add i32 %42, -1 + %rem45 = select i1 %rem45.cmp, i32 2, i32 %43 %cmp47 = icmp eq i64 %indvars.iv121, 2 %idxprom57 = zext nneg i32 %rem45 to i64 %arrayidx58 = getelementptr inbounds float, ptr %T, i64 %idxprom57 - %45 = load float, ptr %arrayidx58, align 4 - %idxprom.i89 = select i1 %41, i64 0, i64 %42 + %44 = load float, ptr %arrayidx58, align 4 + %45 = and i64 %indvars.iv.next122, 4294967295 + %idxprom.i89 = select i1 %41, i64 0, i64 %45 %arrayidx.i90 = getelementptr inbounds [3 x %class.btVector3], ptr %m_R1to0, i64 0, i64 %idxprom.i89 %arrayidx66 = getelementptr inbounds float, ptr %T, i64 %idxprom.i89 %46 = load float, ptr %arrayidx66, align 4 @@ -1852,7 +1852,7 @@ for.body51: ; preds = %for.body42, %for.co %50 = load float, ptr %arrayidx71, align 4 %51 = fneg float %50 %neg = fmul float %46, %51 - %52 = tail call float @llvm.fmuladd.f32(float %45, float %49, float %neg) + %52 = tail call float @llvm.fmuladd.f32(float %44, float %49, float %neg) %arrayidx80 = getelementptr inbounds float, ptr %arrayidx.i94, i64 %indvars.iv117 %53 = load float, ptr %arrayidx80, align 4 %arrayidx88 = getelementptr inbounds float, ptr %arrayidx.i96, i64 %indvars.iv117 diff --git a/bench/c3c/optimized/file_utils.c.ll b/bench/c3c/optimized/file_utils.c.ll index 7797c699168..5895b7360d4 100644 --- a/bench/c3c/optimized/file_utils.c.ll +++ b/bench/c3c/optimized/file_utils.c.ll @@ -956,18 +956,18 @@ define dso_local void @file_add_wildcard_files(ptr nocapture noundef %0, ptr nou %6 = alloca %struct.stat, align 8 %7 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #18 %8 = icmp eq i64 %7, 0 - %9 = add i64 %7, -1 %spec.select54 = select i1 %8, ptr @.str.33, ptr %1 - %10 = tail call ptr @opendir(ptr noundef %spec.select54) - %11 = select i1 %8, i64 1, i64 %9 + %9 = tail call ptr @opendir(ptr noundef %spec.select54) + %10 = add i64 %7, -1 + %11 = select i1 %8, i64 1, i64 %10 %12 = getelementptr inbounds i8, ptr %spec.select54, i64 %11 %13 = load i8, ptr %12, align 1 %14 = icmp eq i8 %13, 47 - %.not = icmp eq ptr %10, null + %.not = icmp eq ptr %9, null br i1 %.not, label %98, label %.preheader .preheader: ; preds = %5 - %15 = tail call ptr @readdir(ptr noundef nonnull %10) #17 + %15 = tail call ptr @readdir(ptr noundef nonnull %9) #17 %.not5058 = icmp eq ptr %15, null br i1 %.not5058, label %._crit_edge, label %.lr.ph @@ -1126,7 +1126,7 @@ file_has_suffix_in_list.exit.thread.us: ; preds = %40, %26 br label %.backedge.us .backedge.us: ; preds = %.lr.ph.split.us, %23, %85, %89, %91, %file_has_suffix_in_list.exit.thread.us, %81 - %92 = tail call ptr @readdir(ptr noundef nonnull %10) #17 + %92 = tail call ptr @readdir(ptr noundef nonnull %9) #17 %.not50.us = icmp eq ptr %92, null br i1 %.not50.us, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !17 @@ -1148,7 +1148,7 @@ file_has_suffix_in_list.exit.thread.us59: ; preds = %.lr.ph.split.split. br label %.backedge.us63 .backedge.us63: ; preds = %.lr.ph.split.split.us, %.lr.ph.split.split.us, %file_has_suffix_in_list.exit.thread.us59 - %97 = tail call ptr @readdir(ptr noundef nonnull %10) #17 + %97 = tail call ptr @readdir(ptr noundef nonnull %9) #17 %.not50.us64 = icmp eq ptr %97, null br i1 %.not50.us64, label %._crit_edge, label %.lr.ph.split.split.us, !llvm.loop !17 @@ -1169,7 +1169,7 @@ file_has_suffix_in_list.exit.thread.us59: ; preds = %.lr.ph.split.split. ] .backedge: ; preds = %.lr.ph.split.split, %.lr.ph.split.split, %107, %113, %111, %file_has_suffix_in_list.exit.thread - %104 = tail call ptr @readdir(ptr noundef nonnull %10) #17 + %104 = tail call ptr @readdir(ptr noundef nonnull %9) #17 %.not50 = icmp eq ptr %104, null br i1 %.not50, label %._crit_edge, label %.lr.ph.split.split, !llvm.loop !17 @@ -1195,7 +1195,7 @@ file_has_suffix_in_list.exit.thread: ; preds = %.lr.ph.split.split br label %.backedge ._crit_edge: ; preds = %.backedge.us63, %.backedge, %.backedge.us, %.preheader - %114 = tail call i32 @closedir(ptr noundef nonnull %10) + %114 = tail call i32 @closedir(ptr noundef nonnull %9) ret void } diff --git a/bench/c3c/optimized/sema_stmts.c.ll b/bench/c3c/optimized/sema_stmts.c.ll index 738a6247a2c..98c156c23d8 100644 --- a/bench/c3c/optimized/sema_stmts.c.ll +++ b/bench/c3c/optimized/sema_stmts.c.ll @@ -2028,14 +2028,14 @@ sema_analyse_defer_stmt_body.exit.i: ; preds = %427 %.0426.i = phi ptr [ %788, %785 ], [ null, %793 ], [ %799, %801 ] %.0425.i = phi i32 [ 0, %785 ], [ %795, %793 ], [ 0, %801 ] %816 = icmp ne i32 %.0425.i, 1 - %817 = and i16 %509, 8 - %818 = icmp ne i16 %817, 0 - %819 = getelementptr inbounds i8, ptr %500, i64 16 - %820 = getelementptr inbounds i8, ptr %.0408.i.lcssa347, i64 8 - %.sroa.0.0.in.i = select i1 %.not472.i, ptr %820, ptr %819 + %817 = getelementptr inbounds i8, ptr %500, i64 16 + %818 = getelementptr inbounds i8, ptr %.0408.i.lcssa347, i64 8 + %.sroa.0.0.in.i = select i1 %.not472.i, ptr %818, ptr %817 %.sroa.0.0.i = load i64, ptr %.sroa.0.0.in.i, align 8 - %821 = call ptr @decl_new_generated_var(ptr noundef %.0418.i, i32 noundef 2, i64 %.sroa.0.0.i) #9 - %822 = select i1 %816, i1 %818, i1 false + %819 = call ptr @decl_new_generated_var(ptr noundef %.0418.i, i32 noundef 2, i64 %.sroa.0.0.i) #9 + %820 = and i16 %509, 8 + %821 = icmp ne i16 %820, 0 + %822 = select i1 %816, i1 %821, i1 false %.not481.i = icmp eq ptr %.0426.i, null br i1 %822, label %823, label %831 @@ -2045,7 +2045,7 @@ sema_analyse_defer_stmt_body.exit.i: ; preds = %427 824: ; preds = %823 %825 = load ptr, ptr @type_isz, align 8 %826 = zext i32 %.0425.i to i64 - %827 = load i64, ptr %820, align 8 + %827 = load i64, ptr %818, align 8 %828 = call ptr @expr_new_const_int(i64 %827, ptr noundef %825, i64 noundef %826) #9 br label %829 @@ -2058,7 +2058,7 @@ sema_analyse_defer_stmt_body.exit.i: ; preds = %427 br i1 %.not481.i, label %913, label %832 832: ; preds = %831 - %833 = load i64, ptr %820, align 8 + %833 = load i64, ptr %818, align 8 %834 = call ptr @decl_new_generated_var(ptr noundef %.0418.i, i32 noundef 2, i64 %833) #9 %835 = call zeroext i1 @cast_implicit_silent(ptr noundef nonnull %0, ptr noundef nonnull %.0426.i, ptr noundef %.0418.i) #9 br i1 %835, label %856, label %836 @@ -2067,7 +2067,7 @@ sema_analyse_defer_stmt_body.exit.i: ; preds = %427 %837 = load ptr, ptr %.0426.i, align 8 %838 = call ptr @type_quoted_error_string(ptr noundef %837) #9 %839 = call ptr @type_quoted_error_string(ptr noundef %.0418.i) #9 - %840 = load i64, ptr %820, align 8 + %840 = load i64, ptr %818, align 8 call void (i64, ptr, ...) @sema_error_at(i64 %840, ptr noundef nonnull @.str.52, ptr noundef %838, ptr noundef %839) #9 br i1 %.not476.i, label %848, label %841 @@ -2110,7 +2110,7 @@ sema_analyse_defer_stmt_body.exit.i: ; preds = %427 864: ; preds = %829 %865 = call fastcc ptr @expand_(ptr noundef %.0409.i170) - %866 = call ptr @expr_generate_decl(ptr noundef %821, ptr noundef %.1427.i) #9 + %866 = call ptr @expr_generate_decl(ptr noundef %819, ptr noundef %.1427.i) #9 %867 = getelementptr inbounds i8, ptr %865, i64 -8 %868 = load i32, ptr %867, align 4 %869 = add i32 %868, -1 @@ -2122,13 +2122,13 @@ sema_analyse_defer_stmt_body.exit.i: ; preds = %427 %874 = call ptr @expr_new(i32 noundef 27, i64 %873) #9 %875 = getelementptr inbounds i8, ptr %874, i64 24 store ptr %865, ptr %875, align 8 - %876 = getelementptr inbounds i8, ptr %821, i64 16 + %876 = getelementptr inbounds i8, ptr %819, i64 16 %877 = load i64, ptr %876, align 8 %878 = call ptr @expr_new(i32 noundef 3, i64 %877) #9 %879 = getelementptr inbounds i8, ptr %878, i64 24 %880 = getelementptr inbounds i8, ptr %878, i64 32 store i8 14, ptr %880, align 8 - %881 = call ptr @expr_variable(ptr noundef %821) #9 + %881 = call ptr @expr_variable(ptr noundef %819) #9 %882 = load ptr, ptr @expr_arena, align 8 %883 = ptrtoint ptr %881 to i64 %884 = ptrtoint ptr %882 to i64 @@ -2136,7 +2136,7 @@ sema_analyse_defer_stmt_body.exit.i: ; preds = %427 %886 = sdiv exact i64 %885, 56 %887 = trunc i64 %886 to i32 store i32 %887, ptr %879, align 8 - %888 = load i64, ptr %820, align 8 + %888 = load i64, ptr %818, align 8 %889 = call ptr @expr_new_const_int(i64 %888, ptr noundef %.0418.i, i64 noundef 0) #9 %890 = load ptr, ptr @expr_arena, align 8 %891 = ptrtoint ptr %889 to i64 @@ -2148,7 +2148,7 @@ sema_analyse_defer_stmt_body.exit.i: ; preds = %427 store i32 %895, ptr %896, align 4 %897 = load i64, ptr %876, align 8 %898 = call ptr @expr_new(i32 noundef 63, i64 %897) #9 - %899 = call ptr @expr_variable(ptr noundef %821) #9 + %899 = call ptr @expr_variable(ptr noundef %819) #9 %900 = getelementptr inbounds i8, ptr %898, i64 24 store ptr %899, ptr %900, align 8 %901 = getelementptr inbounds i8, ptr %898, i64 32 @@ -2173,11 +2173,11 @@ sema_analyse_defer_stmt_body.exit.i: ; preds = %427 913: ; preds = %856, %831 %.1422.i = phi ptr [ %834, %856 ], [ null, %831 ] %.2.i79 = phi ptr [ %857, %856 ], [ %.0409.i170, %831 ] - %914 = getelementptr inbounds i8, ptr %821, i64 16 + %914 = getelementptr inbounds i8, ptr %819, i64 16 %915 = load i64, ptr %914, align 8 %916 = call ptr @expr_new_const_int(i64 %915, ptr noundef %.0418.i, i64 noundef 0) #9 %917 = call fastcc ptr @expand_(ptr noundef %.2.i79) - %918 = call ptr @expr_generate_decl(ptr noundef %821, ptr noundef %916) #9 + %918 = call ptr @expr_generate_decl(ptr noundef %819, ptr noundef %916) #9 %919 = getelementptr inbounds i8, ptr %917, i64 -8 %920 = load i32, ptr %919, align 4 %921 = add i32 %920, -1 @@ -2203,7 +2203,7 @@ sema_analyse_defer_stmt_body.exit.i: ; preds = %427 %935 = getelementptr inbounds i8, ptr %934, i64 24 %936 = getelementptr inbounds i8, ptr %934, i64 32 store i8 16, ptr %936, align 8 - %937 = call ptr @expr_variable(ptr noundef nonnull %821) #9 + %937 = call ptr @expr_variable(ptr noundef nonnull %819) #9 %938 = load ptr, ptr @expr_arena, align 8 %939 = ptrtoint ptr %937 to i64 %940 = ptrtoint ptr %938 to i64 @@ -2221,7 +2221,7 @@ sema_analyse_defer_stmt_body.exit.i: ; preds = %427 946: ; preds = %932 %947 = load ptr, ptr @type_isz, align 8 %948 = zext i32 %.0425.i to i64 - %949 = load i64, ptr %820, align 8 + %949 = load i64, ptr %818, align 8 %950 = call ptr @expr_new_const_int(i64 %949, ptr noundef %947, i64 noundef %948) #9 br label %951 @@ -2237,7 +2237,7 @@ sema_analyse_defer_stmt_body.exit.i: ; preds = %427 store i32 %.sink, ptr %956, align 4 %957 = load i64, ptr %914, align 8 %958 = call ptr @expr_new(i32 noundef 63, i64 %957) #9 - %959 = call ptr @expr_variable(ptr noundef nonnull %821) #9 + %959 = call ptr @expr_variable(ptr noundef nonnull %819) #9 %960 = getelementptr inbounds i8, ptr %958, i64 24 store ptr %959, ptr %960, align 8 %961 = getelementptr inbounds i8, ptr %958, i64 32 @@ -2260,7 +2260,7 @@ sema_analyse_defer_stmt_body.exit.i: ; preds = %427 store i8 15, ptr %968, align 4 %969 = getelementptr inbounds i8, ptr %967, i64 16 store ptr %500, ptr %969, align 8 - %970 = call ptr @expr_variable(ptr noundef nonnull %821) #9 + %970 = call ptr @expr_variable(ptr noundef nonnull %819) #9 %971 = call zeroext i1 @cast_explicit(ptr noundef nonnull %0, ptr noundef %970, ptr noundef %.0420.i) #9 br i1 %971, label %972, label %sema_analyse_foreach_stmt.exit.thread @@ -2307,14 +2307,14 @@ sema_analyse_defer_stmt_body.exit.i: ; preds = %427 br i1 %816, label %1003, label %998 998: ; preds = %990 - %999 = getelementptr inbounds i8, ptr %821, i64 72 + %999 = getelementptr inbounds i8, ptr %819, i64 72 %1000 = load ptr, ptr %999, align 8 %1001 = load i64, ptr %964, align 8 %1002 = call ptr @expr_new_const_int(i64 %1001, ptr noundef %1000, i64 noundef 0) #9 br label %1005 1003: ; preds = %990 - %1004 = call ptr @expr_variable(ptr noundef nonnull %821) #9 + %1004 = call ptr @expr_variable(ptr noundef nonnull %819) #9 br label %1005 1005: ; preds = %1003, %998 diff --git a/bench/ceres/optimized/covariance_impl.cc.ll b/bench/ceres/optimized/covariance_impl.cc.ll index bcf086650ad..584efcb698a 100644 --- a/bench/ceres/optimized/covariance_impl.cc.ll +++ b/bench/ceres/optimized/covariance_impl.cc.ll @@ -24725,26 +24725,26 @@ _ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEaSINS_14CwiseNullaryOpINS_8internal18 %32 = trunc i8 %31 to i1 %33 = getelementptr inbounds i8, ptr %0, i64 74 %34 = load i8, ptr %33, align 2 - %35 = and i8 %34, 1 - %36 = getelementptr inbounds i8, ptr %0, i64 237 - %37 = select i1 %32, i8 1, i8 %35 - store i8 %37, ptr %36, align 1 + %35 = getelementptr inbounds i8, ptr %0, i64 237 + %36 = and i8 %34, 1 + %37 = select i1 %32, i8 1, i8 %36 + store i8 %37, ptr %35, align 1 %38 = getelementptr inbounds i8, ptr %0, i64 71 %39 = load i8, ptr %38, align 1 %40 = trunc i8 %39 to i1 %41 = getelementptr inbounds i8, ptr %0, i64 72 %42 = load i8, ptr %41, align 8 - %43 = and i8 %42, 1 - %44 = getelementptr inbounds i8, ptr %0, i64 238 - %45 = select i1 %40, i8 1, i8 %43 - store i8 %45, ptr %44, align 2 + %43 = getelementptr inbounds i8, ptr %0, i64 238 + %44 = and i8 %42, 1 + %45 = select i1 %40, i8 1, i8 %44 + store i8 %45, ptr %43, align 2 %46 = load i8, ptr %6, align 4 %47 = trunc i8 %46 to i1 br i1 %47, label %48, label %49 48: ; preds = %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE.exit - store i8 %45, ptr %36, align 1 - store i8 %37, ptr %44, align 2 + store i8 %45, ptr %35, align 1 + store i8 %37, ptr %43, align 2 br label %49 49: ; preds = %48, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE.exit @@ -24836,7 +24836,7 @@ _ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEaSINS_14CwiseNullaryOpINS_8internal18 br label %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE.exit16 _ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE.exit16: ; preds = %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE.exit16.sink.split, %_ZN5Eigen8internal17resize_if_allowedINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS_14CwiseNullaryOpINS0_18scalar_constant_opIdEES3_EEddEEvRT_RKT0_RKNS0_9assign_opIT1_T2_EE.exit.i.i.i.i.i.i.i24, %_ZN5Eigen8internal17resize_if_allowedINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS_14CwiseNullaryOpINS0_18scalar_constant_opIdEES3_EEddEEvRT_RKT0_RKNS0_9assign_opIT1_T2_EE.exit.i.i.i.i.i.i.i12 - %86 = load i8, ptr %44, align 2 + %86 = load i8, ptr %43, align 2 %87 = trunc i8 %86 to i1 br i1 %87, label %88, label %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE.exit40 diff --git a/bench/clap-rs/optimized/4bajo035z6e1d4qz.ll b/bench/clap-rs/optimized/4bajo035z6e1d4qz.ll index 8dfcf229484..824872950c6 100644 --- a/bench/clap-rs/optimized/4bajo035z6e1d4qz.ll +++ b/bench/clap-rs/optimized/4bajo035z6e1d4qz.ll @@ -5655,7 +5655,6 @@ define hidden void @"_ZN12clap_builder7builder12value_parser29RangedI64ValuePars %8 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %7, 1 %9 = insertvalue { i64, i64 } { i64 0, i64 poison }, i64 %7, 1 %.pn = select i1 %switch.not.not, { i64, i64 } %9, { i64, i64 } %8 - %.sroa.437.0 = extractvalue { i64, i64 } %.pn, 1 %.sroa.036.0 = extractvalue { i64, i64 } %.pn, 0 store i64 0, ptr %1, align 8 %10 = getelementptr inbounds i8, ptr %1, i64 8 @@ -5663,7 +5662,7 @@ define hidden void @"_ZN12clap_builder7builder12value_parser29RangedI64ValuePars %11 = getelementptr inbounds i8, ptr %1, i64 16 store i64 %.sroa.036.0, ptr %11, align 8 %12 = getelementptr inbounds i8, ptr %1, i64 24 - store i64 %.sroa.437.0, ptr %12, align 8 + store i64 %7, ptr %12, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, i64 32, i1 false) ret void } @@ -5716,7 +5715,6 @@ define hidden void @"_ZN12clap_builder7builder12value_parser29RangedI64ValuePars %8 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %7, 1 %9 = insertvalue { i64, i64 } { i64 0, i64 poison }, i64 %7, 1 %.pn = select i1 %switch.not.not, { i64, i64 } %9, { i64, i64 } %8 - %.sroa.437.0 = extractvalue { i64, i64 } %.pn, 1 %.sroa.036.0 = extractvalue { i64, i64 } %.pn, 0 store i64 0, ptr %1, align 8 %10 = getelementptr inbounds i8, ptr %1, i64 8 @@ -5724,7 +5722,7 @@ define hidden void @"_ZN12clap_builder7builder12value_parser29RangedI64ValuePars %11 = getelementptr inbounds i8, ptr %1, i64 16 store i64 %.sroa.036.0, ptr %11, align 8 %12 = getelementptr inbounds i8, ptr %1, i64 24 - store i64 %.sroa.437.0, ptr %12, align 8 + store i64 %7, ptr %12, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, i64 32, i1 false) ret void } @@ -5792,7 +5790,6 @@ define hidden void @"_ZN12clap_builder7builder12value_parser29RangedI64ValuePars %8 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %7, 1 %9 = insertvalue { i64, i64 } { i64 0, i64 poison }, i64 %7, 1 %.pn = select i1 %switch.not.not, { i64, i64 } %9, { i64, i64 } %8 - %.sroa.437.0 = extractvalue { i64, i64 } %.pn, 1 %.sroa.036.0 = extractvalue { i64, i64 } %.pn, 0 store i64 0, ptr %1, align 8 %10 = getelementptr inbounds i8, ptr %1, i64 8 @@ -5800,7 +5797,7 @@ define hidden void @"_ZN12clap_builder7builder12value_parser29RangedI64ValuePars %11 = getelementptr inbounds i8, ptr %1, i64 16 store i64 %.sroa.036.0, ptr %11, align 8 %12 = getelementptr inbounds i8, ptr %1, i64 24 - store i64 %.sroa.437.0, ptr %12, align 8 + store i64 %7, ptr %12, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, i64 32, i1 false) ret void } @@ -5816,7 +5813,6 @@ define hidden void @"_ZN12clap_builder7builder12value_parser29RangedI64ValuePars %8 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %7, 1 %9 = insertvalue { i64, i64 } { i64 0, i64 poison }, i64 %7, 1 %.pn = select i1 %switch.not.not, { i64, i64 } %9, { i64, i64 } %8 - %.sroa.437.0 = extractvalue { i64, i64 } %.pn, 1 %.sroa.036.0 = extractvalue { i64, i64 } %.pn, 0 store i64 0, ptr %1, align 8 %10 = getelementptr inbounds i8, ptr %1, i64 8 @@ -5824,7 +5820,7 @@ define hidden void @"_ZN12clap_builder7builder12value_parser29RangedI64ValuePars %11 = getelementptr inbounds i8, ptr %1, i64 16 store i64 %.sroa.036.0, ptr %11, align 8 %12 = getelementptr inbounds i8, ptr %1, i64 24 - store i64 %.sroa.437.0, ptr %12, align 8 + store i64 %7, ptr %12, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, i64 32, i1 false) ret void } @@ -5840,7 +5836,6 @@ define hidden void @"_ZN12clap_builder7builder12value_parser29RangedI64ValuePars %8 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %7, 1 %9 = insertvalue { i64, i64 } { i64 0, i64 poison }, i64 %7, 1 %.pn = select i1 %switch.not.not, { i64, i64 } %9, { i64, i64 } %8 - %.sroa.437.0 = extractvalue { i64, i64 } %.pn, 1 %.sroa.036.0 = extractvalue { i64, i64 } %.pn, 0 store i64 0, ptr %1, align 8 %10 = getelementptr inbounds i8, ptr %1, i64 8 @@ -5848,7 +5843,7 @@ define hidden void @"_ZN12clap_builder7builder12value_parser29RangedI64ValuePars %11 = getelementptr inbounds i8, ptr %1, i64 16 store i64 %.sroa.036.0, ptr %11, align 8 %12 = getelementptr inbounds i8, ptr %1, i64 24 - store i64 %.sroa.437.0, ptr %12, align 8 + store i64 %7, ptr %12, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, i64 32, i1 false) ret void } @@ -5864,7 +5859,6 @@ define hidden void @"_ZN12clap_builder7builder12value_parser29RangedI64ValuePars %8 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %7, 1 %9 = insertvalue { i64, i64 } { i64 0, i64 poison }, i64 %7, 1 %.pn = select i1 %switch.not.not, { i64, i64 } %9, { i64, i64 } %8 - %.sroa.437.0 = extractvalue { i64, i64 } %.pn, 1 %.sroa.036.0 = extractvalue { i64, i64 } %.pn, 0 store i64 0, ptr %1, align 8 %10 = getelementptr inbounds i8, ptr %1, i64 8 @@ -5872,7 +5866,7 @@ define hidden void @"_ZN12clap_builder7builder12value_parser29RangedI64ValuePars %11 = getelementptr inbounds i8, ptr %1, i64 16 store i64 %.sroa.036.0, ptr %11, align 8 %12 = getelementptr inbounds i8, ptr %1, i64 24 - store i64 %.sroa.437.0, ptr %12, align 8 + store i64 %7, ptr %12, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, i64 32, i1 false) ret void } diff --git a/bench/clap-rs/optimized/rh1bh36cvgkzipt.ll b/bench/clap-rs/optimized/rh1bh36cvgkzipt.ll index 1044026ff4c..71323483f2e 100644 --- a/bench/clap-rs/optimized/rh1bh36cvgkzipt.ll +++ b/bench/clap-rs/optimized/rh1bh36cvgkzipt.ll @@ -230,18 +230,17 @@ define hidden noundef i64 @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$G 11: ; preds = %11, %6 %.018.i = phi i64 [ %2, %6 ], [ %.0.i.i.i, %11 ] - %.017.i = phi i64 [ 0, %6 ], [ %15, %11 ] + %.017.i = phi i64 [ 0, %6 ], [ %16, %11 ] %12 = getelementptr inbounds { { i32, [5 x i32] }, i64 }, ptr %0, i64 %.017.i %.val.i = load i32, ptr %12, align 8, !range !72, !noundef !4 %13 = getelementptr i8, ptr %12, i64 8 %.val22.i = load i64, ptr %13, align 8 %14 = icmp eq i32 %.val.i, 2 - %.sroa.3.0.i.i.i.i = select i1 %14, i64 %.val22.i, i64 undef - %.0.sroa.speculated.i.i.i.i.i = tail call i64 @llvm.umax.i64(i64 %.018.i, i64 %.sroa.3.0.i.i.i.i) - %.0.i.i.i = select i1 %14, i64 %.0.sroa.speculated.i.i.i.i.i, i64 %.018.i - %15 = add nuw i64 %.017.i, 1 - %16 = icmp eq i64 %15, %10 - br i1 %16, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17heecc6058a01f0a8cE.llvm.16538095213602398362.exit", label %11 + %15 = tail call i64 @llvm.umax.i64(i64 %.018.i, i64 %.val22.i) + %.0.i.i.i = select i1 %14, i64 %15, i64 %.018.i + %16 = add nuw i64 %.017.i, 1 + %17 = icmp eq i64 %16, %10 + br i1 %17, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17heecc6058a01f0a8cE.llvm.16538095213602398362.exit", label %11 "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17heecc6058a01f0a8cE.llvm.16538095213602398362.exit": ; preds = %11, %3 %.0.i = phi i64 [ %2, %3 ], [ %.0.i.i.i, %11 ] @@ -9264,18 +9263,17 @@ define hidden noundef i64 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u2 11: ; preds = %11, %6 %.018 = phi i64 [ %2, %6 ], [ %.0.i.i, %11 ] - %.017 = phi i64 [ 0, %6 ], [ %15, %11 ] + %.017 = phi i64 [ 0, %6 ], [ %16, %11 ] %12 = getelementptr inbounds { { i32, [5 x i32] }, i64 }, ptr %0, i64 %.017 %.val = load i32, ptr %12, align 8, !range !72, !noundef !4 %13 = getelementptr i8, ptr %12, i64 8 %.val22 = load i64, ptr %13, align 8 %14 = icmp eq i32 %.val, 2 - %.sroa.3.0.i.i.i = select i1 %14, i64 %.val22, i64 undef - %.0.sroa.speculated.i.i.i.i = tail call i64 @llvm.umax.i64(i64 %.018, i64 %.sroa.3.0.i.i.i) - %.0.i.i = select i1 %14, i64 %.0.sroa.speculated.i.i.i.i, i64 %.018 - %15 = add nuw i64 %.017, 1 - %16 = icmp eq i64 %15, %10 - br i1 %16, label %.loopexit, label %11 + %15 = tail call i64 @llvm.umax.i64(i64 %.018, i64 %.val22) + %.0.i.i = select i1 %14, i64 %15, i64 %.018 + %16 = add nuw i64 %.017, 1 + %17 = icmp eq i64 %16, %10 + br i1 %17, label %.loopexit, label %11 .loopexit: ; preds = %11, %3 %.0 = phi i64 [ %2, %3 ], [ %.0.i.i, %11 ] diff --git a/bench/cmake/optimized/zstd_opt.c.ll b/bench/cmake/optimized/zstd_opt.c.ll index ee8d6ffe70b..a227863b699 100644 --- a/bench/cmake/optimized/zstd_opt.c.ll +++ b/bench/cmake/optimized/zstd_opt.c.ll @@ -3183,12 +3183,7 @@ define internal fastcc i32 @ZSTD_insertBt1(ptr nocapture noundef readonly %0, pt %77 = load i32, ptr %76, align 4 store i32 %59, ptr %45, align 4 %.not188 = icmp ult i32 %46, %74 - br i1 %.not188, label %._crit_edge.thread, label %.lr.ph - -._crit_edge.thread: ; preds = %38 - store i32 0, ptr %65, align 4 - store i32 0, ptr %64, align 4 - br label %169 + br i1 %.not188, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %38 %78 = shl nuw i32 1, %77 @@ -3198,15 +3193,15 @@ define internal fastcc i32 @ZSTD_insertBt1(ptr nocapture noundef readonly %0, pt %81 = getelementptr inbounds i8, ptr %2, i64 -1 br label %82 -82: ; preds = %.lr.ph, %160 - %.0127169 = phi i32 [ %78, %.lr.ph ], [ %161, %160 ] - %.0128168 = phi i64 [ 8, %.lr.ph ], [ %.2.fr, %160 ] - %.0129167 = phi i32 [ %75, %.lr.ph ], [ %.2131, %160 ] - %.0132166 = phi i32 [ %46, %.lr.ph ], [ %.1133, %160 ] - %.0134165 = phi ptr [ %65, %.lr.ph ], [ %.2136, %160 ] - %.0137164 = phi ptr [ %64, %.lr.ph ], [ %.2139, %160 ] - %.0140163 = phi i64 [ 0, %.lr.ph ], [ %.1141, %160 ] - %.0142162 = phi i64 [ 0, %.lr.ph ], [ %.1143, %160 ] +82: ; preds = %.lr.ph, %161 + %.0127169 = phi i32 [ %78, %.lr.ph ], [ %162, %161 ] + %.0128168 = phi i64 [ 8, %.lr.ph ], [ %149, %161 ] + %.0129167 = phi i32 [ %75, %.lr.ph ], [ %.2131, %161 ] + %.0132166 = phi i32 [ %46, %.lr.ph ], [ %.1133, %161 ] + %.0134165 = phi ptr [ %65, %.lr.ph ], [ %.2136, %161 ] + %.0137164 = phi ptr [ %64, %.lr.ph ], [ %.2139, %161 ] + %.0140163 = phi i64 [ 0, %.lr.ph ], [ %.1141, %161 ] + %.0142162 = phi i64 [ 0, %.lr.ph ], [ %.1143, %161 ] %83 = and i32 %.0132166, %44 %84 = shl nuw i32 %83, 1 %85 = zext i32 %84 to i64 @@ -3352,63 +3347,60 @@ ZSTD_count.exit: ; preds = %94, %100, %127 148: ; preds = %141, %145, %139 %.2131 = phi i32 [ %147, %145 ], [ %.0129167, %141 ], [ %.0129167, %139 ] %.2 = phi i64 [ %.0125, %145 ], [ %.0125, %141 ], [ %.0128168, %139 ] - %.2.fr = freeze i64 %.2 - %149 = getelementptr inbounds i8, ptr %1, i64 %.0125 - %150 = icmp eq ptr %149, %2 - br i1 %150, label %._crit_edge, label %151 - -151: ; preds = %148 - %152 = getelementptr inbounds i8, ptr %.0144, i64 %.0125 - %153 = load i8, ptr %152, align 1 - %154 = load i8, ptr %149, align 1 - %155 = icmp ult i8 %153, %154 + %149 = freeze i64 %.2 + %150 = getelementptr inbounds i8, ptr %1, i64 %.0125 + %151 = icmp eq ptr %150, %2 + br i1 %151, label %._crit_edge, label %152 + +152: ; preds = %148 + %153 = getelementptr inbounds i8, ptr %.0144, i64 %.0125 + %154 = load i8, ptr %153, align 1 + %155 = load i8, ptr %150, align 1 + %156 = icmp ult i8 %154, %155 %.not151 = icmp ugt i32 %.0132166, %60 - br i1 %155, label %156, label %159 + br i1 %156, label %157, label %160 -156: ; preds = %151 +157: ; preds = %152 store i32 %.0132166, ptr %.0137164, align 4 - br i1 %.not151, label %157, label %._crit_edge + br i1 %.not151, label %158, label %._crit_edge -157: ; preds = %156 - %158 = getelementptr inbounds i8, ptr %86, i64 4 - br label %160 +158: ; preds = %157 + %159 = getelementptr inbounds i8, ptr %86, i64 4 + br label %161 -159: ; preds = %151 +160: ; preds = %152 store i32 %.0132166, ptr %.0134165, align 4 - br i1 %.not151, label %160, label %._crit_edge - -160: ; preds = %159, %157 - %.1143 = phi i64 [ %.0142162, %157 ], [ %.0125, %159 ] - %.1141 = phi i64 [ %.0125, %157 ], [ %.0140163, %159 ] - %.2139 = phi ptr [ %158, %157 ], [ %.0137164, %159 ] - %.2136 = phi ptr [ %.0134165, %157 ], [ %86, %159 ] - %.1133.in = phi ptr [ %158, %157 ], [ %86, %159 ] + br i1 %.not151, label %161, label %._crit_edge + +161: ; preds = %160, %158 + %.1143 = phi i64 [ %.0142162, %158 ], [ %.0125, %160 ] + %.1141 = phi i64 [ %.0125, %158 ], [ %.0140163, %160 ] + %.2139 = phi ptr [ %159, %158 ], [ %.0137164, %160 ] + %.2136 = phi ptr [ %.0134165, %158 ], [ %86, %160 ] + %.1133.in = phi ptr [ %159, %158 ], [ %86, %160 ] %.1133 = load i32, ptr %.1133.in, align 4 - %161 = add i32 %.0127169, -1 - %162 = icmp ne i32 %161, 0 - %163 = icmp uge i32 %.1133, %74 - %164 = select i1 %162, i1 %163, i1 false - br i1 %164, label %82, label %._crit_edge, !llvm.loop !23 - -._crit_edge: ; preds = %160, %148, %156, %159 - %.1138 = phi ptr [ %.2139, %160 ], [ %.0137164, %148 ], [ %7, %156 ], [ %.0137164, %159 ] - %.1135 = phi ptr [ %.2136, %160 ], [ %.0134165, %148 ], [ %.0134165, %156 ], [ %7, %159 ] + %162 = add i32 %.0127169, -1 + %163 = icmp ne i32 %162, 0 + %164 = icmp uge i32 %.1133, %74 + %165 = select i1 %163, i1 %164, i1 false + br i1 %165, label %82, label %._crit_edge, !llvm.loop !23 + +._crit_edge: ; preds = %161, %148, %157, %160, %38 + %.1138 = phi ptr [ %64, %38 ], [ %.0137164, %160 ], [ %7, %157 ], [ %.0137164, %148 ], [ %.2139, %161 ] + %.1135 = phi ptr [ %65, %38 ], [ %7, %160 ], [ %.0134165, %157 ], [ %.0134165, %148 ], [ %.2136, %161 ] + %.1130 = phi i32 [ %75, %38 ], [ %.2131, %160 ], [ %.2131, %157 ], [ %.2131, %148 ], [ %.2131, %161 ] + %.1 = phi i64 [ 8, %38 ], [ %149, %160 ], [ %149, %157 ], [ %149, %148 ], [ %149, %161 ] store i32 0, ptr %.1135, align 4 store i32 0, ptr %.1138, align 4 - %165 = icmp ugt i64 %.2.fr, 384 - %166 = trunc i64 %.2.fr to i32 - %167 = add i32 %166, -384 - %168 = tail call i32 @llvm.umin.i32(i32 %167, i32 192) - %spec.select200 = select i1 %165, i32 %168, i32 0 - br label %169 - -169: ; preds = %._crit_edge, %._crit_edge.thread - %.1130197 = phi i32 [ %75, %._crit_edge.thread ], [ %.2131, %._crit_edge ] - %170 = phi i32 [ 0, %._crit_edge.thread ], [ %spec.select200, %._crit_edge ] - %reass.sub = sub i32 %.1130197, %59 - %171 = add i32 %reass.sub, -8 - %172 = tail call i32 @llvm.umax.i32(i32 %170, i32 %171) - ret i32 %172 + %166 = icmp ugt i64 %.1, 384 + %167 = trunc i64 %.1 to i32 + %168 = add i32 %167, -384 + %169 = tail call i32 @llvm.umin.i32(i32 %168, i32 192) + %reass.sub = sub i32 %.1130, %59 + %170 = add i32 %reass.sub, -8 + %171 = tail call i32 @llvm.umax.i32(i32 %169, i32 %170) + %spec.select194 = select i1 %166, i32 %171, i32 %170 + ret i32 %spec.select194 } ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read) uwtable diff --git a/bench/crow/optimized/example.cpp.ll b/bench/crow/optimized/example.cpp.ll index 3eea6ecb829..7aa70ad611f 100644 --- a/bench/crow/optimized/example.cpp.ll +++ b/bench/crow/optimized/example.cpp.ll @@ -93292,13 +93292,13 @@ define linkonce_odr dso_local noundef i32 @_ZN4crow10HTTPParserINS_10ConnectionI %54 = getelementptr inbounds i8, ptr %0, i64 16 %55 = load i64, ptr %54, align 8, !tbaa !1857 %56 = icmp eq i64 %55, 0 - %57 = select i1 %56, i64 -1, i64 %55 call void @llvm.experimental.noalias.scope.decl(metadata !1904) - %58 = load i64, ptr %10, align 8, !tbaa !15, !noalias !1904 - %59 = getelementptr inbounds i8, ptr %8, i64 16 - store ptr %59, ptr %8, align 8, !tbaa !5, !alias.scope !1904 - %60 = load ptr, ptr %9, align 8, !tbaa !12, !noalias !1904 - %61 = call noundef i64 @llvm.umin.i64(i64 %58, i64 %57) + %57 = load i64, ptr %10, align 8, !tbaa !15, !noalias !1904 + %58 = getelementptr inbounds i8, ptr %8, i64 16 + store ptr %58, ptr %8, align 8, !tbaa !5, !alias.scope !1904 + %59 = load ptr, ptr %9, align 8, !tbaa !12, !noalias !1904 + %60 = call i64 @llvm.umin.i64(i64 %57, i64 %55) + %61 = select i1 %56, i64 %57, i64 %60 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #36, !noalias !1904 store i64 %61, ptr %4, align 8, !tbaa !10, !noalias !1904 %62 = icmp ugt i64 %61, 15 @@ -93308,23 +93308,23 @@ define linkonce_odr dso_local noundef i32 @_ZN4crow10HTTPParserINS_10ConnectionI %64 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) store ptr %64, ptr %8, align 8, !tbaa !12, !alias.scope !1904 %65 = load i64, ptr %4, align 8, !tbaa !10, !noalias !1904 - store i64 %65, ptr %59, align 8, !tbaa !14, !alias.scope !1904 + store i64 %65, ptr %58, align 8, !tbaa !14, !alias.scope !1904 br label %66 66: ; preds = %63, %53 - %67 = phi ptr [ %64, %63 ], [ %59, %53 ] + %67 = phi ptr [ %64, %63 ], [ %58, %53 ] switch i64 %61, label %70 [ i64 1, label %68 i64 0, label %71 ] 68: ; preds = %66 - %69 = load i8, ptr %60, align 1, !tbaa !14 + %69 = load i8, ptr %59, align 1, !tbaa !14 store i8 %69, ptr %67, align 1, !tbaa !14 br label %71 70: ; preds = %66 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %67, ptr align 1 %60, i64 %61, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %67, ptr align 1 %59, i64 %61, i1 false) br label %71 71: ; preds = %70, %68, %66 @@ -93347,12 +93347,12 @@ define linkonce_odr dso_local noundef i32 @_ZN4crow10HTTPParserINS_10ConnectionI %83 = icmp ult i64 %82, 16 call void @llvm.assume(i1 %83) %84 = load ptr, ptr %8, align 8, !tbaa !12 - %85 = icmp eq ptr %84, %59 + %85 = icmp eq ptr %84, %58 br i1 %85, label %89, label %103 86: ; preds = %71 %87 = load ptr, ptr %8, align 8, !tbaa !12 - %88 = icmp eq ptr %87, %59 + %88 = icmp eq ptr %87, %58 br i1 %88, label %89, label %106 89: ; preds = %86, %80 @@ -93369,12 +93369,12 @@ define linkonce_odr dso_local noundef i32 @_ZN4crow10HTTPParserINS_10ConnectionI ] 94: ; preds = %93 - %95 = load i8, ptr %59, align 8, !tbaa !14 + %95 = load i8, ptr %58, align 8, !tbaa !14 store i8 %95, ptr %77, align 1, !tbaa !14 br label %97 96: ; preds = %93 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %77, ptr nonnull align 8 %59, i64 %90, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %77, ptr nonnull align 8 %58, i64 %90, i1 false) br label %97 97: ; preds = %96, %94, %93 @@ -93391,7 +93391,7 @@ define linkonce_odr dso_local noundef i32 @_ZN4crow10HTTPParserINS_10ConnectionI store ptr %84, ptr %76, align 8, !tbaa !12 %104 = load i64, ptr %73, align 8, !tbaa !15 store i64 %104, ptr %81, align 8, !tbaa !15 - %105 = load i64, ptr %59, align 8, !tbaa !14 + %105 = load i64, ptr %58, align 8, !tbaa !14 store i64 %105, ptr %77, align 8, !tbaa !14 br label %112 @@ -93406,19 +93406,19 @@ define linkonce_odr dso_local noundef i32 @_ZN4crow10HTTPParserINS_10ConnectionI 111: ; preds = %106 store ptr %77, ptr %8, align 8, !tbaa !12 - store i64 %107, ptr %59, align 8, !tbaa !14 + store i64 %107, ptr %58, align 8, !tbaa !14 br label %113 112: ; preds = %106, %103 - store ptr %59, ptr %8, align 8, !tbaa !12 + store ptr %58, ptr %8, align 8, !tbaa !12 br label %113 113: ; preds = %112, %111, %97, %89 - %114 = phi ptr [ %102, %97 ], [ %77, %111 ], [ %59, %112 ], [ %59, %89 ] + %114 = phi ptr [ %102, %97 ], [ %77, %111 ], [ %58, %112 ], [ %58, %89 ] store i64 0, ptr %73, align 8, !tbaa !15 store i8 0, ptr %114, align 1, !tbaa !14 %115 = load ptr, ptr %8, align 8, !tbaa !12 - %116 = icmp eq ptr %115, %59 + %116 = icmp eq ptr %115, %58 br i1 %116, label %117, label %120 117: ; preds = %113 @@ -93821,8 +93821,8 @@ define linkonce_odr dso_local noundef i64 @_ZN4crow19http_parser_executeEPNS_11h %105 = icmp eq i32 %104, 360448 %106 = and i32 %100, -4194177 %107 = or disjoint i32 %106, 393216 - %108 = select i1 %105, i32 %107, i32 %100 - %109 = and i32 %108, -32641 + %108 = and i32 %100, -32641 + %109 = select i1 %105, i32 %107, i32 %108 %110 = or disjoint i32 %109, 3968 store i32 %110, ptr %0, align 8 br label %.split.us diff --git a/bench/cvc5/optimized/fp_word_blaster.cpp.ll b/bench/cvc5/optimized/fp_word_blaster.cpp.ll index 9e3e38ac868..51453871663 100644 --- a/bench/cvc5/optimized/fp_word_blaster.cpp.ll +++ b/bench/cvc5/optimized/fp_word_blaster.cpp.ll @@ -32094,7 +32094,6 @@ entry: %0 = load i32, ptr %targetWidth, align 4 %cmp.not3.i = icmp eq i32 %0, 0 %1 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %0, i1 true) - %2 = sub nuw nsw i32 33, %1 %exponent.i = getelementptr inbounds i8, ptr %input, i64 32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp.i) invoke void @_ZNK4cvc58internal12NodeTemplateILb1EE7getTypeEb(ptr nonnull sret(%"class.cvc5::internal::TypeNode") align 8 %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(8) %exponent.i, i1 noundef zeroext false) @@ -32105,10 +32104,10 @@ entry: to label %invoke.cont.i unwind label %lpad.i invoke.cont.i: ; preds = %.noexc - %3 = load ptr, ptr %ref.tmp.i, align 8 - %bf.load.i.i.i = load i64, ptr %3, align 8 - %4 = and i64 %bf.load.i.i.i, 1152920405095219200 - %cmp.not.i.i.i = icmp eq i64 %4, 1152920405095219200 + %2 = load ptr, ptr %ref.tmp.i, align 8 + %bf.load.i.i.i = load i64, ptr %2, align 8 + %3 = and i64 %bf.load.i.i.i, 1152920405095219200 + %cmp.not.i.i.i = icmp eq i64 %3, 1152920405095219200 br i1 %cmp.not.i.i.i, label %invoke.cont, label %if.then.i.i.i if.then.i.i.i: ; preds = %invoke.cont.i @@ -32116,30 +32115,31 @@ if.then.i.i.i: ; preds = %invoke.cont.i %bf.shl.i.i.i = and i64 %bf.value.i.i.i, 1152920405095219200 %bf.clear7.i.i.i = and i64 %bf.load.i.i.i, -1152920405095219201 %bf.set.i.i.i = or disjoint i64 %bf.shl.i.i.i, %bf.clear7.i.i.i - store i64 %bf.set.i.i.i, ptr %3, align 8 + store i64 %bf.set.i.i.i, ptr %2, align 8 %cmp12.i.i.i = icmp eq i64 %bf.shl.i.i.i, 0 br i1 %cmp12.i.i.i, label %if.then13.i.i.i, label %invoke.cont if.then13.i.i.i: ; preds = %if.then.i.i.i - invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %3) + invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %2) to label %invoke.cont unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %if.then13.i.i.i - %5 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } catch ptr null - %6 = extractvalue { ptr, i32 } %5, 0 - call void @__clang_call_terminate(ptr %6) #21 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #21 unreachable lpad.i: ; preds = %.noexc - %7 = landingpad { ptr, i32 } + %6 = landingpad { ptr, i32 } cleanup call void @_ZN4cvc58internal8TypeNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp.i) #22 br label %ehcleanup67 invoke.cont: ; preds = %if.then13.i.i.i, %if.then.i.i.i, %invoke.cont.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp.i) - %add = select i1 %cmp.not3.i, i32 1, i32 %2 + %7 = sub nuw nsw i32 33, %1 + %add = select i1 %cmp.not3.i, i32 1, i32 %7 %cond = call i32 @llvm.umax.i32(i32 %call.i, i32 %add) invoke void @_ZN4cvc58internal6theory2fp14symfpuSymbolic17symbolicBitVectorILb1EEC2Ejj(ptr noundef nonnull align 8 dereferenceable(8) %maxExponent, i32 noundef %cond, i32 noundef %0) to label %invoke.cont6 unwind label %lpad @@ -32850,7 +32850,7 @@ ehcleanup66: ; preds = %ehcleanup65, %lpad8 br label %ehcleanup67 ehcleanup67: ; preds = %lpad, %lpad.i, %ehcleanup66 - %.pn21.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn21.pn.pn.pn.pn.pn, %ehcleanup66 ], [ %44, %lpad ], [ %7, %lpad.i ] + %.pn21.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn21.pn.pn.pn.pn.pn, %ehcleanup66 ], [ %44, %lpad ], [ %6, %lpad.i ] call void @_ZN4cvc58internal6theory2fp14symfpuSymbolic19symbolicPropositionD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %specialValue) #22 resume { ptr, i32 } %.pn21.pn.pn.pn.pn.pn.pn } @@ -32991,7 +32991,6 @@ entry: %0 = load i32, ptr %targetWidth, align 4 %cmp.not3.i = icmp eq i32 %0, 0 %1 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %0, i1 true) - %2 = sub nuw nsw i32 33, %1 %exponent.i = getelementptr inbounds i8, ptr %input, i64 32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp.i) invoke void @_ZNK4cvc58internal12NodeTemplateILb1EE7getTypeEb(ptr nonnull sret(%"class.cvc5::internal::TypeNode") align 8 %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(8) %exponent.i, i1 noundef zeroext false) @@ -33002,10 +33001,10 @@ entry: to label %invoke.cont.i unwind label %lpad.i invoke.cont.i: ; preds = %.noexc - %3 = load ptr, ptr %ref.tmp.i, align 8 - %bf.load.i.i.i = load i64, ptr %3, align 8 - %4 = and i64 %bf.load.i.i.i, 1152920405095219200 - %cmp.not.i.i.i = icmp eq i64 %4, 1152920405095219200 + %2 = load ptr, ptr %ref.tmp.i, align 8 + %bf.load.i.i.i = load i64, ptr %2, align 8 + %3 = and i64 %bf.load.i.i.i, 1152920405095219200 + %cmp.not.i.i.i = icmp eq i64 %3, 1152920405095219200 br i1 %cmp.not.i.i.i, label %invoke.cont, label %if.then.i.i.i if.then.i.i.i: ; preds = %invoke.cont.i @@ -33013,30 +33012,31 @@ if.then.i.i.i: ; preds = %invoke.cont.i %bf.shl.i.i.i = and i64 %bf.value.i.i.i, 1152920405095219200 %bf.clear7.i.i.i = and i64 %bf.load.i.i.i, -1152920405095219201 %bf.set.i.i.i = or disjoint i64 %bf.shl.i.i.i, %bf.clear7.i.i.i - store i64 %bf.set.i.i.i, ptr %3, align 8 + store i64 %bf.set.i.i.i, ptr %2, align 8 %cmp12.i.i.i = icmp eq i64 %bf.shl.i.i.i, 0 br i1 %cmp12.i.i.i, label %if.then13.i.i.i, label %invoke.cont if.then13.i.i.i: ; preds = %if.then.i.i.i - invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %3) + invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(16) %2) to label %invoke.cont unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %if.then13.i.i.i - %5 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } catch ptr null - %6 = extractvalue { ptr, i32 } %5, 0 - call void @__clang_call_terminate(ptr %6) #21 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #21 unreachable lpad.i: ; preds = %.noexc - %7 = landingpad { ptr, i32 } + %6 = landingpad { ptr, i32 } cleanup call void @_ZN4cvc58internal8TypeNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp.i) #22 br label %ehcleanup73 invoke.cont: ; preds = %if.then13.i.i.i, %if.then.i.i.i, %invoke.cont.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp.i) - %add = select i1 %cmp.not3.i, i32 1, i32 %2 + %7 = sub nuw nsw i32 33, %1 + %add = select i1 %cmp.not3.i, i32 1, i32 %7 %cond = call i32 @llvm.umax.i32(i32 %call.i, i32 %add) invoke void @_ZN4cvc58internal6theory2fp14symfpuSymbolic17symbolicBitVectorILb1EEC2Ejj(ptr noundef nonnull align 8 dereferenceable(8) %maxExponent, i32 noundef %cond, i32 noundef %0) to label %invoke.cont6 unwind label %lpad @@ -33799,7 +33799,7 @@ ehcleanup72: ; preds = %ehcleanup71, %lpad8 br label %ehcleanup73 ehcleanup73: ; preds = %lpad, %lpad.i, %ehcleanup72 - %.pn22.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn22.pn.pn.pn.pn.pn.pn, %ehcleanup72 ], [ %85, %lpad ], [ %7, %lpad.i ] + %.pn22.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn22.pn.pn.pn.pn.pn.pn, %ehcleanup72 ], [ %85, %lpad ], [ %6, %lpad.i ] call void @_ZN4cvc58internal6theory2fp14symfpuSymbolic19symbolicPropositionD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %specialValue) #22 resume { ptr, i32 } %.pn22.pn.pn.pn.pn.pn.pn.pn } diff --git a/bench/darktable/optimized/TableLookUp.cpp.ll b/bench/darktable/optimized/TableLookUp.cpp.ll index 67fd8821d83..949b4af590b 100644 --- a/bench/darktable/optimized/TableLookUp.cpp.ll +++ b/bench/darktable/optimized/TableLookUp.cpp.ll @@ -57,7 +57,7 @@ define hidden void @_ZN8rawspeed11TableLookUpC2Eib(ptr noundef nonnull align 8 d br label %19 13: ; preds = %3 - call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %4) #18 + call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %4) #19 store i16 0, ptr %4, align 2, !tbaa !18 %14 = shl nsw i32 %1, 17 %15 = zext nneg i32 %14 to i64 @@ -65,13 +65,13 @@ define hidden void @_ZN8rawspeed11TableLookUpC2Eib(ptr noundef nonnull align 8 d to label %16 unwind label %17 16: ; preds = %13 - call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %4) #18 + call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %4) #19 ret void 17: ; preds = %13 %18 = landingpad { ptr, i32 } cleanup - call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %4) #18 + call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %4) #19 br label %19 19: ; preds = %17, %11 @@ -81,7 +81,7 @@ define hidden void @_ZN8rawspeed11TableLookUpC2Eib(ptr noundef nonnull align 8 d br i1 %22, label %24, label %23 23: ; preds = %19 - call void @_ZdlPv(ptr noundef nonnull %21) #19 + call void @_ZdlPv(ptr noundef nonnull %21) #20 br label %24 24: ; preds = %23, %19 @@ -91,25 +91,25 @@ define hidden void @_ZN8rawspeed11TableLookUpC2Eib(ptr noundef nonnull align 8 d ; Function Attrs: cold mustprogress noreturn optsize uwtable define linkonce_odr hidden void @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef %0, ...) local_unnamed_addr #1 comdat personality ptr @__gxx_personality_v0 { %2 = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #18 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #19 call void @llvm.va_start.p0(ptr nonnull %2) %3 = call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @_ZZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKczE3buf) - %4 = call i32 @vsnprintf(ptr noundef nonnull %3, i64 noundef 8192, ptr noundef %0, ptr noundef nonnull %2) #18 + %4 = call i32 @vsnprintf(ptr noundef nonnull %3, i64 noundef 8192, ptr noundef %0, ptr noundef nonnull %2) #19 call void @llvm.va_end.p0(ptr nonnull %2) call void (i32, ptr, ...) @_ZN8rawspeed8writeLogENS_10DEBUG_PRIOEPKcz(i32 noundef 65536, ptr noundef nonnull @.str.5, ptr noundef nonnull %3) - %5 = call ptr @__cxa_allocate_exception(i64 16) #18 + %5 = call ptr @__cxa_allocate_exception(i64 16) #19 invoke void @_ZN8rawspeed19RawDecoderExceptionCI2NS_17RawspeedExceptionEEPKc(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull %3) to label %6 unwind label %7 6: ; preds = %1 - call void @__cxa_throw(ptr nonnull %5, ptr nonnull @_ZTIN8rawspeed19RawDecoderExceptionE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #20 + call void @__cxa_throw(ptr nonnull %5, ptr nonnull @_ZTIN8rawspeed19RawDecoderExceptionE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #21 unreachable 7: ; preds = %1 %8 = landingpad { ptr, i32 } cleanup - call void @__cxa_free_exception(ptr %5) #18 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #18 + call void @__cxa_free_exception(ptr %5) #19 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #19 resume { ptr, i32 } %8 } @@ -259,12 +259,12 @@ define hidden void @_ZN8rawspeed11TableLookUp8setTableEiRKSt6vectorItSaItEE(ptr %101 = icmp slt <16 x i64> %94, %91 %102 = getelementptr i16, ptr %37, i64 %95 %103 = tail call <16 x i16> @llvm.masked.load.v16i16.p0(ptr %102, i32 2, <16 x i1> %101, <16 x i16> poison), !tbaa !18, !alias.scope !24 - %104 = zext <16 x i16> %103 to <16 x i32> - %105 = select <16 x i1> %101, <16 x i32> %104, <16 x i32> %98 - %106 = tail call <16 x i16> @llvm.umin.v16i16(<16 x i16> %100, <16 x i16> %97) + %104 = tail call <16 x i16> @llvm.umin.v16i16(<16 x i16> %100, <16 x i16> %97) + %105 = zext <16 x i16> %104 to <16 x i32> + %106 = tail call <16 x i16> @llvm.umax.v16i16(<16 x i16> %103, <16 x i16> %97) %107 = zext <16 x i16> %106 to <16 x i32> - %108 = tail call <16 x i32> @llvm.umax.v16i32(<16 x i32> %105, <16 x i32> %98) - %109 = sub nsw <16 x i32> %108, %107 + %108 = select <16 x i1> %101, <16 x i32> %107, <16 x i32> %98 + %109 = sub nsw <16 x i32> %108, %105 %110 = icmp sgt <16 x i32> %109, splat (i32 -1) %111 = extractelement <16 x i1> %110, i64 0 tail call void @llvm.assume(i1 %111) @@ -379,12 +379,12 @@ define hidden void @_ZN8rawspeed11TableLookUp8setTableEiRKSt6vectorItSaItEE(ptr %179 = icmp slt <8 x i64> %172, %169 %180 = getelementptr i16, ptr %37, i64 %173 %181 = tail call <8 x i16> @llvm.masked.load.v8i16.p0(ptr %180, i32 2, <8 x i1> %179, <8 x i16> poison), !tbaa !18, !alias.scope !32 - %182 = zext <8 x i16> %181 to <8 x i32> - %183 = select <8 x i1> %179, <8 x i32> %182, <8 x i32> %176 - %184 = tail call <8 x i16> @llvm.umin.v8i16(<8 x i16> %178, <8 x i16> %175) + %182 = tail call <8 x i16> @llvm.umin.v8i16(<8 x i16> %178, <8 x i16> %175) + %183 = zext <8 x i16> %182 to <8 x i32> + %184 = tail call <8 x i16> @llvm.umax.v8i16(<8 x i16> %181, <8 x i16> %175) %185 = zext <8 x i16> %184 to <8 x i32> - %186 = tail call <8 x i32> @llvm.umax.v8i32(<8 x i32> %183, <8 x i32> %176) - %187 = sub nsw <8 x i32> %186, %185 + %186 = select <8 x i1> %179, <8 x i32> %185, <8 x i32> %176 + %187 = sub nsw <8 x i32> %186, %183 %188 = icmp sgt <8 x i32> %187, splat (i32 -1) %189 = extractelement <8 x i1> %188, i64 0 tail call void @llvm.assume(i1 %189) @@ -1431,7 +1431,7 @@ define linkonce_odr hidden void @_ZNSt6vectorItSaItEE14_M_fill_insertEN9__gnu_cx br i1 %192, label %193, label %194 193: ; preds = %186 - tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.4) #20 + tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.4) #21 unreachable 194: ; preds = %186 @@ -1447,7 +1447,7 @@ define linkonce_odr hidden void @_ZNSt6vectorItSaItEE14_M_fill_insertEN9__gnu_cx 203: ; preds = %194 %204 = shl nuw nsw i64 %199, 1 - %205 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %204) #21 + %205 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %204) #22 br label %206 206: ; preds = %203, %194 @@ -1553,7 +1553,7 @@ define linkonce_odr hidden void @_ZNSt6vectorItSaItEE14_M_fill_insertEN9__gnu_cx br i1 %264, label %266, label %265 265: ; preds = %262 - tail call void @_ZdlPv(ptr noundef nonnull %187) #19 + tail call void @_ZdlPv(ptr noundef nonnull %187) #20 br label %266 266: ; preds = %265, %262 @@ -1591,7 +1591,7 @@ declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr ; Function Attrs: inlinehint mustprogress uwtable define linkonce_odr hidden void @_ZN8rawspeed19RawDecoderExceptionCI2NS_17RawspeedExceptionEEPKc(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef %1) unnamed_addr #11 comdat align 2 { - tail call void @_ZN8rawspeed17RawspeedExceptionC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef %1) #22 + tail call void @_ZN8rawspeed17RawspeedExceptionC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef %1) #23 store ptr getelementptr inbounds (i8, ptr @_ZTVN8rawspeed19RawDecoderExceptionE, i64 16), ptr %0, align 8, !tbaa !71 ret void } @@ -1617,7 +1617,7 @@ _ZN8rawspeed17RawspeedException3logEPKc.exit: ; preds = %2 3: ; preds = %2 %4 = landingpad { ptr, i32 } cleanup - tail call void @_ZNSt13runtime_errorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #18 + tail call void @_ZNSt13runtime_errorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #19 resume { ptr, i32 } %4 } @@ -1650,9 +1650,6 @@ declare <16 x i16> @llvm.masked.load.v16i16.p0(ptr nocapture, i32 immarg, <16 x ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare <16 x i16> @llvm.umin.v16i16(<16 x i16>, <16 x i16>) #9 -; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare <16 x i32> @llvm.umax.v16i32(<16 x i32>, <16 x i32>) #9 - ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare <16 x i32> @llvm.smax.v16i32(<16 x i32>, <16 x i32>) #9 @@ -1662,9 +1659,6 @@ declare <8 x i16> @llvm.masked.load.v8i16.p0(ptr nocapture, i32 immarg, <8 x i1> ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare <8 x i16> @llvm.umin.v8i16(<8 x i16>, <8 x i16>) #9 -; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare <8 x i32> @llvm.umax.v8i32(<8 x i32>, <8 x i32>) #9 - ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare <8 x i32> @llvm.smax.v8i32(<8 x i32>, <8 x i32>) #9 @@ -1674,6 +1668,12 @@ declare void @llvm.va_start.p0(ptr) #17 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn declare void @llvm.va_end.p0(ptr) #17 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare <16 x i16> @llvm.umax.v16i16(<16 x i16>, <16 x i16>) #18 + +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare <8 x i16> @llvm.umax.v8i16(<8 x i16>, <8 x i16>) #18 + attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #1 = { cold mustprogress noreturn optsize uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } @@ -1692,11 +1692,12 @@ attributes #14 = { cold mustprogress optsize uwtable "min-legal-vector-width"="0 attributes #15 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #16 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: read) } attributes #17 = { mustprogress nocallback nofree nosync nounwind willreturn } -attributes #18 = { nounwind } -attributes #19 = { builtin nounwind } -attributes #20 = { noreturn } -attributes #21 = { builtin allocsize(0) } -attributes #22 = { cold } +attributes #18 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #19 = { nounwind } +attributes #20 = { builtin nounwind } +attributes #21 = { noreturn } +attributes #22 = { builtin allocsize(0) } +attributes #23 = { cold } !llvm.linker.options = !{} !llvm.module.flags = !{!0, !1, !2, !3, !4, !5} diff --git a/bench/darktable/optimized/introspection_borders.c.ll b/bench/darktable/optimized/introspection_borders.c.ll index 39d513d9154..6da0cf9110b 100644 --- a/bench/darktable/optimized/introspection_borders.c.ll +++ b/bench/darktable/optimized/introspection_borders.c.ll @@ -788,19 +788,16 @@ define void @modify_roi_out(ptr nocapture noundef readnone %0, ptr nocapture nou %153 = mul nsw i64 %149, 3 %154 = icmp ult i64 %153, %152 %155 = tail call i32 @llvm.smax.i32(i32 %151, i32 1) - %156 = zext nneg i32 %155 to i64 - %157 = select i1 %154, i64 %153, i64 %156 - %158 = trunc i64 %157 to i32 - store i32 %158, ptr %150, align 4, !tbaa !52 - %159 = getelementptr inbounds i8, ptr %2, i64 12 - %160 = load i32, ptr %159, align 4, !tbaa !53 - %161 = sext i32 %160 to i64 - %162 = icmp ult i64 %153, %161 - %163 = tail call i32 @llvm.smax.i32(i32 %160, i32 1) - %164 = zext nneg i32 %163 to i64 - %165 = select i1 %162, i64 %153, i64 %164 - %166 = trunc i64 %165 to i32 - store i32 %166, ptr %159, align 4, !tbaa !53 + %156 = trunc i64 %153 to i32 + %157 = select i1 %154, i32 %156, i32 %155 + store i32 %157, ptr %150, align 4, !tbaa !52 + %158 = getelementptr inbounds i8, ptr %2, i64 12 + %159 = load i32, ptr %158, align 4, !tbaa !53 + %160 = sext i32 %159 to i64 + %161 = icmp ult i64 %153, %160 + %162 = tail call i32 @llvm.smax.i32(i32 %159, i32 1) + %163 = select i1 %161, i32 %156, i32 %162 + store i32 %163, ptr %158, align 4, !tbaa !53 ret void } diff --git a/bench/darktable/optimized/introspection_flip.c.ll b/bench/darktable/optimized/introspection_flip.c.ll index 83604b67cc4..aee07a43e9c 100644 --- a/bench/darktable/optimized/introspection_flip.c.ll +++ b/bench/darktable/optimized/introspection_flip.c.ll @@ -111,7 +111,7 @@ declare ptr @dt_iop_set_description(ptr noundef, ptr noundef, ptr noundef, ptr n ; Function Attrs: mustprogress nofree nounwind willreturn uwtable define noundef range(i32 0, 2) i32 @legacy_params(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, i32 noundef %2, ptr nocapture noundef writeonly %3, ptr nocapture noundef writeonly %4, ptr nocapture noundef writeonly %5) local_unnamed_addr #4 { %7 = icmp eq i32 %2, 1 - br i1 %7, label %8, label %38 + br i1 %7, label %8, label %34 8: ; preds = %6 %9 = tail call noalias dereferenceable_or_null(4) ptr @malloc(i64 noundef 4) #25 @@ -132,34 +132,30 @@ define noundef range(i32 0, 2) i32 @legacy_params(ptr nocapture noundef readonly %20 = load i32, ptr %1, align 4, !tbaa !29 %21 = and i32 %20, 4 %22 = icmp eq i32 %21, 0 - br i1 %22, label %35, label %23 + br i1 %22, label %31, label %23 23: ; preds = %18 - %24 = and i32 %19, 1 - %25 = icmp eq i32 %24, 0 - %26 = or i32 %19, 2 - %27 = and i32 %19, -4 - %28 = select i1 %25, i32 %27, i32 %26 - %29 = and i32 %28, -2 - %30 = lshr i32 %19, 1 - %31 = and i32 %30, 1 - %32 = and i32 %19, 4 - %33 = or disjoint i32 %31, %32 - %34 = or i32 %33, %29 - br label %35 - -35: ; preds = %23, %18 - %36 = phi i32 [ %19, %18 ], [ %34, %23 ] - %37 = xor i32 %36, %20 - store i32 %37, ptr %9, align 4, !tbaa !31 + %24 = shl i32 %19, 1 + %25 = and i32 %24, 2 + %26 = lshr i32 %19, 1 + %27 = and i32 %26, 1 + %28 = and i32 %19, -4 + %29 = or disjoint i32 %28, %27 + %30 = or disjoint i32 %29, %25 + br label %31 + +31: ; preds = %23, %18 + %32 = phi i32 [ %19, %18 ], [ %30, %23 ] + %33 = xor i32 %32, %20 + store i32 %33, ptr %9, align 4, !tbaa !31 store ptr %9, ptr %3, align 8, !tbaa !33 store i32 4, ptr %4, align 4, !tbaa !34 store i32 2, ptr %5, align 4, !tbaa !34 - br label %38 + br label %34 -38: ; preds = %35, %6 - %39 = phi i32 [ 0, %35 ], [ 1, %6 ] - ret i32 %39 +34: ; preds = %31, %6 + %35 = phi i32 [ 0, %31 ], [ 1, %6 ] + ret i32 %35 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) @@ -1555,7 +1551,7 @@ define void @reload_defaults(ptr nocapture noundef %0) local_unnamed_addr #1 { %9 = load i32, ptr %8, align 8 %10 = add i32 %9, 16777216 %11 = icmp ult i32 %10, 33554432 - br i1 %11, label %74, label %12 + br i1 %11, label %70, label %12 12: ; preds = %1 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #24 @@ -1604,7 +1600,7 @@ define void @reload_defaults(ptr nocapture noundef %0) local_unnamed_addr #1 { %42 = load ptr, ptr %2, align 8, !tbaa !33 %43 = call i32 @sqlite3_step(ptr noundef %42) #24 %44 = icmp eq i32 %43, 100 - br i1 %44, label %71, label %45 + br i1 %44, label %67, label %45 45: ; preds = %41 %46 = load ptr, ptr %6, align 8, !tbaa !6 @@ -1617,35 +1613,31 @@ define void @reload_defaults(ptr nocapture noundef %0) local_unnamed_addr #1 { %53 = lshr i32 %52, 24 %54 = and i32 %52, 67108864 %55 = icmp eq i32 %54, 0 - br i1 %55, label %68, label %56 + br i1 %55, label %64, label %56 56: ; preds = %45 - %57 = and i32 %50, 1 - %58 = icmp eq i32 %57, 0 - %59 = or i32 %50, 2 - %60 = and i32 %50, -4 - %61 = select i1 %58, i32 %60, i32 %59 - %62 = and i32 %61, -2 - %63 = lshr i32 %50, 1 - %64 = and i32 %63, 1 - %65 = and i32 %50, 4 - %66 = or disjoint i32 %64, %65 - %67 = or i32 %66, %62 - br label %68 - -68: ; preds = %56, %45 - %69 = phi i32 [ %50, %45 ], [ %67, %56 ] - %70 = xor i32 %69, %53 - store i32 %70, ptr %4, align 4, !tbaa !39 - br label %71 - -71: ; preds = %68, %41 - %72 = load ptr, ptr %2, align 8, !tbaa !33 - %73 = call i32 @sqlite3_finalize(ptr noundef %72) #24 + %57 = shl i32 %50, 1 + %58 = and i32 %57, 2 + %59 = lshr i32 %50, 1 + %60 = and i32 %59, 1 + %61 = and i32 %50, -4 + %62 = or disjoint i32 %61, %60 + %63 = or disjoint i32 %62, %58 + br label %64 + +64: ; preds = %56, %45 + %65 = phi i32 [ %50, %45 ], [ %63, %56 ] + %66 = xor i32 %65, %53 + store i32 %66, ptr %4, align 4, !tbaa !39 + br label %67 + +67: ; preds = %64, %41 + %68 = load ptr, ptr %2, align 8, !tbaa !33 + %69 = call i32 @sqlite3_finalize(ptr noundef %68) #24 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #24 - br label %74 + br label %70 -74: ; preds = %71, %1 +70: ; preds = %67, %1 ret void } diff --git a/bench/diesel-rs/optimized/3btvyztn2iiarpvf.ll b/bench/diesel-rs/optimized/3btvyztn2iiarpvf.ll index 32b115938e5..ea28da7fbe2 100644 --- a/bench/diesel-rs/optimized/3btvyztn2iiarpvf.ll +++ b/bench/diesel-rs/optimized/3btvyztn2iiarpvf.ll @@ -5040,21 +5040,21 @@ define void @"_ZN125_$LT$diesel..mysql..connection..stmt..iterator..MysqlRow$u20 %10 = tail call noundef ptr @mysql_fetch_fields(ptr noundef nonnull %8), !noalias !738 %11 = icmp eq ptr %10, null %12 = zext i32 %9 to i64 - %.sroa.3.0.i.i.i = select i1 %11, i64 0, i64 %12 - %.0.sroa.speculated.i.i = tail call noundef i64 @llvm.umin.i64(i64 %2, i64 %.sroa.3.0.i.i.i) + %13 = tail call i64 @llvm.umin.i64(i64 %2, i64 %12) + %.0.sroa.speculated.i.i = select i1 %11, i64 0, i64 %13 tail call void @llvm.experimental.noalias.scope.decl(metadata !739) - %13 = load ptr, ptr %7, align 8, !alias.scope !739, !noalias !742, !nonnull !10, !noundef !10 - %14 = tail call noundef i32 @mysql_num_fields(ptr noundef nonnull %13), !noalias !745 - %15 = tail call noundef ptr @mysql_fetch_fields(ptr noundef nonnull %13), !noalias !745 - %16 = icmp eq ptr %15, null - %17 = zext i32 %14 to i64 - %.sroa.3.0.i.i1.i = select i1 %16, i64 0, i64 %17 - %.0.sroa.speculated.i2.i = tail call noundef i64 @llvm.umin.i64(i64 %3, i64 %.sroa.3.0.i.i1.i) + %14 = load ptr, ptr %7, align 8, !alias.scope !739, !noalias !742, !nonnull !10, !noundef !10 + %15 = tail call noundef i32 @mysql_num_fields(ptr noundef nonnull %14), !noalias !745 + %16 = tail call noundef ptr @mysql_fetch_fields(ptr noundef nonnull %14), !noalias !745 + %17 = icmp eq ptr %16, null + %18 = zext i32 %15 to i64 + %19 = tail call i64 @llvm.umin.i64(i64 %3, i64 %18) + %.0.sroa.speculated.i2.i = select i1 %17, i64 0, i64 %19 store ptr %1, ptr %0, align 8, !alias.scope !727, !noalias !730 - %18 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.0.sroa.speculated.i.i, ptr %18, align 8, !alias.scope !727, !noalias !730 - %19 = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %.0.sroa.speculated.i2.i, ptr %19, align 8, !alias.scope !727, !noalias !730 + %20 = getelementptr inbounds i8, ptr %0, i64 8 + store i64 %.0.sroa.speculated.i.i, ptr %20, align 8, !alias.scope !727, !noalias !730 + %21 = getelementptr inbounds i8, ptr %0, i64 16 + store i64 %.0.sroa.speculated.i2.i, ptr %21, align 8, !alias.scope !727, !noalias !730 ret void } diff --git a/bench/duckdb/optimized/ub_duckdb_operator_join.cpp.ll b/bench/duckdb/optimized/ub_duckdb_operator_join.cpp.ll index fa835ddd227..11b1dfe053c 100644 --- a/bench/duckdb/optimized/ub_duckdb_operator_join.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_operator_join.cpp.ll @@ -47346,12 +47346,12 @@ for.body15: ; preds = %for.cond.cleanup30, %9 = load i64, ptr %count.i66, align 8 %10 = load i64, ptr %source_offset, align 8 %sub21 = sub i64 %9, %10 - %cond = select i1 %tobool17.not, i64 %sub21, i64 %sub - %cond.i = tail call noundef i64 @llvm.umin.i64(i64 %sub, i64 %cond) + %11 = tail call i64 @llvm.umin.i64(i64 %sub, i64 %sub21) + %cond.i = select i1 %tobool17.not, i64 %11, i64 %sub %add24 = add i64 %cond.i, %10 - %11 = load ptr, ptr %_M_finish.i.i67, align 8, !tbaa !49 - %12 = load ptr, ptr %source27, align 8, !tbaa !50 - %cmp29127.not = icmp eq ptr %11, %12 + %12 = load ptr, ptr %_M_finish.i.i67, align 8, !tbaa !49 + %13 = load ptr, ptr %source27, align 8, !tbaa !50 + %cmp29127.not = icmp eq ptr %12, %13 br i1 %cmp29127.not, label %for.cond.cleanup30, label %_ZN6duckdb6vectorINS_6VectorELb1EEixEm.exit for.cond.cleanup30.loopexit: ; preds = %_ZN6duckdb6vectorINS_6VectorELb1EEixEm.exit98 @@ -47368,13 +47368,13 @@ for.cond.cleanup30: ; preds = %for.cond.cleanup30. br i1 %cmp13, label %for.body15, label %if.end, !llvm.loop !1364 _ZN6duckdb6vectorINS_6VectorELb1EEixEm.exit: ; preds = %for.body15, %_ZN6duckdb6vectorINS_6VectorELb1EEixEm.exit98 - %13 = phi ptr [ %24, %_ZN6duckdb6vectorINS_6VectorELb1EEixEm.exit98 ], [ %12, %for.body15 ] + %14 = phi ptr [ %25, %_ZN6duckdb6vectorINS_6VectorELb1EEixEm.exit98 ], [ %13, %for.body15 ] %i25.0128 = phi i64 [ %inc40, %_ZN6duckdb6vectorINS_6VectorELb1EEixEm.exit98 ], [ 0, %for.body15 ] %add36 = add nuw i64 %i25.0128, %col_offset - %14 = load ptr, ptr %_M_finish.i.i.i74, align 8, !tbaa !49 - %15 = load ptr, ptr %output, align 8, !tbaa !50 - %sub.ptr.lhs.cast.i.i.i75 = ptrtoint ptr %14 to i64 - %sub.ptr.rhs.cast.i.i.i76 = ptrtoint ptr %15 to i64 + %15 = load ptr, ptr %_M_finish.i.i.i74, align 8, !tbaa !49 + %16 = load ptr, ptr %output, align 8, !tbaa !50 + %sub.ptr.lhs.cast.i.i.i75 = ptrtoint ptr %15 to i64 + %sub.ptr.rhs.cast.i.i.i76 = ptrtoint ptr %16 to i64 %sub.ptr.sub.i.i.i77 = sub i64 %sub.ptr.lhs.cast.i.i.i75, %sub.ptr.rhs.cast.i.i.i76 %sub.ptr.div.i.i.i78 = sdiv exact i64 %sub.ptr.sub.i.i.i77, 104 %cmp.not.i.i.i79 = icmp ugt i64 %sub.ptr.div.i.i.i78, %add36 @@ -47383,8 +47383,8 @@ _ZN6duckdb6vectorINS_6VectorELb1EEixEm.exit: ; preds = %for.body15, %_ZN6du if.then.i.i.i80: ; preds = %_ZN6duckdb6vectorINS_6VectorELb1EEixEm.exit %exception.i.i.i81 = tail call ptr @__cxa_allocate_exception(i64 80) #28 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i.i72) #28 - %16 = getelementptr inbounds i8, ptr %ref.tmp.i.i.i72, i64 16 - store ptr %16, ptr %ref.tmp.i.i.i72, align 8, !tbaa !91 + %17 = getelementptr inbounds i8, ptr %ref.tmp.i.i.i72, i64 16 + store ptr %17, ptr %ref.tmp.i.i.i72, align 8, !tbaa !91 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %__dnew.i.i105) #28 store i64 55, ptr %__dnew.i.i105, align 8, !tbaa !92 %call2.i10.i115 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i.i.i72, ptr noundef nonnull align 8 dereferenceable(8) %__dnew.i.i105, i64 noundef 0) @@ -47392,12 +47392,12 @@ if.then.i.i.i80: ; preds = %_ZN6duckdb6vectorIN call2.i10.i.noexc114: ; preds = %if.then.i.i.i80 store ptr %call2.i10.i115, ptr %ref.tmp.i.i.i72, align 8, !tbaa !61 - %17 = load i64, ptr %__dnew.i.i105, align 8, !tbaa !92 - store i64 %17, ptr %16, align 8, !tbaa !58 + %18 = load i64, ptr %__dnew.i.i105, align 8, !tbaa !92 + store i64 %18, ptr %17, align 8, !tbaa !58 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(55) %call2.i10.i115, ptr noundef nonnull align 1 dereferenceable(55) @.str.27, i64 55, i1 false) %_M_string_length.i.i.i.i109 = getelementptr inbounds i8, ptr %ref.tmp.i.i.i72, i64 8 - store i64 %17, ptr %_M_string_length.i.i.i.i109, align 8, !tbaa !64 - %arrayidx.i.i.i110 = getelementptr inbounds i8, ptr %call2.i10.i115, i64 %17 + store i64 %18, ptr %_M_string_length.i.i.i.i109, align 8, !tbaa !64 + %arrayidx.i.i.i110 = getelementptr inbounds i8, ptr %call2.i10.i115, i64 %18 store i8 0, ptr %arrayidx.i.i.i110, align 1, !tbaa !58 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %__dnew.i.i105) #28 invoke void @_ZN6duckdb17InternalExceptionC2IJmmEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpT_(ptr noundef nonnull align 8 dereferenceable(80) %exception.i.i.i81, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i.i.i72, i64 noundef %add36, i64 noundef %sub.ptr.div.i.i.i78) @@ -47408,53 +47408,53 @@ invoke.cont3.i.i.i95: ; preds = %call2.i10.i.noexc11 to label %unreachable.i.i.i96 unwind label %lpad2.i.i.i88 ehcleanup.thread.i.i.i82: ; preds = %if.then.i.i.i80 - %18 = landingpad { ptr, i32 } + %19 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i.i.i72) #28 br label %cleanup.action.i.i.i83 lpad2.i.i.i88: ; preds = %invoke.cont3.i.i.i95, %call2.i10.i.noexc114 %cleanup.isactive.0.i.i.i89 = phi i1 [ false, %invoke.cont3.i.i.i95 ], [ true, %call2.i10.i.noexc114 ] - %19 = landingpad { ptr, i32 } + %20 = landingpad { ptr, i32 } cleanup - %20 = load ptr, ptr %ref.tmp.i.i.i72, align 8, !tbaa !61 - %cmp.i.i.i.i.i.i90 = icmp eq ptr %20, %16 + %21 = load ptr, ptr %ref.tmp.i.i.i72, align 8, !tbaa !61 + %cmp.i.i.i.i.i.i90 = icmp eq ptr %21, %17 br i1 %cmp.i.i.i.i.i.i90, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i92, label %ehcleanup.i.i.i91 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i92: ; preds = %lpad2.i.i.i88 - %21 = load i64, ptr %_M_string_length.i.i.i.i109, align 8, !tbaa !64 - %cmp3.i.i.i.i.i.i94 = icmp ult i64 %21, 16 + %22 = load i64, ptr %_M_string_length.i.i.i.i109, align 8, !tbaa !64 + %cmp3.i.i.i.i.i.i94 = icmp ult i64 %22, 16 call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i94) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i.i.i72) #28 br i1 %cleanup.isactive.0.i.i.i89, label %cleanup.action.i.i.i83, label %eh.resume.i.i.i85 ehcleanup.i.i.i91: ; preds = %lpad2.i.i.i88 - call void @_ZdlPv(ptr noundef %20) #27 + call void @_ZdlPv(ptr noundef %21) #27 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i.i.i72) #28 br i1 %cleanup.isactive.0.i.i.i89, label %cleanup.action.i.i.i83, label %eh.resume.i.i.i85 cleanup.action.i.i.i83: ; preds = %ehcleanup.i.i.i91, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i92, %ehcleanup.thread.i.i.i82 - %.pn14.i.i.i84 = phi { ptr, i32 } [ %18, %ehcleanup.thread.i.i.i82 ], [ %19, %ehcleanup.i.i.i91 ], [ %19, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i92 ] + %.pn14.i.i.i84 = phi { ptr, i32 } [ %19, %ehcleanup.thread.i.i.i82 ], [ %20, %ehcleanup.i.i.i91 ], [ %20, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i92 ] call void @__cxa_free_exception(ptr %exception.i.i.i81) #28 br label %eh.resume.i.i.i85 eh.resume.i.i.i85: ; preds = %cleanup.action.i.i.i83, %ehcleanup.i.i.i91, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i92 - %.pn13.i.i.i86 = phi { ptr, i32 } [ %19, %ehcleanup.i.i.i91 ], [ %.pn14.i.i.i84, %cleanup.action.i.i.i83 ], [ %19, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i92 ] + %.pn13.i.i.i86 = phi { ptr, i32 } [ %20, %ehcleanup.i.i.i91 ], [ %.pn14.i.i.i84, %cleanup.action.i.i.i83 ], [ %20, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i92 ] resume { ptr, i32 } %.pn13.i.i.i86 unreachable.i.i.i96: ; preds = %invoke.cont3.i.i.i95 unreachable _ZN6duckdb6vectorINS_6VectorELb1EEixEm.exit98: ; preds = %_ZN6duckdb6vectorINS_6VectorELb1EEixEm.exit - %add.ptr.i.i.i = getelementptr inbounds %"class.duckdb::Vector", ptr %13, i64 %i25.0128 - %add.ptr.i.i.i97 = getelementptr inbounds %"class.duckdb::Vector", ptr %15, i64 %add36 - %22 = load i64, ptr %source_offset, align 8, !tbaa !1360 - tail call void @_ZN6duckdb16VectorOperations4CopyERKNS_6VectorERS1_mmm(ptr noundef nonnull align 8 dereferenceable(104) %add.ptr.i.i.i, ptr noundef nonnull align 8 dereferenceable(104) %add.ptr.i.i.i97, i64 noundef %add24, i64 noundef %22, i64 noundef %target_offset.0130) + %add.ptr.i.i.i = getelementptr inbounds %"class.duckdb::Vector", ptr %14, i64 %i25.0128 + %add.ptr.i.i.i97 = getelementptr inbounds %"class.duckdb::Vector", ptr %16, i64 %add36 + %23 = load i64, ptr %source_offset, align 8, !tbaa !1360 + tail call void @_ZN6duckdb16VectorOperations4CopyERKNS_6VectorERS1_mmm(ptr noundef nonnull align 8 dereferenceable(104) %add.ptr.i.i.i, ptr noundef nonnull align 8 dereferenceable(104) %add.ptr.i.i.i97, i64 noundef %add24, i64 noundef %23, i64 noundef %target_offset.0130) %inc40 = add nuw i64 %i25.0128, 1 - %23 = load ptr, ptr %_M_finish.i.i67, align 8, !tbaa !49 - %24 = load ptr, ptr %source27, align 8, !tbaa !50 - %sub.ptr.lhs.cast.i.i68 = ptrtoint ptr %23 to i64 - %sub.ptr.rhs.cast.i.i69 = ptrtoint ptr %24 to i64 + %24 = load ptr, ptr %_M_finish.i.i67, align 8, !tbaa !49 + %25 = load ptr, ptr %source27, align 8, !tbaa !50 + %sub.ptr.lhs.cast.i.i68 = ptrtoint ptr %24 to i64 + %sub.ptr.rhs.cast.i.i69 = ptrtoint ptr %25 to i64 %sub.ptr.sub.i.i70 = sub i64 %sub.ptr.lhs.cast.i.i68, %sub.ptr.rhs.cast.i.i69 %sub.ptr.div.i.i71 = sdiv exact i64 %sub.ptr.sub.i.i70, 104 %cmp29 = icmp ult i64 %inc40, %sub.ptr.div.i.i71 @@ -47463,10 +47463,10 @@ _ZN6duckdb6vectorINS_6VectorELb1EEixEm.exit98: ; preds = %_ZN6duckdb6vectorIN if.end: ; preds = %for.cond.cleanup30, %if.else, %for.cond.cleanup %source47 = getelementptr inbounds i8, ptr %this, i64 384 %_M_finish.i.i99 = getelementptr inbounds i8, ptr %this, i64 392 - %25 = load ptr, ptr %_M_finish.i.i99, align 8, !tbaa !49 - %26 = load ptr, ptr %source47, align 8, !tbaa !50 - %sub.ptr.lhs.cast.i.i100 = ptrtoint ptr %25 to i64 - %sub.ptr.rhs.cast.i.i101 = ptrtoint ptr %26 to i64 + %26 = load ptr, ptr %_M_finish.i.i99, align 8, !tbaa !49 + %27 = load ptr, ptr %source47, align 8, !tbaa !50 + %sub.ptr.lhs.cast.i.i100 = ptrtoint ptr %26 to i64 + %sub.ptr.rhs.cast.i.i101 = ptrtoint ptr %27 to i64 %sub.ptr.sub.i.i102 = sub i64 %sub.ptr.lhs.cast.i.i100, %sub.ptr.rhs.cast.i.i101 %sub.ptr.div.i.i103 = sdiv exact i64 %sub.ptr.sub.i.i102, 104 ret i64 %sub.ptr.div.i.i103 diff --git a/bench/eastl/optimized/TestMemory.cpp.ll b/bench/eastl/optimized/TestMemory.cpp.ll index b9d1d15aeff..ba52b16fcc7 100644 --- a/bench/eastl/optimized/TestMemory.cpp.ll +++ b/bench/eastl/optimized/TestMemory.cpp.ll @@ -353,11 +353,11 @@ land.end34: ; preds = %land.rhs32, %_ZN5ea %call35 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %25, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 209, ptr noundef nonnull @.str.10) %26 = load ptr, ptr getelementptr inbounds (i8, ptr @gLCTestObjectTrueTrue, i64 64), align 64 %tobool.not.i115 = icmp eq ptr %26, null - %.pre581 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 + %.pre582 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 br i1 %tobool.not.i115, label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EE8destructEv.exit, label %if.then.i if.then.i: ; preds = %land.end34 - %dec.i.i = add nsw i64 %.pre581, -1 + %dec.i.i = add nsw i64 %.pre582, -1 store i64 %dec.i.i, ptr @_ZN12LCTestObject8sTOCountE, align 8 %27 = load i64, ptr @_ZN12LCTestObject12sTODtorCountE, align 8 %inc.i.i = add nsw i64 %27, 1 @@ -366,7 +366,7 @@ if.then.i: ; preds = %land.end34 br label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EE8destructEv.exit _ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EE8destructEv.exit: ; preds = %land.end34, %if.then.i - %28 = phi i64 [ %.pre581, %land.end34 ], [ %dec.i.i, %if.then.i ] + %28 = phi i64 [ %.pre582, %land.end34 ], [ %dec.i.i, %if.then.i ] %cmp36 = icmp eq i64 %28, 0 %29 = load i64, ptr @_ZN12LCTestObject12sTOCtorCountE, align 8 %cmp38 = icmp eq i64 %29, 1 @@ -407,8 +407,8 @@ _ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EEptEv.exit121: ; preds = %land br i1 %tobool.not.i122, label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EE9constructIJEEEvDpOT_.exit.i123, label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EEptEv.exit121._ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EEptEv.exit126_crit_edge _ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EEptEv.exit121._ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EEptEv.exit126_crit_edge: ; preds = %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EEptEv.exit121 - %.pre582 = load i32, ptr %37, align 64 - %38 = icmp eq i32 %.pre582, 18 + %.pre583 = load i32, ptr %37, align 64 + %38 = icmp eq i32 %.pre583, 18 br label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EEptEv.exit126 _ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EE9constructIJEEEvDpOT_.exit.i123: ; preds = %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EEptEv.exit121 @@ -445,18 +445,18 @@ land.end59: ; preds = %land.rhs57, %_ZN5ea %call60 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %45, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 218, ptr noundef nonnull @.str.14) %46 = load ptr, ptr getelementptr inbounds (i8, ptr @gLCTestObjectTrueTrue, i64 64), align 64 %tobool.not.i128 = icmp eq ptr %46, null - %.pre583 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 + %.pre584 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 br i1 %tobool.not.i128, label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EEptEv.exit141, label %if.then.i129 if.then.i129: ; preds = %land.end59 - %dec.i.i130 = add nsw i64 %.pre583, -1 + %dec.i.i130 = add nsw i64 %.pre584, -1 %47 = load i64, ptr @_ZN12LCTestObject12sTODtorCountE, align 8 %inc.i.i131 = add nsw i64 %47, 1 store i64 %inc.i.i131, ptr @_ZN12LCTestObject12sTODtorCountE, align 8 br label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EEptEv.exit141 _ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EEptEv.exit141: ; preds = %if.then.i129, %land.end59 - %48 = phi i64 [ %dec.i.i130, %if.then.i129 ], [ %.pre583, %land.end59 ] + %48 = phi i64 [ %dec.i.i130, %if.then.i129 ], [ %.pre584, %land.end59 ] %inc.i.i.i135 = add nsw i64 %48, 1 store i64 %inc.i.i.i135, ptr @_ZN12LCTestObject8sTOCountE, align 8 %49 = load i64, ptr @_ZN12LCTestObject12sTOCtorCountE, align 8 @@ -575,11 +575,11 @@ land.end120: ; preds = %land.rhs118, %land. %call121 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %76, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 247, ptr noundef nonnull @.str.10) %77 = load ptr, ptr getelementptr inbounds (i8, ptr @gLCTestObjectFalseTrue, i64 64), align 64 %tobool.not.i153 = icmp eq ptr %77, null - %.pre584 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 + %.pre585 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 br i1 %tobool.not.i153, label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EE8destructEv.exit157, label %if.then.i154 if.then.i154: ; preds = %land.end120 - %dec.i.i155 = add nsw i64 %.pre584, -1 + %dec.i.i155 = add nsw i64 %.pre585, -1 store i64 %dec.i.i155, ptr @_ZN12LCTestObject8sTOCountE, align 8 %78 = load i64, ptr @_ZN12LCTestObject12sTODtorCountE, align 8 %inc.i.i156 = add nsw i64 %78, 1 @@ -588,7 +588,7 @@ if.then.i154: ; preds = %land.end120 br label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EE8destructEv.exit157 _ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EE8destructEv.exit157: ; preds = %land.end120, %if.then.i154 - %79 = phi i64 [ %.pre584, %land.end120 ], [ %dec.i.i155, %if.then.i154 ] + %79 = phi i64 [ %.pre585, %land.end120 ], [ %dec.i.i155, %if.then.i154 ] %cmp122 = icmp eq i64 %79, 0 %80 = load i64, ptr @_ZN12LCTestObject12sTOCtorCountE, align 8 %cmp124 = icmp eq i64 %80, 1 @@ -611,8 +611,8 @@ land.end127: ; preds = %land.rhs125, %_ZN5e br i1 %tobool.not.i159, label %if.then.i160, label %land.end127._ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EE9constructIJiEEEvDpOT_.exit_crit_edge land.end127._ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EE9constructIJiEEEvDpOT_.exit_crit_edge: ; preds = %land.end127 - %.pre585 = load i32, ptr %84, align 64 - %85 = icmp eq i32 %.pre585, 14 + %.pre586 = load i32, ptr %84, align 64 + %85 = icmp eq i32 %.pre586, 14 br label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EE9constructIJiEEEvDpOT_.exit if.then.i160: ; preds = %land.end127 @@ -655,18 +655,18 @@ land.end149: ; preds = %land.rhs147, %_ZN5e %call150 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %95, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 258, ptr noundef nonnull @.str.14) %96 = load ptr, ptr getelementptr inbounds (i8, ptr @gLCTestObjectFalseTrue, i64 64), align 64 %tobool.not.i164 = icmp eq ptr %96, null - %.pre586 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 + %.pre587 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 br i1 %tobool.not.i164, label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EE9constructIJiiiEEEvDpOT_.exit, label %if.then.i165 if.then.i165: ; preds = %land.end149 - %dec.i.i166 = add nsw i64 %.pre586, -1 + %dec.i.i166 = add nsw i64 %.pre587, -1 %97 = load i64, ptr @_ZN12LCTestObject12sTODtorCountE, align 8 %inc.i.i167 = add nsw i64 %97, 1 store i64 %inc.i.i167, ptr @_ZN12LCTestObject12sTODtorCountE, align 8 br label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EE9constructIJiiiEEEvDpOT_.exit _ZN5eastl16late_constructedI12LCTestObjectLb1ELb1EE9constructIJiiiEEEvDpOT_.exit: ; preds = %land.end149, %if.then.i165 - %98 = phi i64 [ %.pre586, %land.end149 ], [ %dec.i.i166, %if.then.i165 ] + %98 = phi i64 [ %.pre587, %land.end149 ], [ %dec.i.i166, %if.then.i165 ] store i32 60, ptr @gLCTestObjectFalseTrue, align 64 %inc.i.i171 = add nsw i64 %98, 1 store i64 %inc.i.i171, ptr @_ZN12LCTestObject8sTOCountE, align 8 @@ -770,8 +770,8 @@ _ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit: ; preds = %land.en br i1 %tobool.not.i186, label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE9constructIJEEEvDpOT_.exit.i187, label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit._ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit190_crit_edge _ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit._ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit190_crit_edge: ; preds = %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit - %.pre587 = load i32, ptr %121, align 64 - %122 = icmp eq i32 %.pre587, 17 + %.pre588 = load i32, ptr %121, align 64 + %122 = icmp eq i32 %.pre588, 17 br label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit190 _ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE9constructIJEEEvDpOT_.exit.i187: ; preds = %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit @@ -805,11 +805,11 @@ land.end205: ; preds = %land.rhs203, %_ZN5e %call206 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %128, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 295, ptr noundef nonnull @.str.10) %129 = load ptr, ptr getelementptr inbounds (i8, ptr @gLCTestObjectTrueFalse, i64 64), align 64 %tobool.not.i191 = icmp eq ptr %129, null - %.pre588 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 + %.pre589 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 br i1 %tobool.not.i191, label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE8destructEv.exit, label %if.then.i192 if.then.i192: ; preds = %land.end205 - %dec.i.i193 = add nsw i64 %.pre588, -1 + %dec.i.i193 = add nsw i64 %.pre589, -1 store i64 %dec.i.i193, ptr @_ZN12LCTestObject8sTOCountE, align 8 %130 = load i64, ptr @_ZN12LCTestObject12sTODtorCountE, align 8 %inc.i.i194 = add nsw i64 %130, 1 @@ -818,7 +818,7 @@ if.then.i192: ; preds = %land.end205 br label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE8destructEv.exit _ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE8destructEv.exit: ; preds = %land.end205, %if.then.i192 - %131 = phi i64 [ %.pre588, %land.end205 ], [ %dec.i.i193, %if.then.i192 ] + %131 = phi i64 [ %.pre589, %land.end205 ], [ %dec.i.i193, %if.then.i192 ] %cmp207 = icmp eq i64 %131, 0 %132 = load i64, ptr @_ZN12LCTestObject12sTOCtorCountE, align 8 %cmp209 = icmp eq i64 %132, 1 @@ -859,8 +859,8 @@ _ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit200: ; preds = %land br i1 %tobool.not.i201, label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE9constructIJEEEvDpOT_.exit.i202, label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit200._ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit205_crit_edge _ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit200._ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit205_crit_edge: ; preds = %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit200 - %.pre589 = load i32, ptr %140, align 64 - %141 = icmp eq i32 %.pre589, 18 + %.pre590 = load i32, ptr %140, align 64 + %141 = icmp eq i32 %.pre590, 18 br label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit205 _ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE9constructIJEEEvDpOT_.exit.i202: ; preds = %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit200 @@ -897,18 +897,18 @@ land.end230: ; preds = %land.rhs228, %_ZN5e %call231 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %148, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 304, ptr noundef nonnull @.str.14) %149 = load ptr, ptr getelementptr inbounds (i8, ptr @gLCTestObjectTrueFalse, i64 64), align 64 %tobool.not.i207 = icmp eq ptr %149, null - %.pre590 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 + %.pre591 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 br i1 %tobool.not.i207, label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit220, label %if.then.i208 if.then.i208: ; preds = %land.end230 - %dec.i.i209 = add nsw i64 %.pre590, -1 + %dec.i.i209 = add nsw i64 %.pre591, -1 %150 = load i64, ptr @_ZN12LCTestObject12sTODtorCountE, align 8 %inc.i.i210 = add nsw i64 %150, 1 store i64 %inc.i.i210, ptr @_ZN12LCTestObject12sTODtorCountE, align 8 br label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit220 _ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EEptEv.exit220: ; preds = %if.then.i208, %land.end230 - %151 = phi i64 [ %dec.i.i209, %if.then.i208 ], [ %.pre590, %land.end230 ] + %151 = phi i64 [ %dec.i.i209, %if.then.i208 ], [ %.pre591, %land.end230 ] %inc.i.i.i214 = add nsw i64 %151, 1 store i64 %inc.i.i.i214, ptr @_ZN12LCTestObject8sTOCountE, align 8 %152 = load i64, ptr @_ZN12LCTestObject12sTOCtorCountE, align 8 @@ -1027,11 +1027,11 @@ land.end291: ; preds = %land.rhs289, %land. %call292 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %179, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 333, ptr noundef nonnull @.str.10) %180 = load ptr, ptr getelementptr inbounds (i8, ptr @gLCTestObjectFalseFalse, i64 64), align 64 %tobool.not.i233 = icmp eq ptr %180, null - %.pre591 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 + %.pre592 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 br i1 %tobool.not.i233, label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE8destructEv.exit237, label %if.then.i234 if.then.i234: ; preds = %land.end291 - %dec.i.i235 = add nsw i64 %.pre591, -1 + %dec.i.i235 = add nsw i64 %.pre592, -1 store i64 %dec.i.i235, ptr @_ZN12LCTestObject8sTOCountE, align 8 %181 = load i64, ptr @_ZN12LCTestObject12sTODtorCountE, align 8 %inc.i.i236 = add nsw i64 %181, 1 @@ -1040,7 +1040,7 @@ if.then.i234: ; preds = %land.end291 br label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE8destructEv.exit237 _ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE8destructEv.exit237: ; preds = %land.end291, %if.then.i234 - %182 = phi i64 [ %.pre591, %land.end291 ], [ %dec.i.i235, %if.then.i234 ] + %182 = phi i64 [ %.pre592, %land.end291 ], [ %dec.i.i235, %if.then.i234 ] %cmp293 = icmp eq i64 %182, 0 %183 = load i64, ptr @_ZN12LCTestObject12sTOCtorCountE, align 8 %cmp295 = icmp eq i64 %183, 1 @@ -1063,8 +1063,8 @@ land.end298: ; preds = %land.rhs296, %_ZN5e br i1 %tobool.not.i239, label %if.then.i240, label %land.end298._ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE9constructIJiEEEvDpOT_.exit_crit_edge land.end298._ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE9constructIJiEEEvDpOT_.exit_crit_edge: ; preds = %land.end298 - %.pre592 = load i32, ptr %187, align 64 - %188 = icmp eq i32 %.pre592, 14 + %.pre593 = load i32, ptr %187, align 64 + %188 = icmp eq i32 %.pre593, 14 br label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE9constructIJiEEEvDpOT_.exit if.then.i240: ; preds = %land.end298 @@ -1107,18 +1107,18 @@ land.end321: ; preds = %land.rhs319, %_ZN5e %call322 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %198, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 344, ptr noundef nonnull @.str.14) %199 = load ptr, ptr getelementptr inbounds (i8, ptr @gLCTestObjectFalseFalse, i64 64), align 64 %tobool.not.i244 = icmp eq ptr %199, null - %.pre593 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 + %.pre594 = load i64, ptr @_ZN12LCTestObject8sTOCountE, align 8 br i1 %tobool.not.i244, label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE9constructIJiiiEEEvDpOT_.exit, label %if.then.i245 if.then.i245: ; preds = %land.end321 - %dec.i.i246 = add nsw i64 %.pre593, -1 + %dec.i.i246 = add nsw i64 %.pre594, -1 %200 = load i64, ptr @_ZN12LCTestObject12sTODtorCountE, align 8 %inc.i.i247 = add nsw i64 %200, 1 store i64 %inc.i.i247, ptr @_ZN12LCTestObject12sTODtorCountE, align 8 br label %_ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE9constructIJiiiEEEvDpOT_.exit _ZN5eastl16late_constructedI12LCTestObjectLb1ELb0EE9constructIJiiiEEEvDpOT_.exit: ; preds = %land.end321, %if.then.i245 - %201 = phi i64 [ %.pre593, %land.end321 ], [ %dec.i.i246, %if.then.i245 ] + %201 = phi i64 [ %.pre594, %land.end321 ], [ %dec.i.i246, %if.then.i245 ] store i32 60, ptr @gLCTestObjectFalseFalse, align 64 %inc.i.i253 = add nsw i64 %201, 1 store i64 %inc.i.i253, ptr @_ZN12LCTestObject8sTOCountE, align 8 @@ -1293,14 +1293,14 @@ for.end: ; preds = %for.body br label %for.body495 for.body495: ; preds = %for.end, %for.body495 - %indvars.iv577 = phi i64 [ 0, %for.end ], [ %indvars.iv.next578, %for.body495 ] - %arrayidx497 = getelementptr inbounds %struct.foo.7, ptr %testCharArray487, i64 %indvars.iv577 + %indvars.iv578 = phi i64 [ 0, %for.end ], [ %indvars.iv.next579, %for.body495 ] + %arrayidx497 = getelementptr inbounds %struct.foo.7, ptr %testCharArray487, i64 %indvars.iv578 %218 = load i8, ptr %arrayidx497, align 1 %cmp500 = icmp eq i8 %218, 42 %call501 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp500, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 606, ptr noundef nonnull @.str.59) - %indvars.iv.next578 = add nuw nsw i64 %indvars.iv577, 1 - %exitcond580.not = icmp eq i64 %indvars.iv.next578, 10 - br i1 %exitcond580.not, label %for.end504, label %for.body495, !llvm.loop !9 + %indvars.iv.next579 = add nuw nsw i64 %indvars.iv578, 1 + %exitcond581.not = icmp eq i64 %indvars.iv.next579, 10 + br i1 %exitcond581.not, label %for.end504, label %for.body495, !llvm.loop !9 for.end504: ; preds = %for.body495 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %intArray1505, ptr noundef nonnull align 16 dereferenceable(24) @__const._Z10TestMemoryv.intArray2.65, i64 24, i1 false) @@ -1344,7 +1344,7 @@ for.end504: ; preds = %for.body495 br label %arrayctor.loop arrayctor.loop: ; preds = %arrayctor.loop, %for.end504 - %inc3.i343547 = phi i64 [ 0, %for.end504 ], [ %inc3.i343, %arrayctor.loop ] + %inc3.i343548 = phi i64 [ 0, %for.end504 ], [ %inc3.i343, %arrayctor.loop ] %arrayctor.cur.idx = phi i64 [ 0, %for.end504 ], [ %arrayctor.cur.add, %arrayctor.loop ] %arrayctor.cur.ptr = getelementptr inbounds i8, ptr %testObjectMemory535, i64 %arrayctor.cur.idx store i32 0, ptr %arrayctor.cur.ptr, align 8 @@ -1352,7 +1352,7 @@ arrayctor.loop: ; preds = %arrayctor.loop, %fo store i8 0, ptr %mbThrowOnCopy.i340, align 4 %mMagicValue.i341 = getelementptr inbounds i8, ptr %arrayctor.cur.ptr, i64 16 store i32 32623592, ptr %mMagicValue.i341, align 8 - %inc3.i343 = add nuw nsw i64 %inc3.i343547, 1 + %inc3.i343 = add nuw nsw i64 %inc3.i343548, 1 %mId.i345 = getelementptr inbounds i8, ptr %arrayctor.cur.ptr, i64 8 store i64 %inc3.i343, ptr %mId.i345, align 8 %arrayctor.cur.add = add nuw nsw i64 %arrayctor.cur.idx, 24 @@ -1388,7 +1388,7 @@ _ZN10TestObjectD2Ev.exit.i.i: ; preds = %if.then.i.i.i, %for _ZN5eastl8destructIP10TestObjectEEvT_S3_.exit: ; preds = %_ZN10TestObjectD2Ev.exit.i.i store i64 0, ptr @_ZN10TestObject8sTOCountE, align 8 store i64 2, ptr @_ZN10TestObject12sTODtorCountE, align 8 - %cmp1.i352 = icmp eq i64 %inc3.i343547, 1 + %cmp1.i352 = icmp eq i64 %inc3.i343548, 1 %cmp2.i354 = icmp eq i32 %220, 0 %221 = select i1 %cmp1.i352, i1 %cmp2.i354, i1 false %call543 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %221, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 661, ptr noundef nonnull @.str.5) @@ -1403,7 +1403,7 @@ _ZN5eastl8destructIP10TestObjectEEvT_S3_.exit: ; preds = %_ZN10TestObjectD2Ev br label %arrayctor.loop548 arrayctor.loop548: ; preds = %arrayctor.loop548, %_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit - %inc3.i359554 = phi i64 [ 0, %_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit ], [ %inc3.i359, %arrayctor.loop548 ] + %inc3.i359555 = phi i64 [ 0, %_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit ], [ %inc3.i359, %arrayctor.loop548 ] %arrayctor.cur549.idx = phi i64 [ 0, %_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit ], [ %arrayctor.cur549.add, %arrayctor.loop548 ] %arrayctor.cur549.ptr = getelementptr inbounds i8, ptr %testObjectMemory544, i64 %arrayctor.cur549.idx store i32 0, ptr %arrayctor.cur549.ptr, align 8 @@ -1411,7 +1411,7 @@ arrayctor.loop548: ; preds = %arrayctor.loop548, store i8 0, ptr %mbThrowOnCopy.i356, align 4 %mMagicValue.i357 = getelementptr inbounds i8, ptr %arrayctor.cur549.ptr, i64 16 store i32 32623592, ptr %mMagicValue.i357, align 8 - %inc3.i359 = add nuw nsw i64 %inc3.i359554, 1 + %inc3.i359 = add nuw nsw i64 %inc3.i359555, 1 %mId.i361 = getelementptr inbounds i8, ptr %arrayctor.cur549.ptr, i64 8 store i64 %inc3.i359, ptr %mId.i361, align 8 %arrayctor.cur549.add = add nuw nsw i64 %arrayctor.cur549.idx, 24 @@ -1421,14 +1421,14 @@ arrayctor.loop548: ; preds = %arrayctor.loop548, for.body.i362.preheader: ; preds = %arrayctor.loop548 store i64 %inc3.i359, ptr @_ZN10TestObject12sTOCtorCountE, align 8 store i64 2, ptr @_ZN10TestObject19sTODefaultCtorCountE, align 8 - %invariant.gep557 = getelementptr inbounds i8, ptr %testObjectMemory544, i64 16 + %invariant.gep558 = getelementptr inbounds i8, ptr %testObjectMemory544, i64 16 br label %for.body.i362 for.body.i362: ; preds = %for.body.i362.preheader, %_ZN5eastl10destroy_atI10TestObjectEEvPT_.exit.i %first.addr.011.i.idx = phi i64 [ %first.addr.011.i.add, %_ZN5eastl10destroy_atI10TestObjectEEvPT_.exit.i ], [ 0, %for.body.i362.preheader ] %inc.i.i410.i = phi i32 [ %223, %_ZN5eastl10destroy_atI10TestObjectEEvPT_.exit.i ], [ 0, %for.body.i362.preheader ] - %gep558 = getelementptr inbounds i8, ptr %invariant.gep557, i64 %first.addr.011.i.idx - %222 = load i32, ptr %gep558, align 8 + %gep559 = getelementptr inbounds i8, ptr %invariant.gep558, i64 %first.addr.011.i.idx + %222 = load i32, ptr %gep559, align 8 %cmp.not.i.i.i364 = icmp eq i32 %222, 32623592 br i1 %cmp.not.i.i.i364, label %_ZN5eastl10destroy_atI10TestObjectEEvPT_.exit.i, label %if.then.i.i.i365 @@ -1439,7 +1439,7 @@ if.then.i.i.i365: ; preds = %for.body.i362 _ZN5eastl10destroy_atI10TestObjectEEvPT_.exit.i: ; preds = %if.then.i.i.i365, %for.body.i362 %223 = phi i32 [ %inc.i.i410.i, %for.body.i362 ], [ %inc.i.i.i366, %if.then.i.i.i365 ] - store i32 0, ptr %gep558, align 8 + store i32 0, ptr %gep559, align 8 %first.addr.011.i.add = add nuw nsw i64 %first.addr.011.i.idx, 24 %cmp.not.i370 = icmp eq i64 %first.addr.011.i.add, 48 br i1 %cmp.not.i370, label %_ZN5eastl7destroyIP10TestObjectEEvT_S3_.exit, label %for.body.i362, !llvm.loop !11 @@ -1447,7 +1447,7 @@ _ZN5eastl10destroy_atI10TestObjectEEvPT_.exit.i: ; preds = %if.then.i.i.i365, % _ZN5eastl7destroyIP10TestObjectEEvT_S3_.exit: ; preds = %_ZN5eastl10destroy_atI10TestObjectEEvPT_.exit.i store i64 0, ptr @_ZN10TestObject8sTOCountE, align 8 store i64 2, ptr @_ZN10TestObject12sTODtorCountE, align 8 - %cmp1.i373 = icmp eq i64 %inc3.i359554, 1 + %cmp1.i373 = icmp eq i64 %inc3.i359555, 1 %cmp2.i375 = icmp eq i32 %223, 0 %224 = select i1 %cmp1.i373, i1 %cmp2.i375, i1 false %call563 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %224, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 672, ptr noundef nonnull @.str.5) @@ -1462,7 +1462,7 @@ _ZN5eastl7destroyIP10TestObjectEEvT_S3_.exit: ; preds = %_ZN5eastl10destroy_ br label %arrayctor.loop568 arrayctor.loop568: ; preds = %arrayctor.loop568, %_ZN5eastl7destroyIP10TestObjectEEvT_S3_.exit - %inc3.i380563 = phi i64 [ 0, %_ZN5eastl7destroyIP10TestObjectEEvT_S3_.exit ], [ %inc3.i380, %arrayctor.loop568 ] + %inc3.i380564 = phi i64 [ 0, %_ZN5eastl7destroyIP10TestObjectEEvT_S3_.exit ], [ %inc3.i380, %arrayctor.loop568 ] %arrayctor.cur569.idx = phi i64 [ 0, %_ZN5eastl7destroyIP10TestObjectEEvT_S3_.exit ], [ %arrayctor.cur569.add, %arrayctor.loop568 ] %arrayctor.cur569.ptr = getelementptr inbounds i8, ptr %testObjectMemory564, i64 %arrayctor.cur569.idx store i32 0, ptr %arrayctor.cur569.ptr, align 8 @@ -1470,7 +1470,7 @@ arrayctor.loop568: ; preds = %arrayctor.loop568, store i8 0, ptr %mbThrowOnCopy.i377, align 4 %mMagicValue.i378 = getelementptr inbounds i8, ptr %arrayctor.cur569.ptr, i64 16 store i32 32623592, ptr %mMagicValue.i378, align 8 - %inc3.i380 = add nuw nsw i64 %inc3.i380563, 1 + %inc3.i380 = add nuw nsw i64 %inc3.i380564, 1 %mId.i382 = getelementptr inbounds i8, ptr %arrayctor.cur569.ptr, i64 8 store i64 %inc3.i380, ptr %mId.i382, align 8 %arrayctor.cur569.add = add nuw nsw i64 %arrayctor.cur569.idx, 24 @@ -1522,137 +1522,136 @@ if.then.i432: ; preds = %_ZN5eastl9allocator %add.i = add i64 %229, 255 %and.i = and i64 %add.i, -256 %sub.ptr.sub.i = sub i64 %and.i, %229 - %cmp3.not.i = icmp ugt i64 %sub.ptr.sub.i, 256 + %cmp3.not.i = icmp ult i64 %sub.ptr.sub.i, 257 %230 = inttoptr i64 %and.i to ptr - %spec.select513 = select i1 %cmp3.not.i, ptr %buffer, ptr %230 - %spec.select514 = select i1 %cmp3.not.i, ptr null, ptr %230 + %spec.select514 = select i1 %cmp3.not.i, ptr %230, ptr null call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(512) %buffer, i8 0, i64 512, i1 false) - %231 = ptrtoint ptr %spec.select513 to i64 - %and.i433 = and i64 %231, 240 - %cmp.i434 = icmp eq i64 %and.i433, 0 + %231 = and i64 %229, 240 + %cmp.i434515 = icmp eq i64 %231, 0 + %cmp.i434 = or i1 %cmp.i434515, %cmp3.not.i %call595 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp.i434, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 716, ptr noundef nonnull @.str.68) %232 = ptrtoint ptr %spec.select514 to i64 br label %for.cond599.preheader for.cond599.preheader: ; preds = %if.then.i432, %for.end618 - %a.0570 = phi i64 [ 1, %if.then.i432 ], [ %mul, %for.end618 ] - %sub.i = add nsw i64 %a.0570, -1 - %sub1.i = sub nsw i64 0, %a.0570 + %a.0571 = phi i64 [ 1, %if.then.i432 ], [ %mul, %for.end618 ] + %sub.i = add nsw i64 %a.0571, -1 + %sub1.i = sub nsw i64 0, %a.0571 br label %for.body601 for.body601: ; preds = %for.cond599.preheader, %_ZN5eastl5alignEmmRPvRm.exit445 - %i590.0569 = phi i64 [ 0, %for.cond599.preheader ], [ %add617, %_ZN5eastl5alignEmmRPvRm.exit445 ] - %ptr.0568 = phi ptr [ %spec.select514, %for.cond599.preheader ], [ %add.ptr614, %_ZN5eastl5alignEmmRPvRm.exit445 ] - %space.0567 = phi i64 [ 256, %for.cond599.preheader ], [ %sub615, %_ZN5eastl5alignEmmRPvRm.exit445 ] - %cmp.not.i435 = icmp ult i64 %space.0567, %a.0570 + %i590.0570 = phi i64 [ 0, %for.cond599.preheader ], [ %add617, %_ZN5eastl5alignEmmRPvRm.exit445 ] + %ptr.0569 = phi ptr [ %spec.select514, %for.cond599.preheader ], [ %add.ptr614, %_ZN5eastl5alignEmmRPvRm.exit445 ] + %space.0568 = phi i64 [ 256, %for.cond599.preheader ], [ %sub615, %_ZN5eastl5alignEmmRPvRm.exit445 ] + %cmp.not.i435 = icmp ult i64 %space.0568, %a.0571 br i1 %cmp.not.i435, label %_ZN5eastl5alignEmmRPvRm.exit445, label %if.then.i436 if.then.i436: ; preds = %for.body601 - %233 = ptrtoint ptr %ptr.0568 to i64 + %233 = ptrtoint ptr %ptr.0569 to i64 %add.i437 = add i64 %sub.i, %233 %and.i438 = and i64 %add.i437, %sub1.i %sub.ptr.sub.i439 = sub i64 %and.i438, %233 - %sub2.i440 = sub nuw i64 %space.0567, %a.0570 + %sub2.i440 = sub nuw i64 %space.0568, %a.0571 %cmp3.not.i441 = icmp ult i64 %sub2.i440, %sub.ptr.sub.i439 br i1 %cmp3.not.i441, label %_ZN5eastl5alignEmmRPvRm.exit445, label %if.then4.i442 if.then4.i442: ; preds = %if.then.i436 %234 = inttoptr i64 %and.i438 to ptr - %sub5.i443 = sub i64 %space.0567, %sub.ptr.sub.i439 + %sub5.i443 = sub i64 %space.0568, %sub.ptr.sub.i439 br label %_ZN5eastl5alignEmmRPvRm.exit445 _ZN5eastl5alignEmmRPvRm.exit445: ; preds = %for.body601, %if.then.i436, %if.then4.i442 - %space.2 = phi i64 [ %space.0567, %for.body601 ], [ %space.0567, %if.then.i436 ], [ %sub5.i443, %if.then4.i442 ] - %ptr.3 = phi ptr [ %ptr.0568, %for.body601 ], [ %ptr.0568, %if.then.i436 ], [ %234, %if.then4.i442 ] + %space.2 = phi i64 [ %space.0568, %for.body601 ], [ %space.0568, %if.then.i436 ], [ %sub5.i443, %if.then4.i442 ] + %ptr.3 = phi ptr [ %ptr.0569, %for.body601 ], [ %ptr.0569, %if.then.i436 ], [ %234, %if.then4.i442 ] %retval.0.i444 = phi ptr [ null, %for.body601 ], [ null, %if.then.i436 ], [ %234, %if.then4.i442 ] %235 = ptrtoint ptr %retval.0.i444 to i64 - %add = or disjoint i64 %i590.0569, %232 + %add = or disjoint i64 %i590.0570, %232 %cmp603 = icmp eq i64 %add, %235 %call604 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp603, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 727, ptr noundef nonnull @.str.69) %cmp605 = icmp eq ptr %ptr.3, %retval.0.i444 %call606 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp605, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 728, ptr noundef nonnull @.str.70) - %sub = sub nuw nsw i64 256, %i590.0569 + %sub = sub nuw nsw i64 256, %i590.0570 %cmp607 = icmp eq i64 %space.2, %sub %call608 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp607, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 729, ptr noundef nonnull @.str.71) %and.i447 = and i64 %sub.i, %235 %cmp.i448 = icmp eq i64 %and.i447, 0 %call610 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp.i448, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 730, ptr noundef nonnull @.str.72) - %call611 = call noundef ptr @_ZN2EA4StdC9Memcheck8EPKvhm(ptr noundef %retval.0.i444, i8 noundef zeroext 0, i64 noundef %a.0570) + %call611 = call noundef ptr @_ZN2EA4StdC9Memcheck8EPKvhm(ptr noundef %retval.0.i444, i8 noundef zeroext 0, i64 noundef %a.0571) %cmp612 = icmp eq ptr %call611, null %call613 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp612, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 731, ptr noundef nonnull @.str.73) - %add.ptr614 = getelementptr inbounds i8, ptr %ptr.3, i64 %a.0570 - %sub615 = sub i64 %space.2, %a.0570 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %retval.0.i444, i8 -1, i64 %a.0570, i1 false) - %add617 = add nuw nsw i64 %i590.0569, %a.0570 + %add.ptr614 = getelementptr inbounds i8, ptr %ptr.3, i64 %a.0571 + %sub615 = sub i64 %space.2, %a.0571 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %retval.0.i444, i8 -1, i64 %a.0571, i1 false) + %add617 = add nuw nsw i64 %i590.0570, %a.0571 %cmp600 = icmp samesign ult i64 %add617, 256 br i1 %cmp600, label %for.body601, label %for.end618, !llvm.loop !12 for.end618: ; preds = %_ZN5eastl5alignEmmRPvRm.exit445 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(512) %buffer, i8 0, i64 512, i1 false) - %mul = shl nuw nsw i64 %a.0570, 1 - %cmp597 = icmp samesign ult i64 %a.0570, 32 + %mul = shl nuw nsw i64 %a.0571, 1 + %cmp597 = icmp samesign ult i64 %a.0571, 32 br i1 %cmp597, label %for.cond599.preheader, label %for.cond627.preheader, !llvm.loop !13 for.cond627.preheader: ; preds = %for.end618, %for.end648 - %sub1.i456575 = phi i64 [ %sub1.i456, %for.end648 ], [ -1, %for.end618 ] - %a623.0574 = phi i64 [ %mul652, %for.end648 ], [ 1, %for.end618 ] - %sub.i454 = add nsw i64 %a623.0574, -1 + %sub1.i456576 = phi i64 [ %sub1.i456, %for.end648 ], [ -1, %for.end618 ] + %a623.0575 = phi i64 [ %mul652, %for.end648 ], [ 1, %for.end618 ] + %sub.i454 = add nsw i64 %a623.0575, -1 br label %for.body629 for.body629: ; preds = %for.cond627.preheader, %_ZN5eastl13align_advanceEmmPvmPS0_Pm.exit - %i590.1573 = phi i64 [ 0, %for.cond627.preheader ], [ %240, %_ZN5eastl13align_advanceEmmPvmPS0_Pm.exit ] - %ptr.1572 = phi ptr [ %spec.select514, %for.cond627.preheader ], [ %ptr.4, %_ZN5eastl13align_advanceEmmPvmPS0_Pm.exit ] - %space.1571 = phi i64 [ 256, %for.cond627.preheader ], [ %space.3, %_ZN5eastl13align_advanceEmmPvmPS0_Pm.exit ] - %cmp.not.i452 = icmp ult i64 %space.1571, %a623.0574 + %i590.1574 = phi i64 [ 0, %for.cond627.preheader ], [ %240, %_ZN5eastl13align_advanceEmmPvmPS0_Pm.exit ] + %ptr.1573 = phi ptr [ %spec.select514, %for.cond627.preheader ], [ %ptr.4, %_ZN5eastl13align_advanceEmmPvmPS0_Pm.exit ] + %space.1572 = phi i64 [ 256, %for.cond627.preheader ], [ %space.3, %_ZN5eastl13align_advanceEmmPvmPS0_Pm.exit ] + %cmp.not.i452 = icmp ult i64 %space.1572, %a623.0575 br i1 %cmp.not.i452, label %_ZN5eastl13align_advanceEmmPvmPS0_Pm.exit, label %if.then.i453 if.then.i453: ; preds = %for.body629 - %236 = ptrtoint ptr %ptr.1572 to i64 + %236 = ptrtoint ptr %ptr.1573 to i64 %add.i455 = add i64 %sub.i454, %236 - %and.i457 = and i64 %add.i455, %sub1.i456575 + %and.i457 = and i64 %add.i455, %sub1.i456576 %sub.ptr.sub.i458 = sub i64 %and.i457, %236 - %sub2.i459 = sub nuw i64 %space.1571, %a623.0574 + %sub2.i459 = sub nuw i64 %space.1572, %a623.0575 %cmp3.not.i460 = icmp ult i64 %sub2.i459, %sub.ptr.sub.i458 br i1 %cmp3.not.i460, label %_ZN5eastl13align_advanceEmmPvmPS0_Pm.exit, label %if.then4.i461 if.then4.i461: ; preds = %if.then.i453 %237 = inttoptr i64 %and.i457 to ptr - %add.ptr.i = getelementptr inbounds i8, ptr %237, i64 %a623.0574 - %.neg = add i64 %space.1571, %sub1.i456575 + %add.ptr.i = getelementptr inbounds i8, ptr %237, i64 %a623.0575 + %.neg = add i64 %space.1572, %sub1.i456576 %sub9.i = sub i64 %.neg, %sub.ptr.sub.i458 br label %_ZN5eastl13align_advanceEmmPvmPS0_Pm.exit _ZN5eastl13align_advanceEmmPvmPS0_Pm.exit: ; preds = %for.body629, %if.then.i453, %if.then4.i461 - %space.3 = phi i64 [ %space.1571, %for.body629 ], [ %space.1571, %if.then.i453 ], [ %sub9.i, %if.then4.i461 ] - %ptr.4 = phi ptr [ %ptr.1572, %for.body629 ], [ %ptr.1572, %if.then.i453 ], [ %add.ptr.i, %if.then4.i461 ] + %space.3 = phi i64 [ %space.1572, %for.body629 ], [ %space.1572, %if.then.i453 ], [ %sub9.i, %if.then4.i461 ] + %ptr.4 = phi ptr [ %ptr.1573, %for.body629 ], [ %ptr.1573, %if.then.i453 ], [ %add.ptr.i, %if.then4.i461 ] %retval.0.i463 = phi ptr [ null, %for.body629 ], [ null, %if.then.i453 ], [ %237, %if.then4.i461 ] %238 = ptrtoint ptr %retval.0.i463 to i64 - %add631 = or disjoint i64 %i590.1573, %232 + %add631 = or disjoint i64 %i590.1574, %232 %cmp632 = icmp eq i64 %add631, %238 %call633 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp632, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 750, ptr noundef nonnull @.str.69) %239 = ptrtoint ptr %ptr.4 to i64 - %add634 = add i64 %a623.0574, %238 + %add634 = add i64 %a623.0575, %238 %cmp635 = icmp eq i64 %add634, %239 %call636 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp635, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 751, ptr noundef nonnull @.str.74) - %240 = add nuw nsw i64 %i590.1573, %a623.0574 + %240 = add nuw nsw i64 %i590.1574, %a623.0575 %sub638 = sub nsw i64 256, %240 %cmp639 = icmp eq i64 %space.3, %sub638 %call640 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp639, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 752, ptr noundef nonnull @.str.75) %and.i465 = and i64 %sub.i454, %238 %cmp.i466 = icmp eq i64 %and.i465, 0 %call642 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp.i466, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 753, ptr noundef nonnull @.str.72) - %call643 = call noundef ptr @_ZN2EA4StdC9Memcheck8EPKvhm(ptr noundef %retval.0.i463, i8 noundef zeroext 0, i64 noundef %a623.0574) + %call643 = call noundef ptr @_ZN2EA4StdC9Memcheck8EPKvhm(ptr noundef %retval.0.i463, i8 noundef zeroext 0, i64 noundef %a623.0575) %cmp644 = icmp eq ptr %call643, null %call645 = call noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp644, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.4, i32 noundef 754, ptr noundef nonnull @.str.73) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %retval.0.i463, i8 -1, i64 %a623.0574, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %retval.0.i463, i8 -1, i64 %a623.0575, i1 false) %cmp628 = icmp samesign ult i64 %240, 256 br i1 %cmp628, label %for.body629, label %for.end648, !llvm.loop !14 for.end648: ; preds = %_ZN5eastl13align_advanceEmmPvmPS0_Pm.exit call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(512) %buffer, i8 0, i64 512, i1 false) - %mul652 = shl nuw nsw i64 %a623.0574, 1 + %mul652 = shl nuw nsw i64 %a623.0575, 1 %sub1.i456 = sub nsw i64 0, %mul652 - %cmp625 = icmp samesign ult i64 %a623.0574, 32 + %cmp625 = icmp samesign ult i64 %a623.0575, 32 br i1 %cmp625, label %for.cond627.preheader, label %_ZN5eastl5alignEmmRPvRm.exit488, !llvm.loop !15 _ZN5eastl5alignEmmRPvRm.exit488: ; preds = %for.end648 diff --git a/bench/flac/optimized/replaygain.c.ll b/bench/flac/optimized/replaygain.c.ll index be4a775de24..3a87b8a689f 100644 --- a/bench/flac/optimized/replaygain.c.ll +++ b/bench/flac/optimized/replaygain.c.ll @@ -204,20 +204,20 @@ for.body99: ; preds = %while.body88, %for. store float %conv104, ptr %arrayidx106, align 4 %cmp107 = icmp eq i32 %10, -2147483648 %11 = tail call i32 @llvm.abs.i32(i32 %10, i1 true) - %cond112 = select i1 %cmp107, i32 2147483647, i32 %11 - %cond118 = tail call i32 @llvm.smax.i32(i32 %block_peak.6111, i32 %cond112) - %12 = load ptr, ptr %arrayidx119, align 8 - %arrayidx121 = getelementptr inbounds i32, ptr %12, i64 %idxprom101 - %13 = load i32, ptr %arrayidx121, align 4 - %conv122 = sitofp i32 %13 to double + %12 = tail call i32 @llvm.smax.i32(i32 %block_peak.6111, i32 %11) + %13 = load ptr, ptr %arrayidx119, align 8 + %arrayidx121 = getelementptr inbounds i32, ptr %13, i64 %idxprom101 + %14 = load i32, ptr %arrayidx121, align 4 + %conv122 = sitofp i32 %14 to double %mul123 = fmul double %cond82, %conv122 %conv124 = fptrunc double %mul123 to float %arrayidx126 = getelementptr inbounds [2048 x float], ptr @grabbag__replaygain_analyze.rbuffer, i64 0, i64 %indvars.iv store float %conv124, ptr %arrayidx126, align 4 - %cmp127 = icmp eq i32 %13, -2147483648 - %14 = tail call i32 @llvm.abs.i32(i32 %13, i1 true) - %cond132 = select i1 %cmp127, i32 2147483647, i32 %14 - %cond138 = tail call i32 @llvm.umax.i32(i32 %cond118, i32 %cond132) + %cmp127 = icmp eq i32 %14, -2147483648 + %15 = tail call i32 @llvm.abs.i32(i32 %14, i1 true) + %cond132 = select i1 %cmp127, i32 2147483647, i32 %15 + %16 = tail call i32 @llvm.umax.i32(i32 %12, i32 %cond132) + %cond138 = select i1 %cmp107, i32 2147483647, i32 %16 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %inc141 = add i32 %j.5109, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count @@ -245,19 +245,19 @@ for.body166: ; preds = %while.body155, %for %indvars.iv132 = phi i64 [ 0, %while.body155 ], [ %indvars.iv.next133, %for.body166 ] %block_peak.8114 = phi i32 [ %block_peak.7, %while.body155 ], [ %cond186, %for.body166 ] %j.7112 = phi i32 [ %j.6, %while.body155 ], [ %inc189, %for.body166 ] - %15 = load ptr, ptr %input, align 8 + %17 = load ptr, ptr %input, align 8 %idxprom168 = zext i32 %j.7112 to i64 - %arrayidx169 = getelementptr inbounds i32, ptr %15, i64 %idxprom168 - %16 = load i32, ptr %arrayidx169, align 4 - %conv170 = sitofp i32 %16 to double + %arrayidx169 = getelementptr inbounds i32, ptr %17, i64 %idxprom168 + %18 = load i32, ptr %arrayidx169, align 4 + %conv170 = sitofp i32 %18 to double %mul171 = fmul double %cond82, %conv170 %conv172 = fptrunc double %mul171 to float %arrayidx174 = getelementptr inbounds [2048 x float], ptr @grabbag__replaygain_analyze.lbuffer, i64 0, i64 %indvars.iv132 store float %conv172, ptr %arrayidx174, align 4 - %cmp175 = icmp eq i32 %16, -2147483648 - %17 = tail call i32 @llvm.abs.i32(i32 %16, i1 true) - %cond180 = select i1 %cmp175, i32 2147483647, i32 %17 - %cond186 = tail call i32 @llvm.smax.i32(i32 %block_peak.8114, i32 %cond180) + %cmp175 = icmp eq i32 %18, -2147483648 + %19 = tail call i32 @llvm.abs.i32(i32 %18, i1 true) + %20 = tail call i32 @llvm.smax.i32(i32 %block_peak.8114, i32 %19) + %cond186 = select i1 %cmp175, i32 2147483647, i32 %20 %indvars.iv.next133 = add nuw nsw i64 %indvars.iv132, 1 %inc189 = add i32 %j.7112, 1 %exitcond136.not = icmp eq i64 %indvars.iv.next133, %wide.trip.count135 @@ -276,8 +276,8 @@ if.end200: ; preds = %while.cond85, %whil %conv203 = uitofp i32 %shl202 to double %conv204 = uitofp nneg i32 %block_peak.4 to double %div205 = fdiv double %conv204, %conv203 - %18 = load double, ptr @title_peak_, align 8 - %cmp206 = fcmp ogt double %div205, %18 + %21 = load double, ptr @title_peak_, align 8 + %cmp206 = fcmp ogt double %div205, %21 br i1 %cmp206, label %if.then208, label %if.end209 if.then208: ; preds = %if.end200 @@ -285,8 +285,8 @@ if.then208: ; preds = %if.end200 br label %if.end209 if.end209: ; preds = %if.then208, %if.end200 - %19 = load double, ptr @album_peak_, align 8 - %cmp210 = fcmp ogt double %div205, %19 + %22 = load double, ptr @album_peak_, align 8 + %cmp210 = fcmp ogt double %div205, %22 br i1 %cmp210, label %if.then212, label %return if.then212: ; preds = %if.end209 diff --git a/bench/fmt/optimized/xchar-test.cc.ll b/bench/fmt/optimized/xchar-test.cc.ll index 71d223feaea..93c25690a7e 100644 --- a/bench/fmt/optimized/xchar-test.cc.ll +++ b/bench/fmt/optimized/xchar-test.cc.ll @@ -92231,34 +92231,34 @@ sw.bb55: ; preds = %if.end36 %tm_wday.i.i256 = getelementptr inbounds i8, ptr %78, i64 24 %79 = load i32, ptr %tm_wday.i.i256, align 8 %cmp2.i = icmp eq i32 %79, 0 - %80 = urem i32 %79, 10 %retval.sroa.0.0.copyload.i.i.i258 = load ptr, ptr %out_.i, align 8 %size_.i.i.i.i259 = getelementptr inbounds i8, ptr %retval.sroa.0.0.copyload.i.i.i258, i64 16 - %81 = load i64, ptr %size_.i.i.i.i259, align 8 - %add.i.i.i.i260 = add i64 %81, 1 + %80 = load i64, ptr %size_.i.i.i.i259, align 8 + %add.i.i.i.i260 = add i64 %80, 1 %capacity_.i.i.i.i.i261 = getelementptr inbounds i8, ptr %retval.sroa.0.0.copyload.i.i.i258, i64 24 - %82 = load i64, ptr %capacity_.i.i.i.i.i261, align 8 - %cmp.i.i.i.i.i262 = icmp ugt i64 %add.i.i.i.i260, %82 + %81 = load i64, ptr %capacity_.i.i.i.i.i261, align 8 + %cmp.i.i.i.i.i262 = icmp ugt i64 %add.i.i.i.i260, %81 br i1 %cmp.i.i.i.i.i262, label %if.then.i.i.i.i.i267, label %_ZN3fmt3v106detail9tm_writerISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEcNSt6chrono8durationIlSt5ratioILl1ELl1EEEEE15on_dec1_weekdayENS1_14numeric_systemE.exit if.then.i.i.i.i.i267: ; preds = %sw.bb55 %vtable.i.i.i.i.i268 = load ptr, ptr %retval.sroa.0.0.copyload.i.i.i258, align 8 - %83 = load ptr, ptr %vtable.i.i.i.i.i268, align 8 - tail call void %83(ptr noundef nonnull align 8 dereferenceable(32) %retval.sroa.0.0.copyload.i.i.i258, i64 noundef %add.i.i.i.i260) + %82 = load ptr, ptr %vtable.i.i.i.i.i268, align 8 + tail call void %82(ptr noundef nonnull align 8 dereferenceable(32) %retval.sroa.0.0.copyload.i.i.i258, i64 noundef %add.i.i.i.i260) %.pre.i.i.i.i269 = load i64, ptr %size_.i.i.i.i259, align 8 %.pre1.i.i.i.i270 = add i64 %.pre.i.i.i.i269, 1 br label %_ZN3fmt3v106detail9tm_writerISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEcNSt6chrono8durationIlSt5ratioILl1ELl1EEEEE15on_dec1_weekdayENS1_14numeric_systemE.exit _ZN3fmt3v106detail9tm_writerISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEcNSt6chrono8durationIlSt5ratioILl1ELl1EEEEE15on_dec1_weekdayENS1_14numeric_systemE.exit: ; preds = %sw.bb55, %if.then.i.i.i.i.i267 %inc.pre-phi.i.i.i.i263 = phi i64 [ %add.i.i.i.i260, %sw.bb55 ], [ %.pre1.i.i.i.i270, %if.then.i.i.i.i.i267 ] - %84 = phi i64 [ %81, %sw.bb55 ], [ %.pre.i.i.i.i269, %if.then.i.i.i.i.i267 ] - %85 = trunc nuw nsw i32 %80 to i8 + %83 = phi i64 [ %80, %sw.bb55 ], [ %.pre.i.i.i.i269, %if.then.i.i.i.i.i267 ] + %84 = urem i32 %79, 10 + %85 = trunc nuw nsw i32 %84 to i8 %86 = or disjoint i8 %85, 48 %conv.i.i264 = select i1 %cmp2.i, i8 55, i8 %86 %ptr_.i.i.i.i265 = getelementptr inbounds i8, ptr %retval.sroa.0.0.copyload.i.i.i258, i64 8 %87 = load ptr, ptr %ptr_.i.i.i.i265, align 8 store i64 %inc.pre-phi.i.i.i.i263, ptr %size_.i.i.i.i259, align 8 - %arrayidx.i.i.i.i266 = getelementptr inbounds i8, ptr %87, i64 %84 + %arrayidx.i.i.i.i266 = getelementptr inbounds i8, ptr %87, i64 %83 store i8 %conv.i.i264, ptr %arrayidx.i.i.i.i266, align 1 br label %sw.epilog134 @@ -94013,35 +94013,35 @@ if.then: ; preds = %entry %tm_wday.i = getelementptr inbounds i8, ptr %1, i64 24 %2 = load i32, ptr %tm_wday.i, align 8 %cmp2 = icmp eq i32 %2, 0 - %3 = urem i32 %2, 10 %out_.i = getelementptr inbounds i8, ptr %this, i64 16 %retval.sroa.0.0.copyload.i.i = load ptr, ptr %out_.i, align 8 %size_.i.i.i = getelementptr inbounds i8, ptr %retval.sroa.0.0.copyload.i.i, i64 16 - %4 = load i64, ptr %size_.i.i.i, align 8 - %add.i.i.i = add i64 %4, 1 + %3 = load i64, ptr %size_.i.i.i, align 8 + %add.i.i.i = add i64 %3, 1 %capacity_.i.i.i.i = getelementptr inbounds i8, ptr %retval.sroa.0.0.copyload.i.i, i64 24 - %5 = load i64, ptr %capacity_.i.i.i.i, align 8 - %cmp.i.i.i.i = icmp ugt i64 %add.i.i.i, %5 + %4 = load i64, ptr %capacity_.i.i.i.i, align 8 + %cmp.i.i.i.i = icmp ugt i64 %add.i.i.i, %4 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZN3fmt3v106detail9tm_writerISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEcNSt6chrono8durationIlSt5ratioILl1ELl1EEEEE6write1Ei.exit if.then.i.i.i.i: ; preds = %if.then %vtable.i.i.i.i = load ptr, ptr %retval.sroa.0.0.copyload.i.i, align 8 - %6 = load ptr, ptr %vtable.i.i.i.i, align 8 - tail call void %6(ptr noundef nonnull align 8 dereferenceable(32) %retval.sroa.0.0.copyload.i.i, i64 noundef %add.i.i.i) + %5 = load ptr, ptr %vtable.i.i.i.i, align 8 + tail call void %5(ptr noundef nonnull align 8 dereferenceable(32) %retval.sroa.0.0.copyload.i.i, i64 noundef %add.i.i.i) %.pre.i.i.i = load i64, ptr %size_.i.i.i, align 8 %.pre1.i.i.i = add i64 %.pre.i.i.i, 1 br label %_ZN3fmt3v106detail9tm_writerISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEcNSt6chrono8durationIlSt5ratioILl1ELl1EEEEE6write1Ei.exit _ZN3fmt3v106detail9tm_writerISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEcNSt6chrono8durationIlSt5ratioILl1ELl1EEEEE6write1Ei.exit: ; preds = %if.then, %if.then.i.i.i.i %inc.pre-phi.i.i.i = phi i64 [ %add.i.i.i, %if.then ], [ %.pre1.i.i.i, %if.then.i.i.i.i ] - %7 = phi i64 [ %4, %if.then ], [ %.pre.i.i.i, %if.then.i.i.i.i ] - %8 = trunc nuw nsw i32 %3 to i8 + %6 = phi i64 [ %3, %if.then ], [ %.pre.i.i.i, %if.then.i.i.i.i ] + %7 = urem i32 %2, 10 + %8 = trunc nuw nsw i32 %7 to i8 %9 = or disjoint i8 %8, 48 %conv.i = select i1 %cmp2, i8 55, i8 %9 %ptr_.i.i.i = getelementptr inbounds i8, ptr %retval.sroa.0.0.copyload.i.i, i64 8 %10 = load ptr, ptr %ptr_.i.i.i, align 8 store i64 %inc.pre-phi.i.i.i, ptr %size_.i.i.i, align 8 - %arrayidx.i.i.i = getelementptr inbounds i8, ptr %10, i64 %7 + %arrayidx.i.i.i = getelementptr inbounds i8, ptr %10, i64 %6 store i8 %conv.i, ptr %arrayidx.i.i.i, align 1 br label %if.end @@ -103737,33 +103737,33 @@ sw.bb50: ; preds = %if.end32 %tm_wday.i.i277 = getelementptr inbounds i8, ptr %83, i64 24 %84 = load i32, ptr %tm_wday.i.i277, align 8 %cmp2.i = icmp eq i32 %84, 0 - %85 = urem i32 %84, 10 %retval.sroa.0.0.copyload.i.i.i279 = load ptr, ptr %out_.i, align 8 %size_.i.i.i.i280 = getelementptr inbounds i8, ptr %retval.sroa.0.0.copyload.i.i.i279, i64 16 - %86 = load i64, ptr %size_.i.i.i.i280, align 8 - %add.i.i.i.i281 = add i64 %86, 1 + %85 = load i64, ptr %size_.i.i.i.i280, align 8 + %add.i.i.i.i281 = add i64 %85, 1 %capacity_.i.i.i.i.i282 = getelementptr inbounds i8, ptr %retval.sroa.0.0.copyload.i.i.i279, i64 24 - %87 = load i64, ptr %capacity_.i.i.i.i.i282, align 8 - %cmp.i.i.i.i.i283 = icmp ugt i64 %add.i.i.i.i281, %87 + %86 = load i64, ptr %capacity_.i.i.i.i.i282, align 8 + %cmp.i.i.i.i.i283 = icmp ugt i64 %add.i.i.i.i281, %86 br i1 %cmp.i.i.i.i.i283, label %if.then.i.i.i.i.i288, label %_ZN3fmt3v106detail9tm_writerISt20back_insert_iteratorINS0_19basic_memory_bufferIwLm500ESaIwEEEEwNSt6chrono8durationIlSt5ratioILl1ELl1EEEEE15on_dec1_weekdayENS1_14numeric_systemE.exit if.then.i.i.i.i.i288: ; preds = %sw.bb50 %vtable.i.i.i.i.i289 = load ptr, ptr %retval.sroa.0.0.copyload.i.i.i279, align 8 - %88 = load ptr, ptr %vtable.i.i.i.i.i289, align 8 - call void %88(ptr noundef nonnull align 8 dereferenceable(32) %retval.sroa.0.0.copyload.i.i.i279, i64 noundef %add.i.i.i.i281) + %87 = load ptr, ptr %vtable.i.i.i.i.i289, align 8 + call void %87(ptr noundef nonnull align 8 dereferenceable(32) %retval.sroa.0.0.copyload.i.i.i279, i64 noundef %add.i.i.i.i281) %.pre.i.i.i.i290 = load i64, ptr %size_.i.i.i.i280, align 8 %.pre1.i.i.i.i291 = add i64 %.pre.i.i.i.i290, 1 br label %_ZN3fmt3v106detail9tm_writerISt20back_insert_iteratorINS0_19basic_memory_bufferIwLm500ESaIwEEEEwNSt6chrono8durationIlSt5ratioILl1ELl1EEEEE15on_dec1_weekdayENS1_14numeric_systemE.exit _ZN3fmt3v106detail9tm_writerISt20back_insert_iteratorINS0_19basic_memory_bufferIwLm500ESaIwEEEEwNSt6chrono8durationIlSt5ratioILl1ELl1EEEEE15on_dec1_weekdayENS1_14numeric_systemE.exit: ; preds = %sw.bb50, %if.then.i.i.i.i.i288 %inc.pre-phi.i.i.i.i284 = phi i64 [ %add.i.i.i.i281, %sw.bb50 ], [ %.pre1.i.i.i.i291, %if.then.i.i.i.i.i288 ] - %89 = phi i64 [ %86, %sw.bb50 ], [ %.pre.i.i.i.i290, %if.then.i.i.i.i.i288 ] - %90 = or disjoint i32 %85, 48 + %88 = phi i64 [ %85, %sw.bb50 ], [ %.pre.i.i.i.i290, %if.then.i.i.i.i.i288 ] + %89 = urem i32 %84, 10 + %90 = or disjoint i32 %89, 48 %conv.i.i285 = select i1 %cmp2.i, i32 55, i32 %90 %ptr_.i.i.i.i286 = getelementptr inbounds i8, ptr %retval.sroa.0.0.copyload.i.i.i279, i64 8 %91 = load ptr, ptr %ptr_.i.i.i.i286, align 8 store i64 %inc.pre-phi.i.i.i.i284, ptr %size_.i.i.i.i280, align 8 - %arrayidx.i.i.i.i287 = getelementptr inbounds i32, ptr %91, i64 %89 + %arrayidx.i.i.i.i287 = getelementptr inbounds i32, ptr %91, i64 %88 store i32 %conv.i.i285, ptr %arrayidx.i.i.i.i287, align 4 br label %sw.epilog127 @@ -105398,34 +105398,34 @@ if.then: ; preds = %entry %tm_wday.i = getelementptr inbounds i8, ptr %1, i64 24 %2 = load i32, ptr %tm_wday.i, align 8 %cmp2 = icmp eq i32 %2, 0 - %3 = urem i32 %2, 10 %out_.i = getelementptr inbounds i8, ptr %this, i64 16 %retval.sroa.0.0.copyload.i.i = load ptr, ptr %out_.i, align 8 %size_.i.i.i = getelementptr inbounds i8, ptr %retval.sroa.0.0.copyload.i.i, i64 16 - %4 = load i64, ptr %size_.i.i.i, align 8 - %add.i.i.i = add i64 %4, 1 + %3 = load i64, ptr %size_.i.i.i, align 8 + %add.i.i.i = add i64 %3, 1 %capacity_.i.i.i.i = getelementptr inbounds i8, ptr %retval.sroa.0.0.copyload.i.i, i64 24 - %5 = load i64, ptr %capacity_.i.i.i.i, align 8 - %cmp.i.i.i.i = icmp ugt i64 %add.i.i.i, %5 + %4 = load i64, ptr %capacity_.i.i.i.i, align 8 + %cmp.i.i.i.i = icmp ugt i64 %add.i.i.i, %4 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZN3fmt3v106detail9tm_writerISt20back_insert_iteratorINS0_19basic_memory_bufferIwLm500ESaIwEEEEwNSt6chrono8durationIlSt5ratioILl1ELl1EEEEE6write1Ei.exit if.then.i.i.i.i: ; preds = %if.then %vtable.i.i.i.i = load ptr, ptr %retval.sroa.0.0.copyload.i.i, align 8 - %6 = load ptr, ptr %vtable.i.i.i.i, align 8 - tail call void %6(ptr noundef nonnull align 8 dereferenceable(32) %retval.sroa.0.0.copyload.i.i, i64 noundef %add.i.i.i) + %5 = load ptr, ptr %vtable.i.i.i.i, align 8 + tail call void %5(ptr noundef nonnull align 8 dereferenceable(32) %retval.sroa.0.0.copyload.i.i, i64 noundef %add.i.i.i) %.pre.i.i.i = load i64, ptr %size_.i.i.i, align 8 %.pre1.i.i.i = add i64 %.pre.i.i.i, 1 br label %_ZN3fmt3v106detail9tm_writerISt20back_insert_iteratorINS0_19basic_memory_bufferIwLm500ESaIwEEEEwNSt6chrono8durationIlSt5ratioILl1ELl1EEEEE6write1Ei.exit _ZN3fmt3v106detail9tm_writerISt20back_insert_iteratorINS0_19basic_memory_bufferIwLm500ESaIwEEEEwNSt6chrono8durationIlSt5ratioILl1ELl1EEEEE6write1Ei.exit: ; preds = %if.then, %if.then.i.i.i.i %inc.pre-phi.i.i.i = phi i64 [ %add.i.i.i, %if.then ], [ %.pre1.i.i.i, %if.then.i.i.i.i ] - %7 = phi i64 [ %4, %if.then ], [ %.pre.i.i.i, %if.then.i.i.i.i ] - %8 = or disjoint i32 %3, 48 + %6 = phi i64 [ %3, %if.then ], [ %.pre.i.i.i, %if.then.i.i.i.i ] + %7 = urem i32 %2, 10 + %8 = or disjoint i32 %7, 48 %conv.i = select i1 %cmp2, i32 55, i32 %8 %ptr_.i.i.i = getelementptr inbounds i8, ptr %retval.sroa.0.0.copyload.i.i, i64 8 %9 = load ptr, ptr %ptr_.i.i.i, align 8 store i64 %inc.pre-phi.i.i.i, ptr %size_.i.i.i, align 8 - %arrayidx.i.i.i = getelementptr inbounds i32, ptr %9, i64 %7 + %arrayidx.i.i.i = getelementptr inbounds i32, ptr %9, i64 %6 store i32 %conv.i, ptr %arrayidx.i.i.i, align 4 br label %if.end diff --git a/bench/folly/optimized/Base64_SSE4_2.cpp.ll b/bench/folly/optimized/Base64_SSE4_2.cpp.ll index 90ecac1426c..1bad1887013 100644 --- a/bench/folly/optimized/Base64_SSE4_2.cpp.ll +++ b/bench/folly/optimized/Base64_SSE4_2.cpp.ll @@ -315,8 +315,8 @@ invoke.cont7.i: ; preds = %entry, %invoke.cont %0 = phi <16 x i8> [ %elt.min.i.i, %invoke.cont7.i ], [ splat (i8 -1), %entry ] %1 = load <16 x i8>, ptr %f.addr.0.i7, align 1, !tbaa !7 %cmp.i.i.i.i = icmp slt <16 x i8> %1, splat (i8 44) - %2 = select <16 x i1> %cmp.i.i.i.i, <16 x i8> splat (i8 15), <16 x i8> zeroinitializer - %elt.sat.i.i.i = tail call <16 x i8> @llvm.ssub.sat.v16i8(<16 x i8> %1, <16 x i8> %2) + %2 = tail call <16 x i8> @llvm.sadd.sat.v16i8(<16 x i8> %1, <16 x i8> splat (i8 -15)) + %elt.sat.i.i.i = select <16 x i1> %cmp.i.i.i.i, <16 x i8> %2, <16 x i8> %1 %3 = bitcast <16 x i8> %elt.sat.i.i.i to <4 x i32> %4 = lshr <4 x i32> %3, splat (i32 4) %5 = bitcast <4 x i32> %4 to <16 x i8> @@ -348,7 +348,7 @@ invoke.cont9.i: ; preds = %invoke.cont7.i if.end.i: ; preds = %invoke.cont9.i, %entry %f.addr.0.i.lcssa14 = phi ptr [ %add.ptr.i, %invoke.cont9.i ], [ %f, %entry ] %o.addr.0.i.lcssa13 = phi ptr [ %add.ptr8.i, %invoke.cont9.i ], [ %o, %entry ] - %call12.i = tail call { i8, ptr } @_ZN5folly6detail13base64_detail16base64DecodeSWAREPKcS3_Pc(ptr noundef %f.addr.0.i.lcssa14, ptr noundef %l, ptr noundef %o.addr.0.i.lcssa13) #5 + %call12.i = tail call { i8, ptr } @_ZN5folly6detail13base64_detail16base64DecodeSWAREPKcS3_Pc(ptr noundef %f.addr.0.i.lcssa14, ptr noundef %l, ptr noundef %o.addr.0.i.lcssa13) #6 %17 = extractvalue { i8, ptr } %call12.i, 0 %18 = extractvalue { i8, ptr } %call12.i, 1 br label %_ZN5folly6detail13base64_detail16base64SimdDecodeINS1_22Base64_SSE4_2_PlatformEEENS1_18Base64DecodeResultEPKcS6_Pc.exit @@ -364,9 +364,6 @@ _ZN5folly6detail13base64_detail16base64SimdDecodeINS1_22Base64_SSE4_2_PlatformEE ; Function Attrs: nounwind declare { i8, ptr } @_ZN5folly6detail13base64_detail16base64DecodeSWAREPKcS3_Pc(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4 -; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare <16 x i8> @llvm.ssub.sat.v16i8(<16 x i8>, <16 x i8>) #2 - ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare <16 x i8> @llvm.umin.v16i8(<16 x i8>, <16 x i8>) #2 @@ -376,12 +373,16 @@ declare <8 x i16> @llvm.x86.ssse3.pmadd.ub.sw.128(<16 x i8>, <16 x i8>) #1 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(none) declare <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16>, <8 x i16>) #1 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare <16 x i8> @llvm.sadd.sat.v16i8(<16 x i8>, <16 x i8>) #5 + attributes #0 = { mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+crc32,+cx8,+fxsr,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(none) } attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+crc32,+cx8,+fxsr,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" "tune-cpu"="generic" } attributes #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+crc32,+cx8,+fxsr,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } +attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6} diff --git a/bench/folly/optimized/Conv.cpp.ll b/bench/folly/optimized/Conv.cpp.ll index bde9c6bafdb..097d465964e 100644 --- a/bench/folly/optimized/Conv.cpp.ll +++ b/bench/folly/optimized/Conv.cpp.ll @@ -4638,8 +4638,7 @@ invoke.cont64: ; preds = %_ZN5folly6detail12_ %12 = and i64 %10, 65280 %cmp66 = icmp eq i64 %12, 1792 %cond.i = select i1 %sgn.sroa.0.1.ph, i64 1792, i64 2048 - %spec.select = select i1 %cmp66, i64 %cond.i, i64 %10 - %13 = and i64 %spec.select, 65280 + %13 = select i1 %cmp66, i64 %cond.i, i64 %12 br label %cleanup88 invoke.cont75: ; preds = %_ZN5folly6detail12_GLOBAL__N_117findFirstNonDigitEPKcS3_.exit @@ -4920,8 +4919,7 @@ invoke.cont64: ; preds = %_ZN5folly6detail12_ %12 = and i64 %10, 65280 %cmp66 = icmp eq i64 %12, 1792 %cond.i = select i1 %sgn.sroa.0.1.ph, i64 1792, i64 2048 - %spec.select = select i1 %cmp66, i64 %cond.i, i64 %10 - %13 = and i64 %spec.select, 65280 + %13 = select i1 %cmp66, i64 %cond.i, i64 %12 br label %cleanup88 invoke.cont75: ; preds = %_ZN5folly6detail12_GLOBAL__N_117findFirstNonDigitEPKcS3_.exit diff --git a/bench/freetype/optimized/cff.c.ll b/bench/freetype/optimized/cff.c.ll index c9f28d02706..32664b9ce1b 100644 --- a/bench/freetype/optimized/cff.c.ll +++ b/bench/freetype/optimized/cff.c.ll @@ -9072,11 +9072,11 @@ define internal fastcc i32 @cff_vstore_load(ptr nocapture noundef %0, ptr nounde %or.cond119 = select i1 %or.cond, i1 true, i1 %74 %75 = icmp sgt i16 %65, %69 %or.cond120 = select i1 %or.cond119, i1 true, i1 %75 - %76 = shl nsw i64 %66, 2 - %77 = sext i16 %62 to i64 - %78 = shl nsw i64 %77, 2 - store i64 %78, ptr %61, align 8 - %79 = select i1 %or.cond120, i64 0, i64 %76 + %76 = sext i16 %62 to i64 + %77 = shl nsw i64 %76, 2 + store i64 %77, ptr %61, align 8 + %78 = shl nsw i64 %66, 2 + %79 = select i1 %or.cond120, i64 0, i64 %78 %80 = getelementptr inbounds i8, ptr %61, i64 8 store i64 %79, ptr %80, align 8 %81 = sext i16 %69 to i64 diff --git a/bench/git/optimized/commit-graph.ll b/bench/git/optimized/commit-graph.ll index 2d656a7fee3..f77aa0cf058 100644 --- a/bench/git/optimized/commit-graph.ll +++ b/bench/git/optimized/commit-graph.ll @@ -8671,16 +8671,15 @@ for.body: ; preds = %for.body.lr.ph, %fo %num_generation_data_overflows.1 = add nuw nsw i32 %num_generation_data_overflows.012, %inc7 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %data.addr.i) %9 = or disjoint i32 %num_generation_data_overflows.012, -2147483648 - %or = zext i32 %9 to i64 - %offset.0 = select i1 %cmp4, i64 %or, i64 %sub - %conv8 = trunc i64 %offset.0 to i32 - %10 = call i32 asm "bswap $0", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %conv8) #24, !srcloc !5 - store i32 %10, ptr %data.addr.i, align 4 + %10 = trunc i64 %sub to i32 + %conv8 = select i1 %cmp4, i32 %9, i32 %10 + %11 = call i32 asm "bswap $0", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %conv8) #24, !srcloc !5 + store i32 %11, ptr %data.addr.i, align 4 call void @hashwrite(ptr noundef %f, ptr noundef nonnull %data.addr.i, i32 noundef 4) #22 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %data.addr.i) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %11 = load i64, ptr %nr, align 8 - %cmp = icmp ugt i64 %11, %indvars.iv.next + %12 = load i64, ptr %nr, align 8 + %cmp = icmp ugt i64 %12, %indvars.iv.next br i1 %cmp, label %for.body, label %for.end, !llvm.loop !69 for.end: ; preds = %for.body, %entry diff --git a/bench/glslang/optimized/hlslParseHelper.cpp.ll b/bench/glslang/optimized/hlslParseHelper.cpp.ll index 0354d8e8365..ebbc984228a 100644 --- a/bench/glslang/optimized/hlslParseHelper.cpp.ll +++ b/bench/glslang/optimized/hlslParseHelper.cpp.ll @@ -53386,7 +53386,7 @@ define void @_ZN7glslang16HlslParseContext8paramFixERNS_5TTypeE(ptr nocapture no %8 = load i64, ptr %7, align 8 %9 = trunc i64 %8 to i32 %10 = and i32 %9, 127 - switch i32 %10, label %113 [ + switch i32 %10, label %114 [ i32 2, label %11 i32 1, label %20 i32 0, label %20 @@ -53403,7 +53403,7 @@ define void @_ZN7glslang16HlslParseContext8paramFixERNS_5TTypeE(ptr nocapture no %18 = and i64 %17, -128 %19 = or disjoint i64 %18, 19 store i64 %19, ptr %16, align 8 - br label %113 + br label %114 20: ; preds = %2, %2 %21 = load ptr, ptr %1, align 8 @@ -53415,7 +53415,7 @@ define void @_ZN7glslang16HlslParseContext8paramFixERNS_5TTypeE(ptr nocapture no %27 = and i64 %26, -128 %28 = or disjoint i64 %27, 16 store i64 %28, ptr %25, align 8 - br label %113 + br label %114 _ZN7glslang16HlslParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1_b.exit: ; preds = %2 %29 = load ptr, ptr %1, align 8 @@ -53469,7 +53469,6 @@ _ZN7glslang16HlslParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1 %.not50.i = icmp eq i64 %55, 0 %56 = and i64 %.sroa.2.0.copyload, -8071154219723194496 %57 = or disjoint i64 %55, %56 - %.sroa.2.0 = select i1 %.not50.i, i64 %.sroa.2.0.copyload, i64 %57 %58 = getelementptr inbounds i8, ptr %52, i64 16 %59 = load i8, ptr %58, align 8 %60 = and i8 %59, 15 @@ -53506,24 +53505,24 @@ _ZN7glslang16HlslParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1 %82 = getelementptr inbounds i8, ptr %81, i64 8 %83 = load i64, ptr %82, align 8 %84 = and i64 %83, 127 - %85 = and i64 %.sroa.2.0, -703687475265664 - %86 = or disjoint i64 %84, %85 - %87 = load ptr, ptr %1, align 8 - %88 = getelementptr inbounds i8, ptr %87, i64 80 - %89 = load ptr, ptr %88, align 8 - %90 = tail call noundef nonnull align 8 dereferenceable(80) ptr %89(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 - %91 = getelementptr inbounds i8, ptr %90, i64 8 - %92 = load i64, ptr %91, align 8 - %.lobit = and i64 %92, 140737488355328 - %93 = or disjoint i64 %86, %.lobit - %94 = load ptr, ptr %1, align 8 - %95 = getelementptr inbounds i8, ptr %94, i64 80 - %96 = load ptr, ptr %95, align 8 - %97 = tail call noundef nonnull align 8 dereferenceable(80) ptr %96(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 - %98 = getelementptr inbounds i8, ptr %97, i64 8 - %99 = load i64, ptr %98, align 8 - %.lobit11 = and i64 %99, 562949953421312 - %100 = or disjoint i64 %93, %.lobit11 + %85 = and i64 %.sroa.2.0.copyload, -703687475265664 + %86 = select i1 %.not50.i, i64 %85, i64 %57 + %87 = or disjoint i64 %84, %86 + %88 = load ptr, ptr %1, align 8 + %89 = getelementptr inbounds i8, ptr %88, i64 80 + %90 = load ptr, ptr %89, align 8 + %91 = tail call noundef nonnull align 8 dereferenceable(80) ptr %90(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %92 = getelementptr inbounds i8, ptr %91, i64 8 + %93 = load i64, ptr %92, align 8 + %.lobit = and i64 %93, 140737488355328 + %94 = or disjoint i64 %87, %.lobit + %95 = load ptr, ptr %1, align 8 + %96 = getelementptr inbounds i8, ptr %95, i64 80 + %97 = load ptr, ptr %96, align 8 + %98 = tail call noundef nonnull align 8 dereferenceable(80) ptr %97(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + %99 = getelementptr inbounds i8, ptr %98, i64 8 + %100 = load i64, ptr %99, align 8 + %.lobit11 = and i64 %100, 562949953421312 %101 = load ptr, ptr %1, align 8 %102 = getelementptr inbounds i8, ptr %101, i64 80 %103 = load ptr, ptr %102, align 8 @@ -53531,31 +53530,32 @@ _ZN7glslang16HlslParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1 %105 = getelementptr inbounds i8, ptr %104, i64 8 %106 = load i64, ptr %105, align 8 %107 = and i64 %106, 33488896 - %108 = or disjoint i64 %100, %107 - %109 = load ptr, ptr %1, align 8 - %110 = getelementptr inbounds i8, ptr %109, i64 80 - %111 = load ptr, ptr %110, align 8 - %112 = tail call noundef nonnull align 8 dereferenceable(80) ptr %111(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 - store ptr %.sroa.0.0.copyload, ptr %112, align 8 - %.sroa.2.0..sroa_idx13 = getelementptr inbounds i8, ptr %112, i64 8 - store i64 %108, ptr %.sroa.2.0..sroa_idx13, align 8 - %.sroa.12.0..sroa_idx19 = getelementptr inbounds i8, ptr %112, i64 16 + %108 = or disjoint i64 %94, %.lobit11 + %109 = or disjoint i64 %108, %107 + %110 = load ptr, ptr %1, align 8 + %111 = getelementptr inbounds i8, ptr %110, i64 80 + %112 = load ptr, ptr %111, align 8 + %113 = tail call noundef nonnull align 8 dereferenceable(80) ptr %112(ptr noundef nonnull align 8 dereferenceable(152) %1) #24 + store ptr %.sroa.0.0.copyload, ptr %113, align 8 + %.sroa.2.0..sroa_idx13 = getelementptr inbounds i8, ptr %113, i64 8 + store i64 %109, ptr %.sroa.2.0..sroa_idx13, align 8 + %.sroa.12.0..sroa_idx19 = getelementptr inbounds i8, ptr %113, i64 16 store i8 %.sroa.12.0, ptr %.sroa.12.0..sroa_idx19, align 8 - %.sroa.14.0..sroa_idx21 = getelementptr inbounds i8, ptr %112, i64 17 + %.sroa.14.0..sroa_idx21 = getelementptr inbounds i8, ptr %113, i64 17 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.14.0..sroa_idx21, ptr noundef nonnull align 8 dereferenceable(7) %.sroa.14, i64 7, i1 false) - %.sroa.1422.0..sroa_idx23 = getelementptr inbounds i8, ptr %112, i64 24 + %.sroa.1422.0..sroa_idx23 = getelementptr inbounds i8, ptr %113, i64 24 store i32 %.sroa.1422.0, ptr %.sroa.1422.0..sroa_idx23, align 8 - %.sroa.15.0..sroa_idx25 = getelementptr inbounds i8, ptr %112, i64 28 + %.sroa.15.0..sroa_idx25 = getelementptr inbounds i8, ptr %113, i64 28 store i64 %.sroa.15.0, ptr %.sroa.15.0..sroa_idx25, align 4 - %.sroa.17.0..sroa_idx27 = getelementptr inbounds i8, ptr %112, i64 36 + %.sroa.17.0..sroa_idx27 = getelementptr inbounds i8, ptr %113, i64 36 store i64 %.sroa.17.0, ptr %.sroa.17.0..sroa_idx27, align 4 - %.sroa.19.0..sroa_idx29 = getelementptr inbounds i8, ptr %112, i64 44 + %.sroa.19.0..sroa_idx29 = getelementptr inbounds i8, ptr %113, i64 44 store i8 %.sroa.19.0, ptr %.sroa.19.0..sroa_idx29, align 4 - %.sroa.20.0..sroa_idx31 = getelementptr inbounds i8, ptr %112, i64 45 + %.sroa.20.0..sroa_idx31 = getelementptr inbounds i8, ptr %113, i64 45 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(35) %.sroa.20.0..sroa_idx31, ptr noundef nonnull align 8 dereferenceable(35) %.sroa.20, i64 35, i1 false) - br label %113 + br label %114 -113: ; preds = %2, %_ZN7glslang16HlslParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1_b.exit, %20, %11 +114: ; preds = %2, %_ZN7glslang16HlslParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1_b.exit, %20, %11 ret void } diff --git a/bench/gromacs/optimized/eigensolver.cpp.ll b/bench/gromacs/optimized/eigensolver.cpp.ll index 7aa000a77fe..c33576ce0a2 100644 --- a/bench/gromacs/optimized/eigensolver.cpp.ll +++ b/bench/gromacs/optimized/eigensolver.cpp.ll @@ -64,80 +64,79 @@ define void @_Z11eigensolverPfiiiS_S_(ptr noundef %0, i32 noundef %1, i32 nounde store i32 %1, ptr %7, align 4 %spec.select = tail call i32 @llvm.smax.i32(i32 %2, i32 0) %.not = icmp slt i32 %3, %1 - %21 = add nsw i32 %1, -1 - %22 = select i1 %.not, i32 %3, i32 %21 %.not12 = icmp eq ptr %5, null %.str..str.1 = select i1 %.not12, ptr @.str.1, ptr @.str - %23 = shl nsw i32 %1, 1 - %24 = sext i32 %23 to i64 - %25 = tail call noundef ptr @_Z11save_callocPKcS0_imm(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, i32 noundef 73, i64 noundef range(i64 -2147483648, 2147483648) %24, i64 noundef 4) + %21 = shl nsw i32 %1, 1 + %22 = sext i32 %21 to i64 + %23 = tail call noundef ptr @_Z11save_callocPKcS0_imm(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, i32 noundef 73, i64 noundef range(i64 -2147483648, 2147483648) %22, i64 noundef 4) store float 0.000000e+00, ptr %18, align 4 store float 0.000000e+00, ptr %17, align 4 store i32 -1, ptr %10, align 4 store i32 -1, ptr %11, align 4 store float 0.000000e+00, ptr %16, align 4 - %26 = add nuw nsw i32 %spec.select, 1 - store i32 %26, ptr %8, align 4 - %27 = add nsw i32 %22, 1 - store i32 %27, ptr %9, align 4 - call void @ssyevr_(ptr noundef nonnull %.str..str.1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %7, ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %16, ptr noundef nonnull %12, ptr noundef %4, ptr noundef %5, ptr noundef nonnull %7, ptr noundef %25, ptr noundef nonnull %15, ptr noundef nonnull %10, ptr noundef nonnull %13, ptr noundef nonnull %11, ptr noundef nonnull %14) - %28 = load i32, ptr %14, align 4 - %.not13 = icmp eq i32 %28, 0 - br i1 %.not13, label %33, label %29 - -29: ; preds = %6 - call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, i32 noundef 138, ptr noundef %25) + %24 = add nuw nsw i32 %spec.select, 1 + store i32 %24, ptr %8, align 4 + %25 = add nsw i32 %3, 1 + %26 = select i1 %.not, i32 %25, i32 %1 + store i32 %26, ptr %9, align 4 + call void @ssyevr_(ptr noundef nonnull %.str..str.1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %7, ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %16, ptr noundef nonnull %12, ptr noundef %4, ptr noundef %5, ptr noundef nonnull %7, ptr noundef %23, ptr noundef nonnull %15, ptr noundef nonnull %10, ptr noundef nonnull %13, ptr noundef nonnull %11, ptr noundef nonnull %14) + %27 = load i32, ptr %14, align 4 + %.not13 = icmp eq i32 %27, 0 + br i1 %.not13, label %32, label %28 + +28: ; preds = %6 + call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, i32 noundef 138, ptr noundef %23) call void @_ZNSt10filesystem7__cxx114pathC2IA135_cS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %19, ptr noundef nonnull align 1 dereferenceable(135) @.str.3, i8 noundef zeroext 2) invoke void (i32, ptr, i32, ptr, ...) @_Z9gmx_fataliRKNSt10filesystem7__cxx114pathEiPKcz(i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(40) %19, i32 noundef 139, ptr noundef nonnull @.str.6) #12 - to label %30 unwind label %31 + to label %29 unwind label %30 -30: ; preds = %29 +29: ; preds = %28 unreachable -31: ; preds = %29 - %32 = landingpad { ptr, i32 } +30: ; preds = %28 + %31 = landingpad { ptr, i32 } cleanup - br label %48 - -33: ; preds = %6 - %34 = load float, ptr %15, align 4 - %35 = fptosi float %34 to i32 - store i32 %35, ptr %10, align 4 - %36 = load i32, ptr %13, align 4 - store i32 %36, ptr %11, align 4 - %37 = sext i32 %35 to i64 - %38 = call noundef ptr @_Z11save_callocPKcS0_imm(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.3, i32 noundef 145, i64 noundef range(i64 -2147483648, 2147483648) %37, i64 noundef 4) - %39 = load i32, ptr %11, align 4 - %40 = sext i32 %39 to i64 - %41 = call noundef ptr @_Z11save_callocPKcS0_imm(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.3, i32 noundef 146, i64 noundef range(i64 -2147483648, 2147483648) %40, i64 noundef 4) + br label %47 + +32: ; preds = %6 + %33 = load float, ptr %15, align 4 + %34 = fptosi float %33 to i32 + store i32 %34, ptr %10, align 4 + %35 = load i32, ptr %13, align 4 + store i32 %35, ptr %11, align 4 + %36 = sext i32 %34 to i64 + %37 = call noundef ptr @_Z11save_callocPKcS0_imm(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.3, i32 noundef 145, i64 noundef range(i64 -2147483648, 2147483648) %36, i64 noundef 4) + %38 = load i32, ptr %11, align 4 + %39 = sext i32 %38 to i64 + %40 = call noundef ptr @_Z11save_callocPKcS0_imm(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.3, i32 noundef 146, i64 noundef range(i64 -2147483648, 2147483648) %39, i64 noundef 4) store float 0.000000e+00, ptr %16, align 4 - call void @ssyevr_(ptr noundef nonnull %.str..str.1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %7, ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %16, ptr noundef nonnull %12, ptr noundef %4, ptr noundef %5, ptr noundef nonnull %7, ptr noundef %25, ptr noundef %38, ptr noundef nonnull %10, ptr noundef %41, ptr noundef nonnull %11, ptr noundef nonnull %14) - call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, i32 noundef 198, ptr noundef %25) - call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.3, i32 noundef 199, ptr noundef %38) - call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.3, i32 noundef 200, ptr noundef %41) - %42 = load i32, ptr %14, align 4 - %.not14 = icmp eq i32 %42, 0 - br i1 %.not14, label %47, label %43 - -43: ; preds = %33 + call void @ssyevr_(ptr noundef nonnull %.str..str.1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %7, ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %16, ptr noundef nonnull %12, ptr noundef %4, ptr noundef %5, ptr noundef nonnull %7, ptr noundef %23, ptr noundef %37, ptr noundef nonnull %10, ptr noundef %40, ptr noundef nonnull %11, ptr noundef nonnull %14) + call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, i32 noundef 198, ptr noundef %23) + call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.3, i32 noundef 199, ptr noundef %37) + call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.3, i32 noundef 200, ptr noundef %40) + %41 = load i32, ptr %14, align 4 + %.not14 = icmp eq i32 %41, 0 + br i1 %.not14, label %46, label %42 + +42: ; preds = %32 call void @_ZNSt10filesystem7__cxx114pathC2IA135_cS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %20, ptr noundef nonnull align 1 dereferenceable(135) @.str.3, i8 noundef zeroext 2) invoke void (i32, ptr, i32, ptr, ...) @_Z9gmx_fataliRKNSt10filesystem7__cxx114pathEiPKcz(i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(40) %20, i32 noundef 204, ptr noundef nonnull @.str.6) #12 - to label %44 unwind label %45 + to label %43 unwind label %44 -44: ; preds = %43 +43: ; preds = %42 unreachable -45: ; preds = %43 - %46 = landingpad { ptr, i32 } +44: ; preds = %42 + %45 = landingpad { ptr, i32 } cleanup - br label %48 + br label %47 -47: ; preds = %33 +46: ; preds = %32 ret void -48: ; preds = %45, %31 - %.sink = phi ptr [ %20, %45 ], [ %19, %31 ] - %.pn = phi { ptr, i32 } [ %46, %45 ], [ %32, %31 ] +47: ; preds = %44, %30 + %.sink = phi ptr [ %20, %44 ], [ %19, %30 ] + %.pn = phi { ptr, i32 } [ %45, %44 ], [ %31, %30 ] call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %.sink) #13 resume { ptr, i32 } %.pn } diff --git a/bench/grpc/optimized/socket_utils_common_posix.cc.ll b/bench/grpc/optimized/socket_utils_common_posix.cc.ll index 44c91b67391..07b1ecce80c 100644 --- a/bench/grpc/optimized/socket_utils_common_posix.cc.ll +++ b/bench/grpc/optimized/socket_utils_common_posix.cc.ll @@ -1238,30 +1238,23 @@ if.then: ; preds = %entry %_ZL36g_default_client_tcp_user_timeout_ms.val = load i32, ptr @_ZL36g_default_client_tcp_user_timeout_ms, align 4 %_ZL36g_default_server_tcp_user_timeout_ms.val = load i32, ptr @_ZL36g_default_server_tcp_user_timeout_ms, align 4 %storemerge = select i1 %is_client, i32 %_ZL36g_default_client_tcp_user_timeout_ms.val, i32 %_ZL36g_default_server_tcp_user_timeout_ms.val - store i32 %storemerge, ptr %timeout, align 4 %keep_alive_time_ms = getelementptr inbounds i8, ptr %options, i64 28 %1 = load i32, ptr %keep_alive_time_ms, align 4 %cmp6 = icmp sgt i32 %1, 0 %cmp8 = icmp ne i32 %1, 2147483647 - %frombool9 = zext i1 %cmp8 to i8 - %enable.1 = select i1 %cmp6, i8 %frombool9, i8 %enable.0.in %keep_alive_timeout_ms = getelementptr inbounds i8, ptr %options, i64 32 %2 = load i32, ptr %keep_alive_timeout_ms, align 8 %cmp11 = icmp sgt i32 %2, 0 - br i1 %cmp11, label %if.then12, label %if.end13 - -if.then12: ; preds = %if.then - store i32 %2, ptr %timeout, align 4 - br label %if.end13 - -if.end13: ; preds = %if.then12, %if.then - %tobool14 = trunc i8 %enable.1 to i1 + %spec.store.select = select i1 %cmp11, i32 %2, i32 %storemerge + store i32 %spec.store.select, ptr %timeout, align 4 + %3 = trunc i8 %enable.0.in to i1 + %tobool14 = select i1 %cmp6, i1 %cmp8, i1 %3 br i1 %tobool14, label %if.then15, label %return -if.then15: ; preds = %if.end13 +if.then15: ; preds = %if.then store i32 4, ptr %len, align 4 - %3 = load atomic i32, ptr @_ZL34g_socket_supports_tcp_user_timeout.0 seq_cst, align 4 - %cmp17 = icmp eq i32 %3, 0 + %4 = load atomic i32, ptr @_ZL34g_socket_supports_tcp_user_timeout.0 seq_cst, align 4 + %cmp17 = icmp eq i32 %4, 0 br i1 %cmp17, label %if.then18, label %if.end24 if.then18: ; preds = %if.then15 @@ -1283,18 +1276,18 @@ if.end24.sink.split: ; preds = %if.else22, %if.then br label %if.end24 if.end24: ; preds = %if.end24.sink.split, %if.then15 - %4 = load atomic i32, ptr @_ZL34g_socket_supports_tcp_user_timeout.0 seq_cst, align 4 - %cmp26 = icmp sgt i32 %4, 0 + %5 = load atomic i32, ptr @_ZL34g_socket_supports_tcp_user_timeout.0 seq_cst, align 4 + %cmp26 = icmp sgt i32 %5, 0 br i1 %cmp26, label %if.then27, label %return if.then27: ; preds = %if.end24 - %5 = load atomic i8, ptr getelementptr inbounds (i8, ptr @grpc_tcp_trace, i64 16) monotonic, align 8 - %tobool.i.i.i = trunc i8 %5 to i1 + %6 = load atomic i8, ptr getelementptr inbounds (i8, ptr @grpc_tcp_trace, i64 16) monotonic, align 8 + %tobool.i.i.i = trunc i8 %6 to i1 br i1 %tobool.i.i.i, label %if.then29, label %if.end30 if.then29: ; preds = %if.then27 - %6 = load i32, ptr %timeout, align 4 - call void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str, i32 noundef 387, i32 noundef 1, ptr noundef nonnull @.str.21, i32 noundef %6) + %7 = load i32, ptr %timeout, align 4 + call void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str, i32 noundef 387, i32 noundef 1, ptr noundef nonnull @.str.21, i32 noundef %7) br label %if.end30 if.end30: ; preds = %if.then29, %if.then27 @@ -1304,8 +1297,8 @@ if.end30: ; preds = %if.then29, %if.then if.then33: ; preds = %if.end30 %call34 = tail call ptr @__errno_location() #18 - %7 = load i32, ptr %call34, align 4 - call void @_ZN9grpc_core8StrErrorB5cxx11Ei(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp, i32 noundef %7) + %8 = load i32, ptr %call34, align 4 + call void @_ZN9grpc_core8StrErrorB5cxx11Ei(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp, i32 noundef %8) %call35 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #17 invoke void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str, i32 noundef 392, i32 noundef 2, ptr noundef nonnull @.str.22, ptr noundef %call35) to label %invoke.cont unwind label %lpad @@ -1315,7 +1308,7 @@ invoke.cont: ; preds = %if.then33 br label %return lpad: ; preds = %if.then33 - %8 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } cleanup br label %eh.resume @@ -1326,8 +1319,8 @@ if.end36: ; preds = %if.end30 if.then39: ; preds = %if.end36 %call41 = tail call ptr @__errno_location() #18 - %9 = load i32, ptr %call41, align 4 - call void @_ZN9grpc_core8StrErrorB5cxx11Ei(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp40, i32 noundef %9) + %10 = load i32, ptr %call41, align 4 + call void @_ZN9grpc_core8StrErrorB5cxx11Ei(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp40, i32 noundef %10) %call42 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp40) #17 invoke void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str, i32 noundef 397, i32 noundef 2, ptr noundef nonnull @.str.23, ptr noundef %call42) to label %invoke.cont44 unwind label %lpad43 @@ -1337,36 +1330,36 @@ invoke.cont44: ; preds = %if.then39 br label %return lpad43: ; preds = %if.then39 - %10 = landingpad { ptr, i32 } + %11 = landingpad { ptr, i32 } cleanup br label %eh.resume if.end45: ; preds = %if.end36 - %11 = load i32, ptr %newval, align 4 - %12 = load i32, ptr %timeout, align 4 - %cmp46.not = icmp eq i32 %11, %12 + %12 = load i32, ptr %newval, align 4 + %13 = load i32, ptr %timeout, align 4 + %cmp46.not = icmp eq i32 %12, %13 br i1 %cmp46.not, label %return, label %if.then47 if.then47: ; preds = %if.end45 - call void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str, i32 noundef 402, i32 noundef 1, ptr noundef nonnull @.str.24, i32 noundef %12, i32 noundef %11) + call void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str, i32 noundef 402, i32 noundef 1, ptr noundef nonnull @.str.24, i32 noundef %13, i32 noundef %12) br label %return if.else51: ; preds = %entry - %13 = load atomic i8, ptr getelementptr inbounds (i8, ptr @grpc_tcp_trace, i64 16) monotonic, align 8 - %tobool.i.i.i20 = trunc i8 %13 to i1 + %14 = load atomic i8, ptr getelementptr inbounds (i8, ptr @grpc_tcp_trace, i64 16) monotonic, align 8 + %tobool.i.i.i20 = trunc i8 %14 to i1 br i1 %tobool.i.i.i20, label %if.then53, label %return if.then53: ; preds = %if.else51 tail call void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str, i32 noundef 412, i32 noundef 1, ptr noundef nonnull @.str.25) br label %return -return: ; preds = %if.end24, %if.end45, %if.end13, %if.then53, %if.else51, %if.then47, %invoke.cont44, %invoke.cont +return: ; preds = %if.end24, %if.end45, %if.then, %if.then53, %if.else51, %if.then47, %invoke.cont44, %invoke.cont store i64 0, ptr %agg.result, align 8 ret void eh.resume: ; preds = %lpad43, %lpad %ref.tmp40.sink = phi ptr [ %ref.tmp40, %lpad43 ], [ %ref.tmp, %lpad ] - %.pn = phi { ptr, i32 } [ %10, %lpad43 ], [ %8, %lpad ] + %.pn = phi { ptr, i32 } [ %11, %lpad43 ], [ %9, %lpad ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp40.sink) #17 resume { ptr, i32 } %.pn } diff --git a/bench/grpc/optimized/tcp_socket_utils.cc.ll b/bench/grpc/optimized/tcp_socket_utils.cc.ll index ab28df6a14c..a345e33ee99 100644 --- a/bench/grpc/optimized/tcp_socket_utils.cc.ll +++ b/bench/grpc/optimized/tcp_socket_utils.cc.ll @@ -2004,35 +2004,28 @@ if.end: ; preds = %entry %3 = load i32, ptr @_ZN17grpc_event_engine12experimental12_GLOBAL__N_127kDefaultClientUserTimeoutMsE, align 4 %4 = load i32, ptr @_ZN17grpc_event_engine12experimental12_GLOBAL__N_127kDefaultServerUserTimeoutMsE, align 4 %cond9 = select i1 %is_client, i32 %3, i32 %4 - store i32 %cond9, ptr %timeout, align 4 %keep_alive_time_ms = getelementptr inbounds i8, ptr %options, i64 28 %5 = load i32, ptr %keep_alive_time_ms, align 4 %cmp10 = icmp sgt i32 %5, 0 %cmp13 = icmp ne i32 %5, 2147483647 - %frombool14 = zext i1 %cmp13 to i8 - %enable.0 = select i1 %cmp10, i8 %frombool14, i8 %cond.v %keep_alive_timeout_ms = getelementptr inbounds i8, ptr %options, i64 32 %6 = load i32, ptr %keep_alive_timeout_ms, align 8 %cmp16 = icmp sgt i32 %6, 0 - br i1 %cmp16, label %if.then17, label %if.end19 - -if.then17: ; preds = %if.end - store i32 %6, ptr %timeout, align 4 - br label %if.end19 - -if.end19: ; preds = %if.then17, %if.end - %tobool20 = trunc i8 %enable.0 to i1 + %spec.store.select = select i1 %cmp16, i32 %6, i32 %cond9 + store i32 %spec.store.select, ptr %timeout, align 4 + %7 = trunc i8 %cond.v to i1 + %tobool20 = select i1 %cmp10, i1 %cmp13, i1 %7 br i1 %tobool20, label %if.then21, label %if.end54 -if.then21: ; preds = %if.end19 +if.then21: ; preds = %if.end store i32 4, ptr %len, align 4 - %7 = load atomic i32, ptr @_ZN17grpc_event_engine12experimentalL34g_socket_supports_tcp_user_timeoutE.0 seq_cst, align 4 - %cmp23 = icmp eq i32 %7, 0 + %8 = load atomic i32, ptr @_ZN17grpc_event_engine12experimentalL34g_socket_supports_tcp_user_timeoutE.0 seq_cst, align 4 + %cmp23 = icmp eq i32 %8, 0 br i1 %cmp23, label %if.then24, label %if.end29 if.then24: ; preds = %if.then21 - %8 = load i32, ptr %this, align 4 - %call25 = call i32 @getsockopt(i32 noundef %8, i32 noundef 6, i32 noundef 18, ptr noundef nonnull %newval, ptr noundef nonnull %len) #19 + %9 = load i32, ptr %this, align 4 + %call25 = call i32 @getsockopt(i32 noundef %9, i32 noundef 6, i32 noundef 18, ptr noundef nonnull %newval, ptr noundef nonnull %len) #19 %cmp26.not = icmp eq i32 %call25, 0 br i1 %cmp26.not, label %if.else, label %if.then27 @@ -2050,20 +2043,20 @@ if.end29.sink.split: ; preds = %if.else, %if.then27 br label %if.end29 if.end29: ; preds = %if.end29.sink.split, %if.then21 - %9 = load atomic i32, ptr @_ZN17grpc_event_engine12experimentalL34g_socket_supports_tcp_user_timeoutE.0 seq_cst, align 4 - %cmp31 = icmp sgt i32 %9, 0 + %10 = load atomic i32, ptr @_ZN17grpc_event_engine12experimentalL34g_socket_supports_tcp_user_timeoutE.0 seq_cst, align 4 + %cmp31 = icmp sgt i32 %10, 0 br i1 %cmp31, label %if.then32, label %if.end54 if.then32: ; preds = %if.end29 - %10 = load i32, ptr %this, align 4 - %call34 = call i32 @setsockopt(i32 noundef %10, i32 noundef 6, i32 noundef 18, ptr noundef nonnull %timeout, i32 noundef 4) #19 + %11 = load i32, ptr %this, align 4 + %call34 = call i32 @setsockopt(i32 noundef %11, i32 noundef 6, i32 noundef 18, ptr noundef nonnull %timeout, i32 noundef 4) #19 %cmp35.not = icmp eq i32 %call34, 0 br i1 %cmp35.not, label %if.end39, label %if.then36 if.then36: ; preds = %if.then32 %call37 = tail call ptr @__errno_location() #21 - %11 = load i32, ptr %call37, align 4 - call void @_ZN9grpc_core8StrErrorB5cxx11Ei(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp, i32 noundef %11) + %12 = load i32, ptr %call37, align 4 + call void @_ZN9grpc_core8StrErrorB5cxx11Ei(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp, i32 noundef %12) %call38 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #19 invoke void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str.33, i32 noundef 638, i32 noundef 2, ptr noundef nonnull @.str.36, ptr noundef %call38) to label %invoke.cont unwind label %lpad @@ -2073,20 +2066,20 @@ invoke.cont: ; preds = %if.then36 br label %if.end54 lpad: ; preds = %if.then36 - %12 = landingpad { ptr, i32 } + %13 = landingpad { ptr, i32 } cleanup br label %eh.resume if.end39: ; preds = %if.then32 - %13 = load i32, ptr %this, align 4 - %call41 = call i32 @getsockopt(i32 noundef %13, i32 noundef 6, i32 noundef 18, ptr noundef nonnull %newval, ptr noundef nonnull %len) #19 + %14 = load i32, ptr %this, align 4 + %call41 = call i32 @getsockopt(i32 noundef %14, i32 noundef 6, i32 noundef 18, ptr noundef nonnull %newval, ptr noundef nonnull %len) #19 %cmp42.not = icmp eq i32 %call41, 0 br i1 %cmp42.not, label %if.end49, label %if.then43 if.then43: ; preds = %if.end39 %call45 = tail call ptr @__errno_location() #21 - %14 = load i32, ptr %call45, align 4 - call void @_ZN9grpc_core8StrErrorB5cxx11Ei(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp44, i32 noundef %14) + %15 = load i32, ptr %call45, align 4 + call void @_ZN9grpc_core8StrErrorB5cxx11Ei(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp44, i32 noundef %15) %call46 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp44) #19 invoke void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str.33, i32 noundef 643, i32 noundef 2, ptr noundef nonnull @.str.37, ptr noundef %call46) to label %invoke.cont48 unwind label %lpad47 @@ -2096,26 +2089,26 @@ invoke.cont48: ; preds = %if.then43 br label %if.end54 lpad47: ; preds = %if.then43 - %15 = landingpad { ptr, i32 } + %16 = landingpad { ptr, i32 } cleanup br label %eh.resume if.end49: ; preds = %if.end39 - %16 = load i32, ptr %newval, align 4 - %17 = load i32, ptr %timeout, align 4 - %cmp50.not = icmp eq i32 %16, %17 + %17 = load i32, ptr %newval, align 4 + %18 = load i32, ptr %timeout, align 4 + %cmp50.not = icmp eq i32 %17, %18 br i1 %cmp50.not, label %if.end54, label %if.then51 if.then51: ; preds = %if.end49 call void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str.33, i32 noundef 649, i32 noundef 2, ptr noundef nonnull @.str.38) br label %if.end54 -if.end54: ; preds = %if.end29, %if.end49, %entry, %if.then51, %invoke.cont48, %invoke.cont, %if.end19 +if.end54: ; preds = %if.end29, %if.end49, %entry, %if.then51, %invoke.cont48, %invoke.cont, %if.end ret void eh.resume: ; preds = %lpad47, %lpad %ref.tmp44.sink = phi ptr [ %ref.tmp44, %lpad47 ], [ %ref.tmp, %lpad ] - %.pn = phi { ptr, i32 } [ %15, %lpad47 ], [ %12, %lpad ] + %.pn = phi { ptr, i32 } [ %16, %lpad47 ], [ %13, %lpad ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp44.sink) #19 resume { ptr, i32 } %.pn } diff --git a/bench/hdf5/optimized/H5Shyper.c.ll b/bench/hdf5/optimized/H5Shyper.c.ll index 039d6335ab0..7825ea68b3f 100644 --- a/bench/hdf5/optimized/H5Shyper.c.ll +++ b/bench/hdf5/optimized/H5Shyper.c.ll @@ -14242,8 +14242,8 @@ H5S__hyper_bounds.exit.thread: ; preds = %49, %.preheader.i, %66 = icmp ugt i64 %65, 4294967295 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond134.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - %or.cond166 = select i1 %66, i1 true, i1 %exitcond134.not - br i1 %or.cond166, label %.loopexit, label %.lr.ph + %or.cond169 = select i1 %66, i1 true, i1 %exitcond134.not + br i1 %or.cond169, label %.loopexit, label %.lr.ph .loopexit: ; preds = %.lr.ph, %.preheader110, %H5S__hyper_bounds.exit.thread %.082 = phi i1 [ false, %H5S__hyper_bounds.exit.thread ], [ false, %.preheader110 ], [ %66, %.lr.ph ] @@ -14416,7 +14416,7 @@ H5S__hyper_is_regular.exit: ; preds = %73, %H5S__hyper_reb br label %.lr.ph116 .preheader: ; preds = %151 - br i1 %.not131, label %.thread161, label %.lr.ph120 + br i1 %.not131, label %.thread165, label %.lr.ph120 .lr.ph120: ; preds = %.preheader %154 = load ptr, ptr %9, align 8 @@ -14447,40 +14447,44 @@ H5S__hyper_is_regular.exit: ; preds = %73, %H5S__hyper_reb ._crit_edge121: ; preds = %157 %164 = icmp ugt i64 %.280.fr, 4294967294 %165 = icmp ugt i64 %.280.fr, 65534 - %. = select i1 %165, i8 4, i8 2 - %166 = select i1 %164, i8 8, i8 %. - %167 = load ptr, ptr %9, align 8 - %168 = getelementptr inbounds i8, ptr %167, i64 1032 - %169 = getelementptr i8, ptr %167, i64 1040 + %166 = load ptr, ptr %9, align 8 + %167 = getelementptr inbounds i8, ptr %166, i64 1032 + %168 = getelementptr i8, ptr %166, i64 1040 %wide.trip.count148 = zext i32 %153 to i64 - br label %170 - -170: ; preds = %._crit_edge121, %170 - %indvars.iv145 = phi i64 [ 0, %._crit_edge121 ], [ %indvars.iv.next146, %170 ] - %.076125 = phi i64 [ 0, %._crit_edge121 ], [ %.2.fr, %170 ] - %171 = getelementptr inbounds [32 x %struct.H5S_hyper_dim_t], ptr %168, i64 0, i64 %indvars.iv145 - %172 = load i64, ptr %171, align 8 - %spec.select = call i64 @llvm.umax.i64(i64 %172, i64 %.076125) + br label %169 + +169: ; preds = %._crit_edge121, %169 + %indvars.iv145 = phi i64 [ 0, %._crit_edge121 ], [ %indvars.iv.next146, %169 ] + %.076125 = phi i64 [ 0, %._crit_edge121 ], [ %.2.fr, %169 ] + %170 = getelementptr inbounds [32 x %struct.H5S_hyper_dim_t], ptr %167, i64 0, i64 %indvars.iv145 + %171 = load i64, ptr %170, align 8 + %spec.select = call i64 @llvm.umax.i64(i64 %171, i64 %.076125) %.idx = shl nuw nsw i64 %indvars.iv145, 5 - %173 = getelementptr i8, ptr %169, i64 %.idx - %174 = load i64, ptr %173, align 8 - %.2 = call i64 @llvm.umax.i64(i64 %174, i64 %spec.select) + %172 = getelementptr i8, ptr %168, i64 %.idx + %173 = load i64, ptr %172, align 8 + %.2 = call i64 @llvm.umax.i64(i64 %173, i64 %spec.select) %.2.fr = freeze i64 %.2 %indvars.iv.next146 = add nuw nsw i64 %indvars.iv145, 1 %exitcond149.not = icmp eq i64 %indvars.iv.next146, %wide.trip.count148 - br i1 %exitcond149.not, label %._crit_edge128, label %170 - -._crit_edge128: ; preds = %170 - %175 = icmp ugt i64 %.2.fr, 4294967295 - %176 = icmp ugt i64 %.2.fr, 65535 - %.164 = select i1 %176, i8 4, i8 2 - %spec.select165 = select i1 %175, i8 8, i8 %.164 - br label %.thread161 - -.thread161: ; preds = %._crit_edge128, %.preheader - %177 = phi i8 [ 2, %.preheader ], [ %166, %._crit_edge128 ] - %178 = phi i8 [ 2, %.preheader ], [ %spec.select165, %._crit_edge128 ] - %179 = call i8 @llvm.umax.i8(i8 %177, i8 %178) + br i1 %exitcond149.not, label %._crit_edge128, label %169 + +._crit_edge128: ; preds = %169 + %174 = icmp ugt i64 %.2.fr, 4294967295 + br i1 %165, label %175, label %177 + +175: ; preds = %._crit_edge128 + %176 = or i1 %164, %174 + %spec.select170 = select i1 %176, i8 8, i8 4 + br label %.thread165 + +177: ; preds = %._crit_edge128 + %178 = icmp ugt i64 %.2.fr, 65535 + %. = select i1 %178, i8 4, i8 2 + %.. = select i1 %174, i8 8, i8 %. + br label %.thread165 + +.thread165: ; preds = %175, %177, %.preheader + %179 = phi i8 [ %.., %177 ], [ 2, %.preheader ], [ %spec.select170, %175 ] store i8 %179, ptr %3, align 1 br label %188 @@ -14509,8 +14513,8 @@ H5S__hyper_is_regular.exit: ; preds = %73, %H5S__hyper_reb %187 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5S__hyper_get_version_enc_size, i32 noundef 3696, i64 noundef %185, i64 noundef %186, ptr noundef nonnull @.str.65) #15 br label %188 -188: ; preds = %149, %150, %._crit_edge, %.thread161, %184, %145, %142, %138, %69, %54 - %.083 = phi i32 [ -1, %54 ], [ -1, %69 ], [ -1, %138 ], [ -1, %142 ], [ -1, %145 ], [ -1, %184 ], [ 0, %.thread161 ], [ 0, %._crit_edge ], [ 0, %150 ], [ 0, %149 ] +188: ; preds = %149, %150, %._crit_edge, %.thread165, %184, %145, %142, %138, %69, %54 + %.083 = phi i32 [ -1, %54 ], [ -1, %69 ], [ -1, %138 ], [ -1, %142 ], [ -1, %145 ], [ -1, %184 ], [ 0, %.thread165 ], [ 0, %._crit_edge ], [ 0, %150 ], [ 0, %149 ] ret i32 %.083 } @@ -20188,9 +20192,6 @@ declare i32 @llvm.smax.i32(i32, i32) #13 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umax.i32(i32, i32) #13 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i8 @llvm.umax.i8(i8, i8) #13 - ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #14 diff --git a/bench/hermes/optimized/DateUtil.cpp.ll b/bench/hermes/optimized/DateUtil.cpp.ll index 07222d17482..2c12e9d666f 100644 --- a/bench/hermes/optimized/DateUtil.cpp.ll +++ b/bench/hermes/optimized/DateUtil.cpp.ll @@ -3155,11 +3155,11 @@ _ZNK6hermes2vm10StringView5beginEv.exit: ; preds = %_ZNK6hermes2vm10Str %retval.0.i.i.i108.i = select i1 %tobool.not.i5.i.i, i64 %sub.ptr.div.i.i.i.i, i64 %sub.ptr.sub.i.i.i.i %sub.ptr.lhs.cast.i3.i.i.i = ptrtoint ptr %retval.sroa.0.0.i10.i.i to i64 %sub.ptr.sub.i5.i.i.i = sub i64 %sub.ptr.lhs.cast.i3.i.i.i, %sub.ptr.lhs.cast.i.i.i.i - %166 = shl i64 %sub.ptr.sub.i5.i.i.i, 32 %retval.sroa.2.0.copyload.i.i.i.i = load i64, ptr %119, align 8 %add.i.i.i.i = add i64 %retval.0.i.i.i108.i, %retval.sroa.2.0.copyload.i.i.i.i %bf.value.i.i.i.i = and i64 %add.i.i.i.i, 1073741823 %bf.clear3.i.i.i.i = and i64 %retval.sroa.2.0.copyload.i.i.i.i, 3221225472 + %166 = shl i64 %sub.ptr.sub.i5.i.i.i, 32 %retval.sroa.2.12.insert.ext.i.i.i.i = select i1 %tobool.not.i5.i.i, i64 12884901888, i64 %166 %bf.set.i.i.i.i = or disjoint i64 %bf.clear3.i.i.i.i, %retval.sroa.2.12.insert.ext.i.i.i.i %retval.sroa.2.12.insert.insert.i.i.i.i = or disjoint i64 %bf.set.i.i.i.i, %bf.value.i.i.i.i @@ -5035,13 +5035,13 @@ if.end: ; preds = %if.then.i, %_ZNK6he %retval.0.i.i = select i1 %tobool.not.i5, i64 %sub.ptr.div.i.i, i64 %sub.ptr.sub.i.i %sub.ptr.lhs.cast.i3.i = ptrtoint ptr %retval.sroa.0.0.i10 to i64 %sub.ptr.sub.i5.i = sub i64 %sub.ptr.lhs.cast.i3.i, %sub.ptr.lhs.cast.i.i - %11 = shl i64 %sub.ptr.sub.i5.i, 32 %retval.sroa.0.0.copyload.i.i = load ptr, ptr %7, align 8 %retval.sroa.2.0.this.addr.0.this1.sroa_idx.i.i = getelementptr inbounds i8, ptr %7, i64 8 %retval.sroa.2.0.copyload.i.i = load i64, ptr %retval.sroa.2.0.this.addr.0.this1.sroa_idx.i.i, align 8 %add.i.i = add i64 %retval.0.i.i, %retval.sroa.2.0.copyload.i.i %bf.value.i.i = and i64 %add.i.i, 1073741823 %bf.clear3.i.i = and i64 %retval.sroa.2.0.copyload.i.i, 3221225472 + %11 = shl i64 %sub.ptr.sub.i5.i, 32 %retval.sroa.2.12.insert.ext.i.i = select i1 %tobool.not.i5, i64 12884901888, i64 %11 %bf.set.i.i = or disjoint i64 %retval.sroa.2.12.insert.ext.i.i, %bf.clear3.i.i %retval.sroa.2.12.insert.insert.i.i = or disjoint i64 %bf.set.i.i, %bf.value.i.i @@ -5294,13 +5294,13 @@ if.end: ; preds = %if.then.i, %_ZNK6he %retval.0.i.i = select i1 %tobool.not.i4, i64 %sub.ptr.div.i.i, i64 %sub.ptr.sub.i.i %sub.ptr.lhs.cast.i3.i = ptrtoint ptr %retval.sroa.0.0.i9 to i64 %sub.ptr.sub.i5.i = sub i64 %sub.ptr.lhs.cast.i3.i, %sub.ptr.lhs.cast.i.i - %11 = shl i64 %sub.ptr.sub.i5.i, 32 %retval.sroa.0.0.copyload.i.i = load ptr, ptr %7, align 8 %retval.sroa.2.0.this.addr.0.this1.sroa_idx.i.i = getelementptr inbounds i8, ptr %7, i64 8 %retval.sroa.2.0.copyload.i.i = load i64, ptr %retval.sroa.2.0.this.addr.0.this1.sroa_idx.i.i, align 8 %add.i.i = add i64 %retval.0.i.i, %retval.sroa.2.0.copyload.i.i %bf.value.i.i = and i64 %add.i.i, 1073741823 %bf.clear3.i.i = and i64 %retval.sroa.2.0.copyload.i.i, 3221225472 + %11 = shl i64 %sub.ptr.sub.i5.i, 32 %retval.sroa.2.12.insert.ext.i.i = select i1 %tobool.not.i4, i64 12884901888, i64 %11 %bf.set.i.i = or disjoint i64 %retval.sroa.2.12.insert.ext.i.i, %bf.clear3.i.i %retval.sroa.2.12.insert.insert.i.i = or disjoint i64 %bf.set.i.i, %bf.value.i.i diff --git a/bench/hyperscan/optimized/ng_violet.cpp.ll b/bench/hyperscan/optimized/ng_violet.cpp.ll index 11c9b3f2128..356d9685b14 100644 --- a/bench/hyperscan/optimized/ng_violet.cpp.ll +++ b/bench/hyperscan/optimized/ng_violet.cpp.ll @@ -25389,12 +25389,12 @@ if.then.i.i1079.cont: ; preds = %if.then.i.i1079.inv if.end.i.i: ; preds = %if.then.i.i846 %cmp.i.i.i1066 = icmp ult i64 %189, 2305843009213693952 + %add.i.i.i10681982 = add i64 %189, 1 br i1 %cmp.i.i.i1066, label %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i.thread, label %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i _ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i.thread: ; preds = %if.end.i.i %mul.i.i.i = shl nuw i64 %189, 3 %div.i.i.i = udiv i64 %mul.i.i.i, 5 - %add.i.i.i10681982 = add nuw nsw i64 %189, 1 %200 = call noundef i64 @llvm.umax.i64(i64 %add.i.i.i10681982, i64 %div.i.i.i) br label %if.end.i14.i @@ -25402,10 +25402,9 @@ _ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEE %cmp3.i.i.i = icmp ugt i64 %189, -6917529027641081857 %mul6.i.i.i = shl i64 %189, 3 %201 = call i64 @llvm.umin.i64(i64 %mul6.i.i.i, i64 4611686018427387903) - %add.i.i.i1068 = add i64 %189, 1 %202 = select i1 %cmp3.i.i.i, i64 4611686018427387903, i64 %201 - %203 = call noundef i64 @llvm.umax.i64(i64 %add.i.i.i1068, i64 %202) - %cmp3.i.i = icmp ugt i64 %add.i.i.i1068, 4611686018427387903 + %203 = call noundef i64 @llvm.umax.i64(i64 %add.i.i.i10681982, i64 %202) + %cmp3.i.i = icmp ugt i64 %add.i.i.i10681982, 4611686018427387903 br i1 %cmp3.i.i, label %if.then.i.i1079.invoke, label %if.end.i14.i if.end.i14.i: ; preds = %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i.thread, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i @@ -26352,12 +26351,12 @@ if.then.i.i1141.cont: ; preds = %if.then.i.i1141.inv if.end.i.i1093: ; preds = %if.then.i.i945 %cmp.i.i.i1094 = icmp ult i64 %290, 2305843009213693952 + %add.i.i.i11011986 = add i64 %290, 1 br i1 %cmp.i.i.i1094, label %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i1099.thread, label %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i1099 _ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i1099.thread: ; preds = %if.end.i.i1093 %mul.i.i.i1139 = shl nuw i64 %290, 3 %div.i.i.i1140 = udiv i64 %mul.i.i.i1139, 5 - %add.i.i.i11011986 = add nuw nsw i64 %290, 1 %301 = call noundef i64 @llvm.umax.i64(i64 %add.i.i.i11011986, i64 %div.i.i.i1140) br label %if.end.i14.i1103 @@ -26365,10 +26364,9 @@ _ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEE %cmp3.i.i.i1096 = icmp ugt i64 %290, -6917529027641081857 %mul6.i.i.i1097 = shl i64 %290, 3 %302 = call i64 @llvm.umin.i64(i64 %mul6.i.i.i1097, i64 4611686018427387903) - %add.i.i.i1101 = add i64 %290, 1 %303 = select i1 %cmp3.i.i.i1096, i64 4611686018427387903, i64 %302 - %304 = call noundef i64 @llvm.umax.i64(i64 %add.i.i.i1101, i64 %303) - %cmp3.i.i1102 = icmp ugt i64 %add.i.i.i1101, 4611686018427387903 + %304 = call noundef i64 @llvm.umax.i64(i64 %add.i.i.i11011986, i64 %303) + %cmp3.i.i1102 = icmp ugt i64 %add.i.i.i11011986, 4611686018427387903 br i1 %cmp3.i.i1102, label %if.then.i.i1141.invoke, label %if.end.i14.i1103 if.end.i14.i1103: ; preds = %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i1099.thread, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i1099 diff --git a/bench/hyperscan/optimized/rose_build_add.cpp.ll b/bench/hyperscan/optimized/rose_build_add.cpp.ll index 02f24389c84..ee0a8da31f9 100644 --- a/bench/hyperscan/optimized/rose_build_add.cpp.ll +++ b/bench/hyperscan/optimized/rose_build_add.cpp.ll @@ -9144,12 +9144,12 @@ if.then.i.i.i.i510.i: ; preds = %if.then.thread.i496 if.end.i.i735: ; preds = %if.then.i.i.i.i510.i %cmp.i.i.i736 = icmp ult i64 %617, 2305843009213693952 + %add.i.i.i7421320 = add i64 %617, 1 br i1 %cmp.i.i.i736, label %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i.thread, label %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i _ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i.thread: ; preds = %if.end.i.i735 %mul.i.i.i772 = shl nuw i64 %617, 3 %div.i.i.i773 = udiv i64 %mul.i.i.i772, 5 - %add.i.i.i7421320 = add nuw nsw i64 %617, 1 %626 = call noundef i64 @llvm.umax.i64(i64 %add.i.i.i7421320, i64 %div.i.i.i773) br label %if.end.i4.i744 @@ -9157,10 +9157,9 @@ _ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEE %cmp3.i.i.i738 = icmp ugt i64 %617, -6917529027641081857 %mul6.i.i.i739 = shl i64 %617, 3 %627 = call i64 @llvm.umin.i64(i64 %mul6.i.i.i739, i64 4611686018427387903) - %add.i.i.i742 = add i64 %617, 1 %628 = select i1 %cmp3.i.i.i738, i64 4611686018427387903, i64 %627 - %629 = call noundef i64 @llvm.umax.i64(i64 %add.i.i.i742, i64 %628) - %cmp3.i.i743 = icmp ugt i64 %add.i.i.i742, 4611686018427387903 + %629 = call noundef i64 @llvm.umax.i64(i64 %add.i.i.i7421320, i64 %628) + %cmp3.i.i743 = icmp ugt i64 %add.i.i.i7421320, 4611686018427387903 br i1 %cmp3.i.i743, label %if.then.i.i.i.i700.invoke, label %if.end.i4.i744 if.end.i4.i744: ; preds = %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i.thread, %_ZNK5boost9container19vector_alloc_holderINS0_22small_vector_allocatorIjSaIvEvEEmNS_11move_detail17integral_constantIjLj1EEEE13next_capacityINS0_16growth_factor_60EEEmm.exit.i diff --git a/bench/icu/optimized/collationdatabuilder.ll b/bench/icu/optimized/collationdatabuilder.ll index 7fb9b640c62..1f2ac77ef71 100644 --- a/bench/icu/optimized/collationdatabuilder.ll +++ b/bench/icu/optimized/collationdatabuilder.ll @@ -2964,33 +2964,32 @@ invoke.cont187: ; preds = %if.end177, %if.else %50 = load i16, ptr %fUnion.i114, align 8 %cmp.i.i172 = icmp slt i16 %50, 0 %51 = ashr i16 %50, 5 - %shr.i.i173 = zext i16 %51 to i32 %fLength.i174 = getelementptr inbounds i8, ptr %prefix, i64 12 %52 = load i32, ptr %fLength.i174, align 4 - %cond.i175 = select i1 %cmp.i.i172, i32 %52, i32 %shr.i.i173 - %conv189 = trunc i32 %cond.i175 to i16 + %53 = trunc i32 %52 to i16 + %conv189 = select i1 %cmp.i.i172, i16 %53, i16 %51 invoke void @_ZN6icu_7513UnicodeStringC1EDs(ptr noundef nonnull align 8 dereferenceable(64) %context, i16 noundef zeroext %conv189) to label %invoke.cont190 unwind label %lpad186 invoke.cont190: ; preds = %invoke.cont187 - %53 = load i16, ptr %fUnion.i114, align 8 - %cmp.i.i.i = icmp slt i16 %53, 0 - %54 = ashr i16 %53, 5 - %shr.i.i.i = sext i16 %54 to i32 - %55 = load i32, ptr %fLength.i174, align 4 - %cond.i.i = select i1 %cmp.i.i.i, i32 %55, i32 %shr.i.i.i + %54 = load i16, ptr %fUnion.i114, align 8 + %cmp.i.i.i = icmp slt i16 %54, 0 + %55 = ashr i16 %54, 5 + %shr.i.i.i = sext i16 %55 to i32 + %56 = load i32, ptr %fLength.i174, align 4 + %cond.i.i = select i1 %cmp.i.i.i, i32 %56, i32 %shr.i.i.i %call2.i177 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7513UnicodeString8doAppendERKS0_ii(ptr noundef nonnull align 8 dereferenceable(64) %context, ptr noundef nonnull align 8 dereferenceable(64) %prefix, i32 noundef 0, i32 noundef %cond.i.i) to label %invoke.cont192 unwind label %lpad191.loopexit.split-lp invoke.cont192: ; preds = %invoke.cont190 %fUnion.i.i.i178 = getelementptr inbounds i8, ptr %suffix, i64 8 - %56 = load i16, ptr %fUnion.i.i.i178, align 8 - %cmp.i.i.i179 = icmp slt i16 %56, 0 - %57 = ashr i16 %56, 5 - %shr.i.i.i180 = sext i16 %57 to i32 + %57 = load i16, ptr %fUnion.i.i.i178, align 8 + %cmp.i.i.i179 = icmp slt i16 %57, 0 + %58 = ashr i16 %57, 5 + %shr.i.i.i180 = sext i16 %58 to i32 %fLength.i.i181 = getelementptr inbounds i8, ptr %suffix, i64 12 - %58 = load i32, ptr %fLength.i.i181, align 4 - %cond.i.i182 = select i1 %cmp.i.i.i179, i32 %58, i32 %shr.i.i.i180 + %59 = load i32, ptr %fLength.i.i181, align 4 + %cond.i.i182 = select i1 %cmp.i.i.i179, i32 %59, i32 %shr.i.i.i180 %call2.i183 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7513UnicodeString8doAppendERKS0_ii(ptr noundef nonnull align 8 dereferenceable(64) %call2.i177, ptr noundef nonnull align 8 dereferenceable(64) %suffix, i32 noundef 0, i32 noundef %cond.i.i182) to label %invoke.cont194 unwind label %lpad191.loopexit.split-lp @@ -3008,8 +3007,8 @@ for.cond198.preheader: ; preds = %invoke.cont194 for.cond198: ; preds = %for.cond198.preheader, %if.else233 %cond166.1 = phi ptr [ %call.i.i188189, %if.else233 ], [ %cond166.0, %for.cond198.preheader ] %next199 = getelementptr inbounds i8, ptr %cond166.1, i64 88 - %59 = load i32, ptr %next199, align 8 - %cmp200 = icmp slt i32 %59, 0 + %60 = load i32, ptr %next199, align 8 + %cmp200 = icmp slt i32 %60, 0 br i1 %cmp200, label %if.then201, label %if.end211 if.then201: ; preds = %for.cond198 @@ -3018,12 +3017,12 @@ if.then201: ; preds = %for.cond198 to label %invoke.cont203 unwind label %lpad191.loopexit.split-lp invoke.cont203: ; preds = %if.then201 - %60 = load i32, ptr %errorCode, align 4 - %cmp.i185 = icmp slt i32 %60, 1 + %61 = load i32, ptr %errorCode, align 4 + %cmp.i185 = icmp slt i32 %61, 1 br i1 %cmp.i185, label %if.end209, label %return.critedge lpad186: ; preds = %invoke.cont187 - %61 = landingpad { ptr, i32 } + %62 = landingpad { ptr, i32 } cleanup br label %eh.resume @@ -3047,46 +3046,46 @@ if.end209: ; preds = %invoke.cont203 br label %cleanup241 if.end211: ; preds = %for.cond198 - %call.i.i188189 = invoke noundef ptr @_ZNK6icu_757UVector9elementAtEi(ptr noundef nonnull align 8 dereferenceable(40) %conditionalCE32s.i187, i32 noundef %59) + %call.i.i188189 = invoke noundef ptr @_ZNK6icu_757UVector9elementAtEi(ptr noundef nonnull align 8 dereferenceable(40) %conditionalCE32s.i187, i32 noundef %60) to label %invoke.cont212 unwind label %lpad191.loopexit invoke.cont212: ; preds = %if.end211 - %62 = load i16, ptr %fUnion.i.i.i190, align 8 + %63 = load i16, ptr %fUnion.i.i.i190, align 8 %fUnion.i.i2.i = getelementptr inbounds i8, ptr %call.i.i188189, i64 16 - %63 = load i16, ptr %fUnion.i.i2.i, align 8 - %conv2.i10.i.i = and i16 %63, 1 + %64 = load i16, ptr %fUnion.i.i2.i, align 8 + %conv2.i10.i.i = and i16 %64, 1 %tobool.not.i.i191 = icmp eq i16 %conv2.i10.i.i, 0 br i1 %tobool.not.i.i191, label %if.else.i.i195, label %invoke.cont216.thread invoke.cont216.thread: ; preds = %invoke.cont212 - %64 = trunc i16 %62 to i8 - %65 = and i8 %64, 1 - %conv.i.i193 = xor i8 %65, 1 + %65 = trunc i16 %63 to i8 + %66 = and i8 %65, 1 + %conv.i.i193 = xor i8 %66, 1 br label %if.else233 if.else.i.i195: ; preds = %invoke.cont212 - %cmp.i.i3.i = icmp slt i16 %63, 0 + %cmp.i.i3.i = icmp slt i16 %64, 0 %fLength.i5.i = getelementptr inbounds i8, ptr %call.i.i188189, i64 20 - %66 = load i32, ptr %fLength.i5.i, align 4 - %67 = ashr i16 %63, 5 - %shr.i.i4.i = sext i16 %67 to i32 - %cond.i6.i = select i1 %cmp.i.i3.i, i32 %66, i32 %shr.i.i4.i - %cmp.i.i.i196 = icmp slt i16 %62, 0 - %68 = load i32, ptr %fLength.i.i197, align 4 - %69 = ashr i16 %62, 5 - %shr.i.i.i198 = sext i16 %69 to i32 - %cond.i.i199 = select i1 %cmp.i.i.i196, i32 %68, i32 %shr.i.i.i198 + %67 = load i32, ptr %fLength.i5.i, align 4 + %68 = ashr i16 %64, 5 + %shr.i.i4.i = sext i16 %68 to i32 + %cond.i6.i = select i1 %cmp.i.i3.i, i32 %67, i32 %shr.i.i4.i + %cmp.i.i.i196 = icmp slt i16 %63, 0 + %69 = load i32, ptr %fLength.i.i197, align 4 + %70 = ashr i16 %63, 5 + %shr.i.i.i198 = sext i16 %70 to i32 + %cond.i.i199 = select i1 %cmp.i.i.i196, i32 %69, i32 %shr.i.i.i198 %spec.select.i.i = call i32 @llvm.smin.i32(i32 %cond.i6.i, i32 0) %cmp5.i.i.i = icmp slt i32 %cond.i6.i, 0 %sub.i.i.i = sub nsw i32 %cond.i6.i, %spec.select.i.i %spec.select9.i.i = call i32 @llvm.smin.i32(i32 %cond.i6.i, i32 %sub.i.i.i) %srcLength.addr.0.i.i = select i1 %cmp5.i.i.i, i32 0, i32 %spec.select9.i.i - %70 = and i16 %63, 2 - %tobool.not.i.i.i200 = icmp eq i16 %70, 0 + %71 = and i16 %64, 2 + %tobool.not.i.i.i200 = icmp eq i16 %71, 0 %fBuffer.i.i.i201 = getelementptr inbounds i8, ptr %call.i.i188189, i64 18 %fArray.i.i.i202 = getelementptr inbounds i8, ptr %call.i.i188189, i64 32 - %71 = load ptr, ptr %fArray.i.i.i202, align 8 - %cond.i.i.i203 = select i1 %tobool.not.i.i.i200, ptr %71, ptr %fBuffer.i.i.i201 + %72 = load ptr, ptr %fArray.i.i.i202, align 8 + %cond.i.i.i203 = select i1 %tobool.not.i.i.i200, ptr %72, ptr %fBuffer.i.i.i201 %call5.i.i204 = invoke noundef signext i8 @_ZNK6icu_7513UnicodeString9doCompareEiiPKDsii(ptr noundef nonnull align 8 dereferenceable(64) %context, i32 noundef 0, i32 noundef %cond.i.i199, ptr noundef %cond.i.i.i203, i32 noundef %spec.select.i.i, i32 noundef %srcLength.addr.0.i.i) to label %invoke.cont216 unwind label %lpad191.loopexit @@ -3100,8 +3099,8 @@ if.then220: ; preds = %invoke.cont216 to label %invoke.cont222 unwind label %lpad191.loopexit.split-lp invoke.cont222: ; preds = %if.then220 - %72 = load i32, ptr %errorCode, align 4 - %cmp.i205 = icmp slt i32 %72, 1 + %73 = load i32, ptr %errorCode, align 4 + %cmp.i205 = icmp slt i32 %73, 1 br i1 %cmp.i205, label %if.end228, label %return.critedge if.end228: ; preds = %invoke.cont222 @@ -3111,7 +3110,7 @@ if.end228: ; preds = %invoke.cont222 invoke.cont230: ; preds = %if.end228 %next232 = getelementptr inbounds i8, ptr %call.i.i208209, i64 88 - store i32 %59, ptr %next232, align 8 + store i32 %60, ptr %next232, align 8 br label %cleanup241 if.else233: ; preds = %invoke.cont216.thread, %invoke.cont216 @@ -3144,7 +3143,7 @@ return: ; preds = %return.critedge, %c eh.resume: ; preds = %lpad186, %lpad191, %lpad, %lpad63, %lpad170 %suffix.sink = phi ptr [ %ref.tmp, %lpad170 ], [ %sInNfd, %lpad63 ], [ %sInNfd, %lpad ], [ %suffix, %lpad191 ], [ %suffix, %lpad186 ] - %.pn107.pn = phi { ptr, i32 } [ %48, %lpad170 ], [ %26, %lpad63 ], [ %23, %lpad ], [ %lpad.phi, %lpad191 ], [ %61, %lpad186 ] + %.pn107.pn = phi { ptr, i32 } [ %48, %lpad170 ], [ %26, %lpad63 ], [ %23, %lpad ], [ %lpad.phi, %lpad191 ], [ %62, %lpad186 ] call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %suffix.sink) #18 resume { ptr, i32 } %.pn107.pn } @@ -3413,10 +3412,9 @@ invoke.cont62: ; preds = %invoke.cont58 %19 = load i16, ptr %fUnion.i.i.i, align 8 %cmp.i.i = icmp slt i16 %19, 0 %20 = ashr i16 %19, 5 - %shr.i.i = zext i16 %20 to i32 %21 = load i32, ptr %fLength.i.i, align 4 - %cond.i = select i1 %cmp.i.i, i32 %21, i32 %shr.i.i - %conv = trunc i32 %cond.i to i16 + %22 = trunc i32 %21 to i16 + %conv = select i1 %cmp.i.i, i16 %22, i16 %20 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %srcChar.addr.i) store i16 %conv, ptr %srcChar.addr.i, align 2 %call.i72 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7513UnicodeString9doReplaceEiiPKDsii(ptr noundef nonnull align 8 dereferenceable(64) %context, i32 noundef 0, i32 noundef 0, ptr noundef nonnull %srcChar.addr.i, i32 noundef 0, i32 noundef 1) @@ -3424,20 +3422,20 @@ invoke.cont62: ; preds = %invoke.cont58 invoke.cont68: ; preds = %invoke.cont62 call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %srcChar.addr.i) - %22 = load i32, ptr %value_.i, align 4 - %23 = and i32 %22, 207 - %narrow.i.i73.not = icmp eq i32 %23, 201 + %23 = load i32, ptr %value_.i, align 4 + %24 = and i32 %23, 207 + %narrow.i.i73.not = icmp eq i32 %24, 201 br i1 %narrow.i.i73.not, label %if.then71, label %if.else74 if.then71: ; preds = %invoke.cont68 - %call73 = invoke noundef i32 @_ZN6icu_7520CollationDataBuilder28copyContractionsFromBaseCE32ERNS_13UnicodeStringEijPNS_15ConditionalCE32ER10UErrorCode(ptr noundef nonnull align 8 dereferenceable(640) %this, ptr noundef nonnull align 8 dereferenceable(64) %context, i32 noundef %c, i32 noundef %22, ptr noundef %cond.0, ptr noundef nonnull align 4 dereferenceable(4) %errorCode) + %call73 = invoke noundef i32 @_ZN6icu_7520CollationDataBuilder28copyContractionsFromBaseCE32ERNS_13UnicodeStringEijPNS_15ConditionalCE32ER10UErrorCode(ptr noundef nonnull align 8 dereferenceable(640) %this, ptr noundef nonnull align 8 dereferenceable(64) %context, i32 noundef %c, i32 noundef %23, ptr noundef %cond.0, ptr noundef nonnull align 4 dereferenceable(4) %errorCode) to label %if.end80 unwind label %lpad52.loopexit lpad50: ; preds = %invoke.cont46 - %24 = landingpad { ptr, i32 } + %25 = landingpad { ptr, i32 } cleanup - %25 = load ptr, ptr %agg.tmp, align 8 - call void asm sideeffect "", "rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr %25) #18, !srcloc !17 + %26 = load ptr, ptr %agg.tmp, align 8 + call void asm sideeffect "", "rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr %26) #18, !srcloc !17 br label %ehcleanup lpad52.loopexit: ; preds = %while.cond, %while.body, %if.then71, %if.else74, %invoke.cont75, %invoke.cont58, %invoke.cont62, %if.end85 @@ -3456,7 +3454,7 @@ lpad52: ; preds = %lpad52.loopexit.spl br label %ehcleanup if.else74: ; preds = %invoke.cont68 - %call76 = invoke noundef i32 @_ZN6icu_7520CollationDataBuilder16copyFromBaseCE32EijaR10UErrorCode(ptr noundef nonnull align 8 dereferenceable(640) %this, i32 noundef %c, i32 noundef %22, i8 noundef signext 1, ptr noundef nonnull align 4 dereferenceable(4) %errorCode) + %call76 = invoke noundef i32 @_ZN6icu_7520CollationDataBuilder16copyFromBaseCE32EijaR10UErrorCode(ptr noundef nonnull align 8 dereferenceable(640) %this, i32 noundef %c, i32 noundef %23, i8 noundef signext 1, ptr noundef nonnull align 4 dereferenceable(4) %errorCode) to label %invoke.cont75 unwind label %lpad52.loopexit invoke.cont75: ; preds = %if.else74 @@ -3470,8 +3468,8 @@ invoke.cont77: ; preds = %invoke.cont75 if.end80: ; preds = %if.then71, %invoke.cont77 %index.1 = phi i32 [ %call78, %invoke.cont77 ], [ %call73, %if.then71 ] - %26 = load i32, ptr %errorCode, align 4 - %cmp.i75 = icmp slt i32 %26, 1 + %27 = load i32, ptr %errorCode, align 4 + %cmp.i75 = icmp slt i32 %27, 1 br i1 %cmp.i75, label %if.end85, label %cleanup if.end85: ; preds = %if.end80 @@ -3479,26 +3477,26 @@ if.end85: ; preds = %if.end80 to label %while.cond unwind label %lpad52.loopexit while.end: ; preds = %invoke.cont53 - %27 = load i32, ptr %next.i, align 8 - %shl.i.i = shl i32 %27, 13 + %28 = load i32, ptr %next.i, align 8 + %shl.i.i = shl i32 %28, 13 %or1.i.i = or disjoint i32 %shl.i.i, 199 %contextChars = getelementptr inbounds i8, ptr %this, i64 144 %call92 = invoke noundef nonnull align 8 dereferenceable(200) ptr @_ZN6icu_7510UnicodeSet3addEi(ptr noundef nonnull align 8 dereferenceable(200) %contextChars, i32 noundef %c) to label %cleanup unwind label %lpad52.loopexit.split-lp cleanup: ; preds = %if.end80, %while.end - %28 = phi i32 [ %or1.i.i, %while.end ], [ 0, %if.end80 ] + %29 = phi i32 [ %or1.i.i, %while.end ], [ 0, %if.end80 ] call void @_ZN6icu_7510UCharsTrie8IteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %prefixes) #18 br label %cleanup93 cleanup93: ; preds = %if.end40, %cleanup - %cleanup.dest.slot.0 = phi i32 [ %28, %cleanup ], [ 0, %if.end40 ] + %cleanup.dest.slot.0 = phi i32 [ %29, %cleanup ], [ 0, %if.end40 ] call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %context) #18 call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %context.i) #18 br label %return ehcleanup: ; preds = %lpad52, %lpad50, %lpad29 - %.pn54 = phi { ptr, i32 } [ %lpad.phi, %lpad52 ], [ %24, %lpad50 ], [ %13, %lpad29 ] + %.pn54 = phi { ptr, i32 } [ %lpad.phi, %lpad52 ], [ %25, %lpad50 ], [ %13, %lpad29 ] call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %context) #18 br label %eh.resume @@ -3525,25 +3523,25 @@ invoke.cont111: ; preds = %if.end107 to label %invoke.cont113 unwind label %lpad112 invoke.cont113: ; preds = %invoke.cont111 - %29 = load i32, ptr %next.i94, align 8 + %30 = load i32, ptr %next.i94, align 8 %contextChars118 = getelementptr inbounds i8, ptr %this, i64 144 %call120 = invoke noundef nonnull align 8 dereferenceable(200) ptr @_ZN6icu_7510UnicodeSet3addEi(ptr noundef nonnull align 8 dereferenceable(200) %contextChars118, i32 noundef %c) to label %invoke.cont119 unwind label %lpad112 invoke.cont119: ; preds = %invoke.cont113 - %shl.i.i95 = shl i32 %29, 13 + %shl.i.i95 = shl i32 %30, 13 %or1.i.i96 = or disjoint i32 %shl.i.i95, 199 call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %context109) #18 call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %context.i88) #18 br label %return lpad110: ; preds = %if.end107 - %30 = landingpad { ptr, i32 } + %31 = landingpad { ptr, i32 } cleanup br label %eh.resume lpad112: ; preds = %invoke.cont113, %invoke.cont111 - %31 = landingpad { ptr, i32 } + %32 = landingpad { ptr, i32 } cleanup call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %context109) #18 br label %eh.resume @@ -3558,8 +3556,8 @@ sw.bb126: ; preds = %if.end5.us %.sink.i = load ptr, ptr %ces.i, align 8 %idxprom.i.i = zext nneg i32 %shr.i.i99 to i64 %arrayidx.i.i = getelementptr inbounds i64, ptr %.sink.i, i64 %idxprom.i.i - %32 = load i64, ptr %arrayidx.i.i, align 8 - %call3.i = tail call noundef i32 @_ZN6icu_759Collation32getThreeBytePrimaryForOffsetDataEil(i32 noundef %c, i64 noundef %32) + %33 = load i64, ptr %arrayidx.i.i, align 8 + %call3.i = tail call noundef i32 @_ZN6icu_759Collation32getThreeBytePrimaryForOffsetDataEil(i32 noundef %c, i64 noundef %33) %or.i.i = or i32 %call3.i, 193 br label %return @@ -3581,7 +3579,7 @@ return: ; preds = %tailrecurse.backedg eh.resume: ; preds = %lpad110, %lpad112, %lpad, %ehcleanup %context.i88.sink = phi ptr [ %context.i, %ehcleanup ], [ %context.i, %lpad ], [ %context.i88, %lpad112 ], [ %context.i88, %lpad110 ] - %.pn.pn = phi { ptr, i32 } [ %.pn54, %ehcleanup ], [ %12, %lpad ], [ %31, %lpad112 ], [ %30, %lpad110 ] + %.pn.pn = phi { ptr, i32 } [ %.pn54, %ehcleanup ], [ %12, %lpad ], [ %32, %lpad112 ], [ %31, %lpad110 ] call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %context.i88.sink) #18 resume { ptr, i32 } %.pn.pn } diff --git a/bench/icu/optimized/dtptngen.ll b/bench/icu/optimized/dtptngen.ll index e4cf4475681..6adc5fde7cb 100644 --- a/bench/icu/optimized/dtptngen.ll +++ b/bench/icu/optimized/dtptngen.ll @@ -4198,11 +4198,10 @@ if.then20: ; preds = %if.end10 %25 = load i16, ptr %fUnion.i.i.i.i.i, align 8 %cmp.i.i60 = icmp slt i16 %25, 0 %26 = ashr i16 %25, 5 - %shr.i.i = zext i16 %26 to i32 %27 = load i32, ptr %fLength.i.i.i.i, align 4 - %cond.i = select i1 %cmp.i.i60, i32 %27, i32 %shr.i.i - %28 = trunc i32 %cond.i to i16 - %conv25 = add i16 %24, %28 + %28 = trunc i32 %27 to i16 + %29 = select i1 %cmp.i.i60, i16 %28, i16 %26 + %conv25 = add i16 %29, %24 br label %if.end26 if.end26: ; preds = %if.then20, %if.end10 @@ -4213,27 +4212,27 @@ if.end26: ; preds = %if.then20, %if.end1 br label %for.inc31 for.inc31: ; preds = %for.body.i.i, %if.then16.i.i, %for.body4, %_ZN6icu_7512FormatParser17getCanonicalIndexERKNS_13UnicodeStringE.exit, %if.end26, %invoke.cont - %29 = phi i32 [ %storemerge42124, %for.body4 ], [ %storemerge42124, %_ZN6icu_7512FormatParser17getCanonicalIndexERKNS_13UnicodeStringE.exit ], [ %storemerge42124, %if.end26 ], [ %.pre144, %invoke.cont ], [ %storemerge42124, %if.then16.i.i ], [ %storemerge42124, %for.body.i.i ] - %inc32 = add nsw i32 %29, 1 + %30 = phi i32 [ %storemerge42124, %for.body4 ], [ %storemerge42124, %_ZN6icu_7512FormatParser17getCanonicalIndexERKNS_13UnicodeStringE.exit ], [ %storemerge42124, %if.end26 ], [ %.pre144, %invoke.cont ], [ %storemerge42124, %if.then16.i.i ], [ %storemerge42124, %for.body.i.i ] + %inc32 = add nsw i32 %30, 1 store i32 %inc32, ptr %i, align 4 - %30 = load i32, ptr %itemNumber.i, align 8 - %cmp3 = icmp slt i32 %inc32, %30 + %31 = load i32, ptr %itemNumber.i, align 8 + %cmp3 = icmp slt i32 %inc32, %31 br i1 %cmp3, label %for.body4, label %for.end33, !llvm.loop !25 for.end33: ; preds = %for.inc31, %_ZN6icu_7512FormatParser3setERKNS_13UnicodeStringE.exit %arrayidx.i62 = getelementptr inbounds i8, ptr %skeletonResult, i64 100 - %31 = load i8, ptr %arrayidx.i62, align 4 - %cmp.i63.not = icmp eq i8 %31, 0 + %32 = load i8, ptr %arrayidx.i62, align 4 + %cmp.i63.not = icmp eq i8 %32, 0 %arrayidx.i66 = getelementptr inbounds i8, ptr %skeletonResult, i64 102 - %32 = load i8, ptr %arrayidx.i66, align 2 - %cmp.i67.not = icmp eq i8 %32, 0 + %33 = load i8, ptr %arrayidx.i66, align 2 + %cmp.i67.not = icmp eq i8 %33, 0 %or.cond = select i1 %cmp.i63.not, i1 true, i1 %cmp.i67.not br i1 %or.cond, label %if.end88, label %land.lhs.true40 land.lhs.true40: ; preds = %for.end33 %arrayidx.i70 = getelementptr inbounds i8, ptr %skeletonResult, i64 101 - %33 = load i8, ptr %arrayidx.i70, align 1 - %cmp.i71.not = icmp eq i8 %33, 0 + %34 = load i8, ptr %arrayidx.i70, align 1 + %cmp.i71.not = icmp eq i8 %34, 0 br i1 %cmp.i71.not, label %if.then56, label %if.end88 if.then56: ; preds = %land.lhs.true40 @@ -4250,22 +4249,22 @@ if.then56: ; preds = %land.lhs.true40 if.end88: ; preds = %if.then56, %land.lhs.true40, %for.end33 %arrayidx.i84 = getelementptr inbounds i8, ptr %skeletonResult, i64 99 - %34 = load i8, ptr %arrayidx.i84, align 1 - %cmp.i85.not = icmp eq i8 %34, 0 + %35 = load i8, ptr %arrayidx.i84, align 1 + %cmp.i85.not = icmp eq i8 %35, 0 br i1 %cmp.i85.not, label %if.end151, label %if.then92 if.then92: ; preds = %if.end88 %arrayidx.i87 = getelementptr inbounds i8, ptr %skeletonResult, i64 83 - %35 = load i8, ptr %arrayidx.i87, align 1 - switch i8 %35, label %if.else [ + %36 = load i8, ptr %arrayidx.i87, align 1 + switch i8 %36, label %if.else [ i8 104, label %if.then101 i8 75, label %if.then101 ] if.then101: ; preds = %if.then92, %if.then92 %arrayidx.i92 = getelementptr inbounds i8, ptr %skeletonResult, i64 98 - %36 = load i8, ptr %arrayidx.i92, align 2 - %cmp.i93.not = icmp eq i8 %36, 0 + %37 = load i8, ptr %arrayidx.i92, align 2 + %cmp.i93.not = icmp eq i8 %37, 0 br i1 %cmp.i93.not, label %if.then117, label %if.end151 if.then117: ; preds = %if.then101 @@ -4307,9 +4306,9 @@ if.end151: ; preds = %if.else, %if.then11 %lengths.i4.i.i = getelementptr inbounds i8, ptr %this, i64 128 %lengths6.i5.i.i = getelementptr inbounds i8, ptr %skeletonResult, i64 120 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %lengths.i4.i.i, ptr noundef nonnull readonly align 8 dereferenceable(16) %lengths6.i5.i.i, i64 16, i1 false) - %37 = load i8, ptr %addedDefaultDayPeriod, align 8 + %38 = load i8, ptr %addedDefaultDayPeriod, align 8 %addedDefaultDayPeriod6.i.i = getelementptr inbounds i8, ptr %this, i64 144 - store i8 %37, ptr %addedDefaultDayPeriod6.i.i, align 8 + store i8 %38, ptr %addedDefaultDayPeriod6.i.i, align 8 ret void } diff --git a/bench/icu/optimized/ucharstriebuilder.ll b/bench/icu/optimized/ucharstriebuilder.ll index 3a19b6430c8..eb7c390bc32 100644 --- a/bench/icu/optimized/ucharstriebuilder.ll +++ b/bench/icu/optimized/ucharstriebuilder.ll @@ -712,12 +712,10 @@ if.end38: ; preds = %cleanup35.thread, % %fUnion.i.i21 = getelementptr inbounds i8, ptr %this, i64 24 %29 = load i16, ptr %fUnion.i.i21, align 8 %cmp.i.i = icmp slt i16 %29, 0 - %30 = ashr i16 %29, 5 - %shr.i.i = sext i16 %30 to i32 %fLength.i = getelementptr inbounds i8, ptr %this, i64 28 - %31 = load i32, ptr %fLength.i, align 4 - %cond.i = select i1 %cmp.i.i, i32 %31, i32 %shr.i.i - %spec.store.select = call i32 @llvm.smax.i32(i32 %cond.i, i32 1024) + %30 = load i32, ptr %fLength.i, align 4 + %31 = call i32 @llvm.smax.i32(i32 %30, i32 1024) + %spec.store.select = select i1 %cmp.i.i, i32 %31, i32 1024 %ucharsCapacity = getelementptr inbounds i8, ptr %this, i64 104 %32 = load i32, ptr %ucharsCapacity, align 8 %cmp45 = icmp slt i32 %32, %spec.store.select diff --git a/bench/jq/optimized/builtin.ll b/bench/jq/optimized/builtin.ll index 783e2181d27..91cc9007e47 100644 --- a/bench/jq/optimized/builtin.ll +++ b/bench/jq/optimized/builtin.ll @@ -5908,26 +5908,26 @@ define internal { i64, ptr } @f_match(ptr nocapture readnone %0, i64 %1, ptr %2, .lr.ph467.us: ; preds = %.preheader432.us, %.lr.ph467.us %.3398466.us = phi i64 [ %spec.select427.us, %.lr.ph467.us ], [ 0, %.preheader432.us ] %.2401465.us = phi i64 [ %291, %.lr.ph467.us ], [ 0, %.preheader432.us ] - %.2405464.us = phi ptr [ %290, %.lr.ph467.us ], [ %150, %.preheader432.us ] + %.2405464.us = phi ptr [ %289, %.lr.ph467.us ], [ %150, %.preheader432.us ] %280 = load ptr, ptr %160, align 8 %281 = getelementptr inbounds i32, ptr %280, i64 %indvars.iv %282 = load i32, ptr %281, align 4 %283 = sext i32 %282 to i64 %284 = getelementptr inbounds i8, ptr %150, i64 %283 %285 = icmp eq ptr %.2405464.us, %284 - %286 = add i64 %.2401465.us, 1 %spec.select427.us = select i1 %285, i64 %.2401465.us, i64 %.3398466.us - %287 = load i8, ptr %.2405464.us, align 1 - %288 = call i32 @jvp_utf8_decode_length(i8 noundef signext %287) #14 - %289 = sext i32 %288 to i64 - %290 = getelementptr inbounds i8, ptr %.2405464.us, i64 %289 - %291 = select i1 %285, i64 1, i64 %286 + %286 = load i8, ptr %.2405464.us, align 1 + %287 = call i32 @jvp_utf8_decode_length(i8 noundef signext %286) #14 + %288 = sext i32 %287 to i64 + %289 = getelementptr inbounds i8, ptr %.2405464.us, i64 %288 + %290 = add i64 %.2401465.us, 1 + %291 = select i1 %285, i64 1, i64 %290 %292 = load ptr, ptr %159, align 8 %293 = getelementptr inbounds i32, ptr %292, i64 %indvars.iv %294 = load i32, ptr %293, align 4 %295 = sext i32 %294 to i64 %296 = getelementptr inbounds i8, ptr %150, i64 %295 - %297 = icmp ult ptr %290, %296 + %297 = icmp ult ptr %289, %296 br i1 %297, label %.lr.ph467.us, label %._crit_edge468.us.loopexit, !llvm.loop !20 298: ; preds = %.lr.ph479.us @@ -6041,24 +6041,24 @@ define internal { i64, ptr } @f_match(ptr nocapture readnone %0, i64 %1, ptr %2, .lr.ph461.us: ; preds = %.preheader434.us, %.lr.ph461.us %.0395460.us = phi i64 [ %spec.select425.us, %.lr.ph461.us ], [ 0, %.preheader434.us ] %.0399459.us = phi i64 [ %387, %.lr.ph461.us ], [ 0, %.preheader434.us ] - %.0403458.us = phi ptr [ %386, %.lr.ph461.us ], [ %150, %.preheader434.us ] + %.0403458.us = phi ptr [ %385, %.lr.ph461.us ], [ %150, %.preheader434.us ] %377 = load ptr, ptr %160, align 8 %378 = load i32, ptr %377, align 4 %379 = sext i32 %378 to i64 %380 = getelementptr inbounds i8, ptr %150, i64 %379 %381 = icmp eq ptr %.0403458.us, %380 - %382 = add i64 %.0399459.us, 1 %spec.select425.us = select i1 %381, i64 %.0399459.us, i64 %.0395460.us - %383 = load i8, ptr %.0403458.us, align 1 - %384 = call i32 @jvp_utf8_decode_length(i8 noundef signext %383) #14 - %385 = sext i32 %384 to i64 - %386 = getelementptr inbounds i8, ptr %.0403458.us, i64 %385 - %387 = select i1 %381, i64 1, i64 %382 + %382 = load i8, ptr %.0403458.us, align 1 + %383 = call i32 @jvp_utf8_decode_length(i8 noundef signext %382) #14 + %384 = sext i32 %383 to i64 + %385 = getelementptr inbounds i8, ptr %.0403458.us, i64 %384 + %386 = add i64 %.0399459.us, 1 + %387 = select i1 %381, i64 1, i64 %386 %388 = load ptr, ptr %159, align 8 %389 = load i32, ptr %388, align 4 %390 = sext i32 %389 to i64 %391 = getelementptr inbounds i8, ptr %150, i64 %390 - %392 = icmp ult ptr %386, %391 + %392 = icmp ult ptr %385, %391 br i1 %392, label %.lr.ph461.us, label %._crit_edge.us.loopexit, !llvm.loop !23 ._crit_edge484.us.loopexit: ; preds = %.lr.ph483.us diff --git a/bench/jsonnet/optimized/vm.cpp.ll b/bench/jsonnet/optimized/vm.cpp.ll index cb54df2a1dc..c5d5e7741c4 100644 --- a/bench/jsonnet/optimized/vm.cpp.ll +++ b/bench/jsonnet/optimized/vm.cpp.ll @@ -26327,7 +26327,7 @@ _ZNSt6vectorIN7jsonnet8internal12_GLOBAL__N_15Value4TypeESaIS4_EED2Ev.exit: ; pr _ZN7jsonnet8internal12_GLOBAL__N_111Interpreter9makeErrorERKNS0_13LocationRangeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit: ; preds = %37 invoke void @__cxa_throw(ptr %36, ptr nonnull @_ZTIN7jsonnet8internal12RuntimeErrorE, ptr nonnull @_ZN7jsonnet8internal12RuntimeErrorD2Ev) #37 - to label %121 unwind label %49 + to label %122 unwind label %49 40: ; preds = %.noexc, %3 %41 = landingpad { ptr, i32 } @@ -26413,7 +26413,7 @@ _ZNSt6vectorIN7jsonnet8internal12_GLOBAL__N_15Value4TypeESaIS4_EED2Ev.exit71: ; _ZN7jsonnet8internal12_GLOBAL__N_111Interpreter9makeErrorERKNS0_13LocationRangeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit73: ; preds = %62 invoke void @__cxa_throw(ptr %61, ptr nonnull @_ZTIN7jsonnet8internal12RuntimeErrorE, ptr nonnull @_ZN7jsonnet8internal12RuntimeErrorD2Ev) #37 - to label %121 unwind label %68 + to label %122 unwind label %68 65: ; preds = %58, %55 %66 = landingpad { ptr, i32 } @@ -26497,102 +26497,102 @@ _ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE8_M_checkEmPKc.exit.i.i %92 = add nuw nsw i64 %28, %25 %93 = icmp ugt i64 %92, %74 %94 = sub nuw i64 %74, %25 - %spec.select = select i1 %93, i64 %94, i64 %28 call void @llvm.experimental.noalias.scope.decl(metadata !93) %95 = getelementptr inbounds i8, ptr %12, i64 16 store ptr %95, ptr %12, align 8, !alias.scope !93 %96 = load ptr, ptr %91, align 8, !noalias !93 %97 = getelementptr inbounds i32, ptr %96, i64 %25 - %spec.select.i.i.i = call noundef i64 @llvm.umin.i64(i64 %spec.select, i64 %94) + %98 = call i64 @llvm.umin.i64(i64 %28, i64 %94) + %spec.select.i.i.i = select i1 %93, i64 %94, i64 %98 %.idx.i.i = shl nsw i64 %spec.select.i.i.i, 2 - %98 = icmp ugt i64 %spec.select.i.i.i, 3 - br i1 %98, label %99, label %._crit_edge.i.i.i + %99 = icmp ugt i64 %spec.select.i.i.i, 3 + br i1 %99, label %100, label %._crit_edge.i.i.i -99: ; preds = %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE8_M_checkEmPKc.exit.i.i - %100 = icmp ugt i64 %spec.select.i.i.i, 1152921504606846975 - br i1 %100, label %.noexc10.i.i, label %_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE9_M_createERmm.exit.i.i.i +100: ; preds = %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE8_M_checkEmPKc.exit.i.i + %101 = icmp ugt i64 %spec.select.i.i.i, 1152921504606846975 + br i1 %101, label %.noexc10.i.i, label %_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE9_M_createERmm.exit.i.i.i -.noexc10.i.i: ; preds = %99 +.noexc10.i.i: ; preds = %100 call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.78) #37 unreachable -_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE9_M_createERmm.exit.i.i.i: ; preds = %99 - %101 = add nuw nsw i64 %.idx.i.i, 4 - %102 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %101) #36 - store ptr %102, ptr %12, align 8, !alias.scope !93 +_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE9_M_createERmm.exit.i.i.i: ; preds = %100 + %102 = add nuw nsw i64 %.idx.i.i, 4 + %103 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %102) #36 + store ptr %103, ptr %12, align 8, !alias.scope !93 store i64 %spec.select.i.i.i, ptr %95, align 8, !alias.scope !93 br label %._crit_edge.i.i.i ._crit_edge.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE9_M_createERmm.exit.i.i.i, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE8_M_checkEmPKc.exit.i.i - %103 = phi ptr [ %102, %_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE9_M_createERmm.exit.i.i.i ], [ %95, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE8_M_checkEmPKc.exit.i.i ] - switch i64 %spec.select.i.i.i, label %106 [ - i64 1, label %104 + %104 = phi ptr [ %103, %_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE9_M_createERmm.exit.i.i.i ], [ %95, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE8_M_checkEmPKc.exit.i.i ] + switch i64 %spec.select.i.i.i, label %107 [ + i64 1, label %105 i64 0, label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE6substrEmm.exit ] -104: ; preds = %._crit_edge.i.i.i - %105 = load i32, ptr %97, align 4 - store i32 %105, ptr %103, align 4 +105: ; preds = %._crit_edge.i.i.i + %106 = load i32, ptr %97, align 4 + store i32 %106, ptr %104, align 4 br label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE6substrEmm.exit -106: ; preds = %._crit_edge.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %103, ptr align 4 %97, i64 %.idx.i.i, i1 false) +107: ; preds = %._crit_edge.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %104, ptr align 4 %97, i64 %.idx.i.i, i1 false) br label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE6substrEmm.exit -_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE6substrEmm.exit: ; preds = %._crit_edge.i.i.i, %104, %106 - %107 = getelementptr inbounds i8, ptr %12, i64 8 - store i64 %spec.select.i.i.i, ptr %107, align 8, !alias.scope !93 - %108 = getelementptr inbounds i8, ptr %103, i64 %.idx.i.i - store i32 0, ptr %108, align 4 +_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE6substrEmm.exit: ; preds = %._crit_edge.i.i.i, %105, %107 + %108 = getelementptr inbounds i8, ptr %12, i64 8 + store i64 %spec.select.i.i.i, ptr %108, align 8, !alias.scope !93 + %109 = getelementptr inbounds i8, ptr %104, i64 %.idx.i.i + store i32 0, ptr %109, align 4 %.val58 = load ptr, ptr %12, align 8 - %.val59 = load i64, ptr %107, align 8 - %109 = invoke fastcc ptr @_ZN7jsonnet8internal12_GLOBAL__N_111Interpreter10makeStringERKNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEEE(ptr noundef nonnull align 8 dereferenceable(480) %0, ptr %.val58, i64 %.val59) - to label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE6substrEmm.exit._crit_edge unwind label %115 + %.val59 = load i64, ptr %108, align 8 + %110 = invoke fastcc ptr @_ZN7jsonnet8internal12_GLOBAL__N_111Interpreter10makeStringERKNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEEE(ptr noundef nonnull align 8 dereferenceable(480) %0, ptr %.val58, i64 %.val59) + to label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE6substrEmm.exit._crit_edge unwind label %116 _ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE6substrEmm.exit._crit_edge: ; preds = %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE6substrEmm.exit - %110 = getelementptr inbounds i8, ptr %0, i64 64 - store i32 19, ptr %110, align 8 + %111 = getelementptr inbounds i8, ptr %0, i64 64 + store i32 19, ptr %111, align 8 %.sroa.21.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 72 - store ptr %109, ptr %.sroa.21.0..sroa_idx, align 8 - %111 = load ptr, ptr %12, align 8 - %112 = icmp eq ptr %111, %95 - br i1 %112, label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i78, label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i77 + store ptr %110, ptr %.sroa.21.0..sroa_idx, align 8 + %112 = load ptr, ptr %12, align 8 + %113 = icmp eq ptr %112, %95 + br i1 %113, label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i78, label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i77 _ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i78: ; preds = %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE6substrEmm.exit._crit_edge - %113 = load i64, ptr %107, align 8 - %114 = icmp ult i64 %113, 4 - call void @llvm.assume(i1 %114) + %114 = load i64, ptr %108, align 8 + %115 = icmp ult i64 %114, 4 + call void @llvm.assume(i1 %115) br label %_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEED2Ev.exit _ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i77: ; preds = %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE6substrEmm.exit._crit_edge - call void @_ZdlPv(ptr noundef %111) #35 + call void @_ZdlPv(ptr noundef %112) #35 br label %_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEED2Ev.exit -115: ; preds = %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE6substrEmm.exit - %116 = landingpad { ptr, i32 } +116: ; preds = %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE6substrEmm.exit + %117 = landingpad { ptr, i32 } cleanup - %117 = load ptr, ptr %12, align 8 - %118 = icmp eq ptr %117, %95 - br i1 %118, label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i81, label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i80 + %118 = load ptr, ptr %12, align 8 + %119 = icmp eq ptr %118, %95 + br i1 %119, label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i81, label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i80 -_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i81: ; preds = %115 - %119 = load i64, ptr %107, align 8 - %120 = icmp ult i64 %119, 4 - call void @llvm.assume(i1 %120) +_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i81: ; preds = %116 + %120 = load i64, ptr %108, align 8 + %121 = icmp ult i64 %120, 4 + call void @llvm.assume(i1 %121) br label %_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEED2Ev.exit76 -_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i80: ; preds = %115 - call void @_ZdlPv(ptr noundef %117) #35 +_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i80: ; preds = %116 + call void @_ZdlPv(ptr noundef %118) #35 br label %_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEED2Ev.exit76 _ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i77, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i78, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i ret ptr null _ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEED2Ev.exit76: ; preds = %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i80, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i81, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i74, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i75, %71, %52, %.body - %.pn53.pn.pn = phi { ptr, i32 } [ %.pn53.pn, %52 ], [ %.pn50.pn, %71 ], [ %.pn.pn, %.body ], [ %86, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i75 ], [ %86, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i74 ], [ %116, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i81 ], [ %116, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i80 ] + %.pn53.pn.pn = phi { ptr, i32 } [ %.pn53.pn, %52 ], [ %.pn50.pn, %71 ], [ %.pn.pn, %.body ], [ %86, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i75 ], [ %86, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i74 ], [ %117, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i81 ], [ %117, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.i.i80 ] resume { ptr, i32 } %.pn53.pn.pn -121: ; preds = %_ZN7jsonnet8internal12_GLOBAL__N_111Interpreter9makeErrorERKNS0_13LocationRangeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit73, %_ZN7jsonnet8internal12_GLOBAL__N_111Interpreter9makeErrorERKNS0_13LocationRangeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit +122: ; preds = %_ZN7jsonnet8internal12_GLOBAL__N_111Interpreter9makeErrorERKNS0_13LocationRangeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit73, %_ZN7jsonnet8internal12_GLOBAL__N_111Interpreter9makeErrorERKNS0_13LocationRangeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit unreachable } diff --git a/bench/libquic/optimized/string_util.cc.ll b/bench/libquic/optimized/string_util.cc.ll index 6051d54d7db..00b8c75a034 100644 --- a/bench/libquic/optimized/string_util.cc.ll +++ b/bench/libquic/optimized/string_util.cc.ll @@ -172,8 +172,8 @@ invoke.cont4.i: ; preds = %for.body.i %1 = add i8 %call5.i, -65 %or.cond.i.i = icmp ult i8 %1, 26 %add.i.i = add nuw nsw i8 %call5.i, 32 - %cond.i.i = select i1 %or.cond.i.i, i8 %add.i.i, i8 %call5.i - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, i8 noundef signext %cond.i.i) + %conv5.i.i = select i1 %or.cond.i.i, i8 %add.i.i, i8 %call5.i + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, i8 noundef signext %conv5.i.i) to label %for.inc.i unwind label %lpad.loopexit.i for.inc.i: ; preds = %invoke.cont4.i @@ -236,8 +236,8 @@ invoke.cont4.i: ; preds = %for.body.i %1 = add i16 %call5.i, -65 %or.cond.i.i = icmp ult i16 %1, 26 %add.i.i = add nuw nsw i16 %call5.i, 32 - %cond.i.i = select i1 %or.cond.i.i, i16 %add.i.i, i16 %call5.i - invoke void @_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, i16 noundef zeroext %cond.i.i) + %conv5.i.i = select i1 %or.cond.i.i, i16 %add.i.i, i16 %call5.i + invoke void @_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, i16 noundef zeroext %conv5.i.i) to label %for.inc.i unwind label %lpad.loopexit.i for.inc.i: ; preds = %invoke.cont4.i @@ -297,8 +297,8 @@ invoke.cont4.i: ; preds = %for.body.i %1 = add i8 %call5.i, -97 %or.cond.i.i = icmp ult i8 %1, 26 %add.i.i = add nsw i8 %call5.i, -32 - %cond.i.i = select i1 %or.cond.i.i, i8 %add.i.i, i8 %call5.i - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, i8 noundef signext %cond.i.i) + %conv5.i.i = select i1 %or.cond.i.i, i8 %add.i.i, i8 %call5.i + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, i8 noundef signext %conv5.i.i) to label %for.inc.i unwind label %lpad.loopexit.i for.inc.i: ; preds = %invoke.cont4.i @@ -358,8 +358,8 @@ invoke.cont4.i: ; preds = %for.body.i %1 = add i16 %call5.i, -97 %or.cond.i.i = icmp ult i16 %1, 26 %add.i.i = add nsw i16 %call5.i, -32 - %cond.i.i = select i1 %or.cond.i.i, i16 %add.i.i, i16 %call5.i - invoke void @_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, i16 noundef zeroext %cond.i.i) + %conv5.i.i = select i1 %or.cond.i.i, i16 %add.i.i, i16 %call5.i + invoke void @_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, i16 noundef zeroext %conv5.i.i) to label %for.inc.i unwind label %lpad.loopexit.i for.inc.i: ; preds = %invoke.cont4.i @@ -425,17 +425,17 @@ while.body: ; preds = %land.rhs %2 = add i8 %call3, -65 %or.cond.i = icmp ult i8 %2, 26 %add.i = add nuw nsw i8 %call3, 32 - %cond.i = select i1 %or.cond.i, i8 %add.i, i8 %call3 + %conv5.i = select i1 %or.cond.i, i8 %add.i, i8 %call3 %call5 = call noundef signext i8 @_ZNK4base16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %b, i64 noundef %i.013) %3 = add i8 %call5, -65 %or.cond.i7 = icmp ult i8 %3, 26 %add.i8 = add nuw nsw i8 %call5, 32 - %cond.i9 = select i1 %or.cond.i7, i8 %add.i8, i8 %call5 - %cmp8 = icmp slt i8 %cond.i, %cond.i9 + %conv5.i9 = select i1 %or.cond.i7, i8 %add.i8, i8 %call5 + %cmp8 = icmp slt i8 %conv5.i, %conv5.i9 br i1 %cmp8, label %return, label %if.end if.end: ; preds = %while.body - %cmp11 = icmp sgt i8 %cond.i, %cond.i9 + %cmp11 = icmp sgt i8 %conv5.i, %conv5.i9 br i1 %cmp11, label %return, label %while.cond while.end: ; preds = %land.rhs, %while.cond, %entry @@ -495,17 +495,17 @@ while.body: ; preds = %land.rhs %2 = add i16 %call3, -65 %or.cond.i = icmp ult i16 %2, 26 %add.i = add nuw nsw i16 %call3, 32 - %cond.i = select i1 %or.cond.i, i16 %add.i, i16 %call3 + %conv5.i = select i1 %or.cond.i, i16 %add.i, i16 %call3 %call5 = call noundef zeroext i16 @_ZNK4base16BasicStringPieceINSt7__cxx1112basic_stringItNS_20string16_char_traitsESaItEEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %b, i64 noundef %i.013) %3 = add i16 %call5, -65 %or.cond.i7 = icmp ult i16 %3, 26 %add.i8 = add nuw nsw i16 %call5, 32 - %cond.i9 = select i1 %or.cond.i7, i16 %add.i8, i16 %call5 - %cmp8 = icmp ult i16 %cond.i, %cond.i9 + %conv5.i9 = select i1 %or.cond.i7, i16 %add.i8, i16 %call5 + %cmp8 = icmp ult i16 %conv5.i, %conv5.i9 br i1 %cmp8, label %return, label %if.end if.end: ; preds = %while.body - %cmp11 = icmp ugt i16 %cond.i, %cond.i9 + %cmp11 = icmp ugt i16 %conv5.i, %conv5.i9 br i1 %cmp11, label %return, label %while.cond while.end: ; preds = %land.rhs, %while.cond, %entry @@ -2103,9 +2103,9 @@ for.body.i: ; preds = %for.cond.preheader. %2 = add i8 %call4.i, -65 %or.cond.i.i = icmp ult i8 %2, 26 %add.i.i = add nuw nsw i8 %call4.i, 32 - %cond.i.i = select i1 %or.cond.i.i, i8 %add.i.i, i8 %call4.i + %conv5.i.i = select i1 %or.cond.i.i, i8 %add.i.i, i8 %call4.i %call6.i = call noundef signext i8 @_ZNK4base16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %lowercase_ascii.i, i64 noundef %i.06.i) - %cmp8.not.i = icmp eq i8 %cond.i.i, %call6.i + %cmp8.not.i = icmp eq i8 %conv5.i.i, %call6.i br i1 %cmp8.not.i, label %for.cond.i, label %_ZN4baseL22DoLowerCaseEqualsASCIIINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbNS_16BasicStringPieceIT_EENS7_IS6_EE.exit _ZN4baseL22DoLowerCaseEqualsASCIIINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbNS_16BasicStringPieceIT_EENS7_IS6_EE.exit: ; preds = %for.cond.i, %for.body.i, %entry, %for.cond.preheader.i @@ -2150,8 +2150,8 @@ for.body.i: ; preds = %for.cond.preheader. %2 = add i16 %call4.i, -65 %or.cond.i.i = icmp ult i16 %2, 26 %add.i.i = add nuw nsw i16 %call4.i, 32 - %cond.i.i = select i1 %or.cond.i.i, i16 %add.i.i, i16 %call4.i - %conv.i = zext i16 %cond.i.i to i32 + %conv5.i.i = select i1 %or.cond.i.i, i16 %add.i.i, i16 %call4.i + %conv.i = zext i16 %conv5.i.i to i32 %call6.i = call noundef signext i8 @_ZNK4base16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %lowercase_ascii.i, i64 noundef %i.06.i) %conv7.i = sext i8 %call6.i to i32 %cmp8.not.i = icmp eq i32 %conv.i, %conv7.i @@ -2268,12 +2268,12 @@ for.body.i: ; preds = %sw.bb5, %for.body.i %7 = add i8 %5, -65 %or.cond.i.i.i = icmp ult i8 %7, 26 %add.i.i.i = add nuw nsw i8 %5, 32 - %cond.i.i.i = select i1 %or.cond.i.i.i, i8 %add.i.i.i, i8 %5 + %conv5.i.i.i = select i1 %or.cond.i.i.i, i8 %add.i.i.i, i8 %5 %8 = add i8 %6, -65 %or.cond.i1.i.i = icmp ult i8 %8, 26 %add.i2.i.i = add nuw nsw i8 %6, 32 - %cond.i3.i.i = select i1 %or.cond.i1.i.i, i8 %add.i2.i.i, i8 %6 - %cmp.i.i = icmp eq i8 %cond.i.i.i, %cond.i3.i.i + %conv5.i3.i.i = select i1 %or.cond.i1.i.i, i8 %add.i2.i.i, i8 %6 + %cmp.i.i = icmp eq i8 %conv5.i.i.i, %conv5.i3.i.i %incdec.ptr.i = getelementptr inbounds i8, ptr %__first1.addr.05.i, i64 1 %incdec.ptr1.i = getelementptr inbounds i8, ptr %__first2.addr.06.i, i64 1 %cmp.not.i = icmp ne ptr %incdec.ptr.i, %call7 @@ -2351,12 +2351,12 @@ for.body.i: ; preds = %sw.bb5, %for.body.i %7 = add i16 %5, -65 %or.cond.i.i.i = icmp ult i16 %7, 26 %add.i.i.i = add nuw nsw i16 %5, 32 - %cond.i.i.i = select i1 %or.cond.i.i.i, i16 %add.i.i.i, i16 %5 + %conv5.i.i.i = select i1 %or.cond.i.i.i, i16 %add.i.i.i, i16 %5 %8 = add i16 %6, -65 %or.cond.i1.i.i = icmp ult i16 %8, 26 %add.i2.i.i = add nuw nsw i16 %6, 32 - %cond.i3.i.i = select i1 %or.cond.i1.i.i, i16 %add.i2.i.i, i16 %6 - %cmp.i.i = icmp eq i16 %cond.i.i.i, %cond.i3.i.i + %conv5.i3.i.i = select i1 %or.cond.i1.i.i, i16 %add.i2.i.i, i16 %6 + %cmp.i.i = icmp eq i16 %conv5.i.i.i, %conv5.i3.i.i %incdec.ptr.i = getelementptr inbounds i8, ptr %__first1.addr.05.i, i64 2 %incdec.ptr1.i = getelementptr inbounds i8, ptr %__first2.addr.06.i, i64 2 %cmp.not.i1 = icmp ne ptr %incdec.ptr.i, %call7 @@ -2427,12 +2427,12 @@ for.body.i: ; preds = %sw.bb7, %for.body.i %7 = add i8 %5, -65 %or.cond.i.i.i = icmp ult i8 %7, 26 %add.i.i.i = add nuw nsw i8 %5, 32 - %cond.i.i.i = select i1 %or.cond.i.i.i, i8 %add.i.i.i, i8 %5 + %conv5.i.i.i = select i1 %or.cond.i.i.i, i8 %add.i.i.i, i8 %5 %8 = add i8 %6, -65 %or.cond.i1.i.i = icmp ult i8 %8, 26 %add.i2.i.i = add nuw nsw i8 %6, 32 - %cond.i3.i.i = select i1 %or.cond.i1.i.i, i8 %add.i2.i.i, i8 %6 - %cmp.i.i = icmp eq i8 %cond.i.i.i, %cond.i3.i.i + %conv5.i3.i.i = select i1 %or.cond.i1.i.i, i8 %add.i2.i.i, i8 %6 + %cmp.i.i = icmp eq i8 %conv5.i.i.i, %conv5.i3.i.i %incdec.ptr.i = getelementptr inbounds i8, ptr %__first1.addr.05.i, i64 1 %incdec.ptr1.i = getelementptr inbounds i8, ptr %__first2.addr.06.i, i64 1 %cmp.not.i = icmp ne ptr %incdec.ptr.i, %call9 @@ -2513,12 +2513,12 @@ for.body.i: ; preds = %sw.bb7, %for.body.i %7 = add i16 %5, -65 %or.cond.i.i.i = icmp ult i16 %7, 26 %add.i.i.i = add nuw nsw i16 %5, 32 - %cond.i.i.i = select i1 %or.cond.i.i.i, i16 %add.i.i.i, i16 %5 + %conv5.i.i.i = select i1 %or.cond.i.i.i, i16 %add.i.i.i, i16 %5 %8 = add i16 %6, -65 %or.cond.i1.i.i = icmp ult i16 %8, 26 %add.i2.i.i = add nuw nsw i16 %6, 32 - %cond.i3.i.i = select i1 %or.cond.i1.i.i, i16 %add.i2.i.i, i16 %6 - %cmp.i.i = icmp eq i16 %cond.i.i.i, %cond.i3.i.i + %conv5.i3.i.i = select i1 %or.cond.i1.i.i, i16 %add.i2.i.i, i16 %6 + %cmp.i.i = icmp eq i16 %conv5.i.i.i, %conv5.i3.i.i %incdec.ptr.i = getelementptr inbounds i8, ptr %__first1.addr.05.i, i64 2 %incdec.ptr1.i = getelementptr inbounds i8, ptr %__first2.addr.06.i, i64 2 %cmp.not.i1 = icmp ne ptr %incdec.ptr.i, %call9 diff --git a/bench/libwebp/optimized/predictor_enc.c.ll b/bench/libwebp/optimized/predictor_enc.c.ll index c51bf758c3a..b08e593915c 100644 --- a/bench/libwebp/optimized/predictor_enc.c.ll +++ b/bench/libwebp/optimized/predictor_enc.c.ll @@ -1751,28 +1751,28 @@ NearLosslessComponent.exit49.i: ; preds = %207, %206 %.narrow.i50.i = sub i8 %.narrow.i, %187 %209 = xor i8 %.narrow.i, -1 %.040.i = select i1 %.not43.i, i8 0, i8 %.narrow.i50.i - %210 = zext i8 %209 to i32 - %211 = lshr i32 %146, 16 - %212 = trunc i32 %211 to i8 - %.narrow.i51.i = sub i8 %212, %.040.i - %213 = lshr i32 %131, 16 - %214 = zext i8 %.narrow.i51.i to i32 - %215 = sub nsw i32 %214, %213 - %216 = and i32 %215, 255 - %217 = select i1 %.not43.i, i32 255, i32 %210 - %218 = sub nsw i32 %217, %213 + %210 = lshr i32 %146, 16 + %211 = trunc i32 %210 to i8 + %.narrow.i51.i = sub i8 %211, %.040.i + %212 = lshr i32 %131, 16 + %213 = zext i8 %.narrow.i51.i to i32 + %214 = sub nsw i32 %213, %212 + %215 = and i32 %214, 255 + %216 = zext i8 %209 to i32 + %217 = select i1 %.not43.i, i32 255, i32 %216 + %218 = sub nsw i32 %217, %212 %219 = and i32 %218, 255 - %220 = and i32 %216, %.pre-phi.i + %220 = and i32 %215, %.pre-phi.i %221 = add nsw i32 %220, %.037.i - %222 = sub nsw i32 %217, %214 + %222 = sub nsw i32 %217, %213 %223 = and i32 %222, 255 %224 = icmp samesign ult i32 %223, %219 %225 = zext i1 %224 to i32 - %226 = sub nsw i32 %216, %220 - %227 = sub i32 %221, %216 + %226 = sub nsw i32 %215, %220 + %227 = sub i32 %221, %215 %228 = add nsw i32 %227, %225 %229 = icmp slt i32 %226, %228 - %230 = icmp samesign ule i32 %216, %219 + %230 = icmp samesign ule i32 %215, %219 %231 = add nuw i32 %220, %161 br i1 %229, label %232, label %233 diff --git a/bench/linux/optimized/af_netlink.ll b/bench/linux/optimized/af_netlink.ll index 9e7ec0b4596..dc7c68b21ee 100644 --- a/bench/linux/optimized/af_netlink.ll +++ b/bench/linux/optimized/af_netlink.ll @@ -6612,7 +6612,7 @@ define internal i32 @netlink_recvmsg(ptr noundef %0, ptr noundef %1, i64 noundef call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #23 %13 = and i32 %3, 1 %14 = icmp eq i32 %13, 0 - br i1 %14, label %15, label %182 + br i1 %14, label %15, label %181 15: ; preds = %4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, i8 0, i64 32, i1 false), !annotation !11 @@ -6887,16 +6887,15 @@ define internal i32 @netlink_recvmsg(ptr noundef %0, ptr noundef %1, i64 noundef 176: ; preds = %173, %168 %177 = load i32, ptr %10, align 4 %178 = icmp eq i32 %177, 0 - %179 = zext i32 %177 to i64 - %180 = select i1 %178, i64 %162, i64 %179 - %181 = trunc nuw i64 %180 to i32 - br label %182 + %179 = trunc nuw i64 %162 to i32 + %180 = select i1 %178, i32 %179, i32 %177 + br label %181 -182: ; preds = %176, %4 - %183 = phi i32 [ %181, %176 ], [ -95, %4 ] +181: ; preds = %176, %4 + %182 = phi i32 [ %180, %176 ], [ -95, %4 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #23 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #23 - ret i32 %183 + ret i32 %182 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/linux/optimized/blk-map.ll b/bench/linux/optimized/blk-map.ll index ba025207b0d..5ad7ce0dd84 100644 --- a/bench/linux/optimized/blk-map.ll +++ b/bench/linux/optimized/blk-map.ll @@ -1321,7 +1321,7 @@ define dso_local i32 @blk_rq_map_user_io(ptr noundef %0, ptr noundef %1, ptr nou %11 = alloca [8 x %struct.iovec], align 16 %12 = alloca ptr, align 8 %13 = alloca %struct.iov_iter, align 8 - br i1 %5, label %14, label %40 + br i1 %5, label %14, label %39 14: ; preds = %9 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %11) #8 @@ -1331,78 +1331,77 @@ define dso_local i32 @blk_rq_map_user_io(ptr noundef %0, ptr noundef %1, ptr nou call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %13) #8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %13, i8 0, i64 40, i1 false), !annotation !8 %15 = icmp eq i32 %6, 0 - %16 = zext i32 %6 to i64 - %17 = select i1 %15, i64 %3, i64 %16 - %18 = trunc i64 %17 to i32 - %19 = call i64 @import_iovec(i32 noundef %8, ptr noundef %2, i32 noundef %18, i32 noundef 8, ptr noundef nonnull %12, ptr noundef nonnull %13) #8 - %20 = trunc i64 %19 to i32 - %21 = icmp slt i32 %20, 0 - br i1 %21, label %38, label %22 - -22: ; preds = %14 - br i1 %15, label %32, label %23 - -23: ; preds = %22 - %24 = getelementptr inbounds i8, ptr %13, i64 24 - %25 = load i64, ptr %24, align 8 - %26 = icmp ugt i64 %25, %3 - br i1 %26, label %27, label %28 - -27: ; preds = %23 - store i64 %3, ptr %24, align 8 - br label %28 - -28: ; preds = %27, %23 - %29 = phi i64 [ %3, %27 ], [ %25, %23 ] - %30 = icmp eq i64 %29, 0 - %31 = and i1 %7, %30 - br i1 %31, label %35, label %32 - -32: ; preds = %28, %22 - %33 = load ptr, ptr %0, align 8 - %34 = call i32 @blk_rq_map_user_iov(ptr noundef %33, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %13, i32 noundef %4) - br label %35 - -35: ; preds = %32, %28 - %36 = phi i32 [ %34, %32 ], [ -22, %28 ] - %37 = load ptr, ptr %12, align 8 - call void @kfree(ptr noundef %37) #8 - br label %38 - -38: ; preds = %35, %14 - %39 = phi i32 [ %20, %14 ], [ %36, %35 ] + %16 = trunc i64 %3 to i32 + %17 = select i1 %15, i32 %16, i32 %6 + %18 = call i64 @import_iovec(i32 noundef %8, ptr noundef %2, i32 noundef %17, i32 noundef 8, ptr noundef nonnull %12, ptr noundef nonnull %13) #8 + %19 = trunc i64 %18 to i32 + %20 = icmp slt i32 %19, 0 + br i1 %20, label %37, label %21 + +21: ; preds = %14 + br i1 %15, label %31, label %22 + +22: ; preds = %21 + %23 = getelementptr inbounds i8, ptr %13, i64 24 + %24 = load i64, ptr %23, align 8 + %25 = icmp ugt i64 %24, %3 + br i1 %25, label %26, label %27 + +26: ; preds = %22 + store i64 %3, ptr %23, align 8 + br label %27 + +27: ; preds = %26, %22 + %28 = phi i64 [ %3, %26 ], [ %24, %22 ] + %29 = icmp eq i64 %28, 0 + %30 = and i1 %7, %29 + br i1 %30, label %34, label %31 + +31: ; preds = %27, %21 + %32 = load ptr, ptr %0, align 8 + %33 = call i32 @blk_rq_map_user_iov(ptr noundef %32, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %13, i32 noundef %4) + br label %34 + +34: ; preds = %31, %27 + %35 = phi i32 [ %33, %31 ], [ -22, %27 ] + %36 = load ptr, ptr %12, align 8 + call void @kfree(ptr noundef %36) #8 + br label %37 + +37: ; preds = %34, %14 + %38 = phi i32 [ %19, %14 ], [ %35, %34 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %11) #8 - br label %53 + br label %52 -40: ; preds = %9 - %41 = icmp eq i64 %3, 0 - br i1 %41, label %53, label %42 +39: ; preds = %9 + %40 = icmp eq i64 %3, 0 + br i1 %40, label %52, label %41 -42: ; preds = %40 - %43 = load ptr, ptr %0, align 8 +41: ; preds = %39 + %42 = load ptr, ptr %0, align 8 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) #8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %10, i8 0, i64 40, i1 false), !annotation !8 - %44 = getelementptr inbounds i8, ptr %0, i64 24 - %45 = load i32, ptr %44, align 8 - %46 = and i32 %45, 1 - %47 = call i32 @import_ubuf(i32 noundef %46, ptr noundef %2, i64 noundef %3, ptr noundef nonnull %10) #8 - %48 = icmp slt i32 %47, 0 - br i1 %48, label %51, label %49, !prof !15 - -49: ; preds = %42 - %50 = call i32 @blk_rq_map_user_iov(ptr noundef %43, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %10, i32 noundef %4) - br label %51 - -51: ; preds = %49, %42 - %52 = phi i32 [ %50, %49 ], [ %47, %42 ] + %43 = getelementptr inbounds i8, ptr %0, i64 24 + %44 = load i32, ptr %43, align 8 + %45 = and i32 %44, 1 + %46 = call i32 @import_ubuf(i32 noundef %45, ptr noundef %2, i64 noundef %3, ptr noundef nonnull %10) #8 + %47 = icmp slt i32 %46, 0 + br i1 %47, label %50, label %48, !prof !15 + +48: ; preds = %41 + %49 = call i32 @blk_rq_map_user_iov(ptr noundef %42, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %10, i32 noundef %4) + br label %50 + +50: ; preds = %48, %41 + %51 = phi i32 [ %49, %48 ], [ %46, %41 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #8 - br label %53 + br label %52 -53: ; preds = %51, %40, %38 - %54 = phi i32 [ %52, %51 ], [ 0, %40 ], [ %39, %38 ] - ret i32 %54 +52: ; preds = %50, %39, %37 + %53 = phi i32 [ %51, %50 ], [ 0, %39 ], [ %38, %37 ] + ret i32 %53 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/linux/optimized/genetlink.ll b/bench/linux/optimized/genetlink.ll index 29b724c4532..0bf766023c4 100644 --- a/bench/linux/optimized/genetlink.ll +++ b/bench/linux/optimized/genetlink.ll @@ -3787,7 +3787,7 @@ define internal i32 @genl_rcv_msg(ptr noundef %0, ptr noundef %1, ptr noundef %2 %7 = zext i16 %6 to i64 %8 = tail call ptr @idr_find(ptr noundef nonnull @genl_fam_idr, i64 noundef %7) #15 %9 = icmp eq ptr %8, null - br i1 %9, label %90, label %10 + br i1 %9, label %88, label %10 10: ; preds = %3 %11 = getelementptr inbounds i8, ptr %8, i64 28 @@ -3814,7 +3814,7 @@ define internal i32 @genl_rcv_msg(ptr noundef %0, ptr noundef %1, ptr noundef %2 %24 = icmp ne i8 %23, 0 %25 = icmp eq ptr %21, @init_net %26 = select i1 %24, i1 true, i1 %25 - br i1 %26, label %27, label %84 + br i1 %26, label %27, label %82 27: ; preds = %16 %28 = load i32, ptr %8, align 8 @@ -3822,7 +3822,7 @@ define internal i32 @genl_rcv_msg(ptr noundef %0, ptr noundef %1, ptr noundef %2 %30 = load i32, ptr %1, align 4 %31 = add i32 %28, 20 %32 = icmp ult i32 %30, %31 - br i1 %32, label %84, label %33 + br i1 %32, label %82, label %33 33: ; preds = %27 %34 = load i8, ptr %22, align 2 @@ -3834,7 +3834,7 @@ define internal i32 @genl_rcv_msg(ptr noundef %0, ptr noundef %1, ptr noundef %2 ._crit_edge: ; preds = %33 %.phi.trans.insert = getelementptr inbounds i8, ptr %1, i64 6 %.pre2 = load i16, ptr %.phi.trans.insert, align 2 - br label %57 + br label %55 38: ; preds = %33 %39 = getelementptr i8, ptr %1, i64 18 @@ -3845,90 +3845,89 @@ define internal i32 @genl_rcv_msg(ptr noundef %0, ptr noundef %1, ptr noundef %2 42: ; preds = %38 tail call void @do_trace_netlink_extack(ptr noundef nonnull @genl_header_check.__msg) #15 %43 = icmp eq ptr %2, null - br i1 %43, label %84, label %44 + br i1 %43, label %82, label %44 44: ; preds = %42 store ptr @genl_header_check.__msg, ptr %2, align 8 - br label %84 + br label %82 45: ; preds = %38 %46 = getelementptr inbounds i8, ptr %1, i64 6 %47 = load i16, ptr %46, align 2 %48 = and i16 %47, 768 %49 = icmp eq i16 %48, 768 - %50 = and i16 %47, -782 - %51 = select i1 %49, i16 %50, i16 %47 - %52 = and i16 %51, -14 - %53 = icmp eq i16 %52, 0 - br i1 %53, label %57, label %54 + %.v = select i1 %49, i16 -782, i16 -14 + %50 = and i16 %.v, %47 + %51 = icmp eq i16 %50, 0 + br i1 %51, label %55, label %52 -54: ; preds = %45 +52: ; preds = %45 tail call void @do_trace_netlink_extack(ptr noundef nonnull @genl_header_check.__msg.11) #15 - %55 = icmp eq ptr %2, null - br i1 %55, label %84, label %56 + %53 = icmp eq ptr %2, null + br i1 %53, label %82, label %54 -56: ; preds = %54 +54: ; preds = %52 store ptr @genl_header_check.__msg.11, ptr %2, align 8 - br label %84 - -57: ; preds = %._crit_edge, %45 - %58 = phi i16 [ %.pre2, %._crit_edge ], [ %47, %45 ] - %59 = and i16 %58, 768 - %60 = icmp eq i16 %59, 768 - %61 = select i1 %60, i8 4, i8 2 - %62 = zext i8 %34 to i32 - %63 = call fastcc i32 @genl_get_cmd(i32 noundef %62, i8 noundef zeroext %61, ptr noundef nonnull %8, ptr noundef nonnull %4), !range !97 - %64 = icmp eq i32 %63, 0 - br i1 %64, label %65, label %84 - -65: ; preds = %57 - %66 = getelementptr inbounds i8, ptr %4, i64 38 - %67 = load i8, ptr %66, align 2 - %68 = and i8 %67, 1 - %69 = icmp eq i8 %68, 0 - br i1 %69, label %72, label %70 - -70: ; preds = %65 - %71 = tail call zeroext i1 @netlink_capable(ptr noundef %0, i32 noundef 12) #15 - br i1 %71, label %72, label %84 - -72: ; preds = %70, %65 - %73 = and i8 %67, 16 - %74 = icmp eq i8 %73, 0 - br i1 %74, label %79, label %75 - -75: ; preds = %72 - %76 = getelementptr inbounds i8, ptr %21, i64 80 - %77 = load ptr, ptr %76, align 16 - %78 = tail call zeroext i1 @netlink_ns_capable(ptr noundef %0, ptr noundef %77, i32 noundef 12) #15 - br i1 %78, label %79, label %84 - -79: ; preds = %75, %72 - br i1 %60, label %80, label %82 + br label %82 -80: ; preds = %79 - %81 = call fastcc i32 @genl_family_rcv_msg_dumpit(ptr noundef nonnull %8, ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, i32 noundef %29, ptr noundef %21) - br label %84 +55: ; preds = %._crit_edge, %45 + %56 = phi i16 [ %.pre2, %._crit_edge ], [ %47, %45 ] + %57 = and i16 %56, 768 + %58 = icmp eq i16 %57, 768 + %59 = select i1 %58, i8 4, i8 2 + %60 = zext i8 %34 to i32 + %61 = call fastcc i32 @genl_get_cmd(i32 noundef %60, i8 noundef zeroext %59, ptr noundef nonnull %8, ptr noundef nonnull %4), !range !97 + %62 = icmp eq i32 %61, 0 + br i1 %62, label %63, label %82 + +63: ; preds = %55 + %64 = getelementptr inbounds i8, ptr %4, i64 38 + %65 = load i8, ptr %64, align 2 + %66 = and i8 %65, 1 + %67 = icmp eq i8 %66, 0 + br i1 %67, label %70, label %68 + +68: ; preds = %63 + %69 = tail call zeroext i1 @netlink_capable(ptr noundef %0, i32 noundef 12) #15 + br i1 %69, label %70, label %82 + +70: ; preds = %68, %63 + %71 = and i8 %65, 16 + %72 = icmp eq i8 %71, 0 + br i1 %72, label %77, label %73 + +73: ; preds = %70 + %74 = getelementptr inbounds i8, ptr %21, i64 80 + %75 = load ptr, ptr %74, align 16 + %76 = tail call zeroext i1 @netlink_ns_capable(ptr noundef %0, ptr noundef %75, i32 noundef 12) #15 + br i1 %76, label %77, label %82 + +77: ; preds = %73, %70 + br i1 %58, label %78, label %80 + +78: ; preds = %77 + %79 = call fastcc i32 @genl_family_rcv_msg_dumpit(ptr noundef nonnull %8, ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, i32 noundef %29, ptr noundef %21) + br label %82 -82: ; preds = %79 - %83 = call fastcc i32 @genl_family_rcv_msg_doit(ptr noundef nonnull %8, ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, i32 noundef %29, ptr noundef %21) - br label %84 +80: ; preds = %77 + %81 = call fastcc i32 @genl_family_rcv_msg_doit(ptr noundef nonnull %8, ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, i32 noundef %29, ptr noundef %21) + br label %82 -84: ; preds = %82, %80, %75, %70, %57, %56, %54, %44, %42, %27, %16 - %85 = phi i32 [ %81, %80 ], [ %83, %82 ], [ -22, %27 ], [ -95, %57 ], [ -1, %70 ], [ -1, %75 ], [ -2, %16 ], [ -22, %42 ], [ -22, %44 ], [ -22, %54 ], [ -22, %56 ] +82: ; preds = %80, %78, %73, %68, %55, %54, %52, %44, %42, %27, %16 + %83 = phi i32 [ %79, %78 ], [ %81, %80 ], [ -22, %27 ], [ -95, %55 ], [ -1, %68 ], [ -1, %73 ], [ -2, %16 ], [ -22, %42 ], [ -22, %44 ], [ -22, %52 ], [ -22, %54 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #15 - %86 = load i8, ptr %11, align 4 - %87 = and i8 %86, 2 - %88 = icmp eq i8 %87, 0 - br i1 %88, label %89, label %90 + %84 = load i8, ptr %11, align 4 + %85 = and i8 %84, 2 + %86 = icmp eq i8 %85, 0 + br i1 %86, label %87, label %88 -89: ; preds = %84 +87: ; preds = %82 call void @mutex_unlock(ptr noundef nonnull @genl_mutex) #15 - br label %90 + br label %88 -90: ; preds = %89, %84, %3 - %91 = phi i32 [ -2, %3 ], [ %85, %84 ], [ %85, %89 ] - ret i32 %91 +88: ; preds = %87, %82, %3 + %89 = phi i32 [ -2, %3 ], [ %83, %82 ], [ %83, %87 ] + ret i32 %89 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/linux/optimized/idma32.ll b/bench/linux/optimized/idma32.ll index ab4976f4b45..4e8d4638ca7 100644 --- a/bench/linux/optimized/idma32.ll +++ b/bench/linux/optimized/idma32.ll @@ -242,12 +242,11 @@ define internal void @idma32_resume_chan(ptr nocapture noundef readonly %0, i1 n %4 = load ptr, ptr %3, align 8 %5 = getelementptr inbounds i8, ptr %4, i64 64 %6 = tail call i32 asm sideeffect "movl $1,$0", "=r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) %5) #11, !srcloc !5 - %7 = and i32 %6, -1281 - %8 = select i1 %1, i32 %7, i32 %6 - %9 = and i32 %8, -257 - %10 = load ptr, ptr %3, align 8 - %11 = getelementptr inbounds i8, ptr %10, i64 64 - tail call void asm sideeffect "movl $0,$1", "r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(i32 %9, ptr elementtype(i32) %11) #11, !srcloc !6 + %.v = select i1 %1, i32 -1281, i32 -257 + %7 = and i32 %6, %.v + %8 = load ptr, ptr %3, align 8 + %9 = getelementptr inbounds i8, ptr %8, i64 64 + tail call void asm sideeffect "movl $0,$1", "r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(i32 %7, ptr elementtype(i32) %9) #11, !srcloc !6 ret void } diff --git a/bench/linux/optimized/process_64.ll b/bench/linux/optimized/process_64.ll index ffcdb489fda..fa6c3233220 100644 --- a/bench/linux/optimized/process_64.ll +++ b/bench/linux/optimized/process_64.ll @@ -1106,15 +1106,15 @@ define dso_local noundef ptr @__switch_to(ptr noundef returned %0, ptr noundef % %116 = getelementptr inbounds i8, ptr %1, i64 2854 %117 = load i16, ptr %116, align 2 %118 = icmp eq i16 %117, 0 - %or.cond11 = select i1 %115, i1 %118, i1 false - br i1 %or.cond11, label %120, label %._crit_edge8, !prof !74 + %or.cond12 = select i1 %115, i1 %118, i1 false + br i1 %or.cond12, label %120, label %._crit_edge9, !prof !74 -._crit_edge8: ; preds = %113 +._crit_edge9: ; preds = %113 %119 = zext i16 %117 to i32 tail call fastcc void @load_gs_index(i32 noundef %119) br label %120 -120: ; preds = %113, %._crit_edge8 +120: ; preds = %113, %._crit_edge9 %121 = getelementptr inbounds i8, ptr %1, i64 2856 %122 = load i64, ptr %121, align 8 tail call void asm sideeffect "wrfsbase $0", "r,~{memory},~{dirflag},~{fpsr},~{flags}"(i64 %122) #11, !srcloc !75 @@ -1345,44 +1345,39 @@ define dso_local noundef ptr @__switch_to(ptr noundef returned %0, ptr noundef % %218 = load volatile i64, ptr %1, align 8 %219 = load volatile i64, ptr %0, align 8 callbr void asm sideeffect "1:jmp ${2:l}\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 @switch_to_cond_stibp, i1 true) #11 - to label %220 [label %223], !srcloc !80 + to label %221 [label %220], !srcloc !80 220: ; preds = %211 - %221 = and i64 %218, 42041888 - %222 = and i64 %219, 46238240 - br label %226 - -223: ; preds = %211 - %224 = and i64 %219, 46237728 - %225 = and i64 %218, 42041376 - br label %226 - -226: ; preds = %220, %223 - %227 = phi i64 [ %224, %223 ], [ %222, %220 ] - %228 = phi i64 [ %225, %223 ], [ %221, %220 ] - %229 = icmp ne i64 %228, 0 - %230 = icmp ne i64 %227, 0 - %231 = select i1 %229, i1 true, i1 %230, !prof !37 - br i1 %231, label %232, label %233, !prof !37 - -232: ; preds = %226 + br label %221 + +221: ; preds = %211, %220 + %.sink = phi i64 [ 42041376, %220 ], [ 42041888, %211 ] + %222 = phi i64 [ 46237728, %220 ], [ 46238240, %211 ] + %223 = and i64 %218, %.sink + %224 = icmp ne i64 %223, 0 + %225 = and i64 %222, %219 + %226 = icmp ne i64 %225, 0 + %227 = select i1 %224, i1 true, i1 %226, !prof !37 + br i1 %227, label %228, label %229, !prof !37 + +228: ; preds = %221 call void @__switch_to_xtra(ptr noundef %0, ptr noundef %1) #11 - br label %233 + br label %229 -233: ; preds = %232, %226 +229: ; preds = %228, %221 callbr void asm sideeffect "# ALT: oldinstr2\0A661:\0A\09jmp 6f\0A662:\0A# ALT: padding2\0A.skip -((((6651f-6641f) ^ (((6651f-6641f) ^ (6652f-6642f)) & -(-((6651f-6641f) < (6652f-6642f))))) - (662b-661b)) > 0) * (((6651f-6641f) ^ (((6651f-6641f) ^ (6652f-6642f)) & -(-((6651f-6641f) < (6652f-6642f))))) - (662b-661b)), 0x90\0A663:\0A.pushsection .altinstructions,\22a\22\0A .long 661b - .\0A .long 6641f - .\0A .4byte ( 3*32+21)\0A .byte 663b-661b\0A .byte 6651f-6641f\0A .long 661b - .\0A .long 6642f - .\0A .4byte ${0:P}\0A .byte 663b-661b\0A .byte 6652f-6642f\0A.popsection\0A.pushsection .altinstr_replacement, \22ax\22\0A# ALT: replacement 1\0A6641:\0A\09jmp ${4:l}\0A6651:\0A# ALT: replacement 2\0A6642:\0A\09\0A6652:\0A.popsection\0A.pushsection .altinstr_aux,\22ax\22\0A6:\0A testb $1,${2:P} (% rip)\0A jnz ${3:l}\0A jmp ${4:l}\0A.popsection\0A", "i,i,i,!i,!i,~{dirflag},~{fpsr},~{flags}"(i16 680, i32 1, ptr nonnull getelementptr inbounds (i8, ptr @boot_cpu_data, i64 125)) #11 - to label %234 [label %234, label %239], !srcloc !22 + to label %230 [label %230, label %235], !srcloc !22 -234: ; preds = %233, %233 - %235 = call i16 asm "mov %ss,$0", "=r,~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !81 - %236 = icmp eq i16 %235, 24 - br i1 %236, label %239, label %237 +230: ; preds = %229, %229 + %231 = call i16 asm "mov %ss,$0", "=r,~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !81 + %232 = icmp eq i16 %231, 24 + br i1 %232, label %235, label %233 -237: ; preds = %234 - %238 = call i16 asm sideeffect "\09\09\09\09\09\09\0A1:\09movl ${0:k},%ss\09\09\0A .pushsection \22__ex_table\22,\22a\22\0A .balign 4\0A .long (1b) - .\0A .long (1b) - .\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:k}, type=(17 $| ((0) << 16)) \0A.purgem extable_type_reg\0A .popsection\0A", "=r,0,~{memory},~{dirflag},~{fpsr},~{flags}"(i16 24) #11, !srcloc !82 - br label %239 +233: ; preds = %230 + %234 = call i16 asm sideeffect "\09\09\09\09\09\09\0A1:\09movl ${0:k},%ss\09\09\0A .pushsection \22__ex_table\22,\22a\22\0A .balign 4\0A .long (1b) - .\0A .long (1b) - .\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:k}, type=(17 $| ((0) << 16)) \0A.purgem extable_type_reg\0A .popsection\0A", "=r,0,~{memory},~{dirflag},~{fpsr},~{flags}"(i16 24) #11, !srcloc !82 + br label %235 -239: ; preds = %237, %234, %233 +235: ; preds = %233, %230, %229 ret ptr %0 } diff --git a/bench/linux/optimized/raw.ll b/bench/linux/optimized/raw.ll index 51341408031..aac88b12690 100644 --- a/bench/linux/optimized/raw.ll +++ b/bench/linux/optimized/raw.ll @@ -1496,14 +1496,14 @@ define internal i32 @rawv6_sendmsg(ptr noundef %0, ptr noundef %1, i64 noundef % %22 = getelementptr inbounds i8, ptr %1, i64 8 %23 = load i32, ptr %22, align 8 %24 = icmp ugt i64 %2, 2147483647 - br i1 %24, label %355, label %25 + br i1 %24, label %354, label %25 25: ; preds = %20 %26 = getelementptr inbounds i8, ptr %1, i64 68 %27 = load i32, ptr %26, align 4 %28 = and i32 %27, 1 %29 = icmp eq i32 %28, 0 - br i1 %29, label %30, label %355 + br i1 %29, label %30, label %354 30: ; preds = %25 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %4, i8 0, i64 64, i1 false), !annotation !6 @@ -1543,11 +1543,11 @@ define internal i32 @rawv6_sendmsg(ptr noundef %0, ptr noundef %1, i64 noundef % 51: ; preds = %30 %52 = icmp slt i32 %23, 24 - br i1 %52, label %355, label %53 + br i1 %52, label %354, label %53 53: ; preds = %51 %54 = load i16, ptr %10, align 4 - switch i16 %54, label %355 [ + switch i16 %54, label %354 [ i16 0, label %55 i16 10, label %55 ] @@ -1570,12 +1570,12 @@ define internal i32 @rawv6_sendmsg(ptr noundef %0, ptr noundef %1, i64 noundef % %66 = icmp eq i16 %63, %65 %67 = icmp eq i16 %65, 255 %68 = or i1 %66, %67 - br i1 %68, label %69, label %355 + br i1 %68, label %69, label %354 69: ; preds = %62, %59 %70 = phi i16 [ %63, %62 ], [ %61, %59 ] %71 = icmp ugt i16 %70, 255 - br i1 %71, label %355, label %72 + br i1 %71, label %354, label %72 72: ; preds = %69 %73 = getelementptr inbounds i8, ptr %10, i64 8 @@ -1597,7 +1597,7 @@ define internal i32 @rawv6_sendmsg(ptr noundef %0, ptr noundef %1, i64 noundef % 84: ; preds = %77 %85 = tail call fastcc ptr @fl6_sock_lookup(ptr noundef %0, i32 noundef %80) %86 = icmp ugt ptr %85, inttoptr (i64 -4096 to ptr) - br i1 %86, label %355, label %87 + br i1 %86, label %354, label %87 87: ; preds = %84, %77, %72 %88 = phi ptr [ %85, %84 ], [ null, %77 ], [ null, %72 ] @@ -1642,7 +1642,7 @@ define internal i32 @rawv6_sendmsg(ptr noundef %0, ptr noundef %1, i64 noundef % 117: ; preds = %30 %118 = load volatile i8, ptr %11, align 2 %119 = icmp eq i8 %118, 1 - br i1 %119, label %120, label %355 + br i1 %119, label %120, label %354 120: ; preds = %117 %121 = getelementptr inbounds i8, ptr %0, i64 14 @@ -1692,12 +1692,12 @@ thread-pre-split.thread: ; preds = %120, %110, %106, %1 148: ; preds = %141 %149 = icmp eq ptr %136, null - br i1 %149, label %355, label %150 + br i1 %149, label %354, label %150 150: ; preds = %148 %151 = getelementptr inbounds i8, ptr %136, i64 12 call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; decl $0", "=*m,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) %151, ptr elementtype(i32) %151) #13, !srcloc !23 - br label %355 + br label %354 152: ; preds = %141 %153 = getelementptr inbounds i8, ptr %8, i64 72 @@ -1711,7 +1711,7 @@ thread-pre-split.thread: ; preds = %120, %110, %106, %1 159: ; preds = %152 %160 = call fastcc ptr @fl6_sock_lookup(ptr noundef %0, i32 noundef %154) %161 = icmp ugt ptr %160, inttoptr (i64 -4096 to ptr) - br i1 %161, label %355, label %162 + br i1 %161, label %354, label %162 162: ; preds = %159, %152 %163 = phi ptr [ %136, %152 ], [ %160, %159 ] @@ -1959,10 +1959,10 @@ select.unfold: ; preds = %162, %134 %301 = load i32, ptr %26, align 4 %302 = and i32 %301, 2064 %or.cond.not = icmp eq i32 %302, 2064 - br i1 %or.cond.not, label %342, label %.thread + br i1 %or.cond.not, label %341, label %.thread -.thread: ; preds = %351, %300 - %303 = phi i32 [ %352, %351 ], [ %301, %300 ] +.thread: ; preds = %350, %300 + %303 = phi i32 [ %351, %350 ], [ %301, %300 ] br i1 %34, label %307, label %304 304: ; preds = %.thread @@ -1999,9 +1999,9 @@ select.unfold: ; preds = %162, %134 call void @release_sock(ptr noundef %0) #13 br label %321 -321: ; preds = %351, %319, %304 - %322 = phi ptr [ %.pre32, %304 ], [ %266, %319 ], [ %266, %351 ] - %323 = phi i32 [ %306, %304 ], [ %320, %319 ], [ 0, %351 ] +321: ; preds = %350, %319, %304 + %322 = phi ptr [ %.pre32, %304 ], [ %266, %319 ], [ %266, %350 ] + %323 = phi i32 [ %306, %304 ], [ %320, %319 ], [ 0, %350 ] call void @dst_release(ptr noundef %322) #13 br label %324 @@ -2039,43 +2039,42 @@ select.unfold: ; preds = %162, %134 .thread31: ; preds = %333, %335, %336, %328 %338 = icmp slt i32 %325, 0 - %339 = zext i32 %325 to i64 - %340 = select i1 %338, i64 %339, i64 %2 - %341 = trunc nuw i64 %340 to i32 - br label %355 - -342: ; preds = %300 - %343 = getelementptr inbounds i8, ptr %266, i64 8 - %344 = load ptr, ptr %343, align 8 - %345 = getelementptr inbounds i8, ptr %344, i64 112 - %346 = load ptr, ptr %345, align 16 - %347 = icmp eq ptr %346, null - br i1 %347, label %351, label %348 - -348: ; preds = %342 - %349 = getelementptr inbounds i8, ptr %8, i64 40 - call void %346(ptr noundef %266, ptr noundef %349) #13 + %339 = trunc nuw i64 %2 to i32 + %340 = select i1 %338, i32 %325, i32 %339 + br label %354 + +341: ; preds = %300 + %342 = getelementptr inbounds i8, ptr %266, i64 8 + %343 = load ptr, ptr %342, align 8 + %344 = getelementptr inbounds i8, ptr %343, i64 112 + %345 = load ptr, ptr %344, align 16 + %346 = icmp eq ptr %345, null + br i1 %346, label %350, label %347 + +347: ; preds = %341 + %348 = getelementptr inbounds i8, ptr %8, i64 40 + call void %345(ptr noundef %266, ptr noundef %348) #13 %.pre = load i32, ptr %26, align 4 %.pre33 = and i32 %.pre, 16 - %350 = icmp eq i32 %.pre33, 0 - br label %351 - -351: ; preds = %348, %342 - %.pre-phi = phi i1 [ %350, %348 ], [ false, %342 ] - %352 = phi i32 [ %.pre, %348 ], [ %301, %342 ] - %353 = icmp ne i64 %2, 0 - %354 = or i1 %353, %.pre-phi - br i1 %354, label %.thread, label %321 - -355: ; preds = %.thread31, %159, %150, %148, %117, %84, %69, %62, %53, %51, %25, %20 - %356 = phi i32 [ %341, %.thread31 ], [ -90, %20 ], [ -95, %25 ], [ -22, %51 ], [ -97, %53 ], [ -22, %62 ], [ -22, %69 ], [ -22, %84 ], [ -89, %117 ], [ -22, %159 ], [ %146, %148 ], [ %146, %150 ] + %349 = icmp eq i32 %.pre33, 0 + br label %350 + +350: ; preds = %347, %341 + %.pre-phi = phi i1 [ %349, %347 ], [ false, %341 ] + %351 = phi i32 [ %.pre, %347 ], [ %301, %341 ] + %352 = icmp ne i64 %2, 0 + %353 = or i1 %352, %.pre-phi + br i1 %353, label %.thread, label %321 + +354: ; preds = %.thread31, %159, %150, %148, %117, %84, %69, %62, %53, %51, %25, %20 + %355 = phi i32 [ %340, %.thread31 ], [ -90, %20 ], [ -95, %25 ], [ -22, %51 ], [ -97, %53 ], [ -22, %62 ], [ -22, %69 ], [ -22, %84 ], [ -89, %117 ], [ -22, %159 ], [ %146, %148 ], [ %146, %150 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #13 call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %8) #13 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #13 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #13 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #13 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #13 - ret i32 %356 + ret i32 %355 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/llvm/optimized/AArch64LegalizerInfo.cpp.ll b/bench/llvm/optimized/AArch64LegalizerInfo.cpp.ll index aeef3f9c0c9..9e204a82efc 100644 --- a/bench/llvm/optimized/AArch64LegalizerInfo.cpp.ll +++ b/bench/llvm/optimized/AArch64LegalizerInfo.cpp.ll @@ -18979,8 +18979,8 @@ _ZNK4llvm12MachineInstr17memoperands_beginEv.exit: ; preds = %43, %45 %149 = and i64 %146, 7 %150 = icmp eq i64 %149, 0 %151 = and i1 %148, %150 - %152 = trunc i64 %146 to i16 %spec.select176 = select i1 %151, i32 %139, i32 %120 + %152 = trunc i64 %146 to i16 %153 = sdiv i16 %152, 8 %154 = sext i16 %153 to i64 %155 = select i1 %151, i64 %154, i64 0 @@ -28784,19 +28784,23 @@ _ZNK4llvm3LLT19getScalarSizeInBitsEv.exit18.thread3.i.i.i: ; preds = %39 %43 = and i64 %18, 2 %.not2.i16.i.i.i = icmp eq i64 %43, 0 %44 = lshr i64 %18, 19 - %45 = and i64 %44, 65535 - %spec.select.i17.i.i.i = select i1 %.not2.i16.i.i.i, i64 %44, i64 %45 - %46 = and i64 %spec.select.i17.i.i.i, 4294967295 - %47 = icmp eq i64 %46, 8 - br i1 %47, label %"_ZSt10__invoke_rIbRZN4llvm20AArch64LegalizerInfoC1ERKNS0_16AArch64SubtargetEE4$_24JRKNS0_13LegalityQueryEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESB_E4typeEOSC_DpOSD_.exit", label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit25.i.i.i + %.v.i.i.i = select i1 %.not2.i16.i.i.i, i64 4294967295, i64 65535 + %45 = and i64 %.v.i.i.i, %44 + %46 = icmp eq i64 %45, 8 + br i1 %46, label %"_ZSt10__invoke_rIbRZN4llvm20AArch64LegalizerInfoC1ERKNS0_16AArch64SubtargetEE4$_24JRKNS0_13LegalityQueryEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESB_E4typeEOSC_DpOSD_.exit", label %.thread5.i.i.i _ZNK4llvm3LLT19getScalarSizeInBitsEv.exit18.thread.i.i.i: ; preds = %38 - %48 = and i64 %18, 34359738360 - %49 = icmp eq i64 %48, 64 - br i1 %49, label %"_ZSt10__invoke_rIbRZN4llvm20AArch64LegalizerInfoC1ERKNS0_16AArch64SubtargetEE4$_24JRKNS0_13LegalityQueryEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESB_E4typeEOSC_DpOSD_.exit", label %.thread.i.i.i + %47 = and i64 %18, 34359738360 + %48 = icmp eq i64 %47, 64 + br i1 %48, label %"_ZSt10__invoke_rIbRZN4llvm20AArch64LegalizerInfoC1ERKNS0_16AArch64SubtargetEE4$_24JRKNS0_13LegalityQueryEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESB_E4typeEOSC_DpOSD_.exit", label %.thread.i.i.i .thread.i.i.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit18.thread.i.i.i - %50 = lshr i64 %18, 3 + %49 = lshr i64 %18, 3 + br label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit25.i.i.i + +.thread5.i.i.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit18.thread3.i.i.i + %50 = and i64 %44, 65535 + %spec.select.i24.i.i.i = select i1 %.not2.i16.i.i.i, i64 %44, i64 %50 br label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit25.i.i.i 51: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit18.i.i.i @@ -28804,8 +28808,8 @@ _ZNK4llvm3LLT19getScalarSizeInBitsEv.exit18.thread.i.i.i: ; preds = %38 %53 = and i64 %52, 65535 br label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit25.i.i.i -_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit25.i.i.i: ; preds = %51, %.thread.i.i.i, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit18.thread3.i.i.i - %.0.in.i20.i.i.i = phi i64 [ %50, %.thread.i.i.i ], [ %53, %51 ], [ %spec.select.i17.i.i.i, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit18.thread3.i.i.i ] +_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit25.i.i.i: ; preds = %51, %.thread5.i.i.i, %.thread.i.i.i + %.0.in.i20.i.i.i = phi i64 [ %49, %.thread.i.i.i ], [ %53, %51 ], [ %spec.select.i24.i.i.i, %.thread5.i.i.i ] %54 = and i64 %.0.in.i20.i.i.i, 4294967295 %55 = icmp eq i64 %54, 16 br label %"_ZSt10__invoke_rIbRZN4llvm20AArch64LegalizerInfoC1ERKNS0_16AArch64SubtargetEE4$_24JRKNS0_13LegalityQueryEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESB_E4typeEOSC_DpOSD_.exit" diff --git a/bench/llvm/optimized/CGRecordLayoutBuilder.cpp.ll b/bench/llvm/optimized/CGRecordLayoutBuilder.cpp.ll index 2dbff508cad..c9fac6888e0 100644 --- a/bench/llvm/optimized/CGRecordLayoutBuilder.cpp.ll +++ b/bench/llvm/optimized/CGRecordLayoutBuilder.cpp.ll @@ -3378,33 +3378,32 @@ _ZNSt6vectorIN12_GLOBAL__N_116CGRecordLowering10MemberInfoESaIS2_EE9push_backEOS ._crit_edge.loopexit.i: ; preds = %1290 %.val12.pre.i = load ptr, ptr %1197, align 8 %.pre51.pre.pre.i = load i8, ptr %1254, align 8 - %.pre = and i8 %.pre51.pre.pre.i, 4 - %1292 = icmp eq i8 %.pre, 0 br label %._crit_edge.i114 ._crit_edge.i114: ; preds = %._crit_edge.loopexit.i, %1263 - %.pre-phi = phi i1 [ %1292, %._crit_edge.loopexit.i ], [ true, %1263 ] - %.pre51.pre.i = phi i8 [ %.pre51.pre.pre.i, %._crit_edge.loopexit.i ], [ %1255, %1263 ] - %.val12.i = phi ptr [ %.val12.pre.i, %._crit_edge.loopexit.i ], [ %.val10.i, %1263 ] - %.sroa.037.0.lcssa.i = phi i64 [ %.sroa.037.1.i, %._crit_edge.loopexit.i ], [ 1, %1263 ] - %.sroa.040.0.lcssa.i = phi i64 [ %.sroa.040.1.i, %._crit_edge.loopexit.i ], [ 1, %1263 ] - %1293 = getelementptr inbounds i8, ptr %.val12.i, i64 -32 - %1294 = load i64, ptr %1293, align 8 - %1295 = srem i64 %1294, %.sroa.040.0.lcssa.i - %1296 = srem i64 %storemerge.i110, %.sroa.037.0.lcssa.i - %1297 = or i64 %1296, %1295 - %1298 = icmp eq i64 %1297, 0 - br i1 %1298, label %1300, label %.thread + %.pre51.pre.i = phi i8 [ %1255, %1263 ], [ %.pre51.pre.pre.i, %._crit_edge.loopexit.i ] + %.val12.i = phi ptr [ %.val10.i, %1263 ], [ %.val12.pre.i, %._crit_edge.loopexit.i ] + %.sroa.037.0.lcssa.i = phi i64 [ 1, %1263 ], [ %.sroa.037.1.i, %._crit_edge.loopexit.i ] + %.sroa.040.0.lcssa.i = phi i64 [ 1, %1263 ], [ %.sroa.040.1.i, %._crit_edge.loopexit.i ] + %1292 = getelementptr inbounds i8, ptr %.val12.i, i64 -32 + %1293 = load i64, ptr %1292, align 8 + %1294 = srem i64 %1293, %.sroa.040.0.lcssa.i + %1295 = srem i64 %storemerge.i110, %.sroa.037.0.lcssa.i + %1296 = or i64 %1295, %1294 + %1297 = icmp eq i64 %1296, 0 + br i1 %1297, label %1299, label %.thread .thread: ; preds = %._crit_edge.i114 - %1299 = or i8 %.pre51.pre.i, 4 - store i8 %1299, ptr %1254, align 8 + %1298 = or i8 %.pre51.pre.i, 4 + store i8 %1298, ptr %1254, align 8 br label %_ZN12_GLOBAL__N_116CGRecordLowering15determinePackedEb.exit -1300: ; preds = %._crit_edge.i114 - br i1 %.pre-phi, label %1301, label %_ZN12_GLOBAL__N_116CGRecordLowering15determinePackedEb.exit +1299: ; preds = %._crit_edge.i114 + %1300 = and i8 %.pre51.pre.i, 4 + %.not4.i196 = icmp eq i8 %1300, 0 + br i1 %.not4.i196, label %1301, label %_ZN12_GLOBAL__N_116CGRecordLowering15determinePackedEb.exit -1301: ; preds = %1300 +1301: ; preds = %1299 %1302 = load ptr, ptr %1211, align 8 %1303 = call noundef i64 @_ZNK5clang10ASTContext6toBitsENS_9CharUnitsE(ptr noundef nonnull align 8 dereferenceable(23096) %1302, i64 %.sroa.040.0.lcssa.i) #18 %1304 = load ptr, ptr %1211, align 8 @@ -3433,8 +3432,8 @@ _ZNSt6vectorIN12_GLOBAL__N_116CGRecordLowering10MemberInfoESaIS2_EE9push_backEOS %.val7.i.pre = load ptr, ptr %1197, align 8 br label %_ZN12_GLOBAL__N_116CGRecordLowering15determinePackedEb.exit -_ZN12_GLOBAL__N_116CGRecordLowering15determinePackedEb.exit: ; preds = %.thread, %_ZNSt6vectorIN12_GLOBAL__N_116CGRecordLowering10MemberInfoESaIS2_EE9push_backEOS2_.exit, %1300, %1301 - %.val7.i = phi ptr [ %.val10.i, %_ZNSt6vectorIN12_GLOBAL__N_116CGRecordLowering10MemberInfoESaIS2_EE9push_backEOS2_.exit ], [ %.val12.i, %1300 ], [ %.val7.i.pre, %1301 ], [ %.val12.i, %.thread ] +_ZN12_GLOBAL__N_116CGRecordLowering15determinePackedEb.exit: ; preds = %.thread, %_ZNSt6vectorIN12_GLOBAL__N_116CGRecordLowering10MemberInfoESaIS2_EE9push_backEOS2_.exit, %1299, %1301 + %.val7.i = phi ptr [ %.val10.i, %_ZNSt6vectorIN12_GLOBAL__N_116CGRecordLowering10MemberInfoESaIS2_EE9push_backEOS2_.exit ], [ %.val12.i, %1299 ], [ %.val7.i.pre, %1301 ], [ %.val12.i, %.thread ] %.val8.i116 = load ptr, ptr %1196, align 8 %.not7386.i = icmp eq ptr %.val8.i116, %.val7.i br i1 %.not7386.i, label %_ZN12_GLOBAL__N_116CGRecordLowering13insertPaddingEv.exit, label %.lr.ph.i117 diff --git a/bench/llvm/optimized/CodeExtractor.cpp.ll b/bench/llvm/optimized/CodeExtractor.cpp.ll index 5ac1f1f8a06..f543e82b9cb 100644 --- a/bench/llvm/optimized/CodeExtractor.cpp.ll +++ b/bench/llvm/optimized/CodeExtractor.cpp.ll @@ -1406,82 +1406,81 @@ _ZN4llvm14iterator_rangeINS_20filter_iterator_implINS_21ilist_iterator_w_bitsINS br i1 %.not18, label %._crit_edge26, label %30 .lr.ph: ; preds = %_ZNK4llvm14iterator_rangeINS_20filter_iterator_implINS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEESt8functionIFbRS5_EESt26bidirectional_iterator_tagEEE3endEv.exit, %_ZN4llvm20filter_iterator_baseINS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEESt8functionIFbRS4_EESt26bidirectional_iterator_tagEppEv.exit - %60 = phi ptr [ %94, %_ZN4llvm20filter_iterator_baseINS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEESt8functionIFbRS4_EESt26bidirectional_iterator_tagEppEv.exit ], [ %45, %_ZNK4llvm14iterator_rangeINS_20filter_iterator_implINS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEESt8functionIFbRS5_EESt26bidirectional_iterator_tagEEE3endEv.exit ] + %60 = phi ptr [ %93, %_ZN4llvm20filter_iterator_baseINS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEESt8functionIFbRS4_EESt26bidirectional_iterator_tagEppEv.exit ], [ %45, %_ZNK4llvm14iterator_rangeINS_20filter_iterator_implINS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEESt8functionIFbRS5_EESt26bidirectional_iterator_tagEEE3endEv.exit ] %61 = icmp eq ptr %60, null %62 = getelementptr inbounds i8, ptr %60, i64 -24 - %63 = select i1 %61, ptr null, ptr %62 - %64 = load i8, ptr %63, align 8 - %65 = icmp ne i8 %64, 60 - %66 = ptrtoint ptr %63 to i64 - %.not = or i1 %61, %65 - br i1 %.not, label %77, label %67 - -67: ; preds = %.lr.ph - %68 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #18 - %69 = add i64 %68, 1 - %70 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE8capacityEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #18 - %.not.i.i.i = icmp ugt i64 %69, %70 - br i1 %.not.i.i.i, label %71, label %_ZN4llvm23SmallVectorTemplateBaseIPNS_10AllocaInstELb1EE9push_backES2_.exit - -71: ; preds = %67 - call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull %6, i64 noundef %69, i64 noundef 8) #18 + %63 = load i8, ptr %62, align 8 + %64 = icmp ne i8 %63, 60 + %.not = or i1 %61, %64 + br i1 %.not, label %76, label %65 + +65: ; preds = %.lr.ph + %66 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #18 + %67 = add i64 %66, 1 + %68 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE8capacityEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #18 + %.not.i.i.i = icmp ugt i64 %67, %68 + br i1 %.not.i.i.i, label %69, label %_ZN4llvm23SmallVectorTemplateBaseIPNS_10AllocaInstELb1EE9push_backES2_.exit + +69: ; preds = %65 + call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull %6, i64 noundef %67, i64 noundef 8) #18 br label %_ZN4llvm23SmallVectorTemplateBaseIPNS_10AllocaInstELb1EE9push_backES2_.exit -_ZN4llvm23SmallVectorTemplateBaseIPNS_10AllocaInstELb1EE9push_backES2_.exit: ; preds = %67, %71 - %72 = load ptr, ptr %0, align 8 - %73 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #18 - %74 = getelementptr inbounds ptr, ptr %72, i64 %73 - store i64 %66, ptr %74, align 1 - %75 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #18 - %76 = add i64 %75, 1 - call void @_ZN4llvm15SmallVectorBaseIjE8set_sizeEm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %76) #18 +_ZN4llvm23SmallVectorTemplateBaseIPNS_10AllocaInstELb1EE9push_backES2_.exit: ; preds = %65, %69 + %70 = load ptr, ptr %0, align 8 + %71 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #18 + %72 = getelementptr inbounds ptr, ptr %70, i64 %71 + %73 = ptrtoint ptr %62 to i64 + store i64 %73, ptr %72, align 1 + %74 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #18 + %75 = add i64 %74, 1 + call void @_ZN4llvm15SmallVectorBaseIjE8set_sizeEm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %75) #18 %.pre = load ptr, ptr %4, align 8 - br label %77 + br label %76 -77: ; preds = %.lr.ph, %_ZN4llvm23SmallVectorTemplateBaseIPNS_10AllocaInstELb1EE9push_backES2_.exit - %78 = phi ptr [ %60, %.lr.ph ], [ %.pre, %_ZN4llvm23SmallVectorTemplateBaseIPNS_10AllocaInstELb1EE9push_backES2_.exit ] - %79 = getelementptr inbounds nuw i8, ptr %78, i64 8 - %80 = load ptr, ptr %79, align 8 - store ptr %80, ptr %4, align 8 +76: ; preds = %.lr.ph, %_ZN4llvm23SmallVectorTemplateBaseIPNS_10AllocaInstELb1EE9push_backES2_.exit + %77 = phi ptr [ %60, %.lr.ph ], [ %.pre, %_ZN4llvm23SmallVectorTemplateBaseIPNS_10AllocaInstELb1EE9push_backES2_.exit ] + %78 = getelementptr inbounds nuw i8, ptr %77, i64 8 + %79 = load ptr, ptr %78, align 8 + store ptr %79, ptr %4, align 8 store i8 0, ptr %28, align 8 store i8 0, ptr %29, align 1 - %81 = load ptr, ptr %11, align 8 - %.not1.i.i = icmp eq ptr %80, %81 + %80 = load ptr, ptr %11, align 8 + %.not1.i.i = icmp eq ptr %79, %80 br i1 %.not1.i.i, label %_ZN4llvm20filter_iterator_baseINS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEESt8functionIFbRS4_EESt26bidirectional_iterator_tagEppEv.exit, label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %77, %90 - %82 = phi ptr [ %92, %90 ], [ %80, %77 ] - %83 = load ptr, ptr %17, align 8 - %.not.i.i.i.i14 = icmp eq ptr %83, null - br i1 %.not.i.i.i.i14, label %84, label %_ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i +.lr.ph.i.i: ; preds = %76, %89 + %81 = phi ptr [ %91, %89 ], [ %79, %76 ] + %82 = load ptr, ptr %17, align 8 + %.not.i.i.i.i14 = icmp eq ptr %82, null + br i1 %.not.i.i.i.i14, label %83, label %_ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i -84: ; preds = %.lr.ph.i.i +83: ; preds = %.lr.ph.i.i call void @_ZSt25__throw_bad_function_callv() #19 unreachable _ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i: ; preds = %.lr.ph.i.i - %85 = icmp eq ptr %82, null - %86 = getelementptr inbounds i8, ptr %82, i64 -24 - %87 = select i1 %85, ptr null, ptr %86 - %88 = load ptr, ptr %16, align 8 - %89 = call noundef zeroext i1 %88(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(72) %87) #18 + %84 = icmp eq ptr %81, null + %85 = getelementptr inbounds i8, ptr %81, i64 -24 + %86 = select i1 %84, ptr null, ptr %85 + %87 = load ptr, ptr %16, align 8 + %88 = call noundef zeroext i1 %87(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(72) %86) #18 %.pre27.pre = load ptr, ptr %4, align 8 - br i1 %89, label %_ZN4llvm20filter_iterator_baseINS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEESt8functionIFbRS4_EESt26bidirectional_iterator_tagEppEv.exit, label %90 + br i1 %88, label %_ZN4llvm20filter_iterator_baseINS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEESt8functionIFbRS4_EESt26bidirectional_iterator_tagEppEv.exit, label %89 -90: ; preds = %_ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i - %91 = getelementptr inbounds nuw i8, ptr %.pre27.pre, i64 8 - %92 = load ptr, ptr %91, align 8 - store ptr %92, ptr %4, align 8 +89: ; preds = %_ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i + %90 = getelementptr inbounds nuw i8, ptr %.pre27.pre, i64 8 + %91 = load ptr, ptr %90, align 8 + store ptr %91, ptr %4, align 8 store i8 0, ptr %28, align 8 store i8 0, ptr %29, align 1 - %93 = load ptr, ptr %11, align 8 - %.not.i.i = icmp eq ptr %92, %93 + %92 = load ptr, ptr %11, align 8 + %.not.i.i = icmp eq ptr %91, %92 br i1 %.not.i.i, label %_ZN4llvm20filter_iterator_baseINS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEESt8functionIFbRS4_EESt26bidirectional_iterator_tagEppEv.exit, label %.lr.ph.i.i, !llvm.loop !25 -_ZN4llvm20filter_iterator_baseINS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEESt8functionIFbRS4_EESt26bidirectional_iterator_tagEppEv.exit: ; preds = %_ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i, %90, %77 - %94 = phi ptr [ %80, %77 ], [ %.pre27.pre, %_ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i ], [ %92, %90 ] - %95 = load ptr, ptr %5, align 8 - %.not19 = icmp eq ptr %94, %95 +_ZN4llvm20filter_iterator_baseINS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEESt8functionIFbRS4_EESt26bidirectional_iterator_tagEppEv.exit: ; preds = %_ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i, %89, %76 + %93 = phi ptr [ %79, %76 ], [ %.pre27.pre, %_ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i ], [ %91, %89 ] + %94 = load ptr, ptr %5, align 8 + %.not19 = icmp eq ptr %93, %94 br i1 %.not19, label %._crit_edge.loopexit, label %.lr.ph ._crit_edge26: ; preds = %_ZN4llvm14iterator_rangeINS_20filter_iterator_implINS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsINS_11InstructionELb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEESt8functionIFbRS5_EESt26bidirectional_iterator_tagEEED2Ev.exit, %2 diff --git a/bench/llvm/optimized/CommandFlags.cpp.ll b/bench/llvm/optimized/CommandFlags.cpp.ll index b5f7c85deb6..77725407ae9 100644 --- a/bench/llvm/optimized/CommandFlags.cpp.ll +++ b/bench/llvm/optimized/CommandFlags.cpp.ll @@ -6917,19 +6917,18 @@ _ZN4llvm7codegen23getExplicitDataSectionsEv.exit: ; preds = %74, %2 %106 = or disjoint i32 %104, %105 store i32 %106, ptr %11, align 4 %107 = load i16, ptr getelementptr inbounds (i8, ptr @_ZZN4llvm7codegen20RegisterCodeGenFlagsC1EvE12DataSections, i64 8), align 8 - %.not.i.not = icmp eq i16 %107, 0 + %.not.i.not.not = icmp eq i16 %107, 0 %108 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZN4llvm7codegen20RegisterCodeGenFlagsC1EvE12DataSections, i64 128), align 8 - %109 = getelementptr inbounds nuw i8, ptr %1, i64 52 - %110 = load i32, ptr %109, align 4 - %111 = icmp eq i32 %110, 8 - %112 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %113 = load i32, ptr %112, align 8 - %114 = add i32 %113, -55 - %spec.select.i.i = icmp ult i32 %114, 2 - %115 = select i1 %111, i1 true, i1 %spec.select.i.i - %116 = zext i1 %115 to i8 - %.0.in.i = select i1 %.not.i.not, i8 %116, i8 %108 - %.0.i = trunc i8 %.0.in.i to i1 + %109 = trunc i8 %108 to i1 + %110 = getelementptr inbounds nuw i8, ptr %1, i64 52 + %111 = load i32, ptr %110, align 4 + %112 = icmp eq i32 %111, 8 + %113 = getelementptr inbounds nuw i8, ptr %1, i64 32 + %114 = load i32, ptr %113, align 8 + %115 = add i32 %114, -55 + %spec.select.i.i = icmp ult i32 %115, 2 + %116 = select i1 %112, i1 true, i1 %spec.select.i.i + %.0.i = select i1 %.not.i.not.not, i1 %116, i1 %109 %117 = select i1 %.0.i, i32 8, i32 0 %118 = and i32 %106, -9 %119 = or disjoint i32 %117, %118 @@ -6956,7 +6955,7 @@ _ZN4llvm7codegen23getExplicitDataSectionsEv.exit: ; preds = %74, %2 %136 = trunc i8 %135 to i1 %137 = select i1 %136, i32 134217728, i32 0 %138 = and i32 %134, -134217729 - %139 = or disjoint i32 %138, %137 + %139 = or disjoint i32 %137, %138 store i32 %139, ptr %11, align 4 %140 = tail call noundef i32 @_ZN4llvm7codegen17getBBSectionsModeERNS_13TargetOptionsE(ptr noundef nonnull align 8 dereferenceable(360) %0) store i32 %140, ptr %15, align 8 @@ -7033,16 +7032,15 @@ _ZNK4llvm6Triple21hasDefaultEmulatedTLSEv.exit: ; preds = %167, %174, %178, %1 %192 = or disjoint i32 %190, %191 store i32 %192, ptr %11, align 4 %193 = load i16, ptr getelementptr inbounds (i8, ptr @_ZZN4llvm7codegen20RegisterCodeGenFlagsC1EvE13EnableTLSDESC, i64 8), align 8 - %.not.i13.not = icmp eq i16 %193, 0 + %.not.i13.not.not = icmp eq i16 %193, 0 %194 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZN4llvm7codegen20RegisterCodeGenFlagsC1EvE13EnableTLSDESC, i64 128), align 8 - %195 = load i32, ptr %164, align 8 - %196 = icmp eq i32 %195, 14 - %197 = load i32, ptr %112, align 8 - %198 = icmp eq i32 %197, 28 - %199 = select i1 %196, i1 %198, i1 false - %200 = zext i1 %199 to i8 - %.0.in.i19 = select i1 %.not.i13.not, i8 %200, i8 %194 - %.0.i20 = trunc i8 %.0.in.i19 to i1 + %195 = trunc i8 %194 to i1 + %196 = load i32, ptr %164, align 8 + %197 = icmp eq i32 %196, 14 + %198 = load i32, ptr %113, align 8 + %199 = icmp eq i32 %198, 28 + %200 = select i1 %197, i1 %199, i1 false + %.0.i20 = select i1 %.not.i13.not.not, i1 %200, i1 %195 %201 = select i1 %.0.i20, i32 1048576, i32 0 %202 = and i32 %192, -1048577 %203 = or disjoint i32 %201, %202 @@ -7053,7 +7051,7 @@ _ZNK4llvm6Triple21hasDefaultEmulatedTLSEv.exit: ; preds = %167, %174, %178, %1 %206 = trunc i8 %205 to i1 %207 = select i1 %206, i32 4194304, i32 0 %208 = and i32 %203, -4194305 - %209 = or disjoint i32 %208, %207 + %209 = or disjoint i32 %207, %208 store i32 %209, ptr %11, align 4 %210 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZN4llvm7codegen20RegisterCodeGenFlagsC1EvE29EnableMachineFunctionSplitter, i64 128), align 8 %211 = trunc i8 %210 to i1 diff --git a/bench/llvm/optimized/LowerEmuTLS.cpp.ll b/bench/llvm/optimized/LowerEmuTLS.cpp.ll index 6bd09b20baa..b187d95b57f 100644 --- a/bench/llvm/optimized/LowerEmuTLS.cpp.ll +++ b/bench/llvm/optimized/LowerEmuTLS.cpp.ll @@ -856,76 +856,75 @@ define internal fastcc void @_ZL21copyLinkageVisibilityRN4llvm6ModuleEPKNS_14Glo %spec.select.i.i = icmp ult i32 %7, 2 %8 = getelementptr inbounds nuw i8, ptr %2, i64 32 %9 = load i32, ptr %8, align 8 - %10 = and i32 %9, -832 - %11 = select i1 %spec.select.i.i, i32 %10, i32 %9 - %12 = and i32 %11, -16 - %13 = or disjoint i32 %12, %6 - store i32 %13, ptr %8, align 8 + %.v = select i1 %spec.select.i.i, i32 -832, i32 -16 + %10 = and i32 %.v, %9 + %11 = or disjoint i32 %10, %6 + store i32 %11, ptr %8, align 8 br i1 %spec.select.i.i, label %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i, label %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.i _ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.i: ; preds = %3 - %14 = and i32 %9, 48 - %15 = icmp ne i32 %14, 0 - %16 = icmp ne i32 %6, 9 - %spec.select.i2.i = and i1 %16, %15 + %12 = and i32 %9, 48 + %13 = icmp ne i32 %12, 0 + %14 = icmp ne i32 %6, 9 + %spec.select.i2.i = and i1 %14, %13 br i1 %spec.select.i2.i, label %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i, label %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit _ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i: ; preds = %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.i, %3 - %17 = or i32 %13, 16384 - store i32 %17, ptr %8, align 8 + %15 = or i32 %11, 16384 + store i32 %15, ptr %8, align 8 br label %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit _ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit: ; preds = %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.i, %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i - %18 = phi i32 [ %13, %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.i ], [ %17, %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i ] - %19 = load i32, ptr %4, align 8 - %20 = and i32 %19, 48 - %21 = and i32 %18, -49 - %22 = or disjoint i32 %21, %20 - store i32 %22, ptr %8, align 8 - %23 = and i32 %18, 15 - %24 = add nsw i32 %23, -7 - %spec.select.i.i.i.i12 = icmp ult i32 %24, 2 + %16 = phi i32 [ %11, %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.i ], [ %15, %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i ] + %17 = load i32, ptr %4, align 8 + %18 = and i32 %17, 48 + %19 = and i32 %16, -49 + %20 = or disjoint i32 %19, %18 + store i32 %20, ptr %8, align 8 + %21 = and i32 %16, 15 + %22 = add nsw i32 %21, -7 + %spec.select.i.i.i.i12 = icmp ult i32 %22, 2 br i1 %spec.select.i.i.i.i12, label %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i15, label %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.i13 _ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.i13: ; preds = %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit - %25 = icmp ne i32 %20, 0 - %26 = icmp ne i32 %23, 9 - %spec.select.i.i14 = and i1 %25, %26 + %23 = icmp ne i32 %18, 0 + %24 = icmp ne i32 %21, 9 + %spec.select.i.i14 = and i1 %23, %24 br i1 %spec.select.i.i14, label %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i15, label %_ZN4llvm11GlobalValue13setVisibilityENS0_15VisibilityTypesE.exit _ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i15: ; preds = %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.i13, %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit - %27 = or i32 %22, 16384 - store i32 %27, ptr %8, align 8 + %25 = or i32 %20, 16384 + store i32 %25, ptr %8, align 8 br label %_ZN4llvm11GlobalValue13setVisibilityENS0_15VisibilityTypesE.exit _ZN4llvm11GlobalValue13setVisibilityENS0_15VisibilityTypesE.exit: ; preds = %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.i13, %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i15 - %28 = phi i32 [ %22, %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.i13 ], [ %27, %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i15 ] - %29 = load i32, ptr %4, align 8 - %30 = and i32 %29, 16384 - %31 = and i32 %28, -16385 - %32 = or disjoint i32 %31, %30 - store i32 %32, ptr %8, align 8 - %33 = getelementptr inbounds nuw i8, ptr %1, i64 48 - %34 = load ptr, ptr %33, align 8 - %.not = icmp eq ptr %34, null - br i1 %.not, label %46, label %35 - -35: ; preds = %_ZN4llvm11GlobalValue13setVisibilityENS0_15VisibilityTypesE.exit - %36 = tail call { ptr, i64 } @_ZNK4llvm5Value7getNameEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #13 - %37 = extractvalue { ptr, i64 } %36, 0 - %38 = extractvalue { ptr, i64 } %36, 1 - %39 = tail call noundef ptr @_ZN4llvm6Module17getOrInsertComdatENS_9StringRefE(ptr noundef nonnull align 8 dereferenceable(857) %0, ptr %37, i64 %38) #13 - tail call void @_ZN4llvm12GlobalObject9setComdatEPNS_6ComdatE(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef %39) #13 - %40 = getelementptr inbounds nuw i8, ptr %2, i64 48 - %41 = load ptr, ptr %40, align 8 - %42 = load ptr, ptr %33, align 8 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 8 - %44 = load i32, ptr %43, align 8 - %45 = getelementptr inbounds nuw i8, ptr %41, i64 8 - store i32 %44, ptr %45, align 8 - br label %46 - -46: ; preds = %35, %_ZN4llvm11GlobalValue13setVisibilityENS0_15VisibilityTypesE.exit + %26 = phi i32 [ %20, %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.i13 ], [ %25, %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i15 ] + %27 = load i32, ptr %4, align 8 + %28 = and i32 %27, 16384 + %29 = and i32 %26, -16385 + %30 = or disjoint i32 %29, %28 + store i32 %30, ptr %8, align 8 + %31 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %32 = load ptr, ptr %31, align 8 + %.not = icmp eq ptr %32, null + br i1 %.not, label %44, label %33 + +33: ; preds = %_ZN4llvm11GlobalValue13setVisibilityENS0_15VisibilityTypesE.exit + %34 = tail call { ptr, i64 } @_ZNK4llvm5Value7getNameEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #13 + %35 = extractvalue { ptr, i64 } %34, 0 + %36 = extractvalue { ptr, i64 } %34, 1 + %37 = tail call noundef ptr @_ZN4llvm6Module17getOrInsertComdatENS_9StringRefE(ptr noundef nonnull align 8 dereferenceable(857) %0, ptr %35, i64 %36) #13 + tail call void @_ZN4llvm12GlobalObject9setComdatEPNS_6ComdatE(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef %37) #13 + %38 = getelementptr inbounds nuw i8, ptr %2, i64 48 + %39 = load ptr, ptr %38, align 8 + %40 = load ptr, ptr %31, align 8 + %41 = getelementptr inbounds nuw i8, ptr %40, i64 8 + %42 = load i32, ptr %41, align 8 + %43 = getelementptr inbounds nuw i8, ptr %39, i64 8 + store i32 %42, ptr %43, align 8 + br label %44 + +44: ; preds = %33, %_ZN4llvm11GlobalValue13setVisibilityENS0_15VisibilityTypesE.exit ret void } diff --git a/bench/llvm/optimized/TruncInstCombine.cpp.ll b/bench/llvm/optimized/TruncInstCombine.cpp.ll index cba6771e55a..ceb63030e48 100644 --- a/bench/llvm/optimized/TruncInstCombine.cpp.ll +++ b/bench/llvm/optimized/TruncInstCombine.cpp.ll @@ -4077,7 +4077,7 @@ define dso_local noundef zeroext i1 @_ZN4llvm16TruncInstCombine3runERNS_8Functio .lr.ph39: ; preds = %.preheader %10 = getelementptr inbounds nuw i8, ptr %0, i64 80 - br label %39 + br label %38 11: ; preds = %.lr.ph37, %.loopexit %.sroa.026.036 = phi ptr [ %.sroa.026.034, %.lr.ph37 ], [ %.sroa.026.0, %.loopexit ] @@ -4095,76 +4095,75 @@ define dso_local noundef zeroext i1 @_ZN4llvm16TruncInstCombine3runERNS_8Functio %.not3032 = icmp eq ptr %.sroa.022.031, %19 br i1 %.not3032, label %.loopexit, label %.lr.ph -.lr.ph: ; preds = %17, %36 - %.sroa.022.033 = phi ptr [ %.sroa.022.0, %36 ], [ %.sroa.022.031, %17 ] +.lr.ph: ; preds = %17, %35 + %.sroa.022.033 = phi ptr [ %.sroa.022.0, %35 ], [ %.sroa.022.031, %17 ] %20 = icmp eq ptr %.sroa.022.033, null %21 = getelementptr inbounds i8, ptr %.sroa.022.033, i64 -24 - %22 = select i1 %20, ptr null, ptr %21 - %23 = load i8, ptr %22, align 8 - %24 = icmp ne i8 %23, 67 - %25 = ptrtoint ptr %22 to i64 - %.not19 = or i1 %20, %24 - br i1 %.not19, label %36, label %26 - -26: ; preds = %.lr.ph - %27 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #13 - %28 = add i64 %27, 1 - %29 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE8capacityEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #13 - %.not.i.i.i = icmp ugt i64 %28, %29 - br i1 %.not.i.i.i, label %30, label %_ZN4llvm23SmallVectorTemplateBaseIPNS_9TruncInstELb1EE9push_backES2_.exit + %22 = load i8, ptr %21, align 8 + %23 = icmp ne i8 %22, 67 + %.not19 = or i1 %20, %23 + br i1 %.not19, label %35, label %24 + +24: ; preds = %.lr.ph + %25 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #13 + %26 = add i64 %25, 1 + %27 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE8capacityEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #13 + %.not.i.i.i = icmp ugt i64 %26, %27 + br i1 %.not.i.i.i, label %28, label %_ZN4llvm23SmallVectorTemplateBaseIPNS_9TruncInstELb1EE9push_backES2_.exit -30: ; preds = %26 - tail call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull %7, i64 noundef %28, i64 noundef 8) #13 +28: ; preds = %24 + tail call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull %7, i64 noundef %26, i64 noundef 8) #13 br label %_ZN4llvm23SmallVectorTemplateBaseIPNS_9TruncInstELb1EE9push_backES2_.exit -_ZN4llvm23SmallVectorTemplateBaseIPNS_9TruncInstELb1EE9push_backES2_.exit: ; preds = %26, %30 - %31 = load ptr, ptr %6, align 8 - %32 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #13 - %33 = getelementptr inbounds ptr, ptr %31, i64 %32 - store i64 %25, ptr %33, align 1 - %34 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #13 - %35 = add i64 %34, 1 - tail call void @_ZN4llvm15SmallVectorBaseIjE8set_sizeEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %35) #13 - br label %36 - -36: ; preds = %.lr.ph, %_ZN4llvm23SmallVectorTemplateBaseIPNS_9TruncInstELb1EE9push_backES2_.exit - %37 = getelementptr inbounds nuw i8, ptr %.sroa.022.033, i64 8 - %.sroa.022.0 = load ptr, ptr %37, align 8 +_ZN4llvm23SmallVectorTemplateBaseIPNS_9TruncInstELb1EE9push_backES2_.exit: ; preds = %24, %28 + %29 = load ptr, ptr %6, align 8 + %30 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #13 + %31 = getelementptr inbounds ptr, ptr %29, i64 %30 + %32 = ptrtoint ptr %21 to i64 + store i64 %32, ptr %31, align 1 + %33 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #13 + %34 = add i64 %33, 1 + tail call void @_ZN4llvm15SmallVectorBaseIjE8set_sizeEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %34) #13 + br label %35 + +35: ; preds = %.lr.ph, %_ZN4llvm23SmallVectorTemplateBaseIPNS_9TruncInstELb1EE9push_backES2_.exit + %36 = getelementptr inbounds nuw i8, ptr %.sroa.022.033, i64 8 + %.sroa.022.0 = load ptr, ptr %36, align 8 %.not30 = icmp eq ptr %.sroa.022.0, %19 br i1 %.not30, label %.loopexit, label %.lr.ph -.loopexit: ; preds = %36, %17, %11 - %38 = getelementptr inbounds nuw i8, ptr %.sroa.026.036, i64 8 - %.sroa.026.0 = load ptr, ptr %38, align 8 +.loopexit: ; preds = %35, %17, %11 + %37 = getelementptr inbounds nuw i8, ptr %.sroa.026.036, i64 8 + %.sroa.026.0 = load ptr, ptr %37, align 8 %.not29 = icmp eq ptr %.sroa.026.0, %4 br i1 %.not29, label %.preheader, label %11 -39: ; preds = %.lr.ph39, %49 - %.038 = phi i1 [ false, %.lr.ph39 ], [ %.1, %49 ] - %40 = load ptr, ptr %8, align 8 - %41 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %8) #13 - %42 = getelementptr inbounds ptr, ptr %40, i64 %41 - %43 = getelementptr inbounds i8, ptr %42, i64 -8 - %44 = load ptr, ptr %43, align 8 - %45 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %8) #13 - %46 = add i64 %45, -1 - tail call void @_ZN4llvm15SmallVectorBaseIjE8set_sizeEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %46) #13 - store ptr %44, ptr %10, align 8 - %47 = tail call noundef ptr @_ZN4llvm16TruncInstCombine20getBestTruncatedTypeEv(ptr noundef nonnull align 8 dereferenceable(128) %0) - %.not = icmp eq ptr %47, null - br i1 %.not, label %49, label %48 - -48: ; preds = %39 - tail call void @_ZN4llvm16TruncInstCombine21ReduceExpressionGraphEPNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(128) %0, ptr noundef nonnull %47) - br label %49 - -49: ; preds = %48, %39 - %.1 = phi i1 [ true, %48 ], [ %.038, %39 ] - %50 = tail call noundef zeroext i1 @_ZNK4llvm15SmallVectorBaseIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %8) #13 - br i1 %50, label %._crit_edge, label %39, !llvm.loop !87 - -._crit_edge: ; preds = %49, %.preheader - %.0.lcssa = phi i1 [ false, %.preheader ], [ %.1, %49 ] +38: ; preds = %.lr.ph39, %48 + %.038 = phi i1 [ false, %.lr.ph39 ], [ %.1, %48 ] + %39 = load ptr, ptr %8, align 8 + %40 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %8) #13 + %41 = getelementptr inbounds ptr, ptr %39, i64 %40 + %42 = getelementptr inbounds i8, ptr %41, i64 -8 + %43 = load ptr, ptr %42, align 8 + %44 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %8) #13 + %45 = add i64 %44, -1 + tail call void @_ZN4llvm15SmallVectorBaseIjE8set_sizeEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %45) #13 + store ptr %43, ptr %10, align 8 + %46 = tail call noundef ptr @_ZN4llvm16TruncInstCombine20getBestTruncatedTypeEv(ptr noundef nonnull align 8 dereferenceable(128) %0) + %.not = icmp eq ptr %46, null + br i1 %.not, label %48, label %47 + +47: ; preds = %38 + tail call void @_ZN4llvm16TruncInstCombine21ReduceExpressionGraphEPNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(128) %0, ptr noundef nonnull %46) + br label %48 + +48: ; preds = %47, %38 + %.1 = phi i1 [ true, %47 ], [ %.038, %38 ] + %49 = tail call noundef zeroext i1 @_ZNK4llvm15SmallVectorBaseIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %8) #13 + br i1 %49, label %._crit_edge, label %38, !llvm.loop !87 + +._crit_edge: ; preds = %48, %.preheader + %.0.lcssa = phi i1 [ false, %.preheader ], [ %.1, %48 ] ret i1 %.0.lcssa } diff --git a/bench/luau/optimized/main.cpp.ll b/bench/luau/optimized/main.cpp.ll index c1dec4dc297..762c0071a3b 100644 --- a/bench/luau/optimized/main.cpp.ll +++ b/bench/luau/optimized/main.cpp.ll @@ -13450,25 +13450,25 @@ _ZN7doctest6StringD2Ev.exit191.thread619: ; preds = %.lr.ph512 %367 = getelementptr i8, ptr %352, i64 80 %.val128 = load ptr, ptr %367, align 8 %368 = call fastcc noundef zeroext i1 @_ZN7doctest12_GLOBAL__N_110matchesAnyEPKcRKSt6vectorINS_6StringESaIS4_EEbb(ptr noundef %362, ptr %.val127, ptr %.val128, i1 noundef zeroext false, i1 noundef zeroext %355) - %369 = and i1 %357, %365 - %370 = xor i1 %369, true - %371 = or i1 %360, %370 - %372 = getelementptr inbounds i8, ptr %337, i64 32 - %373 = load ptr, ptr %372, align 8 - %374 = getelementptr inbounds i8, ptr %352, i64 96 - %.val125 = load ptr, ptr %374, align 8 - %375 = getelementptr i8, ptr %352, i64 104 - %.val126 = load ptr, ptr %375, align 8 - %376 = call fastcc noundef zeroext i1 @_ZN7doctest12_GLOBAL__N_110matchesAnyEPKcRKSt6vectorINS_6StringESaIS4_EEbb(ptr noundef %373, ptr %.val125, ptr %.val126, i1 noundef zeroext true, i1 noundef zeroext %355) - %377 = or i1 %368, %371 - %378 = getelementptr inbounds i8, ptr %352, i64 120 - %.val = load ptr, ptr %378, align 8 - %379 = getelementptr i8, ptr %352, i64 128 - %.val124 = load ptr, ptr %379, align 8 - %380 = call fastcc noundef zeroext i1 @_ZN7doctest12_GLOBAL__N_110matchesAnyEPKcRKSt6vectorINS_6StringESaIS4_EEbb(ptr noundef %373, ptr %.val, ptr %.val124, i1 noundef zeroext false, i1 noundef zeroext %355) - %not. = xor i1 %376, true - %381 = or i1 %377, %not. - %382 = or i1 %380, %381 + %369 = getelementptr inbounds i8, ptr %337, i64 32 + %370 = load ptr, ptr %369, align 8 + %371 = getelementptr inbounds i8, ptr %352, i64 96 + %.val125 = load ptr, ptr %371, align 8 + %372 = getelementptr i8, ptr %352, i64 104 + %.val126 = load ptr, ptr %372, align 8 + %373 = call fastcc noundef zeroext i1 @_ZN7doctest12_GLOBAL__N_110matchesAnyEPKcRKSt6vectorINS_6StringESaIS4_EEbb(ptr noundef %370, ptr %.val125, ptr %.val126, i1 noundef zeroext true, i1 noundef zeroext %355) + %374 = getelementptr inbounds i8, ptr %352, i64 120 + %.val = load ptr, ptr %374, align 8 + %375 = getelementptr i8, ptr %352, i64 128 + %.val124 = load ptr, ptr %375, align 8 + %376 = call fastcc noundef zeroext i1 @_ZN7doctest12_GLOBAL__N_110matchesAnyEPKcRKSt6vectorINS_6StringESaIS4_EEbb(ptr noundef %370, ptr %.val, ptr %.val124, i1 noundef zeroext false, i1 noundef zeroext %355) + %377 = and i1 %357, %365 + %378 = xor i1 %377, true + %379 = or i1 %360, %378 + %380 = or i1 %368, %379 + %not. = xor i1 %373, true + %381 = or i1 %380, %not. + %382 = or i1 %376, %381 %383 = select i1 %382, i1 true, i1 %.096 br i1 %383, label %388, label %384 diff --git a/bench/meshlab/optimized/dirt_utils.cpp.ll b/bench/meshlab/optimized/dirt_utils.cpp.ll index 8e485e9cdcd..cf0fa68485e 100644 --- a/bench/meshlab/optimized/dirt_utils.cpp.ll +++ b/bench/meshlab/optimized/dirt_utils.cpp.ll @@ -5050,7 +5050,6 @@ _ZN3vcg4math18MarsenneTwisterRNG8generateEv.exit72.us: ; preds = %._crit_edge.i7 %163 = uitofp i32 %162 to double %164 = fmul double %163, 0x3DF0000000000000 %165 = fptrunc double %164 to float - %.sroa.0.4.vec.insert.i.us = insertelement <2 x float> poison, float %165, i64 1 %166 = icmp sgt i32 %148, 622 br i1 %166, label %.preheader27.i.us, label %216 @@ -5150,11 +5149,9 @@ _ZN3vcg4math18MarsenneTwisterRNG8generateEv.exit72.us: ; preds = %._crit_edge.i7 %235 = fadd float %165, %234 %236 = fcmp ogt float %235, 1.000000e+00 %237 = fsub float 1.000000e+00, %165 - %.sroa.0.4.vec.insert6.i.us = insertelement <2 x float> poison, float %237, i64 1 %238 = fsub float 1.000000e+00, %234 %.sroa.7.0.i.us = select i1 %236, float %238, float %234 - %.sroa.0.0.i.us = select i1 %236, <2 x float> %.sroa.0.4.vec.insert6.i.us, <2 x float> %.sroa.0.4.vec.insert.i.us - %.sroa.0.4.vec.extract8.i.us = extractelement <2 x float> %.sroa.0.0.i.us, i64 1 + %.sroa.0.4.vec.extract8.i.us = select i1 %236, float %237, float %165 %239 = fadd float %.sroa.7.0.i.us, %.sroa.0.4.vec.extract8.i.us %240 = fsub float 1.000000e+00, %239 %241 = load ptr, ptr %86, align 8 @@ -10907,7 +10904,6 @@ _ZN3vcg4math18MarsenneTwisterRNG8generateEv.exit82: ; preds = %_Z17RandomBaricen %130 = uitofp i32 %129 to double %131 = fmul double %130, 0x3DF0000000000000 %132 = fptrunc double %131 to float - %.sroa.0.4.vec.insert.i = insertelement <2 x float> poison, float %132, i64 1 %133 = icmp sgt i32 %115, 622 br i1 %133, label %.preheader27.i, label %_ZN3vcg4math18MarsenneTwisterRNG8generateEv.exit @@ -11007,11 +11003,9 @@ _ZN3vcg4math18MarsenneTwisterRNG8generateEv.exit: ; preds = %_ZN3vcg4math18Marse %201 = fadd float %132, %200 %202 = fcmp ogt float %201, 1.000000e+00 %203 = fsub float 1.000000e+00, %132 - %.sroa.0.4.vec.insert6.i = insertelement <2 x float> poison, float %203, i64 1 %204 = fsub float 1.000000e+00, %200 %.sroa.7.0.i = select i1 %202, float %204, float %200 - %.sroa.0.0.i = select i1 %202, <2 x float> %.sroa.0.4.vec.insert6.i, <2 x float> %.sroa.0.4.vec.insert.i - %.sroa.0.4.vec.extract8.i = extractelement <2 x float> %.sroa.0.0.i, i64 1 + %.sroa.0.4.vec.extract8.i = select i1 %202, float %203, float %132 %205 = fadd float %.sroa.7.0.i, %.sroa.0.4.vec.extract8.i %206 = fsub float 1.000000e+00, %205 %207 = load ptr, ptr %47, align 8 @@ -22931,7 +22925,6 @@ _ZN3vcg4math18MarsenneTwisterRNG8generateEv.exit67: ; preds = %_Z17RandomBaricen %169 = uitofp i32 %168 to double %170 = fmul double %169, 0x3DF0000000000000 %171 = fptrunc double %170 to float - %.sroa.0.4.vec.insert.i = insertelement <2 x float> poison, float %171, i64 1 %172 = icmp sgt i32 %154, 622 br i1 %172, label %.preheader27.i, label %222 @@ -23031,11 +23024,9 @@ _ZN3vcg4math18MarsenneTwisterRNG8generateEv.exit67: ; preds = %_Z17RandomBaricen %241 = fadd float %171, %240 %242 = fcmp ogt float %241, 1.000000e+00 %243 = fsub float 1.000000e+00, %171 - %.sroa.0.4.vec.insert6.i = insertelement <2 x float> poison, float %243, i64 1 %244 = fsub float 1.000000e+00, %240 %.sroa.7.0.i = select i1 %242, float %244, float %240 - %.sroa.0.0.i = select i1 %242, <2 x float> %.sroa.0.4.vec.insert6.i, <2 x float> %.sroa.0.4.vec.insert.i - %.sroa.0.4.vec.extract8.i = extractelement <2 x float> %.sroa.0.0.i, i64 1 + %.sroa.0.4.vec.extract8.i = select i1 %242, float %243, float %171 %245 = fadd float %.sroa.7.0.i, %.sroa.0.4.vec.extract8.i %246 = fsub float 1.000000e+00, %245 %247 = load ptr, ptr %16, align 8 diff --git a/bench/meshlab/optimized/filter_sampling.cpp.ll b/bench/meshlab/optimized/filter_sampling.cpp.ll index 06385146306..ef8dafe8d8b 100644 --- a/bench/meshlab/optimized/filter_sampling.cpp.ll +++ b/bench/meshlab/optimized/filter_sampling.cpp.ll @@ -34312,16 +34312,13 @@ _ZN3vcg3tri15SurfaceSamplingI6CMeshONS0_16HausdorffSamplerIS2_EEE23SamplingRando 133: ; preds = %.noexc34 %134 = fptrunc double %128 to float - %.sroa.0.4.vec.insert.i.i = insertelement <2 x float> poison, float %134, i64 1 %135 = fptrunc double %132 to float %136 = fadd float %134, %135 %137 = fcmp ogt float %136, 1.000000e+00 %138 = fsub float 1.000000e+00, %134 - %.sroa.0.4.vec.insert7.i.i = insertelement <2 x float> poison, float %138, i64 1 %139 = fsub float 1.000000e+00, %135 %.sroa.7.0.i.i = select i1 %137, float %139, float %135 - %.sroa.0.0.i.i = select i1 %137, <2 x float> %.sroa.0.4.vec.insert7.i.i, <2 x float> %.sroa.0.4.vec.insert.i.i - %.sroa.0.4.vec.extract9.i.i = extractelement <2 x float> %.sroa.0.0.i.i, i64 1 + %.sroa.0.4.vec.extract9.i.i = select i1 %137, float %138, float %134 %140 = fadd float %.sroa.7.0.i.i, %.sroa.0.4.vec.extract9.i.i %141 = fsub float 1.000000e+00, %140 call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %4) @@ -44704,7 +44701,6 @@ common.resume: ; preds = %93, %41 %46 = load ptr, ptr %45, align 8 %47 = tail call noundef double %46(ptr noundef nonnull align 8 dereferenceable(2508) @_ZZN3vcg3tri15SurfaceSamplingI6CMeshO11BaseSamplerE23SamplingRandomGeneratorEvE3rnd) %48 = fptrunc double %47 to float - %.sroa.0.4.vec.insert.i.i = insertelement <2 x float> poison, float %48, i64 1 %49 = load ptr, ptr @_ZZN3vcg3tri15SurfaceSamplingI6CMeshO11BaseSamplerE23SamplingRandomGeneratorEvE3rnd, align 8 %50 = getelementptr inbounds i8, ptr %49, i64 32 %51 = load ptr, ptr %50, align 8 @@ -44713,11 +44709,9 @@ common.resume: ; preds = %93, %41 %54 = fadd float %48, %53 %55 = fcmp ogt float %54, 1.000000e+00 %56 = fsub float 1.000000e+00, %48 - %.sroa.0.4.vec.insert7.i.i = insertelement <2 x float> poison, float %56, i64 1 %57 = fsub float 1.000000e+00, %53 %.sroa.7.0.i.i = select i1 %55, float %57, float %53 - %.sroa.0.0.i.i = select i1 %55, <2 x float> %.sroa.0.4.vec.insert7.i.i, <2 x float> %.sroa.0.4.vec.insert.i.i - %.sroa.0.4.vec.extract9.i.i = extractelement <2 x float> %.sroa.0.0.i.i, i64 1 + %.sroa.0.4.vec.extract9.i.i = select i1 %55, float %56, float %48 %58 = fadd float %.sroa.7.0.i.i, %.sroa.0.4.vec.extract9.i.i %59 = fsub float 1.000000e+00, %58 %60 = fmul float %12, %59 @@ -44785,7 +44779,6 @@ _ZN3vcg3tri15SurfaceSamplingI6CMeshO11BaseSamplerE17RandomBarycentricEv.exit180: %97 = load ptr, ptr %96, align 8 %98 = tail call noundef double %97(ptr noundef nonnull align 8 dereferenceable(2508) @_ZZN3vcg3tri15SurfaceSamplingI6CMeshO11BaseSamplerE23SamplingRandomGeneratorEvE3rnd) %99 = fptrunc double %98 to float - %.sroa.0.4.vec.insert.i.i171 = insertelement <2 x float> poison, float %99, i64 1 %100 = load ptr, ptr @_ZZN3vcg3tri15SurfaceSamplingI6CMeshO11BaseSamplerE23SamplingRandomGeneratorEvE3rnd, align 8 %101 = getelementptr inbounds i8, ptr %100, i64 32 %102 = load ptr, ptr %101, align 8 @@ -44794,11 +44787,9 @@ _ZN3vcg3tri15SurfaceSamplingI6CMeshO11BaseSamplerE17RandomBarycentricEv.exit180: %105 = fadd float %99, %104 %106 = fcmp ogt float %105, 1.000000e+00 %107 = fsub float 1.000000e+00, %99 - %.sroa.0.4.vec.insert7.i.i172 = insertelement <2 x float> poison, float %107, i64 1 %108 = fsub float 1.000000e+00, %104 %.sroa.7.0.i.i173 = select i1 %106, float %108, float %104 - %.sroa.0.0.i.i174 = select i1 %106, <2 x float> %.sroa.0.4.vec.insert7.i.i172, <2 x float> %.sroa.0.4.vec.insert.i.i171 - %.sroa.0.4.vec.extract9.i.i175 = extractelement <2 x float> %.sroa.0.0.i.i174, i64 1 + %.sroa.0.4.vec.extract9.i.i175 = select i1 %106, float %107, float %99 %109 = fadd float %.sroa.7.0.i.i173, %.sroa.0.4.vec.extract9.i.i175 %110 = fsub float 1.000000e+00, %109 %111 = fmul float %14, %110 @@ -45001,7 +44992,6 @@ _ZN3vcg3tri15SurfaceSamplingI6CMeshO11BaseSamplerE17RandomBarycentricEv.exit: ; %22 = load ptr, ptr %21, align 8 %23 = tail call noundef double %22(ptr noundef nonnull align 8 dereferenceable(2508) @_ZZN3vcg3tri15SurfaceSamplingI6CMeshO11BaseSamplerE23SamplingRandomGeneratorEvE3rnd) %24 = fptrunc double %23 to float - %.sroa.0.4.vec.insert.i.i = insertelement <2 x float> poison, float %24, i64 1 %25 = load ptr, ptr @_ZZN3vcg3tri15SurfaceSamplingI6CMeshO11BaseSamplerE23SamplingRandomGeneratorEvE3rnd, align 8 %26 = getelementptr inbounds i8, ptr %25, i64 32 %27 = load ptr, ptr %26, align 8 @@ -45010,11 +45000,9 @@ _ZN3vcg3tri15SurfaceSamplingI6CMeshO11BaseSamplerE17RandomBarycentricEv.exit: ; %30 = fadd float %24, %29 %31 = fcmp ogt float %30, 1.000000e+00 %32 = fsub float 1.000000e+00, %24 - %.sroa.0.4.vec.insert7.i.i = insertelement <2 x float> poison, float %32, i64 1 %33 = fsub float 1.000000e+00, %29 %.sroa.7.0.i.i = select i1 %31, float %33, float %29 - %.sroa.0.0.i.i = select i1 %31, <2 x float> %.sroa.0.4.vec.insert7.i.i, <2 x float> %.sroa.0.4.vec.insert.i.i - %.sroa.0.4.vec.extract9.i.i = extractelement <2 x float> %.sroa.0.0.i.i, i64 1 + %.sroa.0.4.vec.extract9.i.i = select i1 %31, float %32, float %24 %34 = fadd float %.sroa.7.0.i.i, %.sroa.0.4.vec.extract9.i.i %35 = fsub float 1.000000e+00, %34 %36 = load float, ptr %1, align 4 diff --git a/bench/mimalloc/optimized/segment-map.c.ll b/bench/mimalloc/optimized/segment-map.c.ll index a9881175f06..dd55539f305 100644 --- a/bench/mimalloc/optimized/segment-map.c.ll +++ b/bench/mimalloc/optimized/segment-map.c.ll @@ -15,22 +15,22 @@ define hidden void @_mi_segment_map_allocated_at(ptr noundef %segment) local_unn entry: %cmp.i = icmp ugt ptr %segment, inttoptr (i64 43980465111039 to ptr) %0 = ptrtoint ptr %segment to i64 - %div4.i = lshr i64 %0, 25 - %rem.i = and i64 %div4.i, 63 %div15.i = lshr i64 %0, 31 - %1 = shl nuw i64 1, %rem.i %cmp4 = icmp eq i64 %div15.i, 20480 %cmp = or i1 %cmp.i, %cmp4 br i1 %cmp, label %do.end, label %if.end if.end: ; preds = %entry + %div4.i = lshr i64 %0, 25 + %rem.i = and i64 %div4.i, 63 %arrayidx = getelementptr inbounds [20481 x i64], ptr @mi_segment_map, i64 0, i64 %div15.i - %2 = load atomic i64, ptr %arrayidx monotonic, align 8 + %1 = load atomic i64, ptr %arrayidx monotonic, align 8 + %2 = shl nuw i64 1, %rem.i br label %do.body do.body: ; preds = %do.body, %if.end - %mask.0 = phi i64 [ %2, %if.end ], [ %5, %do.body ] - %or = or i64 %mask.0, %1 + %mask.0 = phi i64 [ %1, %if.end ], [ %5, %do.body ] + %or = or i64 %mask.0, %2 %3 = cmpxchg weak ptr %arrayidx, i64 %mask.0, i64 %or release monotonic, align 8 %4 = extractvalue { i64, i1 } %3, 1 %5 = extractvalue { i64, i1 } %3, 0 @@ -53,14 +53,14 @@ entry: if.end: ; preds = %entry %div4.i = lshr i64 %0, 25 %rem.i = and i64 %div4.i, 63 - %1 = shl nuw i64 1, %rem.i %arrayidx = getelementptr inbounds [20481 x i64], ptr @mi_segment_map, i64 0, i64 %div15.i - %2 = load atomic i64, ptr %arrayidx monotonic, align 8 - %3 = xor i64 %1, -1 + %1 = load atomic i64, ptr %arrayidx monotonic, align 8 + %2 = shl nuw i64 1, %rem.i + %3 = xor i64 %2, -1 br label %do.body do.body: ; preds = %do.body, %if.end - %mask.0 = phi i64 [ %2, %if.end ], [ %6, %do.body ] + %mask.0 = phi i64 [ %1, %if.end ], [ %6, %do.body ] %and = and i64 %mask.0, %3 %4 = cmpxchg weak ptr %arrayidx, i64 %mask.0, i64 %and release monotonic, align 8 %5 = extractvalue { i64, i1 } %4, 1 diff --git a/bench/miniaudio/optimized/unity.c.ll b/bench/miniaudio/optimized/unity.c.ll index 2d32326e1a2..ed99cdc6aca 100644 --- a/bench/miniaudio/optimized/unity.c.ll +++ b/bench/miniaudio/optimized/unity.c.ll @@ -103311,7 +103311,6 @@ if.then: ; preds = %ma_dr_mp3_hdr_compa %cmp5.i.i = icmp eq i32 %and4.i.i, 2 %conv6.i.i = zext i1 %cmp5.i.i to i32 %shr.i.i = lshr exact i32 1152, %conv6.i.i - %11 = mul nuw nsw i32 %shr.i.i, 250 %and.i11.i = lshr i32 %conv3.i.i, 3 %and.lobit.i.i = and i32 %and.i11.i, 1 %idxprom.i.i = zext nneg i32 %and.lobit.i.i to i64 @@ -103319,12 +103318,13 @@ if.then: ; preds = %ma_dr_mp3_hdr_compa %and5.i.i = and i32 %shr.i12.i, 3 %sub.i.i = add nsw i32 %and5.i.i, -1 %idxprom6.i.i = sext i32 %sub.i.i to i64 - %12 = lshr i8 %4, 4 - %idxprom11.i.i = zext nneg i8 %12 to i64 + %11 = lshr i8 %4, 4 + %idxprom11.i.i = zext nneg i8 %11 to i64 %arrayidx12.i.i = getelementptr inbounds [2 x [3 x [15 x i8]]], ptr @ma_dr_mp3_hdr_bitrate_kbps.halfrate, i64 0, i64 %idxprom.i.i, i64 %idxprom6.i.i, i64 %idxprom11.i.i - %13 = load i8, ptr %arrayidx12.i.i, align 1 - %conv13.i.i = zext i8 %13 to i32 - %mul.i = select i1 %cmp.i.i72, i32 96000, i32 %11 + %12 = load i8, ptr %arrayidx12.i.i, align 1 + %conv13.i.i = zext i8 %12 to i32 + %13 = mul nuw nsw i32 %shr.i.i, 250 + %mul.i = select i1 %cmp.i.i72, i32 96000, i32 %13 %mul2.i = mul nuw nsw i32 %mul.i, %conv13.i.i %14 = lshr i8 %4, 2 %15 = and i8 %14, 3 @@ -103453,7 +103453,6 @@ if.then.i: ; preds = %land.lhs.true17.i.i %cmp5.i.i.i = icmp eq i32 %and4.i.i.i, 2 %conv6.i.i.i = zext i1 %cmp5.i.i.i to i32 %shr.i.i.i = lshr exact i32 1152, %conv6.i.i.i - %31 = mul nuw nsw i32 %shr.i.i.i, 250 %and.i11.i.i = lshr i32 %conv3.i.i113, 3 %and.lobit.i.i.i = and i32 %and.i11.i.i, 1 %idxprom.i.i.i = zext nneg i32 %and.lobit.i.i.i to i64 @@ -103461,12 +103460,13 @@ if.then.i: ; preds = %land.lhs.true17.i.i %and5.i.i.i = and i32 %shr.i12.i.i, 3 %sub.i.i.i = add nsw i32 %and5.i.i.i, -1 %idxprom6.i.i.i = sext i32 %sub.i.i.i to i64 - %32 = lshr i8 %29, 4 - %idxprom11.i.i.i = zext nneg i8 %32 to i64 + %31 = lshr i8 %29, 4 + %idxprom11.i.i.i = zext nneg i8 %31 to i64 %arrayidx12.i.i.i = getelementptr inbounds [2 x [3 x [15 x i8]]], ptr @ma_dr_mp3_hdr_bitrate_kbps.halfrate, i64 0, i64 %idxprom.i.i.i, i64 %idxprom6.i.i.i, i64 %idxprom11.i.i.i - %33 = load i8, ptr %arrayidx12.i.i.i, align 1 - %conv13.i.i.i = zext i8 %33 to i32 - %mul.i.i = select i1 %cmp.i.i.i, i32 96000, i32 %31 + %32 = load i8, ptr %arrayidx12.i.i.i, align 1 + %conv13.i.i.i = zext i8 %32 to i32 + %33 = mul nuw nsw i32 %shr.i.i.i, 250 + %mul.i.i = select i1 %cmp.i.i.i, i32 96000, i32 %33 %mul2.i.i = mul nuw nsw i32 %mul.i.i, %conv13.i.i.i %34 = lshr i8 %29, 2 %35 = and i8 %34, 3 @@ -103661,7 +103661,6 @@ for.body.i.i: ; preds = %for.inc.i.i, %land. %cmp5.i.i.i.i = icmp eq i32 %and4.i.i.i.i, 2 %conv6.i.i.i.i = zext i1 %cmp5.i.i.i.i to i32 %shr.i.i.i.i = lshr exact i32 1152, %conv6.i.i.i.i - %66 = mul nuw nsw i32 %shr.i.i.i.i, 250 %and.i11.i.i.i = lshr i32 %conv.i.i.i.i, 3 %and.lobit.i.i.i.i = and i32 %and.i11.i.i.i, 1 %idxprom.i.i.i.i = zext nneg i32 %and.lobit.i.i.i.i to i64 @@ -103669,12 +103668,13 @@ for.body.i.i: ; preds = %for.inc.i.i, %land. %and5.i.i.i.i = and i32 %shr.i12.i.i.i, 3 %sub.i.i.i.i = add nsw i32 %and5.i.i.i.i, -1 %idxprom6.i.i.i.i = sext i32 %sub.i.i.i.i to i64 - %67 = lshr i8 %add.ptr.val10.i.i, 4 - %idxprom11.i.i.i.i = zext nneg i8 %67 to i64 + %66 = lshr i8 %add.ptr.val10.i.i, 4 + %idxprom11.i.i.i.i = zext nneg i8 %66 to i64 %arrayidx12.i.i.i.i = getelementptr inbounds [2 x [3 x [15 x i8]]], ptr @ma_dr_mp3_hdr_bitrate_kbps.halfrate, i64 0, i64 %idxprom.i.i.i.i, i64 %idxprom6.i.i.i.i, i64 %idxprom11.i.i.i.i - %68 = load i8, ptr %arrayidx12.i.i.i.i, align 1 - %conv13.i.i.i.i = zext i8 %68 to i32 - %mul.i.i.i = select i1 %cmp.i.i.i.i, i32 96000, i32 %66 + %67 = load i8, ptr %arrayidx12.i.i.i.i, align 1 + %conv13.i.i.i.i = zext i8 %67 to i32 + %68 = mul nuw nsw i32 %shr.i.i.i.i, 250 + %mul.i.i.i = select i1 %cmp.i.i.i.i, i32 96000, i32 %68 %mul2.i.i.i = mul nuw nsw i32 %mul.i.i.i, %conv13.i.i.i.i %69 = lshr i8 %add.ptr.val10.i.i, 2 %70 = and i8 %69, 3 diff --git a/bench/mixbox/optimized/mixbox.ll b/bench/mixbox/optimized/mixbox.ll index f208bd6f1dd..5b335f95f56 100644 --- a/bench/mixbox/optimized/mixbox.ll +++ b/bench/mixbox/optimized/mixbox.ll @@ -431,30 +431,30 @@ define dso_local void @mixbox_latent_to_rgb(ptr nocapture noundef readonly %0, p %102 = fcmp olt float %101, 0.000000e+00 %103 = fcmp ogt float %101, 1.000000e+00 %104 = select i1 %103, float 1.000000e+00, float %101 - %105 = tail call float @llvm.fmuladd.f32(float %104, float 2.550000e+02, float 5.000000e-01) - %106 = getelementptr inbounds i8, ptr %0, i64 20 - %107 = load float, ptr %106, align 4 - %108 = fadd float %107, %97 - %109 = fcmp olt float %108, 0.000000e+00 - %110 = fcmp ogt float %108, 1.000000e+00 - %111 = select i1 %110, float 1.000000e+00, float %108 - %112 = tail call float @llvm.fmuladd.f32(float %111, float 2.550000e+02, float 5.000000e-01) - %113 = getelementptr inbounds i8, ptr %0, i64 24 - %114 = load float, ptr %113, align 4 - %115 = fadd float %114, %98 - %116 = fcmp olt float %115, 0.000000e+00 - %117 = fcmp ogt float %115, 1.000000e+00 - %118 = select i1 %117, float 1.000000e+00, float %115 - %119 = tail call float @llvm.fmuladd.f32(float %118, float 2.550000e+02, float 5.000000e-01) - %120 = select i1 %102, float 5.000000e-01, float %105 - %121 = fptosi float %120 to i32 - %122 = trunc i32 %121 to i8 - store i8 %122, ptr %1, align 1 - %123 = select i1 %109, float 5.000000e-01, float %112 - %124 = fptosi float %123 to i32 - %125 = trunc i32 %124 to i8 - store i8 %125, ptr %2, align 1 - %126 = select i1 %116, float 5.000000e-01, float %119 + %105 = getelementptr inbounds i8, ptr %0, i64 20 + %106 = load float, ptr %105, align 4 + %107 = fadd float %106, %97 + %108 = fcmp olt float %107, 0.000000e+00 + %109 = fcmp ogt float %107, 1.000000e+00 + %110 = select i1 %109, float 1.000000e+00, float %107 + %111 = getelementptr inbounds i8, ptr %0, i64 24 + %112 = load float, ptr %111, align 4 + %113 = fadd float %112, %98 + %114 = fcmp olt float %113, 0.000000e+00 + %115 = fcmp ogt float %113, 1.000000e+00 + %116 = select i1 %115, float 1.000000e+00, float %113 + %117 = tail call float @llvm.fmuladd.f32(float %104, float 2.550000e+02, float 5.000000e-01) + %118 = select i1 %102, float 5.000000e-01, float %117 + %119 = fptosi float %118 to i32 + %120 = trunc i32 %119 to i8 + store i8 %120, ptr %1, align 1 + %121 = tail call float @llvm.fmuladd.f32(float %110, float 2.550000e+02, float 5.000000e-01) + %122 = select i1 %108, float 5.000000e-01, float %121 + %123 = fptosi float %122 to i32 + %124 = trunc i32 %123 to i8 + store i8 %124, ptr %2, align 1 + %125 = tail call float @llvm.fmuladd.f32(float %116, float 2.550000e+02, float 5.000000e-01) + %126 = select i1 %114, float 5.000000e-01, float %125 %127 = fptosi float %126 to i32 %128 = trunc i32 %127 to i8 store i8 %128, ptr %3, align 1 @@ -1995,30 +1995,30 @@ define dso_local void @mixbox_lerp(i8 noundef zeroext %0, i8 noundef zeroext %1, %623 = fcmp olt float %622, 0.000000e+00 %624 = fcmp ogt float %622, 1.000000e+00 %625 = select i1 %624, float 1.000000e+00, float %622 - %626 = tail call float @llvm.fmuladd.f32(float %625, float 2.550000e+02, float 5.000000e-01) - %627 = getelementptr inbounds i8, ptr %13, i64 20 - %628 = load float, ptr %627, align 4 - %629 = fadd float %628, %618 - %630 = fcmp olt float %629, 0.000000e+00 - %631 = fcmp ogt float %629, 1.000000e+00 - %632 = select i1 %631, float 1.000000e+00, float %629 - %633 = tail call float @llvm.fmuladd.f32(float %632, float 2.550000e+02, float 5.000000e-01) - %634 = getelementptr inbounds i8, ptr %13, i64 24 - %635 = load float, ptr %634, align 8 - %636 = fadd float %635, %619 - %637 = fcmp olt float %636, 0.000000e+00 - %638 = fcmp ogt float %636, 1.000000e+00 - %639 = select i1 %638, float 1.000000e+00, float %636 - %640 = tail call float @llvm.fmuladd.f32(float %639, float 2.550000e+02, float 5.000000e-01) - %641 = select i1 %623, float 5.000000e-01, float %626 - %642 = fptosi float %641 to i32 - %643 = trunc i32 %642 to i8 - store i8 %643, ptr %7, align 1 - %644 = select i1 %630, float 5.000000e-01, float %633 - %645 = fptosi float %644 to i32 - %646 = trunc i32 %645 to i8 - store i8 %646, ptr %8, align 1 - %647 = select i1 %637, float 5.000000e-01, float %640 + %626 = getelementptr inbounds i8, ptr %13, i64 20 + %627 = load float, ptr %626, align 4 + %628 = fadd float %627, %618 + %629 = fcmp olt float %628, 0.000000e+00 + %630 = fcmp ogt float %628, 1.000000e+00 + %631 = select i1 %630, float 1.000000e+00, float %628 + %632 = getelementptr inbounds i8, ptr %13, i64 24 + %633 = load float, ptr %632, align 8 + %634 = fadd float %633, %619 + %635 = fcmp olt float %634, 0.000000e+00 + %636 = fcmp ogt float %634, 1.000000e+00 + %637 = select i1 %636, float 1.000000e+00, float %634 + %638 = tail call float @llvm.fmuladd.f32(float %625, float 2.550000e+02, float 5.000000e-01) + %639 = select i1 %623, float 5.000000e-01, float %638 + %640 = fptosi float %639 to i32 + %641 = trunc i32 %640 to i8 + store i8 %641, ptr %7, align 1 + %642 = tail call float @llvm.fmuladd.f32(float %631, float 2.550000e+02, float 5.000000e-01) + %643 = select i1 %629, float 5.000000e-01, float %642 + %644 = fptosi float %643 to i32 + %645 = trunc i32 %644 to i8 + store i8 %645, ptr %8, align 1 + %646 = tail call float @llvm.fmuladd.f32(float %637, float 2.550000e+02, float 5.000000e-01) + %647 = select i1 %635, float 5.000000e-01, float %646 %648 = fptosi float %647 to i32 %649 = trunc i32 %648 to i8 store i8 %649, ptr %9, align 1 diff --git a/bench/msdfgen/optimized/main.cpp.ll b/bench/msdfgen/optimized/main.cpp.ll index a665bed8c30..77cc852e302 100644 --- a/bench/msdfgen/optimized/main.cpp.ll +++ b/bench/msdfgen/optimized/main.cpp.ll @@ -2065,13 +2065,13 @@ lor.lhs.false.i: ; preds = %for.cond.i %161 = add i8 %160, -97 %or.cond.i.i = icmp ult i8 %161, 26 %add.i.i = add nsw i8 %160, -32 - %cond.i.i = select i1 %or.cond.i.i, i8 %add.i.i, i8 %160 + %conv5.i.i = select i1 %or.cond.i.i, i8 %add.i.i, i8 %160 %162 = load i8, ptr %b.0.i, align 1 %163 = add i8 %162, -97 %or.cond.i9.i = icmp ult i8 %163, 26 %add.i10.i = add nsw i8 %162, -32 - %cond.i11.i = select i1 %or.cond.i9.i, i8 %add.i10.i, i8 %162 - %cmp9.not.i = icmp eq i8 %cond.i.i, %cond.i11.i + %conv5.i11.i = select i1 %or.cond.i9.i, i8 %add.i10.i, i8 %162 + %cmp9.not.i = icmp eq i8 %conv5.i.i, %conv5.i11.i br i1 %cmp9.not.i, label %for.cond.i, label %if.end1034, !llvm.loop !10 _ZL12cmpExtensionPKcS0_.exit: ; preds = %for.cond.i @@ -3203,13 +3203,13 @@ lor.lhs.false.i.i: ; preds = %for.cond.i.i %282 = add i8 %281, -97 %or.cond.i.i.i = icmp ult i8 %282, 26 %add.i.i.i = add nsw i8 %281, -32 - %cond.i.i.i = select i1 %or.cond.i.i.i, i8 %add.i.i.i, i8 %281 + %conv5.i.i.i = select i1 %or.cond.i.i.i, i8 %add.i.i.i, i8 %281 %283 = load i8, ptr %b.0.i.i, align 1 %284 = add i8 %283, -97 %or.cond.i9.i.i = icmp ult i8 %284, 26 %add.i10.i.i = add nsw i8 %283, -32 - %cond.i11.i.i = select i1 %or.cond.i9.i.i, i8 %add.i10.i.i, i8 %283 - %cmp9.not.i.i = icmp eq i8 %cond.i.i.i, %cond.i11.i.i + %conv5.i11.i.i = select i1 %or.cond.i9.i.i, i8 %add.i10.i.i, i8 %283 + %cmp9.not.i.i = icmp eq i8 %conv5.i.i.i, %conv5.i11.i.i br i1 %cmp9.not.i.i, label %for.cond.i.i, label %for.cond.i62.i.preheader, !llvm.loop !10 _ZL12cmpExtensionPKcS0_.exit.i: ; preds = %for.cond.i.i @@ -3233,13 +3233,13 @@ lor.lhs.false.i70.i: ; preds = %for.cond.i62.i %286 = add i8 %285, -97 %or.cond.i.i71.i = icmp ult i8 %286, 26 %add.i.i72.i = add nsw i8 %285, -32 - %cond.i.i73.i = select i1 %or.cond.i.i71.i, i8 %add.i.i72.i, i8 %285 + %conv5.i.i73.i = select i1 %or.cond.i.i71.i, i8 %add.i.i72.i, i8 %285 %287 = load i8, ptr %b.0.i65.i, align 1 %288 = add i8 %287, -97 %or.cond.i9.i74.i = icmp ult i8 %288, 26 %add.i10.i75.i = add nsw i8 %287, -32 - %cond.i11.i76.i = select i1 %or.cond.i9.i74.i, i8 %add.i10.i75.i, i8 %287 - %cmp9.not.i77.i = icmp eq i8 %cond.i.i73.i, %cond.i11.i76.i + %conv5.i11.i76.i = select i1 %or.cond.i9.i74.i, i8 %add.i10.i75.i, i8 %287 + %cmp9.not.i77.i = icmp eq i8 %conv5.i.i73.i, %conv5.i11.i76.i br i1 %cmp9.not.i77.i, label %for.cond.i62.i, label %for.cond.i84.i.preheader, !llvm.loop !10 _ZL12cmpExtensionPKcS0_.exit79.i: ; preds = %for.cond.i62.i @@ -3263,13 +3263,13 @@ lor.lhs.false.i92.i: ; preds = %for.cond.i84.i %290 = add i8 %289, -97 %or.cond.i.i93.i = icmp ult i8 %290, 26 %add.i.i94.i = add nsw i8 %289, -32 - %cond.i.i95.i = select i1 %or.cond.i.i93.i, i8 %add.i.i94.i, i8 %289 + %conv5.i.i95.i = select i1 %or.cond.i.i93.i, i8 %add.i.i94.i, i8 %289 %291 = load i8, ptr %b.0.i87.i, align 1 %292 = add i8 %291, -97 %or.cond.i9.i96.i = icmp ult i8 %292, 26 %add.i10.i97.i = add nsw i8 %291, -32 - %cond.i11.i98.i = select i1 %or.cond.i9.i96.i, i8 %add.i10.i97.i, i8 %291 - %cmp9.not.i99.i = icmp eq i8 %cond.i.i95.i, %cond.i11.i98.i + %conv5.i11.i98.i = select i1 %or.cond.i9.i96.i, i8 %add.i10.i97.i, i8 %291 + %cmp9.not.i99.i = icmp eq i8 %conv5.i.i95.i, %conv5.i11.i98.i br i1 %cmp9.not.i99.i, label %for.cond.i84.i, label %for.cond.i106.i.preheader, !llvm.loop !10 _ZL12cmpExtensionPKcS0_.exit101.i: ; preds = %for.cond.i84.i @@ -3293,13 +3293,13 @@ lor.lhs.false.i114.i: ; preds = %for.cond.i106.i %294 = add i8 %293, -97 %or.cond.i.i115.i = icmp ult i8 %294, 26 %add.i.i116.i = add nsw i8 %293, -32 - %cond.i.i117.i = select i1 %or.cond.i.i115.i, i8 %add.i.i116.i, i8 %293 + %conv5.i.i117.i = select i1 %or.cond.i.i115.i, i8 %add.i.i116.i, i8 %293 %295 = load i8, ptr %b.0.i109.i, align 1 %296 = add i8 %295, -97 %or.cond.i9.i118.i = icmp ult i8 %296, 26 %add.i10.i119.i = add nsw i8 %295, -32 - %cond.i11.i120.i = select i1 %or.cond.i9.i118.i, i8 %add.i10.i119.i, i8 %295 - %cmp9.not.i121.i = icmp eq i8 %cond.i.i117.i, %cond.i11.i120.i + %conv5.i11.i120.i = select i1 %or.cond.i9.i118.i, i8 %add.i10.i119.i, i8 %295 + %cmp9.not.i121.i = icmp eq i8 %conv5.i.i117.i, %conv5.i11.i120.i br i1 %cmp9.not.i121.i, label %for.cond.i106.i, label %if.else9.i, !llvm.loop !10 _ZL12cmpExtensionPKcS0_.exit123.i: ; preds = %for.cond.i106.i @@ -3822,13 +3822,13 @@ lor.lhs.false.i.i1104: ; preds = %for.cond.i.i1096 %351 = add i8 %350, -97 %or.cond.i.i.i1105 = icmp ult i8 %351, 26 %add.i.i.i1106 = add nsw i8 %350, -32 - %cond.i.i.i1107 = select i1 %or.cond.i.i.i1105, i8 %add.i.i.i1106, i8 %350 + %conv5.i.i.i1107 = select i1 %or.cond.i.i.i1105, i8 %add.i.i.i1106, i8 %350 %352 = load i8, ptr %b.0.i.i1099, align 1 %353 = add i8 %352, -97 %or.cond.i9.i.i1108 = icmp ult i8 %353, 26 %add.i10.i.i1109 = add nsw i8 %352, -32 - %cond.i11.i.i1110 = select i1 %or.cond.i9.i.i1108, i8 %add.i10.i.i1109, i8 %352 - %cmp9.not.i.i1111 = icmp eq i8 %cond.i.i.i1107, %cond.i11.i.i1110 + %conv5.i11.i.i1110 = select i1 %or.cond.i9.i.i1108, i8 %add.i10.i.i1109, i8 %352 + %cmp9.not.i.i1111 = icmp eq i8 %conv5.i.i.i1107, %conv5.i11.i.i1110 br i1 %cmp9.not.i.i1111, label %for.cond.i.i1096, label %for.cond.i62.i1113.preheader, !llvm.loop !10 _ZL12cmpExtensionPKcS0_.exit.i1174: ; preds = %for.cond.i.i1096 @@ -3852,13 +3852,13 @@ lor.lhs.false.i70.i1121: ; preds = %for.cond.i62.i1113 %355 = add i8 %354, -97 %or.cond.i.i71.i1122 = icmp ult i8 %355, 26 %add.i.i72.i1123 = add nsw i8 %354, -32 - %cond.i.i73.i1124 = select i1 %or.cond.i.i71.i1122, i8 %add.i.i72.i1123, i8 %354 + %conv5.i.i73.i1124 = select i1 %or.cond.i.i71.i1122, i8 %add.i.i72.i1123, i8 %354 %356 = load i8, ptr %b.0.i65.i1116, align 1 %357 = add i8 %356, -97 %or.cond.i9.i74.i1125 = icmp ult i8 %357, 26 %add.i10.i75.i1126 = add nsw i8 %356, -32 - %cond.i11.i76.i1127 = select i1 %or.cond.i9.i74.i1125, i8 %add.i10.i75.i1126, i8 %356 - %cmp9.not.i77.i1128 = icmp eq i8 %cond.i.i73.i1124, %cond.i11.i76.i1127 + %conv5.i11.i76.i1127 = select i1 %or.cond.i9.i74.i1125, i8 %add.i10.i75.i1126, i8 %356 + %cmp9.not.i77.i1128 = icmp eq i8 %conv5.i.i73.i1124, %conv5.i11.i76.i1127 br i1 %cmp9.not.i77.i1128, label %for.cond.i62.i1113, label %for.cond.i84.i1130.preheader, !llvm.loop !10 _ZL12cmpExtensionPKcS0_.exit79.i1172: ; preds = %for.cond.i62.i1113 @@ -3882,13 +3882,13 @@ lor.lhs.false.i92.i1138: ; preds = %for.cond.i84.i1130 %359 = add i8 %358, -97 %or.cond.i.i93.i1139 = icmp ult i8 %359, 26 %add.i.i94.i1140 = add nsw i8 %358, -32 - %cond.i.i95.i1141 = select i1 %or.cond.i.i93.i1139, i8 %add.i.i94.i1140, i8 %358 + %conv5.i.i95.i1141 = select i1 %or.cond.i.i93.i1139, i8 %add.i.i94.i1140, i8 %358 %360 = load i8, ptr %b.0.i87.i1133, align 1 %361 = add i8 %360, -97 %or.cond.i9.i96.i1142 = icmp ult i8 %361, 26 %add.i10.i97.i1143 = add nsw i8 %360, -32 - %cond.i11.i98.i1144 = select i1 %or.cond.i9.i96.i1142, i8 %add.i10.i97.i1143, i8 %360 - %cmp9.not.i99.i1145 = icmp eq i8 %cond.i.i95.i1141, %cond.i11.i98.i1144 + %conv5.i11.i98.i1144 = select i1 %or.cond.i9.i96.i1142, i8 %add.i10.i97.i1143, i8 %360 + %cmp9.not.i99.i1145 = icmp eq i8 %conv5.i.i95.i1141, %conv5.i11.i98.i1144 br i1 %cmp9.not.i99.i1145, label %for.cond.i84.i1130, label %for.cond.i106.i1147.preheader, !llvm.loop !10 _ZL12cmpExtensionPKcS0_.exit101.i1171: ; preds = %for.cond.i84.i1130 @@ -3912,13 +3912,13 @@ lor.lhs.false.i114.i1155: ; preds = %for.cond.i106.i1147 %363 = add i8 %362, -97 %or.cond.i.i115.i1156 = icmp ult i8 %363, 26 %add.i.i116.i1157 = add nsw i8 %362, -32 - %cond.i.i117.i1158 = select i1 %or.cond.i.i115.i1156, i8 %add.i.i116.i1157, i8 %362 + %conv5.i.i117.i1158 = select i1 %or.cond.i.i115.i1156, i8 %add.i.i116.i1157, i8 %362 %364 = load i8, ptr %b.0.i109.i1150, align 1 %365 = add i8 %364, -97 %or.cond.i9.i118.i1159 = icmp ult i8 %365, 26 %add.i10.i119.i1160 = add nsw i8 %364, -32 - %cond.i11.i120.i1161 = select i1 %or.cond.i9.i118.i1159, i8 %add.i10.i119.i1160, i8 %364 - %cmp9.not.i121.i1162 = icmp eq i8 %cond.i.i117.i1158, %cond.i11.i120.i1161 + %conv5.i11.i120.i1161 = select i1 %or.cond.i9.i118.i1159, i8 %add.i10.i119.i1160, i8 %364 + %cmp9.not.i121.i1162 = icmp eq i8 %conv5.i.i117.i1158, %conv5.i11.i120.i1161 br i1 %cmp9.not.i121.i1162, label %for.cond.i106.i1147, label %if.else9.i1163, !llvm.loop !10 _ZL12cmpExtensionPKcS0_.exit123.i1169: ; preds = %for.cond.i106.i1147 @@ -4448,13 +4448,13 @@ lor.lhs.false.i.i1438: ; preds = %for.cond.i.i1430 %420 = add i8 %419, -97 %or.cond.i.i.i1439 = icmp ult i8 %420, 26 %add.i.i.i1440 = add nsw i8 %419, -32 - %cond.i.i.i1441 = select i1 %or.cond.i.i.i1439, i8 %add.i.i.i1440, i8 %419 + %conv5.i.i.i1441 = select i1 %or.cond.i.i.i1439, i8 %add.i.i.i1440, i8 %419 %421 = load i8, ptr %b.0.i.i1433, align 1 %422 = add i8 %421, -97 %or.cond.i9.i.i1442 = icmp ult i8 %422, 26 %add.i10.i.i1443 = add nsw i8 %421, -32 - %cond.i11.i.i1444 = select i1 %or.cond.i9.i.i1442, i8 %add.i10.i.i1443, i8 %421 - %cmp9.not.i.i1445 = icmp eq i8 %cond.i.i.i1441, %cond.i11.i.i1444 + %conv5.i11.i.i1444 = select i1 %or.cond.i9.i.i1442, i8 %add.i10.i.i1443, i8 %421 + %cmp9.not.i.i1445 = icmp eq i8 %conv5.i.i.i1441, %conv5.i11.i.i1444 br i1 %cmp9.not.i.i1445, label %for.cond.i.i1430, label %for.cond.i62.i1447.preheader, !llvm.loop !10 _ZL12cmpExtensionPKcS0_.exit.i1508: ; preds = %for.cond.i.i1430 @@ -4478,13 +4478,13 @@ lor.lhs.false.i70.i1455: ; preds = %for.cond.i62.i1447 %424 = add i8 %423, -97 %or.cond.i.i71.i1456 = icmp ult i8 %424, 26 %add.i.i72.i1457 = add nsw i8 %423, -32 - %cond.i.i73.i1458 = select i1 %or.cond.i.i71.i1456, i8 %add.i.i72.i1457, i8 %423 + %conv5.i.i73.i1458 = select i1 %or.cond.i.i71.i1456, i8 %add.i.i72.i1457, i8 %423 %425 = load i8, ptr %b.0.i65.i1450, align 1 %426 = add i8 %425, -97 %or.cond.i9.i74.i1459 = icmp ult i8 %426, 26 %add.i10.i75.i1460 = add nsw i8 %425, -32 - %cond.i11.i76.i1461 = select i1 %or.cond.i9.i74.i1459, i8 %add.i10.i75.i1460, i8 %425 - %cmp9.not.i77.i1462 = icmp eq i8 %cond.i.i73.i1458, %cond.i11.i76.i1461 + %conv5.i11.i76.i1461 = select i1 %or.cond.i9.i74.i1459, i8 %add.i10.i75.i1460, i8 %425 + %cmp9.not.i77.i1462 = icmp eq i8 %conv5.i.i73.i1458, %conv5.i11.i76.i1461 br i1 %cmp9.not.i77.i1462, label %for.cond.i62.i1447, label %for.cond.i84.i1464.preheader, !llvm.loop !10 _ZL12cmpExtensionPKcS0_.exit79.i1506: ; preds = %for.cond.i62.i1447 @@ -4508,13 +4508,13 @@ lor.lhs.false.i92.i1472: ; preds = %for.cond.i84.i1464 %428 = add i8 %427, -97 %or.cond.i.i93.i1473 = icmp ult i8 %428, 26 %add.i.i94.i1474 = add nsw i8 %427, -32 - %cond.i.i95.i1475 = select i1 %or.cond.i.i93.i1473, i8 %add.i.i94.i1474, i8 %427 + %conv5.i.i95.i1475 = select i1 %or.cond.i.i93.i1473, i8 %add.i.i94.i1474, i8 %427 %429 = load i8, ptr %b.0.i87.i1467, align 1 %430 = add i8 %429, -97 %or.cond.i9.i96.i1476 = icmp ult i8 %430, 26 %add.i10.i97.i1477 = add nsw i8 %429, -32 - %cond.i11.i98.i1478 = select i1 %or.cond.i9.i96.i1476, i8 %add.i10.i97.i1477, i8 %429 - %cmp9.not.i99.i1479 = icmp eq i8 %cond.i.i95.i1475, %cond.i11.i98.i1478 + %conv5.i11.i98.i1478 = select i1 %or.cond.i9.i96.i1476, i8 %add.i10.i97.i1477, i8 %429 + %cmp9.not.i99.i1479 = icmp eq i8 %conv5.i.i95.i1475, %conv5.i11.i98.i1478 br i1 %cmp9.not.i99.i1479, label %for.cond.i84.i1464, label %for.cond.i106.i1481.preheader, !llvm.loop !10 _ZL12cmpExtensionPKcS0_.exit101.i1505: ; preds = %for.cond.i84.i1464 @@ -4538,13 +4538,13 @@ lor.lhs.false.i114.i1489: ; preds = %for.cond.i106.i1481 %432 = add i8 %431, -97 %or.cond.i.i115.i1490 = icmp ult i8 %432, 26 %add.i.i116.i1491 = add nsw i8 %431, -32 - %cond.i.i117.i1492 = select i1 %or.cond.i.i115.i1490, i8 %add.i.i116.i1491, i8 %431 + %conv5.i.i117.i1492 = select i1 %or.cond.i.i115.i1490, i8 %add.i.i116.i1491, i8 %431 %433 = load i8, ptr %b.0.i109.i1484, align 1 %434 = add i8 %433, -97 %or.cond.i9.i118.i1493 = icmp ult i8 %434, 26 %add.i10.i119.i1494 = add nsw i8 %433, -32 - %cond.i11.i120.i1495 = select i1 %or.cond.i9.i118.i1493, i8 %add.i10.i119.i1494, i8 %433 - %cmp9.not.i121.i1496 = icmp eq i8 %cond.i.i117.i1492, %cond.i11.i120.i1495 + %conv5.i11.i120.i1495 = select i1 %or.cond.i9.i118.i1493, i8 %add.i10.i119.i1494, i8 %433 + %cmp9.not.i121.i1496 = icmp eq i8 %conv5.i.i117.i1492, %conv5.i11.i120.i1495 br i1 %cmp9.not.i121.i1496, label %for.cond.i106.i1481, label %if.else9.i1497, !llvm.loop !10 _ZL12cmpExtensionPKcS0_.exit123.i1503: ; preds = %for.cond.i106.i1481 @@ -5230,13 +5230,13 @@ lor.lhs.false: ; preds = %for.cond %1 = add i8 %0, -97 %or.cond.i = icmp ult i8 %1, 26 %add.i = add nsw i8 %0, -32 - %cond.i = select i1 %or.cond.i, i8 %add.i, i8 %0 + %conv5.i = select i1 %or.cond.i, i8 %add.i, i8 %0 %2 = load i8, ptr %b.0, align 1 %3 = add i8 %2, -97 %or.cond.i9 = icmp ult i8 %3, 26 %add.i10 = add nsw i8 %2, -32 - %cond.i11 = select i1 %or.cond.i9, i8 %add.i10, i8 %2 - %cmp9.not = icmp eq i8 %cond.i, %cond.i11 + %conv5.i11 = select i1 %or.cond.i9, i8 %add.i10, i8 %2 + %cmp9.not = icmp eq i8 %conv5.i, %conv5.i11 br i1 %cmp9.not, label %for.cond, label %return, !llvm.loop !10 return: ; preds = %for.cond, %lor.lhs.false diff --git a/bench/nanosvg/optimized/nanosvg.ll b/bench/nanosvg/optimized/nanosvg.ll index ea102576b01..adccc24df27 100644 --- a/bench/nanosvg/optimized/nanosvg.ll +++ b/bench/nanosvg/optimized/nanosvg.ll @@ -6259,18 +6259,18 @@ define internal fastcc void @nsvg__initPaint(ptr nocapture noundef nonnull write %105 = fcmp olt float %104, 0.000000e+00 %106 = fcmp ogt float %104, 1.000000e+00 %107 = select i1 %106, float 1.000000e+00, float %104 - %108 = fmul float %107, 2.550000e+02 - %109 = getelementptr inbounds i8, ptr %98, i64 4 - %110 = load float, ptr %109, align 4 - %111 = fcmp olt float %110, 0.000000e+00 - %112 = fcmp ogt float %110, 1.000000e+00 - %113 = select i1 %112, float 1.000000e+00, float %110 - %114 = fmul float %113, 2.550000e+02 - %115 = select i1 %105, float 0.000000e+00, float %108 - %116 = fptosi float %115 to i32 - %117 = select i1 %111, float 0.000000e+00, float %114 + %108 = getelementptr inbounds i8, ptr %98, i64 4 + %109 = load float, ptr %108, align 4 + %110 = fcmp olt float %109, 0.000000e+00 + %111 = fcmp ogt float %109, 1.000000e+00 + %112 = select i1 %111, float 1.000000e+00, float %109 + %113 = fmul float %107, 2.550000e+02 + %114 = select i1 %105, float 0.000000e+00, float %113 + %115 = fptosi float %114 to i32 + %116 = fmul float %112, 2.550000e+02 + %117 = select i1 %110, float 0.000000e+00, float %116 %118 = fptosi float %117 to i32 - %119 = sub nsw i32 %118, %116 + %119 = sub nsw i32 %118, %115 %120 = icmp slt i32 %119, 1 br i1 %120, label %.loopexit79, label %121 @@ -6291,7 +6291,7 @@ define internal fastcc void @nsvg__initPaint(ptr nocapture noundef nonnull write %135 = and i32 %134, 255 %136 = lshr i32 %125, 24 %137 = lshr i32 %102, 24 - %138 = sext i32 %116 to i64 + %138 = sext i32 %115 to i64 %wide.trip.count111 = zext nneg i32 %119 to i64 br label %139 diff --git a/bench/ncnn/optimized/mat_pixel_resize.cpp.ll b/bench/ncnn/optimized/mat_pixel_resize.cpp.ll index a6b8a245fc4..098c2d24352 100644 --- a/bench/ncnn/optimized/mat_pixel_resize.cpp.ll +++ b/bench/ncnn/optimized/mat_pixel_resize.cpp.ll @@ -69,13 +69,13 @@ define hidden void @_ZN4ncnn18resize_bilinear_c1EPKhiiiPhiii(ptr nocapture nound %45 = fsub fast float %41, %44 %46 = icmp slt i32 %43, 0 %.0207 = tail call i32 @llvm.smax.i32(i32 %43, i32 0) - %47 = fmul fast float %45, 2.048000e+03 %.not259 = icmp slt i32 %.0207, %27 %.1208 = select i1 %.not259, i32 %.0207, i32 %28 - %48 = select i1 %46, float 0.000000e+00, float %47 - %49 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv - store i32 %.1208, ptr %49, align 4 - %50 = select i1 %.not259, float %48, float 2.048000e+03 + %47 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv + store i32 %.1208, ptr %47, align 4 + %48 = fmul fast float %45, 2.048000e+03 + %49 = select i1 %46, float 0.000000e+00, float %48 + %50 = select i1 %.not259, float %49, float 2.048000e+03 %51 = fsub fast float 2.048000e+03, %50 %52 = fcmp fast oge float %51, 0.000000e+00 %53 = select fast i1 %52, float 5.000000e-01, float -5.000000e-01 @@ -110,13 +110,13 @@ define hidden void @_ZN4ncnn18resize_bilinear_c1EPKhiiiPhiii(ptr nocapture nound %75 = fsub fast float %71, %74 %76 = icmp slt i32 %73, 0 %.0209 = tail call i32 @llvm.smax.i32(i32 %73, i32 0) - %77 = fmul fast float %75, 2.048000e+03 %.not258 = icmp slt i32 %.0209, %31 %.1210 = select i1 %.not258, i32 %.0209, i32 %32 - %78 = select i1 %76, float 0.000000e+00, float %77 - %79 = getelementptr inbounds i32, ptr %20, i64 %indvars.iv368 - store i32 %.1210, ptr %79, align 4 - %80 = select i1 %.not258, float %78, float 2.048000e+03 + %77 = getelementptr inbounds i32, ptr %20, i64 %indvars.iv368 + store i32 %.1210, ptr %77, align 4 + %78 = fmul fast float %75, 2.048000e+03 + %79 = select i1 %76, float 0.000000e+00, float %78 + %80 = select i1 %.not258, float %79, float 2.048000e+03 %81 = fsub fast float 2.048000e+03, %80 %82 = fcmp fast oge float %81, 0.000000e+00 %83 = select fast i1 %82, float 5.000000e-01, float -5.000000e-01 @@ -776,14 +776,14 @@ define hidden void @_ZN4ncnn18resize_bilinear_c2EPKhiiiPhiii(ptr nocapture nound %45 = fsub fast float %41, %44 %46 = icmp slt i32 %43, 0 %.0222 = tail call i32 @llvm.smax.i32(i32 %43, i32 0) - %47 = fmul fast float %45, 2.048000e+03 %.not277 = icmp slt i32 %.0222, %27 %.1223 = select i1 %.not277, i32 %.0222, i32 %28 - %48 = select i1 %46, float 0.000000e+00, float %47 - %49 = shl nsw i32 %.1223, 1 - %50 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv - store i32 %49, ptr %50, align 4 - %51 = select i1 %.not277, float %48, float 2.048000e+03 + %47 = shl nsw i32 %.1223, 1 + %48 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv + store i32 %47, ptr %48, align 4 + %49 = fmul fast float %45, 2.048000e+03 + %50 = select i1 %46, float 0.000000e+00, float %49 + %51 = select i1 %.not277, float %50, float 2.048000e+03 %52 = fsub fast float 2.048000e+03, %51 %53 = fcmp fast oge float %52, 0.000000e+00 %54 = select fast i1 %53, float 5.000000e-01, float -5.000000e-01 @@ -818,13 +818,13 @@ define hidden void @_ZN4ncnn18resize_bilinear_c2EPKhiiiPhiii(ptr nocapture nound %76 = fsub fast float %72, %75 %77 = icmp slt i32 %74, 0 %.0224 = tail call i32 @llvm.smax.i32(i32 %74, i32 0) - %78 = fmul fast float %76, 2.048000e+03 %.not276 = icmp slt i32 %.0224, %31 %.1225 = select i1 %.not276, i32 %.0224, i32 %32 - %79 = select i1 %77, float 0.000000e+00, float %78 - %80 = getelementptr inbounds i32, ptr %20, i64 %indvars.iv389 - store i32 %.1225, ptr %80, align 4 - %81 = select i1 %.not276, float %79, float 2.048000e+03 + %78 = getelementptr inbounds i32, ptr %20, i64 %indvars.iv389 + store i32 %.1225, ptr %78, align 4 + %79 = fmul fast float %76, 2.048000e+03 + %80 = select i1 %77, float 0.000000e+00, float %79 + %81 = select i1 %.not276, float %80, float 2.048000e+03 %82 = fsub fast float 2.048000e+03, %81 %83 = fcmp fast oge float %82, 0.000000e+00 %84 = select fast i1 %83, float 5.000000e-01, float -5.000000e-01 @@ -1528,14 +1528,14 @@ define hidden void @_ZN4ncnn18resize_bilinear_c3EPKhiiiPhiii(ptr nocapture nound %45 = fsub fast float %41, %44 %46 = icmp slt i32 %43, 0 %.0237 = tail call i32 @llvm.smax.i32(i32 %43, i32 0) - %47 = fmul fast float %45, 2.048000e+03 %.not292 = icmp slt i32 %.0237, %27 %.1238 = select i1 %.not292, i32 %.0237, i32 %28 - %48 = select i1 %46, float 0.000000e+00, float %47 - %49 = mul nsw i32 %.1238, 3 - %50 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv - store i32 %49, ptr %50, align 4 - %51 = select i1 %.not292, float %48, float 2.048000e+03 + %47 = mul nsw i32 %.1238, 3 + %48 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv + store i32 %47, ptr %48, align 4 + %49 = fmul fast float %45, 2.048000e+03 + %50 = select i1 %46, float 0.000000e+00, float %49 + %51 = select i1 %.not292, float %50, float 2.048000e+03 %52 = fsub fast float 2.048000e+03, %51 %53 = fcmp fast oge float %52, 0.000000e+00 %54 = select fast i1 %53, float 5.000000e-01, float -5.000000e-01 @@ -1570,13 +1570,13 @@ define hidden void @_ZN4ncnn18resize_bilinear_c3EPKhiiiPhiii(ptr nocapture nound %76 = fsub fast float %72, %75 %77 = icmp slt i32 %74, 0 %.0239 = tail call i32 @llvm.smax.i32(i32 %74, i32 0) - %78 = fmul fast float %76, 2.048000e+03 %.not291 = icmp slt i32 %.0239, %31 %.1240 = select i1 %.not291, i32 %.0239, i32 %32 - %79 = select i1 %77, float 0.000000e+00, float %78 - %80 = getelementptr inbounds i32, ptr %20, i64 %indvars.iv404 - store i32 %.1240, ptr %80, align 4 - %81 = select i1 %.not291, float %79, float 2.048000e+03 + %78 = getelementptr inbounds i32, ptr %20, i64 %indvars.iv404 + store i32 %.1240, ptr %78, align 4 + %79 = fmul fast float %76, 2.048000e+03 + %80 = select i1 %77, float 0.000000e+00, float %79 + %81 = select i1 %.not291, float %80, float 2.048000e+03 %82 = fsub fast float 2.048000e+03, %81 %83 = fcmp fast oge float %82, 0.000000e+00 %84 = select fast i1 %83, float 5.000000e-01, float -5.000000e-01 @@ -2319,14 +2319,14 @@ define hidden void @_ZN4ncnn18resize_bilinear_c4EPKhiiiPhiii(ptr nocapture nound %45 = fsub fast float %41, %44 %46 = icmp slt i32 %43, 0 %.0252 = tail call i32 @llvm.smax.i32(i32 %43, i32 0) - %47 = fmul fast float %45, 2.048000e+03 %.not307 = icmp slt i32 %.0252, %27 %.1253 = select i1 %.not307, i32 %.0252, i32 %28 - %48 = select i1 %46, float 0.000000e+00, float %47 - %49 = shl nsw i32 %.1253, 2 - %50 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv - store i32 %49, ptr %50, align 4 - %51 = select i1 %.not307, float %48, float 2.048000e+03 + %47 = shl nsw i32 %.1253, 2 + %48 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv + store i32 %47, ptr %48, align 4 + %49 = fmul fast float %45, 2.048000e+03 + %50 = select i1 %46, float 0.000000e+00, float %49 + %51 = select i1 %.not307, float %50, float 2.048000e+03 %52 = fsub fast float 2.048000e+03, %51 %53 = fcmp fast oge float %52, 0.000000e+00 %54 = select fast i1 %53, float 5.000000e-01, float -5.000000e-01 @@ -2361,13 +2361,13 @@ define hidden void @_ZN4ncnn18resize_bilinear_c4EPKhiiiPhiii(ptr nocapture nound %76 = fsub fast float %72, %75 %77 = icmp slt i32 %74, 0 %.0254 = tail call i32 @llvm.smax.i32(i32 %74, i32 0) - %78 = fmul fast float %76, 2.048000e+03 %.not306 = icmp slt i32 %.0254, %31 %.1255 = select i1 %.not306, i32 %.0254, i32 %32 - %79 = select i1 %77, float 0.000000e+00, float %78 - %80 = getelementptr inbounds i32, ptr %20, i64 %indvars.iv419 - store i32 %.1255, ptr %80, align 4 - %81 = select i1 %.not306, float %79, float 2.048000e+03 + %78 = getelementptr inbounds i32, ptr %20, i64 %indvars.iv419 + store i32 %.1255, ptr %78, align 4 + %79 = fmul fast float %76, 2.048000e+03 + %80 = select i1 %77, float 0.000000e+00, float %79 + %81 = select i1 %.not306, float %80, float 2.048000e+03 %82 = fsub fast float 2.048000e+03, %81 %83 = fcmp fast oge float %82, 0.000000e+00 %84 = select fast i1 %83, float 5.000000e-01, float -5.000000e-01 diff --git a/bench/nix/optimized/sqlite.ll b/bench/nix/optimized/sqlite.ll index 6d3f2c06cae..83b3e467a13 100644 --- a/bench/nix/optimized/sqlite.ll +++ b/bench/nix/optimized/sqlite.ll @@ -1741,112 +1741,112 @@ define void @_ZN3nix6SQLiteC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaI %20 = select i1 %19, ptr null, ptr @.str.9 %21 = icmp eq i32 %2, 2 %22 = icmp eq i32 %2, 0 - %23 = select i1 %21, i32 65, i32 66 - %24 = load ptr, ptr %1, align 8 - %25 = getelementptr inbounds i8, ptr %1, i64 8 - %26 = load i64, ptr %25, align 8 - call void @_ZN3nix13percentEncodeB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEES3_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, i64 %26, ptr %24, i64 0, ptr nonnull @.str) - %27 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %7, i64 noundef 0, i64 noundef 0, ptr noundef nonnull @.str.10, i64 noundef 5) + %23 = load ptr, ptr %1, align 8 + %24 = getelementptr inbounds i8, ptr %1, i64 8 + %25 = load i64, ptr %24, align 8 + call void @_ZN3nix13percentEncodeB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEES3_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, i64 %25, ptr %23, i64 0, ptr nonnull @.str) + %26 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %7, i64 noundef 0, i64 noundef 0, ptr noundef nonnull @.str.10, i64 noundef 5) to label %.noexc unwind label %70 .noexc: ; preds = %3 - %28 = getelementptr inbounds i8, ptr %6, i64 16 - call void @_ZNSaIcEC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %27) #24 - store ptr %28, ptr %6, align 8, !alias.scope !10 - %29 = load ptr, ptr %27, align 8 - %30 = getelementptr inbounds i8, ptr %27, i64 16 - %31 = icmp eq ptr %29, %30 - br i1 %31, label %32, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i - -32: ; preds = %.noexc - %33 = getelementptr inbounds i8, ptr %27, i64 8 - %34 = load i64, ptr %33, align 8 - %35 = icmp ult i64 %34, 16 - call void @llvm.assume(i1 %35) - %36 = add nuw nsw i64 %34, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %28, ptr noundef nonnull align 8 dereferenceable(1) %30, i64 %36, i1 false) - br label %38 + %27 = getelementptr inbounds i8, ptr %6, i64 16 + call void @_ZNSaIcEC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %26) #24 + store ptr %27, ptr %6, align 8, !alias.scope !10 + %28 = load ptr, ptr %26, align 8 + %29 = getelementptr inbounds i8, ptr %26, i64 16 + %30 = icmp eq ptr %28, %29 + br i1 %30, label %31, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + +31: ; preds = %.noexc + %32 = getelementptr inbounds i8, ptr %26, i64 8 + %33 = load i64, ptr %32, align 8 + %34 = icmp ult i64 %33, 16 + call void @llvm.assume(i1 %34) + %35 = add nuw nsw i64 %33, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %27, ptr noundef nonnull align 8 dereferenceable(1) %29, i64 %35, i1 false) + br label %37 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %.noexc - store ptr %29, ptr %6, align 8, !alias.scope !10 - %37 = load i64, ptr %30, align 8 - store i64 %37, ptr %28, align 8, !alias.scope !10 - %.phi.trans.insert.i = getelementptr inbounds i8, ptr %27, i64 8 + store ptr %28, ptr %6, align 8, !alias.scope !10 + %36 = load i64, ptr %29, align 8 + store i64 %36, ptr %27, align 8, !alias.scope !10 + %.phi.trans.insert.i = getelementptr inbounds i8, ptr %26, i64 8 %.pre.i = load i64, ptr %.phi.trans.insert.i, align 8 - br label %38 - -38: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i, %32 - %39 = phi i64 [ %34, %32 ], [ %.pre.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i ] - %40 = getelementptr inbounds i8, ptr %27, i64 8 - %41 = getelementptr inbounds i8, ptr %6, i64 8 - store i64 %39, ptr %41, align 8, !alias.scope !10 - store ptr %30, ptr %27, align 8 - store i64 0, ptr %40, align 8 - store i8 0, ptr %30, align 8 + br label %37 + +37: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i, %31 + %38 = phi i64 [ %33, %31 ], [ %.pre.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i ] + %39 = getelementptr inbounds i8, ptr %26, i64 8 + %40 = getelementptr inbounds i8, ptr %6, i64 8 + store i64 %38, ptr %40, align 8, !alias.scope !10 + store ptr %29, ptr %26, align 8 + store i64 0, ptr %39, align 8 + store i8 0, ptr %29, align 8 invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.11) - to label %42 unwind label %72 + to label %41 unwind label %72 -42: ; preds = %38 +41: ; preds = %37 %.str.12..str.13 = select i1 %21, ptr @.str.12, ptr @.str.13 invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %.str.12..str.13) - to label %43 unwind label %74 + to label %42 unwind label %74 -43: ; preds = %42 - %44 = load ptr, ptr %5, align 8 - %45 = getelementptr inbounds i8, ptr %5, i64 16 - %46 = icmp eq ptr %44, %45 - br i1 %46, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i41 +42: ; preds = %41 + %43 = load ptr, ptr %5, align 8 + %44 = getelementptr inbounds i8, ptr %5, i64 16 + %45 = icmp eq ptr %43, %44 + br i1 %45, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i41 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %43 - %47 = getelementptr inbounds i8, ptr %5, i64 8 - %48 = load i64, ptr %47, align 8 - %49 = icmp ult i64 %48, 16 - call void @llvm.assume(i1 %49) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %42 + %46 = getelementptr inbounds i8, ptr %5, i64 8 + %47 = load i64, ptr %46, align 8 + %48 = icmp ult i64 %47, 16 + call void @llvm.assume(i1 %48) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i41: ; preds = %43 - call void @_ZdlPv(ptr noundef %44) #25 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i41: ; preds = %42 + call void @_ZdlPv(ptr noundef %43) #25 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i41 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #24 - %50 = load ptr, ptr %6, align 8 - %51 = icmp eq ptr %50, %28 - br i1 %51, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i43, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i42 + %49 = load ptr, ptr %6, align 8 + %50 = icmp eq ptr %49, %27 + br i1 %50, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i43, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i42 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i43: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %52 = load i64, ptr %41, align 8 - %53 = icmp ult i64 %52, 16 - call void @llvm.assume(i1 %53) + %51 = load i64, ptr %40, align 8 + %52 = icmp ult i64 %51, 16 + call void @llvm.assume(i1 %52) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit44 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i42: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - call void @_ZdlPv(ptr noundef %50) #25 + call void @_ZdlPv(ptr noundef %49) #25 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit44 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit44: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i43, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i42 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #24 - %54 = load ptr, ptr %7, align 8 - %55 = getelementptr inbounds i8, ptr %7, i64 16 - %56 = icmp eq ptr %54, %55 - br i1 %56, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i46, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i45 + %53 = load ptr, ptr %7, align 8 + %54 = getelementptr inbounds i8, ptr %7, i64 16 + %55 = icmp eq ptr %53, %54 + br i1 %55, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i46, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i45 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i46: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit44 - %57 = getelementptr inbounds i8, ptr %7, i64 8 - %58 = load i64, ptr %57, align 8 - %59 = icmp ult i64 %58, 16 - call void @llvm.assume(i1 %59) + %56 = getelementptr inbounds i8, ptr %7, i64 8 + %57 = load i64, ptr %56, align 8 + %58 = icmp ult i64 %57, 16 + call void @llvm.assume(i1 %58) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit47 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i45: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit44 - call void @_ZdlPv(ptr noundef %54) #25 + call void @_ZdlPv(ptr noundef %53) #25 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit47 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit47: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i46, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i45 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #24 - %60 = load ptr, ptr %4, align 8 - %61 = select i1 %22, i32 70, i32 %23 - %62 = invoke i32 @sqlite3_open_v2(ptr noundef %60, ptr noundef nonnull %0, i32 noundef %61, ptr noundef %20) + %59 = load ptr, ptr %4, align 8 + %60 = select i1 %21, i32 65, i32 66 + %61 = select i1 %22, i32 70, i32 %60 + %62 = invoke i32 @sqlite3_open_v2(ptr noundef %59, ptr noundef nonnull %0, i32 noundef %61, ptr noundef %20) to label %63 unwind label %77 63: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit47 @@ -1877,12 +1877,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit47: ; preds = %_ZN cleanup br label %145 -72: ; preds = %38 +72: ; preds = %37 %73 = landingpad { ptr, i32 } cleanup br label %76 -74: ; preds = %42 +74: ; preds = %41 %75 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #24 diff --git a/bench/node/optimized/libnode.queue.ll b/bench/node/optimized/libnode.queue.ll index a60d778866e..d9a6ccb95a7 100644 --- a/bench/node/optimized/libnode.queue.ll +++ b/bench/node/optimized/libnode.queue.ll @@ -5441,18 +5441,19 @@ _ZNRSt8optionalImE5valueEv.exit: ; preds = %lor.lhs.false %2 = load i64, ptr %size_, align 8 %.sroa.speculated61 = tail call i64 @llvm.umin.i64(i64 %2, i64 %start) %tobool.i.i14 = trunc i8 %maybeEnd.coerce1 to i1 - %retval.0.i = select i1 %tobool.i.i14, i64 %maybeEnd.coerce0, i64 %2 - %3 = tail call i64 @llvm.umin.i64(i64 %2, i64 %retval.0.i) - %sub = tail call i64 @llvm.usub.sat.i64(i64 %3, i64 %.sroa.speculated61) - %cmp.not.not = icmp ult i64 %start, %3 - br i1 %cmp.not.not, label %if.then9, label %if.end41 + %3 = tail call i64 @llvm.umin.i64(i64 %2, i64 %maybeEnd.coerce0) + %4 = tail call i64 @llvm.umax.i64(i64 %.sroa.speculated61, i64 %3) + %.sroa.speculated58 = select i1 %tobool.i.i14, i64 %4, i64 %2 + %sub = sub i64 %.sroa.speculated58, %.sroa.speculated61 + %cmp.not = icmp eq i64 %sub, 0 + br i1 %cmp.not, label %if.end41, label %if.then9 if.then9: ; preds = %_ZNRSt8optionalImE5valueEv.exit %entries_ = getelementptr inbounds i8, ptr %this, i64 24 - %4 = load ptr, ptr %entries_, align 8 + %5 = load ptr, ptr %entries_, align 8 %_M_finish.i = getelementptr inbounds i8, ptr %this, i64 32 - %5 = load ptr, ptr %_M_finish.i, align 8 - %cmp.i19.not74 = icmp eq ptr %4, %5 + %6 = load ptr, ptr %_M_finish.i, align 8 + %cmp.i19.not74 = icmp eq ptr %5, %6 br i1 %cmp.i19.not74, label %if.end41, label %for.body for.body: ; preds = %if.then9, %for.inc @@ -5461,15 +5462,15 @@ for.body: ; preds = %if.then9, %for.inc %slices.sroa.0.178 = phi ptr [ %slices.sroa.0.2, %for.inc ], [ null, %if.then9 ] %slices.sroa.7.177 = phi ptr [ %slices.sroa.7.2, %for.inc ], [ null, %if.then9 ] %slices.sroa.15.176 = phi ptr [ %slices.sroa.15.2, %for.inc ], [ null, %if.then9 ] - %__begin3.sroa.0.075 = phi ptr [ %incdec.ptr.i29, %for.inc ], [ %4, %if.then9 ] - %6 = load ptr, ptr %__begin3.sroa.0.075, align 8 - %vtable = load ptr, ptr %6, align 8 + %__begin3.sroa.0.075 = phi ptr [ %incdec.ptr.i29, %for.inc ], [ %5, %if.then9 ] + %7 = load ptr, ptr %__begin3.sroa.0.075, align 8 + %vtable = load ptr, ptr %7, align 8 %vfn = getelementptr inbounds i8, ptr %vtable, i64 72 - %7 = load ptr, ptr %vfn, align 8 - %call18 = call { i64, i8 } %7(ptr noundef nonnull align 8 dereferenceable(8) %6) #20 - %8 = extractvalue { i64, i8 } %call18, 0 - %9 = extractvalue { i64, i8 } %call18, 1 - %tobool.i.i21 = trunc i8 %9 to i1 + %8 = load ptr, ptr %vfn, align 8 + %call18 = call { i64, i8 } %8(ptr noundef nonnull align 8 dereferenceable(8) %7) #20 + %9 = extractvalue { i64, i8 } %call18, 0 + %10 = extractvalue { i64, i8 } %call18, 1 + %tobool.i.i21 = trunc i8 %10 to i1 br i1 %tobool.i.i21, label %_ZNOSt8optionalImE5valueEv.exit, label %if.end.i22 if.end.i22: ; preds = %for.body @@ -5477,28 +5478,28 @@ if.end.i22: ; preds = %for.body unreachable _ZNOSt8optionalImE5valueEv.exit: ; preds = %for.body - %cmp22 = icmp ugt i64 %start.addr.080, %8 + %cmp22 = icmp ugt i64 %start.addr.080, %9 br i1 %cmp22, label %if.then23, label %if.end25 if.then23: ; preds = %_ZNOSt8optionalImE5valueEv.exit - %sub24 = sub nuw i64 %start.addr.080, %8 + %sub24 = sub nuw i64 %start.addr.080, %9 br label %for.inc if.end25: ; preds = %_ZNOSt8optionalImE5valueEv.exit - %sub28 = sub nuw i64 %8, %start.addr.080 + %sub28 = sub nuw i64 %9, %start.addr.080 %.sroa.speculated = call i64 @llvm.umin.i64(i64 %sub28, i64 %remaining.079) - %10 = load ptr, ptr %__begin3.sroa.0.075, align 8 + %11 = load ptr, ptr %__begin3.sroa.0.075, align 8 %add = add i64 %.sroa.speculated, %start.addr.080 - %vtable33 = load ptr, ptr %10, align 8 + %vtable33 = load ptr, ptr %11, align 8 %vfn34 = getelementptr inbounds i8, ptr %vtable33, i64 64 - %11 = load ptr, ptr %vfn34, align 8 - call void %11(ptr nonnull sret(%"class.std::unique_ptr") align 8 %ref.tmp30, ptr noundef nonnull align 8 dereferenceable(8) %10, i64 noundef %start.addr.080, i64 %add, i8 1) #20 + %12 = load ptr, ptr %vfn34, align 8 + call void %12(ptr nonnull sret(%"class.std::unique_ptr") align 8 %ref.tmp30, ptr noundef nonnull align 8 dereferenceable(8) %11, i64 noundef %start.addr.080, i64 %add, i8 1) #20 %cmp.not.i = icmp eq ptr %slices.sroa.7.177, %slices.sroa.15.176 br i1 %cmp.not.i, label %if.else.i, label %_ZNSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EE12emplace_backIJS6_EEERS6_DpOT_.exit.thread _ZNSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EE12emplace_backIJS6_EEERS6_DpOT_.exit.thread: ; preds = %if.end25 - %12 = load i64, ptr %ref.tmp30, align 8 - store i64 %12, ptr %slices.sroa.7.177, align 8 + %13 = load i64, ptr %ref.tmp30, align 8 + store i64 %13, ptr %slices.sroa.7.177, align 8 %incdec.ptr.i = getelementptr inbounds i8, ptr %slices.sroa.7.177, i64 8 br label %_ZNSt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS2_EED2Ev.exit @@ -5518,8 +5519,8 @@ _ZNKSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS %.sroa.speculated.i.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i, i64 1) %add.i.i = add nsw i64 %.sroa.speculated.i.i, %sub.ptr.div.i.i.i %cmp7.i.i = icmp ult i64 %add.i.i, %sub.ptr.div.i.i.i - %13 = call i64 @llvm.umin.i64(i64 %add.i.i, i64 1152921504606846975) - %cond.i.i = select i1 %cmp7.i.i, i64 1152921504606846975, i64 %13 + %14 = call i64 @llvm.umin.i64(i64 %add.i.i, i64 1152921504606846975) + %cond.i.i = select i1 %cmp7.i.i, i64 1152921504606846975, i64 %14 %cmp.not.i.i = icmp eq i64 %cond.i.i, 0 br i1 %cmp.not.i.i, label %_ZNSt12_Vector_baseISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EE11_M_allocateEm.exit.i, label %cond.true.i.i @@ -5531,8 +5532,8 @@ cond.true.i.i: ; preds = %_ZNKSt6vectorISt10u _ZNSt12_Vector_baseISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EE11_M_allocateEm.exit.i: ; preds = %cond.true.i.i, %_ZNKSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EE12_M_check_lenEmPKc.exit.i %cond.i10.i = phi ptr [ %call5.i.i.i.i, %cond.true.i.i ], [ null, %_ZNKSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EE12_M_check_lenEmPKc.exit.i ] %add.ptr.i = getelementptr inbounds %"class.std::unique_ptr", ptr %cond.i10.i, i64 %sub.ptr.div.i.i.i - %14 = load i64, ptr %ref.tmp30, align 8 - store i64 %14, ptr %add.ptr.i, align 8 + %15 = load i64, ptr %ref.tmp30, align 8 + store i64 %15, ptr %add.ptr.i, align 8 store ptr null, ptr %ref.tmp30, align 8 %cmp.not5.i.i.i.i = icmp eq ptr %slices.sroa.0.178, %slices.sroa.7.177 br i1 %cmp.not5.i.i.i.i, label %_ZNSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit19.i, label %for.body.i.i.i.i33 @@ -5542,8 +5543,8 @@ for.body.i.i.i.i33: ; preds = %_ZNSt12_Vector_base %__first.addr.06.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i34, %for.body.i.i.i.i33 ], [ %slices.sroa.0.178, %_ZNSt12_Vector_baseISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EE11_M_allocateEm.exit.i ] call void @llvm.experimental.noalias.scope.decl(metadata !87) call void @llvm.experimental.noalias.scope.decl(metadata !90) - %15 = load i64, ptr %__first.addr.06.i.i.i.i, align 8, !alias.scope !90, !noalias !87 - store i64 %15, ptr %__cur.07.i.i.i.i, align 8, !alias.scope !87, !noalias !90 + %16 = load i64, ptr %__first.addr.06.i.i.i.i, align 8, !alias.scope !90, !noalias !87 + store i64 %16, ptr %__cur.07.i.i.i.i, align 8, !alias.scope !87, !noalias !90 store ptr null, ptr %__first.addr.06.i.i.i.i, align 8, !alias.scope !90, !noalias !87 %incdec.ptr.i.i.i.i34 = getelementptr inbounds i8, ptr %__first.addr.06.i.i.i.i, i64 8 %incdec.ptr1.i.i.i.i = getelementptr inbounds i8, ptr %__cur.07.i.i.i.i, i64 8 @@ -5569,8 +5570,8 @@ _ZNSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6 _ZNKSt14default_deleteIN4node9DataQueue5EntryEEclEPS2_.exit.i: ; preds = %_ZNSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EE12emplace_backIJS6_EEERS6_DpOT_.exit %vtable.i.i = load ptr, ptr %.pr, align 8 %vfn.i.i = getelementptr inbounds i8, ptr %vtable.i.i, i64 8 - %16 = load ptr, ptr %vfn.i.i, align 8 - call void %16(ptr noundef nonnull align 8 dereferenceable(8) %.pr) #20 + %17 = load ptr, ptr %vfn.i.i, align 8 + call void %17(ptr noundef nonnull align 8 dereferenceable(8) %.pr) #20 br label %_ZNSt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS2_EED2Ev.exit _ZNSt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS2_EED2Ev.exit: ; preds = %_ZNSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EE12emplace_backIJS6_EEERS6_DpOT_.exit.thread, %_ZNSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EE12emplace_backIJS6_EEERS6_DpOT_.exit, %_ZNKSt14default_deleteIN4node9DataQueue5EntryEEclEPS2_.exit.i @@ -5589,7 +5590,7 @@ for.inc: ; preds = %_ZNSt10unique_ptrIN %remaining.1 = phi i64 [ %remaining.079, %if.then23 ], [ %sub36, %_ZNSt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS2_EED2Ev.exit ] %start.addr.1 = phi i64 [ %sub24, %if.then23 ], [ 0, %_ZNSt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS2_EED2Ev.exit ] %incdec.ptr.i29 = getelementptr inbounds i8, ptr %__begin3.sroa.0.075, i64 8 - %cmp.i19.not = icmp eq ptr %incdec.ptr.i29, %5 + %cmp.i19.not = icmp eq ptr %incdec.ptr.i29, %6 br i1 %cmp.i19.not, label %if.end41, label %for.body if.end41: ; preds = %_ZNSt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS2_EED2Ev.exit, %for.inc, %if.then9, %_ZNRSt8optionalImE5valueEv.exit @@ -5603,9 +5604,9 @@ if.end41: ; preds = %_ZNSt10unique_ptrIN store i32 1, ptr %_M_weak_count.i.i.i.i.i.i, align 4, !noalias !98 store ptr getelementptr inbounds (i8, ptr @_ZTVSt23_Sp_counted_ptr_inplaceIN4node12_GLOBAL__N_113DataQueueImplESaIvELN9__gnu_cxx12_Lock_policyE2EE, i64 16), ptr %call5.i.i.i.i.i.i.i, align 8, !noalias !98 %_M_impl.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i.i.i, i64 16 - %17 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i.i.i, i64 24 - %18 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i.i.i, i64 32 - store i64 0, ptr %18, align 8, !noalias !98 + %18 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i.i.i, i64 24 + %19 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i.i.i, i64 32 + store i64 0, ptr %19, align 8, !noalias !98 store ptr getelementptr inbounds (i8, ptr @_ZTVN4node12_GLOBAL__N_113DataQueueImplE, i64 16), ptr %_M_impl.i.i.i.i.i.i, align 8, !noalias !98 %entries_.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i.i.i, i64 40 store ptr %slices.sroa.0.0, ptr %entries_.i.i.i.i.i.i.i.i, align 8, !noalias !98 @@ -5636,9 +5637,9 @@ if.end41: ; preds = %_ZNSt10unique_ptrIN store float 1.000000e+00, ptr %_M_rehash_policy.i.i.i.i.i.i.i.i.i.i, align 8, !noalias !98 %_M_next_resize.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i.i.i, i64 152 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %_M_next_resize.i.i.i.i.i.i.i.i.i.i.i, i8 0, i64 16, i1 false), !noalias !98 - store ptr %_M_impl.i.i.i.i.i.i, ptr %17, align 8, !noalias !98 - %19 = load i8, ptr @__libc_single_threaded, align 1, !noalias !98 - %tobool.i.i.not.i.i.i.i.i.i.i.i = icmp eq i8 %19, 0 + store ptr %_M_impl.i.i.i.i.i.i, ptr %18, align 8, !noalias !98 + %20 = load i8, ptr @__libc_single_threaded, align 1, !noalias !98 + %tobool.i.i.not.i.i.i.i.i.i.i.i = icmp eq i8 %20, 0 br i1 %tobool.i.i.not.i.i.i.i.i.i.i.i, label %if.end.i.i.i.i.i.i.i, label %if.end.i.i.i.i.thread.i.i.i if.end.i.i.i.i.thread.i.i.i: ; preds = %if.end41 @@ -5646,41 +5647,41 @@ if.end.i.i.i.i.thread.i.i.i: ; preds = %if.end41 br label %_ZNSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EED2Ev.exit if.end.i.i.i.i.i.i.i: ; preds = %if.end41 - %20 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i, i32 1 acq_rel, align 4, !noalias !98 - %.pre.i.i.i = load ptr, ptr %18, align 8, !noalias !98 + %21 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i, i32 1 acq_rel, align 4, !noalias !98 + %.pre.i.i.i = load ptr, ptr %19, align 8, !noalias !98 %cmp3.not.i.i.i.i.i.i.i = icmp eq ptr %.pre.i.i.i, null br i1 %cmp3.not.i.i.i.i.i.i.i, label %_ZNSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EED2Ev.exit, label %if.then4.i.i.i.i.i.i.i if.then4.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i %_M_weak_count.i4.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %.pre.i.i.i, i64 12 - %21 = load i8, ptr @__libc_single_threaded, align 1, !noalias !98 - %tobool.i.not.i.i.i.i.i.i.i.i = icmp eq i8 %21, 0 + %22 = load i8, ptr @__libc_single_threaded, align 1, !noalias !98 + %tobool.i.not.i.i.i.i.i.i.i.i = icmp eq i8 %22, 0 br i1 %tobool.i.not.i.i.i.i.i.i.i.i, label %if.else.i.i7.i.i.i.i.i.i.i, label %if.then.i.i5.i.i.i.i.i.i.i if.then.i.i5.i.i.i.i.i.i.i: ; preds = %if.then4.i.i.i.i.i.i.i - %22 = load i32, ptr %_M_weak_count.i4.i.i.i.i.i.i.i, align 4, !noalias !98 - %add.i.i6.i.i.i.i.i.i.i = add nsw i32 %22, -1 + %23 = load i32, ptr %_M_weak_count.i4.i.i.i.i.i.i.i, align 4, !noalias !98 + %add.i.i6.i.i.i.i.i.i.i = add nsw i32 %23, -1 store i32 %add.i.i6.i.i.i.i.i.i.i, ptr %_M_weak_count.i4.i.i.i.i.i.i.i, align 4, !noalias !98 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i if.else.i.i7.i.i.i.i.i.i.i: ; preds = %if.then4.i.i.i.i.i.i.i - %23 = atomicrmw volatile add ptr %_M_weak_count.i4.i.i.i.i.i.i.i, i32 -1 acq_rel, align 4, !noalias !98 + %24 = atomicrmw volatile add ptr %_M_weak_count.i4.i.i.i.i.i.i.i, i32 -1 acq_rel, align 4, !noalias !98 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i: ; preds = %if.else.i.i7.i.i.i.i.i.i.i, %if.then.i.i5.i.i.i.i.i.i.i - %retval.i.0.i.i.i.i.i.i.i.i = phi i32 [ %22, %if.then.i.i5.i.i.i.i.i.i.i ], [ %23, %if.else.i.i7.i.i.i.i.i.i.i ] + %retval.i.0.i.i.i.i.i.i.i.i = phi i32 [ %23, %if.then.i.i5.i.i.i.i.i.i.i ], [ %24, %if.else.i.i7.i.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i.i = icmp eq i32 %retval.i.0.i.i.i.i.i.i.i.i, 1 br i1 %cmp.i.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i, label %_ZNSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EED2Ev.exit if.then.i.i.i.i.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i %vtable.i.i.i.i.i.i.i.i = load ptr, ptr %.pre.i.i.i, align 8, !noalias !98 %vfn.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i, i64 24 - %24 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i, align 8, !noalias !98 - call void %24(ptr noundef nonnull align 8 dereferenceable(16) %.pre.i.i.i) #20, !noalias !98 + %25 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i, align 8, !noalias !98 + call void %25(ptr noundef nonnull align 8 dereferenceable(16) %.pre.i.i.i) #20, !noalias !98 br label %_ZNSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EED2Ev.exit _ZNSt6vectorISt10unique_ptrIN4node9DataQueue5EntryESt14default_deleteIS3_EESaIS6_EED2Ev.exit: ; preds = %if.then.i.i.i.i.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i, %if.end.i.i.i.i.thread.i.i.i - store ptr %call5.i.i.i.i.i.i.i, ptr %18, align 8, !noalias !98 + store ptr %call5.i.i.i.i.i.i.i, ptr %19, align 8, !noalias !98 store ptr %_M_impl.i.i.i.i.i.i, ptr %agg.result, align 8 %_M_refcount.i.i = getelementptr inbounds i8, ptr %agg.result, i64 8 store ptr %call5.i.i.i.i.i.i.i, ptr %_M_refcount.i.i, align 8 diff --git a/bench/nuklear/optimized/unity.c.ll b/bench/nuklear/optimized/unity.c.ll index b3cca358fee..e841b5c7735 100644 --- a/bench/nuklear/optimized/unity.c.ll +++ b/bench/nuklear/optimized/unity.c.ll @@ -2080,24 +2080,24 @@ nk_hsva.exit: ; preds = %if.then.i.i.i, %sw. %2 = fmul float %cond.i.i.i, 2.550000e+02 %3 = fptoui float %2 to i8 %4 = zext i8 %3 to i32 - %5 = or disjoint i32 %4, -16777216 %cmp12.i.i.i = fcmp ogt float %c.sroa.0.4.vec.extract.i.i, 1.000000e+00 %cond17.i.i.i = select i1 %cmp12.i.i.i, float 1.000000e+00, float %c.sroa.0.4.vec.extract.i.i %cmp18.i.i.i = fcmp ogt float %cond17.i.i.i, 0.000000e+00 - %6 = fmul float %cond17.i.i.i, 2.550000e+02 - %7 = fptoui float %6 to i8 - %8 = zext i8 %7 to i32 - %9 = shl nuw nsw i32 %8, 8 - %cond29.i.i.i = select i1 %cmp18.i.i.i, i32 %9, i32 0 + %5 = fmul float %cond17.i.i.i, 2.550000e+02 + %6 = fptoui float %5 to i8 + %7 = zext i8 %6 to i32 + %8 = shl nuw nsw i32 %7, 8 + %cond29.i.i.i = select i1 %cmp18.i.i.i, i32 %8, i32 0 %cmp33.i.i.i = fcmp ogt float %c.sroa.3.8.vec.extract.i.i, 1.000000e+00 %cond38.i.i.i = select i1 %cmp33.i.i.i, float 1.000000e+00, float %c.sroa.3.8.vec.extract.i.i %cmp39.i.i.i = fcmp ogt float %cond38.i.i.i, 0.000000e+00 - %10 = fmul float %cond38.i.i.i, 2.550000e+02 - %11 = fptoui float %10 to i8 - %12 = zext i8 %11 to i32 - %13 = shl nuw nsw i32 %12, 16 - %cond50.i.i.i = select i1 %cmp39.i.i.i, i32 %13, i32 0 - %retval.sroa.3.0.insert.insert.i.i.i = select i1 %cmp1.i.i.i, i32 %5, i32 -16777216 + %9 = fmul float %cond38.i.i.i, 2.550000e+02 + %10 = fptoui float %9 to i8 + %11 = zext i8 %10 to i32 + %12 = shl nuw nsw i32 %11, 16 + %cond50.i.i.i = select i1 %cmp39.i.i.i, i32 %12, i32 0 + %13 = or disjoint i32 %4, -16777216 + %retval.sroa.3.0.insert.insert.i.i.i = select i1 %cmp1.i.i.i, i32 %13, i32 -16777216 %retval.sroa.2.0.insert.insert.i.i.i = or disjoint i32 %retval.sroa.3.0.insert.insert.i.i.i, %cond50.i.i.i %retval.sroa.0.0.insert.insert.i.i.i = or disjoint i32 %retval.sroa.2.0.insert.insert.i.i.i, %cond29.i.i.i ret i32 %retval.sroa.0.0.insert.insert.i.i.i @@ -2303,24 +2303,24 @@ nk_hsv.exit: ; preds = %if.then.i.i.i.i, %s %5 = fmul float %cond.i.i.i.i, 2.550000e+02 %6 = fptoui float %5 to i8 %7 = zext i8 %6 to i32 - %8 = or disjoint i32 %7, -16777216 %cmp12.i.i.i.i = fcmp ogt float %c.sroa.0.4.vec.extract.i.i.i, 1.000000e+00 %cond17.i.i.i.i = select i1 %cmp12.i.i.i.i, float 1.000000e+00, float %c.sroa.0.4.vec.extract.i.i.i %cmp18.i.i.i.i = fcmp ogt float %cond17.i.i.i.i, 0.000000e+00 - %9 = fmul float %cond17.i.i.i.i, 2.550000e+02 - %10 = fptoui float %9 to i8 - %11 = zext i8 %10 to i32 - %12 = shl nuw nsw i32 %11, 8 - %cond29.i.i.i.i = select i1 %cmp18.i.i.i.i, i32 %12, i32 0 + %8 = fmul float %cond17.i.i.i.i, 2.550000e+02 + %9 = fptoui float %8 to i8 + %10 = zext i8 %9 to i32 + %11 = shl nuw nsw i32 %10, 8 + %cond29.i.i.i.i = select i1 %cmp18.i.i.i.i, i32 %11, i32 0 %cmp33.i.i.i.i = fcmp ogt float %c.sroa.3.8.vec.extract.i.i.i, 1.000000e+00 %cond38.i.i.i.i = select i1 %cmp33.i.i.i.i, float 1.000000e+00, float %c.sroa.3.8.vec.extract.i.i.i %cmp39.i.i.i.i = fcmp ogt float %cond38.i.i.i.i, 0.000000e+00 - %13 = fmul float %cond38.i.i.i.i, 2.550000e+02 - %14 = fptoui float %13 to i8 - %15 = zext i8 %14 to i32 - %16 = shl nuw nsw i32 %15, 16 - %cond50.i.i.i.i = select i1 %cmp39.i.i.i.i, i32 %16, i32 0 - %retval.sroa.3.0.insert.insert.i.i.i.i = select i1 %cmp1.i.i.i.i, i32 %8, i32 -16777216 + %12 = fmul float %cond38.i.i.i.i, 2.550000e+02 + %13 = fptoui float %12 to i8 + %14 = zext i8 %13 to i32 + %15 = shl nuw nsw i32 %14, 16 + %cond50.i.i.i.i = select i1 %cmp39.i.i.i.i, i32 %15, i32 0 + %16 = or disjoint i32 %7, -16777216 + %retval.sroa.3.0.insert.insert.i.i.i.i = select i1 %cmp1.i.i.i.i, i32 %16, i32 -16777216 %retval.sroa.2.0.insert.insert.i.i.i.i = or disjoint i32 %retval.sroa.3.0.insert.insert.i.i.i.i, %cond50.i.i.i.i %retval.sroa.0.0.insert.insert.i.i.i.i = or disjoint i32 %retval.sroa.2.0.insert.insert.i.i.i.i, %cond29.i.i.i.i ret i32 %retval.sroa.0.0.insert.insert.i.i.i.i @@ -2405,24 +2405,24 @@ nk_hsv.exit: ; preds = %if.then.i.i.i.i, %s %5 = fmul float %cond.i.i.i.i, 2.550000e+02 %6 = fptoui float %5 to i8 %7 = zext i8 %6 to i32 - %8 = or disjoint i32 %7, -16777216 %cmp12.i.i.i.i = fcmp ogt float %c.sroa.0.4.vec.extract.i.i.i, 1.000000e+00 %cond17.i.i.i.i = select i1 %cmp12.i.i.i.i, float 1.000000e+00, float %c.sroa.0.4.vec.extract.i.i.i %cmp18.i.i.i.i = fcmp ogt float %cond17.i.i.i.i, 0.000000e+00 - %9 = fmul float %cond17.i.i.i.i, 2.550000e+02 - %10 = fptoui float %9 to i8 - %11 = zext i8 %10 to i32 - %12 = shl nuw nsw i32 %11, 8 - %cond29.i.i.i.i = select i1 %cmp18.i.i.i.i, i32 %12, i32 0 + %8 = fmul float %cond17.i.i.i.i, 2.550000e+02 + %9 = fptoui float %8 to i8 + %10 = zext i8 %9 to i32 + %11 = shl nuw nsw i32 %10, 8 + %cond29.i.i.i.i = select i1 %cmp18.i.i.i.i, i32 %11, i32 0 %cmp33.i.i.i.i = fcmp ogt float %c.sroa.3.8.vec.extract.i.i.i, 1.000000e+00 %cond38.i.i.i.i = select i1 %cmp33.i.i.i.i, float 1.000000e+00, float %c.sroa.3.8.vec.extract.i.i.i %cmp39.i.i.i.i = fcmp ogt float %cond38.i.i.i.i, 0.000000e+00 - %13 = fmul float %cond38.i.i.i.i, 2.550000e+02 - %14 = fptoui float %13 to i8 - %15 = zext i8 %14 to i32 - %16 = shl nuw nsw i32 %15, 16 - %cond50.i.i.i.i = select i1 %cmp39.i.i.i.i, i32 %16, i32 0 - %retval.sroa.3.0.insert.insert.i.i.i.i = select i1 %cmp1.i.i.i.i, i32 %8, i32 -16777216 + %12 = fmul float %cond38.i.i.i.i, 2.550000e+02 + %13 = fptoui float %12 to i8 + %14 = zext i8 %13 to i32 + %15 = shl nuw nsw i32 %14, 16 + %cond50.i.i.i.i = select i1 %cmp39.i.i.i.i, i32 %15, i32 0 + %16 = or disjoint i32 %7, -16777216 + %retval.sroa.3.0.insert.insert.i.i.i.i = select i1 %cmp1.i.i.i.i, i32 %16, i32 -16777216 %retval.sroa.2.0.insert.insert.i.i.i.i = or disjoint i32 %retval.sroa.3.0.insert.insert.i.i.i.i, %cond50.i.i.i.i %retval.sroa.0.0.insert.insert.i.i.i.i = or disjoint i32 %retval.sroa.2.0.insert.insert.i.i.i.i, %cond29.i.i.i.i ret i32 %retval.sroa.0.0.insert.insert.i.i.i.i @@ -2496,24 +2496,24 @@ nk_hsva_f.exit: ; preds = %if.then.i.i, %sw.ep %2 = fmul float %cond.i.i, 2.550000e+02 %3 = fptoui float %2 to i8 %4 = zext i8 %3 to i32 - %5 = or disjoint i32 %4, -16777216 %cmp12.i.i = fcmp ogt float %c.sroa.0.4.vec.extract.i, 1.000000e+00 %cond17.i.i = select i1 %cmp12.i.i, float 1.000000e+00, float %c.sroa.0.4.vec.extract.i %cmp18.i.i = fcmp ogt float %cond17.i.i, 0.000000e+00 - %6 = fmul float %cond17.i.i, 2.550000e+02 - %7 = fptoui float %6 to i8 - %8 = zext i8 %7 to i32 - %9 = shl nuw nsw i32 %8, 8 - %cond29.i.i = select i1 %cmp18.i.i, i32 %9, i32 0 + %5 = fmul float %cond17.i.i, 2.550000e+02 + %6 = fptoui float %5 to i8 + %7 = zext i8 %6 to i32 + %8 = shl nuw nsw i32 %7, 8 + %cond29.i.i = select i1 %cmp18.i.i, i32 %8, i32 0 %cmp33.i.i = fcmp ogt float %c.sroa.3.8.vec.extract.i, 1.000000e+00 %cond38.i.i = select i1 %cmp33.i.i, float 1.000000e+00, float %c.sroa.3.8.vec.extract.i %cmp39.i.i = fcmp ogt float %cond38.i.i, 0.000000e+00 - %10 = fmul float %cond38.i.i, 2.550000e+02 - %11 = fptoui float %10 to i8 - %12 = zext i8 %11 to i32 - %13 = shl nuw nsw i32 %12, 16 - %cond50.i.i = select i1 %cmp39.i.i, i32 %13, i32 0 - %retval.sroa.3.0.insert.insert.i.i = select i1 %cmp1.i.i, i32 %5, i32 -16777216 + %9 = fmul float %cond38.i.i, 2.550000e+02 + %10 = fptoui float %9 to i8 + %11 = zext i8 %10 to i32 + %12 = shl nuw nsw i32 %11, 16 + %cond50.i.i = select i1 %cmp39.i.i, i32 %12, i32 0 + %13 = or disjoint i32 %4, -16777216 + %retval.sroa.3.0.insert.insert.i.i = select i1 %cmp1.i.i, i32 %13, i32 -16777216 %retval.sroa.2.0.insert.insert.i.i = or disjoint i32 %retval.sroa.3.0.insert.insert.i.i, %cond50.i.i %retval.sroa.0.0.insert.insert.i.i = or disjoint i32 %retval.sroa.2.0.insert.insert.i.i, %cond29.i.i ret i32 %retval.sroa.0.0.insert.insert.i.i @@ -2691,24 +2691,24 @@ nk_hsv_f.exit: ; preds = %if.then.i.i.i, %sw. %5 = fmul float %cond.i.i.i, 2.550000e+02 %6 = fptoui float %5 to i8 %7 = zext i8 %6 to i32 - %8 = or disjoint i32 %7, -16777216 %cmp12.i.i.i = fcmp ogt float %c.sroa.0.4.vec.extract.i.i, 1.000000e+00 %cond17.i.i.i = select i1 %cmp12.i.i.i, float 1.000000e+00, float %c.sroa.0.4.vec.extract.i.i %cmp18.i.i.i = fcmp ogt float %cond17.i.i.i, 0.000000e+00 - %9 = fmul float %cond17.i.i.i, 2.550000e+02 - %10 = fptoui float %9 to i8 - %11 = zext i8 %10 to i32 - %12 = shl nuw nsw i32 %11, 8 - %cond29.i.i.i = select i1 %cmp18.i.i.i, i32 %12, i32 0 + %8 = fmul float %cond17.i.i.i, 2.550000e+02 + %9 = fptoui float %8 to i8 + %10 = zext i8 %9 to i32 + %11 = shl nuw nsw i32 %10, 8 + %cond29.i.i.i = select i1 %cmp18.i.i.i, i32 %11, i32 0 %cmp33.i.i.i = fcmp ogt float %c.sroa.3.8.vec.extract.i.i, 1.000000e+00 %cond38.i.i.i = select i1 %cmp33.i.i.i, float 1.000000e+00, float %c.sroa.3.8.vec.extract.i.i %cmp39.i.i.i = fcmp ogt float %cond38.i.i.i, 0.000000e+00 - %13 = fmul float %cond38.i.i.i, 2.550000e+02 - %14 = fptoui float %13 to i8 - %15 = zext i8 %14 to i32 - %16 = shl nuw nsw i32 %15, 16 - %cond50.i.i.i = select i1 %cmp39.i.i.i, i32 %16, i32 0 - %retval.sroa.3.0.insert.insert.i.i.i = select i1 %cmp1.i.i.i, i32 %8, i32 -16777216 + %12 = fmul float %cond38.i.i.i, 2.550000e+02 + %13 = fptoui float %12 to i8 + %14 = zext i8 %13 to i32 + %15 = shl nuw nsw i32 %14, 16 + %cond50.i.i.i = select i1 %cmp39.i.i.i, i32 %15, i32 0 + %16 = or disjoint i32 %7, -16777216 + %retval.sroa.3.0.insert.insert.i.i.i = select i1 %cmp1.i.i.i, i32 %16, i32 -16777216 %retval.sroa.2.0.insert.insert.i.i.i = or disjoint i32 %retval.sroa.3.0.insert.insert.i.i.i, %cond50.i.i.i %retval.sroa.0.0.insert.insert.i.i.i = or disjoint i32 %retval.sroa.2.0.insert.insert.i.i.i, %cond29.i.i.i ret i32 %retval.sroa.0.0.insert.insert.i.i.i @@ -3351,13 +3351,10 @@ entry: %col.sroa.0.4.vec.insert.i = insertelement <2 x float> %col.sroa.0.0.vec.insert.i, float %mul4.i.i, i64 1 %conv6.i.i = uitofp i8 %in.sroa.3.0.extract.trunc.i.i to float %mul7.i.i = fmul float %conv6.i.i, 0x3F70101020000000 - %col.sroa.3.8.vec.insert.i = insertelement <2 x float> poison, float %mul7.i.i, i64 0 %cmp.i.i = fcmp olt float %mul4.i.i, %mul7.i.i %in.sroa.0.4.vec.insert.i.i = insertelement <2 x float> %col.sroa.0.0.vec.insert.i, float %mul7.i.i, i64 1 - %in.sroa.18.8.vec.insert.i.i = insertelement <2 x float> poison, float %mul4.i.i, i64 0 %K.0.i.i = select i1 %cmp.i.i, float -1.000000e+00, float 0.000000e+00 %in.sroa.0.0.i.i = select i1 %cmp.i.i, <2 x float> %in.sroa.0.4.vec.insert.i.i, <2 x float> %col.sroa.0.4.vec.insert.i - %in.sroa.18.0.i.i = select i1 %cmp.i.i, <2 x float> %in.sroa.18.8.vec.insert.i.i, <2 x float> %col.sroa.3.8.vec.insert.i %in.sroa.0.0.vec.extract.i.i = extractelement <2 x float> %in.sroa.0.0.i.i, i64 0 %in.sroa.0.4.vec.extract20.i.i = extractelement <2 x float> %in.sroa.0.0.i.i, i64 1 %cmp6.i.i = fcmp olt float %in.sroa.0.0.vec.extract.i.i, %in.sroa.0.4.vec.extract20.i.i @@ -3367,7 +3364,7 @@ entry: %in.sroa.0.1.i.i = select i1 %cmp6.i.i, <2 x float> %in.sroa.0.4.vec.insert24.i.i, <2 x float> %in.sroa.0.0.i.i %in.sroa.0.0.vec.extract11.i.i = extractelement <2 x float> %in.sroa.0.1.i.i, i64 0 %in.sroa.0.4.vec.extract26.i.i = extractelement <2 x float> %in.sroa.0.1.i.i, i64 1 - %in.sroa.18.8.vec.extract39.i.i = extractelement <2 x float> %in.sroa.18.0.i.i, i64 0 + %in.sroa.18.8.vec.extract39.i.i = select i1 %cmp.i.i, float %mul4.i.i, float %mul7.i.i %cmp17.i.i = fcmp olt float %in.sroa.0.4.vec.extract26.i.i, %in.sroa.18.8.vec.extract39.i.i %cond.i.i = select i1 %cmp17.i.i, float %in.sroa.0.4.vec.extract26.i.i, float %in.sroa.18.8.vec.extract39.i.i %sub20.i.i = fsub float %in.sroa.0.0.vec.extract11.i.i, %cond.i.i @@ -3462,13 +3459,10 @@ entry: %col.sroa.0.4.vec.insert.i = insertelement <2 x float> %col.sroa.0.0.vec.insert.i, float %mul4.i.i, i64 1 %conv6.i.i = uitofp i8 %in.sroa.3.0.extract.trunc.i.i to float %mul7.i.i = fmul float %conv6.i.i, 0x3F70101020000000 - %col.sroa.3.8.vec.insert.i = insertelement <2 x float> poison, float %mul7.i.i, i64 0 %cmp.i.i = fcmp olt float %mul4.i.i, %mul7.i.i %in.sroa.0.4.vec.insert.i.i = insertelement <2 x float> %col.sroa.0.0.vec.insert.i, float %mul7.i.i, i64 1 - %in.sroa.18.8.vec.insert.i.i = insertelement <2 x float> poison, float %mul4.i.i, i64 0 %K.0.i.i = select i1 %cmp.i.i, float -1.000000e+00, float 0.000000e+00 %in.sroa.0.0.i.i = select i1 %cmp.i.i, <2 x float> %in.sroa.0.4.vec.insert.i.i, <2 x float> %col.sroa.0.4.vec.insert.i - %in.sroa.18.0.i.i = select i1 %cmp.i.i, <2 x float> %in.sroa.18.8.vec.insert.i.i, <2 x float> %col.sroa.3.8.vec.insert.i %in.sroa.0.0.vec.extract.i.i = extractelement <2 x float> %in.sroa.0.0.i.i, i64 0 %in.sroa.0.4.vec.extract20.i.i = extractelement <2 x float> %in.sroa.0.0.i.i, i64 1 %cmp6.i.i = fcmp olt float %in.sroa.0.0.vec.extract.i.i, %in.sroa.0.4.vec.extract20.i.i @@ -3478,7 +3472,7 @@ entry: %in.sroa.0.1.i.i = select i1 %cmp6.i.i, <2 x float> %in.sroa.0.4.vec.insert24.i.i, <2 x float> %in.sroa.0.0.i.i %in.sroa.0.0.vec.extract11.i.i = extractelement <2 x float> %in.sroa.0.1.i.i, i64 0 %in.sroa.0.4.vec.extract26.i.i = extractelement <2 x float> %in.sroa.0.1.i.i, i64 1 - %in.sroa.18.8.vec.extract39.i.i = extractelement <2 x float> %in.sroa.18.0.i.i, i64 0 + %in.sroa.18.8.vec.extract39.i.i = select i1 %cmp.i.i, float %mul4.i.i, float %mul7.i.i %cmp17.i.i = fcmp olt float %in.sroa.0.4.vec.extract26.i.i, %in.sroa.18.8.vec.extract39.i.i %cond.i.i = select i1 %cmp17.i.i, float %in.sroa.0.4.vec.extract26.i.i, float %in.sroa.18.8.vec.extract39.i.i %sub20.i.i = fsub float %in.sroa.0.0.vec.extract11.i.i, %cond.i.i @@ -3937,13 +3931,10 @@ entry: %col.sroa.0.4.vec.insert.i.i = insertelement <2 x float> %col.sroa.0.0.vec.insert.i.i, float %mul4.i.i.i, i64 1 %conv6.i.i.i = uitofp i8 %in.sroa.3.0.extract.trunc.i.i.i to float %mul7.i.i.i = fmul float %conv6.i.i.i, 0x3F70101020000000 - %col.sroa.3.8.vec.insert.i.i = insertelement <2 x float> poison, float %mul7.i.i.i, i64 0 %cmp.i.i.i = fcmp olt float %mul4.i.i.i, %mul7.i.i.i %in.sroa.0.4.vec.insert.i.i.i = insertelement <2 x float> %col.sroa.0.0.vec.insert.i.i, float %mul7.i.i.i, i64 1 - %in.sroa.18.8.vec.insert.i.i.i = insertelement <2 x float> poison, float %mul4.i.i.i, i64 0 %K.0.i.i.i = select i1 %cmp.i.i.i, float -1.000000e+00, float 0.000000e+00 %in.sroa.0.0.i.i.i = select i1 %cmp.i.i.i, <2 x float> %in.sroa.0.4.vec.insert.i.i.i, <2 x float> %col.sroa.0.4.vec.insert.i.i - %in.sroa.18.0.i.i.i = select i1 %cmp.i.i.i, <2 x float> %in.sroa.18.8.vec.insert.i.i.i, <2 x float> %col.sroa.3.8.vec.insert.i.i %in.sroa.0.0.vec.extract.i.i.i = extractelement <2 x float> %in.sroa.0.0.i.i.i, i64 0 %in.sroa.0.4.vec.extract20.i.i.i = extractelement <2 x float> %in.sroa.0.0.i.i.i, i64 1 %cmp6.i.i.i = fcmp olt float %in.sroa.0.0.vec.extract.i.i.i, %in.sroa.0.4.vec.extract20.i.i.i @@ -3953,7 +3944,7 @@ entry: %in.sroa.0.1.i.i.i = select i1 %cmp6.i.i.i, <2 x float> %in.sroa.0.4.vec.insert24.i.i.i, <2 x float> %in.sroa.0.0.i.i.i %in.sroa.0.0.vec.extract11.i.i.i = extractelement <2 x float> %in.sroa.0.1.i.i.i, i64 0 %in.sroa.0.4.vec.extract26.i.i.i = extractelement <2 x float> %in.sroa.0.1.i.i.i, i64 1 - %in.sroa.18.8.vec.extract39.i.i.i = extractelement <2 x float> %in.sroa.18.0.i.i.i, i64 0 + %in.sroa.18.8.vec.extract39.i.i.i = select i1 %cmp.i.i.i, float %mul4.i.i.i, float %mul7.i.i.i %cmp17.i.i.i = fcmp olt float %in.sroa.0.4.vec.extract26.i.i.i, %in.sroa.18.8.vec.extract39.i.i.i %cond.i.i.i = select i1 %cmp17.i.i.i, float %in.sroa.0.4.vec.extract26.i.i.i, float %in.sroa.18.8.vec.extract39.i.i.i %sub20.i.i.i = fsub float %in.sroa.0.0.vec.extract11.i.i.i, %cond.i.i.i @@ -3997,13 +3988,10 @@ entry: %col.sroa.0.4.vec.insert.i.i = insertelement <2 x float> %col.sroa.0.0.vec.insert.i.i, float %mul4.i.i.i, i64 1 %conv6.i.i.i = uitofp i8 %in.sroa.3.0.extract.trunc.i.i.i to float %mul7.i.i.i = fmul float %conv6.i.i.i, 0x3F70101020000000 - %col.sroa.3.8.vec.insert.i.i = insertelement <2 x float> poison, float %mul7.i.i.i, i64 0 %cmp.i.i.i = fcmp olt float %mul4.i.i.i, %mul7.i.i.i %in.sroa.0.4.vec.insert.i.i.i = insertelement <2 x float> %col.sroa.0.0.vec.insert.i.i, float %mul7.i.i.i, i64 1 - %in.sroa.18.8.vec.insert.i.i.i = insertelement <2 x float> poison, float %mul4.i.i.i, i64 0 %K.0.i.i.i = select i1 %cmp.i.i.i, float -1.000000e+00, float 0.000000e+00 %in.sroa.0.0.i.i.i = select i1 %cmp.i.i.i, <2 x float> %in.sroa.0.4.vec.insert.i.i.i, <2 x float> %col.sroa.0.4.vec.insert.i.i - %in.sroa.18.0.i.i.i = select i1 %cmp.i.i.i, <2 x float> %in.sroa.18.8.vec.insert.i.i.i, <2 x float> %col.sroa.3.8.vec.insert.i.i %in.sroa.0.0.vec.extract.i.i.i = extractelement <2 x float> %in.sroa.0.0.i.i.i, i64 0 %in.sroa.0.4.vec.extract20.i.i.i = extractelement <2 x float> %in.sroa.0.0.i.i.i, i64 1 %cmp6.i.i.i = fcmp olt float %in.sroa.0.0.vec.extract.i.i.i, %in.sroa.0.4.vec.extract20.i.i.i @@ -4013,7 +4001,7 @@ entry: %in.sroa.0.1.i.i.i = select i1 %cmp6.i.i.i, <2 x float> %in.sroa.0.4.vec.insert24.i.i.i, <2 x float> %in.sroa.0.0.i.i.i %in.sroa.0.0.vec.extract11.i.i.i = extractelement <2 x float> %in.sroa.0.1.i.i.i, i64 0 %in.sroa.0.4.vec.extract26.i.i.i = extractelement <2 x float> %in.sroa.0.1.i.i.i, i64 1 - %in.sroa.18.8.vec.extract39.i.i.i = extractelement <2 x float> %in.sroa.18.0.i.i.i, i64 0 + %in.sroa.18.8.vec.extract39.i.i.i = select i1 %cmp.i.i.i, float %mul4.i.i.i, float %mul7.i.i.i %cmp17.i.i.i = fcmp olt float %in.sroa.0.4.vec.extract26.i.i.i, %in.sroa.18.8.vec.extract39.i.i.i %cond.i.i.i = select i1 %cmp17.i.i.i, float %in.sroa.0.4.vec.extract26.i.i.i, float %in.sroa.18.8.vec.extract39.i.i.i %sub20.i.i.i = fsub float %in.sroa.0.0.vec.extract11.i.i.i, %cond.i.i.i @@ -4056,13 +4044,10 @@ entry: %col.sroa.0.4.vec.insert.i.i.i = insertelement <2 x float> %col.sroa.0.0.vec.insert.i.i.i, float %mul4.i.i.i.i, i64 1 %conv6.i.i.i.i = uitofp i8 %in.sroa.3.0.extract.trunc.i.i.i.i to float %mul7.i.i.i.i = fmul float %conv6.i.i.i.i, 0x3F70101020000000 - %col.sroa.3.8.vec.insert.i.i.i = insertelement <2 x float> poison, float %mul7.i.i.i.i, i64 0 %cmp.i.i.i.i = fcmp olt float %mul4.i.i.i.i, %mul7.i.i.i.i %in.sroa.0.4.vec.insert.i.i.i.i = insertelement <2 x float> %col.sroa.0.0.vec.insert.i.i.i, float %mul7.i.i.i.i, i64 1 - %in.sroa.18.8.vec.insert.i.i.i.i = insertelement <2 x float> poison, float %mul4.i.i.i.i, i64 0 %K.0.i.i.i.i = select i1 %cmp.i.i.i.i, float -1.000000e+00, float 0.000000e+00 %in.sroa.0.0.i.i.i.i = select i1 %cmp.i.i.i.i, <2 x float> %in.sroa.0.4.vec.insert.i.i.i.i, <2 x float> %col.sroa.0.4.vec.insert.i.i.i - %in.sroa.18.0.i.i.i.i = select i1 %cmp.i.i.i.i, <2 x float> %in.sroa.18.8.vec.insert.i.i.i.i, <2 x float> %col.sroa.3.8.vec.insert.i.i.i %in.sroa.0.0.vec.extract.i.i.i.i = extractelement <2 x float> %in.sroa.0.0.i.i.i.i, i64 0 %in.sroa.0.4.vec.extract20.i.i.i.i = extractelement <2 x float> %in.sroa.0.0.i.i.i.i, i64 1 %cmp6.i.i.i.i = fcmp olt float %in.sroa.0.0.vec.extract.i.i.i.i, %in.sroa.0.4.vec.extract20.i.i.i.i @@ -4072,7 +4057,7 @@ entry: %in.sroa.0.1.i.i.i.i = select i1 %cmp6.i.i.i.i, <2 x float> %in.sroa.0.4.vec.insert24.i.i.i.i, <2 x float> %in.sroa.0.0.i.i.i.i %in.sroa.0.0.vec.extract11.i.i.i.i = extractelement <2 x float> %in.sroa.0.1.i.i.i.i, i64 0 %in.sroa.0.4.vec.extract26.i.i.i.i = extractelement <2 x float> %in.sroa.0.1.i.i.i.i, i64 1 - %in.sroa.18.8.vec.extract39.i.i.i.i = extractelement <2 x float> %in.sroa.18.0.i.i.i.i, i64 0 + %in.sroa.18.8.vec.extract39.i.i.i.i = select i1 %cmp.i.i.i.i, float %mul4.i.i.i.i, float %mul7.i.i.i.i %cmp17.i.i.i.i = fcmp olt float %in.sroa.0.4.vec.extract26.i.i.i.i, %in.sroa.18.8.vec.extract39.i.i.i.i %cond.i.i.i.i = select i1 %cmp17.i.i.i.i, float %in.sroa.0.4.vec.extract26.i.i.i.i, float %in.sroa.18.8.vec.extract39.i.i.i.i %sub20.i.i.i.i = fsub float %in.sroa.0.0.vec.extract11.i.i.i.i, %cond.i.i.i.i @@ -4116,13 +4101,10 @@ entry: %col.sroa.0.4.vec.insert.i.i.i = insertelement <2 x float> %col.sroa.0.0.vec.insert.i.i.i, float %mul4.i.i.i.i, i64 1 %conv6.i.i.i.i = uitofp i8 %in.sroa.3.0.extract.trunc.i.i.i.i to float %mul7.i.i.i.i = fmul float %conv6.i.i.i.i, 0x3F70101020000000 - %col.sroa.3.8.vec.insert.i.i.i = insertelement <2 x float> poison, float %mul7.i.i.i.i, i64 0 %cmp.i.i.i.i = fcmp olt float %mul4.i.i.i.i, %mul7.i.i.i.i %in.sroa.0.4.vec.insert.i.i.i.i = insertelement <2 x float> %col.sroa.0.0.vec.insert.i.i.i, float %mul7.i.i.i.i, i64 1 - %in.sroa.18.8.vec.insert.i.i.i.i = insertelement <2 x float> poison, float %mul4.i.i.i.i, i64 0 %K.0.i.i.i.i = select i1 %cmp.i.i.i.i, float -1.000000e+00, float 0.000000e+00 %in.sroa.0.0.i.i.i.i = select i1 %cmp.i.i.i.i, <2 x float> %in.sroa.0.4.vec.insert.i.i.i.i, <2 x float> %col.sroa.0.4.vec.insert.i.i.i - %in.sroa.18.0.i.i.i.i = select i1 %cmp.i.i.i.i, <2 x float> %in.sroa.18.8.vec.insert.i.i.i.i, <2 x float> %col.sroa.3.8.vec.insert.i.i.i %in.sroa.0.0.vec.extract.i.i.i.i = extractelement <2 x float> %in.sroa.0.0.i.i.i.i, i64 0 %in.sroa.0.4.vec.extract20.i.i.i.i = extractelement <2 x float> %in.sroa.0.0.i.i.i.i, i64 1 %cmp6.i.i.i.i = fcmp olt float %in.sroa.0.0.vec.extract.i.i.i.i, %in.sroa.0.4.vec.extract20.i.i.i.i @@ -4132,7 +4114,7 @@ entry: %in.sroa.0.1.i.i.i.i = select i1 %cmp6.i.i.i.i, <2 x float> %in.sroa.0.4.vec.insert24.i.i.i.i, <2 x float> %in.sroa.0.0.i.i.i.i %in.sroa.0.0.vec.extract11.i.i.i.i = extractelement <2 x float> %in.sroa.0.1.i.i.i.i, i64 0 %in.sroa.0.4.vec.extract26.i.i.i.i = extractelement <2 x float> %in.sroa.0.1.i.i.i.i, i64 1 - %in.sroa.18.8.vec.extract39.i.i.i.i = extractelement <2 x float> %in.sroa.18.0.i.i.i.i, i64 0 + %in.sroa.18.8.vec.extract39.i.i.i.i = select i1 %cmp.i.i.i.i, float %mul4.i.i.i.i, float %mul7.i.i.i.i %cmp17.i.i.i.i = fcmp olt float %in.sroa.0.4.vec.extract26.i.i.i.i, %in.sroa.18.8.vec.extract39.i.i.i.i %cond.i.i.i.i = select i1 %cmp17.i.i.i.i, float %in.sroa.0.4.vec.extract26.i.i.i.i, float %in.sroa.18.8.vec.extract39.i.i.i.i %sub20.i.i.i.i = fsub float %in.sroa.0.0.vec.extract11.i.i.i.i, %cond.i.i.i.i @@ -11418,8 +11400,8 @@ nk_draw_vertex_layout_element_is_end_of_layout.exit.lr.ph: ; preds = %entry %arrayidx120.i = getelementptr inbounds i8, ptr %col104.i, i64 6 %arrayidx96.i = getelementptr inbounds i8, ptr %col89.i, i64 2 %arrayidx100.i = getelementptr inbounds i8, ptr %col89.i, i64 4 - %25 = shl nuw nsw i32 %11, 16 %cond50.i.i47.i = select i1 %cmp39.i.i68.i, i32 %18, i32 0 + %25 = shl nuw nsw i32 %11, 16 %retval.sroa.3.0.insert.ext.i.i = select i1 %cmp1.i.i60.i, i32 %25, i32 0 %26 = or disjoint i32 %retval.sroa.3.0.insert.ext.i.i, %cond50.i.i47.i %retval.sroa.2.0.insert.insert.i.i = or disjoint i32 %26, %cond29.i.i65.i @@ -67069,24 +67051,24 @@ nk_hsv_f.exit.i.i: ; preds = %sw.bb29.i.i.i.i.i, %64 = fmul float %cond.i.i.i.i.i, 2.550000e+02 %65 = fptoui float %64 to i8 %66 = zext i8 %65 to i32 - %67 = or disjoint i32 %66, -16777216 %cmp12.i.i.i.i.i = fcmp ogt float %mul.sink.i.i.i.i.i, 1.000000e+00 %cond17.i.i.i.i.i = select i1 %cmp12.i.i.i.i.i, float 1.000000e+00, float %mul.sink.i.i.i.i.i %cmp18.i.i.i.i.i = fcmp ogt float %cond17.i.i.i.i.i, 0.000000e+00 - %68 = fmul float %cond17.i.i.i.i.i, 2.550000e+02 - %69 = fptoui float %68 to i8 - %70 = zext i8 %69 to i32 - %71 = shl nuw nsw i32 %70, 8 - %cond29.i.i.i.i.i = select i1 %cmp18.i.i.i.i.i, i32 %71, i32 0 + %67 = fmul float %cond17.i.i.i.i.i, 2.550000e+02 + %68 = fptoui float %67 to i8 + %69 = zext i8 %68 to i32 + %70 = shl nuw nsw i32 %69, 8 + %cond29.i.i.i.i.i = select i1 %cmp18.i.i.i.i.i, i32 %70, i32 0 %cmp33.i.i.i.i.i = fcmp ogt float %mul5.sink.i.i.i.i.i, 1.000000e+00 %cond38.i.i.i.i.i = select i1 %cmp33.i.i.i.i.i, float 1.000000e+00, float %mul5.sink.i.i.i.i.i %cmp39.i.i.i.i.i = fcmp ogt float %cond38.i.i.i.i.i, 0.000000e+00 - %72 = fmul float %cond38.i.i.i.i.i, 2.550000e+02 - %73 = fptoui float %72 to i8 - %74 = zext i8 %73 to i32 - %75 = shl nuw nsw i32 %74, 16 - %cond50.i.i.i.i.i = select i1 %cmp39.i.i.i.i.i, i32 %75, i32 0 - %retval.sroa.3.0.insert.insert.i.i.i.i.i = select i1 %cmp1.i.i.i.i.i, i32 %67, i32 -16777216 + %71 = fmul float %cond38.i.i.i.i.i, 2.550000e+02 + %72 = fptoui float %71 to i8 + %73 = zext i8 %72 to i32 + %74 = shl nuw nsw i32 %73, 16 + %cond50.i.i.i.i.i = select i1 %cmp39.i.i.i.i.i, i32 %74, i32 0 + %75 = or disjoint i32 %66, -16777216 + %retval.sroa.3.0.insert.insert.i.i.i.i.i = select i1 %cmp1.i.i.i.i.i, i32 %75, i32 -16777216 %retval.sroa.2.0.insert.insert.i.i.i.i.i = or disjoint i32 %cond29.i.i.i.i.i, %retval.sroa.3.0.insert.insert.i.i.i.i.i %retval.sroa.0.0.insert.insert.i.i.i.i.i = or disjoint i32 %retval.sroa.2.0.insert.insert.i.i.i.i.i, %cond50.i.i.i.i.i tail call void @nk_fill_rect_multi_color(ptr noundef nonnull %buffer, <2 x float> %matrix.sroa.0.4.vec.insert.i, <2 x float> %matrix.sroa.10.8.vec.insert.i, i32 -1, i32 %retval.sroa.0.0.insert.insert.i.i.i.i.i, i32 %retval.sroa.0.0.insert.insert.i.i.i.i.i, i32 -1) diff --git a/bench/ockam-rs/optimized/1gjay75gp38o8e4p.ll b/bench/ockam-rs/optimized/1gjay75gp38o8e4p.ll index 0d0c7da9df1..dd7dae0b0c7 100644 --- a/bench/ockam-rs/optimized/1gjay75gp38o8e4p.ll +++ b/bench/ockam-rs/optimized/1gjay75gp38o8e4p.ll @@ -54,9 +54,8 @@ define hidden noundef i64 @_ZN12sharded_slab3tid12Registration8register17h01062c %7 = load ptr, ptr %6, align 8, !nonnull !5, !align !6 %8 = getelementptr inbounds i8, ptr %2, i64 16 %9 = load i8, ptr %8, align 8, !range !7 - %10 = trunc nuw i8 %9 to i1 - %11 = icmp eq i64 %5, 0 - br i1 %11, label %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h2edce10172fdfc33E.llvm.1214941078669613289.exit.thread", label %12 + %10 = icmp eq i64 %5, 0 + br i1 %10, label %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h2edce10172fdfc33E.llvm.1214941078669613289.exit.thread", label %11 "_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h2edce10172fdfc33E.llvm.1214941078669613289.exit.thread": ; preds = %1 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) @@ -66,10 +65,11 @@ define hidden noundef i64 @_ZN12sharded_slab3tid12Registration8register17h01062c call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) br i1 %trunc, label %.thread, label %22 -12: ; preds = %1 - br i1 %10, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1799741712541865863.exit.thread.i.i.i.i, label %13 +11: ; preds = %1 + %12 = trunc nuw i8 %9 to i1 + br i1 %12, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1799741712541865863.exit.thread.i.i.i.i, label %13 -13: ; preds = %12 +13: ; preds = %11 %14 = tail call noundef i64 @_ZN4core4sync6atomic11atomic_load17h133eb4a7cc8ea4ceE.llvm.1799741712541865863(ptr noundef nonnull @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17h0c0cb700fd497c9fE, i8 noundef 0), !noalias !8 %15 = and i64 %14, 9223372036854775807 %16 = icmp eq i64 %15, 0 @@ -79,7 +79,7 @@ _ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1799741712541865863.exit.i. %17 = tail call noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h4671fa193704fdaeE(), !noalias !8 br i1 %17, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1799741712541865863.exit.thread.i.i.i.i, label %20 -_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1799741712541865863.exit.thread.i.i.i.i: ; preds = %20, %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1799741712541865863.exit.i.i.i.i, %13, %12 +_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1799741712541865863.exit.thread.i.i.i.i: ; preds = %20, %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1799741712541865863.exit.i.i.i.i, %13, %11 %18 = atomicrmw xchg ptr %7, i32 0 release, align 4, !noalias !8 %19 = icmp eq i32 %18, 2 br i1 %19, label %"_ZN4core3ptr109drop_in_place$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$17hfb11d6be91f3c6a8E.llvm.1214941078669613289.exit.sink.split.i", label %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h2edce10172fdfc33E.llvm.1214941078669613289.exit" @@ -94,70 +94,71 @@ _ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1799741712541865863.exit.th br label %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h2edce10172fdfc33E.llvm.1214941078669613289.exit" 22: ; preds = %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h2edce10172fdfc33E.llvm.1214941078669613289.exit.thread", %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h2edce10172fdfc33E.llvm.1214941078669613289.exit" - %23 = getelementptr inbounds i8, ptr %7, i64 32 - %24 = load i64, ptr %23, align 8, !noundef !5 - %25 = icmp ult i64 %24, 2 - br i1 %25, label %38, label %26 + %23 = trunc nuw i8 %9 to i1 + %24 = getelementptr inbounds i8, ptr %7, i64 32 + %25 = load i64, ptr %24, align 8, !noundef !5 + %26 = icmp ult i64 %25, 2 + br i1 %26, label %39, label %27 -26: ; preds = %22 +27: ; preds = %22 tail call void @llvm.experimental.noalias.scope.decl(metadata !18) - %27 = getelementptr inbounds i8, ptr %7, i64 8 - %28 = getelementptr inbounds i8, ptr %7, i64 24 - %29 = load i64, ptr %28, align 8, !alias.scope !18, !noundef !5 - %30 = add i64 %29, 1 - %31 = getelementptr inbounds i8, ptr %7, i64 16 - %32 = load i64, ptr %31, align 8, !alias.scope !18, !noundef !5 - %.not.i.i = icmp ult i64 %30, %32 - %33 = select i1 %.not.i.i, i64 0, i64 %32 - %.0.i.i = sub nuw i64 %30, %33 - store i64 %.0.i.i, ptr %28, align 8, !alias.scope !18 - %34 = add i64 %24, -1 - store i64 %34, ptr %23, align 8, !alias.scope !18 - %35 = load ptr, ptr %27, align 8, !alias.scope !18, !nonnull !5, !noundef !5 - %36 = getelementptr inbounds i64, ptr %35, i64 %29 - %37 = load i64, ptr %36, align 8, !noalias !18, !noundef !5 - br label %38 - -38: ; preds = %26, %22 - %.sroa.3.0.i = phi i64 [ undef, %22 ], [ %37, %26 ] - br i1 %10, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.thread.i.i.i12, label %39 - -39: ; preds = %38 - %40 = load atomic i64, ptr @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17h0c0cb700fd497c9fE monotonic, align 8, !noalias !21 - %41 = and i64 %40, 9223372036854775807 - %42 = icmp eq i64 %41, 0 - br i1 %42, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.thread.i.i.i12, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.i.i.i11 - -_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.i.i.i11: ; preds = %39 - %43 = tail call noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h4671fa193704fdaeE(), !noalias !21 - br i1 %43, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.thread.i.i.i12, label %46 - -_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.thread.i.i.i12: ; preds = %46, %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.i.i.i11, %39, %38 - %44 = atomicrmw xchg ptr %7, i32 0 release, align 4, !noalias !21 - %45 = icmp eq i32 %44, 2 - br i1 %45, label %48, label %49 - -46: ; preds = %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.i.i.i11 - %47 = getelementptr inbounds i8, ptr %7, i64 4 - store atomic i8 1, ptr %47 monotonic, align 4, !noalias !21 + %28 = getelementptr inbounds i8, ptr %7, i64 8 + %29 = getelementptr inbounds i8, ptr %7, i64 24 + %30 = load i64, ptr %29, align 8, !alias.scope !18, !noundef !5 + %31 = add i64 %30, 1 + %32 = getelementptr inbounds i8, ptr %7, i64 16 + %33 = load i64, ptr %32, align 8, !alias.scope !18, !noundef !5 + %.not.i.i = icmp ult i64 %31, %33 + %34 = select i1 %.not.i.i, i64 0, i64 %33 + %.0.i.i = sub nuw i64 %31, %34 + store i64 %.0.i.i, ptr %29, align 8, !alias.scope !18 + %35 = add i64 %25, -1 + store i64 %35, ptr %24, align 8, !alias.scope !18 + %36 = load ptr, ptr %28, align 8, !alias.scope !18, !nonnull !5, !noundef !5 + %37 = getelementptr inbounds i64, ptr %36, i64 %30 + %38 = load i64, ptr %37, align 8, !noalias !18, !noundef !5 + br label %39 + +39: ; preds = %27, %22 + %.sroa.3.0.i = phi i64 [ undef, %22 ], [ %38, %27 ] + br i1 %23, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.thread.i.i.i12, label %40 + +40: ; preds = %39 + %41 = load atomic i64, ptr @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17h0c0cb700fd497c9fE monotonic, align 8, !noalias !21 + %42 = and i64 %41, 9223372036854775807 + %43 = icmp eq i64 %42, 0 + br i1 %43, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.thread.i.i.i12, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.i.i.i11 + +_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.i.i.i11: ; preds = %40 + %44 = tail call noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h4671fa193704fdaeE(), !noalias !21 + br i1 %44, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.thread.i.i.i12, label %47 + +_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.thread.i.i.i12: ; preds = %47, %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.i.i.i11, %40, %39 + %45 = atomicrmw xchg ptr %7, i32 0 release, align 4, !noalias !21 + %46 = icmp eq i32 %45, 2 + br i1 %46, label %49, label %50 + +47: ; preds = %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.i.i.i11 + %48 = getelementptr inbounds i8, ptr %7, i64 4 + store atomic i8 1, ptr %48 monotonic, align 4, !noalias !21 br label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.thread.i.i.i12 -48: ; preds = %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.thread.i.i.i12 +49: ; preds = %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.thread.i.i.i12 tail call void @_ZN3std3sys4unix5locks11futex_mutex5Mutex4wake17h05e1bfcdf63536d8E(ptr noundef nonnull align 8 %7), !noalias !21 - br label %49 + br label %50 -49: ; preds = %48, %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.thread.i.i.i12 - br i1 %25, label %.thread, label %51 +50: ; preds = %49, %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1214941078669613289.exit.thread.i.i.i12 + br i1 %26, label %.thread, label %52 -.thread: ; preds = %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h2edce10172fdfc33E.llvm.1214941078669613289.exit", %49 - %50 = tail call noundef i64 @"_ZN12sharded_slab3tid12Registration8register28_$u7b$$u7b$closure$u7d$$u7d$17h6258ec6b953a8ce7E.llvm.1214941078669613289"() - br label %51 +.thread: ; preds = %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h2edce10172fdfc33E.llvm.1214941078669613289.exit", %50 + %51 = tail call noundef i64 @"_ZN12sharded_slab3tid12Registration8register28_$u7b$$u7b$closure$u7d$$u7d$17h6258ec6b953a8ce7E.llvm.1214941078669613289"() + br label %52 -51: ; preds = %49, %.thread - %.0 = phi i64 [ %50, %.thread ], [ %.sroa.3.0.i, %49 ] +52: ; preds = %50, %.thread + %.0 = phi i64 [ %51, %.thread ], [ %.sroa.3.0.i, %50 ] store i64 1, ptr %0, align 8 - %52 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.0, ptr %52, align 8 + %53 = getelementptr inbounds i8, ptr %0, i64 8 + store i64 %.0, ptr %53, align 8 ret i64 %.0 } diff --git a/bench/ockam-rs/optimized/3mmfh9oxbbu2kjan.ll b/bench/ockam-rs/optimized/3mmfh9oxbbu2kjan.ll index ade52067a15..78c68506540 100644 --- a/bench/ockam-rs/optimized/3mmfh9oxbbu2kjan.ll +++ b/bench/ockam-rs/optimized/3mmfh9oxbbu2kjan.ll @@ -1159,17 +1159,11 @@ define hidden { i64, ptr } @"_ZN113_$LT$tracing_subscriber..layer..layered..Laye 12: ; preds = %10 %13 = icmp eq i128 %1, -157070736696414120353515684520890932144 - %..i.i.i = zext i1 %13 to i64 - %14 = insertvalue { i64, ptr } poison, i64 %..i.i.i, 0 - %15 = insertvalue { i64, ptr } %14, ptr %0, 1 - %16 = getelementptr inbounds i8, ptr %0, i64 1784 - %17 = icmp eq i128 %1, 377731369611698580506231877142650986 - %..i11.i.i = zext i1 %17 to i64 - %18 = insertvalue { i64, ptr } poison, i64 %..i11.i.i, 0 - %19 = insertvalue { i64, ptr } %18, ptr %16, 1 - %.sroa.0.1.i.i = select i1 %13, i64 1, i64 %..i11.i.i - %.pn.i.i = select i1 %13, { i64, ptr } %15, { i64, ptr } %19 - %.sroa.4.1.i.i = extractvalue { i64, ptr } %.pn.i.i, 1 + %14 = icmp eq i128 %1, 377731369611698580506231877142650986 + %narrow.i.i = or i1 %13, %14 + %.sroa.0.1.i.i = zext i1 %narrow.i.i to i64 + %.sroa.4.1.idx.i.i = select i1 %13, i64 0, i64 1784 + %.sroa.4.1.i.i = getelementptr inbounds i8, ptr %0, i64 %.sroa.4.1.idx.i.i br label %"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17hd845db09e2ee000fE.exit.i" "_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17hd845db09e2ee000fE.exit.i": ; preds = %12, %10 @@ -1185,78 +1179,66 @@ define hidden { i64, ptr } @"_ZN113_$LT$tracing_subscriber..layer..layered..Laye "_ZN124_$LT$tracing_subscriber..fmt..fmt_layer..Layer$LT$S$C$N$C$E$C$W$GT$$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$12downcast_raw17h7a364b1ce678ab81E.exit.thread": ; preds = %"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17hf06af331f1ef58baE.exit", %6, %8, %4, %4, %2 %.sroa.0.0 = phi i64 [ 1, %2 ], [ %.sroa.0.0.i11, %"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17hf06af331f1ef58baE.exit" ], [ 1, %6 ], [ 1, %8 ], [ 1, %4 ], [ 1, %4 ] %.sroa.4.0 = phi ptr [ %0, %2 ], [ %.sroa.4.0.i, %"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17hf06af331f1ef58baE.exit" ], [ %7, %6 ], [ %9, %8 ], [ %5, %4 ], [ %5, %4 ] - %20 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 - %21 = insertvalue { i64, ptr } %20, ptr %.sroa.4.0, 1 - ret { i64, ptr } %21 + %15 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 + %16 = insertvalue { i64, ptr } %15, ptr %.sroa.4.0, 1 + ret { i64, ptr } %16 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, ptr } @"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17hd845db09e2ee000fE"(ptr noundef nonnull align 8 %0, i128 noundef %1) unnamed_addr #4 { %3 = icmp eq i128 %1, 62793767160623940916714380623486827931 - br i1 %3, label %12, label %4 + br i1 %3, label %7, label %4 4: ; preds = %2 %5 = icmp eq i128 %1, -157070736696414120353515684520890932144 - %..i = zext i1 %5 to i64 - %6 = insertvalue { i64, ptr } poison, i64 %..i, 0 - %7 = insertvalue { i64, ptr } %6, ptr %0, 1 - %8 = getelementptr inbounds i8, ptr %0, i64 1784 - %9 = icmp eq i128 %1, 377731369611698580506231877142650986 - %..i11 = zext i1 %9 to i64 - %10 = insertvalue { i64, ptr } poison, i64 %..i11, 0 - %11 = insertvalue { i64, ptr } %10, ptr %8, 1 - %.sroa.0.1 = select i1 %5, i64 1, i64 %..i11 - %.pn = select i1 %5, { i64, ptr } %7, { i64, ptr } %11 - %.sroa.4.1 = extractvalue { i64, ptr } %.pn, 1 - br label %12 - -12: ; preds = %2, %4 + %6 = icmp eq i128 %1, 377731369611698580506231877142650986 + %narrow = or i1 %5, %6 + %.sroa.0.1 = zext i1 %narrow to i64 + %.sroa.4.1.idx = select i1 %5, i64 0, i64 1784 + %.sroa.4.1 = getelementptr inbounds i8, ptr %0, i64 %.sroa.4.1.idx + br label %7 + +7: ; preds = %2, %4 %.sroa.0.0 = phi i64 [ %.sroa.0.1, %4 ], [ 1, %2 ] %.sroa.4.0 = phi ptr [ %.sroa.4.1, %4 ], [ %0, %2 ] - %13 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 - %14 = insertvalue { i64, ptr } %13, ptr %.sroa.4.0, 1 - ret { i64, ptr } %14 + %8 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 + %9 = insertvalue { i64, ptr } %8, ptr %.sroa.4.0, 1 + ret { i64, ptr } %9 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, ptr } @"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17hf06af331f1ef58baE"(ptr noundef nonnull align 8 %0, i128 noundef %1) unnamed_addr #4 { %3 = icmp eq i128 %1, -98005730680067195643002495477853985696 - br i1 %3, label %14, label %4 + br i1 %3, label %9, label %4 4: ; preds = %2 %5 = getelementptr inbounds i8, ptr %0, i64 2336 switch i128 %1, label %6 [ - i128 -95969990466766758037598015389510061508, label %14 - i128 -133180400270609082883635882469600345051, label %14 + i128 -95969990466766758037598015389510061508, label %9 + i128 -133180400270609082883635882469600345051, label %9 i128 62793767160623940916714380623486827931, label %"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17hd845db09e2ee000fE.exit" ] 6: ; preds = %4 %7 = icmp eq i128 %1, -157070736696414120353515684520890932144 - %..i.i = zext i1 %7 to i64 - %8 = insertvalue { i64, ptr } poison, i64 %..i.i, 0 - %9 = insertvalue { i64, ptr } %8, ptr %0, 1 - %10 = getelementptr inbounds i8, ptr %0, i64 1784 - %11 = icmp eq i128 %1, 377731369611698580506231877142650986 - %..i11.i = zext i1 %11 to i64 - %12 = insertvalue { i64, ptr } poison, i64 %..i11.i, 0 - %13 = insertvalue { i64, ptr } %12, ptr %10, 1 - %.sroa.0.1.i = select i1 %7, i64 1, i64 %..i11.i - %.pn.i = select i1 %7, { i64, ptr } %9, { i64, ptr } %13 - %.sroa.4.1.i = extractvalue { i64, ptr } %.pn.i, 1 + %8 = icmp eq i128 %1, 377731369611698580506231877142650986 + %narrow.i = or i1 %7, %8 + %.sroa.0.1.i = zext i1 %narrow.i to i64 + %.sroa.4.1.idx.i = select i1 %7, i64 0, i64 1784 + %.sroa.4.1.i = getelementptr inbounds i8, ptr %0, i64 %.sroa.4.1.idx.i br label %"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17hd845db09e2ee000fE.exit" "_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17hd845db09e2ee000fE.exit": ; preds = %4, %6 %.sroa.0.0.i = phi i64 [ %.sroa.0.1.i, %6 ], [ 1, %4 ] %.sroa.4.0.i = phi ptr [ %.sroa.4.1.i, %6 ], [ %0, %4 ] - br label %14 + br label %9 -14: ; preds = %"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17hd845db09e2ee000fE.exit", %4, %4, %2 +9: ; preds = %"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17hd845db09e2ee000fE.exit", %4, %4, %2 %.sroa.0.0 = phi i64 [ 1, %2 ], [ %.sroa.0.0.i, %"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17hd845db09e2ee000fE.exit" ], [ 1, %4 ], [ 1, %4 ] %.sroa.4.0 = phi ptr [ %0, %2 ], [ %.sroa.4.0.i, %"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17hd845db09e2ee000fE.exit" ], [ %5, %4 ], [ %5, %4 ] - %15 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 - %16 = insertvalue { i64, ptr } %15, ptr %.sroa.4.0, 1 - ret { i64, ptr } %16 + %10 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 + %11 = insertvalue { i64, ptr } %10, ptr %.sroa.4.0, 1 + ret { i64, ptr } %11 } ; Function Attrs: nonlazybind uwtable @@ -3615,117 +3597,117 @@ _ZN3std9panicking9panicking17hfd7edc4736053a04E.exit.thread.i.i: ; preds = %_ZN3 define hidden noundef zeroext i1 @"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17h850e26d35bc8ec97E"(ptr noundef nonnull align 8 %0, i64 noundef %1) unnamed_addr #0 personality ptr @rust_eh_personality { %3 = alloca { [16 x i8], i8, [7 x i8] }, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) - %4 = getelementptr inbounds i8, ptr %0, i64 1784 - call void @_ZN18tracing_subscriber8registry7sharded8Registry11start_close17h1a973267e29ef22aE(ptr noalias nocapture noundef nonnull sret({ i64, ptr, i8, [7 x i8] }) align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 %4, i64 noundef %1) - %5 = invoke noundef zeroext i1 @"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17h5d6ad08fdd269633E"(ptr noundef nonnull align 8 %0, i64 noundef %1) - to label %8 unwind label %6 + %.sroa.4.1.i = getelementptr inbounds i8, ptr %0, i64 1784 + call void @_ZN18tracing_subscriber8registry7sharded8Registry11start_close17h1a973267e29ef22aE(ptr noalias nocapture noundef nonnull sret({ i64, ptr, i8, [7 x i8] }) align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 %.sroa.4.1.i, i64 noundef %1) + %4 = invoke noundef zeroext i1 @"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17h5d6ad08fdd269633E"(ptr noundef nonnull align 8 %0, i64 noundef %1) + to label %7 unwind label %5 -6: ; preds = %19, %18, %2 - %7 = landingpad { ptr, i32 } +5: ; preds = %18, %17, %2 + %6 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17h2fe553f97a8d9a51E"(ptr noalias noundef align 8 dereferenceable(24) %3) #38 - to label %23 unwind label %21 + to label %22 unwind label %20 -8: ; preds = %2 - br i1 %5, label %9, label %13 +7: ; preds = %2 + br i1 %4, label %8, label %12 -9: ; preds = %8 - %10 = getelementptr inbounds i8, ptr %3, i64 16 - %11 = load i8, ptr %10, align 8, !range !291, !noundef !13 - %12 = icmp eq i8 %11, 2 - br i1 %12, label %19, label %18 +8: ; preds = %7 + %9 = getelementptr inbounds i8, ptr %3, i64 16 + %10 = load i8, ptr %9, align 8, !range !291, !noundef !13 + %11 = icmp eq i8 %10, 2 + br i1 %11, label %18, label %17 -13: ; preds = %19, %8 - %14 = getelementptr inbounds i8, ptr %3, i64 16 - %15 = load i8, ptr %14, align 8, !range !291, !alias.scope !738, !noundef !13 - %16 = icmp eq i8 %15, 2 - br i1 %16, label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17h2fe553f97a8d9a51E.exit", label %17 +12: ; preds = %18, %7 + %13 = getelementptr inbounds i8, ptr %3, i64 16 + %14 = load i8, ptr %13, align 8, !range !291, !alias.scope !738, !noundef !13 + %15 = icmp eq i8 %14, 2 + br i1 %15, label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17h2fe553f97a8d9a51E.exit", label %16 -17: ; preds = %13 +16: ; preds = %12 call void @"_ZN91_$LT$tracing_subscriber..registry..sharded..CloseGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbe67a5447c355e94E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %3) br label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17h2fe553f97a8d9a51E.exit" -"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17h2fe553f97a8d9a51E.exit": ; preds = %13, %17 +"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17h2fe553f97a8d9a51E.exit": ; preds = %12, %16 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) - ret i1 %5 + ret i1 %4 -18: ; preds = %9 +17: ; preds = %8 invoke void @_ZN18tracing_subscriber8registry7sharded10CloseGuard11set_closing17hacfeefb53e1ca41eE(ptr noalias noundef nonnull align 8 dereferenceable(24) %3) - to label %19 unwind label %6 + to label %18 unwind label %5 -19: ; preds = %18, %9 - %20 = invoke noundef i64 @_ZN18tracing_subscriber6filter13layer_filters8FilterId4none17h845776f9cc8cb045E() - to label %13 unwind label %6 +18: ; preds = %17, %8 + %19 = invoke noundef i64 @_ZN18tracing_subscriber6filter13layer_filters8FilterId4none17h845776f9cc8cb045E() + to label %12 unwind label %5 -21: ; preds = %6 - %22 = landingpad { ptr, i32 } +20: ; preds = %5 + %21 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hceade526831b1e89E() #39 unreachable -23: ; preds = %6 - resume { ptr, i32 } %7 +22: ; preds = %5 + resume { ptr, i32 } %6 } ; Function Attrs: nonlazybind uwtable define hidden noundef zeroext i1 @"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17hed598ac15d8f8ef8E"(ptr noundef nonnull align 8 %0, i64 noundef %1) unnamed_addr #0 personality ptr @rust_eh_personality { %3 = alloca { [16 x i8], i8, [7 x i8] }, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) - %4 = getelementptr inbounds i8, ptr %0, i64 1784 - call void @_ZN18tracing_subscriber8registry7sharded8Registry11start_close17h1a973267e29ef22aE(ptr noalias nocapture noundef nonnull sret({ i64, ptr, i8, [7 x i8] }) align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 %4, i64 noundef %1) - %5 = invoke noundef zeroext i1 @"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17h850e26d35bc8ec97E"(ptr noundef nonnull align 8 %0, i64 noundef %1) - to label %8 unwind label %6 + %.sroa.4.1.i.i = getelementptr inbounds i8, ptr %0, i64 1784 + call void @_ZN18tracing_subscriber8registry7sharded8Registry11start_close17h1a973267e29ef22aE(ptr noalias nocapture noundef nonnull sret({ i64, ptr, i8, [7 x i8] }) align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 %.sroa.4.1.i.i, i64 noundef %1) + %4 = invoke noundef zeroext i1 @"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$9try_close17h850e26d35bc8ec97E"(ptr noundef nonnull align 8 %0, i64 noundef %1) + to label %7 unwind label %5 -6: ; preds = %21, %19, %18, %2 - %7 = landingpad { ptr, i32 } +5: ; preds = %20, %18, %17, %2 + %6 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17h2fe553f97a8d9a51E"(ptr noalias noundef align 8 dereferenceable(24) %3) #38 - to label %25 unwind label %23 + to label %24 unwind label %22 -8: ; preds = %2 - br i1 %5, label %9, label %13 +7: ; preds = %2 + br i1 %4, label %8, label %12 -9: ; preds = %8 - %10 = getelementptr inbounds i8, ptr %3, i64 16 - %11 = load i8, ptr %10, align 8, !range !291, !noundef !13 - %12 = icmp eq i8 %11, 2 - br i1 %12, label %19, label %18 +8: ; preds = %7 + %9 = getelementptr inbounds i8, ptr %3, i64 16 + %10 = load i8, ptr %9, align 8, !range !291, !noundef !13 + %11 = icmp eq i8 %10, 2 + br i1 %11, label %18, label %17 -13: ; preds = %21, %8 - %14 = getelementptr inbounds i8, ptr %3, i64 16 - %15 = load i8, ptr %14, align 8, !range !291, !alias.scope !741, !noundef !13 - %16 = icmp eq i8 %15, 2 - br i1 %16, label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17h2fe553f97a8d9a51E.exit", label %17 +12: ; preds = %20, %7 + %13 = getelementptr inbounds i8, ptr %3, i64 16 + %14 = load i8, ptr %13, align 8, !range !291, !alias.scope !741, !noundef !13 + %15 = icmp eq i8 %14, 2 + br i1 %15, label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17h2fe553f97a8d9a51E.exit", label %16 -17: ; preds = %13 +16: ; preds = %12 call void @"_ZN91_$LT$tracing_subscriber..registry..sharded..CloseGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbe67a5447c355e94E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %3) br label %"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17h2fe553f97a8d9a51E.exit" -"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17h2fe553f97a8d9a51E.exit": ; preds = %13, %17 +"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$tracing_subscriber..registry..sharded..CloseGuard$GT$$GT$17h2fe553f97a8d9a51E.exit": ; preds = %12, %16 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) - ret i1 %5 + ret i1 %4 -18: ; preds = %9 +17: ; preds = %8 invoke void @_ZN18tracing_subscriber8registry7sharded10CloseGuard11set_closing17hacfeefb53e1ca41eE(ptr noalias noundef nonnull align 8 dereferenceable(24) %3) - to label %19 unwind label %6 + to label %18 unwind label %5 -19: ; preds = %18, %9 - %20 = invoke noundef i64 @_ZN18tracing_subscriber6filter13layer_filters8FilterId4none17h845776f9cc8cb045E() - to label %21 unwind label %6 +18: ; preds = %17, %8 + %19 = invoke noundef i64 @_ZN18tracing_subscriber6filter13layer_filters8FilterId4none17h845776f9cc8cb045E() + to label %20 unwind label %5 -21: ; preds = %19 - %22 = getelementptr inbounds i8, ptr %0, i64 2352 - invoke void @"_ZN124_$LT$tracing_subscriber..fmt..fmt_layer..Layer$LT$S$C$N$C$E$C$W$GT$$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$8on_close17ha431997a88d5b825E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %22, i64 noundef %1, ptr noundef nonnull align 8 %0, i64 noundef %20) - to label %13 unwind label %6 +20: ; preds = %18 + %21 = getelementptr inbounds i8, ptr %0, i64 2352 + invoke void @"_ZN124_$LT$tracing_subscriber..fmt..fmt_layer..Layer$LT$S$C$N$C$E$C$W$GT$$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$8on_close17ha431997a88d5b825E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %21, i64 noundef %1, ptr noundef nonnull align 8 %0, i64 noundef %19) + to label %12 unwind label %5 -23: ; preds = %6 - %24 = landingpad { ptr, i32 } +22: ; preds = %5 + %23 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hceade526831b1e89E() #39 unreachable -25: ; preds = %6 - resume { ptr, i32 } %7 +24: ; preds = %5 + resume { ptr, i32 } %6 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/ockam-rs/optimized/5ayhis8cfs1k9t14.ll b/bench/ockam-rs/optimized/5ayhis8cfs1k9t14.ll index 702338c430f..25436e9549f 100644 --- a/bench/ockam-rs/optimized/5ayhis8cfs1k9t14.ll +++ b/bench/ockam-rs/optimized/5ayhis8cfs1k9t14.ll @@ -1520,9 +1520,8 @@ define hidden noundef i64 @_ZN12sharded_slab3tid12Registration8register17h8bd973 %7 = load ptr, ptr %6, align 8, !nonnull !4, !align !47 %8 = getelementptr inbounds i8, ptr %2, i64 16 %9 = load i8, ptr %8, align 8, !range !203 - %10 = trunc nuw i8 %9 to i1 - %11 = icmp eq i64 %5, 0 - br i1 %11, label %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h372f330cc8c82cc1E.llvm.1425447921696267910.exit.thread", label %12 + %10 = icmp eq i64 %5, 0 + br i1 %10, label %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h372f330cc8c82cc1E.llvm.1425447921696267910.exit.thread", label %11 "_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h372f330cc8c82cc1E.llvm.1425447921696267910.exit.thread": ; preds = %1 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) @@ -1532,10 +1531,11 @@ define hidden noundef i64 @_ZN12sharded_slab3tid12Registration8register17h8bd973 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) br i1 %trunc, label %.thread, label %22 -12: ; preds = %1 - br i1 %10, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i.i, label %13 +11: ; preds = %1 + %12 = trunc nuw i8 %9 to i1 + br i1 %12, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i.i, label %13 -13: ; preds = %12 +13: ; preds = %11 %14 = load atomic i64, ptr @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17h0c0cb700fd497c9fE monotonic, align 8, !noalias !204 %15 = and i64 %14, 9223372036854775807 %16 = icmp eq i64 %15, 0 @@ -1545,7 +1545,7 @@ _ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.i. %17 = tail call noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h4671fa193704fdaeE(), !noalias !204 br i1 %17, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i.i, label %20 -_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i.i: ; preds = %20, %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.i.i.i.i, %13, %12 +_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i.i: ; preds = %20, %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.i.i.i.i, %13, %11 %18 = atomicrmw xchg ptr %7, i32 0 release, align 4, !noalias !204 %19 = icmp eq i32 %18, 2 br i1 %19, label %"_ZN4core3ptr109drop_in_place$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$17h668afcafe2f34326E.llvm.1425447921696267910.exit.sink.split.i", label %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h372f330cc8c82cc1E.llvm.1425447921696267910.exit" @@ -1560,70 +1560,71 @@ _ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.th br label %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h372f330cc8c82cc1E.llvm.1425447921696267910.exit" 22: ; preds = %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h372f330cc8c82cc1E.llvm.1425447921696267910.exit.thread", %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h372f330cc8c82cc1E.llvm.1425447921696267910.exit" - %23 = getelementptr inbounds i8, ptr %7, i64 32 - %24 = load i64, ptr %23, align 8, !noundef !4 - %25 = icmp ult i64 %24, 2 - br i1 %25, label %38, label %26 + %23 = trunc nuw i8 %9 to i1 + %24 = getelementptr inbounds i8, ptr %7, i64 32 + %25 = load i64, ptr %24, align 8, !noundef !4 + %26 = icmp ult i64 %25, 2 + br i1 %26, label %39, label %27 -26: ; preds = %22 +27: ; preds = %22 tail call void @llvm.experimental.noalias.scope.decl(metadata !214) - %27 = getelementptr inbounds i8, ptr %7, i64 8 - %28 = getelementptr inbounds i8, ptr %7, i64 24 - %29 = load i64, ptr %28, align 8, !alias.scope !214, !noundef !4 - %30 = add i64 %29, 1 - %31 = getelementptr inbounds i8, ptr %7, i64 16 - %32 = load i64, ptr %31, align 8, !alias.scope !214, !noundef !4 - %.not.i.i = icmp ult i64 %30, %32 - %33 = select i1 %.not.i.i, i64 0, i64 %32 - %.0.i.i = sub nuw i64 %30, %33 - store i64 %.0.i.i, ptr %28, align 8, !alias.scope !214 - %34 = add i64 %24, -1 - store i64 %34, ptr %23, align 8, !alias.scope !214 - %35 = load ptr, ptr %27, align 8, !alias.scope !214, !nonnull !4, !noundef !4 - %36 = getelementptr inbounds i64, ptr %35, i64 %29 - %37 = load i64, ptr %36, align 8, !noalias !214, !noundef !4 - br label %38 + %28 = getelementptr inbounds i8, ptr %7, i64 8 + %29 = getelementptr inbounds i8, ptr %7, i64 24 + %30 = load i64, ptr %29, align 8, !alias.scope !214, !noundef !4 + %31 = add i64 %30, 1 + %32 = getelementptr inbounds i8, ptr %7, i64 16 + %33 = load i64, ptr %32, align 8, !alias.scope !214, !noundef !4 + %.not.i.i = icmp ult i64 %31, %33 + %34 = select i1 %.not.i.i, i64 0, i64 %33 + %.0.i.i = sub nuw i64 %31, %34 + store i64 %.0.i.i, ptr %29, align 8, !alias.scope !214 + %35 = add i64 %25, -1 + store i64 %35, ptr %24, align 8, !alias.scope !214 + %36 = load ptr, ptr %28, align 8, !alias.scope !214, !nonnull !4, !noundef !4 + %37 = getelementptr inbounds i64, ptr %36, i64 %30 + %38 = load i64, ptr %37, align 8, !noalias !214, !noundef !4 + br label %39 -38: ; preds = %26, %22 - %.sroa.3.0.i = phi i64 [ undef, %22 ], [ %37, %26 ] - br i1 %10, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i12, label %39 +39: ; preds = %27, %22 + %.sroa.3.0.i = phi i64 [ undef, %22 ], [ %38, %27 ] + br i1 %23, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i12, label %40 -39: ; preds = %38 - %40 = load atomic i64, ptr @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17h0c0cb700fd497c9fE monotonic, align 8, !noalias !217 - %41 = and i64 %40, 9223372036854775807 - %42 = icmp eq i64 %41, 0 - br i1 %42, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i12, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.i.i.i11 +40: ; preds = %39 + %41 = load atomic i64, ptr @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17h0c0cb700fd497c9fE monotonic, align 8, !noalias !217 + %42 = and i64 %41, 9223372036854775807 + %43 = icmp eq i64 %42, 0 + br i1 %43, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i12, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.i.i.i11 -_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.i.i.i11: ; preds = %39 - %43 = tail call noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h4671fa193704fdaeE(), !noalias !217 - br i1 %43, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i12, label %46 +_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.i.i.i11: ; preds = %40 + %44 = tail call noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h4671fa193704fdaeE(), !noalias !217 + br i1 %44, label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i12, label %47 -_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i12: ; preds = %46, %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.i.i.i11, %39, %38 - %44 = atomicrmw xchg ptr %7, i32 0 release, align 4, !noalias !217 - %45 = icmp eq i32 %44, 2 - br i1 %45, label %48, label %49 +_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i12: ; preds = %47, %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.i.i.i11, %40, %39 + %45 = atomicrmw xchg ptr %7, i32 0 release, align 4, !noalias !217 + %46 = icmp eq i32 %45, 2 + br i1 %46, label %49, label %50 -46: ; preds = %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.i.i.i11 - %47 = getelementptr inbounds i8, ptr %7, i64 4 - store atomic i8 1, ptr %47 monotonic, align 4, !noalias !217 +47: ; preds = %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.i.i.i11 + %48 = getelementptr inbounds i8, ptr %7, i64 4 + store atomic i8 1, ptr %48 monotonic, align 4, !noalias !217 br label %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i12 -48: ; preds = %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i12 +49: ; preds = %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i12 tail call void @_ZN3std3sys4unix5locks11futex_mutex5Mutex4wake17h05e1bfcdf63536d8E(ptr noundef nonnull align 8 %7), !noalias !217 - br label %49 + br label %50 -49: ; preds = %48, %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i12 - br i1 %25, label %.thread, label %51 +50: ; preds = %49, %_ZN3std9panicking9panicking17hfd7edc4736053a04E.llvm.1425447921696267910.exit.thread.i.i.i12 + br i1 %26, label %.thread, label %52 -.thread: ; preds = %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h372f330cc8c82cc1E.llvm.1425447921696267910.exit", %49 - %50 = tail call noundef i64 @"_ZN12sharded_slab3tid12Registration8register28_$u7b$$u7b$closure$u7d$$u7d$17hd3756d37421bc3feE.llvm.1425447921696267910"() - br label %51 +.thread: ; preds = %"_ZN4core3ptr266drop_in_place$LT$core..result..Result$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$C$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$alloc..collections..vec_deque..VecDeque$LT$usize$GT$$GT$$GT$$GT$$GT$17h372f330cc8c82cc1E.llvm.1425447921696267910.exit", %50 + %51 = tail call noundef i64 @"_ZN12sharded_slab3tid12Registration8register28_$u7b$$u7b$closure$u7d$$u7d$17hd3756d37421bc3feE.llvm.1425447921696267910"() + br label %52 -51: ; preds = %49, %.thread - %.0 = phi i64 [ %50, %.thread ], [ %.sroa.3.0.i, %49 ] +52: ; preds = %50, %.thread + %.0 = phi i64 [ %51, %.thread ], [ %.sroa.3.0.i, %50 ] store i64 1, ptr %0, align 8 - %52 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.0, ptr %52, align 8 + %53 = getelementptr inbounds i8, ptr %0, i64 8 + store i64 %.0, ptr %53, align 8 ret i64 %.0 } diff --git a/bench/ockam-rs/optimized/lrl69p7oh77nujn.ll b/bench/ockam-rs/optimized/lrl69p7oh77nujn.ll index 2c819c8169c..9ff634683c7 100644 --- a/bench/ockam-rs/optimized/lrl69p7oh77nujn.ll +++ b/bench/ockam-rs/optimized/lrl69p7oh77nujn.ll @@ -72,22 +72,20 @@ define internal { i64, ptr } @"_ZN113_$LT$tracing_subscriber..fmt..Subscriber$LT %7 = getelementptr inbounds i8, ptr %0, i64 2328 %8 = tail call { i64, ptr } @"_ZN124_$LT$tracing_subscriber..fmt..fmt_layer..Layer$LT$S$C$N$C$E$C$W$GT$$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$12downcast_raw17h89a364658902affbE"(ptr noalias noundef nonnull readonly align 1 dereferenceable(12) %7, i128 noundef %1) %.fca.0.extract6.i.i = extractvalue { i64, ptr } %8, 0 - %switch.i.i = icmp eq i64 %.fca.0.extract6.i.i, 0 + %switch.i.i = icmp ne i64 %.fca.0.extract6.i.i, 0 %9 = icmp eq i128 %1, 377731369611698580506231877142650986 - %..i.i.i = zext i1 %9 to i64 - %10 = insertvalue { i64, ptr } poison, i64 %..i.i.i, 0 - %11 = insertvalue { i64, ptr } %10, ptr %4, 1 - %.sroa.0.1.i.i = select i1 %switch.i.i, i64 %..i.i.i, i64 1 - %.pn.i.i = select i1 %switch.i.i, { i64, ptr } %11, { i64, ptr } %8 - %.sroa.4.1.i.i = extractvalue { i64, ptr } %.pn.i.i, 1 + %narrow.i.i = or i1 %9, %switch.i.i + %.sroa.0.1.i.i = zext i1 %narrow.i.i to i64 + %10 = extractvalue { i64, ptr } %8, 1 + %.sroa.4.1.i.i = select i1 %switch.i.i, ptr %10, ptr %4 br label %"_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17h23ec39b1b619a903E.exit" "_ZN113_$LT$tracing_subscriber..layer..layered..Layered$LT$L$C$S$GT$$u20$as$u20$tracing_core..subscriber..Subscriber$GT$12downcast_raw17h23ec39b1b619a903E.exit": ; preds = %6, %3, %2, %2, %2 %.sroa.3.0 = phi ptr [ %0, %2 ], [ %.sroa.4.1.i.i, %6 ], [ %4, %3 ], [ %0, %2 ], [ %0, %2 ] %.sroa.0.0 = phi i64 [ 1, %2 ], [ %.sroa.0.1.i.i, %6 ], [ 1, %3 ], [ 1, %2 ], [ 1, %2 ] - %12 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 - %13 = insertvalue { i64, ptr } %12, ptr %.sroa.3.0, 1 - ret { i64, ptr } %13 + %11 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 + %12 = insertvalue { i64, ptr } %11, ptr %.sroa.3.0, 1 + ret { i64, ptr } %12 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -717,12 +715,10 @@ define hidden void @"_ZN18tracing_subscriber3fmt38SubscriberBuilder$LT$N$C$E$C$F 16: ; preds = %13 %.fca.0.extract6.i.i = extractvalue { i64, ptr } %15, 0 - %switch.i3.i = icmp ne i64 %.fca.0.extract6.i.i, 0 - %17 = insertvalue { i64, ptr } { i64 0, ptr poison }, ptr %7, 1 - %.pn.i.i = select i1 %switch.i3.i, { i64, ptr } %15, { i64, ptr } %17 - %.sroa.4.1.i.i = extractvalue { i64, ptr } %.pn.i.i, 1 - %18 = icmp ne ptr %.sroa.4.1.i.i, null - %19 = select i1 %switch.i3.i, i1 %18, i1 false + %switch.i3.not.i = icmp ne i64 %.fca.0.extract6.i.i, 0 + %17 = extractvalue { i64, ptr } %15, 1 + %18 = icmp ne ptr %17, null + %19 = select i1 %switch.i3.not.i, i1 %18, i1 false call void @llvm.lifetime.start.p0(i64 1784, ptr nonnull %4), !noalias !88 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1784) %4, ptr noundef nonnull align 8 dereferenceable(1784) %1, i64 1784, i1 false) call void @llvm.lifetime.start.p0(i64 560, ptr nonnull %3), !noalias !88 diff --git a/bench/oiio/optimized/argparse.cpp.ll b/bench/oiio/optimized/argparse.cpp.ll index d753e126508..ee292c20581 100644 --- a/bench/oiio/optimized/argparse.cpp.ll +++ b/bench/oiio/optimized/argparse.cpp.ll @@ -3327,12 +3327,11 @@ if.end279: ; preds = %cond.true.i178, %if %any_option_encountered.1 = phi i1 [ %any_option_encountered.0213, %_ZNKSt8functionIFvRN18OpenImageIO_v2_6_08ArgParse3ArgENS0_4spanIKPKcLln1EEEEEclES3_S8_.exit175 ], [ false, %_ZNKSt8functionIFvRN18OpenImageIO_v2_6_08ArgParse3ArgENS0_4spanIKPKcLln1EEEEEclES3_S8_.exit159 ], [ %any_option_encountered.0213, %if.else225 ], [ true, %cleanup.thread ], [ false, %if.else244 ], [ false, %cond.true.i162 ], [ %any_option_encountered.0213, %if.else265 ], [ %any_option_encountered.0213, %cond.true.i178 ] %i.3 = phi i32 [ %i.0214, %_ZNKSt8functionIFvRN18OpenImageIO_v2_6_08ArgParse3ArgENS0_4spanIKPKcLln1EEEEEclES3_S8_.exit175 ], [ %i.0214, %_ZNKSt8functionIFvRN18OpenImageIO_v2_6_08ArgParse3ArgENS0_4spanIKPKcLln1EEEEEclES3_S8_.exit159 ], [ %i.0214, %if.else225 ], [ %i.1.ph, %cleanup.thread ], [ %i.0214, %if.else244 ], [ %i.0214, %cond.true.i162 ], [ %i.0214, %if.else265 ], [ %i.0214, %cond.true.i178 ] %92 = load i32, ptr %m_next_arg, align 4 - %sub = add nsw i32 %92, -1 %cmp281190 = icmp slt i32 %92, 0 - %spec.select = select i1 %cmp281190, i32 %i.3, i32 %sub - %inc286 = add nsw i32 %spec.select, 1 - %93 = load i32, ptr %m_argc, align 8 - %cmp = icmp slt i32 %inc286, %93 + %93 = add nsw i32 %i.3, 1 + %inc286 = select i1 %cmp281190, i32 %93, i32 %92 + %94 = load i32, ptr %m_argc, align 8 + %cmp = icmp slt i32 %inc286, %94 br i1 %cmp, label %for.body, label %return, !llvm.loop !42 return: ; preds = %for.body, %if.end279, %if.end59, %cleanup, %if.else272 diff --git a/bench/openblas/optimized/dstedc.c.ll b/bench/openblas/optimized/dstedc.c.ll index a2834a272b9..a32d7cdde43 100644 --- a/bench/openblas/optimized/dstedc.c.ll +++ b/bench/openblas/optimized/dstedc.c.ll @@ -274,34 +274,34 @@ define void @dstedc_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef 156: ; preds = %153 %157 = mul nsw i32 %148, %148 %158 = add nuw nsw i32 %157, 1 - %159 = zext nneg i32 %158 to i64 - br i1 %41, label %160, label %161 + br i1 %41, label %159, label %160 -160: ; preds = %156 +159: ; preds = %156 tail call void @dlaset_(ptr noundef nonnull @.str.5, ptr noundef nonnull %1, ptr noundef nonnull %1, ptr noundef nonnull @c_b17, ptr noundef nonnull @c_b18, ptr noundef %4, ptr noundef nonnull %5) #4 - br label %161 - -161: ; preds = %160, %156 - %162 = tail call double @dlanst_(ptr noundef nonnull @.str.6, ptr noundef nonnull %1, ptr noundef %2, ptr noundef %3) #4 - store double %162, ptr %16, align 8, !tbaa !9 - %163 = fcmp oeq double %162, 0.000000e+00 - br i1 %163, label %.loopexit34, label %164 - -164: ; preds = %161 - %165 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #4 - %166 = getelementptr i8, ptr %22, i64 8 - %167 = load i32, ptr %1, align 4, !tbaa !3 - %168 = icmp slt i32 %167, 1 - br i1 %168, label %.loopexit35, label %169 - -169: ; preds = %164 - %170 = select i1 %40, i64 %159, i64 1 + br label %160 + +160: ; preds = %159, %156 + %161 = tail call double @dlanst_(ptr noundef nonnull @.str.6, ptr noundef nonnull %1, ptr noundef %2, ptr noundef %3) #4 + store double %161, ptr %16, align 8, !tbaa !9 + %162 = fcmp oeq double %161, 0.000000e+00 + br i1 %162, label %.loopexit34, label %163 + +163: ; preds = %160 + %164 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #4 + %165 = getelementptr i8, ptr %22, i64 8 + %166 = load i32, ptr %1, align 4, !tbaa !3 + %167 = icmp slt i32 %166, 1 + br i1 %167, label %.loopexit35, label %168 + +168: ; preds = %163 + %169 = zext nneg i32 %158 to i64 + %170 = select i1 %40, i64 %169, i64 1 %171 = getelementptr inbounds double, ptr %23, i64 %170 %172 = add i32 %19, 1 br label %173 -173: ; preds = %208, %169 - %174 = phi i32 [ 1, %169 ], [ %209, %208 ] +173: ; preds = %208, %168 + %174 = phi i32 [ 1, %168 ], [ %209, %208 ] %175 = sext i32 %174 to i64 br label %176 @@ -319,7 +319,7 @@ define void @dstedc_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %185 = fneg double %183 %186 = select i1 %184, double %183, double %185 %187 = call double @sqrt(double noundef %186) #4 - %188 = fmul double %165, %187 + %188 = fmul double %164, %187 %189 = add nsw i64 %177, 1 %190 = getelementptr double, ptr %2, i64 %177 %191 = load double, ptr %190, align 8, !tbaa !9 @@ -412,7 +412,7 @@ define void @dstedc_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef call void @dsteqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull %14, ptr noundef nonnull %244, ptr noundef nonnull %245, ptr noundef %6, ptr noundef nonnull %14, ptr noundef %249, ptr noundef nonnull %10) #4 %250 = mul nsw i32 %174, %19 %251 = sext i32 %250 to i64 - %252 = getelementptr double, ptr %166, i64 %251 + %252 = getelementptr double, ptr %165, i64 %251 call void @dlacpy_(ptr noundef nonnull @.str.9, ptr noundef nonnull %1, ptr noundef nonnull %14, ptr noundef %252, ptr noundef nonnull %5, ptr noundef nonnull %171, ptr noundef nonnull %1) #4 call void @dgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %1, ptr noundef nonnull %14, ptr noundef nonnull %14, ptr noundef nonnull @c_b18, ptr noundef nonnull %171, ptr noundef nonnull %1, ptr noundef %6, ptr noundef nonnull %14, ptr noundef nonnull @c_b17, ptr noundef %252, ptr noundef nonnull %5) #4 br label %258 @@ -445,9 +445,9 @@ define void @dstedc_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %.pre = load i32, ptr %15, align 4, !tbaa !3 br label %.loopexit35 -.loopexit35: ; preds = %.loopexit35.loopexit, %164 - %266 = phi i32 [ %.sink, %164 ], [ %.pre, %.loopexit35.loopexit ] - %267 = phi i32 [ %167, %164 ], [ %210, %.loopexit35.loopexit ] +.loopexit35: ; preds = %.loopexit35.loopexit, %163 + %266 = phi i32 [ %.sink, %163 ], [ %.pre, %.loopexit35.loopexit ] + %267 = phi i32 [ %166, %163 ], [ %210, %.loopexit35.loopexit ] %268 = icmp eq i32 %266, 0 br i1 %268, label %269, label %270 @@ -509,10 +509,10 @@ define void @dstedc_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef store double %279, ptr %305, align 8, !tbaa !9 store double %300, ptr %278, align 8, !tbaa !9 %306 = mul nsw i64 %277, %273 - %307 = getelementptr double, ptr %166, i64 %306 + %307 = getelementptr double, ptr %165, i64 %306 %308 = mul nsw i32 %299, %19 %309 = sext i32 %308 to i64 - %310 = getelementptr double, ptr %166, i64 %309 + %310 = getelementptr double, ptr %165, i64 %309 call void @dswap_(ptr noundef nonnull %1, ptr noundef %307, ptr noundef nonnull @c__1, ptr noundef %310, ptr noundef nonnull @c__1) #4 %.pre63 = load i32, ptr %12, align 4, !tbaa !3 br label %311 @@ -524,7 +524,7 @@ define void @dstedc_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %315 = icmp slt i64 %276, %314 br i1 %315, label %274, label %.loopexit34, !llvm.loop !13 -.loopexit34: ; preds = %311, %270, %269, %261, %229, %161, %155, %152 +.loopexit34: ; preds = %311, %270, %269, %261, %229, %160, %155, %152 %316 = sitofp i32 %.ph22 to double store double %316, ptr %6, align 8, !tbaa !9 store i32 %.ph23, ptr %8, align 4, !tbaa !3 diff --git a/bench/openjdk/optimized/chunklevel.ll b/bench/openjdk/optimized/chunklevel.ll index e217ceb835f..142e9672755 100644 --- a/bench/openjdk/optimized/chunklevel.ll +++ b/bench/openjdk/optimized/chunklevel.ll @@ -18,9 +18,8 @@ define hidden noundef signext range(i8 -42, 22) i8 @_ZN9metaspace10chunklevel23l %or.cond.i = icmp eq i64 %4, 1 %5 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %0, i1 true) %6 = sub nuw nsw i64 64, %5 - %7 = shl nuw i64 1, %6 - %.0.i = select i1 %or.cond.i, i64 %0, i64 %7 - %8 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.0.i, i1 true) + %7 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %0, i1 true) + %8 = select i1 %or.cond.i, i64 %7, i64 %6 %9 = trunc nuw nsw i64 %8 to i8 %10 = sub nsw i8 21, %9 br label %11 diff --git a/bench/openjdk/optimized/ciMethod.ll b/bench/openjdk/optimized/ciMethod.ll index 1c24fb8bc5f..977457613a0 100644 --- a/bench/openjdk/optimized/ciMethod.ll +++ b/bench/openjdk/optimized/ciMethod.ll @@ -1810,27 +1810,27 @@ define hidden void @_ZN8ciMethod19call_profile_at_bciEi(ptr dead_on_unwind noali store ptr null, ptr %19, align 8 %20 = tail call noundef ptr @_ZN8ciMethod11method_dataEv(ptr noundef nonnull align 8 dereferenceable(160) %1) %.not = icmp eq ptr %20, null - br i1 %.not, label %133, label %21 + br i1 %.not, label %135, label %21 21: ; preds = %3 %22 = tail call noundef ptr @_ZN8ciMethod11method_dataEv(ptr noundef nonnull align 8 dereferenceable(160) %1) %23 = getelementptr inbounds i8, ptr %22, i64 52 %24 = load i8, ptr %23, align 4 %25 = icmp eq i8 %24, 2 - br i1 %25, label %26, label %133 + br i1 %25, label %26, label %135 26: ; preds = %21 %27 = tail call noundef ptr @_ZN8ciMethod11method_dataEv(ptr noundef nonnull align 8 dereferenceable(160) %1) %28 = tail call noundef ptr @_ZN12ciMethodData11bci_to_dataEiP8ciMethod(ptr noundef nonnull align 8 dereferenceable(176) %27, i32 noundef %2, ptr noundef null) #14 %.not52 = icmp eq ptr %28, null - br i1 %.not52, label %133, label %29 + br i1 %.not52, label %135, label %29 29: ; preds = %26 %30 = load ptr, ptr %28, align 8 %31 = getelementptr inbounds i8, ptr %30, i64 16 %32 = load ptr, ptr %31, align 8 %33 = tail call noundef zeroext i1 %32(ptr noundef nonnull align 8 dereferenceable(16) %28) #14 - br i1 %33, label %34, label %133 + br i1 %33, label %34, label %135 34: ; preds = %29 %35 = load ptr, ptr %28, align 8 @@ -1877,7 +1877,7 @@ _ZN8ciMethod16java_code_at_bciEi.exit: ; preds = %_ZN8ciMethod4codeEv 58: ; preds = %_ZN8ciMethod16java_code_at_bciEi.exit store i32 0, ptr %18, align 4 - br label %132 + br label %.thread 59: ; preds = %_ZN8ciMethod16java_code_at_bciEi.exit %60 = load ptr, ptr %28, align 8 @@ -1888,7 +1888,7 @@ _ZN8ciMethod16java_code_at_bciEi.exit: ; preds = %_ZN8ciMethod4codeEv %64 = load i64, ptr @TypeProfileWidth, align 8 %65 = trunc i64 %64 to i32 %.not72 = icmp eq i32 %65, 0 - br i1 %.not72, label %._crit_edge70.thread, label %.lr.ph + br i1 %.not72, label %.thread, label %.lr.ph .lr.ph: ; preds = %59 %66 = getelementptr inbounds i8, ptr %..i57, i64 8 @@ -1915,11 +1915,11 @@ _ZN8ciMethod16java_code_at_bciEi.exit: ; preds = %_ZN8ciMethod4codeEv %78 = icmp eq i32 %spec.select, 1 %79 = icmp ne i64 %42, 0 %or.cond = and i1 %79, %78 - %spec.select54 = select i1 %or.cond, i32 0, i32 %53 - %80 = zext nneg i32 %53 to i64 - %81 = getelementptr inbounds i8, ptr %..i57, i64 8 - %82 = select i1 %or.cond, i64 %80, i64 0 - %.pre = load ptr, ptr %81, align 8 + %cond.fr89 = freeze i1 %or.cond + %80 = getelementptr inbounds i8, ptr %..i57, i64 8 + %81 = zext nneg i32 %53 to i64 + %82 = select i1 %cond.fr89, i64 %81, i64 0 + %.pre = load ptr, ptr %80, align 8 %83 = getelementptr inbounds i8, ptr %.pre, i64 8 br label %84 @@ -2004,7 +2004,7 @@ _ZN13ciCallProfile12add_receiverEP7ciKlassi.exit: ; preds = %120, %.critedge.i, %124 = load i32, ptr %0, align 8 %125 = icmp eq i32 %spec.select, %124 %or.cond56 = select i1 %123, i1 %125, i1 false - br i1 %or.cond56, label %126, label %._crit_edge70.thread + br i1 %or.cond56, label %126, label %132 126: ; preds = %._crit_edge70 br i1 %78, label %130, label %127 @@ -2013,45 +2013,48 @@ _ZN13ciCallProfile12add_receiverEP7ciKlassi.exit: ; preds = %120, %.critedge.i, %128 = icmp eq i32 %spec.select, 2 %129 = icmp eq i64 %42, 0 %or.cond3 = and i1 %129, %128 - br i1 %or.cond3, label %130, label %._crit_edge70.thread + br i1 %or.cond3, label %130, label %132 130: ; preds = %127, %126 store i32 %spec.select, ptr %16, align 4 - br label %._crit_edge70.thread + %131 = tail call i32 @llvm.sadd.sat.i32(i32 %53, i32 %.143) + br i1 %cond.fr89, label %134, label %.thread + +132: ; preds = %._crit_edge70, %127 + %or.cond7984 = phi i1 [ %cond.fr89, %._crit_edge70 ], [ false, %127 ] + %133 = tail call i32 @llvm.sadd.sat.i32(i32 %53, i32 %.143) + br i1 %or.cond7984, label %134, label %.thread -._crit_edge70.thread: ; preds = %59, %._crit_edge70, %130, %127 - %.042.lcssa86 = phi i32 [ %.143, %._crit_edge70 ], [ %.143, %130 ], [ %.143, %127 ], [ 0, %59 ] - %spec.select548085 = phi i32 [ %spec.select54, %._crit_edge70 ], [ %spec.select54, %130 ], [ %spec.select54, %127 ], [ %53, %59 ] - %131 = tail call noundef i32 @llvm.sadd.sat.i32(i32 %spec.select548085, i32 %.042.lcssa86) - br label %132 +134: ; preds = %130, %132 + br label %.thread -132: ; preds = %._crit_edge70.thread, %58 - %.0 = phi i32 [ %131, %._crit_edge70.thread ], [ %53, %58 ] +.thread: ; preds = %59, %134, %132, %130, %58 + %.0 = phi i32 [ %53, %58 ], [ %.143, %134 ], [ %133, %132 ], [ %131, %130 ], [ %53, %59 ] store i32 %.0, ptr %17, align 8 - br label %133 + br label %135 -133: ; preds = %26, %29, %132, %21, %3 - %134 = load ptr, ptr %9, align 8 - %.not.i.i.i.i = icmp eq ptr %134, null - br i1 %.not.i.i.i.i, label %136, label %135 +135: ; preds = %26, %29, %.thread, %21, %3 + %136 = load ptr, ptr %9, align 8 + %.not.i.i.i.i = icmp eq ptr %136, null + br i1 %.not.i.i.i.i, label %138, label %137 -135: ; preds = %133 +137: ; preds = %135 tail call void @_ZN5Arena17set_size_in_bytesEm(ptr noundef nonnull align 8 dereferenceable(48) %7, i64 noundef %15) #14 tail call void @_ZN5Chunk9next_chopEPS_(ptr noundef nonnull %9) #14 - br label %136 + br label %138 -136: ; preds = %135, %133 - %137 = load ptr, ptr %10, align 8 - %.not8.i.i.i.i = icmp eq ptr %137, %11 - br i1 %.not8.i.i.i.i, label %_ZN12ResourceMarkD2Ev.exit, label %138 +138: ; preds = %137, %135 + %139 = load ptr, ptr %10, align 8 + %.not8.i.i.i.i = icmp eq ptr %139, %11 + br i1 %.not8.i.i.i.i, label %_ZN12ResourceMarkD2Ev.exit, label %140 -138: ; preds = %136 +140: ; preds = %138 store ptr %9, ptr %8, align 8 store ptr %11, ptr %10, align 8 store ptr %13, ptr %12, align 8 br label %_ZN12ResourceMarkD2Ev.exit -_ZN12ResourceMarkD2Ev.exit: ; preds = %136, %138 +_ZN12ResourceMarkD2Ev.exit: ; preds = %138, %140 ret void } diff --git a/bench/openjdk/optimized/g1CodeRootSet.ll b/bench/openjdk/optimized/g1CodeRootSet.ll index ad1f2d28fb4..43fc149c29f 100644 --- a/bench/openjdk/optimized/g1CodeRootSet.ll +++ b/bench/openjdk/optimized/g1CodeRootSet.ll @@ -683,9 +683,8 @@ _ZN19ConcurrentHashTableI28G1CodeRootSetHashTableConfigL8MEMFLAGS5EE13get_size_l %or.cond.i.i.i = icmp eq i64 %52, 1 %53 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %50, i1 true) %54 = sub nuw nsw i64 64, %53 - %55 = shl nuw i64 1, %54 - %.0.i.i.i = select i1 %or.cond.i.i.i, i64 %50, i64 %55 - %56 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.0.i.i.i, i1 true) + %55 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %50, i1 true) + %56 = select i1 %or.cond.i.i.i, i64 %55, i64 %54 %57 = call noundef i64 @llvm.umax.i64(i64 %56, i64 2) %58 = call noundef i64 @llvm.umin.i64(i64 %57, i64 21) br label %_ZNK22G1CodeRootSetHashTable23log2_target_shrink_sizeEm.exit.i @@ -1799,9 +1798,8 @@ _ZN19ConcurrentHashTableI28G1CodeRootSetHashTableConfigL8MEMFLAGS5EE13get_size_l %or.cond.i.i.i = icmp eq i64 %52, 1 %53 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %50, i1 true) %54 = sub nuw nsw i64 64, %53 - %55 = shl nuw i64 1, %54 - %.0.i.i.i = select i1 %or.cond.i.i.i, i64 %50, i64 %55 - %56 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.0.i.i.i, i1 true) + %55 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %50, i1 true) + %56 = select i1 %or.cond.i.i.i, i64 %55, i64 %54 %57 = call noundef i64 @llvm.umax.i64(i64 %56, i64 2) %58 = call noundef i64 @llvm.umin.i64(i64 %57, i64 21) br label %_ZNK22G1CodeRootSetHashTable23log2_target_shrink_sizeEm.exit.i @@ -2623,9 +2621,8 @@ _ZN19ConcurrentHashTableI28G1CodeRootSetHashTableConfigL8MEMFLAGS5EE13get_size_l %or.cond.i.i.i = icmp eq i64 %52, 1 %53 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %50, i1 true) %54 = sub nuw nsw i64 64, %53 - %55 = shl nuw i64 1, %54 - %.0.i.i.i = select i1 %or.cond.i.i.i, i64 %50, i64 %55 - %56 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.0.i.i.i, i1 true) + %55 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %50, i1 true) + %56 = select i1 %or.cond.i.i.i, i64 %55, i64 %54 %57 = call noundef i64 @llvm.umax.i64(i64 %56, i64 2) %58 = call noundef i64 @llvm.umin.i64(i64 %57, i64 21) br label %_ZNK22G1CodeRootSetHashTable23log2_target_shrink_sizeEm.exit.i diff --git a/bench/openusd/optimized/basisCurves.cpp.ll b/bench/openusd/optimized/basisCurves.cpp.ll index c6ece2a798e..d050c5d6a4b 100644 --- a/bench/openusd/optimized/basisCurves.cpp.ll +++ b/bench/openusd/optimized/basisCurves.cpp.ll @@ -1658,42 +1658,39 @@ _ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit.thread: ; preds = %_Z br label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit _ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__12TfStaticDataINS_43HdBasisCurvesReprDescTokens_StaticTokenTypeENS_27Tf_StaticDataDefaultFactoryIS1_EEEptEv.exit - %16 = inttoptr i64 %13 to ptr - %17 = and i64 %13, -8 - %18 = inttoptr i64 %17 to ptr - %19 = atomicrmw add ptr %18, i32 2 monotonic, align 4 - %20 = and i32 %19, 1 - %.not1.i.i = icmp eq i32 %20, 0 - %spec.select = select i1 %.not1.i.i, ptr %18, ptr %16 - %21 = ptrtoint ptr %spec.select to i64 - %.pre = and i64 %21, 7 - %22 = icmp eq i64 %.pre, 0 + %16 = and i64 %13, -8 + %17 = inttoptr i64 %16 to ptr + %18 = atomicrmw add ptr %17, i32 2 monotonic, align 4 + %19 = and i32 %18, 1 + %.not1.i.i = icmp eq i32 %19, 0 + %20 = select i1 %.not1.i.i, i64 %16, i64 %13 + %.pre = and i64 %20, 7 + %21 = icmp eq i64 %.pre, 0 store i32 0, ptr %0, align 8 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %21, ptr %23, align 8 - br i1 %22, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, label %24 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %20, ptr %22, align 8 + br i1 %21, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, label %23 -24: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit - %25 = and i64 %21, -8 - %26 = inttoptr i64 %25 to ptr - %27 = atomicrmw add ptr %26, i32 2 monotonic, align 4 - %28 = and i32 %27, 1 - %.not1.i.i.i = icmp eq i32 %28, 0 - br i1 %.not1.i.i.i, label %29, label %34 - -29: ; preds = %24 - %30 = load ptr, ptr %23, align 8 - %31 = ptrtoint ptr %30 to i64 - %32 = and i64 %31, -8 - %33 = inttoptr i64 %32 to ptr - store ptr %33, ptr %23, align 8 - br label %34 +23: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit + %24 = inttoptr i64 %16 to ptr + %25 = atomicrmw add ptr %24, i32 2 monotonic, align 4 + %26 = and i32 %25, 1 + %.not1.i.i.i = icmp eq i32 %26, 0 + br i1 %.not1.i.i.i, label %27, label %32 -34: ; preds = %24, %29 - %35 = atomicrmw sub ptr %26, i32 2 release, align 4 +27: ; preds = %23 + %28 = load ptr, ptr %22, align 8 + %29 = ptrtoint ptr %28 to i64 + %30 = and i64 %29, -8 + %31 = inttoptr i64 %30 to ptr + store ptr %31, ptr %22, align 8 + br label %32 + +32: ; preds = %23, %27 + %33 = atomicrmw sub ptr %24, i32 2 release, align 4 br label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit -_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit.thread, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit, %34 +_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit.thread, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit, %32 ret void } diff --git a/bench/openusd/optimized/delegate.cpp.ll b/bench/openusd/optimized/delegate.cpp.ll index 9959caed873..2f4a0ef8cc1 100644 --- a/bench/openusd/optimized/delegate.cpp.ll +++ b/bench/openusd/optimized/delegate.cpp.ll @@ -72898,14 +72898,14 @@ define linkonce_odr noundef ptr @_ZNK32pxrInternal_v0_24__pxrReserved__33UsdImag %6 = alloca %"struct.std::pair.1325", align 8 %7 = tail call noundef ptr @_ZN3tbb6detail2d125concurrent_unordered_baseINS1_31concurrent_unordered_map_traitsIN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS4_33UsdImaging_ResolvedAttributeCacheINS4_27UsdImaging_DrawModeStrategyEbE6_EntryENS4_6TfHashESt8equal_toIS5_ENS1_13tbb_allocatorISt4pairIKS5_S9_EEELb0EEEE13internal_findIS5_EEPNS1_10value_nodeISG_mEERKT_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(32) %1), !noalias !502 %.not = icmp eq ptr %7, null - br i1 %.not, label %8, label %79 + br i1 %.not, label %8, label %78 8: ; preds = %2 call void @_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryC2Ev(ptr noundef nonnull align 8 dereferenceable(132) %4) %9 = getelementptr inbounds nuw i8, ptr %0, i64 672 %10 = load ptr, ptr %9, align 8 invoke void @_ZN32pxrInternal_v0_24__pxrReserved__27UsdImaging_DrawModeStrategy9MakeQueryERKNS_7UsdPrimEPb(ptr dead_on_unwind nonnull writable sret(%"class.pxrInternal_v0_24__pxrReserved__::UsdAttributeQuery") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef %10) - to label %11 unwind label %67 + to label %11 unwind label %66 11: ; preds = %8 %12 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN32pxrInternal_v0_24__pxrReserved__17UsdAttributeQueryaSEOS0_(ptr noundef nonnull align 8 dereferenceable(120) %4, ptr noundef nonnull align 8 dereferenceable(120) %5) #30 @@ -72917,7 +72917,7 @@ define linkonce_odr noundef ptr @_ZNK32pxrInternal_v0_24__pxrReserved__33UsdImag 15: ; preds = %11 %16 = invoke noalias noundef nonnull dereferenceable(1632) ptr @_Znwm(i64 noundef 1632) #31 - to label %.noexc unwind label %67 + to label %.noexc unwind label %66 .noexc: ; preds = %15 invoke void @_ZN32pxrInternal_v0_24__pxrReserved__17UsdGeomTokensTypeC1Ev(ptr noundef nonnull align 8 dereferenceable(1632) %16) @@ -72951,120 +72951,118 @@ _ZNK32pxrInternal_v0_24__pxrReserved__12TfStaticDataINS_17UsdGeomTokensTypeENS_2 br i1 %.not.i.i1.i, label %_ZN32pxrInternal_v0_24__pxrReserved__27UsdImaging_DrawModeStrategy11MakeDefaultEv.exit, label %29 29: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__12TfStaticDataINS_17UsdGeomTokensTypeENS_27Tf_StaticDataDefaultFactoryIS1_EEEptEv.exit.i - %30 = inttoptr i64 %27 to ptr - %31 = and i64 %27, -8 - %32 = inttoptr i64 %31 to ptr - %33 = atomicrmw add ptr %32, i32 2 monotonic, align 4, !noalias !505 - %34 = and i32 %33, 1 - %.not1.i.i.i = icmp eq i32 %34, 0 - %spec.select = select i1 %.not1.i.i.i, ptr %32, ptr %30 - %35 = ptrtoint ptr %spec.select to i64 + %30 = and i64 %27, -8 + %31 = inttoptr i64 %30 to ptr + %32 = atomicrmw add ptr %31, i32 2 monotonic, align 4, !noalias !505 + %33 = and i32 %32, 1 + %.not1.i.i.i = icmp eq i32 %33, 0 + %34 = select i1 %.not1.i.i.i, i64 %30, i64 %27 br label %_ZN32pxrInternal_v0_24__pxrReserved__27UsdImaging_DrawModeStrategy11MakeDefaultEv.exit _ZN32pxrInternal_v0_24__pxrReserved__27UsdImaging_DrawModeStrategy11MakeDefaultEv.exit: ; preds = %29, %_ZNK32pxrInternal_v0_24__pxrReserved__12TfStaticDataINS_17UsdGeomTokensTypeENS_27Tf_StaticDataDefaultFactoryIS1_EEEptEv.exit.i - %.sroa.017.0 = phi i64 [ %27, %_ZNK32pxrInternal_v0_24__pxrReserved__12TfStaticDataINS_17UsdGeomTokensTypeENS_27Tf_StaticDataDefaultFactoryIS1_EEEptEv.exit.i ], [ %35, %29 ] - %36 = getelementptr inbounds nuw i8, ptr %4, i64 120 - %37 = load ptr, ptr %36, align 8 - %38 = ptrtoint ptr %37 to i64 - %39 = and i64 %38, 7 - %.not.i.i = icmp eq i64 %39, 0 - br i1 %.not.i.i, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, label %40 + %.sroa.017.0 = phi i64 [ %27, %_ZNK32pxrInternal_v0_24__pxrReserved__12TfStaticDataINS_17UsdGeomTokensTypeENS_27Tf_StaticDataDefaultFactoryIS1_EEEptEv.exit.i ], [ %34, %29 ] + %35 = getelementptr inbounds nuw i8, ptr %4, i64 120 + %36 = load ptr, ptr %35, align 8 + %37 = ptrtoint ptr %36 to i64 + %38 = and i64 %37, 7 + %.not.i.i = icmp eq i64 %38, 0 + br i1 %.not.i.i, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, label %39 -40: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__27UsdImaging_DrawModeStrategy11MakeDefaultEv.exit - %41 = and i64 %38, -8 - %42 = inttoptr i64 %41 to ptr - %43 = atomicrmw sub ptr %42, i32 2 release, align 4 +39: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__27UsdImaging_DrawModeStrategy11MakeDefaultEv.exit + %40 = and i64 %37, -8 + %41 = inttoptr i64 %40 to ptr + %42 = atomicrmw sub ptr %41, i32 2 release, align 4 br label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit -_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit: ; preds = %40, %_ZN32pxrInternal_v0_24__pxrReserved__27UsdImaging_DrawModeStrategy11MakeDefaultEv.exit - store i64 %.sroa.017.0, ptr %36, align 8 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 608 - %45 = load atomic i32, ptr %44 seq_cst, align 8 - %46 = add i32 %45, -1 - %47 = getelementptr inbounds nuw i8, ptr %4, i64 128 - store atomic i32 %46, ptr %47 seq_cst, align 8 +_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit: ; preds = %39, %_ZN32pxrInternal_v0_24__pxrReserved__27UsdImaging_DrawModeStrategy11MakeDefaultEv.exit + store i64 %.sroa.017.0, ptr %35, align 8 + %43 = getelementptr inbounds nuw i8, ptr %0, i64 608 + %44 = load atomic i32, ptr %43 seq_cst, align 8 + %45 = add i32 %44, -1 + %46 = getelementptr inbounds nuw i8, ptr %4, i64 128 + store atomic i32 %45, ptr %46 seq_cst, align 8 invoke void @_ZNSt4pairIKN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS0_33UsdImaging_ResolvedAttributeCacheINS0_27UsdImaging_DrawModeStrategyEbE6_EntryEEC2IRS2_RS6_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISC_SD_EEEbE4typeELb1EEEOSC_OSD_(ptr noundef nonnull align 8 dereferenceable(168) %6, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(132) %4) - to label %48 unwind label %67 + to label %47 unwind label %66 -48: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit +47: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3), !noalias !508 invoke void @_ZN3tbb6detail2d125concurrent_unordered_baseINS1_31concurrent_unordered_map_traitsIN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS4_33UsdImaging_ResolvedAttributeCacheINS4_27UsdImaging_DrawModeStrategyEbE6_EntryENS4_6TfHashESt8equal_toIS5_ENS1_13tbb_allocatorISt4pairIKS5_S9_EEELb0EEEE15internal_insertIRSG_ZNSJ_21internal_insert_valueISG_EESE_INS1_15solist_iteratorISJ_SG_EEbEOT_EUlmE_EENSJ_27internal_insert_return_typeESR_T0_(ptr dead_on_unwind nonnull writable sret(%"struct.tbb::detail::d1::concurrent_unordered_base::_Entry, pxrInternal_v0_24__pxrReserved__::TfHash, std::equal_to, tbb::detail::d1::tbb_allocator::_Entry>>, false>>::internal_insert_return_type") align 8 %3, ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(168) %6, ptr nonnull align 8 dereferenceable(168) %6, ptr nonnull align 8 dereferenceable(592) %0) - to label %.noexc12 unwind label %69 + to label %.noexc12 unwind label %68 -.noexc12: ; preds = %48 - %49 = load ptr, ptr %3, align 8, !noalias !511 - %.not.i.i11 = icmp eq ptr %49, null - br i1 %.not.i.i11, label %57, label %50 +.noexc12: ; preds = %47 + %48 = load ptr, ptr %3, align 8, !noalias !511 + %.not.i.i11 = icmp eq ptr %48, null + br i1 %.not.i.i11, label %56, label %49 -50: ; preds = %.noexc12 - %51 = getelementptr inbounds nuw i8, ptr %49, i64 8 - %52 = load i64, ptr %51, align 8, !noalias !511 - %53 = and i64 %52, 1 - %54 = icmp eq i64 %53, 0 - br i1 %54, label %_ZN3tbb6detail2d125concurrent_unordered_baseINS1_31concurrent_unordered_map_traitsIN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS4_33UsdImaging_ResolvedAttributeCacheINS4_27UsdImaging_DrawModeStrategyEbE6_EntryENS4_6TfHashESt8equal_toIS5_ENS1_13tbb_allocatorISt4pairIKS5_S9_EEELb0EEEE12destroy_nodeEPNS1_9list_nodeImEE.exit.i.i, label %55 +49: ; preds = %.noexc12 + %50 = getelementptr inbounds nuw i8, ptr %48, i64 8 + %51 = load i64, ptr %50, align 8, !noalias !511 + %52 = and i64 %51, 1 + %53 = icmp eq i64 %52, 0 + br i1 %53, label %_ZN3tbb6detail2d125concurrent_unordered_baseINS1_31concurrent_unordered_map_traitsIN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS4_33UsdImaging_ResolvedAttributeCacheINS4_27UsdImaging_DrawModeStrategyEbE6_EntryENS4_6TfHashESt8equal_toIS5_ENS1_13tbb_allocatorISt4pairIKS5_S9_EEELb0EEEE12destroy_nodeEPNS1_9list_nodeImEE.exit.i.i, label %54 -55: ; preds = %50 - %56 = getelementptr inbounds nuw i8, ptr %49, i64 16 - call void @_ZNSt4pairIKN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS0_33UsdImaging_ResolvedAttributeCacheINS0_27UsdImaging_DrawModeStrategyEbE6_EntryEED2Ev(ptr noundef nonnull align 8 dereferenceable(168) %56) #30, !noalias !511 +54: ; preds = %49 + %55 = getelementptr inbounds nuw i8, ptr %48, i64 16 + call void @_ZNSt4pairIKN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS0_33UsdImaging_ResolvedAttributeCacheINS0_27UsdImaging_DrawModeStrategyEbE6_EntryEED2Ev(ptr noundef nonnull align 8 dereferenceable(168) %55) #30, !noalias !511 br label %_ZN3tbb6detail2d125concurrent_unordered_baseINS1_31concurrent_unordered_map_traitsIN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS4_33UsdImaging_ResolvedAttributeCacheINS4_27UsdImaging_DrawModeStrategyEbE6_EntryENS4_6TfHashESt8equal_toIS5_ENS1_13tbb_allocatorISt4pairIKS5_S9_EEELb0EEEE12destroy_nodeEPNS1_9list_nodeImEE.exit.i.i -_ZN3tbb6detail2d125concurrent_unordered_baseINS1_31concurrent_unordered_map_traitsIN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS4_33UsdImaging_ResolvedAttributeCacheINS4_27UsdImaging_DrawModeStrategyEbE6_EntryENS4_6TfHashESt8equal_toIS5_ENS1_13tbb_allocatorISt4pairIKS5_S9_EEELb0EEEE12destroy_nodeEPNS1_9list_nodeImEE.exit.i.i: ; preds = %55, %50 - invoke void @_ZN3tbb6detail2r117deallocate_memoryEPv(ptr noundef nonnull %49) - to label %57 unwind label %69 +_ZN3tbb6detail2d125concurrent_unordered_baseINS1_31concurrent_unordered_map_traitsIN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS4_33UsdImaging_ResolvedAttributeCacheINS4_27UsdImaging_DrawModeStrategyEbE6_EntryENS4_6TfHashESt8equal_toIS5_ENS1_13tbb_allocatorISt4pairIKS5_S9_EEELb0EEEE12destroy_nodeEPNS1_9list_nodeImEE.exit.i.i: ; preds = %54, %49 + invoke void @_ZN3tbb6detail2r117deallocate_memoryEPv(ptr noundef nonnull %48) + to label %56 unwind label %68 -57: ; preds = %.noexc12, %_ZN3tbb6detail2d125concurrent_unordered_baseINS1_31concurrent_unordered_map_traitsIN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS4_33UsdImaging_ResolvedAttributeCacheINS4_27UsdImaging_DrawModeStrategyEbE6_EntryENS4_6TfHashESt8equal_toIS5_ENS1_13tbb_allocatorISt4pairIKS5_S9_EEELb0EEEE12destroy_nodeEPNS1_9list_nodeImEE.exit.i.i - %58 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %59 = load ptr, ptr %58, align 8, !noalias !511 +56: ; preds = %.noexc12, %_ZN3tbb6detail2d125concurrent_unordered_baseINS1_31concurrent_unordered_map_traitsIN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS4_33UsdImaging_ResolvedAttributeCacheINS4_27UsdImaging_DrawModeStrategyEbE6_EntryENS4_6TfHashESt8equal_toIS5_ENS1_13tbb_allocatorISt4pairIKS5_S9_EEELb0EEEE12destroy_nodeEPNS1_9list_nodeImEE.exit.i.i + %57 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %58 = load ptr, ptr %57, align 8, !noalias !511 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3), !noalias !508 call void @_ZNSt4pairIKN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS0_33UsdImaging_ResolvedAttributeCacheINS0_27UsdImaging_DrawModeStrategyEbE6_EntryEED2Ev(ptr noundef nonnull align 8 dereferenceable(168) %6) #30 - %60 = load ptr, ptr %36, align 8 - %61 = ptrtoint ptr %60 to i64 - %62 = and i64 %61, 7 - %.not.i.i.i14 = icmp eq i64 %62, 0 - br i1 %.not.i.i.i14, label %_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryD2Ev.exit, label %63 + %59 = load ptr, ptr %35, align 8 + %60 = ptrtoint ptr %59 to i64 + %61 = and i64 %60, 7 + %.not.i.i.i14 = icmp eq i64 %61, 0 + br i1 %.not.i.i.i14, label %_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryD2Ev.exit, label %62 -63: ; preds = %57 - %64 = and i64 %61, -8 - %65 = inttoptr i64 %64 to ptr - %66 = atomicrmw sub ptr %65, i32 2 release, align 4 +62: ; preds = %56 + %63 = and i64 %60, -8 + %64 = inttoptr i64 %63 to ptr + %65 = atomicrmw sub ptr %64, i32 2 release, align 4 br label %_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryD2Ev.exit -_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryD2Ev.exit: ; preds = %57, %63 +_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryD2Ev.exit: ; preds = %56, %62 call void @_ZN32pxrInternal_v0_24__pxrReserved__17UsdAttributeQueryD2Ev(ptr noundef nonnull align 8 dereferenceable(132) %4) #30 - br label %79 + br label %78 -67: ; preds = %15, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, %8 - %68 = landingpad { ptr, i32 } +66: ; preds = %15, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, %8 + %67 = landingpad { ptr, i32 } cleanup br label %.body -69: ; preds = %_ZN3tbb6detail2d125concurrent_unordered_baseINS1_31concurrent_unordered_map_traitsIN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS4_33UsdImaging_ResolvedAttributeCacheINS4_27UsdImaging_DrawModeStrategyEbE6_EntryENS4_6TfHashESt8equal_toIS5_ENS1_13tbb_allocatorISt4pairIKS5_S9_EEELb0EEEE12destroy_nodeEPNS1_9list_nodeImEE.exit.i.i, %48 - %70 = landingpad { ptr, i32 } +68: ; preds = %_ZN3tbb6detail2d125concurrent_unordered_baseINS1_31concurrent_unordered_map_traitsIN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS4_33UsdImaging_ResolvedAttributeCacheINS4_27UsdImaging_DrawModeStrategyEbE6_EntryENS4_6TfHashESt8equal_toIS5_ENS1_13tbb_allocatorISt4pairIKS5_S9_EEELb0EEEE12destroy_nodeEPNS1_9list_nodeImEE.exit.i.i, %47 + %69 = landingpad { ptr, i32 } cleanup call void @_ZNSt4pairIKN32pxrInternal_v0_24__pxrReserved__7UsdPrimENS0_33UsdImaging_ResolvedAttributeCacheINS0_27UsdImaging_DrawModeStrategyEbE6_EntryEED2Ev(ptr noundef nonnull align 8 dereferenceable(168) %6) #30 br label %.body -.body: ; preds = %67, %17, %69 - %.pn = phi { ptr, i32 } [ %70, %69 ], [ %68, %67 ], [ %18, %17 ] - %71 = getelementptr inbounds nuw i8, ptr %4, i64 120 - %72 = load ptr, ptr %71, align 8 - %73 = ptrtoint ptr %72 to i64 - %74 = and i64 %73, 7 - %.not.i.i.i15 = icmp eq i64 %74, 0 - br i1 %.not.i.i.i15, label %_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryD2Ev.exit16, label %75 +.body: ; preds = %66, %17, %68 + %.pn = phi { ptr, i32 } [ %69, %68 ], [ %67, %66 ], [ %18, %17 ] + %70 = getelementptr inbounds nuw i8, ptr %4, i64 120 + %71 = load ptr, ptr %70, align 8 + %72 = ptrtoint ptr %71 to i64 + %73 = and i64 %72, 7 + %.not.i.i.i15 = icmp eq i64 %73, 0 + br i1 %.not.i.i.i15, label %_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryD2Ev.exit16, label %74 -75: ; preds = %.body - %76 = and i64 %73, -8 - %77 = inttoptr i64 %76 to ptr - %78 = atomicrmw sub ptr %77, i32 2 release, align 4 +74: ; preds = %.body + %75 = and i64 %72, -8 + %76 = inttoptr i64 %75 to ptr + %77 = atomicrmw sub ptr %76, i32 2 release, align 4 br label %_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryD2Ev.exit16 -_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryD2Ev.exit16: ; preds = %.body, %75 +_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryD2Ev.exit16: ; preds = %.body, %74 call void @_ZN32pxrInternal_v0_24__pxrReserved__17UsdAttributeQueryD2Ev(ptr noundef nonnull align 8 dereferenceable(132) %4) #30 resume { ptr, i32 } %.pn -79: ; preds = %2, %_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryD2Ev.exit - %.pn21 = phi ptr [ %59, %_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryD2Ev.exit ], [ %7, %2 ] +78: ; preds = %2, %_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryD2Ev.exit + %.pn21 = phi ptr [ %58, %_ZN32pxrInternal_v0_24__pxrReserved__33UsdImaging_ResolvedAttributeCacheINS_27UsdImaging_DrawModeStrategyEbE6_EntryD2Ev.exit ], [ %7, %2 ] %.07 = getelementptr inbounds nuw i8, ptr %.pn21, i64 48 ret ptr %.07 } diff --git a/bench/openusd/optimized/mesh.cpp.ll b/bench/openusd/optimized/mesh.cpp.ll index 8293923b640..5e950c1b6f1 100644 --- a/bench/openusd/optimized/mesh.cpp.ll +++ b/bench/openusd/optimized/mesh.cpp.ll @@ -1936,7 +1936,7 @@ define linkonce_odr void @_ZNSt5arrayIN32pxrInternal_v0_24__pxrReserved__14HdMes 5: ; preds = %2 %6 = invoke noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #17 - to label %.noexc unwind label %52 + to label %.noexc unwind label %49 .noexc: ; preds = %5 invoke void @_ZN32pxrInternal_v0_24__pxrReserved__36HdMeshReprDescTokens_StaticTokenTypeC1Ev(ptr noundef nonnull align 8 dereferenceable(80) %6) @@ -1977,101 +1977,97 @@ _ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit.thread: ; preds = %_Z br label %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescC2ENS_15HdMeshGeomStyleENS_11HdCullStyleENS_7TfTokenEbbbbfbb.exit _ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__12TfStaticDataINS_36HdMeshReprDescTokens_StaticTokenTypeENS_27Tf_StaticDataDefaultFactoryIS1_EEEptEv.exit - %20 = inttoptr i64 %16 to ptr - %21 = and i64 %16, -8 - %22 = inttoptr i64 %21 to ptr - %23 = atomicrmw add ptr %22, i32 2 monotonic, align 4 - %24 = and i32 %23, 1 - %.not1.i.i = icmp eq i32 %24, 0 - %spec.select = select i1 %.not1.i.i, ptr %22, ptr %20 - %25 = ptrtoint ptr %spec.select to i64 - %.pre = and i64 %25, 7 - %26 = icmp eq i64 %.pre, 0 + %20 = and i64 %16, -8 + %21 = inttoptr i64 %20 to ptr + %22 = atomicrmw add ptr %21, i32 2 monotonic, align 4 + %23 = and i32 %22, 1 + %.not1.i.i = icmp eq i32 %23, 0 + %24 = select i1 %.not1.i.i, i64 %20, i64 %16 + %.pre = and i64 %24, 7 + %25 = icmp eq i64 %.pre, 0 store i32 0, ptr %.ptr, align 8 - %27 = getelementptr inbounds nuw i8, ptr %.ptr, i64 4 - store i32 0, ptr %27, align 4 - %28 = getelementptr inbounds nuw i8, ptr %.ptr, i64 8 - store i64 %25, ptr %28, align 8 - br i1 %26, label %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescC2ENS_15HdMeshGeomStyleENS_11HdCullStyleENS_7TfTokenEbbbbfbb.exit, label %29 - -29: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit - %30 = and i64 %25, -8 - %31 = inttoptr i64 %30 to ptr - %32 = atomicrmw add ptr %31, i32 2 monotonic, align 4 - %33 = and i32 %32, 1 - %.not1.i.i.i = icmp eq i32 %33, 0 - br i1 %.not1.i.i.i, label %34, label %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescC2ENS_15HdMeshGeomStyleENS_11HdCullStyleENS_7TfTokenEbbbbfbb.exit - -34: ; preds = %29 - %35 = load ptr, ptr %28, align 8 - %36 = ptrtoint ptr %35 to i64 - %37 = and i64 %36, -8 - %38 = inttoptr i64 %37 to ptr - store ptr %38, ptr %28, align 8 + %26 = getelementptr inbounds nuw i8, ptr %.ptr, i64 4 + store i32 0, ptr %26, align 4 + %27 = getelementptr inbounds nuw i8, ptr %.ptr, i64 8 + store i64 %24, ptr %27, align 8 + br i1 %25, label %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescC2ENS_15HdMeshGeomStyleENS_11HdCullStyleENS_7TfTokenEbbbbfbb.exit, label %28 + +28: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit + %29 = inttoptr i64 %20 to ptr + %30 = atomicrmw add ptr %29, i32 2 monotonic, align 4 + %31 = and i32 %30, 1 + %.not1.i.i.i = icmp eq i32 %31, 0 + br i1 %.not1.i.i.i, label %32, label %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescC2ENS_15HdMeshGeomStyleENS_11HdCullStyleENS_7TfTokenEbbbbfbb.exit + +32: ; preds = %28 + %33 = load ptr, ptr %27, align 8 + %34 = ptrtoint ptr %33 to i64 + %35 = and i64 %34, -8 + %36 = inttoptr i64 %35 to ptr + store ptr %36, ptr %27, align 8 br label %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescC2ENS_15HdMeshGeomStyleENS_11HdCullStyleENS_7TfTokenEbbbbfbb.exit -_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescC2ENS_15HdMeshGeomStyleENS_11HdCullStyleENS_7TfTokenEbbbbfbb.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit.thread, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit, %29, %34 - %.sroa.0.023 = phi i64 [ %16, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit.thread ], [ %25, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit ], [ %25, %29 ], [ %25, %34 ] - %.pre-phi22 = phi i1 [ true, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit.thread ], [ true, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit ], [ false, %29 ], [ false, %34 ] - %39 = getelementptr inbounds nuw i8, ptr %.ptr, i64 16 - store i8 0, ptr %39, align 8 - %40 = getelementptr inbounds nuw i8, ptr %.ptr, i64 17 - store i8 1, ptr %40, align 1 - %41 = getelementptr inbounds nuw i8, ptr %.ptr, i64 18 - store i8 1, ptr %41, align 2 - %42 = getelementptr inbounds nuw i8, ptr %.ptr, i64 19 - store i8 0, ptr %42, align 1 - %43 = getelementptr inbounds nuw i8, ptr %.ptr, i64 20 - store float 0.000000e+00, ptr %43, align 4 - %44 = getelementptr inbounds nuw i8, ptr %.ptr, i64 24 - store i8 1, ptr %44, align 8 - %45 = getelementptr inbounds nuw i8, ptr %.ptr, i64 25 - store i8 1, ptr %45, align 1 - br i1 %.pre-phi22, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, label %46 - -46: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescC2ENS_15HdMeshGeomStyleENS_11HdCullStyleENS_7TfTokenEbbbbfbb.exit - %47 = and i64 %.sroa.0.023, -8 - %48 = inttoptr i64 %47 to ptr - %49 = atomicrmw sub ptr %48, i32 2 release, align 4 +_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescC2ENS_15HdMeshGeomStyleENS_11HdCullStyleENS_7TfTokenEbbbbfbb.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit.thread, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit, %28, %32 + %.sroa.0.023 = phi i64 [ %16, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit.thread ], [ %20, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit ], [ %20, %28 ], [ %20, %32 ] + %.pre-phi22 = phi i1 [ true, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit.thread ], [ true, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit ], [ false, %28 ], [ false, %32 ] + %37 = getelementptr inbounds nuw i8, ptr %.ptr, i64 16 + store i8 0, ptr %37, align 8 + %38 = getelementptr inbounds nuw i8, ptr %.ptr, i64 17 + store i8 1, ptr %38, align 1 + %39 = getelementptr inbounds nuw i8, ptr %.ptr, i64 18 + store i8 1, ptr %39, align 2 + %40 = getelementptr inbounds nuw i8, ptr %.ptr, i64 19 + store i8 0, ptr %40, align 1 + %41 = getelementptr inbounds nuw i8, ptr %.ptr, i64 20 + store float 0.000000e+00, ptr %41, align 4 + %42 = getelementptr inbounds nuw i8, ptr %.ptr, i64 24 + store i8 1, ptr %42, align 8 + %43 = getelementptr inbounds nuw i8, ptr %.ptr, i64 25 + store i8 1, ptr %43, align 1 + br i1 %.pre-phi22, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, label %44 + +44: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescC2ENS_15HdMeshGeomStyleENS_11HdCullStyleENS_7TfTokenEbbbbfbb.exit + %45 = inttoptr i64 %.sroa.0.023 to ptr + %46 = atomicrmw sub ptr %45, i32 2 release, align 4 br label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit -_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescC2ENS_15HdMeshGeomStyleENS_11HdCullStyleENS_7TfTokenEbbbbfbb.exit, %46 +_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescC2ENS_15HdMeshGeomStyleENS_11HdCullStyleENS_7TfTokenEbbbbfbb.exit, %44 %.add = add nuw nsw i64 %.idx, 32 - %50 = icmp eq i64 %.add, 64 - br i1 %50, label %51, label %2 + %47 = icmp eq i64 %.add, 64 + br i1 %47, label %48, label %2 -51: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit +48: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit ret void -52: ; preds = %5 - %53 = landingpad { ptr, i32 } +49: ; preds = %5 + %50 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %7, %52 - %eh.lpad-body = phi { ptr, i32 } [ %53, %52 ], [ %8, %7 ] - %54 = icmp eq i64 %.idx, 0 - br i1 %54, label %.loopexit, label %.preheader +.body: ; preds = %7, %49 + %eh.lpad-body = phi { ptr, i32 } [ %50, %49 ], [ %8, %7 ] + %51 = icmp eq i64 %.idx, 0 + br i1 %51, label %.loopexit, label %.preheader .preheader: ; preds = %.body, %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescD2Ev.exit - %55 = phi ptr [ %56, %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescD2Ev.exit ], [ %.ptr, %.body ] - %56 = getelementptr inbounds i8, ptr %55, i64 -32 - %57 = getelementptr inbounds i8, ptr %55, i64 -24 - %58 = load ptr, ptr %57, align 8 - %59 = ptrtoint ptr %58 to i64 - %60 = and i64 %59, 7 - %.not.i.i.i6 = icmp eq i64 %60, 0 - br i1 %.not.i.i.i6, label %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescD2Ev.exit, label %61 - -61: ; preds = %.preheader - %62 = and i64 %59, -8 - %63 = inttoptr i64 %62 to ptr - %64 = atomicrmw sub ptr %63, i32 2 release, align 4 + %52 = phi ptr [ %53, %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescD2Ev.exit ], [ %.ptr, %.body ] + %53 = getelementptr inbounds i8, ptr %52, i64 -32 + %54 = getelementptr inbounds i8, ptr %52, i64 -24 + %55 = load ptr, ptr %54, align 8 + %56 = ptrtoint ptr %55 to i64 + %57 = and i64 %56, 7 + %.not.i.i.i6 = icmp eq i64 %57, 0 + br i1 %.not.i.i.i6, label %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescD2Ev.exit, label %58 + +58: ; preds = %.preheader + %59 = and i64 %56, -8 + %60 = inttoptr i64 %59 to ptr + %61 = atomicrmw sub ptr %60, i32 2 release, align 4 br label %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescD2Ev.exit -_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescD2Ev.exit: ; preds = %.preheader, %61 - %65 = icmp eq ptr %56, %0 - br i1 %65, label %.loopexit, label %.preheader +_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescD2Ev.exit: ; preds = %.preheader, %58 + %62 = icmp eq ptr %53, %0 + br i1 %62, label %.loopexit, label %.preheader .loopexit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__14HdMeshReprDescD2Ev.exit, %.body resume { ptr, i32 } %eh.lpad-body diff --git a/bench/openusd/optimized/schemaRegistry.cpp.ll b/bench/openusd/optimized/schemaRegistry.cpp.ll index ecc31d63c80..5816b102e07 100644 --- a/bench/openusd/optimized/schemaRegistry.cpp.ll +++ b/bench/openusd/optimized/schemaRegistry.cpp.ll @@ -1436,7 +1436,7 @@ _ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit: ; preds _ZN32pxrInternal_v0_24__pxrReserved__L21_FindVersionDelimiterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit: ; preds = %.preheader.i %32 = icmp eq i64 %.0.i, 0 - br i1 %32, label %_ZN32pxrInternal_v0_24__pxrReserved__L21_FindVersionDelimiterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread, label %43 + br i1 %32, label %_ZN32pxrInternal_v0_24__pxrReserved__L21_FindVersionDelimiterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread, label %42 _ZN32pxrInternal_v0_24__pxrReserved__L21_FindVersionDelimiterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread: ; preds = %28, %19, %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit, %_ZN32pxrInternal_v0_24__pxrReserved__L21_FindVersionDelimiterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit %33 = load i64, ptr %1, align 8, !noalias !12 @@ -1445,117 +1445,115 @@ _ZN32pxrInternal_v0_24__pxrReserved__L21_FindVersionDelimiterERKNSt7__cxx1112bas br i1 %.not.i.i.i.i, label %_ZNSt4pairIN32pxrInternal_v0_24__pxrReserved__7TfTokenEiED2Ev.exit, label %35 35: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__L21_FindVersionDelimiterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread - %36 = inttoptr i64 %33 to ptr - %37 = and i64 %33, -8 - %38 = inttoptr i64 %37 to ptr - %39 = atomicrmw add ptr %38, i32 2 monotonic, align 4, !noalias !12 - %40 = and i32 %39, 1 - %.not1.i.i.i.i = icmp eq i32 %40, 0 - %spec.select = select i1 %.not1.i.i.i.i, ptr %38, ptr %36 - %41 = ptrtoint ptr %spec.select to i64 + %36 = and i64 %33, -8 + %37 = inttoptr i64 %36 to ptr + %38 = atomicrmw add ptr %37, i32 2 monotonic, align 4, !noalias !12 + %39 = and i32 %38, 1 + %.not1.i.i.i.i = icmp eq i32 %39, 0 + %40 = select i1 %.not1.i.i.i.i, i64 %36, i64 %33 br label %_ZNSt4pairIN32pxrInternal_v0_24__pxrReserved__7TfTokenEiED2Ev.exit _ZNSt4pairIN32pxrInternal_v0_24__pxrReserved__7TfTokenEiED2Ev.exit: ; preds = %35, %_ZN32pxrInternal_v0_24__pxrReserved__L21_FindVersionDelimiterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread - %.sroa.0.0 = phi i64 [ %33, %_ZN32pxrInternal_v0_24__pxrReserved__L21_FindVersionDelimiterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread ], [ %41, %35 ] + %.sroa.0.0 = phi i64 [ %33, %_ZN32pxrInternal_v0_24__pxrReserved__L21_FindVersionDelimiterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread ], [ %40, %35 ] store i64 %.sroa.0.0, ptr %0, align 8 - %42 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 0, ptr %42, align 8 - br label %74 + %41 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 0, ptr %41, align 8 + br label %73 -43: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__L21_FindVersionDelimiterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit +42: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__L21_FindVersionDelimiterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(32) %16, i64 noundef 0, i64 noundef %24) invoke void @_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(32) %6) - to label %44 unwind label %60 + to label %43 unwind label %59 -44: ; preds = %43 +43: ; preds = %42 invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %16, i64 noundef %.0.i, i64 noundef -1) - to label %45 unwind label %62 + to label %44 unwind label %61 -45: ; preds = %44 +44: ; preds = %43 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %4) store i32 0, ptr %3, align 4 invoke void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(120) %4, ptr noundef nonnull align 8 dereferenceable(32) %7, i32 noundef 8) - to label %.noexc unwind label %64 + to label %.noexc unwind label %63 -.noexc: ; preds = %45 - %46 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERj(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 4 dereferenceable(4) %3) - to label %49 unwind label %47 +.noexc: ; preds = %44 + %45 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERj(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 4 dereferenceable(4) %3) + to label %48 unwind label %46 -47: ; preds = %.noexc - %48 = landingpad { ptr, i32 } +46: ; preds = %.noexc + %47 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(120) %4) #21 br label %.body -49: ; preds = %.noexc - %50 = load i32, ptr %3, align 4 +48: ; preds = %.noexc + %49 = load i32, ptr %3, align 4 call void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(120) %4) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %4) call void @llvm.experimental.noalias.scope.decl(metadata !15) - %51 = load i64, ptr %5, align 8, !noalias !15 - store i64 %51, ptr %0, align 8, !alias.scope !15 + %50 = load i64, ptr %5, align 8, !noalias !15 + store i64 %50, ptr %0, align 8, !alias.scope !15 store i64 0, ptr %5, align 8, !noalias !15 - %52 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %50, ptr %52, align 8, !alias.scope !15 + %51 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %49, ptr %51, align 8, !alias.scope !15 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #21 - %53 = load ptr, ptr %5, align 8 - %54 = ptrtoint ptr %53 to i64 - %55 = and i64 %54, 7 - %.not.i.i = icmp eq i64 %55, 0 - br i1 %.not.i.i, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, label %56 - -56: ; preds = %49 - %57 = and i64 %54, -8 - %58 = inttoptr i64 %57 to ptr - %59 = atomicrmw sub ptr %58, i32 2 release, align 4 + %52 = load ptr, ptr %5, align 8 + %53 = ptrtoint ptr %52 to i64 + %54 = and i64 %53, 7 + %.not.i.i = icmp eq i64 %54, 0 + br i1 %.not.i.i, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, label %55 + +55: ; preds = %48 + %56 = and i64 %53, -8 + %57 = inttoptr i64 %56 to ptr + %58 = atomicrmw sub ptr %57, i32 2 release, align 4 br label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit -_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit: ; preds = %49, %56 +_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit: ; preds = %48, %55 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #21 - br label %74 + br label %73 -60: ; preds = %43 - %61 = landingpad { ptr, i32 } +59: ; preds = %42 + %60 = landingpad { ptr, i32 } cleanup br label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit15 -62: ; preds = %44 - %63 = landingpad { ptr, i32 } +61: ; preds = %43 + %62 = landingpad { ptr, i32 } cleanup - br label %66 + br label %65 -64: ; preds = %45 - %65 = landingpad { ptr, i32 } +63: ; preds = %44 + %64 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %47, %64 - %eh.lpad-body = phi { ptr, i32 } [ %65, %64 ], [ %48, %47 ] +.body: ; preds = %46, %63 + %eh.lpad-body = phi { ptr, i32 } [ %64, %63 ], [ %47, %46 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #21 - br label %66 + br label %65 -66: ; preds = %.body, %62 - %.pn = phi { ptr, i32 } [ %eh.lpad-body, %.body ], [ %63, %62 ] - %67 = load ptr, ptr %5, align 8 - %68 = ptrtoint ptr %67 to i64 - %69 = and i64 %68, 7 - %.not.i.i14 = icmp eq i64 %69, 0 - br i1 %.not.i.i14, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit15, label %70 +65: ; preds = %.body, %61 + %.pn = phi { ptr, i32 } [ %eh.lpad-body, %.body ], [ %62, %61 ] + %66 = load ptr, ptr %5, align 8 + %67 = ptrtoint ptr %66 to i64 + %68 = and i64 %67, 7 + %.not.i.i14 = icmp eq i64 %68, 0 + br i1 %.not.i.i14, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit15, label %69 -70: ; preds = %66 - %71 = and i64 %68, -8 - %72 = inttoptr i64 %71 to ptr - %73 = atomicrmw sub ptr %72, i32 2 release, align 4 +69: ; preds = %65 + %70 = and i64 %67, -8 + %71 = inttoptr i64 %70 to ptr + %72 = atomicrmw sub ptr %71, i32 2 release, align 4 br label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit15 -_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit15: ; preds = %70, %66, %60 - %.pn.pn = phi { ptr, i32 } [ %61, %60 ], [ %.pn, %66 ], [ %.pn, %70 ] +_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit15: ; preds = %69, %65, %59 + %.pn.pn = phi { ptr, i32 } [ %60, %59 ], [ %.pn, %65 ], [ %.pn, %69 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #21 resume { ptr, i32 } %.pn.pn -74: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, %_ZNSt4pairIN32pxrInternal_v0_24__pxrReserved__7TfTokenEiED2Ev.exit +73: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, %_ZNSt4pairIN32pxrInternal_v0_24__pxrReserved__7TfTokenEiED2Ev.exit ret void } diff --git a/bench/openusd/optimized/valueTypeName.cpp.ll b/bench/openusd/optimized/valueTypeName.cpp.ll index a49886748c9..5baccfd6db6 100644 --- a/bench/openusd/optimized/valueTypeName.cpp.ll +++ b/bench/openusd/optimized/valueTypeName.cpp.ll @@ -290,48 +290,46 @@ define noundef zeroext i1 @_ZNK32pxrInternal_v0_24__pxrReserved__16SdfValueTypeN br i1 %.not.i.i, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit, label %8 8: ; preds = %2 - %9 = inttoptr i64 %6 to ptr - %10 = and i64 %6, -8 - %11 = inttoptr i64 %10 to ptr - %12 = atomicrmw add ptr %11, i32 2 monotonic, align 4 - %13 = and i32 %12, 1 - %.not1.i.i = icmp eq i32 %13, 0 - %spec.select = select i1 %.not1.i.i, ptr %11, ptr %9 - %14 = ptrtoint ptr %spec.select to i64 + %9 = and i64 %6, -8 + %10 = inttoptr i64 %9 to ptr + %11 = atomicrmw add ptr %10, i32 2 monotonic, align 4 + %12 = and i32 %11, 1 + %.not1.i.i = icmp eq i32 %12, 0 + %13 = select i1 %.not1.i.i, i64 %9, i64 %6 br label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit _ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit: ; preds = %8, %2 - %.sroa.0.0 = phi i64 [ %6, %2 ], [ %14, %8 ] + %.sroa.0.0 = phi i64 [ %6, %2 ], [ %13, %8 ] %.val = load ptr, ptr %5, align 8 - %15 = getelementptr i8, ptr %4, i64 112 - %.val2 = load ptr, ptr %15, align 8 + %14 = getelementptr i8, ptr %4, i64 112 + %.val2 = load ptr, ptr %14, align 8 %.not.i = icmp eq ptr %.val, %.val2 br i1 %.not.i, label %_ZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_19IsValueInISt6vectorINS_7TfTokenESaIS3_EES3_EEbRKT_T0_.exit, label %.lr.ph.i .lr.ph.i: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit, %.lr.ph.i - %.sroa.03.06.i = phi ptr [ %20, %.lr.ph.i ], [ %.val, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit ] - %16 = load ptr, ptr %.sroa.03.06.i, align 8 - %17 = ptrtoint ptr %16 to i64 - %18 = xor i64 %.sroa.0.0, %17 - %19 = icmp ult i64 %18, 8 - %20 = getelementptr inbounds i8, ptr %.sroa.03.06.i, i64 8 - %.not9.i = icmp eq ptr %20, %.val2 - %or.cond = select i1 %19, i1 true, i1 %.not9.i + %.sroa.03.06.i = phi ptr [ %19, %.lr.ph.i ], [ %.val, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit ] + %15 = load ptr, ptr %.sroa.03.06.i, align 8 + %16 = ptrtoint ptr %15 to i64 + %17 = xor i64 %.sroa.0.0, %16 + %18 = icmp ult i64 %17, 8 + %19 = getelementptr inbounds i8, ptr %.sroa.03.06.i, i64 8 + %.not9.i = icmp eq ptr %19, %.val2 + %or.cond = select i1 %18, i1 true, i1 %.not9.i br i1 %or.cond, label %_ZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_19IsValueInISt6vectorINS_7TfTokenESaIS3_EES3_EEbRKT_T0_.exit, label %.lr.ph.i _ZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_19IsValueInISt6vectorINS_7TfTokenESaIS3_EES3_EEbRKT_T0_.exit: ; preds = %.lr.ph.i, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit - %.lcssa.i = phi i1 [ false, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit ], [ %19, %.lr.ph.i ] - %21 = and i64 %.sroa.0.0, 7 - %.not.i.i4 = icmp eq i64 %21, 0 - br i1 %.not.i.i4, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, label %22 - -22: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_19IsValueInISt6vectorINS_7TfTokenESaIS3_EES3_EEbRKT_T0_.exit - %23 = and i64 %.sroa.0.0, -8 - %24 = inttoptr i64 %23 to ptr - %25 = atomicrmw sub ptr %24, i32 2 release, align 4 + %.lcssa.i = phi i1 [ false, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit ], [ %18, %.lr.ph.i ] + %20 = and i64 %.sroa.0.0, 7 + %.not.i.i4 = icmp eq i64 %20, 0 + br i1 %.not.i.i4, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, label %21 + +21: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_19IsValueInISt6vectorINS_7TfTokenESaIS3_EES3_EEbRKT_T0_.exit + %22 = and i64 %.sroa.0.0, -8 + %23 = inttoptr i64 %22 to ptr + %24 = atomicrmw sub ptr %23, i32 2 release, align 4 br label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit -_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_19IsValueInISt6vectorINS_7TfTokenESaIS3_EES3_EEbRKT_T0_.exit, %22 +_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_19IsValueInISt6vectorINS_7TfTokenESaIS3_EES3_EEbRKT_T0_.exit, %21 ret i1 %.lcssa.i } @@ -449,63 +447,61 @@ define noundef nonnull align 8 dereferenceable(8) ptr @_ZN32pxrInternal_v0_24__p br i1 %.not.i.i.i, label %_ZNK32pxrInternal_v0_24__pxrReserved__16SdfValueTypeName10GetAsTokenEv.exit, label %7 7: ; preds = %2 - %8 = inttoptr i64 %5 to ptr - %9 = and i64 %5, -8 - %10 = inttoptr i64 %9 to ptr - %11 = atomicrmw add ptr %10, i32 2 monotonic, align 4, !noalias !6 - %12 = and i32 %11, 1 - %.not1.i.i.i = icmp eq i32 %12, 0 - %spec.select = select i1 %.not1.i.i.i, ptr %10, ptr %8 - %13 = ptrtoint ptr %spec.select to i64 + %8 = and i64 %5, -8 + %9 = inttoptr i64 %8 to ptr + %10 = atomicrmw add ptr %9, i32 2 monotonic, align 4, !noalias !6 + %11 = and i32 %10, 1 + %.not1.i.i.i = icmp eq i32 %11, 0 + %12 = select i1 %.not1.i.i.i, i64 %8, i64 %5 br label %_ZNK32pxrInternal_v0_24__pxrReserved__16SdfValueTypeName10GetAsTokenEv.exit _ZNK32pxrInternal_v0_24__pxrReserved__16SdfValueTypeName10GetAsTokenEv.exit: ; preds = %7, %2 - %.sroa.0.0 = phi i64 [ %5, %2 ], [ %13, %7 ] - %14 = and i64 %.sroa.0.0, -8 - %.not.i = icmp eq i64 %14, 0 - br i1 %.not.i, label %18, label %15 - -15: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__16SdfValueTypeName10GetAsTokenEv.exit - %16 = inttoptr i64 %14 to ptr - %17 = getelementptr inbounds nuw i8, ptr %16, i64 16 + %.sroa.0.0 = phi i64 [ %5, %2 ], [ %12, %7 ] + %13 = and i64 %.sroa.0.0, -8 + %.not.i = icmp eq i64 %13, 0 + br i1 %.not.i, label %17, label %14 + +14: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__16SdfValueTypeName10GetAsTokenEv.exit + %15 = inttoptr i64 %13 to ptr + %16 = getelementptr inbounds nuw i8, ptr %15, i64 16 br label %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit -18: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__16SdfValueTypeName10GetAsTokenEv.exit - %19 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN32pxrInternal_v0_24__pxrReserved__7TfToken15_GetEmptyStringB5cxx11Ev() - to label %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit unwind label %27 +17: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__16SdfValueTypeName10GetAsTokenEv.exit + %18 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN32pxrInternal_v0_24__pxrReserved__7TfToken15_GetEmptyStringB5cxx11Ev() + to label %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit unwind label %26 -_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit: ; preds = %15, %18 - %20 = phi ptr [ %17, %15 ], [ %19, %18 ] - %21 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(32) %20) - to label %22 unwind label %27 +_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit: ; preds = %14, %17 + %19 = phi ptr [ %16, %14 ], [ %18, %17 ] + %20 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(32) %19) + to label %21 unwind label %26 -22: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit - %23 = and i64 %.sroa.0.0, 7 - %.not.i.i = icmp eq i64 %23, 0 - br i1 %.not.i.i, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, label %24 +21: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit + %22 = and i64 %.sroa.0.0, 7 + %.not.i.i = icmp eq i64 %22, 0 + br i1 %.not.i.i, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, label %23 -24: ; preds = %22 - %25 = inttoptr i64 %14 to ptr - %26 = atomicrmw sub ptr %25, i32 2 release, align 4 +23: ; preds = %21 + %24 = inttoptr i64 %13 to ptr + %25 = atomicrmw sub ptr %24, i32 2 release, align 4 br label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit -_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit: ; preds = %22, %24 - ret ptr %21 +_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit: ; preds = %21, %23 + ret ptr %20 -27: ; preds = %18, %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit - %28 = landingpad { ptr, i32 } +26: ; preds = %17, %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit + %27 = landingpad { ptr, i32 } cleanup - %29 = and i64 %.sroa.0.0, 7 - %.not.i.i3 = icmp eq i64 %29, 0 - br i1 %.not.i.i3, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit4, label %30 + %28 = and i64 %.sroa.0.0, 7 + %.not.i.i3 = icmp eq i64 %28, 0 + br i1 %.not.i.i3, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit4, label %29 -30: ; preds = %27 - %31 = inttoptr i64 %14 to ptr - %32 = atomicrmw sub ptr %31, i32 2 release, align 4 +29: ; preds = %26 + %30 = inttoptr i64 %13 to ptr + %31 = atomicrmw sub ptr %30, i32 2 release, align 4 br label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit4 -_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit4: ; preds = %27, %30 - resume { ptr, i32 } %28 +_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit4: ; preds = %26, %29 + resume { ptr, i32 } %27 } declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 diff --git a/bench/openusd/optimized/variableExpressionImpl.cpp.ll b/bench/openusd/optimized/variableExpressionImpl.cpp.ll index 999dc5f9f12..273bbfb85ec 100644 --- a/bench/openusd/optimized/variableExpressionImpl.cpp.ll +++ b/bench/openusd/optimized/variableExpressionImpl.cpp.ll @@ -19782,7 +19782,7 @@ define weak_odr void @_ZNK32pxrInternal_v0_24__pxrReserved__26Sdf_VariableExpres cleanup br label %188 -40: ; preds = %122, %108, %99, %89, %79, %52, %31, %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIbEEbv.exit.thread +40: ; preds = %121, %108, %99, %89, %79, %52, %31, %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIbEEbv.exit.thread %41 = landingpad { ptr, i32 } cleanup br label %157 @@ -19960,25 +19960,25 @@ _ZNKR32pxrInternal_v0_24__pxrReserved__7VtValue12UncheckedGetIbEERKT_v.exit33: ; %114 = load i8, ptr %.0.i.i27, align 1 %115 = trunc i8 %114 to i1 %116 = load i8, ptr %.0.i.i31, align 1 - %117 = and i8 %116, 1 - %118 = load ptr, ptr %10, align 8 - %119 = ptrtoint ptr %118 to i64 - %.not.i.i34 = icmp eq ptr %118, null - %120 = and i64 %119, 3 - %121 = icmp eq i64 %120, 3 - %or.cond.i.i35 = or i1 %.not.i.i34, %121 - br i1 %or.cond.i.i35, label %_ZN32pxrInternal_v0_24__pxrReserved__7VtValueaSIbEENSt9enable_ifIXaasr12_TypeInfoForIT_E4TypeE7IsLocalsr12_TypeInfoForIS3_E4TypeE14HasTrivialCopyERS0_E4typeES3_.exit37, label %122 - -122: ; preds = %_ZNKR32pxrInternal_v0_24__pxrReserved__7VtValue12UncheckedGetIbEERKT_v.exit33 - %123 = and i64 %119, -8 - %124 = inttoptr i64 %123 to ptr - %125 = getelementptr inbounds nuw i8, ptr %124, i64 32 - %126 = load ptr, ptr %125, align 8 - invoke void %126(ptr noundef nonnull align 8 dereferenceable(16) %4) + %117 = load ptr, ptr %10, align 8 + %118 = ptrtoint ptr %117 to i64 + %.not.i.i34 = icmp eq ptr %117, null + %119 = and i64 %118, 3 + %120 = icmp eq i64 %119, 3 + %or.cond.i.i35 = or i1 %.not.i.i34, %120 + br i1 %or.cond.i.i35, label %_ZN32pxrInternal_v0_24__pxrReserved__7VtValueaSIbEENSt9enable_ifIXaasr12_TypeInfoForIT_E4TypeE7IsLocalsr12_TypeInfoForIS3_E4TypeE14HasTrivialCopyERS0_E4typeES3_.exit37, label %121 + +121: ; preds = %_ZNKR32pxrInternal_v0_24__pxrReserved__7VtValue12UncheckedGetIbEERKT_v.exit33 + %122 = and i64 %118, -8 + %123 = inttoptr i64 %122 to ptr + %124 = getelementptr inbounds nuw i8, ptr %123, i64 32 + %125 = load ptr, ptr %124, align 8 + invoke void %125(ptr noundef nonnull align 8 dereferenceable(16) %4) to label %_ZN32pxrInternal_v0_24__pxrReserved__7VtValueaSIbEENSt9enable_ifIXaasr12_TypeInfoForIT_E4TypeE7IsLocalsr12_TypeInfoForIS3_E4TypeE14HasTrivialCopyERS0_E4typeES3_.exit37 unwind label %40 -_ZN32pxrInternal_v0_24__pxrReserved__7VtValueaSIbEENSt9enable_ifIXaasr12_TypeInfoForIT_E4TypeE7IsLocalsr12_TypeInfoForIS3_E4TypeE14HasTrivialCopyERS0_E4typeES3_.exit37: ; preds = %122, %_ZNKR32pxrInternal_v0_24__pxrReserved__7VtValue12UncheckedGetIbEERKT_v.exit33 - %127 = select i1 %115, i8 %117, i8 0 +_ZN32pxrInternal_v0_24__pxrReserved__7VtValueaSIbEENSt9enable_ifIXaasr12_TypeInfoForIT_E4TypeE7IsLocalsr12_TypeInfoForIS3_E4TypeE14HasTrivialCopyERS0_E4typeES3_.exit37: ; preds = %121, %_ZNKR32pxrInternal_v0_24__pxrReserved__7VtValue12UncheckedGetIbEERKT_v.exit33 + %126 = and i8 %116, 1 + %127 = select i1 %115, i8 %126, i8 0 store ptr %20, ptr %10, align 8 store i8 %127, ptr %4, align 8 br label %_ZN32pxrInternal_v0_24__pxrReserved__26Sdf_VariableExpressionImplL14_CollectErrorsEPSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEPNS0_10EvalResultE.exit.thread @@ -20256,7 +20256,7 @@ define weak_odr void @_ZNK32pxrInternal_v0_24__pxrReserved__26Sdf_VariableExpres cleanup br label %188 -40: ; preds = %122, %108, %99, %89, %79, %52, %31, %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIbEEbv.exit.thread +40: ; preds = %121, %108, %99, %89, %79, %52, %31, %_ZNK32pxrInternal_v0_24__pxrReserved__7VtValue9IsHoldingIbEEbv.exit.thread %41 = landingpad { ptr, i32 } cleanup br label %157 @@ -20434,25 +20434,25 @@ _ZNKR32pxrInternal_v0_24__pxrReserved__7VtValue12UncheckedGetIbEERKT_v.exit33: ; %114 = load i8, ptr %.0.i.i27, align 1 %115 = trunc i8 %114 to i1 %116 = load i8, ptr %.0.i.i31, align 1 - %117 = and i8 %116, 1 - %118 = load ptr, ptr %10, align 8 - %119 = ptrtoint ptr %118 to i64 - %.not.i.i34 = icmp eq ptr %118, null - %120 = and i64 %119, 3 - %121 = icmp eq i64 %120, 3 - %or.cond.i.i35 = or i1 %.not.i.i34, %121 - br i1 %or.cond.i.i35, label %_ZN32pxrInternal_v0_24__pxrReserved__7VtValueaSIbEENSt9enable_ifIXaasr12_TypeInfoForIT_E4TypeE7IsLocalsr12_TypeInfoForIS3_E4TypeE14HasTrivialCopyERS0_E4typeES3_.exit37, label %122 - -122: ; preds = %_ZNKR32pxrInternal_v0_24__pxrReserved__7VtValue12UncheckedGetIbEERKT_v.exit33 - %123 = and i64 %119, -8 - %124 = inttoptr i64 %123 to ptr - %125 = getelementptr inbounds nuw i8, ptr %124, i64 32 - %126 = load ptr, ptr %125, align 8 - invoke void %126(ptr noundef nonnull align 8 dereferenceable(16) %4) + %117 = load ptr, ptr %10, align 8 + %118 = ptrtoint ptr %117 to i64 + %.not.i.i34 = icmp eq ptr %117, null + %119 = and i64 %118, 3 + %120 = icmp eq i64 %119, 3 + %or.cond.i.i35 = or i1 %.not.i.i34, %120 + br i1 %or.cond.i.i35, label %_ZN32pxrInternal_v0_24__pxrReserved__7VtValueaSIbEENSt9enable_ifIXaasr12_TypeInfoForIT_E4TypeE7IsLocalsr12_TypeInfoForIS3_E4TypeE14HasTrivialCopyERS0_E4typeES3_.exit37, label %121 + +121: ; preds = %_ZNKR32pxrInternal_v0_24__pxrReserved__7VtValue12UncheckedGetIbEERKT_v.exit33 + %122 = and i64 %118, -8 + %123 = inttoptr i64 %122 to ptr + %124 = getelementptr inbounds nuw i8, ptr %123, i64 32 + %125 = load ptr, ptr %124, align 8 + invoke void %125(ptr noundef nonnull align 8 dereferenceable(16) %4) to label %_ZN32pxrInternal_v0_24__pxrReserved__7VtValueaSIbEENSt9enable_ifIXaasr12_TypeInfoForIT_E4TypeE7IsLocalsr12_TypeInfoForIS3_E4TypeE14HasTrivialCopyERS0_E4typeES3_.exit37 unwind label %40 -_ZN32pxrInternal_v0_24__pxrReserved__7VtValueaSIbEENSt9enable_ifIXaasr12_TypeInfoForIT_E4TypeE7IsLocalsr12_TypeInfoForIS3_E4TypeE14HasTrivialCopyERS0_E4typeES3_.exit37: ; preds = %122, %_ZNKR32pxrInternal_v0_24__pxrReserved__7VtValue12UncheckedGetIbEERKT_v.exit33 - %127 = select i1 %115, i8 1, i8 %117 +_ZN32pxrInternal_v0_24__pxrReserved__7VtValueaSIbEENSt9enable_ifIXaasr12_TypeInfoForIT_E4TypeE7IsLocalsr12_TypeInfoForIS3_E4TypeE14HasTrivialCopyERS0_E4typeES3_.exit37: ; preds = %121, %_ZNKR32pxrInternal_v0_24__pxrReserved__7VtValue12UncheckedGetIbEERKT_v.exit33 + %126 = and i8 %116, 1 + %127 = select i1 %115, i8 1, i8 %126 store ptr %20, ptr %10, align 8 store i8 %127, ptr %4, align 8 br label %_ZN32pxrInternal_v0_24__pxrReserved__26Sdf_VariableExpressionImplL14_CollectErrorsEPSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEPNS0_10EvalResultE.exit.thread @@ -100534,22 +100534,19 @@ _ZNKR32pxrInternal_v0_24__pxrReserved__7VtValue12UncheckedGetINS_7TfTokenEEERKT_ br i1 %.not.i.i2, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit _ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit: ; preds = %_ZNKR32pxrInternal_v0_24__pxrReserved__7VtValue12UncheckedGetINS_7TfTokenEEERKT_v.exit - %16 = inttoptr i64 %14 to ptr - %17 = and i64 %14, -8 - %18 = inttoptr i64 %17 to ptr - %19 = atomicrmw add ptr %18, i32 2 monotonic, align 4 - %20 = and i32 %19, 1 - %.not1.i.i = icmp eq i32 %20, 0 - %spec.select = select i1 %.not1.i.i, ptr %18, ptr %16 - %21 = ptrtoint ptr %spec.select to i64 - %.pre = and i64 %21, 7 - %22 = icmp eq i64 %.pre, 0 + %16 = and i64 %14, -8 + %17 = inttoptr i64 %16 to ptr + %18 = atomicrmw add ptr %17, i32 2 monotonic, align 4 + %19 = and i32 %18, 1 + %.not1.i.i = icmp eq i32 %19, 0 + %20 = and i64 %14, 7 + %21 = icmp eq i64 %20, 0 + %22 = or i1 %.not1.i.i, %21 br i1 %22, label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit, label %23 23: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit - %24 = and i64 %21, -8 - %25 = inttoptr i64 %24 to ptr - %26 = atomicrmw sub ptr %25, i32 2 release, align 4 + %24 = inttoptr i64 %16 to ptr + %25 = atomicrmw sub ptr %24, i32 2 release, align 4 br label %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit _ZN32pxrInternal_v0_24__pxrReserved__7TfTokenD2Ev.exit: ; preds = %_ZNKR32pxrInternal_v0_24__pxrReserved__7VtValue12UncheckedGetINS_7TfTokenEEERKT_v.exit, %_ZN32pxrInternal_v0_24__pxrReserved__7TfTokenC2ERKS0_.exit, %23 diff --git a/bench/php/optimized/math.ll b/bench/php/optimized/math.ll index aae205fe671..cb2465d226f 100644 --- a/bench/php/optimized/math.ll +++ b/bench/php/optimized/math.ll @@ -3206,7 +3206,7 @@ define ptr @_php_math_number_format_ex(double noundef %0, i32 noundef %1, ptr no %10 = tail call i32 @llvm.smax.i32(i32 %1, i32 0) %11 = tail call ptr (i64, ptr, ...) @zend_strpprintf(i64 noundef 0, ptr noundef nonnull @.str.7, i32 noundef %10, double noundef %9) #15 %12 = icmp eq ptr %11, null - br i1 %12, label %104, label %13 + br i1 %12, label %103, label %13 13: ; preds = %6 %14 = tail call ptr @__ctype_b_loc() #18 @@ -3218,7 +3218,7 @@ define ptr @_php_math_number_format_ex(double noundef %0, i32 noundef %1, ptr no %19 = load i16, ptr %18, align 2 %20 = and i16 %19, 2048 %.not = icmp eq i16 %20, 0 - br i1 %.not, label %104, label %21 + br i1 %.not, label %103, label %21 21: ; preds = %13 %22 = fcmp une double %9, 0.000000e+00 @@ -3303,136 +3303,135 @@ define ptr @_php_math_number_format_ex(double noundef %0, i32 noundef %1, ptr no %55 = getelementptr inbounds i8, ptr %54, i64 %spec.select %56 = getelementptr inbounds i8, ptr %55, i64 -1 store i8 0, ptr %55, align 1 - br i1 %.not214, label %80, label %57 + br i1 %.not214, label %79, label %57 57: ; preds = %44 %.ptr233 = getelementptr inbounds i8, ptr %11, i64 %.add229 %58 = ptrtoint ptr %.ptr233 to i64 %59 = ptrtoint ptr %.0189239 to i64 %60 = sub i64 %58, %59 - %61 = select i1 %.not215241, i64 0, i64 %60 - %62 = zext nneg i32 %10 to i64 - %.not226243.not = icmp ult i64 %61, %62 - br i1 %.not226243.not, label %.lr.ph.preheader, label %._crit_edge + %61 = zext nneg i32 %10 to i64 + %62 = tail call i64 @llvm.usub.sat.i64(i64 %61, i64 %60) + %63 = select i1 %.not215241, i64 %61, i64 %62 + %.not226243 = icmp eq i64 %63, 0 + br i1 %.not226243, label %._crit_edge, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %57 - %63 = sub nuw nsw i64 %62, %61 - %64 = add i64 %spec.select, %61 - %65 = add i64 %64, 24 - %66 = sub i64 %65, %62 - %scevgep = getelementptr i8, ptr %48, i64 %66 + %64 = add i64 %spec.select, 24 + %65 = sub i64 %64, %63 + %scevgep = getelementptr i8, ptr %48, i64 %65 tail call void @llvm.memset.p0.i64(ptr align 1 %scevgep, i8 48, i64 %63, i1 false) - %67 = add i64 %64, 23 - %68 = sub i64 %67, %62 - %scevgep257 = getelementptr i8, ptr %48, i64 %68 + %66 = add i64 %spec.select, 23 + %67 = sub i64 %66, %63 + %scevgep256 = getelementptr i8, ptr %48, i64 %67 br label %._crit_edge ._crit_edge: ; preds = %.lr.ph.preheader, %57 - %.1191.lcssa = phi ptr [ %56, %57 ], [ %scevgep257, %.lr.ph.preheader ] - br i1 %.not215241, label %75, label %69 - -69: ; preds = %._crit_edge - %70 = xor i64 %60, -1 - %.add230 = add nsw i64 %.add229, %70 - %71 = sub i64 0, %60 - %72 = getelementptr inbounds i8, ptr %.1191.lcssa, i64 %71 - %73 = getelementptr inbounds i8, ptr %72, i64 1 - %74 = getelementptr inbounds i8, ptr %.0189239, i64 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %73, ptr nonnull align 1 %74, i64 %60, i1 false) - br label %75 - -75: ; preds = %69, %._crit_edge - %.1193.idx = phi i64 [ %.add230, %69 ], [ %.add229, %._crit_edge ] - %.2 = phi ptr [ %72, %69 ], [ %.1191.lcssa, %._crit_edge ] + %.1191.lcssa = phi ptr [ %56, %57 ], [ %scevgep256, %.lr.ph.preheader ] + br i1 %.not215241, label %74, label %68 + +68: ; preds = %._crit_edge + %69 = xor i64 %60, -1 + %.add230 = add nsw i64 %.add229, %69 + %70 = sub i64 0, %60 + %71 = getelementptr inbounds i8, ptr %.1191.lcssa, i64 %70 + %72 = getelementptr inbounds i8, ptr %71, i64 1 + %73 = getelementptr inbounds i8, ptr %.0189239, i64 1 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %72, ptr nonnull align 1 %73, i64 %60, i1 false) + br label %74 + +74: ; preds = %68, %._crit_edge + %.1193.idx = phi i64 [ %.add230, %68 ], [ %.add229, %._crit_edge ] + %.2 = phi ptr [ %71, %68 ], [ %.1191.lcssa, %._crit_edge ] %.not227 = icmp eq ptr %2, null - br i1 %.not227, label %80, label %76 - -76: ; preds = %75 - %77 = sub i64 0, %3 - %78 = getelementptr inbounds i8, ptr %.2, i64 %77 - %79 = getelementptr inbounds i8, ptr %78, i64 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %79, ptr nonnull align 1 %2, i64 %3, i1 false) - br label %80 - -80: ; preds = %75, %76, %44 - %.0192.idx = phi i64 [ %.1193.idx, %76 ], [ %.1193.idx, %75 ], [ %.add229, %44 ] - %.0190 = phi ptr [ %78, %76 ], [ %.2, %75 ], [ %56, %44 ] + br i1 %.not227, label %79, label %75 + +75: ; preds = %74 + %76 = sub i64 0, %3 + %77 = getelementptr inbounds i8, ptr %.2, i64 %76 + %78 = getelementptr inbounds i8, ptr %77, i64 1 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %78, ptr nonnull align 1 %2, i64 %3, i1 false) + br label %79 + +79: ; preds = %74, %75, %44 + %.0192.idx = phi i64 [ %.1193.idx, %75 ], [ %.1193.idx, %74 ], [ %.add229, %44 ] + %.0190 = phi ptr [ %77, %75 ], [ %.2, %74 ], [ %56, %44 ] %.not228246 = icmp slt i64 %.0192.idx, 24 br i1 %.not228246, label %._crit_edge252, label %.lr.ph251 -.lr.ph251: ; preds = %80 - %81 = sub i64 0, %5 +.lr.ph251: ; preds = %79 + %80 = sub i64 0, %5 br i1 %.not216, label %.lr.ph251.split.us, label %.lr.ph251.split .lr.ph251.split.us: ; preds = %.lr.ph251, %.lr.ph251.split.us - %.3248.us = phi ptr [ %83, %.lr.ph251.split.us ], [ %.0190, %.lr.ph251 ] + %.3248.us = phi ptr [ %82, %.lr.ph251.split.us ], [ %.0190, %.lr.ph251 ] %.2194.idx247.us = phi i64 [ %.2194.add.us, %.lr.ph251.split.us ], [ %.0192.idx, %.lr.ph251 ] %.2194.ptr.us = getelementptr inbounds i8, ptr %11, i64 %.2194.idx247.us %.2194.add.us = add nsw i64 %.2194.idx247.us, -1 - %82 = load i8, ptr %.2194.ptr.us, align 1 - %83 = getelementptr inbounds i8, ptr %.3248.us, i64 -1 - store i8 %82, ptr %.3248.us, align 1 + %81 = load i8, ptr %.2194.ptr.us, align 1 + %82 = getelementptr inbounds i8, ptr %.3248.us, i64 -1 + store i8 %81, ptr %.3248.us, align 1 %.not228.us = icmp samesign ult i64 %.2194.idx247.us, 25 br i1 %.not228.us, label %._crit_edge252, label %.lr.ph251.split.us -.lr.ph251.split: ; preds = %.lr.ph251, %92 - %.0184249 = phi i32 [ %86, %92 ], [ 0, %.lr.ph251 ] - %.3248 = phi ptr [ %.4, %92 ], [ %.0190, %.lr.ph251 ] - %.2194.idx247 = phi i64 [ %.2194.add, %92 ], [ %.0192.idx, %.lr.ph251 ] +.lr.ph251.split: ; preds = %.lr.ph251, %91 + %.0184249 = phi i32 [ %85, %91 ], [ 0, %.lr.ph251 ] + %.3248 = phi ptr [ %.4, %91 ], [ %.0190, %.lr.ph251 ] + %.2194.idx247 = phi i64 [ %.2194.add, %91 ], [ %.0192.idx, %.lr.ph251 ] %.2194.ptr = getelementptr inbounds i8, ptr %11, i64 %.2194.idx247 %.2194.add = add nsw i64 %.2194.idx247, -1 - %84 = load i8, ptr %.2194.ptr, align 1 - %85 = getelementptr inbounds i8, ptr %.3248, i64 -1 - store i8 %84, ptr %.3248, align 1 - %86 = add nuw nsw i32 %.0184249, 1 - %87 = urem i32 %86, 3 - %88 = icmp ne i32 %87, 0 + %83 = load i8, ptr %.2194.ptr, align 1 + %84 = getelementptr inbounds i8, ptr %.3248, i64 -1 + store i8 %83, ptr %.3248, align 1 + %85 = add nuw nsw i32 %.0184249, 1 + %86 = urem i32 %85, 3 + %87 = icmp ne i32 %86, 0 %.not236 = icmp eq i64 %.2194.idx247, 24 - %or.cond = or i1 %.not236, %88 - br i1 %or.cond, label %92, label %89 + %or.cond = or i1 %.not236, %87 + br i1 %or.cond, label %91, label %88 -89: ; preds = %.lr.ph251.split - %90 = getelementptr inbounds i8, ptr %85, i64 %81 - %91 = getelementptr inbounds i8, ptr %90, i64 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %91, ptr nonnull align 1 %4, i64 %5, i1 false) - br label %92 +88: ; preds = %.lr.ph251.split + %89 = getelementptr inbounds i8, ptr %84, i64 %80 + %90 = getelementptr inbounds i8, ptr %89, i64 1 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %90, ptr nonnull align 1 %4, i64 %5, i1 false) + br label %91 -92: ; preds = %89, %.lr.ph251.split - %.4 = phi ptr [ %90, %89 ], [ %85, %.lr.ph251.split ] +91: ; preds = %88, %.lr.ph251.split + %.4 = phi ptr [ %89, %88 ], [ %84, %.lr.ph251.split ] %.not228 = icmp samesign ult i64 %.2194.idx247, 25 br i1 %.not228, label %._crit_edge252, label %.lr.ph251.split -._crit_edge252: ; preds = %92, %.lr.ph251.split.us, %80 - %.3.lcssa = phi ptr [ %.0190, %80 ], [ %83, %.lr.ph251.split.us ], [ %.4, %92 ] - br i1 %.not223.not, label %93, label %94 +._crit_edge252: ; preds = %91, %.lr.ph251.split.us, %79 + %.3.lcssa = phi ptr [ %.0190, %79 ], [ %82, %.lr.ph251.split.us ], [ %.4, %91 ] + br i1 %.not223.not, label %92, label %93 -93: ; preds = %._crit_edge252 +92: ; preds = %._crit_edge252 store i8 45, ptr %.3.lcssa, align 1 - br label %94 + br label %93 -94: ; preds = %93, %._crit_edge252 +93: ; preds = %92, %._crit_edge252 store i64 %spec.select, ptr %51, align 8 - %95 = getelementptr inbounds i8, ptr %11, i64 4 - %96 = load i32, ptr %95, align 4 - %97 = and i32 %96, 64 - %.not235 = icmp eq i32 %97, 0 - br i1 %.not235, label %98, label %104 - -98: ; preds = %94 - %99 = load i32, ptr %11, align 4 - %100 = icmp ne i32 %99, 0 - tail call void @llvm.assume(i1 %100) - %101 = add i32 %99, -1 - store i32 %101, ptr %11, align 4 - %102 = icmp eq i32 %101, 0 - br i1 %102, label %103, label %104 - -103: ; preds = %98 + %94 = getelementptr inbounds i8, ptr %11, i64 4 + %95 = load i32, ptr %94, align 4 + %96 = and i32 %95, 64 + %.not235 = icmp eq i32 %96, 0 + br i1 %.not235, label %97, label %103 + +97: ; preds = %93 + %98 = load i32, ptr %11, align 4 + %99 = icmp ne i32 %98, 0 + tail call void @llvm.assume(i1 %99) + %100 = add i32 %98, -1 + store i32 %100, ptr %11, align 4 + %101 = icmp eq i32 %100, 0 + br i1 %101, label %102, label %103 + +102: ; preds = %97 tail call void @_efree(ptr noundef nonnull %11) #15 - br label %104 + br label %103 -104: ; preds = %94, %103, %98, %13, %6 - %.0200 = phi ptr [ null, %6 ], [ %11, %13 ], [ %48, %98 ], [ %48, %103 ], [ %48, %94 ] +103: ; preds = %93, %102, %97, %13, %6 + %.0200 = phi ptr [ null, %6 ], [ %11, %13 ], [ %48, %97 ], [ %48, %102 ], [ %48, %93 ] ret ptr %.0200 } @@ -4134,6 +4133,9 @@ declare void @_efree(ptr noundef) local_unnamed_addr #4 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #12 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.usub.sat.i64(i64, i64) #12 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.abs.i64(i64, i1 immarg) #12 diff --git a/bench/pocketpy/optimized/str.cpp.ll b/bench/pocketpy/optimized/str.cpp.ll index 174f48b3849..83c29c3279b 100644 --- a/bench/pocketpy/optimized/str.cpp.ll +++ b/bench/pocketpy/optimized/str.cpp.ll @@ -2587,7 +2587,7 @@ define void @_ZNK4pkpy3Str5lowerEv(ptr dead_on_unwind noalias writable sret(%"st %8 = sext i32 %7 to i64 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #25 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcmRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef %6, i64 noundef %8, ptr noundef nonnull align 1 dereferenceable(1) %4) - to label %9 unwind label %19 + to label %9 unwind label %20 9: ; preds = %2 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #25 @@ -2598,41 +2598,41 @@ define void @_ZNK4pkpy3Str5lowerEv(ptr dead_on_unwind noalias writable sret(%"st br i1 %.not6.i, label %"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ZNK4pkpy3Str5lowerEvE3$_0ET0_T_SE_SD_T1_.exit", label %.lr.ph.i .lr.ph.i: ; preds = %9, %.lr.ph.i - %.sroa.0.08.i = phi ptr [ %17, %.lr.ph.i ], [ %12, %9 ] - %.sroa.03.07.i = phi ptr [ %16, %.lr.ph.i ], [ %10, %9 ] + %.sroa.0.08.i = phi ptr [ %18, %.lr.ph.i ], [ %12, %9 ] + %.sroa.03.07.i = phi ptr [ %17, %.lr.ph.i ], [ %10, %9 ] %13 = load i8, ptr %.sroa.03.07.i, align 1 %14 = add i8 %13, -65 %or.cond.i.i = icmp ult i8 %14, 26 %15 = or i8 %13, 32 - %.0.i.i = select i1 %or.cond.i.i, i8 %15, i8 %13 - store i8 %.0.i.i, ptr %.sroa.0.08.i, align 1 - %16 = getelementptr inbounds i8, ptr %.sroa.03.07.i, i64 1 - %17 = getelementptr inbounds i8, ptr %.sroa.0.08.i, i64 1 - %.not.i = icmp eq ptr %16, %11 + %16 = select i1 %or.cond.i.i, i8 %15, i8 %13 + store i8 %16, ptr %.sroa.0.08.i, align 1 + %17 = getelementptr inbounds i8, ptr %.sroa.03.07.i, i64 1 + %18 = getelementptr inbounds i8, ptr %.sroa.0.08.i, i64 1 + %.not.i = icmp eq ptr %17, %11 br i1 %.not.i, label %"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ZNK4pkpy3Str5lowerEvE3$_0ET0_T_SE_SD_T1_.exit", label %.lr.ph.i, !llvm.loop !61 "_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ZNK4pkpy3Str5lowerEvE3$_0ET0_T_SE_SD_T1_.exit": ; preds = %.lr.ph.i, %9 invoke void @_ZN4pkpy3StrC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %3) - to label %18 unwind label %21 + to label %19 unwind label %22 -18: ; preds = %"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ZNK4pkpy3Str5lowerEvE3$_0ET0_T_SE_SD_T1_.exit" +19: ; preds = %"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ZNK4pkpy3Str5lowerEvE3$_0ET0_T_SE_SD_T1_.exit" call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #25 ret void -19: ; preds = %2 - %20 = landingpad { ptr, i32 } +20: ; preds = %2 + %21 = landingpad { ptr, i32 } cleanup call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #25 - br label %23 + br label %24 -21: ; preds = %"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ZNK4pkpy3Str5lowerEvE3$_0ET0_T_SE_SD_T1_.exit" - %22 = landingpad { ptr, i32 } +22: ; preds = %"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ZNK4pkpy3Str5lowerEvE3$_0ET0_T_SE_SD_T1_.exit" + %23 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #25 - br label %23 + br label %24 -23: ; preds = %21, %19 - %.pn = phi { ptr, i32 } [ %22, %21 ], [ %20, %19 ] +24: ; preds = %22, %20 + %.pn = phi { ptr, i32 } [ %23, %22 ], [ %21, %20 ] resume { ptr, i32 } %.pn } @@ -2654,7 +2654,7 @@ define void @_ZNK4pkpy3Str5upperEv(ptr dead_on_unwind noalias writable sret(%"st %8 = sext i32 %7 to i64 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #25 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcmRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef %6, i64 noundef %8, ptr noundef nonnull align 1 dereferenceable(1) %4) - to label %9 unwind label %19 + to label %9 unwind label %20 9: ; preds = %2 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #25 @@ -2665,41 +2665,41 @@ define void @_ZNK4pkpy3Str5upperEv(ptr dead_on_unwind noalias writable sret(%"st br i1 %.not6.i, label %"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ZNK4pkpy3Str5upperEvE3$_0ET0_T_SE_SD_T1_.exit", label %.lr.ph.i .lr.ph.i: ; preds = %9, %.lr.ph.i - %.sroa.0.08.i = phi ptr [ %17, %.lr.ph.i ], [ %12, %9 ] - %.sroa.03.07.i = phi ptr [ %16, %.lr.ph.i ], [ %10, %9 ] + %.sroa.0.08.i = phi ptr [ %18, %.lr.ph.i ], [ %12, %9 ] + %.sroa.03.07.i = phi ptr [ %17, %.lr.ph.i ], [ %10, %9 ] %13 = load i8, ptr %.sroa.03.07.i, align 1 %14 = add i8 %13, -97 %or.cond.i.i = icmp ult i8 %14, 26 %15 = add i8 %13, -32 - %.0.i.i = select i1 %or.cond.i.i, i8 %15, i8 %13 - store i8 %.0.i.i, ptr %.sroa.0.08.i, align 1 - %16 = getelementptr inbounds i8, ptr %.sroa.03.07.i, i64 1 - %17 = getelementptr inbounds i8, ptr %.sroa.0.08.i, i64 1 - %.not.i = icmp eq ptr %16, %11 + %16 = select i1 %or.cond.i.i, i8 %15, i8 %13 + store i8 %16, ptr %.sroa.0.08.i, align 1 + %17 = getelementptr inbounds i8, ptr %.sroa.03.07.i, i64 1 + %18 = getelementptr inbounds i8, ptr %.sroa.0.08.i, i64 1 + %.not.i = icmp eq ptr %17, %11 br i1 %.not.i, label %"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ZNK4pkpy3Str5upperEvE3$_0ET0_T_SE_SD_T1_.exit", label %.lr.ph.i, !llvm.loop !62 "_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ZNK4pkpy3Str5upperEvE3$_0ET0_T_SE_SD_T1_.exit": ; preds = %.lr.ph.i, %9 invoke void @_ZN4pkpy3StrC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %3) - to label %18 unwind label %21 + to label %19 unwind label %22 -18: ; preds = %"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ZNK4pkpy3Str5upperEvE3$_0ET0_T_SE_SD_T1_.exit" +19: ; preds = %"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ZNK4pkpy3Str5upperEvE3$_0ET0_T_SE_SD_T1_.exit" call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #25 ret void -19: ; preds = %2 - %20 = landingpad { ptr, i32 } +20: ; preds = %2 + %21 = landingpad { ptr, i32 } cleanup call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #25 - br label %23 + br label %24 -21: ; preds = %"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ZNK4pkpy3Str5upperEvE3$_0ET0_T_SE_SD_T1_.exit" - %22 = landingpad { ptr, i32 } +22: ; preds = %"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ZNK4pkpy3Str5upperEvE3$_0ET0_T_SE_SD_T1_.exit" + %23 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #25 - br label %23 + br label %24 -23: ; preds = %21, %19 - %.pn = phi { ptr, i32 } [ %22, %21 ], [ %20, %19 ] +24: ; preds = %22, %20 + %.pn = phi { ptr, i32 } [ %23, %22 ], [ %21, %20 ] resume { ptr, i32 } %.pn } diff --git a/bench/postgres/optimized/date.ll b/bench/postgres/optimized/date.ll index f45a99e8f3d..13a14fc6e63 100644 --- a/bench/postgres/optimized/date.ll +++ b/bench/postgres/optimized/date.ll @@ -5459,8 +5459,7 @@ define dso_local i64 @timetz_larger(ptr nocapture noundef readonly %0) local_unn 19: ; preds = %17 %20 = icmp sgt i32 %.val7, %.val9 - %spec.select = select i1 %20, ptr %4, ptr %7 - %21 = ptrtoint ptr %spec.select to i64 + %21 = select i1 %20, i64 %3, i64 %6 br label %timetz_cmp_internal.exit timetz_cmp_internal.exit: ; preds = %19, %1, %17 diff --git a/bench/postgres/optimized/float.ll b/bench/postgres/optimized/float.ll index 7aa369ba0bc..ee64b44b78c 100644 --- a/bench/postgres/optimized/float.ll +++ b/bench/postgres/optimized/float.ll @@ -6610,9 +6610,8 @@ define dso_local range(i64 -2147483648, 2147483648) i64 @width_bucket_float8(ptr %63 = fmul double %.sink, %51 %storemerge57 = fptosi double %63 to i32 %.not58 = icmp sgt i32 %10, %storemerge57 - %64 = add nsw i32 %10, -1 - %spec.select = select i1 %.not58, i32 %storemerge57, i32 %64 - %65 = add i32 %spec.select, 1 + %64 = add i32 %storemerge57, 1 + %65 = select i1 %.not58, i32 %64, i32 %10 br label %103 66: ; preds = %33 @@ -6667,9 +6666,8 @@ define dso_local range(i64 -2147483648, 2147483648) i64 @width_bucket_float8(ptr %96 = fmul double %.sink64, %84 %storemerge = fptosi double %96 to i32 %.not = icmp sgt i32 %10, %storemerge - %97 = add nsw i32 %10, -1 - %spec.select63 = select i1 %.not, i32 %storemerge, i32 %97 - %98 = add i32 %spec.select63, 1 + %97 = add i32 %storemerge, 1 + %98 = select i1 %.not, i32 %97, i32 %10 br label %103 99: ; preds = %66 diff --git a/bench/postgres/optimized/rewriteheap.ll b/bench/postgres/optimized/rewriteheap.ll index 929363c64c6..19495d443be 100644 --- a/bench/postgres/optimized/rewriteheap.ll +++ b/bench/postgres/optimized/rewriteheap.ll @@ -1048,15 +1048,18 @@ define dso_local void @CheckPointLogicalRewriteHeap() local_unnamed_addr #0 { %8 = tail call i64 @GetRedoRecPtr() #13 %9 = tail call i64 @ReplicationSlotsComputeLogicalRestartLSN() #13 %.not = icmp ne i64 %9, 0 + %10 = tail call ptr @AllocateDir(ptr noundef nonnull @.str.10) #13 + %11 = tail call ptr @ReadDir(ptr noundef %10, ptr noundef nonnull @.str.10) #13 + %.not2740 = icmp eq ptr %11, null + br i1 %.not2740, label %._crit_edge, label %sub_0.lr.ph + +sub_0.lr.ph: ; preds = %0 %spec.select = tail call i64 @llvm.umin.i64(i64 %8, i64 %9) - %10 = add i64 %spec.select, -1 - %11 = tail call ptr @AllocateDir(ptr noundef nonnull @.str.10) #13 - %12 = tail call ptr @ReadDir(ptr noundef %11, ptr noundef nonnull @.str.10) #13 - %.not2740 = icmp eq ptr %12, null - br i1 %.not2740, label %._crit_edge, label %sub_0 - -sub_0: ; preds = %0, %.backedge - %13 = phi ptr [ %24, %.backedge ], [ %12, %0 ] + %12 = add i64 %spec.select, -1 + br label %sub_0 + +sub_0: ; preds = %sub_0.lr.ph, %.backedge + %13 = phi ptr [ %11, %sub_0.lr.ph ], [ %24, %.backedge ] %14 = getelementptr inbounds i8, ptr %13, i64 19 %15 = load i8, ptr %14, align 1 %.not41 = icmp eq i8 %15, 46 @@ -1081,7 +1084,7 @@ sub_135: ; preds = %.tail br i1 %23, label %.backedge, label %.tail33.thread .backedge: ; preds = %46, %69, %.tail, %.tail33, %.tail33.thread, %28 - %24 = call ptr @ReadDir(ptr noundef %11, ptr noundef nonnull @.str.10) #13 + %24 = call ptr @ReadDir(ptr noundef %10, ptr noundef nonnull @.str.10) #13 %.not27 = icmp eq ptr %24, null br i1 %.not27, label %._crit_edge, label %sub_0, !llvm.loop !8 @@ -1116,7 +1119,7 @@ sub_135: ; preds = %.tail %39 = load i32, ptr %7, align 4 %40 = zext i32 %39 to i64 %41 = or disjoint i64 %38, %40 - %or.cond3.not32 = icmp ult i64 %10, %41 + %or.cond3.not32 = icmp ult i64 %12, %41 %or.cond3.not = select i1 %.not, i1 %or.cond3.not32, i1 false br i1 %or.cond3.not, label %53, label %42 @@ -1189,7 +1192,7 @@ sub_135: ; preds = %.tail unreachable ._crit_edge: ; preds = %.backedge, %0 - %76 = call i32 @FreeDir(ptr noundef %11) #13 + %76 = call i32 @FreeDir(ptr noundef %10) #13 call void @fsync_fname(ptr noundef nonnull @.str.10, i1 noundef zeroext true) #13 ret void } diff --git a/bench/proxygen/optimized/RFC2616.cpp.ll b/bench/proxygen/optimized/RFC2616.cpp.ll index 035e1766f11..5008ccd38ee 100644 --- a/bench/proxygen/optimized/RFC2616.cpp.ll +++ b/bench/proxygen/optimized/RFC2616.cpp.ll @@ -2191,12 +2191,12 @@ _ZN5folly10canNallocxEv.exit.i: ; preds = %init.i.i.i.i, %init if.end2.i: ; preds = %_ZN5folly10canNallocxEv.exit.i %call3.i = call i64 @nallocx(i64 noundef %4, i32 noundef 0) #30 %tobool.not.i = icmp eq i64 %call3.i, 0 - %cond.i = select i1 %tobool.not.i, i64 %4, i64 %call3.i - %8 = udiv i64 %cond.i, 24 + %8 = udiv i64 %call3.i, 24 + %9 = select i1 %tobool.not.i, i64 %.sroa.speculated49, i64 %8 br label %_ZN5folly14goodMallocSizeEm.exit _ZN5folly14goodMallocSizeEm.exit: ; preds = %_ZN5folly10canNallocxEv.exit.i, %if.end2.i - %retval.0.i10 = phi i64 [ %8, %if.end2.i ], [ %.sroa.speculated49, %_ZN5folly10canNallocxEv.exit.i ] + %retval.0.i10 = phi i64 [ %9, %if.end2.i ], [ %.sroa.speculated49, %_ZN5folly10canNallocxEv.exit.i ] %.sroa.speculated = call i64 @llvm.umin.i64(i64 %retval.0.i10, i64 16383) %mul = mul nuw nsw i64 %.sroa.speculated, 24 %call.i = call noalias ptr @malloc(i64 noundef %mul) #35 @@ -2208,26 +2208,26 @@ if.then.i: ; preds = %_ZN5folly14goodMall unreachable _ZN5folly13checkedMallocEm.exit: ; preds = %_ZN5folly14goodMallocSizeEm.exit - %9 = load i16, ptr %this, align 8 + %10 = load i16, ptr %this, align 8 %u.i.i = getelementptr inbounds i8, ptr %this, i64 8 - %10 = load ptr, ptr %u.i.i, align 8 - %tobool.not1.i.i = icmp slt i16 %9, 0 - %cond.i.i = select i1 %tobool.not1.i.i, ptr %10, ptr %u.i.i + %11 = load ptr, ptr %u.i.i, align 8 + %tobool.not1.i.i = icmp slt i16 %10, 0 + %cond.i.i = select i1 %tobool.not1.i.i, ptr %11, ptr %u.i.i br i1 %insert, label %invoke.cont20, label %if.else invoke.cont20: ; preds = %_ZN5folly13checkedMallocEm.exit - %11 = and i16 %9, 16383 - %conv2.i.i.i = zext nneg i16 %11 to i64 + %12 = and i16 %10, 16383 + %conv2.i.i.i = zext nneg i16 %12 to i64 %add.ptr.i = getelementptr inbounds %"struct.std::pair.11", ptr %cond.i.i, i64 %conv2.i.i.i %idx.ext.i = and i64 %pos, 65535 %add.ptr.i18 = getelementptr inbounds %"struct.std::pair.11", ptr %call.i, i64 %idx.ext.i - %12 = load ptr, ptr %emplaceFunc, align 8 - %13 = getelementptr inbounds i8, ptr %emplaceFunc, i64 8 - %14 = load ptr, ptr %13, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %add.ptr.i18, ptr noundef nonnull align 8 dereferenceable(16) %12, i64 16, i1 false) + %13 = load ptr, ptr %emplaceFunc, align 8 + %14 = getelementptr inbounds i8, ptr %emplaceFunc, i64 8 + %15 = load ptr, ptr %14, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %add.ptr.i18, ptr noundef nonnull align 8 dereferenceable(16) %13, i64 16, i1 false) %second.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i18, i64 16 - %15 = load double, ptr %14, align 8 - store double %15, ptr %second.i.i.i, align 8 + %16 = load double, ptr %15, align 8 + store double %16, ptr %second.i.i.i, align 8 %tobool.not.i19 = icmp eq ptr %cond.i.i, null br i1 %tobool.not.i19, label %if.end.i21, label %if.then.i20 @@ -2270,10 +2270,10 @@ if.else: ; preds = %_ZN5folly13checkedM br i1 %tobool24.not, label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt4pairINS_5RangeIPKcEEdELm8ENS_19small_vector_policy16policy_size_typeItEEE16makeSizeInternalIZNSC_12emplace_backIJRKS7_RdEEERS8_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit, label %invoke.cont28 invoke.cont28: ; preds = %if.else - %16 = and i16 %9, 16383 - %conv2.i.i.i30 = zext nneg i16 %16 to i64 + %17 = and i16 %10, 16383 + %conv2.i.i.i30 = zext nneg i16 %17 to i64 %add.ptr.i31 = getelementptr inbounds %"struct.std::pair.11", ptr %cond.i.i, i64 %conv2.i.i.i30 - %cmp.not3.i = icmp eq i16 %16, 0 + %cmp.not3.i = icmp eq i16 %17, 0 br i1 %cmp.not3.i, label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt4pairINS_5RangeIPKcEEdELm8ENS_19small_vector_policy16policy_size_typeItEEE16makeSizeInternalIZNSC_12emplace_backIJRKS7_RdEEERS8_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit, label %for.body.i for.body.i: ; preds = %invoke.cont28, %for.body.i @@ -2287,23 +2287,23 @@ for.body.i: ; preds = %invoke.cont28, %for br i1 %cmp.not.i, label %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt4pairINS_5RangeIPKcEEdELm8ENS_19small_vector_policy16policy_size_typeItEEE16makeSizeInternalIZNSC_12emplace_backIJRKS7_RdEEERS8_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit, label %for.body.i, !llvm.loop !74 _ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt4pairINS_5RangeIPKcEEdELm8ENS_19small_vector_policy16policy_size_typeItEEE16makeSizeInternalIZNSC_12emplace_backIJRKS7_RdEEERS8_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit: ; preds = %for.body.i, %for.body.i8.i, %if.else, %if.end.i21, %invoke.cont28 - %tobool.not.i42 = icmp sgt i16 %9, -1 - %tobool2.not.i = icmp eq ptr %10, null + %tobool.not.i42 = icmp sgt i16 %10, -1 + %tobool2.not.i = icmp eq ptr %11, null %or.cond = select i1 %tobool.not.i42, i1 true, i1 %tobool2.not.i br i1 %or.cond, label %_ZN5folly12small_vectorISt4pairINS_5RangeIPKcEEdELm8ENS_19small_vector_policy16policy_size_typeItEEE8freeHeapEv.exit, label %if.then4.i if.then4.i: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt4pairINS_5RangeIPKcEEdELm8ENS_19small_vector_policy16policy_size_typeItEEE16makeSizeInternalIZNSC_12emplace_backIJRKS7_RdEEERS8_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit - %17 = load i16, ptr %capacity_.i.i.i.i, align 8 - %conv.i = zext i16 %17 to i64 + %18 = load i16, ptr %capacity_.i.i.i.i, align 8 + %conv.i = zext i16 %18 to i64 %mul.i = mul nuw nsw i64 %conv.i, 24 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) - %18 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %18, 0 + %19 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %19, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, !prof !73 init.check.i.i.i.i.i: ; preds = %if.then4.i - %19 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #29 - %tobool.i.not.i.i.i.i = icmp eq i32 %19, 0 + %20 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #29 + %tobool.i.not.i.i.i.i = icmp eq i32 %20, 0 br i1 %tobool.i.not.i.i.i.i, label %_ZN5folly11canSdallocxEv.exit.i.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i @@ -2314,25 +2314,25 @@ init.i.i.i.i.i: ; preds = %init.check.i.i.i.i. br label %_ZN5folly11canSdallocxEv.exit.i.i _ZN5folly11canSdallocxEv.exit.i.i: ; preds = %init.i.i.i.i.i, %init.check.i.i.i.i.i, %if.then4.i - %20 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1 - %tobool1.i.i.i.i.i = trunc i8 %20 to i1 + %21 = load i8, ptr @_ZZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv, align 1 + %tobool1.i.i.i.i.i = trunc i8 %21 to i1 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) br i1 %tobool1.i.i.i.i.i, label %if.then.i.i, label %if.else.i.i if.then.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i - call void @sdallocx(ptr noundef nonnull %10, i64 noundef %mul.i, i32 noundef 0) #29 + call void @sdallocx(ptr noundef nonnull %11, i64 noundef %mul.i, i32 noundef 0) #29 br label %_ZN5folly12small_vectorISt4pairINS_5RangeIPKcEEdELm8ENS_19small_vector_policy16policy_size_typeItEEE8freeHeapEv.exit if.else.i.i: ; preds = %_ZN5folly11canSdallocxEv.exit.i.i - call void @free(ptr noundef nonnull %10) #29 + call void @free(ptr noundef nonnull %11) #29 br label %_ZN5folly12small_vectorISt4pairINS_5RangeIPKcEEdELm8ENS_19small_vector_policy16policy_size_typeItEEE8freeHeapEv.exit _ZN5folly12small_vectorISt4pairINS_5RangeIPKcEEdELm8ENS_19small_vector_policy16policy_size_typeItEEE8freeHeapEv.exit: ; preds = %_ZN5folly6detail14ScopeGuardImplIZNS_12small_vectorISt4pairINS_5RangeIPKcEEdELm8ENS_19small_vector_policy16policy_size_typeItEEE16makeSizeInternalIZNSC_12emplace_backIJRKS7_RdEEERS8_DpOT_EUlPvE_EEvmbOT_mEUlvE_Lb1EED2Ev.exit, %if.then.i.i, %if.else.i.i %u.i.i34 = getelementptr inbounds i8, ptr %this, i64 8 store ptr %call.i, ptr %u.i.i34, align 8 - %21 = load i16, ptr %this, align 8 - %22 = and i16 %21, 16383 - %storemerge.i = or disjoint i16 %22, -32768 + %22 = load i16, ptr %this, align 8 + %23 = and i16 %22, 16383 + %storemerge.i = or disjoint i16 %23, -32768 store i16 %storemerge.i, ptr %this, align 8 %conv.i45 = trunc nuw nsw i64 %.sroa.speculated to i16 store i16 %conv.i45, ptr %capacity_.i.i.i.i, align 8 diff --git a/bench/qemu/optimized/accel_tcg_cputlb.c.ll b/bench/qemu/optimized/accel_tcg_cputlb.c.ll index 933c0d85ec3..c7f3a7144d3 100644 --- a/bench/qemu/optimized/accel_tcg_cputlb.c.ll +++ b/bench/qemu/optimized/accel_tcg_cputlb.c.ll @@ -4101,13 +4101,8 @@ if.then40: ; preds = %if.end35 %call50 = call fastcc i64 @do_ld_8(ptr noundef %cpu, ptr noundef nonnull %arrayidx48, i32 noundef %54, i32 noundef 0, i32 noundef %or, i64 noundef %ra) %and51 = and i32 %53, 16 %cmp52 = icmp eq i32 %and51, 0 - %.fca.0.insert.i69 = insertvalue { i64, i64 } poison, i64 %call46, 0 - %.fca.1.insert.i70 = insertvalue { i64, i64 } %.fca.0.insert.i69, i64 %call50, 1 - %.fca.0.insert.i71 = insertvalue { i64, i64 } poison, i64 %call50, 0 - %.fca.1.insert.i72 = insertvalue { i64, i64 } %.fca.0.insert.i71, i64 %call46, 1 - %call55.pn = select i1 %cmp52, { i64, i64 } %.fca.1.insert.i70, { i64, i64 } %.fca.1.insert.i72 - %ret.1.off64 = extractvalue { i64, i64 } %call55.pn, 1 - %ret.1.off0 = extractvalue { i64, i64 } %call55.pn, 0 + %ret.1.off64 = select i1 %cmp52, i64 %call50, i64 %call46 + %ret.1.off0 = select i1 %cmp52, i64 %call46, i64 %call50 br label %return if.end61: ; preds = %if.end35 @@ -5135,9 +5130,9 @@ sw.bb15.i: ; preds = %sw.bb12.i, %sw.bb12 %sub5.i.i = sub nuw nsw i32 128, %mul.i.i %sh_prom6.i.i = zext nneg i32 %sub5.i.i to i64 %shr7.i.i = lshr i64 -1, %sh_prom6.i.i - %23 = zext nneg i64 %shr7.i.i to i128 %sh_prom.i.i.i = zext nneg i32 %mul2.i.i to i128 %shl.i.i.i = shl i128 %val.sroa.0.0.insert.insert.i, %sh_prom.i.i.i + %23 = zext nneg i64 %shr7.i.i to i128 %24 = shl nuw nsw i128 %23, 64 %25 = or disjoint i128 %24, 18446744073709551615 %shl.i22.i.i = shl i128 %25, %sh_prom.i.i.i @@ -5213,13 +5208,13 @@ store_bytes_leN.exit69.i: ; preds = %for.body.i61.i %sub5.i79.i = sub nuw nsw i32 128, %mul.i72.i %sh_prom6.i80.i = zext nneg i32 %sub5.i79.i to i64 %shr7.i81.i = lshr i64 -1, %sh_prom6.i80.i - %33 = zext i64 %shr.i78.i to i128 - %34 = zext nneg i64 %shr7.i81.i to i128 %sh_prom.i.i86.i = zext nneg i32 %mul2.i74.i to i128 %shl.i.i87.i = shl i128 %shr.i71.i, %sh_prom.i.i86.i - %35 = shl nuw nsw i128 %34, 64 - %36 = or disjoint i128 %35, 18446744073709551615 - %a.sroa.0.0.insert.insert.i20.i88.i = select i1 %cmp.i75.i, i128 %33, i128 %36 + %33 = zext nneg i64 %shr7.i81.i to i128 + %34 = shl nuw nsw i128 %33, 64 + %35 = zext i64 %shr.i78.i to i128 + %36 = or disjoint i128 %34, 18446744073709551615 + %a.sroa.0.0.insert.insert.i20.i88.i = select i1 %cmp.i75.i, i128 %35, i128 %36 %shl.i22.i89.i = shl i128 %a.sroa.0.0.insert.insert.i20.i88.i, %sh_prom.i.i86.i %retval.sroa.0.0.extract.trunc.i23.i90.i = trunc i128 %shl.i22.i89.i to i64 %retval.sroa.2.0.extract.shift.i24.i91.i = and i128 %shl.i22.i89.i, -18446744073709551616 @@ -6707,31 +6702,29 @@ entry: %1 = ptrtoint ptr %0 to i64 %add.ptr.i.i = getelementptr i8, ptr %env, i64 -10176 %call3.i = tail call fastcc ptr @atomic_mmu_lookup(ptr noundef %add.ptr.i.i, i64 noundef %addr, i32 noundef %oi, i32 noundef 16, i64 noundef %1) - %2 = tail call i64 @llvm.bswap.i64(i64 %oldv.coerce1) - %3 = tail call i64 @llvm.bswap.i64(i64 %oldv.coerce0) - %4 = zext i64 %oldv.coerce0 to i128 - %5 = zext i64 %oldv.coerce1 to i128 - %6 = shl nuw i128 %5, 64 - %7 = or disjoint i128 %6, %4 - %cmp.sroa.0.0.insert.insert.i.i = tail call i128 @llvm.bswap.i128(i128 %7) - %8 = zext i64 %newv.coerce0 to i128 - %9 = zext i64 %newv.coerce1 to i128 - %10 = shl nuw i128 %9, 64 - %11 = or disjoint i128 %10, %8 - %new.sroa.0.0.insert.insert.i.i = tail call i128 @llvm.bswap.i128(i128 %11) + %2 = zext i64 %oldv.coerce0 to i128 + %3 = zext i64 %oldv.coerce1 to i128 + %4 = shl nuw i128 %3, 64 + %5 = or disjoint i128 %4, %2 + %cmp.sroa.0.0.insert.insert.i.i = tail call i128 @llvm.bswap.i128(i128 %5) + %6 = zext i64 %newv.coerce0 to i128 + %7 = zext i64 %newv.coerce1 to i128 + %8 = shl nuw i128 %7, 64 + %9 = or disjoint i128 %8, %6 + %new.sroa.0.0.insert.insert.i.i = tail call i128 @llvm.bswap.i128(i128 %9) call void @llvm.assume(i1 true) [ "align"(ptr %call3.i, i64 16) ] - %12 = cmpxchg ptr %call3.i, i128 %cmp.sroa.0.0.insert.insert.i.i, i128 %new.sroa.0.0.insert.insert.i.i seq_cst seq_cst, align 16 - %13 = extractvalue { i128, i1 } %12, 1 - %14 = extractvalue { i128, i1 } %12, 0 - %extract.t2.i.i = trunc i128 %14 to i64 - %extract4.i.i = lshr i128 %14, 64 + %10 = cmpxchg ptr %call3.i, i128 %cmp.sroa.0.0.insert.insert.i.i, i128 %new.sroa.0.0.insert.insert.i.i seq_cst seq_cst, align 16 + %11 = extractvalue { i128, i1 } %10, 1 + %12 = extractvalue { i128, i1 } %10, 0 + %extract.t2.i.i = trunc i128 %12 to i64 + %extract4.i.i = lshr i128 %12, 64 %extract.t5.i.i = trunc nuw i128 %extract4.i.i to i64 - %_old.0.off0.i.i = select i1 %13, i64 %2, i64 %extract.t2.i.i - %_old.0.off64.i.i = select i1 %13, i64 %3, i64 %extract.t5.i.i tail call void @qemu_plugin_vcpu_mem_cb(ptr noundef %add.ptr.i.i, i64 noundef %addr, i32 noundef %oi, i32 noundef 3) #19 - %15 = tail call i64 @llvm.bswap.i64(i64 %_old.0.off64.i.i) - %16 = tail call i64 @llvm.bswap.i64(i64 %_old.0.off0.i.i) - %.fca.0.insert.i.i6.i = insertvalue { i64, i64 } poison, i64 %15, 0 + %13 = tail call i64 @llvm.bswap.i64(i64 %extract.t5.i.i) + %14 = select i1 %11, i64 %oldv.coerce0, i64 %13 + %15 = tail call i64 @llvm.bswap.i64(i64 %extract.t2.i.i) + %16 = select i1 %11, i64 %oldv.coerce1, i64 %15 + %.fca.0.insert.i.i6.i = insertvalue { i64, i64 } poison, i64 %14, 0 %.fca.1.insert.i.i7.i = insertvalue { i64, i64 } %.fca.0.insert.i.i6.i, i64 %16, 1 ret { i64, i64 } %.fca.1.insert.i.i7.i } @@ -6741,31 +6734,29 @@ define dso_local { i64, i64 } @cpu_atomic_cmpxchgo_be_mmu(ptr noundef %env, i64 entry: %add.ptr.i = getelementptr i8, ptr %env, i64 -10176 %call3 = tail call fastcc ptr @atomic_mmu_lookup(ptr noundef %add.ptr.i, i64 noundef %addr, i32 noundef %oi, i32 noundef 16, i64 noundef %retaddr) - %0 = tail call i64 @llvm.bswap.i64(i64 %cmpv.coerce1) - %1 = tail call i64 @llvm.bswap.i64(i64 %cmpv.coerce0) - %2 = zext i64 %cmpv.coerce0 to i128 - %3 = zext i64 %cmpv.coerce1 to i128 - %4 = shl nuw i128 %3, 64 - %5 = or disjoint i128 %4, %2 - %cmp.sroa.0.0.insert.insert.i = tail call i128 @llvm.bswap.i128(i128 %5) - %6 = zext i64 %newv.coerce0 to i128 - %7 = zext i64 %newv.coerce1 to i128 - %8 = shl nuw i128 %7, 64 - %9 = or disjoint i128 %8, %6 - %new.sroa.0.0.insert.insert.i = tail call i128 @llvm.bswap.i128(i128 %9) + %0 = zext i64 %cmpv.coerce0 to i128 + %1 = zext i64 %cmpv.coerce1 to i128 + %2 = shl nuw i128 %1, 64 + %3 = or disjoint i128 %2, %0 + %cmp.sroa.0.0.insert.insert.i = tail call i128 @llvm.bswap.i128(i128 %3) + %4 = zext i64 %newv.coerce0 to i128 + %5 = zext i64 %newv.coerce1 to i128 + %6 = shl nuw i128 %5, 64 + %7 = or disjoint i128 %6, %4 + %new.sroa.0.0.insert.insert.i = tail call i128 @llvm.bswap.i128(i128 %7) call void @llvm.assume(i1 true) [ "align"(ptr %call3, i64 16) ] - %10 = cmpxchg ptr %call3, i128 %cmp.sroa.0.0.insert.insert.i, i128 %new.sroa.0.0.insert.insert.i seq_cst seq_cst, align 16 - %11 = extractvalue { i128, i1 } %10, 1 - %12 = extractvalue { i128, i1 } %10, 0 - %extract.t2.i = trunc i128 %12 to i64 - %extract4.i = lshr i128 %12, 64 + %8 = cmpxchg ptr %call3, i128 %cmp.sroa.0.0.insert.insert.i, i128 %new.sroa.0.0.insert.insert.i seq_cst seq_cst, align 16 + %9 = extractvalue { i128, i1 } %8, 1 + %10 = extractvalue { i128, i1 } %8, 0 + %extract.t2.i = trunc i128 %10 to i64 + %extract4.i = lshr i128 %10, 64 %extract.t5.i = trunc nuw i128 %extract4.i to i64 - %_old.0.off0.i = select i1 %11, i64 %0, i64 %extract.t2.i - %_old.0.off64.i = select i1 %11, i64 %1, i64 %extract.t5.i tail call void @qemu_plugin_vcpu_mem_cb(ptr noundef %add.ptr.i, i64 noundef %addr, i32 noundef %oi, i32 noundef 3) #19 - %13 = tail call i64 @llvm.bswap.i64(i64 %_old.0.off64.i) - %14 = tail call i64 @llvm.bswap.i64(i64 %_old.0.off0.i) - %.fca.0.insert.i.i6 = insertvalue { i64, i64 } poison, i64 %13, 0 + %11 = tail call i64 @llvm.bswap.i64(i64 %extract.t5.i) + %12 = select i1 %9, i64 %cmpv.coerce0, i64 %11 + %13 = tail call i64 @llvm.bswap.i64(i64 %extract.t2.i) + %14 = select i1 %9, i64 %cmpv.coerce1, i64 %13 + %.fca.0.insert.i.i6 = insertvalue { i64, i64 } poison, i64 %12, 0 %.fca.1.insert.i.i7 = insertvalue { i64, i64 } %.fca.0.insert.i.i6, i64 %14, 1 ret { i64, i64 } %.fca.1.insert.i.i7 } @@ -14486,17 +14477,17 @@ sw.bb28: ; preds = %if.end17 %sub5.i = sub nsw i32 128, %mul.i %sh_prom6.i = zext nneg i32 %sub5.i to i64 %shr7.i45 = lshr i64 -1, %sh_prom6.i - %13 = zext i64 %shr.i to i128 - %14 = zext i64 %shr7.i45 to i128 %a.sroa.2.0.insert.ext.i.i = zext i64 %val_le.coerce1 to i128 %a.sroa.2.0.insert.shift.i.i = shl nuw i128 %a.sroa.2.0.insert.ext.i.i, 64 %a.sroa.0.0.insert.ext.i.i = zext i64 %val_le.coerce0 to i128 %a.sroa.0.0.insert.insert.i.i = or disjoint i128 %a.sroa.2.0.insert.shift.i.i, %a.sroa.0.0.insert.ext.i.i %sh_prom.i.i = zext nneg i32 %mul2.i to i128 %shl.i.i = shl i128 %a.sroa.0.0.insert.insert.i.i, %sh_prom.i.i - %15 = shl nuw i128 %14, 64 - %16 = or disjoint i128 %15, 18446744073709551615 - %a.sroa.0.0.insert.insert.i20.i = select i1 %cmp.i, i128 %13, i128 %16 + %13 = zext i64 %shr7.i45 to i128 + %14 = shl nuw i128 %13, 64 + %15 = zext i64 %shr.i to i128 + %16 = or disjoint i128 %14, 18446744073709551615 + %a.sroa.0.0.insert.insert.i20.i = select i1 %cmp.i, i128 %15, i128 %16 %shl.i22.i = shl i128 %a.sroa.0.0.insert.insert.i20.i, %sh_prom.i.i %retval.sroa.0.0.extract.trunc.i23.i = trunc i128 %shl.i22.i to i64 %retval.sroa.2.0.extract.shift.i24.i = and i128 %shl.i22.i, -18446744073709551616 diff --git a/bench/qemu/optimized/accel_tcg_user-exec.c.ll b/bench/qemu/optimized/accel_tcg_user-exec.c.ll index 43d45a132e3..39e7450d8ad 100644 --- a/bench/qemu/optimized/accel_tcg_user-exec.c.ll +++ b/bench/qemu/optimized/accel_tcg_user-exec.c.ll @@ -197,17 +197,17 @@ if.end37: ; preds = %if.end29, %if.then6 %tobool39.not = icmp eq i32 %and38, 0 %and41 = and i32 %prot.0, 2 %or42 = or disjoint i32 %and41, 1 - %prot.3 = select i1 %tobool39.not, i32 %prot.0, i32 %or42 %5 = load i64, ptr @guest_base, align 8 %add.i = add i64 %5, %start.0 %6 = inttoptr i64 %add.i to ptr - %and45 = and i32 %prot.3, 7 + %7 = and i32 %prot.0, 7 + %and45 = select i1 %tobool39.not, i32 %7, i32 %or42 %call46 = tail call i32 @mprotect(ptr noundef %6, i64 noundef %len.0, i32 noundef %and45) #16 - %7 = select i1 %current_tb_invalidated.1, i32 2, i32 1 + %8 = select i1 %current_tb_invalidated.1, i32 2, i32 1 br label %return return: ; preds = %if.end37, %if.end, %entry, %lor.lhs.false - %retval.0 = phi i32 [ 0, %lor.lhs.false ], [ 0, %entry ], [ 1, %if.end ], [ %7, %if.end37 ] + %retval.0 = phi i32 [ 0, %lor.lhs.false ], [ 0, %entry ], [ 1, %if.end ], [ %8, %if.end37 ] tail call void @mmap_unlock() #16 ret i32 %retval.0 } @@ -4164,9 +4164,9 @@ sw.bb15.i: ; preds = %sw.bb12.i, %sw.bb12 %sub5.i.i = sub nuw nsw i32 128, %mul.i.i %sh_prom6.i.i = zext nneg i32 %sub5.i.i to i64 %shr7.i.i = lshr i64 -1, %sh_prom6.i.i - %18 = zext nneg i64 %shr7.i.i to i128 %sh_prom.i.i.i = zext nneg i32 %mul2.i.i to i128 %shl.i.i.i = shl i128 %val.sroa.0.0.insert.insert.i, %sh_prom.i.i.i + %18 = zext nneg i64 %shr7.i.i to i128 %19 = shl nuw nsw i128 %18, 64 %20 = or disjoint i128 %19, 18446744073709551615 %shl.i22.i.i = shl i128 %20, %sh_prom.i.i.i @@ -4242,13 +4242,13 @@ store_bytes_leN.exit69.i: ; preds = %for.body.i61.i %sub5.i79.i = sub nuw nsw i32 128, %mul.i72.i %sh_prom6.i80.i = zext nneg i32 %sub5.i79.i to i64 %shr7.i81.i = lshr i64 -1, %sh_prom6.i80.i - %28 = zext i64 %shr.i78.i to i128 - %29 = zext nneg i64 %shr7.i81.i to i128 %sh_prom.i.i86.i = zext nneg i32 %mul2.i74.i to i128 %shl.i.i87.i = shl i128 %shr.i71.i, %sh_prom.i.i86.i - %30 = shl nuw nsw i128 %29, 64 - %31 = or disjoint i128 %30, 18446744073709551615 - %a.sroa.0.0.insert.insert.i20.i88.i = select i1 %cmp.i75.i, i128 %28, i128 %31 + %28 = zext nneg i64 %shr7.i81.i to i128 + %29 = shl nuw nsw i128 %28, 64 + %30 = zext i64 %shr.i78.i to i128 + %31 = or disjoint i128 %29, 18446744073709551615 + %a.sroa.0.0.insert.insert.i20.i88.i = select i1 %cmp.i75.i, i128 %30, i128 %31 %shl.i22.i89.i = shl i128 %a.sroa.0.0.insert.insert.i20.i88.i, %sh_prom.i.i86.i %retval.sroa.0.0.extract.trunc.i23.i90.i = trunc i128 %shl.i22.i89.i to i64 %retval.sroa.2.0.extract.shift.i24.i91.i = and i128 %shl.i22.i89.i, -18446744073709551616 @@ -6406,33 +6406,31 @@ atomic_mmu_lookup.exit: ; preds = %if.end.i %2 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @helper_retaddr) store i64 %retaddr, ptr %2, align 8 fence syncscope("singlethread") seq_cst - %3 = tail call i64 @llvm.bswap.i64(i64 %cmpv.coerce1) - %4 = tail call i64 @llvm.bswap.i64(i64 %cmpv.coerce0) - %5 = zext i64 %cmpv.coerce0 to i128 - %6 = zext i64 %cmpv.coerce1 to i128 - %7 = shl nuw i128 %6, 64 - %8 = or disjoint i128 %7, %5 - %cmp.sroa.0.0.insert.insert.i = tail call i128 @llvm.bswap.i128(i128 %8) - %9 = zext i64 %newv.coerce0 to i128 - %10 = zext i64 %newv.coerce1 to i128 - %11 = shl nuw i128 %10, 64 - %12 = or disjoint i128 %11, %9 - %new.sroa.0.0.insert.insert.i = tail call i128 @llvm.bswap.i128(i128 %12) + %3 = zext i64 %cmpv.coerce0 to i128 + %4 = zext i64 %cmpv.coerce1 to i128 + %5 = shl nuw i128 %4, 64 + %6 = or disjoint i128 %5, %3 + %cmp.sroa.0.0.insert.insert.i = tail call i128 @llvm.bswap.i128(i128 %6) + %7 = zext i64 %newv.coerce0 to i128 + %8 = zext i64 %newv.coerce1 to i128 + %9 = shl nuw i128 %8, 64 + %10 = or disjoint i128 %9, %7 + %new.sroa.0.0.insert.insert.i = tail call i128 @llvm.bswap.i128(i128 %10) call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 16) ] - %13 = cmpxchg ptr %1, i128 %cmp.sroa.0.0.insert.insert.i, i128 %new.sroa.0.0.insert.insert.i seq_cst seq_cst, align 16 - %14 = extractvalue { i128, i1 } %13, 1 - %15 = extractvalue { i128, i1 } %13, 0 - %extract.t2.i = trunc i128 %15 to i64 - %extract4.i = lshr i128 %15, 64 + %11 = cmpxchg ptr %1, i128 %cmp.sroa.0.0.insert.insert.i, i128 %new.sroa.0.0.insert.insert.i seq_cst seq_cst, align 16 + %12 = extractvalue { i128, i1 } %11, 1 + %13 = extractvalue { i128, i1 } %11, 0 + %extract.t2.i = trunc i128 %13 to i64 + %extract4.i = lshr i128 %13, 64 %extract.t5.i = trunc nuw i128 %extract4.i to i64 - %_old.0.off0.i = select i1 %14, i64 %3, i64 %extract.t2.i - %_old.0.off64.i = select i1 %14, i64 %4, i64 %extract.t5.i fence syncscope("singlethread") seq_cst store i64 0, ptr %2, align 8 tail call void @qemu_plugin_vcpu_mem_cb(ptr noundef %add.ptr.i, i64 noundef %addr, i32 noundef %oi, i32 noundef 3) #16 - %16 = tail call i64 @llvm.bswap.i64(i64 %_old.0.off64.i) - %17 = tail call i64 @llvm.bswap.i64(i64 %_old.0.off0.i) - %.fca.0.insert.i.i6 = insertvalue { i64, i64 } poison, i64 %16, 0 + %14 = tail call i64 @llvm.bswap.i64(i64 %extract.t5.i) + %15 = select i1 %12, i64 %cmpv.coerce0, i64 %14 + %16 = tail call i64 @llvm.bswap.i64(i64 %extract.t2.i) + %17 = select i1 %12, i64 %cmpv.coerce1, i64 %16 + %.fca.0.insert.i.i6 = insertvalue { i64, i64 } poison, i64 %15, 0 %.fca.1.insert.i.i7 = insertvalue { i64, i64 } %.fca.0.insert.i.i6, i64 %17, 1 ret { i64, i64 } %.fca.1.insert.i.i7 } diff --git a/bench/qemu/optimized/hw_scsi_scsi-generic.c.ll b/bench/qemu/optimized/hw_scsi_scsi-generic.c.ll index f24d102058e..4b8785eb72b 100644 --- a/bench/qemu/optimized/hw_scsi_scsi-generic.c.ll +++ b/bench/qemu/optimized/hw_scsi_scsi-generic.c.ll @@ -1657,11 +1657,10 @@ calculate_max_transfer.exit: ; preds = %if.then39 %cmp58 = icmp eq i32 %buf40.12.buf40.12.buf40.12.arrayidx49.val, 0 %cmp61 = icmp ult i64 %div.i, %conv52 %or.cond50 = or i1 %cmp58, %cmp61 - %spec.select51 = select i1 %or.cond50, i32 %conv48, i32 %21 - %cond68 = select i1 %cmp54, i32 %21, i32 %spec.select51 - %22 = tail call i32 @llvm.bswap.i32(i32 %cond68) + %22 = select i1 %or.cond50, i32 %20, i32 %buf40.12.buf40.12.buf40.12.arrayidx49.val + %23 = select i1 %cmp54, i32 %buf40.12.buf40.12.buf40.12.arrayidx49.val, i32 %22 %buf40.12.buf40.12.buf40.12.arrayidx49.sroa_idx90 = getelementptr inbounds i8, ptr %buf40, i64 12 - store i32 %22, ptr %buf40.12.buf40.12.buf40.12.arrayidx49.sroa_idx90, align 4 + store i32 %23, ptr %buf40.12.buf40.12.buf40.12.arrayidx49.sroa_idx90, align 4 %add.ptr = getelementptr i8, ptr %19, i64 8 %sub = add nsw i32 %16, -8 %conv74 = zext nneg i32 %sub to i64 @@ -1671,41 +1670,41 @@ calculate_max_transfer.exit: ; preds = %if.then39 if.else: ; preds = %if.then28 %needs_vpd_bl_emulation = getelementptr inbounds i8, ptr %s, i64 604 - %23 = load i8, ptr %needs_vpd_bl_emulation, align 4 - %tobool75 = trunc i8 %23 to i1 + %24 = load i8, ptr %needs_vpd_bl_emulation, align 4 + %tobool75 = trunc i8 %24 to i1 %cmp79 = icmp eq i8 %11, 0 %or.cond = and i1 %cmp79, %tobool75 br i1 %or.cond, label %land.lhs.true81, label %if.end147 land.lhs.true81: ; preds = %if.else %buflen82 = getelementptr inbounds i8, ptr %r, i64 416 - %24 = load i32, ptr %buflen82, align 8 - %cmp83 = icmp sgt i32 %24, 3 + %25 = load i32, ptr %buflen82, align 8 + %cmp83 = icmp sgt i32 %25, 3 br i1 %cmp83, label %if.then85, label %if.end147 if.then85: ; preds = %land.lhs.true81 %buf86 = getelementptr inbounds i8, ptr %r, i64 408 - %25 = load ptr, ptr %buf86, align 8 - %add.ptr87 = getelementptr i8, ptr %25, i64 2 + %26 = load ptr, ptr %buf86, align 8 + %add.ptr87 = getelementptr i8, ptr %26, i64 2 %add.ptr87.val = load i16, ptr %add.ptr87, align 1 - %26 = lshr i16 %add.ptr87.val, 8 - %narrow = add nuw nsw i16 %26, 4 - %27 = and i16 %narrow, 255 - %conv90 = zext nneg i16 %27 to i32 - %28 = tail call i32 @llvm.umin.i32(i32 %conv90, i32 %24) - %conv99 = trunc nuw i32 %28 to i8 - %cmp10160 = icmp samesign ugt i32 %28, 4 + %27 = lshr i16 %add.ptr87.val, 8 + %narrow = add nuw nsw i16 %27, 4 + %28 = and i16 %narrow, 255 + %conv90 = zext nneg i16 %28 to i32 + %29 = tail call i32 @llvm.umin.i32(i32 %conv90, i32 %25) + %conv99 = trunc nuw i32 %29 to i8 + %cmp10160 = icmp samesign ugt i32 %29, 4 br i1 %cmp10160, label %land.rhs, label %while.end land.rhs: ; preds = %if.then85, %if.end123 - %conv10062 = phi i32 [ %conv100, %if.end123 ], [ %28, %if.then85 ] + %conv10062 = phi i32 [ %conv100, %if.end123 ], [ %29, %if.then85 ] %page_idx.061 = phi i8 [ %dec, %if.end123 ], [ %conv99, %if.then85 ] - %29 = load ptr, ptr %buf86, align 8 - %30 = zext i8 %page_idx.061 to i64 - %31 = getelementptr i8, ptr %29, i64 %30 - %arrayidx106 = getelementptr i8, ptr %31, i64 -1 - %32 = load i8, ptr %arrayidx106, align 1 - %cmp108 = icmp ugt i8 %32, -81 + %30 = load ptr, ptr %buf86, align 8 + %31 = zext i8 %page_idx.061 to i64 + %32 = getelementptr i8, ptr %30, i64 %31 + %arrayidx106 = getelementptr i8, ptr %32, i64 -1 + %33 = load i8, ptr %arrayidx106, align 1 + %cmp108 = icmp ugt i8 %33, -81 %.pre.pre70 = load i32, ptr %buflen82, align 8 br i1 %cmp108, label %while.body, label %while.end @@ -1714,7 +1713,7 @@ while.body: ; preds = %land.rhs br i1 %cmp112, label %if.then114, label %if.end123 if.then114: ; preds = %while.body - store i8 %32, ptr %31, align 1 + store i8 %33, ptr %32, align 1 br label %if.end123 if.end123: ; preds = %if.then114, %while.body @@ -1729,11 +1728,11 @@ if.end123.while.end.loopexit_crit_edge: ; preds = %if.end123 br label %while.end while.end: ; preds = %land.rhs, %if.end123.while.end.loopexit_crit_edge, %if.then85 - %.pre69 = phi ptr [ %25, %if.then85 ], [ %.pre69.pre.pre, %if.end123.while.end.loopexit_crit_edge ], [ %29, %land.rhs ] - %33 = phi i32 [ %24, %if.then85 ], [ %.pre.pre, %if.end123.while.end.loopexit_crit_edge ], [ %.pre.pre70, %land.rhs ] + %.pre69 = phi ptr [ %26, %if.then85 ], [ %.pre69.pre.pre, %if.end123.while.end.loopexit_crit_edge ], [ %30, %land.rhs ] + %34 = phi i32 [ %25, %if.then85 ], [ %.pre.pre, %if.end123.while.end.loopexit_crit_edge ], [ %.pre.pre70, %land.rhs ] %page_idx.0.lcssa = phi i8 [ %conv99, %if.then85 ], [ 4, %if.end123.while.end.loopexit_crit_edge ], [ %page_idx.061, %land.rhs ] - %conv100.lcssa = phi i32 [ %28, %if.then85 ], [ %conv100, %if.end123.while.end.loopexit_crit_edge ], [ %conv10062, %land.rhs ] - %cmp126 = icmp sgt i32 %33, %conv100.lcssa + %conv100.lcssa = phi i32 [ %29, %if.then85 ], [ %conv100, %if.end123.while.end.loopexit_crit_edge ], [ %conv10062, %land.rhs ] + %cmp126 = icmp sgt i32 %34, %conv100.lcssa br i1 %cmp126, label %if.then128, label %if.end132 if.then128: ; preds = %while.end @@ -1744,15 +1743,15 @@ if.then128: ; preds = %while.end br label %if.end132 if.end132: ; preds = %if.then128, %while.end - %34 = phi ptr [ %.pre68, %if.then128 ], [ %.pre69, %while.end ] - %add.ptr134 = getelementptr i8, ptr %34, i64 2 + %35 = phi ptr [ %.pre68, %if.then128 ], [ %.pre69, %while.end ] + %add.ptr134 = getelementptr i8, ptr %35, i64 2 %add.ptr134.val = load i16, ptr %add.ptr134, align 1 - %35 = tail call i16 @llvm.bswap.i16(i16 %add.ptr134.val) - %conv139 = add i16 %35, 1 - %36 = tail call i16 @llvm.bswap.i16(i16 %conv139) - store i16 %36, ptr %add.ptr134, align 1 - %37 = load i32, ptr %buflen82, align 8 - %cmp141 = icmp slt i32 %len, %37 + %36 = tail call i16 @llvm.bswap.i16(i16 %add.ptr134.val) + %conv139 = add i16 %36, 1 + %37 = tail call i16 @llvm.bswap.i16(i16 %conv139) + store i16 %37, ptr %add.ptr134, align 1 + %38 = load i32, ptr %buflen82, align 8 + %cmp141 = icmp slt i32 %len, %38 %inc = zext i1 %cmp141 to i32 %spec.select = add i32 %len, %inc br label %if.end147 diff --git a/bench/qemu/optimized/linux-user_syscall.c.ll b/bench/qemu/optimized/linux-user_syscall.c.ll index 64a47de439d..cdc2aacbf15 100644 --- a/bench/qemu/optimized/linux-user_syscall.c.ll +++ b/bench/qemu/optimized/linux-user_syscall.c.ll @@ -16797,22 +16797,17 @@ if.else29: ; preds = %if.else if.then38: ; preds = %if.else29 %cmp39 = icmp eq i32 %i.043, 0 - br i1 %cmp39, label %fail2, label %if.end44.thread + br i1 %cmp39, label %fail2, label %if.end54 if.end44: ; preds = %if.else29 - %spec.select = select i1 %bad_address.045, i64 0, i64 %1 - br label %if.end44.thread - -if.end44.thread: ; preds = %if.end44, %if.then38 - %bad_address.150 = phi i1 [ true, %if.then38 ], [ %bad_address.045, %if.end44 ] - %2 = phi i64 [ 0, %if.then38 ], [ %spec.select, %if.end44 ] %sub = sub i64 2147479552, %total_len.042 - %spec.select40 = tail call i64 @llvm.umin.i64(i64 %2, i64 %sub) + %2 = tail call i64 @llvm.umin.i64(i64 %1, i64 %sub) + %spec.select = select i1 %bad_address.045, i64 0, i64 %2 br label %if.end54 -if.end54: ; preds = %if.end44.thread, %if.then25 - %bad_address.2 = phi i1 [ %bad_address.045, %if.then25 ], [ %bad_address.150, %if.end44.thread ] - %len.1 = phi i64 [ 0, %if.then25 ], [ %spec.select40, %if.end44.thread ] +if.end54: ; preds = %if.end44, %if.then38, %if.then25 + %bad_address.2 = phi i1 [ %bad_address.045, %if.then25 ], [ true, %if.then38 ], [ %bad_address.045, %if.end44 ] + %len.1 = phi i64 [ 0, %if.then25 ], [ 0, %if.then38 ], [ %spec.select, %if.end44 ] %iov_len57 = getelementptr %struct.iovec, ptr %call5, i64 %conv46, i32 1 store i64 %len.1, ptr %iov_len57, align 8 %add = add i64 %len.1, %total_len.042 diff --git a/bench/qemu/optimized/tcg.c.ll b/bench/qemu/optimized/tcg.c.ll index 437b5364d6b..38a225907df 100644 --- a/bench/qemu/optimized/tcg.c.ll +++ b/bench/qemu/optimized/tcg.c.ll @@ -1866,58 +1866,54 @@ vaarg.end59.thread: ; preds = %sw.bb46 store ptr %overflow_arg_area.next58, ptr %overflow_arg_area_p56, align 8 %198 = load i64, ptr %overflow_arg_area57, align 8 %sub.ptr.sub.i.i174221 = sub i64 %198, %sub.ptr.rhs.cast.i.i - %199 = inttoptr i64 %sub.ptr.sub.i.i174221 to ptr br label %vaarg.end73.thread vaarg.end59: ; preds = %sw.bb46 - %200 = getelementptr inbounds i8, ptr %va, i64 16 - %reg_save_area54 = load ptr, ptr %200, align 16 - %201 = zext nneg i32 %gp_offset36 to i64 - %202 = getelementptr i8, ptr %reg_save_area54, i64 %201 - %203 = add nuw nsw i32 %gp_offset36, 8 - store i32 %203, ptr %va, align 16 - %204 = load i64, ptr %202, align 8 - %sub.ptr.sub.i.i174 = sub i64 %204, %sub.ptr.rhs.cast.i.i - %205 = inttoptr i64 %sub.ptr.sub.i.i174 to ptr + %199 = getelementptr inbounds i8, ptr %va, i64 16 + %reg_save_area54 = load ptr, ptr %199, align 16 + %200 = zext nneg i32 %gp_offset36 to i64 + %201 = getelementptr i8, ptr %reg_save_area54, i64 %200 + %202 = add nuw nsw i32 %gp_offset36, 8 + store i32 %202, ptr %va, align 16 + %203 = load i64, ptr %201, align 8 + %sub.ptr.sub.i.i174 = sub i64 %203, %sub.ptr.rhs.cast.i.i %fits_in_gp66 = icmp ult i32 %gp_offset36, 33 br i1 %fits_in_gp66, label %vaarg.end73, label %vaarg.end73.thread vaarg.end73.thread: ; preds = %vaarg.end59, %vaarg.end59.thread - %206 = phi ptr [ %199, %vaarg.end59.thread ], [ %205, %vaarg.end59 ] + %sub.ptr.sub.i.i174225 = phi i64 [ %sub.ptr.sub.i.i174221, %vaarg.end59.thread ], [ %sub.ptr.sub.i.i174, %vaarg.end59 ] %overflow_arg_area_p70 = getelementptr inbounds i8, ptr %va, i64 8 %overflow_arg_area71 = load ptr, ptr %overflow_arg_area_p70, align 8 %overflow_arg_area.next72 = getelementptr i8, ptr %overflow_arg_area71, i64 8 store ptr %overflow_arg_area.next72, ptr %overflow_arg_area_p70, align 8 - %207 = load i64, ptr %overflow_arg_area71, align 8 - %sub.ptr.sub.i.i176226 = sub i64 %207, %sub.ptr.rhs.cast.i.i - %208 = inttoptr i64 %sub.ptr.sub.i.i176226 to ptr + %204 = load i64, ptr %overflow_arg_area71, align 8 + %sub.ptr.sub.i.i176229 = sub i64 %204, %sub.ptr.rhs.cast.i.i br label %vaarg.in_mem83 vaarg.end73: ; preds = %vaarg.end59 - %209 = getelementptr inbounds i8, ptr %va, i64 16 - %reg_save_area68 = load ptr, ptr %209, align 16 - %210 = zext nneg i32 %203 to i64 - %211 = getelementptr i8, ptr %reg_save_area68, i64 %210 - %212 = add nuw nsw i32 %gp_offset36, 16 - store i32 %212, ptr %va, align 16 - %213 = load i64, ptr %211, align 8 - %sub.ptr.sub.i.i176 = sub i64 %213, %sub.ptr.rhs.cast.i.i - %214 = inttoptr i64 %sub.ptr.sub.i.i176 to ptr + %205 = getelementptr inbounds i8, ptr %va, i64 16 + %reg_save_area68 = load ptr, ptr %205, align 16 + %206 = zext nneg i32 %202 to i64 + %207 = getelementptr i8, ptr %reg_save_area68, i64 %206 + %208 = add nuw nsw i32 %gp_offset36, 16 + store i32 %208, ptr %va, align 16 + %209 = load i64, ptr %207, align 8 + %sub.ptr.sub.i.i176 = sub i64 %209, %sub.ptr.rhs.cast.i.i %fits_in_gp80 = icmp ult i32 %gp_offset36, 25 br i1 %fits_in_gp80, label %vaarg.in_reg81, label %vaarg.in_mem83 vaarg.in_reg81: ; preds = %vaarg.end73 - %215 = getelementptr inbounds i8, ptr %va, i64 16 - %reg_save_area82 = load ptr, ptr %215, align 16 - %216 = zext nneg i32 %212 to i64 - %217 = getelementptr i8, ptr %reg_save_area82, i64 %216 - %218 = add nuw nsw i32 %gp_offset36, 24 - store i32 %218, ptr %va, align 16 + %210 = getelementptr inbounds i8, ptr %va, i64 16 + %reg_save_area82 = load ptr, ptr %210, align 16 + %211 = zext nneg i32 %208 to i64 + %212 = getelementptr i8, ptr %reg_save_area82, i64 %211 + %213 = add nuw nsw i32 %gp_offset36, 24 + store i32 %213, ptr %va, align 16 br label %vaarg.end87 vaarg.in_mem83: ; preds = %vaarg.end73.thread, %vaarg.end73 - %219 = phi ptr [ %208, %vaarg.end73.thread ], [ %214, %vaarg.end73 ] - %220 = phi ptr [ %206, %vaarg.end73.thread ], [ %205, %vaarg.end73 ] + %sub.ptr.sub.i.i176234 = phi i64 [ %sub.ptr.sub.i.i176229, %vaarg.end73.thread ], [ %sub.ptr.sub.i.i176, %vaarg.end73 ] + %sub.ptr.sub.i.i174224232 = phi i64 [ %sub.ptr.sub.i.i174225, %vaarg.end73.thread ], [ %sub.ptr.sub.i.i174, %vaarg.end73 ] %overflow_arg_area_p84 = getelementptr inbounds i8, ptr %va, i64 8 %overflow_arg_area85 = load ptr, ptr %overflow_arg_area_p84, align 8 %overflow_arg_area.next86 = getelementptr i8, ptr %overflow_arg_area85, i64 8 @@ -1925,38 +1921,36 @@ vaarg.in_mem83: ; preds = %vaarg.end73.thread, br label %vaarg.end87 vaarg.end87: ; preds = %vaarg.in_mem83, %vaarg.in_reg81 - %221 = phi ptr [ %214, %vaarg.in_reg81 ], [ %219, %vaarg.in_mem83 ] - %222 = phi ptr [ %205, %vaarg.in_reg81 ], [ %220, %vaarg.in_mem83 ] - %vaarg.addr88 = phi ptr [ %217, %vaarg.in_reg81 ], [ %overflow_arg_area85, %vaarg.in_mem83 ] - %223 = load i64, ptr %vaarg.addr88, align 8 - %conv89 = trunc i64 %223 to i32 + %sub.ptr.sub.i.i176233 = phi i64 [ %sub.ptr.sub.i.i176, %vaarg.in_reg81 ], [ %sub.ptr.sub.i.i176234, %vaarg.in_mem83 ] + %sub.ptr.sub.i.i174224231 = phi i64 [ %sub.ptr.sub.i.i174, %vaarg.in_reg81 ], [ %sub.ptr.sub.i.i174224232, %vaarg.in_mem83 ] + %vaarg.addr88 = phi ptr [ %212, %vaarg.in_reg81 ], [ %overflow_arg_area85, %vaarg.in_mem83 ] + %214 = load i64, ptr %vaarg.addr88, align 8 + %conv89 = trunc i64 %214 to i32 %call.i.i177 = call fastcc ptr @tcg_temp_new_internal(i32 noundef %type, i32 noundef 0) - %224 = load ptr, ptr %0, align 8 + %215 = load ptr, ptr %0, align 8 %sub.ptr.lhs.cast.i.i.i.i.i178 = ptrtoint ptr %call.i.i177 to i64 - %sub.ptr.rhs.cast.i.i.i.i179 = ptrtoint ptr %224 to i64 + %sub.ptr.rhs.cast.i.i.i.i179 = ptrtoint ptr %215 to i64 %sub.ptr.sub.i.i.i.i180 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i178, %sub.ptr.rhs.cast.i.i.i.i179 - %225 = inttoptr i64 %sub.ptr.sub.i.i.i.i180 to ptr - %call1.i = call fastcc zeroext i1 @expand_vec_cmp_noinv(i32 noundef %type, i32 noundef %vece, ptr noundef %225, ptr noundef %17, ptr noundef %197, i32 noundef %conv89) - %spec.select.i = select i1 %call1.i, ptr %222, ptr %221 - %spec.select8.i = select i1 %call1.i, ptr %221, ptr %222 - %226 = load ptr, ptr %0, align 8 - %add.ptr.i.i.i.i181 = getelementptr i8, ptr %226, i64 %sub.ptr.sub.i.i - %227 = ptrtoint ptr %add.ptr.i.i.i.i181 to i64 - %228 = ptrtoint ptr %spec.select.i to i64 - %add.ptr.i.i.i9.i = getelementptr i8, ptr %226, i64 %228 - %229 = ptrtoint ptr %add.ptr.i.i.i9.i to i64 - %230 = ptrtoint ptr %spec.select8.i to i64 - %add.ptr.i.i.i10.i = getelementptr i8, ptr %226, i64 %230 - %231 = ptrtoint ptr %add.ptr.i.i.i10.i to i64 - %add.ptr.i.i.i11.i = getelementptr i8, ptr %226, i64 %sub.ptr.sub.i.i.i.i180 - %232 = ptrtoint ptr %add.ptr.i.i.i11.i to i64 - call void @vec_gen_4(i32 noundef 195, i32 noundef %type, i32 noundef %vece, i64 noundef %227, i64 noundef %229, i64 noundef %231, i64 noundef %232) #28 - %233 = load ptr, ptr %0, align 8 - %add.ptr.i.i.i12.i = getelementptr i8, ptr %233, i64 %sub.ptr.sub.i.i.i.i180 + %216 = inttoptr i64 %sub.ptr.sub.i.i.i.i180 to ptr + %call1.i = call fastcc zeroext i1 @expand_vec_cmp_noinv(i32 noundef %type, i32 noundef %vece, ptr noundef %216, ptr noundef %17, ptr noundef %197, i32 noundef %conv89) + %spec.select8.i.v = select i1 %call1.i, i64 %sub.ptr.sub.i.i176233, i64 %sub.ptr.sub.i.i174224231 + %217 = load ptr, ptr %0, align 8 + %add.ptr.i.i.i.i181 = getelementptr i8, ptr %217, i64 %sub.ptr.sub.i.i + %218 = ptrtoint ptr %add.ptr.i.i.i.i181 to i64 + %219 = select i1 %call1.i, i64 %sub.ptr.sub.i.i174224231, i64 %sub.ptr.sub.i.i176233 + %add.ptr.i.i.i9.i = getelementptr i8, ptr %217, i64 %219 + %220 = ptrtoint ptr %add.ptr.i.i.i9.i to i64 + %add.ptr.i.i.i10.i = getelementptr i8, ptr %217, i64 %spec.select8.i.v + %221 = ptrtoint ptr %add.ptr.i.i.i10.i to i64 + %add.ptr.i.i.i11.i = getelementptr i8, ptr %217, i64 %sub.ptr.sub.i.i.i.i180 + %222 = ptrtoint ptr %add.ptr.i.i.i11.i to i64 + call void @vec_gen_4(i32 noundef 195, i32 noundef %type, i32 noundef %vece, i64 noundef %218, i64 noundef %220, i64 noundef %221, i64 noundef %222) #28 + %223 = load ptr, ptr %0, align 8 + %add.ptr.i.i.i12.i = getelementptr i8, ptr %223, i64 %sub.ptr.sub.i.i.i.i180 %bf.load.i.i.i182 = load i64, ptr %add.ptr.i.i.i12.i, align 8 %bf.lshr.i.i.i183 = lshr i64 %bf.load.i.i.i182, 32 - %234 = trunc nuw i64 %bf.lshr.i.i.i183 to i32 - %bf.cast.i.i.i184 = and i32 %234, 7 + %224 = trunc nuw i64 %bf.lshr.i.i.i183 to i32 + %bf.cast.i.i.i184 = and i32 %224, 7 switch i32 %bf.cast.i.i.i184, label %do.body12.i.i.i200 [ i32 4, label %sw.epilog i32 1, label %sw.epilog @@ -1964,27 +1958,27 @@ vaarg.end87: ; preds = %vaarg.in_mem83, %va ] do.body.i.i.i185: ; preds = %vaarg.end87 - %235 = and i64 %bf.load.i.i.i182, 549755813888 - %cmp.i.i.i186 = icmp ne i64 %235, 0 + %225 = and i64 %bf.load.i.i.i182, 549755813888 + %cmp.i.i.i186 = icmp ne i64 %225, 0 call void @llvm.assume(i1 %cmp.i.i.i186) %bf.clear7.i.i.i187 = and i64 %bf.load.i.i.i182, -549755813889 store i64 %bf.clear7.i.i.i187, ptr %add.ptr.i.i.i12.i, align 8 - %236 = load ptr, ptr %0, align 8 - %temps.i.i.i.i188 = getelementptr inbounds i8, ptr %236, i64 664 + %226 = load ptr, ptr %0, align 8 + %temps.i.i.i.i188 = getelementptr inbounds i8, ptr %226, i64 664 %sub.ptr.lhs.cast.i.i.i.i189 = ptrtoint ptr %add.ptr.i.i.i12.i to i64 %sub.ptr.rhs.cast.i.i.i13.i = ptrtoint ptr %temps.i.i.i.i188 to i64 %sub.ptr.sub.i.i.i14.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i189, %sub.ptr.rhs.cast.i.i.i13.i %sub.ptr.div.i.i.i.i190 = sdiv exact i64 %sub.ptr.sub.i.i.i14.i, 56 - %free_temps.i.i.i191 = getelementptr inbounds i8, ptr %233, i64 280 - %237 = lshr i64 %bf.load.i.i.i182, 16 - %bf.cast11.i.i.i192 = and i64 %237, 255 + %free_temps.i.i.i191 = getelementptr inbounds i8, ptr %223, i64 280 + %227 = lshr i64 %bf.load.i.i.i182, 16 + %bf.cast11.i.i.i192 = and i64 %227, 255 %arrayidx.i.i.i193 = getelementptr [6 x %struct.TCGTempSet], ptr %free_temps.i.i.i191, i64 0, i64 %bf.cast11.i.i.i192 %rem.i.i.i.i194 = and i64 %sub.ptr.div.i.i.i.i190, 63 %shl.i.i.i.i195 = shl nuw i64 1, %rem.i.i.i.i194 %div2.i.i.i.i196 = lshr i64 %sub.ptr.div.i.i.i.i190, 6 %add.ptr.i.i1.i.i197 = getelementptr i64, ptr %arrayidx.i.i.i193, i64 %div2.i.i.i.i196 - %238 = load i64, ptr %add.ptr.i.i1.i.i197, align 8 - %or.i.i.i.i198 = or i64 %shl.i.i.i.i195, %238 + %228 = load i64, ptr %add.ptr.i.i1.i.i197, align 8 + %or.i.i.i.i198 = or i64 %shl.i.i.i.i195, %228 store i64 %or.i.i.i.i198, ptr %add.ptr.i.i1.i.i197, align 8 br label %sw.epilog diff --git a/bench/qemu/optimized/util_buffer.c.ll b/bench/qemu/optimized/util_buffer.c.ll index 9f9049f8999..9885c168fc0 100644 --- a/bench/qemu/optimized/util_buffer.c.ll +++ b/bench/qemu/optimized/util_buffer.c.ll @@ -48,36 +48,31 @@ entry: %shr = lshr i64 %mul, 7 %1 = getelementptr i8, ptr %buffer, i64 16 %buffer.val = load i64, ptr %1, align 8 - %sub.i.i = add i64 %buffer.val, -1 - %2 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %sub.i.i, i1 false) + %add.i = add i64 %buffer.val, -1 + %2 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %add.i, i1 false) %tobool.not.i.i = icmp eq i64 %2, 0 %sub2.i.i = add nuw nsw i64 %2, 4294967295 %sh_prom.i.i = and i64 %sub2.i.i, 4294967295 %shr.i.i = lshr exact i64 -9223372036854775808, %sh_prom.i.i - %tobool1.not.i.i = icmp eq i64 %buffer.val, 0 - %conv.i.i = zext i1 %tobool1.not.i.i to i64 - %retval.0.i.i = select i1 %tobool.not.i.i, i64 %conv.i.i, i64 %shr.i.i - %cond.i = tail call range(i64 4096, -9223372036854775807) i64 @llvm.umax.i64(i64 %retval.0.i.i, i64 4096) + %3 = tail call i64 @llvm.umax.i64(i64 %shr.i.i, i64 4096) + %cond.i = select i1 %tobool.not.i.i, i64 4096, i64 %3 %add = add nuw i64 %cond.i, %shr store i64 %add, ptr %avg_size, align 8 %shr.i = lshr i64 %add, 7 - %add.i = add i64 %shr.i, %buffer.val - %sub.i.i14 = add i64 %add.i, -1 - %3 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %sub.i.i14, i1 false) - %tobool.not.i.i15 = icmp eq i64 %3, 0 - %sub2.i.i16 = add nuw nsw i64 %3, 4294967295 + %sub.i.i = add i64 %shr.i, %add.i + %4 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %sub.i.i, i1 false) + %tobool.not.i.i15 = icmp eq i64 %4, 0 + %sub2.i.i16 = add nuw nsw i64 %4, 4294967295 %sh_prom.i.i17 = and i64 %sub2.i.i16, 4294967295 %shr.i.i18 = lshr exact i64 -9223372036854775808, %sh_prom.i.i17 - %tobool1.not.i.i19 = icmp eq i64 %add.i, 0 - %conv.i.i20 = zext i1 %tobool1.not.i.i19 to i64 - %retval.0.i.i21 = select i1 %tobool.not.i.i15, i64 %conv.i.i20, i64 %shr.i.i18 - %cond.i22 = tail call range(i64 4096, -9223372036854775807) i64 @llvm.umax.i64(i64 %retval.0.i.i21, i64 4096) + %5 = tail call i64 @llvm.umax.i64(i64 %shr.i.i18, i64 4096) + %cond.i19 = select i1 %tobool.not.i.i15, i64 4096, i64 %5 %capacity = getelementptr inbounds i8, ptr %buffer, i64 8 - %4 = load i64, ptr %capacity, align 8 - %shr5 = lshr i64 %4, 3 - %cmp = icmp ult i64 %cond.i22, %shr5 - %cmp6 = icmp ugt i64 %retval.0.i.i21, 65535 - %or.cond = and i1 %cmp6, %cmp + %6 = load i64, ptr %capacity, align 8 + %shr5 = lshr i64 %6, 3 + %cmp = icmp ult i64 %cond.i19, %shr5 + %cmp6 = icmp ugt i64 %cond.i19, 65535 + %or.cond = and i1 %cmp, %cmp6 br i1 %or.cond, label %if.then, label %if.end if.then: ; preds = %entry @@ -97,65 +92,63 @@ entry: %0 = load i64, ptr %capacity, align 8 %1 = getelementptr i8, ptr %buffer, i64 16 %buffer.val = load i64, ptr %1, align 8 - %add.i = add i64 %buffer.val, %len - %sub.i.i = add i64 %add.i, -1 + %add.i = add i64 %len, -1 + %sub.i.i = add i64 %add.i, %buffer.val %2 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %sub.i.i, i1 false) %tobool.not.i.i = icmp eq i64 %2, 0 %sub2.i.i = add nuw nsw i64 %2, 4294967295 %sh_prom.i.i = and i64 %sub2.i.i, 4294967295 %shr.i.i = lshr exact i64 -9223372036854775808, %sh_prom.i.i - %tobool1.not.i.i = icmp eq i64 %add.i, 0 - %conv.i.i = zext i1 %tobool1.not.i.i to i64 - %retval.0.i.i = select i1 %tobool.not.i.i, i64 %conv.i.i, i64 %shr.i.i - %cond.i = tail call range(i64 4096, -9223372036854775807) i64 @llvm.umax.i64(i64 %retval.0.i.i, i64 4096) + %3 = tail call i64 @llvm.umax.i64(i64 %shr.i.i, i64 4096) + %cond.i = select i1 %tobool.not.i.i, i64 4096, i64 %3 store i64 %cond.i, ptr %capacity, align 8 %buffer2 = getelementptr inbounds i8, ptr %buffer, i64 32 - %3 = load ptr, ptr %buffer2, align 8 - %call4 = tail call ptr @g_realloc(ptr noundef %3, i64 noundef %cond.i) #12 + %4 = load ptr, ptr %buffer2, align 8 + %call4 = tail call ptr @g_realloc(ptr noundef %4, i64 noundef %cond.i) #12 store ptr %call4, ptr %buffer2, align 8 - %4 = load ptr, ptr %buffer, align 8 - %tobool.not = icmp eq ptr %4, null - %..str = select i1 %tobool.not, ptr @.str, ptr %4 - %5 = load i64, ptr %capacity, align 8 + %5 = load ptr, ptr %buffer, align 8 + %tobool.not = icmp eq ptr %5, null + %..str = select i1 %tobool.not, ptr @.str, ptr %5 + %6 = load i64, ptr %capacity, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %_now.i.i) - %6 = load i32, ptr @trace_events_enabled_count, align 4 - %tobool.i.i = icmp ne i32 %6, 0 - %7 = load i16, ptr @_TRACE_BUFFER_RESIZE_DSTATE, align 2 - %tobool4.i.i = icmp ne i16 %7, 0 + %7 = load i32, ptr @trace_events_enabled_count, align 4 + %tobool.i.i = icmp ne i32 %7, 0 + %8 = load i16, ptr @_TRACE_BUFFER_RESIZE_DSTATE, align 2 + %tobool4.i.i = icmp ne i16 %8, 0 %or.cond.i.i = select i1 %tobool.i.i, i1 %tobool4.i.i, i1 false br i1 %or.cond.i.i, label %land.lhs.true5.i.i, label %trace_buffer_resize.exit land.lhs.true5.i.i: ; preds = %entry - %8 = load i32, ptr @qemu_loglevel, align 4 - %and.i.i.i = and i32 %8, 32768 + %9 = load i32, ptr @qemu_loglevel, align 4 + %and.i.i.i = and i32 %9, 32768 %cmp.i.not.i.i = icmp eq i32 %and.i.i.i, 0 br i1 %cmp.i.not.i.i, label %trace_buffer_resize.exit, label %if.then.i.i if.then.i.i: ; preds = %land.lhs.true5.i.i - %9 = load i8, ptr @message_with_timestamp, align 1 - %tobool7.i.i = trunc i8 %9 to i1 + %10 = load i8, ptr @message_with_timestamp, align 1 + %tobool7.i.i = trunc i8 %10 to i1 br i1 %tobool7.i.i, label %if.then8.i.i, label %if.else.i.i if.then8.i.i: ; preds = %if.then.i.i %call9.i.i = call i32 @gettimeofday(ptr noundef nonnull %_now.i.i, ptr noundef null) #12 %call10.i.i = tail call i32 @qemu_get_thread_id() #12 - %10 = load i64, ptr %_now.i.i, align 8 + %11 = load i64, ptr %_now.i.i, align 8 %tv_usec.i.i = getelementptr inbounds i8, ptr %_now.i.i, i64 8 - %11 = load i64, ptr %tv_usec.i.i, align 8 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.3, i32 noundef %call10.i.i, i64 noundef %10, i64 noundef %11, ptr noundef nonnull %..str, i64 noundef %0, i64 noundef %5) #12 + %12 = load i64, ptr %tv_usec.i.i, align 8 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.3, i32 noundef %call10.i.i, i64 noundef %11, i64 noundef %12, ptr noundef nonnull %..str, i64 noundef %0, i64 noundef %6) #12 br label %trace_buffer_resize.exit if.else.i.i: ; preds = %if.then.i.i - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.4, ptr noundef nonnull %..str, i64 noundef %0, i64 noundef %5) #12 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.4, ptr noundef nonnull %..str, i64 noundef %0, i64 noundef %6) #12 br label %trace_buffer_resize.exit trace_buffer_resize.exit: ; preds = %entry, %land.lhs.true5.i.i, %if.then8.i.i, %if.else.i.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %_now.i.i) %avg_size = getelementptr inbounds i8, ptr %buffer, i64 24 - %12 = load i64, ptr %avg_size, align 8 - %13 = load i64, ptr %capacity, align 8 - %shl = shl i64 %13, 7 - %cond11 = tail call i64 @llvm.umax.i64(i64 %12, i64 %shl) + %13 = load i64, ptr %avg_size, align 8 + %14 = load i64, ptr %capacity, align 8 + %shl = shl i64 %14, 7 + %cond11 = tail call i64 @llvm.umax.i64(i64 %13, i64 %shl) store i64 %cond11, ptr %avg_size, align 8 ret void } @@ -212,16 +205,16 @@ entry: %add.i = add nuw nsw i64 %shr.i, 4096 store i64 %add.i, ptr %avg_size.i, align 8 %shr.i.i = lshr i64 %add.i, 7 - %sub.i.i14.i = add nsw i64 %shr.i.i, -1 - %1 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %sub.i.i14.i, i1 false) + %sub.i.i.i = add nsw i64 %shr.i.i, -1 + %1 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %sub.i.i.i, i1 false) %sub2.i.i16.i = add nuw nsw i64 %1, 4294967295 %sh_prom.i.i17.i = and i64 %sub2.i.i16.i, 4294967295 %shr.i.i18.i = lshr exact i64 -9223372036854775808, %sh_prom.i.i17.i - %cond.i22.i = tail call range(i64 4096, -9223372036854775807) i64 @llvm.umax.i64(i64 %shr.i.i18.i, i64 4096) + %2 = tail call i64 @llvm.umax.i64(i64 %shr.i.i18.i, i64 4096) %capacity.i = getelementptr inbounds i8, ptr %buffer, i64 8 - %2 = load i64, ptr %capacity.i, align 8 - %shr5.i = lshr i64 %2, 3 - %cmp.i = icmp ult i64 %cond.i22.i, %shr5.i + %3 = load i64, ptr %capacity.i, align 8 + %shr5.i = lshr i64 %3, 3 + %cmp.i = icmp ult i64 %2, %shr5.i %cmp6.i = icmp samesign ult i64 %sh_prom.i.i17.i, 48 %or.cond.i = and i1 %cmp6.i, %cmp.i br i1 %or.cond.i, label %if.then.i, label %buffer_shrink.exit @@ -325,36 +318,31 @@ entry: %3 = load i64, ptr %avg_size.i, align 8 %mul.i = mul i64 %3, 127 %shr.i = lshr i64 %mul.i, 7 - %sub.i.i.i = add i64 %sub4, -1 - %4 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %sub.i.i.i, i1 false) + %add.i.i = add i64 %sub4, -1 + %4 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %add.i.i, i1 false) %tobool.not.i.i.i = icmp eq i64 %4, 0 %sub2.i.i.i = add nuw nsw i64 %4, 4294967295 %sh_prom.i.i.i = and i64 %sub2.i.i.i, 4294967295 %shr.i.i.i = lshr exact i64 -9223372036854775808, %sh_prom.i.i.i - %tobool1.not.i.i.i = icmp eq i64 %2, %len - %conv.i.i.i = zext i1 %tobool1.not.i.i.i to i64 - %retval.0.i.i.i = select i1 %tobool.not.i.i.i, i64 %conv.i.i.i, i64 %shr.i.i.i - %cond.i.i = tail call range(i64 4096, -9223372036854775807) i64 @llvm.umax.i64(i64 %retval.0.i.i.i, i64 4096) + %5 = tail call i64 @llvm.umax.i64(i64 %shr.i.i.i, i64 4096) + %cond.i.i = select i1 %tobool.not.i.i.i, i64 4096, i64 %5 %add.i = add nuw i64 %cond.i.i, %shr.i store i64 %add.i, ptr %avg_size.i, align 8 %shr.i.i = lshr i64 %add.i, 7 - %add.i.i = add i64 %shr.i.i, %sub4 - %sub.i.i14.i = add i64 %add.i.i, -1 - %5 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %sub.i.i14.i, i1 false) - %tobool.not.i.i15.i = icmp eq i64 %5, 0 - %sub2.i.i16.i = add nuw nsw i64 %5, 4294967295 + %sub.i.i.i = add i64 %shr.i.i, %add.i.i + %6 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %sub.i.i.i, i1 false) + %tobool.not.i.i15.i = icmp eq i64 %6, 0 + %sub2.i.i16.i = add nuw nsw i64 %6, 4294967295 %sh_prom.i.i17.i = and i64 %sub2.i.i16.i, 4294967295 %shr.i.i18.i = lshr exact i64 -9223372036854775808, %sh_prom.i.i17.i - %tobool1.not.i.i19.i = icmp eq i64 %add.i.i, 0 - %conv.i.i20.i = zext i1 %tobool1.not.i.i19.i to i64 - %retval.0.i.i21.i = select i1 %tobool.not.i.i15.i, i64 %conv.i.i20.i, i64 %shr.i.i18.i - %cond.i22.i = tail call range(i64 4096, -9223372036854775807) i64 @llvm.umax.i64(i64 %retval.0.i.i21.i, i64 4096) + %7 = tail call i64 @llvm.umax.i64(i64 %shr.i.i18.i, i64 4096) + %cond.i19.i = select i1 %tobool.not.i.i15.i, i64 4096, i64 %7 %capacity.i = getelementptr inbounds i8, ptr %buffer, i64 8 - %6 = load i64, ptr %capacity.i, align 8 - %shr5.i = lshr i64 %6, 3 - %cmp.i = icmp ult i64 %cond.i22.i, %shr5.i - %cmp6.i = icmp ugt i64 %retval.0.i.i21.i, 65535 - %or.cond.i = and i1 %cmp6.i, %cmp.i + %8 = load i64, ptr %capacity.i, align 8 + %shr5.i = lshr i64 %8, 3 + %cmp.i = icmp ult i64 %cond.i19.i, %shr5.i + %cmp6.i = icmp ugt i64 %cond.i19.i, 65535 + %or.cond.i = and i1 %cmp.i, %cmp6.i br i1 %or.cond.i, label %if.then.i, label %buffer_shrink.exit if.then.i: ; preds = %entry diff --git a/bench/raylib/optimized/raudio.c.ll b/bench/raylib/optimized/raudio.c.ll index 6a1da47107a..cf9cc2dee32 100644 --- a/bench/raylib/optimized/raudio.c.ll +++ b/bench/raylib/optimized/raudio.c.ll @@ -77033,21 +77033,21 @@ drmp3_hdr_padding.exit: ; preds = %drmp3_hdr_compare.e %57 = icmp eq i32 %56, 2 %58 = zext i1 %57 to i32 %59 = lshr exact i32 1152, %58 - %60 = mul nuw nsw i32 %59, 250 - %61 = lshr i32 %28, 3 - %.lobit.i.i = and i32 %61, 1 - %62 = zext nneg i32 %.lobit.i.i to i64 - %63 = lshr i32 %28, 1 - %64 = and i32 %63, 3 - %65 = add nsw i32 %64, -1 - %66 = sext i32 %65 to i64 - %67 = lshr i8 %36, 4 - %68 = zext nneg i8 %67 to i64 - %69 = getelementptr inbounds [2 x [3 x [15 x i8]]], ptr @drmp3_hdr_bitrate_kbps.halfrate, i64 0, i64 %62, i64 %66, i64 %68 - %70 = load i8, ptr %69, align 1 - %71 = zext i8 %70 to i32 - %72 = select i1 %55, i32 96000, i32 %60 - %73 = mul nuw nsw i32 %72, %71 + %60 = lshr i32 %28, 3 + %.lobit.i.i = and i32 %60, 1 + %61 = zext nneg i32 %.lobit.i.i to i64 + %62 = lshr i32 %28, 1 + %63 = and i32 %62, 3 + %64 = add nsw i32 %63, -1 + %65 = sext i32 %64 to i64 + %66 = lshr i8 %36, 4 + %67 = zext nneg i8 %66 to i64 + %68 = getelementptr inbounds [2 x [3 x [15 x i8]]], ptr @drmp3_hdr_bitrate_kbps.halfrate, i64 0, i64 %61, i64 %65, i64 %67 + %69 = load i8, ptr %68, align 1 + %70 = zext i8 %69 to i32 + %71 = mul nuw nsw i32 %59, 250 + %72 = select i1 %55, i32 96000, i32 %71 + %73 = mul nuw nsw i32 %72, %70 %74 = lshr i8 %36, 2 %75 = and i8 %74, 3 %76 = zext nneg i8 %75 to i64 @@ -77175,21 +77175,21 @@ drmp3_hdr_padding.exit.i: ; preds = %135 %143 = icmp eq i32 %142, 2 %144 = zext i1 %143 to i32 %145 = lshr exact i32 1152, %144 - %146 = mul nuw nsw i32 %145, 250 - %147 = lshr i32 %129, 3 - %.lobit.i.i.i = and i32 %147, 1 - %148 = zext nneg i32 %.lobit.i.i.i to i64 - %149 = lshr i32 %129, 1 - %150 = and i32 %149, 3 - %151 = add nsw i32 %150, -1 - %152 = sext i32 %151 to i64 - %153 = lshr i8 %137, 4 - %154 = zext nneg i8 %153 to i64 - %155 = getelementptr inbounds [2 x [3 x [15 x i8]]], ptr @drmp3_hdr_bitrate_kbps.halfrate, i64 0, i64 %148, i64 %152, i64 %154 - %156 = load i8, ptr %155, align 1 - %157 = zext i8 %156 to i32 - %158 = select i1 %141, i32 96000, i32 %146 - %159 = mul nuw nsw i32 %158, %157 + %146 = lshr i32 %129, 3 + %.lobit.i.i.i = and i32 %146, 1 + %147 = zext nneg i32 %.lobit.i.i.i to i64 + %148 = lshr i32 %129, 1 + %149 = and i32 %148, 3 + %150 = add nsw i32 %149, -1 + %151 = sext i32 %150 to i64 + %152 = lshr i8 %137, 4 + %153 = zext nneg i8 %152 to i64 + %154 = getelementptr inbounds [2 x [3 x [15 x i8]]], ptr @drmp3_hdr_bitrate_kbps.halfrate, i64 0, i64 %147, i64 %151, i64 %153 + %155 = load i8, ptr %154, align 1 + %156 = zext i8 %155 to i32 + %157 = mul nuw nsw i32 %145, 250 + %158 = select i1 %141, i32 96000, i32 %157 + %159 = mul nuw nsw i32 %158, %156 %160 = lshr i8 %137, 2 %161 = and i8 %160, 3 %162 = zext nneg i8 %161 to i64 @@ -77383,21 +77383,21 @@ drmp3_hdr_padding.exit.i.i: ; preds = %329, %257 %264 = icmp eq i32 %263, 2 %265 = zext i1 %264 to i32 %266 = lshr exact i32 1152, %265 - %267 = mul nuw nsw i32 %266, 250 - %268 = lshr i32 %260, 3 - %.lobit.i.i.i.i = and i32 %268, 1 - %269 = zext nneg i32 %.lobit.i.i.i.i to i64 - %270 = lshr i32 %260, 1 - %271 = and i32 %270, 3 - %272 = add nsw i32 %271, -1 - %273 = sext i32 %272 to i64 - %274 = lshr i8 %.val16.i.i, 4 - %275 = zext nneg i8 %274 to i64 - %276 = getelementptr inbounds [2 x [3 x [15 x i8]]], ptr @drmp3_hdr_bitrate_kbps.halfrate, i64 0, i64 %269, i64 %273, i64 %275 - %277 = load i8, ptr %276, align 1 - %278 = zext i8 %277 to i32 - %279 = select i1 %262, i32 96000, i32 %267 - %280 = mul nuw nsw i32 %279, %278 + %267 = lshr i32 %260, 3 + %.lobit.i.i.i.i = and i32 %267, 1 + %268 = zext nneg i32 %.lobit.i.i.i.i to i64 + %269 = lshr i32 %260, 1 + %270 = and i32 %269, 3 + %271 = add nsw i32 %270, -1 + %272 = sext i32 %271 to i64 + %273 = lshr i8 %.val16.i.i, 4 + %274 = zext nneg i8 %273 to i64 + %275 = getelementptr inbounds [2 x [3 x [15 x i8]]], ptr @drmp3_hdr_bitrate_kbps.halfrate, i64 0, i64 %268, i64 %272, i64 %274 + %276 = load i8, ptr %275, align 1 + %277 = zext i8 %276 to i32 + %278 = mul nuw nsw i32 %266, 250 + %279 = select i1 %262, i32 96000, i32 %278 + %280 = mul nuw nsw i32 %279, %277 %281 = lshr i8 %.val16.i.i, 2 %282 = and i8 %281, 3 %283 = zext nneg i8 %282 to i64 @@ -97158,8 +97158,8 @@ LoadAudioStream.exit55: ; preds = %144, %148 %149 = call i32 @drmp3_get_mp3_and_pcm_frame_count(ptr noundef nonnull %99, ptr noundef null, ptr noundef nonnull %3) %.not.i56 = icmp eq i32 %149, 0 %150 = load i64, ptr %3, align 8 - %151 = trunc i64 %150 to i32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) + %151 = trunc i64 %150 to i32 %152 = select i1 %.not.i56, i32 0, i32 %151 %153 = getelementptr inbounds i8, ptr %0, i64 32 store i32 %152, ptr %153, align 8 @@ -97891,8 +97891,8 @@ LoadAudioStream.exit84: ; preds = %149, %153 %154 = call i32 @drmp3_get_mp3_and_pcm_frame_count(ptr noundef nonnull %103, ptr noundef null, ptr noundef nonnull %5) %.not.i85 = icmp eq i32 %154, 0 %155 = load i64, ptr %5, align 8 - %156 = trunc i64 %155 to i32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) + %156 = trunc i64 %155 to i32 %157 = select i1 %.not.i85, i32 0, i32 %156 %158 = getelementptr inbounds i8, ptr %0, i64 32 store i32 %157, ptr %158, align 8 diff --git a/bench/raylib/optimized/rcore.c.ll b/bench/raylib/optimized/rcore.c.ll index afcb4c948f2..be72c7b0684 100644 --- a/bench/raylib/optimized/rcore.c.ll +++ b/bench/raylib/optimized/rcore.c.ll @@ -31292,69 +31292,69 @@ GetGamepadAxisMovement.exit: ; preds = %783 %788 = fcmp ogt float %787, 0x3FB99999A0000000 %789 = fmul float %786, -2.000000e+00 %790 = fmul float %789, 0x3F689374C0000000 - %791 = fmul float %790, 5.000000e-01 - %792 = getelementptr inbounds i8, ptr %0, i64 24 - %.sroa.03.0.copyload.i.i522 = load <2 x float>, ptr %792, align 4 + %791 = getelementptr inbounds i8, ptr %0, i64 24 + %.sroa.03.0.copyload.i.i522 = load <2 x float>, ptr %791, align 4 %.sroa.24.0..sroa_idx.i.i523 = getelementptr inbounds i8, ptr %0, i64 32 %.sroa.24.0.copyload.i.i524 = load float, ptr %.sroa.24.0..sroa_idx.i.i523, align 4 %.sroa.07.0.vec.extract.i.i.i525 = extractelement <2 x float> %.sroa.03.0.copyload.i.i522, i64 0 %.sroa.07.4.vec.extract.i.i.i526 = extractelement <2 x float> %.sroa.03.0.copyload.i.i522, i64 1 - %793 = fmul float %.sroa.07.4.vec.extract.i.i.i526, %.sroa.07.4.vec.extract.i.i.i526 - %794 = tail call float @llvm.fmuladd.f32(float %.sroa.07.0.vec.extract.i.i.i525, float %.sroa.07.0.vec.extract.i.i.i525, float %793) - %795 = tail call float @llvm.fmuladd.f32(float %.sroa.24.0.copyload.i.i524, float %.sroa.24.0.copyload.i.i524, float %794) - %796 = fcmp une float %795, 0.000000e+00 - br i1 %796, label %797, label %GetCameraUp.exit.i527 - -797: ; preds = %GetGamepadAxisMovement.exit - %sqrt.i.i.i555 = tail call float @llvm.sqrt.f32(float %795) - %798 = fdiv float 1.000000e+00, %sqrt.i.i.i555 - %799 = fmul float %.sroa.07.0.vec.extract.i.i.i525, %798 - %800 = fmul float %.sroa.07.4.vec.extract.i.i.i526, %798 - %801 = fmul float %.sroa.24.0.copyload.i.i524, %798 - %.pre70.i556 = fmul float %800, %800 - %.pre71.i557 = tail call float @llvm.fmuladd.f32(float %799, float %799, float %.pre70.i556) - %.pre73.i558 = tail call float @llvm.fmuladd.f32(float %801, float %801, float %.pre71.i557) + %792 = fmul float %.sroa.07.4.vec.extract.i.i.i526, %.sroa.07.4.vec.extract.i.i.i526 + %793 = tail call float @llvm.fmuladd.f32(float %.sroa.07.0.vec.extract.i.i.i525, float %.sroa.07.0.vec.extract.i.i.i525, float %792) + %794 = tail call float @llvm.fmuladd.f32(float %.sroa.24.0.copyload.i.i524, float %.sroa.24.0.copyload.i.i524, float %793) + %795 = fcmp une float %794, 0.000000e+00 + br i1 %795, label %796, label %GetCameraUp.exit.i527 + +796: ; preds = %GetGamepadAxisMovement.exit + %sqrt.i.i.i555 = tail call float @llvm.sqrt.f32(float %794) + %797 = fdiv float 1.000000e+00, %sqrt.i.i.i555 + %798 = fmul float %.sroa.07.0.vec.extract.i.i.i525, %797 + %799 = fmul float %.sroa.07.4.vec.extract.i.i.i526, %797 + %800 = fmul float %.sroa.24.0.copyload.i.i524, %797 + %.pre70.i556 = fmul float %799, %799 + %.pre71.i557 = tail call float @llvm.fmuladd.f32(float %798, float %798, float %.pre70.i556) + %.pre73.i558 = tail call float @llvm.fmuladd.f32(float %800, float %800, float %.pre71.i557) br label %GetCameraUp.exit.i527 -GetCameraUp.exit.i527: ; preds = %797, %GetGamepadAxisMovement.exit - %.pre-phi74.i528 = phi float [ %795, %GetGamepadAxisMovement.exit ], [ %.pre73.i558, %797 ] - %.sroa.044.4.vec.extract.i.pre-phi.i529 = phi float [ %.sroa.07.4.vec.extract.i.i.i526, %GetGamepadAxisMovement.exit ], [ %800, %797 ] - %.sroa.044.0.vec.extract.i.pre-phi.i530 = phi float [ %.sroa.07.0.vec.extract.i.i.i525, %GetGamepadAxisMovement.exit ], [ %799, %797 ] - %.sroa.617.0.i.i.i531 = phi float [ %.sroa.24.0.copyload.i.i524, %GetGamepadAxisMovement.exit ], [ %801, %797 ] - %802 = getelementptr inbounds i8, ptr %0, i64 12 - %.sroa.033.0.copyload.i532 = load <2 x float>, ptr %802, align 4 +GetCameraUp.exit.i527: ; preds = %796, %GetGamepadAxisMovement.exit + %.pre-phi74.i528 = phi float [ %794, %GetGamepadAxisMovement.exit ], [ %.pre73.i558, %796 ] + %.sroa.044.4.vec.extract.i.pre-phi.i529 = phi float [ %.sroa.07.4.vec.extract.i.i.i526, %GetGamepadAxisMovement.exit ], [ %799, %796 ] + %.sroa.044.0.vec.extract.i.pre-phi.i530 = phi float [ %.sroa.07.0.vec.extract.i.i.i525, %GetGamepadAxisMovement.exit ], [ %798, %796 ] + %.sroa.617.0.i.i.i531 = phi float [ %.sroa.24.0.copyload.i.i524, %GetGamepadAxisMovement.exit ], [ %800, %796 ] + %801 = getelementptr inbounds i8, ptr %0, i64 12 + %.sroa.033.0.copyload.i532 = load <2 x float>, ptr %801, align 4 %.sroa.234.0..sroa_idx.i533 = getelementptr inbounds i8, ptr %0, i64 20 %.sroa.234.0.copyload.i534 = load float, ptr %.sroa.234.0..sroa_idx.i533, align 4 %.sroa.031.0.copyload.i535 = load <2 x float>, ptr %0, align 4 %.sroa.232.0..sroa_idx.i536 = getelementptr inbounds i8, ptr %0, i64 8 %.sroa.232.0.copyload.i537 = load float, ptr %.sroa.232.0..sroa_idx.i536, align 4 - %803 = fsub <2 x float> %.sroa.033.0.copyload.i532, %.sroa.031.0.copyload.i535 - %804 = extractelement <2 x float> %803, i64 0 - %805 = fsub <2 x float> %.sroa.033.0.copyload.i532, %.sroa.031.0.copyload.i535 - %806 = extractelement <2 x float> %805, i64 1 - %807 = fsub float %.sroa.234.0.copyload.i534, %.sroa.232.0.copyload.i537 + %802 = fsub <2 x float> %.sroa.033.0.copyload.i532, %.sroa.031.0.copyload.i535 + %803 = extractelement <2 x float> %802, i64 0 + %804 = fsub <2 x float> %.sroa.033.0.copyload.i532, %.sroa.031.0.copyload.i535 + %805 = extractelement <2 x float> %804, i64 1 + %806 = fsub float %.sroa.234.0.copyload.i534, %.sroa.232.0.copyload.i537 %sqrt.i.i542 = tail call float @llvm.sqrt.f32(float %.pre-phi74.i528) - %808 = fcmp oeq float %.pre-phi74.i528, 0.000000e+00 - %809 = fdiv float 1.000000e+00, %sqrt.i.i542 - %810 = select i1 %808, float 1.000000e+00, float %809 - %811 = fmul float %.sroa.044.0.vec.extract.i.pre-phi.i530, %810 - %812 = fmul float %.sroa.044.4.vec.extract.i.pre-phi.i529, %810 - %813 = fmul float %.sroa.617.0.i.i.i531, %810 - %814 = select i1 %788, float %791, float -0.000000e+00 + %807 = fcmp oeq float %.pre-phi74.i528, 0.000000e+00 + %808 = fdiv float 1.000000e+00, %sqrt.i.i542 + %809 = select i1 %807, float 1.000000e+00, float %808 + %810 = fmul float %.sroa.044.0.vec.extract.i.pre-phi.i530, %809 + %811 = fmul float %.sroa.044.4.vec.extract.i.pre-phi.i529, %809 + %812 = fmul float %.sroa.617.0.i.i.i531, %809 + %813 = fmul float %790, 5.000000e-01 + %814 = select i1 %788, float %813, float -0.000000e+00 %815 = tail call float @sinf(float noundef %814) #54 - %816 = fmul float %811, %815 - %817 = fmul float %812, %815 - %818 = fmul float %813, %815 + %816 = fmul float %810, %815 + %817 = fmul float %811, %815 + %818 = fmul float %812, %815 %819 = tail call float @cosf(float noundef %814) #54 - %820 = fneg float %806 + %820 = fneg float %805 %821 = fmul float %818, %820 - %822 = tail call float @llvm.fmuladd.f32(float %817, float %807, float %821) - %823 = fneg float %807 + %822 = tail call float @llvm.fmuladd.f32(float %817, float %806, float %821) + %823 = fneg float %806 %824 = fmul float %816, %823 - %825 = tail call float @llvm.fmuladd.f32(float %818, float %804, float %824) - %826 = fneg float %804 + %825 = tail call float @llvm.fmuladd.f32(float %818, float %803, float %824) + %826 = fneg float %803 %827 = fmul float %817, %826 - %828 = tail call float @llvm.fmuladd.f32(float %816, float %806, float %827) + %828 = tail call float @llvm.fmuladd.f32(float %816, float %805, float %827) %829 = fneg float %825 %830 = fmul float %818, %829 %831 = tail call float @llvm.fmuladd.f32(float %817, float %828, float %830) @@ -31371,9 +31371,9 @@ GetCameraUp.exit.i527: ; preds = %797, %GetGamepadAxi %842 = fmul float %831, 2.000000e+00 %843 = fmul float %834, 2.000000e+00 %844 = fmul float %837, 2.000000e+00 - %845 = fadd float %804, %839 - %846 = fadd float %806, %840 - %847 = fadd float %807, %841 + %845 = fadd float %803, %839 + %846 = fadd float %805, %840 + %847 = fadd float %806, %841 %848 = fadd float %845, %842 %849 = fadd float %846, %843 %850 = fadd float %847, %844 @@ -31381,7 +31381,7 @@ GetCameraUp.exit.i527: ; preds = %797, %GetGamepadAxi br i1 %cond885, label %851, label %855 851: ; preds = %GetCameraUp.exit.i527 - %.sroa.013.0.copyload.i549 = load <2 x float>, ptr %802, align 4 + %.sroa.013.0.copyload.i549 = load <2 x float>, ptr %801, align 4 %.sroa.214.0.copyload.i550 = load float, ptr %.sroa.234.0..sroa_idx.i533, align 4 %.sroa.06.0.vec.extract.i53.i551 = extractelement <2 x float> %.sroa.013.0.copyload.i549, i64 0 %852 = fsub float %.sroa.06.0.vec.extract.i53.i551, %848 @@ -31404,7 +31404,7 @@ GetCameraUp.exit.i527: ; preds = %797, %GetGamepadAxi %857 = fadd float %849, %.sroa.06.4.vec.extract.i64.i547 %.sroa.08.4.vec.insert.i66.i548 = insertelement <2 x float> %.sroa.08.0.vec.insert.i63.i546, float %857, i64 1 %858 = fadd float %850, %.sroa.24.0.copyload.i544 - store <2 x float> %.sroa.08.4.vec.insert.i66.i548, ptr %802, align 4 + store <2 x float> %.sroa.08.4.vec.insert.i66.i548, ptr %801, align 4 store float %858, ptr %.sroa.234.0..sroa_idx.i533, align 4 br label %CameraYaw.exit559 @@ -31440,7 +31440,7 @@ GetGamepadAxisMovement.exit562: ; preds = %CameraYaw.exit559, br i1 %or.cond, label %GetGamepadAxisMovement.exit565.thread, label %875 875: ; preds = %870 - %.sroa.011.0.copyload.i.i566 = load <2 x float>, ptr %802, align 4 + %.sroa.011.0.copyload.i.i566 = load <2 x float>, ptr %801, align 4 %.sroa.212.0.copyload.i.i568 = load float, ptr %.sroa.234.0..sroa_idx.i533, align 4 %.sroa.09.0.copyload.i.i569 = load <2 x float>, ptr %0, align 4 %.sroa.210.0.copyload.i.i571 = load float, ptr %.sroa.232.0..sroa_idx.i536, align 4 @@ -31512,7 +31512,7 @@ CameraMoveForward.exit597: ; preds = %GetCameraForward.ex %905 = fadd float %.sroa.06.4.vec.extract.i.i.i575, %899 %.sroa.08.4.vec.insert.i55.i588 = insertelement <2 x float> %.sroa.08.0.vec.insert.i52.i587, float %905, i64 1 %906 = fadd float %.sroa.212.0.copyload.i.i568, %900 - store <2 x float> %.sroa.08.4.vec.insert.i55.i588, ptr %802, align 4 + store <2 x float> %.sroa.08.4.vec.insert.i55.i588, ptr %801, align 4 store float %906, ptr %.sroa.234.0..sroa_idx.i533, align 4 %.pre = load i8, ptr getelementptr inbounds (i8, ptr @CORE, i64 2076), align 4 br label %GetGamepadAxisMovement.exit565.thread @@ -31531,7 +31531,7 @@ GetGamepadAxisMovement.exit565.thread: ; preds = %GetGamepadAxisMovem br i1 %or.cond866, label %GetGamepadAxisMovement.exit600.thread, label %914 914: ; preds = %909 - %.sroa.011.0.copyload.i.i.i601 = load <2 x float>, ptr %802, align 4 + %.sroa.011.0.copyload.i.i.i601 = load <2 x float>, ptr %801, align 4 %.sroa.212.0.copyload.i.i.i603 = load float, ptr %.sroa.234.0..sroa_idx.i533, align 4 %.sroa.09.0.copyload.i.i.i604 = load <2 x float>, ptr %0, align 4 %.sroa.210.0.copyload.i.i.i606 = load float, ptr %.sroa.232.0..sroa_idx.i536, align 4 @@ -31563,7 +31563,7 @@ GetGamepadAxisMovement.exit565.thread: ; preds = %GetGamepadAxisMovem GetCameraForward.exit.i.i613: ; preds = %923, %914 %.sroa.013.0.i.i.i.i614 = phi <2 x float> [ %.sroa.013.4.vec.insert.i.i.i.i651, %923 ], [ %.sroa.08.4.vec.insert.i.i.i.i612, %914 ] %.sroa.617.0.i.i.i.i615 = phi float [ %927, %923 ], [ %918, %914 ] - %.sroa.03.0.copyload.i.i.i616 = load <2 x float>, ptr %792, align 4 + %.sroa.03.0.copyload.i.i.i616 = load <2 x float>, ptr %791, align 4 %.sroa.24.0.copyload.i.i.i618 = load float, ptr %.sroa.24.0..sroa_idx.i.i523, align 4 %.sroa.07.0.vec.extract.i.i.i.i619 = extractelement <2 x float> %.sroa.03.0.copyload.i.i.i616, i64 0 %.sroa.07.4.vec.extract.i.i.i.i620 = extractelement <2 x float> %.sroa.03.0.copyload.i.i.i616, i64 1 @@ -31657,7 +31657,7 @@ CameraMoveRight.exit652: ; preds = %GetCameraRight.exit %971 = fadd float %.sroa.06.4.vec.extract.i.i.i.i610, %965 %.sroa.08.4.vec.insert.i55.i639 = insertelement <2 x float> %.sroa.08.0.vec.insert.i52.i638, float %971, i64 1 %972 = fadd float %.sroa.212.0.copyload.i.i.i603, %966 - store <2 x float> %.sroa.08.4.vec.insert.i55.i639, ptr %802, align 4 + store <2 x float> %.sroa.08.4.vec.insert.i55.i639, ptr %801, align 4 store float %972, ptr %.sroa.234.0..sroa_idx.i533, align 4 %.pre873 = load i8, ptr getelementptr inbounds (i8, ptr @CORE, i64 2076), align 4 br label %GetGamepadAxisMovement.exit600.thread @@ -31676,7 +31676,7 @@ GetGamepadAxisMovement.exit600.thread: ; preds = %GetGamepadAxisMovem br i1 %or.cond867, label %GetGamepadAxisMovement.exit655.thread, label %980 980: ; preds = %975 - %.sroa.011.0.copyload.i.i656 = load <2 x float>, ptr %802, align 4 + %.sroa.011.0.copyload.i.i656 = load <2 x float>, ptr %801, align 4 %.sroa.212.0.copyload.i.i658 = load float, ptr %.sroa.234.0..sroa_idx.i533, align 4 %.sroa.09.0.copyload.i.i659 = load <2 x float>, ptr %0, align 4 %.sroa.210.0.copyload.i.i661 = load float, ptr %.sroa.232.0..sroa_idx.i536, align 4 @@ -31748,7 +31748,7 @@ CameraMoveForward.exit687: ; preds = %GetCameraForward.ex %1010 = fadd float %.sroa.06.4.vec.extract.i.i.i665, %1004 %.sroa.08.4.vec.insert.i55.i678 = insertelement <2 x float> %.sroa.08.0.vec.insert.i52.i677, float %1010, i64 1 %1011 = fadd float %.sroa.212.0.copyload.i.i658, %1005 - store <2 x float> %.sroa.08.4.vec.insert.i55.i678, ptr %802, align 4 + store <2 x float> %.sroa.08.4.vec.insert.i55.i678, ptr %801, align 4 store float %1011, ptr %.sroa.234.0..sroa_idx.i533, align 4 %.pre874 = load i8, ptr getelementptr inbounds (i8, ptr @CORE, i64 2076), align 4 br label %GetGamepadAxisMovement.exit655.thread @@ -31767,7 +31767,7 @@ GetGamepadAxisMovement.exit655.thread: ; preds = %GetGamepadAxisMovem br i1 %or.cond868, label %GetGamepadAxisMovement.exit690.thread, label %1019 1019: ; preds = %1014 - %.sroa.011.0.copyload.i.i.i691 = load <2 x float>, ptr %802, align 4 + %.sroa.011.0.copyload.i.i.i691 = load <2 x float>, ptr %801, align 4 %.sroa.212.0.copyload.i.i.i693 = load float, ptr %.sroa.234.0..sroa_idx.i533, align 4 %.sroa.09.0.copyload.i.i.i694 = load <2 x float>, ptr %0, align 4 %.sroa.210.0.copyload.i.i.i696 = load float, ptr %.sroa.232.0..sroa_idx.i536, align 4 @@ -31799,7 +31799,7 @@ GetGamepadAxisMovement.exit655.thread: ; preds = %GetGamepadAxisMovem GetCameraForward.exit.i.i703: ; preds = %1028, %1019 %.sroa.013.0.i.i.i.i704 = phi <2 x float> [ %.sroa.013.4.vec.insert.i.i.i.i741, %1028 ], [ %.sroa.08.4.vec.insert.i.i.i.i702, %1019 ] %.sroa.617.0.i.i.i.i705 = phi float [ %1032, %1028 ], [ %1023, %1019 ] - %.sroa.03.0.copyload.i.i.i706 = load <2 x float>, ptr %792, align 4 + %.sroa.03.0.copyload.i.i.i706 = load <2 x float>, ptr %791, align 4 %.sroa.24.0.copyload.i.i.i708 = load float, ptr %.sroa.24.0..sroa_idx.i.i523, align 4 %.sroa.07.0.vec.extract.i.i.i.i709 = extractelement <2 x float> %.sroa.03.0.copyload.i.i.i706, i64 0 %.sroa.07.4.vec.extract.i.i.i.i710 = extractelement <2 x float> %.sroa.03.0.copyload.i.i.i706, i64 1 @@ -31893,7 +31893,7 @@ CameraMoveRight.exit742: ; preds = %GetCameraRight.exit %1076 = fadd float %.sroa.06.4.vec.extract.i.i.i.i700, %1070 %.sroa.08.4.vec.insert.i55.i729 = insertelement <2 x float> %.sroa.08.0.vec.insert.i52.i728, float %1076, i64 1 %1077 = fadd float %.sroa.212.0.copyload.i.i.i693, %1071 - store <2 x float> %.sroa.08.4.vec.insert.i55.i729, ptr %802, align 4 + store <2 x float> %.sroa.08.4.vec.insert.i55.i729, ptr %801, align 4 store float %1077, ptr %.sroa.234.0..sroa_idx.i533, align 4 br label %GetGamepadAxisMovement.exit690.thread diff --git a/bench/recastnavigation/optimized/RecastMesh.cpp.ll b/bench/recastnavigation/optimized/RecastMesh.cpp.ll index 6fb425dcb4f..0bbc10617c7 100644 --- a/bench/recastnavigation/optimized/RecastMesh.cpp.ll +++ b/bench/recastnavigation/optimized/RecastMesh.cpp.ll @@ -1947,28 +1947,28 @@ _ZL13diagonalLooseiiiPKiPi.exit.thread: ; preds = %_ZL13intersectPropP %244 = add nsw i32 %243, 1 %245 = sext i32 %244 to i64 %246 = icmp sgt i64 %indvars.iv198, %245 - %247 = sext i32 %244 to i64 - %248 = sext i32 %.2142 to i64 - %249 = getelementptr inbounds i32, ptr %2, i64 %248 - %250 = load i32, ptr %249, align 4 - %251 = and i32 %250, 268435455 - %252 = getelementptr inbounds i8, ptr %.0137172, i64 4 - store i32 %251, ptr %.0137172, align 4 - %253 = sext i32 %243 to i64 - %254 = getelementptr inbounds i32, ptr %2, i64 %253 - %255 = load i32, ptr %254, align 4 - %256 = and i32 %255, 268435455 - %257 = getelementptr inbounds i8, ptr %.0137172, i64 8 - store i32 %256, ptr %252, align 4 - %258 = select i1 %246, i64 %247, i64 0 + %247 = sext i32 %.2142 to i64 + %248 = getelementptr inbounds i32, ptr %2, i64 %247 + %249 = load i32, ptr %248, align 4 + %250 = and i32 %249, 268435455 + %251 = getelementptr inbounds i8, ptr %.0137172, i64 4 + store i32 %250, ptr %.0137172, align 4 + %252 = sext i32 %243 to i64 + %253 = getelementptr inbounds i32, ptr %2, i64 %252 + %254 = load i32, ptr %253, align 4 + %255 = and i32 %254, 268435455 + %256 = getelementptr inbounds i8, ptr %.0137172, i64 8 + store i32 %255, ptr %251, align 4 + %257 = sext i32 %244 to i64 + %258 = select i1 %246, i64 %257, i64 0 %259 = getelementptr inbounds i32, ptr %2, i64 %258 %260 = load i32, ptr %259, align 4 %261 = and i32 %260, 268435455 %262 = getelementptr inbounds i8, ptr %.0137172, i64 12 - store i32 %261, ptr %257, align 4 + store i32 %261, ptr %256, align 4 %263 = add nuw nsw i32 %.0136173, 1 %indvars.iv.next199 = add nsw i64 %indvars.iv198, -1 - %264 = icmp sgt i64 %indvars.iv.next199, %253 + %264 = icmp sgt i64 %indvars.iv.next199, %252 br i1 %264, label %.lr.ph170, label %._crit_edge171.thread ._crit_edge171.thread: ; preds = %239 @@ -1976,7 +1976,7 @@ _ZL13diagonalLooseiiiPKiPi.exit.thread: ; preds = %_ZL13intersectPropP br label %271 .lr.ph170: ; preds = %239, %.lr.ph170 - %indvars.iv189 = phi i64 [ %indvars.iv.next190, %.lr.ph170 ], [ %253, %239 ] + %indvars.iv189 = phi i64 [ %indvars.iv.next190, %.lr.ph170 ], [ %252, %239 ] %indvars.iv.next190 = add nsw i64 %indvars.iv189, 1 %266 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv.next190 %267 = load i32, ptr %266, align 4 diff --git a/bench/rocksdb/optimized/block_based_table_reader.cc.ll b/bench/rocksdb/optimized/block_based_table_reader.cc.ll index 430155c9d27..aa86601ca38 100644 --- a/bench/rocksdb/optimized/block_based_table_reader.cc.ll +++ b/bench/rocksdb/optimized/block_based_table_reader.cc.ll @@ -12860,12 +12860,12 @@ if.end11: ; preds = %if.end, %entry %cmp12 = icmp eq i32 %4, 1 %fill_cache = getelementptr inbounds i8, ptr %ro, i64 73 %5 = load i8, ptr %fill_cache, align 1 - %lnot = and i8 %5, 1 - %6 = xor i8 %lnot, 1 - %7 = load i8, ptr %lookup_context, align 8 - %call17 = tail call noundef zeroext i1 @_ZN7rocksdb21BlockCacheTraceHelper26IsGetOrMultiGetOnDataBlockENS_9TraceTypeENS_17TableReaderCallerE(i8 noundef signext 9, i8 noundef signext %7) + %6 = load i8, ptr %lookup_context, align 8 + %call17 = tail call noundef zeroext i1 @_ZN7rocksdb21BlockCacheTraceHelper26IsGetOrMultiGetOnDataBlockENS_9TraceTypeENS_17TableReaderCallerE(i8 noundef signext 9, i8 noundef signext %6) %frombool.i = zext i1 %is_cache_hit to i8 - %frombool1.i = select i1 %cmp12, i8 1, i8 %6 + %lnot = and i8 %5, 1 + %7 = xor i8 %lnot, 1 + %frombool1.i = select i1 %cmp12, i8 1, i8 %7 %is_cache_hit.i = getelementptr inbounds i8, ptr %lookup_context, i64 1 %no_insert.i = getelementptr inbounds i8, ptr %lookup_context, i64 2 %block_type.i = getelementptr inbounds i8, ptr %lookup_context, i64 3 @@ -34906,12 +34906,12 @@ if.end11: ; preds = %_ZNK7rocksdb21Parse %cmp12 = icmp eq i32 %4, 1 %fill_cache = getelementptr inbounds i8, ptr %ro, i64 73 %5 = load i8, ptr %fill_cache, align 1 - %lnot = and i8 %5, 1 - %6 = xor i8 %lnot, 1 - %7 = load i8, ptr %lookup_context, align 8 - %call17 = tail call noundef zeroext i1 @_ZN7rocksdb21BlockCacheTraceHelper26IsGetOrMultiGetOnDataBlockENS_9TraceTypeENS_17TableReaderCallerE(i8 noundef signext 8, i8 noundef signext %7) + %6 = load i8, ptr %lookup_context, align 8 + %call17 = tail call noundef zeroext i1 @_ZN7rocksdb21BlockCacheTraceHelper26IsGetOrMultiGetOnDataBlockENS_9TraceTypeENS_17TableReaderCallerE(i8 noundef signext 8, i8 noundef signext %6) %frombool.i = zext i1 %is_cache_hit to i8 - %frombool1.i = select i1 %cmp12, i8 1, i8 %6 + %lnot = and i8 %5, 1 + %7 = xor i8 %lnot, 1 + %frombool1.i = select i1 %cmp12, i8 1, i8 %7 %is_cache_hit.i = getelementptr inbounds i8, ptr %lookup_context, i64 1 %no_insert.i = getelementptr inbounds i8, ptr %lookup_context, i64 2 %block_type.i = getelementptr inbounds i8, ptr %lookup_context, i64 3 @@ -37321,12 +37321,12 @@ if.end11: ; preds = %if.else.i, %if.then %cmp12 = icmp eq i32 %4, 1 %fill_cache = getelementptr inbounds i8, ptr %ro, i64 73 %5 = load i8, ptr %fill_cache, align 1 - %lnot = and i8 %5, 1 - %6 = xor i8 %lnot, 1 - %7 = load i8, ptr %lookup_context, align 8 - %call17 = tail call noundef zeroext i1 @_ZN7rocksdb21BlockCacheTraceHelper26IsGetOrMultiGetOnDataBlockENS_9TraceTypeENS_17TableReaderCallerE(i8 noundef signext 10, i8 noundef signext %7) + %6 = load i8, ptr %lookup_context, align 8 + %call17 = tail call noundef zeroext i1 @_ZN7rocksdb21BlockCacheTraceHelper26IsGetOrMultiGetOnDataBlockENS_9TraceTypeENS_17TableReaderCallerE(i8 noundef signext 10, i8 noundef signext %6) %frombool.i = zext i1 %is_cache_hit to i8 - %frombool1.i = select i1 %cmp12, i8 1, i8 %6 + %lnot = and i8 %5, 1 + %7 = xor i8 %lnot, 1 + %frombool1.i = select i1 %cmp12, i8 1, i8 %7 %is_cache_hit.i = getelementptr inbounds i8, ptr %lookup_context, i64 1 %no_insert.i = getelementptr inbounds i8, ptr %lookup_context, i64 2 %block_type.i = getelementptr inbounds i8, ptr %lookup_context, i64 3 @@ -40760,12 +40760,12 @@ if.end11: ; preds = %if.end, %entry %cmp12 = icmp eq i32 %4, 1 %fill_cache = getelementptr inbounds i8, ptr %ro, i64 73 %5 = load i8, ptr %fill_cache, align 1 - %lnot = and i8 %5, 1 - %6 = xor i8 %lnot, 1 - %7 = load i8, ptr %lookup_context, align 8 - %call17 = tail call noundef zeroext i1 @_ZN7rocksdb21BlockCacheTraceHelper26IsGetOrMultiGetOnDataBlockENS_9TraceTypeENS_17TableReaderCallerE(i8 noundef signext 7, i8 noundef signext %7) + %6 = load i8, ptr %lookup_context, align 8 + %call17 = tail call noundef zeroext i1 @_ZN7rocksdb21BlockCacheTraceHelper26IsGetOrMultiGetOnDataBlockENS_9TraceTypeENS_17TableReaderCallerE(i8 noundef signext 7, i8 noundef signext %6) %frombool.i = zext i1 %is_cache_hit to i8 - %frombool1.i = select i1 %cmp12, i8 1, i8 %6 + %lnot = and i8 %5, 1 + %7 = xor i8 %lnot, 1 + %frombool1.i = select i1 %cmp12, i8 1, i8 %7 %is_cache_hit.i = getelementptr inbounds i8, ptr %lookup_context, i64 1 %no_insert.i = getelementptr inbounds i8, ptr %lookup_context, i64 2 %block_type.i = getelementptr inbounds i8, ptr %lookup_context, i64 3 @@ -43220,12 +43220,12 @@ if.end11: ; preds = %if.end, %entry %cmp12 = icmp eq i32 %4, 1 %fill_cache = getelementptr inbounds i8, ptr %ro, i64 73 %5 = load i8, ptr %fill_cache, align 1 - %lnot = and i8 %5, 1 - %6 = xor i8 %lnot, 1 - %7 = load i8, ptr %lookup_context, align 8 - %call17 = tail call noundef zeroext i1 @_ZN7rocksdb21BlockCacheTraceHelper26IsGetOrMultiGetOnDataBlockENS_9TraceTypeENS_17TableReaderCallerE(i8 noundef signext 8, i8 noundef signext %7) + %6 = load i8, ptr %lookup_context, align 8 + %call17 = tail call noundef zeroext i1 @_ZN7rocksdb21BlockCacheTraceHelper26IsGetOrMultiGetOnDataBlockENS_9TraceTypeENS_17TableReaderCallerE(i8 noundef signext 8, i8 noundef signext %6) %frombool.i = zext i1 %is_cache_hit to i8 - %frombool1.i = select i1 %cmp12, i8 1, i8 %6 + %lnot = and i8 %5, 1 + %7 = xor i8 %lnot, 1 + %frombool1.i = select i1 %cmp12, i8 1, i8 %7 %is_cache_hit.i = getelementptr inbounds i8, ptr %lookup_context, i64 1 %no_insert.i = getelementptr inbounds i8, ptr %lookup_context, i64 2 %block_type.i = getelementptr inbounds i8, ptr %lookup_context, i64 3 @@ -45661,12 +45661,12 @@ if.end11: ; preds = %if.end, %entry %cmp12 = icmp eq i32 %4, 1 %fill_cache = getelementptr inbounds i8, ptr %ro, i64 73 %5 = load i8, ptr %fill_cache, align 1 - %lnot = and i8 %5, 1 - %6 = xor i8 %lnot, 1 - %7 = load i8, ptr %lookup_context, align 8 - %call17 = tail call noundef zeroext i1 @_ZN7rocksdb21BlockCacheTraceHelper26IsGetOrMultiGetOnDataBlockENS_9TraceTypeENS_17TableReaderCallerE(i8 noundef signext 11, i8 noundef signext %7) + %6 = load i8, ptr %lookup_context, align 8 + %call17 = tail call noundef zeroext i1 @_ZN7rocksdb21BlockCacheTraceHelper26IsGetOrMultiGetOnDataBlockENS_9TraceTypeENS_17TableReaderCallerE(i8 noundef signext 11, i8 noundef signext %6) %frombool.i = zext i1 %is_cache_hit to i8 - %frombool1.i = select i1 %cmp12, i8 1, i8 %6 + %lnot = and i8 %5, 1 + %7 = xor i8 %lnot, 1 + %frombool1.i = select i1 %cmp12, i8 1, i8 %7 %is_cache_hit.i = getelementptr inbounds i8, ptr %lookup_context, i64 1 %no_insert.i = getelementptr inbounds i8, ptr %lookup_context, i64 2 %block_type.i = getelementptr inbounds i8, ptr %lookup_context, i64 3 @@ -47878,12 +47878,12 @@ if.end11: ; preds = %if.end, %entry %cmp12 = icmp eq i32 %4, 1 %fill_cache = getelementptr inbounds i8, ptr %ro, i64 73 %5 = load i8, ptr %fill_cache, align 1 - %lnot = and i8 %5, 1 - %6 = xor i8 %lnot, 1 - %7 = load i8, ptr %lookup_context, align 8 - %call17 = tail call noundef zeroext i1 @_ZN7rocksdb21BlockCacheTraceHelper26IsGetOrMultiGetOnDataBlockENS_9TraceTypeENS_17TableReaderCallerE(i8 noundef signext 14, i8 noundef signext %7) + %6 = load i8, ptr %lookup_context, align 8 + %call17 = tail call noundef zeroext i1 @_ZN7rocksdb21BlockCacheTraceHelper26IsGetOrMultiGetOnDataBlockENS_9TraceTypeENS_17TableReaderCallerE(i8 noundef signext 14, i8 noundef signext %6) %frombool.i = zext i1 %is_cache_hit to i8 - %frombool1.i = select i1 %cmp12, i8 1, i8 %6 + %lnot = and i8 %5, 1 + %7 = xor i8 %lnot, 1 + %frombool1.i = select i1 %cmp12, i8 1, i8 %7 %is_cache_hit.i = getelementptr inbounds i8, ptr %lookup_context, i64 1 %no_insert.i = getelementptr inbounds i8, ptr %lookup_context, i64 2 %block_type.i = getelementptr inbounds i8, ptr %lookup_context, i64 3 diff --git a/bench/rocksdb/optimized/db_impl_compaction_flush.cc.ll b/bench/rocksdb/optimized/db_impl_compaction_flush.cc.ll index e85a998656c..e98e6c42387 100644 --- a/bench/rocksdb/optimized/db_impl_compaction_flush.cc.ll +++ b/bench/rocksdb/optimized/db_impl_compaction_flush.cc.ll @@ -18128,12 +18128,12 @@ if.else.i.i: ; preds = %_ZNK7rocksdb15Write _ZNK7rocksdb6DBImpl14GetBGJobLimitsEv.exit: ; preds = %if.then.i.i, %if.else.i.i %retval.sroa.0.0.i.i = phi i32 [ %.sroa.speculated11.i.i, %if.then.i.i ], [ %.sroa.speculated.i.i, %if.else.i.i ] %retval.sroa.4.0.in.i.i = phi ptr [ %__b.__a.i4.i.i, %if.then.i.i ], [ %__b.__a.i8.i.i, %if.else.i.i ] - %retval.sroa.4.0.i.i31 = load i32, ptr %retval.sroa.4.0.in.i.i, align 4 + %retval.sroa.4.0.i.i = load i32, ptr %retval.sroa.4.0.in.i.i, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %max_background_compactions.addr.i.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %ref.tmp3.i.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %ref.tmp4.i.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %ref.tmp10.i.i) - %bg_job_limits.sroa.3.0.extract.trunc = select i1 %14, i32 %retval.sroa.4.0.i.i31, i32 1 + %bg_job_limits.sroa.3.0.extract.trunc = select i1 %14, i32 %retval.sroa.4.0.i.i, i32 1 %env_ = getelementptr inbounds i8, ptr %this, i64 824 %16 = load ptr, ptr %env_, align 8 %vtable = load ptr, ptr %16, align 8 @@ -18147,15 +18147,15 @@ land.lhs.true16.lr.ph: ; preds = %_ZNK7rocksdb6DBImpl %unscheduled_flushes_ = getelementptr inbounds i8, ptr %this, i64 5368 %bg_flush_scheduled_ = getelementptr inbounds i8, ptr %this, i64 5388 %18 = load i32, ptr %unscheduled_flushes_, align 8 - %cmp1734 = icmp sgt i32 %18, 0 - br i1 %cmp1734, label %land.rhs, label %if.end48 + %cmp1733 = icmp sgt i32 %18, 0 + br i1 %cmp1733, label %land.rhs, label %if.end48 while.cond27.preheader: ; preds = %_ZNK7rocksdb6DBImpl14GetBGJobLimitsEv.exit %bg_flush_scheduled_31 = getelementptr inbounds i8, ptr %this, i64 5388 %unscheduled_flushes_28 = getelementptr inbounds i8, ptr %this, i64 5368 %19 = load i32, ptr %unscheduled_flushes_28, align 8 - %cmp2935 = icmp sgt i32 %19, 0 - br i1 %cmp2935, label %land.rhs30.lr.ph, label %if.end48 + %cmp2934 = icmp sgt i32 %19, 0 + br i1 %cmp2934, label %land.rhs30.lr.ph, label %if.end48 land.rhs30.lr.ph: ; preds = %while.cond27.preheader %bg_compaction_scheduled_ = getelementptr inbounds i8, ptr %this, i64 5380 @@ -18289,9 +18289,9 @@ _ZN7rocksdb6DBImpl28HasExclusiveManualCompactionEv.exit: ; preds = %_ZNSt15_Dequ %bg_bottom_compaction_scheduled_ = getelementptr inbounds i8, ptr %this, i64 5376 %42 = load i32, ptr %bg_compaction_scheduled_61, align 4 %43 = load i32, ptr %bg_bottom_compaction_scheduled_, align 64 - %add6236 = add nsw i32 %43, %42 - %cmp6337 = icmp slt i32 %add6236, %bg_job_limits.sroa.3.0.extract.trunc - br i1 %cmp6337, label %land.rhs64, label %while.end76 + %add6235 = add nsw i32 %43, %42 + %cmp6336 = icmp slt i32 %add6235, %bg_job_limits.sroa.3.0.extract.trunc + br i1 %cmp6336, label %land.rhs64, label %while.end76 land.rhs64: ; preds = %_ZN7rocksdb6DBImpl28HasExclusiveManualCompactionEv.exit, %while.body67 %44 = phi i32 [ %48, %while.body67 ], [ %42, %_ZN7rocksdb6DBImpl28HasExclusiveManualCompactionEv.exit ] @@ -30886,18 +30886,18 @@ invoke.cont51: ; preds = %invoke.cont48 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp47) #28 store i32 %38, ptr %reason, align 4 %58 = load ptr, ptr %_M_before_begin.i.i.i.i.i, align 8 - %cmp.i117.not528 = icmp eq ptr %58, null - br i1 %cmp.i117.not528, label %for.end, label %for.body + %cmp.i117.not527 = icmp eq ptr %58, null + br i1 %cmp.i117.not527, label %for.end, label %for.body for.body: ; preds = %invoke.cont51, %for.inc - %__begin3.sroa.0.0529 = phi ptr [ %59, %for.inc ], [ %58, %invoke.cont51 ] - %add.ptr.i = getelementptr inbounds i8, ptr %__begin3.sroa.0.0529, i64 8 + %__begin3.sroa.0.0528 = phi ptr [ %59, %for.inc ], [ %58, %invoke.cont51 ] + %add.ptr.i = getelementptr inbounds i8, ptr %__begin3.sroa.0.0528, i64 8 %item.sroa.0.0.copyload = load ptr, ptr %add.ptr.i, align 8 %call60 = invoke noundef zeroext i1 @_ZN7rocksdb16ColumnFamilyData17UnrefAndTryDeleteEv(ptr noundef nonnull align 8 dereferenceable(2656) %item.sroa.0.0.copyload) to label %for.inc unwind label %lpad30.loopexit.split-lp.loopexit for.inc: ; preds = %for.body - %59 = load ptr, ptr %__begin3.sroa.0.0529, align 8 + %59 = load ptr, ptr %__begin3.sroa.0.0528, align 8 %cmp.i117.not = icmp eq ptr %59, null br i1 %cmp.i117.not, label %for.end, label %for.body @@ -30912,12 +30912,12 @@ lpad30.loopexit: ; preds = %lor.lhs.false, %if. br label %ehcleanup lpad30.loopexit.split-lp.loopexit: ; preds = %for.body - %lpad.loopexit514 = landingpad { ptr, i32 } + %lpad.loopexit513 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad30.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %_ZN7rocksdb6StatusD2Ev.exit116, %if.then66, %if.end78, %invoke.cont84, %_ZNSt6vectorIN7rocksdb19SuperVersionContextESaIS1_EE5clearEv.exit, %land.lhs.true63, %lor.lhs.false.i146, %if.end.i, %call19.i.noexc - %lpad.loopexit517 = landingpad { ptr, i32 } + %lpad.loopexit516 = landingpad { ptr, i32 } cleanup br label %ehcleanup @@ -31194,13 +31194,13 @@ _ZNSt6vectorIN7rocksdb19SuperVersionContextESaIS1_EE5clearEv.exit: ; preds = %if invoke.cont90: ; preds = %_ZNSt6vectorIN7rocksdb19SuperVersionContextESaIS1_EE5clearEv.exit %94 = load ptr, ptr %_M_before_begin.i.i.i.i.i, align 8 - %cmp.i159.not530 = icmp eq ptr %94, null - br i1 %cmp.i159.not530, label %for.end131, label %for.body100 + %cmp.i159.not529 = icmp eq ptr %94, null + br i1 %cmp.i159.not529, label %for.end131, label %for.body100 for.body100: ; preds = %invoke.cont90, %for.inc129 - %__begin2.sroa.0.0531 = phi ptr [ %144, %for.inc129 ], [ %94, %invoke.cont90 ] - %add.ptr.i160 = getelementptr inbounds i8, ptr %__begin2.sroa.0.0531, i64 8 - %second.i.i = getelementptr inbounds i8, ptr %__begin2.sroa.0.0531, i64 16 + %__begin2.sroa.0.0530 = phi ptr [ %144, %for.inc129 ], [ %94, %invoke.cont90 ] + %add.ptr.i160 = getelementptr inbounds i8, ptr %__begin2.sroa.0.0530, i64 8 + %second.i.i = getelementptr inbounds i8, ptr %__begin2.sroa.0.0530, i64 16 %95 = load ptr, ptr %add.ptr.i160, align 8 %mempurge_used_.i = getelementptr inbounds i8, ptr %95, i64 2640 %96 = load i8, ptr %mempurge_used_.i, align 8 @@ -31536,7 +31536,7 @@ if.then.i27.i: ; preds = %_ZNSt6vectorIN7rock br label %for.inc129 for.inc129: ; preds = %.noexc200, %if.then.i.i191, %if.then.i196, %_ZNSt6vectorIPN7rocksdb16ColumnFamilyDataESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i, %if.then.i.i169, %if.then.i173 - %144 = load ptr, ptr %__begin2.sroa.0.0531, align 8 + %144 = load ptr, ptr %__begin2.sroa.0.0530, align 8 %cmp.i159.not = icmp eq ptr %144, null br i1 %cmp.i159.not, label %for.end131, label %for.body100 @@ -31605,7 +31605,7 @@ _ZN7rocksdb6DBImpl12FlushRequestD2Ev.exit: ; preds = %_ZNSt10_HashtableIP ], !llvm.loop !332 ehcleanup: ; preds = %lpad30.loopexit, %lpad30.loopexit.split-lp.loopexit.split-lp.loopexit, %lpad30.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %lpad30.loopexit.split-lp.loopexit, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i120, %lpad32, %_ZNSt10unique_ptrIA_KcSt14default_deleteIS1_EED2Ev.exit11.i410, %_ZNSt10unique_ptrIA_KcSt14default_deleteIS1_EED2Ev.exit11.i441, %lpad123, %lpad50 - %.pn30 = phi { ptr, i32 } [ %145, %lpad123 ], [ %62, %lpad50 ], [ %41, %_ZNSt10unique_ptrIA_KcSt14default_deleteIS1_EED2Ev.exit11.i410 ], [ %55, %_ZNSt10unique_ptrIA_KcSt14default_deleteIS1_EED2Ev.exit11.i441 ], [ %61, %lpad32 ], [ %61, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i120 ], [ %lpad.loopexit, %lpad30.loopexit ], [ %lpad.loopexit514, %lpad30.loopexit.split-lp.loopexit ], [ %lpad.loopexit517, %lpad30.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %lpad30.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] + %.pn30 = phi { ptr, i32 } [ %145, %lpad123 ], [ %62, %lpad50 ], [ %41, %_ZNSt10unique_ptrIA_KcSt14default_deleteIS1_EED2Ev.exit11.i410 ], [ %55, %_ZNSt10unique_ptrIA_KcSt14default_deleteIS1_EED2Ev.exit11.i441 ], [ %61, %lpad32 ], [ %61, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i120 ], [ %lpad.loopexit, %lpad30.loopexit ], [ %lpad.loopexit513, %lpad30.loopexit.split-lp.loopexit ], [ %lpad.loopexit516, %lpad30.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %lpad30.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] call void @_ZN7rocksdb6DBImpl12FlushRequestD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %flush_req) #28 br label %ehcleanup231 @@ -31682,12 +31682,12 @@ if.else.i.i224: ; preds = %_ZNK7rocksdb15Write invoke.cont146: ; preds = %if.then.i.i225, %if.else.i.i224 %retval.sroa.0.0.i.i = phi i32 [ %.sroa.speculated11.i.i, %if.then.i.i225 ], [ %.sroa.speculated.i.i, %if.else.i.i224 ] %retval.sroa.4.0.in.i.i = phi ptr [ %__b.__a.i4.i.i, %if.then.i.i225 ], [ %__b.__a.i8.i.i, %if.else.i.i224 ] - %retval.sroa.4.0.i.i513 = load i32, ptr %retval.sroa.4.0.in.i.i, align 4 + %retval.sroa.4.0.i.i = load i32, ptr %retval.sroa.4.0.in.i.i, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %max_background_compactions.addr.i.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %ref.tmp3.i.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %ref.tmp4.i.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %ref.tmp10.i.i) - %bg_job_limits.sroa.2.0.extract.trunc = select i1 %165, i32 %retval.sroa.4.0.i.i513, i32 1 + %bg_job_limits.sroa.2.0.extract.trunc = select i1 %165, i32 %retval.sroa.4.0.i.i, i32 1 %167 = load i64, ptr %bg_flush_args, align 8, !noalias !333 %168 = load ptr, ptr %_M_finish.i.i188, align 8, !noalias !333 %169 = load ptr, ptr %vect_.i, align 8, !noalias !333 @@ -31696,8 +31696,8 @@ invoke.cont146: ; preds = %if.then.i.i225, %if %sub.ptr.sub.i.i.i232 = sub i64 %sub.ptr.lhs.cast.i.i.i230, %sub.ptr.rhs.cast.i.i.i231 %sub.ptr.div.i.i.i233 = ashr exact i64 %sub.ptr.sub.i.i.i232, 5 %add.i.i234 = add i64 %sub.ptr.div.i.i.i233, %167 - %cmp.i.i237.not532 = icmp eq i64 %add.i.i234, 0 - br i1 %cmp.i.i237.not532, label %for.cond.cleanup, label %invoke.cont155.lr.ph + %cmp.i.i237.not531 = icmp eq i64 %add.i.i234, 0 + br i1 %cmp.i.i237.not531, label %for.cond.cleanup, label %invoke.cont155.lr.ph invoke.cont155.lr.ph: ; preds = %invoke.cont146 %bg_flush_scheduled_ = getelementptr inbounds i8, ptr %this, i64 5388 @@ -31714,12 +31714,12 @@ lpad151: ; preds = %invoke.cont155 br label %ehcleanup231 invoke.cont155: ; preds = %invoke.cont155.lr.ph, %for.inc164 - %__begin2145.sroa.2.0533 = phi i64 [ 0, %invoke.cont155.lr.ph ], [ %inc.i243, %for.inc164 ] - %cmp.i.i238 = icmp ult i64 %__begin2145.sroa.2.0533, 8 + %__begin2145.sroa.2.0532 = phi i64 [ 0, %invoke.cont155.lr.ph ], [ %inc.i243, %for.inc164 ] + %cmp.i.i238 = icmp ult i64 %__begin2145.sroa.2.0532, 8 %171 = load ptr, ptr %values_.i, align 8 - %arrayidx.i.i = getelementptr inbounds %"struct.rocksdb::DBImpl::BGFlushArg", ptr %171, i64 %__begin2145.sroa.2.0533 + %arrayidx.i.i = getelementptr inbounds %"struct.rocksdb::DBImpl::BGFlushArg", ptr %171, i64 %__begin2145.sroa.2.0532 %172 = load ptr, ptr %vect_.i, align 8 - %173 = getelementptr %"struct.rocksdb::DBImpl::BGFlushArg", ptr %172, i64 %__begin2145.sroa.2.0533 + %173 = getelementptr %"struct.rocksdb::DBImpl::BGFlushArg", ptr %172, i64 %__begin2145.sroa.2.0532 %add.ptr.i.i.i240 = getelementptr i8, ptr %173, i64 -256 %retval.0.i.i = select i1 %cmp.i.i238, ptr %arrayidx.i.i, ptr %add.ptr.i.i.i240 %174 = load ptr, ptr %retval.0.i.i, align 8 @@ -31731,7 +31731,7 @@ invoke.cont155: ; preds = %invoke.cont155.lr.p to label %for.inc164 unwind label %lpad151 for.inc164: ; preds = %invoke.cont155 - %inc.i243 = add nuw i64 %__begin2145.sroa.2.0533, 1 + %inc.i243 = add nuw i64 %__begin2145.sroa.2.0532, 1 %cmp.i.i237.not = icmp eq i64 %inc.i243, %add.i.i234 br i1 %cmp.i.i237.not, label %for.cond.cleanup, label %invoke.cont155 @@ -31793,8 +31793,8 @@ invoke.cont179: ; preds = %invoke.cont173, %_Z %sub.ptr.sub.i.i.i278 = sub i64 %sub.ptr.lhs.cast.i.i.i276, %sub.ptr.rhs.cast.i.i.i277 %sub.ptr.div.i.i.i279 = ashr exact i64 %sub.ptr.sub.i.i.i278, 5 %add.i.i280 = add i64 %sub.ptr.div.i.i.i279, %188 - %cmp.i.i284.not534 = icmp eq i64 %add.i.i280, 0 - br i1 %cmp.i.i284.not534, label %invoke.cont208, label %invoke.cont190 + %cmp.i.i284.not533 = icmp eq i64 %add.i.i280, 0 + br i1 %cmp.i.i284.not533, label %invoke.cont208, label %invoke.cont190 lpad184: ; preds = %invoke.cont190 %190 = landingpad { ptr, i32 } @@ -31802,12 +31802,12 @@ lpad184: ; preds = %invoke.cont190 br label %ehcleanup231 invoke.cont190: ; preds = %invoke.cont179, %for.inc199 - %__begin2178.sroa.2.0535 = phi i64 [ %inc.i293, %for.inc199 ], [ 0, %invoke.cont179 ] - %cmp.i.i286 = icmp ult i64 %__begin2178.sroa.2.0535, 8 + %__begin2178.sroa.2.0534 = phi i64 [ %inc.i293, %for.inc199 ], [ 0, %invoke.cont179 ] + %cmp.i.i286 = icmp ult i64 %__begin2178.sroa.2.0534, 8 %191 = load ptr, ptr %values_.i, align 8 - %arrayidx.i.i288 = getelementptr inbounds %"struct.rocksdb::DBImpl::BGFlushArg", ptr %191, i64 %__begin2178.sroa.2.0535 + %arrayidx.i.i288 = getelementptr inbounds %"struct.rocksdb::DBImpl::BGFlushArg", ptr %191, i64 %__begin2178.sroa.2.0534 %192 = load ptr, ptr %vect_.i, align 8 - %193 = getelementptr %"struct.rocksdb::DBImpl::BGFlushArg", ptr %192, i64 %__begin2178.sroa.2.0535 + %193 = getelementptr %"struct.rocksdb::DBImpl::BGFlushArg", ptr %192, i64 %__begin2178.sroa.2.0534 %add.ptr.i.i.i290 = getelementptr i8, ptr %193, i64 -256 %retval.0.i.i291 = select i1 %cmp.i.i286, ptr %arrayidx.i.i288, ptr %add.ptr.i.i.i290 %194 = load ptr, ptr %retval.0.i.i291, align 8 @@ -31822,7 +31822,7 @@ if.then196: ; preds = %invoke.cont194 br label %for.inc199 for.inc199: ; preds = %invoke.cont194, %if.then196 - %inc.i293 = add nuw i64 %__begin2178.sroa.2.0535, 1 + %inc.i293 = add nuw i64 %__begin2178.sroa.2.0534, 1 %cmp.i.i284.not = icmp eq i64 %inc.i293, %add.i.i280 br i1 %cmp.i.i284.not, label %invoke.cont208, label %invoke.cont190 @@ -31835,8 +31835,8 @@ invoke.cont208: ; preds = %for.inc199, %invoke %sub.ptr.sub.i.i.i299 = sub i64 %sub.ptr.lhs.cast.i.i.i297, %sub.ptr.rhs.cast.i.i.i298 %sub.ptr.div.i.i.i300 = ashr exact i64 %sub.ptr.sub.i.i.i299, 3 %add.i.i301 = add i64 %sub.ptr.div.i.i.i300, %195 - %cmp.i.i305.not536 = icmp eq i64 %add.i.i301, 0 - br i1 %cmp.i.i305.not536, label %for.cond.cleanup215, label %for.body216 + %cmp.i.i305.not535 = icmp eq i64 %add.i.i301, 0 + br i1 %cmp.i.i305.not535, label %for.cond.cleanup215, label %for.body216 for.cond.cleanup215: ; preds = %for.inc222, %invoke.cont208 store ptr null, ptr %state_.i.i122, align 8 @@ -31875,12 +31875,12 @@ lpad212: ; preds = %for.body216 br label %ehcleanup231 for.body216: ; preds = %invoke.cont208, %for.inc222 - %__begin1.sroa.2.0537 = phi i64 [ %inc.i333, %for.inc222 ], [ 0, %invoke.cont208 ] - %cmp.i.i326 = icmp ult i64 %__begin1.sroa.2.0537, 8 + %__begin1.sroa.2.0536 = phi i64 [ %inc.i333, %for.inc222 ], [ 0, %invoke.cont208 ] + %cmp.i.i326 = icmp ult i64 %__begin1.sroa.2.0536, 8 %206 = load ptr, ptr %values_.i66, align 8 - %arrayidx.i.i328 = getelementptr inbounds ptr, ptr %206, i64 %__begin1.sroa.2.0537 + %arrayidx.i.i328 = getelementptr inbounds ptr, ptr %206, i64 %__begin1.sroa.2.0536 %207 = load ptr, ptr %vect_.i68, align 8 - %208 = getelementptr ptr, ptr %207, i64 %__begin1.sroa.2.0537 + %208 = getelementptr ptr, ptr %207, i64 %__begin1.sroa.2.0536 %add.ptr.i.i.i330 = getelementptr i8, ptr %208, i64 -64 %retval.0.i.i331 = select i1 %cmp.i.i326, ptr %arrayidx.i.i328, ptr %add.ptr.i.i.i330 %209 = load ptr, ptr %retval.0.i.i331, align 8 @@ -31888,7 +31888,7 @@ for.body216: ; preds = %invoke.cont208, %fo to label %for.inc222 unwind label %lpad212 for.inc222: ; preds = %for.body216 - %inc.i333 = add nuw i64 %__begin1.sroa.2.0537, 1 + %inc.i333 = add nuw i64 %__begin1.sroa.2.0536, 1 %cmp.i.i305.not = icmp eq i64 %inc.i333, %add.i.i301 br i1 %cmp.i.i305.not, label %for.cond.cleanup215, label %for.body216 diff --git a/bench/rust-analyzer-rs/optimized/4fo6e09jeifrbt47.ll b/bench/rust-analyzer-rs/optimized/4fo6e09jeifrbt47.ll index 65421619336..e65161ce7be 100644 --- a/bench/rust-analyzer-rs/optimized/4fo6e09jeifrbt47.ll +++ b/bench/rust-analyzer-rs/optimized/4fo6e09jeifrbt47.ll @@ -7609,42 +7609,48 @@ define hidden void @"_ZN121_$LT$hashbrown..map..HashMap$LT$K$C$V$C$S$C$A$GT$$u20 %9 = ptrtoint ptr %.sroa.816.0.copyload18 to i64 %10 = sub nuw i64 %8, %9 %11 = lshr exact i64 %10, 5 - %12 = icmp eq ptr %.sroa.12.0.copyload23, null - %13 = ptrtoint ptr %.sroa.14.0.copyload26 to i64 - %14 = ptrtoint ptr %.sroa.12.0.copyload23 to i64 - %15 = sub nuw i64 %13, %14 - %16 = lshr exact i64 %15, 5 - %.sroa.8.0.i.i.i = select i1 %12, i64 0, i64 %16 - br i1 %6, label %17, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit10" + br i1 %6, label %12, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit10" -17: ; preds = %2 +12: ; preds = %2 %.sroa.7.0.i.i.i = select i1 %7, i64 0, i64 %11 + %13 = icmp eq ptr %.sroa.12.0.copyload23, null + %14 = ptrtoint ptr %.sroa.14.0.copyload26 to i64 + %15 = ptrtoint ptr %.sroa.12.0.copyload23 to i64 + %16 = sub nuw i64 %14, %15 + %17 = lshr exact i64 %16, 5 + %.sroa.8.0.i.i.i = select i1 %13, i64 0, i64 %17 %18 = add nuw nsw i64 %.sroa.8.0.i.i.i, %.sroa.7.0.i.i.i br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit" "_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit10": ; preds = %2 - %19 = add nuw nsw i64 %11, 1 - %20 = select i1 %7, i64 1, i64 %19 - %21 = add nuw nsw i64 %20, %.sroa.8.0.i.i.i - %22 = lshr i64 %21, 1 + %19 = icmp eq ptr %.sroa.12.0.copyload23, null + %20 = ptrtoint ptr %.sroa.14.0.copyload26 to i64 + %21 = ptrtoint ptr %.sroa.12.0.copyload23 to i64 + %22 = sub nuw i64 %20, %21 + %23 = lshr exact i64 %22, 5 + %.sroa.8.0.i.i.i5 = select i1 %19, i64 0, i64 %23 + %24 = add nuw nsw i64 %11, 1 + %25 = select i1 %7, i64 1, i64 %24 + %26 = add nuw nsw i64 %25, %.sroa.8.0.i.i.i5 + %27 = lshr i64 %26, 1 br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit" -"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit": ; preds = %17, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit10" - %.0 = phi i64 [ %22, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit10" ], [ %18, %17 ] - %23 = getelementptr inbounds i8, ptr %0, i64 16 - %24 = load i64, ptr %23, align 8, !alias.scope !1132, !noalias !1135, !noundef !4 - %25 = icmp ugt i64 %.0, %24 - br i1 %25, label %26, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h2a80c6dd6304d34dE.exit" - -26: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit" - %27 = getelementptr inbounds i8, ptr %0, i64 32 - %28 = tail call { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h2d75d9e79974885aE.llvm.17704032041304388331"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %.0, ptr noalias noundef nonnull readonly align 1 %27, i1 noundef zeroext true) - %29 = extractvalue { i64, i64 } %28, 0 - %30 = icmp eq i64 %29, -9223372036854775807 - tail call void @llvm.assume(i1 %30) +"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit": ; preds = %12, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit10" + %.0 = phi i64 [ %27, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit10" ], [ %18, %12 ] + %28 = getelementptr inbounds i8, ptr %0, i64 16 + %29 = load i64, ptr %28, align 8, !alias.scope !1132, !noalias !1135, !noundef !4 + %30 = icmp ugt i64 %.0, %29 + br i1 %30, label %31, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h2a80c6dd6304d34dE.exit" + +31: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit" + %32 = getelementptr inbounds i8, ptr %0, i64 32 + %33 = tail call { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h2d75d9e79974885aE.llvm.17704032041304388331"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %.0, ptr noalias noundef nonnull readonly align 1 %32, i1 noundef zeroext true) + %34 = extractvalue { i64, i64 } %33, 0 + %35 = icmp eq i64 %34, -9223372036854775807 + tail call void @llvm.assume(i1 %35) br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h2a80c6dd6304d34dE.exit" -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h2a80c6dd6304d34dE.exit": ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit", %26 +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h2a80c6dd6304d34dE.exit": ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1c6fb5767c6319cbE.llvm.18263967998570167583.exit", %31 %.sroa.8.0..sroa_idx15 = getelementptr inbounds i8, ptr %1, i64 16 %.sroa.533.0..sroa_idx = getelementptr inbounds i8, ptr %3, i64 16 call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %3), !noalias !1137 @@ -7818,10 +7824,10 @@ define hidden void @"_ZN121_$LT$hashbrown..map..HashMap$LT$K$C$V$C$S$C$A$GT$$u20 %20 = getelementptr inbounds i8, ptr %0, i64 24 %21 = getelementptr inbounds i8, ptr %0, i64 32 %22 = getelementptr inbounds i8, ptr %0, i64 16 - %.sroa.424.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 144 - %.sroa.424.0.copyload = load ptr, ptr %.sroa.424.0..sroa_idx, align 8, !nonnull !4, !noundef !4 - %.sroa.525.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 152 - %.sroa.525.0.copyload = load ptr, ptr %.sroa.525.0..sroa_idx, align 8, !nonnull !4, !noundef !4 + %.sroa.423.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 144 + %.sroa.423.0.copyload = load ptr, ptr %.sroa.423.0..sroa_idx, align 8, !nonnull !4, !noundef !4 + %.sroa.524.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 152 + %.sroa.524.0.copyload = load ptr, ptr %.sroa.524.0..sroa_idx, align 8, !nonnull !4, !noundef !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !1215) tail call void @llvm.experimental.noalias.scope.decl(metadata !1218) call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %19), !noalias !1221 @@ -7843,7 +7849,7 @@ define hidden void @"_ZN121_$LT$hashbrown..map..HashMap$LT$K$C$V$C$S$C$A$GT$$u20 %31 = getelementptr inbounds i8, ptr %19, i64 112 %32 = getelementptr inbounds i8, ptr %19, i64 96 %.sroa.415.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %14, i64 4 - %33 = getelementptr inbounds i8, ptr %.sroa.525.0.copyload, i64 896 + %33 = getelementptr inbounds i8, ptr %.sroa.524.0.copyload, i64 896 %.sroa.4.0..sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %9, i64 8 %.sroa.5.0..sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %9, i64 16 %34 = getelementptr inbounds i8, ptr %8, i64 52 @@ -8106,7 +8112,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17hc3a63b22a9d815d1E.exit.i.i.i call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12), !noalias !1350 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11), !noalias !1350 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10), !noalias !1350 - invoke void @_ZN3hir13LifetimeParam4name17hfe6bf7086a40a185E(ptr noalias nocapture noundef nonnull sret({ { i8, [23 x i8] } }) align 8 dereferenceable(24) %10, ptr noalias nocapture noundef nonnull align 4 dereferenceable(12) %14, ptr noundef nonnull align 1 %.sroa.424.0.copyload, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.525.0.copyload) + invoke void @_ZN3hir13LifetimeParam4name17hfe6bf7086a40a185E(ptr noalias nocapture noundef nonnull sret({ { i8, [23 x i8] } }) align 8 dereferenceable(24) %10, ptr noalias nocapture noundef nonnull align 4 dereferenceable(12) %14, ptr noundef nonnull align 1 %.sroa.423.0.copyload, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.524.0.copyload) to label %116 unwind label %114, !noalias !1352 107: ; preds = %.body.i.i.i.i.i.i.i, %114 @@ -8134,7 +8140,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17hc3a63b22a9d815d1E.exit.i.i.i 116: ; preds = %104 %117 = load ptr, ptr %33, align 8, !invariant.load !4, !noalias !1352, !nonnull !4 - %118 = invoke { ptr, ptr } %117(ptr noundef nonnull align 1 %.sroa.424.0.copyload) + %118 = invoke { ptr, ptr } %117(ptr noundef nonnull align 1 %.sroa.423.0.copyload) to label %121 unwind label %119, !noalias !1352 .body.i.i.i.i.i.i.i: ; preds = %134, %127, %119 diff --git a/bench/rust-analyzer-rs/optimized/54f0pj1u367tkav7.ll b/bench/rust-analyzer-rs/optimized/54f0pj1u367tkav7.ll index 711a799bce1..6c500bcbbf1 100644 --- a/bench/rust-analyzer-rs/optimized/54f0pj1u367tkav7.ll +++ b/bench/rust-analyzer-rs/optimized/54f0pj1u367tkav7.ll @@ -17786,7 +17786,7 @@ define noundef zeroext i1 @"_ZN73_$LT$hir_expand..name..UnescapedDisplay$u20$as$ %4 = load ptr, ptr %3, align 8, !nonnull !4, !align !5, !noundef !4 %5 = load i8, ptr %4, align 8, !range !260, !noundef !4 %6 = icmp eq i8 %5, 26 - br i1 %6, label %47, label %7 + br i1 %6, label %43, label %7 7: ; preds = %2 %8 = add nsw i8 %5, -24 @@ -17839,55 +17839,50 @@ _ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.8462471242219372772.exit: ; pr "_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.llvm.8462471242219372772.exit": ; preds = %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.8462471242219372772.exit, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hffb3447530e40bd1E.exit.i" %25 = phi ptr [ %spec.select.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hffb3447530e40bd1E.exit.i" ], [ null, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.8462471242219372772.exit ] %26 = add i64 %.sroa.4.0.i, -2 - %27 = insertvalue { ptr, i64 } poison, ptr %25, 0 - %28 = insertvalue { ptr, i64 } %27, i64 %26, 1 switch i8 %narrow.i, label %default.unreachable [ - i8 0, label %29 - i8 1, label %35 + i8 0, label %27 + i8 1, label %33 i8 2, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h6a58d25bc9c1627eE.llvm.8462471242219372772.exit.i5" ] -29: ; preds = %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.llvm.8462471242219372772.exit" - %30 = getelementptr inbounds i8, ptr %4, i64 8 - %31 = load ptr, ptr %30, align 8, !alias.scope !3987, !nonnull !4, !noundef !4 - %32 = getelementptr inbounds i8, ptr %4, i64 16 - %33 = load i64, ptr %32, align 8, !alias.scope !3987, !noundef !4 - %34 = getelementptr inbounds i8, ptr %31, i64 16 +27: ; preds = %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.llvm.8462471242219372772.exit" + %28 = getelementptr inbounds i8, ptr %4, i64 8 + %29 = load ptr, ptr %28, align 8, !alias.scope !3987, !nonnull !4, !noundef !4 + %30 = getelementptr inbounds i8, ptr %4, i64 16 + %31 = load i64, ptr %30, align 8, !alias.scope !3987, !noundef !4 + %32 = getelementptr inbounds i8, ptr %29, i64 16 br label %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.8462471242219372772.exit9 -35: ; preds = %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.llvm.8462471242219372772.exit" - %36 = getelementptr inbounds i8, ptr %4, i64 8 - %37 = load ptr, ptr %36, align 8, !alias.scope !3987, !nonnull !4, !align !183, !noundef !4 - %38 = getelementptr inbounds i8, ptr %4, i64 16 - %39 = load i64, ptr %38, align 8, !alias.scope !3987, !noundef !4 +33: ; preds = %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.llvm.8462471242219372772.exit" + %34 = getelementptr inbounds i8, ptr %4, i64 8 + %35 = load ptr, ptr %34, align 8, !alias.scope !3987, !nonnull !4, !align !183, !noundef !4 + %36 = getelementptr inbounds i8, ptr %4, i64 16 + %37 = load i64, ptr %36, align 8, !alias.scope !3987, !noundef !4 br label %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.8462471242219372772.exit9 "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h6a58d25bc9c1627eE.llvm.8462471242219372772.exit.i5": ; preds = %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.llvm.8462471242219372772.exit" - %40 = icmp samesign ult i8 %5, 24 - tail call void @llvm.assume(i1 %40) - %41 = zext nneg i8 %5 to i64 - %42 = getelementptr inbounds i8, ptr %4, i64 1 + %38 = icmp samesign ult i8 %5, 24 + tail call void @llvm.assume(i1 %38) + %39 = zext nneg i8 %5 to i64 + %40 = getelementptr inbounds i8, ptr %4, i64 1 br label %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.8462471242219372772.exit9 -_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.8462471242219372772.exit9: ; preds = %29, %35, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h6a58d25bc9c1627eE.llvm.8462471242219372772.exit.i5" - %.sroa.4.0.i6 = phi i64 [ %41, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h6a58d25bc9c1627eE.llvm.8462471242219372772.exit.i5" ], [ %39, %35 ], [ %33, %29 ] - %.sroa.0.0.i7 = phi ptr [ %42, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h6a58d25bc9c1627eE.llvm.8462471242219372772.exit.i5" ], [ %37, %35 ], [ %34, %29 ] - %43 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i7, 0 - %44 = insertvalue { ptr, i64 } %43, i64 %.sroa.4.0.i6, 1 - %45 = icmp eq ptr %25, null - %.pn = select i1 %45, { ptr, i64 } %44, { ptr, i64 } %28 - %.sroa.0.0 = select i1 %45, ptr %.sroa.0.0.i7, ptr %25 - %.sroa.5.0 = extractvalue { ptr, i64 } %.pn, 1 - %46 = tail call noundef zeroext i1 @"_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17hfca0302627bbc104E"(ptr noalias noundef nonnull readonly align 1 %.sroa.0.0, i64 noundef %.sroa.5.0, ptr noalias noundef nonnull align 8 dereferenceable(64) %1) - br label %50 - -47: ; preds = %2 - %48 = getelementptr inbounds i8, ptr %4, i64 8 - %49 = tail call noundef zeroext i1 @"_ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h0516a742b2dd93cdE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %48, ptr noalias noundef nonnull align 8 dereferenceable(64) %1) - br label %50 - -50: ; preds = %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.8462471242219372772.exit9, %47 - %.0.in = phi i1 [ %49, %47 ], [ %46, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.8462471242219372772.exit9 ] +_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.8462471242219372772.exit9: ; preds = %27, %33, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h6a58d25bc9c1627eE.llvm.8462471242219372772.exit.i5" + %.sroa.4.0.i6 = phi i64 [ %39, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h6a58d25bc9c1627eE.llvm.8462471242219372772.exit.i5" ], [ %37, %33 ], [ %31, %27 ] + %.sroa.0.0.i7 = phi ptr [ %40, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h6a58d25bc9c1627eE.llvm.8462471242219372772.exit.i5" ], [ %35, %33 ], [ %32, %27 ] + %41 = icmp eq ptr %25, null + %.sroa.0.0 = select i1 %41, ptr %.sroa.0.0.i7, ptr %25 + %.sroa.5.0 = select i1 %41, i64 %.sroa.4.0.i6, i64 %26 + %42 = tail call noundef zeroext i1 @"_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17hfca0302627bbc104E"(ptr noalias noundef nonnull readonly align 1 %.sroa.0.0, i64 noundef %.sroa.5.0, ptr noalias noundef nonnull align 8 dereferenceable(64) %1) + br label %46 + +43: ; preds = %2 + %44 = getelementptr inbounds i8, ptr %4, i64 8 + %45 = tail call noundef zeroext i1 @"_ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h0516a742b2dd93cdE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %44, ptr noalias noundef nonnull align 8 dereferenceable(64) %1) + br label %46 + +46: ; preds = %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.8462471242219372772.exit9, %43 + %.0.in = phi i1 [ %45, %43 ], [ %42, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.8462471242219372772.exit9 ] ret i1 %.0.in } diff --git a/bench/slurm/optimized/node_features_knl_generic.ll b/bench/slurm/optimized/node_features_knl_generic.ll index 8e626343bde..c6482c03e12 100644 --- a/bench/slurm/optimized/node_features_knl_generic.ll +++ b/bench/slurm/optimized/node_features_knl_generic.ll @@ -2620,38 +2620,38 @@ define ptr @node_features_p_job_xlate(ptr noundef %0, ptr nocapture noundef read %13 = call fastcc zeroext i16 @_knl_mcdram_token(ptr noundef nonnull %.01631) %.not24 = icmp ne i16 %13, 0 %.113 = select i1 %.not24, i1 true, i1 %.01233 - %14 = xor i1 %.01233, true - %15 = call i32 @xstrcasecmp(ptr noundef nonnull %.01631, ptr noundef nonnull @.str.62) #15 - %.not.i = icmp eq i32 %15, 0 - br i1 %.not.i, label %_knl_numa_token.exit, label %16 + %14 = call i32 @xstrcasecmp(ptr noundef nonnull %.01631, ptr noundef nonnull @.str.62) #15 + %.not.i = icmp eq i32 %14, 0 + br i1 %.not.i, label %_knl_numa_token.exit, label %15 -16: ; preds = %12 - %17 = call i32 @xstrcasecmp(ptr noundef nonnull %.01631, ptr noundef nonnull @.str.68) #15 - %.not10.i = icmp eq i32 %17, 0 - br i1 %.not10.i, label %_knl_numa_token.exit, label %18 +15: ; preds = %12 + %16 = call i32 @xstrcasecmp(ptr noundef nonnull %.01631, ptr noundef nonnull @.str.68) #15 + %.not10.i = icmp eq i32 %16, 0 + br i1 %.not10.i, label %_knl_numa_token.exit, label %17 -18: ; preds = %16 - %19 = call i32 @xstrcasecmp(ptr noundef nonnull %.01631, ptr noundef nonnull @.str.70) #15 - %.not11.i = icmp eq i32 %19, 0 - br i1 %.not11.i, label %_knl_numa_token.exit, label %20 +17: ; preds = %15 + %18 = call i32 @xstrcasecmp(ptr noundef nonnull %.01631, ptr noundef nonnull @.str.70) #15 + %.not11.i = icmp eq i32 %18, 0 + br i1 %.not11.i, label %_knl_numa_token.exit, label %19 -20: ; preds = %18 - %21 = call i32 @xstrcasecmp(ptr noundef nonnull %.01631, ptr noundef nonnull @.str.64) #15 - %.not12.i = icmp eq i32 %21, 0 - br i1 %.not12.i, label %_knl_numa_token.exit, label %22 +19: ; preds = %17 + %20 = call i32 @xstrcasecmp(ptr noundef nonnull %.01631, ptr noundef nonnull @.str.64) #15 + %.not12.i = icmp eq i32 %20, 0 + br i1 %.not12.i, label %_knl_numa_token.exit, label %21 -22: ; preds = %20 - %23 = call i32 @xstrcasecmp(ptr noundef nonnull %.01631, ptr noundef nonnull @.str.66) #15 - %.not13.i = icmp ne i32 %23, 0 +21: ; preds = %19 + %22 = call i32 @xstrcasecmp(ptr noundef nonnull %.01631, ptr noundef nonnull @.str.66) #15 + %.not13.i = icmp ne i32 %22, 0 br label %_knl_numa_token.exit -_knl_numa_token.exit: ; preds = %12, %16, %18, %20, %22 - %.0.i = phi i1 [ false, %12 ], [ false, %16 ], [ false, %18 ], [ false, %20 ], [ %.not13.i, %22 ] +_knl_numa_token.exit: ; preds = %12, %15, %17, %19, %21 + %.0.i = phi i1 [ false, %12 ], [ false, %15 ], [ false, %17 ], [ false, %19 ], [ %.not13.i, %21 ] %not..0.i = xor i1 %.0.i, true %.115 = select i1 %not..0.i, i1 true, i1 %.01432 - %24 = select i1 %.0.i, i1 true, i1 %.01432 - %25 = select i1 %.not24, i1 %14, i1 false - %not. = xor i1 %24, true + %23 = select i1 %.0.i, i1 true, i1 %.01432 + %24 = xor i1 %.01233, true + %25 = select i1 %.not24, i1 %24, i1 false + %not. = xor i1 %23, true %26 = select i1 %not., i1 true, i1 %25 br i1 %26, label %27, label %28 diff --git a/bench/stat-rs/optimized/4d9pj14shc9lbmph.ll b/bench/stat-rs/optimized/4d9pj14shc9lbmph.ll index e78bfc28c10..3f1857d4581 100644 --- a/bench/stat-rs/optimized/4d9pj14shc9lbmph.ll +++ b/bench/stat-rs/optimized/4d9pj14shc9lbmph.ll @@ -1667,13 +1667,13 @@ define void @_ZN6statrs8function4beta16checked_beta_reg17hc3be34898596ccaaE(ptr %80 = fadd double %79, 1.000000e+00 %81 = tail call double @llvm.fabs.f64(double %80) %82 = fcmp olt double %81, 0x360000000000000 - %83 = fdiv double 1.000000e+00, %80 - %84 = fdiv double %78, %.sroa.055.0 - %85 = fadd double %84, 1.000000e+00 - %86 = tail call double @llvm.fabs.f64(double %85) - %87 = fcmp olt double %86, 0x360000000000000 - %.sroa.055.1 = select i1 %87, double 0x360000000000000, double %85 - %88 = select i1 %82, double 0x7C80000000000000, double %83 + %83 = fdiv double %78, %.sroa.055.0 + %84 = fadd double %83, 1.000000e+00 + %85 = tail call double @llvm.fabs.f64(double %84) + %86 = fcmp olt double %85, 0x360000000000000 + %.sroa.055.1 = select i1 %86, double 0x360000000000000, double %84 + %87 = fdiv double 1.000000e+00, %80 + %88 = select i1 %82, double 0x7C80000000000000, double %87 %89 = fmul double %.sroa.065.0, %88 %90 = fmul double %.sroa.055.1, %89 %91 = fadd double %.sroa.0.0, %69 @@ -1688,13 +1688,13 @@ define void @_ZN6statrs8function4beta16checked_beta_reg17hc3be34898596ccaaE(ptr %100 = fadd double %99, 1.000000e+00 %101 = tail call double @llvm.fabs.f64(double %100) %102 = fcmp olt double %101, 0x360000000000000 - %103 = fdiv double 1.000000e+00, %100 - %104 = fdiv double %98, %.sroa.055.1 - %105 = fadd double %104, 1.000000e+00 - %106 = tail call double @llvm.fabs.f64(double %105) - %107 = fcmp olt double %106, 0x360000000000000 - %.sroa.055.2 = select i1 %107, double 0x360000000000000, double %105 - %108 = select i1 %102, double 0x7C80000000000000, double %103 + %103 = fdiv double %98, %.sroa.055.1 + %104 = fadd double %103, 1.000000e+00 + %105 = tail call double @llvm.fabs.f64(double %104) + %106 = fcmp olt double %105, 0x360000000000000 + %.sroa.055.2 = select i1 %106, double 0x360000000000000, double %104 + %107 = fdiv double 1.000000e+00, %100 + %108 = select i1 %102, double 0x7C80000000000000, double %107 %109 = fmul double %108, %.sroa.055.2 %110 = fmul double %90, %109 %111 = fadd double %109, -1.000000e+00 diff --git a/bench/tev/optimized/main.cpp.ll b/bench/tev/optimized/main.cpp.ll index 1b89ee2e2c5..0ea9048dcc9 100644 --- a/bench/tev/optimized/main.cpp.ll +++ b/bench/tev/optimized/main.cpp.ll @@ -7323,57 +7323,57 @@ _ZNSt3__110shared_ptrIN3tev5ImageEED2B8ne190000Ev.exit: ; preds = %1196, %1192, 1204: ; preds = %._crit_edge747 %1205 = invoke i16 @_ZN7nanogui22test_10bit_edr_supportEv() - to label %1206 unwind label %1215 + to label %1206 unwind label %1212 1206: ; preds = %1204 %1207 = load ptr, ptr %47, align 8 %1208 = getelementptr inbounds i8, ptr %1207, i64 16 %1209 = load ptr, ptr %1208, align 8 %1210 = call noundef zeroext i1 %1209(ptr noundef nonnull align 8 dereferenceable(216) %47) #30 - %1211 = and i16 %1205, 256 - %1212 = icmp ne i16 %1211, 0 - %1213 = trunc i16 %1205 to i1 - %1214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4tlog6Logger6globalEv() - to label %.noexc650 unwind label %1215 + %1211 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4tlog6Logger6globalEv() + to label %.noexc650 unwind label %1212 -1215: ; preds = %.noexc657, %1255, %.noexc650, %1206, %1347, %1345, %1331, %1322, %1308, %1299, %1290, %1279, %1272, %1270, %1266, %1263, %1204 - %1216 = landingpad { ptr, i32 } +1212: ; preds = %.noexc657, %1255, %.noexc650, %1206, %1347, %1345, %1331, %1322, %1308, %1299, %1290, %1279, %1272, %1270, %1266, %1263, %1204 + %1213 = landingpad { ptr, i32 } cleanup br label %1365 .noexc650: ; preds = %1206 - %1217 = load ptr, ptr %1214, align 8, !noalias !63 - invoke void @_ZN4tlog6StreamC2EPNS_6LoggerENS_9ESeverityE(ptr noundef nonnull align 8 dereferenceable(24) %132, ptr noundef nonnull align 8 dereferenceable(72) %1217, i32 noundef 1) - to label %_ZN4tlog4infoEv.exit unwind label %1215 + %1214 = load ptr, ptr %1211, align 8, !noalias !63 + invoke void @_ZN4tlog6StreamC2EPNS_6LoggerENS_9ESeverityE(ptr noundef nonnull align 8 dereferenceable(24) %132, ptr noundef nonnull align 8 dereferenceable(72) %1214, i32 noundef 1) + to label %_ZN4tlog4infoEv.exit unwind label %1212 _ZN4tlog4infoEv.exit: ; preds = %.noexc650 - %1218 = getelementptr inbounds i8, ptr %132, i64 16 - %1219 = load ptr, ptr %1218, align 8 - %1220 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) %1219, ptr noundef nonnull @.str.63, i64 noundef 15) + %1215 = getelementptr inbounds i8, ptr %132, i64 16 + %1216 = load ptr, ptr %1215, align 8 + %1217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) %1216, ptr noundef nonnull @.str.63, i64 noundef 15) to label %_ZN4tlog6StreamlsIA16_cEERS0_RKT_.exit unwind label %1248 _ZN4tlog6StreamlsIA16_cEERS0_RKT_.exit: ; preds = %_ZN4tlog4infoEv.exit + %1218 = trunc i16 %1205 to i1 %not.697 = xor i1 %1210, true - %1221 = select i1 %not.697, i1 %1213, i1 false - %1222 = select i1 %1221, i32 10, i32 8 - %1223 = load ptr, ptr %1218, align 8 - %1224 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEi(ptr noundef nonnull align 8 dereferenceable(8) %1223, i32 noundef %1222) + %1219 = select i1 %not.697, i1 %1218, i1 false + %1220 = select i1 %1219, i32 10, i32 8 + %1221 = load ptr, ptr %1215, align 8 + %1222 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEi(ptr noundef nonnull align 8 dereferenceable(8) %1221, i32 noundef %1220) to label %_ZN4tlog6StreamlsIiEERS0_RKT_.exit unwind label %1248 _ZN4tlog6StreamlsIiEERS0_RKT_.exit: ; preds = %_ZN4tlog6StreamlsIA16_cEERS0_RKT_.exit - %1225 = load ptr, ptr %1218, align 8 - %1226 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) %1225, ptr noundef nonnull @.str.64, i64 noundef 19) + %1223 = load ptr, ptr %1215, align 8 + %1224 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) %1223, ptr noundef nonnull @.str.64, i64 noundef 19) to label %_ZN4tlog6StreamlsIA20_cEERS0_RKT_.exit unwind label %1248 _ZN4tlog6StreamlsIA20_cEERS0_RKT_.exit: ; preds = %_ZN4tlog6StreamlsIiEERS0_RKT_.exit - %1227 = select i1 %not.697, i1 %1212, i1 false + %1225 = and i16 %1205, 256 + %1226 = icmp ne i16 %1225, 0 + %1227 = select i1 %not.697, i1 %1226, i1 false %.str.65..str.21 = select i1 %1227, ptr @.str.65, ptr @.str.21 - %1228 = load ptr, ptr %1218, align 8 + %1228 = load ptr, ptr %1215, align 8 %1229 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) %1228, ptr noundef nonnull align 1 dereferenceable(4) %.str.65..str.21, i64 noundef 3) to label %_ZN4tlog6StreamlsIA4_cEERS0_RKT_.exit unwind label %1248 _ZN4tlog6StreamlsIA4_cEERS0_RKT_.exit: ; preds = %_ZN4tlog6StreamlsIA20_cEERS0_RKT_.exit - %1230 = load ptr, ptr %1218, align 8 + %1230 = load ptr, ptr %1215, align 8 %1231 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) %1230, ptr noundef nonnull @.str.66, i64 noundef 17) to label %_ZN4tlog6StreamlsIA18_cEERS0_RKT_.exit unwind label %1248 @@ -7415,12 +7415,12 @@ _ZN4tlog6StreamlsIA18_cEERS0_RKT_.exit: ; preds = %_ZN4tlog6StreamlsIA 1255: ; preds = %1250 %1256 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN4tlog6Logger6globalEv() - to label %.noexc657 unwind label %1215 + to label %.noexc657 unwind label %1212 .noexc657: ; preds = %1255 %1257 = load ptr, ptr %1256, align 8, !noalias !66 invoke void @_ZN4tlog6StreamC2EPNS_6LoggerENS_9ESeverityE(ptr noundef nonnull align 8 dereferenceable(24) %133, ptr noundef nonnull align 8 dereferenceable(72) %1257, i32 noundef 4) - to label %_ZN4tlog5errorEv.exit659 unwind label %1215 + to label %_ZN4tlog5errorEv.exit659 unwind label %1212 _ZN4tlog5errorEv.exit659: ; preds = %.noexc657 %1258 = getelementptr inbounds i8, ptr %133, i64 16 @@ -7440,10 +7440,10 @@ _ZN4tlog6StreamlsIA32_cEERS0_RKT_.exit: ; preds = %_ZN4tlog5errorEv.ex 1263: ; preds = %1250, %_ZN4tlog6StreamlsIA18_cEERS0_RKT_.exit %1264 = invoke noalias noundef nonnull dereferenceable(976) ptr @_Znwm(i64 noundef 976) #32 - to label %1265 unwind label %1215 + to label %1265 unwind label %1212 1265: ; preds = %1263 - %spec.select694 = or i1 %1221, %1227 + %spec.select694 = or i1 %1219, %1227 invoke void @_ZN3tev11ImageViewerC1ERKNSt3__110shared_ptrINS_22BackgroundImagesLoaderEEEbbb(ptr noundef nonnull align 16 dereferenceable(972) %1264, ptr noundef nonnull align 8 dereferenceable(16) %124, i1 noundef zeroext %spec.select328, i1 noundef zeroext %spec.select694, i1 noundef zeroext %1227) to label %1266 unwind label %1283 @@ -7454,17 +7454,17 @@ _ZN4tlog6StreamlsIA32_cEERS0_RKT_.exit: ; preds = %_ZN4tlog5errorEv.ex %1268 = getelementptr inbounds i8, ptr %1267, i64 120 %1269 = load ptr, ptr %1268, align 8 invoke void %1269(ptr noundef nonnull align 16 dereferenceable(384) %1264) - to label %1270 unwind label %1215 + to label %1270 unwind label %1212 1270: ; preds = %1266 %1271 = load ptr, ptr @_ZN3tevL12sImageViewerE, align 8 invoke void @_ZN7nanogui6Screen11set_visibleEb(ptr noundef nonnull align 16 dereferenceable(384) %1271, i1 noundef zeroext true) - to label %1272 unwind label %1215 + to label %1272 unwind label %1212 1272: ; preds = %1270 %1273 = load ptr, ptr @_ZN3tevL12sImageViewerE, align 8 invoke void @_ZN7nanogui6Screen6redrawEv(ptr noundef nonnull align 16 dereferenceable(384) %1273) - to label %1274 unwind label %1215 + to label %1274 unwind label %1212 1274: ; preds = %1272 %1275 = load ptr, ptr %18, align 8 @@ -7478,7 +7478,7 @@ _ZN4tlog6StreamlsIA32_cEERS0_RKT_.exit: ; preds = %_ZN4tlog5errorEv.ex %1281 = getelementptr inbounds i8, ptr %18, i64 216 %1282 = load float, ptr %1281, align 8 invoke void @_ZN3tev11ImageViewer11setExposureEf(ptr noundef nonnull align 16 dereferenceable(972) %1280, float noundef %1282) - to label %1285 unwind label %1215 + to label %1285 unwind label %1212 1283: ; preds = %1265 %1284 = landingpad { ptr, i32 } @@ -7497,7 +7497,7 @@ _ZN4tlog6StreamlsIA32_cEERS0_RKT_.exit: ; preds = %_ZN4tlog5errorEv.ex %1291 = load ptr, ptr @_ZN3tevL12sImageViewerE, align 8 %1292 = getelementptr inbounds i8, ptr %24, i64 216 %1293 = invoke noundef zeroext i1 @_ZN3tev11ImageViewer9setFilterERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE(ptr noundef nonnull align 16 dereferenceable(972) %1291, ptr noundef nonnull align 8 dereferenceable(24) %1292) - to label %1294 unwind label %1215 + to label %1294 unwind label %1212 1294: ; preds = %1290, %1285 %1295 = load ptr, ptr %30, align 8 @@ -7511,7 +7511,7 @@ _ZN4tlog6StreamlsIA32_cEERS0_RKT_.exit: ; preds = %_ZN4tlog5errorEv.ex %1301 = getelementptr inbounds i8, ptr %30, i64 216 %1302 = load float, ptr %1301, align 8 invoke void @_ZN3tev11ImageViewer8setGammaEf(ptr noundef nonnull align 16 dereferenceable(972) %1300, float noundef %1302) - to label %1303 unwind label %1215 + to label %1303 unwind label %1212 1303: ; preds = %1299, %1294 %1304 = load ptr, ptr %62, align 8 @@ -7524,7 +7524,7 @@ _ZN4tlog6StreamlsIA32_cEERS0_RKT_.exit: ; preds = %_ZN4tlog5errorEv.ex %1309 = load ptr, ptr @_ZN3tevL12sImageViewerE, align 8 %1310 = getelementptr inbounds i8, ptr %62, i64 216 invoke void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %134, ptr noundef nonnull align 8 dereferenceable(24) %1310) - to label %1311 unwind label %1215 + to label %1311 unwind label %1212 1311: ; preds = %1308 %1312 = invoke noundef i32 @_ZN3tev8toMetricENSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE(ptr noundef nonnull %134) @@ -7556,7 +7556,7 @@ _ZN4tlog6StreamlsIA32_cEERS0_RKT_.exit: ; preds = %_ZN4tlog5errorEv.ex %1324 = getelementptr inbounds i8, ptr %78, i64 216 %1325 = load float, ptr %1324, align 8 invoke void @_ZN3tev11ImageViewer9setOffsetEf(ptr noundef nonnull align 16 dereferenceable(972) %1323, float noundef %1325) - to label %1326 unwind label %1215 + to label %1326 unwind label %1212 1326: ; preds = %1322, %1317 %1327 = load ptr, ptr %84, align 8 @@ -7569,7 +7569,7 @@ _ZN4tlog6StreamlsIA32_cEERS0_RKT_.exit: ; preds = %_ZN4tlog5errorEv.ex %1332 = load ptr, ptr @_ZN3tevL12sImageViewerE, align 8 %1333 = getelementptr inbounds i8, ptr %84, i64 216 invoke void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %135, ptr noundef nonnull align 8 dereferenceable(24) %1333) - to label %1334 unwind label %1215 + to label %1334 unwind label %1212 1334: ; preds = %1331 %1335 = invoke noundef i32 @_ZN3tev9toTonemapENSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE(ptr noundef nonnull %135) @@ -7599,11 +7599,11 @@ _ZN4tlog6StreamlsIA32_cEERS0_RKT_.exit: ; preds = %_ZN4tlog5errorEv.ex 1345: ; preds = %1340 %1346 = load ptr, ptr @_ZN3tevL12sImageViewerE, align 8 invoke void @_ZN3tev11ImageViewer23setWatchFilesForChangesEb(ptr noundef nonnull align 16 dereferenceable(972) %1346, i1 noundef zeroext true) - to label %1347 unwind label %1215 + to label %1347 unwind label %1212 1347: ; preds = %1345, %1340 invoke void @_ZN7nanogui8mainloopEf(float noundef 2.500000e+02) - to label %1348 unwind label %1215 + to label %1348 unwind label %1212 1348: ; preds = %1347, %_ZN4tlog6StreamlsIA32_cEERS0_RKT_.exit %.2 = phi i32 [ -3, %_ZN4tlog6StreamlsIA32_cEERS0_RKT_.exit ], [ 0, %1347 ] @@ -7657,8 +7657,8 @@ _ZN4tlog6StreamlsIA32_cEERS0_RKT_.exit: ; preds = %_ZN4tlog5errorEv.ex call void @_ZNSt3__119__shared_weak_count14__release_weakEv(ptr noundef nonnull align 8 dereferenceable(24) %1356) #30 br label %_ZNSt3__110shared_ptrIN3tev22BackgroundImagesLoaderEED2B8ne190000Ev.exit -1365: ; preds = %.loopexit, %.loopexit.split-lp, %1215, %1248, %1261, %1283, %1315, %1338, %1203 - %.pn318.pn = phi { ptr, i32 } [ %.pn318, %1203 ], [ %1262, %1261 ], [ %1216, %1215 ], [ %1339, %1338 ], [ %1316, %1315 ], [ %1284, %1283 ], [ %1249, %1248 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +1365: ; preds = %.loopexit, %.loopexit.split-lp, %1212, %1248, %1261, %1283, %1315, %1338, %1203 + %.pn318.pn = phi { ptr, i32 } [ %.pn318, %1203 ], [ %1262, %1261 ], [ %1213, %1212 ], [ %1339, %1338 ], [ %1316, %1315 ], [ %1284, %1283 ], [ %1249, %1248 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %127) #30 call fastcc void @"_ZN3tev10ScopeGuardIZNS_8mainFuncERKNSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEEE3$_2ED2Ev"(ptr nonnull %126, ptr nonnull %125) #30 call void @_ZNSt3__16threadD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #30 @@ -24899,19 +24899,19 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5clearB8ne190000E %20 = getelementptr inbounds i8, ptr %19, i64 24 %21 = load i64, ptr %20, align 8 %22 = icmp slt i64 %21, 1 - %23 = call i64 @llvm.smax.i64(i64 %21, i64 1) invoke void @_ZNKSt3__18ios_base6getlocEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__1::locale") align 8 %4, ptr noundef nonnull align 8 dereferenceable(136) %19) - to label %24 unwind label %.loopexit.split-lp + to label %23 unwind label %.loopexit.split-lp -24: ; preds = %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5clearB8ne190000Ev.exit - %25 = invoke noundef nonnull align 8 dereferenceable(25) ptr @_ZNKSt3__16locale9use_facetERNS0_2idE(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(12) @_ZNSt3__15ctypeIcE2idE) +23: ; preds = %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5clearB8ne190000Ev.exit + %24 = invoke noundef nonnull align 8 dereferenceable(25) ptr @_ZNKSt3__16locale9use_facetERNS0_2idE(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(12) @_ZNSt3__15ctypeIcE2idE) to label %.lr.ph unwind label %45 -.lr.ph: ; preds = %24 +.lr.ph: ; preds = %23 call void @_ZNSt3__16localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #30 %invariant.gep = getelementptr i8, ptr %0, i64 40 - %26 = getelementptr inbounds i8, ptr %25, i64 16 - %smax = select i1 %22, i64 9223372036854775807, i64 %23 + %25 = getelementptr inbounds i8, ptr %24, i64 16 + %26 = call i64 @llvm.smax.i64(i64 %21, i64 1) + %smax = select i1 %22, i64 9223372036854775807, i64 %26 br label %27 27: ; preds = %.lr.ph, %_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6sbumpcB8ne190000Ev.exit @@ -24954,7 +24954,7 @@ _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sgetcB8ne190000Ev.exit: ; pred catch ptr null br label %47 -45: ; preds = %24 +45: ; preds = %23 %46 = landingpad { ptr, i32 } catch ptr null call void @_ZNSt3__16localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #30 @@ -24993,7 +24993,7 @@ _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sgetcB8ne190000Ev.exit: ; pred br i1 %66, label %_ZNKSt3__15ctypeIcE2isB8ne190000Etc.exit, label %_ZNKSt3__15ctypeIcE2isB8ne190000Etc.exit.thread _ZNKSt3__15ctypeIcE2isB8ne190000Etc.exit: ; preds = %64 - %67 = load ptr, ptr %26, align 8 + %67 = load ptr, ptr %25, align 8 %.mask = and i32 %.0.i41, 127 %68 = zext nneg i32 %.mask to i64 %69 = getelementptr inbounds i16, ptr %67, i64 %68 diff --git a/bench/tokenizers-rs/optimized/2mot01sr7ebui81b.ll b/bench/tokenizers-rs/optimized/2mot01sr7ebui81b.ll index 2f6d79bcde2..15f42dfb283 100644 --- a/bench/tokenizers-rs/optimized/2mot01sr7ebui81b.ll +++ b/bench/tokenizers-rs/optimized/2mot01sr7ebui81b.ll @@ -2509,7 +2509,7 @@ define hidden void @"_ZN121_$LT$hashbrown..map..HashMap$LT$K$C$V$C$S$C$A$GT$$u20 %8 = getelementptr inbounds i8, ptr %4, i64 56 %9 = load i64, ptr %8, align 8, !noalias !4, !noundef !4 %10 = icmp eq i64 %9, 0 - br i1 %7, label %11, label %19 + br i1 %7, label %11, label %20 11: ; preds = %2 br i1 %10, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h218752a90c3a0217E.exit", label %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17ha3c07526afaceca8E.exit.i.i.i" @@ -2523,105 +2523,105 @@ define hidden void @"_ZN121_$LT$hashbrown..map..HashMap$LT$K$C$V$C$S$C$A$GT$$u20 %16 = ptrtoint ptr %12 to i64 %17 = sub nuw i64 %15, %16 %18 = lshr exact i64 %17, 5 - %.sink21.i.i.i.i = select i1 %13, i64 0, i64 %18 - %.0.sroa.speculated.i.i.i.i = tail call noundef i64 @llvm.umin.i64(i64 %.sink21.i.i.i.i, i64 %9) + %19 = tail call i64 @llvm.umin.i64(i64 %18, i64 %9) + %.0.sroa.speculated.i.i.i.i = select i1 %13, i64 0, i64 %19 br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h7eb1e2db219b349dE.llvm.15403311311865522351.exit" -19: ; preds = %2 +20: ; preds = %2 br i1 %10, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h218752a90c3a0217E.exit", label %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17ha3c07526afaceca8E.exit.i.i.i7" -"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17ha3c07526afaceca8E.exit.i.i.i7": ; preds = %19 - %20 = load ptr, ptr %4, align 8, !alias.scope !704, !noalias !713, !noundef !4 - %21 = icmp eq ptr %20, null - %22 = getelementptr inbounds i8, ptr %4, i64 8 - %.val15.i.i.i.i4 = load ptr, ptr %22, align 8, !nonnull !4 - %23 = ptrtoint ptr %.val15.i.i.i.i4 to i64 - %24 = ptrtoint ptr %20 to i64 - %25 = sub nuw i64 %23, %24 - %26 = lshr exact i64 %25, 5 - %.sink21.i.i.i.i8 = select i1 %21, i64 0, i64 %26 - %.0.sroa.speculated.i.i.i.i10 = tail call noundef i64 @llvm.umin.i64(i64 %.sink21.i.i.i.i8, i64 %9) - %27 = add nuw nsw i64 %.0.sroa.speculated.i.i.i.i10, 1 - %28 = lshr i64 %27, 1 +"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17ha3c07526afaceca8E.exit.i.i.i7": ; preds = %20 + %21 = load ptr, ptr %4, align 8, !alias.scope !704, !noalias !713, !noundef !4 + %22 = icmp eq ptr %21, null + %23 = getelementptr inbounds i8, ptr %4, i64 8 + %.val15.i.i.i.i4 = load ptr, ptr %23, align 8, !nonnull !4 + %24 = ptrtoint ptr %.val15.i.i.i.i4 to i64 + %25 = ptrtoint ptr %21 to i64 + %26 = sub nuw i64 %24, %25 + %27 = lshr exact i64 %26, 5 + %28 = tail call i64 @llvm.umin.i64(i64 %27, i64 %9) + %29 = add nuw nsw i64 %28, 1 + %30 = lshr i64 %29, 1 + %31 = select i1 %22, i64 0, i64 %30 br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h7eb1e2db219b349dE.llvm.15403311311865522351.exit" "_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h7eb1e2db219b349dE.llvm.15403311311865522351.exit": ; preds = %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17ha3c07526afaceca8E.exit.i.i.i7", %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17ha3c07526afaceca8E.exit.i.i.i" - %.0 = phi i64 [ %.0.sroa.speculated.i.i.i.i, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17ha3c07526afaceca8E.exit.i.i.i" ], [ %28, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17ha3c07526afaceca8E.exit.i.i.i7" ] - %29 = getelementptr inbounds i8, ptr %0, i64 16 - %30 = load i64, ptr %29, align 8, !alias.scope !718, !noalias !721, !noundef !4 - %31 = icmp ugt i64 %.0, %30 - br i1 %31, label %32, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h218752a90c3a0217E.exit" - -32: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h7eb1e2db219b349dE.llvm.15403311311865522351.exit" - %33 = getelementptr inbounds i8, ptr %0, i64 32 - %34 = invoke { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h9682782f917e1d75E.llvm.11083375685992158394"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %.0, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %33, i1 noundef zeroext true) - to label %.noexc unwind label %51 - -.noexc: ; preds = %32 - %35 = extractvalue { i64, i64 } %34, 0 - %36 = icmp eq i64 %35, -9223372036854775807 - tail call void @llvm.assume(i1 %36) + %.0 = phi i64 [ %.0.sroa.speculated.i.i.i.i, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17ha3c07526afaceca8E.exit.i.i.i" ], [ %31, %"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17ha3c07526afaceca8E.exit.i.i.i7" ] + %32 = getelementptr inbounds i8, ptr %0, i64 16 + %33 = load i64, ptr %32, align 8, !alias.scope !718, !noalias !721, !noundef !4 + %34 = icmp ugt i64 %.0, %33 + br i1 %34, label %35, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h218752a90c3a0217E.exit" + +35: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h7eb1e2db219b349dE.llvm.15403311311865522351.exit" + %36 = getelementptr inbounds i8, ptr %0, i64 32 + %37 = invoke { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h9682782f917e1d75E.llvm.11083375685992158394"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %.0, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %36, i1 noundef zeroext true) + to label %.noexc unwind label %54 + +.noexc: ; preds = %35 + %38 = extractvalue { i64, i64 } %37, 0 + %39 = icmp eq i64 %38, -9223372036854775807 + tail call void @llvm.assume(i1 %39) br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h218752a90c3a0217E.exit" -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h218752a90c3a0217E.exit": ; preds = %19, %11, %.noexc, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h7eb1e2db219b349dE.llvm.15403311311865522351.exit" +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h218752a90c3a0217E.exit": ; preds = %20, %11, %.noexc, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h7eb1e2db219b349dE.llvm.15403311311865522351.exit" call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3), !noalias !723 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %3, ptr noundef nonnull align 8 dereferenceable(64) %1, i64 64, i1 false) %.sroa.423.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 64 %.sroa.423.0.copyload = load i64, ptr %.sroa.423.0..sroa_idx, align 8 invoke void @"_ZN100_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17hd3196c59cbb9ce34E.llvm.12993343960315125427"(ptr noalias noundef nonnull align 8 dereferenceable(64) %3, ptr noalias noundef nonnull align 8 dereferenceable(48) %0, i64 noundef %.sroa.423.0.copyload) - to label %43 unwind label %37, !noalias !733 + to label %46 unwind label %40, !noalias !733 -37: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h218752a90c3a0217E.exit" - %38 = landingpad { ptr, i32 } +40: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h218752a90c3a0217E.exit" + %41 = landingpad { ptr, i32 } cleanup - %39 = getelementptr inbounds i8, ptr %3, i64 16 - %40 = load ptr, ptr %39, align 8, !alias.scope !734, !noalias !745, !noundef !4 - %41 = icmp eq ptr %40, null - br i1 %41, label %.body.thread, label %42 + %42 = getelementptr inbounds i8, ptr %3, i64 16 + %43 = load ptr, ptr %42, align 8, !alias.scope !734, !noalias !745, !noundef !4 + %44 = icmp eq ptr %43, null + br i1 %44, label %.body.thread, label %45 -42: ; preds = %37 - invoke void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb05b4e40befc66d5E.llvm.1287153784043347726"(ptr noalias noundef nonnull align 8 dereferenceable(40) %39) - to label %.body.thread unwind label %48, !noalias !733 +45: ; preds = %40 + invoke void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb05b4e40befc66d5E.llvm.1287153784043347726"(ptr noalias noundef nonnull align 8 dereferenceable(40) %42) + to label %.body.thread unwind label %51, !noalias !733 -43: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h218752a90c3a0217E.exit" - %44 = getelementptr inbounds i8, ptr %3, i64 16 - %45 = load ptr, ptr %44, align 8, !alias.scope !748, !noalias !745, !noundef !4 - %46 = icmp eq ptr %45, null - br i1 %46, label %50, label %47 +46: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h218752a90c3a0217E.exit" + %47 = getelementptr inbounds i8, ptr %3, i64 16 + %48 = load ptr, ptr %47, align 8, !alias.scope !748, !noalias !745, !noundef !4 + %49 = icmp eq ptr %48, null + br i1 %49, label %53, label %50 -47: ; preds = %43 - call void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb05b4e40befc66d5E.llvm.1287153784043347726"(ptr noalias noundef nonnull align 8 dereferenceable(40) %44) - br label %50 +50: ; preds = %46 + call void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb05b4e40befc66d5E.llvm.1287153784043347726"(ptr noalias noundef nonnull align 8 dereferenceable(40) %47) + br label %53 -48: ; preds = %42 - %49 = landingpad { ptr, i32 } +51: ; preds = %45 + %52 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hc8e2b17e1b6d1381E() #44, !noalias !733 unreachable -50: ; preds = %47, %43 +53: ; preds = %50, %46 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3), !noalias !723 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %4) ret void -.body.thread: ; preds = %51, %56, %42, %37 - %eh.lpad-body26 = phi { ptr, i32 } [ %38, %37 ], [ %38, %42 ], [ %52, %56 ], [ %52, %51 ] +.body.thread: ; preds = %54, %59, %45, %40 + %eh.lpad-body26 = phi { ptr, i32 } [ %41, %40 ], [ %41, %45 ], [ %55, %59 ], [ %55, %54 ] resume { ptr, i32 } %eh.lpad-body26 -51: ; preds = %32 - %52 = landingpad { ptr, i32 } +54: ; preds = %35 + %55 = landingpad { ptr, i32 } cleanup - %53 = getelementptr inbounds i8, ptr %4, i64 16 - %54 = load ptr, ptr %53, align 8, !alias.scope !755, !noundef !4 - %55 = icmp eq ptr %54, null - br i1 %55, label %.body.thread, label %56 + %56 = getelementptr inbounds i8, ptr %4, i64 16 + %57 = load ptr, ptr %56, align 8, !alias.scope !755, !noundef !4 + %58 = icmp eq ptr %57, null + br i1 %58, label %.body.thread, label %59 -56: ; preds = %51 - invoke void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb05b4e40befc66d5E.llvm.1287153784043347726"(ptr noalias noundef nonnull align 8 dereferenceable(40) %53) - to label %.body.thread unwind label %57 +59: ; preds = %54 + invoke void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb05b4e40befc66d5E.llvm.1287153784043347726"(ptr noalias noundef nonnull align 8 dereferenceable(40) %56) + to label %.body.thread unwind label %60 -57: ; preds = %56 - %58 = landingpad { ptr, i32 } +60: ; preds = %59 + %61 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hc8e2b17e1b6d1381E() #44 unreachable diff --git a/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll b/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll index 5eb02c2763b..6644ff92299 100644 --- a/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll +++ b/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll @@ -59,7 +59,7 @@ define internal fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_act default.unreachable48: ; preds = %4 unreachable -13: ; preds = %4, %4, %273, %259, %248, %_RNvMNtCs1LoaDTb72WA_4core6resultINtB2_6ResultuINtNtCslmLCWD9els8_8arrayvec6errors13CapacityErrorhEE6unwrapCs8mTrBI1stz4_15turborepo_vt100.exit, %218, %205, %49, %86, %88, %233, %_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser12osc_dispatchNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBR_.exit, %_RNvXNtCs8mTrBI1stz4_15turborepo_vt1007performNtB2_13WrappedScreenNtCscmPyG4XWoQZ_3vte7Perform4hook.exit, %_RNvXs2_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range5RangejEINtB5_10SliceIndexShE5indexCs8mTrBI1stz4_15turborepo_vt100.exit33, %75, %_RNvXNtCs8mTrBI1stz4_15turborepo_vt1007performNtB2_13WrappedScreenNtCscmPyG4XWoQZ_3vte7Perform5print.exit, %55, %37, %_RNvXNtCs8mTrBI1stz4_15turborepo_vt1007performNtB2_13WrappedScreenNtCscmPyG4XWoQZ_3vte7Perform12esc_dispatch.exit, %14, %4, %4 +13: ; preds = %4, %4, %274, %259, %248, %_RNvMNtCs1LoaDTb72WA_4core6resultINtB2_6ResultuINtNtCslmLCWD9els8_8arrayvec6errors13CapacityErrorhEE6unwrapCs8mTrBI1stz4_15turborepo_vt100.exit, %218, %205, %49, %86, %88, %233, %_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser12osc_dispatchNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBR_.exit, %_RNvXNtCs8mTrBI1stz4_15turborepo_vt1007performNtB2_13WrappedScreenNtCscmPyG4XWoQZ_3vte7Perform4hook.exit, %_RNvXs2_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range5RangejEINtB5_10SliceIndexShE5indexCs8mTrBI1stz4_15turborepo_vt100.exit33, %75, %_RNvXNtCs8mTrBI1stz4_15turborepo_vt1007performNtB2_13WrappedScreenNtCscmPyG4XWoQZ_3vte7Perform5print.exit, %55, %37, %_RNvXNtCs8mTrBI1stz4_15turborepo_vt1007performNtB2_13WrappedScreenNtCscmPyG4XWoQZ_3vte7Perform12esc_dispatch.exit, %14, %4, %4 ret void 14: ; preds = %4 @@ -616,46 +616,46 @@ _RNvMNtCs1LoaDTb72WA_4core6resultINtB2_6ResultuINtNtCslmLCWD9els8_8arrayvec6erro %256 = zext i8 %255 to i64 %257 = sub i64 %61, %256 %258 = icmp ult i64 %257, 32 - br i1 %258, label %266, label %272 + br i1 %258, label %267, label %273 259: ; preds = %230 %260 = tail call { i16, i1 } @llvm.umul.with.overflow.i16(i16 %232, i16 10) %261 = extractvalue { i16, i1 } %260, 0 %262 = extractvalue { i16, i1 } %260, 1 - %spec.select = select i1 %262, i16 -1, i16 %261 %263 = add i8 %3, -48 %264 = zext i8 %263 to i16 - %265 = tail call i16 @llvm.uadd.sat.i16(i16 %spec.select, i16 %264) - store i16 %265, ptr %231, align 2 + %265 = tail call i16 @llvm.uadd.sat.i16(i16 %261, i16 %264) + %266 = select i1 %262, i16 -1, i16 %265 + store i16 %266, ptr %231, align 2 br label %13 -266: ; preds = %253 - %267 = getelementptr inbounds i8, ptr %0, i64 320 - %268 = getelementptr inbounds [32 x i8], ptr %267, i64 0, i64 %257 - %269 = add i8 %255, 1 - store i8 %269, ptr %268, align 1 - %270 = load i64, ptr %60, align 8, !noundef !4 - %271 = icmp ult i64 %270, 32 - br i1 %271, label %273, label %279 +267: ; preds = %253 + %268 = getelementptr inbounds i8, ptr %0, i64 320 + %269 = getelementptr inbounds [32 x i8], ptr %268, i64 0, i64 %257 + %270 = add i8 %255, 1 + store i8 %270, ptr %269, align 1 + %271 = load i64, ptr %60, align 8, !noundef !4 + %272 = icmp ult i64 %271, 32 + br i1 %272, label %274, label %280 -272: ; preds = %253 +273: ; preds = %253 tail call void @_ZN4core9panicking18panic_bounds_check17hffbf36a137714b2dE(i64 noundef %257, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9d9a669e0fefee8b60444f5b73d590d2.16) #11 unreachable -273: ; preds = %266 - %274 = getelementptr inbounds [32 x i16], ptr %59, i64 0, i64 %270 - store i16 %232, ptr %274, align 2 - %275 = load i8, ptr %254, align 8, !noundef !4 - %276 = add i8 %275, 1 - store i8 %276, ptr %254, align 8 - %277 = load i64, ptr %60, align 8, !noundef !4 - %278 = add i64 %277, 1 - store i64 %278, ptr %60, align 8 +274: ; preds = %267 + %275 = getelementptr inbounds [32 x i16], ptr %59, i64 0, i64 %271 + store i16 %232, ptr %275, align 2 + %276 = load i8, ptr %254, align 8, !noundef !4 + %277 = add i8 %276, 1 + store i8 %277, ptr %254, align 8 + %278 = load i64, ptr %60, align 8, !noundef !4 + %279 = add i64 %278, 1 + store i64 %279, ptr %60, align 8 store i16 0, ptr %231, align 2 br label %13 -279: ; preds = %266 - tail call void @_ZN4core9panicking18panic_bounds_check17hffbf36a137714b2dE(i64 noundef %270, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9d9a669e0fefee8b60444f5b73d590d2.17) #11 +280: ; preds = %267 + tail call void @_ZN4core9panicking18panic_bounds_check17hffbf36a137714b2dE(i64 noundef %271, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9d9a669e0fefee8b60444f5b73d590d2.17) #11 unreachable } diff --git a/bench/velox/optimized/Re2Functions.cpp.ll b/bench/velox/optimized/Re2Functions.cpp.ll index 6dfe3de1da3..af2643f4ee8 100644 --- a/bench/velox/optimized/Re2Functions.cpp.ll +++ b/bench/velox/optimized/Re2Functions.cpp.ll @@ -3995,12 +3995,8 @@ while.end: ; preds = %if.end33, %if.end33 %fixedPatternEnd.0.lcssa = phi i32 [ %fixedPatternEnd.1.us, %if.end33.us ], [ %fixedPatternEnd.1, %if.end33 ] %fixedPatternStart.0.lcssa = phi i32 [ %fixedPatternStart.1.us, %if.end33.us ], [ %fixedPatternStart.1, %if.end33 ] %wildcardStart.0.lcssa = phi i32 [ %wildcardStart.2.us, %if.end33.us ], [ %wildcardStart.2, %if.end33 ] - %cmp34 = icmp ne i32 %fixedPatternStart.0.lcssa, -1 %cmp36 = icmp eq i32 %fixedPatternEnd.0.lcssa, -1 - %or.cond1 = select i1 %cmp34, i1 %cmp36, i1 false %6 = trunc i64 %pattern.coerce0 to i32 - %conv39 = add i32 %6, -1 - %fixedPatternEnd.2 = select i1 %or.cond1, i32 %conv39, i32 %fixedPatternEnd.0.lcssa %cmp41 = icmp eq i32 %fixedPatternStart.0.lcssa, -1 br i1 %cmp41, label %if.then42, label %if.end58 @@ -4009,10 +4005,10 @@ if.then42: ; preds = %while.end br i1 %cmp43, label %if.then44, label %if.end51 if.then44: ; preds = %entry, %if.then42 - %singleCharacterWildcardCount.0.lcssa149154 = phi i64 [ %singleCharacterWildcardCount.0.lcssa, %if.then42 ], [ 0, %entry ] + %singleCharacterWildcardCount.0.lcssa147152 = phi i64 [ %singleCharacterWildcardCount.0.lcssa, %if.then42 ], [ 0, %entry ] store i32 0, ptr %agg.result, align 8 %length46 = getelementptr inbounds i8, ptr %agg.result, i64 8 - store i64 %singleCharacterWildcardCount.0.lcssa149154, ptr %length46, align 8 + store i64 %singleCharacterWildcardCount.0.lcssa147152, ptr %length46, align 8 %fixedPattern47 = getelementptr inbounds i8, ptr %agg.result, i64 16 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp48) #21 %call.i44 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %fixedPattern47) @@ -4179,7 +4175,8 @@ if.end98: ; preds = %if.end82 br i1 %cmp99, label %if.then100, label %if.end115 if.then100: ; preds = %if.end98 - %add = add nsw i32 %fixedPatternEnd.2, 1 + %15 = add nsw i32 %fixedPatternEnd.0.lcssa, 1 + %add = select i1 %cmp36, i32 %6, i32 %15 %conv104 = sext i32 %add to i64 call void @_ZN8facebook5velox9functions8unescapeB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEEmmSt8optionalIcE(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %fixedPattern101, i64 poison, ptr nonnull %pattern.coerce1, i64 noundef %conv103, i64 noundef %conv104, i16 %escapeChar.coerce.fr) store i32 5, ptr %agg.result, align 8 @@ -4195,7 +4192,7 @@ invoke.cont114: ; preds = %if.then100 br label %return lpad113: ; preds = %if.then100 - %15 = landingpad { ptr, i32 } + %16 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %fixedPattern101) #21 br label %eh.resume @@ -4215,7 +4212,7 @@ invoke.cont128: ; preds = %if.end115 br label %return lpad127: ; preds = %if.end115 - %16 = landingpad { ptr, i32 } + %17 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %fixedPattern116) #21 br label %eh.resume @@ -4224,7 +4221,7 @@ return: ; preds = %invoke.cont128, %in ret void eh.resume: ; preds = %lpad127, %lpad113, %lpad96, %lpad80.body, %lpad71, %lpad56.body, %lpad49.body, %lpad.body - %.pn = phi { ptr, i32 } [ %eh.lpad-body, %lpad.body ], [ %eh.lpad-body46, %lpad49.body ], [ %eh.lpad-body55, %lpad56.body ], [ %11, %lpad71 ], [ %eh.lpad-body64, %lpad80.body ], [ %14, %lpad96 ], [ %15, %lpad113 ], [ %16, %lpad127 ] + %.pn = phi { ptr, i32 } [ %eh.lpad-body, %lpad.body ], [ %eh.lpad-body46, %lpad49.body ], [ %eh.lpad-body55, %lpad56.body ], [ %11, %lpad71 ], [ %eh.lpad-body64, %lpad80.body ], [ %14, %lpad96 ], [ %16, %lpad113 ], [ %17, %lpad127 ] resume { ptr, i32 } %.pn } diff --git a/bench/wireshark/optimized/syntax-tree.c.ll b/bench/wireshark/optimized/syntax-tree.c.ll index aa7fe21ea87..3e354cb0421 100644 --- a/bench/wireshark/optimized/syntax-tree.c.ll +++ b/bench/wireshark/optimized/syntax-tree.c.ll @@ -616,24 +616,18 @@ define hidden void @stnode_merge_location(ptr nocapture noundef writeonly %0, pt %.sroa.0.0.copyload.i = load i64, ptr %4, align 8 %.sroa.2.0..sroa_idx.i = getelementptr inbounds i8, ptr %1, i64 48 %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0..sroa_idx.i, align 8 - %.fca.0.insert.i = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.copyload.i, 0 - %.fca.1.insert.i = insertvalue { i64, i64 } %.fca.0.insert.i, i64 %.sroa.2.0.copyload.i, 1 %5 = getelementptr inbounds i8, ptr %2, i64 40 %.sroa.0.0.copyload.i15 = load i64, ptr %5, align 8 %.sroa.2.0..sroa_idx.i16 = getelementptr inbounds i8, ptr %2, i64 48 %.sroa.2.0.copyload.i17 = load i64, ptr %.sroa.2.0..sroa_idx.i16, align 8 - %.fca.0.insert.i18 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.copyload.i15, 0 - %.fca.1.insert.i19 = insertvalue { i64, i64 } %.fca.0.insert.i18, i64 %.sroa.2.0.copyload.i17, 1 %6 = icmp sgt i64 %.sroa.0.0.copyload.i15, -1 %7 = icmp sgt i64 %.sroa.0.0.copyload.i15, %.sroa.0.0.copyload.i %or.cond = select i1 %6, i1 %7, i1 false - %.pn = select i1 %or.cond, { i64, i64 } %.fca.1.insert.i19, { i64, i64 } %.fca.1.insert.i - %.sroa.46.0 = extractvalue { i64, i64 } %.pn, 1 %8 = getelementptr inbounds i8, ptr %0, i64 40 store i64 %.sroa.0.0.copyload.i, ptr %8, align 8 %9 = sub i64 %.sroa.0.0.copyload.i15, %.sroa.0.0.copyload.i - %10 = select i1 %or.cond, i64 %9, i64 0 - %11 = add i64 %.sroa.46.0, %10 + %10 = add i64 %9, %.sroa.2.0.copyload.i17 + %11 = select i1 %or.cond, i64 %10, i64 %.sroa.2.0.copyload.i %12 = getelementptr inbounds i8, ptr %0, i64 48 store i64 %11, ptr %12, align 8 ret void diff --git a/bench/xgboost/optimized/rank_metric.cc.ll b/bench/xgboost/optimized/rank_metric.cc.ll index 46c7684e1bb..779bed0b1a7 100644 --- a/bench/xgboost/optimized/rank_metric.cc.ll +++ b/bench/xgboost/optimized/rank_metric.cc.ll @@ -25034,7 +25034,6 @@ _ZNK7xgboost6common4SpanIKjLm18446744073709551615EEixEm.exit24: ; preds = %27 %33 = getelementptr inbounds float, ptr %28, i64 %25 %34 = sub i32 %19, %14 %35 = zext i32 %34 to i64 - %.sink.i.i.i = select i1 %30, i64 0, i64 %35 %36 = getelementptr inbounds i8, ptr %0, i64 16 %37 = load ptr, ptr %36, align 8 %38 = add nuw nsw i64 %35, %.sroa.0.0.insert.ext.i @@ -25073,79 +25072,80 @@ _ZNK7xgboost6common4SpanIKmLm18446744073709551615EE7subspanEmm.exit: ; preds = % _ZNK7xgboost3ltr15LambdaRankParam4TopKEv.exit: ; preds = %51, %_ZNK7xgboost6common4SpanIKmLm18446744073709551615EE7subspanEmm.exit %.0.i = phi i64 [ 4294967295, %_ZNK7xgboost6common4SpanIKmLm18446744073709551615EE7subspanEmm.exit ], [ %54, %51 ] - %.sroa.speculated = tail call i64 @llvm.umin.i64(i64 %.sink.i.i.i, i64 %.0.i) + %55 = tail call i64 @llvm.umin.i64(i64 %35, i64 %.0.i) + %.sroa.speculated = select i1 %30, i64 0, i64 %55 %.not = icmp eq i64 %.sroa.speculated, 0 br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %_ZNK7xgboost3ltr15LambdaRankParam4TopKEv.exit - %55 = getelementptr inbounds i8, ptr %0, i64 32 - %56 = load ptr, ptr %55, align 8 - %57 = getelementptr inbounds i8, ptr %56, i64 8 - %58 = getelementptr inbounds i8, ptr %56, i64 16 - br label %59 + %56 = getelementptr inbounds i8, ptr %0, i64 32 + %57 = load ptr, ptr %56, align 8 + %58 = getelementptr inbounds i8, ptr %57, i64 8 + %59 = getelementptr inbounds i8, ptr %57, i64 16 + br label %60 -59: ; preds = %.lr.ph, %74 - %.036 = phi i64 [ 0, %.lr.ph ], [ %79, %74 ] - %.01635 = phi double [ 0.000000e+00, %.lr.ph ], [ %78, %74 ] +60: ; preds = %.lr.ph, %75 + %.036 = phi i64 [ 0, %.lr.ph ], [ %80, %75 ] + %.01635 = phi double [ 0.000000e+00, %.lr.ph ], [ %79, %75 ] %exitcond.not = icmp eq i64 %.036, %35 - br i1 %exitcond.not, label %60, label %61 + br i1 %exitcond.not, label %61, label %62 -60: ; preds = %59 +61: ; preds = %60 tail call void @_ZSt9terminatev() #35 unreachable -61: ; preds = %59 - %62 = getelementptr inbounds i64, ptr %43, i64 %.036 - %63 = load i64, ptr %62, align 8 - %64 = mul i64 %63, %20 - %65 = getelementptr inbounds float, ptr %33, i64 %64 - %66 = load float, ptr %65, align 4 - %67 = load i64, ptr %56, align 8 - %68 = icmp eq i64 %67, 0 - br i1 %68, label %74, label %69 - -69: ; preds = %61 - %70 = icmp ult i64 %1, %67 - br i1 %70, label %_ZNK7xgboost6common4SpanIKfLm18446744073709551615EEixEm.exit.i, label %71 - -71: ; preds = %69 +62: ; preds = %60 + %63 = getelementptr inbounds i64, ptr %43, i64 %.036 + %64 = load i64, ptr %63, align 8 + %65 = mul i64 %64, %20 + %66 = getelementptr inbounds float, ptr %33, i64 %65 + %67 = load float, ptr %66, align 4 + %68 = load i64, ptr %57, align 8 + %69 = icmp eq i64 %68, 0 + br i1 %69, label %75, label %70 + +70: ; preds = %62 + %71 = icmp ult i64 %1, %68 + br i1 %71, label %_ZNK7xgboost6common4SpanIKfLm18446744073709551615EEixEm.exit.i, label %72 + +72: ; preds = %70 tail call void @_ZSt9terminatev() #35 unreachable -_ZNK7xgboost6common4SpanIKfLm18446744073709551615EEixEm.exit.i: ; preds = %69 - %72 = load ptr, ptr %57, align 8 - %73 = getelementptr inbounds float, ptr %72, i64 %1 - br label %74 +_ZNK7xgboost6common4SpanIKfLm18446744073709551615EEixEm.exit.i: ; preds = %70 + %73 = load ptr, ptr %58, align 8 + %74 = getelementptr inbounds float, ptr %73, i64 %1 + br label %75 -74: ; preds = %61, %_ZNK7xgboost6common4SpanIKfLm18446744073709551615EEixEm.exit.i - %.in.i25 = phi ptr [ %73, %_ZNK7xgboost6common4SpanIKfLm18446744073709551615EEixEm.exit.i ], [ %58, %61 ] - %75 = load float, ptr %.in.i25, align 4 - %76 = fmul float %66, %75 - %77 = fpext float %76 to double - %78 = fadd double %.01635, %77 - %79 = add nuw nsw i64 %.036, 1 - %exitcond37.not = icmp eq i64 %79, %.sroa.speculated - br i1 %exitcond37.not, label %._crit_edge, label %59, !llvm.loop !409 - -._crit_edge: ; preds = %74, %_ZNK7xgboost3ltr15LambdaRankParam4TopKEv.exit - %.016.lcssa = phi double [ 0.000000e+00, %_ZNK7xgboost3ltr15LambdaRankParam4TopKEv.exit ], [ %78, %74 ] - %80 = getelementptr inbounds i8, ptr %0, i64 40 - %81 = load ptr, ptr %80, align 8 - %82 = load i64, ptr %81, align 8 - %83 = icmp ult i64 %1, %82 - br i1 %83, label %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit, label %84 +75: ; preds = %62, %_ZNK7xgboost6common4SpanIKfLm18446744073709551615EEixEm.exit.i + %.in.i25 = phi ptr [ %74, %_ZNK7xgboost6common4SpanIKfLm18446744073709551615EEixEm.exit.i ], [ %59, %62 ] + %76 = load float, ptr %.in.i25, align 4 + %77 = fmul float %67, %76 + %78 = fpext float %77 to double + %79 = fadd double %.01635, %78 + %80 = add nuw nsw i64 %.036, 1 + %exitcond37.not = icmp eq i64 %80, %.sroa.speculated + br i1 %exitcond37.not, label %._crit_edge, label %60, !llvm.loop !409 + +._crit_edge: ; preds = %75, %_ZNK7xgboost3ltr15LambdaRankParam4TopKEv.exit + %.016.lcssa = phi double [ 0.000000e+00, %_ZNK7xgboost3ltr15LambdaRankParam4TopKEv.exit ], [ %79, %75 ] + %81 = getelementptr inbounds i8, ptr %0, i64 40 + %82 = load ptr, ptr %81, align 8 + %83 = load i64, ptr %82, align 8 + %84 = icmp ult i64 %1, %83 + br i1 %84, label %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit, label %85 -84: ; preds = %._crit_edge +85: ; preds = %._crit_edge tail call void @_ZSt9terminatev() #35 unreachable _ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit: ; preds = %._crit_edge - %85 = uitofp nneg i64 %.sroa.speculated to double - %86 = fdiv double %.016.lcssa, %85 - %87 = getelementptr inbounds i8, ptr %81, i64 8 - %88 = load ptr, ptr %87, align 8 - %89 = getelementptr inbounds double, ptr %88, i64 %1 - store double %86, ptr %89, align 8 + %86 = uitofp nneg i64 %.sroa.speculated to double + %87 = fdiv double %.016.lcssa, %86 + %88 = getelementptr inbounds i8, ptr %82, i64 8 + %89 = load ptr, ptr %88, align 8 + %90 = getelementptr inbounds double, ptr %89, i64 %1 + store double %87, ptr %90, align 8 ret void } diff --git a/bench/yosys/optimized/rtlil.ll b/bench/yosys/optimized/rtlil.ll index 41df07e47e6..8bbd1b01b9d 100644 --- a/bench/yosys/optimized/rtlil.ll +++ b/bench/yosys/optimized/rtlil.ll @@ -19592,7 +19592,7 @@ _ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_N %27 = call noundef i32 @_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE9do_lookupERKS7_Ri(ptr noundef nonnull align 8 dereferenceable(49) %6, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 4 dereferenceable(4) %4) %28 = icmp slt i32 %27, 0 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) - br i1 %28, label %53, label %29 + br i1 %28, label %52, label %29 29: ; preds = %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE4findERKS7_.exit %30 = getelementptr inbounds i8, ptr %0, i64 88 @@ -19601,22 +19601,22 @@ _ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_N %33 = getelementptr inbounds %"struct.Yosys::hashlib::dict, std::__cxx11::basic_string>::entry_t", ptr %32, i64 %31, i32 0, i32 1 %34 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str) #37 %35 = icmp eq i32 %34, 0 - br i1 %35, label %53, label %36 + br i1 %35, label %52, label %36 36: ; preds = %29 %37 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.309) #37 %38 = icmp eq i32 %37, 0 - br i1 %38, label %53, label %39 + br i1 %38, label %52, label %39 39: ; preds = %36 %40 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.281) #37 %41 = icmp eq i32 %40, 0 - br i1 %41, label %53, label %42 + br i1 %41, label %52, label %42 42: ; preds = %39 %43 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.308) #37 %44 = icmp eq i32 %43, 0 - br i1 %44, label %53, label %45 + br i1 %44, label %52, label %45 45: ; preds = %42 store ptr null, ptr %5, align 8 @@ -19625,13 +19625,12 @@ _ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_N %48 = load ptr, ptr %5, align 8 %49 = load i8, ptr %48, align 1 %.not = icmp eq i8 %49, 0 - %50 = zext i32 %2 to i64 - %51 = select i1 %.not, i64 %47, i64 %50 - %52 = trunc i64 %51 to i32 - br label %53 + %50 = trunc i64 %47 to i32 + %51 = select i1 %.not, i32 %50, i32 %2 + br label %52 -53: ; preds = %39, %42, %29, %36, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE4findERKS7_.exit, %45 - %.0 = phi i32 [ %52, %45 ], [ %2, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE4findERKS7_.exit ], [ 0, %36 ], [ 0, %29 ], [ 1, %42 ], [ 1, %39 ] +52: ; preds = %39, %42, %29, %36, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE4findERKS7_.exit, %45 + %.0 = phi i32 [ %51, %45 ], [ %2, %_ZNK5Yosys7hashlib4dictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_NS0_8hash_opsIS7_EEE4findERKS7_.exit ], [ 0, %36 ], [ 0, %29 ], [ 1, %42 ], [ 1, %39 ] ret i32 %.0 } diff --git a/bench/z3/optimized/theory_str_regex.cpp.ll b/bench/z3/optimized/theory_str_regex.cpp.ll index 31ce0b9318a..ec901586da9 100644 --- a/bench/z3/optimized/theory_str_regex.cpp.ll +++ b/bench/z3/optimized/theory_str_regex.cpp.ll @@ -23692,40 +23692,39 @@ invoke.cont25: ; preds = %if.then24 invoke.cont27: ; preds = %invoke.cont25 %umul.value.i = shl nuw i32 %call26, 1 %cmp3.i.inv = icmp slt i32 %call26, 0 - %spec.select.i = select i1 %cmp3.i.inv, i32 -1, i32 %umul.value.i %cmp1.i59 = icmp eq i32 %call28, -1 %or.cond.i = or i1 %cmp3.i.inv, %cmp1.i59 - %spec.select.i60 = call i32 @llvm.uadd.sat.i32(i32 %spec.select.i, i32 %call28) - %retval.0.i61 = select i1 %or.cond.i, i32 -1, i32 %spec.select.i60 + %31 = call i32 @llvm.uadd.sat.i32(i32 %umul.value.i, i32 %call28) + %retval.0.i61 = select i1 %or.cond.i, i32 -1, i32 %31 br label %cleanup _ZNK8seq_util3rex8is_unionEPK4expr.exit.i: ; preds = %land.lhs.true.i52, %_ZNK8seq_util3rex9is_concatEPK4expr.exit.i - %31 = load i32, ptr %7, align 8 - %cmp.i.i.i.i.i.i72 = icmp eq i32 %31, %5 + %32 = load i32, ptr %7, align 8 + %cmp.i.i.i.i.i.i72 = icmp eq i32 %32, %5 %m_kind.i.i.i.i.i.i73 = getelementptr inbounds i8, ptr %7, i64 4 - %32 = load i32, ptr %m_kind.i.i.i.i.i.i73, align 4 - %cmp2.i.i.i.i.i.i74 = icmp eq i32 %32, 29 - %33 = select i1 %cmp.i.i.i.i.i.i72, i1 %cmp2.i.i.i.i.i.i74, i1 false - br i1 %33, label %land.lhs.true.i75, label %_ZNK8seq_util3rex7is_starEPK4expr.exit.i + %33 = load i32, ptr %m_kind.i.i.i.i.i.i73, align 4 + %cmp2.i.i.i.i.i.i74 = icmp eq i32 %33, 29 + %34 = select i1 %cmp.i.i.i.i.i.i72, i1 %cmp2.i.i.i.i.i.i74, i1 false + br i1 %34, label %land.lhs.true.i75, label %_ZNK8seq_util3rex7is_starEPK4expr.exit.i land.lhs.true.i75: ; preds = %_ZNK8seq_util3rex8is_unionEPK4expr.exit.i %m_num_args.i.i76 = getelementptr inbounds i8, ptr %re, i64 24 - %34 = load i32, ptr %m_num_args.i.i76, align 8 - %cmp.i77 = icmp eq i32 %34, 2 + %35 = load i32, ptr %m_num_args.i.i76, align 8 + %cmp.i77 = icmp eq i32 %35, 2 br i1 %cmp.i77, label %if.then38, label %_ZNK8seq_util3rex7is_starEPK4expr.exit.i if.then38: ; preds = %land.lhs.true.i75 %m_args.i.i79 = getelementptr inbounds i8, ptr %re, i64 32 - %35 = load ptr, ptr %m_args.i.i79, align 8 - store ptr %35, ptr %sub1, align 8 + %36 = load ptr, ptr %m_args.i.i79, align 8 + store ptr %36, ptr %sub1, align 8 %arrayidx.i.i80 = getelementptr inbounds i8, ptr %re, i64 40 - %36 = load ptr, ptr %arrayidx.i.i80, align 8 - store ptr %36, ptr %sub2, align 8 - %call41 = invoke noundef i32 @_ZN3smt10theory_str42estimate_regex_complexity_under_complementEP4expr(ptr noundef nonnull align 8 dereferenceable(1800) %this, ptr noundef %35) + %37 = load ptr, ptr %arrayidx.i.i80, align 8 + store ptr %37, ptr %sub2, align 8 + %call41 = invoke noundef i32 @_ZN3smt10theory_str42estimate_regex_complexity_under_complementEP4expr(ptr noundef nonnull align 8 dereferenceable(1800) %this, ptr noundef %36) to label %invoke.cont40 unwind label %lpad invoke.cont40: ; preds = %if.then38 - %call44 = invoke noundef i32 @_ZN3smt10theory_str42estimate_regex_complexity_under_complementEP4expr(ptr noundef nonnull align 8 dereferenceable(1800) %this, ptr noundef %36) + %call44 = invoke noundef i32 @_ZN3smt10theory_str42estimate_regex_complexity_under_complementEP4expr(ptr noundef nonnull align 8 dereferenceable(1800) %this, ptr noundef %37) to label %invoke.cont43 unwind label %lpad invoke.cont43: ; preds = %invoke.cont40 @@ -23742,33 +23741,33 @@ if.end.i84: ; preds = %invoke.cont43 br label %cleanup _ZNK8seq_util3rex7is_starEPK4expr.exit.i: ; preds = %land.lhs.true.i75, %_ZNK8seq_util3rex8is_unionEPK4expr.exit.i - %37 = load i32, ptr %7, align 8 - %cmp.i.i.i.i.i.i101 = icmp eq i32 %37, %5 + %38 = load i32, ptr %7, align 8 + %cmp.i.i.i.i.i.i101 = icmp eq i32 %38, %5 %m_kind.i.i.i.i.i.i102 = getelementptr inbounds i8, ptr %7, i64 4 - %38 = load i32, ptr %m_kind.i.i.i.i.i.i102, align 4 - %cmp2.i.i.i.i.i.i103 = icmp eq i32 %38, 25 - %39 = select i1 %cmp.i.i.i.i.i.i101, i1 %cmp2.i.i.i.i.i.i103, i1 false - br i1 %39, label %land.lhs.true.i104, label %_ZNK8seq_util3rex7is_plusEPK4expr.exit.i + %39 = load i32, ptr %m_kind.i.i.i.i.i.i102, align 4 + %cmp2.i.i.i.i.i.i103 = icmp eq i32 %39, 25 + %40 = select i1 %cmp.i.i.i.i.i.i101, i1 %cmp2.i.i.i.i.i.i103, i1 false + br i1 %40, label %land.lhs.true.i104, label %_ZNK8seq_util3rex7is_plusEPK4expr.exit.i land.lhs.true.i104: ; preds = %_ZNK8seq_util3rex7is_starEPK4expr.exit.i %m_num_args.i.i105 = getelementptr inbounds i8, ptr %re, i64 24 - %40 = load i32, ptr %m_num_args.i.i105, align 8 - %cmp.i106 = icmp eq i32 %40, 1 + %41 = load i32, ptr %m_num_args.i.i105, align 8 + %cmp.i106 = icmp eq i32 %41, 1 br i1 %cmp.i106, label %if.then66.sink.split, label %_ZNK8seq_util3rex7is_plusEPK4expr.exit.i _ZNK8seq_util3rex7is_plusEPK4expr.exit.i: ; preds = %land.lhs.true.i104, %_ZNK8seq_util3rex7is_starEPK4expr.exit.i - %41 = load i32, ptr %7, align 8 - %cmp.i.i.i.i.i.i119 = icmp eq i32 %41, %5 + %42 = load i32, ptr %7, align 8 + %cmp.i.i.i.i.i.i119 = icmp eq i32 %42, %5 %m_kind.i.i.i.i.i.i120 = getelementptr inbounds i8, ptr %7, i64 4 - %42 = load i32, ptr %m_kind.i.i.i.i.i.i120, align 4 - %cmp2.i.i.i.i.i.i121 = icmp eq i32 %42, 24 - %43 = select i1 %cmp.i.i.i.i.i.i119, i1 %cmp2.i.i.i.i.i.i121, i1 false - br i1 %43, label %land.lhs.true.i122, label %lor.lhs.false56 + %43 = load i32, ptr %m_kind.i.i.i.i.i.i120, align 4 + %cmp2.i.i.i.i.i.i121 = icmp eq i32 %43, 24 + %44 = select i1 %cmp.i.i.i.i.i.i119, i1 %cmp2.i.i.i.i.i.i121, i1 false + br i1 %44, label %land.lhs.true.i122, label %lor.lhs.false56 land.lhs.true.i122: ; preds = %_ZNK8seq_util3rex7is_plusEPK4expr.exit.i %m_num_args.i.i123 = getelementptr inbounds i8, ptr %re, i64 24 - %44 = load i32, ptr %m_num_args.i.i123, align 8 - %cmp.i124 = icmp eq i32 %44, 1 + %45 = load i32, ptr %m_num_args.i.i123, align 8 + %cmp.i124 = icmp eq i32 %45, 1 br i1 %cmp.i124, label %if.then66.sink.split, label %lor.lhs.false56 lor.lhs.false56: ; preds = %land.rhs.i.i.i, %land.lhs.true.i122, %_ZNK8seq_util3rex7is_plusEPK4expr.exit.i, %if.end @@ -23787,13 +23786,13 @@ invoke.cont64: ; preds = %lor.lhs.false61 if.then66.sink.split: ; preds = %land.lhs.true.i122, %land.lhs.true.i104 %m_args.i.i126 = getelementptr inbounds i8, ptr %re, i64 32 - %45 = load ptr, ptr %m_args.i.i126, align 8 - store ptr %45, ptr %sub1, align 8 + %46 = load ptr, ptr %m_args.i.i126, align 8 + store ptr %46, ptr %sub1, align 8 br label %if.then66 if.then66: ; preds = %if.then66.sink.split, %invoke.cont64, %invoke.cont59 - %46 = load ptr, ptr %sub1, align 8 - %call68 = invoke noundef i32 @_ZN3smt10theory_str42estimate_regex_complexity_under_complementEP4expr(ptr noundef nonnull align 8 dereferenceable(1800) %this, ptr noundef %46) + %47 = load ptr, ptr %sub1, align 8 + %call68 = invoke noundef i32 @_ZN3smt10theory_str42estimate_regex_complexity_under_complementEP4expr(ptr noundef nonnull align 8 dereferenceable(1800) %this, ptr noundef %47) to label %invoke.cont67 unwind label %lpad invoke.cont67: ; preds = %if.then66 @@ -23834,14 +23833,14 @@ invoke.cont84: ; preds = %if.then81 to label %unreachable unwind label %ehcleanup ehcleanup: ; preds = %invoke.cont84 - %47 = landingpad { ptr, i32 } + %48 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #20 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp82) #20 br label %ehcleanup116 cleanup.action: ; preds = %if.then81 - %48 = landingpad { ptr, i32 } + %49 = landingpad { ptr, i32 } cleanup call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp82) #20 call void @__cxa_free_exception(ptr %exception) #20 @@ -23861,35 +23860,35 @@ if.end88: ; preds = %invoke.cont79 %m_capacity.i.i141 = getelementptr inbounds i8, ptr %str2, i64 12 store i32 16, ptr %m_capacity.i.i141, align 4 %str90 = getelementptr inbounds i8, ptr %this, i64 128 - %49 = load ptr, ptr %sub1, align 8 - %call93 = invoke noundef zeroext i1 @_ZNK8seq_util3str9is_stringEPK4exprR7zstring(ptr noundef nonnull align 8 dereferenceable(20) %str90, ptr noundef %49, ptr noundef nonnull align 8 dereferenceable(80) %str1) + %50 = load ptr, ptr %sub1, align 8 + %call93 = invoke noundef zeroext i1 @_ZNK8seq_util3str9is_stringEPK4exprR7zstring(ptr noundef nonnull align 8 dereferenceable(20) %str90, ptr noundef %50, ptr noundef nonnull align 8 dereferenceable(80) %str1) to label %invoke.cont92 unwind label %lpad91 invoke.cont92: ; preds = %if.end88 - %50 = load ptr, ptr %sub2, align 8 - %call97 = invoke noundef zeroext i1 @_ZNK8seq_util3str9is_stringEPK4exprR7zstring(ptr noundef nonnull align 8 dereferenceable(20) %str90, ptr noundef %50, ptr noundef nonnull align 8 dereferenceable(80) %str2) + %51 = load ptr, ptr %sub2, align 8 + %call97 = invoke noundef zeroext i1 @_ZNK8seq_util3str9is_stringEPK4exprR7zstring(ptr noundef nonnull align 8 dereferenceable(20) %str90, ptr noundef %51, ptr noundef nonnull align 8 dereferenceable(80) %str2) to label %invoke.cont100 unwind label %lpad91 invoke.cont100: ; preds = %invoke.cont92 - %51 = load ptr, ptr %str2, align 8 - %52 = load i32, ptr %51, align 4 - %53 = load ptr, ptr %str1, align 8 - %54 = load i32, ptr %53, align 4 - %add = add i32 %52, 1 - %sub = sub i32 %add, %54 + %52 = load ptr, ptr %str2, align 8 + %53 = load i32, ptr %52, align 4 + %54 = load ptr, ptr %str1, align 8 + %55 = load i32, ptr %54, align 4 + %add = add i32 %53, 1 + %sub = sub i32 %add, %55 call void @_ZN7zstringD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %str2) #20 call void @_ZN7zstringD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %str1) #20 br label %cleanup lpad91: ; preds = %invoke.cont92, %if.end88 - %55 = landingpad { ptr, i32 } + %56 = landingpad { ptr, i32 } cleanup call void @_ZN7zstringD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %str2) #20 call void @_ZN7zstringD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %str1) #20 br label %ehcleanup116 if.else104: ; preds = %invoke.cont74 - %56 = load i32, ptr %m_fid.i.i16, align 8 + %57 = load i32, ptr %m_fid.i.i16, align 8 %bf.load.i.i.i146 = load i32, ptr %m_kind.i.i.i.i, align 4 %bf.clear.i.i.i147 = and i32 %bf.load.i.i.i146, 65535 %cmp.i.i148 = icmp eq i32 %bf.clear.i.i.i147, 0 @@ -23897,20 +23896,20 @@ if.else104: ; preds = %invoke.cont74 land.rhs.i.i149: ; preds = %if.else104 %m_decl.i.i.i150 = getelementptr inbounds i8, ptr %re, i64 16 - %57 = load ptr, ptr %m_decl.i.i.i150, align 8 - %m_info.i.i.i.i151 = getelementptr inbounds i8, ptr %57, i64 24 - %58 = load ptr, ptr %m_info.i.i.i.i151, align 8 - %tobool.not.i.i.i.i152 = icmp eq ptr %58, null + %58 = load ptr, ptr %m_decl.i.i.i150, align 8 + %m_info.i.i.i.i151 = getelementptr inbounds i8, ptr %58, i64 24 + %59 = load ptr, ptr %m_info.i.i.i.i151, align 8 + %tobool.not.i.i.i.i152 = icmp eq ptr %59, null br i1 %tobool.not.i.i.i.i152, label %lor.lhs.false109, label %invoke.cont107 invoke.cont107: ; preds = %land.rhs.i.i149 - %59 = load i32, ptr %58, align 8 - %cmp.i.i.i.i.i154 = icmp eq i32 %59, %56 - %m_kind.i.i.i.i.i155 = getelementptr inbounds i8, ptr %58, i64 4 - %60 = load i32, ptr %m_kind.i.i.i.i.i155, align 4 - %cmp2.i.i.i.i.i156 = icmp eq i32 %60, 37 - %61 = select i1 %cmp.i.i.i.i.i154, i1 %cmp2.i.i.i.i.i156, i1 false - br i1 %61, label %cleanup, label %lor.lhs.false109 + %60 = load i32, ptr %59, align 8 + %cmp.i.i.i.i.i154 = icmp eq i32 %60, %57 + %m_kind.i.i.i.i.i155 = getelementptr inbounds i8, ptr %59, i64 4 + %61 = load i32, ptr %m_kind.i.i.i.i.i155, align 4 + %cmp2.i.i.i.i.i156 = icmp eq i32 %61, 37 + %62 = select i1 %cmp.i.i.i.i.i154, i1 %cmp2.i.i.i.i.i156, i1 false + br i1 %62, label %cleanup, label %lor.lhs.false109 lor.lhs.false109: ; preds = %land.rhs.i.i149, %if.else104, %invoke.cont107 %call113 = invoke noundef zeroext i1 @_ZNK8seq_util3rex11is_full_seqEPK4expr(ptr noundef nonnull align 8 dereferenceable(80) %re3, ptr noundef nonnull %re) @@ -23918,28 +23917,28 @@ lor.lhs.false109: ; preds = %land.rhs.i.i149, %i cleanup: ; preds = %if.end.i129, %invoke.cont67, %if.end.i84, %invoke.cont43, %invoke.cont7, %lor.lhs.false109, %invoke.cont107, %if.then16, %invoke.cont100, %invoke.cont27 %retval.0 = phi i32 [ %retval.0.i61, %invoke.cont27 ], [ %sub, %invoke.cont100 ], [ %call18, %if.then16 ], [ 1, %invoke.cont107 ], [ 1, %lor.lhs.false109 ], [ 0, %invoke.cont7 ], [ -1, %invoke.cont43 ], [ %spec.select.i88, %if.end.i84 ], [ -1, %invoke.cont67 ], [ %spec.select.i133, %if.end.i129 ] - %62 = load ptr, ptr %str, align 8 - %cmp.not.i.i.i.i = icmp eq ptr %62, %m_initial_buffer.i.i - %cmp.i.i.i.i.i157 = icmp eq ptr %62, null + %63 = load ptr, ptr %str, align 8 + %cmp.not.i.i.i.i = icmp eq ptr %63, %m_initial_buffer.i.i + %cmp.i.i.i.i.i157 = icmp eq ptr %63, null %or.cond.i.i.i.i = or i1 %cmp.not.i.i.i.i, %cmp.i.i.i.i.i157 br i1 %or.cond.i.i.i.i, label %_ZN7zstringD2Ev.exit, label %if.end.i.i.i.i.i if.end.i.i.i.i.i: ; preds = %cleanup - invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %62) + invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %63) to label %_ZN7zstringD2Ev.exit unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %if.end.i.i.i.i.i - %63 = landingpad { ptr, i32 } + %64 = landingpad { ptr, i32 } catch ptr null - %64 = extractvalue { ptr, i32 } %63, 0 - call void @__clang_call_terminate(ptr %64) #19 + %65 = extractvalue { ptr, i32 } %64, 0 + call void @__clang_call_terminate(ptr %65) #19 unreachable _ZN7zstringD2Ev.exit: ; preds = %cleanup, %if.end.i.i.i.i.i ret i32 %retval.0 ehcleanup116: ; preds = %ehcleanup, %cleanup.action, %lpad91, %lpad - %.pn14 = phi { ptr, i32 } [ %19, %lpad ], [ %55, %lpad91 ], [ %48, %cleanup.action ], [ %47, %ehcleanup ] + %.pn14 = phi { ptr, i32 } [ %19, %lpad ], [ %56, %lpad91 ], [ %49, %cleanup.action ], [ %48, %ehcleanup ] call void @_ZN7zstringD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %str) #20 resume { ptr, i32 } %.pn14 diff --git a/bench/zed-rs/optimized/dpj3mwjfm2c61mxrpoi279us4.ll b/bench/zed-rs/optimized/dpj3mwjfm2c61mxrpoi279us4.ll index d1b54528d42..a576684120c 100644 --- a/bench/zed-rs/optimized/dpj3mwjfm2c61mxrpoi279us4.ll +++ b/bench/zed-rs/optimized/dpj3mwjfm2c61mxrpoi279us4.ll @@ -385,42 +385,48 @@ define hidden void @"_ZN105_$LT$hashbrown..set..HashSet$LT$T$C$S$C$A$GT$$u20$as$ %9 = ptrtoint ptr %.sroa.53.0.copyload to i64 %10 = sub nuw i64 %8, %9 %11 = lshr exact i64 %10, 5 - %12 = icmp eq ptr %.sroa.75.0.copyload, null - %13 = ptrtoint ptr %.sroa.86.0.copyload to i64 - %14 = ptrtoint ptr %.sroa.75.0.copyload to i64 - %15 = sub nuw i64 %13, %14 - %16 = lshr exact i64 %15, 5 - %.sroa.8.0.i.i.i.i.i = select i1 %12, i64 0, i64 %16 - br i1 %6, label %17, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit12.i" - -17: ; preds = %2 + br i1 %6, label %12, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit12.i" + +12: ; preds = %2 %.sroa.7.0.i.i.i.i.i = select i1 %7, i64 0, i64 %11 + %13 = icmp eq ptr %.sroa.75.0.copyload, null + %14 = ptrtoint ptr %.sroa.86.0.copyload to i64 + %15 = ptrtoint ptr %.sroa.75.0.copyload to i64 + %16 = sub nuw i64 %14, %15 + %17 = lshr exact i64 %16, 5 + %.sroa.8.0.i.i.i.i.i = select i1 %13, i64 0, i64 %17 %18 = add nuw nsw i64 %.sroa.8.0.i.i.i.i.i, %.sroa.7.0.i.i.i.i.i br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit.i" "_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit12.i": ; preds = %2 - %19 = add nuw nsw i64 %11, 1 - %20 = select i1 %7, i64 1, i64 %19 - %21 = add nuw nsw i64 %.sroa.8.0.i.i.i.i.i, %20 - %22 = lshr i64 %21, 1 + %19 = icmp eq ptr %.sroa.75.0.copyload, null + %20 = ptrtoint ptr %.sroa.86.0.copyload to i64 + %21 = ptrtoint ptr %.sroa.75.0.copyload to i64 + %22 = sub nuw i64 %20, %21 + %23 = lshr exact i64 %22, 5 + %.sroa.8.0.i.i.i.i6.i = select i1 %19, i64 0, i64 %23 + %24 = add nuw nsw i64 %11, 1 + %25 = select i1 %7, i64 1, i64 %24 + %26 = add nuw nsw i64 %.sroa.8.0.i.i.i.i6.i, %25 + %27 = lshr i64 %26, 1 br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit.i" -"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit.i": ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit12.i", %17 - %.sroa.0.0.i = phi i64 [ %22, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit12.i" ], [ %18, %17 ] - %23 = getelementptr inbounds i8, ptr %0, i64 16 - %24 = load i64, ptr %23, align 8, !alias.scope !85, !noalias !88, !noundef !9 - %25 = icmp ugt i64 %.sroa.0.0.i, %24 - br i1 %25, label %26, label %"_ZN121_$LT$hashbrown..map..HashMap$LT$K$C$V$C$S$C$A$GT$$u20$as$u20$core..iter..traits..collect..Extend$LT$$LP$K$C$V$RP$$GT$$GT$6extend17h3b74b15d6bd6ec24E.llvm.13537110341245814796.exit" - -26: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit.i" - %27 = getelementptr inbounds i8, ptr %0, i64 32 - %28 = tail call { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h21aa9fbc9b879b5eE.llvm.6378331738793817062"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %.sroa.0.0.i, ptr noalias noundef nonnull readonly align 1 %27, i1 noundef zeroext true), !noalias !83 - %29 = extractvalue { i64, i64 } %28, 0 - %30 = icmp eq i64 %29, -9223372036854775807 - tail call void @llvm.assume(i1 %30) +"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit.i": ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit12.i", %12 + %.sroa.0.0.i = phi i64 [ %27, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit12.i" ], [ %18, %12 ] + %28 = getelementptr inbounds i8, ptr %0, i64 16 + %29 = load i64, ptr %28, align 8, !alias.scope !85, !noalias !88, !noundef !9 + %30 = icmp ugt i64 %.sroa.0.0.i, %29 + br i1 %30, label %31, label %"_ZN121_$LT$hashbrown..map..HashMap$LT$K$C$V$C$S$C$A$GT$$u20$as$u20$core..iter..traits..collect..Extend$LT$$LP$K$C$V$RP$$GT$$GT$6extend17h3b74b15d6bd6ec24E.llvm.13537110341245814796.exit" + +31: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit.i" + %32 = getelementptr inbounds i8, ptr %0, i64 32 + %33 = tail call { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h21aa9fbc9b879b5eE.llvm.6378331738793817062"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %.sroa.0.0.i, ptr noalias noundef nonnull readonly align 1 %32, i1 noundef zeroext true), !noalias !83 + %34 = extractvalue { i64, i64 } %33, 0 + %35 = icmp eq i64 %34, -9223372036854775807 + tail call void @llvm.assume(i1 %35) br label %"_ZN121_$LT$hashbrown..map..HashMap$LT$K$C$V$C$S$C$A$GT$$u20$as$u20$core..iter..traits..collect..Extend$LT$$LP$K$C$V$RP$$GT$$GT$6extend17h3b74b15d6bd6ec24E.llvm.13537110341245814796.exit" -"_ZN121_$LT$hashbrown..map..HashMap$LT$K$C$V$C$S$C$A$GT$$u20$as$u20$core..iter..traits..collect..Extend$LT$$LP$K$C$V$RP$$GT$$GT$6extend17h3b74b15d6bd6ec24E.llvm.13537110341245814796.exit": ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit.i", %26 +"_ZN121_$LT$hashbrown..map..HashMap$LT$K$C$V$C$S$C$A$GT$$u20$as$u20$core..iter..traits..collect..Extend$LT$$LP$K$C$V$RP$$GT$$GT$6extend17h3b74b15d6bd6ec24E.llvm.13537110341245814796.exit": ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit.i", %31 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !90 store i64 %.sroa.01.0.copyload, ptr %3, align 8, !noalias !103 %.sroa.432.0..sroa_idx.i = getelementptr inbounds i8, ptr %3, i64 8 @@ -669,42 +675,48 @@ define hidden void @"_ZN121_$LT$hashbrown..map..HashMap$LT$K$C$V$C$S$C$A$GT$$u20 %9 = ptrtoint ptr %.sroa.8.0.copyload18 to i64 %10 = sub nuw i64 %8, %9 %11 = lshr exact i64 %10, 5 - %12 = icmp eq ptr %.sroa.12.0.copyload23, null - %13 = ptrtoint ptr %.sroa.14.0.copyload26 to i64 - %14 = ptrtoint ptr %.sroa.12.0.copyload23 to i64 - %15 = sub nuw i64 %13, %14 - %16 = lshr exact i64 %15, 5 - %.sroa.8.0.i.i.i.i = select i1 %12, i64 0, i64 %16 - br i1 %6, label %17, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit12" - -17: ; preds = %2 + br i1 %6, label %12, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit12" + +12: ; preds = %2 %.sroa.7.0.i.i.i.i = select i1 %7, i64 0, i64 %11 + %13 = icmp eq ptr %.sroa.12.0.copyload23, null + %14 = ptrtoint ptr %.sroa.14.0.copyload26 to i64 + %15 = ptrtoint ptr %.sroa.12.0.copyload23 to i64 + %16 = sub nuw i64 %14, %15 + %17 = lshr exact i64 %16, 5 + %.sroa.8.0.i.i.i.i = select i1 %13, i64 0, i64 %17 %18 = add nuw nsw i64 %.sroa.8.0.i.i.i.i, %.sroa.7.0.i.i.i.i br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit" "_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit12": ; preds = %2 - %19 = add nuw nsw i64 %11, 1 - %20 = select i1 %7, i64 1, i64 %19 - %21 = add nuw nsw i64 %20, %.sroa.8.0.i.i.i.i - %22 = lshr i64 %21, 1 + %19 = icmp eq ptr %.sroa.12.0.copyload23, null + %20 = ptrtoint ptr %.sroa.14.0.copyload26 to i64 + %21 = ptrtoint ptr %.sroa.12.0.copyload23 to i64 + %22 = sub nuw i64 %20, %21 + %23 = lshr exact i64 %22, 5 + %.sroa.8.0.i.i.i.i6 = select i1 %19, i64 0, i64 %23 + %24 = add nuw nsw i64 %11, 1 + %25 = select i1 %7, i64 1, i64 %24 + %26 = add nuw nsw i64 %25, %.sroa.8.0.i.i.i.i6 + %27 = lshr i64 %26, 1 br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit" -"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit": ; preds = %17, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit12" - %.sroa.0.0 = phi i64 [ %22, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit12" ], [ %18, %17 ] - %23 = getelementptr inbounds i8, ptr %0, i64 16 - %24 = load i64, ptr %23, align 8, !alias.scope !152, !noalias !155, !noundef !9 - %25 = icmp ugt i64 %.sroa.0.0, %24 - br i1 %25, label %26, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17habf13374348415f0E.exit" - -26: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit" - %27 = getelementptr inbounds i8, ptr %0, i64 32 - %28 = tail call { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h21aa9fbc9b879b5eE.llvm.6378331738793817062"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %.sroa.0.0, ptr noalias noundef nonnull readonly align 1 %27, i1 noundef zeroext true) - %29 = extractvalue { i64, i64 } %28, 0 - %30 = icmp eq i64 %29, -9223372036854775807 - tail call void @llvm.assume(i1 %30) +"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit": ; preds = %12, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit12" + %.sroa.0.0 = phi i64 [ %27, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit12" ], [ %18, %12 ] + %28 = getelementptr inbounds i8, ptr %0, i64 16 + %29 = load i64, ptr %28, align 8, !alias.scope !152, !noalias !155, !noundef !9 + %30 = icmp ugt i64 %.sroa.0.0, %29 + br i1 %30, label %31, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17habf13374348415f0E.exit" + +31: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit" + %32 = getelementptr inbounds i8, ptr %0, i64 32 + %33 = tail call { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h21aa9fbc9b879b5eE.llvm.6378331738793817062"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %.sroa.0.0, ptr noalias noundef nonnull readonly align 1 %32, i1 noundef zeroext true) + %34 = extractvalue { i64, i64 } %33, 0 + %35 = icmp eq i64 %34, -9223372036854775807 + tail call void @llvm.assume(i1 %35) br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17habf13374348415f0E.exit" -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17habf13374348415f0E.exit": ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit", %26 +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17habf13374348415f0E.exit": ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h430b40554609eb96E.llvm.13537110341245814796.exit", %31 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !157 store i64 %.sroa.0.0.copyload14, ptr %3, align 8, !noalias !170 %.sroa.432.0..sroa_idx = getelementptr inbounds i8, ptr %3, i64 8 diff --git a/bench/zed-rs/optimized/eiu35781qwj0wy44b83i3e7bt.ll b/bench/zed-rs/optimized/eiu35781qwj0wy44b83i3e7bt.ll index b5bbd6c63fe..81fb2a2d336 100644 --- a/bench/zed-rs/optimized/eiu35781qwj0wy44b83i3e7bt.ll +++ b/bench/zed-rs/optimized/eiu35781qwj0wy44b83i3e7bt.ll @@ -22217,7 +22217,7 @@ common.ret: ; preds = %210, %"_ZN50_$LT$T$ %.sroa.082.0 = phi i64 [ %.sroa.017.i.sroa.0.0, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h55200e0956499113E.exit" ], [ -9223372036854775808, %54 ], [ -9223372036854775808, %49 ], [ -9223372036854775808, %45 ], [ -9223372036854775808, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i45" ], [ -9223372036854775808, %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit" ] %.sroa.683.0 = phi ptr [ %.sroa.017.i.sroa.5.0, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h55200e0956499113E.exit" ], [ %55, %54 ], [ %50, %49 ], [ %46, %45 ], [ %215, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i45" ], [ %215, %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit" ] %.sroa.1184.0 = phi i64 [ %spec.select, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h55200e0956499113E.exit" ], [ undef, %54 ], [ undef, %49 ], [ undef, %45 ], [ undef, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i45" ], [ undef, %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit" ] - %.sroa.12.0 = phi i8 [ %217, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h55200e0956499113E.exit" ], [ undef, %54 ], [ undef, %49 ], [ undef, %45 ], [ undef, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i45" ], [ undef, %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit" ] + %.sroa.12.0 = phi i8 [ %218, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h55200e0956499113E.exit" ], [ undef, %54 ], [ undef, %49 ], [ undef, %45 ], [ undef, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i45" ], [ undef, %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit" ] store i64 %.sroa.082.0, ptr %0, align 8 %.sroa.683.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store ptr %.sroa.683.0, ptr %.sroa.683.0..sroa_idx, align 8 @@ -22330,8 +22330,8 @@ common.ret: ; preds = %210, %"_ZN50_$LT$T$ cleanup br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h34806bf601e86186E.exit" -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h34806bf601e86186E.exit": ; preds = %.body, %218, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i", %61, %39, %47, %56 - %.pn19.pn = phi { ptr, i32 } [ %57, %56 ], [ %62, %61 ], [ %48, %47 ], [ %40, %39 ], [ %219, %218 ], [ %219, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i" ], [ %.pn12, %.body ] +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h34806bf601e86186E.exit": ; preds = %.body, %219, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i", %61, %39, %47, %56 + %.pn19.pn = phi { ptr, i32 } [ %57, %56 ], [ %62, %61 ], [ %48, %47 ], [ %40, %39 ], [ %220, %219 ], [ %220, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i" ], [ %.pn12, %.body ] store i8 2, ptr %12, align 8 resume { ptr, i32 } %.pn19.pn @@ -22813,47 +22813,48 @@ common.ret: ; preds = %210, %"_ZN50_$LT$T$ 213: ; preds = %.thread118 %214 = inttoptr i64 %.sroa.4.0.i to ptr %215 = invoke noundef nonnull ptr @"_ZN13wasmtime_wasi10filesystem192_$LT$impl$u20$core..convert..From$LT$std..io..error..Error$GT$$u20$for$u20$wasmtime_wasi..error..TrappableError$LT$wasmtime_wasi..bindings..async_io..wasi..filesystem..types..ErrorCode$GT$$GT$4from17h17f93a32571804c3E"(ptr noundef nonnull %214) - to label %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit" unwind label %218 + to label %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit" unwind label %219 "_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h55200e0956499113E.exit": ; preds = %.thread118 %216 = icmp eq i64 %.sroa.4.0.i, 0 - %spec.select = call i64 @llvm.umin.i64(i64 %.sroa.4.0.i, i64 %.sroa.017.i.sroa.6.0) - %217 = zext i1 %216 to i8 + %217 = call i64 @llvm.umin.i64(i64 %.sroa.4.0.i, i64 %.sroa.017.i.sroa.6.0) + %spec.select = select i1 %216, i64 0, i64 %217 + %218 = zext i1 %216 to i8 br label %"_ZN50_$LT$T$u20$as$u20$core..convert..Into$LT$U$GT$$GT$4into17ha04ee329d7e6fdcfE.exit" -218: ; preds = %213 - %219 = landingpad { ptr, i32 } +219: ; preds = %213 + %220 = landingpad { ptr, i32 } cleanup - %220 = icmp eq i64 %.sroa.017.i.sroa.0.0, 0 - br i1 %220, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h34806bf601e86186E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i" + %221 = icmp eq i64 %.sroa.017.i.sroa.0.0, 0 + br i1 %221, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h34806bf601e86186E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i": ; preds = %218 - %221 = icmp ne ptr %.sroa.017.i.sroa.5.0, null - call void @llvm.assume(i1 %221) +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i": ; preds = %219 + %222 = icmp ne ptr %.sroa.017.i.sroa.5.0, null + call void @llvm.assume(i1 %222) call void @__rust_dealloc(ptr noundef nonnull %.sroa.017.i.sroa.5.0, i64 noundef %.sroa.017.i.sroa.0.0, i64 noundef 1) #44, !noalias !5580 br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h34806bf601e86186E.exit" "_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit": ; preds = %213 - %222 = icmp eq i64 %.sroa.017.i.sroa.0.0, 0 - br i1 %222, label %"_ZN50_$LT$T$u20$as$u20$core..convert..Into$LT$U$GT$$GT$4into17ha04ee329d7e6fdcfE.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i45" + %223 = icmp eq i64 %.sroa.017.i.sroa.0.0, 0 + br i1 %223, label %"_ZN50_$LT$T$u20$as$u20$core..convert..Into$LT$U$GT$$GT$4into17ha04ee329d7e6fdcfE.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i45" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i45": ; preds = %"_ZN153_$LT$core..result..Result$LT$T$C$F$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..result..Result$LT$core..convert..Infallible$C$E$GT$$GT$$GT$13from_residual17h10404877c56d9194E.exit" - %223 = icmp ne ptr %.sroa.017.i.sroa.5.0, null - call void @llvm.assume(i1 %223) + %224 = icmp ne ptr %.sroa.017.i.sroa.5.0, null + call void @llvm.assume(i1 %224) call void @__rust_dealloc(ptr noundef nonnull %.sroa.017.i.sroa.5.0, i64 noundef %.sroa.017.i.sroa.0.0, i64 noundef 1) #44, !noalias !5587 br label %"_ZN50_$LT$T$u20$as$u20$core..convert..Into$LT$U$GT$$GT$4into17ha04ee329d7e6fdcfE.exit" -224: ; preds = %.body - %225 = landingpad { ptr, i32 } +225: ; preds = %.body + %226 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hfa05ef7d5107e16aE() #45 unreachable .body: ; preds = %208, %.body.i - %226 = phi ptr [ %66, %208 ], [ %173, %.body.i ] + %227 = phi ptr [ %66, %208 ], [ %173, %.body.i ] %.pn12 = phi { ptr, i32 } [ %209, %208 ], [ %.pn2.i, %.body.i ] - invoke fastcc void @"_ZN4core3ptr481drop_in_place$LT$wasmtime_wasi..filesystem..File..spawn_blocking$LT$wasmtime_wasi..host..filesystem..$LT$impl$u20$wasmtime_wasi..bindings..async_io..wasi..filesystem..types..HostDescriptor$u20$for$u20$wasmtime_wasi..ctx..WasiImpl$LT$$RF$mut$u20$extension..wasm_host..WasmState$GT$$GT$..read..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$C$$LP$alloc..vec..Vec$LT$u8$GT$$C$core..result..Result$LT$usize$C$std..io..error..Error$GT$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h2d17e4c82e20b7a3E"(ptr noundef nonnull align 8 %226) #42 - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h34806bf601e86186E.exit" unwind label %224 + invoke fastcc void @"_ZN4core3ptr481drop_in_place$LT$wasmtime_wasi..filesystem..File..spawn_blocking$LT$wasmtime_wasi..host..filesystem..$LT$impl$u20$wasmtime_wasi..bindings..async_io..wasi..filesystem..types..HostDescriptor$u20$for$u20$wasmtime_wasi..ctx..WasiImpl$LT$$RF$mut$u20$extension..wasm_host..WasmState$GT$$GT$..read..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$C$$LP$alloc..vec..Vec$LT$u8$GT$$C$core..result..Result$LT$usize$C$std..io..error..Error$GT$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h2d17e4c82e20b7a3E"(ptr noundef nonnull align 8 %227) #42 + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h34806bf601e86186E.exit" unwind label %225 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/zfp/optimized/zfp.c.ll b/bench/zfp/optimized/zfp.c.ll index fecb73cc0e1..7cb0b06fe71 100644 --- a/bench/zfp/optimized/zfp.c.ll +++ b/bench/zfp/optimized/zfp.c.ll @@ -222,28 +222,28 @@ field_index_span.exit: ; preds = %._crit_edge.i, %23 %.not61.i = icmp eq i64 %16, 0 %30 = add i64 %16, -1 %31 = mul nsw i64 %30, %spec.select.i - %32 = tail call i64 @llvm.smin.i64(i64 %31, i64 0) %.not62.i = icmp eq i64 %18, 0 - %33 = add i64 %18, -1 - %34 = mul nsw i64 %33, %12 - %35 = tail call i64 @llvm.smin.i64(i64 %34, i64 0) + %32 = add i64 %18, -1 + %33 = mul nsw i64 %32, %12 %.not63.i = icmp eq i64 %28, 0 - %36 = add i64 %28, -1 - %37 = mul nsw i64 %36, %20 - %38 = tail call i64 @llvm.smin.i64(i64 %37, i64 0) - %39 = getelementptr inbounds i8, ptr %0, i64 32 - %40 = load i64, ptr %39, align 8 - %.not64.i = icmp eq i64 %40, 0 - %41 = add i64 %40, -1 - %42 = mul nsw i64 %41, %29 - %43 = tail call i64 @llvm.smin.i64(i64 %42, i64 0) - %44 = select i1 %.not61.i, i64 0, i64 %32 - %45 = select i1 %.not62.i, i64 0, i64 %35 - %46 = add nsw i64 %45, %44 - %47 = select i1 %.not63.i, i64 0, i64 %38 - %48 = add nsw i64 %46, %47 - %49 = select i1 %.not64.i, i64 0, i64 %43 - %50 = add nsw i64 %48, %49 + %34 = add i64 %28, -1 + %35 = mul nsw i64 %34, %20 + %36 = getelementptr inbounds i8, ptr %0, i64 32 + %37 = load i64, ptr %36, align 8 + %.not64.i = icmp eq i64 %37, 0 + %38 = add i64 %37, -1 + %39 = mul nsw i64 %38, %29 + %40 = tail call i64 @llvm.smin.i64(i64 %31, i64 0) + %41 = select i1 %.not61.i, i64 0, i64 %40 + %42 = tail call i64 @llvm.smin.i64(i64 %33, i64 0) + %43 = select i1 %.not62.i, i64 0, i64 %42 + %44 = add nsw i64 %43, %41 + %45 = tail call i64 @llvm.smin.i64(i64 %35, i64 0) + %46 = select i1 %.not63.i, i64 0, i64 %45 + %47 = add nsw i64 %44, %46 + %48 = tail call i64 @llvm.smin.i64(i64 %39, i64 0) + %49 = select i1 %.not64.i, i64 0, i64 %48 + %50 = add nsw i64 %47, %49 %51 = load i32, ptr %0, align 8 %switch.tableidx = add i32 %51, -1 %52 = icmp ult i32 %switch.tableidx, 4 diff --git a/bench/zstd/optimized/zstd_compress.c.ll b/bench/zstd/optimized/zstd_compress.c.ll index b2d78e5cc63..a367bc9bff3 100644 --- a/bench/zstd/optimized/zstd_compress.c.ll +++ b/bench/zstd/optimized/zstd_compress.c.ll @@ -3765,26 +3765,26 @@ cond.end.i: ; preds = %cond.true.i, %ZSTD_ %13 = load i32, ptr %hashLog3.i, align 8 %tobool33.not.i = icmp eq i32 %13, 0 %sh_prom35.i = zext nneg i32 %13 to i64 - %14 = shl i64 4, %sh_prom35.i %blockState40.i = getelementptr inbounds i8, ptr %dstCCtx, i64 3200 %matchState41.i = getelementptr inbounds i8, ptr %dstCCtx, i64 3216 %hashTable.i = getelementptr inbounds i8, ptr %dstCCtx, i64 3328 - %15 = load ptr, ptr %hashTable.i, align 8 + %14 = load ptr, ptr %hashTable.i, align 8 %hashTable44.i = getelementptr inbounds i8, ptr %srcCCtx, i64 3328 - %16 = load ptr, ptr %hashTable44.i, align 8 + %15 = load ptr, ptr %hashTable44.i, align 8 %mul.i = shl i64 4, %sh_prom31.i - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %15, ptr align 4 %16, i64 %mul.i, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %14, ptr align 4 %15, i64 %mul.i, i1 false) %chainTable.i = getelementptr inbounds i8, ptr %dstCCtx, i64 3344 - %17 = load ptr, ptr %chainTable.i, align 8 + %16 = load ptr, ptr %chainTable.i, align 8 %chainTable49.i = getelementptr inbounds i8, ptr %srcCCtx, i64 3344 - %18 = load ptr, ptr %chainTable49.i, align 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 4 %18, i64 %cond.i, i1 false) + %17 = load ptr, ptr %chainTable49.i, align 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %16, ptr align 4 %17, i64 %cond.i, i1 false) %hashTable3.i = getelementptr inbounds i8, ptr %dstCCtx, i64 3336 - %19 = load ptr, ptr %hashTable3.i, align 8 + %18 = load ptr, ptr %hashTable3.i, align 8 %hashTable355.i = getelementptr inbounds i8, ptr %srcCCtx, i64 3336 - %20 = load ptr, ptr %hashTable355.i, align 8 - %mul56.i = select i1 %tobool33.not.i, i64 0, i64 %14 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %19, ptr align 4 %20, i64 %mul56.i, i1 false) + %19 = load ptr, ptr %hashTable355.i, align 8 + %20 = shl i64 4, %sh_prom35.i + %mul56.i = select i1 %tobool33.not.i, i64 0, i64 %20 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %18, ptr align 4 %19, i64 %mul56.i, i1 false) %21 = load ptr, ptr %tableValidEnd.i.i, align 8 %tableEnd.i.i = getelementptr inbounds i8, ptr %dstCCtx, i64 704 %22 = load ptr, ptr %tableEnd.i.i, align 8 @@ -6237,11 +6237,11 @@ if.end51.i.i: ; preds = %if.then42.i20.i, %i %62 = load i32, ptr %hashLog3.i.i, align 8 %tobool54.not.i.i = icmp eq i32 %62, 0 %sh_prom56.i.i = zext nneg i32 %62 to i64 - %63 = shl i64 4, %sh_prom56.i.i %hashTable3.i.i = getelementptr inbounds i8, ptr %cctx, i64 3336 - %64 = load ptr, ptr %hashTable3.i.i, align 8 - %mul.i.i = select i1 %tobool54.not.i.i, i64 0, i64 %63 - tail call void @llvm.memset.p0.i64(ptr align 4 %64, i8 0, i64 %mul.i.i, i1 false) + %63 = load ptr, ptr %hashTable3.i.i, align 8 + %64 = shl i64 4, %sh_prom56.i.i + %mul.i.i = select i1 %tobool54.not.i.i, i64 0, i64 %64 + tail call void @llvm.memset.p0.i64(ptr align 4 %63, i8 0, i64 %mul.i.i, i1 false) %65 = load ptr, ptr %tableValidEnd.i.i.i, align 8 %tableEnd.i.i.i = getelementptr inbounds i8, ptr %cctx, i64 704 %66 = load ptr, ptr %tableEnd.i.i.i, align 8 @@ -9095,26 +9095,34 @@ ZSTD_CCtx_refCDict.exit: if.then.i: ; preds = %ZSTD_CCtx_refCDict.exit %cParamsChanged.i = getelementptr inbounds i8, ptr %zcs, i64 4 store i32 1, ptr %cParamsChanged.i, align 4 + %1 = tail call i32 @llvm.smax.i32(i32 %compressionLevel, i32 -131072) + %2 = add i32 %compressionLevel, -23 + %3 = icmp ult i32 %2, -131095 + %simplifycfg.merge.i.i = tail call i32 @llvm.smin.i32(i32 %1, i32 22) + %value.addr.1.i = select i1 %3, i32 %simplifycfg.merge.i.i, i32 %compressionLevel + %cmp.i21 = icmp eq i32 %value.addr.1.i, 0 + %spec.select462.i = select i1 %cmp.i21, i32 3, i32 %value.addr.1.i br label %ZSTD_CCtx_setPledgedSrcSize.exit do.end10.i.critedge: ; preds = %ZSTD_CCtx_refCDict.exit %cmp = icmp eq i64 %pss, 0 - %1 = add i64 %pss, 1 - %add.i = select i1 %cmp, i64 0, i64 %1 + %4 = tail call i32 @llvm.smax.i32(i32 %compressionLevel, i32 -131072) + %5 = add i32 %compressionLevel, -23 + %6 = icmp ult i32 %5, -131095 + %simplifycfg.merge.i.i.c = tail call i32 @llvm.smin.i32(i32 %4, i32 22) + %value.addr.1.i.c = select i1 %6, i32 %simplifycfg.merge.i.i.c, i32 %compressionLevel + %cmp.i21.c = icmp eq i32 %value.addr.1.i.c, 0 + %spec.select462.i.c = select i1 %cmp.i21.c, i32 3, i32 %value.addr.1.i.c + %7 = add i64 %pss, 1 + %add.i = select i1 %cmp, i64 0, i64 %7 store i64 %add.i, ptr %pledgedSrcSizePlusOne.i, align 8 br label %ZSTD_CCtx_setPledgedSrcSize.exit ZSTD_CCtx_setPledgedSrcSize.exit: ; preds = %if.then.i, %do.end10.i.critedge + %spec.select462.i.sink = phi i32 [ %spec.select462.i.c, %do.end10.i.critedge ], [ %spec.select462.i, %if.then.i ] %.call46 = phi i64 [ 0, %do.end10.i.critedge ], [ -60, %if.then.i ] - %2 = add i32 %compressionLevel, -23 - %3 = icmp ult i32 %2, -131095 - %4 = tail call i32 @llvm.smax.i32(i32 %compressionLevel, i32 -131072) - %simplifycfg.merge.i.i.c = tail call i32 @llvm.smin.i32(i32 %4, i32 22) - %value.addr.1.i.c = select i1 %3, i32 %simplifycfg.merge.i.i.c, i32 %compressionLevel - %cmp.i21.c = icmp eq i32 %value.addr.1.i.c, 0 - %spec.select462.i.c = select i1 %cmp.i21.c, i32 3, i32 %value.addr.1.i.c - %5 = getelementptr inbounds i8, ptr %zcs, i64 60 - store i32 %spec.select462.i.c, ptr %5, align 4 + %8 = getelementptr inbounds i8, ptr %zcs, i64 60 + store i32 %spec.select462.i.sink, ptr %8, align 4 ret i64 %.call46 } @@ -13317,13 +13325,12 @@ cond.end14: ; preds = %cond.true6, %cond.e %cond15 = phi i32 [ 0, %land.lhs.true ], [ 0, %cond.end ], [ %spec.select, %cond.true6 ] %tobool16.not = icmp eq i32 %cond15, 0 %sh_prom18 = zext nneg i32 %cond15 to i64 - %9 = shl nuw nsw i64 4, %sh_prom18 %cmp23.not = icmp eq i32 %forceResetIndex, 0 br i1 %cmp23.not, label %if.end, label %if.then if.then: ; preds = %cond.end14 - %10 = getelementptr inbounds i8, ptr %ms, i64 32 - store i64 0, ptr %10, align 8 + %9 = getelementptr inbounds i8, ptr %ms, i64 32 + store i64 0, ptr %9, align 8 %base.i = getelementptr inbounds i8, ptr %ms, i64 8 store ptr @.str, ptr %base.i, align 8 %dictBase.i = getelementptr inbounds i8, ptr %ms, i64 16 @@ -13334,9 +13341,9 @@ if.then: ; preds = %cond.end14 store i32 2, ptr %lowLimit.i, align 4 store ptr getelementptr inbounds (i8, ptr @.str, i64 2), ptr %ms, align 8 %objectEnd.i = getelementptr inbounds i8, ptr %ws, i64 16 - %11 = load ptr, ptr %objectEnd.i, align 8 + %10 = load ptr, ptr %objectEnd.i, align 8 %tableValidEnd.i = getelementptr inbounds i8, ptr %ws, i64 32 - store ptr %11, ptr %tableValidEnd.i, align 8 + store ptr %10, ptr %tableValidEnd.i, align 8 br label %if.end if.end: ; preds = %if.then, %cond.end14 @@ -13344,11 +13351,11 @@ if.end: ; preds = %if.then, %cond.end1 store i32 %cond15, ptr %hashLog324, align 8 %lazySkipping = getelementptr inbounds i8, ptr %ms, i64 300 store i32 0, ptr %lazySkipping, align 4 - %12 = load ptr, ptr %ms, align 8 + %11 = load ptr, ptr %ms, align 8 %base.i.i = getelementptr inbounds i8, ptr %ms, i64 8 - %13 = load ptr, ptr %base.i.i, align 8 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %12 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %13 to i64 + %12 = load ptr, ptr %base.i.i, align 8 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %11 to i64 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %12 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i %conv.i.i = trunc i64 %sub.ptr.sub.i.i to i32 %lowLimit.i.i = getelementptr inbounds i8, ptr %ms, i64 28 @@ -13364,29 +13371,29 @@ if.end: ; preds = %if.then, %cond.end1 %dictMatchState.i = getelementptr inbounds i8, ptr %ms, i64 248 store ptr null, ptr %dictMatchState.i, align 8 %objectEnd.i63 = getelementptr inbounds i8, ptr %ws, i64 16 - %14 = load ptr, ptr %objectEnd.i63, align 8 + %13 = load ptr, ptr %objectEnd.i63, align 8 %tableEnd.i = getelementptr inbounds i8, ptr %ws, i64 24 - store ptr %14, ptr %tableEnd.i, align 8 + store ptr %13, ptr %tableEnd.i, align 8 %mul = shl i64 4, %sh_prom2 %phase1.i = getelementptr inbounds i8, ptr %ws, i64 64 - %15 = load i32, ptr %phase1.i, align 8 - %cmp.i = icmp eq i32 %15, 0 + %14 = load i32, ptr %phase1.i, align 8 + %cmp.i = icmp eq i32 %14, 0 br i1 %cmp.i, label %if.then.i.i, label %if.end4.i if.then.i.i: ; preds = %if.end %tableValidEnd.i.i = getelementptr inbounds i8, ptr %ws, i64 32 - store ptr %14, ptr %tableValidEnd.i.i, align 8 - %16 = getelementptr i8, ptr %ws, i64 8 - %ws.val.i.i = load ptr, ptr %16, align 8 - %17 = ptrtoint ptr %ws.val.i.i to i64 - %and.i.i.i = and i64 %17, -64 - %18 = inttoptr i64 %and.i.i.i to ptr + store ptr %13, ptr %tableValidEnd.i.i, align 8 + %15 = getelementptr i8, ptr %ws, i64 8 + %ws.val.i.i = load ptr, ptr %15, align 8 + %16 = ptrtoint ptr %ws.val.i.i to i64 + %and.i.i.i = and i64 %16, -64 + %17 = inttoptr i64 %and.i.i.i to ptr %initOnceStart.i.i = getelementptr inbounds i8, ptr %ws, i64 48 - store ptr %18, ptr %initOnceStart.i.i, align 8 - %19 = ptrtoint ptr %14 to i64 - %sub1.i.i.i = sub i64 0, %19 + store ptr %17, ptr %initOnceStart.i.i, align 8 + %18 = ptrtoint ptr %13 to i64 + %sub1.i.i.i = sub i64 0, %18 %and2.i.i.i = and i64 %sub1.i.i.i, 63 - %add.ptr.i.i = getelementptr inbounds i8, ptr %14, i64 %and2.i.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %13, i64 %and2.i.i.i %cmp10.i.i = icmp ugt ptr %add.ptr.i.i, %ws.val.i.i br i1 %cmp10.i.i, label %ZSTD_cwksp_reserve_table.exit, label %do.end20.i.i @@ -13405,11 +13412,11 @@ ZSTD_cwksp_internal_advance_phase.exit.thread.i: ; preds = %if.then25.i.i, %do. br label %if.end4.i if.end4.i: ; preds = %if.end, %ZSTD_cwksp_internal_advance_phase.exit.thread.i - %20 = phi ptr [ %add.ptr.i.i, %ZSTD_cwksp_internal_advance_phase.exit.thread.i ], [ %14, %if.end ] - %add.ptr.i = getelementptr inbounds i8, ptr %20, i64 %mul + %19 = phi ptr [ %add.ptr.i.i, %ZSTD_cwksp_internal_advance_phase.exit.thread.i ], [ %13, %if.end ] + %add.ptr.i = getelementptr inbounds i8, ptr %19, i64 %mul %allocStart.i = getelementptr inbounds i8, ptr %ws, i64 40 - %21 = load ptr, ptr %allocStart.i, align 8 - %cmp5.i = icmp ugt ptr %add.ptr.i, %21 + %20 = load ptr, ptr %allocStart.i, align 8 + %cmp5.i = icmp ugt ptr %add.ptr.i, %20 br i1 %cmp5.i, label %do.end8.i, label %if.end9.i do.end8.i: ; preds = %if.end4.i @@ -13422,11 +13429,11 @@ if.end9.i: ; preds = %if.end4.i br label %ZSTD_cwksp_reserve_table.exit ZSTD_cwksp_reserve_table.exit: ; preds = %if.then.i.i, %do.end8.i, %if.end9.i - %retval.0.i = phi ptr [ null, %do.end8.i ], [ %20, %if.end9.i ], [ null, %if.then.i.i ] + %retval.0.i = phi ptr [ null, %do.end8.i ], [ %19, %if.end9.i ], [ null, %if.then.i.i ] %hashTable = getelementptr inbounds i8, ptr %ms, i64 112 store ptr %retval.0.i, ptr %hashTable, align 8 - %22 = load i32, ptr %phase1.i, align 8 - %cmp.i66 = icmp eq i32 %22, 0 + %21 = load i32, ptr %phase1.i, align 8 + %cmp.i66 = icmp eq i32 %21, 0 br i1 %cmp.i66, label %if.then.i.i79, label %entry.if.end4_crit_edge.i67 entry.if.end4_crit_edge.i67: ; preds = %ZSTD_cwksp_reserve_table.exit @@ -13434,20 +13441,20 @@ entry.if.end4_crit_edge.i67: ; preds = %ZSTD_cwksp_reserve_ br label %if.end4.i70 if.then.i.i79: ; preds = %ZSTD_cwksp_reserve_table.exit - %23 = load ptr, ptr %objectEnd.i63, align 8 + %22 = load ptr, ptr %objectEnd.i63, align 8 %tableValidEnd.i.i81 = getelementptr inbounds i8, ptr %ws, i64 32 - store ptr %23, ptr %tableValidEnd.i.i81, align 8 - %24 = getelementptr i8, ptr %ws, i64 8 - %ws.val.i.i82 = load ptr, ptr %24, align 8 - %25 = ptrtoint ptr %ws.val.i.i82 to i64 - %and.i.i.i83 = and i64 %25, -64 - %26 = inttoptr i64 %and.i.i.i83 to ptr + store ptr %22, ptr %tableValidEnd.i.i81, align 8 + %23 = getelementptr i8, ptr %ws, i64 8 + %ws.val.i.i82 = load ptr, ptr %23, align 8 + %24 = ptrtoint ptr %ws.val.i.i82 to i64 + %and.i.i.i83 = and i64 %24, -64 + %25 = inttoptr i64 %and.i.i.i83 to ptr %initOnceStart.i.i84 = getelementptr inbounds i8, ptr %ws, i64 48 - store ptr %26, ptr %initOnceStart.i.i84, align 8 - %27 = ptrtoint ptr %23 to i64 - %sub1.i.i.i85 = sub i64 0, %27 + store ptr %25, ptr %initOnceStart.i.i84, align 8 + %26 = ptrtoint ptr %22 to i64 + %sub1.i.i.i85 = sub i64 0, %26 %and2.i.i.i86 = and i64 %sub1.i.i.i85, 63 - %add.ptr.i.i87 = getelementptr inbounds i8, ptr %23, i64 %and2.i.i.i86 + %add.ptr.i.i87 = getelementptr inbounds i8, ptr %22, i64 %and2.i.i.i86 %cmp10.i.i88 = icmp ugt ptr %add.ptr.i.i87, %ws.val.i.i82 br i1 %cmp10.i.i88, label %ZSTD_cwksp_reserve_table.exit94, label %do.end20.i.i89 @@ -13466,11 +13473,11 @@ ZSTD_cwksp_internal_advance_phase.exit.thread.i93: ; preds = %if.then25.i.i92, % br label %if.end4.i70 if.end4.i70: ; preds = %ZSTD_cwksp_internal_advance_phase.exit.thread.i93, %entry.if.end4_crit_edge.i67 - %28 = phi ptr [ %.pre.i69, %entry.if.end4_crit_edge.i67 ], [ %add.ptr.i.i87, %ZSTD_cwksp_internal_advance_phase.exit.thread.i93 ] - %add.ptr.i71 = getelementptr inbounds i8, ptr %28, i64 %cond + %27 = phi ptr [ %.pre.i69, %entry.if.end4_crit_edge.i67 ], [ %add.ptr.i.i87, %ZSTD_cwksp_internal_advance_phase.exit.thread.i93 ] + %add.ptr.i71 = getelementptr inbounds i8, ptr %27, i64 %cond %allocStart.i72 = getelementptr inbounds i8, ptr %ws, i64 40 - %29 = load ptr, ptr %allocStart.i72, align 8 - %cmp5.i73 = icmp ugt ptr %add.ptr.i71, %29 + %28 = load ptr, ptr %allocStart.i72, align 8 + %cmp5.i73 = icmp ugt ptr %add.ptr.i71, %28 br i1 %cmp5.i73, label %do.end8.i77, label %if.end9.i74 do.end8.i77: ; preds = %if.end4.i70 @@ -13483,10 +13490,11 @@ if.end9.i74: ; preds = %if.end4.i70 br label %ZSTD_cwksp_reserve_table.exit94 ZSTD_cwksp_reserve_table.exit94: ; preds = %if.then.i.i79, %do.end8.i77, %if.end9.i74 - %retval.0.i76 = phi ptr [ null, %do.end8.i77 ], [ %28, %if.end9.i74 ], [ null, %if.then.i.i79 ] + %retval.0.i76 = phi ptr [ null, %do.end8.i77 ], [ %27, %if.end9.i74 ], [ null, %if.then.i.i79 ] %chainTable = getelementptr inbounds i8, ptr %ms, i64 128 store ptr %retval.0.i76, ptr %chainTable, align 8 - %mul30 = select i1 %tobool16.not, i64 0, i64 %9 + %29 = shl nuw nsw i64 4, %sh_prom18 + %mul30 = select i1 %tobool16.not, i64 0, i64 %29 %30 = load i32, ptr %phase1.i, align 8 %cmp.i96 = icmp eq i32 %30, 0 br i1 %cmp.i96, label %if.then.i.i109, label %entry.if.end4_crit_edge.i97 diff --git a/bench/zstd/optimized/zstd_opt.c.ll b/bench/zstd/optimized/zstd_opt.c.ll index cd546477886..691b8fb792a 100644 --- a/bench/zstd/optimized/zstd_opt.c.ll +++ b/bench/zstd/optimized/zstd_opt.c.ll @@ -3194,12 +3194,7 @@ ZSTD_hashPtr.exit: ; preds = %sw.bb7.i, %sw.bb5.i %12 = load i32, ptr %searchLog, align 4 store i32 %conv, ptr %arrayidx, align 4 %cmp21114.not = icmp ult i32 %4, %cond6.i - br i1 %cmp21114.not, label %for.end.thread, label %for.body.lr.ph - -for.end.thread: ; preds = %ZSTD_hashPtr.exit - store i32 0, ptr %add.ptr16, align 4 - store i32 0, ptr %add.ptr15, align 4 - br label %21 + br i1 %cmp21114.not, label %for.end, label %for.body.lr.ph for.body.lr.ph: ; preds = %ZSTD_hashPtr.exit %shl19 = shl nuw i32 1, %12 @@ -3211,7 +3206,7 @@ for.body.lr.ph: ; preds = %ZSTD_hashPtr.exit for.body: ; preds = %for.body.lr.ph, %for.inc %nbCompares.0122 = phi i32 [ %shl19, %for.body.lr.ph ], [ %dec, %for.inc ] - %bestLength.0121 = phi i64 [ 8, %for.body.lr.ph ], [ %bestLength.2.fr, %for.inc ] + %bestLength.0121 = phi i64 [ 8, %for.body.lr.ph ], [ %17, %for.inc ] %matchEndIdx.0120 = phi i32 [ %add18, %for.body.lr.ph ], [ %matchEndIdx.2, %for.inc ] %matchIndex.0119 = phi i32 [ %4, %for.body.lr.ph ], [ %matchIndex.1, %for.inc ] %largerPtr.0118 = phi ptr [ %add.ptr16, %for.body.lr.ph ], [ %largerPtr.2, %for.inc ] @@ -3363,16 +3358,16 @@ if.then67: ; preds = %if.then62 if.end71: ; preds = %if.then62, %if.then67, %if.end59 %matchEndIdx.2 = phi i32 [ %add69, %if.then67 ], [ %matchEndIdx.0120, %if.then62 ], [ %matchEndIdx.0120, %if.end59 ] %bestLength.2 = phi i64 [ %matchLength.0, %if.then67 ], [ %matchLength.0, %if.then62 ], [ %bestLength.0121, %if.end59 ] - %bestLength.2.fr = freeze i64 %bestLength.2 + %17 = freeze i64 %bestLength.2 %add.ptr72 = getelementptr inbounds i8, ptr %ip, i64 %matchLength.0 %cmp73 = icmp eq ptr %add.ptr72, %iend br i1 %cmp73, label %for.end, label %if.end76 if.end76: ; preds = %if.end71 %arrayidx77 = getelementptr inbounds i8, ptr %match.0, i64 %matchLength.0 - %17 = load i8, ptr %arrayidx77, align 1 - %18 = load i8, ptr %add.ptr72, align 1 - %cmp81 = icmp ult i8 %17, %18 + %18 = load i8, ptr %arrayidx77, align 1 + %19 = load i8, ptr %add.ptr72, align 1 + %cmp81 = icmp ult i8 %18, %19 %cmp84.not = icmp ugt i32 %matchIndex.0119, %cond br i1 %cmp81, label %if.then83, label %if.else90 @@ -3398,28 +3393,25 @@ for.inc: ; preds = %if.else90, %if.end8 %dec = add i32 %nbCompares.0122, -1 %tobool = icmp ne i32 %dec, 0 %cmp21 = icmp uge i32 %matchIndex.1, %cond6.i - %19 = select i1 %tobool, i1 %cmp21, i1 false - br i1 %19, label %for.body, label %for.end, !llvm.loop !22 - -for.end: ; preds = %for.inc, %if.end71, %if.then83, %if.else90 - %smallerPtr.1 = phi ptr [ %smallerPtr.2, %for.inc ], [ %smallerPtr.0117, %if.end71 ], [ %dummy32, %if.then83 ], [ %smallerPtr.0117, %if.else90 ] - %largerPtr.1 = phi ptr [ %largerPtr.2, %for.inc ], [ %largerPtr.0118, %if.end71 ], [ %largerPtr.0118, %if.then83 ], [ %dummy32, %if.else90 ] + %20 = select i1 %tobool, i1 %cmp21, i1 false + br i1 %20, label %for.body, label %for.end, !llvm.loop !22 + +for.end: ; preds = %for.inc, %if.end71, %if.then83, %if.else90, %ZSTD_hashPtr.exit + %smallerPtr.1 = phi ptr [ %add.ptr15, %ZSTD_hashPtr.exit ], [ %smallerPtr.0117, %if.else90 ], [ %dummy32, %if.then83 ], [ %smallerPtr.0117, %if.end71 ], [ %smallerPtr.2, %for.inc ] + %largerPtr.1 = phi ptr [ %add.ptr16, %ZSTD_hashPtr.exit ], [ %dummy32, %if.else90 ], [ %largerPtr.0118, %if.then83 ], [ %largerPtr.0118, %if.end71 ], [ %largerPtr.2, %for.inc ] + %matchEndIdx.1 = phi i32 [ %add18, %ZSTD_hashPtr.exit ], [ %matchEndIdx.2, %if.else90 ], [ %matchEndIdx.2, %if.then83 ], [ %matchEndIdx.2, %if.end71 ], [ %matchEndIdx.2, %for.inc ] + %bestLength.1 = phi i64 [ 8, %ZSTD_hashPtr.exit ], [ %17, %if.else90 ], [ %17, %if.then83 ], [ %17, %if.end71 ], [ %17, %for.inc ] store i32 0, ptr %largerPtr.1, align 4 store i32 0, ptr %smallerPtr.1, align 4 - %cmp97 = icmp ugt i64 %bestLength.2.fr, 384 - %20 = trunc i64 %bestLength.2.fr to i32 - %conv101 = add i32 %20, -384 + %cmp97 = icmp ugt i64 %bestLength.1, 384 + %21 = trunc i64 %bestLength.1 to i32 + %conv101 = add i32 %21, -384 %cond109 = tail call i32 @llvm.umin.i32(i32 %conv101, i32 192) - %spec.select151 = select i1 %cmp97, i32 %cond109, i32 0 - br label %21 - -21: ; preds = %for.end, %for.end.thread - %matchEndIdx.1148 = phi i32 [ %add18, %for.end.thread ], [ %matchEndIdx.2, %for.end ] - %22 = phi i32 [ 0, %for.end.thread ], [ %spec.select151, %for.end ] - %reass.sub = sub i32 %matchEndIdx.1148, %conv + %reass.sub = sub i32 %matchEndIdx.1, %conv %sub112 = add i32 %reass.sub, -8 - %cond120 = tail call i32 @llvm.umax.i32(i32 %22, i32 %sub112) - ret i32 %cond120 + %22 = tail call i32 @llvm.umax.i32(i32 %cond109, i32 %sub112) + %spec.select142 = select i1 %cmp97, i32 %22, i32 %sub112 + ret i32 %spec.select142 } ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read) uwtable diff --git a/bench/zstd/optimized/zstd_v07.c.ll b/bench/zstd/optimized/zstd_v07.c.ll index c5a2cdd9067..12452ac5635 100644 --- a/bench/zstd/optimized/zstd_v07.c.ll +++ b/bench/zstd/optimized/zstd_v07.c.ll @@ -7668,7 +7668,6 @@ if.end.i50: ; preds = %if.end.i50.lr.ph, % %and.i52 = zext nneg i8 %11 to i32 %shl6.i = shl nuw nsw i32 %and.i52, 16 %add7.i53 = or disjoint i32 %add.i51, %shl6.i - %12 = zext nneg i32 %add7.i53 to i64 switch i8 %8, label %if.end20.i [ i8 3, label %if.end22.thread i8 2, label %if.end17 @@ -7679,10 +7678,11 @@ if.end22.thread: ; preds = %if.end.i50 br i1 %tobool38.not, label %while.end, label %return if.end20.i: ; preds = %if.end.i50 + %conv21.i = zext nneg i32 %add7.i53 to i64 br label %if.end17 if.end17: ; preds = %if.end.i50, %if.end20.i - %retval.0.i54.ph = phi i64 [ %12, %if.end20.i ], [ 1, %if.end.i50 ] + %retval.0.i54.ph = phi i64 [ %conv21.i, %if.end20.i ], [ 1, %if.end.i50 ] %add.ptr18 = getelementptr inbounds i8, ptr %ip.0128, i64 3 %sub19 = add i64 %remainingSize.0127, -3 %cmp20 = icmp ugt i64 %retval.0.i54.ph, %sub19 @@ -7710,8 +7710,9 @@ if.then2.i: ; preds = %if.end.i58 br label %if.end49 sw.bb32: ; preds = %if.end22 - %13 = load i8, ptr %add.ptr18, align 1 - %cmp.i60 = icmp ult i64 %sub.ptr.sub25, %12 + %12 = load i8, ptr %add.ptr18, align 1 + %13 = zext nneg i32 %add7.i53 to i64 + %cmp.i60 = icmp ult i64 %sub.ptr.sub25, %13 br i1 %cmp.i60, label %return, label %if.end.i61 if.end.i61: ; preds = %sw.bb32 @@ -7719,7 +7720,7 @@ if.end.i61: ; preds = %sw.bb32 br i1 %cmp1.not.i62, label %if.end49, label %if.then2.i63 if.then2.i63: ; preds = %if.end.i61 - tail call void @llvm.memset.p0.i64(ptr align 1 %op.0126, i8 %13, i64 range(i64 0, 4294967296) %12, i1 false) + tail call void @llvm.memset.p0.i64(ptr align 1 %op.0126, i8 %12, i64 range(i64 0, 4294967296) %13, i1 false) br label %if.end49 if.end45: ; preds = %if.end22 @@ -7728,7 +7729,7 @@ if.end45: ; preds = %if.end22 br i1 %cmp.i65, label %if.end49, label %return if.end49: ; preds = %if.then2.i, %if.end.i58, %if.then2.i63, %if.end.i61, %if.end45 - %decodedSize.0.ph108 = phi i64 [ %call26, %if.end45 ], [ %retval.0.i54.ph, %if.then2.i ], [ 0, %if.end.i58 ], [ %12, %if.then2.i63 ], [ 0, %if.end.i61 ] + %decodedSize.0.ph108 = phi i64 [ %call26, %if.end45 ], [ %retval.0.i54.ph, %if.then2.i ], [ 0, %if.end.i58 ], [ %13, %if.then2.i63 ], [ 0, %if.end.i61 ] %14 = load i32, ptr %checksumFlag.i, align 8 %tobool50.not = icmp eq i32 %14, 0 br i1 %tobool50.not, label %if.end53, label %if.then51 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..e2197cbf5b0 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/116073 # Please rebase manually # git fetch origin