From fbc8db518fc8148115951e313cb3f299969f06a5 Mon Sep 17 00:00:00 2001 From: dtcxzyw <15650457+dtcxzyw@users.noreply.github.com> Date: Sat, 21 Jun 2025 21:14:07 +0800 Subject: [PATCH 1/3] pre-commit: PR145105 --- scripts/setup_pre_commit_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..538752f367f 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/145105 export COMPTIME_MODE=0 # Please rebase manually From cd321a4d1d34cb220116224fb19116f974c75f93 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 21 Jun 2025 14:46:21 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/abc/optimized/absVta.ll | 977 +++++++++--------- bench/abc/optimized/cbaBlast.ll | 203 ++-- bench/abc/optimized/giaDup.ll | 676 ++++++------ bench/abc/optimized/giaIf.ll | 234 ++--- bench/abc/optimized/giaResub.ll | 242 +++-- bench/abc/optimized/giaResub2.ll | 348 +++---- bench/abc/optimized/ifDec16.ll | 428 ++++---- bench/abc/optimized/kitDsd.ll | 70 +- bench/abc/optimized/lpkMulti.ll | 253 +++-- bench/abc/optimized/wlcBlast.ll | 201 ++-- bench/abseil-cpp/optimized/charconv.ll | 8 +- bench/arrow/optimized/basic_decimal.ll | 20 +- bench/arrow/optimized/double-to-string.ll | 2 +- bench/boost/optimized/console_buffer.ll | 49 +- bench/c3c/optimized/file_utils.ll | 9 +- bench/casadi/optimized/qrqp.ll | 14 +- bench/clamav/optimized/str.ll | 5 +- bench/cvc5/optimized/cadical.ll | 4 +- bench/double_conversion/optimized/bignum.ll | 316 +++--- bench/eastl/optimized/TestDeque.ll | 16 +- bench/eastl/optimized/TestRingBuffer.ll | 98 +- bench/ffmpeg/optimized/aacsbr_fixed.ll | 835 +++++++-------- bench/ffmpeg/optimized/avf_showcwt.ll | 210 ++-- bench/ffmpeg/optimized/cbs.ll | 313 +++--- bench/ffmpeg/optimized/mvdec.ll | 36 +- bench/ffmpeg/optimized/network.ll | 132 +-- bench/ffmpeg/optimized/vf_atadenoise.ll | 111 +- bench/folly/optimized/File.ll | 32 +- bench/git/optimized/submodule.ll | 7 +- bench/gromacs/optimized/do_fit.ll | 417 ++++---- bench/libphonenumber/optimized/unicodetext.ll | 12 +- bench/libwebp/optimized/predictor_enc.ll | 149 +-- bench/lief/optimized/AArch64PAuth.ll | 24 +- bench/llama.cpp/optimized/llama-vocab.ll | 885 ++++++++-------- bench/llvm/optimized/LegalizerHelper.ll | 10 +- bench/luau/optimized/isocline.ll | 30 +- bench/lvgl/optimized/lv_draw_sw_mask.ll | 104 +- bench/miniaudio/optimized/unity.ll | 88 +- bench/ncnn/optimized/padding.ll | 18 +- bench/ncnn/optimized/padding_x86.ll | 611 +++++------ bench/oiio/optimized/tiffoutput.ll | 26 +- bench/openblas/optimized/dbdsqr.ll | 6 +- bench/opencv/optimized/coded_stream.ll | 80 +- bench/opencv/optimized/dxt.ll | 90 +- bench/openjdk/optimized/javaThread.ll | 30 +- bench/openssl/optimized/bio_b64.ll | 190 ++-- bench/openusd/optimized/bignum.ll | 322 +++--- bench/php/optimized/zend_ssa.ll | 10 +- bench/postgres/optimized/inv_api.ll | 190 ++-- bench/protobuf/optimized/coded_stream.ll | 24 +- bench/raylib/optimized/rtextures.ll | 22 +- bench/stb/optimized/stb_image_resize2.ll | 28 +- .../velox/optimized/DecimalVectorFunctions.ll | 96 +- bench/wolfssl/optimized/tls.ll | 80 +- bench/z3/optimized/nlarith_util.ll | 795 +++++++------- 55 files changed, 5111 insertions(+), 5075 deletions(-) diff --git a/bench/abc/optimized/absVta.ll b/bench/abc/optimized/absVta.ll index d4c2796b68b..335777d0680 100644 --- a/bench/abc/optimized/absVta.ll +++ b/bench/abc/optimized/absVta.ll @@ -5139,7 +5139,7 @@ Abc_Clock.exit: ; preds = %2, %36 55: ; preds = %53 %puts = call i32 @puts(ptr nonnull dereferenceable(1) @str) - br label %1189 + br label %1188 56: ; preds = %53 %57 = getelementptr inbounds nuw i8, ptr %0, i64 376 @@ -5163,7 +5163,7 @@ Abc_Clock.exit: ; preds = %2, %36 %65 = call ptr @Abc_CexMakeTriv(i32 noundef %.val, i32 noundef %64, i32 noundef 1, i32 noundef 0) #28 store ptr %65, ptr %57, align 8, !tbaa !174 %puts265 = call i32 @puts(ptr nonnull dereferenceable(1) @str.1) - br label %1189 + br label %1188 66: ; preds = %Abc_Clock.exit %67 = getelementptr inbounds nuw i8, ptr %0, i64 456 @@ -5540,7 +5540,7 @@ Vga_ManLoadSlice.exit: ; preds = %268, %261 %280 = sub nsw i64 %indvars.iv619, %indvars.iv %281 = getelementptr i8, ptr %279, i64 8 %.val280 = load ptr, ptr %281, align 8, !tbaa !14 - %282 = getelementptr inbounds ptr, ptr %.val280, i64 %280 + %282 = getelementptr inbounds nuw ptr, ptr %.val280, i64 %280 %283 = load ptr, ptr %282, align 8, !tbaa !19 %284 = getelementptr i8, ptr %283, i64 4 %.val1112.i318 = load i32, ptr %284, align 4, !tbaa !15 @@ -6714,610 +6714,609 @@ Vga_ManRollBack.exit: ; preds = %853 %868 = load ptr, ptr %84, align 8, !tbaa !55 %869 = load i32, ptr %868, align 8, !tbaa !178 %.not236 = icmp eq i32 %869, 0 - %870 = sext i32 %869 to i64 - %871 = icmp slt i64 %indvars.iv.next620, %870 - %or.cond266 = select i1 %.not236, i1 true, i1 %871 + %870 = icmp sgt i32 %869, %indvars + %or.cond266 = select i1 %.not236, i1 true, i1 %870 br i1 %or.cond266, label %.critedge, label %Vga_ManRollBack.exit.thread.loopexit594, !llvm.loop !199 Vga_ManRollBack.exit.thread.loopexit594: ; preds = %Abc_Clock.exit436, %Vga_ManRollBack.exit %.0219560.ph = phi i32 [ %164, %Abc_Clock.exit436 ], [ %indvars, %Vga_ManRollBack.exit ] - %872 = icmp eq i32 %672, -1 + %871 = icmp eq i32 %672, -1 br label %.loopexit656 Vga_ManRollBack.exit.thread: ; preds = %Gia_ObjIsRo.exit.thread.i450, %.lr.ph45.i, %.critedge.preheader.i, %723 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #28 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #28 - %873 = call ptr @Vga_ManDeriveCex(ptr noundef nonnull %83) - %874 = icmp eq ptr %873, null - br i1 %874, label %.thread, label %Vga_ManRollBack.exit.thread.thread + %872 = call ptr @Vga_ManDeriveCex(ptr noundef nonnull %83) + %873 = icmp eq ptr %872, null + br i1 %873, label %.thread, label %Vga_ManRollBack.exit.thread.thread .loopexit656: ; preds = %422, %._crit_edge.i, %867, %Vga_ManRollBack.exit.thread.loopexit594 - %.ph = phi i1 [ %872, %Vga_ManRollBack.exit.thread.loopexit594 ], [ true, %867 ], [ true, %._crit_edge.i ], [ true, %422 ] + %.ph = phi i1 [ %871, %Vga_ManRollBack.exit.thread.loopexit594 ], [ true, %867 ], [ true, %._crit_edge.i ], [ true, %422 ] %.0219560.ph640 = phi i32 [ %.0219560.ph, %Vga_ManRollBack.exit.thread.loopexit594 ], [ %164, %867 ], [ %164, %._crit_edge.i ], [ %164, %422 ] %.pre633644 = load ptr, ptr %84, align 8, !tbaa !55 - %875 = getelementptr inbounds nuw i8, ptr %.pre633644, i64 112 - %876 = load i32, ptr %875, align 8, !tbaa !150 - %877 = icmp ne i32 %876, 0 - %or.cond = and i1 %877, %.ph - br i1 %or.cond, label %878, label %.thread + %874 = getelementptr inbounds nuw i8, ptr %.pre633644, i64 112 + %875 = load i32, ptr %874, align 8, !tbaa !150 + %876 = icmp ne i32 %875, 0 + %or.cond = and i1 %876, %.ph + br i1 %or.cond, label %877, label %.thread -878: ; preds = %.loopexit656 +877: ; preds = %.loopexit656 %putchar251 = call i32 @putchar(i32 10) br label %.thread -.thread: ; preds = %494, %._crit_edge.i343, %124, %Vga_ManRollBack.exit.thread, %878, %.loopexit656 - %879 = phi i1 [ %.ph, %878 ], [ %.ph, %.loopexit656 ], [ false, %Vga_ManRollBack.exit.thread ], [ false, %._crit_edge.i343 ], [ undef, %124 ], [ false, %494 ] - %.0219560645650 = phi i32 [ %.0219560.ph640, %878 ], [ %.0219560.ph640, %.loopexit656 ], [ %164, %Vga_ManRollBack.exit.thread ], [ %164, %._crit_edge.i343 ], [ 0, %124 ], [ %164, %494 ] - %880 = getelementptr inbounds nuw i8, ptr %83, i64 112 - %881 = load ptr, ptr %880, align 8, !tbaa !130 - %882 = getelementptr i8, ptr %881, i64 4 - %.val278 = load i32, ptr %882, align 4, !tbaa !11 - %883 = icmp eq i32 %.val278, 0 - br i1 %883, label %884, label %885 - -884: ; preds = %.thread +.thread: ; preds = %494, %._crit_edge.i343, %124, %Vga_ManRollBack.exit.thread, %877, %.loopexit656 + %878 = phi i1 [ %.ph, %877 ], [ %.ph, %.loopexit656 ], [ false, %Vga_ManRollBack.exit.thread ], [ false, %._crit_edge.i343 ], [ undef, %124 ], [ false, %494 ] + %.0219560645650 = phi i32 [ %.0219560.ph640, %877 ], [ %.0219560.ph640, %.loopexit656 ], [ %164, %Vga_ManRollBack.exit.thread ], [ %164, %._crit_edge.i343 ], [ 0, %124 ], [ %164, %494 ] + %879 = getelementptr inbounds nuw i8, ptr %83, i64 112 + %880 = load ptr, ptr %879, align 8, !tbaa !130 + %881 = getelementptr i8, ptr %880, i64 4 + %.val278 = load i32, ptr %881, align 4, !tbaa !11 + %882 = icmp eq i32 %.val278, 0 + br i1 %882, label %883, label %884 + +883: ; preds = %.thread call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.35) br label %Vec_IntFreeP.exit473 -885: ; preds = %.thread - %886 = load ptr, ptr %67, align 8, !tbaa !160 - %887 = icmp eq ptr %886, null - br i1 %887, label %Vec_IntFreeP.exit, label %888 - -888: ; preds = %885 - %889 = getelementptr inbounds nuw i8, ptr %886, i64 8 - %890 = load ptr, ptr %889, align 8, !tbaa !3 - %.not.i467 = icmp eq ptr %890, null - br i1 %.not.i467, label %893, label %.thread.i - -.thread.i: ; preds = %888 - call void @free(ptr noundef nonnull %890) #28 - %891 = load ptr, ptr %67, align 8, !tbaa !160 - %892 = getelementptr inbounds nuw i8, ptr %891, i64 8 - store ptr null, ptr %892, align 8, !tbaa !3 - br label %893 - -893: ; preds = %.thread.i, %888 - %894 = phi ptr [ %891, %.thread.i ], [ %886, %888 ] - call void @free(ptr noundef nonnull %894) #28 +884: ; preds = %.thread + %885 = load ptr, ptr %67, align 8, !tbaa !160 + %886 = icmp eq ptr %885, null + br i1 %886, label %Vec_IntFreeP.exit, label %887 + +887: ; preds = %884 + %888 = getelementptr inbounds nuw i8, ptr %885, i64 8 + %889 = load ptr, ptr %888, align 8, !tbaa !3 + %.not.i467 = icmp eq ptr %889, null + br i1 %.not.i467, label %892, label %.thread.i + +.thread.i: ; preds = %887 + call void @free(ptr noundef nonnull %889) #28 + %890 = load ptr, ptr %67, align 8, !tbaa !160 + %891 = getelementptr inbounds nuw i8, ptr %890, i64 8 + store ptr null, ptr %891, align 8, !tbaa !3 + br label %892 + +892: ; preds = %.thread.i, %887 + %893 = phi ptr [ %890, %.thread.i ], [ %885, %887 ] + call void @free(ptr noundef nonnull %893) #28 store ptr null, ptr %67, align 8, !tbaa !160 - %.pre634 = load ptr, ptr %880, align 8, !tbaa !130 + %.pre634 = load ptr, ptr %879, align 8, !tbaa !130 br label %Vec_IntFreeP.exit -Vec_IntFreeP.exit: ; preds = %885, %893 - %895 = phi ptr [ %881, %885 ], [ %.pre634, %893 ] - %896 = call ptr @Gia_VtaFramesToAbs(ptr noundef %895) - store ptr %896, ptr %67, align 8, !tbaa !148 - %897 = load ptr, ptr %84, align 8, !tbaa !55 - br i1 %879, label %898, label %945 - -898: ; preds = %Vec_IntFreeP.exit - %899 = getelementptr inbounds nuw i8, ptr %897, i64 32 - %900 = load i32, ptr %899, align 8, !tbaa !175 - %.not252 = icmp eq i32 %900, 0 - br i1 %.not252, label %913, label %901 - -901: ; preds = %898 - %902 = call fastcc i64 @Abc_Clock() - %903 = getelementptr inbounds nuw i8, ptr %83, i64 120 - %904 = load ptr, ptr %903, align 8, !tbaa !66 - %905 = getelementptr inbounds nuw i8, ptr %904, i64 608 - %906 = load i64, ptr %905, align 8, !tbaa !176 - %.not253 = icmp slt i64 %902, %906 - br i1 %.not253, label %913, label %907 - -907: ; preds = %901 - %908 = load ptr, ptr %84, align 8, !tbaa !55 - %909 = getelementptr inbounds nuw i8, ptr %908, i64 32 - %910 = load i32, ptr %909, align 8, !tbaa !175 - %911 = getelementptr inbounds nuw i8, ptr %908, i64 128 - %912 = load i32, ptr %911, align 8, !tbaa !197 - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.36, i32 noundef %910, i32 noundef %.0219560645650, i32 noundef %912) +Vec_IntFreeP.exit: ; preds = %884, %892 + %894 = phi ptr [ %880, %884 ], [ %.pre634, %892 ] + %895 = call ptr @Gia_VtaFramesToAbs(ptr noundef %894) + store ptr %895, ptr %67, align 8, !tbaa !148 + %896 = load ptr, ptr %84, align 8, !tbaa !55 + br i1 %878, label %897, label %944 + +897: ; preds = %Vec_IntFreeP.exit + %898 = getelementptr inbounds nuw i8, ptr %896, i64 32 + %899 = load i32, ptr %898, align 8, !tbaa !175 + %.not252 = icmp eq i32 %899, 0 + br i1 %.not252, label %912, label %900 + +900: ; preds = %897 + %901 = call fastcc i64 @Abc_Clock() + %902 = getelementptr inbounds nuw i8, ptr %83, i64 120 + %903 = load ptr, ptr %902, align 8, !tbaa !66 + %904 = getelementptr inbounds nuw i8, ptr %903, i64 608 + %905 = load i64, ptr %904, align 8, !tbaa !176 + %.not253 = icmp slt i64 %901, %905 + br i1 %.not253, label %912, label %906 + +906: ; preds = %900 + %907 = load ptr, ptr %84, align 8, !tbaa !55 + %908 = getelementptr inbounds nuw i8, ptr %907, i64 32 + %909 = load i32, ptr %908, align 8, !tbaa !175 + %910 = getelementptr inbounds nuw i8, ptr %907, i64 128 + %911 = load i32, ptr %910, align 8, !tbaa !197 + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.36, i32 noundef %909, i32 noundef %.0219560645650, i32 noundef %911) br label %Vec_IntFreeP.exit473 -913: ; preds = %901, %898 - %914 = getelementptr inbounds nuw i8, ptr %1, i64 12 - %915 = load i32, ptr %914, align 4, !tbaa !179 - %.not254 = icmp eq i32 %915, 0 - br i1 %.not254, label %925, label %916 - -916: ; preds = %913 - %917 = getelementptr inbounds nuw i8, ptr %83, i64 120 - %918 = load ptr, ptr %917, align 8, !tbaa !66 - %919 = getelementptr i8, ptr %918, i64 560 - %.val283 = load i64, ptr %919, align 8, !tbaa !153 - %920 = trunc i64 %.val283 to i32 - %.not255 = icmp sgt i32 %915, %920 - br i1 %.not255, label %925, label %921 - -921: ; preds = %916 - %922 = load ptr, ptr %84, align 8, !tbaa !55 - %923 = getelementptr inbounds nuw i8, ptr %922, i64 128 - %924 = load i32, ptr %923, align 8, !tbaa !197 - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.37, i32 noundef %915, i32 noundef %.0219560645650, i32 noundef %924) +912: ; preds = %900, %897 + %913 = getelementptr inbounds nuw i8, ptr %1, i64 12 + %914 = load i32, ptr %913, align 4, !tbaa !179 + %.not254 = icmp eq i32 %914, 0 + br i1 %.not254, label %924, label %915 + +915: ; preds = %912 + %916 = getelementptr inbounds nuw i8, ptr %83, i64 120 + %917 = load ptr, ptr %916, align 8, !tbaa !66 + %918 = getelementptr i8, ptr %917, i64 560 + %.val283 = load i64, ptr %918, align 8, !tbaa !153 + %919 = trunc i64 %.val283 to i32 + %.not255 = icmp sgt i32 %914, %919 + br i1 %.not255, label %924, label %920 + +920: ; preds = %915 + %921 = load ptr, ptr %84, align 8, !tbaa !55 + %922 = getelementptr inbounds nuw i8, ptr %921, i64 128 + %923 = load i32, ptr %922, align 8, !tbaa !197 + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.37, i32 noundef %914, i32 noundef %.0219560645650, i32 noundef %923) br label %Vec_IntFreeP.exit473 -925: ; preds = %916, %913 - %926 = getelementptr inbounds nuw i8, ptr %83, i64 104 - %927 = load i32, ptr %926, align 8, !tbaa !128 - %928 = getelementptr i8, ptr %0, i64 64 - %.val.i468 = load ptr, ptr %928, align 8, !tbaa !54 - %929 = getelementptr i8, ptr %.val.i468, i64 4 - %.val.val.i469 = load i32, ptr %929, align 4, !tbaa !15 - %930 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %931 = load i32, ptr %930, align 8, !tbaa !121 - %932 = load ptr, ptr %44, align 8, !tbaa !91 - %933 = getelementptr i8, ptr %932, i64 4 - %.val.i.i470 = load i32, ptr %933, align 4, !tbaa !15 - %934 = add i32 %.val.i.i470, %.val.val.i469 - %935 = xor i32 %934, -1 - %936 = add i32 %931, %.val.val.i469 - %937 = add i32 %936, %935 - %938 = getelementptr inbounds nuw i8, ptr %1, i64 36 - %939 = load i32, ptr %938, align 4, !tbaa !180 - %940 = sub nsw i32 100, %939 - %941 = mul nsw i32 %937, %940 - %942 = sdiv i32 %941, 100 - %.not256 = icmp slt i32 %927, %942 - br i1 %.not256, label %944, label %943 - -943: ; preds = %925 - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.38, i32 noundef %939, i32 noundef %.0219560645650) +924: ; preds = %915, %912 + %925 = getelementptr inbounds nuw i8, ptr %83, i64 104 + %926 = load i32, ptr %925, align 8, !tbaa !128 + %927 = getelementptr i8, ptr %0, i64 64 + %.val.i468 = load ptr, ptr %927, align 8, !tbaa !54 + %928 = getelementptr i8, ptr %.val.i468, i64 4 + %.val.val.i469 = load i32, ptr %928, align 4, !tbaa !15 + %929 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %930 = load i32, ptr %929, align 8, !tbaa !121 + %931 = load ptr, ptr %44, align 8, !tbaa !91 + %932 = getelementptr i8, ptr %931, i64 4 + %.val.i.i470 = load i32, ptr %932, align 4, !tbaa !15 + %933 = add i32 %.val.i.i470, %.val.val.i469 + %934 = xor i32 %933, -1 + %935 = add i32 %930, %.val.val.i469 + %936 = add i32 %935, %934 + %937 = getelementptr inbounds nuw i8, ptr %1, i64 36 + %938 = load i32, ptr %937, align 4, !tbaa !180 + %939 = sub nsw i32 100, %938 + %940 = mul nsw i32 %936, %939 + %941 = sdiv i32 %940, 100 + %.not256 = icmp slt i32 %926, %941 + br i1 %.not256, label %943, label %942 + +942: ; preds = %924 + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.38, i32 noundef %938, i32 noundef %.0219560645650) br label %Vec_IntFreeP.exit473 -944: ; preds = %925 +943: ; preds = %924 call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.39, i32 noundef %.0219560645650) br label %Vec_IntFreeP.exit473 -945: ; preds = %Vec_IntFreeP.exit - %946 = getelementptr inbounds nuw i8, ptr %897, i64 120 - %947 = load i32, ptr %946, align 8, !tbaa !56 - %948 = add nsw i32 %947, 1 - store i32 %948, ptr %946, align 8, !tbaa !56 - %949 = getelementptr inbounds nuw i8, ptr %897, i64 128 - %950 = load i32, ptr %949, align 8, !tbaa !197 - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.40, i32 noundef %.0219560645650, i32 noundef %950) +944: ; preds = %Vec_IntFreeP.exit + %945 = getelementptr inbounds nuw i8, ptr %896, i64 120 + %946 = load i32, ptr %945, align 8, !tbaa !56 + %947 = add nsw i32 %946, 1 + store i32 %947, ptr %945, align 8, !tbaa !56 + %948 = getelementptr inbounds nuw i8, ptr %896, i64 128 + %949 = load i32, ptr %948, align 8, !tbaa !197 + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.40, i32 noundef %.0219560645650, i32 noundef %949) br label %Vec_IntFreeP.exit473 Vga_ManRollBack.exit.thread.thread: ; preds = %Abc_Clock.exit442, %Vga_ManRollBack.exit.thread - %.3507 = phi ptr [ %873, %Vga_ManRollBack.exit.thread ], [ %692, %Abc_Clock.exit442 ] - %951 = load ptr, ptr %84, align 8, !tbaa !55 - %952 = getelementptr inbounds nuw i8, ptr %951, i64 112 - %953 = load i32, ptr %952, align 8, !tbaa !150 - %.not248 = icmp eq i32 %953, 0 - br i1 %.not248, label %955, label %954 - -954: ; preds = %Vga_ManRollBack.exit.thread.thread + %.3507 = phi ptr [ %872, %Vga_ManRollBack.exit.thread ], [ %692, %Abc_Clock.exit442 ] + %950 = load ptr, ptr %84, align 8, !tbaa !55 + %951 = getelementptr inbounds nuw i8, ptr %950, i64 112 + %952 = load i32, ptr %951, align 8, !tbaa !150 + %.not248 = icmp eq i32 %952, 0 + br i1 %.not248, label %954, label %953 + +953: ; preds = %Vga_ManRollBack.exit.thread.thread %putchar = call i32 @putchar(i32 10) - br label %955 - -955: ; preds = %954, %Vga_ManRollBack.exit.thread.thread - %956 = load ptr, ptr %83, align 8, !tbaa !30 - %957 = getelementptr inbounds nuw i8, ptr %956, i64 376 - %958 = load ptr, ptr %957, align 8, !tbaa !174 - %.not249 = icmp eq ptr %958, null - br i1 %.not249, label %962, label %959 - -959: ; preds = %955 - call void @free(ptr noundef nonnull %958) #28 - %960 = load ptr, ptr %83, align 8, !tbaa !30 - %961 = getelementptr inbounds nuw i8, ptr %960, i64 376 - store ptr null, ptr %961, align 8, !tbaa !174 - br label %962 - -962: ; preds = %955, %959 - %963 = phi ptr [ %956, %955 ], [ %960, %959 ] - %964 = getelementptr inbounds nuw i8, ptr %963, i64 376 - store ptr %.3507, ptr %964, align 8, !tbaa !174 - %965 = call i32 @Gia_ManVerifyCex(ptr noundef nonnull %963, ptr noundef nonnull %.3507, i32 noundef 0) #28 - %.not250 = icmp eq i32 %965, 0 - br i1 %.not250, label %966, label %967 - -966: ; preds = %962 + br label %954 + +954: ; preds = %953, %Vga_ManRollBack.exit.thread.thread + %955 = load ptr, ptr %83, align 8, !tbaa !30 + %956 = getelementptr inbounds nuw i8, ptr %955, i64 376 + %957 = load ptr, ptr %956, align 8, !tbaa !174 + %.not249 = icmp eq ptr %957, null + br i1 %.not249, label %961, label %958 + +958: ; preds = %954 + call void @free(ptr noundef nonnull %957) #28 + %959 = load ptr, ptr %83, align 8, !tbaa !30 + %960 = getelementptr inbounds nuw i8, ptr %959, i64 376 + store ptr null, ptr %960, align 8, !tbaa !174 + br label %961 + +961: ; preds = %954, %958 + %962 = phi ptr [ %955, %954 ], [ %959, %958 ] + %963 = getelementptr inbounds nuw i8, ptr %962, i64 376 + store ptr %.3507, ptr %963, align 8, !tbaa !174 + %964 = call i32 @Gia_ManVerifyCex(ptr noundef nonnull %962, ptr noundef nonnull %.3507, i32 noundef 0) #28 + %.not250 = icmp eq i32 %964, 0 + br i1 %.not250, label %965, label %966 + +965: ; preds = %961 call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.41) - br label %967 + br label %966 -967: ; preds = %966, %962 +966: ; preds = %965, %961 call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.42, i32 noundef %164) - %968 = getelementptr inbounds nuw i8, ptr %.3507, i64 4 - %969 = load i32, ptr %968, align 4, !tbaa !60 - %970 = add nsw i32 %969, -1 - %971 = load ptr, ptr %84, align 8, !tbaa !55 - %972 = getelementptr inbounds nuw i8, ptr %971, i64 120 - store i32 %970, ptr %972, align 8, !tbaa !56 - %973 = load ptr, ptr %67, align 8, !tbaa !160 - %974 = icmp eq ptr %973, null - br i1 %974, label %Vec_IntFreeP.exit473, label %975 - -975: ; preds = %967 - %976 = getelementptr inbounds nuw i8, ptr %973, i64 8 - %977 = load ptr, ptr %976, align 8, !tbaa !3 - %.not.i471 = icmp eq ptr %977, null - br i1 %.not.i471, label %980, label %.thread.i472 - -.thread.i472: ; preds = %975 - call void @free(ptr noundef nonnull %977) #28 - %978 = load ptr, ptr %67, align 8, !tbaa !160 - %979 = getelementptr inbounds nuw i8, ptr %978, i64 8 - store ptr null, ptr %979, align 8, !tbaa !3 - br label %980 - -980: ; preds = %.thread.i472, %975 - %981 = phi ptr [ %978, %.thread.i472 ], [ %973, %975 ] - call void @free(ptr noundef nonnull %981) #28 + %967 = getelementptr inbounds nuw i8, ptr %.3507, i64 4 + %968 = load i32, ptr %967, align 4, !tbaa !60 + %969 = add nsw i32 %968, -1 + %970 = load ptr, ptr %84, align 8, !tbaa !55 + %971 = getelementptr inbounds nuw i8, ptr %970, i64 120 + store i32 %969, ptr %971, align 8, !tbaa !56 + %972 = load ptr, ptr %67, align 8, !tbaa !160 + %973 = icmp eq ptr %972, null + br i1 %973, label %Vec_IntFreeP.exit473, label %974 + +974: ; preds = %966 + %975 = getelementptr inbounds nuw i8, ptr %972, i64 8 + %976 = load ptr, ptr %975, align 8, !tbaa !3 + %.not.i471 = icmp eq ptr %976, null + br i1 %.not.i471, label %979, label %.thread.i472 + +.thread.i472: ; preds = %974 + call void @free(ptr noundef nonnull %976) #28 + %977 = load ptr, ptr %67, align 8, !tbaa !160 + %978 = getelementptr inbounds nuw i8, ptr %977, i64 8 + store ptr null, ptr %978, align 8, !tbaa !3 + br label %979 + +979: ; preds = %.thread.i472, %974 + %980 = phi ptr [ %977, %.thread.i472 ], [ %972, %974 ] + call void @free(ptr noundef nonnull %980) #28 store ptr null, ptr %67, align 8, !tbaa !160 br label %Vec_IntFreeP.exit473 -Vec_IntFreeP.exit473: ; preds = %980, %967, %884, %907, %943, %944, %921, %945 - %.0215 = phi i32 [ -1, %884 ], [ -1, %907 ], [ -1, %921 ], [ -1, %943 ], [ -1, %944 ], [ -1, %945 ], [ 0, %967 ], [ 0, %980 ] +Vec_IntFreeP.exit473: ; preds = %979, %966, %883, %906, %942, %943, %920, %944 + %.0215 = phi i32 [ -1, %883 ], [ -1, %906 ], [ -1, %920 ], [ -1, %942 ], [ -1, %943 ], [ -1, %944 ], [ 0, %966 ], [ 0, %979 ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #28 - %982 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %16) #28 - %983 = icmp slt i32 %982, 0 - br i1 %983, label %Abc_Clock.exit475, label %984 - -984: ; preds = %Vec_IntFreeP.exit473 - %985 = load i64, ptr %16, align 8, !tbaa !171 - %986 = mul nsw i64 %985, 1000000 - %987 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %988 = load i64, ptr %987, align 8, !tbaa !173 - %989 = sdiv i64 %988, 1000 - %990 = add nsw i64 %989, %986 + %981 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %16) #28 + %982 = icmp slt i32 %981, 0 + br i1 %982, label %Abc_Clock.exit475, label %983 + +983: ; preds = %Vec_IntFreeP.exit473 + %984 = load i64, ptr %16, align 8, !tbaa !171 + %985 = mul nsw i64 %984, 1000000 + %986 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %987 = load i64, ptr %986, align 8, !tbaa !173 + %988 = sdiv i64 %987, 1000 + %989 = add nsw i64 %988, %985 br label %Abc_Clock.exit475 -Abc_Clock.exit475: ; preds = %Vec_IntFreeP.exit473, %984 - %.0.i474 = phi i64 [ %990, %984 ], [ -1, %Vec_IntFreeP.exit473 ] +Abc_Clock.exit475: ; preds = %Vec_IntFreeP.exit473, %983 + %.0.i474 = phi i64 [ %989, %983 ], [ -1, %Vec_IntFreeP.exit473 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #28 - %991 = sub nsw i64 %.0.i474, %.0.i + %990 = sub nsw i64 %.0.i474, %.0.i call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.43) - %992 = sitofp i64 %991 to double - %993 = fdiv double %992, 1.000000e+06 - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.60, double noundef %993) - %994 = load ptr, ptr %84, align 8, !tbaa !55 - %995 = getelementptr inbounds nuw i8, ptr %994, i64 112 - %996 = load i32, ptr %995, align 8, !tbaa !150 - %.not257 = icmp eq i32 %996, 0 - br i1 %.not257, label %1186, label %997 - -997: ; preds = %Abc_Clock.exit475 + %991 = sitofp i64 %990 to double + %992 = fdiv double %991, 1.000000e+06 + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.60, double noundef %992) + %993 = load ptr, ptr %84, align 8, !tbaa !55 + %994 = getelementptr inbounds nuw i8, ptr %993, i64 112 + %995 = load i32, ptr %994, align 8, !tbaa !150 + %.not257 = icmp eq i32 %995, 0 + br i1 %.not257, label %1185, label %996 + +996: ; preds = %Abc_Clock.exit475 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #28 - %998 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %15) #28 - %999 = icmp slt i32 %998, 0 - br i1 %999, label %Abc_Clock.exit477, label %1000 - -1000: ; preds = %997 - %1001 = load i64, ptr %15, align 8, !tbaa !171 - %1002 = mul nsw i64 %1001, 1000000 - %1003 = getelementptr inbounds nuw i8, ptr %15, i64 8 - %1004 = load i64, ptr %1003, align 8, !tbaa !173 - %1005 = sdiv i64 %1004, 1000 - %1006 = add nsw i64 %1005, %1002 + %997 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %15) #28 + %998 = icmp slt i32 %997, 0 + br i1 %998, label %Abc_Clock.exit477, label %999 + +999: ; preds = %996 + %1000 = load i64, ptr %15, align 8, !tbaa !171 + %1001 = mul nsw i64 %1000, 1000000 + %1002 = getelementptr inbounds nuw i8, ptr %15, i64 8 + %1003 = load i64, ptr %1002, align 8, !tbaa !173 + %1004 = sdiv i64 %1003, 1000 + %1005 = add nsw i64 %1004, %1001 br label %Abc_Clock.exit477 -Abc_Clock.exit477: ; preds = %997, %1000 - %.0.i476 = phi i64 [ %1006, %1000 ], [ -1, %997 ] +Abc_Clock.exit477: ; preds = %996, %999 + %.0.i476 = phi i64 [ %1005, %999 ], [ -1, %996 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #28 - %1007 = getelementptr inbounds nuw i8, ptr %83, i64 144 - %1008 = load i64, ptr %1007, align 8, !tbaa !194 - %1009 = getelementptr inbounds nuw i8, ptr %83, i64 136 - %1010 = load i64, ptr %1009, align 8, !tbaa !195 - %1011 = getelementptr inbounds nuw i8, ptr %83, i64 152 - %1012 = load i64, ptr %1011, align 8, !tbaa !196 - %1013 = add i64 %.0.i, %1008 - %1014 = add i64 %1013, %1010 - %1015 = add i64 %1014, %1012 - %1016 = sub i64 %.0.i476, %1015 - %1017 = getelementptr inbounds nuw i8, ptr %83, i64 160 - store i64 %1016, ptr %1017, align 8, !tbaa !200 + %1006 = getelementptr inbounds nuw i8, ptr %83, i64 144 + %1007 = load i64, ptr %1006, align 8, !tbaa !194 + %1008 = getelementptr inbounds nuw i8, ptr %83, i64 136 + %1009 = load i64, ptr %1008, align 8, !tbaa !195 + %1010 = getelementptr inbounds nuw i8, ptr %83, i64 152 + %1011 = load i64, ptr %1010, align 8, !tbaa !196 + %1012 = add i64 %.0.i, %1007 + %1013 = add i64 %1012, %1009 + %1014 = add i64 %1013, %1011 + %1015 = sub i64 %.0.i476, %1014 + %1016 = getelementptr inbounds nuw i8, ptr %83, i64 160 + store i64 %1015, ptr %1016, align 8, !tbaa !200 call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.44) - %1018 = load i64, ptr %1007, align 8, !tbaa !194 - %1019 = sitofp i64 %1018 to double - %1020 = fdiv double %1019, 1.000000e+06 + %1017 = load i64, ptr %1006, align 8, !tbaa !194 + %1018 = sitofp i64 %1017 to double + %1019 = fdiv double %1018, 1.000000e+06 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #28 - %1021 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %14) #28 - %1022 = icmp slt i32 %1021, 0 - br i1 %1022, label %Abc_Clock.exit479, label %1023 - -1023: ; preds = %Abc_Clock.exit477 - %1024 = load i64, ptr %14, align 8, !tbaa !171 - %1025 = mul nsw i64 %1024, 1000000 - %1026 = getelementptr inbounds nuw i8, ptr %14, i64 8 - %1027 = load i64, ptr %1026, align 8, !tbaa !173 - %1028 = sdiv i64 %1027, 1000 - %1029 = add nsw i64 %1028, %1025 + %1020 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %14) #28 + %1021 = icmp slt i32 %1020, 0 + br i1 %1021, label %Abc_Clock.exit479, label %1022 + +1022: ; preds = %Abc_Clock.exit477 + %1023 = load i64, ptr %14, align 8, !tbaa !171 + %1024 = mul nsw i64 %1023, 1000000 + %1025 = getelementptr inbounds nuw i8, ptr %14, i64 8 + %1026 = load i64, ptr %1025, align 8, !tbaa !173 + %1027 = sdiv i64 %1026, 1000 + %1028 = add nsw i64 %1027, %1024 br label %Abc_Clock.exit479 -Abc_Clock.exit479: ; preds = %Abc_Clock.exit477, %1023 - %.0.i478 = phi i64 [ %1029, %1023 ], [ -1, %Abc_Clock.exit477 ] +Abc_Clock.exit479: ; preds = %Abc_Clock.exit477, %1022 + %.0.i478 = phi i64 [ %1028, %1022 ], [ -1, %Abc_Clock.exit477 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #28 %.not258 = icmp eq i64 %.0.i478, %.0.i - br i1 %.not258, label %1046, label %1030 + br i1 %.not258, label %1045, label %1029 -1030: ; preds = %Abc_Clock.exit479 - %1031 = load i64, ptr %1007, align 8, !tbaa !194 - %1032 = sitofp i64 %1031 to double - %1033 = fmul double %1032, 1.000000e+02 +1029: ; preds = %Abc_Clock.exit479 + %1030 = load i64, ptr %1006, align 8, !tbaa !194 + %1031 = sitofp i64 %1030 to double + %1032 = fmul double %1031, 1.000000e+02 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #28 - %1034 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %13) #28 - %1035 = icmp slt i32 %1034, 0 - br i1 %1035, label %Abc_Clock.exit481, label %1036 - -1036: ; preds = %1030 - %1037 = load i64, ptr %13, align 8, !tbaa !171 - %1038 = mul nsw i64 %1037, 1000000 - %1039 = getelementptr inbounds nuw i8, ptr %13, i64 8 - %1040 = load i64, ptr %1039, align 8, !tbaa !173 - %1041 = sdiv i64 %1040, 1000 - %1042 = add nsw i64 %1041, %1038 + %1033 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %13) #28 + %1034 = icmp slt i32 %1033, 0 + br i1 %1034, label %Abc_Clock.exit481, label %1035 + +1035: ; preds = %1029 + %1036 = load i64, ptr %13, align 8, !tbaa !171 + %1037 = mul nsw i64 %1036, 1000000 + %1038 = getelementptr inbounds nuw i8, ptr %13, i64 8 + %1039 = load i64, ptr %1038, align 8, !tbaa !173 + %1040 = sdiv i64 %1039, 1000 + %1041 = add nsw i64 %1040, %1037 br label %Abc_Clock.exit481 -Abc_Clock.exit481: ; preds = %1030, %1036 - %.0.i480 = phi i64 [ %1042, %1036 ], [ -1, %1030 ] +Abc_Clock.exit481: ; preds = %1029, %1035 + %.0.i480 = phi i64 [ %1041, %1035 ], [ -1, %1029 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #28 - %1043 = sub nsw i64 %.0.i480, %.0.i - %1044 = sitofp i64 %1043 to double - %1045 = fdiv double %1033, %1044 - br label %1046 - -1046: ; preds = %Abc_Clock.exit479, %Abc_Clock.exit481 - %1047 = phi double [ %1045, %Abc_Clock.exit481 ], [ 0.000000e+00, %Abc_Clock.exit479 ] - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1020, double noundef %1047) + %1042 = sub nsw i64 %.0.i480, %.0.i + %1043 = sitofp i64 %1042 to double + %1044 = fdiv double %1032, %1043 + br label %1045 + +1045: ; preds = %Abc_Clock.exit479, %Abc_Clock.exit481 + %1046 = phi double [ %1044, %Abc_Clock.exit481 ], [ 0.000000e+00, %Abc_Clock.exit479 ] + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1019, double noundef %1046) call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.46) - %1048 = load i64, ptr %1009, align 8, !tbaa !195 - %1049 = sitofp i64 %1048 to double - %1050 = fdiv double %1049, 1.000000e+06 + %1047 = load i64, ptr %1008, align 8, !tbaa !195 + %1048 = sitofp i64 %1047 to double + %1049 = fdiv double %1048, 1.000000e+06 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #28 - %1051 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %12) #28 - %1052 = icmp slt i32 %1051, 0 - br i1 %1052, label %Abc_Clock.exit483, label %1053 - -1053: ; preds = %1046 - %1054 = load i64, ptr %12, align 8, !tbaa !171 - %1055 = mul nsw i64 %1054, 1000000 - %1056 = getelementptr inbounds nuw i8, ptr %12, i64 8 - %1057 = load i64, ptr %1056, align 8, !tbaa !173 - %1058 = sdiv i64 %1057, 1000 - %1059 = add nsw i64 %1058, %1055 + %1050 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %12) #28 + %1051 = icmp slt i32 %1050, 0 + br i1 %1051, label %Abc_Clock.exit483, label %1052 + +1052: ; preds = %1045 + %1053 = load i64, ptr %12, align 8, !tbaa !171 + %1054 = mul nsw i64 %1053, 1000000 + %1055 = getelementptr inbounds nuw i8, ptr %12, i64 8 + %1056 = load i64, ptr %1055, align 8, !tbaa !173 + %1057 = sdiv i64 %1056, 1000 + %1058 = add nsw i64 %1057, %1054 br label %Abc_Clock.exit483 -Abc_Clock.exit483: ; preds = %1046, %1053 - %.0.i482 = phi i64 [ %1059, %1053 ], [ -1, %1046 ] +Abc_Clock.exit483: ; preds = %1045, %1052 + %.0.i482 = phi i64 [ %1058, %1052 ], [ -1, %1045 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #28 %.not259 = icmp eq i64 %.0.i482, %.0.i - br i1 %.not259, label %1076, label %1060 + br i1 %.not259, label %1075, label %1059 -1060: ; preds = %Abc_Clock.exit483 - %1061 = load i64, ptr %1009, align 8, !tbaa !195 - %1062 = sitofp i64 %1061 to double - %1063 = fmul double %1062, 1.000000e+02 +1059: ; preds = %Abc_Clock.exit483 + %1060 = load i64, ptr %1008, align 8, !tbaa !195 + %1061 = sitofp i64 %1060 to double + %1062 = fmul double %1061, 1.000000e+02 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #28 - %1064 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %11) #28 - %1065 = icmp slt i32 %1064, 0 - br i1 %1065, label %Abc_Clock.exit485, label %1066 - -1066: ; preds = %1060 - %1067 = load i64, ptr %11, align 8, !tbaa !171 - %1068 = mul nsw i64 %1067, 1000000 - %1069 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %1070 = load i64, ptr %1069, align 8, !tbaa !173 - %1071 = sdiv i64 %1070, 1000 - %1072 = add nsw i64 %1071, %1068 + %1063 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %11) #28 + %1064 = icmp slt i32 %1063, 0 + br i1 %1064, label %Abc_Clock.exit485, label %1065 + +1065: ; preds = %1059 + %1066 = load i64, ptr %11, align 8, !tbaa !171 + %1067 = mul nsw i64 %1066, 1000000 + %1068 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %1069 = load i64, ptr %1068, align 8, !tbaa !173 + %1070 = sdiv i64 %1069, 1000 + %1071 = add nsw i64 %1070, %1067 br label %Abc_Clock.exit485 -Abc_Clock.exit485: ; preds = %1060, %1066 - %.0.i484 = phi i64 [ %1072, %1066 ], [ -1, %1060 ] +Abc_Clock.exit485: ; preds = %1059, %1065 + %.0.i484 = phi i64 [ %1071, %1065 ], [ -1, %1059 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #28 - %1073 = sub nsw i64 %.0.i484, %.0.i - %1074 = sitofp i64 %1073 to double - %1075 = fdiv double %1063, %1074 - br label %1076 - -1076: ; preds = %Abc_Clock.exit483, %Abc_Clock.exit485 - %1077 = phi double [ %1075, %Abc_Clock.exit485 ], [ 0.000000e+00, %Abc_Clock.exit483 ] - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1050, double noundef %1077) + %1072 = sub nsw i64 %.0.i484, %.0.i + %1073 = sitofp i64 %1072 to double + %1074 = fdiv double %1062, %1073 + br label %1075 + +1075: ; preds = %Abc_Clock.exit483, %Abc_Clock.exit485 + %1076 = phi double [ %1074, %Abc_Clock.exit485 ], [ 0.000000e+00, %Abc_Clock.exit483 ] + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1049, double noundef %1076) call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.47) - %1078 = load i64, ptr %1011, align 8, !tbaa !196 - %1079 = sitofp i64 %1078 to double - %1080 = fdiv double %1079, 1.000000e+06 + %1077 = load i64, ptr %1010, align 8, !tbaa !196 + %1078 = sitofp i64 %1077 to double + %1079 = fdiv double %1078, 1.000000e+06 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #28 - %1081 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %10) #28 - %1082 = icmp slt i32 %1081, 0 - br i1 %1082, label %Abc_Clock.exit487, label %1083 - -1083: ; preds = %1076 - %1084 = load i64, ptr %10, align 8, !tbaa !171 - %1085 = mul nsw i64 %1084, 1000000 - %1086 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %1087 = load i64, ptr %1086, align 8, !tbaa !173 - %1088 = sdiv i64 %1087, 1000 - %1089 = add nsw i64 %1088, %1085 + %1080 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %10) #28 + %1081 = icmp slt i32 %1080, 0 + br i1 %1081, label %Abc_Clock.exit487, label %1082 + +1082: ; preds = %1075 + %1083 = load i64, ptr %10, align 8, !tbaa !171 + %1084 = mul nsw i64 %1083, 1000000 + %1085 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %1086 = load i64, ptr %1085, align 8, !tbaa !173 + %1087 = sdiv i64 %1086, 1000 + %1088 = add nsw i64 %1087, %1084 br label %Abc_Clock.exit487 -Abc_Clock.exit487: ; preds = %1076, %1083 - %.0.i486 = phi i64 [ %1089, %1083 ], [ -1, %1076 ] +Abc_Clock.exit487: ; preds = %1075, %1082 + %.0.i486 = phi i64 [ %1088, %1082 ], [ -1, %1075 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #28 %.not260 = icmp eq i64 %.0.i486, %.0.i - br i1 %.not260, label %1106, label %1090 + br i1 %.not260, label %1105, label %1089 -1090: ; preds = %Abc_Clock.exit487 - %1091 = load i64, ptr %1011, align 8, !tbaa !196 - %1092 = sitofp i64 %1091 to double - %1093 = fmul double %1092, 1.000000e+02 +1089: ; preds = %Abc_Clock.exit487 + %1090 = load i64, ptr %1010, align 8, !tbaa !196 + %1091 = sitofp i64 %1090 to double + %1092 = fmul double %1091, 1.000000e+02 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #28 - %1094 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %9) #28 - %1095 = icmp slt i32 %1094, 0 - br i1 %1095, label %Abc_Clock.exit489, label %1096 - -1096: ; preds = %1090 - %1097 = load i64, ptr %9, align 8, !tbaa !171 - %1098 = mul nsw i64 %1097, 1000000 - %1099 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %1100 = load i64, ptr %1099, align 8, !tbaa !173 - %1101 = sdiv i64 %1100, 1000 - %1102 = add nsw i64 %1101, %1098 + %1093 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %9) #28 + %1094 = icmp slt i32 %1093, 0 + br i1 %1094, label %Abc_Clock.exit489, label %1095 + +1095: ; preds = %1089 + %1096 = load i64, ptr %9, align 8, !tbaa !171 + %1097 = mul nsw i64 %1096, 1000000 + %1098 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %1099 = load i64, ptr %1098, align 8, !tbaa !173 + %1100 = sdiv i64 %1099, 1000 + %1101 = add nsw i64 %1100, %1097 br label %Abc_Clock.exit489 -Abc_Clock.exit489: ; preds = %1090, %1096 - %.0.i488 = phi i64 [ %1102, %1096 ], [ -1, %1090 ] +Abc_Clock.exit489: ; preds = %1089, %1095 + %.0.i488 = phi i64 [ %1101, %1095 ], [ -1, %1089 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #28 - %1103 = sub nsw i64 %.0.i488, %.0.i - %1104 = sitofp i64 %1103 to double - %1105 = fdiv double %1093, %1104 - br label %1106 - -1106: ; preds = %Abc_Clock.exit487, %Abc_Clock.exit489 - %1107 = phi double [ %1105, %Abc_Clock.exit489 ], [ 0.000000e+00, %Abc_Clock.exit487 ] - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1080, double noundef %1107) + %1102 = sub nsw i64 %.0.i488, %.0.i + %1103 = sitofp i64 %1102 to double + %1104 = fdiv double %1092, %1103 + br label %1105 + +1105: ; preds = %Abc_Clock.exit487, %Abc_Clock.exit489 + %1106 = phi double [ %1104, %Abc_Clock.exit489 ], [ 0.000000e+00, %Abc_Clock.exit487 ] + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1079, double noundef %1106) call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.48) - %1108 = load i64, ptr %1017, align 8, !tbaa !200 - %1109 = sitofp i64 %1108 to double - %1110 = fdiv double %1109, 1.000000e+06 + %1107 = load i64, ptr %1016, align 8, !tbaa !200 + %1108 = sitofp i64 %1107 to double + %1109 = fdiv double %1108, 1.000000e+06 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #28 - %1111 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %8) #28 - %1112 = icmp slt i32 %1111, 0 - br i1 %1112, label %Abc_Clock.exit491, label %1113 - -1113: ; preds = %1106 - %1114 = load i64, ptr %8, align 8, !tbaa !171 - %1115 = mul nsw i64 %1114, 1000000 - %1116 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %1117 = load i64, ptr %1116, align 8, !tbaa !173 - %1118 = sdiv i64 %1117, 1000 - %1119 = add nsw i64 %1118, %1115 + %1110 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %8) #28 + %1111 = icmp slt i32 %1110, 0 + br i1 %1111, label %Abc_Clock.exit491, label %1112 + +1112: ; preds = %1105 + %1113 = load i64, ptr %8, align 8, !tbaa !171 + %1114 = mul nsw i64 %1113, 1000000 + %1115 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %1116 = load i64, ptr %1115, align 8, !tbaa !173 + %1117 = sdiv i64 %1116, 1000 + %1118 = add nsw i64 %1117, %1114 br label %Abc_Clock.exit491 -Abc_Clock.exit491: ; preds = %1106, %1113 - %.0.i490 = phi i64 [ %1119, %1113 ], [ -1, %1106 ] +Abc_Clock.exit491: ; preds = %1105, %1112 + %.0.i490 = phi i64 [ %1118, %1112 ], [ -1, %1105 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #28 %.not261 = icmp eq i64 %.0.i490, %.0.i - br i1 %.not261, label %1136, label %1120 + br i1 %.not261, label %1135, label %1119 -1120: ; preds = %Abc_Clock.exit491 - %1121 = load i64, ptr %1017, align 8, !tbaa !200 - %1122 = sitofp i64 %1121 to double - %1123 = fmul double %1122, 1.000000e+02 +1119: ; preds = %Abc_Clock.exit491 + %1120 = load i64, ptr %1016, align 8, !tbaa !200 + %1121 = sitofp i64 %1120 to double + %1122 = fmul double %1121, 1.000000e+02 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #28 - %1124 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %7) #28 - %1125 = icmp slt i32 %1124, 0 - br i1 %1125, label %Abc_Clock.exit493, label %1126 - -1126: ; preds = %1120 - %1127 = load i64, ptr %7, align 8, !tbaa !171 - %1128 = mul nsw i64 %1127, 1000000 - %1129 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %1130 = load i64, ptr %1129, align 8, !tbaa !173 - %1131 = sdiv i64 %1130, 1000 - %1132 = add nsw i64 %1131, %1128 + %1123 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %7) #28 + %1124 = icmp slt i32 %1123, 0 + br i1 %1124, label %Abc_Clock.exit493, label %1125 + +1125: ; preds = %1119 + %1126 = load i64, ptr %7, align 8, !tbaa !171 + %1127 = mul nsw i64 %1126, 1000000 + %1128 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %1129 = load i64, ptr %1128, align 8, !tbaa !173 + %1130 = sdiv i64 %1129, 1000 + %1131 = add nsw i64 %1130, %1127 br label %Abc_Clock.exit493 -Abc_Clock.exit493: ; preds = %1120, %1126 - %.0.i492 = phi i64 [ %1132, %1126 ], [ -1, %1120 ] +Abc_Clock.exit493: ; preds = %1119, %1125 + %.0.i492 = phi i64 [ %1131, %1125 ], [ -1, %1119 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #28 - %1133 = sub nsw i64 %.0.i492, %.0.i - %1134 = sitofp i64 %1133 to double - %1135 = fdiv double %1123, %1134 - br label %1136 - -1136: ; preds = %Abc_Clock.exit491, %Abc_Clock.exit493 - %1137 = phi double [ %1135, %Abc_Clock.exit493 ], [ 0.000000e+00, %Abc_Clock.exit491 ] - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1110, double noundef %1137) + %1132 = sub nsw i64 %.0.i492, %.0.i + %1133 = sitofp i64 %1132 to double + %1134 = fdiv double %1122, %1133 + br label %1135 + +1135: ; preds = %Abc_Clock.exit491, %Abc_Clock.exit493 + %1136 = phi double [ %1134, %Abc_Clock.exit493 ], [ 0.000000e+00, %Abc_Clock.exit491 ] + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1109, double noundef %1136) call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.49) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #28 - %1138 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %6) #28 - %1139 = icmp slt i32 %1138, 0 - br i1 %1139, label %Abc_Clock.exit495, label %1140 - -1140: ; preds = %1136 - %1141 = load i64, ptr %6, align 8, !tbaa !171 - %1142 = mul nsw i64 %1141, 1000000 - %1143 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %1144 = load i64, ptr %1143, align 8, !tbaa !173 - %1145 = sdiv i64 %1144, 1000 - %1146 = add nsw i64 %1145, %1142 + %1137 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %6) #28 + %1138 = icmp slt i32 %1137, 0 + br i1 %1138, label %Abc_Clock.exit495, label %1139 + +1139: ; preds = %1135 + %1140 = load i64, ptr %6, align 8, !tbaa !171 + %1141 = mul nsw i64 %1140, 1000000 + %1142 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %1143 = load i64, ptr %1142, align 8, !tbaa !173 + %1144 = sdiv i64 %1143, 1000 + %1145 = add nsw i64 %1144, %1141 br label %Abc_Clock.exit495 -Abc_Clock.exit495: ; preds = %1136, %1140 - %.0.i494 = phi i64 [ %1146, %1140 ], [ -1, %1136 ] +Abc_Clock.exit495: ; preds = %1135, %1139 + %.0.i494 = phi i64 [ %1145, %1139 ], [ -1, %1135 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #28 - %1147 = sub nsw i64 %.0.i494, %.0.i - %1148 = sitofp i64 %1147 to double - %1149 = fdiv double %1148, 1.000000e+06 + %1146 = sub nsw i64 %.0.i494, %.0.i + %1147 = sitofp i64 %1146 to double + %1148 = fdiv double %1147, 1.000000e+06 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #28 - %1150 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %5) #28 - %1151 = icmp slt i32 %1150, 0 - br i1 %1151, label %Abc_Clock.exit497, label %1152 - -1152: ; preds = %Abc_Clock.exit495 - %1153 = load i64, ptr %5, align 8, !tbaa !171 - %1154 = mul nsw i64 %1153, 1000000 - %1155 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %1156 = load i64, ptr %1155, align 8, !tbaa !173 - %1157 = sdiv i64 %1156, 1000 - %1158 = add nsw i64 %1157, %1154 + %1149 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %5) #28 + %1150 = icmp slt i32 %1149, 0 + br i1 %1150, label %Abc_Clock.exit497, label %1151 + +1151: ; preds = %Abc_Clock.exit495 + %1152 = load i64, ptr %5, align 8, !tbaa !171 + %1153 = mul nsw i64 %1152, 1000000 + %1154 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %1155 = load i64, ptr %1154, align 8, !tbaa !173 + %1156 = sdiv i64 %1155, 1000 + %1157 = add nsw i64 %1156, %1153 br label %Abc_Clock.exit497 -Abc_Clock.exit497: ; preds = %Abc_Clock.exit495, %1152 - %.0.i496 = phi i64 [ %1158, %1152 ], [ -1, %Abc_Clock.exit495 ] +Abc_Clock.exit497: ; preds = %Abc_Clock.exit495, %1151 + %.0.i496 = phi i64 [ %1157, %1151 ], [ -1, %Abc_Clock.exit495 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #28 %.not262 = icmp eq i64 %.0.i496, %.0.i - br i1 %.not262, label %1184, label %1159 + br i1 %.not262, label %1183, label %1158 -1159: ; preds = %Abc_Clock.exit497 +1158: ; preds = %Abc_Clock.exit497 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #28 - %1160 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %4) #28 - %1161 = icmp slt i32 %1160, 0 - br i1 %1161, label %Abc_Clock.exit499, label %1162 - -1162: ; preds = %1159 - %1163 = load i64, ptr %4, align 8, !tbaa !171 - %1164 = mul nsw i64 %1163, 1000000 - %1165 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %1166 = load i64, ptr %1165, align 8, !tbaa !173 - %1167 = sdiv i64 %1166, 1000 - %1168 = add nsw i64 %1167, %1164 + %1159 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %4) #28 + %1160 = icmp slt i32 %1159, 0 + br i1 %1160, label %Abc_Clock.exit499, label %1161 + +1161: ; preds = %1158 + %1162 = load i64, ptr %4, align 8, !tbaa !171 + %1163 = mul nsw i64 %1162, 1000000 + %1164 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %1165 = load i64, ptr %1164, align 8, !tbaa !173 + %1166 = sdiv i64 %1165, 1000 + %1167 = add nsw i64 %1166, %1163 br label %Abc_Clock.exit499 -Abc_Clock.exit499: ; preds = %1159, %1162 - %.0.i498 = phi i64 [ %1168, %1162 ], [ -1, %1159 ] +Abc_Clock.exit499: ; preds = %1158, %1161 + %.0.i498 = phi i64 [ %1167, %1161 ], [ -1, %1158 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #28 - %1169 = sub nsw i64 %.0.i498, %.0.i - %1170 = sitofp i64 %1169 to double - %1171 = fmul double %1170, 1.000000e+02 + %1168 = sub nsw i64 %.0.i498, %.0.i + %1169 = sitofp i64 %1168 to double + %1170 = fmul double %1169, 1.000000e+02 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #28 - %1172 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %3) #28 - %1173 = icmp slt i32 %1172, 0 - br i1 %1173, label %Abc_Clock.exit501, label %1174 - -1174: ; preds = %Abc_Clock.exit499 - %1175 = load i64, ptr %3, align 8, !tbaa !171 - %1176 = mul nsw i64 %1175, 1000000 - %1177 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %1178 = load i64, ptr %1177, align 8, !tbaa !173 - %1179 = sdiv i64 %1178, 1000 - %1180 = add nsw i64 %1179, %1176 + %1171 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %3) #28 + %1172 = icmp slt i32 %1171, 0 + br i1 %1172, label %Abc_Clock.exit501, label %1173 + +1173: ; preds = %Abc_Clock.exit499 + %1174 = load i64, ptr %3, align 8, !tbaa !171 + %1175 = mul nsw i64 %1174, 1000000 + %1176 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %1177 = load i64, ptr %1176, align 8, !tbaa !173 + %1178 = sdiv i64 %1177, 1000 + %1179 = add nsw i64 %1178, %1175 br label %Abc_Clock.exit501 -Abc_Clock.exit501: ; preds = %Abc_Clock.exit499, %1174 - %.0.i500 = phi i64 [ %1180, %1174 ], [ -1, %Abc_Clock.exit499 ] +Abc_Clock.exit501: ; preds = %Abc_Clock.exit499, %1173 + %.0.i500 = phi i64 [ %1179, %1173 ], [ -1, %Abc_Clock.exit499 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #28 - %1181 = sub nsw i64 %.0.i500, %.0.i - %1182 = sitofp i64 %1181 to double - %1183 = fdiv double %1171, %1182 - br label %1184 - -1184: ; preds = %Abc_Clock.exit497, %Abc_Clock.exit501 - %1185 = phi double [ %1183, %Abc_Clock.exit501 ], [ 0.000000e+00, %Abc_Clock.exit497 ] - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1149, double noundef %1185) + %1180 = sub nsw i64 %.0.i500, %.0.i + %1181 = sitofp i64 %1180 to double + %1182 = fdiv double %1170, %1181 + br label %1183 + +1183: ; preds = %Abc_Clock.exit497, %Abc_Clock.exit501 + %1184 = phi double [ %1182, %Abc_Clock.exit501 ], [ 0.000000e+00, %Abc_Clock.exit497 ] + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1148, double noundef %1184) call void @Gia_VtaPrintMemory(ptr noundef nonnull %83) - br label %1186 + br label %1185 -1186: ; preds = %1184, %Abc_Clock.exit475 +1185: ; preds = %1183, %Abc_Clock.exit475 call void @Vga_ManStop(ptr noundef nonnull %83) - %1187 = load ptr, ptr @stdout, align 8, !tbaa !97 - %1188 = call i32 @fflush(ptr noundef %1187) - br label %1189 + %1186 = load ptr, ptr @stdout, align 8, !tbaa !97 + %1187 = call i32 @fflush(ptr noundef %1186) + br label %1188 -1189: ; preds = %1186, %60, %55 - %.0 = phi i32 [ 0, %60 ], [ 1, %55 ], [ %.0215, %1186 ] +1188: ; preds = %1185, %60, %55 + %.0 = phi i32 [ 0, %60 ], [ 1, %55 ], [ %.0215, %1185 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #28 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #28 ret i32 %.0 diff --git a/bench/abc/optimized/cbaBlast.ll b/bench/abc/optimized/cbaBlast.ll index 7e5d2366fab..554d24a0c1d 100644 --- a/bench/abc/optimized/cbaBlast.ll +++ b/bench/abc/optimized/cbaBlast.ll @@ -2330,153 +2330,154 @@ define void @Cba_BlastDivider(ptr noundef %0, ptr noundef readonly captures(none %14 = add nsw i32 %2, -1 %15 = add nsw i64 %9, -1 %16 = zext nneg i32 %14 to i64 + %17 = zext nneg i32 %14 to i64 %wide.trip.count = zext nneg i32 %2 to i64 %wide.trip.count150 = zext nneg i32 %2 to i64 br label %.preheader120 .preheader120: ; preds = %.preheader120.lr.ph, %.loopexit %indvars.iv152 = phi i64 [ %15, %.preheader120.lr.ph ], [ %indvars.iv.next153, %.loopexit ] - %17 = sub nuw nsw i64 %16, %indvars.iv152 - %18 = icmp sgt i64 %indvars.iv152, 0 - br i1 %18, label %.lr.ph, label %.lr.ph129 + %18 = sub nuw nsw i64 %17, %indvars.iv152 + %19 = icmp sgt i64 %indvars.iv152, 0 + br i1 %19, label %.lr.ph, label %.lr.ph129 -19: ; preds = %.lr.ph +20: ; preds = %.lr.ph %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %20 = icmp sgt i64 %indvars.iv.next, %17 - br i1 %20, label %.lr.ph, label %.lr.ph129, !llvm.loop !63 - -.lr.ph: ; preds = %.preheader120, %19 - %indvars.iv = phi i64 [ %indvars.iv.next, %19 ], [ %15, %.preheader120 ] - %.0105122 = phi i32 [ %23, %19 ], [ 0, %.preheader120 ] - %21 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv - %22 = load i32, ptr %21, align 4, !tbaa !11 - %23 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.0105122, i32 noundef %22) #21 - %24 = icmp eq i32 %23, 1 - br i1 %24, label %.thread, label %19 + %21 = icmp sgt i64 %indvars.iv.next, %18 + br i1 %21, label %.lr.ph, label %.lr.ph129, !llvm.loop !63 + +.lr.ph: ; preds = %.preheader120, %20 + %indvars.iv = phi i64 [ %indvars.iv.next, %20 ], [ %15, %.preheader120 ] + %.0105122 = phi i32 [ %24, %20 ], [ 0, %.preheader120 ] + %22 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv + %23 = load i32, ptr %22, align 4, !tbaa !11 + %24 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.0105122, i32 noundef %23) #21 + %25 = icmp eq i32 %24, 1 + br i1 %25, label %.thread, label %20 .thread: ; preds = %.lr.ph - %25 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 - store i32 0, ptr %25, align 4, !tbaa !11 + %26 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 + store i32 0, ptr %26, align 4, !tbaa !11 br label %.loopexit -.lr.ph129: ; preds = %19, %.preheader120 - %.promoted.ph = phi i32 [ 0, %.preheader120 ], [ %23, %19 ] - %26 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 - br label %27 +.lr.ph129: ; preds = %20, %.preheader120 + %.promoted.ph = phi i32 [ 0, %.preheader120 ], [ %24, %20 ] + %27 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 + br label %28 -27: ; preds = %.lr.ph129, %33 - %indvars.iv141 = phi i64 [ %15, %.lr.ph129 ], [ %indvars.iv.next142, %33 ] - %28 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %39, %33 ] - %.2127 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %42, %33 ] +28: ; preds = %.lr.ph129, %34 + %indvars.iv141 = phi i64 [ %16, %.lr.ph129 ], [ %indvars.iv.next142, %34 ] + %29 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %40, %34 ] + %.2127 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %43, %34 ] %.not117 = icmp slt i64 %indvars.iv141, %indvars.iv152 - br i1 %.not117, label %33, label %29 + br i1 %.not117, label %34, label %30 -29: ; preds = %27 - %30 = sub nsw i64 %indvars.iv141, %indvars.iv152 - %31 = getelementptr inbounds i32, ptr %3, i64 %30 - %32 = load i32, ptr %31, align 4, !tbaa !11 - br label %33 +30: ; preds = %28 + %31 = sub nsw i64 %indvars.iv141, %indvars.iv152 + %32 = getelementptr inbounds nuw i32, ptr %3, i64 %31 + %33 = load i32, ptr %32, align 4, !tbaa !11 + br label %34 -33: ; preds = %27, %29 - %34 = phi i32 [ %32, %29 ], [ 0, %27 ] - %35 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv141 - %36 = load i32, ptr %35, align 4, !tbaa !11 - %37 = xor i32 %36, 1 - %38 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %34, i32 noundef %37) #21 - %39 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.2127, i32 noundef %28, i32 noundef %38) #21 - %40 = load i32, ptr %35, align 4, !tbaa !11 - %41 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %34, i32 noundef %40) #21 - %42 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.2127, i32 noundef %41) #21 +34: ; preds = %28, %30 + %35 = phi i32 [ %33, %30 ], [ 0, %28 ] + %36 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv141 + %37 = load i32, ptr %36, align 4, !tbaa !11 + %38 = xor i32 %37, 1 + %39 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %35, i32 noundef %38) #21 + %40 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.2127, i32 noundef %29, i32 noundef %39) #21 + %41 = load i32, ptr %36, align 4, !tbaa !11 + %42 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %35, i32 noundef %41) #21 + %43 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.2127, i32 noundef %42) #21 %indvars.iv.next142 = add nsw i64 %indvars.iv141, -1 - %43 = icmp slt i64 %indvars.iv141, 1 - %44 = icmp eq i32 %42, 1 - %or.cond = select i1 %43, i1 true, i1 %44 - br i1 %or.cond, label %45, label %27, !llvm.loop !64 - -45: ; preds = %33 - %46 = xor i32 %39, 1 - store i32 %46, ptr %26, align 4, !tbaa !11 - %47 = icmp eq i32 %39, 1 - br i1 %47, label %.loopexit, label %.lr.ph133 - -.lr.ph133: ; preds = %45, %56 - %indvars.iv144 = phi i64 [ %indvars.iv.next145, %56 ], [ 0, %45 ] - %.0132 = phi i32 [ %61, %56 ], [ 0, %45 ] - %48 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv144 - %49 = load i32, ptr %48, align 4, !tbaa !11 - %50 = xor i32 %49, 1 - %51 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.0132, i32 noundef %50, i32 noundef %49) #21 + %44 = icmp slt i64 %indvars.iv141, 1 + %45 = icmp eq i32 %43, 1 + %or.cond = select i1 %44, i1 true, i1 %45 + br i1 %or.cond, label %46, label %28, !llvm.loop !64 + +46: ; preds = %34 + %47 = xor i32 %40, 1 + store i32 %47, ptr %27, align 4, !tbaa !11 + %48 = icmp eq i32 %40, 1 + br i1 %48, label %.loopexit, label %.lr.ph133 + +.lr.ph133: ; preds = %46, %57 + %indvars.iv144 = phi i64 [ %indvars.iv.next145, %57 ], [ 0, %46 ] + %.0132 = phi i32 [ %62, %57 ], [ 0, %46 ] + %49 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv144 + %50 = load i32, ptr %49, align 4, !tbaa !11 + %51 = xor i32 %50, 1 + %52 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.0132, i32 noundef %51, i32 noundef %50) #21 %.not118 = icmp slt i64 %indvars.iv144, %indvars.iv152 - br i1 %.not118, label %56, label %52 + br i1 %.not118, label %57, label %53 -52: ; preds = %.lr.ph133 - %53 = sub nsw i64 %indvars.iv144, %indvars.iv152 - %54 = getelementptr inbounds i32, ptr %3, i64 %53 - %55 = load i32, ptr %54, align 4, !tbaa !11 - br label %56 - -56: ; preds = %.lr.ph133, %52 - %57 = phi i32 [ %55, %52 ], [ 0, %.lr.ph133 ] - %58 = load i32, ptr %48, align 4, !tbaa !11 - %59 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %.0132, i32 noundef %57) #21 - %60 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.0132, i32 noundef %57) #21 - %61 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %58, i32 noundef %59, i32 noundef %60) #21 - %62 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %51, i32 noundef %57) #21 - %63 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv144 - store i32 %62, ptr %63, align 4, !tbaa !11 +53: ; preds = %.lr.ph133 + %54 = sub nsw i64 %indvars.iv144, %indvars.iv152 + %55 = getelementptr inbounds nuw i32, ptr %3, i64 %54 + %56 = load i32, ptr %55, align 4, !tbaa !11 + br label %57 + +57: ; preds = %.lr.ph133, %53 + %58 = phi i32 [ %56, %53 ], [ 0, %.lr.ph133 ] + %59 = load i32, ptr %49, align 4, !tbaa !11 + %60 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %.0132, i32 noundef %58) #21 + %61 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.0132, i32 noundef %58) #21 + %62 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %59, i32 noundef %60, i32 noundef %61) #21 + %63 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %52, i32 noundef %58) #21 + %64 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv144 + store i32 %63, ptr %64, align 4, !tbaa !11 %indvars.iv.next145 = add nuw nsw i64 %indvars.iv144, 1 %exitcond.not = icmp eq i64 %indvars.iv.next145, %wide.trip.count br i1 %exitcond.not, label %._crit_edge134, label %.lr.ph133, !llvm.loop !65 -._crit_edge134: ; preds = %56 - %64 = icmp eq i32 %39, 0 - br i1 %64, label %65, label %.lr.ph136 +._crit_edge134: ; preds = %57 + %65 = icmp eq i32 %40, 0 + br i1 %65, label %66, label %.lr.ph136 -65: ; preds = %._crit_edge134 - %66 = tail call ptr @Cba_VecCopy(ptr noundef %6, ptr noundef nonnull %12, i32 noundef %2) +66: ; preds = %._crit_edge134 + %67 = tail call ptr @Cba_VecCopy(ptr noundef %6, ptr noundef nonnull %12, i32 noundef %2) br label %.loopexit .lr.ph136: ; preds = %._crit_edge134, %.lr.ph136 %indvars.iv147 = phi i64 [ %indvars.iv.next148, %.lr.ph136 ], [ 0, %._crit_edge134 ] - %67 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv147 - %68 = load i32, ptr %67, align 4, !tbaa !11 - %69 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv147 - %70 = load i32, ptr %69, align 4, !tbaa !11 - %71 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %46, i32 noundef %68, i32 noundef %70) #21 - store i32 %71, ptr %69, align 4, !tbaa !11 + %68 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv147 + %69 = load i32, ptr %68, align 4, !tbaa !11 + %70 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv147 + %71 = load i32, ptr %70, align 4, !tbaa !11 + %72 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %47, i32 noundef %69, i32 noundef %71) #21 + store i32 %72, ptr %70, align 4, !tbaa !11 %indvars.iv.next148 = add nuw nsw i64 %indvars.iv147, 1 %exitcond151.not = icmp eq i64 %indvars.iv.next148, %wide.trip.count150 br i1 %exitcond151.not, label %.loopexit, label %.lr.ph136, !llvm.loop !66 -.loopexit: ; preds = %.lr.ph136, %.thread, %65, %45 +.loopexit: ; preds = %.lr.ph136, %.thread, %66, %46 %indvars.iv.next153 = add nsw i64 %indvars.iv152, -1 - br i1 %18, label %.preheader120, label %._crit_edge139, !llvm.loop !67 + br i1 %19, label %.preheader120, label %._crit_edge139, !llvm.loop !67 ._crit_edge139: ; preds = %.loopexit, %7 %.not = icmp eq ptr %12, null - br i1 %.not, label %73, label %72 + br i1 %.not, label %74, label %73 -72: ; preds = %._crit_edge139 +73: ; preds = %._crit_edge139 tail call void @free(ptr noundef nonnull %12) #21 - br label %73 + br label %74 -73: ; preds = %._crit_edge139, %72 +74: ; preds = %._crit_edge139, %73 %.not115 = icmp eq i32 %5, 0 - br i1 %.not115, label %76, label %74 + br i1 %.not115, label %77, label %75 -74: ; preds = %73 - %75 = tail call ptr @Cba_VecCopy(ptr noundef %6, ptr noundef %11, i32 noundef %2) - br label %76 +75: ; preds = %74 + %76 = tail call ptr @Cba_VecCopy(ptr noundef %6, ptr noundef %11, i32 noundef %2) + br label %77 -76: ; preds = %74, %73 +77: ; preds = %75, %74 %.not116 = icmp eq ptr %11, null - br i1 %.not116, label %78, label %77 + br i1 %.not116, label %79, label %78 -77: ; preds = %76 +78: ; preds = %77 tail call void @free(ptr noundef nonnull %11) #21 - br label %78 + br label %79 -78: ; preds = %76, %77 +79: ; preds = %77, %78 ret void } diff --git a/bench/abc/optimized/giaDup.ll b/bench/abc/optimized/giaDup.ll index 794cbd21713..5f74235ff4e 100644 --- a/bench/abc/optimized/giaDup.ll +++ b/bench/abc/optimized/giaDup.ll @@ -20066,8 +20066,8 @@ define ptr @Gia_ManMiterInverse(ptr noundef %0, ptr noundef %1, i32 noundef %2, %.val144.sink = load ptr, ptr %23, align 8, !tbaa !12 br label %.lr.ph208.split -.lr.ph208.split: ; preds = %.lr.ph208.split.preheader, %147 - %indvars.iv225 = phi i64 [ 0, %.lr.ph208.split.preheader ], [ %indvars.iv.next226, %147 ] +.lr.ph208.split: ; preds = %.lr.ph208.split.preheader, %149 + %indvars.iv225 = phi i64 [ 0, %.lr.ph208.split.preheader ], [ %indvars.iv.next226, %149 ] %137 = getelementptr inbounds nuw i32, ptr %.val147.val, i64 %indvars.iv225 %138 = load i32, ptr %137, align 4, !tbaa !11 %139 = sext i32 %138 to i64 @@ -20079,415 +20079,417 @@ define ptr @Gia_ManMiterInverse(ptr noundef %0, ptr noundef %1, i32 noundef %2, %142 = getelementptr i8, ptr %.val145, i64 8 %.val145.val = load ptr, ptr %142, align 8, !tbaa !10 %143 = getelementptr inbounds nuw i32, ptr %.val145.val, i64 %indvars.iv225 - br label %147 + br label %149 144: ; preds = %.lr.ph208.split - %145 = sub nsw i64 %indvars.iv225, %136 + %145 = trunc nuw nsw i64 %indvars.iv225 to i32 + %146 = sub nsw i32 %145, %9 %.val153.val = load ptr, ptr %135, align 8, !tbaa !10 - %146 = getelementptr inbounds i32, ptr %.val153.val, i64 %145 - br label %147 + %147 = zext nneg i32 %146 to i64 + %148 = getelementptr inbounds nuw i32, ptr %.val153.val, i64 %147 + br label %149 -147: ; preds = %141, %144 - %.sink245.in = phi ptr [ %143, %141 ], [ %146, %144 ] +149: ; preds = %141, %144 + %.sink245.in = phi ptr [ %143, %141 ], [ %148, %144 ] %.sink245 = load i32, ptr %.sink245.in, align 4, !tbaa !11 - %148 = sext i32 %.sink245 to i64 - %149 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val144.sink, i64 %148, i32 1 - %.sink = load i32, ptr %149, align 4, !tbaa !31 - %150 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val146, i64 %139, i32 1 - store i32 %.sink, ptr %150, align 4, !tbaa !31 + %150 = sext i32 %.sink245 to i64 + %151 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val144.sink, i64 %150, i32 1 + %.sink = load i32, ptr %151, align 4, !tbaa !31 + %152 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val146, i64 %139, i32 1 + store i32 %.sink, ptr %152, align 4, !tbaa !31 %indvars.iv.next226 = add nuw nsw i64 %indvars.iv225, 1 %exitcond229.not = icmp eq i64 %indvars.iv.next226, %wide.trip.count228 br i1 %exitcond229.not, label %.critedge6, label %.lr.ph208.split, !llvm.loop !329 -.critedge6: ; preds = %147, %.lr.ph208, %.critedge4 - %151 = load i32, ptr %19, align 8, !tbaa !36 - %152 = icmp sgt i32 %151, 0 - br i1 %152, label %.lr.ph211, label %.critedge8 +.critedge6: ; preds = %149, %.lr.ph208, %.critedge4 + %153 = load i32, ptr %19, align 8, !tbaa !36 + %154 = icmp sgt i32 %153, 0 + br i1 %154, label %.lr.ph211, label %.critedge8 .lr.ph211: ; preds = %.critedge6 - %153 = getelementptr i8, ptr %21, i64 32 - %154 = getelementptr inbounds nuw i8, ptr %21, i64 56 - br label %155 + %155 = getelementptr i8, ptr %21, i64 32 + %156 = getelementptr inbounds nuw i8, ptr %21, i64 56 + br label %157 -155: ; preds = %.lr.ph211, %216 - %indvars.iv230 = phi i64 [ 0, %.lr.ph211 ], [ %indvars.iv.next231, %216 ] +157: ; preds = %.lr.ph211, %218 + %indvars.iv230 = phi i64 [ 0, %.lr.ph211 ], [ %indvars.iv.next231, %218 ] %.val136 = load ptr, ptr %25, align 8, !tbaa !12 - %156 = getelementptr inbounds nuw %struct.Gia_Obj_t_, ptr %.val136, i64 %indvars.iv230 + %158 = getelementptr inbounds nuw %struct.Gia_Obj_t_, ptr %.val136, i64 %indvars.iv230 %.not123 = icmp eq ptr %.val136, null - br i1 %.not123, label %.critedge8, label %157 - -157: ; preds = %155 - %.val163 = load i64, ptr %156, align 4 - %158 = and i64 %.val163, 2147483648 - %.not.i172 = icmp eq i64 %158, 0 - %159 = and i64 %.val163, 536870911 - %160 = icmp ne i64 %159, 536870911 - %narrow.i173 = and i1 %.not.i172, %160 - br i1 %narrow.i173, label %161, label %216 - -161: ; preds = %157 - %162 = trunc i64 %.val163 to i32 - %163 = and i32 %162, 536870911 - %164 = lshr i64 %.val163, 32 - %165 = trunc nuw i64 %164 to i32 - %166 = and i32 %165, 536870911 - %167 = icmp eq i32 %163, %166 - %.not.i174 = icmp ne i32 %163, 536870911 - %or.cond.not.i175 = and i1 %.not.i174, %167 - %168 = sub nsw i64 0, %159 - %169 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %156, i64 %168, i32 1 - %170 = load i32, ptr %169, align 4, !tbaa !31 - %171 = lshr i32 %162, 29 - br i1 %or.cond.not.i175, label %172, label %203 - -172: ; preds = %161 - %173 = xor i32 %170, %171 - %174 = tail call fastcc ptr @Gia_ManAppendObj(ptr noundef nonnull %21) - %.val11.i178 = load ptr, ptr %153, align 8, !tbaa !12 - %175 = ptrtoint ptr %174 to i64 - %176 = ptrtoint ptr %.val11.i178 to i64 - %177 = sub i64 %175, %176 - %178 = sdiv exact i64 %177, 12 - %179 = trunc i64 %178 to i32 - %180 = lshr i32 %170, 1 - %181 = sub i32 %179, %180 - %182 = load i64, ptr %174, align 4 - %183 = and i32 %181, 536870911 - %184 = zext nneg i32 %183 to i64 - %185 = shl nuw nsw i64 %184, 32 - %186 = and i64 %182, -4611686015206162432 - %187 = or disjoint i64 %185, %186 - %188 = and i32 %173, 1 - %189 = zext nneg i32 %188 to i64 - %190 = shl nuw nsw i64 %189, 61 - %191 = or disjoint i64 %187, %190 - %192 = shl nuw nsw i32 %188, 29 - %193 = zext nneg i32 %192 to i64 - %194 = or disjoint i64 %191, %193 - %195 = or disjoint i64 %194, %184 - store i64 %195, ptr %174, align 4 - %196 = load i32, ptr %154, align 8, !tbaa !100 - %197 = add nsw i32 %196, 1 - store i32 %197, ptr %154, align 8, !tbaa !100 - %.val.i179 = load ptr, ptr %153, align 8, !tbaa !12 - %198 = ptrtoint ptr %.val.i179 to i64 - %199 = sub i64 %175, %198 - %200 = sdiv exact i64 %199, 12 - %201 = trunc i64 %200 to i32 - %202 = shl i32 %201, 1 + br i1 %.not123, label %.critedge8, label %159 + +159: ; preds = %157 + %.val163 = load i64, ptr %158, align 4 + %160 = and i64 %.val163, 2147483648 + %.not.i172 = icmp eq i64 %160, 0 + %161 = and i64 %.val163, 536870911 + %162 = icmp ne i64 %161, 536870911 + %narrow.i173 = and i1 %.not.i172, %162 + br i1 %narrow.i173, label %163, label %218 + +163: ; preds = %159 + %164 = trunc i64 %.val163 to i32 + %165 = and i32 %164, 536870911 + %166 = lshr i64 %.val163, 32 + %167 = trunc nuw i64 %166 to i32 + %168 = and i32 %167, 536870911 + %169 = icmp eq i32 %165, %168 + %.not.i174 = icmp ne i32 %165, 536870911 + %or.cond.not.i175 = and i1 %.not.i174, %169 + %170 = sub nsw i64 0, %161 + %171 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %158, i64 %170, i32 1 + %172 = load i32, ptr %171, align 4, !tbaa !31 + %173 = lshr i32 %164, 29 + br i1 %or.cond.not.i175, label %174, label %205 + +174: ; preds = %163 + %175 = xor i32 %172, %173 + %176 = tail call fastcc ptr @Gia_ManAppendObj(ptr noundef nonnull %21) + %.val11.i178 = load ptr, ptr %155, align 8, !tbaa !12 + %177 = ptrtoint ptr %176 to i64 + %178 = ptrtoint ptr %.val11.i178 to i64 + %179 = sub i64 %177, %178 + %180 = sdiv exact i64 %179, 12 + %181 = trunc i64 %180 to i32 + %182 = lshr i32 %172, 1 + %183 = sub i32 %181, %182 + %184 = load i64, ptr %176, align 4 + %185 = and i32 %183, 536870911 + %186 = zext nneg i32 %185 to i64 + %187 = shl nuw nsw i64 %186, 32 + %188 = and i64 %184, -4611686015206162432 + %189 = or disjoint i64 %187, %188 + %190 = and i32 %175, 1 + %191 = zext nneg i32 %190 to i64 + %192 = shl nuw nsw i64 %191, 61 + %193 = or disjoint i64 %189, %192 + %194 = shl nuw nsw i32 %190, 29 + %195 = zext nneg i32 %194 to i64 + %196 = or disjoint i64 %193, %195 + %197 = or disjoint i64 %196, %186 + store i64 %197, ptr %176, align 4 + %198 = load i32, ptr %156, align 8, !tbaa !100 + %199 = add nsw i32 %198, 1 + store i32 %199, ptr %156, align 8, !tbaa !100 + %.val.i179 = load ptr, ptr %155, align 8, !tbaa !12 + %200 = ptrtoint ptr %.val.i179 to i64 + %201 = sub i64 %177, %200 + %202 = sdiv exact i64 %201, 12 + %203 = trunc i64 %202 to i32 + %204 = shl i32 %203, 1 br label %.sink.split246 -203: ; preds = %161 - %204 = and i32 %171, 1 - %205 = xor i32 %170, %204 - %206 = and i64 %164, 536870911 - %207 = sub nsw i64 0, %206 - %208 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %156, i64 %207, i32 1 - %209 = load i32, ptr %208, align 4, !tbaa !31 - %210 = lshr i64 %.val163, 61 - %211 = trunc nuw nsw i64 %210 to i32 - %212 = and i32 %211, 1 - %213 = xor i32 %209, %212 - %214 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef nonnull %21, i32 noundef %205, i32 noundef %213) +205: ; preds = %163 + %206 = and i32 %173, 1 + %207 = xor i32 %172, %206 + %208 = and i64 %166, 536870911 + %209 = sub nsw i64 0, %208 + %210 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %158, i64 %209, i32 1 + %211 = load i32, ptr %210, align 4, !tbaa !31 + %212 = lshr i64 %.val163, 61 + %213 = trunc nuw nsw i64 %212 to i32 + %214 = and i32 %213, 1 + %215 = xor i32 %211, %214 + %216 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef nonnull %21, i32 noundef %207, i32 noundef %215) br label %.sink.split246 -.sink.split246: ; preds = %172, %203 - %.sink247 = phi i32 [ %214, %203 ], [ %202, %172 ] - %215 = getelementptr inbounds nuw i8, ptr %156, i64 8 - store i32 %.sink247, ptr %215, align 4, !tbaa !31 - br label %216 +.sink.split246: ; preds = %174, %205 + %.sink247 = phi i32 [ %216, %205 ], [ %204, %174 ] + %217 = getelementptr inbounds nuw i8, ptr %158, i64 8 + store i32 %.sink247, ptr %217, align 4, !tbaa !31 + br label %218 -216: ; preds = %.sink.split246, %157 +218: ; preds = %.sink.split246, %159 %indvars.iv.next231 = add nuw nsw i64 %indvars.iv230, 1 - %217 = load i32, ptr %19, align 8, !tbaa !36 - %218 = sext i32 %217 to i64 - %219 = icmp slt i64 %indvars.iv.next231, %218 - br i1 %219, label %155, label %.critedge8, !llvm.loop !330 - -.critedge8: ; preds = %155, %216, %.critedge6 - %220 = load ptr, ptr %12, align 8, !tbaa !47 - %221 = getelementptr i8, ptr %220, i64 4 - %.val213 = load i32, ptr %221, align 4, !tbaa !3 - %222 = icmp sgt i32 %.val213, 0 - br i1 %222, label %.lr.ph215, label %.critedge10 + %219 = load i32, ptr %19, align 8, !tbaa !36 + %220 = sext i32 %219 to i64 + %221 = icmp slt i64 %indvars.iv.next231, %220 + br i1 %221, label %157, label %.critedge8, !llvm.loop !330 + +.critedge8: ; preds = %157, %218, %.critedge6 + %222 = load ptr, ptr %12, align 8, !tbaa !47 + %223 = getelementptr i8, ptr %222, i64 4 + %.val213 = load i32, ptr %223, align 4, !tbaa !3 + %224 = icmp sgt i32 %.val213, 0 + br i1 %224, label %.lr.ph215, label %.critedge10 .lr.ph215: ; preds = %.critedge8 %.not126 = icmp eq i32 %2, 0 - %223 = sext i32 %9 to i64 + %225 = sext i32 %9 to i64 br i1 %.not126, label %.lr.ph215.split.us, label %.lr.ph215.split -.lr.ph215.split.us: ; preds = %.lr.ph215, %225 - %indvars.iv236 = phi i64 [ %indvars.iv.next237, %225 ], [ 0, %.lr.ph215 ] - %224 = phi ptr [ %249, %225 ], [ %220, %.lr.ph215 ] +.lr.ph215.split.us: ; preds = %.lr.ph215, %227 + %indvars.iv236 = phi i64 [ %indvars.iv.next237, %227 ], [ 0, %.lr.ph215 ] + %226 = phi ptr [ %251, %227 ], [ %222, %.lr.ph215 ] %.val150.us = load ptr, ptr %25, align 8, !tbaa !12 %.not124.us = icmp eq ptr %.val150.us, null - br i1 %.not124.us, label %.critedge10, label %225 - -225: ; preds = %.lr.ph215.split.us - %226 = getelementptr i8, ptr %224, i64 8 - %.val151.val.us = load ptr, ptr %226, align 8, !tbaa !10 - %227 = getelementptr inbounds nuw i32, ptr %.val151.val.us, i64 %indvars.iv236 - %228 = load i32, ptr %227, align 4, !tbaa !11 - %229 = sext i32 %228 to i64 - %230 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val150.us, i64 %229 - %231 = load i64, ptr %230, align 4 - %232 = and i64 %231, 536870911 - %233 = sub nsw i64 0, %232 - %234 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %230, i64 %233, i32 1 - %235 = load i32, ptr %234, align 4, !tbaa !31 - %236 = trunc i64 %231 to i32 - %237 = lshr i32 %236, 29 - %238 = and i32 %237, 1 - %239 = xor i32 %238, %235 + br i1 %.not124.us, label %.critedge10, label %227 + +227: ; preds = %.lr.ph215.split.us + %228 = getelementptr i8, ptr %226, i64 8 + %.val151.val.us = load ptr, ptr %228, align 8, !tbaa !10 + %229 = getelementptr inbounds nuw i32, ptr %.val151.val.us, i64 %indvars.iv236 + %230 = load i32, ptr %229, align 4, !tbaa !11 + %231 = sext i32 %230 to i64 + %232 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val150.us, i64 %231 + %233 = load i64, ptr %232, align 4 + %234 = and i64 %233, 536870911 + %235 = sub nsw i64 0, %234 + %236 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %232, i64 %235, i32 1 + %237 = load i32, ptr %236, align 4, !tbaa !31 + %238 = trunc i64 %233 to i32 + %239 = lshr i32 %238, 29 + %240 = and i32 %239, 1 + %241 = xor i32 %240, %237 %.val140.us = load ptr, ptr %23, align 8, !tbaa !12 %.val141.us = load ptr, ptr %10, align 8, !tbaa !45 - %240 = getelementptr i8, ptr %.val141.us, i64 8 - %.val141.val.us = load ptr, ptr %240, align 8, !tbaa !10 - %241 = getelementptr i32, ptr %.val141.val.us, i64 %indvars.iv236 - %242 = getelementptr i32, ptr %241, i64 %223 - %243 = load i32, ptr %242, align 4, !tbaa !11 - %244 = sext i32 %243 to i64 - %245 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val140.us, i64 %244, i32 1 - %246 = load i32, ptr %245, align 4, !tbaa !31 - %247 = tail call i32 @Gia_ManHashXor(ptr noundef nonnull %21, i32 noundef %239, i32 noundef %246) #31 - %248 = tail call fastcc i32 @Gia_ManAppendCo(ptr noundef nonnull %21, i32 noundef %247) + %242 = getelementptr i8, ptr %.val141.us, i64 8 + %.val141.val.us = load ptr, ptr %242, align 8, !tbaa !10 + %243 = getelementptr i32, ptr %.val141.val.us, i64 %indvars.iv236 + %244 = getelementptr i32, ptr %243, i64 %225 + %245 = load i32, ptr %244, align 4, !tbaa !11 + %246 = sext i32 %245 to i64 + %247 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val140.us, i64 %246, i32 1 + %248 = load i32, ptr %247, align 4, !tbaa !31 + %249 = tail call i32 @Gia_ManHashXor(ptr noundef nonnull %21, i32 noundef %241, i32 noundef %248) #31 + %250 = tail call fastcc i32 @Gia_ManAppendCo(ptr noundef nonnull %21, i32 noundef %249) %indvars.iv.next237 = add nuw nsw i64 %indvars.iv236, 1 - %249 = load ptr, ptr %12, align 8, !tbaa !47 - %250 = getelementptr i8, ptr %249, i64 4 - %.val.us = load i32, ptr %250, align 4, !tbaa !3 - %251 = sext i32 %.val.us to i64 - %252 = icmp slt i64 %indvars.iv.next237, %251 - br i1 %252, label %.lr.ph215.split.us, label %.critedge10, !llvm.loop !331 - -.lr.ph215.split: ; preds = %.lr.ph215, %254 - %indvars.iv233 = phi i64 [ %indvars.iv.next234, %254 ], [ 0, %.lr.ph215 ] - %253 = phi ptr [ %278, %254 ], [ %220, %.lr.ph215 ] + %251 = load ptr, ptr %12, align 8, !tbaa !47 + %252 = getelementptr i8, ptr %251, i64 4 + %.val.us = load i32, ptr %252, align 4, !tbaa !3 + %253 = sext i32 %.val.us to i64 + %254 = icmp slt i64 %indvars.iv.next237, %253 + br i1 %254, label %.lr.ph215.split.us, label %.critedge10, !llvm.loop !331 + +.lr.ph215.split: ; preds = %.lr.ph215, %256 + %indvars.iv233 = phi i64 [ %indvars.iv.next234, %256 ], [ 0, %.lr.ph215 ] + %255 = phi ptr [ %280, %256 ], [ %222, %.lr.ph215 ] %.val150 = load ptr, ptr %25, align 8, !tbaa !12 %.not124 = icmp eq ptr %.val150, null - br i1 %.not124, label %.critedge10, label %254 - -254: ; preds = %.lr.ph215.split - %255 = getelementptr i8, ptr %253, i64 8 - %.val151.val = load ptr, ptr %255, align 8, !tbaa !10 - %256 = getelementptr inbounds nuw i32, ptr %.val151.val, i64 %indvars.iv233 - %257 = load i32, ptr %256, align 4, !tbaa !11 - %258 = sext i32 %257 to i64 - %259 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val150, i64 %258 - %260 = load i64, ptr %259, align 4 - %261 = and i64 %260, 536870911 - %262 = sub nsw i64 0, %261 - %263 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %259, i64 %262, i32 1 - %264 = load i32, ptr %263, align 4, !tbaa !31 - %265 = trunc i64 %260 to i32 - %266 = lshr i32 %265, 29 - %267 = and i32 %266, 1 - %268 = xor i32 %267, %264 - %269 = tail call fastcc i32 @Gia_ManAppendCo(ptr noundef nonnull %21, i32 noundef %268) + br i1 %.not124, label %.critedge10, label %256 + +256: ; preds = %.lr.ph215.split + %257 = getelementptr i8, ptr %255, i64 8 + %.val151.val = load ptr, ptr %257, align 8, !tbaa !10 + %258 = getelementptr inbounds nuw i32, ptr %.val151.val, i64 %indvars.iv233 + %259 = load i32, ptr %258, align 4, !tbaa !11 + %260 = sext i32 %259 to i64 + %261 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val150, i64 %260 + %262 = load i64, ptr %261, align 4 + %263 = and i64 %262, 536870911 + %264 = sub nsw i64 0, %263 + %265 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %261, i64 %264, i32 1 + %266 = load i32, ptr %265, align 4, !tbaa !31 + %267 = trunc i64 %262 to i32 + %268 = lshr i32 %267, 29 + %269 = and i32 %268, 1 + %270 = xor i32 %269, %266 + %271 = tail call fastcc i32 @Gia_ManAppendCo(ptr noundef nonnull %21, i32 noundef %270) %.val142 = load ptr, ptr %23, align 8, !tbaa !12 %.val143 = load ptr, ptr %10, align 8, !tbaa !45 - %270 = getelementptr i8, ptr %.val143, i64 8 - %.val143.val = load ptr, ptr %270, align 8, !tbaa !10 - %271 = getelementptr i32, ptr %.val143.val, i64 %indvars.iv233 - %272 = getelementptr i32, ptr %271, i64 %223 - %273 = load i32, ptr %272, align 4, !tbaa !11 - %274 = sext i32 %273 to i64 - %275 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val142, i64 %274, i32 1 - %276 = load i32, ptr %275, align 4, !tbaa !31 - %277 = tail call fastcc i32 @Gia_ManAppendCo(ptr noundef nonnull %21, i32 noundef %276) + %272 = getelementptr i8, ptr %.val143, i64 8 + %.val143.val = load ptr, ptr %272, align 8, !tbaa !10 + %273 = getelementptr i32, ptr %.val143.val, i64 %indvars.iv233 + %274 = getelementptr i32, ptr %273, i64 %225 + %275 = load i32, ptr %274, align 4, !tbaa !11 + %276 = sext i32 %275 to i64 + %277 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val142, i64 %276, i32 1 + %278 = load i32, ptr %277, align 4, !tbaa !31 + %279 = tail call fastcc i32 @Gia_ManAppendCo(ptr noundef nonnull %21, i32 noundef %278) %indvars.iv.next234 = add nuw nsw i64 %indvars.iv233, 1 - %278 = load ptr, ptr %12, align 8, !tbaa !47 - %279 = getelementptr i8, ptr %278, i64 4 - %.val = load i32, ptr %279, align 4, !tbaa !3 - %280 = sext i32 %.val to i64 - %281 = icmp slt i64 %indvars.iv.next234, %280 - br i1 %281, label %.lr.ph215.split, label %.critedge10, !llvm.loop !331 - -.critedge10: ; preds = %.lr.ph215.split, %254, %.lr.ph215.split.us, %225, %.critedge8 + %280 = load ptr, ptr %12, align 8, !tbaa !47 + %281 = getelementptr i8, ptr %280, i64 4 + %.val = load i32, ptr %281, align 4, !tbaa !3 + %282 = sext i32 %.val to i64 + %283 = icmp slt i64 %indvars.iv.next234, %282 + br i1 %283, label %.lr.ph215.split, label %.critedge10, !llvm.loop !331 + +.critedge10: ; preds = %.lr.ph215.split, %256, %.lr.ph215.split.us, %227, %.critedge8 tail call void @Gia_ManHashStop(ptr noundef nonnull %21) #31 - %282 = tail call ptr @Gia_ManCleanup(ptr noundef nonnull %21) #31 + %284 = tail call ptr @Gia_ManCleanup(ptr noundef nonnull %21) #31 tail call void @Gia_ManStop(ptr noundef nonnull %21) #31 - %283 = getelementptr inbounds nuw i8, ptr %0, i64 496 - %284 = load ptr, ptr %283, align 8, !tbaa !332 - %.not125 = icmp eq ptr %284, null - br i1 %.not125, label %Vec_IntAppend.exit196, label %285 - -285: ; preds = %.critedge10 - %286 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #29 - %287 = getelementptr inbounds nuw i8, ptr %286, i64 4 - store i32 0, ptr %287, align 4, !tbaa !3 - store i32 1000, ptr %286, align 8, !tbaa !39 - %288 = tail call noalias dereferenceable_or_null(4000) ptr @malloc(i64 noundef 4000) #29 - %289 = getelementptr inbounds nuw i8, ptr %286, i64 8 - store ptr %288, ptr %289, align 8, !tbaa !10 - %290 = getelementptr inbounds nuw i8, ptr %282, i64 496 - store ptr %286, ptr %290, align 8, !tbaa !332 - %291 = load ptr, ptr %283, align 8, !tbaa !332 - %292 = getelementptr i8, ptr %291, i64 4 - %.val7.i = load i32, ptr %292, align 4, !tbaa !3 - %293 = icmp sgt i32 %.val7.i, 0 - br i1 %293, label %.lr.ph.i, label %Vec_IntAppend.exit - -.lr.ph.i: ; preds = %285 - %294 = getelementptr i8, ptr %291, i64 8 - br label %295 - -295: ; preds = %Vec_IntPush.exit.i, %.lr.ph.i - %296 = phi ptr [ %288, %.lr.ph.i ], [ %.pre.i.i240, %Vec_IntPush.exit.i ] - %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %Vec_IntPush.exit.i ] - %.val6.i = load ptr, ptr %294, align 8, !tbaa !10 - %297 = getelementptr inbounds nuw i32, ptr %.val6.i, i64 %indvars.iv.i - %298 = load i32, ptr %297, align 4, !tbaa !11 - %299 = load i32, ptr %287, align 4, !tbaa !3 - %300 = load i32, ptr %286, align 8, !tbaa !39 - %301 = icmp eq i32 %299, %300 - br i1 %301, label %302, label %Vec_IntPush.exit.i - -302: ; preds = %295 - %303 = icmp slt i32 %299, 16 - br i1 %303, label %304, label %309 - -304: ; preds = %302 - %.not9.i.i.i = icmp eq ptr %296, null - br i1 %.not9.i.i.i, label %307, label %305 + %285 = getelementptr inbounds nuw i8, ptr %0, i64 496 + %286 = load ptr, ptr %285, align 8, !tbaa !332 + %.not125 = icmp eq ptr %286, null + br i1 %.not125, label %Vec_IntAppend.exit196, label %287 + +287: ; preds = %.critedge10 + %288 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #29 + %289 = getelementptr inbounds nuw i8, ptr %288, i64 4 + store i32 0, ptr %289, align 4, !tbaa !3 + store i32 1000, ptr %288, align 8, !tbaa !39 + %290 = tail call noalias dereferenceable_or_null(4000) ptr @malloc(i64 noundef 4000) #29 + %291 = getelementptr inbounds nuw i8, ptr %288, i64 8 + store ptr %290, ptr %291, align 8, !tbaa !10 + %292 = getelementptr inbounds nuw i8, ptr %284, i64 496 + store ptr %288, ptr %292, align 8, !tbaa !332 + %293 = load ptr, ptr %285, align 8, !tbaa !332 + %294 = getelementptr i8, ptr %293, i64 4 + %.val7.i = load i32, ptr %294, align 4, !tbaa !3 + %295 = icmp sgt i32 %.val7.i, 0 + br i1 %295, label %.lr.ph.i, label %Vec_IntAppend.exit + +.lr.ph.i: ; preds = %287 + %296 = getelementptr i8, ptr %293, i64 8 + br label %297 -305: ; preds = %304 - %306 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %296, i64 noundef 64) #30 +297: ; preds = %Vec_IntPush.exit.i, %.lr.ph.i + %298 = phi ptr [ %290, %.lr.ph.i ], [ %.pre.i.i240, %Vec_IntPush.exit.i ] + %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %Vec_IntPush.exit.i ] + %.val6.i = load ptr, ptr %296, align 8, !tbaa !10 + %299 = getelementptr inbounds nuw i32, ptr %.val6.i, i64 %indvars.iv.i + %300 = load i32, ptr %299, align 4, !tbaa !11 + %301 = load i32, ptr %289, align 4, !tbaa !3 + %302 = load i32, ptr %288, align 8, !tbaa !39 + %303 = icmp eq i32 %301, %302 + br i1 %303, label %304, label %Vec_IntPush.exit.i + +304: ; preds = %297 + %305 = icmp slt i32 %301, 16 + br i1 %305, label %306, label %311 + +306: ; preds = %304 + %.not9.i.i.i = icmp eq ptr %298, null + br i1 %.not9.i.i.i, label %309, label %307 + +307: ; preds = %306 + %308 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %298, i64 noundef 64) #30 br label %Vec_IntPush.exit.i.sink.split -307: ; preds = %304 - %308 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #29 +309: ; preds = %306 + %310 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #29 br label %Vec_IntPush.exit.i.sink.split -309: ; preds = %302 - %310 = shl nuw nsw i32 %299, 1 - %.not9.i9.i.i = icmp eq ptr %296, null - %311 = zext nneg i32 %310 to i64 - %312 = shl nuw nsw i64 %311, 2 - br i1 %.not9.i9.i.i, label %315, label %313 +311: ; preds = %304 + %312 = shl nuw nsw i32 %301, 1 + %.not9.i9.i.i = icmp eq ptr %298, null + %313 = zext nneg i32 %312 to i64 + %314 = shl nuw nsw i64 %313, 2 + br i1 %.not9.i9.i.i, label %317, label %315 -313: ; preds = %309 - %314 = tail call ptr @realloc(ptr noundef nonnull %296, i64 noundef %312) #30 +315: ; preds = %311 + %316 = tail call ptr @realloc(ptr noundef nonnull %298, i64 noundef %314) #30 br label %Vec_IntPush.exit.i.sink.split -315: ; preds = %309 - %316 = tail call noalias ptr @malloc(i64 noundef %312) #29 +317: ; preds = %311 + %318 = tail call noalias ptr @malloc(i64 noundef %314) #29 br label %Vec_IntPush.exit.i.sink.split -Vec_IntPush.exit.i.sink.split: ; preds = %313, %315, %305, %307 - %.sink250 = phi ptr [ %306, %305 ], [ %308, %307 ], [ %314, %313 ], [ %316, %315 ] - %.sink249 = phi i32 [ 16, %305 ], [ 16, %307 ], [ %310, %313 ], [ %310, %315 ] - store ptr %.sink250, ptr %289, align 8, !tbaa !10 - store i32 %.sink249, ptr %286, align 8, !tbaa !39 +Vec_IntPush.exit.i.sink.split: ; preds = %315, %317, %307, %309 + %.sink250 = phi ptr [ %308, %307 ], [ %310, %309 ], [ %316, %315 ], [ %318, %317 ] + %.sink249 = phi i32 [ 16, %307 ], [ 16, %309 ], [ %312, %315 ], [ %312, %317 ] + store ptr %.sink250, ptr %291, align 8, !tbaa !10 + store i32 %.sink249, ptr %288, align 8, !tbaa !39 br label %Vec_IntPush.exit.i -Vec_IntPush.exit.i: ; preds = %Vec_IntPush.exit.i.sink.split, %295 - %.pre.i.i240 = phi ptr [ %296, %295 ], [ %.sink250, %Vec_IntPush.exit.i.sink.split ] - %317 = load i32, ptr %287, align 4, !tbaa !3 - %318 = add nsw i32 %317, 1 - store i32 %318, ptr %287, align 4, !tbaa !3 - %319 = sext i32 %317 to i64 - %320 = getelementptr inbounds i32, ptr %.pre.i.i240, i64 %319 - store i32 %298, ptr %320, align 4, !tbaa !11 +Vec_IntPush.exit.i: ; preds = %Vec_IntPush.exit.i.sink.split, %297 + %.pre.i.i240 = phi ptr [ %298, %297 ], [ %.sink250, %Vec_IntPush.exit.i.sink.split ] + %319 = load i32, ptr %289, align 4, !tbaa !3 + %320 = add nsw i32 %319, 1 + store i32 %320, ptr %289, align 4, !tbaa !3 + %321 = sext i32 %319 to i64 + %322 = getelementptr inbounds i32, ptr %.pre.i.i240, i64 %321 + store i32 %300, ptr %322, align 4, !tbaa !11 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %.val.i182 = load i32, ptr %292, align 4, !tbaa !3 - %321 = sext i32 %.val.i182 to i64 - %322 = icmp slt i64 %indvars.iv.next.i, %321 - br i1 %322, label %295, label %Vec_IntAppend.exit.loopexit, !llvm.loop !333 + %.val.i182 = load i32, ptr %294, align 4, !tbaa !3 + %323 = sext i32 %.val.i182 to i64 + %324 = icmp slt i64 %indvars.iv.next.i, %323 + br i1 %324, label %297, label %Vec_IntAppend.exit.loopexit, !llvm.loop !333 Vec_IntAppend.exit.loopexit: ; preds = %Vec_IntPush.exit.i - %.pre = load ptr, ptr %290, align 8, !tbaa !332 + %.pre = load ptr, ptr %292, align 8, !tbaa !332 br label %Vec_IntAppend.exit -Vec_IntAppend.exit: ; preds = %Vec_IntAppend.exit.loopexit, %285 - %323 = phi ptr [ %.pre, %Vec_IntAppend.exit.loopexit ], [ %286, %285 ] - %324 = getelementptr inbounds nuw i8, ptr %1, i64 496 - %325 = load ptr, ptr %324, align 8, !tbaa !332 - %326 = getelementptr i8, ptr %325, i64 4 - %.val7.i183 = load i32, ptr %326, align 4, !tbaa !3 - %327 = icmp sgt i32 %.val7.i183, 0 - br i1 %327, label %.lr.ph.i184, label %Vec_IntAppend.exit196 +Vec_IntAppend.exit: ; preds = %Vec_IntAppend.exit.loopexit, %287 + %325 = phi ptr [ %.pre, %Vec_IntAppend.exit.loopexit ], [ %288, %287 ] + %326 = getelementptr inbounds nuw i8, ptr %1, i64 496 + %327 = load ptr, ptr %326, align 8, !tbaa !332 + %328 = getelementptr i8, ptr %327, i64 4 + %.val7.i183 = load i32, ptr %328, align 4, !tbaa !3 + %329 = icmp sgt i32 %.val7.i183, 0 + br i1 %329, label %.lr.ph.i184, label %Vec_IntAppend.exit196 .lr.ph.i184: ; preds = %Vec_IntAppend.exit - %328 = getelementptr i8, ptr %325, i64 8 - %329 = getelementptr inbounds nuw i8, ptr %323, i64 4 - %.phi.trans.insert.i.i185 = getelementptr inbounds nuw i8, ptr %323, i64 8 - br label %330 + %330 = getelementptr i8, ptr %327, i64 8 + %331 = getelementptr inbounds nuw i8, ptr %325, i64 4 + %.phi.trans.insert.i.i185 = getelementptr inbounds nuw i8, ptr %325, i64 8 + br label %332 -330: ; preds = %Vec_IntPush.exit.i190, %.lr.ph.i184 +332: ; preds = %Vec_IntPush.exit.i190, %.lr.ph.i184 %indvars.iv.i186 = phi i64 [ 0, %.lr.ph.i184 ], [ %indvars.iv.next.i191, %Vec_IntPush.exit.i190 ] - %.val6.i187 = load ptr, ptr %328, align 8, !tbaa !10 - %331 = getelementptr inbounds nuw i32, ptr %.val6.i187, i64 %indvars.iv.i186 - %332 = load i32, ptr %331, align 4, !tbaa !11 - %333 = load i32, ptr %329, align 4, !tbaa !3 - %334 = load i32, ptr %323, align 8, !tbaa !39 - %335 = icmp eq i32 %333, %334 - br i1 %335, label %336, label %.Vec_IntGrow.exit10_crit_edge.i.i188 - -.Vec_IntGrow.exit10_crit_edge.i.i188: ; preds = %330 + %.val6.i187 = load ptr, ptr %330, align 8, !tbaa !10 + %333 = getelementptr inbounds nuw i32, ptr %.val6.i187, i64 %indvars.iv.i186 + %334 = load i32, ptr %333, align 4, !tbaa !11 + %335 = load i32, ptr %331, align 4, !tbaa !3 + %336 = load i32, ptr %325, align 8, !tbaa !39 + %337 = icmp eq i32 %335, %336 + br i1 %337, label %338, label %.Vec_IntGrow.exit10_crit_edge.i.i188 + +.Vec_IntGrow.exit10_crit_edge.i.i188: ; preds = %332 %.pre.i.i189 = load ptr, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 br label %Vec_IntPush.exit.i190 -336: ; preds = %330 - %337 = icmp slt i32 %333, 16 - br i1 %337, label %338, label %345 - -338: ; preds = %336 - %339 = load ptr, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 - %.not9.i.i.i194 = icmp eq ptr %339, null - br i1 %.not9.i.i.i194, label %342, label %340 +338: ; preds = %332 + %339 = icmp slt i32 %335, 16 + br i1 %339, label %340, label %347 340: ; preds = %338 - %341 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %339, i64 noundef 64) #30 + %341 = load ptr, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 + %.not9.i.i.i194 = icmp eq ptr %341, null + br i1 %.not9.i.i.i194, label %344, label %342 + +342: ; preds = %340 + %343 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %341, i64 noundef 64) #30 br label %Vec_IntGrow.exit.i.i195 -342: ; preds = %338 - %343 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #29 +344: ; preds = %340 + %345 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #29 br label %Vec_IntGrow.exit.i.i195 -Vec_IntGrow.exit.i.i195: ; preds = %342, %340 - %344 = phi ptr [ %341, %340 ], [ %343, %342 ] - store ptr %344, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 - store i32 16, ptr %323, align 8, !tbaa !39 +Vec_IntGrow.exit.i.i195: ; preds = %344, %342 + %346 = phi ptr [ %343, %342 ], [ %345, %344 ] + store ptr %346, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 + store i32 16, ptr %325, align 8, !tbaa !39 br label %Vec_IntPush.exit.i190 -345: ; preds = %336 - %346 = shl nuw nsw i32 %333, 1 - %347 = load ptr, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 - %.not9.i9.i.i193 = icmp eq ptr %347, null - %348 = zext nneg i32 %346 to i64 - %349 = shl nuw nsw i64 %348, 2 - br i1 %.not9.i9.i.i193, label %352, label %350 - -350: ; preds = %345 - %351 = tail call ptr @realloc(ptr noundef nonnull %347, i64 noundef %349) #30 - br label %354 - -352: ; preds = %345 - %353 = tail call noalias ptr @malloc(i64 noundef %349) #29 - br label %354 - -354: ; preds = %352, %350 - %355 = phi ptr [ %351, %350 ], [ %353, %352 ] - store ptr %355, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 - store i32 %346, ptr %323, align 8, !tbaa !39 +347: ; preds = %338 + %348 = shl nuw nsw i32 %335, 1 + %349 = load ptr, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 + %.not9.i9.i.i193 = icmp eq ptr %349, null + %350 = zext nneg i32 %348 to i64 + %351 = shl nuw nsw i64 %350, 2 + br i1 %.not9.i9.i.i193, label %354, label %352 + +352: ; preds = %347 + %353 = tail call ptr @realloc(ptr noundef nonnull %349, i64 noundef %351) #30 + br label %356 + +354: ; preds = %347 + %355 = tail call noalias ptr @malloc(i64 noundef %351) #29 + br label %356 + +356: ; preds = %354, %352 + %357 = phi ptr [ %353, %352 ], [ %355, %354 ] + store ptr %357, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 + store i32 %348, ptr %325, align 8, !tbaa !39 br label %Vec_IntPush.exit.i190 -Vec_IntPush.exit.i190: ; preds = %354, %Vec_IntGrow.exit.i.i195, %.Vec_IntGrow.exit10_crit_edge.i.i188 - %356 = phi ptr [ %.pre.i.i189, %.Vec_IntGrow.exit10_crit_edge.i.i188 ], [ %355, %354 ], [ %344, %Vec_IntGrow.exit.i.i195 ] - %357 = load i32, ptr %329, align 4, !tbaa !3 - %358 = add nsw i32 %357, 1 - store i32 %358, ptr %329, align 4, !tbaa !3 - %359 = sext i32 %357 to i64 - %360 = getelementptr inbounds i32, ptr %356, i64 %359 - store i32 %332, ptr %360, align 4, !tbaa !11 +Vec_IntPush.exit.i190: ; preds = %356, %Vec_IntGrow.exit.i.i195, %.Vec_IntGrow.exit10_crit_edge.i.i188 + %358 = phi ptr [ %.pre.i.i189, %.Vec_IntGrow.exit10_crit_edge.i.i188 ], [ %357, %356 ], [ %346, %Vec_IntGrow.exit.i.i195 ] + %359 = load i32, ptr %331, align 4, !tbaa !3 + %360 = add nsw i32 %359, 1 + store i32 %360, ptr %331, align 4, !tbaa !3 + %361 = sext i32 %359 to i64 + %362 = getelementptr inbounds i32, ptr %358, i64 %361 + store i32 %334, ptr %362, align 4, !tbaa !11 %indvars.iv.next.i191 = add nuw nsw i64 %indvars.iv.i186, 1 - %.val.i192 = load i32, ptr %326, align 4, !tbaa !3 - %361 = sext i32 %.val.i192 to i64 - %362 = icmp slt i64 %indvars.iv.next.i191, %361 - br i1 %362, label %330, label %Vec_IntAppend.exit196, !llvm.loop !333 + %.val.i192 = load i32, ptr %328, align 4, !tbaa !3 + %363 = sext i32 %.val.i192 to i64 + %364 = icmp slt i64 %indvars.iv.next.i191, %363 + br i1 %364, label %332, label %Vec_IntAppend.exit196, !llvm.loop !333 Vec_IntAppend.exit196: ; preds = %Vec_IntPush.exit.i190, %Vec_IntAppend.exit, %.critedge10, %30 - %.0 = phi ptr [ null, %30 ], [ %282, %.critedge10 ], [ %282, %Vec_IntAppend.exit ], [ %282, %Vec_IntPush.exit.i190 ] + %.0 = phi ptr [ null, %30 ], [ %284, %.critedge10 ], [ %284, %Vec_IntAppend.exit ], [ %284, %Vec_IntPush.exit.i190 ] ret ptr %.0 } diff --git a/bench/abc/optimized/giaIf.ll b/bench/abc/optimized/giaIf.ll index be320cb1d69..09deadd3be4 100644 --- a/bench/abc/optimized/giaIf.ll +++ b/bench/abc/optimized/giaIf.ll @@ -4671,7 +4671,7 @@ define i32 @Gia_ManBuildFromMiniInt(ptr noundef %0, ptr noundef readonly capture %7 = getelementptr i8, ptr %2, i64 8 %.val69 = load ptr, ptr %7, align 8, !tbaa !47 %8 = load i32, ptr %.val69, align 4, !tbaa !48 - br label %96 + br label %104 9: ; preds = %4 %10 = getelementptr i8, ptr %1, i64 8 @@ -4684,7 +4684,7 @@ define i32 @Gia_ManBuildFromMiniInt(ptr noundef %0, ptr noundef readonly capture %15 = icmp sgt i32 %14, 0 %16 = zext i1 %15 to i32 %17 = xor i32 %11, %16 - br label %96 + br label %104 18: ; preds = %4 %19 = getelementptr i8, ptr %1, i64 4 @@ -4703,9 +4703,9 @@ define i32 @Gia_ManBuildFromMiniInt(ptr noundef %0, ptr noundef readonly capture %.val66.us.pre = load ptr, ptr %21, align 8, !tbaa !47 br i1 %.not, label %.lr.ph.split.us, label %.lr.ph.split -.lr.ph.split.us: ; preds = %.lr.ph, %52 - %.val74.us89 = phi ptr [ %.val74.us, %52 ], [ %.val66.us.pre, %.lr.ph ] - %indvars.iv84 = phi i64 [ %indvars.iv.next85, %52 ], [ 0, %.lr.ph ] +.lr.ph.split.us: ; preds = %.lr.ph, %56 + %.val74.us89 = phi ptr [ %.val74.us, %56 ], [ %.val66.us.pre, %.lr.ph ] + %indvars.iv84 = phi i64 [ %indvars.iv.next85, %56 ], [ 0, %.lr.ph ] %23 = getelementptr inbounds nuw i32, ptr %.val74.us89, i64 %indvars.iv84 %24 = load i32, ptr %23, align 4, !tbaa !48 %25 = getelementptr inbounds nuw i8, ptr %23, i64 4 @@ -4713,138 +4713,142 @@ define i32 @Gia_ManBuildFromMiniInt(ptr noundef %0, ptr noundef readonly capture %27 = ashr i32 %24, 1 %28 = ashr i32 %26, 1 %29 = icmp slt i32 %27, %.val71 - br i1 %29, label %32, label %30 + br i1 %29, label %34, label %30 30: ; preds = %.lr.ph.split.us %31 = sub nsw i32 %27, %.val71 - br label %33 + %32 = zext nneg i32 %31 to i64 + %33 = getelementptr inbounds nuw i32, ptr %.val74.us89, i64 %32 + br label %37 -32: ; preds = %.lr.ph.split.us +34: ; preds = %.lr.ph.split.us %.val64.us = load ptr, ptr %22, align 8, !tbaa !47 - br label %33 - -33: ; preds = %32, %30 - %.sink93 = phi i32 [ %27, %32 ], [ %31, %30 ] - %.val64.us.sink = phi ptr [ %.val64.us, %32 ], [ %.val74.us89, %30 ] - %34 = sext i32 %.sink93 to i64 - %35 = getelementptr inbounds i32, ptr %.val64.us.sink, i64 %34 - %36 = load i32, ptr %35, align 4, !tbaa !48 - %37 = and i32 %24, 1 - %38 = xor i32 %36, %37 - %39 = icmp slt i32 %28, %.val71 - br i1 %39, label %42, label %40 - -40: ; preds = %33 - %41 = sub nsw i32 %28, %.val71 - br label %43 + %35 = sext i32 %27 to i64 + %36 = getelementptr inbounds i32, ptr %.val64.us, i64 %35 + br label %37 -42: ; preds = %33 - %.val62.us = load ptr, ptr %22, align 8, !tbaa !47 - br label %43 +37: ; preds = %34, %30 + %.in.us = phi ptr [ %36, %34 ], [ %33, %30 ] + %38 = load i32, ptr %.in.us, align 4, !tbaa !48 + %39 = and i32 %24, 1 + %40 = xor i32 %38, %39 + %41 = icmp slt i32 %28, %.val71 + br i1 %41, label %46, label %42 -43: ; preds = %42, %40 - %.sink94 = phi i32 [ %28, %42 ], [ %41, %40 ] - %.val62.us.sink = phi ptr [ %.val62.us, %42 ], [ %.val74.us89, %40 ] - %44 = sext i32 %.sink94 to i64 - %45 = getelementptr inbounds i32, ptr %.val62.us.sink, i64 %44 - %46 = load i32, ptr %45, align 4, !tbaa !48 - %47 = and i32 %26, 1 - %48 = xor i32 %46, %47 - %49 = icmp eq i32 %38, %48 - br i1 %49, label %52, label %50 +42: ; preds = %37 + %43 = sub nsw i32 %28, %.val71 + %44 = zext nneg i32 %43 to i64 + %45 = getelementptr inbounds nuw i32, ptr %.val74.us89, i64 %44 + br label %49 -50: ; preds = %43 - %51 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef %0, i32 noundef %38, i32 noundef %48) +46: ; preds = %37 + %.val62.us = load ptr, ptr %22, align 8, !tbaa !47 + %47 = sext i32 %28 to i64 + %48 = getelementptr inbounds i32, ptr %.val62.us, i64 %47 + br label %49 + +49: ; preds = %46, %42 + %.in75.us = phi ptr [ %48, %46 ], [ %45, %42 ] + %50 = load i32, ptr %.in75.us, align 4, !tbaa !48 + %51 = and i32 %26, 1 + %52 = xor i32 %50, %51 + %53 = icmp eq i32 %40, %52 + br i1 %53, label %56, label %54 + +54: ; preds = %49 + %55 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef %0, i32 noundef %40, i32 noundef %52) %.val74.us.pre = load ptr, ptr %21, align 8, !tbaa !47 - br label %52 - -52: ; preds = %50, %43 - %.val74.us = phi ptr [ %.val74.us.pre, %50 ], [ %.val74.us89, %43 ] - %.1.us = phi i32 [ %51, %50 ], [ %38, %43 ] - %53 = lshr exact i64 %indvars.iv84, 1 - %54 = getelementptr inbounds nuw i32, ptr %.val74.us, i64 %53 - store i32 %.1.us, ptr %54, align 4, !tbaa !48 + br label %56 + +56: ; preds = %54, %49 + %.val74.us = phi ptr [ %.val74.us.pre, %54 ], [ %.val74.us89, %49 ] + %.1.us = phi i32 [ %55, %54 ], [ %40, %49 ] + %57 = lshr exact i64 %indvars.iv84, 1 + %58 = getelementptr inbounds nuw i32, ptr %.val74.us, i64 %57 + store i32 %.1.us, ptr %58, align 4, !tbaa !48 %indvars.iv.next85 = add nuw nsw i64 %indvars.iv84, 2 %.val70.us = load i32, ptr %5, align 4, !tbaa !54 - %55 = trunc i64 %indvars.iv.next85 to i32 - %56 = or disjoint i32 %55, 1 - %57 = icmp slt i32 %56, %.val70.us - br i1 %57, label %.lr.ph.split.us, label %.critedge, !llvm.loop !144 - -.lr.ph.split: ; preds = %.lr.ph, %78 - %.val66 = phi ptr [ %.val74, %78 ], [ %.val66.us.pre, %.lr.ph ] - %indvars.iv = phi i64 [ %indvars.iv.next, %78 ], [ 0, %.lr.ph ] - %58 = getelementptr inbounds nuw i32, ptr %.val66, i64 %indvars.iv - %59 = load i32, ptr %58, align 4, !tbaa !48 - %60 = getelementptr inbounds nuw i8, ptr %58, i64 4 - %61 = load i32, ptr %60, align 4, !tbaa !48 - %62 = ashr i32 %59, 1 - %63 = ashr i32 %61, 1 - %64 = icmp slt i32 %62, %.val71 - br i1 %64, label %65, label %66 - -65: ; preds = %.lr.ph.split + %59 = trunc i64 %indvars.iv.next85 to i32 + %60 = or disjoint i32 %59, 1 + %61 = icmp slt i32 %60, %.val70.us + br i1 %61, label %.lr.ph.split.us, label %.critedge, !llvm.loop !144 + +.lr.ph.split: ; preds = %.lr.ph, %88 + %.val66 = phi ptr [ %.val74, %88 ], [ %.val66.us.pre, %.lr.ph ] + %indvars.iv = phi i64 [ %indvars.iv.next, %88 ], [ 0, %.lr.ph ] + %62 = getelementptr inbounds nuw i32, ptr %.val66, i64 %indvars.iv + %63 = load i32, ptr %62, align 4, !tbaa !48 + %64 = getelementptr inbounds nuw i8, ptr %62, i64 4 + %65 = load i32, ptr %64, align 4, !tbaa !48 + %66 = ashr i32 %63, 1 + %67 = ashr i32 %65, 1 + %68 = icmp slt i32 %66, %.val71 + br i1 %68, label %69, label %72 + +69: ; preds = %.lr.ph.split %.val64 = load ptr, ptr %22, align 8, !tbaa !47 - br label %68 + %70 = sext i32 %66 to i64 + %71 = getelementptr inbounds i32, ptr %.val64, i64 %70 + br label %76 -66: ; preds = %.lr.ph.split - %67 = sub nsw i32 %62, %.val71 - br label %68 +72: ; preds = %.lr.ph.split + %73 = sub nsw i32 %66, %.val71 + %74 = zext nneg i32 %73 to i64 + %75 = getelementptr inbounds nuw i32, ptr %.val66, i64 %74 + br label %76 -68: ; preds = %66, %65 - %.sink95 = phi i32 [ %67, %66 ], [ %62, %65 ] - %.val66.sink = phi ptr [ %.val66, %66 ], [ %.val64, %65 ] - %69 = sext i32 %.sink95 to i64 - %70 = getelementptr inbounds i32, ptr %.val66.sink, i64 %69 - %71 = load i32, ptr %70, align 4, !tbaa !48 - %72 = and i32 %59, 1 - %73 = xor i32 %71, %72 - %74 = icmp slt i32 %63, %.val71 - br i1 %74, label %75, label %76 - -75: ; preds = %68 +76: ; preds = %72, %69 + %.in = phi ptr [ %71, %69 ], [ %75, %72 ] + %77 = load i32, ptr %.in, align 4, !tbaa !48 + %78 = and i32 %63, 1 + %79 = xor i32 %77, %78 + %80 = icmp slt i32 %67, %.val71 + br i1 %80, label %81, label %84 + +81: ; preds = %76 %.val62 = load ptr, ptr %22, align 8, !tbaa !47 - br label %78 + %82 = sext i32 %67 to i64 + %83 = getelementptr inbounds i32, ptr %.val62, i64 %82 + br label %88 -76: ; preds = %68 - %77 = sub nsw i32 %63, %.val71 - br label %78 +84: ; preds = %76 + %85 = sub nsw i32 %67, %.val71 + %86 = zext nneg i32 %85 to i64 + %87 = getelementptr inbounds nuw i32, ptr %.val66, i64 %86 + br label %88 -78: ; preds = %76, %75 - %.sink97 = phi i32 [ %77, %76 ], [ %63, %75 ] - %.val66.sink96 = phi ptr [ %.val66, %76 ], [ %.val62, %75 ] - %79 = sext i32 %.sink97 to i64 - %80 = getelementptr inbounds i32, ptr %.val66.sink96, i64 %79 - %81 = load i32, ptr %80, align 4, !tbaa !48 - %82 = and i32 %61, 1 - %83 = xor i32 %81, %82 - %84 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %73, i32 noundef %83) #27 - %85 = lshr exact i64 %indvars.iv, 1 +88: ; preds = %84, %81 + %.in75 = phi ptr [ %83, %81 ], [ %87, %84 ] + %89 = load i32, ptr %.in75, align 4, !tbaa !48 + %90 = and i32 %65, 1 + %91 = xor i32 %89, %90 + %92 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %79, i32 noundef %91) #27 + %93 = lshr exact i64 %indvars.iv, 1 %.val74 = load ptr, ptr %21, align 8, !tbaa !47 - %86 = getelementptr inbounds nuw i32, ptr %.val74, i64 %85 - store i32 %84, ptr %86, align 4, !tbaa !48 + %94 = getelementptr inbounds nuw i32, ptr %.val74, i64 %93 + store i32 %92, ptr %94, align 4, !tbaa !48 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 2 %.val70 = load i32, ptr %5, align 4, !tbaa !54 - %87 = trunc i64 %indvars.iv.next to i32 - %88 = or disjoint i32 %87, 1 - %89 = icmp slt i32 %88, %.val70 - br i1 %89, label %.lr.ph.split, label %.critedge, !llvm.loop !144 - -.critedge: ; preds = %78, %52, %..critedge_crit_edge - %.val = phi ptr [ %.val.pre, %..critedge_crit_edge ], [ %.val74.us, %52 ], [ %.val74, %78 ] - %.050.lcssa = phi i64 [ 0, %..critedge_crit_edge ], [ %indvars.iv.next85, %52 ], [ %indvars.iv.next, %78 ] - %.0.lcssa = phi i32 [ 0, %..critedge_crit_edge ], [ %.1.us, %52 ], [ %84, %78 ] - %90 = and i64 %.050.lcssa, 4294967295 - %91 = getelementptr inbounds nuw i32, ptr %.val, i64 %90 - %92 = load i32, ptr %91, align 4, !tbaa !48 - %93 = icmp sgt i32 %92, 0 - %94 = zext i1 %93 to i32 - %95 = xor i32 %.0.lcssa, %94 + %95 = trunc i64 %indvars.iv.next to i32 + %96 = or disjoint i32 %95, 1 + %97 = icmp slt i32 %96, %.val70 + br i1 %97, label %.lr.ph.split, label %.critedge, !llvm.loop !144 + +.critedge: ; preds = %88, %56, %..critedge_crit_edge + %.val = phi ptr [ %.val.pre, %..critedge_crit_edge ], [ %.val74.us, %56 ], [ %.val74, %88 ] + %.050.lcssa = phi i64 [ 0, %..critedge_crit_edge ], [ %indvars.iv.next85, %56 ], [ %indvars.iv.next, %88 ] + %.0.lcssa = phi i32 [ 0, %..critedge_crit_edge ], [ %.1.us, %56 ], [ %92, %88 ] + %98 = and i64 %.050.lcssa, 4294967295 + %99 = getelementptr inbounds nuw i32, ptr %.val, i64 %98 + %100 = load i32, ptr %99, align 4, !tbaa !48 + %101 = icmp sgt i32 %100, 0 + %102 = zext i1 %101 to i32 + %103 = xor i32 %.0.lcssa, %102 store i32 0, ptr %5, align 4, !tbaa !54 - br label %96 + br label %104 -96: ; preds = %.critedge, %9, %6 - %.049 = phi i32 [ %8, %6 ], [ %17, %9 ], [ %95, %.critedge ] +104: ; preds = %.critedge, %9, %6 + %.049 = phi i32 [ %8, %6 ], [ %17, %9 ], [ %103, %.critedge ] ret i32 %.049 } diff --git a/bench/abc/optimized/giaResub.ll b/bench/abc/optimized/giaResub.ll index 28020bacdd3..2a251823e16 100644 --- a/bench/abc/optimized/giaResub.ll +++ b/bench/abc/optimized/giaResub.ll @@ -3785,145 +3785,167 @@ define i32 @Gia_ManConstructFromMap(ptr noundef %0, ptr noundef readonly capture %18 = ashr i32 %15, 1 %19 = ashr i32 %17, 1 %20 = icmp slt i32 %18, %2 - %21 = select i1 %20, i32 0, i32 %2 - %.sink83 = sub nsw i32 %18, %21 - %.val69.sink.in = select i1 %20, ptr %12, ptr %11 - %.val69.sink = load ptr, ptr %.val69.sink.in, align 8, !tbaa !30 - %22 = sext i32 %.sink83 to i64 - %23 = getelementptr inbounds i32, ptr %.val69.sink, i64 %22 - %24 = load i32, ptr %23, align 4, !tbaa !31 - %25 = icmp slt i32 %19, %2 - %26 = select i1 %25, i32 0, i32 %2 - %.sink84 = sub nsw i32 %19, %26 - %.val67.sink.in = select i1 %25, ptr %12, ptr %11 - %.val67.sink = load ptr, ptr %.val67.sink.in, align 8, !tbaa !30 - %27 = sext i32 %.sink84 to i64 - %28 = getelementptr inbounds i32, ptr %.val67.sink, i64 %27 - %29 = load i32, ptr %28, align 4, !tbaa !31 - %30 = icmp slt i32 %18, %19 - br i1 %30, label %31, label %40 - -31: ; preds = %13 - %32 = and i32 %15, 1 - %33 = xor i32 %24, %32 - %34 = and i32 %17, 1 - %35 = xor i32 %29, %34 - br i1 %.not, label %38, label %36 - -36: ; preds = %31 - %37 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %33, i32 noundef %35) #32 - br label %58 + br i1 %20, label %21, label %24 -38: ; preds = %31 - %39 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef %0, i32 noundef %33, i32 noundef %35) - br label %58 +21: ; preds = %13 + %.val70 = load ptr, ptr %12, align 8, !tbaa !30 + %22 = sext i32 %18 to i64 + %23 = getelementptr inbounds i32, ptr %.val70, i64 %22 + br label %28 -40: ; preds = %13 - %41 = icmp sgt i32 %18, %19 - br i1 %41, label %42, label %58 +24: ; preds = %13 + %25 = sub nsw i32 %18, %2 + %.val69 = load ptr, ptr %11, align 8, !tbaa !30 + %26 = zext nneg i32 %25 to i64 + %27 = getelementptr inbounds nuw i32, ptr %.val69, i64 %26 + br label %28 -42: ; preds = %40 - %43 = and i32 %15, 1 - %44 = xor i32 %24, %43 - %45 = and i32 %17, 1 - %46 = xor i32 %29, %45 - br i1 %.not, label %49, label %47 +28: ; preds = %24, %21 + %.in = phi ptr [ %23, %21 ], [ %27, %24 ] + %29 = load i32, ptr %.in, align 4, !tbaa !31 + %30 = icmp slt i32 %19, %2 + br i1 %30, label %31, label %34 -47: ; preds = %42 - %48 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %44, i32 noundef %46) #32 - br label %58 +31: ; preds = %28 + %.val68 = load ptr, ptr %12, align 8, !tbaa !30 + %32 = sext i32 %19 to i64 + %33 = getelementptr inbounds i32, ptr %.val68, i64 %32 + br label %38 -49: ; preds = %42 - %50 = xor i32 %46, 1 - %51 = xor i32 %44, 1 - %52 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef %0, i32 noundef %51, i32 noundef %46) - %53 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef %0, i32 noundef %44, i32 noundef %50) - %54 = xor i32 %52, 1 - %55 = xor i32 %53, 1 - %56 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef %0, i32 noundef %54, i32 noundef %55) - %57 = xor i32 %56, 1 - br label %58 +34: ; preds = %28 + %35 = sub nsw i32 %19, %2 + %.val67 = load ptr, ptr %11, align 8, !tbaa !30 + %36 = zext nneg i32 %35 to i64 + %37 = getelementptr inbounds nuw i32, ptr %.val67, i64 %36 + br label %38 -58: ; preds = %49, %47, %40, %36, %38 - %.1 = phi i32 [ %37, %36 ], [ %39, %38 ], [ %48, %47 ], [ %57, %49 ], [ %.05577, %40 ] - %59 = load i32, ptr %9, align 4, !tbaa !28 - %60 = load i32, ptr %4, align 8, !tbaa !29 - %61 = icmp eq i32 %59, %60 - br i1 %61, label %62, label %.Vec_IntGrow.exit10_crit_edge.i +38: ; preds = %34, %31 + %.in75 = phi ptr [ %33, %31 ], [ %37, %34 ] + %39 = load i32, ptr %.in75, align 4, !tbaa !31 + %40 = icmp slt i32 %18, %19 + br i1 %40, label %41, label %50 -.Vec_IntGrow.exit10_crit_edge.i: ; preds = %58 +41: ; preds = %38 + %42 = and i32 %15, 1 + %43 = xor i32 %29, %42 + %44 = and i32 %17, 1 + %45 = xor i32 %39, %44 + br i1 %.not, label %48, label %46 + +46: ; preds = %41 + %47 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %43, i32 noundef %45) #32 + br label %68 + +48: ; preds = %41 + %49 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef %0, i32 noundef %43, i32 noundef %45) + br label %68 + +50: ; preds = %38 + %51 = icmp sgt i32 %18, %19 + br i1 %51, label %52, label %68 + +52: ; preds = %50 + %53 = and i32 %15, 1 + %54 = xor i32 %29, %53 + %55 = and i32 %17, 1 + %56 = xor i32 %39, %55 + br i1 %.not, label %59, label %57 + +57: ; preds = %52 + %58 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %54, i32 noundef %56) #32 + br label %68 + +59: ; preds = %52 + %60 = xor i32 %56, 1 + %61 = xor i32 %54, 1 + %62 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef %0, i32 noundef %61, i32 noundef %56) + %63 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef %0, i32 noundef %54, i32 noundef %60) + %64 = xor i32 %62, 1 + %65 = xor i32 %63, 1 + %66 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef %0, i32 noundef %64, i32 noundef %65) + %67 = xor i32 %66, 1 + br label %68 + +68: ; preds = %59, %57, %50, %46, %48 + %.1 = phi i32 [ %47, %46 ], [ %49, %48 ], [ %58, %57 ], [ %67, %59 ], [ %.05577, %50 ] + %69 = load i32, ptr %9, align 4, !tbaa !28 + %70 = load i32, ptr %4, align 8, !tbaa !29 + %71 = icmp eq i32 %69, %70 + br i1 %71, label %72, label %.Vec_IntGrow.exit10_crit_edge.i + +.Vec_IntGrow.exit10_crit_edge.i: ; preds = %68 %.pre.i = load ptr, ptr %11, align 8, !tbaa !30 br label %Vec_IntPush.exit -62: ; preds = %58 - %63 = icmp slt i32 %59, 16 - br i1 %63, label %64, label %71 +72: ; preds = %68 + %73 = icmp slt i32 %69, 16 + br i1 %73, label %74, label %81 -64: ; preds = %62 - %65 = load ptr, ptr %11, align 8, !tbaa !30 - %.not9.i.i = icmp eq ptr %65, null - br i1 %.not9.i.i, label %68, label %66 +74: ; preds = %72 + %75 = load ptr, ptr %11, align 8, !tbaa !30 + %.not9.i.i = icmp eq ptr %75, null + br i1 %.not9.i.i, label %78, label %76 -66: ; preds = %64 - %67 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %65, i64 noundef 64) #30 +76: ; preds = %74 + %77 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %75, i64 noundef 64) #30 br label %Vec_IntGrow.exit.i -68: ; preds = %64 - %69 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #31 +78: ; preds = %74 + %79 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #31 br label %Vec_IntGrow.exit.i -Vec_IntGrow.exit.i: ; preds = %68, %66 - %70 = phi ptr [ %67, %66 ], [ %69, %68 ] - store ptr %70, ptr %11, align 8, !tbaa !30 +Vec_IntGrow.exit.i: ; preds = %78, %76 + %80 = phi ptr [ %77, %76 ], [ %79, %78 ] + store ptr %80, ptr %11, align 8, !tbaa !30 store i32 16, ptr %4, align 8, !tbaa !29 br label %Vec_IntPush.exit -71: ; preds = %62 - %72 = shl nuw nsw i32 %59, 1 - %73 = load ptr, ptr %11, align 8, !tbaa !30 - %.not9.i9.i = icmp eq ptr %73, null - %74 = zext nneg i32 %72 to i64 - %75 = shl nuw nsw i64 %74, 2 - br i1 %.not9.i9.i, label %78, label %76 +81: ; preds = %72 + %82 = shl nuw nsw i32 %69, 1 + %83 = load ptr, ptr %11, align 8, !tbaa !30 + %.not9.i9.i = icmp eq ptr %83, null + %84 = zext nneg i32 %82 to i64 + %85 = shl nuw nsw i64 %84, 2 + br i1 %.not9.i9.i, label %88, label %86 -76: ; preds = %71 - %77 = tail call ptr @realloc(ptr noundef nonnull %73, i64 noundef %75) #30 - br label %80 +86: ; preds = %81 + %87 = tail call ptr @realloc(ptr noundef nonnull %83, i64 noundef %85) #30 + br label %90 -78: ; preds = %71 - %79 = tail call noalias ptr @malloc(i64 noundef %75) #31 - br label %80 +88: ; preds = %81 + %89 = tail call noalias ptr @malloc(i64 noundef %85) #31 + br label %90 -80: ; preds = %78, %76 - %81 = phi ptr [ %77, %76 ], [ %79, %78 ] - store ptr %81, ptr %11, align 8, !tbaa !30 - store i32 %72, ptr %4, align 8, !tbaa !29 +90: ; preds = %88, %86 + %91 = phi ptr [ %87, %86 ], [ %89, %88 ] + store ptr %91, ptr %11, align 8, !tbaa !30 + store i32 %82, ptr %4, align 8, !tbaa !29 br label %Vec_IntPush.exit -Vec_IntPush.exit: ; preds = %.Vec_IntGrow.exit10_crit_edge.i, %Vec_IntGrow.exit.i, %80 - %82 = phi ptr [ %.pre.i, %.Vec_IntGrow.exit10_crit_edge.i ], [ %81, %80 ], [ %70, %Vec_IntGrow.exit.i ] - %83 = load i32, ptr %9, align 4, !tbaa !28 - %84 = add nsw i32 %83, 1 - store i32 %84, ptr %9, align 4, !tbaa !28 - %85 = sext i32 %83 to i64 - %86 = getelementptr inbounds i32, ptr %82, i64 %85 - store i32 %.1, ptr %86, align 4, !tbaa !31 +Vec_IntPush.exit: ; preds = %.Vec_IntGrow.exit10_crit_edge.i, %Vec_IntGrow.exit.i, %90 + %92 = phi ptr [ %.pre.i, %.Vec_IntGrow.exit10_crit_edge.i ], [ %91, %90 ], [ %80, %Vec_IntGrow.exit.i ] + %93 = load i32, ptr %9, align 4, !tbaa !28 + %94 = add nsw i32 %93, 1 + store i32 %94, ptr %9, align 4, !tbaa !28 + %95 = sext i32 %93 to i64 + %96 = getelementptr inbounds i32, ptr %92, i64 %95 + store i32 %.1, ptr %96, align 4, !tbaa !31 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 2 %.val65 = load i32, ptr %7, align 4, !tbaa !28 - %87 = trunc i64 %indvars.iv.next to i32 - %88 = or disjoint i32 %87, 1 - %89 = icmp slt i32 %88, %.val65 - br i1 %89, label %13, label %.critedge, !llvm.loop !107 + %97 = trunc i64 %indvars.iv.next to i32 + %98 = or disjoint i32 %97, 1 + %99 = icmp slt i32 %98, %.val65 + br i1 %99, label %13, label %.critedge, !llvm.loop !107 .critedge: ; preds = %Vec_IntPush.exit, %..critedge_crit_edge - %.val66 = phi ptr [ %.val66.pre, %..critedge_crit_edge ], [ %82, %Vec_IntPush.exit ] + %.val66 = phi ptr [ %.val66.pre, %..critedge_crit_edge ], [ %92, %Vec_IntPush.exit ] %.val65.lcssa = phi i32 [ %.val6576, %..critedge_crit_edge ], [ %.val65, %Vec_IntPush.exit ] - %90 = sdiv i32 %.val65.lcssa, 2 - %91 = sext i32 %90 to i64 - %92 = getelementptr i32, ptr %.val66, i64 %91 - %93 = getelementptr i8, ptr %92, i64 -4 - %94 = load i32, ptr %93, align 4, !tbaa !31 - ret i32 %94 + %100 = sdiv i32 %.val65.lcssa, 2 + %101 = sext i32 %100 to i64 + %102 = getelementptr i32, ptr %.val66, i64 %101 + %103 = getelementptr i8, ptr %102, i64 -4 + %104 = load i32, ptr %103, align 4, !tbaa !31 + ret i32 %104 } declare i32 @Gia_ManHashAnd(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2 diff --git a/bench/abc/optimized/giaResub2.ll b/bench/abc/optimized/giaResub2.ll index 88d1b64bf12..1b61333c48b 100644 --- a/bench/abc/optimized/giaResub2.ll +++ b/bench/abc/optimized/giaResub2.ll @@ -1971,11 +1971,11 @@ define i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2 %11 = getelementptr inbounds i32, ptr %.val129, i64 %10 %12 = load i32, ptr %11, align 4, !tbaa !30 %13 = icmp sgt i32 %12, -1 - br i1 %13, label %172, label %14 + br i1 %13, label %176, label %14 14: ; preds = %8 %15 = icmp eq i32 %7, %3 - br i1 %15, label %16, label %137 + br i1 %15, label %16, label %141 16: ; preds = %14 %17 = getelementptr i8, ptr %5, i64 4 @@ -1990,7 +1990,7 @@ define i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2 %23 = load i32, ptr %22, align 4, !tbaa !30 %24 = ashr i32 %23, 1 %25 = icmp ult i32 %23, 2 - br i1 %25, label %134, label %26 + br i1 %25, label %138, label %26 26: ; preds = %16 %27 = icmp slt i32 %24, %.val132 @@ -2003,7 +2003,7 @@ define i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2 %31 = getelementptr inbounds i32, ptr %.val127, i64 %30 %32 = load i32, ptr %31, align 4, !tbaa !30 %33 = tail call i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef -1, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %32) - br label %134 + br label %138 34: ; preds = %26 %35 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #34 @@ -2067,7 +2067,7 @@ define i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2 %64 = ashr i32 %61, 1 %65 = ashr i32 %63, 1 %66 = icmp slt i32 %64, %.val132 - br i1 %66, label %67, label %71 + br i1 %66, label %67, label %73 67: ; preds = %58 %.val122 = load ptr, ptr %42, align 8, !tbaa !3 @@ -2075,151 +2075,153 @@ define i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2 %69 = getelementptr inbounds i32, ptr %.val122, i64 %68 %70 = load i32, ptr %69, align 4, !tbaa !30 %.val121 = load ptr, ptr %9, align 8, !tbaa !3 - br label %73 - -71: ; preds = %58 - %72 = sub nsw i32 %64, %.val132 - br label %73 - -73: ; preds = %71, %67 - %.sink166 = phi i32 [ %72, %71 ], [ %70, %67 ] - %.sink = phi ptr [ %59, %71 ], [ %.val121, %67 ] - %74 = sext i32 %.sink166 to i64 - %75 = getelementptr inbounds i32, ptr %.sink, i64 %74 - %76 = load i32, ptr %75, align 4, !tbaa !30 - %77 = icmp slt i32 %65, %.val132 - br i1 %77, label %78, label %82 - -78: ; preds = %73 + %71 = sext i32 %70 to i64 + %72 = getelementptr inbounds i32, ptr %.val121, i64 %71 + br label %77 + +73: ; preds = %58 + %74 = sub nsw i32 %64, %.val132 + %75 = zext nneg i32 %74 to i64 + %76 = getelementptr inbounds nuw i32, ptr %59, i64 %75 + br label %77 + +77: ; preds = %73, %67 + %.in = phi ptr [ %72, %67 ], [ %76, %73 ] + %78 = load i32, ptr %.in, align 4, !tbaa !30 + %79 = icmp slt i32 %65, %.val132 + br i1 %79, label %80, label %86 + +80: ; preds = %77 %.val119 = load ptr, ptr %42, align 8, !tbaa !3 - %79 = sext i32 %65 to i64 - %80 = getelementptr inbounds i32, ptr %.val119, i64 %79 - %81 = load i32, ptr %80, align 4, !tbaa !30 + %81 = sext i32 %65 to i64 + %82 = getelementptr inbounds i32, ptr %.val119, i64 %81 + %83 = load i32, ptr %82, align 4, !tbaa !30 %.val118 = load ptr, ptr %9, align 8, !tbaa !3 - br label %84 - -82: ; preds = %73 - %83 = sub nsw i32 %65, %.val132 - br label %84 - -84: ; preds = %82, %78 - %.sink169 = phi i32 [ %83, %82 ], [ %81, %78 ] - %.sink167 = phi ptr [ %59, %82 ], [ %.val118, %78 ] - %85 = sext i32 %.sink169 to i64 - %86 = getelementptr inbounds i32, ptr %.sink167, i64 %85 - %87 = load i32, ptr %86, align 4, !tbaa !30 - %88 = icmp slt i32 %76, %87 - %..i = select i1 %88, i32 %61, i32 %63 - %.53.i = tail call i32 @llvm.smin.i32(i32 %76, i32 %87) - %.54.i = select i1 %88, i32 %63, i32 %61 - %.55.i = tail call i32 @llvm.smax.i32(i32 %76, i32 %87) - %89 = and i32 %..i, 1 - %90 = xor i32 %89, %.53.i - %91 = and i32 %.54.i, 1 - %92 = xor i32 %91, %.55.i + %84 = sext i32 %83 to i64 + %85 = getelementptr inbounds i32, ptr %.val118, i64 %84 + br label %90 + +86: ; preds = %77 + %87 = sub nsw i32 %65, %.val132 + %88 = zext nneg i32 %87 to i64 + %89 = getelementptr inbounds nuw i32, ptr %59, i64 %88 + br label %90 + +90: ; preds = %86, %80 + %.in144 = phi ptr [ %85, %80 ], [ %89, %86 ] + %91 = load i32, ptr %.in144, align 4, !tbaa !30 + %92 = icmp slt i32 %78, %91 + %..i = select i1 %92, i32 %61, i32 %63 + %.53.i = tail call i32 @llvm.smin.i32(i32 %78, i32 %91) + %.54.i = select i1 %92, i32 %63, i32 %61 + %.55.i = tail call i32 @llvm.smax.i32(i32 %78, i32 %91) + %93 = and i32 %..i, 1 + %94 = xor i32 %93, %.53.i + %95 = and i32 %.54.i, 1 + %96 = xor i32 %95, %.55.i %.val.i = load i32, ptr %43, align 4, !tbaa !10 - %93 = icmp slt i32 %61, %63 - br i1 %93, label %94, label %99 + %97 = icmp slt i32 %61, %63 + br i1 %97, label %98, label %103 -94: ; preds = %84 - switch i32 %90, label %96 [ +98: ; preds = %90 + switch i32 %94, label %100 [ i32 0, label %Gia_Rsb2AddNode.exit - i32 1, label %95 + i32 1, label %99 ] -95: ; preds = %94 +99: ; preds = %98 br label %Gia_Rsb2AddNode.exit -96: ; preds = %94 - %97 = xor i32 %92, %90 - %98 = icmp eq i32 %97, 1 - br i1 %98, label %Gia_Rsb2AddNode.exit, label %107 +100: ; preds = %98 + %101 = xor i32 %96, %94 + %102 = icmp eq i32 %101, 1 + br i1 %102, label %Gia_Rsb2AddNode.exit, label %111 -99: ; preds = %84 - %100 = icmp sgt i32 %61, %63 - br i1 %100, label %101, label %Gia_Rsb2AddNode.exit +103: ; preds = %90 + %104 = icmp sgt i32 %61, %63 + br i1 %104, label %105, label %Gia_Rsb2AddNode.exit -101: ; preds = %99 - switch i32 %90, label %104 [ +105: ; preds = %103 + switch i32 %94, label %108 [ i32 0, label %Gia_Rsb2AddNode.exit - i32 1, label %102 + i32 1, label %106 ] -102: ; preds = %101 - %103 = xor i32 %92, 1 +106: ; preds = %105 + %107 = xor i32 %96, 1 br label %Gia_Rsb2AddNode.exit -104: ; preds = %101 - %105 = xor i32 %92, %90 - %106 = icmp eq i32 %105, 1 - br i1 %106, label %Gia_Rsb2AddNode.exit, label %108 +108: ; preds = %105 + %109 = xor i32 %96, %94 + %110 = icmp eq i32 %109, 1 + br i1 %110, label %Gia_Rsb2AddNode.exit, label %112 -107: ; preds = %96 - tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %0, i32 noundef %90, i32 noundef %92) +111: ; preds = %100 + tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %0, i32 noundef %94, i32 noundef %96) br label %Gia_Rsb2AddNode.exit -108: ; preds = %104 - tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %0, i32 noundef %92, i32 noundef %90) +112: ; preds = %108 + tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %0, i32 noundef %96, i32 noundef %94) br label %Gia_Rsb2AddNode.exit -Gia_Rsb2AddNode.exit: ; preds = %94, %95, %96, %99, %101, %102, %104, %107, %108 - %.0.i = phi i32 [ %92, %95 ], [ %103, %102 ], [ %90, %94 ], [ 0, %96 ], [ %92, %101 ], [ 1, %104 ], [ %.val.i, %108 ], [ %.val.i, %107 ], [ %.val.i, %99 ] - %109 = load i32, ptr %36, align 4, !tbaa !10 - %110 = load i32, ptr %35, align 8, !tbaa !11 - %111 = icmp eq i32 %109, %110 - br i1 %111, label %112, label %Vec_IntPush.exit +Gia_Rsb2AddNode.exit: ; preds = %98, %99, %100, %103, %105, %106, %108, %111, %112 + %.0.i = phi i32 [ %96, %99 ], [ %107, %106 ], [ %94, %98 ], [ 0, %100 ], [ %96, %105 ], [ 1, %108 ], [ %.val.i, %112 ], [ %.val.i, %111 ], [ %.val.i, %103 ] + %113 = load i32, ptr %36, align 4, !tbaa !10 + %114 = load i32, ptr %35, align 8, !tbaa !11 + %115 = icmp eq i32 %113, %114 + br i1 %115, label %116, label %Vec_IntPush.exit -112: ; preds = %Gia_Rsb2AddNode.exit - %113 = icmp slt i32 %109, 16 - br i1 %113, label %114, label %119 +116: ; preds = %Gia_Rsb2AddNode.exit + %117 = icmp slt i32 %113, 16 + br i1 %117, label %118, label %123 -114: ; preds = %112 +118: ; preds = %116 %.not9.i.i = icmp eq ptr %59, null - br i1 %.not9.i.i, label %117, label %115 + br i1 %.not9.i.i, label %121, label %119 -115: ; preds = %114 - %116 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %59, i64 noundef 64) #33 +119: ; preds = %118 + %120 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %59, i64 noundef 64) #33 br label %Vec_IntPush.exit.sink.split -117: ; preds = %114 - %118 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #34 +121: ; preds = %118 + %122 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #34 br label %Vec_IntPush.exit.sink.split -119: ; preds = %112 - %120 = shl nuw nsw i32 %109, 1 +123: ; preds = %116 + %124 = shl nuw nsw i32 %113, 1 %.not9.i9.i = icmp eq ptr %59, null - %121 = zext nneg i32 %120 to i64 - %122 = shl nuw nsw i64 %121, 2 - br i1 %.not9.i9.i, label %125, label %123 + %125 = zext nneg i32 %124 to i64 + %126 = shl nuw nsw i64 %125, 2 + br i1 %.not9.i9.i, label %129, label %127 -123: ; preds = %119 - %124 = tail call ptr @realloc(ptr noundef nonnull %59, i64 noundef %122) #33 +127: ; preds = %123 + %128 = tail call ptr @realloc(ptr noundef nonnull %59, i64 noundef %126) #33 br label %Vec_IntPush.exit.sink.split -125: ; preds = %119 - %126 = tail call noalias ptr @malloc(i64 noundef %122) #34 +129: ; preds = %123 + %130 = tail call noalias ptr @malloc(i64 noundef %126) #34 br label %Vec_IntPush.exit.sink.split -Vec_IntPush.exit.sink.split: ; preds = %123, %125, %115, %117 - %.sink171 = phi ptr [ %116, %115 ], [ %118, %117 ], [ %124, %123 ], [ %126, %125 ] - %.sink170 = phi i32 [ 16, %115 ], [ 16, %117 ], [ %120, %123 ], [ %120, %125 ] - store ptr %.sink171, ptr %38, align 8, !tbaa !3 - store i32 %.sink170, ptr %35, align 8, !tbaa !11 +Vec_IntPush.exit.sink.split: ; preds = %127, %129, %119, %121 + %.sink165 = phi ptr [ %120, %119 ], [ %122, %121 ], [ %128, %127 ], [ %130, %129 ] + %.sink = phi i32 [ 16, %119 ], [ 16, %121 ], [ %124, %127 ], [ %124, %129 ] + store ptr %.sink165, ptr %38, align 8, !tbaa !3 + store i32 %.sink, ptr %35, align 8, !tbaa !11 br label %Vec_IntPush.exit Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.sink.split, %Gia_Rsb2AddNode.exit - %.pre.i159 = phi ptr [ %59, %Gia_Rsb2AddNode.exit ], [ %.sink171, %Vec_IntPush.exit.sink.split ] - %127 = add nsw i32 %109, 1 - store i32 %127, ptr %36, align 4, !tbaa !10 - %128 = sext i32 %109 to i64 - %129 = getelementptr inbounds i32, ptr %.pre.i159, i64 %128 - store i32 %.0.i, ptr %129, align 4, !tbaa !30 + %.pre.i159 = phi ptr [ %59, %Gia_Rsb2AddNode.exit ], [ %.sink165, %Vec_IntPush.exit.sink.split ] + %131 = add nsw i32 %113, 1 + store i32 %131, ptr %36, align 4, !tbaa !10 + %132 = sext i32 %113 to i64 + %133 = getelementptr inbounds i32, ptr %.pre.i159, i64 %132 + store i32 %.0.i, ptr %133, align 4, !tbaa !30 %indvars.iv.next152 = add nuw nsw i64 %indvars.iv151, 2 %.val130 = load i32, ptr %18, align 4, !tbaa !10 - %130 = trunc i64 %indvars.iv.next152 to i32 - %131 = or disjoint i32 %130, 1 - %132 = icmp slt i32 %131, %.val130 - br i1 %132, label %58, label %.critedge2.thread, !llvm.loop !61 + %134 = trunc i64 %indvars.iv.next152 to i32 + %135 = or disjoint i32 %134, 1 + %136 = icmp slt i32 %135, %.val130 + br i1 %136, label %58, label %.critedge2.thread, !llvm.loop !61 .critedge2: ; preds = %34, %.critedge.preheader %.not.i = icmp eq ptr %37, null @@ -2227,97 +2229,97 @@ Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.si .critedge2.thread: ; preds = %Vec_IntPush.exit, %.critedge2 %.1.lcssa163 = phi i32 [ -1, %.critedge2 ], [ %.0.i, %Vec_IntPush.exit ] - %133 = phi ptr [ %37, %.critedge2 ], [ %.pre.i159, %Vec_IntPush.exit ] - tail call void @free(ptr noundef nonnull %133) #32 + %137 = phi ptr [ %37, %.critedge2 ], [ %.pre.i159, %Vec_IntPush.exit ] + tail call void @free(ptr noundef nonnull %137) #32 br label %Vec_IntFree.exit Vec_IntFree.exit: ; preds = %.critedge2, %.critedge2.thread %.1.lcssa164 = phi i32 [ -1, %.critedge2 ], [ %.1.lcssa163, %.critedge2.thread ] tail call void @free(ptr noundef nonnull %35) #32 - br label %134 + br label %138 -134: ; preds = %16, %28, %Vec_IntFree.exit +138: ; preds = %16, %28, %Vec_IntFree.exit %.0104 = phi i32 [ %33, %28 ], [ %.1.lcssa164, %Vec_IntFree.exit ], [ 0, %16 ] - %135 = and i32 %23, 1 - %136 = xor i32 %.0104, %135 + %139 = and i32 %23, 1 + %140 = xor i32 %.0104, %139 br label %.sink.split -137: ; preds = %14 - %138 = shl nsw i32 %7, 1 - %139 = getelementptr i8, ptr %2, i64 8 - %.val116 = load ptr, ptr %139, align 8, !tbaa !3 - %140 = sext i32 %138 to i64 - %141 = getelementptr i32, ptr %.val116, i64 %140 - %142 = load i32, ptr %141, align 4, !tbaa !30 - %143 = getelementptr i8, ptr %141, i64 4 - %144 = load i32, ptr %143, align 4, !tbaa !30 - %145 = ashr i32 %142, 1 - %146 = tail call i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %145) - %147 = ashr i32 %144, 1 - %148 = tail call i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %147) - %149 = icmp slt i32 %146, %148 - %..i137 = select i1 %149, i32 %142, i32 %144 - %.53.i138 = tail call i32 @llvm.smin.i32(i32 %146, i32 %148) - %.54.i139 = select i1 %149, i32 %144, i32 %142 - %.55.i140 = tail call i32 @llvm.smax.i32(i32 %146, i32 %148) - %150 = and i32 %..i137, 1 - %151 = xor i32 %150, %.53.i138 - %152 = and i32 %.54.i139, 1 - %153 = xor i32 %152, %.55.i140 - %154 = getelementptr i8, ptr %0, i64 4 - %.val.i141 = load i32, ptr %154, align 4, !tbaa !10 - %155 = icmp slt i32 %142, %144 - br i1 %155, label %156, label %161 - -156: ; preds = %137 - switch i32 %151, label %158 [ +141: ; preds = %14 + %142 = shl nsw i32 %7, 1 + %143 = getelementptr i8, ptr %2, i64 8 + %.val116 = load ptr, ptr %143, align 8, !tbaa !3 + %144 = sext i32 %142 to i64 + %145 = getelementptr i32, ptr %.val116, i64 %144 + %146 = load i32, ptr %145, align 4, !tbaa !30 + %147 = getelementptr i8, ptr %145, i64 4 + %148 = load i32, ptr %147, align 4, !tbaa !30 + %149 = ashr i32 %146, 1 + %150 = tail call i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %149) + %151 = ashr i32 %148, 1 + %152 = tail call i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %151) + %153 = icmp slt i32 %150, %152 + %..i137 = select i1 %153, i32 %146, i32 %148 + %.53.i138 = tail call i32 @llvm.smin.i32(i32 %150, i32 %152) + %.54.i139 = select i1 %153, i32 %148, i32 %146 + %.55.i140 = tail call i32 @llvm.smax.i32(i32 %150, i32 %152) + %154 = and i32 %..i137, 1 + %155 = xor i32 %154, %.53.i138 + %156 = and i32 %.54.i139, 1 + %157 = xor i32 %156, %.55.i140 + %158 = getelementptr i8, ptr %0, i64 4 + %.val.i141 = load i32, ptr %158, align 4, !tbaa !10 + %159 = icmp slt i32 %146, %148 + br i1 %159, label %160, label %165 + +160: ; preds = %141 + switch i32 %155, label %162 [ i32 0, label %.sink.split - i32 1, label %157 + i32 1, label %161 ] -157: ; preds = %156 +161: ; preds = %160 br label %.sink.split -158: ; preds = %156 - %159 = xor i32 %153, %151 - %160 = icmp eq i32 %159, 1 - br i1 %160, label %.sink.split, label %169 +162: ; preds = %160 + %163 = xor i32 %157, %155 + %164 = icmp eq i32 %163, 1 + br i1 %164, label %.sink.split, label %173 -161: ; preds = %137 - %162 = icmp sgt i32 %142, %144 - br i1 %162, label %163, label %.sink.split +165: ; preds = %141 + %166 = icmp sgt i32 %146, %148 + br i1 %166, label %167, label %.sink.split -163: ; preds = %161 - switch i32 %151, label %166 [ +167: ; preds = %165 + switch i32 %155, label %170 [ i32 0, label %.sink.split - i32 1, label %164 + i32 1, label %168 ] -164: ; preds = %163 - %165 = xor i32 %153, 1 +168: ; preds = %167 + %169 = xor i32 %157, 1 br label %.sink.split -166: ; preds = %163 - %167 = xor i32 %153, %151 - %168 = icmp eq i32 %167, 1 - br i1 %168, label %.sink.split, label %170 +170: ; preds = %167 + %171 = xor i32 %157, %155 + %172 = icmp eq i32 %171, 1 + br i1 %172, label %.sink.split, label %174 -169: ; preds = %158 - tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %0, i32 noundef %151, i32 noundef %153) +173: ; preds = %162 + tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %0, i32 noundef %155, i32 noundef %157) br label %.sink.split -170: ; preds = %166 - tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %0, i32 noundef %153, i32 noundef %151) +174: ; preds = %170 + tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %0, i32 noundef %157, i32 noundef %155) br label %.sink.split -.sink.split: ; preds = %170, %169, %166, %164, %163, %161, %158, %157, %156, %134 - %.0.i142.sink = phi i32 [ %136, %134 ], [ %153, %157 ], [ %165, %164 ], [ %151, %156 ], [ 0, %158 ], [ %153, %163 ], [ 1, %166 ], [ %.val.i141, %170 ], [ %.val.i141, %169 ], [ %.val.i141, %161 ] +.sink.split: ; preds = %174, %173, %170, %168, %167, %165, %162, %161, %160, %138 + %.0.i142.sink = phi i32 [ %140, %138 ], [ %157, %161 ], [ %169, %168 ], [ %155, %160 ], [ 0, %162 ], [ %157, %167 ], [ 1, %170 ], [ %.val.i141, %174 ], [ %.val.i141, %173 ], [ %.val.i141, %165 ] %.val136 = load ptr, ptr %9, align 8, !tbaa !3 - %171 = getelementptr inbounds i32, ptr %.val136, i64 %10 - store i32 %.0.i142.sink, ptr %171, align 4, !tbaa !30 - br label %172 + %175 = getelementptr inbounds i32, ptr %.val136, i64 %10 + store i32 %.0.i142.sink, ptr %175, align 4, !tbaa !30 + br label %176 -172: ; preds = %.sink.split, %8 +176: ; preds = %.sink.split, %8 %.0 = phi i32 [ %12, %8 ], [ %.0.i142.sink, %.sink.split ] ret i32 %.0 } diff --git a/bench/abc/optimized/ifDec16.ll b/bench/abc/optimized/ifDec16.ll index 9d11d15e1a0..54788fbc8f2 100644 --- a/bench/abc/optimized/ifDec16.ll +++ b/bench/abc/optimized/ifDec16.ll @@ -6386,163 +6386,165 @@ define void @If_CluFindGroup(ptr dead_on_unwind noalias writable sret(%struct.If %31 = add nsw i32 %2, -1 %32 = icmp slt i32 %7, %31 %33 = sub nsw i32 %31, %7 - %34 = sext i32 %33 to i64 - %35 = getelementptr inbounds i32, ptr %6, i64 %34 + %34 = zext nneg i32 %33 to i64 + %35 = getelementptr inbounds nuw i32, ptr %6, i64 %34 %36 = add nsw i32 %7, 1 %37 = add i32 %2, -2 %38 = sub i32 %37, %7 %.not152166 = icmp slt i32 %38, %3 - %39 = sub i32 %2, %7 - %40 = sub nsw i32 %2, %4 - %41 = icmp slt i32 %4, %7 - %42 = shl nuw i32 1, %7 - %43 = icmp slt i32 %39, 6 - %44 = add i32 %39, -6 - %45 = shl nuw i32 1, %44 + %39 = sext i32 %33 to i64 + %40 = getelementptr inbounds i32, ptr %6, i64 %39 + %41 = sub i32 %2, %7 + %42 = sub nsw i32 %2, %4 + %43 = icmp slt i32 %4, %7 + %44 = shl nuw i32 1, %7 + %45 = icmp slt i32 %41, 6 + %46 = add i32 %41, -6 + %47 = shl nuw i32 1, %46 %.not.i = icmp eq i32 %7, 31 - %46 = sext i32 %45 to i64 - %.not178.i = icmp eq i32 %44, 31 - %smax.i = tail call i32 @llvm.smax.i32(i32 %45, i32 1) - %smax200.i = tail call i32 @llvm.smax.i32(i32 %42, i32 1) + %48 = sext i32 %47 to i64 + %.not178.i = icmp eq i32 %46, 31 + %smax.i = tail call i32 @llvm.smax.i32(i32 %47, i32 1) + %smax200.i = tail call i32 @llvm.smax.i32(i32 %44, i32 1) %wide.trip.count201.i = zext nneg i32 %smax200.i to i64 %wide.trip.count.i = zext nneg i32 %smax.i to i64 - %47 = shl nuw nsw i32 1, %39 - %48 = zext nneg i32 %47 to i64 - %notmask.i = shl nsw i64 -1, %48 - %49 = xor i64 %notmask.i, -1 - %50 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %51 = sext i32 %38 to i64 - %52 = sext i32 %3 to i64 - %53 = sext i32 %39 to i64 - %54 = sext i32 %40 to i64 + %49 = shl nuw nsw i32 1, %41 + %50 = zext nneg i32 %49 to i64 + %notmask.i = shl nsw i64 -1, %50 + %51 = xor i64 %notmask.i, -1 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %53 = sext i32 %38 to i64 + %54 = sext i32 %3 to i64 + %55 = sext i32 %41 to i64 + %56 = sext i32 %42 to i64 %wide.trip.count202 = zext nneg i32 %7 to i64 - %invariant.gep211 = getelementptr i32, ptr %6, i64 %53 - br label %55 + %invariant.gep211 = getelementptr i32, ptr %6, i64 %55 + br label %57 -55: ; preds = %.preheader, %152 - %56 = phi i1 [ true, %.preheader ], [ false, %152 ] - br i1 %32, label %57, label %73 +57: ; preds = %.preheader, %154 + %58 = phi i1 [ true, %.preheader ], [ false, %154 ] + br i1 %32, label %59, label %75 -57: ; preds = %55 - %58 = load i32, ptr %35, align 4, !tbaa !6 - %59 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %36, i32 noundef 0, ptr noundef null) +59: ; preds = %57 + %60 = load i32, ptr %35, align 4, !tbaa !6 + %61 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %36, i32 noundef 0, ptr noundef null) br i1 %.not152166, label %._crit_edge172, label %.lr.ph171 -.lr.ph171: ; preds = %57, %68 - %indvars.iv193 = phi i64 [ %indvars.iv.next194, %68 ], [ %51, %57 ] - %.0169 = phi i32 [ %.1, %68 ], [ %59, %57 ] - %.0135168 = phi i32 [ %.1136, %68 ], [ %58, %57 ] - %60 = getelementptr inbounds i32, ptr %6, i64 %indvars.iv193 - %61 = load i32, ptr %60, align 4, !tbaa !6 - %62 = sext i32 %61 to i64 - %63 = getelementptr inbounds i32, ptr %5, i64 %62 - %64 = load i32, ptr %63, align 4, !tbaa !6 - tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %64, i32 noundef %33) - %65 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %36, i32 noundef 0, ptr noundef null) - %.not156 = icmp slt i32 %.0169, %65 - br i1 %.not156, label %68, label %66 - -66: ; preds = %.lr.ph171 - %67 = load i32, ptr %35, align 4, !tbaa !6 - br label %68 - -68: ; preds = %.lr.ph171, %66 - %.1136 = phi i32 [ %67, %66 ], [ %.0135168, %.lr.ph171 ] - %.1 = phi i32 [ %65, %66 ], [ %.0169, %.lr.ph171 ] +.lr.ph171: ; preds = %59, %70 + %indvars.iv193 = phi i64 [ %indvars.iv.next194, %70 ], [ %53, %59 ] + %.0169 = phi i32 [ %.1, %70 ], [ %61, %59 ] + %.0135168 = phi i32 [ %.1136, %70 ], [ %60, %59 ] + %62 = getelementptr inbounds i32, ptr %6, i64 %indvars.iv193 + %63 = load i32, ptr %62, align 4, !tbaa !6 + %64 = sext i32 %63 to i64 + %65 = getelementptr inbounds i32, ptr %5, i64 %64 + %66 = load i32, ptr %65, align 4, !tbaa !6 + tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %66, i32 noundef %33) + %67 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %36, i32 noundef 0, ptr noundef null) + %.not156 = icmp slt i32 %.0169, %67 + br i1 %.not156, label %70, label %68 + +68: ; preds = %.lr.ph171 + %69 = load i32, ptr %35, align 4, !tbaa !6 + br label %70 + +70: ; preds = %.lr.ph171, %68 + %.1136 = phi i32 [ %69, %68 ], [ %.0135168, %.lr.ph171 ] + %.1 = phi i32 [ %67, %68 ], [ %.0169, %.lr.ph171 ] %indvars.iv.next194 = add nsw i64 %indvars.iv193, -1 - %.not152.not = icmp sgt i64 %indvars.iv193, %52 + %.not152.not = icmp sgt i64 %indvars.iv193, %54 br i1 %.not152.not, label %.lr.ph171, label %._crit_edge172, !llvm.loop !167 -._crit_edge172: ; preds = %68, %57 - %.0135.lcssa = phi i32 [ %58, %57 ], [ %.1136, %68 ] - %69 = sext i32 %.0135.lcssa to i64 - %70 = getelementptr inbounds i32, ptr %5, i64 %69 - %71 = load i32, ptr %70, align 4, !tbaa !6 - tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %71, i32 noundef %33) - %72 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %36, i32 noundef 0, ptr noundef null) - br label %73 - -73: ; preds = %._crit_edge172, %55 - %74 = load i32, ptr %35, align 4, !tbaa !6 - %75 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %7, i32 noundef 0, ptr noundef null) - br i1 %41, label %.lr.ph177, label %._crit_edge178 - -.lr.ph177: ; preds = %73, %134 - %indvars.iv196 = phi i64 [ %indvars.iv.next197, %134 ], [ %53, %73 ] - %.2175 = phi i32 [ %.3, %134 ], [ %75, %73 ] - %.2137174 = phi i32 [ %.3138, %134 ], [ %74, %73 ] - %76 = getelementptr inbounds i32, ptr %6, i64 %indvars.iv196 - %77 = load i32, ptr %76, align 4, !tbaa !6 - %78 = sext i32 %77 to i64 - %79 = getelementptr inbounds i32, ptr %5, i64 %78 - %80 = load i32, ptr %79, align 4, !tbaa !6 - tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef %6, i32 noundef %80, i32 noundef %33) +._crit_edge172: ; preds = %70, %59 + %.0135.lcssa = phi i32 [ %60, %59 ], [ %.1136, %70 ] + %71 = sext i32 %.0135.lcssa to i64 + %72 = getelementptr inbounds i32, ptr %5, i64 %71 + %73 = load i32, ptr %72, align 4, !tbaa !6 + tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %73, i32 noundef %33) + %74 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %36, i32 noundef 0, ptr noundef null) + br label %75 + +75: ; preds = %._crit_edge172, %57 + %76 = load i32, ptr %40, align 4, !tbaa !6 + %77 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %7, i32 noundef 0, ptr noundef null) + br i1 %43, label %.lr.ph177, label %._crit_edge178 + +.lr.ph177: ; preds = %75, %136 + %indvars.iv196 = phi i64 [ %indvars.iv.next197, %136 ], [ %55, %75 ] + %.2175 = phi i32 [ %.3, %136 ], [ %77, %75 ] + %.2137174 = phi i32 [ %.3138, %136 ], [ %76, %75 ] + %78 = getelementptr inbounds i32, ptr %6, i64 %indvars.iv196 + %79 = load i32, ptr %78, align 4, !tbaa !6 + %80 = sext i32 %79 to i64 + %81 = getelementptr inbounds i32, ptr %5, i64 %80 + %82 = load i32, ptr %81, align 4, !tbaa !6 + tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef %6, i32 noundef %82, i32 noundef %33) call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %10) #22 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) %10, i8 0, i64 1024, i1 false) - br i1 %43, label %81, label %103 + br i1 %45, label %83, label %105 -81: ; preds = %.lr.ph177 +83: ; preds = %.lr.ph177 br i1 %.not.i, label %If_CluCountCofs.exit, label %.lr.ph174.i -.lr.ph174.i: ; preds = %81, %.thread215.i - %indvars.iv208.i = phi i64 [ %indvars.iv.next209.i, %.thread215.i ], [ 0, %81 ] - %.0100170.i = phi i32 [ %.2102217.i, %.thread215.i ], [ 0, %81 ] - %82 = trunc nuw nsw i64 %indvars.iv208.i to i32 - %83 = shl nsw i32 %82, %39 - %84 = sdiv i32 %83, 64 - %85 = sext i32 %84 to i64 - %86 = getelementptr inbounds i64, ptr %1, i64 %85 - %87 = load i64, ptr %86, align 8, !tbaa !16 - %88 = and i32 %83, 63 - %89 = zext nneg i32 %88 to i64 - %90 = lshr i64 %87, %89 - %91 = and i64 %90, %49 - %92 = icmp sgt i32 %.0100170.i, 0 - br i1 %92, label %.lr.ph165.preheader.i, label %._crit_edge166.i +.lr.ph174.i: ; preds = %83, %.thread215.i + %indvars.iv208.i = phi i64 [ %indvars.iv.next209.i, %.thread215.i ], [ 0, %83 ] + %.0100170.i = phi i32 [ %.2102217.i, %.thread215.i ], [ 0, %83 ] + %84 = trunc nuw nsw i64 %indvars.iv208.i to i32 + %85 = shl nsw i32 %84, %41 + %86 = sdiv i32 %85, 64 + %87 = sext i32 %86 to i64 + %88 = getelementptr inbounds i64, ptr %1, i64 %87 + %89 = load i64, ptr %88, align 8, !tbaa !16 + %90 = and i32 %85, 63 + %91 = zext nneg i32 %90 to i64 + %92 = lshr i64 %89, %91 + %93 = and i64 %92, %51 + %94 = icmp sgt i32 %.0100170.i, 0 + br i1 %94, label %.lr.ph165.preheader.i, label %._crit_edge166.i .lr.ph165.preheader.i: ; preds = %.lr.ph174.i %wide.trip.count206.i = zext nneg i32 %.0100170.i to i64 br label %.lr.ph165.i -.lr.ph165.i: ; preds = %96, %.lr.ph165.preheader.i - %indvars.iv203.i = phi i64 [ 0, %.lr.ph165.preheader.i ], [ %indvars.iv.next204.i, %96 ] - %93 = getelementptr inbounds nuw [128 x i64], ptr %10, i64 0, i64 %indvars.iv203.i - %94 = load i64, ptr %93, align 8, !tbaa !16 - %95 = icmp eq i64 %91, %94 - br i1 %95, label %._crit_edge166.loopexit.i, label %96 +.lr.ph165.i: ; preds = %98, %.lr.ph165.preheader.i + %indvars.iv203.i = phi i64 [ 0, %.lr.ph165.preheader.i ], [ %indvars.iv.next204.i, %98 ] + %95 = getelementptr inbounds nuw [128 x i64], ptr %10, i64 0, i64 %indvars.iv203.i + %96 = load i64, ptr %95, align 8, !tbaa !16 + %97 = icmp eq i64 %93, %96 + br i1 %97, label %._crit_edge166.loopexit.i, label %98 -96: ; preds = %.lr.ph165.i +98: ; preds = %.lr.ph165.i %indvars.iv.next204.i = add nuw nsw i64 %indvars.iv203.i, 1 %exitcond207.not.i = icmp eq i64 %indvars.iv.next204.i, %wide.trip.count206.i br i1 %exitcond207.not.i, label %._crit_edge166.thread.i, label %.lr.ph165.i, !llvm.loop !140 ._crit_edge166.loopexit.i: ; preds = %.lr.ph165.i - %97 = trunc nuw nsw i64 %indvars.iv203.i to i32 + %99 = trunc nuw nsw i64 %indvars.iv203.i to i32 br label %._crit_edge166.i ._crit_edge166.i: ; preds = %._crit_edge166.loopexit.i, %.lr.ph174.i - %.0108.lcssa.i = phi i32 [ 0, %.lr.ph174.i ], [ %97, %._crit_edge166.loopexit.i ] - %98 = icmp eq i32 %.0108.lcssa.i, %.0100170.i - br i1 %98, label %._crit_edge166.thread.i, label %.thread215.i - -._crit_edge166.thread.i: ; preds = %96, %._crit_edge166.i - %99 = add nsw i32 %.0100170.i, 1 - %100 = sext i32 %.0100170.i to i64 - %101 = getelementptr inbounds [128 x i64], ptr %10, i64 0, i64 %100 - store i64 %91, ptr %101, align 8, !tbaa !16 - %102 = icmp eq i32 %99, 5 - br i1 %102, label %If_CluCountCofs.exit, label %.thread215.i + %.0108.lcssa.i = phi i32 [ 0, %.lr.ph174.i ], [ %99, %._crit_edge166.loopexit.i ] + %100 = icmp eq i32 %.0108.lcssa.i, %.0100170.i + br i1 %100, label %._crit_edge166.thread.i, label %.thread215.i + +._crit_edge166.thread.i: ; preds = %98, %._crit_edge166.i + %101 = add nsw i32 %.0100170.i, 1 + %102 = sext i32 %.0100170.i to i64 + %103 = getelementptr inbounds [128 x i64], ptr %10, i64 0, i64 %102 + store i64 %93, ptr %103, align 8, !tbaa !16 + %104 = icmp eq i32 %101, 5 + br i1 %104, label %If_CluCountCofs.exit, label %.thread215.i .thread215.i: ; preds = %._crit_edge166.thread.i, %._crit_edge166.i - %.2102217.i = phi i32 [ %99, %._crit_edge166.thread.i ], [ %.0100170.i, %._crit_edge166.i ] + %.2102217.i = phi i32 [ %101, %._crit_edge166.thread.i ], [ %.0100170.i, %._crit_edge166.i ] %indvars.iv.next209.i = add nuw nsw i64 %indvars.iv208.i, 1 %exitcond213.not.i = icmp eq i64 %indvars.iv.next209.i, %wide.trip.count201.i br i1 %exitcond213.not.i, label %If_CluCountCofs.exit, label %.lr.ph174.i, !llvm.loop !141 -103: ; preds = %.lr.ph177 +105: ; preds = %.lr.ph177 br i1 %.not.i, label %If_CluCountCofs.exit, label %.lr.ph159.i -.lr.ph159.i: ; preds = %103 +.lr.ph159.i: ; preds = %105 br i1 %.not178.i, label %.lr.ph159.i.split.us, label %.lr.ph159.i.split .lr.ph159.i.split.us: ; preds = %.lr.ph159.i, %.thread.us @@ -6552,21 +6554,21 @@ define void @If_CluFindGroup(ptr dead_on_unwind noalias writable sret(%struct.If br i1 %or.cond, label %.lr.ph145.i.us, label %.thread.us .lr.ph145.i.us: ; preds = %.lr.ph159.i.split.us - %104 = add nuw nsw i32 %.4104154.i.us, 1 - %105 = zext nneg i32 %.4104154.i.us to i64 - %106 = getelementptr inbounds nuw [128 x i64], ptr %10, i64 0, i64 %105 - store i64 %indvars.iv197.i.us, ptr %106, align 8, !tbaa !16 - %107 = icmp eq i32 %104, 5 - br i1 %107, label %If_CluCountCofs.exit, label %.thread.us + %106 = add nuw nsw i32 %.4104154.i.us, 1 + %107 = zext nneg i32 %.4104154.i.us to i64 + %108 = getelementptr inbounds nuw [128 x i64], ptr %10, i64 0, i64 %107 + store i64 %indvars.iv197.i.us, ptr %108, align 8, !tbaa !16 + %109 = icmp eq i32 %106, 5 + br i1 %109, label %If_CluCountCofs.exit, label %.thread.us .thread.us: ; preds = %.lr.ph159.i.split.us, %.lr.ph145.i.us - %.6.i158.us = phi i32 [ %104, %.lr.ph145.i.us ], [ %.4104154.i.us, %.lr.ph159.i.split.us ] + %.6.i158.us = phi i32 [ %106, %.lr.ph145.i.us ], [ %.4104154.i.us, %.lr.ph159.i.split.us ] %indvars.iv.next198.i.us = add nuw nsw i64 %indvars.iv197.i.us, 1 %exitcond202.not.i.us = icmp eq i64 %indvars.iv.next198.i.us, %wide.trip.count201.i br i1 %exitcond202.not.i.us, label %If_CluCountCofs.exit, label %.lr.ph159.i.split.us, !llvm.loop !142 .thread: ; preds = %._crit_edge146.split.us.i, %.loopexit - %.6.i158 = phi i32 [ %128, %.loopexit ], [ %.4104154.i, %._crit_edge146.split.us.i ] + %.6.i158 = phi i32 [ %130, %.loopexit ], [ %.4104154.i, %._crit_edge146.split.us.i ] %indvars.iv.next198.i = add nuw nsw i64 %indvars.iv197.i, 1 %exitcond202.not.i = icmp eq i64 %indvars.iv.next198.i, %wide.trip.count201.i br i1 %exitcond202.not.i, label %If_CluCountCofs.exit, label %.lr.ph159.i.split, !llvm.loop !142 @@ -6574,137 +6576,137 @@ define void @If_CluFindGroup(ptr dead_on_unwind noalias writable sret(%struct.If .lr.ph159.i.split: ; preds = %.lr.ph159.i, %.thread %indvars.iv197.i = phi i64 [ %indvars.iv.next198.i, %.thread ], [ 0, %.lr.ph159.i ] %.4104154.i = phi i32 [ %.6.i158, %.thread ], [ 0, %.lr.ph159.i ] - %108 = trunc nuw nsw i64 %indvars.iv197.i to i32 - %109 = shl i32 %108, %44 - %110 = sext i32 %109 to i64 - %111 = getelementptr inbounds i64, ptr %1, i64 %110 - %112 = icmp sgt i32 %.4104154.i, 0 - br i1 %112, label %.lr.ph145.i, label %._crit_edge146.split.us.i + %110 = trunc nuw nsw i64 %indvars.iv197.i to i32 + %111 = shl i32 %110, %46 + %112 = sext i32 %111 to i64 + %113 = getelementptr inbounds i64, ptr %1, i64 %112 + %114 = icmp sgt i32 %.4104154.i, 0 + br i1 %114, label %.lr.ph145.i, label %._crit_edge146.split.us.i .lr.ph145.i: ; preds = %.lr.ph159.i.split %wide.trip.count190.i = zext nneg i32 %.4104154.i to i64 br label %.lr.ph.us.i -.lr.ph.us.i: ; preds = %124, %.lr.ph145.i - %indvars.iv187.i = phi i64 [ 0, %.lr.ph145.i ], [ %indvars.iv.next188.i, %124 ] - %113 = getelementptr inbounds nuw [128 x i64], ptr %10, i64 0, i64 %indvars.iv187.i - %114 = load i64, ptr %113, align 8, !tbaa !16 - %115 = mul i64 %114, %46 - %116 = getelementptr inbounds nuw i64, ptr %1, i64 %115 - br label %117 - -117: ; preds = %125, %.lr.ph.us.i - %indvars.iv.i = phi i64 [ 0, %.lr.ph.us.i ], [ %indvars.iv.next.i, %125 ] - %118 = getelementptr inbounds nuw i64, ptr %111, i64 %indvars.iv.i - %119 = load i64, ptr %118, align 8, !tbaa !16 - %120 = getelementptr inbounds nuw i64, ptr %116, i64 %indvars.iv.i +.lr.ph.us.i: ; preds = %126, %.lr.ph145.i + %indvars.iv187.i = phi i64 [ 0, %.lr.ph145.i ], [ %indvars.iv.next188.i, %126 ] + %115 = getelementptr inbounds nuw [128 x i64], ptr %10, i64 0, i64 %indvars.iv187.i + %116 = load i64, ptr %115, align 8, !tbaa !16 + %117 = mul i64 %116, %48 + %118 = getelementptr inbounds nuw i64, ptr %1, i64 %117 + br label %119 + +119: ; preds = %127, %.lr.ph.us.i + %indvars.iv.i = phi i64 [ 0, %.lr.ph.us.i ], [ %indvars.iv.next.i, %127 ] + %120 = getelementptr inbounds nuw i64, ptr %113, i64 %indvars.iv.i %121 = load i64, ptr %120, align 8, !tbaa !16 - %.not.us.i = icmp eq i64 %119, %121 - br i1 %.not.us.i, label %125, label %._crit_edge.us.split.loop.exit228.i + %122 = getelementptr inbounds nuw i64, ptr %118, i64 %indvars.iv.i + %123 = load i64, ptr %122, align 8, !tbaa !16 + %.not.us.i = icmp eq i64 %121, %123 + br i1 %.not.us.i, label %127, label %._crit_edge.us.split.loop.exit228.i -._crit_edge.us.split.loop.exit228.i: ; preds = %117 - %122 = trunc nuw nsw i64 %indvars.iv.i to i32 +._crit_edge.us.split.loop.exit228.i: ; preds = %119 + %124 = trunc nuw nsw i64 %indvars.iv.i to i32 br label %._crit_edge.us.i -._crit_edge.us.i: ; preds = %125, %._crit_edge.us.split.loop.exit228.i - %.0106.lcssa.us.i = phi i32 [ %122, %._crit_edge.us.split.loop.exit228.i ], [ %smax.i, %125 ] - %123 = icmp eq i32 %.0106.lcssa.us.i, %45 - br i1 %123, label %._crit_edge146.split.us.loopexit.i, label %124 +._crit_edge.us.i: ; preds = %127, %._crit_edge.us.split.loop.exit228.i + %.0106.lcssa.us.i = phi i32 [ %124, %._crit_edge.us.split.loop.exit228.i ], [ %smax.i, %127 ] + %125 = icmp eq i32 %.0106.lcssa.us.i, %47 + br i1 %125, label %._crit_edge146.split.us.loopexit.i, label %126 -124: ; preds = %._crit_edge.us.i +126: ; preds = %._crit_edge.us.i %indvars.iv.next188.i = add nuw nsw i64 %indvars.iv187.i, 1 %exitcond191.not.i = icmp eq i64 %indvars.iv.next188.i, %wide.trip.count190.i br i1 %exitcond191.not.i, label %.loopexit, label %.lr.ph.us.i, !llvm.loop !143 -125: ; preds = %117 +127: ; preds = %119 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %._crit_edge.us.i, label %117, !llvm.loop !144 + br i1 %exitcond.not.i, label %._crit_edge.us.i, label %119, !llvm.loop !144 ._crit_edge146.split.us.loopexit.i: ; preds = %._crit_edge.us.i - %126 = trunc nuw nsw i64 %indvars.iv187.i to i32 + %128 = trunc nuw nsw i64 %indvars.iv187.i to i32 br label %._crit_edge146.split.us.i ._crit_edge146.split.us.i: ; preds = %._crit_edge146.split.us.loopexit.i, %.lr.ph159.i.split - %.1109.lcssa.i = phi i32 [ 0, %.lr.ph159.i.split ], [ %126, %._crit_edge146.split.us.loopexit.i ] - %127 = icmp eq i32 %.1109.lcssa.i, %.4104154.i - br i1 %127, label %.loopexit, label %.thread - -.loopexit: ; preds = %124, %._crit_edge146.split.us.i - %128 = add nsw i32 %.4104154.i, 1 - %129 = sext i32 %.4104154.i to i64 - %130 = getelementptr inbounds [128 x i64], ptr %10, i64 0, i64 %129 - store i64 %indvars.iv197.i, ptr %130, align 8, !tbaa !16 - %131 = icmp eq i32 %128, 5 - br i1 %131, label %If_CluCountCofs.exit, label %.thread - -If_CluCountCofs.exit: ; preds = %.loopexit, %.thread, %.thread.us, %.lr.ph145.i.us, %.thread215.i, %._crit_edge166.thread.i, %103, %81 - %.3103.i = phi i32 [ 0, %81 ], [ 0, %103 ], [ %.2102217.i, %.thread215.i ], [ 5, %._crit_edge166.thread.i ], [ %.6.i158.us, %.thread.us ], [ 5, %.lr.ph145.i.us ], [ %.6.i158, %.thread ], [ 5, %.loopexit ] + %.1109.lcssa.i = phi i32 [ 0, %.lr.ph159.i.split ], [ %128, %._crit_edge146.split.us.loopexit.i ] + %129 = icmp eq i32 %.1109.lcssa.i, %.4104154.i + br i1 %129, label %.loopexit, label %.thread + +.loopexit: ; preds = %126, %._crit_edge146.split.us.i + %130 = add nsw i32 %.4104154.i, 1 + %131 = sext i32 %.4104154.i to i64 + %132 = getelementptr inbounds [128 x i64], ptr %10, i64 0, i64 %131 + store i64 %indvars.iv197.i, ptr %132, align 8, !tbaa !16 + %133 = icmp eq i32 %130, 5 + br i1 %133, label %If_CluCountCofs.exit, label %.thread + +If_CluCountCofs.exit: ; preds = %.loopexit, %.thread, %.thread.us, %.lr.ph145.i.us, %.thread215.i, %._crit_edge166.thread.i, %105, %83 + %.3103.i = phi i32 [ 0, %83 ], [ 0, %105 ], [ %.2102217.i, %.thread215.i ], [ 5, %._crit_edge166.thread.i ], [ %.6.i158.us, %.thread.us ], [ 5, %.lr.ph145.i.us ], [ %.6.i158, %.thread ], [ 5, %.loopexit ] call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %10) #22 %.not155 = icmp slt i32 %.2175, %.3103.i - br i1 %.not155, label %134, label %132 + br i1 %.not155, label %136, label %134 -132: ; preds = %If_CluCountCofs.exit - %133 = load i32, ptr %35, align 4, !tbaa !6 - br label %134 +134: ; preds = %If_CluCountCofs.exit + %135 = load i32, ptr %40, align 4, !tbaa !6 + br label %136 -134: ; preds = %If_CluCountCofs.exit, %132 - %.3138 = phi i32 [ %133, %132 ], [ %.2137174, %If_CluCountCofs.exit ] - %.3 = phi i32 [ %.3103.i, %132 ], [ %.2175, %If_CluCountCofs.exit ] +136: ; preds = %If_CluCountCofs.exit, %134 + %.3138 = phi i32 [ %135, %134 ], [ %.2137174, %If_CluCountCofs.exit ] + %.3 = phi i32 [ %.3103.i, %134 ], [ %.2175, %If_CluCountCofs.exit ] %indvars.iv.next197 = add nsw i64 %indvars.iv196, 1 - %135 = icmp slt i64 %indvars.iv.next197, %54 - br i1 %135, label %.lr.ph177, label %._crit_edge178, !llvm.loop !168 - -._crit_edge178: ; preds = %134, %73 - %.2137.lcssa = phi i32 [ %74, %73 ], [ %.3138, %134 ] - %136 = sext i32 %.2137.lcssa to i64 - %137 = getelementptr inbounds i32, ptr %5, i64 %136 - %138 = load i32, ptr %137, align 4, !tbaa !6 - tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef %6, i32 noundef %138, i32 noundef %33) - %139 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %7, i32 noundef 0, ptr noundef null) - %140 = load i8, ptr %15, align 1, !tbaa !112 - %141 = sext i8 %140 to i32 - %.not153 = icmp sgt i32 %139, %141 - br i1 %.not153, label %thread-pre-split, label %142 - -142: ; preds = %._crit_edge178 + %137 = icmp slt i64 %indvars.iv.next197, %56 + br i1 %137, label %.lr.ph177, label %._crit_edge178, !llvm.loop !168 + +._crit_edge178: ; preds = %136, %75 + %.2137.lcssa = phi i32 [ %76, %75 ], [ %.3138, %136 ] + %138 = sext i32 %.2137.lcssa to i64 + %139 = getelementptr inbounds i32, ptr %5, i64 %138 + %140 = load i32, ptr %139, align 4, !tbaa !6 + tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef %6, i32 noundef %140, i32 noundef %33) + %141 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %7, i32 noundef 0, ptr noundef null) + %142 = load i8, ptr %15, align 1, !tbaa !112 + %143 = sext i8 %142 to i32 + %.not153 = icmp sgt i32 %141, %143 + br i1 %.not153, label %thread-pre-split, label %144 + +144: ; preds = %._crit_edge178 store i8 %12, ptr %0, align 1, !tbaa !110 - %143 = trunc i32 %139 to i8 - store i8 %143, ptr %15, align 1, !tbaa !112 + %145 = trunc i32 %141 to i8 + store i8 %145, ptr %15, align 1, !tbaa !112 br i1 %16, label %.lr.ph182, label %thread-pre-split -.lr.ph182: ; preds = %142, %.lr.ph182 - %indvars.iv199 = phi i64 [ %indvars.iv.next200, %.lr.ph182 ], [ 0, %142 ] +.lr.ph182: ; preds = %144, %.lr.ph182 + %indvars.iv199 = phi i64 [ %indvars.iv.next200, %.lr.ph182 ], [ 0, %144 ] %gep212 = getelementptr i32, ptr %invariant.gep211, i64 %indvars.iv199 - %144 = load i32, ptr %gep212, align 4, !tbaa !6 - %145 = trunc i32 %144 to i8 - %146 = getelementptr inbounds nuw [16 x i8], ptr %50, i64 0, i64 %indvars.iv199 - store i8 %145, ptr %146, align 1, !tbaa !59 + %146 = load i32, ptr %gep212, align 4, !tbaa !6 + %147 = trunc i32 %146 to i8 + %148 = getelementptr inbounds nuw [16 x i8], ptr %52, i64 0, i64 %indvars.iv199 + store i8 %147, ptr %148, align 1, !tbaa !59 %indvars.iv.next200 = add nuw nsw i64 %indvars.iv199, 1 %exitcond203.not = icmp eq i64 %indvars.iv.next200, %wide.trip.count202 br i1 %exitcond203.not, label %thread-pre-split, label %.lr.ph182, !llvm.loop !169 -thread-pre-split: ; preds = %.lr.ph182, %142, %._crit_edge178 - %147 = phi i8 [ %140, %._crit_edge178 ], [ %143, %142 ], [ %143, %.lr.ph182 ] - %148 = icmp eq i8 %147, 2 - br i1 %148, label %.loopexit161, label %149 +thread-pre-split: ; preds = %.lr.ph182, %144, %._crit_edge178 + %149 = phi i8 [ %142, %._crit_edge178 ], [ %145, %144 ], [ %145, %.lr.ph182 ] + %150 = icmp eq i8 %149, 2 + br i1 %150, label %.loopexit161, label %151 -149: ; preds = %thread-pre-split - br i1 %.not, label %150, label %152 +151: ; preds = %thread-pre-split + br i1 %.not, label %152, label %154 -150: ; preds = %149 - %151 = tail call i32 @If_CluCheckNonDisjointGroup(ptr noundef %1, i32 noundef %2, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %0) - %.not154 = icmp eq i32 %151, 0 - br i1 %.not154, label %152, label %.loopexit161 +152: ; preds = %151 + %153 = tail call i32 @If_CluCheckNonDisjointGroup(ptr noundef %1, i32 noundef %2, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %0) + %.not154 = icmp eq i32 %153, 0 + br i1 %.not154, label %154, label %.loopexit161 -152: ; preds = %149, %150 - br i1 %56, label %55, label %.loopexit161.sink.split, !llvm.loop !170 +154: ; preds = %151, %152 + br i1 %58, label %57, label %.loopexit161.sink.split, !llvm.loop !170 -.loopexit161.sink.split: ; preds = %152, %28 +.loopexit161.sink.split: ; preds = %154, %28 store i8 0, ptr %0, align 1, !tbaa !110 br label %.loopexit161 -.loopexit161: ; preds = %150, %thread-pre-split, %.loopexit161.sink.split, %26, %._crit_edge +.loopexit161: ; preds = %152, %thread-pre-split, %.loopexit161.sink.split, %26, %._crit_edge ret void } diff --git a/bench/abc/optimized/kitDsd.ll b/bench/abc/optimized/kitDsd.ll index 08f607d5ad0..d302198cf51 100644 --- a/bench/abc/optimized/kitDsd.ll +++ b/bench/abc/optimized/kitDsd.ll @@ -769,8 +769,8 @@ Kit_DsdNtkObj.exit: ; preds = %3 %7 = getelementptr inbounds nuw i8, ptr %1, i64 24 %8 = load ptr, ptr %7, align 8, !tbaa !40 %9 = sub nsw i32 %2, %5 - %10 = sext i32 %9 to i64 - %11 = getelementptr inbounds ptr, ptr %8, i64 %10 + %10 = zext nneg i32 %9 to i64 + %11 = getelementptr inbounds nuw ptr, ptr %8, i64 %10 %12 = load ptr, ptr %11, align 8, !tbaa !41 %13 = icmp eq ptr %12, null br i1 %13, label %Kit_DsdNtkObj.exit.thread, label %15 @@ -901,8 +901,8 @@ Kit_DsdNtkObj.exit: ; preds = %3 %7 = getelementptr inbounds nuw i8, ptr %1, i64 24 %8 = load ptr, ptr %7, align 8, !tbaa !40 %9 = sub nsw i32 %2, %5 - %10 = sext i32 %9 to i64 - %11 = getelementptr inbounds ptr, ptr %8, i64 %10 + %10 = zext nneg i32 %9 to i64 + %11 = getelementptr inbounds nuw ptr, ptr %8, i64 %10 %12 = load ptr, ptr %11, align 8, !tbaa !41 %13 = icmp eq ptr %12, null br i1 %13, label %Kit_DsdNtkObj.exit.thread, label %15 @@ -1067,8 +1067,8 @@ Kit_DsdNtkObj.exit: ; preds = %3 %7 = getelementptr inbounds nuw i8, ptr %1, i64 24 %8 = load ptr, ptr %7, align 8, !tbaa !40 %9 = sub nsw i32 %2, %5 - %10 = sext i32 %9 to i64 - %11 = getelementptr inbounds ptr, ptr %8, i64 %10 + %10 = zext nneg i32 %9 to i64 + %11 = getelementptr inbounds nuw ptr, ptr %8, i64 %10 %12 = load ptr, ptr %11, align 8, !tbaa !41 %13 = icmp eq ptr %12, null br i1 %13, label %Kit_DsdNtkObj.exit.thread, label %17 @@ -1629,8 +1629,8 @@ Kit_DsdNtkObj.exit: ; preds = %3 %14 = getelementptr inbounds nuw i8, ptr %1, i64 24 %15 = load ptr, ptr %14, align 8, !tbaa !40 %16 = sub nsw i32 %2, %6 - %17 = sext i32 %16 to i64 - %18 = getelementptr inbounds ptr, ptr %15, i64 %17 + %17 = zext nneg i32 %16 to i64 + %18 = getelementptr inbounds nuw ptr, ptr %15, i64 %17 %19 = load ptr, ptr %18, align 8, !tbaa !41 %20 = getelementptr inbounds nuw i8, ptr %0, i64 16 %21 = load ptr, ptr %20, align 8, !tbaa !25 @@ -2147,8 +2147,8 @@ Kit_DsdNtkObj.exit: ; preds = %4 %15 = getelementptr inbounds nuw i8, ptr %1, i64 24 %16 = load ptr, ptr %15, align 8, !tbaa !40 %17 = sub nsw i32 %2, %7 - %18 = sext i32 %17 to i64 - %19 = getelementptr inbounds ptr, ptr %16, i64 %18 + %18 = zext nneg i32 %17 to i64 + %19 = getelementptr inbounds nuw ptr, ptr %16, i64 %18 %20 = load ptr, ptr %19, align 8, !tbaa !41 %21 = getelementptr inbounds nuw i8, ptr %0, i64 16 %22 = load ptr, ptr %21, align 8, !tbaa !25 @@ -2928,8 +2928,8 @@ Kit_DsdNtkObj.exit: ; preds = %6 %18 = getelementptr inbounds nuw i8, ptr %1, i64 24 %19 = load ptr, ptr %18, align 8, !tbaa !40 %20 = sub nsw i32 %2, %10 - %21 = sext i32 %20 to i64 - %22 = getelementptr inbounds ptr, ptr %19, i64 %21 + %21 = zext nneg i32 %20 to i64 + %22 = getelementptr inbounds nuw ptr, ptr %19, i64 %21 %23 = load ptr, ptr %22, align 8, !tbaa !41 %24 = getelementptr inbounds nuw i8, ptr %0, i64 16 %25 = load ptr, ptr %24, align 8, !tbaa !25 @@ -2975,8 +2975,8 @@ Kit_DsdNtkObj.exit: ; preds = %6 45: ; preds = %41 %46 = sub nsw i32 %40, %10 - %47 = sext i32 %46 to i64 - %48 = getelementptr inbounds i32, ptr %35, i64 %47 + %47 = zext nneg i32 %46 to i64 + %48 = getelementptr inbounds nuw i32, ptr %35, i64 %47 %49 = load i32, ptr %48, align 4, !tbaa !20 br label %Kit_DsdLitSupport.exit @@ -4388,8 +4388,8 @@ Kit_DsdNtkObj.exit: ; preds = %4 %8 = getelementptr inbounds nuw i8, ptr %0, i64 24 %9 = load ptr, ptr %8, align 8, !tbaa !40 %10 = sub nsw i32 %2, %6 - %11 = sext i32 %10 to i64 - %12 = getelementptr inbounds ptr, ptr %9, i64 %11 + %11 = zext nneg i32 %10 to i64 + %12 = getelementptr inbounds nuw ptr, ptr %9, i64 %11 %13 = load ptr, ptr %12, align 8, !tbaa !41 %14 = icmp eq ptr %13, null br i1 %14, label %Kit_DsdNtkObj.exit.thread, label %15 @@ -4754,8 +4754,8 @@ Kit_DsdNtkObj.exit.thread: ; preds = %4 %9 = getelementptr inbounds nuw i8, ptr %0, i64 24 %10 = load ptr, ptr %9, align 8, !tbaa !40 %11 = sub nsw i32 %5, %7 - %12 = sext i32 %11 to i64 - %13 = getelementptr inbounds ptr, ptr %10, i64 %12 + %12 = zext nneg i32 %11 to i64 + %13 = getelementptr inbounds nuw ptr, ptr %10, i64 %12 %14 = load ptr, ptr %13, align 8, !tbaa !41 %15 = and i32 %1, 1 %.not18 = icmp eq i32 %15, 0 @@ -4813,8 +4813,8 @@ define void @Kit_DsdExpandCollectXor_rec(ptr noundef readonly captures(none) %0, %10 = getelementptr inbounds nuw i8, ptr %0, i64 24 %11 = load ptr, ptr %10, align 8, !tbaa !40 %12 = sub nsw i32 %5, %7 - %13 = sext i32 %12 to i64 - %14 = getelementptr inbounds ptr, ptr %11, i64 %13 + %13 = zext nneg i32 %12 to i64 + %14 = getelementptr inbounds nuw ptr, ptr %11, i64 %13 %15 = load ptr, ptr %14, align 8, !tbaa !41 %16 = load i32, ptr %15, align 4 %17 = and i32 %16, 448 @@ -4883,8 +4883,8 @@ Kit_DsdNtkObj.exit: ; preds = %3 %10 = getelementptr inbounds nuw i8, ptr %1, i64 24 %11 = load ptr, ptr %10, align 8, !tbaa !40 %12 = sub nsw i32 %6, %8 - %13 = sext i32 %12 to i64 - %14 = getelementptr inbounds ptr, ptr %11, i64 %13 + %13 = zext nneg i32 %12 to i64 + %14 = getelementptr inbounds nuw ptr, ptr %11, i64 %13 %15 = load ptr, ptr %14, align 8, !tbaa !41 %16 = icmp eq ptr %15, null br i1 %16, label %Kit_DsdNtkObj.exit.thread, label %17 @@ -5372,8 +5372,8 @@ Kit_DsdNtkObj.exit: ; preds = %4 %11 = getelementptr inbounds nuw i8, ptr %1, i64 24 %12 = load ptr, ptr %11, align 8, !tbaa !40 %13 = sub nsw i32 %7, %9 - %14 = sext i32 %13 to i64 - %15 = getelementptr inbounds ptr, ptr %12, i64 %14 + %14 = zext nneg i32 %13 to i64 + %15 = getelementptr inbounds nuw ptr, ptr %12, i64 %14 %16 = load ptr, ptr %15, align 8, !tbaa !41 %17 = icmp eq ptr %16, null br i1 %17, label %Kit_DsdNtkObj.exit.thread, label %18 @@ -5449,8 +5449,8 @@ Kit_DsdLitSupport.exit.us.preheader: ; preds = %.lr.ph134 44: ; preds = %.lr.ph134.split %45 = sub nsw i32 %40, %9 - %46 = sext i32 %45 to i64 - %47 = getelementptr inbounds i32, ptr %32, i64 %46 + %46 = zext nneg i32 %45 to i64 + %47 = getelementptr inbounds nuw i32, ptr %32, i64 %46 %48 = load i32, ptr %47, align 4, !tbaa !20 br label %Kit_DsdLitSupport.exit @@ -5566,8 +5566,8 @@ Kit_DsdObjAlloc.exit: ; preds = %._crit_edge.i, %77 107: ; preds = %.lr.ph.split %108 = sub nsw i32 %103, %9 - %109 = sext i32 %108 to i64 - %110 = getelementptr inbounds i32, ptr %25, i64 %109 + %109 = zext nneg i32 %108 to i64 + %110 = getelementptr inbounds nuw i32, ptr %25, i64 %109 %111 = load i32, ptr %110, align 4, !tbaa !20 br label %Kit_DsdLitSupport.exit110 @@ -6140,8 +6140,8 @@ Kit_DsdNtkObj.exit: ; preds = %2 %7 = getelementptr inbounds nuw i8, ptr %0, i64 24 %8 = load ptr, ptr %7, align 8, !tbaa !40 %9 = sub nsw i32 %3, %5 - %10 = sext i32 %9 to i64 - %11 = getelementptr inbounds ptr, ptr %8, i64 %10 + %10 = zext nneg i32 %9 to i64 + %11 = getelementptr inbounds nuw ptr, ptr %8, i64 %10 %12 = load ptr, ptr %11, align 8, !tbaa !41 %13 = icmp eq ptr %12, null br i1 %13, label %.thread, label %.preheader @@ -6170,7 +6170,7 @@ Kit_DsdNtkObj.exit.thread: ; preds = %2 br i1 %.not.i21, label %Kit_DsdLitSupport.exit, label %.thread22 .thread22: ; preds = %.thread - %21 = getelementptr inbounds i32, ptr %20, i64 %10 + %21 = getelementptr inbounds nuw i32, ptr %20, i64 %10 %22 = load i32, ptr %21, align 4, !tbaa !20 br label %Kit_DsdLitSupport.exit @@ -6223,8 +6223,8 @@ Kit_DsdNtkObj.exit: ; preds = %3 %7 = getelementptr inbounds nuw i8, ptr %0, i64 24 %8 = load ptr, ptr %7, align 8, !tbaa !40 %9 = sub nsw i32 %1, %5 - %10 = sext i32 %9 to i64 - %11 = getelementptr inbounds ptr, ptr %8, i64 %10 + %10 = zext nneg i32 %9 to i64 + %11 = getelementptr inbounds nuw ptr, ptr %8, i64 %10 %12 = load ptr, ptr %11, align 8, !tbaa !41 %13 = icmp eq ptr %12, null br i1 %13, label %.critedge, label %14 @@ -6286,8 +6286,8 @@ Kit_DsdNtkObj.exit: ; preds = %2 %6 = getelementptr inbounds nuw i8, ptr %0, i64 24 %7 = load ptr, ptr %6, align 8, !tbaa !40 %8 = sub nsw i32 %1, %4 - %9 = sext i32 %8 to i64 - %10 = getelementptr inbounds ptr, ptr %7, i64 %9 + %9 = zext nneg i32 %8 to i64 + %10 = getelementptr inbounds nuw ptr, ptr %7, i64 %9 %11 = load ptr, ptr %10, align 8, !tbaa !41 %12 = icmp eq ptr %11, null br i1 %12, label %.critedge, label %13 diff --git a/bench/abc/optimized/lpkMulti.ll b/bench/abc/optimized/lpkMulti.ll index d875285ba8f..4792a612ec7 100644 --- a/bench/abc/optimized/lpkMulti.ll +++ b/bench/abc/optimized/lpkMulti.ll @@ -467,15 +467,15 @@ define i32 @Lpk_FindHighest(ptr noundef readonly captures(none) %0, ptr noundef %wide.trip.count = zext nneg i32 %2 to i64 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %74 - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %74 ] - %.095121 = phi i32 [ 0, %.lr.ph.preheader ], [ %76, %74 ] +.lr.ph: ; preds = %.lr.ph.preheader, %73 + %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %73 ] + %.095121 = phi i32 [ 0, %.lr.ph.preheader ], [ %75, %73 ] %9 = getelementptr inbounds nuw [8 x i32], ptr %7, i64 0, i64 %indvars.iv store i32 1, ptr %9, align 4, !tbaa !16 %10 = getelementptr inbounds nuw i32, ptr %1, i64 %indvars.iv %11 = load i32, ptr %10, align 4, !tbaa !16 %12 = icmp slt i32 %11, 0 - br i1 %12, label %74, label %13 + br i1 %12, label %73, label %13 13: ; preds = %.lr.ph %14 = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv @@ -492,7 +492,7 @@ Kit_DsdLitSupport.exit: ; preds = %13 %.not.i = icmp eq ptr %19, null %20 = shl nuw i32 1, %16 %spec.select164 = select i1 %.not.i, i32 0, i32 %20 - br label %74 + br label %73 Kit_DsdNtkObj.exit: ; preds = %13 %21 = getelementptr inbounds nuw i8, ptr %15, i64 24 @@ -527,8 +527,8 @@ Kit_DsdNtkObj.exit: ; preds = %13 41: ; preds = %37 %42 = sub nsw i32 %34, %17 - %43 = sext i32 %42 to i64 - %44 = getelementptr inbounds i32, ptr %36, i64 %43 + %43 = zext nneg i32 %42 to i64 + %44 = getelementptr inbounds nuw i32, ptr %36, i64 %43 %45 = load i32, ptr %44, align 4, !tbaa !16 br label %67 @@ -563,157 +563,156 @@ Kit_DsdNtkObj.exit: ; preds = %13 62: ; preds = %58 %63 = sub nsw i32 %55, %17 - %64 = sext i32 %63 to i64 - %65 = getelementptr inbounds i32, ptr %57, i64 %64 + %64 = zext nneg i32 %63 to i64 + %65 = getelementptr inbounds nuw i32, ptr %57, i64 %64 %66 = load i32, ptr %65, align 4, !tbaa !16 br label %67 67: ; preds = %39, %41, %60, %62 %.ph = phi ptr [ %57, %62 ], [ %57, %60 ], [ %36, %41 ], [ %36, %39 ] %.096.ph = phi i32 [ %66, %62 ], [ %61, %60 ], [ %45, %41 ], [ %40, %39 ] - %68 = zext nneg i32 %23 to i64 - %69 = getelementptr inbounds nuw i32, ptr %.ph, i64 %68 - %70 = load i32, ptr %69, align 4, !tbaa !16 - %71 = xor i32 %.096.ph, -1 + %68 = getelementptr inbounds nuw i32, ptr %.ph, i64 %24 + %69 = load i32, ptr %68, align 4, !tbaa !16 + %70 = xor i32 %.096.ph, -1 br label %Kit_DsdLitSupport.exit116 Kit_DsdLitSupport.exit116: ; preds = %30, %51, %67 - %.096158 = phi i32 [ %71, %67 ], [ -1, %30 ], [ -1, %51 ] - %72 = phi i32 [ %70, %67 ], [ 0, %30 ], [ 0, %51 ] - %73 = and i32 %72, %.096158 - br label %74 - -74: ; preds = %.lr.ph, %Kit_DsdLitSupport.exit, %Kit_DsdLitSupport.exit116 - %spec.select164.sink = phi i32 [ %spec.select164, %Kit_DsdLitSupport.exit ], [ %73, %Kit_DsdLitSupport.exit116 ], [ 0, %.lr.ph ] - %75 = getelementptr inbounds nuw [8 x i32], ptr %6, i64 0, i64 %indvars.iv - store i32 %spec.select164.sink, ptr %75, align 4, !tbaa !16 - %76 = or i32 %spec.select164.sink, %.095121 + %.096158 = phi i32 [ %70, %67 ], [ -1, %30 ], [ -1, %51 ] + %71 = phi i32 [ %69, %67 ], [ 0, %30 ], [ 0, %51 ] + %72 = and i32 %71, %.096158 + br label %73 + +73: ; preds = %.lr.ph, %Kit_DsdLitSupport.exit, %Kit_DsdLitSupport.exit116 + %spec.select164.sink = phi i32 [ %spec.select164, %Kit_DsdLitSupport.exit ], [ %72, %Kit_DsdLitSupport.exit116 ], [ 0, %.lr.ph ] + %74 = getelementptr inbounds nuw [8 x i32], ptr %6, i64 0, i64 %indvars.iv + store i32 %spec.select164.sink, ptr %74, align 4, !tbaa !16 + %75 = or i32 %spec.select164.sink, %.095121 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !37 -._crit_edge: ; preds = %74 - %77 = icmp eq i32 %76, 0 - br i1 %77, label %.loopexit, label %.preheader120 +._crit_edge: ; preds = %73 + %76 = icmp eq i32 %75, 0 + br i1 %76, label %.loopexit, label %.preheader120 -.lr.ph130: ; preds = %86 - %78 = shl nuw i32 1, %.185 +.lr.ph130: ; preds = %85 + %77 = shl nuw i32 1, %.185 %wide.trip.count148 = zext nneg i32 %2 to i64 - br label %87 - -.preheader120: ; preds = %._crit_edge, %86 - %indvars.iv141 = phi i64 [ %indvars.iv.next142, %86 ], [ 0, %._crit_edge ] - %.084125 = phi i32 [ %.185, %86 ], [ -1, %._crit_edge ] - %.086124 = phi i32 [ %.187, %86 ], [ 1000000000, %._crit_edge ] - %79 = trunc nuw nsw i64 %indvars.iv141 to i32 - %80 = shl nuw nsw i32 1, %79 - %81 = and i32 %80, %76 - %.not104 = icmp eq i32 %81, 0 - br i1 %.not104, label %86, label %82 - -82: ; preds = %.preheader120 - %83 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv141 - %84 = load i32, ptr %83, align 4, !tbaa !16 - %85 = icmp sgt i32 %.086124, %84 - %spec.select = tail call i32 @llvm.smin.i32(i32 %.086124, i32 %84) - %spec.select107 = select i1 %85, i32 %79, i32 %.084125 br label %86 -86: ; preds = %82, %.preheader120 - %.187 = phi i32 [ %.086124, %.preheader120 ], [ %spec.select, %82 ] - %.185 = phi i32 [ %.084125, %.preheader120 ], [ %spec.select107, %82 ] +.preheader120: ; preds = %._crit_edge, %85 + %indvars.iv141 = phi i64 [ %indvars.iv.next142, %85 ], [ 0, %._crit_edge ] + %.084125 = phi i32 [ %.185, %85 ], [ -1, %._crit_edge ] + %.086124 = phi i32 [ %.187, %85 ], [ 1000000000, %._crit_edge ] + %78 = trunc nuw nsw i64 %indvars.iv141 to i32 + %79 = shl nuw nsw i32 1, %78 + %80 = and i32 %79, %75 + %.not104 = icmp eq i32 %80, 0 + br i1 %.not104, label %85, label %81 + +81: ; preds = %.preheader120 + %82 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv141 + %83 = load i32, ptr %82, align 4, !tbaa !16 + %84 = icmp sgt i32 %.086124, %83 + %spec.select = tail call i32 @llvm.smin.i32(i32 %.086124, i32 %83) + %spec.select107 = select i1 %84, i32 %78, i32 %.084125 + br label %85 + +85: ; preds = %81, %.preheader120 + %.187 = phi i32 [ %.086124, %.preheader120 ], [ %spec.select, %81 ] + %.185 = phi i32 [ %.084125, %.preheader120 ], [ %spec.select107, %81 ] %indvars.iv.next142 = add nuw nsw i64 %indvars.iv141, 1 %exitcond144.not = icmp eq i64 %indvars.iv.next142, 16 br i1 %exitcond144.not, label %.lr.ph130, label %.preheader120, !llvm.loop !38 -87: ; preds = %.lr.ph130, %103 - %indvars.iv145 = phi i64 [ 0, %.lr.ph130 ], [ %indvars.iv.next146, %103 ] - %.0129 = phi i32 [ 0, %.lr.ph130 ], [ %.2, %103 ] - %.081128 = phi i32 [ 0, %.lr.ph130 ], [ %.182, %103 ] - %.092126 = phi i32 [ 0, %.lr.ph130 ], [ %.294, %103 ] - %88 = getelementptr inbounds nuw [8 x i32], ptr %6, i64 0, i64 %indvars.iv145 - %89 = load i32, ptr %88, align 4, !tbaa !16 - %90 = and i32 %89, %78 - %.not102 = icmp eq i32 %90, 0 - br i1 %.not102, label %101, label %91 - -91: ; preds = %87 - %92 = getelementptr inbounds nuw [8 x i32], ptr %7, i64 0, i64 %indvars.iv145 - %93 = load i32, ptr %92, align 4, !tbaa !16 - %94 = icmp eq i32 %93, 0 - %95 = icmp ne i32 %.0129, 0 - %or.cond = select i1 %94, i1 %95, i1 false - br i1 %or.cond, label %99, label %96 - -96: ; preds = %91 - %spec.select108 = select i1 %94, i32 %89, i32 %.092126 - %spec.select109 = select i1 %94, i32 1, i32 %.0129 - %97 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv145 - store i32 1, ptr %97, align 4, !tbaa !16 - %98 = add nsw i32 %.081128, 1 - br label %103 - -99: ; preds = %91 - %100 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv145 - store i32 0, ptr %100, align 4, !tbaa !16 - br label %103 - -101: ; preds = %87 - %102 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv145 - store i32 0, ptr %102, align 4, !tbaa !16 - br label %103 - -103: ; preds = %101, %99, %96 - %.294 = phi i32 [ %.092126, %99 ], [ %spec.select108, %96 ], [ %.092126, %101 ] - %.182 = phi i32 [ %.081128, %99 ], [ %98, %96 ], [ %.081128, %101 ] - %.2 = phi i32 [ 1, %99 ], [ %spec.select109, %96 ], [ %.0129, %101 ] +86: ; preds = %.lr.ph130, %102 + %indvars.iv145 = phi i64 [ 0, %.lr.ph130 ], [ %indvars.iv.next146, %102 ] + %.0129 = phi i32 [ 0, %.lr.ph130 ], [ %.2, %102 ] + %.081128 = phi i32 [ 0, %.lr.ph130 ], [ %.182, %102 ] + %.092126 = phi i32 [ 0, %.lr.ph130 ], [ %.294, %102 ] + %87 = getelementptr inbounds nuw [8 x i32], ptr %6, i64 0, i64 %indvars.iv145 + %88 = load i32, ptr %87, align 4, !tbaa !16 + %89 = and i32 %88, %77 + %.not102 = icmp eq i32 %89, 0 + br i1 %.not102, label %100, label %90 + +90: ; preds = %86 + %91 = getelementptr inbounds nuw [8 x i32], ptr %7, i64 0, i64 %indvars.iv145 + %92 = load i32, ptr %91, align 4, !tbaa !16 + %93 = icmp eq i32 %92, 0 + %94 = icmp ne i32 %.0129, 0 + %or.cond = select i1 %93, i1 %94, i1 false + br i1 %or.cond, label %98, label %95 + +95: ; preds = %90 + %spec.select108 = select i1 %93, i32 %88, i32 %.092126 + %spec.select109 = select i1 %93, i32 1, i32 %.0129 + %96 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv145 + store i32 1, ptr %96, align 4, !tbaa !16 + %97 = add nsw i32 %.081128, 1 + br label %102 + +98: ; preds = %90 + %99 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv145 + store i32 0, ptr %99, align 4, !tbaa !16 + br label %102 + +100: ; preds = %86 + %101 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv145 + store i32 0, ptr %101, align 4, !tbaa !16 + br label %102 + +102: ; preds = %100, %98, %95 + %.294 = phi i32 [ %.092126, %98 ], [ %spec.select108, %95 ], [ %.092126, %100 ] + %.182 = phi i32 [ %.081128, %98 ], [ %97, %95 ], [ %.081128, %100 ] + %.2 = phi i32 [ 1, %98 ], [ %spec.select109, %95 ], [ %.0129, %100 ] %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_edge131, label %87, !llvm.loop !39 + br i1 %exitcond149.not, label %._crit_edge131, label %86, !llvm.loop !39 -._crit_edge131: ; preds = %103 +._crit_edge131: ; preds = %102 %.not = icmp eq i32 %.2, 0 - %104 = xor i32 %.294, -1 + %103 = xor i32 %.294, -1 br i1 %.not, label %.loopexit, label %.lr.ph137 .lr.ph137: ; preds = %._crit_edge131 %wide.trip.count153 = zext nneg i32 %2 to i64 - br label %105 + br label %104 -105: ; preds = %.lr.ph137, %119 - %indvars.iv150 = phi i64 [ 0, %.lr.ph137 ], [ %indvars.iv.next151, %119 ] - %.3136 = phi i32 [ %.182, %.lr.ph137 ], [ %.4, %119 ] - %106 = getelementptr inbounds nuw [8 x i32], ptr %7, i64 0, i64 %indvars.iv150 - %107 = load i32, ptr %106, align 4, !tbaa !16 - %.not101 = icmp eq i32 %107, 0 - br i1 %.not101, label %108, label %119 - -108: ; preds = %105 - %109 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv150 - %110 = load i32, ptr %109, align 4, !tbaa !16 - %111 = icmp eq i32 %110, 0 - br i1 %111, label %112, label %119 - -112: ; preds = %108 - %113 = getelementptr inbounds nuw [8 x i32], ptr %6, i64 0, i64 %indvars.iv150 - %114 = load i32, ptr %113, align 4, !tbaa !16 - %115 = and i32 %114, %104 - %116 = icmp eq i32 %115, 0 - br i1 %116, label %117, label %119 - -117: ; preds = %112 - store i32 1, ptr %109, align 4, !tbaa !16 - %118 = add nsw i32 %.3136, 1 - br label %119 - -119: ; preds = %105, %108, %112, %117 - %.4 = phi i32 [ %.3136, %105 ], [ %118, %117 ], [ %.3136, %112 ], [ %.3136, %108 ] +104: ; preds = %.lr.ph137, %118 + %indvars.iv150 = phi i64 [ 0, %.lr.ph137 ], [ %indvars.iv.next151, %118 ] + %.3136 = phi i32 [ %.182, %.lr.ph137 ], [ %.4, %118 ] + %105 = getelementptr inbounds nuw [8 x i32], ptr %7, i64 0, i64 %indvars.iv150 + %106 = load i32, ptr %105, align 4, !tbaa !16 + %.not101 = icmp eq i32 %106, 0 + br i1 %.not101, label %107, label %118 + +107: ; preds = %104 + %108 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv150 + %109 = load i32, ptr %108, align 4, !tbaa !16 + %110 = icmp eq i32 %109, 0 + br i1 %110, label %111, label %118 + +111: ; preds = %107 + %112 = getelementptr inbounds nuw [8 x i32], ptr %6, i64 0, i64 %indvars.iv150 + %113 = load i32, ptr %112, align 4, !tbaa !16 + %114 = and i32 %113, %103 + %115 = icmp eq i32 %114, 0 + br i1 %115, label %116, label %118 + +116: ; preds = %111 + store i32 1, ptr %108, align 4, !tbaa !16 + %117 = add nsw i32 %.3136, 1 + br label %118 + +118: ; preds = %104, %107, %111, %116 + %.4 = phi i32 [ %.3136, %104 ], [ %117, %116 ], [ %.3136, %111 ], [ %.3136, %107 ] %indvars.iv.next151 = add nuw nsw i64 %indvars.iv150, 1 %exitcond154.not = icmp eq i64 %indvars.iv.next151, %wide.trip.count153 - br i1 %exitcond154.not, label %.loopexit, label %105, !llvm.loop !40 + br i1 %exitcond154.not, label %.loopexit, label %104, !llvm.loop !40 -.loopexit: ; preds = %119, %5, %._crit_edge131, %._crit_edge - %.097 = phi i32 [ 0, %._crit_edge ], [ %.182, %._crit_edge131 ], [ 0, %5 ], [ %.4, %119 ] +.loopexit: ; preds = %118, %5, %._crit_edge131, %._crit_edge + %.097 = phi i32 [ 0, %._crit_edge ], [ %.182, %._crit_edge131 ], [ 0, %5 ], [ %.4, %118 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #12 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #12 ret i32 %.097 @@ -796,8 +795,8 @@ Kit_DsdNtkObj.exit: ; preds = %38 %47 = getelementptr inbounds nuw i8, ptr %40, i64 24 %48 = load ptr, ptr %47, align 8, !tbaa !11 %49 = sub nsw i32 %43, %45 - %50 = sext i32 %49 to i64 - %51 = getelementptr inbounds ptr, ptr %48, i64 %50 + %50 = zext nneg i32 %49 to i64 + %51 = getelementptr inbounds nuw ptr, ptr %48, i64 %50 %52 = load ptr, ptr %51, align 8, !tbaa !12 %53 = icmp eq ptr %52, null br i1 %53, label %Kit_DsdNtkObj.exit.thread, label %55 diff --git a/bench/abc/optimized/wlcBlast.ll b/bench/abc/optimized/wlcBlast.ll index f8ea669d85e..eda735f2156 100644 --- a/bench/abc/optimized/wlcBlast.ll +++ b/bench/abc/optimized/wlcBlast.ll @@ -3323,153 +3323,154 @@ define void @Wlc_BlastDivider(ptr noundef %0, ptr noundef readonly captures(none %14 = add nsw i32 %2, -1 %15 = add nsw i64 %9, -1 %16 = zext nneg i32 %14 to i64 + %17 = zext nneg i32 %14 to i64 %wide.trip.count = zext nneg i32 %2 to i64 %wide.trip.count150 = zext nneg i32 %2 to i64 br label %.preheader120 .preheader120: ; preds = %.preheader120.lr.ph, %.loopexit %indvars.iv152 = phi i64 [ %15, %.preheader120.lr.ph ], [ %indvars.iv.next153, %.loopexit ] - %17 = sub nuw nsw i64 %16, %indvars.iv152 - %18 = icmp sgt i64 %indvars.iv152, 0 - br i1 %18, label %.lr.ph, label %.lr.ph129 + %18 = sub nuw nsw i64 %17, %indvars.iv152 + %19 = icmp sgt i64 %indvars.iv152, 0 + br i1 %19, label %.lr.ph, label %.lr.ph129 -19: ; preds = %.lr.ph +20: ; preds = %.lr.ph %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %20 = icmp sgt i64 %indvars.iv.next, %17 - br i1 %20, label %.lr.ph, label %.lr.ph129, !llvm.loop !90 + %21 = icmp sgt i64 %indvars.iv.next, %18 + br i1 %21, label %.lr.ph, label %.lr.ph129, !llvm.loop !90 -.lr.ph: ; preds = %.preheader120, %19 - %indvars.iv = phi i64 [ %indvars.iv.next, %19 ], [ %15, %.preheader120 ] - %.0105122 = phi i32 [ %23, %19 ], [ 0, %.preheader120 ] - %21 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv - %22 = load i32, ptr %21, align 4, !tbaa !3 - %23 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.0105122, i32 noundef %22) #23 - %24 = icmp eq i32 %23, 1 - br i1 %24, label %.thread, label %19 +.lr.ph: ; preds = %.preheader120, %20 + %indvars.iv = phi i64 [ %indvars.iv.next, %20 ], [ %15, %.preheader120 ] + %.0105122 = phi i32 [ %24, %20 ], [ 0, %.preheader120 ] + %22 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv + %23 = load i32, ptr %22, align 4, !tbaa !3 + %24 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.0105122, i32 noundef %23) #23 + %25 = icmp eq i32 %24, 1 + br i1 %25, label %.thread, label %20 .thread: ; preds = %.lr.ph - %25 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 - store i32 0, ptr %25, align 4, !tbaa !3 + %26 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 + store i32 0, ptr %26, align 4, !tbaa !3 br label %.loopexit -.lr.ph129: ; preds = %19, %.preheader120 - %.promoted.ph = phi i32 [ 0, %.preheader120 ], [ %23, %19 ] - %26 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 - br label %27 +.lr.ph129: ; preds = %20, %.preheader120 + %.promoted.ph = phi i32 [ 0, %.preheader120 ], [ %24, %20 ] + %27 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 + br label %28 -27: ; preds = %.lr.ph129, %33 - %indvars.iv141 = phi i64 [ %15, %.lr.ph129 ], [ %indvars.iv.next142, %33 ] - %28 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %39, %33 ] - %.2127 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %42, %33 ] +28: ; preds = %.lr.ph129, %34 + %indvars.iv141 = phi i64 [ %16, %.lr.ph129 ], [ %indvars.iv.next142, %34 ] + %29 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %40, %34 ] + %.2127 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %43, %34 ] %.not117 = icmp slt i64 %indvars.iv141, %indvars.iv152 - br i1 %.not117, label %33, label %29 + br i1 %.not117, label %34, label %30 -29: ; preds = %27 - %30 = sub nsw i64 %indvars.iv141, %indvars.iv152 - %31 = getelementptr inbounds i32, ptr %3, i64 %30 - %32 = load i32, ptr %31, align 4, !tbaa !3 - br label %33 +30: ; preds = %28 + %31 = sub nsw i64 %indvars.iv141, %indvars.iv152 + %32 = getelementptr inbounds nuw i32, ptr %3, i64 %31 + %33 = load i32, ptr %32, align 4, !tbaa !3 + br label %34 -33: ; preds = %27, %29 - %34 = phi i32 [ %32, %29 ], [ 0, %27 ] - %35 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv141 - %36 = load i32, ptr %35, align 4, !tbaa !3 - %37 = xor i32 %36, 1 - %38 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %34, i32 noundef %37) #23 - %39 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.2127, i32 noundef %28, i32 noundef %38) #23 - %40 = load i32, ptr %35, align 4, !tbaa !3 - %41 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %34, i32 noundef %40) #23 - %42 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.2127, i32 noundef %41) #23 +34: ; preds = %28, %30 + %35 = phi i32 [ %33, %30 ], [ 0, %28 ] + %36 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv141 + %37 = load i32, ptr %36, align 4, !tbaa !3 + %38 = xor i32 %37, 1 + %39 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %35, i32 noundef %38) #23 + %40 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.2127, i32 noundef %29, i32 noundef %39) #23 + %41 = load i32, ptr %36, align 4, !tbaa !3 + %42 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %35, i32 noundef %41) #23 + %43 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.2127, i32 noundef %42) #23 %indvars.iv.next142 = add nsw i64 %indvars.iv141, -1 - %43 = icmp slt i64 %indvars.iv141, 1 - %44 = icmp eq i32 %42, 1 - %or.cond = select i1 %43, i1 true, i1 %44 - br i1 %or.cond, label %45, label %27, !llvm.loop !91 - -45: ; preds = %33 - %46 = xor i32 %39, 1 - store i32 %46, ptr %26, align 4, !tbaa !3 - %47 = icmp eq i32 %39, 1 - br i1 %47, label %.loopexit, label %.lr.ph133 - -.lr.ph133: ; preds = %45, %56 - %indvars.iv144 = phi i64 [ %indvars.iv.next145, %56 ], [ 0, %45 ] - %.0132 = phi i32 [ %61, %56 ], [ 0, %45 ] - %48 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv144 - %49 = load i32, ptr %48, align 4, !tbaa !3 - %50 = xor i32 %49, 1 - %51 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.0132, i32 noundef %50, i32 noundef %49) #23 + %44 = icmp slt i64 %indvars.iv141, 1 + %45 = icmp eq i32 %43, 1 + %or.cond = select i1 %44, i1 true, i1 %45 + br i1 %or.cond, label %46, label %28, !llvm.loop !91 + +46: ; preds = %34 + %47 = xor i32 %40, 1 + store i32 %47, ptr %27, align 4, !tbaa !3 + %48 = icmp eq i32 %40, 1 + br i1 %48, label %.loopexit, label %.lr.ph133 + +.lr.ph133: ; preds = %46, %57 + %indvars.iv144 = phi i64 [ %indvars.iv.next145, %57 ], [ 0, %46 ] + %.0132 = phi i32 [ %62, %57 ], [ 0, %46 ] + %49 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv144 + %50 = load i32, ptr %49, align 4, !tbaa !3 + %51 = xor i32 %50, 1 + %52 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.0132, i32 noundef %51, i32 noundef %50) #23 %.not118 = icmp slt i64 %indvars.iv144, %indvars.iv152 - br i1 %.not118, label %56, label %52 - -52: ; preds = %.lr.ph133 - %53 = sub nsw i64 %indvars.iv144, %indvars.iv152 - %54 = getelementptr inbounds i32, ptr %3, i64 %53 - %55 = load i32, ptr %54, align 4, !tbaa !3 - br label %56 + br i1 %.not118, label %57, label %53 -56: ; preds = %.lr.ph133, %52 - %57 = phi i32 [ %55, %52 ], [ 0, %.lr.ph133 ] - %58 = load i32, ptr %48, align 4, !tbaa !3 - %59 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %.0132, i32 noundef %57) #23 - %60 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.0132, i32 noundef %57) #23 - %61 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %58, i32 noundef %59, i32 noundef %60) #23 - %62 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %51, i32 noundef %57) #23 - %63 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv144 - store i32 %62, ptr %63, align 4, !tbaa !3 +53: ; preds = %.lr.ph133 + %54 = sub nsw i64 %indvars.iv144, %indvars.iv152 + %55 = getelementptr inbounds nuw i32, ptr %3, i64 %54 + %56 = load i32, ptr %55, align 4, !tbaa !3 + br label %57 + +57: ; preds = %.lr.ph133, %53 + %58 = phi i32 [ %56, %53 ], [ 0, %.lr.ph133 ] + %59 = load i32, ptr %49, align 4, !tbaa !3 + %60 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %.0132, i32 noundef %58) #23 + %61 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.0132, i32 noundef %58) #23 + %62 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %59, i32 noundef %60, i32 noundef %61) #23 + %63 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %52, i32 noundef %58) #23 + %64 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv144 + store i32 %63, ptr %64, align 4, !tbaa !3 %indvars.iv.next145 = add nuw nsw i64 %indvars.iv144, 1 %exitcond.not = icmp eq i64 %indvars.iv.next145, %wide.trip.count br i1 %exitcond.not, label %._crit_edge134, label %.lr.ph133, !llvm.loop !92 -._crit_edge134: ; preds = %56 - %64 = icmp eq i32 %39, 0 - br i1 %64, label %65, label %.lr.ph136 +._crit_edge134: ; preds = %57 + %65 = icmp eq i32 %40, 0 + br i1 %65, label %66, label %.lr.ph136 -65: ; preds = %._crit_edge134 - %66 = tail call ptr @Wlc_VecCopy(ptr noundef %6, ptr noundef nonnull %12, i32 noundef %2) +66: ; preds = %._crit_edge134 + %67 = tail call ptr @Wlc_VecCopy(ptr noundef %6, ptr noundef nonnull %12, i32 noundef %2) br label %.loopexit .lr.ph136: ; preds = %._crit_edge134, %.lr.ph136 %indvars.iv147 = phi i64 [ %indvars.iv.next148, %.lr.ph136 ], [ 0, %._crit_edge134 ] - %67 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv147 - %68 = load i32, ptr %67, align 4, !tbaa !3 - %69 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv147 - %70 = load i32, ptr %69, align 4, !tbaa !3 - %71 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %46, i32 noundef %68, i32 noundef %70) #23 - store i32 %71, ptr %69, align 4, !tbaa !3 + %68 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv147 + %69 = load i32, ptr %68, align 4, !tbaa !3 + %70 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv147 + %71 = load i32, ptr %70, align 4, !tbaa !3 + %72 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %47, i32 noundef %69, i32 noundef %71) #23 + store i32 %72, ptr %70, align 4, !tbaa !3 %indvars.iv.next148 = add nuw nsw i64 %indvars.iv147, 1 %exitcond151.not = icmp eq i64 %indvars.iv.next148, %wide.trip.count150 br i1 %exitcond151.not, label %.loopexit, label %.lr.ph136, !llvm.loop !93 -.loopexit: ; preds = %.lr.ph136, %.thread, %65, %45 +.loopexit: ; preds = %.lr.ph136, %.thread, %66, %46 %indvars.iv.next153 = add nsw i64 %indvars.iv152, -1 - br i1 %18, label %.preheader120, label %._crit_edge139, !llvm.loop !94 + br i1 %19, label %.preheader120, label %._crit_edge139, !llvm.loop !94 ._crit_edge139: ; preds = %.loopexit, %7 %.not = icmp eq ptr %12, null - br i1 %.not, label %73, label %72 + br i1 %.not, label %74, label %73 -72: ; preds = %._crit_edge139 +73: ; preds = %._crit_edge139 tail call void @free(ptr noundef nonnull %12) #23 - br label %73 + br label %74 -73: ; preds = %._crit_edge139, %72 +74: ; preds = %._crit_edge139, %73 %.not115 = icmp eq i32 %5, 0 - br i1 %.not115, label %76, label %74 + br i1 %.not115, label %77, label %75 -74: ; preds = %73 - %75 = tail call ptr @Wlc_VecCopy(ptr noundef %6, ptr noundef %11, i32 noundef %2) - br label %76 +75: ; preds = %74 + %76 = tail call ptr @Wlc_VecCopy(ptr noundef %6, ptr noundef %11, i32 noundef %2) + br label %77 -76: ; preds = %74, %73 +77: ; preds = %75, %74 %.not116 = icmp eq ptr %11, null - br i1 %.not116, label %78, label %77 + br i1 %.not116, label %79, label %78 -77: ; preds = %76 +78: ; preds = %77 tail call void @free(ptr noundef nonnull %11) #23 - br label %78 + br label %79 -78: ; preds = %76, %77 +79: ; preds = %77, %78 ret void } diff --git a/bench/abseil-cpp/optimized/charconv.ll b/bench/abseil-cpp/optimized/charconv.ll index 237ff7a1575..63e979fbe42 100644 --- a/bench/abseil-cpp/optimized/charconv.ll +++ b/bench/abseil-cpp/optimized/charconv.ll @@ -1700,7 +1700,7 @@ _ZN4absl16strings_internal11BigUnsignedILi84EE9SetToZeroEv.exit.i: ; preds = %_Z 52: ; preds = %52, %.lr.ph.i %indvars.iv.i = phi i64 [ %smin.i, %.lr.ph.i ], [ %indvars.iv.next.i, %52 ] %53 = sub nsw i64 %indvars.iv.i, %46 - %54 = getelementptr inbounds [84 x i32], ptr %45, i64 0, i64 %53 + %54 = getelementptr inbounds nuw [84 x i32], ptr %45, i64 0, i64 %53 %55 = load i32, ptr %54, align 4, !tbaa !26 %56 = add nsw i64 %53, -1 %57 = getelementptr inbounds [84 x i32], ptr %45, i64 0, i64 %56 @@ -1809,7 +1809,7 @@ _ZN4absl16strings_internal11BigUnsignedILi84EE9SetToZeroEv.exit.i53: ; preds = % 101: ; preds = %101, %.lr.ph.i41 %indvars.iv.i43 = phi i64 [ %smin.i42, %.lr.ph.i41 ], [ %indvars.iv.next.i44, %101 ] %102 = sub nsw i64 %indvars.iv.i43, %96 - %103 = getelementptr inbounds [84 x i32], ptr %16, i64 0, i64 %102 + %103 = getelementptr inbounds nuw [84 x i32], ptr %16, i64 0, i64 %102 %104 = load i32, ptr %103, align 4, !tbaa !26 %105 = add nsw i64 %102, -1 %106 = getelementptr inbounds [84 x i32], ptr %16, i64 0, i64 %105 @@ -2044,7 +2044,7 @@ _ZN4absl16strings_internal11BigUnsignedILi84EE9SetToZeroEv.exit.i76: ; preds = % 197: ; preds = %197, %.lr.ph.i64 %indvars.iv.i66 = phi i64 [ %smin.i65, %.lr.ph.i64 ], [ %indvars.iv.next.i67, %197 ] %198 = sub nsw i64 %indvars.iv.i66, %191 - %199 = getelementptr inbounds [84 x i32], ptr %190, i64 0, i64 %198 + %199 = getelementptr inbounds nuw [84 x i32], ptr %190, i64 0, i64 %198 %200 = load i32, ptr %199, align 4, !tbaa !26 %201 = add nsw i64 %198, -1 %202 = getelementptr inbounds [84 x i32], ptr %190, i64 0, i64 %201 @@ -2161,7 +2161,7 @@ _ZN4absl16strings_internal11BigUnsignedILi84EE9SetToZeroEv.exit.i96: ; preds = % 250: ; preds = %250, %.lr.ph.i84 %indvars.iv.i86 = phi i64 [ %smin.i85, %.lr.ph.i84 ], [ %indvars.iv.next.i87, %250 ] %251 = sub nsw i64 %indvars.iv.i86, %244 - %252 = getelementptr inbounds [84 x i32], ptr %243, i64 0, i64 %251 + %252 = getelementptr inbounds nuw [84 x i32], ptr %243, i64 0, i64 %251 %253 = load i32, ptr %252, align 4, !tbaa !26 %254 = add nsw i64 %251, -1 %255 = getelementptr inbounds [84 x i32], ptr %243, i64 0, i64 %254 diff --git a/bench/arrow/optimized/basic_decimal.ll b/bench/arrow/optimized/basic_decimal.ll index 5ddc022eda6..f3a93f7ccb3 100644 --- a/bench/arrow/optimized/basic_decimal.ll +++ b/bench/arrow/optimized/basic_decimal.ll @@ -3193,22 +3193,22 @@ define noundef nonnull align 8 dereferenceable(32) ptr @_ZN5arrow15BasicDecimal2 %17 = getelementptr inbounds nuw i8, ptr %0, i64 24 %18 = shl i64 %16, %9 store i64 %18, ptr %17, align 8, !tbaa !7 - %.not31.not53 = icmp ult i32 %1, 192 - br i1 %.not31.not53, label %.lr.ph.split, label %.preheader + %.not31.not52 = icmp ult i32 %1, 192 + br i1 %.not31.not52, label %.lr.ph.split, label %.preheader .lr.ph.split.us.preheader: ; preds = %.lr.ph %19 = zext nneg i32 %5 to i64 br label %.lr.ph.split.us .lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %.lr.ph.split.us - %indvars.iv45 = phi i64 [ 3, %.lr.ph.split.us.preheader ], [ %indvars.iv.next46, %.lr.ph.split.us ] - %20 = sub nsw i64 %indvars.iv45, %19 + %indvars.iv44 = phi i64 [ 3, %.lr.ph.split.us.preheader ], [ %indvars.iv.next45, %.lr.ph.split.us ] + %20 = sub nsw i64 %indvars.iv44, %19 %21 = getelementptr inbounds nuw [4 x i64], ptr %0, i64 0, i64 %20 %22 = load i64, ptr %21, align 8, !tbaa !7 - %23 = getelementptr inbounds nuw [4 x i64], ptr %0, i64 0, i64 %indvars.iv45 + %23 = getelementptr inbounds nuw [4 x i64], ptr %0, i64 0, i64 %indvars.iv44 store i64 %22, ptr %23, align 8, !tbaa !7 - %indvars.iv.next46 = add nsw i64 %indvars.iv45, -1 - %.not.us.not = icmp samesign ugt i64 %indvars.iv45, %19 + %indvars.iv.next45 = add nsw i64 %indvars.iv44, -1 + %.not.us.not = icmp samesign ugt i64 %indvars.iv44, %19 br i1 %.not.us.not, label %.lr.ph.split.us, label %.preheader, !llvm.loop !31 .preheader: ; preds = %.lr.ph.split, %.lr.ph.split.us, %.lr.ph.split.preheader @@ -3232,14 +3232,14 @@ define noundef nonnull align 8 dereferenceable(32) ptr @_ZN5arrow15BasicDecimal2 .lr.ph.split: ; preds = %.lr.ph.split.preheader, %.lr.ph.split %32 = phi i64 [ %43, %.lr.ph.split ], [ %18, %.lr.ph.split.preheader ] %33 = phi ptr [ %42, %.lr.ph.split ], [ %17, %.lr.ph.split.preheader ] - %indvars.iv54 = phi i64 [ %indvars.iv.next, %.lr.ph.split ], [ 3, %.lr.ph.split.preheader ] - %34 = add nsw i64 %indvars.iv54, %13 + %indvars.iv53 = phi i64 [ %indvars.iv.next, %.lr.ph.split ], [ 3, %.lr.ph.split.preheader ] + %34 = add nsw i64 %indvars.iv53, %13 %35 = getelementptr inbounds nuw [4 x i64], ptr %0, i64 0, i64 %34 %36 = load i64, ptr %35, align 8, !tbaa !7 %37 = lshr i64 %36, %11 %38 = or i64 %37, %32 store i64 %38, ptr %33, align 8, !tbaa !7 - %indvars.iv.next = add nsw i64 %indvars.iv54, -1 + %indvars.iv.next = add nsw i64 %indvars.iv53, -1 %39 = sub nsw i64 %indvars.iv.next, %12 %40 = getelementptr inbounds nuw [4 x i64], ptr %0, i64 0, i64 %39 %41 = load i64, ptr %40, align 8, !tbaa !7 diff --git a/bench/arrow/optimized/double-to-string.ll b/bench/arrow/optimized/double-to-string.ll index 9a8250b6f82..d66b9920404 100644 --- a/bench/arrow/optimized/double-to-string.ll +++ b/bench/arrow/optimized/double-to-string.ll @@ -450,7 +450,7 @@ _ZN14arrow_vendored17double_conversion13StringBuilder10AddPaddingEci.exit56: ; p %87 = load ptr, ptr %5, align 8, !tbaa !22 %88 = sext i32 %86 to i64 %89 = getelementptr inbounds i8, ptr %87, i64 %88 - %90 = sext i32 %85 to i64 + %90 = zext nneg i32 %85 to i64 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %89, ptr nonnull align 1 %84, i64 %90, i1 false) %91 = load i32, ptr %46, align 8, !tbaa !19 %92 = add nsw i32 %91, %85 diff --git a/bench/boost/optimized/console_buffer.ll b/bench/boost/optimized/console_buffer.ll index 90bb3bbb288..0dea03e597d 100644 --- a/bench/boost/optimized/console_buffer.ll +++ b/bench/boost/optimized/console_buffer.ll @@ -112,7 +112,6 @@ _ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit: ; preds = % ._crit_edge: ; preds = %39 %.pre = sub nsw i32 %12, %.0 - %.pre18 = sext i32 %.pre to i64 br label %47 41: ; preds = %39 @@ -120,46 +119,46 @@ _ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit: ; preds = % %43 = zext nneg i32 %.0 to i64 %44 = getelementptr inbounds nuw i8, ptr %42, i64 %43 %45 = sub nsw i32 %12, %.0 - %46 = sext i32 %45 to i64 + %46 = zext nneg i32 %45 to i64 call void @llvm.memmove.p0.p0.i64(ptr align 1 %42, ptr align 1 %44, i64 %46, i1 false) br label %47 47: ; preds = %._crit_edge, %41 - %.pre-phi19 = phi i64 [ %.pre18, %._crit_edge ], [ %46, %41 ] %.pre-phi = phi i32 [ %.pre, %._crit_edge ], [ %45, %41 ] %.ptr = getelementptr inbounds nuw i8, ptr %0, i64 64 %48 = getelementptr inbounds nuw i8, ptr %0, i64 1088 store ptr %.ptr, ptr %7, align 8, !tbaa !11 %49 = getelementptr inbounds nuw i8, ptr %0, i64 48 store ptr %48, ptr %49, align 8, !tbaa !19 - %50 = getelementptr i8, ptr %0, i64 %.pre-phi19 - %.ptr15 = getelementptr i8, ptr %50, i64 64 + %50 = sext i32 %.pre-phi to i64 + %51 = getelementptr i8, ptr %0, i64 %50 + %.ptr15 = getelementptr i8, ptr %51, i64 64 store ptr %.ptr15, ptr %5, align 8, !tbaa !6 %.not = icmp eq i32 %1, -1 - br i1 %.not, label %_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc.exit, label %51 - -51: ; preds = %47 - %52 = icmp slt i32 %.pre-phi, 1024 - br i1 %52, label %53, label %57, !prof !20 - -53: ; preds = %51 - %54 = trunc i32 %1 to i8 - store i8 %54, ptr %.ptr15, align 1, !tbaa !21 - %55 = load ptr, ptr %5, align 8, !tbaa !6 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 1 - store ptr %56, ptr %5, align 8, !tbaa !6 + br i1 %.not, label %_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc.exit, label %52 + +52: ; preds = %47 + %53 = icmp slt i32 %.pre-phi, 1024 + br i1 %53, label %54, label %58, !prof !20 + +54: ; preds = %52 + %55 = trunc i32 %1 to i8 + store i8 %55, ptr %.ptr15, align 1, !tbaa !21 + %56 = load ptr, ptr %5, align 8, !tbaa !6 + %57 = getelementptr inbounds nuw i8, ptr %56, i64 1 + store ptr %57, ptr %5, align 8, !tbaa !6 br label %_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc.exit -57: ; preds = %51 - %58 = and i32 %1, 255 - %59 = load ptr, ptr %0, align 8, !tbaa !3 - %60 = getelementptr inbounds nuw i8, ptr %59, i64 104 - %61 = load ptr, ptr %60, align 8 - %62 = call noundef i32 %61(ptr noundef nonnull align 8 dereferenceable(64) %0, i32 noundef %58) +58: ; preds = %52 + %59 = and i32 %1, 255 + %60 = load ptr, ptr %0, align 8, !tbaa !3 + %61 = getelementptr inbounds nuw i8, ptr %60, i64 104 + %62 = load ptr, ptr %61, align 8 + %63 = call noundef i32 %62(ptr noundef nonnull align 8 dereferenceable(64) %0, i32 noundef %59) br label %_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc.exit -_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc.exit: ; preds = %57, %53, %_ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit.thread, %47, %_ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit - %.010 = phi i32 [ -1, %_ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit ], [ 0, %47 ], [ -1, %_ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit.thread ], [ 0, %53 ], [ 0, %57 ] +_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc.exit: ; preds = %58, %54, %_ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit.thread, %47, %_ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit + %.010 = phi i32 [ -1, %_ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit ], [ 0, %47 ], [ -1, %_ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit.thread ], [ 0, %54 ], [ 0, %58 ] ret i32 %.010 } diff --git a/bench/c3c/optimized/file_utils.ll b/bench/c3c/optimized/file_utils.ll index add39593c6f..9b37fe3d046 100644 --- a/bench/c3c/optimized/file_utils.ll +++ b/bench/c3c/optimized/file_utils.ll @@ -787,8 +787,8 @@ define dso_local noundef zeroext i1 @file_has_suffix_in_list(ptr noundef readonl 10: ; preds = %.lr.ph %11 = sub nsw i32 %1, %9 - %12 = sext i32 %11 to i64 - %13 = getelementptr inbounds i8, ptr %0, i64 %12 + %12 = zext nneg i32 %11 to i64 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 %12 %sext = shl i64 %8, 32 %14 = ashr exact i64 %sext, 32 %15 = tail call i32 @strncmp(ptr noundef %13, ptr noundef nonnull %7, i64 noundef %14) #18 @@ -1007,9 +1007,8 @@ define dso_local void @file_add_wildcard_files(ptr noundef captures(none) %0, pt 32: ; preds = %.lr.ph.i.us %33 = sub i64 %20, %30 - %sext.us = shl i64 %33, 32 - %34 = ashr exact i64 %sext.us, 32 - %35 = getelementptr inbounds i8, ptr %19, i64 %34 + %34 = and i64 %33, 4294967295 + %35 = getelementptr inbounds nuw i8, ptr %19, i64 %34 %sext.i.us = shl i64 %30, 32 %36 = ashr exact i64 %sext.i.us, 32 %37 = tail call i32 @strncmp(ptr noundef nonnull readonly %35, ptr noundef nonnull %29, i64 noundef %36) #18 diff --git a/bench/casadi/optimized/qrqp.ll b/bench/casadi/optimized/qrqp.ll index feb3dd1e0be..fc1cb0628b0 100644 --- a/bench/casadi/optimized/qrqp.ll +++ b/bench/casadi/optimized/qrqp.ll @@ -17799,7 +17799,7 @@ define linkonce_odr hidden void @_ZN6casadi16casadi_qrqp_flipIdEEvPNS_16casadi_q 36: ; preds = %13 %37 = sub nsw i64 %8, %23 - %38 = getelementptr inbounds i64, ptr %16, i64 %37 + %38 = getelementptr inbounds nuw i64, ptr %16, i64 %37 %39 = load i64, ptr %38, align 8, !tbaa !142 %40 = getelementptr i8, ptr %38, i64 8 %41 = load i64, ptr %40, align 8, !tbaa !142 @@ -18185,7 +18185,7 @@ define linkonce_odr hidden void @_ZN6casadi20casadi_qrqp_du_indexIdEEvPNS_16casa 57: ; preds = %43 %58 = sub nsw i64 %.055, %49 - %59 = getelementptr inbounds i64, ptr %45, i64 %58 + %59 = getelementptr inbounds nuw i64, ptr %45, i64 %58 %60 = load i64, ptr %59, align 8, !tbaa !142 %61 = getelementptr i8, ptr %59, i64 8 %62 = load i64, ptr %61, align 8, !tbaa !142 @@ -18388,7 +18388,7 @@ _ZN6casadi12casadi_clearIdEEvPT_x.exit.i: ; preds = %.lr.ph.preheader.i. 66: ; preds = %_ZN6casadi12casadi_clearIdEEvPT_x.exit.i %67 = sub nsw i64 %6, %11 - %68 = getelementptr inbounds i64, ptr %16, i64 %67 + %68 = getelementptr inbounds nuw i64, ptr %16, i64 %67 %69 = load i64, ptr %68, align 8, !tbaa !142 %70 = getelementptr i8, ptr %68, i64 8 %71 = load i64, ptr %70, align 8, !tbaa !142 @@ -19899,7 +19899,7 @@ _ZN6casadi18casadi_qr_singularIdEExPT_PxPKS1_PKxS7_S1_.exit: ; preds = %.lr.ph.s 245: ; preds = %181 %246 = sub nsw i64 %.2195317, %188 - %247 = getelementptr inbounds i64, ptr %193, i64 %246 + %247 = getelementptr inbounds nuw i64, ptr %193, i64 %246 %248 = load i64, ptr %247, align 8, !tbaa !142 %249 = getelementptr i8, ptr %247, i64 8 %250 = load i64, ptr %249, align 8, !tbaa !142 @@ -20208,7 +20208,7 @@ _ZN6casadi24casadi_qrqp_du_directionIdEEiPNS_16casadi_qrqp_dataIT_EE.exit: ; pre 419: ; preds = %412 %420 = sub nsw i64 %.3196324, %341 - %421 = getelementptr inbounds i64, ptr %414, i64 %420 + %421 = getelementptr inbounds nuw i64, ptr %414, i64 %420 %422 = load i64, ptr %421, align 8, !tbaa !142 %423 = getelementptr i8, ptr %421, i64 8 %424 = load i64, ptr %423, align 8, !tbaa !142 @@ -20303,7 +20303,7 @@ _ZN6casadi23casadi_qrqp_enforceableIdEEiPNS_16casadi_qrqp_dataIT_EExx.exit: ; pr 477: ; preds = %470 %478 = sub nsw i64 %.3196324, %341 - %479 = getelementptr inbounds i64, ptr %472, i64 %478 + %479 = getelementptr inbounds nuw i64, ptr %472, i64 %478 %480 = load i64, ptr %479, align 8, !tbaa !142 %481 = getelementptr i8, ptr %479, i64 8 %482 = load i64, ptr %481, align 8, !tbaa !142 @@ -21538,7 +21538,7 @@ _ZN6casadi11casadi_axpyIdEEvxT_PKS1_PS1_.exit.thread: ; preds = %73, %_ZN6casadi 127: ; preds = %118 %128 = sub nsw i64 %112, %61 - %129 = getelementptr inbounds i64, ptr %5, i64 %128 + %129 = getelementptr inbounds nuw i64, ptr %5, i64 %128 %130 = load i64, ptr %129, align 8, !tbaa !142 %131 = getelementptr i8, ptr %129, i64 8 %132 = load i64, ptr %131, align 8, !tbaa !142 diff --git a/bench/clamav/optimized/str.ll b/bench/clamav/optimized/str.ll index ed414321d51..68ad95a2b17 100644 --- a/bench/clamav/optimized/str.ll +++ b/bench/clamav/optimized/str.ll @@ -549,9 +549,8 @@ define range(i32 0, 2) i32 @cli_strbcasestr(ptr noundef readonly captures(none) 8: ; preds = %2 %9 = sub i64 %3, %5 - %sext = shl i64 %9, 32 - %10 = ashr exact i64 %sext, 32 - %11 = getelementptr inbounds i8, ptr %0, i64 %10 + %10 = and i64 %9, 4294967295 + %11 = getelementptr inbounds nuw i8, ptr %0, i64 %10 %12 = tail call i32 @strcasecmp(ptr noundef nonnull %11, ptr noundef nonnull %1) #23 %.not = icmp eq i32 %12, 0 %13 = zext i1 %.not to i32 diff --git a/bench/cvc5/optimized/cadical.ll b/bench/cvc5/optimized/cadical.ll index 37297ad466c..01037e9128a 100644 --- a/bench/cvc5/optimized/cadical.ll +++ b/bench/cvc5/optimized/cadical.ll @@ -4883,7 +4883,7 @@ _ZNSt15_Deque_iteratorIiRiPiEpLEl.exit.i.i.i: ; preds = %234, %228 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEElEvRT_T0_.exit: ; preds = %_ZStplRKSt15_Deque_iteratorIiRiPiEl.exit %248 = sub nsw i64 %4, %57 - %249 = getelementptr inbounds i32, ptr %2, i64 %248 + %249 = getelementptr inbounds nuw i32, ptr %2, i64 %248 %250 = load ptr, ptr %30, align 8, !tbaa !135 %251 = load ptr, ptr %79, align 8, !tbaa !148 %252 = load ptr, ptr %50, align 8, !tbaa !149 @@ -10250,7 +10250,7 @@ _ZNSt15_Deque_iteratorIN4cvc58internal4prop10SatLiteralERS3_PS3_EpLEl.exit.i.i.i _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal4prop10SatLiteralESt6vectorIS5_SaIS5_EEEElEvRT_T0_.exit: ; preds = %_ZStplRKSt15_Deque_iteratorIN4cvc58internal4prop10SatLiteralERS3_PS3_El.exit %246 = sub nsw i64 %4, %41 - %247 = getelementptr inbounds %"class.cvc5::internal::prop::SatLiteral", ptr %2, i64 %246 + %247 = getelementptr inbounds nuw %"class.cvc5::internal::prop::SatLiteral", ptr %2, i64 %246 %248 = load ptr, ptr %14, align 8, !tbaa !511 %.not12.i.i.i.i.i.i = icmp eq ptr %248, %storemerge.i.i br i1 %.not12.i.i.i.i.i.i, label %_ZSt22__uninitialized_move_aISt15_Deque_iteratorIN4cvc58internal4prop10SatLiteralERS4_PS4_ES7_SaIS4_EET0_T_SA_S9_RT1_.exit.i, label %.lr.ph.i.i.i.i.i.i.preheader diff --git a/bench/double_conversion/optimized/bignum.ll b/bench/double_conversion/optimized/bignum.ll index dc41d3c175f..43fd581767c 100644 --- a/bench/double_conversion/optimized/bignum.ll +++ b/bench/double_conversion/optimized/bignum.ll @@ -2100,7 +2100,7 @@ _ZN17double_conversion6Bignum5AlignERKS0_.exit: ; preds = %16, %.lr.ph20.i br i1 %96, label %_ZN17double_conversion6Bignum5ClampEv.exit, label %.preheader .preheader: ; preds = %89, %.loopexit - %.132 = phi i16 [ %132, %.loopexit ], [ %93, %89 ] + %.132 = phi i16 [ %128, %.loopexit ], [ %93, %89 ] %97 = load i16, ptr %1, align 4, !tbaa !3 %98 = sext i16 %97 to i32 %99 = load i16, ptr %11, align 2, !tbaa !8 @@ -2120,62 +2120,58 @@ _ZN17double_conversion6Bignum5AlignERKS0_.exit: ; preds = %16, %.lr.ph20.i .preheader.i.i: ; preds = %108 %110 = tail call i16 @llvm.smin.i16(i16 %104, i16 %99) - %111 = sext i16 %97 to i64 - %112 = sext i16 %99 to i64 - %113 = add nsw i64 %112, %111 - %114 = sext i16 %104 to i64 - %115 = sext i16 %110 to i64 - %116 = sext i32 %101 to i64 - %117 = sext i32 %106 to i64 - br label %118 - -118: ; preds = %131, %.preheader.i.i - %indvars.iv.i.i = phi i64 [ %113, %.preheader.i.i ], [ %indvars.iv.next.i.i, %131 ] - %indvars.iv.next.i.i = add nsw i64 %indvars.iv.i.i, -1 - %.not.not.not.i.i = icmp sgt i64 %indvars.iv.i.i, %115 - br i1 %.not.not.not.i.i, label %119, label %.loopexit - -119: ; preds = %118 - %.not.i.i.i = icmp sgt i64 %indvars.iv.i.i, %116 - %120 = icmp sle i64 %indvars.iv.i.i, %112 - %or.cond.i.i.i = or i1 %120, %.not.i.i.i - br i1 %or.cond.i.i.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i, label %121 - -121: ; preds = %119 - %122 = sub nsw i64 %indvars.iv.next.i.i, %112 - %123 = getelementptr inbounds [128 x i32], ptr %67, i64 0, i64 %122 - %124 = load i32, ptr %123, align 4, !tbaa !9 + %111 = sext i16 %110 to i32 + br label %112 + +112: ; preds = %127, %.preheader.i.i + %.024.in.i.i = phi i32 [ %.024.i.i, %127 ], [ %101, %.preheader.i.i ] + %.024.i.i = add nsw i32 %.024.in.i.i, -1 + %.not.not.not.i.i = icmp sgt i32 %.024.in.i.i, %111 + br i1 %.not.not.not.i.i, label %113, label %.loopexit + +113: ; preds = %112 + %.not.i.i.i = icmp sgt i32 %.024.in.i.i, %101 + %114 = icmp sle i32 %.024.in.i.i, %100 + %or.cond.i.i.i = or i1 %114, %.not.i.i.i + br i1 %or.cond.i.i.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i, label %115 + +115: ; preds = %113 + %116 = sub nsw i32 %.024.i.i, %100 + %117 = zext nneg i32 %116 to i64 + %118 = getelementptr inbounds nuw [128 x i32], ptr %67, i64 0, i64 %117 + %119 = load i32, ptr %118, align 4, !tbaa !9 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i -_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i: ; preds = %121, %119 - %.0.i.i.i = phi i32 [ %124, %121 ], [ 0, %119 ] - %.not.i29.i.i = icmp sgt i64 %indvars.iv.i.i, %117 - %125 = icmp sle i64 %indvars.iv.i.i, %114 - %or.cond.i30.i.i = or i1 %125, %.not.i29.i.i - br i1 %or.cond.i30.i.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i, label %126 - -126: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i - %127 = sub nsw i64 %indvars.iv.next.i.i, %114 - %128 = getelementptr inbounds [128 x i32], ptr %62, i64 0, i64 %127 - %129 = load i32, ptr %128, align 4, !tbaa !9 +_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i: ; preds = %115, %113 + %.0.i.i.i = phi i32 [ %119, %115 ], [ 0, %113 ] + %.not.i29.i.i = icmp sgt i32 %.024.in.i.i, %106 + %120 = icmp sle i32 %.024.in.i.i, %105 + %or.cond.i30.i.i = or i1 %120, %.not.i29.i.i + br i1 %or.cond.i30.i.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i, label %121 + +121: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i + %122 = sub nsw i32 %.024.i.i, %105 + %123 = zext nneg i32 %122 to i64 + %124 = getelementptr inbounds nuw [128 x i32], ptr %62, i64 0, i64 %123 + %125 = load i32, ptr %124, align 4, !tbaa !9 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i -_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i: ; preds = %126, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i - %.0.i31.i.i = phi i32 [ %129, %126 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i ] - %130 = icmp ult i32 %.0.i.i.i, %.0.i31.i.i - br i1 %130, label %.loopexit, label %131 +_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i: ; preds = %121, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i + %.0.i31.i.i = phi i32 [ %125, %121 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i ] + %126 = icmp ult i32 %.0.i.i.i, %.0.i31.i.i + br i1 %126, label %.loopexit, label %127 -131: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i +127: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i %.not.i.i = icmp ugt i32 %.0.i.i.i, %.0.i31.i.i - br i1 %.not.i.i, label %_ZN17double_conversion6Bignum5ClampEv.exit, label %118, !llvm.loop !41 + br i1 %.not.i.i, label %_ZN17double_conversion6Bignum5ClampEv.exit, label %112, !llvm.loop !41 -.loopexit: ; preds = %118, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i, %.preheader +.loopexit: ; preds = %112, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i, %.preheader tail call void @_ZN17double_conversion6Bignum14SubtractBignumERKS0_(ptr noundef nonnull align 4 dereferenceable(516) %0, ptr noundef nonnull align 4 dereferenceable(516) %1) - %132 = add i16 %.132, 1 + %128 = add i16 %.132, 1 br label %.preheader, !llvm.loop !42 -_ZN17double_conversion6Bignum5ClampEv.exit: ; preds = %108, %131, %.lr.ph.i33, %.critedge.thread3.i, %.critedge.i, %89, %2 - %.0 = phi i16 [ 0, %2 ], [ %93, %89 ], [ %76, %.critedge.i ], [ %76, %.critedge.thread3.i ], [ %76, %.lr.ph.i33 ], [ %.132, %131 ], [ %.132, %108 ] +_ZN17double_conversion6Bignum5ClampEv.exit: ; preds = %108, %127, %.lr.ph.i33, %.critedge.thread3.i, %.critedge.i, %89, %2 + %.0 = phi i16 [ 0, %2 ], [ %93, %89 ], [ %76, %.critedge.i ], [ %76, %.critedge.thread3.i ], [ %76, %.lr.ph.i33 ], [ %.132, %127 ], [ %.132, %108 ] ret i16 %.0 } @@ -2479,8 +2475,8 @@ define noundef i32 @_ZNK17double_conversion6Bignum11BigitOrZeroEi(ptr noundef no 10: ; preds = %2 %11 = sub nsw i32 %1, %7 %12 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %13 = sext i32 %11 to i64 - %14 = getelementptr inbounds [128 x i32], ptr %12, i64 0, i64 %13 + %13 = zext nneg i32 %11 to i64 + %14 = getelementptr inbounds nuw [128 x i32], ptr %12, i64 0, i64 %13 %15 = load i32, ptr %14, align 4, !tbaa !9 br label %16 @@ -2512,60 +2508,55 @@ define noundef range(i32 -1, 2) i32 @_ZN17double_conversion6Bignum7CompareERKS0_ .preheader: ; preds = %16 %18 = tail call i16 @llvm.smin.i16(i16 %12, i16 %6) - %19 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %20 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %21 = sext i16 %3 to i64 - %22 = sext i16 %6 to i64 - %23 = add nsw i64 %21, %22 - %24 = sext i16 %6 to i64 - %25 = sext i16 %12 to i64 - %26 = sext i16 %18 to i64 - %27 = sext i32 %8 to i64 - %28 = sext i32 %14 to i64 - br label %29 - -29: ; preds = %.preheader, %42 - %indvars.iv = phi i64 [ %23, %.preheader ], [ %indvars.iv.next, %42 ] - %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not.not.not = icmp sgt i64 %indvars.iv, %26 - br i1 %.not.not.not, label %30, label %.thread - -30: ; preds = %29 - %.not.i = icmp sgt i64 %indvars.iv, %27 - %31 = icmp sle i64 %indvars.iv, %24 - %or.cond.i = or i1 %31, %.not.i - br i1 %or.cond.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, label %32 - -32: ; preds = %30 - %33 = sub nsw i64 %indvars.iv.next, %24 - %34 = getelementptr inbounds [128 x i32], ptr %19, i64 0, i64 %33 - %35 = load i32, ptr %34, align 4, !tbaa !9 + %19 = sext i16 %18 to i32 + %20 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %21 = getelementptr inbounds nuw i8, ptr %1, i64 4 + br label %22 + +22: ; preds = %.preheader, %37 + %.024.in = phi i32 [ %.024, %37 ], [ %8, %.preheader ] + %.024 = add nsw i32 %.024.in, -1 + %.not.not.not = icmp sgt i32 %.024.in, %19 + br i1 %.not.not.not, label %23, label %.thread + +23: ; preds = %22 + %.not.i = icmp sgt i32 %.024.in, %8 + %24 = icmp sle i32 %.024.in, %7 + %or.cond.i = or i1 %24, %.not.i + br i1 %or.cond.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, label %25 + +25: ; preds = %23 + %26 = sub nsw i32 %.024, %7 + %27 = zext nneg i32 %26 to i64 + %28 = getelementptr inbounds nuw [128 x i32], ptr %20, i64 0, i64 %27 + %29 = load i32, ptr %28, align 4, !tbaa !9 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit -_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit: ; preds = %30, %32 - %.0.i = phi i32 [ %35, %32 ], [ 0, %30 ] - %.not.i29 = icmp sgt i64 %indvars.iv, %28 - %36 = icmp sle i64 %indvars.iv, %25 - %or.cond.i30 = or i1 %36, %.not.i29 - br i1 %or.cond.i30, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32, label %37 - -37: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit - %38 = sub nsw i64 %indvars.iv.next, %25 - %39 = getelementptr inbounds [128 x i32], ptr %20, i64 0, i64 %38 - %40 = load i32, ptr %39, align 4, !tbaa !9 +_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit: ; preds = %23, %25 + %.0.i = phi i32 [ %29, %25 ], [ 0, %23 ] + %.not.i29 = icmp sgt i32 %.024.in, %14 + %30 = icmp sle i32 %.024.in, %13 + %or.cond.i30 = or i1 %30, %.not.i29 + br i1 %or.cond.i30, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32, label %31 + +31: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit + %32 = sub nsw i32 %.024, %13 + %33 = zext nneg i32 %32 to i64 + %34 = getelementptr inbounds nuw [128 x i32], ptr %21, i64 0, i64 %33 + %35 = load i32, ptr %34, align 4, !tbaa !9 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32 -_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, %37 - %.0.i31 = phi i32 [ %40, %37 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit ] - %41 = icmp ult i32 %.0.i, %.0.i31 - br i1 %41, label %.thread, label %42 +_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, %31 + %.0.i31 = phi i32 [ %35, %31 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit ] + %36 = icmp ult i32 %.0.i, %.0.i31 + br i1 %36, label %.thread, label %37 -42: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32 +37: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32 %.not = icmp ugt i32 %.0.i, %.0.i31 - br i1 %.not, label %.thread, label %29, !llvm.loop !41 + br i1 %.not, label %.thread, label %22, !llvm.loop !41 -.thread: ; preds = %42, %29, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32, %16, %2 - %.0 = phi i32 [ -1, %2 ], [ 1, %16 ], [ -1, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32 ], [ 0, %29 ], [ 1, %42 ] +.thread: ; preds = %37, %22, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32, %16, %2 + %.0 = phi i32 [ -1, %2 ], [ 1, %16 ], [ -1, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32 ], [ 0, %22 ], [ 1, %37 ] ret i32 %.0 } @@ -2573,11 +2564,11 @@ _ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32: ; preds = %_ZNK17double_co define noundef range(i32 -1, 2) i32 @_ZN17double_conversion6Bignum11PlusCompareERKS0_S2_S2_(ptr noundef nonnull readonly align 4 captures(none) dereferenceable(516) %0, ptr noundef nonnull readonly align 4 captures(none) dereferenceable(516) %1, ptr noundef nonnull readonly align 4 captures(none) dereferenceable(516) %2) local_unnamed_addr #8 align 2 { %.pre = load i16, ptr %0, align 4, !tbaa !3 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 2 - %.pre97 = load i16, ptr %.phi.trans.insert, align 2, !tbaa !8 + %.pre96 = load i16, ptr %.phi.trans.insert, align 2, !tbaa !8 br label %tailrecurse tailrecurse: ; preds = %tailrecurse, %3 - %4 = phi i16 [ %.pre97, %3 ], [ %12, %tailrecurse ] + %4 = phi i16 [ %.pre96, %3 ], [ %12, %tailrecurse ] %5 = phi i16 [ %.pre, %3 ], [ %9, %tailrecurse ] %.tr = phi ptr [ %0, %3 ], [ %.tr65, %tailrecurse ] %.tr65 = phi ptr [ %1, %3 ], [ %.tr, %tailrecurse ] @@ -2628,83 +2619,76 @@ tailrecurse: ; preds = %tailrecurse, %3 %35 = getelementptr inbounds nuw i8, ptr %.tr, i64 4 %36 = getelementptr inbounds nuw i8, ptr %.tr65, i64 4 %37 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %38 = sext i16 %19 to i64 - %39 = sext i16 %22 to i64 - %40 = add nsw i64 %38, %39 - %41 = sext i16 %22 to i64 - %42 = sext i32 %24 to i64 - %43 = sext i16 %12 to i64 - %44 = sext i32 %14 to i64 - %45 = sext i16 %4 to i64 - %46 = sext i32 %8 to i64 - %47 = sext i16 %33 to i64 - br label %48 - -48: ; preds = %.lr.ph, %70 - %indvars.iv = phi i64 [ %40, %.lr.ph ], [ %indvars.iv.next, %70 ] - %.04079 = phi i32 [ 0, %.lr.ph ], [ %71, %70 ] - %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not.i = icmp sgt i64 %indvars.iv, %46 - %49 = icmp sle i64 %indvars.iv, %45 - %or.cond.i = or i1 %49, %.not.i - br i1 %or.cond.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, label %50 + br label %38 -50: ; preds = %48 - %51 = sub nsw i64 %indvars.iv.next, %45 - %52 = getelementptr inbounds [128 x i32], ptr %35, i64 0, i64 %51 - %53 = load i32, ptr %52, align 4, !tbaa !9 +38: ; preds = %.lr.ph, %63 + %.04079 = phi i32 [ 0, %.lr.ph ], [ %64, %63 ] + %.043.in78 = phi i32 [ %24, %.lr.ph ], [ %.04380, %63 ] + %.04380 = add nsw i32 %.043.in78, -1 + %.not.i = icmp sgt i32 %.043.in78, %8 + %39 = icmp sle i32 %.043.in78, %7 + %or.cond.i = or i1 %39, %.not.i + br i1 %or.cond.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, label %40 + +40: ; preds = %38 + %41 = sub nsw i32 %.04380, %7 + %42 = zext nneg i32 %41 to i64 + %43 = getelementptr inbounds nuw [128 x i32], ptr %35, i64 0, i64 %42 + %44 = load i32, ptr %43, align 4, !tbaa !9 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit -_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit: ; preds = %48, %50 - %.0.i = phi i32 [ %53, %50 ], [ 0, %48 ] - %.not.i52 = icmp sgt i64 %indvars.iv, %44 - %54 = icmp sle i64 %indvars.iv, %43 - %or.cond.i53 = or i1 %54, %.not.i52 - br i1 %or.cond.i53, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55, label %55 - -55: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit - %56 = sub nsw i64 %indvars.iv.next, %43 - %57 = getelementptr inbounds [128 x i32], ptr %36, i64 0, i64 %56 - %58 = load i32, ptr %57, align 4, !tbaa !9 +_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit: ; preds = %38, %40 + %.0.i = phi i32 [ %44, %40 ], [ 0, %38 ] + %.not.i52 = icmp sgt i32 %.043.in78, %14 + %45 = icmp sle i32 %.043.in78, %13 + %or.cond.i53 = or i1 %45, %.not.i52 + br i1 %or.cond.i53, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55, label %46 + +46: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit + %47 = sub nsw i32 %.04380, %13 + %48 = zext nneg i32 %47 to i64 + %49 = getelementptr inbounds nuw [128 x i32], ptr %36, i64 0, i64 %48 + %50 = load i32, ptr %49, align 4, !tbaa !9 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55 -_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, %55 - %.0.i54 = phi i32 [ %58, %55 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit ] - %.not.i56 = icmp sgt i64 %indvars.iv, %42 - %59 = icmp sle i64 %indvars.iv, %41 - %or.cond.i57 = or i1 %59, %.not.i56 - br i1 %or.cond.i57, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59, label %60 - -60: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55 - %61 = sub nsw i64 %indvars.iv.next, %41 - %62 = getelementptr inbounds [128 x i32], ptr %37, i64 0, i64 %61 - %63 = load i32, ptr %62, align 4, !tbaa !9 +_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, %46 + %.0.i54 = phi i32 [ %50, %46 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit ] + %.not.i56 = icmp sgt i32 %.043.in78, %24 + %51 = icmp sle i32 %.043.in78, %23 + %or.cond.i57 = or i1 %51, %.not.i56 + br i1 %or.cond.i57, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59, label %52 + +52: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55 + %53 = sub nsw i32 %.04380, %23 + %54 = zext nneg i32 %53 to i64 + %55 = getelementptr inbounds nuw [128 x i32], ptr %37, i64 0, i64 %54 + %56 = load i32, ptr %55, align 4, !tbaa !9 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59 -_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55, %60 - %.0.i58 = phi i32 [ %63, %60 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55 ] - %64 = add i32 %.0.i54, %.0.i - %65 = add i32 %.0.i58, %.04079 - %66 = icmp ugt i32 %64, %65 - br i1 %66, label %.thread, label %67 - -67: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59 - %68 = sub nuw i32 %65, %64 - %69 = icmp ugt i32 %68, 1 - br i1 %69, label %.thread, label %70 - -70: ; preds = %67 - %71 = shl nuw nsw i32 %68, 28 - %.not50.not.not = icmp sgt i64 %indvars.iv.next, %47 - br i1 %.not50.not.not, label %48, label %.thread.loopexit, !llvm.loop !51 - -.thread.loopexit: ; preds = %70 - %72 = icmp ne i32 %65, %64 - %73 = sext i1 %72 to i32 +_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55, %52 + %.0.i58 = phi i32 [ %56, %52 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55 ] + %57 = add i32 %.0.i54, %.0.i + %58 = add i32 %.0.i58, %.04079 + %59 = icmp ugt i32 %57, %58 + br i1 %59, label %.thread, label %60 + +60: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59 + %61 = sub nuw i32 %58, %57 + %62 = icmp ugt i32 %61, 1 + br i1 %62, label %.thread, label %63 + +63: ; preds = %60 + %64 = shl nuw nsw i32 %61, 28 + %.not50.not.not = icmp sgt i32 %.04380, %34 + br i1 %.not50.not.not, label %38, label %.thread.loopexit, !llvm.loop !51 + +.thread.loopexit: ; preds = %63 + %65 = icmp ne i32 %58, %57 + %66 = sext i1 %65 to i32 br label %.thread -.thread: ; preds = %67, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59, %30, %.thread.loopexit, %28, %26, %16 - %.0 = phi i32 [ -1, %16 ], [ 1, %26 ], [ -1, %28 ], [ 0, %30 ], [ %73, %.thread.loopexit ], [ 1, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59 ], [ -1, %67 ] +.thread: ; preds = %60, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59, %30, %.thread.loopexit, %28, %26, %16 + %.0 = phi i32 [ -1, %16 ], [ 1, %26 ], [ -1, %28 ], [ 0, %30 ], [ %66, %.thread.loopexit ], [ 1, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59 ], [ -1, %60 ] ret i32 %.0 } diff --git a/bench/eastl/optimized/TestDeque.ll b/bench/eastl/optimized/TestDeque.ll index ba31de5fab5..e4d6a99ff86 100644 --- a/bench/eastl/optimized/TestDeque.ll +++ b/bench/eastl/optimized/TestDeque.ll @@ -68472,7 +68472,7 @@ _ZN5eastl13DequeIteratorIiPiRiLj64EEppEv.exit.i.i.i.i195: ; preds = %if.then.i.i if.else37: ; preds = %_ZNK5eastl13DequeIteratorIiPiRiLj64EEplEl.exit %51 = load ptr, ptr %first, align 8 %sub = sub nsw i64 %sub.ptr.div.i.i, %add11.i - %add.ptr.i.i203 = getelementptr inbounds i32, ptr %51, i64 %sub + %add.ptr.i.i203 = getelementptr inbounds nuw i32, ptr %51, i64 %sub %52 = load ptr, ptr %itNewBegin21, align 8 %mpEnd4.i219 = getelementptr inbounds nuw i8, ptr %itNewBegin21, i64 16 %53 = load ptr, ptr %mpEnd4.i219, align 8 @@ -71421,7 +71421,7 @@ _ZN5eastl13DequeIteratorI10TestObjectPS1_RS1_Lj8EEppEv.exit.i.i.i.i212: ; preds if.else37: ; preds = %_ZNK5eastl13DequeIteratorI10TestObjectPS1_RS1_Lj8EEplEl.exit %92 = load ptr, ptr %first, align 8 %sub = sub nsw i64 %sub.ptr.div.i.i, %add11.i - %add.ptr.i.i219 = getelementptr inbounds %struct.TestObject, ptr %92, i64 %sub + %add.ptr.i.i219 = getelementptr inbounds nuw %struct.TestObject, ptr %92, i64 %sub %93 = load ptr, ptr %itNewBegin21, align 8 %mpEnd4.i235 = getelementptr inbounds nuw i8, ptr %itNewBegin21, i64 16 %94 = load ptr, ptr %mpEnd4.i235, align 8 @@ -92525,7 +92525,7 @@ _ZN5eastl13DequeIteratorIiPiRiLj64EEppEv.exit.i.i.i.i195: ; preds = %if.then.i.i if.else37: ; preds = %_ZNK5eastl13DequeIteratorIiPiRiLj64EEplEl.exit %51 = load ptr, ptr %first, align 8 %sub = sub nsw i64 %sub.ptr.div.i.i, %add11.i - %add.ptr.i.i203 = getelementptr inbounds i32, ptr %51, i64 %sub + %add.ptr.i.i203 = getelementptr inbounds nuw i32, ptr %51, i64 %sub %52 = load ptr, ptr %itNewBegin21, align 8 %mpEnd4.i219 = getelementptr inbounds nuw i8, ptr %itNewBegin21, i64 16 %53 = load ptr, ptr %mpEnd4.i219, align 8 @@ -96358,7 +96358,7 @@ _ZN5eastl13DequeIteratorIiPiRiLj1EEppEv.exit.i.i.i.i260: ; preds = %if.then.i.i. if.else37: ; preds = %_ZNK5eastl13DequeIteratorIiPiRiLj1EEplEl.exit %68 = load ptr, ptr %first, align 8 %sub = sub nsw i64 %sub.ptr.div.i.i, %add11.i - %add.ptr.i.i268 = getelementptr inbounds i32, ptr %68, i64 %sub + %add.ptr.i.i268 = getelementptr inbounds nuw i32, ptr %68, i64 %sub %cmp.i.not14.i.i.i = icmp eq ptr %48, %storemerge.i.i br i1 %cmp.i.not14.i.i.i, label %_ZN5eastl18uninitialized_copyINS_13DequeIteratorIiPiRiLj1EEES4_EET0_T_S6_S5_.exit.i, label %for.body.i.i.i @@ -99865,7 +99865,7 @@ _ZN5eastl13DequeIteratorIiPiRiLj32768EEppEv.exit.i.i.i.i195: ; preds = %if.then. if.else37: ; preds = %_ZNK5eastl13DequeIteratorIiPiRiLj32768EEplEl.exit %51 = load ptr, ptr %first, align 8 %sub = sub nsw i64 %sub.ptr.div.i.i, %add11.i - %add.ptr.i.i203 = getelementptr inbounds i32, ptr %51, i64 %sub + %add.ptr.i.i203 = getelementptr inbounds nuw i32, ptr %51, i64 %sub %52 = load ptr, ptr %itNewBegin21, align 8 %mpEnd4.i219 = getelementptr inbounds nuw i8, ptr %itNewBegin21, i64 16 %53 = load ptr, ptr %mpEnd4.i219, align 8 @@ -102772,7 +102772,7 @@ _ZN5eastl13DequeIteratorI10TestObjectPS1_RS1_Lj8EEppEv.exit.i.i.i.i212: ; preds if.else37: ; preds = %_ZNK5eastl13DequeIteratorI10TestObjectPS1_RS1_Lj8EEplEl.exit %92 = load ptr, ptr %first, align 8 %sub = sub nsw i64 %sub.ptr.div.i.i, %add11.i - %add.ptr.i.i219 = getelementptr inbounds %struct.TestObject, ptr %92, i64 %sub + %add.ptr.i.i219 = getelementptr inbounds nuw %struct.TestObject, ptr %92, i64 %sub %93 = load ptr, ptr %itNewBegin21, align 8 %mpEnd4.i235 = getelementptr inbounds nuw i8, ptr %itNewBegin21, i64 16 %94 = load ptr, ptr %mpEnd4.i235, align 8 @@ -107702,7 +107702,7 @@ _ZN5eastl13DequeIteratorI10TestObjectPS1_RS1_Lj1EEppEv.exit.i.i.i.i278: ; preds if.else37: ; preds = %_ZNK5eastl13DequeIteratorI10TestObjectPS1_RS1_Lj1EEplEl.exit %109 = load ptr, ptr %first, align 8 %sub = sub nsw i64 %sub.ptr.div.i.i, %add11.i - %add.ptr.i.i285 = getelementptr inbounds %struct.TestObject, ptr %109, i64 %sub + %add.ptr.i.i285 = getelementptr inbounds nuw %struct.TestObject, ptr %109, i64 %sub %cmp.i.not14.i.i.i = icmp eq ptr %70, %storemerge.i.i br i1 %cmp.i.not14.i.i.i, label %_ZN5eastl18uninitialized_copyINS_13DequeIteratorI10TestObjectPS2_RS2_Lj1EEES5_EET0_T_S7_S6_.exit.i, label %for.body.i.i.i @@ -112295,7 +112295,7 @@ _ZN5eastl13DequeIteratorI10TestObjectPS1_RS1_Lj32768EEppEv.exit.i.i.i.i213: ; pr if.else37: ; preds = %_ZNK5eastl13DequeIteratorI10TestObjectPS1_RS1_Lj32768EEplEl.exit %92 = load ptr, ptr %first, align 8 %sub = sub nsw i64 %sub.ptr.div.i.i, %add11.i - %add.ptr.i.i220 = getelementptr inbounds %struct.TestObject, ptr %92, i64 %sub + %add.ptr.i.i220 = getelementptr inbounds nuw %struct.TestObject, ptr %92, i64 %sub %93 = load ptr, ptr %itNewBegin21, align 8 %mpEnd4.i236 = getelementptr inbounds nuw i8, ptr %itNewBegin21, i64 16 %94 = load ptr, ptr %mpEnd4.i236, align 8 diff --git a/bench/eastl/optimized/TestRingBuffer.ll b/bench/eastl/optimized/TestRingBuffer.ll index 036e4f2e213..8ee8a8dd955 100644 --- a/bench/eastl/optimized/TestRingBuffer.ll +++ b/bench/eastl/optimized/TestRingBuffer.ll @@ -3482,7 +3482,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %5 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %sub8, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds i32, ptr %5, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw i32, ptr %5, i64 %sub.i.i.i.i br label %invoke.cont9 if.else9.i.i.i.i: ; preds = %if.then6 @@ -3949,7 +3949,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %2 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %n, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds i32, ptr %2, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw i32, ptr %2, i64 %sub.i.i.i.i br label %_ZN5eastl7advanceINS_20ring_buffer_iteratorIiPiRiNS_6vectorIiNS_9allocatorEEEEEmEEvRT_T0_.exit if.else9.i.i.i.i: ; preds = %entry @@ -4002,7 +4002,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %2 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %n, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds i32, ptr %2, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw i32, ptr %2, i64 %sub.i.i.i.i br label %_ZN5eastl7advanceINS_20ring_buffer_iteratorIiPKiRS2_NS_6vectorIiNS_9allocatorEEEEEmEEvRT_T0_.exit if.else9.i.i.i.i: ; preds = %entry @@ -6232,7 +6232,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %5 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %sub8, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds %struct.Align64, ptr %5, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw %struct.Align64, ptr %5, i64 %sub.i.i.i.i br label %invoke.cont9 if.else9.i.i.i.i: ; preds = %if.then6 @@ -6710,7 +6710,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %2 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %n, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds %struct.Align64, ptr %2, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw %struct.Align64, ptr %2, i64 %sub.i.i.i.i br label %_ZN5eastl7advanceINS_20ring_buffer_iteratorI7Align64PS2_RS2_NS_6vectorIS2_NS_9allocatorEEEEEmEEvRT_T0_.exit if.else9.i.i.i.i: ; preds = %entry @@ -6763,7 +6763,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %2 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %n, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds %struct.Align64, ptr %2, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw %struct.Align64, ptr %2, i64 %sub.i.i.i.i br label %_ZN5eastl7advanceINS_20ring_buffer_iteratorI7Align64PKS2_RS3_NS_6vectorIS2_NS_9allocatorEEEEEmEEvRT_T0_.exit if.else9.i.i.i.i: ; preds = %entry @@ -9134,7 +9134,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i10 if.else.i.i.i.i: ; preds = %if.then.i.i.i.i10 %5 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %sub8, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds %struct.TestObject, ptr %5, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw %struct.TestObject, ptr %5, i64 %sub.i.i.i.i br label %invoke.cont9 if.else9.i.i.i.i: ; preds = %if.then6 @@ -9811,7 +9811,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %2 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %n, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds %struct.TestObject, ptr %2, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw %struct.TestObject, ptr %2, i64 %sub.i.i.i.i br label %_ZN5eastl7advanceINS_20ring_buffer_iteratorI10TestObjectPS2_RS2_NS_6vectorIS2_NS_9allocatorEEEEEmEEvRT_T0_.exit if.else9.i.i.i.i: ; preds = %entry @@ -9864,7 +9864,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %2 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %n, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds %struct.TestObject, ptr %2, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw %struct.TestObject, ptr %2, i64 %sub.i.i.i.i br label %_ZN5eastl7advanceINS_20ring_buffer_iteratorI10TestObjectPKS2_RS3_NS_6vectorIS2_NS_9allocatorEEEEEmEEvRT_T0_.exit if.else9.i.i.i.i: ; preds = %entry @@ -39279,7 +39279,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %2 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %n, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds %"class.eastl::fixed_string", ptr %2, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw %"class.eastl::fixed_string", ptr %2, i64 %sub.i.i.i.i br label %_ZN5eastl7advanceINS_20ring_buffer_iteratorINS_12fixed_stringIcLi256ELb0ENS_9allocatorEEEPS4_RS4_NS_12fixed_vectorIS4_Lm100ELb0ENS_15dummy_allocatorEEEEEmEEvRT_T0_.exit if.else9.i.i.i.i: ; preds = %entry @@ -39332,7 +39332,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %2 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %n, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds %"class.eastl::fixed_string", ptr %2, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw %"class.eastl::fixed_string", ptr %2, i64 %sub.i.i.i.i br label %_ZN5eastl7advanceINS_20ring_buffer_iteratorINS_12fixed_stringIcLi256ELb0ENS_9allocatorEEEPKS4_RS5_NS_12fixed_vectorIS4_Lm100ELb0ENS_15dummy_allocatorEEEEEmEEvRT_T0_.exit if.else9.i.i.i.i: ; preds = %entry @@ -41264,7 +41264,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %sub.i.i.i.i = sub nsw i64 %sub8, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds i32, ptr %1, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw i32, ptr %1, i64 %sub.i.i.i.i br label %invoke.cont9 if.else9.i.i.i.i: ; preds = %if.then6 @@ -41705,7 +41705,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %2 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %n, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds i32, ptr %2, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw i32, ptr %2, i64 %sub.i.i.i.i br label %_ZN5eastl7advanceINS_20ring_buffer_iteratorIiPiRiNS_12fixed_vectorIiLm100ELb0ENS_15dummy_allocatorEEEEEmEEvRT_T0_.exit if.else9.i.i.i.i: ; preds = %entry @@ -41758,7 +41758,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %2 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %n, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds i32, ptr %2, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw i32, ptr %2, i64 %sub.i.i.i.i br label %_ZN5eastl7advanceINS_20ring_buffer_iteratorIiPKiRS2_NS_12fixed_vectorIiLm100ELb0ENS_15dummy_allocatorEEEEEmEEvRT_T0_.exit if.else9.i.i.i.i: ; preds = %entry @@ -44317,7 +44317,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %10 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %sub8, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds i32, ptr %10, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw i32, ptr %10, i64 %sub.i.i.i.i br label %invoke.cont9 if.else9.i.i.i.i: ; preds = %if.then6 @@ -44873,7 +44873,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %2 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %n, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds i32, ptr %2, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw i32, ptr %2, i64 %sub.i.i.i.i br label %_ZN5eastl7advanceINS_20ring_buffer_iteratorIiPiRiNS_12fixed_vectorIiLm100ELb1ENS_9allocatorEEEEEmEEvRT_T0_.exit if.else9.i.i.i.i: ; preds = %entry @@ -44926,7 +44926,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %2 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %n, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds i32, ptr %2, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw i32, ptr %2, i64 %sub.i.i.i.i br label %_ZN5eastl7advanceINS_20ring_buffer_iteratorIiPKiRS2_NS_12fixed_vectorIiLm100ELb1ENS_9allocatorEEEEEmEEvRT_T0_.exit if.else9.i.i.i.i: ; preds = %entry @@ -47032,7 +47032,7 @@ while.end203: ; preds = %invoke.cont184.whil %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i %sub.ptr.div.i.i.i.i.i.neg = sdiv exact i64 %sub.ptr.sub.i.i.i.i.i, -24 %cmp2.i.i.i.i.i = icmp sgt i64 %sub.ptr.sub.i.i.i.i.i, 0 - %add.ptr7.i.i.i.i.i = getelementptr inbounds %"class.eastl::basic_string.128", ptr %148, i64 %sub.ptr.div.i.i.i.i.i.neg + %add.ptr7.i.i.i.i.i = getelementptr inbounds nuw %"class.eastl::basic_string.128", ptr %148, i64 %sub.ptr.div.i.i.i.i.i.neg %temp.sroa.2.0.i = select i1 %cmp2.i.i.i.i.i, ptr %150, ptr %add.ptr7.i.i.i.i.i %mRemainingSizeField.i.i.i.i678 = getelementptr inbounds nuw i8, ptr %temp.sroa.2.0.i, i64 23 %151 = load i8, ptr %mRemainingSizeField.i.i.i.i678, align 1 @@ -48071,7 +48071,7 @@ invoke.cont440: ; preds = %invoke.cont312 %add.ptr.i.i.i.i = getelementptr inbounds nuw %"class.eastl::basic_string.128", ptr %325, i64 %shr.i1228 %330 = load ptr, ptr %rbVectorString, align 8 %sub.i.i.i.i1233 = sub nsw i64 %shr.i1228, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds %"class.eastl::basic_string.128", ptr %330, i64 %sub.i.i.i.i1233 + %add.ptr7.i.i.i.i = getelementptr inbounds nuw %"class.eastl::basic_string.128", ptr %330, i64 %sub.i.i.i.i1233 %it.sroa.32.6 = select i1 %cmp2.i.i.i.i, ptr %add.ptr.i.i.i.i, ptr %add.ptr7.i.i.i.i %331 = load ptr, ptr %mEnd.i, align 8, !noalias !3381 %cmp.i1238 = icmp eq ptr %it.sroa.32.6, %331 @@ -48321,7 +48321,7 @@ invoke.cont491: ; preds = %invoke.cont312 %add.ptr.i.i.i.i1378 = getelementptr inbounds nuw %"class.eastl::basic_string.128", ptr %360, i64 %shr.i1363 %366 = load ptr, ptr %rbVectorString, align 8 %sub.i.i.i.i1375 = sub nsw i64 %shr.i1363, %sub.ptr.div.i.i.i.i1372 - %add.ptr7.i.i.i.i1376 = getelementptr inbounds %"class.eastl::basic_string.128", ptr %366, i64 %sub.i.i.i.i1375 + %add.ptr7.i.i.i.i1376 = getelementptr inbounds nuw %"class.eastl::basic_string.128", ptr %366, i64 %sub.i.i.i.i1375 %it.sroa.32.7 = select i1 %cmp2.i.i.i.i1373, ptr %add.ptr.i.i.i.i1378, ptr %add.ptr7.i.i.i.i1376 %367 = load ptr, ptr %mEnd.i, align 8, !noalias !3404 %cmp.i1384 = icmp eq ptr %it.sroa.32.7, %367 @@ -48492,7 +48492,7 @@ invoke.cont550: ; preds = %invoke.cont540 %add.ptr.i.i.i.i1509 = getelementptr inbounds nuw %"class.eastl::basic_string.128", ptr %387, i64 %shr.i1494 %393 = load ptr, ptr %rbVectorString, align 8 %sub.i.i.i.i1506 = sub nsw i64 %shr.i1494, %sub.ptr.div.i.i.i.i1503 - %add.ptr7.i.i.i.i1507 = getelementptr inbounds %"class.eastl::basic_string.128", ptr %393, i64 %sub.i.i.i.i1506 + %add.ptr7.i.i.i.i1507 = getelementptr inbounds nuw %"class.eastl::basic_string.128", ptr %393, i64 %sub.i.i.i.i1506 %it.sroa.32.8 = select i1 %cmp2.i.i.i.i1504, ptr %add.ptr.i.i.i.i1509, ptr %add.ptr7.i.i.i.i1507 %394 = load ptr, ptr %mEnd.i, align 8, !noalias !3410 %cmp.i1515 = icmp eq ptr %it.sroa.32.8, %394 @@ -48639,7 +48639,7 @@ invoke.cont614: ; preds = %if.then606 %add.ptr.i.i.i.i1627 = getelementptr inbounds nuw %"class.eastl::basic_string.128", ptr %410, i64 %shr.i1612 %416 = load ptr, ptr %rbVectorString, align 8 %sub.i.i.i.i1624 = sub nsw i64 %shr.i1612, %sub.ptr.div.i.i.i.i1621 - %add.ptr7.i.i.i.i1625 = getelementptr inbounds %"class.eastl::basic_string.128", ptr %416, i64 %sub.i.i.i.i1624 + %add.ptr7.i.i.i.i1625 = getelementptr inbounds nuw %"class.eastl::basic_string.128", ptr %416, i64 %sub.i.i.i.i1624 %it.sroa.32.9 = select i1 %cmp2.i.i.i.i1622, ptr %add.ptr.i.i.i.i1627, ptr %add.ptr7.i.i.i.i1625 br label %for.body.i1636 @@ -48744,7 +48744,7 @@ invoke.cont641: ; preds = %if.then637 %add.ptr.i.i.i.i1712 = getelementptr inbounds nuw %"class.eastl::basic_string.128", ptr %427, i64 %shr.i1697 %434 = load ptr, ptr %rbVectorString, align 8 %sub.i.i.i.i1709 = sub nsw i64 %shr.i1697, %sub.ptr.div.i.i.i.i1706 - %add.ptr7.i.i.i.i1710 = getelementptr inbounds %"class.eastl::basic_string.128", ptr %434, i64 %sub.i.i.i.i1709 + %add.ptr7.i.i.i.i1710 = getelementptr inbounds nuw %"class.eastl::basic_string.128", ptr %434, i64 %sub.i.i.i.i1709 %it1.sroa.5.0 = select i1 %cmp2.i.i.i.i1707, ptr %add.ptr.i.i.i.i1712, ptr %add.ptr7.i.i.i.i1710 br label %for.body.i1721 @@ -48783,7 +48783,7 @@ invoke.cont656: ; preds = %invoke.cont647 %add.ptr.i.i.i.i1761 = getelementptr inbounds nuw %"class.eastl::basic_string.128", ptr %it1.sroa.5.0, i64 %shr.i1746 %439 = load ptr, ptr %rbVectorString, align 8 %sub.i.i.i.i1758 = sub nsw i64 %shr.i1746, %sub.ptr.div.i.i.i.i1755 - %add.ptr7.i.i.i.i1759 = getelementptr inbounds %"class.eastl::basic_string.128", ptr %439, i64 %sub.i.i.i.i1758 + %add.ptr7.i.i.i.i1759 = getelementptr inbounds nuw %"class.eastl::basic_string.128", ptr %439, i64 %sub.i.i.i.i1758 %it2.sroa.4.0 = select i1 %cmp2.i.i.i.i1756, ptr %add.ptr.i.i.i.i1761, ptr %add.ptr7.i.i.i.i1759 %440 = load ptr, ptr %mBegin.i, align 8 %441 = load ptr, ptr %mEnd.i, align 8 @@ -51171,7 +51171,7 @@ _ZN5eastl11ring_bufferIiNS_6vectorIiNS_9allocatorEEES2_E9push_backERKi.exit3100: %sub.ptr.div.i.i.i.i.i3107 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i3106, 2 %cmp2.i.i.i.i.i3108 = icmp sgt i64 %sub.ptr.div.i.i.i.i.i3107, 0 %sub.i.i.i.i.i3110 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i3107 - %add.ptr7.i.i.i.i.i3111 = getelementptr inbounds i32, ptr %796, i64 %sub.i.i.i.i.i3110 + %add.ptr7.i.i.i.i.i3111 = getelementptr inbounds nuw i32, ptr %796, i64 %sub.i.i.i.i.i3110 %temp.sroa.2.0.i3112 = select i1 %cmp2.i.i.i.i.i3108, ptr %797, ptr %add.ptr7.i.i.i.i.i3111 %798 = load i32, ptr %temp.sroa.2.0.i3112, align 4 %cmp1025 = icmp eq i32 %798, 0 @@ -51189,7 +51189,7 @@ invoke.cont1026: ; preds = %_ZN5eastl11ring_buf %add.ptr.i.i.i.i.i3128 = getelementptr inbounds nuw i8, ptr %799, i64 20 %801 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3124 = sub nsw i64 5, %sub.ptr.div.i.i.i.i.i3121 - %add.ptr7.i.i.i.i.i3125 = getelementptr inbounds i32, ptr %801, i64 %sub.i.i.i.i.i3124 + %add.ptr7.i.i.i.i.i3125 = getelementptr inbounds nuw i32, ptr %801, i64 %sub.i.i.i.i.i3124 %temp.sroa.2.0.i3126 = select i1 %cmp2.i.i.i.i.i3122, ptr %add.ptr.i.i.i.i.i3128, ptr %add.ptr7.i.i.i.i.i3125 %802 = load i32, ptr %temp.sroa.2.0.i3126, align 4 %cmp1030 = icmp eq i32 %802, 5 @@ -51294,7 +51294,7 @@ invoke.cont1038: ; preds = %for.body.i.i.i.i.i3 %cmp2.i.i.i.i.i3193 = icmp sgt i64 %sub.ptr.div.i.i.i.i.i3192, 0 %817 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3195 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i3192 - %add.ptr7.i.i.i.i.i3196 = getelementptr inbounds i32, ptr %817, i64 %sub.i.i.i.i.i3195 + %add.ptr7.i.i.i.i.i3196 = getelementptr inbounds nuw i32, ptr %817, i64 %sub.i.i.i.i.i3195 %temp.sroa.2.0.i3197 = select i1 %cmp2.i.i.i.i.i3193, ptr %815, ptr %add.ptr7.i.i.i.i.i3196 %818 = load i32, ptr %temp.sroa.2.0.i3197, align 4 %cmp1041 = icmp eq i32 %818, 999 @@ -51312,7 +51312,7 @@ invoke.cont1042: ; preds = %invoke.cont1038 %add.ptr.i.i.i.i.i3214 = getelementptr inbounds nuw i8, ptr %819, i64 4 %821 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3210 = sub nsw i64 1, %sub.ptr.div.i.i.i.i.i3207 - %add.ptr7.i.i.i.i.i3211 = getelementptr inbounds i32, ptr %821, i64 %sub.i.i.i.i.i3210 + %add.ptr7.i.i.i.i.i3211 = getelementptr inbounds nuw i32, ptr %821, i64 %sub.i.i.i.i.i3210 %temp.sroa.2.0.i3212 = select i1 %cmp2.i.i.i.i.i3208, ptr %add.ptr.i.i.i.i.i3214, ptr %add.ptr7.i.i.i.i.i3211 %822 = load i32, ptr %temp.sroa.2.0.i3212, align 4 %cmp1046 = icmp eq i32 %822, 0 @@ -51330,7 +51330,7 @@ invoke.cont1047: ; preds = %invoke.cont1042 %add.ptr.i.i.i.i.i3229 = getelementptr inbounds nuw i8, ptr %823, i64 20 %825 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3225 = sub nsw i64 5, %sub.ptr.div.i.i.i.i.i3222 - %add.ptr7.i.i.i.i.i3226 = getelementptr inbounds i32, ptr %825, i64 %sub.i.i.i.i.i3225 + %add.ptr7.i.i.i.i.i3226 = getelementptr inbounds nuw i32, ptr %825, i64 %sub.i.i.i.i.i3225 %temp.sroa.2.0.i3227 = select i1 %cmp2.i.i.i.i.i3223, ptr %add.ptr.i.i.i.i.i3229, ptr %add.ptr7.i.i.i.i.i3226 %826 = load i32, ptr %temp.sroa.2.0.i3227, align 4 %cmp1051 = icmp eq i32 %826, 4 @@ -51622,7 +51622,7 @@ invoke.cont1064: ; preds = %for.body.i.i.i.i.i3 %cmp2.i.i.i.i.i3383 = icmp sgt i64 %sub.ptr.div.i.i.i.i.i3382, 0 %875 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3385 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i3382 - %add.ptr7.i.i.i.i.i3386 = getelementptr inbounds i32, ptr %875, i64 %sub.i.i.i.i.i3385 + %add.ptr7.i.i.i.i.i3386 = getelementptr inbounds nuw i32, ptr %875, i64 %sub.i.i.i.i.i3385 %temp.sroa.2.0.i3387 = select i1 %cmp2.i.i.i.i.i3383, ptr %873, ptr %add.ptr7.i.i.i.i.i3386 %876 = load i32, ptr %temp.sroa.2.0.i3387, align 4 %cmp1067 = icmp eq i32 %876, 999 @@ -51640,7 +51640,7 @@ invoke.cont1068: ; preds = %invoke.cont1064 %add.ptr.i.i.i.i.i3404 = getelementptr inbounds nuw i8, ptr %877, i64 4 %879 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3400 = sub nsw i64 1, %sub.ptr.div.i.i.i.i.i3397 - %add.ptr7.i.i.i.i.i3401 = getelementptr inbounds i32, ptr %879, i64 %sub.i.i.i.i.i3400 + %add.ptr7.i.i.i.i.i3401 = getelementptr inbounds nuw i32, ptr %879, i64 %sub.i.i.i.i.i3400 %temp.sroa.2.0.i3402 = select i1 %cmp2.i.i.i.i.i3398, ptr %add.ptr.i.i.i.i.i3404, ptr %add.ptr7.i.i.i.i.i3401 %880 = load i32, ptr %temp.sroa.2.0.i3402, align 4 %cmp1072 = icmp eq i32 %880, 0 @@ -51658,7 +51658,7 @@ invoke.cont1073: ; preds = %invoke.cont1068 %add.ptr.i.i.i.i.i3419 = getelementptr inbounds nuw i8, ptr %881, i64 20 %883 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3415 = sub nsw i64 5, %sub.ptr.div.i.i.i.i.i3412 - %add.ptr7.i.i.i.i.i3416 = getelementptr inbounds i32, ptr %883, i64 %sub.i.i.i.i.i3415 + %add.ptr7.i.i.i.i.i3416 = getelementptr inbounds nuw i32, ptr %883, i64 %sub.i.i.i.i.i3415 %temp.sroa.2.0.i3417 = select i1 %cmp2.i.i.i.i.i3413, ptr %add.ptr.i.i.i.i.i3419, ptr %add.ptr7.i.i.i.i.i3416 %884 = load i32, ptr %temp.sroa.2.0.i3417, align 4 %cmp1077 = icmp eq i32 %884, 4 @@ -51937,7 +51937,7 @@ _ZN5eastl11ring_bufferIiNS_6vectorIiNS_9allocatorEEES2_E9push_backERKi.exit3535: %sub.ptr.div.i.i.i.i.i3542 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i3541, 2 %cmp2.i.i.i.i.i3543 = icmp sgt i64 %sub.ptr.div.i.i.i.i.i3542, 0 %sub.i.i.i.i.i3545 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i3542 - %add.ptr7.i.i.i.i.i3546 = getelementptr inbounds i32, ptr %934, i64 %sub.i.i.i.i.i3545 + %add.ptr7.i.i.i.i.i3546 = getelementptr inbounds nuw i32, ptr %934, i64 %sub.i.i.i.i.i3545 %temp.sroa.2.0.i3547 = select i1 %cmp2.i.i.i.i.i3543, ptr %935, ptr %add.ptr7.i.i.i.i.i3546 %936 = load i32, ptr %temp.sroa.2.0.i3547, align 4 %cmp1089 = icmp eq i32 %936, 1 @@ -51955,7 +51955,7 @@ invoke.cont1090: ; preds = %_ZN5eastl11ring_buf %add.ptr.i.i.i.i.i3564 = getelementptr inbounds nuw i8, ptr %937, i64 20 %939 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3560 = sub nsw i64 5, %sub.ptr.div.i.i.i.i.i3557 - %add.ptr7.i.i.i.i.i3561 = getelementptr inbounds i32, ptr %939, i64 %sub.i.i.i.i.i3560 + %add.ptr7.i.i.i.i.i3561 = getelementptr inbounds nuw i32, ptr %939, i64 %sub.i.i.i.i.i3560 %temp.sroa.2.0.i3562 = select i1 %cmp2.i.i.i.i.i3558, ptr %add.ptr.i.i.i.i.i3564, ptr %add.ptr7.i.i.i.i.i3561 %940 = load i32, ptr %temp.sroa.2.0.i3562, align 4 %cmp1094 = icmp eq i32 %940, 6 @@ -52059,7 +52059,7 @@ invoke.cont1102: ; preds = %for.body.i.i.i.i.i3 %cmp2.i.i.i.i.i3635 = icmp sgt i64 %sub.ptr.div.i.i.i.i.i3634, 0 %955 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3637 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i3634 - %add.ptr7.i.i.i.i.i3638 = getelementptr inbounds i32, ptr %955, i64 %sub.i.i.i.i.i3637 + %add.ptr7.i.i.i.i.i3638 = getelementptr inbounds nuw i32, ptr %955, i64 %sub.i.i.i.i.i3637 %temp.sroa.2.0.i3639 = select i1 %cmp2.i.i.i.i.i3635, ptr %953, ptr %add.ptr7.i.i.i.i.i3638 %956 = load i32, ptr %temp.sroa.2.0.i3639, align 4 %cmp1105 = icmp eq i32 %956, 999 @@ -52077,7 +52077,7 @@ invoke.cont1106: ; preds = %invoke.cont1102 %add.ptr.i.i.i.i.i3656 = getelementptr inbounds nuw i8, ptr %957, i64 4 %959 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3652 = sub nsw i64 1, %sub.ptr.div.i.i.i.i.i3649 - %add.ptr7.i.i.i.i.i3653 = getelementptr inbounds i32, ptr %959, i64 %sub.i.i.i.i.i3652 + %add.ptr7.i.i.i.i.i3653 = getelementptr inbounds nuw i32, ptr %959, i64 %sub.i.i.i.i.i3652 %temp.sroa.2.0.i3654 = select i1 %cmp2.i.i.i.i.i3650, ptr %add.ptr.i.i.i.i.i3656, ptr %add.ptr7.i.i.i.i.i3653 %960 = load i32, ptr %temp.sroa.2.0.i3654, align 4 %cmp1110 = icmp eq i32 %960, 1 @@ -52095,7 +52095,7 @@ invoke.cont1111: ; preds = %invoke.cont1106 %add.ptr.i.i.i.i.i3671 = getelementptr inbounds nuw i8, ptr %961, i64 20 %963 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3667 = sub nsw i64 5, %sub.ptr.div.i.i.i.i.i3664 - %add.ptr7.i.i.i.i.i3668 = getelementptr inbounds i32, ptr %963, i64 %sub.i.i.i.i.i3667 + %add.ptr7.i.i.i.i.i3668 = getelementptr inbounds nuw i32, ptr %963, i64 %sub.i.i.i.i.i3667 %temp.sroa.2.0.i3669 = select i1 %cmp2.i.i.i.i.i3665, ptr %add.ptr.i.i.i.i.i3671, ptr %add.ptr7.i.i.i.i.i3668 %964 = load i32, ptr %temp.sroa.2.0.i3669, align 4 %cmp1115 = icmp eq i32 %964, 5 @@ -52113,7 +52113,7 @@ invoke.cont1116: ; preds = %invoke.cont1111 %add.ptr.i.i.i.i3687 = getelementptr inbounds nuw i8, ptr %965, i64 12 %967 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i3684 = sub nsw i64 3, %sub.ptr.div.i.i.i.i3681 - %add.ptr7.i.i.i.i3685 = getelementptr inbounds i32, ptr %967, i64 %sub.i.i.i.i3684 + %add.ptr7.i.i.i.i3685 = getelementptr inbounds nuw i32, ptr %967, i64 %sub.i.i.i.i3684 %it1118.sroa.3.0 = select i1 %cmp2.i.i.i.i3682, ptr %add.ptr.i.i.i.i3687, ptr %add.ptr7.i.i.i.i3685 %968 = load ptr, ptr %mEnd.i3009, align 8, !noalias !3545 %incdec.ptr.i.i3691 = getelementptr inbounds nuw i8, ptr %968, i64 4 @@ -52199,7 +52199,7 @@ invoke.cont1124: ; preds = %for.body.i.i.i.i.i3 %cmp2.i.i.i.i.i3755 = icmp sgt i64 %sub.ptr.div.i.i.i.i.i3754, 0 %978 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3757 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i3754 - %add.ptr7.i.i.i.i.i3758 = getelementptr inbounds i32, ptr %978, i64 %sub.i.i.i.i.i3757 + %add.ptr7.i.i.i.i.i3758 = getelementptr inbounds nuw i32, ptr %978, i64 %sub.i.i.i.i.i3757 %temp.sroa.2.0.i3759 = select i1 %cmp2.i.i.i.i.i3755, ptr %976, ptr %add.ptr7.i.i.i.i.i3758 %979 = load i32, ptr %temp.sroa.2.0.i3759, align 4 %cmp1127 = icmp eq i32 %979, 999 @@ -52217,7 +52217,7 @@ invoke.cont1128: ; preds = %invoke.cont1124 %add.ptr.i.i.i.i.i3776 = getelementptr inbounds nuw i8, ptr %980, i64 4 %982 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3772 = sub nsw i64 1, %sub.ptr.div.i.i.i.i.i3769 - %add.ptr7.i.i.i.i.i3773 = getelementptr inbounds i32, ptr %982, i64 %sub.i.i.i.i.i3772 + %add.ptr7.i.i.i.i.i3773 = getelementptr inbounds nuw i32, ptr %982, i64 %sub.i.i.i.i.i3772 %temp.sroa.2.0.i3774 = select i1 %cmp2.i.i.i.i.i3770, ptr %add.ptr.i.i.i.i.i3776, ptr %add.ptr7.i.i.i.i.i3773 %983 = load i32, ptr %temp.sroa.2.0.i3774, align 4 %cmp1132 = icmp eq i32 %983, 1 @@ -52235,7 +52235,7 @@ invoke.cont1133: ; preds = %invoke.cont1128 %add.ptr.i.i.i.i.i3791 = getelementptr inbounds nuw i8, ptr %984, i64 8 %986 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3787 = sub nsw i64 2, %sub.ptr.div.i.i.i.i.i3784 - %add.ptr7.i.i.i.i.i3788 = getelementptr inbounds i32, ptr %986, i64 %sub.i.i.i.i.i3787 + %add.ptr7.i.i.i.i.i3788 = getelementptr inbounds nuw i32, ptr %986, i64 %sub.i.i.i.i.i3787 %temp.sroa.2.0.i3789 = select i1 %cmp2.i.i.i.i.i3785, ptr %add.ptr.i.i.i.i.i3791, ptr %add.ptr7.i.i.i.i.i3788 %987 = load i32, ptr %temp.sroa.2.0.i3789, align 4 %cmp1137 = icmp eq i32 %987, 2 @@ -52253,7 +52253,7 @@ invoke.cont1138: ; preds = %invoke.cont1133 %add.ptr.i.i.i.i.i3806 = getelementptr inbounds nuw i8, ptr %988, i64 12 %990 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3802 = sub nsw i64 3, %sub.ptr.div.i.i.i.i.i3799 - %add.ptr7.i.i.i.i.i3803 = getelementptr inbounds i32, ptr %990, i64 %sub.i.i.i.i.i3802 + %add.ptr7.i.i.i.i.i3803 = getelementptr inbounds nuw i32, ptr %990, i64 %sub.i.i.i.i.i3802 %temp.sroa.2.0.i3804 = select i1 %cmp2.i.i.i.i.i3800, ptr %add.ptr.i.i.i.i.i3806, ptr %add.ptr7.i.i.i.i.i3803 %991 = load i32, ptr %temp.sroa.2.0.i3804, align 4 %cmp1142 = icmp eq i32 %991, 888 @@ -52271,7 +52271,7 @@ invoke.cont1143: ; preds = %invoke.cont1138 %add.ptr.i.i.i.i.i3821 = getelementptr inbounds nuw i8, ptr %992, i64 16 %994 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3817 = sub nsw i64 4, %sub.ptr.div.i.i.i.i.i3814 - %add.ptr7.i.i.i.i.i3818 = getelementptr inbounds i32, ptr %994, i64 %sub.i.i.i.i.i3817 + %add.ptr7.i.i.i.i.i3818 = getelementptr inbounds nuw i32, ptr %994, i64 %sub.i.i.i.i.i3817 %temp.sroa.2.0.i3819 = select i1 %cmp2.i.i.i.i.i3815, ptr %add.ptr.i.i.i.i.i3821, ptr %add.ptr7.i.i.i.i.i3818 %995 = load i32, ptr %temp.sroa.2.0.i3819, align 4 %cmp1147 = icmp eq i32 %995, 3 @@ -52289,7 +52289,7 @@ invoke.cont1148: ; preds = %invoke.cont1143 %add.ptr.i.i.i.i.i3836 = getelementptr inbounds nuw i8, ptr %996, i64 20 %998 = load ptr, ptr %rbVectorInt, align 8 %sub.i.i.i.i.i3832 = sub nsw i64 5, %sub.ptr.div.i.i.i.i.i3829 - %add.ptr7.i.i.i.i.i3833 = getelementptr inbounds i32, ptr %998, i64 %sub.i.i.i.i.i3832 + %add.ptr7.i.i.i.i.i3833 = getelementptr inbounds nuw i32, ptr %998, i64 %sub.i.i.i.i.i3832 %temp.sroa.2.0.i3834 = select i1 %cmp2.i.i.i.i.i3830, ptr %add.ptr.i.i.i.i.i3836, ptr %add.ptr7.i.i.i.i.i3833 %999 = load i32, ptr %temp.sroa.2.0.i3834, align 4 %cmp1152 = icmp eq i32 %999, 4 @@ -52509,7 +52509,7 @@ _ZN5eastl11ring_bufferIiNS_6vectorIiNS_9allocatorEEES2_E9push_backERKi.exit3920: %sub.ptr.div.i.i.i.i.i3927 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i3926, 2 %cmp2.i.i.i.i.i3928 = icmp sgt i64 %sub.ptr.div.i.i.i.i.i3927, 0 %sub.i.i.i.i.i3930 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i3927 - %add.ptr7.i.i.i.i.i3931 = getelementptr inbounds i32, ptr %1036, i64 %sub.i.i.i.i.i3930 + %add.ptr7.i.i.i.i.i3931 = getelementptr inbounds nuw i32, ptr %1036, i64 %sub.i.i.i.i.i3930 %temp.sroa.2.0.i3932 = select i1 %cmp2.i.i.i.i.i3928, ptr %1037, ptr %add.ptr7.i.i.i.i.i3931 %1038 = load i32, ptr %temp.sroa.2.0.i3932, align 4 %cmp1165 = icmp eq i32 %1038, 2 @@ -52527,7 +52527,7 @@ invoke.cont1166: ; preds = %_ZN5eastl11ring_buf %add.ptr.i.i.i.i.i3949 = getelementptr inbounds nuw i8, ptr %1039, i64 4 %1041 = load ptr, ptr %rbVectorInt1156, align 8 %sub.i.i.i.i.i3945 = sub nsw i64 1, %sub.ptr.div.i.i.i.i.i3942 - %add.ptr7.i.i.i.i.i3946 = getelementptr inbounds i32, ptr %1041, i64 %sub.i.i.i.i.i3945 + %add.ptr7.i.i.i.i.i3946 = getelementptr inbounds nuw i32, ptr %1041, i64 %sub.i.i.i.i.i3945 %temp.sroa.2.0.i3947 = select i1 %cmp2.i.i.i.i.i3943, ptr %add.ptr.i.i.i.i.i3949, ptr %add.ptr7.i.i.i.i.i3946 %1042 = load i32, ptr %temp.sroa.2.0.i3947, align 4 %cmp1170 = icmp eq i32 %1042, 3 @@ -52545,7 +52545,7 @@ invoke.cont1171: ; preds = %invoke.cont1166 %add.ptr.i.i.i.i.i3964 = getelementptr inbounds nuw i8, ptr %1043, i64 8 %1045 = load ptr, ptr %rbVectorInt1156, align 8 %sub.i.i.i.i.i3960 = sub nsw i64 2, %sub.ptr.div.i.i.i.i.i3957 - %add.ptr7.i.i.i.i.i3961 = getelementptr inbounds i32, ptr %1045, i64 %sub.i.i.i.i.i3960 + %add.ptr7.i.i.i.i.i3961 = getelementptr inbounds nuw i32, ptr %1045, i64 %sub.i.i.i.i.i3960 %temp.sroa.2.0.i3962 = select i1 %cmp2.i.i.i.i.i3958, ptr %add.ptr.i.i.i.i.i3964, ptr %add.ptr7.i.i.i.i.i3961 %1046 = load i32, ptr %temp.sroa.2.0.i3962, align 4 %cmp1175 = icmp eq i32 %1046, 4 @@ -59612,7 +59612,7 @@ invoke.cont2561: ; preds = %_ZN5eastl12fixed_ve %add.ptr.i.i7534 = getelementptr inbounds nuw i8, ptr %2135, i64 16 %2138 = load ptr, ptr %intBuffer2548, align 8 %sub.i.i7533 = sub nsw i64 4, %sub.ptr.div.i.i7531 - %add.ptr7.i.i = getelementptr inbounds i32, ptr %2138, i64 %sub.i.i7533 + %add.ptr7.i.i = getelementptr inbounds nuw i32, ptr %2138, i64 %sub.i.i7533 %it2556.sroa.7.0 = select i1 %cmp2.i.i, ptr %add.ptr.i.i7534, ptr %add.ptr7.i.i %2139 = load i32, ptr %it2556.sroa.7.0, align 4 %cmp2567 = icmp eq i32 %2139, 4 @@ -61731,7 +61731,7 @@ if.then3.i.i.i.i: ; preds = %if.then.i.i.i.i if.else.i.i.i.i: ; preds = %if.then.i.i.i.i %5 = load ptr, ptr %this, align 8 %sub.i.i.i.i = sub nsw i64 %sub7, %sub.ptr.div.i.i.i.i - %add.ptr7.i.i.i.i = getelementptr inbounds %"class.eastl::basic_string.128", ptr %5, i64 %sub.i.i.i.i + %add.ptr7.i.i.i.i = getelementptr inbounds nuw %"class.eastl::basic_string.128", ptr %5, i64 %sub.i.i.i.i br label %invoke.cont8 if.else9.i.i.i.i: ; preds = %if.then5 diff --git a/bench/ffmpeg/optimized/aacsbr_fixed.ll b/bench/ffmpeg/optimized/aacsbr_fixed.ll index a2356773a52..04bb8b66d9f 100644 --- a/bench/ffmpeg/optimized/aacsbr_fixed.ll +++ b/bench/ffmpeg/optimized/aacsbr_fixed.ll @@ -4162,8 +4162,8 @@ sbr_chirp.exit: ; preds = %400, %365 %468 = sext i32 %.046.lcssa.i to i64 %469 = getelementptr inbounds [40 x [2 x i32]], ptr %295, i64 %468 %470 = sub nsw i32 %465, %.046.lcssa.i - %471 = sext i32 %470 to i64 - %472 = mul nsw i64 %471, 320 + %471 = zext nneg i32 %470 to i64 + %472 = mul nuw nsw i64 %471, 320 tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %469, i8 0, i64 %472, i1 false) br label %sbr_hf_gen.exit @@ -8908,11 +8908,11 @@ define internal fastcc range(i32 -1, 1) i32 @read_sbr_grid(ptr noundef readonly %42 = add i32 %33, 2 %43 = tail call i32 @llvm.umin.i32(i32 %22, i32 %42) store i32 %43, ptr %19, align 8, !tbaa !35 - switch i32 %31, label %default.unreachable294 [ + switch i32 %31, label %default.unreachable299 [ i32 0, label %44 i32 1, label %84 - i32 2, label %166 - i32 3, label %230 + i32 2, label %161 + i32 3, label %225 ] 44: ; preds = %4 @@ -8928,7 +8928,7 @@ define internal fastcc range(i32 -1, 1) i32 @read_sbr_grid(ptr noundef readonly %51 = getelementptr inbounds nuw i8, ptr %0, i64 8 %52 = load ptr, ptr %51, align 8, !tbaa !61 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %52, i32 noundef 16, ptr noundef nonnull @.str.23, i32 noundef %45) #13 - br label %420 + br label %415 53: ; preds = %44 store i32 %45, ptr %5, align 8, !tbaa !119 @@ -8955,18 +8955,18 @@ define internal fastcc range(i32 -1, 1) i32 @read_sbr_grid(ptr noundef readonly %62 = lshr i8 %.lhs.trunc, %61 %63 = tail call i32 @llvm.umax.i32(i32 %45, i32 2) %smax = add nsw i32 %63, -1 - %wide.trip.count279 = zext nneg i32 %smax to i64 + %wide.trip.count284 = zext nneg i32 %smax to i64 br label %.lr.ph241 .lr.ph241: ; preds = %.lr.ph241.preheader, %.lr.ph241 %64 = phi i8 [ 0, %.lr.ph241.preheader ], [ %65, %.lr.ph241 ] - %indvars.iv276 = phi i64 [ 0, %.lr.ph241.preheader ], [ %indvars.iv.next277, %.lr.ph241 ] + %indvars.iv281 = phi i64 [ 0, %.lr.ph241.preheader ], [ %indvars.iv.next282, %.lr.ph241 ] %65 = add i8 %64, %62 - %indvars.iv.next277 = add nuw nsw i64 %indvars.iv276, 1 - %66 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv.next277 + %indvars.iv.next282 = add nuw nsw i64 %indvars.iv281, 1 + %66 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv.next282 store i8 %65, ptr %66, align 1, !tbaa !9 - %exitcond280.not = icmp eq i64 %indvars.iv.next277, %wide.trip.count279 - br i1 %exitcond280.not, label %._crit_edge242, label %.lr.ph241, !llvm.loop !221 + %exitcond285.not = icmp eq i64 %indvars.iv.next282, %wide.trip.count284 + br i1 %exitcond285.not, label %._crit_edge242, label %.lr.ph241, !llvm.loop !221 ._crit_edge242: ; preds = %.lr.ph241, %.thread %67 = load i32, ptr %19, align 8, !tbaa !35 @@ -9055,11 +9055,11 @@ define internal fastcc range(i32 -1, 1) i32 @read_sbr_grid(ptr noundef readonly br i1 %exitcond275.not, label %._crit_edge235.loopexit, label %.lr.ph234, !llvm.loop !222 ._crit_edge235.loopexit: ; preds = %.lr.ph234 - %.pre291 = load i32, ptr %5, align 8, !tbaa !119 + %.pre296 = load i32, ptr %5, align 8, !tbaa !119 br label %._crit_edge235 ._crit_edge235: ; preds = %._crit_edge235.loopexit, %84 - %125 = phi i32 [ %.pre291, %._crit_edge235.loopexit ], [ %95, %84 ] + %125 = phi i32 [ %.pre296, %._crit_edge235.loopexit ], [ %95, %84 ] %126 = sext i32 %125 to i64 %127 = getelementptr inbounds [6 x i8], ptr @ceil_log2, i64 0, i64 %126 %128 = load i8, ptr %127, align 1, !tbaa !9 @@ -9080,483 +9080,484 @@ define internal fastcc range(i32 -1, 1) i32 @read_sbr_grid(ptr noundef readonly %143 = tail call i32 @llvm.umin.i32(i32 %131, i32 %142) store i32 %143, ptr %19, align 8, !tbaa !35 %144 = icmp sgt i32 %125, 0 - br i1 %144, label %.lr.ph238, label %get_bits1_vector.exit - -.lr.ph238: ; preds = %._crit_edge235, %.lr.ph238 - %145 = phi i32 [ %164, %.lr.ph238 ], [ %125, %._crit_edge235 ] - %.3236 = phi i32 [ %163, %.lr.ph238 ], [ 0, %._crit_edge235 ] - %146 = load i32, ptr %19, align 8, !tbaa !35 - %147 = load ptr, ptr %2, align 8, !tbaa !49 - %148 = lshr i32 %146, 3 - %149 = zext nneg i32 %148 to i64 - %150 = getelementptr inbounds nuw i8, ptr %147, i64 %149 - %151 = load i8, ptr %150, align 1, !tbaa !9 - %152 = load i32, ptr %21, align 8, !tbaa !37 - %153 = icmp slt i32 %146, %152 - %154 = zext i1 %153 to i32 - %spec.select.i202 = add i32 %146, %154 - %155 = zext i8 %151 to i32 - %156 = and i32 %146, 7 - %157 = shl nuw nsw i32 %155, %156 + br i1 %144, label %.lr.ph238.preheader, label %get_bits1_vector.exit + +.lr.ph238.preheader: ; preds = %._crit_edge235 + %wide.trip.count279 = zext nneg i32 %125 to i64 + br label %.lr.ph238 + +.lr.ph238: ; preds = %.lr.ph238.preheader, %.lr.ph238 + %indvars.iv276 = phi i64 [ 0, %.lr.ph238.preheader ], [ %indvars.iv.next277, %.lr.ph238 ] + %145 = load i32, ptr %19, align 8, !tbaa !35 + %146 = load ptr, ptr %2, align 8, !tbaa !49 + %147 = lshr i32 %145, 3 + %148 = zext nneg i32 %147 to i64 + %149 = getelementptr inbounds nuw i8, ptr %146, i64 %148 + %150 = load i8, ptr %149, align 1, !tbaa !9 + %151 = load i32, ptr %21, align 8, !tbaa !37 + %152 = icmp slt i32 %145, %151 + %153 = zext i1 %152 to i32 + %spec.select.i202 = add i32 %145, %153 + %154 = zext i8 %150 to i32 + %155 = and i32 %145, 7 + %156 = shl nuw nsw i32 %154, %155 store i32 %spec.select.i202, ptr %19, align 8, !tbaa !35 - %158 = trunc i32 %157 to i8 - %159 = lshr i8 %158, 7 - %160 = sub nsw i32 %145, %.3236 - %161 = sext i32 %160 to i64 - %162 = getelementptr inbounds [9 x i8], ptr %7, i64 0, i64 %161 - store i8 %159, ptr %162, align 1, !tbaa !9 - %163 = add nuw nsw i32 %.3236, 1 - %164 = load i32, ptr %5, align 8, !tbaa !119 - %165 = icmp slt i32 %163, %164 - br i1 %165, label %.lr.ph238, label %get_bits1_vector.exit, !llvm.loop !223 - -166: ; preds = %4 - %167 = trunc nuw nsw i32 %41 to i8 - store i8 %167, ptr %14, align 8, !tbaa !9 - %168 = load i32, ptr %19, align 8, !tbaa !35 - %169 = load i32, ptr %21, align 8, !tbaa !37 - %170 = load ptr, ptr %2, align 8, !tbaa !49 - %171 = lshr i32 %168, 3 - %172 = zext nneg i32 %171 to i64 - %173 = getelementptr inbounds nuw i8, ptr %170, i64 %172 - %174 = load i32, ptr %173, align 1, !tbaa !9 - %175 = tail call i32 @llvm.bswap.i32(i32 %174) - %176 = and i32 %168, 7 - %177 = shl i32 %175, %176 - %178 = lshr i32 %177, 30 - %179 = add i32 %168, 2 - %180 = tail call i32 @llvm.umin.i32(i32 %169, i32 %179) - store i32 %180, ptr %19, align 8, !tbaa !35 - %181 = add nuw nsw i32 %178, 1 - store i32 %181, ptr %5, align 8, !tbaa !119 - %182 = zext nneg i32 %181 to i64 - %183 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %182 - store i8 16, ptr %183, align 1, !tbaa !9 - %.not252 = icmp ult i32 %177, 1073741824 + %157 = trunc i32 %156 to i8 + %158 = lshr i8 %157, 7 + %159 = sub nsw i64 %126, %indvars.iv276 + %160 = getelementptr inbounds nuw [9 x i8], ptr %7, i64 0, i64 %159 + store i8 %158, ptr %160, align 1, !tbaa !9 + %indvars.iv.next277 = add nuw nsw i64 %indvars.iv276, 1 + %exitcond280.not = icmp eq i64 %indvars.iv.next277, %wide.trip.count279 + br i1 %exitcond280.not, label %get_bits1_vector.exit, label %.lr.ph238, !llvm.loop !223 + +161: ; preds = %4 + %162 = trunc nuw nsw i32 %41 to i8 + store i8 %162, ptr %14, align 8, !tbaa !9 + %163 = load i32, ptr %19, align 8, !tbaa !35 + %164 = load i32, ptr %21, align 8, !tbaa !37 + %165 = load ptr, ptr %2, align 8, !tbaa !49 + %166 = lshr i32 %163, 3 + %167 = zext nneg i32 %166 to i64 + %168 = getelementptr inbounds nuw i8, ptr %165, i64 %167 + %169 = load i32, ptr %168, align 1, !tbaa !9 + %170 = tail call i32 @llvm.bswap.i32(i32 %169) + %171 = and i32 %163, 7 + %172 = shl i32 %170, %171 + %173 = lshr i32 %172, 30 + %174 = add i32 %163, 2 + %175 = tail call i32 @llvm.umin.i32(i32 %164, i32 %174) + store i32 %175, ptr %19, align 8, !tbaa !35 + %176 = add nuw nsw i32 %173, 1 + store i32 %176, ptr %5, align 8, !tbaa !119 + %177 = zext nneg i32 %176 to i64 + %178 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %177 + store i8 16, ptr %178, align 1, !tbaa !9 + %.not252 = icmp ult i32 %172, 1073741824 br i1 %.not252, label %._crit_edge230, label %.lr.ph229.preheader -.lr.ph229.preheader: ; preds = %166 - %wide.trip.count268 = zext nneg i32 %178 to i64 - %.pre290 = load i8, ptr %14, align 1, !tbaa !9 +.lr.ph229.preheader: ; preds = %161 + %wide.trip.count268 = zext nneg i32 %173 to i64 + %.pre295 = load i8, ptr %14, align 1, !tbaa !9 br label %.lr.ph229 .lr.ph229: ; preds = %.lr.ph229.preheader, %.lr.ph229 - %184 = phi i8 [ %.pre290, %.lr.ph229.preheader ], [ %199, %.lr.ph229 ] + %179 = phi i8 [ %.pre295, %.lr.ph229.preheader ], [ %194, %.lr.ph229 ] %indvars.iv265 = phi i64 [ 0, %.lr.ph229.preheader ], [ %indvars.iv.next266, %.lr.ph229 ] - %185 = load i32, ptr %19, align 8, !tbaa !35 - %186 = load i32, ptr %21, align 8, !tbaa !37 - %187 = load ptr, ptr %2, align 8, !tbaa !49 - %188 = lshr i32 %185, 3 - %189 = zext nneg i32 %188 to i64 - %190 = getelementptr inbounds nuw i8, ptr %187, i64 %189 - %191 = load i32, ptr %190, align 1, !tbaa !9 - %192 = tail call i32 @llvm.bswap.i32(i32 %191) - %193 = and i32 %185, 7 - %194 = shl i32 %192, %193 - %195 = add i32 %185, 2 - %196 = tail call i32 @llvm.umin.i32(i32 %186, i32 %195) - store i32 %196, ptr %19, align 8, !tbaa !35 - %sh.diff210 = lshr i32 %194, 29 + %180 = load i32, ptr %19, align 8, !tbaa !35 + %181 = load i32, ptr %21, align 8, !tbaa !37 + %182 = load ptr, ptr %2, align 8, !tbaa !49 + %183 = lshr i32 %180, 3 + %184 = zext nneg i32 %183 to i64 + %185 = getelementptr inbounds nuw i8, ptr %182, i64 %184 + %186 = load i32, ptr %185, align 1, !tbaa !9 + %187 = tail call i32 @llvm.bswap.i32(i32 %186) + %188 = and i32 %180, 7 + %189 = shl i32 %187, %188 + %190 = add i32 %180, 2 + %191 = tail call i32 @llvm.umin.i32(i32 %181, i32 %190) + store i32 %191, ptr %19, align 8, !tbaa !35 + %sh.diff210 = lshr i32 %189, 29 %tr.sh.diff211 = trunc nuw nsw i32 %sh.diff210 to i8 - %197 = and i8 %tr.sh.diff211, 6 - %198 = add i8 %184, 2 - %199 = add i8 %198, %197 + %192 = and i8 %tr.sh.diff211, 6 + %193 = add i8 %179, 2 + %194 = add i8 %193, %192 %indvars.iv.next266 = add nuw nsw i64 %indvars.iv265, 1 - %200 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv.next266 - store i8 %199, ptr %200, align 1, !tbaa !9 + %195 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv.next266 + store i8 %194, ptr %195, align 1, !tbaa !9 %exitcond269.not = icmp eq i64 %indvars.iv.next266, %wide.trip.count268 br i1 %exitcond269.not, label %._crit_edge230, label %.lr.ph229, !llvm.loop !224 -._crit_edge230: ; preds = %.lr.ph229, %166 - %201 = getelementptr inbounds nuw [6 x i8], ptr @ceil_log2, i64 0, i64 %182 - %202 = load i8, ptr %201, align 1, !tbaa !9 - %203 = sext i8 %202 to i32 - %204 = load i32, ptr %19, align 8, !tbaa !35 - %205 = load i32, ptr %21, align 8, !tbaa !37 - %206 = load ptr, ptr %2, align 8, !tbaa !49 - %207 = lshr i32 %204, 3 - %208 = zext nneg i32 %207 to i64 - %209 = getelementptr inbounds nuw i8, ptr %206, i64 %208 - %210 = load i32, ptr %209, align 1, !tbaa !9 - %211 = add i32 %204, %203 - %212 = tail call i32 @llvm.umin.i32(i32 %205, i32 %211) - store i32 %212, ptr %19, align 8, !tbaa !35 - %213 = getelementptr inbounds nuw i8, ptr %3, i64 13 - br label %214 - -214: ; preds = %._crit_edge230, %214 - %indvars.iv270 = phi i64 [ 0, %._crit_edge230 ], [ %indvars.iv.next271, %214 ] - %215 = load i32, ptr %19, align 8, !tbaa !35 - %216 = load ptr, ptr %2, align 8, !tbaa !49 - %217 = lshr i32 %215, 3 - %218 = zext nneg i32 %217 to i64 - %219 = getelementptr inbounds nuw i8, ptr %216, i64 %218 - %220 = load i8, ptr %219, align 1, !tbaa !9 - %221 = load i32, ptr %21, align 8, !tbaa !37 - %222 = icmp slt i32 %215, %221 - %223 = zext i1 %222 to i32 - %spec.select.i203 = add i32 %215, %223 - %224 = zext i8 %220 to i32 - %225 = and i32 %215, 7 - %226 = shl nuw nsw i32 %224, %225 +._crit_edge230: ; preds = %.lr.ph229, %161 + %196 = getelementptr inbounds nuw [6 x i8], ptr @ceil_log2, i64 0, i64 %177 + %197 = load i8, ptr %196, align 1, !tbaa !9 + %198 = sext i8 %197 to i32 + %199 = load i32, ptr %19, align 8, !tbaa !35 + %200 = load i32, ptr %21, align 8, !tbaa !37 + %201 = load ptr, ptr %2, align 8, !tbaa !49 + %202 = lshr i32 %199, 3 + %203 = zext nneg i32 %202 to i64 + %204 = getelementptr inbounds nuw i8, ptr %201, i64 %203 + %205 = load i32, ptr %204, align 1, !tbaa !9 + %206 = add i32 %199, %198 + %207 = tail call i32 @llvm.umin.i32(i32 %200, i32 %206) + store i32 %207, ptr %19, align 8, !tbaa !35 + %208 = getelementptr inbounds nuw i8, ptr %3, i64 13 + br label %209 + +209: ; preds = %._crit_edge230, %209 + %indvars.iv270 = phi i64 [ 0, %._crit_edge230 ], [ %indvars.iv.next271, %209 ] + %210 = load i32, ptr %19, align 8, !tbaa !35 + %211 = load ptr, ptr %2, align 8, !tbaa !49 + %212 = lshr i32 %210, 3 + %213 = zext nneg i32 %212 to i64 + %214 = getelementptr inbounds nuw i8, ptr %211, i64 %213 + %215 = load i8, ptr %214, align 1, !tbaa !9 + %216 = load i32, ptr %21, align 8, !tbaa !37 + %217 = icmp slt i32 %210, %216 + %218 = zext i1 %217 to i32 + %spec.select.i203 = add i32 %210, %218 + %219 = zext i8 %215 to i32 + %220 = and i32 %210, 7 + %221 = shl nuw nsw i32 %219, %220 store i32 %spec.select.i203, ptr %19, align 8, !tbaa !35 - %227 = trunc i32 %226 to i8 - %228 = lshr i8 %227, 7 - %229 = getelementptr inbounds nuw i8, ptr %213, i64 %indvars.iv270 - store i8 %228, ptr %229, align 1, !tbaa !9 + %222 = trunc i32 %221 to i8 + %223 = lshr i8 %222, 7 + %224 = getelementptr inbounds nuw i8, ptr %208, i64 %indvars.iv270 + store i8 %223, ptr %224, align 1, !tbaa !9 %indvars.iv.next271 = add nuw nsw i64 %indvars.iv270, 1 - %exitcond274.not = icmp eq i64 %indvars.iv.next271, %182 - br i1 %exitcond274.not, label %get_bits1_vector.exit.loopexit256, label %214, !llvm.loop !117 - -230: ; preds = %4 - %231 = trunc nuw nsw i32 %41 to i8 - store i8 %231, ptr %14, align 8, !tbaa !9 - %232 = load i32, ptr %19, align 8, !tbaa !35 - %233 = load i32, ptr %21, align 8, !tbaa !37 - %234 = load ptr, ptr %2, align 8, !tbaa !49 - %235 = lshr i32 %232, 3 - %236 = zext nneg i32 %235 to i64 - %237 = getelementptr inbounds nuw i8, ptr %234, i64 %236 - %238 = load i32, ptr %237, align 1, !tbaa !9 - %239 = add i32 %232, 2 - %240 = tail call i32 @llvm.umin.i32(i32 %233, i32 %239) - store i32 %240, ptr %19, align 8, !tbaa !35 - %241 = lshr i32 %240, 3 - %242 = zext nneg i32 %241 to i64 - %243 = getelementptr inbounds nuw i8, ptr %234, i64 %242 - %244 = load i32, ptr %243, align 1, !tbaa !9 - %245 = tail call i32 @llvm.bswap.i32(i32 %244) - %246 = and i32 %240, 7 - %247 = shl i32 %245, %246 - %248 = lshr i32 %247, 30 - %249 = add i32 %240, 2 - %250 = tail call i32 @llvm.umin.i32(i32 %233, i32 %249) - store i32 %250, ptr %19, align 8, !tbaa !35 - %251 = lshr i32 %250, 3 - %252 = zext nneg i32 %251 to i64 - %253 = getelementptr inbounds nuw i8, ptr %234, i64 %252 - %254 = load i32, ptr %253, align 1, !tbaa !9 - %255 = tail call i32 @llvm.bswap.i32(i32 %254) - %256 = and i32 %250, 7 - %257 = shl i32 %255, %256 - %258 = lshr i32 %257, 30 - %259 = add i32 %250, 2 - %260 = tail call i32 @llvm.umin.i32(i32 %233, i32 %259) - store i32 %260, ptr %19, align 8, !tbaa !35 - %261 = add nuw nsw i32 %258, %248 - %262 = add nuw nsw i32 %261, 1 - %263 = icmp samesign ugt i32 %261, 4 - br i1 %263, label %264, label %267 - -264: ; preds = %230 - %265 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %266 = load ptr, ptr %265, align 8, !tbaa !61 - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %266, i32 noundef 16, ptr noundef nonnull @.str.24, i32 noundef %262) #13 - br label %420 - -267: ; preds = %230 - %268 = tail call i32 @llvm.bswap.i32(i32 %238) - %269 = and i32 %232, 7 - %270 = shl i32 %268, %269 - %271 = lshr i32 %270, 30 - store i32 %262, ptr %5, align 8, !tbaa !119 - %272 = trunc nuw nsw i32 %271 to i8 - %273 = or disjoint i8 %272, 16 - %274 = zext nneg i32 %262 to i64 - %275 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %274 - store i8 %273, ptr %275, align 1, !tbaa !9 - %.not250 = icmp ult i32 %247, 1073741824 + %exitcond274.not = icmp eq i64 %indvars.iv.next271, %177 + br i1 %exitcond274.not, label %get_bits1_vector.exit.loopexit256, label %209, !llvm.loop !117 + +225: ; preds = %4 + %226 = trunc nuw nsw i32 %41 to i8 + store i8 %226, ptr %14, align 8, !tbaa !9 + %227 = load i32, ptr %19, align 8, !tbaa !35 + %228 = load i32, ptr %21, align 8, !tbaa !37 + %229 = load ptr, ptr %2, align 8, !tbaa !49 + %230 = lshr i32 %227, 3 + %231 = zext nneg i32 %230 to i64 + %232 = getelementptr inbounds nuw i8, ptr %229, i64 %231 + %233 = load i32, ptr %232, align 1, !tbaa !9 + %234 = add i32 %227, 2 + %235 = tail call i32 @llvm.umin.i32(i32 %228, i32 %234) + store i32 %235, ptr %19, align 8, !tbaa !35 + %236 = lshr i32 %235, 3 + %237 = zext nneg i32 %236 to i64 + %238 = getelementptr inbounds nuw i8, ptr %229, i64 %237 + %239 = load i32, ptr %238, align 1, !tbaa !9 + %240 = tail call i32 @llvm.bswap.i32(i32 %239) + %241 = and i32 %235, 7 + %242 = shl i32 %240, %241 + %243 = lshr i32 %242, 30 + %244 = add i32 %235, 2 + %245 = tail call i32 @llvm.umin.i32(i32 %228, i32 %244) + store i32 %245, ptr %19, align 8, !tbaa !35 + %246 = lshr i32 %245, 3 + %247 = zext nneg i32 %246 to i64 + %248 = getelementptr inbounds nuw i8, ptr %229, i64 %247 + %249 = load i32, ptr %248, align 1, !tbaa !9 + %250 = tail call i32 @llvm.bswap.i32(i32 %249) + %251 = and i32 %245, 7 + %252 = shl i32 %250, %251 + %253 = lshr i32 %252, 30 + %254 = add i32 %245, 2 + %255 = tail call i32 @llvm.umin.i32(i32 %228, i32 %254) + store i32 %255, ptr %19, align 8, !tbaa !35 + %256 = add nuw nsw i32 %253, %243 + %257 = add nuw nsw i32 %256, 1 + %258 = icmp samesign ugt i32 %256, 4 + br i1 %258, label %259, label %262 + +259: ; preds = %225 + %260 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %261 = load ptr, ptr %260, align 8, !tbaa !61 + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %261, i32 noundef 16, ptr noundef nonnull @.str.24, i32 noundef %257) #13 + br label %415 + +262: ; preds = %225 + %263 = tail call i32 @llvm.bswap.i32(i32 %233) + %264 = and i32 %227, 7 + %265 = shl i32 %263, %264 + %266 = lshr i32 %265, 30 + store i32 %257, ptr %5, align 8, !tbaa !119 + %267 = trunc nuw nsw i32 %266 to i8 + %268 = or disjoint i8 %267, 16 + %269 = zext nneg i32 %257 to i64 + %270 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %269 + store i8 %268, ptr %270, align 1, !tbaa !9 + %.not250 = icmp ult i32 %242, 1073741824 br i1 %.not250, label %.preheader220, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %267 - %wide.trip.count = zext nneg i32 %248 to i64 +.lr.ph.preheader: ; preds = %262 + %wide.trip.count = zext nneg i32 %243 to i64 %.pre = load i8, ptr %14, align 1, !tbaa !9 br label %.lr.ph -.preheader220: ; preds = %.lr.ph, %267 - %.not251 = icmp ult i32 %257, 1073741824 +.preheader220: ; preds = %.lr.ph, %262 + %.not251 = icmp ult i32 %252, 1073741824 br i1 %.not251, label %._crit_edge, label %.lr.ph223 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %276 = phi i8 [ %.pre, %.lr.ph.preheader ], [ %291, %.lr.ph ] + %271 = phi i8 [ %.pre, %.lr.ph.preheader ], [ %286, %.lr.ph ] %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %277 = load i32, ptr %19, align 8, !tbaa !35 - %278 = load i32, ptr %21, align 8, !tbaa !37 - %279 = load ptr, ptr %2, align 8, !tbaa !49 - %280 = lshr i32 %277, 3 - %281 = zext nneg i32 %280 to i64 - %282 = getelementptr inbounds nuw i8, ptr %279, i64 %281 - %283 = load i32, ptr %282, align 1, !tbaa !9 - %284 = tail call i32 @llvm.bswap.i32(i32 %283) - %285 = and i32 %277, 7 - %286 = shl i32 %284, %285 - %287 = add i32 %277, 2 - %288 = tail call i32 @llvm.umin.i32(i32 %278, i32 %287) - store i32 %288, ptr %19, align 8, !tbaa !35 - %sh.diff207 = lshr i32 %286, 29 + %272 = load i32, ptr %19, align 8, !tbaa !35 + %273 = load i32, ptr %21, align 8, !tbaa !37 + %274 = load ptr, ptr %2, align 8, !tbaa !49 + %275 = lshr i32 %272, 3 + %276 = zext nneg i32 %275 to i64 + %277 = getelementptr inbounds nuw i8, ptr %274, i64 %276 + %278 = load i32, ptr %277, align 1, !tbaa !9 + %279 = tail call i32 @llvm.bswap.i32(i32 %278) + %280 = and i32 %272, 7 + %281 = shl i32 %279, %280 + %282 = add i32 %272, 2 + %283 = tail call i32 @llvm.umin.i32(i32 %273, i32 %282) + store i32 %283, ptr %19, align 8, !tbaa !35 + %sh.diff207 = lshr i32 %281, 29 %tr.sh.diff208 = trunc nuw nsw i32 %sh.diff207 to i8 - %289 = and i8 %tr.sh.diff208, 6 - %290 = add i8 %276, 2 - %291 = add i8 %290, %289 + %284 = and i8 %tr.sh.diff208, 6 + %285 = add i8 %271, 2 + %286 = add i8 %285, %284 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %292 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv.next - store i8 %291, ptr %292, align 1, !tbaa !9 + %287 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv.next + store i8 %286, ptr %287, align 1, !tbaa !9 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.preheader220, label %.lr.ph, !llvm.loop !225 .lr.ph223: ; preds = %.preheader220, %.lr.ph223 - %.6222 = phi i32 [ %317, %.lr.ph223 ], [ 0, %.preheader220 ] - %293 = load i32, ptr %5, align 8, !tbaa !119 - %294 = sub nsw i32 %293, %.6222 - %295 = sext i32 %294 to i64 - %296 = getelementptr inbounds [9 x i8], ptr %14, i64 0, i64 %295 - %297 = load i8, ptr %296, align 1, !tbaa !9 - %298 = load i32, ptr %19, align 8, !tbaa !35 - %299 = load i32, ptr %21, align 8, !tbaa !37 - %300 = load ptr, ptr %2, align 8, !tbaa !49 - %301 = lshr i32 %298, 3 - %302 = zext nneg i32 %301 to i64 - %303 = getelementptr inbounds nuw i8, ptr %300, i64 %302 - %304 = load i32, ptr %303, align 1, !tbaa !9 - %305 = tail call i32 @llvm.bswap.i32(i32 %304) - %306 = and i32 %298, 7 - %307 = shl i32 %305, %306 - %308 = add i32 %298, 2 - %309 = tail call i32 @llvm.umin.i32(i32 %299, i32 %308) - store i32 %309, ptr %19, align 8, !tbaa !35 - %sh.diff = lshr i32 %307, 29 + %.6222 = phi i32 [ %312, %.lr.ph223 ], [ 0, %.preheader220 ] + %288 = load i32, ptr %5, align 8, !tbaa !119 + %289 = sub nsw i32 %288, %.6222 + %290 = sext i32 %289 to i64 + %291 = getelementptr inbounds [9 x i8], ptr %14, i64 0, i64 %290 + %292 = load i8, ptr %291, align 1, !tbaa !9 + %293 = load i32, ptr %19, align 8, !tbaa !35 + %294 = load i32, ptr %21, align 8, !tbaa !37 + %295 = load ptr, ptr %2, align 8, !tbaa !49 + %296 = lshr i32 %293, 3 + %297 = zext nneg i32 %296 to i64 + %298 = getelementptr inbounds nuw i8, ptr %295, i64 %297 + %299 = load i32, ptr %298, align 1, !tbaa !9 + %300 = tail call i32 @llvm.bswap.i32(i32 %299) + %301 = and i32 %293, 7 + %302 = shl i32 %300, %301 + %303 = add i32 %293, 2 + %304 = tail call i32 @llvm.umin.i32(i32 %294, i32 %303) + store i32 %304, ptr %19, align 8, !tbaa !35 + %sh.diff = lshr i32 %302, 29 %tr.sh.diff = trunc nuw nsw i32 %sh.diff to i8 - %310 = and i8 %tr.sh.diff, 6 - %311 = add i8 %297, -2 - %312 = sub i8 %311, %310 - %313 = xor i32 %.6222, -1 - %314 = add i32 %293, %313 - %315 = sext i32 %314 to i64 - %316 = getelementptr inbounds [9 x i8], ptr %14, i64 0, i64 %315 - store i8 %312, ptr %316, align 1, !tbaa !9 - %317 = add nuw nsw i32 %.6222, 1 - %exitcond259.not = icmp eq i32 %317, %258 + %305 = and i8 %tr.sh.diff, 6 + %306 = add i8 %292, -2 + %307 = sub i8 %306, %305 + %308 = xor i32 %.6222, -1 + %309 = add i32 %288, %308 + %310 = sext i32 %309 to i64 + %311 = getelementptr inbounds [9 x i8], ptr %14, i64 0, i64 %310 + store i8 %307, ptr %311, align 1, !tbaa !9 + %312 = add nuw nsw i32 %.6222, 1 + %exitcond259.not = icmp eq i32 %312, %253 br i1 %exitcond259.not, label %._crit_edge.loopexit, label %.lr.ph223, !llvm.loop !226 ._crit_edge.loopexit: ; preds = %.lr.ph223 - %.pre289 = load i32, ptr %5, align 8, !tbaa !119 + %.pre294 = load i32, ptr %5, align 8, !tbaa !119 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader220 - %318 = phi i32 [ %.pre289, %._crit_edge.loopexit ], [ %262, %.preheader220 ] - %319 = sext i32 %318 to i64 - %320 = getelementptr inbounds [6 x i8], ptr @ceil_log2, i64 0, i64 %319 - %321 = load i8, ptr %320, align 1, !tbaa !9 - %322 = sext i8 %321 to i32 - %323 = load i32, ptr %19, align 8, !tbaa !35 - %324 = load i32, ptr %21, align 8, !tbaa !37 - %325 = load ptr, ptr %2, align 8, !tbaa !49 - %326 = lshr i32 %323, 3 - %327 = zext nneg i32 %326 to i64 - %328 = getelementptr inbounds nuw i8, ptr %325, i64 %327 - %329 = load i32, ptr %328, align 1, !tbaa !9 - %330 = tail call i32 @llvm.bswap.i32(i32 %329) - %331 = and i32 %323, 7 - %332 = shl i32 %330, %331 - %333 = sub nsw i32 32, %322 - %334 = lshr i32 %332, %333 - %335 = add i32 %323, %322 - %336 = tail call i32 @llvm.umin.i32(i32 %324, i32 %335) - store i32 %336, ptr %19, align 8, !tbaa !35 - %337 = getelementptr inbounds nuw i8, ptr %3, i64 13 - %338 = icmp sgt i32 %318, 0 - br i1 %338, label %.lr.ph226.preheader, label %get_bits1_vector.exit + %313 = phi i32 [ %.pre294, %._crit_edge.loopexit ], [ %257, %.preheader220 ] + %314 = sext i32 %313 to i64 + %315 = getelementptr inbounds [6 x i8], ptr @ceil_log2, i64 0, i64 %314 + %316 = load i8, ptr %315, align 1, !tbaa !9 + %317 = sext i8 %316 to i32 + %318 = load i32, ptr %19, align 8, !tbaa !35 + %319 = load i32, ptr %21, align 8, !tbaa !37 + %320 = load ptr, ptr %2, align 8, !tbaa !49 + %321 = lshr i32 %318, 3 + %322 = zext nneg i32 %321 to i64 + %323 = getelementptr inbounds nuw i8, ptr %320, i64 %322 + %324 = load i32, ptr %323, align 1, !tbaa !9 + %325 = tail call i32 @llvm.bswap.i32(i32 %324) + %326 = and i32 %318, 7 + %327 = shl i32 %325, %326 + %328 = sub nsw i32 32, %317 + %329 = lshr i32 %327, %328 + %330 = add i32 %318, %317 + %331 = tail call i32 @llvm.umin.i32(i32 %319, i32 %330) + store i32 %331, ptr %19, align 8, !tbaa !35 + %332 = getelementptr inbounds nuw i8, ptr %3, i64 13 + %333 = icmp sgt i32 %313, 0 + br i1 %333, label %.lr.ph226.preheader, label %get_bits1_vector.exit .lr.ph226.preheader: ; preds = %._crit_edge - %wide.trip.count263 = zext nneg i32 %318 to i64 + %wide.trip.count263 = zext nneg i32 %313 to i64 br label %.lr.ph226 .lr.ph226: ; preds = %.lr.ph226.preheader, %.lr.ph226 %indvars.iv260 = phi i64 [ 0, %.lr.ph226.preheader ], [ %indvars.iv.next261, %.lr.ph226 ] - %339 = load i32, ptr %19, align 8, !tbaa !35 - %340 = load ptr, ptr %2, align 8, !tbaa !49 - %341 = lshr i32 %339, 3 - %342 = zext nneg i32 %341 to i64 - %343 = getelementptr inbounds nuw i8, ptr %340, i64 %342 - %344 = load i8, ptr %343, align 1, !tbaa !9 - %345 = load i32, ptr %21, align 8, !tbaa !37 - %346 = icmp slt i32 %339, %345 - %347 = zext i1 %346 to i32 - %spec.select.i204 = add i32 %339, %347 - %348 = zext i8 %344 to i32 - %349 = and i32 %339, 7 - %350 = shl nuw nsw i32 %348, %349 + %334 = load i32, ptr %19, align 8, !tbaa !35 + %335 = load ptr, ptr %2, align 8, !tbaa !49 + %336 = lshr i32 %334, 3 + %337 = zext nneg i32 %336 to i64 + %338 = getelementptr inbounds nuw i8, ptr %335, i64 %337 + %339 = load i8, ptr %338, align 1, !tbaa !9 + %340 = load i32, ptr %21, align 8, !tbaa !37 + %341 = icmp slt i32 %334, %340 + %342 = zext i1 %341 to i32 + %spec.select.i204 = add i32 %334, %342 + %343 = zext i8 %339 to i32 + %344 = and i32 %334, 7 + %345 = shl nuw nsw i32 %343, %344 store i32 %spec.select.i204, ptr %19, align 8, !tbaa !35 - %351 = trunc i32 %350 to i8 - %352 = lshr i8 %351, 7 - %353 = getelementptr inbounds nuw i8, ptr %337, i64 %indvars.iv260 - store i8 %352, ptr %353, align 1, !tbaa !9 + %346 = trunc i32 %345 to i8 + %347 = lshr i8 %346, 7 + %348 = getelementptr inbounds nuw i8, ptr %332, i64 %indvars.iv260 + store i8 %347, ptr %348, align 1, !tbaa !9 %indvars.iv.next261 = add nuw nsw i64 %indvars.iv260, 1 %exitcond264.not = icmp eq i64 %indvars.iv.next261, %wide.trip.count263 br i1 %exitcond264.not, label %get_bits1_vector.exit, label %.lr.ph226, !llvm.loop !117 -default.unreachable294: ; preds = %4 +default.unreachable299: ; preds = %4 unreachable get_bits1_vector.exit.thread: ; preds = %.lr.ph245.preheader, %._crit_edge242 store i32 0, ptr %3, align 16, !tbaa !123 - br label %362 - -get_bits1_vector.exit.loopexit256: ; preds = %214 - %354 = tail call i32 @llvm.bswap.i32(i32 %210) - %355 = and i32 %204, 7 - %356 = shl i32 %354, %355 - %357 = sub nsw i32 32, %203 - %358 = lshr i32 %356, %357 + br label %357 + +get_bits1_vector.exit.loopexit256: ; preds = %209 + %349 = tail call i32 @llvm.bswap.i32(i32 %205) + %350 = and i32 %199, 7 + %351 = shl i32 %349, %350 + %352 = sub nsw i32 32, %198 + %353 = lshr i32 %351, %352 br label %get_bits1_vector.exit get_bits1_vector.exit: ; preds = %.lr.ph226, %.lr.ph238, %get_bits1_vector.exit.loopexit256, %._crit_edge, %._crit_edge235 - %359 = phi i32 [ %125, %._crit_edge235 ], [ %318, %._crit_edge ], [ %181, %get_bits1_vector.exit.loopexit256 ], [ %164, %.lr.ph238 ], [ %318, %.lr.ph226 ] - %.0186 = phi i32 [ %141, %._crit_edge235 ], [ %334, %._crit_edge ], [ %358, %get_bits1_vector.exit.loopexit256 ], [ %141, %.lr.ph238 ], [ %334, %.lr.ph226 ] + %354 = phi i32 [ %125, %._crit_edge235 ], [ %313, %._crit_edge ], [ %176, %get_bits1_vector.exit.loopexit256 ], [ %125, %.lr.ph238 ], [ %313, %.lr.ph226 ] + %.0186 = phi i32 [ %141, %._crit_edge235 ], [ %329, %._crit_edge ], [ %353, %get_bits1_vector.exit.loopexit256 ], [ %141, %.lr.ph238 ], [ %329, %.lr.ph226 ] store i32 %31, ptr %3, align 16, !tbaa !123 - %360 = icmp sgt i32 %.0186, -1 - br i1 %360, label %362, label %361 + %355 = icmp sgt i32 %.0186, -1 + br i1 %355, label %357, label %356 -361: ; preds = %get_bits1_vector.exit +356: ; preds = %get_bits1_vector.exit tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef null, i32 noundef 0, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.5, i32 noundef 739) #13 tail call void @abort() #14 unreachable -362: ; preds = %get_bits1_vector.exit.thread, %get_bits1_vector.exit - %363 = phi i32 [ %45, %get_bits1_vector.exit.thread ], [ %359, %get_bits1_vector.exit ] +357: ; preds = %get_bits1_vector.exit.thread, %get_bits1_vector.exit + %358 = phi i32 [ %45, %get_bits1_vector.exit.thread ], [ %354, %get_bits1_vector.exit ] %.0186206 = phi i32 [ 0, %get_bits1_vector.exit.thread ], [ %.0186, %get_bits1_vector.exit ] - %364 = add nsw i32 %363, 1 - %365 = icmp sgt i32 %.0186206, %364 - br i1 %365, label %366, label %.preheader + %359 = add nsw i32 %358, 1 + %360 = icmp sgt i32 %.0186206, %359 + br i1 %360, label %361, label %.preheader -.preheader: ; preds = %362 - %.not196246 = icmp slt i32 %363, 1 +.preheader: ; preds = %357 + %.not196246 = icmp slt i32 %358, 1 br i1 %.not196246, label %.preheader.._crit_edge249_crit_edge, label %.lr.ph248.preheader .preheader.._crit_edge249_crit_edge: ; preds = %.preheader - %.pre293 = load i8, ptr %14, align 8, !tbaa !9 + %.pre298 = load i8, ptr %14, align 8, !tbaa !9 br label %._crit_edge249 .lr.ph248.preheader: ; preds = %.preheader - %wide.trip.count287 = zext nneg i32 %364 to i64 - %.pre292 = load i8, ptr %14, align 1, !tbaa !9 + %wide.trip.count292 = zext nneg i32 %359 to i64 + %.pre297 = load i8, ptr %14, align 1, !tbaa !9 br label %.lr.ph248 -366: ; preds = %362 - %367 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %368 = load ptr, ptr %367, align 8, !tbaa !61 - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %368, i32 noundef 16, ptr noundef nonnull @.str.26, i32 noundef %.0186206) #13 - br label %420 - -369: ; preds = %.lr.ph248 - %indvars.iv.next285 = add nuw nsw i64 %indvars.iv284, 1 - %exitcond288.not = icmp eq i64 %indvars.iv.next285, %wide.trip.count287 - br i1 %exitcond288.not, label %._crit_edge249, label %.lr.ph248, !llvm.loop !227 - -.lr.ph248: ; preds = %.lr.ph248.preheader, %369 - %370 = phi i8 [ %.pre292, %.lr.ph248.preheader ], [ %372, %369 ] - %indvars.iv284 = phi i64 [ 1, %.lr.ph248.preheader ], [ %indvars.iv.next285, %369 ] - %371 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv284 - %372 = load i8, ptr %371, align 1, !tbaa !9 - %.not199 = icmp ult i8 %370, %372 - br i1 %.not199, label %369, label %373 - -373: ; preds = %.lr.ph248 - %374 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %375 = load ptr, ptr %374, align 8, !tbaa !61 - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %375, i32 noundef 16, ptr noundef nonnull @.str.27) #13 - br label %420 - -._crit_edge249: ; preds = %369, %.preheader.._crit_edge249_crit_edge - %376 = phi i8 [ %.pre293, %.preheader.._crit_edge249_crit_edge ], [ %.pre292, %369 ] - %377 = icmp sgt i32 %363, 1 - %378 = select i1 %377, i32 2, i32 1 - %379 = getelementptr inbounds nuw i8, ptr %3, i64 24 - store i32 %378, ptr %379, align 8, !tbaa !122 - %380 = getelementptr inbounds nuw i8, ptr %3, i64 106642 - store i8 %376, ptr %380, align 2, !tbaa !9 - %381 = sext i32 %363 to i64 - %382 = getelementptr inbounds [9 x i8], ptr %14, i64 0, i64 %381 - %383 = load i8, ptr %382, align 1, !tbaa !9 - %384 = zext nneg i32 %378 to i64 - %385 = getelementptr inbounds nuw [3 x i8], ptr %380, i64 0, i64 %384 - store i8 %383, ptr %385, align 1, !tbaa !9 - br i1 %377, label %386, label %405 - -386: ; preds = %._crit_edge249 - %387 = icmp ult i32 %30, 1073741824 - br i1 %387, label %388, label %390 - -388: ; preds = %386 - %389 = lshr i32 %363, 1 - br label %400 - -390: ; preds = %386 - %391 = and i32 %30, 1073741824 - %.not197 = icmp eq i32 %391, 0 - br i1 %.not197, label %395, label %392 - -392: ; preds = %390 - %393 = tail call i32 @llvm.smax.i32(i32 %.0186206, i32 2) - %reass.sub = sub nsw i32 %363, %393 - %394 = add nsw i32 %reass.sub, 1 - br label %400 - -395: ; preds = %390 - switch i32 %.0186206, label %398 [ - i32 0, label %400 - i32 1, label %396 +361: ; preds = %357 + %362 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %363 = load ptr, ptr %362, align 8, !tbaa !61 + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %363, i32 noundef 16, ptr noundef nonnull @.str.26, i32 noundef %.0186206) #13 + br label %415 + +364: ; preds = %.lr.ph248 + %indvars.iv.next290 = add nuw nsw i64 %indvars.iv289, 1 + %exitcond293.not = icmp eq i64 %indvars.iv.next290, %wide.trip.count292 + br i1 %exitcond293.not, label %._crit_edge249, label %.lr.ph248, !llvm.loop !227 + +.lr.ph248: ; preds = %.lr.ph248.preheader, %364 + %365 = phi i8 [ %.pre297, %.lr.ph248.preheader ], [ %367, %364 ] + %indvars.iv289 = phi i64 [ 1, %.lr.ph248.preheader ], [ %indvars.iv.next290, %364 ] + %366 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv289 + %367 = load i8, ptr %366, align 1, !tbaa !9 + %.not199 = icmp ult i8 %365, %367 + br i1 %.not199, label %364, label %368 + +368: ; preds = %.lr.ph248 + %369 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %370 = load ptr, ptr %369, align 8, !tbaa !61 + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %370, i32 noundef 16, ptr noundef nonnull @.str.27) #13 + br label %415 + +._crit_edge249: ; preds = %364, %.preheader.._crit_edge249_crit_edge + %371 = phi i8 [ %.pre298, %.preheader.._crit_edge249_crit_edge ], [ %.pre297, %364 ] + %372 = icmp sgt i32 %358, 1 + %373 = select i1 %372, i32 2, i32 1 + %374 = getelementptr inbounds nuw i8, ptr %3, i64 24 + store i32 %373, ptr %374, align 8, !tbaa !122 + %375 = getelementptr inbounds nuw i8, ptr %3, i64 106642 + store i8 %371, ptr %375, align 2, !tbaa !9 + %376 = sext i32 %358 to i64 + %377 = getelementptr inbounds [9 x i8], ptr %14, i64 0, i64 %376 + %378 = load i8, ptr %377, align 1, !tbaa !9 + %379 = zext nneg i32 %373 to i64 + %380 = getelementptr inbounds nuw [3 x i8], ptr %375, i64 0, i64 %379 + store i8 %378, ptr %380, align 1, !tbaa !9 + br i1 %372, label %381, label %400 + +381: ; preds = %._crit_edge249 + %382 = icmp ult i32 %30, 1073741824 + br i1 %382, label %383, label %385 + +383: ; preds = %381 + %384 = lshr i32 %358, 1 + br label %395 + +385: ; preds = %381 + %386 = and i32 %30, 1073741824 + %.not197 = icmp eq i32 %386, 0 + br i1 %.not197, label %390, label %387 + +387: ; preds = %385 + %388 = tail call i32 @llvm.smax.i32(i32 %.0186206, i32 2) + %reass.sub = sub nsw i32 %358, %388 + %389 = add nsw i32 %reass.sub, 1 + br label %395 + +390: ; preds = %385 + switch i32 %.0186206, label %393 [ + i32 0, label %395 + i32 1, label %391 ] -396: ; preds = %395 - %397 = add nsw i32 %363, -1 - br label %400 - -398: ; preds = %395 - %399 = add nsw i32 %.0186206, -1 +391: ; preds = %390 + %392 = add nsw i32 %358, -1 + br label %395 + +393: ; preds = %390 + %394 = add nsw i32 %.0186206, -1 + br label %395 + +395: ; preds = %390, %387, %391, %393, %383 + %.0 = phi i32 [ %384, %383 ], [ %389, %387 ], [ %392, %391 ], [ %394, %393 ], [ 1, %390 ] + %396 = sext i32 %.0 to i64 + %397 = getelementptr inbounds [9 x i8], ptr %14, i64 0, i64 %396 + %398 = load i8, ptr %397, align 1, !tbaa !9 + %399 = getelementptr inbounds nuw i8, ptr %3, i64 106643 + store i8 %398, ptr %399, align 1, !tbaa !9 br label %400 -400: ; preds = %395, %392, %396, %398, %388 - %.0 = phi i32 [ %389, %388 ], [ %394, %392 ], [ %397, %396 ], [ %399, %398 ], [ 1, %395 ] - %401 = sext i32 %.0 to i64 - %402 = getelementptr inbounds [9 x i8], ptr %14, i64 0, i64 %401 - %403 = load i8, ptr %402, align 1, !tbaa !9 - %404 = getelementptr inbounds nuw i8, ptr %3, i64 106643 - store i8 %403, ptr %404, align 1, !tbaa !9 - br label %405 - -405: ; preds = %400, %._crit_edge249 - %406 = getelementptr inbounds nuw i8, ptr %3, i64 14580 - %407 = getelementptr inbounds nuw i8, ptr %3, i64 14584 - %408 = load i32, ptr %407, align 4, !tbaa !10 - %409 = icmp ne i32 %408, %6 - %.neg = sext i1 %409 to i32 - store i32 %.neg, ptr %406, align 4, !tbaa !10 - store i32 -1, ptr %407, align 4, !tbaa !10 - %410 = and i32 %30, 1073741824 - %411 = icmp ne i32 %410, 0 - %412 = icmp ne i32 %.0186206, 0 - %or.cond = and i1 %411, %412 - br i1 %or.cond, label %413, label %415 - -413: ; preds = %405 - %414 = sub nsw i32 %364, %.0186206 - store i32 %414, ptr %407, align 4, !tbaa !10 - br label %420 - -415: ; preds = %405 - %416 = icmp eq i32 %31, 2 - %417 = icmp samesign ugt i32 %.0186206, 1 - %or.cond3 = and i1 %416, %417 - br i1 %or.cond3, label %418, label %420 - -418: ; preds = %415 - %419 = add nsw i32 %.0186206, -1 - store i32 %419, ptr %407, align 4, !tbaa !10 - br label %420 - -420: ; preds = %413, %418, %415, %373, %366, %264, %50 - %.0184 = phi i32 [ -1, %366 ], [ -1, %373 ], [ -1, %50 ], [ -1, %264 ], [ 0, %415 ], [ 0, %418 ], [ 0, %413 ] +400: ; preds = %395, %._crit_edge249 + %401 = getelementptr inbounds nuw i8, ptr %3, i64 14580 + %402 = getelementptr inbounds nuw i8, ptr %3, i64 14584 + %403 = load i32, ptr %402, align 4, !tbaa !10 + %404 = icmp ne i32 %403, %6 + %.neg = sext i1 %404 to i32 + store i32 %.neg, ptr %401, align 4, !tbaa !10 + store i32 -1, ptr %402, align 4, !tbaa !10 + %405 = and i32 %30, 1073741824 + %406 = icmp ne i32 %405, 0 + %407 = icmp ne i32 %.0186206, 0 + %or.cond = and i1 %406, %407 + br i1 %or.cond, label %408, label %410 + +408: ; preds = %400 + %409 = sub nsw i32 %359, %.0186206 + store i32 %409, ptr %402, align 4, !tbaa !10 + br label %415 + +410: ; preds = %400 + %411 = icmp eq i32 %31, 2 + %412 = icmp samesign ugt i32 %.0186206, 1 + %or.cond3 = and i1 %411, %412 + br i1 %or.cond3, label %413, label %415 + +413: ; preds = %410 + %414 = add nsw i32 %.0186206, -1 + store i32 %414, ptr %402, align 4, !tbaa !10 + br label %415 + +415: ; preds = %408, %413, %410, %368, %361, %259, %50 + %.0184 = phi i32 [ -1, %361 ], [ -1, %368 ], [ -1, %50 ], [ -1, %259 ], [ 0, %410 ], [ 0, %413 ], [ 0, %408 ] ret i32 %.0184 } diff --git a/bench/ffmpeg/optimized/avf_showcwt.ll b/bench/ffmpeg/optimized/avf_showcwt.ll index 73b850805e1..86516d7e28d 100644 --- a/bench/ffmpeg/optimized/avf_showcwt.ll +++ b/bench/ffmpeg/optimized/avf_showcwt.ll @@ -1444,7 +1444,7 @@ define internal fastcc range(i32 -22, 1) i32 @compute_kernel(ptr noundef %0) unn %18 = tail call ptr @av_malloc_array(i64 noundef %17, i64 noundef 4) #13 store ptr %18, ptr %2, align 8, !tbaa !125 %.not = icmp eq ptr %18, null - br i1 %.not, label %116, label %.preheader161 + br i1 %.not, label %115, label %.preheader161 .preheader161: ; preds = %1 %19 = icmp sgt i32 %10, 0 @@ -1457,15 +1457,15 @@ define internal fastcc range(i32 -22, 1) i32 @compute_kernel(ptr noundef %0) unn %23 = sub nsw i32 0, %6 %24 = sitofp i32 %23 to float %25 = shl nsw i64 %17, 2 - %wide.trip.count229 = zext nneg i32 %10 to i64 + %wide.trip.count226 = zext nneg i32 %10 to i64 br label %26 26: ; preds = %.lr.ph186, %._crit_edge - %indvars.iv226 = phi i64 [ 0, %.lr.ph186 ], [ %indvars.iv.next227, %._crit_edge ] + %indvars.iv223 = phi i64 [ 0, %.lr.ph186 ], [ %indvars.iv.next224, %._crit_edge ] %.0128185 = phi i32 [ 2147483647, %.lr.ph186 ], [ %..0128, %._crit_edge ] - %.0130184 = phi i32 [ 0, %.lr.ph186 ], [ %105, %._crit_edge ] + %.0130184 = phi i32 [ 0, %.lr.ph186 ], [ %104, %._crit_edge ] %27 = load ptr, ptr %21, align 8, !tbaa !83 - %.idx = shl nuw nsw i64 %indvars.iv226, 3 + %.idx = shl nuw nsw i64 %indvars.iv223, 3 %28 = getelementptr inbounds nuw i8, ptr %27, i64 %.idx %29 = load float, ptr %28, align 4, !tbaa !76 %30 = getelementptr inbounds nuw i8, ptr %28, i64 4 @@ -1546,122 +1546,120 @@ define internal fastcc range(i32 -22, 1) i32 @compute_kernel(ptr noundef %0) unn br i1 %.not150173, label %.thread155, label %.lr.ph175.preheader .lr.ph175.preheader: ; preds = %.loopexit - %70 = sext i32 %46 to i64 - %71 = sext i32 %39 to i64 - %72 = add i32 %46, 1 - %73 = sub i32 %72, %.0139 + %70 = add i32 %46, 1 + %71 = sub i32 %70, %.0139 br label %.lr.ph175 -.lr.ph175: ; preds = %.lr.ph175.preheader, %83 - %indvars.iv221 = phi i32 [ %73, %.lr.ph175.preheader ], [ %indvars.iv.next222, %83 ] - %indvars.iv215 = phi i64 [ %70, %.lr.ph175.preheader ], [ %indvars.iv.next216, %83 ] - %74 = sub nsw i64 %indvars.iv215, %71 - %75 = getelementptr inbounds float, ptr %18, i64 %74 - %76 = load float, ptr %75, align 4, !tbaa !76 - %77 = fcmp nsz une float %76, 0.000000e+00 - br i1 %77, label %78, label %83 - -78: ; preds = %.lr.ph175 - %79 = trunc nsw i64 %indvars.iv215 to i32 - %80 = fcmp nsz ogt float %76, 0x3810000000000000 - br i1 %80, label %81, label %84 - -81: ; preds = %78 - %82 = fpext nsz float %76 to double - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 48, ptr noundef nonnull @.str.13, double noundef %82) #13 - br label %84 - -83: ; preds = %.lr.ph175 - %indvars.iv.next216 = add nsw i64 %indvars.iv215, -1 - %.not150.not = icmp sgt i64 %indvars.iv215, %71 - %indvars.iv.next222 = add i32 %indvars.iv221, -1 +.lr.ph175: ; preds = %.lr.ph175.preheader, %81 + %indvars.iv218 = phi i32 [ %71, %.lr.ph175.preheader ], [ %indvars.iv.next219, %81 ] + %.0125174 = phi i32 [ %46, %.lr.ph175.preheader ], [ %82, %81 ] + %72 = sub nsw i32 %.0125174, %39 + %73 = zext nneg i32 %72 to i64 + %74 = getelementptr inbounds nuw float, ptr %18, i64 %73 + %75 = load float, ptr %74, align 4, !tbaa !76 + %76 = fcmp nsz une float %75, 0.000000e+00 + br i1 %76, label %77, label %81 + +77: ; preds = %.lr.ph175 + %78 = fcmp nsz ogt float %75, 0x3810000000000000 + br i1 %78, label %79, label %83 + +79: ; preds = %77 + %80 = fpext nsz float %75 to double + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 48, ptr noundef nonnull @.str.13, double noundef %80) #13 + br label %83 + +81: ; preds = %.lr.ph175 + %82 = add nsw i32 %.0125174, -1 + %.not150.not = icmp sgt i32 %.0125174, %39 + %indvars.iv.next219 = add i32 %indvars.iv218, -1 br i1 %.not150.not, label %.lr.ph175, label %.thread155, !llvm.loop !128 -84: ; preds = %78, %81 - %85 = icmp eq i32 %.0139, -2147483648 - %86 = icmp eq i64 %indvars.iv215, 2147483647 - %or.cond = or i1 %85, %86 - br i1 %or.cond, label %.thread155, label %87 - -87: ; preds = %84 - %88 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv226 - store i32 %.0139, ptr %88, align 4, !tbaa !62 - %89 = getelementptr inbounds nuw i32, ptr %14, i64 %indvars.iv226 - store i32 %79, ptr %89, align 4, !tbaa !62 - %90 = sub i32 %79, %.0139 - %91 = and i32 %90, -16 - %92 = add nsw i32 %91, 16 - %93 = sext i32 %92 to i64 - %94 = tail call noalias ptr @av_calloc(i64 noundef %93, i64 noundef 8) #13 - %.not151 = icmp eq ptr %94, null +83: ; preds = %77, %79 + %84 = icmp eq i32 %.0139, -2147483648 + %85 = icmp eq i32 %.0125174, 2147483647 + %or.cond = or i1 %84, %85 + br i1 %or.cond, label %.thread155, label %86 + +86: ; preds = %83 + %87 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv223 + store i32 %.0139, ptr %87, align 4, !tbaa !62 + %88 = getelementptr inbounds nuw i32, ptr %14, i64 %indvars.iv223 + store i32 %.0125174, ptr %88, align 4, !tbaa !62 + %89 = sub i32 %.0125174, %.0139 + %90 = and i32 %89, -16 + %91 = add nsw i32 %90, 16 + %92 = sext i32 %91 to i64 + %93 = tail call noalias ptr @av_calloc(i64 noundef %92, i64 noundef 8) #13 + %.not151 = icmp eq ptr %93, null br i1 %.not151, label %.thread155, label %.preheader -.preheader: ; preds = %87 - %.not152180 = icmp slt i32 %90, 0 +.preheader: ; preds = %86 + %.not152180 = icmp slt i32 %89, 0 br i1 %.not152180, label %._crit_edge, label %.lr.ph182 .lr.ph182: ; preds = %.preheader - %95 = sub i32 %.0139, %39 - %wide.trip.count224 = zext i32 %indvars.iv221 to i64 - br label %96 - -96: ; preds = %.lr.ph182, %96 - %indvars.iv218 = phi i64 [ 0, %.lr.ph182 ], [ %indvars.iv.next219, %96 ] - %97 = trunc nuw nsw i64 %indvars.iv218 to i32 - %98 = add i32 %95, %97 - %99 = sext i32 %98 to i64 - %100 = getelementptr inbounds float, ptr %18, i64 %99 - %101 = load float, ptr %100, align 4, !tbaa !76 - %102 = getelementptr inbounds nuw %struct.AVComplexFloat, ptr %94, i64 %indvars.iv218 - store float %101, ptr %102, align 4, !tbaa !129 - %103 = getelementptr inbounds nuw i8, ptr %102, i64 4 - store float %101, ptr %103, align 4, !tbaa !131 - %indvars.iv.next219 = add nuw nsw i64 %indvars.iv218, 1 - %exitcond225.not = icmp eq i64 %indvars.iv.next219, %wide.trip.count224 - br i1 %exitcond225.not, label %._crit_edge, label %96, !llvm.loop !132 - -._crit_edge: ; preds = %96, %.preheader - %104 = add i32 %90, 1 - %..0128 = tail call i32 @llvm.smin.i32(i32 %.0128185, i32 %104) - %105 = tail call i32 @llvm.smax.i32(i32 %.0130184, i32 %104) - %106 = load ptr, ptr %20, align 8, !tbaa !36 - %107 = getelementptr inbounds nuw ptr, ptr %106, i64 %indvars.iv226 - store ptr %94, ptr %107, align 8, !tbaa !133 - %indvars.iv.next227 = add nuw nsw i64 %indvars.iv226, 1 - %exitcond230.not = icmp eq i64 %indvars.iv.next227, %wide.trip.count229 - br i1 %exitcond230.not, label %.thread155, label %26, !llvm.loop !135 - -.thread155: ; preds = %._crit_edge, %84, %87, %.loopexit, %83, %.preheader161 - %.0130169 = phi i32 [ 0, %.preheader161 ], [ %.0130184, %83 ], [ %.0130184, %.loopexit ], [ %105, %._crit_edge ], [ %.0130184, %84 ], [ %.0130184, %87 ] - %.0128167 = phi i32 [ 2147483647, %.preheader161 ], [ %.0128185, %83 ], [ %.0128185, %.loopexit ], [ %..0128, %._crit_edge ], [ %.0128185, %84 ], [ %.0128185, %87 ] - %.1134 = phi i32 [ 0, %.preheader161 ], [ -22, %83 ], [ -22, %.loopexit ], [ 0, %._crit_edge ], [ -22, %84 ], [ -12, %87 ] - %108 = icmp sgt i32 %6, 0 - br i1 %108, label %.lr.ph199, label %._crit_edge200 + %94 = sub i32 %.0139, %39 + %wide.trip.count221 = zext i32 %indvars.iv218 to i64 + br label %95 + +95: ; preds = %.lr.ph182, %95 + %indvars.iv215 = phi i64 [ 0, %.lr.ph182 ], [ %indvars.iv.next216, %95 ] + %96 = trunc nuw nsw i64 %indvars.iv215 to i32 + %97 = add i32 %94, %96 + %98 = sext i32 %97 to i64 + %99 = getelementptr inbounds float, ptr %18, i64 %98 + %100 = load float, ptr %99, align 4, !tbaa !76 + %101 = getelementptr inbounds nuw %struct.AVComplexFloat, ptr %93, i64 %indvars.iv215 + store float %100, ptr %101, align 4, !tbaa !129 + %102 = getelementptr inbounds nuw i8, ptr %101, i64 4 + store float %100, ptr %102, align 4, !tbaa !131 + %indvars.iv.next216 = add nuw nsw i64 %indvars.iv215, 1 + %exitcond222.not = icmp eq i64 %indvars.iv.next216, %wide.trip.count221 + br i1 %exitcond222.not, label %._crit_edge, label %95, !llvm.loop !132 + +._crit_edge: ; preds = %95, %.preheader + %103 = add i32 %89, 1 + %..0128 = tail call i32 @llvm.smin.i32(i32 %.0128185, i32 %103) + %104 = tail call i32 @llvm.smax.i32(i32 %.0130184, i32 %103) + %105 = load ptr, ptr %20, align 8, !tbaa !36 + %106 = getelementptr inbounds nuw ptr, ptr %105, i64 %indvars.iv223 + store ptr %93, ptr %106, align 8, !tbaa !133 + %indvars.iv.next224 = add nuw nsw i64 %indvars.iv223, 1 + %exitcond227.not = icmp eq i64 %indvars.iv.next224, %wide.trip.count226 + br i1 %exitcond227.not, label %.thread155, label %26, !llvm.loop !135 + +.thread155: ; preds = %._crit_edge, %83, %86, %.loopexit, %81, %.preheader161 + %.0130169 = phi i32 [ 0, %.preheader161 ], [ %.0130184, %81 ], [ %.0130184, %.loopexit ], [ %104, %._crit_edge ], [ %.0130184, %83 ], [ %.0130184, %86 ] + %.0128167 = phi i32 [ 2147483647, %.preheader161 ], [ %.0128185, %81 ], [ %.0128185, %.loopexit ], [ %..0128, %._crit_edge ], [ %.0128185, %83 ], [ %.0128185, %86 ] + %.1134 = phi i32 [ 0, %.preheader161 ], [ -22, %81 ], [ -22, %.loopexit ], [ 0, %._crit_edge ], [ -22, %83 ], [ -12, %86 ] + %107 = icmp sgt i32 %6, 0 + br i1 %107, label %.lr.ph199, label %._crit_edge200 .lr.ph199: ; preds = %.thread155 - %109 = getelementptr inbounds nuw i8, ptr %4, i64 300 - %wide.trip.count234 = zext nneg i32 %6 to i64 - br label %110 + %108 = getelementptr inbounds nuw i8, ptr %4, i64 300 + %wide.trip.count231 = zext nneg i32 %6 to i64 + br label %109 -._crit_edge200: ; preds = %110, %.thread155 +._crit_edge200: ; preds = %109, %.thread155 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 48, ptr noundef nonnull @.str.14, i32 noundef %.0128167) #13 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 48, ptr noundef nonnull @.str.15, i32 noundef %.0130169) #13 call void @av_freep(ptr noundef nonnull %2) #13 - br label %116 - -110: ; preds = %.lr.ph199, %110 - %indvars.iv231 = phi i64 [ 0, %.lr.ph199 ], [ %indvars.iv.next232, %110 ] - %111 = load i32, ptr %109, align 4, !tbaa !93 - %112 = add i32 %111, 2147483647 - %113 = trunc nuw nsw i64 %indvars.iv231 to i32 - %114 = and i32 %112, %113 - %115 = getelementptr inbounds nuw i32, ptr %16, i64 %indvars.iv231 - store i32 %114, ptr %115, align 4, !tbaa !62 - %indvars.iv.next232 = add nuw nsw i64 %indvars.iv231, 1 - %exitcond235.not = icmp eq i64 %indvars.iv.next232, %wide.trip.count234 - br i1 %exitcond235.not, label %._crit_edge200, label %110, !llvm.loop !136 - -116: ; preds = %1, %._crit_edge200 + br label %115 + +109: ; preds = %.lr.ph199, %109 + %indvars.iv228 = phi i64 [ 0, %.lr.ph199 ], [ %indvars.iv.next229, %109 ] + %110 = load i32, ptr %108, align 4, !tbaa !93 + %111 = add i32 %110, 2147483647 + %112 = trunc nuw nsw i64 %indvars.iv228 to i32 + %113 = and i32 %111, %112 + %114 = getelementptr inbounds nuw i32, ptr %16, i64 %indvars.iv228 + store i32 %113, ptr %114, align 4, !tbaa !62 + %indvars.iv.next229 = add nuw nsw i64 %indvars.iv228, 1 + %exitcond232.not = icmp eq i64 %indvars.iv.next229, %wide.trip.count231 + br i1 %exitcond232.not, label %._crit_edge200, label %109, !llvm.loop !136 + +115: ; preds = %1, %._crit_edge200 %.0127 = phi i32 [ %.1134, %._crit_edge200 ], [ -12, %1 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #13 ret i32 %.0127 diff --git a/bench/ffmpeg/optimized/cbs.ll b/bench/ffmpeg/optimized/cbs.ll index 7e72b6d41aa..e6b1e9d927c 100644 --- a/bench/ffmpeg/optimized/cbs.ll +++ b/bench/ffmpeg/optimized/cbs.ll @@ -1955,122 +1955,106 @@ define range(i32 -12, 1) i32 @ff_cbs_insert_unit_content(ptr noundef captures(no unreachable 16: ; preds = %12 - %17 = tail call fastcc i32 @cbs_insert_unit(ptr noundef nonnull %0, i32 noundef %.019) - %18 = icmp slt i32 %17, 0 - br i1 %18, label %29, label %19 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 36 + %18 = load i32, ptr %17, align 4, !tbaa !42 + %19 = icmp slt i32 %14, %18 + br i1 %19, label %20, label %31 -19: ; preds = %16 - %.not24 = icmp eq ptr %4, null - br i1 %.not24, label %22, label %20 - -20: ; preds = %19 - %21 = tail call ptr @av_refstruct_ref(ptr noundef nonnull %4) #10 - br label %22 +20: ; preds = %16 + %21 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %22 = load ptr, ptr %21, align 8, !tbaa !38 + %23 = icmp samesign ult i32 %.019, %14 + br i1 %23, label %24, label %61 -22: ; preds = %20, %19 - %.020 = phi ptr [ %21, %20 ], [ null, %19 ] - %23 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %24 = load ptr, ptr %23, align 8, !tbaa !38 +24: ; preds = %20 %25 = zext nneg i32 %.019 to i64 - %26 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %24, i64 %25 - store i32 %2, ptr %26, align 8, !tbaa !57 - %27 = getelementptr inbounds nuw i8, ptr %26, i64 40 - store ptr %3, ptr %27, align 8, !tbaa !39 - %28 = getelementptr inbounds nuw i8, ptr %26, i64 48 - store ptr %.020, ptr %28, align 8, !tbaa !109 - br label %29 - -29: ; preds = %16, %22 - ret i32 %17 -} - -; Function Attrs: nounwind uwtable -define internal fastcc range(i32 -12, 1) i32 @cbs_insert_unit(ptr noundef captures(none) %0, i32 noundef range(i32 0, -2147483648) %1) unnamed_addr #3 { - %3 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %4 = load i32, ptr %3, align 8, !tbaa !34 - %5 = getelementptr inbounds nuw i8, ptr %0, i64 36 - %6 = load i32, ptr %5, align 4, !tbaa !42 - %7 = icmp slt i32 %4, %6 - br i1 %7, label %8, label %19 + %26 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %22, i64 %25 + %27 = getelementptr inbounds nuw i8, ptr %26, i64 56 + %28 = sub nuw nsw i32 %14, %.019 + %29 = zext nneg i32 %28 to i64 + %30 = mul nuw nsw i64 %29, 56 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %27, ptr align 8 %26, i64 %30, i1 false) + br label %61 + +31: ; preds = %16 + %32 = shl nuw nsw i32 %14, 1 + %33 = or disjoint i32 %32, 1 + %34 = zext nneg i32 %33 to i64 + %35 = tail call ptr @av_malloc_array(i64 noundef %34, i64 noundef 56) #10 + %.not.i = icmp eq ptr %35, null + br i1 %.not.i, label %cbs_insert_unit.exit.thread, label %36 + +36: ; preds = %31 + %37 = load i32, ptr %17, align 4, !tbaa !42 + %38 = shl nsw i32 %37, 1 + %39 = or disjoint i32 %38, 1 + store i32 %39, ptr %17, align 4, !tbaa !42 + %.not39.i = icmp eq i32 %.019, 0 + br i1 %.not39.i, label %45, label %40 + +40: ; preds = %36 + %41 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %42 = load ptr, ptr %41, align 8, !tbaa !38 + %43 = zext nneg i32 %.019 to i64 + %44 = mul nuw nsw i64 %43, 56 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %35, ptr align 8 %42, i64 %44, i1 false) + br label %45 + +45: ; preds = %40, %36 + %46 = load i32, ptr %13, align 8, !tbaa !34 + %47 = icmp slt i32 %.019, %46 + br i1 %47, label %48, label %58 -8: ; preds = %2 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %10 = load ptr, ptr %9, align 8, !tbaa !38 - %11 = icmp slt i32 %1, %4 - br i1 %11, label %12, label %49 +48: ; preds = %45 + %49 = zext nneg i32 %.019 to i64 + %50 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %35, i64 %49 + %51 = getelementptr inbounds nuw i8, ptr %50, i64 56 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %53 = load ptr, ptr %52, align 8, !tbaa !38 + %54 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %53, i64 %49 + %55 = sub nsw i32 %46, %.019 + %56 = zext nneg i32 %55 to i64 + %57 = mul nuw nsw i64 %56, 56 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %51, ptr align 8 %54, i64 %57, i1 false) + br label %58 + +58: ; preds = %48, %45 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %60 = load ptr, ptr %59, align 8, !tbaa !38 + tail call void @av_free(ptr noundef %60) #10 + store ptr %35, ptr %59, align 8, !tbaa !38 + br label %61 + +61: ; preds = %58, %24, %20 + %.0.i = phi ptr [ %22, %24 ], [ %22, %20 ], [ %35, %58 ] + %62 = zext nneg i32 %.019 to i64 + %63 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %.0.i, i64 %62 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %63, i8 0, i64 56, i1 false) + %64 = load i32, ptr %13, align 8, !tbaa !34 + %65 = add nsw i32 %64, 1 + store i32 %65, ptr %13, align 8, !tbaa !34 + %.not24 = icmp eq ptr %4, null + br i1 %.not24, label %68, label %66 -12: ; preds = %8 - %13 = zext nneg i32 %1 to i64 - %14 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %10, i64 %13 - %15 = getelementptr inbounds nuw i8, ptr %14, i64 56 - %16 = sub nsw i32 %4, %1 - %17 = sext i32 %16 to i64 - %18 = mul nsw i64 %17, 56 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %15, ptr align 8 %14, i64 %18, i1 false) - br label %49 - -19: ; preds = %2 - %20 = shl nsw i32 %4, 1 - %21 = or disjoint i32 %20, 1 - %22 = sext i32 %21 to i64 - %23 = tail call ptr @av_malloc_array(i64 noundef %22, i64 noundef 56) #10 - %.not = icmp eq ptr %23, null - br i1 %.not, label %54, label %24 - -24: ; preds = %19 - %25 = load i32, ptr %5, align 4, !tbaa !42 - %26 = shl nsw i32 %25, 1 - %27 = or disjoint i32 %26, 1 - store i32 %27, ptr %5, align 4, !tbaa !42 - %.not39 = icmp eq i32 %1, 0 - br i1 %.not39, label %33, label %28 - -28: ; preds = %24 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %30 = load ptr, ptr %29, align 8, !tbaa !38 - %31 = zext nneg i32 %1 to i64 - %32 = mul nuw nsw i64 %31, 56 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %23, ptr align 8 %30, i64 %32, i1 false) - br label %33 - -33: ; preds = %28, %24 - %34 = load i32, ptr %3, align 8, !tbaa !34 - %35 = icmp slt i32 %1, %34 - br i1 %35, label %36, label %46 - -36: ; preds = %33 - %37 = zext nneg i32 %1 to i64 - %38 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %23, i64 %37 - %39 = getelementptr inbounds nuw i8, ptr %38, i64 56 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %41 = load ptr, ptr %40, align 8, !tbaa !38 - %42 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %41, i64 %37 - %43 = sub nsw i32 %34, %1 - %44 = sext i32 %43 to i64 - %45 = mul nsw i64 %44, 56 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %39, ptr align 8 %42, i64 %45, i1 false) - br label %46 - -46: ; preds = %36, %33 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %48 = load ptr, ptr %47, align 8, !tbaa !38 - tail call void @av_free(ptr noundef %48) #10 - store ptr %23, ptr %47, align 8, !tbaa !38 - br label %49 - -49: ; preds = %8, %12, %46 - %.0 = phi ptr [ %10, %12 ], [ %10, %8 ], [ %23, %46 ] - %50 = zext nneg i32 %1 to i64 - %51 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %.0, i64 %50 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %51, i8 0, i64 56, i1 false) - %52 = load i32, ptr %3, align 8, !tbaa !34 - %53 = add nsw i32 %52, 1 - store i32 %53, ptr %3, align 8, !tbaa !34 - br label %54 +66: ; preds = %61 + %67 = tail call ptr @av_refstruct_ref(ptr noundef nonnull %4) #10 + br label %68 -54: ; preds = %19, %49 - %.033 = phi i32 [ 0, %49 ], [ -12, %19 ] - ret i32 %.033 +68: ; preds = %66, %61 + %.020 = phi ptr [ %67, %66 ], [ null, %61 ] + %69 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %70 = load ptr, ptr %69, align 8, !tbaa !38 + %71 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %70, i64 %62 + store i32 %2, ptr %71, align 8, !tbaa !57 + %72 = getelementptr inbounds nuw i8, ptr %71, i64 40 + store ptr %3, ptr %72, align 8, !tbaa !39 + %73 = getelementptr inbounds nuw i8, ptr %71, i64 48 + store ptr %.020, ptr %73, align 8, !tbaa !109 + br label %cbs_insert_unit.exit.thread + +cbs_insert_unit.exit.thread: ; preds = %31, %68 + %.0 = phi i32 [ 0, %68 ], [ -12, %31 ] + ret i32 %.0 } declare ptr @av_refstruct_ref(ptr noundef) local_unnamed_addr #2 @@ -2111,30 +2095,103 @@ define range(i32 -12, 1) i32 @ff_cbs_append_unit_data(ptr noundef captures(none) 16: ; preds = %.thread.i, %12 %17 = phi ptr [ %14, %.thread.i ], [ %13, %12 ] - %18 = tail call fastcc i32 @cbs_insert_unit(ptr noundef nonnull %0, i32 noundef %8) - %19 = icmp slt i32 %18, 0 - br i1 %19, label %20, label %21 + %18 = load i32, ptr %7, align 8, !tbaa !34 + %19 = getelementptr inbounds nuw i8, ptr %0, i64 36 + %20 = load i32, ptr %19, align 4, !tbaa !42 + %21 = icmp slt i32 %18, %20 + br i1 %21, label %22, label %33 -20: ; preds = %16 +22: ; preds = %16 + %23 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %24 = load ptr, ptr %23, align 8, !tbaa !38 + %25 = icmp slt i32 %8, %18 + br i1 %25, label %26, label %64 + +26: ; preds = %22 + %27 = zext nneg i32 %8 to i64 + %28 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %24, i64 %27 + %29 = getelementptr inbounds nuw i8, ptr %28, i64 56 + %30 = sub nsw i32 %18, %8 + %31 = zext nneg i32 %30 to i64 + %32 = mul nuw nsw i64 %31, 56 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %29, ptr align 8 %28, i64 %32, i1 false) + br label %64 + +33: ; preds = %16 + %34 = shl nsw i32 %18, 1 + %35 = or disjoint i32 %34, 1 + %36 = sext i32 %35 to i64 + %37 = tail call ptr @av_malloc_array(i64 noundef %36, i64 noundef 56) #10 + %.not.i.i = icmp eq ptr %37, null + br i1 %.not.i.i, label %63, label %38 + +38: ; preds = %33 + %39 = load i32, ptr %19, align 4, !tbaa !42 + %40 = shl nsw i32 %39, 1 + %41 = or disjoint i32 %40, 1 + store i32 %41, ptr %19, align 4, !tbaa !42 + %.not39.i.i = icmp eq i32 %8, 0 + br i1 %.not39.i.i, label %47, label %42 + +42: ; preds = %38 + %43 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %44 = load ptr, ptr %43, align 8, !tbaa !38 + %45 = zext nneg i32 %8 to i64 + %46 = mul nuw nsw i64 %45, 56 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %37, ptr align 8 %44, i64 %46, i1 false) + br label %47 + +47: ; preds = %42, %38 + %48 = load i32, ptr %7, align 8, !tbaa !34 + %49 = icmp slt i32 %8, %48 + br i1 %49, label %50, label %60 + +50: ; preds = %47 + %51 = zext nneg i32 %8 to i64 + %52 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %37, i64 %51 + %53 = getelementptr inbounds nuw i8, ptr %52, i64 56 + %54 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %55 = load ptr, ptr %54, align 8, !tbaa !38 + %56 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %55, i64 %51 + %57 = sub nsw i32 %48, %8 + %58 = zext nneg i32 %57 to i64 + %59 = mul nuw nsw i64 %58, 56 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %53, ptr align 8 %56, i64 %59, i1 false) + br label %60 + +60: ; preds = %50, %47 + %61 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %62 = load ptr, ptr %61, align 8, !tbaa !38 + tail call void @av_free(ptr noundef %62) #10 + store ptr %37, ptr %61, align 8, !tbaa !38 + br label %64 + +63: ; preds = %33 call void @av_buffer_unref(ptr noundef nonnull %6) #10 br label %cbs_insert_unit_data.exit -21: ; preds = %16 - %22 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %23 = load ptr, ptr %22, align 8, !tbaa !38 - %24 = zext nneg i32 %8 to i64 - %25 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %23, i64 %24 - store i32 %1, ptr %25, align 8, !tbaa !57 - %26 = getelementptr inbounds nuw i8, ptr %25, i64 8 - store ptr %2, ptr %26, align 8, !tbaa !60 - %27 = getelementptr inbounds nuw i8, ptr %25, i64 16 - store i64 %3, ptr %27, align 8, !tbaa !93 - %28 = getelementptr inbounds nuw i8, ptr %25, i64 32 - store ptr %17, ptr %28, align 8, !tbaa !61 +64: ; preds = %60, %26, %22 + %.0.i.i = phi ptr [ %24, %26 ], [ %24, %22 ], [ %37, %60 ] + %65 = zext nneg i32 %8 to i64 + %66 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %.0.i.i, i64 %65 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %66, i8 0, i64 56, i1 false) + %67 = load i32, ptr %7, align 8, !tbaa !34 + %68 = add nsw i32 %67, 1 + store i32 %68, ptr %7, align 8, !tbaa !34 + %69 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %70 = load ptr, ptr %69, align 8, !tbaa !38 + %71 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %70, i64 %65 + store i32 %1, ptr %71, align 8, !tbaa !57 + %72 = getelementptr inbounds nuw i8, ptr %71, i64 8 + store ptr %2, ptr %72, align 8, !tbaa !60 + %73 = getelementptr inbounds nuw i8, ptr %71, i64 16 + store i64 %3, ptr %73, align 8, !tbaa !93 + %74 = getelementptr inbounds nuw i8, ptr %71, i64 32 + store ptr %17, ptr %74, align 8, !tbaa !61 br label %cbs_insert_unit_data.exit -cbs_insert_unit_data.exit: ; preds = %.thread.i, %15, %20, %21 - %.0.i = phi i32 [ %18, %20 ], [ 0, %21 ], [ -12, %15 ], [ -12, %.thread.i ] +cbs_insert_unit_data.exit: ; preds = %.thread.i, %15, %63, %64 + %.0.i = phi i32 [ -12, %63 ], [ 0, %64 ], [ -12, %15 ], [ -12, %.thread.i ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10 ret i32 %.0.i } diff --git a/bench/ffmpeg/optimized/mvdec.ll b/bench/ffmpeg/optimized/mvdec.ll index fcd5e603626..8e445700f10 100644 --- a/bench/ffmpeg/optimized/mvdec.ll +++ b/bench/ffmpeg/optimized/mvdec.ll @@ -788,7 +788,7 @@ define internal range(i32 -1094995529, 1) i32 @parse_global_var(ptr noundef %0, 18: ; preds = %15 %19 = sub nsw i32 %3, %16 - %20 = sext i32 %19 to i64 + %20 = zext nneg i32 %19 to i64 %21 = tail call i64 @avio_skip(ptr noundef %8, i64 noundef %20) #8 br label %var_read_string.exit.i @@ -826,7 +826,7 @@ var_read_int.exit: ; preds = %10, %11, %var_read_ 34: ; preds = %31 %35 = sub nsw i32 %3, %32 - %36 = sext i32 %35 to i64 + %36 = zext nneg i32 %35 to i64 %37 = tail call i64 @avio_skip(ptr noundef %8, i64 noundef %36) #8 br label %var_read_string.exit.i28 @@ -870,7 +870,7 @@ var_read_int.exit30: ; preds = %26, %27, %var_read_ 53: ; preds = %50 %54 = sub nsw i32 %3, %51 - %55 = sext i32 %54 to i64 + %55 = zext nneg i32 %54 to i64 %56 = tail call i64 @avio_skip(ptr noundef %8, i64 noundef %55) #8 br label %var_read_string.exit.i33 @@ -932,7 +932,7 @@ define internal range(i32 -1094995529, 1) i32 @parse_audio_var(ptr noundef %0, p 18: ; preds = %15 %19 = sub nsw i32 %3, %16 - %20 = sext i32 %19 to i64 + %20 = zext nneg i32 %19 to i64 %21 = tail call i64 @avio_skip(ptr noundef %8, i64 noundef %20) #8 br label %var_read_string.exit.i @@ -972,7 +972,7 @@ var_read_int.exit: ; preds = %10, %11, %var_read_ 35: ; preds = %32 %36 = sub nsw i32 %3, %33 - %37 = sext i32 %36 to i64 + %37 = zext nneg i32 %36 to i64 %38 = tail call i64 @avio_skip(ptr noundef %8, i64 noundef %37) #8 br label %var_read_string.exit.i54 @@ -1011,7 +1011,7 @@ var_read_int.exit56: ; preds = %27, %28, %var_read_ 52: ; preds = %49 %53 = sub nsw i32 %3, %50 - %54 = sext i32 %53 to i64 + %54 = zext nneg i32 %53 to i64 %55 = tail call i64 @avio_skip(ptr noundef %8, i64 noundef %54) #8 br label %var_read_string.exit.i59 @@ -1050,7 +1050,7 @@ var_read_int.exit61: ; preds = %44, %45, %var_read_ 69: ; preds = %66 %70 = sub nsw i32 %3, %67 - %71 = sext i32 %70 to i64 + %71 = zext nneg i32 %70 to i64 %72 = tail call i64 @avio_skip(ptr noundef %8, i64 noundef %71) #8 br label %var_read_string.exit.i64 @@ -1082,7 +1082,7 @@ var_read_string.exit.i64: ; preds = %69, %66 85: ; preds = %82 %86 = sub nsw i32 %3, %83 - %87 = sext i32 %86 to i64 + %87 = zext nneg i32 %86 to i64 %88 = tail call i64 @avio_skip(ptr noundef %8, i64 noundef %87) #8 br label %var_read_int.exit69 @@ -1128,7 +1128,7 @@ var_read_int.exit69.thread: ; preds = %78, %77, %var_read_ 106: ; preds = %103 %107 = sub nsw i32 %3, %104 - %108 = sext i32 %107 to i64 + %108 = zext nneg i32 %107 to i64 %109 = tail call i64 @avio_skip(ptr noundef %8, i64 noundef %108) #8 br label %var_read_int.exit75 @@ -1170,7 +1170,7 @@ var_read_int.exit75: ; preds = %103, %106 127: ; preds = %124 %128 = sub nsw i32 %3, %125 - %129 = sext i32 %128 to i64 + %129 = zext nneg i32 %128 to i64 %130 = tail call i64 @avio_skip(ptr noundef %8, i64 noundef %129) #8 br label %var_read_int.exit80 @@ -1222,7 +1222,7 @@ define internal range(i32 -1094995529, 1) i32 @parse_video_var(ptr noundef %0, p 16: ; preds = %13 %17 = sub nsw i32 %3, %14 - %18 = sext i32 %17 to i64 + %18 = zext nneg i32 %17 to i64 %19 = tail call i64 @avio_skip(ptr noundef %6, i64 noundef %18) #8 br label %var_read_string.exit.i @@ -1264,7 +1264,7 @@ var_read_int.exit: ; preds = %8, %9, %var_read_st 34: ; preds = %31 %35 = sub nsw i32 %3, %32 - %36 = sext i32 %35 to i64 + %36 = zext nneg i32 %35 to i64 %37 = tail call i64 @avio_skip(ptr noundef %6, i64 noundef %36) #8 br label %sub_0 @@ -1379,7 +1379,7 @@ sub_1121: ; preds = %var_read_string.exi 87: ; preds = %84 %88 = sub nsw i32 %3, %85 - %89 = sext i32 %88 to i64 + %89 = zext nneg i32 %88 to i64 %90 = tail call i64 @avio_skip(ptr noundef %6, i64 noundef %89) #8 br label %var_read_string.exit.i85 @@ -1424,7 +1424,7 @@ var_read_float.exit: ; preds = %79, %80, %var_read_ 104: ; preds = %101 %105 = sub nsw i32 %3, %102 - %106 = sext i32 %105 to i64 + %106 = zext nneg i32 %105 to i64 %107 = tail call i64 @avio_skip(ptr noundef %6, i64 noundef %106) #8 br label %var_read_string.exit.i88 @@ -1466,7 +1466,7 @@ var_read_int.exit90: ; preds = %96, %97, %var_read_ 124: ; preds = %121 %125 = sub nsw i32 %3, %122 - %126 = sext i32 %125 to i64 + %126 = zext nneg i32 %125 to i64 %127 = tail call i64 @avio_skip(ptr noundef %6, i64 noundef %126) #8 br label %var_read_string.exit.i93 @@ -1509,7 +1509,7 @@ var_read_float.exit95: ; preds = %115, %117, %var_rea 144: ; preds = %141 %145 = sub nsw i32 %3, %142 - %146 = sext i32 %145 to i64 + %146 = zext nneg i32 %145 to i64 %147 = tail call i64 @avio_skip(ptr noundef %6, i64 noundef %146) #8 br label %var_read_string.exit.i98 @@ -1550,7 +1550,7 @@ var_read_int.exit100: ; preds = %136, %137, %var_rea 163: ; preds = %160 %164 = sub nsw i32 %3, %161 - %165 = sext i32 %164 to i64 + %165 = zext nneg i32 %164 to i64 %166 = tail call i64 @avio_skip(ptr noundef %6, i64 noundef %165) #8 br label %var_read_int.exit105 @@ -1610,7 +1610,7 @@ var_read_int.exit105: ; preds = %160, %163 193: ; preds = %190 %194 = sub nsw i32 %3, %191 - %195 = sext i32 %194 to i64 + %195 = zext nneg i32 %194 to i64 %196 = tail call i64 @avio_skip(ptr noundef %6, i64 noundef %195) #8 br label %var_read_string.exit.i108 diff --git a/bench/ffmpeg/optimized/network.ll b/bench/ffmpeg/optimized/network.ll index 01e9271bf58..1bccb02d2f4 100644 --- a/bench/ffmpeg/optimized/network.ll +++ b/bench/ffmpeg/optimized/network.ll @@ -1222,83 +1222,87 @@ define range(i32 0, 2) i32 @ff_http_match_no_proxy(ptr noundef %0, ptr noundef r %.not = icmp eq ptr %0, null %.not27 = icmp eq ptr %1, null %or.cond = or i1 %.not, %.not27 - br i1 %or.cond, label %35, label %3 + br i1 %or.cond, label %36, label %3 3: ; preds = %2 %4 = tail call noalias ptr @av_strdup(ptr noundef nonnull %0) #12 %.not28 = icmp eq ptr %4, null - br i1 %.not28, label %35, label %.preheader + br i1 %.not28, label %36, label %.preheader -select.unfold: ; preds = %.tail.thread.i, %31, %24 - %.not29 = icmp eq ptr %.0, null - br i1 %.not29, label %match_host_pattern.exit.thread, label %.preheader - -.preheader: ; preds = %3, %select.unfold - %.02236 = phi ptr [ %.0, %select.unfold ], [ %4, %3 ] - %5 = tail call i64 @strspn(ptr noundef nonnull %.02236, ptr noundef nonnull @.str.14) #15 - %6 = getelementptr inbounds nuw i8, ptr %.02236, i64 %5 - %7 = tail call i64 @strcspn(ptr noundef nonnull %6, ptr noundef nonnull @.str.14) #15 - %8 = getelementptr inbounds nuw i8, ptr %6, i64 %7 - %9 = load i8, ptr %8, align 1, !tbaa !18 - %.not30 = icmp eq i8 %9, 0 - br i1 %.not30, label %12, label %10 - -10: ; preds = %.preheader - %11 = getelementptr inbounds nuw i8, ptr %8, i64 1 - store i8 0, ptr %8, align 1, !tbaa !18 - br label %12 +.preheader: ; preds = %3 + %invariant.gep = getelementptr i8, ptr %1, i64 -1 + br label %5 -12: ; preds = %10, %.preheader - %.0 = phi ptr [ %11, %10 ], [ null, %.preheader ] - %13 = load i8, ptr %6, align 1 - %.not22.i = icmp eq i8 %13, 42 +select.unfold: ; preds = %.tail.thread.i, %32, %25 + %.not29 = icmp eq ptr %.0, null + br i1 %.not29, label %match_host_pattern.exit.thread, label %5 + +5: ; preds = %.preheader, %select.unfold + %.02236 = phi ptr [ %4, %.preheader ], [ %.0, %select.unfold ] + %6 = tail call i64 @strspn(ptr noundef nonnull %.02236, ptr noundef nonnull @.str.14) #15 + %7 = getelementptr inbounds nuw i8, ptr %.02236, i64 %6 + %8 = tail call i64 @strcspn(ptr noundef nonnull %7, ptr noundef nonnull @.str.14) #15 + %9 = getelementptr inbounds nuw i8, ptr %7, i64 %8 + %10 = load i8, ptr %9, align 1, !tbaa !18 + %.not30 = icmp eq i8 %10, 0 + br i1 %.not30, label %13, label %11 + +11: ; preds = %5 + %12 = getelementptr inbounds nuw i8, ptr %9, i64 1 + store i8 0, ptr %9, align 1, !tbaa !18 + br label %13 + +13: ; preds = %11, %5 + %.0 = phi ptr [ %12, %11 ], [ null, %5 ] + %14 = load i8, ptr %7, align 1 + %.not22.i = icmp eq i8 %14, 42 br i1 %.not22.i, label %.tail.i, label %.tail.thread.i -.tail.i: ; preds = %12 - %14 = getelementptr inbounds nuw i8, ptr %6, i64 1 - %15 = load i8, ptr %14, align 1 - %16 = icmp eq i8 %15, 0 - br i1 %16, label %match_host_pattern.exit.thread, label %.tail.thread.i +.tail.i: ; preds = %13 + %15 = getelementptr inbounds nuw i8, ptr %7, i64 1 + %16 = load i8, ptr %15, align 1 + %17 = icmp eq i8 %16, 0 + br i1 %17, label %match_host_pattern.exit.thread, label %.tail.thread.i -.tail.thread.i: ; preds = %.tail.i, %12 +.tail.thread.i: ; preds = %.tail.i, %13 %spec.select.idx.i = zext i1 %.not22.i to i64 - %spec.select.i = getelementptr inbounds nuw i8, ptr %6, i64 %spec.select.idx.i - %17 = load i8, ptr %spec.select.i, align 1, !tbaa !18 - %18 = icmp eq i8 %17, 46 - %.1.idx.i = zext i1 %18 to i64 + %spec.select.i = getelementptr inbounds nuw i8, ptr %7, i64 %spec.select.idx.i + %18 = load i8, ptr %spec.select.i, align 1, !tbaa !18 + %19 = icmp eq i8 %18, 46 + %.1.idx.i = zext i1 %19 to i64 %.1.i = getelementptr inbounds nuw i8, ptr %spec.select.i, i64 %.1.idx.i - %19 = tail call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %.1.i) #15 - %20 = trunc i64 %19 to i32 - %21 = tail call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %1) #15 - %22 = trunc i64 %21 to i32 - %23 = icmp sgt i32 %20, %22 - br i1 %23, label %select.unfold, label %24 - -24: ; preds = %.tail.thread.i - %25 = sub i64 %21, %19 - %sext.i = shl i64 %25, 32 - %26 = ashr exact i64 %sext.i, 32 - %27 = getelementptr inbounds i8, ptr %1, i64 %26 - %28 = tail call i32 @strcmp(ptr noundef nonnull readonly dereferenceable(1) %.1.i, ptr noundef nonnull readonly dereferenceable(1) %27) #15 - %.not21.i = icmp eq i32 %28, 0 - br i1 %.not21.i, label %29, label %select.unfold - -29: ; preds = %24 - %30 = icmp eq i32 %22, %20 - br i1 %30, label %match_host_pattern.exit.thread, label %31 - -31: ; preds = %29 - %32 = getelementptr i8, ptr %27, i64 -1 - %33 = load i8, ptr %32, align 1, !tbaa !18 - %34 = icmp eq i8 %33, 46 - br i1 %34, label %match_host_pattern.exit.thread, label %select.unfold - -match_host_pattern.exit.thread: ; preds = %31, %29, %.tail.i, %select.unfold - %.1 = phi i32 [ 0, %select.unfold ], [ 1, %.tail.i ], [ 1, %29 ], [ 1, %31 ] + %20 = tail call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %.1.i) #15 + %21 = trunc i64 %20 to i32 + %22 = tail call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %1) #15 + %23 = trunc i64 %22 to i32 + %24 = icmp sgt i32 %21, %23 + br i1 %24, label %select.unfold, label %25 + +25: ; preds = %.tail.thread.i + %26 = sub nsw i32 %23, %21 + %27 = zext nneg i32 %26 to i64 + %28 = getelementptr inbounds nuw i8, ptr %1, i64 %27 + %29 = tail call i32 @strcmp(ptr noundef nonnull readonly dereferenceable(1) %.1.i, ptr noundef nonnull readonly dereferenceable(1) %28) #15 + %.not21.i = icmp eq i32 %29, 0 + br i1 %.not21.i, label %30, label %select.unfold + +30: ; preds = %25 + %31 = icmp eq i32 %23, %21 + br i1 %31, label %match_host_pattern.exit.thread, label %32 + +32: ; preds = %30 + %33 = sext i32 %26 to i64 + %gep = getelementptr i8, ptr %invariant.gep, i64 %33 + %34 = load i8, ptr %gep, align 1, !tbaa !18 + %35 = icmp eq i8 %34, 46 + br i1 %35, label %match_host_pattern.exit.thread, label %select.unfold + +match_host_pattern.exit.thread: ; preds = %32, %30, %.tail.i, %select.unfold + %.1 = phi i32 [ 0, %select.unfold ], [ 1, %.tail.i ], [ 1, %30 ], [ 1, %32 ] tail call void @av_free(ptr noundef nonnull %4) #12 - br label %35 + br label %36 -35: ; preds = %3, %2, %match_host_pattern.exit.thread +36: ; preds = %3, %2, %match_host_pattern.exit.thread %.019 = phi i32 [ %.1, %match_host_pattern.exit.thread ], [ 0, %2 ], [ 0, %3 ] ret i32 %.019 } diff --git a/bench/ffmpeg/optimized/vf_atadenoise.ll b/bench/ffmpeg/optimized/vf_atadenoise.ll index 803b7ae91fa..306b0d1e14b 100644 --- a/bench/ffmpeg/optimized/vf_atadenoise.ll +++ b/bench/ffmpeg/optimized/vf_atadenoise.ll @@ -570,7 +570,7 @@ define internal range(i32 -2147483648, 1) i32 @config_input(ptr noundef readonly %exitcond123.not = icmp eq i64 %indvars.iv.next120, %wide.trip.count122 br i1 %exitcond123.not, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !72 -._crit_edge: ; preds = %124, %69, %.preheader +._crit_edge: ; preds = %125, %69, %.preheader %70 = getelementptr inbounds nuw i8, ptr %8, i64 8 %71 = load float, ptr %70, align 8, !tbaa !69 %72 = shl nuw i32 1, %42 @@ -622,9 +622,10 @@ define internal range(i32 -2147483648, 1) i32 @config_input(ptr noundef readonly br i1 %.not107, label %.lr.ph114.split.us.preheader, label %.lr.ph110.preheader .lr.ph110.preheader: ; preds = %.lr.ph114 - %108 = add nuw i32 %103, 1 + %108 = zext nneg i32 %103 to i64 + %109 = add nuw i32 %103, 1 %wide.trip.count132 = zext nneg i32 %49 to i64 - %wide.trip.count127 = zext i32 %108 to i64 + %wide.trip.count127 = zext i32 %109 to i64 br label %.lr.ph110 .lr.ph114.split.us.preheader: ; preds = %.lr.ph114 @@ -633,80 +634,80 @@ define internal range(i32 -2147483648, 1) i32 @config_input(ptr noundef readonly .lr.ph114.split.us: ; preds = %.lr.ph114.split.us.preheader, %.lr.ph114.split.us %indvars.iv134 = phi i64 [ 0, %.lr.ph114.split.us.preheader ], [ %indvars.iv.next135, %.lr.ph114.split.us ] - %109 = getelementptr inbounds [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv134, i64 %107 - store float 1.000000e+00, ptr %109, align 4, !tbaa !69 + %110 = getelementptr inbounds [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv134, i64 %107 + store float 1.000000e+00, ptr %110, align 4, !tbaa !69 %indvars.iv.next135 = add nuw nsw i64 %indvars.iv134, 1 %exitcond138.not = icmp eq i64 %indvars.iv.next135, %wide.trip.count137 br i1 %exitcond138.not, label %.loopexit, label %.lr.ph114.split.us, !llvm.loop !73 -.lr.ph.split: ; preds = %.lr.ph, %124 - %indvars.iv = phi i64 [ %indvars.iv.next, %124 ], [ 0, %.lr.ph ] - %110 = getelementptr inbounds nuw [4 x float], ptr %52, i64 0, i64 %indvars.iv - %111 = load float, ptr %110, align 4, !tbaa !69 - %112 = fcmp nsz oeq float %111, 3.276700e+04 - br i1 %112, label %113, label %117 - -113: ; preds = %.lr.ph.split - %114 = load i32, ptr %53, align 8, !tbaa !71 - %115 = icmp eq i32 %114, 0 - %116 = select i1 %115, ptr @filter_row16, ptr @filter_row16_serial +.lr.ph.split: ; preds = %.lr.ph, %125 + %indvars.iv = phi i64 [ %indvars.iv.next, %125 ], [ 0, %.lr.ph ] + %111 = getelementptr inbounds nuw [4 x float], ptr %52, i64 0, i64 %indvars.iv + %112 = load float, ptr %111, align 4, !tbaa !69 + %113 = fcmp nsz oeq float %112, 3.276700e+04 + br i1 %113, label %114, label %118 + +114: ; preds = %.lr.ph.split + %115 = load i32, ptr %53, align 8, !tbaa !71 + %116 = icmp eq i32 %115, 0 + %117 = select i1 %116, ptr @filter_row16, ptr @filter_row16_serial br label %.sink.split142 -117: ; preds = %.lr.ph.split - %118 = fcmp nsz olt float %111, 3.276700e+04 - br i1 %118, label %119, label %124 +118: ; preds = %.lr.ph.split + %119 = fcmp nsz olt float %112, 3.276700e+04 + br i1 %119, label %120, label %125 -119: ; preds = %117 - %120 = load i32, ptr %53, align 8, !tbaa !71 - %121 = icmp eq i32 %120, 0 - %122 = select i1 %121, ptr @fweight_row16, ptr @fweight_row16_serial +120: ; preds = %118 + %121 = load i32, ptr %53, align 8, !tbaa !71 + %122 = icmp eq i32 %121, 0 + %123 = select i1 %122, ptr @fweight_row16, ptr @fweight_row16_serial br label %.sink.split142 -.sink.split142: ; preds = %113, %119 - %.sink143 = phi ptr [ %122, %119 ], [ %116, %113 ] - %123 = getelementptr inbounds nuw [4 x ptr], ptr %54, i64 0, i64 %indvars.iv - store ptr %.sink143, ptr %123, align 8, !tbaa !53 - br label %124 +.sink.split142: ; preds = %114, %120 + %.sink143 = phi ptr [ %123, %120 ], [ %117, %114 ] + %124 = getelementptr inbounds nuw [4 x ptr], ptr %54, i64 0, i64 %indvars.iv + store ptr %.sink143, ptr %124, align 8, !tbaa !53 + br label %125 -124: ; preds = %.sink.split142, %117 +125: ; preds = %.sink.split142, %118 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count122 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !72 .lr.ph110: ; preds = %.lr.ph110.preheader, %._crit_edge111 %indvars.iv129 = phi i64 [ 0, %.lr.ph110.preheader ], [ %indvars.iv.next130, %._crit_edge111 ] - %125 = getelementptr inbounds nuw [4 x float], ptr %105, i64 0, i64 %indvars.iv129 - %126 = load float, ptr %125, align 4, !tbaa !69 - %127 = fmul nsz float %126, %104 - %128 = getelementptr inbounds nuw [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv129, i64 %107 - store float 1.000000e+00, ptr %128, align 4, !tbaa !69 - %129 = fmul nsz float %127, %127 - %130 = fpext nsz float %129 to double - br label %131 - -._crit_edge111: ; preds = %131 + %126 = getelementptr inbounds nuw [4 x float], ptr %105, i64 0, i64 %indvars.iv129 + %127 = load float, ptr %126, align 4, !tbaa !69 + %128 = fmul nsz float %127, %104 + %129 = getelementptr inbounds nuw [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv129, i64 %107 + store float 1.000000e+00, ptr %129, align 4, !tbaa !69 + %130 = fmul nsz float %128, %128 + %131 = fpext nsz float %130 to double + br label %132 + +._crit_edge111: ; preds = %132 %indvars.iv.next130 = add nuw nsw i64 %indvars.iv129, 1 %exitcond133.not = icmp eq i64 %indvars.iv.next130, %wide.trip.count132 br i1 %exitcond133.not, label %.loopexit, label %.lr.ph110, !llvm.loop !73 -131: ; preds = %.lr.ph110, %131 - %indvars.iv124 = phi i64 [ 1, %.lr.ph110 ], [ %indvars.iv.next125, %131 ] +132: ; preds = %.lr.ph110, %132 + %indvars.iv124 = phi i64 [ 1, %.lr.ph110 ], [ %indvars.iv.next125, %132 ] %indvars.iv.next125 = add nuw nsw i64 %indvars.iv124, 1 - %132 = trunc nsw i64 %indvars.iv.next125 to i32 - %133 = uitofp nneg i32 %132 to double - %134 = fmul nsz double %133, -5.000000e-01 - %135 = fmul nsz double %134, %133 - %136 = fdiv nsz double %135, %130 - %137 = fptrunc nsz double %136 to float - %138 = tail call nsz float @llvm.exp.f32(float %137) - %139 = sub nsw i64 %107, %indvars.iv124 - %140 = getelementptr inbounds [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv129, i64 %139 - store float %138, ptr %140, align 4, !tbaa !69 - %141 = add nuw nsw i64 %indvars.iv124, %107 - %142 = getelementptr inbounds nuw [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv129, i64 %141 - store float %138, ptr %142, align 4, !tbaa !69 + %133 = trunc nuw i64 %indvars.iv.next125 to i32 + %134 = uitofp nneg i32 %133 to double + %135 = fmul nsz double %134, -5.000000e-01 + %136 = fmul nsz double %135, %134 + %137 = fdiv nsz double %136, %131 + %138 = fptrunc nsz double %137 to float + %139 = tail call nsz float @llvm.exp.f32(float %138) + %140 = sub nsw i64 %107, %indvars.iv124 + %141 = getelementptr inbounds nuw [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv129, i64 %140 + store float %139, ptr %141, align 4, !tbaa !69 + %142 = add nuw nsw i64 %indvars.iv124, %108 + %143 = getelementptr inbounds nuw [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv129, i64 %142 + store float %139, ptr %143, align 4, !tbaa !69 %exitcond128.not = icmp eq i64 %indvars.iv.next125, %wide.trip.count127 - br i1 %exitcond128.not, label %._crit_edge111, label %131, !llvm.loop !74 + br i1 %exitcond128.not, label %._crit_edge111, label %132, !llvm.loop !74 .loopexit: ; preds = %._crit_edge111, %.lr.ph114.split.us, %._crit_edge, %1 %.0100 = phi i32 [ %47, %1 ], [ 0, %._crit_edge ], [ 0, %.lr.ph114.split.us ], [ 0, %._crit_edge111 ] diff --git a/bench/folly/optimized/File.ll b/bench/folly/optimized/File.ll index fcd399963d9..47cf385f551 100644 --- a/bench/folly/optimized/File.ll +++ b/bench/folly/optimized/File.ll @@ -2391,7 +2391,7 @@ _ZN3fmt2v86detail14digit_groupingIcED2Ev.exit11.i: ; preds = %_ZNKSt7__cxx1112ba %165 = add i32 %115, %119 %166 = zext i32 %165 to i64 %167 = sub nsw i32 %115, %113 - %168 = zext i32 %167 to i64 + %168 = zext nneg i32 %167 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit: ; preds = %157, %159, %162, %164 @@ -2506,7 +2506,7 @@ _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit: ; %224 = add nuw i32 %188, %192 %225 = zext i32 %224 to i64 %226 = sub nsw i32 %188, %186 - %227 = zext i32 %226 to i64 + %227 = zext nneg i32 %226 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit122 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit122: ; preds = %216, %218, %221, %223 @@ -2618,7 +2618,7 @@ _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit122: %281 = add nuw i32 %245, %249 %282 = zext i32 %281 to i64 %283 = sub nsw i32 %245, %243 - %284 = zext i32 %283 to i64 + %284 = zext nneg i32 %283 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit127 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit127: ; preds = %273, %275, %278, %280 @@ -2794,7 +2794,7 @@ _ZZN3fmt2v86detail9write_intISt20back_insert_iteratorINSt7__cxx1112basic_stringI %374 = add nuw i32 %.pre, %342 %375 = zext i32 %374 to i64 %376 = sub nsw i32 %.pre, %328 - %377 = zext i32 %376 to i64 + %377 = zext nneg i32 %376 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit133 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit133: ; preds = %366, %368, %371, %373 @@ -3133,7 +3133,7 @@ _ZN3fmt2v86detail14digit_groupingIcED2Ev.exit11.i143: ; preds = %_ZNKSt7__cxx111 %549 = add i32 %499, %503 %550 = zext i32 %549 to i64 %551 = sub nsw i32 %499, %496 - %552 = zext i32 %551 to i64 + %552 = zext nneg i32 %551 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit156 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit156: ; preds = %541, %543, %546, %548 @@ -3249,7 +3249,7 @@ _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit156: %609 = add nuw i32 %573, %577 %610 = zext i32 %609 to i64 %611 = sub nsw i32 %573, %570 - %612 = zext i32 %611 to i64 + %612 = zext nneg i32 %611 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit164 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit164: ; preds = %601, %603, %606, %608 @@ -3362,7 +3362,7 @@ _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit164: %667 = add nuw i32 %631, %635 %668 = zext i32 %667 to i64 %669 = sub nsw i32 %631, %628 - %670 = zext i32 %669 to i64 + %670 = zext nneg i32 %669 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit171 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit171: ; preds = %659, %661, %664, %666 @@ -3539,7 +3539,7 @@ _ZZN3fmt2v86detail9write_intISt20back_insert_iteratorINSt7__cxx1112basic_stringI %759 = add nuw i32 %.pre446, %727 %760 = zext i32 %759 to i64 %761 = sub nsw i32 %.pre446, %714 - %762 = zext i32 %761 to i64 + %762 = zext nneg i32 %761 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit180 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit180: ; preds = %751, %753, %756, %758 @@ -5223,7 +5223,7 @@ _ZN3fmt2v86detail14digit_groupingIcED2Ev.exit11.i: ; preds = %_ZNKSt7__cxx1112ba %159 = add i32 %109, %113 %160 = zext i32 %159 to i64 %161 = sub nsw i32 %109, %107 - %162 = zext i32 %161 to i64 + %162 = zext nneg i32 %161 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit: ; preds = %151, %153, %156, %158 @@ -5338,7 +5338,7 @@ _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit: ; %218 = add nuw i32 %182, %186 %219 = zext i32 %218 to i64 %220 = sub nsw i32 %182, %180 - %221 = zext i32 %220 to i64 + %221 = zext nneg i32 %220 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit95 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit95: ; preds = %210, %212, %215, %217 @@ -5450,7 +5450,7 @@ _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit95: %275 = add nuw i32 %239, %243 %276 = zext i32 %275 to i64 %277 = sub nsw i32 %239, %237 - %278 = zext i32 %277 to i64 + %278 = zext nneg i32 %277 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit100 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit100: ; preds = %267, %269, %272, %274 @@ -5626,7 +5626,7 @@ _ZZN3fmt2v86detail9write_intISt20back_insert_iteratorINSt7__cxx1112basic_stringI %368 = add nuw i32 %.pre, %336 %369 = zext i32 %368 to i64 %370 = sub nsw i32 %.pre, %322 - %371 = zext i32 %370 to i64 + %371 = zext nneg i32 %370 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit106 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit106: ; preds = %360, %362, %365, %367 @@ -5947,7 +5947,7 @@ _ZN3fmt2v86detail14digit_groupingIcED2Ev.exit11.i113: ; preds = %_ZNKSt7__cxx111 %537 = add i32 %487, %491 %538 = zext i32 %537 to i64 %539 = sub nsw i32 %487, %484 - %540 = zext i32 %539 to i64 + %540 = zext nneg i32 %539 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit126 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit126: ; preds = %529, %531, %534, %536 @@ -6063,7 +6063,7 @@ _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit126: %597 = add nuw i32 %561, %565 %598 = zext i32 %597 to i64 %599 = sub nsw i32 %561, %558 - %600 = zext i32 %599 to i64 + %600 = zext nneg i32 %599 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit134 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit134: ; preds = %589, %591, %594, %596 @@ -6176,7 +6176,7 @@ _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit134: %655 = add nuw i32 %619, %623 %656 = zext i32 %655 to i64 %657 = sub nsw i32 %619, %616 - %658 = zext i32 %657 to i64 + %658 = zext nneg i32 %657 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit141 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit141: ; preds = %647, %649, %652, %654 @@ -6353,7 +6353,7 @@ _ZZN3fmt2v86detail9write_intISt20back_insert_iteratorINSt7__cxx1112basic_stringI %747 = add nuw i32 %.pre419, %715 %748 = zext i32 %747 to i64 %749 = sub nsw i32 %.pre419, %702 - %750 = zext i32 %749 to i64 + %750 = zext nneg i32 %749 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit150 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit150: ; preds = %739, %741, %744, %746 diff --git a/bench/git/optimized/submodule.ll b/bench/git/optimized/submodule.ll index c34c8123406..f03f5448e85 100644 --- a/bench/git/optimized/submodule.ll +++ b/bench/git/optimized/submodule.ll @@ -4539,9 +4539,8 @@ strbuf_setlen.exit: ; preds = %9, %17 41: ; preds = %32 %42 = sub i64 %33, %38 - %sext = shl i64 %42, 32 - %43 = ashr exact i64 %sext, 32 - %44 = getelementptr inbounds i8, ptr %5, i64 %43 + %43 = and i64 %42, 4294967295 + %44 = getelementptr inbounds nuw i8, ptr %5, i64 %43 %45 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %44, ptr noundef nonnull dereferenceable(1) %37) #19 %.not32 = icmp eq i32 %45, 0 br i1 %.not32, label %47, label %46 @@ -4552,7 +4551,7 @@ strbuf_setlen.exit: ; preds = %9, %17 47: ; preds = %41 %48 = call ptr @xstrdup(ptr noundef nonnull %5) #18 - %49 = getelementptr inbounds i8, ptr %48, i64 %43 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 %43 store i8 0, ptr %49, align 1, !tbaa !51 %50 = call ptr @strbuf_realpath(ptr noundef %0, ptr noundef %48, i32 noundef 1) #18 call void @free(ptr noundef %48) #18 diff --git a/bench/gromacs/optimized/do_fit.ll b/bench/gromacs/optimized/do_fit.ll index 573c557cdea..18f55d30902 100644 --- a/bench/gromacs/optimized/do_fit.ll +++ b/bench/gromacs/optimized/do_fit.ll @@ -486,8 +486,8 @@ define void @_Z10calc_fit_RiiPKfPA3_S_PA3_fS4_(i32 noundef %0, i32 noundef %1, p call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %11) #15 %13 = add i32 %0, -4 %or.cond = icmp ult i32 %13, -2 - %.sink311.sroa.gep = getelementptr inbounds nuw i8, ptr %10, i64 16 - %.sink311.sroa.gep314 = getelementptr inbounds nuw i8, ptr %10, i64 32 + %.sink316.sroa.gep = getelementptr inbounds nuw i8, ptr %10, i64 16 + %.sink316.sroa.gep319 = getelementptr inbounds nuw i8, ptr %10, i64 32 br i1 %or.cond, label %14, label %.lr.ph.preheader 14: ; preds = %6 @@ -563,8 +563,8 @@ define void @_Z10calc_fit_RiiPKfPA3_S_PA3_fS4_(i32 noundef %0, i32 noundef %1, p call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(36) %11, i8 0, i64 36, i1 false) %35 = icmp sgt i32 %1, 0 %36 = icmp sgt i32 %0, 0 - %or.cond302 = and i1 %35, %36 - br i1 %or.cond302, label %.lr.ph187.split.us.preheader, label %.preheader171.preheader + %or.cond307 = and i1 %35, %36 + br i1 %or.cond307, label %.lr.ph187.split.us.preheader, label %.preheader171.preheader .lr.ph187.split.us.preheader: ; preds = %._crit_edge %wide.trip.count243 = zext nneg i32 %1 to i64 @@ -614,16 +614,17 @@ define void @_Z10calc_fit_RiiPKfPA3_S_PA3_fS4_(i32 noundef %0, i32 noundef %1, p .preheader171.preheader: ; preds = %..loopexit_crit_edge.split.us.us, %._crit_edge %54 = zext nneg i32 %0 to i64 + %wide.trip.count265 = zext nneg i32 %18 to i64 br label %.preheader171 .preheader171: ; preds = %.preheader171.preheader, %.split.us + %indvars.iv259 = phi i64 [ 0, %.preheader171.preheader ], [ %indvars.iv.next260, %.split.us ] %indvars.iv257 = phi i64 [ 1, %.preheader171.preheader ], [ %indvars.iv.next258, %.split.us ] - %.1128189 = phi i32 [ 0, %.preheader171.preheader ], [ %76, %.split.us ] - %.not150.not = icmp slt i32 %.1128189, %0 - %55 = zext nneg i32 %.1128189 to i64 - %56 = getelementptr inbounds nuw ptr, ptr %20, i64 %55 - %57 = sub nsw i32 %.1128189, %0 - %58 = sext i32 %57 to i64 + %55 = trunc nuw i64 %indvars.iv259 to i32 + %.not150.not = icmp sgt i32 %0, %55 + %56 = getelementptr inbounds nuw ptr, ptr %20, i64 %indvars.iv259 + %57 = sub nsw i32 %55, %0 + %58 = zext nneg i32 %57 to i64 br i1 %.not150.not, label %.preheader171.split.us, label %.preheader171.split.preheader .preheader171.split.preheader: ; preds = %.preheader171 @@ -640,7 +641,7 @@ define void @_Z10calc_fit_RiiPKfPA3_S_PA3_fS4_(i32 noundef %0, i32 noundef %1, p store double 0.000000e+00, ptr %62, align 8, !tbaa !17 %63 = getelementptr inbounds nuw ptr, ptr %20, i64 %indvars.iv252 %64 = load ptr, ptr %63, align 8, !tbaa !13 - %65 = getelementptr inbounds nuw double, ptr %64, i64 %55 + %65 = getelementptr inbounds nuw double, ptr %64, i64 %indvars.iv259 store double 0.000000e+00, ptr %65, align 8, !tbaa !17 %indvars.iv.next253 = add nuw nsw i64 %indvars.iv252, 1 %exitcond256.not = icmp eq i64 %indvars.iv.next253, %indvars.iv257 @@ -652,264 +653,264 @@ define void @_Z10calc_fit_RiiPKfPA3_S_PA3_fS4_(i32 noundef %0, i32 noundef %1, p br i1 %66, label %67, label %71 67: ; preds = %.preheader171.split - %68 = getelementptr inbounds [3 x [3 x float]], ptr %11, i64 0, i64 %58, i64 %indvars.iv245 + %68 = getelementptr inbounds nuw [3 x [3 x float]], ptr %11, i64 0, i64 %58, i64 %indvars.iv245 %69 = load float, ptr %68, align 4, !tbaa !4 %70 = fpext float %69 to double br label %71 71: ; preds = %.preheader171.split, %67 - %.sink306 = phi double [ %70, %67 ], [ 0.000000e+00, %.preheader171.split ] + %.sink311 = phi double [ %70, %67 ], [ 0.000000e+00, %.preheader171.split ] %72 = getelementptr inbounds nuw double, ptr %59, i64 %indvars.iv245 - store double %.sink306, ptr %72, align 8, !tbaa !17 + store double %.sink311, ptr %72, align 8, !tbaa !17 %73 = getelementptr inbounds nuw ptr, ptr %20, i64 %indvars.iv245 %74 = load ptr, ptr %73, align 8, !tbaa !13 - %75 = getelementptr inbounds nuw double, ptr %74, i64 %55 - store double %.sink306, ptr %75, align 8, !tbaa !17 + %75 = getelementptr inbounds nuw double, ptr %74, i64 %indvars.iv259 + store double %.sink311, ptr %75, align 8, !tbaa !17 %indvars.iv.next246 = add nuw nsw i64 %indvars.iv245, 1 %exitcond251.not = icmp eq i64 %indvars.iv.next246, %indvars.iv257 br i1 %exitcond251.not, label %.split.us, label %.preheader171.split, !llvm.loop !24 .split.us: ; preds = %71, %61 - %76 = add nuw i32 %.1128189, 1 + %indvars.iv.next260 = add nuw nsw i64 %indvars.iv259, 1 %indvars.iv.next258 = add nuw nsw i64 %indvars.iv257, 1 - %exitcond261.not = icmp eq i32 %76, %18 - br i1 %exitcond261.not, label %._crit_edge190, label %.preheader171, !llvm.loop !25 + %exitcond266.not = icmp eq i64 %indvars.iv.next260, %wide.trip.count265 + br i1 %exitcond266.not, label %._crit_edge190, label %.preheader171, !llvm.loop !25 ._crit_edge190: ; preds = %.split.us call void @_Z6jacobiPPdiS_S0_Pi(ptr noundef nonnull %20, i32 noundef %18, ptr noundef nonnull %8, ptr noundef %21, ptr noundef nonnull %7) - %77 = load ptr, ptr @debug, align 8, !tbaa !26 - %78 = icmp ne ptr %77, null - %79 = load i32, ptr %7, align 4 - %80 = icmp eq i32 %79, 0 - %or.cond3 = select i1 %78, i1 %80, i1 false - br i1 %or.cond3, label %81, label %83 - -81: ; preds = %._crit_edge190 - %82 = call i64 @fwrite(ptr nonnull @.str.6, i64 7, i64 1, ptr nonnull %77) - br label %83 - -83: ; preds = %81, %._crit_edge190 - %84 = icmp sgt i32 %0, 1 - br i1 %84, label %.preheader170.lr.ph, label %._crit_edge202 - -.preheader170.lr.ph: ; preds = %83 - %85 = add nsw i32 %0, -1 - %86 = zext nneg i32 %0 to i64 - %wide.trip.count275 = zext nneg i32 %85 to i64 - %invariant.gep = getelementptr inbounds nuw ptr, ptr %21, i64 %86 + %76 = load ptr, ptr @debug, align 8, !tbaa !26 + %77 = icmp ne ptr %76, null + %78 = load i32, ptr %7, align 4 + %79 = icmp eq i32 %78, 0 + %or.cond3 = select i1 %77, i1 %79, i1 false + br i1 %or.cond3, label %80, label %82 + +80: ; preds = %._crit_edge190 + %81 = call i64 @fwrite(ptr nonnull @.str.6, i64 7, i64 1, ptr nonnull %76) + br label %82 + +82: ; preds = %80, %._crit_edge190 + %83 = icmp sgt i32 %0, 1 + br i1 %83, label %.preheader170.lr.ph, label %._crit_edge202 + +.preheader170.lr.ph: ; preds = %82 + %84 = add nsw i32 %0, -1 + %85 = zext nneg i32 %0 to i64 + %wide.trip.count280 = zext nneg i32 %84 to i64 + %invariant.gep = getelementptr inbounds nuw ptr, ptr %21, i64 %85 br label %.lr.ph194.preheader .lr.ph194.preheader: ; preds = %._crit_edge199, %.preheader170.lr.ph - %indvars.iv272 = phi i64 [ 0, %.preheader170.lr.ph ], [ %indvars.iv.next273, %._crit_edge199 ] + %indvars.iv277 = phi i64 [ 0, %.preheader170.lr.ph ], [ %indvars.iv.next278, %._crit_edge199 ] %.0132201 = phi i32 [ 0, %.preheader170.lr.ph ], [ %.2134, %._crit_edge199 ] br label %.lr.ph194 .lr.ph194: ; preds = %.lr.ph194.preheader, %.lr.ph194 - %indvars.iv262 = phi i64 [ 0, %.lr.ph194.preheader ], [ %indvars.iv.next263, %.lr.ph194 ] + %indvars.iv267 = phi i64 [ 0, %.lr.ph194.preheader ], [ %indvars.iv.next268, %.lr.ph194 ] %.0130193 = phi float [ -1.000000e+03, %.lr.ph194.preheader ], [ %.1131, %.lr.ph194 ] %.1133192 = phi i32 [ %.0132201, %.lr.ph194.preheader ], [ %.2134, %.lr.ph194 ] - %87 = getelementptr inbounds nuw [6 x double], ptr %8, i64 0, i64 %indvars.iv262 - %88 = load double, ptr %87, align 8, !tbaa !17 - %89 = fpext float %.0130193 to double - %90 = fcmp ogt double %88, %89 - %91 = fptrunc double %88 to float - %92 = trunc nuw nsw i64 %indvars.iv262 to i32 - %.2134 = select i1 %90, i32 %92, i32 %.1133192 - %.1131 = select i1 %90, float %91, float %.0130193 - %indvars.iv.next263 = add nuw nsw i64 %indvars.iv262, 1 - %exitcond266.not = icmp eq i64 %indvars.iv.next263, %19 - br i1 %exitcond266.not, label %.lr.ph198, label %.lr.ph194, !llvm.loop !28 - -.lr.ph198: ; preds = %.lr.ph194 - %93 = zext nneg i32 %.2134 to i64 - %94 = getelementptr inbounds nuw [6 x double], ptr %8, i64 0, i64 %93 - store double -1.000000e+04, ptr %94, align 8, !tbaa !17 - br label %95 - -95: ; preds = %.lr.ph198, %95 - %indvars.iv267 = phi i64 [ 0, %.lr.ph198 ], [ %indvars.iv.next268, %95 ] - %96 = getelementptr inbounds nuw ptr, ptr %21, i64 %indvars.iv267 - %97 = load ptr, ptr %96, align 8, !tbaa !13 - %98 = getelementptr inbounds nuw double, ptr %97, i64 %93 - %99 = load double, ptr %98, align 8, !tbaa !17 - %100 = fmul double %99, 0x3FF6A09E667F3BCD - %101 = fptrunc double %100 to float - %102 = getelementptr inbounds nuw [3 x [3 x float]], ptr %9, i64 0, i64 %indvars.iv272, i64 %indvars.iv267 - store float %101, ptr %102, align 4, !tbaa !4 - %gep = getelementptr inbounds nuw ptr, ptr %invariant.gep, i64 %indvars.iv267 - %103 = load ptr, ptr %gep, align 8, !tbaa !13 - %104 = getelementptr inbounds nuw double, ptr %103, i64 %93 - %105 = load double, ptr %104, align 8, !tbaa !17 - %106 = fmul double %105, 0x3FF6A09E667F3BCD - %107 = fptrunc double %106 to float - %108 = getelementptr inbounds nuw [3 x [3 x float]], ptr %10, i64 0, i64 %indvars.iv272, i64 %indvars.iv267 - store float %107, ptr %108, align 4, !tbaa !4 + %86 = getelementptr inbounds nuw [6 x double], ptr %8, i64 0, i64 %indvars.iv267 + %87 = load double, ptr %86, align 8, !tbaa !17 + %88 = fpext float %.0130193 to double + %89 = fcmp ogt double %87, %88 + %90 = fptrunc double %87 to float + %91 = trunc nuw nsw i64 %indvars.iv267 to i32 + %.2134 = select i1 %89, i32 %91, i32 %.1133192 + %.1131 = select i1 %89, float %90, float %.0130193 %indvars.iv.next268 = add nuw nsw i64 %indvars.iv267, 1 - %exitcond271.not = icmp eq i64 %indvars.iv.next268, %86 - br i1 %exitcond271.not, label %._crit_edge199, label %95, !llvm.loop !29 + %exitcond271.not = icmp eq i64 %indvars.iv.next268, %19 + br i1 %exitcond271.not, label %.lr.ph198, label %.lr.ph194, !llvm.loop !28 -._crit_edge199: ; preds = %95 +.lr.ph198: ; preds = %.lr.ph194 + %92 = zext nneg i32 %.2134 to i64 + %93 = getelementptr inbounds nuw [6 x double], ptr %8, i64 0, i64 %92 + store double -1.000000e+04, ptr %93, align 8, !tbaa !17 + br label %94 + +94: ; preds = %.lr.ph198, %94 + %indvars.iv272 = phi i64 [ 0, %.lr.ph198 ], [ %indvars.iv.next273, %94 ] + %95 = getelementptr inbounds nuw ptr, ptr %21, i64 %indvars.iv272 + %96 = load ptr, ptr %95, align 8, !tbaa !13 + %97 = getelementptr inbounds nuw double, ptr %96, i64 %92 + %98 = load double, ptr %97, align 8, !tbaa !17 + %99 = fmul double %98, 0x3FF6A09E667F3BCD + %100 = fptrunc double %99 to float + %101 = getelementptr inbounds nuw [3 x [3 x float]], ptr %9, i64 0, i64 %indvars.iv277, i64 %indvars.iv272 + store float %100, ptr %101, align 4, !tbaa !4 + %gep = getelementptr inbounds nuw ptr, ptr %invariant.gep, i64 %indvars.iv272 + %102 = load ptr, ptr %gep, align 8, !tbaa !13 + %103 = getelementptr inbounds nuw double, ptr %102, i64 %92 + %104 = load double, ptr %103, align 8, !tbaa !17 + %105 = fmul double %104, 0x3FF6A09E667F3BCD + %106 = fptrunc double %105 to float + %107 = getelementptr inbounds nuw [3 x [3 x float]], ptr %10, i64 0, i64 %indvars.iv277, i64 %indvars.iv272 + store float %106, ptr %107, align 4, !tbaa !4 %indvars.iv.next273 = add nuw nsw i64 %indvars.iv272, 1 - %exitcond276.not = icmp eq i64 %indvars.iv.next273, %wide.trip.count275 - br i1 %exitcond276.not, label %._crit_edge202, label %.lr.ph194.preheader, !llvm.loop !30 + %exitcond276.not = icmp eq i64 %indvars.iv.next273, %85 + br i1 %exitcond276.not, label %._crit_edge199, label %94, !llvm.loop !29 -._crit_edge202: ; preds = %._crit_edge199, %83 - switch i32 %0, label %167 [ - i32 3, label %109 - i32 2, label %155 +._crit_edge199: ; preds = %94 + %indvars.iv.next278 = add nuw nsw i64 %indvars.iv277, 1 + %exitcond281.not = icmp eq i64 %indvars.iv.next278, %wide.trip.count280 + br i1 %exitcond281.not, label %._crit_edge202, label %.lr.ph194.preheader, !llvm.loop !30 + +._crit_edge202: ; preds = %._crit_edge199, %82 + switch i32 %0, label %166 [ + i32 3, label %108 + i32 2, label %154 ] -109: ; preds = %._crit_edge202 - %110 = getelementptr inbounds nuw i8, ptr %9, i64 12 - %111 = getelementptr inbounds nuw i8, ptr %9, i64 24 - %112 = getelementptr inbounds nuw i8, ptr %9, i64 4 - %113 = load float, ptr %112, align 4, !tbaa !4 - %114 = getelementptr inbounds nuw i8, ptr %9, i64 20 - %115 = load float, ptr %114, align 4, !tbaa !4 - %116 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %117 = load float, ptr %116, align 8, !tbaa !4 - %118 = getelementptr inbounds nuw i8, ptr %9, i64 16 - %119 = load float, ptr %118, align 16, !tbaa !4 - %120 = fneg float %119 - %121 = fmul float %117, %120 - %122 = call float @llvm.fmuladd.f32(float %113, float %115, float %121) - store float %122, ptr %111, align 8, !tbaa !4 - %123 = load float, ptr %110, align 4, !tbaa !4 - %124 = load float, ptr %9, align 16, !tbaa !4 - %125 = fneg float %115 - %126 = fmul float %124, %125 - %127 = call float @llvm.fmuladd.f32(float %117, float %123, float %126) - %128 = getelementptr inbounds nuw i8, ptr %9, i64 28 - store float %127, ptr %128, align 4, !tbaa !4 - %129 = fneg float %123 - %130 = fmul float %113, %129 - %131 = call float @llvm.fmuladd.f32(float %124, float %119, float %130) - %132 = getelementptr inbounds nuw i8, ptr %9, i64 32 - store float %131, ptr %132, align 16, !tbaa !4 - %133 = getelementptr inbounds nuw i8, ptr %10, i64 12 - %134 = getelementptr inbounds nuw i8, ptr %10, i64 24 - %135 = getelementptr inbounds nuw i8, ptr %10, i64 4 - %136 = load float, ptr %135, align 4, !tbaa !4 - %137 = getelementptr inbounds nuw i8, ptr %10, i64 20 - %138 = load float, ptr %137, align 4, !tbaa !4 - %139 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %140 = load float, ptr %139, align 8, !tbaa !4 - %141 = getelementptr inbounds nuw i8, ptr %10, i64 16 - %142 = load float, ptr %141, align 16, !tbaa !4 - %143 = fneg float %142 - %144 = fmul float %140, %143 - %145 = call float @llvm.fmuladd.f32(float %136, float %138, float %144) - store float %145, ptr %134, align 8, !tbaa !4 - %146 = load float, ptr %133, align 4, !tbaa !4 - %147 = load float, ptr %10, align 16, !tbaa !4 - %148 = fneg float %138 - %149 = fmul float %147, %148 - %150 = call float @llvm.fmuladd.f32(float %140, float %146, float %149) - %151 = getelementptr inbounds nuw i8, ptr %10, i64 28 - store float %150, ptr %151, align 4, !tbaa !4 - %152 = fneg float %146 - %153 = fmul float %136, %152 - %154 = call float @llvm.fmuladd.f32(float %147, float %142, float %153) +108: ; preds = %._crit_edge202 + %109 = getelementptr inbounds nuw i8, ptr %9, i64 12 + %110 = getelementptr inbounds nuw i8, ptr %9, i64 24 + %111 = getelementptr inbounds nuw i8, ptr %9, i64 4 + %112 = load float, ptr %111, align 4, !tbaa !4 + %113 = getelementptr inbounds nuw i8, ptr %9, i64 20 + %114 = load float, ptr %113, align 4, !tbaa !4 + %115 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %116 = load float, ptr %115, align 8, !tbaa !4 + %117 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %118 = load float, ptr %117, align 16, !tbaa !4 + %119 = fneg float %118 + %120 = fmul float %116, %119 + %121 = call float @llvm.fmuladd.f32(float %112, float %114, float %120) + store float %121, ptr %110, align 8, !tbaa !4 + %122 = load float, ptr %109, align 4, !tbaa !4 + %123 = load float, ptr %9, align 16, !tbaa !4 + %124 = fneg float %114 + %125 = fmul float %123, %124 + %126 = call float @llvm.fmuladd.f32(float %116, float %122, float %125) + %127 = getelementptr inbounds nuw i8, ptr %9, i64 28 + store float %126, ptr %127, align 4, !tbaa !4 + %128 = fneg float %122 + %129 = fmul float %112, %128 + %130 = call float @llvm.fmuladd.f32(float %123, float %118, float %129) + %131 = getelementptr inbounds nuw i8, ptr %9, i64 32 + store float %130, ptr %131, align 16, !tbaa !4 + %132 = getelementptr inbounds nuw i8, ptr %10, i64 12 + %133 = getelementptr inbounds nuw i8, ptr %10, i64 24 + %134 = getelementptr inbounds nuw i8, ptr %10, i64 4 + %135 = load float, ptr %134, align 4, !tbaa !4 + %136 = getelementptr inbounds nuw i8, ptr %10, i64 20 + %137 = load float, ptr %136, align 4, !tbaa !4 + %138 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %139 = load float, ptr %138, align 8, !tbaa !4 + %140 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %141 = load float, ptr %140, align 16, !tbaa !4 + %142 = fneg float %141 + %143 = fmul float %139, %142 + %144 = call float @llvm.fmuladd.f32(float %135, float %137, float %143) + store float %144, ptr %133, align 8, !tbaa !4 + %145 = load float, ptr %132, align 4, !tbaa !4 + %146 = load float, ptr %10, align 16, !tbaa !4 + %147 = fneg float %137 + %148 = fmul float %146, %147 + %149 = call float @llvm.fmuladd.f32(float %139, float %145, float %148) + %150 = getelementptr inbounds nuw i8, ptr %10, i64 28 + store float %149, ptr %150, align 4, !tbaa !4 + %151 = fneg float %145 + %152 = fmul float %135, %151 + %153 = call float @llvm.fmuladd.f32(float %146, float %141, float %152) br label %.thread -155: ; preds = %._crit_edge202 - %156 = getelementptr inbounds nuw i8, ptr %9, i64 4 - %157 = load float, ptr %156, align 4, !tbaa !4 - %158 = fneg float %157 - %159 = getelementptr inbounds nuw i8, ptr %9, i64 12 - store float %158, ptr %159, align 4, !tbaa !4 - %160 = load float, ptr %9, align 16, !tbaa !4 - %161 = getelementptr inbounds nuw i8, ptr %9, i64 16 - store float %160, ptr %161, align 16, !tbaa !4 - %162 = getelementptr inbounds nuw i8, ptr %10, i64 4 - %163 = load float, ptr %162, align 4, !tbaa !4 - %164 = fneg float %163 - %165 = getelementptr inbounds nuw i8, ptr %10, i64 12 - store float %164, ptr %165, align 4, !tbaa !4 - %166 = load float, ptr %10, align 16, !tbaa !4 +154: ; preds = %._crit_edge202 + %155 = getelementptr inbounds nuw i8, ptr %9, i64 4 + %156 = load float, ptr %155, align 4, !tbaa !4 + %157 = fneg float %156 + %158 = getelementptr inbounds nuw i8, ptr %9, i64 12 + store float %157, ptr %158, align 4, !tbaa !4 + %159 = load float, ptr %9, align 16, !tbaa !4 + %160 = getelementptr inbounds nuw i8, ptr %9, i64 16 + store float %159, ptr %160, align 16, !tbaa !4 + %161 = getelementptr inbounds nuw i8, ptr %10, i64 4 + %162 = load float, ptr %161, align 4, !tbaa !4 + %163 = fneg float %162 + %164 = getelementptr inbounds nuw i8, ptr %10, i64 12 + store float %163, ptr %164, align 4, !tbaa !4 + %165 = load float, ptr %10, align 16, !tbaa !4 br label %.thread -.thread: ; preds = %155, %109 - %.sink311.sroa.phi = phi ptr [ %.sink311.sroa.gep, %155 ], [ %.sink311.sroa.gep314, %109 ] - %.sink309 = phi float [ %166, %155 ], [ %154, %109 ] - store float %.sink309, ptr %.sink311.sroa.phi, align 16, !tbaa !4 +.thread: ; preds = %154, %108 + %.sink316.sroa.phi = phi ptr [ %.sink316.sroa.gep, %154 ], [ %.sink316.sroa.gep319, %108 ] + %.sink314 = phi float [ %165, %154 ], [ %153, %108 ] + store float %.sink314, ptr %.sink316.sroa.phi, align 16, !tbaa !4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %5, i8 0, i64 36, i1 false) br label %.preheader169.us.preheader -167: ; preds = %._crit_edge202 +166: ; preds = %._crit_edge202 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %5, i8 0, i64 36, i1 false) - %168 = icmp sgt i32 %0, 0 - br i1 %168, label %.preheader169.us.preheader, label %.lr.ph210.preheader + %167 = icmp sgt i32 %0, 0 + br i1 %167, label %.preheader169.us.preheader, label %.lr.ph210.preheader -.preheader169.us.preheader: ; preds = %.thread, %167 - %wide.trip.count290 = zext nneg i32 %0 to i64 +.preheader169.us.preheader: ; preds = %.thread, %166 + %wide.trip.count295 = zext nneg i32 %0 to i64 br label %.preheader169.us .preheader169.us: ; preds = %.preheader169.us.preheader, %._crit_edge207.split.us.us - %indvars.iv287 = phi i64 [ 0, %.preheader169.us.preheader ], [ %indvars.iv.next288, %._crit_edge207.split.us.us ] + %indvars.iv292 = phi i64 [ 0, %.preheader169.us.preheader ], [ %indvars.iv.next293, %._crit_edge207.split.us.us ] br label %.preheader168.us.us .preheader168.us.us: ; preds = %._crit_edge205.us.us, %.preheader169.us - %indvars.iv282 = phi i64 [ %indvars.iv.next283, %._crit_edge205.us.us ], [ 0, %.preheader169.us ] - %169 = getelementptr inbounds nuw [3 x float], ptr %5, i64 %indvars.iv287, i64 %indvars.iv282 - %.promoted.us.us = load float, ptr %169, align 4, !tbaa !4 - br label %170 - -170: ; preds = %170, %.preheader168.us.us - %indvars.iv277 = phi i64 [ %indvars.iv.next278, %170 ], [ 0, %.preheader168.us.us ] - %171 = phi float [ %176, %170 ], [ %.promoted.us.us, %.preheader168.us.us ] - %172 = getelementptr inbounds nuw [3 x [3 x float]], ptr %10, i64 0, i64 %indvars.iv277, i64 %indvars.iv287 - %173 = load float, ptr %172, align 4, !tbaa !4 - %174 = getelementptr inbounds nuw [3 x [3 x float]], ptr %9, i64 0, i64 %indvars.iv277, i64 %indvars.iv282 - %175 = load float, ptr %174, align 4, !tbaa !4 - %176 = call float @llvm.fmuladd.f32(float %173, float %175, float %171) - %indvars.iv.next278 = add nuw nsw i64 %indvars.iv277, 1 - %exitcond281.not = icmp eq i64 %indvars.iv.next278, %wide.trip.count290 - br i1 %exitcond281.not, label %._crit_edge205.us.us, label %170, !llvm.loop !31 - -._crit_edge205.us.us: ; preds = %170 - store float %176, ptr %169, align 4, !tbaa !4 + %indvars.iv287 = phi i64 [ %indvars.iv.next288, %._crit_edge205.us.us ], [ 0, %.preheader169.us ] + %168 = getelementptr inbounds nuw [3 x float], ptr %5, i64 %indvars.iv292, i64 %indvars.iv287 + %.promoted.us.us = load float, ptr %168, align 4, !tbaa !4 + br label %169 + +169: ; preds = %169, %.preheader168.us.us + %indvars.iv282 = phi i64 [ %indvars.iv.next283, %169 ], [ 0, %.preheader168.us.us ] + %170 = phi float [ %175, %169 ], [ %.promoted.us.us, %.preheader168.us.us ] + %171 = getelementptr inbounds nuw [3 x [3 x float]], ptr %10, i64 0, i64 %indvars.iv282, i64 %indvars.iv292 + %172 = load float, ptr %171, align 4, !tbaa !4 + %173 = getelementptr inbounds nuw [3 x [3 x float]], ptr %9, i64 0, i64 %indvars.iv282, i64 %indvars.iv287 + %174 = load float, ptr %173, align 4, !tbaa !4 + %175 = call float @llvm.fmuladd.f32(float %172, float %174, float %170) %indvars.iv.next283 = add nuw nsw i64 %indvars.iv282, 1 - %exitcond286.not = icmp eq i64 %indvars.iv.next283, %wide.trip.count290 - br i1 %exitcond286.not, label %._crit_edge207.split.us.us, label %.preheader168.us.us, !llvm.loop !32 + %exitcond286.not = icmp eq i64 %indvars.iv.next283, %wide.trip.count295 + br i1 %exitcond286.not, label %._crit_edge205.us.us, label %169, !llvm.loop !31 -._crit_edge207.split.us.us: ; preds = %._crit_edge205.us.us +._crit_edge205.us.us: ; preds = %169 + store float %175, ptr %168, align 4, !tbaa !4 %indvars.iv.next288 = add nuw nsw i64 %indvars.iv287, 1 - %exitcond291.not = icmp eq i64 %indvars.iv.next288, %wide.trip.count290 - br i1 %exitcond291.not, label %.preheader167, label %.preheader169.us, !llvm.loop !33 + %exitcond291.not = icmp eq i64 %indvars.iv.next288, %wide.trip.count295 + br i1 %exitcond291.not, label %._crit_edge207.split.us.us, label %.preheader168.us.us, !llvm.loop !32 + +._crit_edge207.split.us.us: ; preds = %._crit_edge205.us.us + %indvars.iv.next293 = add nuw nsw i64 %indvars.iv292, 1 + %exitcond296.not = icmp eq i64 %indvars.iv.next293, %wide.trip.count295 + br i1 %exitcond296.not, label %.preheader167, label %.preheader169.us, !llvm.loop !33 .preheader167: ; preds = %._crit_edge207.split.us.us - %177 = icmp slt i32 %0, 3 - br i1 %177, label %.lr.ph210.preheader, label %.lr.ph212.preheader + %176 = icmp slt i32 %0, 3 + br i1 %176, label %.lr.ph210.preheader, label %.lr.ph212.preheader -.lr.ph210.preheader: ; preds = %167, %.preheader167 - %178 = zext nneg i32 %0 to i64 +.lr.ph210.preheader: ; preds = %166, %.preheader167 + %177 = zext nneg i32 %0 to i64 br label %.lr.ph210 .lr.ph212.preheader: ; preds = %.lr.ph210, %.preheader167 - %wide.trip.count299 = zext nneg i32 %18 to i64 + %wide.trip.count304 = zext nneg i32 %18 to i64 br label %.lr.ph212 .lr.ph210: ; preds = %.lr.ph210.preheader, %.lr.ph210 - %indvars.iv292 = phi i64 [ %178, %.lr.ph210.preheader ], [ %indvars.iv.next293, %.lr.ph210 ] - %179 = getelementptr inbounds nuw [3 x float], ptr %5, i64 %indvars.iv292, i64 %indvars.iv292 - store float 1.000000e+00, ptr %179, align 4, !tbaa !4 - %indvars.iv.next293 = add nuw nsw i64 %indvars.iv292, 1 - %180 = trunc nuw i64 %indvars.iv292 to i32 - %181 = icmp slt i32 %180, 2 - br i1 %181, label %.lr.ph210, label %.lr.ph212.preheader, !llvm.loop !34 + %indvars.iv297 = phi i64 [ %177, %.lr.ph210.preheader ], [ %indvars.iv.next298, %.lr.ph210 ] + %178 = getelementptr inbounds nuw [3 x float], ptr %5, i64 %indvars.iv297, i64 %indvars.iv297 + store float 1.000000e+00, ptr %178, align 4, !tbaa !4 + %indvars.iv.next298 = add nuw nsw i64 %indvars.iv297, 1 + %179 = trunc nuw i64 %indvars.iv297 to i32 + %180 = icmp slt i32 %179, 2 + br i1 %180, label %.lr.ph210, label %.lr.ph212.preheader, !llvm.loop !34 .lr.ph212: ; preds = %.lr.ph212.preheader, %.lr.ph212 - %indvars.iv295 = phi i64 [ 0, %.lr.ph212.preheader ], [ %indvars.iv.next296, %.lr.ph212 ] - %182 = getelementptr inbounds nuw ptr, ptr %20, i64 %indvars.iv295 - %183 = load ptr, ptr %182, align 8, !tbaa !13 - call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, i32 noundef 258, ptr noundef %183) - %184 = getelementptr inbounds nuw ptr, ptr %21, i64 %indvars.iv295 - %185 = load ptr, ptr %184, align 8, !tbaa !13 - call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str, i32 noundef 259, ptr noundef %185) - %indvars.iv.next296 = add nuw nsw i64 %indvars.iv295, 1 - %exitcond300.not = icmp eq i64 %indvars.iv.next296, %wide.trip.count299 - br i1 %exitcond300.not, label %._crit_edge213, label %.lr.ph212, !llvm.loop !35 + %indvars.iv300 = phi i64 [ 0, %.lr.ph212.preheader ], [ %indvars.iv.next301, %.lr.ph212 ] + %181 = getelementptr inbounds nuw ptr, ptr %20, i64 %indvars.iv300 + %182 = load ptr, ptr %181, align 8, !tbaa !13 + call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, i32 noundef 258, ptr noundef %182) + %183 = getelementptr inbounds nuw ptr, ptr %21, i64 %indvars.iv300 + %184 = load ptr, ptr %183, align 8, !tbaa !13 + call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str, i32 noundef 259, ptr noundef %184) + %indvars.iv.next301 = add nuw nsw i64 %indvars.iv300, 1 + %exitcond305.not = icmp eq i64 %indvars.iv.next301, %wide.trip.count304 + br i1 %exitcond305.not, label %._crit_edge213, label %.lr.ph212, !llvm.loop !35 ._crit_edge213: ; preds = %.lr.ph212 call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, i32 noundef 261, ptr noundef nonnull %20) diff --git a/bench/libphonenumber/optimized/unicodetext.ll b/bench/libphonenumber/optimized/unicodetext.ll index b741ba64124..ce2003c9e16 100644 --- a/bench/libphonenumber/optimized/unicodetext.ll +++ b/bench/libphonenumber/optimized/unicodetext.ll @@ -212,7 +212,7 @@ _ZN4i18n12phonenumbers11UnicodeText4Repr7reserveEi.exit: ; preds = %28, %12 %34 = sext i32 %30 to i64 %35 = getelementptr inbounds i8, ptr %33, i64 %34 %36 = sub nsw i32 %1, %30 - %37 = sext i32 %36 to i64 + %37 = zext nneg i32 %36 to i64 tail call void @llvm.memset.p0.i64(ptr align 1 %35, i8 0, i64 %37, i1 false) br label %38 @@ -323,7 +323,7 @@ _ZN4i18n12phonenumbers11UnicodeText4Repr7reserveEi.exit.i: ; preds = %._ZN4i18n1 %34 = sext i32 %31 to i64 %35 = getelementptr inbounds i8, ptr %.pre.pre3, i64 %34 %36 = sub nsw i32 %2, %31 - %37 = sext i32 %36 to i64 + %37 = zext nneg i32 %36 to i64 tail call void @llvm.memset.p0.i64(ptr align 1 %35, i8 0, i64 %37, i1 false) %.pre.pre = load ptr, ptr %0, align 8, !tbaa !18 br label %38 @@ -769,7 +769,7 @@ _ZN4i18n12phonenumbers11UnicodeText4Repr7reserveEi.exit.i.i: ; preds = %31, %._Z %36 = sext i32 %33 to i64 %37 = getelementptr inbounds i8, ptr %.pre.pre3.i, i64 %36 %38 = sub nsw i32 %5, %33 - %39 = sext i32 %38 to i64 + %39 = zext nneg i32 %38 to i64 tail call void @llvm.memset.p0.i64(ptr align 1 %37, i8 0, i64 %39, i1 false) %.pre.pre.i = load ptr, ptr %0, align 8, !tbaa !18 br label %40 @@ -972,7 +972,7 @@ _ZN4i18n12phonenumbers11UnicodeText4Repr7reserveEi.exit.i.i: ; preds = %33, %._Z %38 = sext i32 %35 to i64 %39 = getelementptr inbounds i8, ptr %.pre.pre3.i, i64 %38 %40 = sub nsw i32 %2, %35 - %41 = sext i32 %40 to i64 + %41 = zext nneg i32 %40 to i64 tail call void @llvm.memset.p0.i64(ptr align 1 %39, i8 0, i64 %41, i1 false) %.pre.pre.i = load ptr, ptr %0, align 8, !tbaa !18 br label %42 @@ -1377,7 +1377,7 @@ _ZN4i18n12phonenumbers11UnicodeText4Repr7reserveEi.exit.i.i: ; preds = %29, %._Z %34 = sext i32 %31 to i64 %35 = getelementptr inbounds i8, ptr %.pre.pre3.i, i64 %34 %36 = sub nsw i32 %2, %31 - %37 = sext i32 %36 to i64 + %37 = zext nneg i32 %36 to i64 tail call void @llvm.memset.p0.i64(ptr align 1 %35, i8 0, i64 %37, i1 false) %.pre.pre.i = load ptr, ptr %0, align 8, !tbaa !18 br label %38 @@ -1799,7 +1799,7 @@ _ZN4i18n12phonenumbers11UnicodeText4Repr7reserveEi.exit.i.i: ; preds = %74, %._Z %79 = sext i32 %76 to i64 %80 = getelementptr inbounds i8, ptr %.pre.pre3.i, i64 %79 %81 = sub nsw i32 %2, %76 - %82 = sext i32 %81 to i64 + %82 = zext nneg i32 %81 to i64 call void @llvm.memset.p0.i64(ptr align 1 %80, i8 0, i64 %82, i1 false) %.pre.pre.i = load ptr, ptr %0, align 8, !tbaa !18 br label %_ZN4i18n12phonenumbers11UnicodeText4Repr4CopyEPKci.exit diff --git a/bench/libwebp/optimized/predictor_enc.ll b/bench/libwebp/optimized/predictor_enc.ll index 98261148901..644e7911bac 100644 --- a/bench/libwebp/optimized/predictor_enc.ll +++ b/bench/libwebp/optimized/predictor_enc.ll @@ -1253,6 +1253,7 @@ define hidden range(i32 0, 2) i32 @VP8LColorSpaceTransform(i32 noundef %0, i32 n .preheader.lr.ph: ; preds = %10 %22 = icmp sgt i32 %17, 0 %23 = sext i32 %0 to i64 + %invariant.gep = getelementptr i8, ptr %4, i64 -8 br i1 %22, label %.preheader.us.preheader, label %.preheader .preheader.us.preheader: ; preds = %.preheader.lr.ph @@ -1263,14 +1264,14 @@ define hidden range(i32 0, 2) i32 @VP8LColorSpaceTransform(i32 noundef %0, i32 n %wide.trip.count = zext nneg i32 %17 to i64 br label %.preheader.us -.preheader.us: ; preds = %.preheader.us.preheader, %122 - %indvars.iv206 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next207, %122 ] - %.sroa.0.0191.us = phi i8 [ 0, %.preheader.us.preheader ], [ %.sroa.0.2.us, %122 ] - %.sroa.6.0190.us = phi i8 [ 0, %.preheader.us.preheader ], [ %.sroa.6.2.us, %122 ] - %.sroa.8.0189.us = phi i8 [ 0, %.preheader.us.preheader ], [ %.sroa.8.2.us, %122 ] - %.sroa.0126.0188.us = phi i8 [ 0, %.preheader.us.preheader ], [ %.sink219.off0, %122 ] - %.sroa.8133.sroa.0.0187.us = phi i8 [ 0, %.preheader.us.preheader ], [ %.sroa.8133.sroa.0.0.extract.trunc.us, %122 ] - %.sroa.8133.sroa.8.0186.us = phi i8 [ 0, %.preheader.us.preheader ], [ %.sroa.8133.sroa.8.0.extract.trunc.us, %122 ] +.preheader.us: ; preds = %.preheader.us.preheader, %121 + %indvars.iv206 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next207, %121 ] + %.sroa.0.0191.us = phi i8 [ 0, %.preheader.us.preheader ], [ %.sroa.0.2.us, %121 ] + %.sroa.6.0190.us = phi i8 [ 0, %.preheader.us.preheader ], [ %.sroa.6.2.us, %121 ] + %.sroa.8.0189.us = phi i8 [ 0, %.preheader.us.preheader ], [ %.sroa.8.2.us, %121 ] + %.sroa.0126.0188.us = phi i8 [ 0, %.preheader.us.preheader ], [ %.sink219.off0, %121 ] + %.sroa.8133.sroa.0.0187.us = phi i8 [ 0, %.preheader.us.preheader ], [ %.sroa.8133.sroa.0.0.extract.trunc.us, %121 ] + %.sroa.8133.sroa.8.0186.us = phi i8 [ 0, %.preheader.us.preheader ], [ %.sroa.8133.sroa.8.0.extract.trunc.us, %121 ] %27 = trunc nuw nsw i64 %indvars.iv206 to i32 %28 = shl i32 %27, %2 %29 = add nsw i32 %28, %14 @@ -1405,8 +1406,8 @@ CopyTileWithColorTransform.exit.us: ; preds = %68, %56 br i1 %exitcond205.not, label %._crit_edge180.us, label %37, !llvm.loop !35 73: ; preds = %.lr.ph170.us, %._crit_edge.us - %indvars.iv199 = phi i32 [ %124, %.lr.ph170.us ], [ %indvars.iv.next200, %._crit_edge.us ] - %indvars.iv = phi i32 [ %123, %.lr.ph170.us ], [ %indvars.iv.next, %._crit_edge.us ] + %indvars.iv199 = phi i32 [ %123, %.lr.ph170.us ], [ %indvars.iv.next200, %._crit_edge.us ] + %indvars.iv = phi i32 [ %122, %.lr.ph170.us ], [ %indvars.iv.next, %._crit_edge.us ] %.0103169.us = phi i32 [ %28, %.lr.ph170.us ], [ %79, %._crit_edge.us ] %74 = mul nsw i32 %.0103169.us, %0 %75 = add nsw i32 %74, %39 @@ -1418,15 +1419,15 @@ CopyTileWithColorTransform.exit.us: ; preds = %68, %56 %78 = sext i32 %indvars.iv to i64 br label %.lr.ph.us -._crit_edge.us: ; preds = %121, %73 +._crit_edge.us: ; preds = %120, %73 %79 = add nsw i32 %.0103169.us, 1 %indvars.iv.next = add i32 %indvars.iv, %0 %indvars.iv.next200 = add i32 %indvars.iv199, %0 %exitcond202.not = icmp eq i32 %79, %30 br i1 %exitcond202.not, label %._crit_edge171.us, label %73, !llvm.loop !36 -.lr.ph.us: ; preds = %.lr.ph.us.preheader, %121 - %indvars.iv196 = phi i64 [ %78, %.lr.ph.us.preheader ], [ %indvars.iv.next197, %121 ] +.lr.ph.us: ; preds = %.lr.ph.us.preheader, %120 + %indvars.iv196 = phi i64 [ %78, %.lr.ph.us.preheader ], [ %indvars.iv.next197, %120 ] %80 = getelementptr i32, ptr %4, i64 %indvars.iv196 %81 = load i32, ptr %80, align 4, !tbaa !3 %82 = icmp sgt i64 %indvars.iv196, 1 @@ -1442,91 +1443,91 @@ CopyTileWithColorTransform.exit.us: ; preds = %68, %56 %88 = getelementptr i8, ptr %80, i64 -4 %89 = load i32, ptr %88, align 4, !tbaa !3 %90 = icmp eq i32 %81, %89 - br i1 %90, label %121, label %91 + br i1 %90, label %120, label %91 91: ; preds = %87, %83, %.lr.ph.us %.not114.us = icmp slt i64 %indvars.iv196, %25 - br i1 %.not114.us, label %109, label %92 + br i1 %.not114.us, label %108, label %92 92: ; preds = %91 %93 = getelementptr i8, ptr %80, i64 -8 %94 = load i32, ptr %93, align 4, !tbaa !3 %95 = sub nsw i64 %indvars.iv196, %23 - %96 = getelementptr i32, ptr %4, i64 %95 - %97 = getelementptr i8, ptr %96, i64 -8 - %98 = load i32, ptr %97, align 4, !tbaa !3 - %99 = icmp eq i32 %94, %98 - br i1 %99, label %100, label %109 - -100: ; preds = %92 - %101 = getelementptr i8, ptr %80, i64 -4 - %102 = load i32, ptr %101, align 4, !tbaa !3 - %103 = getelementptr i8, ptr %96, i64 -4 - %104 = load i32, ptr %103, align 4, !tbaa !3 - %105 = icmp eq i32 %102, %104 - br i1 %105, label %106, label %109 - -106: ; preds = %100 - %107 = load i32, ptr %96, align 4, !tbaa !3 - %108 = icmp eq i32 %81, %107 - br i1 %108, label %121, label %109 - -109: ; preds = %106, %100, %92, %91 - %110 = lshr i32 %81, 16 - %111 = and i32 %110, 255 - %112 = zext nneg i32 %111 to i64 - %113 = getelementptr inbounds nuw [256 x i32], ptr %12, i64 0, i64 %112 - %114 = load i32, ptr %113, align 4, !tbaa !3 - %115 = add i32 %114, 1 - store i32 %115, ptr %113, align 4, !tbaa !3 - %116 = and i32 %81, 255 - %117 = zext nneg i32 %116 to i64 - %118 = getelementptr inbounds nuw [256 x i32], ptr %13, i64 0, i64 %117 - %119 = load i32, ptr %118, align 4, !tbaa !3 - %120 = add i32 %119, 1 - store i32 %120, ptr %118, align 4, !tbaa !3 - br label %121 - -121: ; preds = %109, %106, %87 + %gep.us = getelementptr i32, ptr %invariant.gep, i64 %95 + %96 = load i32, ptr %gep.us, align 4, !tbaa !3 + %97 = icmp eq i32 %94, %96 + br i1 %97, label %98, label %108 + +98: ; preds = %92 + %99 = getelementptr i8, ptr %80, i64 -4 + %100 = load i32, ptr %99, align 4, !tbaa !3 + %101 = getelementptr i32, ptr %4, i64 %95 + %102 = getelementptr i8, ptr %101, i64 -4 + %103 = load i32, ptr %102, align 4, !tbaa !3 + %104 = icmp eq i32 %100, %103 + br i1 %104, label %105, label %108 + +105: ; preds = %98 + %106 = load i32, ptr %101, align 4, !tbaa !3 + %107 = icmp eq i32 %81, %106 + br i1 %107, label %120, label %108 + +108: ; preds = %105, %98, %92, %91 + %109 = lshr i32 %81, 16 + %110 = and i32 %109, 255 + %111 = zext nneg i32 %110 to i64 + %112 = getelementptr inbounds nuw [256 x i32], ptr %12, i64 0, i64 %111 + %113 = load i32, ptr %112, align 4, !tbaa !3 + %114 = add i32 %113, 1 + store i32 %114, ptr %112, align 4, !tbaa !3 + %115 = and i32 %81, 255 + %116 = zext nneg i32 %115 to i64 + %117 = getelementptr inbounds nuw [256 x i32], ptr %13, i64 0, i64 %116 + %118 = load i32, ptr %117, align 4, !tbaa !3 + %119 = add i32 %118, 1 + store i32 %119, ptr %117, align 4, !tbaa !3 + br label %120 + +120: ; preds = %108, %105, %87 %indvars.iv.next197 = add nsw i64 %indvars.iv196, 1 %lftr.wideiv = trunc i64 %indvars.iv.next197 to i32 %exitcond201.not = icmp eq i32 %indvars.iv199, %lftr.wideiv br i1 %exitcond201.not, label %._crit_edge.us, label %.lr.ph.us, !llvm.loop !37 -122: ; preds = %._crit_edge180.us +121: ; preds = %._crit_edge180.us %indvars.iv.next207 = add nuw nsw i64 %indvars.iv206, 1 %exitcond209.not = icmp eq i64 %indvars.iv.next207, %wide.trip.count208 br i1 %exitcond209.not, label %._crit_edge193, label %.preheader.us, !llvm.loop !38 .lr.ph170.us: ; preds = %CopyTileWithColorTransform.exit.us - %123 = add i32 %35, %39 - %124 = add i32 %35, %41 + %122 = add i32 %35, %39 + %123 = add i32 %35, %41 br label %73 ._crit_edge180.us: ; preds = %._crit_edge171.us - %125 = trunc i64 %indvars.iv206 to i32 - %126 = mul i32 %7, %125 - %127 = sdiv i32 %126, %19 - %128 = add nsw i32 %127, %20 - %129 = call i32 @WebPReportProgress(ptr noundef %6, i32 noundef %128, ptr noundef nonnull %8) #11 - %.not.us = icmp eq i32 %129, 0 - br i1 %.not.us, label %.loopexit, label %122 - -130: ; preds = %.preheader - %131 = add nuw nsw i32 %.0102192, 1 - %exitcond.not = icmp eq i32 %131, %19 + %124 = trunc i64 %indvars.iv206 to i32 + %125 = mul i32 %7, %124 + %126 = sdiv i32 %125, %19 + %127 = add nsw i32 %126, %20 + %128 = call i32 @WebPReportProgress(ptr noundef %6, i32 noundef %127, ptr noundef nonnull %8) #11 + %.not.us = icmp eq i32 %128, 0 + br i1 %.not.us, label %.loopexit, label %121 + +129: ; preds = %.preheader + %130 = add nuw nsw i32 %.0102192, 1 + %exitcond.not = icmp eq i32 %130, %19 br i1 %exitcond.not, label %._crit_edge193, label %.preheader, !llvm.loop !38 -.preheader: ; preds = %.preheader.lr.ph, %130 - %.0102192 = phi i32 [ %131, %130 ], [ 0, %.preheader.lr.ph ] - %132 = mul nsw i32 %.0102192, %7 - %133 = sdiv i32 %132, %19 - %134 = add nsw i32 %133, %20 - %135 = tail call i32 @WebPReportProgress(ptr noundef %6, i32 noundef %134, ptr noundef nonnull %8) #11 - %.not = icmp eq i32 %135, 0 - br i1 %.not, label %.loopexit, label %130 +.preheader: ; preds = %.preheader.lr.ph, %129 + %.0102192 = phi i32 [ %130, %129 ], [ 0, %.preheader.lr.ph ] + %131 = mul nsw i32 %.0102192, %7 + %132 = sdiv i32 %131, %19 + %133 = add nsw i32 %132, %20 + %134 = tail call i32 @WebPReportProgress(ptr noundef %6, i32 noundef %133, ptr noundef nonnull %8) #11 + %.not = icmp eq i32 %134, 0 + br i1 %.not, label %.loopexit, label %129 -._crit_edge193: ; preds = %130, %122, %10 +._crit_edge193: ; preds = %129, %121, %10 call void @VP8LOptimizeSampling(ptr noundef %5, i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef 9, ptr noundef %9) br label %.loopexit diff --git a/bench/lief/optimized/AArch64PAuth.ll b/bench/lief/optimized/AArch64PAuth.ll index 39763e80a7c..edcec8f5733 100644 --- a/bench/lief/optimized/AArch64PAuth.ll +++ b/bench/lief/optimized/AArch64PAuth.ll @@ -2900,7 +2900,7 @@ _ZZN3fmt3v106detail9write_intIcNS0_8appenderEjEET0_S4_NS1_13write_int_argIT1_EER %91 = add i32 %29, %76 %92 = zext i32 %91 to i64 %93 = sub nsw i32 %29, %26 - %94 = zext i32 %93 to i64 + %94 = zext nneg i32 %93 to i64 br label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit _ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit: ; preds = %83, %85, %88, %90 @@ -3081,7 +3081,7 @@ _ZN3fmt3v106detail11format_uintILj4EcjEEPT0_S4_T1_ib.exit19.i.i: ; preds = %159 %181 = add nuw i32 %117, %168 %182 = zext i32 %181 to i64 %183 = sub nsw i32 %117, %114 - %184 = zext i32 %183 to i64 + %184 = zext nneg i32 %183 to i64 br label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit34 _ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit34: ; preds = %173, %175, %178, %180 @@ -3287,7 +3287,7 @@ _ZN3fmt3v106detail11format_uintILj1EcjEEPT0_S4_T1_ib.exit18.i.i: ; preds = %261 %282 = add nuw i32 %220, %269 %283 = zext i32 %282 to i64 %284 = sub nsw i32 %220, %217 - %285 = zext i32 %284 to i64 + %285 = zext nneg i32 %284 to i64 br label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit47 _ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit47: ; preds = %274, %276, %279, %281 @@ -3498,7 +3498,7 @@ _ZN3fmt3v106detail11format_uintILj3EcjEEPT0_S4_T1_ib.exit18.i.i: ; preds = %361 %382 = add nuw i32 %.pre, %369 %383 = zext i32 %382 to i64 %384 = sub nsw i32 %.pre, %309 - %385 = zext i32 %384 to i64 + %385 = zext nneg i32 %384 to i64 br label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit68 _ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit68: ; preds = %374, %376, %379, %381 @@ -22611,7 +22611,7 @@ _ZZN3fmt3v106detail9write_intIcNS0_8appenderEmEET0_S4_NS1_13write_int_argIT1_EER %91 = add nuw i32 %31, %76 %92 = zext i32 %91 to i64 %93 = sub nsw i32 %31, %28 - %94 = zext i32 %93 to i64 + %94 = zext nneg i32 %93 to i64 br label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit _ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit: ; preds = %83, %85, %88, %90 @@ -22798,7 +22798,7 @@ _ZN3fmt3v106detail11format_uintILj4EcmEEPT0_S4_T1_ib.exit19.i.i: ; preds = %156 %177 = add i32 %115, %164 %178 = zext i32 %177 to i64 %179 = sub nsw i32 %115, %111 - %180 = zext i32 %179 to i64 + %180 = zext nneg i32 %179 to i64 br label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit37 _ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit37: ; preds = %169, %171, %174, %176 @@ -23010,7 +23010,7 @@ _ZN3fmt3v106detail11format_uintILj1EcmEEPT0_S4_T1_ib.exit18.i.i: ; preds = %258 %279 = add i32 %216, %266 %280 = zext i32 %279 to i64 %281 = sub nsw i32 %216, %212 - %282 = zext i32 %281 to i64 + %282 = zext nneg i32 %281 to i64 br label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit54 _ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit54: ; preds = %271, %273, %276, %278 @@ -23221,7 +23221,7 @@ _ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit18.i.i: ; preds = %355 %376 = add i32 %.pre, %363 %377 = zext i32 %376 to i64 %378 = sub nsw i32 %.pre, %301 - %379 = zext i32 %378 to i64 + %379 = zext nneg i32 %378 to i64 br label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit78 _ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit78: ; preds = %368, %370, %373, %375 @@ -24151,7 +24151,7 @@ _ZZN3fmt3v106detail9write_intIcNS0_8appenderEoEET0_S4_NS1_13write_int_argIT1_EER %97 = add i32 %35, %82 %98 = zext i32 %97 to i64 %99 = sub nsw i32 %35, %.012.i.i - %100 = zext i32 %99 to i64 + %100 = zext nneg i32 %99 to i64 br label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit _ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit: ; preds = %89, %91, %94, %96 @@ -24339,7 +24339,7 @@ _ZN3fmt3v106detail11format_uintILj4EcoEEPT0_S4_T1_ib.exit28.i.i: ; preds = %165 %187 = add i32 %122, %174 %188 = zext i32 %187 to i64 %189 = sub nsw i32 %122, %118 - %190 = zext i32 %189 to i64 + %190 = zext nneg i32 %189 to i64 br label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit38 _ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit38: ; preds = %179, %181, %184, %186 @@ -24552,7 +24552,7 @@ _ZN3fmt3v106detail11format_uintILj1EcoEEPT0_S4_T1_ib.exit27.i.i: ; preds = %268 %289 = add i32 %226, %276 %290 = zext i32 %289 to i64 %291 = sub nsw i32 %226, %222 - %292 = zext i32 %291 to i64 + %292 = zext nneg i32 %291 to i64 br label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit59 _ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit59: ; preds = %281, %283, %286, %288 @@ -24763,7 +24763,7 @@ _ZN3fmt3v106detail11format_uintILj3EcoEEPT0_S4_T1_ib.exit27.i.i: ; preds = %365 %386 = add i32 %.pre, %373 %387 = zext i32 %386 to i64 %388 = sub nsw i32 %.pre, %311 - %389 = zext i32 %388 to i64 + %389 = zext nneg i32 %388 to i64 br label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit87 _ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit87: ; preds = %378, %380, %383, %385 diff --git a/bench/llama.cpp/optimized/llama-vocab.ll b/bench/llama.cpp/optimized/llama-vocab.ll index 19b6e500a63..bfcb71e9ee9 100644 --- a/bench/llama.cpp/optimized/llama-vocab.ll +++ b/bench/llama.cpp/optimized/llama-vocab.ll @@ -12547,7 +12547,7 @@ define linkonce_odr void @_ZN25llm_tokenizer_wpm_session8tokenizeERKNSt7__cxx111 %16 = getelementptr inbounds nuw i8, ptr %6, i64 16 br label %33 -._crit_edge164: ; preds = %277 +._crit_edge164: ; preds = %275 %.pre198 = load ptr, ptr %5, align 8, !tbaa !149 %.pre199 = load ptr, ptr %9, align 8, !tbaa !153 %.not4.i.i.i.i = icmp eq ptr %.pre198, %.pre199 @@ -12600,17 +12600,17 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.ex call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #29 ret void -33: ; preds = %.lr.ph163, %277 - %.sroa.085.0161 = phi ptr [ %8, %.lr.ph163 ], [ %278, %277 ] +33: ; preds = %.lr.ph163, %275 + %.sroa.085.0161 = phi ptr [ %8, %.lr.ph163 ], [ %276, %275 ] %34 = getelementptr inbounds nuw i8, ptr %.sroa.085.0161, i64 8 %35 = load i64, ptr %34, align 8, !tbaa !11 %36 = icmp eq i64 %35, 0 - br i1 %36, label %277, label %37 + br i1 %36, label %275, label %37 37: ; preds = %33 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #29 invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull @.str.159, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.085.0161) - to label %38 unwind label %55 + to label %38 unwind label %54 38: ; preds = %37 %39 = load i64, ptr %11, align 8, !tbaa !11 @@ -12625,142 +12625,141 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.ex br i1 %47, label %.lr.ph159.preheader, label %_ZNSt6vectorIiSaIiEE6resizeEm.exit .lr.ph159.preheader: ; preds = %38 - %48 = and i64 %39, 2147483647 - %49 = load ptr, ptr %0, align 8, !tbaa !281 - %50 = load ptr, ptr %49, align 8, !tbaa !174 - %51 = getelementptr inbounds nuw i8, ptr %50, i64 12 - %52 = load i32, ptr %51, align 4, !tbaa !105 - %53 = icmp ult i32 %52, 2147483647 - br i1 %53, label %.lr.ph.lr.ph, label %._crit_edge + %48 = load ptr, ptr %0, align 8, !tbaa !281 + %49 = load ptr, ptr %48, align 8, !tbaa !174 + %50 = getelementptr inbounds nuw i8, ptr %49, i64 12 + %51 = load i32, ptr %50, align 4, !tbaa !105 + %52 = icmp ult i32 %51, 2147483647 + br i1 %52, label %.lr.ph.lr.ph, label %._crit_edge .lr.ph.lr.ph: ; preds = %.lr.ph159.preheader - %54 = add nuw i32 %52, 1 + %53 = add nuw i32 %51, 1 + %.sroa.speculated281 = call i32 @llvm.smin.i32(i32 %53, i32 %40) br label %.lr.ph -55: ; preds = %37 - %56 = landingpad { ptr, i32 } +54: ; preds = %37 + %55 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 .lr.ph159: ; preds = %.critedge - %57 = load ptr, ptr %0, align 8, !tbaa !281 - %58 = load ptr, ptr %57, align 8, !tbaa !174 - %59 = getelementptr inbounds nuw i8, ptr %58, i64 12 - %60 = load i32, ptr %59, align 4, !tbaa !105 - %61 = add nsw i32 %160, 1 - %62 = add i32 %61, %60 - %63 = icmp sgt i32 %62, %160 - br i1 %63, label %.lr.ph, label %._crit_edge, !llvm.loop !283 + %56 = load ptr, ptr %0, align 8, !tbaa !281 + %57 = load ptr, ptr %56, align 8, !tbaa !174 + %58 = getelementptr inbounds nuw i8, ptr %57, i64 12 + %59 = load i32, ptr %58, align 4, !tbaa !105 + %60 = add nsw i32 %.0155, 1 + %61 = add i32 %60, %59 + %.sroa.speculated = call i32 @llvm.smin.i32(i32 %61, i32 %40) + %62 = icmp sgt i32 %61, %.0155 + br i1 %62, label %.lr.ph, label %._crit_edge, !llvm.loop !283 .lr.ph: ; preds = %.lr.ph.lr.ph, %.lr.ph159 - %64 = phi i32 [ %54, %.lr.ph.lr.ph ], [ %62, %.lr.ph159 ] - %.029157282 = phi i64 [ 0, %.lr.ph.lr.ph ], [ %indvars.iv, %.lr.ph159 ] - %sext = shl i64 %.029157282, 32 - %65 = ashr exact i64 %sext, 32 - %66 = sext i32 %64 to i64 - %smin = call i64 @llvm.smin.i64(i64 %66, i64 %48) - br label %67 - -67: ; preds = %.lr.ph, %193 - %indvars.iv = phi i64 [ %smin, %.lr.ph ], [ %indvars.iv.next, %193 ] - %68 = load ptr, ptr %0, align 8, !tbaa !281 + %.sroa.speculated283 = phi i32 [ %.sroa.speculated281, %.lr.ph.lr.ph ], [ %.sroa.speculated, %.lr.ph159 ] + %.029157282 = phi i32 [ 0, %.lr.ph.lr.ph ], [ %.0155, %.lr.ph159 ] + %63 = sext i32 %.029157282 to i64 + br label %64 + +64: ; preds = %.lr.ph, %190 + %.0155 = phi i32 [ %.sroa.speculated283, %.lr.ph ], [ %191, %190 ] + %65 = load ptr, ptr %0, align 8, !tbaa !281 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #29 call void @llvm.experimental.noalias.scope.decl(metadata !284) - %69 = load i64, ptr %11, align 8, !tbaa !11, !noalias !284 - %70 = icmp ult i64 %69, %65 - br i1 %70, label %71, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i + %66 = load i64, ptr %11, align 8, !tbaa !11, !noalias !284 + %67 = icmp ult i64 %66, %63 + br i1 %67, label %68, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i -71: ; preds = %67 - invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.176, ptr noundef nonnull @.str.175, i64 noundef %65, i64 noundef %69) #31 +68: ; preds = %64 + invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.176, ptr noundef nonnull @.str.175, i64 noundef %63, i64 noundef %66) #31 to label %.noexc unwind label %.loopexit.split-lp -.noexc: ; preds = %71 +.noexc: ; preds = %68 unreachable -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i: ; preds = %67 - %72 = sub nsw i64 %indvars.iv, %65 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i: ; preds = %64 + %69 = sub nsw i32 %.0155, %.029157282 + %70 = zext nneg i32 %69 to i64 store ptr %13, ptr %7, align 8, !tbaa !8, !alias.scope !284 - %73 = load ptr, ptr %6, align 8, !tbaa !72, !noalias !284 - %74 = getelementptr inbounds nuw i8, ptr %73, i64 %65 - %75 = sub nuw i64 %69, %65 - %spec.select.i.i.i = call noundef i64 @llvm.umin.i64(i64 %72, i64 %75) + %71 = load ptr, ptr %6, align 8, !tbaa !72, !noalias !284 + %72 = getelementptr inbounds nuw i8, ptr %71, i64 %63 + %73 = sub nuw i64 %66, %63 + %spec.select.i.i.i = call noundef i64 @llvm.umin.i64(i64 %70, i64 %73) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #29, !noalias !284 store i64 %spec.select.i.i.i, ptr %4, align 8, !tbaa !79, !noalias !284 - %76 = icmp ugt i64 %spec.select.i.i.i, 15 - br i1 %76, label %.noexc10.i.i, label %._crit_edge.i.i.i + %74 = icmp samesign ugt i64 %spec.select.i.i.i, 15 + br i1 %74, label %.noexc10.i.i, label %._crit_edge.i.i.i .noexc10.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i - %77 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) + %75 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) to label %.noexc51 unwind label %.loopexit .noexc51: ; preds = %.noexc10.i.i - store ptr %77, ptr %7, align 8, !tbaa !72, !alias.scope !284 - %78 = load i64, ptr %4, align 8, !tbaa !79, !noalias !284 - store i64 %78, ptr %13, align 8, !tbaa !14, !alias.scope !284 + store ptr %75, ptr %7, align 8, !tbaa !72, !alias.scope !284 + %76 = load i64, ptr %4, align 8, !tbaa !79, !noalias !284 + store i64 %76, ptr %13, align 8, !tbaa !14, !alias.scope !284 br label %._crit_edge.i.i.i ._crit_edge.i.i.i: ; preds = %.noexc51, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i - %79 = phi ptr [ %77, %.noexc51 ], [ %13, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i ] - switch i64 %spec.select.i.i.i, label %82 [ - i64 1, label %80 - i64 0, label %83 + %77 = phi ptr [ %75, %.noexc51 ], [ %13, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i ] + switch i64 %spec.select.i.i.i, label %80 [ + i64 1, label %78 + i64 0, label %81 ] +78: ; preds = %._crit_edge.i.i.i + %79 = load i8, ptr %72, align 1, !tbaa !14 + store i8 %79, ptr %77, align 1, !tbaa !14 + br label %81 + 80: ; preds = %._crit_edge.i.i.i - %81 = load i8, ptr %74, align 1, !tbaa !14 - store i8 %81, ptr %79, align 1, !tbaa !14 - br label %83 - -82: ; preds = %._crit_edge.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %79, ptr align 1 %74, i64 %spec.select.i.i.i, i1 false) - br label %83 - -83: ; preds = %82, %80, %._crit_edge.i.i.i - %84 = load i64, ptr %4, align 8, !tbaa !79, !noalias !284 - store i64 %84, ptr %14, align 8, !tbaa !11, !alias.scope !284 - %85 = load ptr, ptr %7, align 8, !tbaa !72, !alias.scope !284 - %86 = getelementptr inbounds nuw i8, ptr %85, i64 %84 - store i8 0, ptr %86, align 1, !tbaa !14 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %77, ptr align 1 %72, i64 %spec.select.i.i.i, i1 false) + br label %81 + +81: ; preds = %80, %78, %._crit_edge.i.i.i + %82 = load i64, ptr %4, align 8, !tbaa !79, !noalias !284 + store i64 %82, ptr %14, align 8, !tbaa !11, !alias.scope !284 + %83 = load ptr, ptr %7, align 8, !tbaa !72, !alias.scope !284 + %84 = getelementptr inbounds nuw i8, ptr %83, i64 %82 + store i8 0, ptr %84, align 1, !tbaa !14 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #29, !noalias !284 - %87 = load ptr, ptr %68, align 8, !tbaa !174 - %88 = getelementptr inbounds nuw i8, ptr %87, i64 4 - %89 = load i32, ptr %88, align 4, !tbaa !15 - %.not.i = icmp eq i32 %89, 0 - br i1 %.not.i, label %90, label %91 + %85 = load ptr, ptr %65, align 8, !tbaa !174 + %86 = getelementptr inbounds nuw i8, ptr %85, i64 4 + %87 = load i32, ptr %86, align 4, !tbaa !15 + %.not.i = icmp eq i32 %87, 0 + br i1 %.not.i, label %88, label %89 -90: ; preds = %83 +88: ; preds = %81 invoke void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef nonnull @.str.62, i32 noundef 2808, ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.152) #31 - to label %.noexc52 unwind label %185 + to label %.noexc52 unwind label %182 -.noexc52: ; preds = %90 +.noexc52: ; preds = %88 unreachable -91: ; preds = %83 - %92 = getelementptr inbounds nuw i8, ptr %87, i64 88 - %93 = getelementptr inbounds nuw i8, ptr %87, i64 112 - %94 = load i64, ptr %93, align 8, !tbaa !93 - %.not.i72 = icmp ugt i64 %94, 20 - br i1 %.not.i72, label %108, label %95 +89: ; preds = %81 + %90 = getelementptr inbounds nuw i8, ptr %85, i64 88 + %91 = getelementptr inbounds nuw i8, ptr %85, i64 112 + %92 = load i64, ptr %91, align 8, !tbaa !93 + %.not.i72 = icmp ugt i64 %92, 20 + br i1 %.not.i72, label %106, label %93 -95: ; preds = %91 - %96 = getelementptr inbounds nuw i8, ptr %87, i64 104 - %.sroa.06.016.i = load ptr, ptr %96, align 8, !tbaa !127 +93: ; preds = %89 + %94 = getelementptr inbounds nuw i8, ptr %85, i64 104 + %.sroa.06.016.i = load ptr, ptr %94, align 8, !tbaa !127 %.not1117.i = icmp eq ptr %.sroa.06.016.i, null %.pre = load ptr, ptr %7, align 8, !tbaa !72 br i1 %.not1117.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %.lr.ph.i -.lr.ph.i: ; preds = %95 - %97 = load i64, ptr %14, align 8, !tbaa !11 - %.fr24.i = freeze i64 %97 - %98 = icmp eq i64 %.fr24.i, 0 - br i1 %98, label %.lr.ph.split.us.i, label %.lr.ph.split.i +.lr.ph.i: ; preds = %93 + %95 = load i64, ptr %14, align 8, !tbaa !11 + %.fr24.i = freeze i64 %95 + %96 = icmp eq i64 %.fr24.i, 0 + br i1 %96, label %.lr.ph.split.us.i, label %.lr.ph.split.i .lr.ph.split.us.i: ; preds = %.lr.ph.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i %.sroa.06.018.us.i = phi ptr [ %.sroa.06.0.us.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i ], [ %.sroa.06.016.i, %.lr.ph.i ] - %99 = getelementptr inbounds nuw i8, ptr %.sroa.06.018.us.i, i64 16 - %100 = load i64, ptr %99, align 8, !tbaa !11 - %101 = icmp eq i64 %100, 0 - br i1 %101, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i + %97 = getelementptr inbounds nuw i8, ptr %.sroa.06.018.us.i, i64 16 + %98 = load i64, ptr %97, align 8, !tbaa !11 + %99 = icmp eq i64 %98, 0 + br i1 %99, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i _ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i: ; preds = %.lr.ph.split.us.i %.sroa.06.0.us.i = load ptr, ptr %.sroa.06.018.us.i, align 8, !tbaa !127 @@ -12769,206 +12768,205 @@ _ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESa .lr.ph.split.i: ; preds = %.lr.ph.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i %.sroa.06.018.i = phi ptr [ %.sroa.06.0.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i ], [ %.sroa.06.016.i, %.lr.ph.i ] - %102 = getelementptr inbounds nuw i8, ptr %.sroa.06.018.i, i64 16 - %103 = load i64, ptr %102, align 8, !tbaa !11 - %104 = icmp eq i64 %.fr24.i, %103 - br i1 %104, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i + %100 = getelementptr inbounds nuw i8, ptr %.sroa.06.018.i, i64 16 + %101 = load i64, ptr %100, align 8, !tbaa !11 + %102 = icmp eq i64 %.fr24.i, %101 + br i1 %102, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i _ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i: ; preds = %.lr.ph.split.i - %105 = getelementptr inbounds nuw i8, ptr %.sroa.06.018.i, i64 8 - %106 = load ptr, ptr %105, align 8, !tbaa !72 - %bcmp.i.i.i.i = call i32 @bcmp(ptr %.pre, ptr %106, i64 %.fr24.i) - %107 = icmp eq i32 %bcmp.i.i.i.i, 0 - br i1 %107, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i + %103 = getelementptr inbounds nuw i8, ptr %.sroa.06.018.i, i64 8 + %104 = load ptr, ptr %103, align 8, !tbaa !72 + %bcmp.i.i.i.i = call i32 @bcmp(ptr %.pre, ptr %104, i64 %.fr24.i) + %105 = icmp eq i32 %bcmp.i.i.i.i, 0 + br i1 %105, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i _ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i, %.lr.ph.split.i %.sroa.06.0.i = load ptr, ptr %.sroa.06.018.i, align 8, !tbaa !127 %.not11.i = icmp eq ptr %.sroa.06.0.i, null br i1 %.not11.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %.lr.ph.split.i, !llvm.loop !272 -108: ; preds = %91 - %109 = load ptr, ptr %7, align 8, !tbaa !72 - %110 = load i64, ptr %14, align 8, !tbaa !11 - %111 = invoke noundef i64 @_ZSt11_Hash_bytesPKvmm(ptr noundef %109, i64 noundef %110, i64 noundef 3339675911) - to label %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i unwind label %112 +106: ; preds = %89 + %107 = load ptr, ptr %7, align 8, !tbaa !72 + %108 = load i64, ptr %14, align 8, !tbaa !11 + %109 = invoke noundef i64 @_ZSt11_Hash_bytesPKvmm(ptr noundef %107, i64 noundef %108, i64 noundef 3339675911) + to label %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i unwind label %110 -112: ; preds = %108 - %113 = landingpad { ptr, i32 } +110: ; preds = %106 + %111 = landingpad { ptr, i32 } catch ptr null - %114 = extractvalue { ptr, i32 } %113, 0 - call void @__clang_call_terminate(ptr %114) #32 + %112 = extractvalue { ptr, i32 } %111, 0 + call void @__clang_call_terminate(ptr %112) #32 unreachable -_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i: ; preds = %108 - %115 = getelementptr inbounds nuw i8, ptr %87, i64 96 - %116 = load i64, ptr %115, align 8, !tbaa !273 - %117 = urem i64 %111, %116 - %118 = load ptr, ptr %92, align 8, !tbaa !274 - %119 = getelementptr inbounds nuw ptr, ptr %118, i64 %117 - %120 = load ptr, ptr %119, align 8, !tbaa !275 - %.not.i.i.i73 = icmp eq ptr %120, null +_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i: ; preds = %106 + %113 = getelementptr inbounds nuw i8, ptr %85, i64 96 + %114 = load i64, ptr %113, align 8, !tbaa !273 + %115 = urem i64 %109, %114 + %116 = load ptr, ptr %90, align 8, !tbaa !274 + %117 = getelementptr inbounds nuw ptr, ptr %116, i64 %115 + %118 = load ptr, ptr %117, align 8, !tbaa !275 + %.not.i.i.i73 = icmp eq ptr %118, null %.pre195 = load ptr, ptr %7, align 8, !tbaa !72 - br i1 %.not.i.i.i73, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %121 - -121: ; preds = %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i - %122 = load ptr, ptr %120, align 8, !tbaa !127 - %123 = load i64, ptr %14, align 8 - %.fr22.i.i.i = freeze i64 %123 - %124 = icmp eq i64 %.fr22.i.i.i, 0 - %.phi.trans.insert25.i.i.i = getelementptr inbounds nuw i8, ptr %122, i64 48 + br i1 %.not.i.i.i73, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %119 + +119: ; preds = %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i + %120 = load ptr, ptr %118, align 8, !tbaa !127 + %121 = load i64, ptr %14, align 8 + %.fr22.i.i.i = freeze i64 %121 + %122 = icmp eq i64 %.fr22.i.i.i, 0 + %.phi.trans.insert25.i.i.i = getelementptr inbounds nuw i8, ptr %120, i64 48 %.pre26.i.i.i = load i64, ptr %.phi.trans.insert25.i.i.i, align 8, !tbaa !276 - br i1 %124, label %.split.us.i.i.i, label %.split.i.i.i - -.split.us.i.i.i: ; preds = %121, %132 - %125 = phi i64 [ %134, %132 ], [ %.pre26.i.i.i, %121 ] - %.0.us.i.i.i = phi ptr [ %131, %132 ], [ %122, %121 ] - %126 = icmp eq i64 %111, %125 - br i1 %126, label %127, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i - -127: ; preds = %.split.us.i.i.i - %128 = getelementptr inbounds nuw i8, ptr %.0.us.i.i.i, i64 16 - %129 = load i64, ptr %128, align 8, !tbaa !11 - %130 = icmp eq i64 %129, 0 - br i1 %130, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i - -_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i: ; preds = %127, %.split.us.i.i.i - %131 = load ptr, ptr %.0.us.i.i.i, align 8, !tbaa !127 - %.not18.us.i.i.i = icmp eq ptr %131, null - br i1 %.not18.us.i.i.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %132 - -132: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i - %133 = getelementptr inbounds nuw i8, ptr %131, i64 48 - %134 = load i64, ptr %133, align 8, !tbaa !276 - %135 = urem i64 %134, %116 - %.not19.us.i.i.i = icmp eq i64 %135, %117 + br i1 %122, label %.split.us.i.i.i, label %.split.i.i.i + +.split.us.i.i.i: ; preds = %119, %130 + %123 = phi i64 [ %132, %130 ], [ %.pre26.i.i.i, %119 ] + %.0.us.i.i.i = phi ptr [ %129, %130 ], [ %120, %119 ] + %124 = icmp eq i64 %109, %123 + br i1 %124, label %125, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i + +125: ; preds = %.split.us.i.i.i + %126 = getelementptr inbounds nuw i8, ptr %.0.us.i.i.i, i64 16 + %127 = load i64, ptr %126, align 8, !tbaa !11 + %128 = icmp eq i64 %127, 0 + br i1 %128, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i + +_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i: ; preds = %125, %.split.us.i.i.i + %129 = load ptr, ptr %.0.us.i.i.i, align 8, !tbaa !127 + %.not18.us.i.i.i = icmp eq ptr %129, null + br i1 %.not18.us.i.i.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %130 + +130: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i + %131 = getelementptr inbounds nuw i8, ptr %129, i64 48 + %132 = load i64, ptr %131, align 8, !tbaa !276 + %133 = urem i64 %132, %114 + %.not19.us.i.i.i = icmp eq i64 %133, %115 br i1 %.not19.us.i.i.i, label %.split.us.i.i.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, !llvm.loop !278 -.split.i.i.i: ; preds = %121, %146 - %136 = phi i64 [ %148, %146 ], [ %.pre26.i.i.i, %121 ] - %.0.i.i.i = phi ptr [ %145, %146 ], [ %122, %121 ] - %137 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 8 - %138 = icmp eq i64 %111, %136 - br i1 %138, label %139, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i - -139: ; preds = %.split.i.i.i - %140 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 16 - %141 = load i64, ptr %140, align 8, !tbaa !11 - %142 = icmp eq i64 %.fr22.i.i.i, %141 - br i1 %142, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i - -_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i: ; preds = %139 - %143 = load ptr, ptr %137, align 8, !tbaa !72 - %bcmp.i.i.i.i.i.i.i = call i32 @bcmp(ptr %.pre195, ptr %143, i64 %.fr22.i.i.i) - %144 = icmp eq i32 %bcmp.i.i.i.i.i.i.i, 0 - br i1 %144, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i - -_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i, %139, %.split.i.i.i - %145 = load ptr, ptr %.0.i.i.i, align 8, !tbaa !127 - %.not18.i.i.i = icmp eq ptr %145, null - br i1 %.not18.i.i.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %146 - -146: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i - %147 = getelementptr inbounds nuw i8, ptr %145, i64 48 - %148 = load i64, ptr %147, align 8, !tbaa !276 - %149 = urem i64 %148, %116 - %.not19.i.i.i = icmp eq i64 %149, %117 +.split.i.i.i: ; preds = %119, %144 + %134 = phi i64 [ %146, %144 ], [ %.pre26.i.i.i, %119 ] + %.0.i.i.i = phi ptr [ %143, %144 ], [ %120, %119 ] + %135 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 8 + %136 = icmp eq i64 %109, %134 + br i1 %136, label %137, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i + +137: ; preds = %.split.i.i.i + %138 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 16 + %139 = load i64, ptr %138, align 8, !tbaa !11 + %140 = icmp eq i64 %.fr22.i.i.i, %139 + br i1 %140, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i + +_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i: ; preds = %137 + %141 = load ptr, ptr %135, align 8, !tbaa !72 + %bcmp.i.i.i.i.i.i.i = call i32 @bcmp(ptr %.pre195, ptr %141, i64 %.fr22.i.i.i) + %142 = icmp eq i32 %bcmp.i.i.i.i.i.i.i, 0 + br i1 %142, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i + +_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i, %137, %.split.i.i.i + %143 = load ptr, ptr %.0.i.i.i, align 8, !tbaa !127 + %.not18.i.i.i = icmp eq ptr %143, null + br i1 %.not18.i.i.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %144 + +144: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i + %145 = getelementptr inbounds nuw i8, ptr %143, i64 48 + %146 = load i64, ptr %145, align 8, !tbaa !276 + %147 = urem i64 %146, %114 + %.not19.i.i.i = icmp eq i64 %147, %115 br i1 %.not19.i.i.i, label %.split.i.i.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, !llvm.loop !278 -.noexc53: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i, %.lr.ph.split.us.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i, %127 - %150 = phi ptr [ %.pre195, %127 ], [ %.pre195, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i ], [ %.pre, %.lr.ph.split.us.i ], [ %.pre, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i ] - %.sroa.06.1.i = phi ptr [ %.0.us.i.i.i, %127 ], [ %.0.i.i.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i ], [ %.sroa.06.018.us.i, %.lr.ph.split.us.i ], [ %.sroa.06.018.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i ] - %151 = getelementptr inbounds nuw i8, ptr %.sroa.06.1.i, i64 40 - %152 = load i32, ptr %151, align 8, !tbaa !134 +.noexc53: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i, %.lr.ph.split.us.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i, %125 + %148 = phi ptr [ %.pre195, %125 ], [ %.pre195, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i ], [ %.pre, %.lr.ph.split.us.i ], [ %.pre, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i ] + %.sroa.06.1.i = phi ptr [ %.0.us.i.i.i, %125 ], [ %.0.i.i.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i ], [ %.sroa.06.018.us.i, %.lr.ph.split.us.i ], [ %.sroa.06.018.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i ] + %149 = getelementptr inbounds nuw i8, ptr %.sroa.06.1.i, i64 40 + %150 = load i32, ptr %149, align 8, !tbaa !134 br label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit -_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i, %146, %132, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i, %95, %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i, %.noexc53 - %153 = phi ptr [ %150, %.noexc53 ], [ %.pre195, %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i ], [ %.pre, %95 ], [ %.pre195, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i ], [ %.pre195, %132 ], [ %.pre195, %146 ], [ %.pre195, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i ], [ %.pre, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i ], [ %.pre, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i ] - %.0.i = phi i32 [ %152, %.noexc53 ], [ -1, %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i ], [ -1, %95 ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i ], [ -1, %132 ], [ -1, %146 ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i ] - %154 = icmp eq ptr %153, %13 - br i1 %154, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i +_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i, %144, %130, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i, %93, %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i, %.noexc53 + %151 = phi ptr [ %148, %.noexc53 ], [ %.pre195, %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i ], [ %.pre, %93 ], [ %.pre195, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i ], [ %.pre195, %130 ], [ %.pre195, %144 ], [ %.pre195, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i ], [ %.pre, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i ], [ %.pre, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i ] + %.0.i = phi i32 [ %150, %.noexc53 ], [ -1, %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i ], [ -1, %93 ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i ], [ -1, %130 ], [ -1, %144 ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i ] + %152 = icmp eq ptr %151, %13 + br i1 %152, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit - %155 = load i64, ptr %14, align 8, !tbaa !11 - %156 = icmp ult i64 %155, 16 - call void @llvm.assume(i1 %156) + %153 = load i64, ptr %14, align 8, !tbaa !11 + %154 = icmp ult i64 %153, 16 + call void @llvm.assume(i1 %154) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit - %157 = load i64, ptr %13, align 8, !tbaa !14 - %158 = add i64 %157, 1 - call void @_ZdlPvm(ptr noundef %153, i64 noundef %158) #30 + %155 = load i64, ptr %13, align 8, !tbaa !14 + %156 = add i64 %155, 1 + call void @_ZdlPvm(ptr noundef %151, i64 noundef %156) #30 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.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #29 %.not = icmp eq i32 %.0.i, -1 - br i1 %.not, label %193, label %159 - -159: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %160 = trunc nsw i64 %indvars.iv to i32 - %161 = load ptr, ptr %12, align 8, !tbaa !148 - %162 = load ptr, ptr %15, align 8, !tbaa !119 - %.not.i54 = icmp eq ptr %161, %162 - br i1 %.not.i54, label %165, label %163 - -163: ; preds = %159 - store i32 %.0.i, ptr %161, align 4, !tbaa !69 - %164 = getelementptr inbounds nuw i8, ptr %161, i64 4 - store ptr %164, ptr %12, align 8, !tbaa !148 + br i1 %.not, label %190, label %157 + +157: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit + %158 = load ptr, ptr %12, align 8, !tbaa !148 + %159 = load ptr, ptr %15, align 8, !tbaa !119 + %.not.i54 = icmp eq ptr %158, %159 + br i1 %.not.i54, label %162, label %160 + +160: ; preds = %157 + store i32 %.0.i, ptr %158, align 4, !tbaa !69 + %161 = getelementptr inbounds nuw i8, ptr %158, i64 4 + store ptr %161, ptr %12, align 8, !tbaa !148 br label %.critedge -165: ; preds = %159 - %166 = load ptr, ptr %2, align 8, !tbaa !118 - %167 = ptrtoint ptr %161 to i64 - %168 = ptrtoint ptr %166 to i64 - %169 = sub i64 %167, %168 - %170 = icmp eq i64 %169, 9223372036854775804 - br i1 %170, label %171, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i +162: ; preds = %157 + %163 = load ptr, ptr %2, align 8, !tbaa !118 + %164 = ptrtoint ptr %158 to i64 + %165 = ptrtoint ptr %163 to i64 + %166 = sub i64 %164, %165 + %167 = icmp eq i64 %166, 9223372036854775804 + br i1 %167, label %168, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i -171: ; preds = %165 +168: ; preds = %162 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.160) #31 to label %.noexc56 unwind label %.loopexit.split-lp106 -.noexc56: ; preds = %171 +.noexc56: ; preds = %168 unreachable -_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i: ; preds = %165 - %172 = ashr exact i64 %169, 2 - %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %172, i64 1) - %173 = add nsw i64 %.sroa.speculated.i.i.i, %172 - %174 = icmp ult i64 %173, %172 - %175 = call i64 @llvm.umin.i64(i64 %173, i64 2305843009213693951) - %176 = select i1 %174, i64 2305843009213693951, i64 %175 - %.not.i.i.i55 = icmp ne i64 %176, 0 +_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i: ; preds = %162 + %169 = ashr exact i64 %166, 2 + %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %169, i64 1) + %170 = add nsw i64 %.sroa.speculated.i.i.i, %169 + %171 = icmp ult i64 %170, %169 + %172 = call i64 @llvm.umin.i64(i64 %170, i64 2305843009213693951) + %173 = select i1 %171, i64 2305843009213693951, i64 %172 + %.not.i.i.i55 = icmp ne i64 %173, 0 call void @llvm.assume(i1 %.not.i.i.i55) - %177 = shl nuw nsw i64 %176, 2 - %178 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %177) #33 + %174 = shl nuw nsw i64 %173, 2 + %175 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %174) #33 to label %.noexc57 unwind label %.loopexit105 .noexc57: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i - %179 = getelementptr inbounds i8, ptr %178, i64 %169 - store i32 %.0.i, ptr %179, align 4, !tbaa !69 - %180 = icmp sgt i64 %169, 0 - br i1 %180, label %181, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i + %176 = getelementptr inbounds i8, ptr %175, i64 %166 + store i32 %.0.i, ptr %176, align 4, !tbaa !69 + %177 = icmp sgt i64 %166, 0 + br i1 %177, label %178, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i -181: ; preds = %.noexc57 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %178, ptr align 4 %166, i64 %169, i1 false) +178: ; preds = %.noexc57 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %175, ptr align 4 %163, i64 %166, i1 false) br label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i -_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i: ; preds = %181, %.noexc57 - %182 = getelementptr inbounds nuw i8, ptr %179, i64 4 - %.not.i17.i.i = icmp eq ptr %166, null - br i1 %.not.i17.i.i, label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i, label %183 +_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i: ; preds = %178, %.noexc57 + %179 = getelementptr inbounds nuw i8, ptr %176, i64 4 + %.not.i17.i.i = icmp eq ptr %163, null + br i1 %.not.i17.i.i, label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i, label %180 -183: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i - call void @_ZdlPvm(ptr noundef nonnull %166, i64 noundef %169) #30 +180: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i + call void @_ZdlPvm(ptr noundef nonnull %163, i64 noundef %166) #30 br label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i -_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i: ; preds = %183, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i - store ptr %178, ptr %2, align 8, !tbaa !118 - store ptr %182, ptr %12, align 8, !tbaa !148 - %184 = getelementptr inbounds nuw i32, ptr %178, i64 %176 - store ptr %184, ptr %15, align 8, !tbaa !119 +_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i: ; preds = %180, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i + store ptr %175, ptr %2, align 8, !tbaa !118 + store ptr %179, ptr %12, align 8, !tbaa !148 + %181 = getelementptr inbounds nuw i32, ptr %175, i64 %173 + store ptr %181, ptr %15, align 8, !tbaa !119 br label %.critedge .loopexit: ; preds = %.noexc10.i.i @@ -12976,314 +12974,314 @@ _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIP cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 -.loopexit.split-lp: ; preds = %71 +.loopexit.split-lp: ; preds = %68 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 -185: ; preds = %90 - %186 = landingpad { ptr, i32 } +182: ; preds = %88 + %183 = landingpad { ptr, i32 } cleanup - %187 = load ptr, ptr %7, align 8, !tbaa !72 - %188 = icmp eq ptr %187, %13 - br i1 %188, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i59, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58 + %184 = load ptr, ptr %7, align 8, !tbaa !72 + %185 = icmp eq ptr %184, %13 + br i1 %185, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i59, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i59: ; preds = %185 - %189 = load i64, ptr %14, align 8, !tbaa !11 - %190 = icmp ult i64 %189, 16 - call void @llvm.assume(i1 %190) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i59: ; preds = %182 + %186 = load i64, ptr %14, align 8, !tbaa !11 + %187 = icmp ult i64 %186, 16 + call void @llvm.assume(i1 %187) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58: ; preds = %185 - %191 = load i64, ptr %13, align 8, !tbaa !14 - %192 = add i64 %191, 1 - call void @_ZdlPvm(ptr noundef %187, i64 noundef %192) #30 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58: ; preds = %182 + %188 = load i64, ptr %13, align 8, !tbaa !14 + %189 = add i64 %188, 1 + call void @_ZdlPvm(ptr noundef %184, i64 noundef %189) #30 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60: ; preds = %.loopexit, %.loopexit.split-lp, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i59 - %.pn = phi { ptr, i32 } [ %186, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i59 ], [ %186, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %.pn = phi { ptr, i32 } [ %183, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i59 ], [ %183, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #29 - br label %279 + br label %277 .loopexit105: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i %lpad.loopexit107 = landingpad { ptr, i32 } cleanup - br label %279 + br label %277 -.loopexit.split-lp106: ; preds = %171 +.loopexit.split-lp106: ; preds = %168 %lpad.loopexit.split-lp108 = landingpad { ptr, i32 } cleanup - br label %279 + br label %277 -193: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %194 = icmp sgt i64 %indvars.iv.next, %65 - br i1 %194, label %67, label %._crit_edge.loopexit, !llvm.loop !287 +190: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit + %191 = add nsw i32 %.0155, -1 + %192 = icmp sgt i32 %191, %.029157282 + br i1 %192, label %64, label %._crit_edge.loopexit, !llvm.loop !287 -._crit_edge.loopexit: ; preds = %193 +._crit_edge.loopexit: ; preds = %190 %.pre196 = load ptr, ptr %12, align 8, !tbaa !148 br label %._crit_edge ._crit_edge: ; preds = %.lr.ph159, %.lr.ph159.preheader, %._crit_edge.loopexit - %195 = phi ptr [ %.pre196, %._crit_edge.loopexit ], [ %41, %.lr.ph159.preheader ], [ %240, %.lr.ph159 ] - %196 = load ptr, ptr %2, align 8, !tbaa !118 - %197 = ptrtoint ptr %195 to i64 - %198 = ptrtoint ptr %196 to i64 - %199 = sub i64 %197, %198 - %200 = ashr exact i64 %199, 2 - %201 = icmp ugt i64 %46, %200 - br i1 %201, label %202, label %235 - -202: ; preds = %._crit_edge - %203 = sub nuw nsw i64 %46, %200 - %204 = load ptr, ptr %15, align 8, !tbaa !119 - %205 = ptrtoint ptr %204 to i64 - %206 = sub i64 %205, %197 - %207 = ashr exact i64 %206, 2 - %208 = icmp ult i64 %200, 2305843009213693952 + %193 = phi ptr [ %.pre196, %._crit_edge.loopexit ], [ %41, %.lr.ph159.preheader ], [ %238, %.lr.ph159 ] + %194 = load ptr, ptr %2, align 8, !tbaa !118 + %195 = ptrtoint ptr %193 to i64 + %196 = ptrtoint ptr %194 to i64 + %197 = sub i64 %195, %196 + %198 = ashr exact i64 %197, 2 + %199 = icmp ugt i64 %46, %198 + br i1 %199, label %200, label %233 + +200: ; preds = %._crit_edge + %201 = sub nuw nsw i64 %46, %198 + %202 = load ptr, ptr %15, align 8, !tbaa !119 + %203 = ptrtoint ptr %202 to i64 + %204 = sub i64 %203, %195 + %205 = ashr exact i64 %204, 2 + %206 = icmp ult i64 %198, 2305843009213693952 + call void @llvm.assume(i1 %206) + %207 = xor i64 %198, 2305843009213693951 + %208 = icmp ule i64 %205, %207 call void @llvm.assume(i1 %208) - %209 = xor i64 %200, 2305843009213693951 - %210 = icmp ule i64 %207, %209 - call void @llvm.assume(i1 %210) - %.not28.i = icmp ult i64 %207, %203 - br i1 %.not28.i, label %217, label %211 - -211: ; preds = %202 - store i32 0, ptr %195, align 4, !tbaa !69 - %212 = getelementptr i8, ptr %195, i64 4 - %213 = icmp eq i64 %203, 1 - br i1 %213, label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i, label %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i - -_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i: ; preds = %211 - %214 = shl i64 %203, 2 - %215 = add i64 %214, -4 - call void @llvm.memset.p0.i64(ptr align 4 %212, i8 0, i64 %215, i1 false), !tbaa !69 - %216 = getelementptr i32, ptr %195, i64 %203 + %.not28.i = icmp ult i64 %205, %201 + br i1 %.not28.i, label %215, label %209 + +209: ; preds = %200 + store i32 0, ptr %193, align 4, !tbaa !69 + %210 = getelementptr i8, ptr %193, i64 4 + %211 = icmp eq i64 %201, 1 + br i1 %211, label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i, label %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i + +_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i: ; preds = %209 + %212 = shl i64 %201, 2 + %213 = add i64 %212, -4 + call void @llvm.memset.p0.i64(ptr align 4 %210, i8 0, i64 %213, i1 false), !tbaa !69 + %214 = getelementptr i32, ptr %193, i64 %201 br label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i -_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i: ; preds = %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i, %211 - %.0.i.i.i.i = phi ptr [ %212, %211 ], [ %216, %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i ] +_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i: ; preds = %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i, %209 + %.0.i.i.i.i = phi ptr [ %210, %209 ], [ %214, %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i ] store ptr %.0.i.i.i.i, ptr %12, align 8, !tbaa !148 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit -217: ; preds = %202 - %218 = icmp ult i64 %209, %203 - br i1 %218, label %219, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i +215: ; preds = %200 + %216 = icmp ult i64 %207, %201 + br i1 %216, label %217, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i -219: ; preds = %217 +217: ; preds = %215 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.168) #31 to label %.noexc75 unwind label %.loopexit.split-lp111 -.noexc75: ; preds = %219 +.noexc75: ; preds = %217 unreachable -_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i: ; preds = %217 - %.sroa.speculated.i.i = call i64 @llvm.umax.i64(i64 %200, i64 %203) - %220 = add nuw nsw i64 %.sroa.speculated.i.i, %200 - %221 = call i64 @llvm.umin.i64(i64 %220, i64 2305843009213693951) - %222 = shl nuw nsw i64 %221, 2 - %223 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %222) #33 +_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i: ; preds = %215 + %.sroa.speculated.i.i = call i64 @llvm.umax.i64(i64 %198, i64 %201) + %218 = add nuw nsw i64 %.sroa.speculated.i.i, %198 + %219 = call i64 @llvm.umin.i64(i64 %218, i64 2305843009213693951) + %220 = shl nuw nsw i64 %219, 2 + %221 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %220) #33 to label %.noexc76 unwind label %.loopexit110 .noexc76: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i - %224 = getelementptr inbounds nuw i8, ptr %223, i64 %199 - store i32 0, ptr %224, align 4, !tbaa !69 - %225 = icmp eq i64 %203, 1 - br i1 %225, label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i, label %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i30.i + %222 = getelementptr inbounds nuw i8, ptr %221, i64 %197 + store i32 0, ptr %222, align 4, !tbaa !69 + %223 = icmp eq i64 %201, 1 + br i1 %223, label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i, label %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i30.i _ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i30.i: ; preds = %.noexc76 - %226 = getelementptr i8, ptr %224, i64 4 - %227 = shl nuw nsw i64 %203, 2 - %228 = add nsw i64 %227, -4 - call void @llvm.memset.p0.i64(ptr align 4 %226, i8 0, i64 %228, i1 false), !tbaa !69 + %224 = getelementptr i8, ptr %222, i64 4 + %225 = shl nuw nsw i64 %201, 2 + %226 = add nsw i64 %225, -4 + call void @llvm.memset.p0.i64(ptr align 4 %224, i8 0, i64 %226, i1 false), !tbaa !69 br label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i _ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i: ; preds = %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i30.i, %.noexc76 - %229 = icmp sgt i64 %199, 0 - br i1 %229, label %230, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i + %227 = icmp sgt i64 %197, 0 + br i1 %227, label %228, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i -230: ; preds = %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %223, ptr align 4 %196, i64 %199, i1 false) +228: ; preds = %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %221, ptr align 4 %194, i64 %197, i1 false) br label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i -_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i: ; preds = %230, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i - %.not.i34.i = icmp eq ptr %196, null - br i1 %.not.i34.i, label %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i, label %231 +_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i: ; preds = %228, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i + %.not.i34.i = icmp eq ptr %194, null + br i1 %.not.i34.i, label %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i, label %229 -231: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i - %232 = sub i64 %205, %198 - call void @_ZdlPvm(ptr noundef nonnull %196, i64 noundef %232) #30 +229: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i + %230 = sub i64 %203, %196 + call void @_ZdlPvm(ptr noundef nonnull %194, i64 noundef %230) #30 br label %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i -_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i: ; preds = %231, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i - store ptr %223, ptr %2, align 8, !tbaa !118 - %233 = getelementptr inbounds nuw i32, ptr %224, i64 %203 - store ptr %233, ptr %12, align 8, !tbaa !148 - %234 = getelementptr inbounds nuw i32, ptr %223, i64 %221 - store ptr %234, ptr %15, align 8, !tbaa !119 +_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i: ; preds = %229, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i + store ptr %221, ptr %2, align 8, !tbaa !118 + %231 = getelementptr inbounds nuw i32, ptr %222, i64 %201 + store ptr %231, ptr %12, align 8, !tbaa !148 + %232 = getelementptr inbounds nuw i32, ptr %221, i64 %219 + store ptr %232, ptr %15, align 8, !tbaa !119 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit -235: ; preds = %._crit_edge - %236 = icmp ult i64 %46, %200 - br i1 %236, label %237, label %_ZNSt6vectorIiSaIiEE6resizeEm.exit +233: ; preds = %._crit_edge + %234 = icmp ult i64 %46, %198 + br i1 %234, label %235, label %_ZNSt6vectorIiSaIiEE6resizeEm.exit -237: ; preds = %235 - %238 = getelementptr inbounds nuw i8, ptr %196, i64 %45 - %.not.i.i = icmp eq ptr %195, %238 - br i1 %.not.i.i, label %_ZNSt6vectorIiSaIiEE6resizeEm.exit, label %239 +235: ; preds = %233 + %236 = getelementptr inbounds nuw i8, ptr %194, i64 %45 + %.not.i.i = icmp eq ptr %193, %236 + br i1 %.not.i.i, label %_ZNSt6vectorIiSaIiEE6resizeEm.exit, label %237 -239: ; preds = %237 - store ptr %238, ptr %12, align 8, !tbaa !148 +237: ; preds = %235 + store ptr %236, ptr %12, align 8, !tbaa !148 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit .loopexit110: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i %lpad.loopexit112 = landingpad { ptr, i32 } cleanup - br label %279 + br label %277 -.loopexit.split-lp111: ; preds = %219 +.loopexit.split-lp111: ; preds = %217 %lpad.loopexit.split-lp113 = landingpad { ptr, i32 } cleanup - br label %279 + br label %277 -.critedge: ; preds = %163, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i - %240 = phi ptr [ %164, %163 ], [ %182, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ] - %241 = icmp slt i32 %160, %40 - br i1 %241, label %.lr.ph159, label %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit, !llvm.loop !283 +.critedge: ; preds = %160, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i + %238 = phi ptr [ %161, %160 ], [ %179, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ] + %239 = icmp slt i32 %.0155, %40 + br i1 %239, label %.lr.ph159, label %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit, !llvm.loop !283 _ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit: ; preds = %.critedge %.pr.pre = load ptr, ptr %2, align 8, !tbaa !118 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit -_ZNSt6vectorIiSaIiEE6resizeEm.exit: ; preds = %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i, %235, %237, %239, %38, %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i - %242 = phi ptr [ %233, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i ], [ %240, %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit ], [ %41, %38 ], [ %238, %239 ], [ %195, %237 ], [ %195, %235 ], [ %.0.i.i.i.i, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] - %243 = phi ptr [ %223, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i ], [ %.pr.pre, %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit ], [ %42, %38 ], [ %196, %239 ], [ %196, %237 ], [ %196, %235 ], [ %196, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] - %244 = ptrtoint ptr %242 to i64 - %245 = ptrtoint ptr %243 to i64 - %246 = sub i64 %244, %245 - %247 = icmp eq i64 %45, %246 - br i1 %247, label %248, label %_ZNSt6vectorIiSaIiEE9push_backEOi.exit - -248: ; preds = %_ZNSt6vectorIiSaIiEE6resizeEm.exit - %249 = load ptr, ptr %0, align 8, !tbaa !281 - %250 = load ptr, ptr %249, align 8, !tbaa !174 - %251 = getelementptr inbounds nuw i8, ptr %250, i64 32 - %252 = load i32, ptr %251, align 8, !tbaa !75 - %253 = load ptr, ptr %15, align 8, !tbaa !119 - %.not.i.i62 = icmp eq ptr %242, %253 - br i1 %.not.i.i62, label %256, label %254 - -254: ; preds = %248 - store i32 %252, ptr %242, align 4, !tbaa !69 - %255 = getelementptr inbounds nuw i8, ptr %242, i64 4 - store ptr %255, ptr %12, align 8, !tbaa !148 +_ZNSt6vectorIiSaIiEE6resizeEm.exit: ; preds = %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i, %233, %235, %237, %38, %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i + %240 = phi ptr [ %231, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i ], [ %238, %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit ], [ %41, %38 ], [ %236, %237 ], [ %193, %235 ], [ %193, %233 ], [ %.0.i.i.i.i, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] + %241 = phi ptr [ %221, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i ], [ %.pr.pre, %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit ], [ %42, %38 ], [ %194, %237 ], [ %194, %235 ], [ %194, %233 ], [ %194, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] + %242 = ptrtoint ptr %240 to i64 + %243 = ptrtoint ptr %241 to i64 + %244 = sub i64 %242, %243 + %245 = icmp eq i64 %45, %244 + br i1 %245, label %246, label %_ZNSt6vectorIiSaIiEE9push_backEOi.exit + +246: ; preds = %_ZNSt6vectorIiSaIiEE6resizeEm.exit + %247 = load ptr, ptr %0, align 8, !tbaa !281 + %248 = load ptr, ptr %247, align 8, !tbaa !174 + %249 = getelementptr inbounds nuw i8, ptr %248, i64 32 + %250 = load i32, ptr %249, align 8, !tbaa !75 + %251 = load ptr, ptr %15, align 8, !tbaa !119 + %.not.i.i62 = icmp eq ptr %240, %251 + br i1 %.not.i.i62, label %254, label %252 + +252: ; preds = %246 + store i32 %250, ptr %240, align 4, !tbaa !69 + %253 = getelementptr inbounds nuw i8, ptr %240, i64 4 + store ptr %253, ptr %12, align 8, !tbaa !148 br label %_ZNSt6vectorIiSaIiEE9push_backEOi.exit -256: ; preds = %248 - %257 = icmp eq i64 %246, 9223372036854775804 - br i1 %257, label %258, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i +254: ; preds = %246 + %255 = icmp eq i64 %244, 9223372036854775804 + br i1 %255, label %256, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i -258: ; preds = %256 +256: ; preds = %254 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.160) #31 to label %.noexc64 unwind label %.loopexit.split-lp116 -.noexc64: ; preds = %258 +.noexc64: ; preds = %256 unreachable -_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %256 +_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %254 %.sroa.speculated.i.i.i.i = call i64 @llvm.umax.i64(i64 %46, i64 1) - %259 = add nsw i64 %.sroa.speculated.i.i.i.i, %46 - %260 = icmp ult i64 %259, %46 - %261 = call i64 @llvm.umin.i64(i64 %259, i64 2305843009213693951) - %262 = select i1 %260, i64 2305843009213693951, i64 %261 - %.not.i.i.i.i63 = icmp ne i64 %262, 0 + %257 = add nsw i64 %.sroa.speculated.i.i.i.i, %46 + %258 = icmp ult i64 %257, %46 + %259 = call i64 @llvm.umin.i64(i64 %257, i64 2305843009213693951) + %260 = select i1 %258, i64 2305843009213693951, i64 %259 + %.not.i.i.i.i63 = icmp ne i64 %260, 0 call void @llvm.assume(i1 %.not.i.i.i.i63) - %263 = shl nuw nsw i64 %262, 2 - %264 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %263) #33 + %261 = shl nuw nsw i64 %260, 2 + %262 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %261) #33 to label %.noexc65 unwind label %.loopexit115 .noexc65: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i - %265 = getelementptr inbounds i8, ptr %264, i64 %246 - store i32 %252, ptr %265, align 4, !tbaa !69 - %266 = icmp sgt i64 %246, 0 - br i1 %266, label %267, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i + %263 = getelementptr inbounds i8, ptr %262, i64 %244 + store i32 %250, ptr %263, align 4, !tbaa !69 + %264 = icmp sgt i64 %244, 0 + br i1 %264, label %265, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i -267: ; preds = %.noexc65 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %264, ptr align 4 %243, i64 %246, i1 false) +265: ; preds = %.noexc65 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %262, ptr align 4 %241, i64 %244, i1 false) br label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i -_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i: ; preds = %267, %.noexc65 - %268 = getelementptr inbounds nuw i8, ptr %265, i64 4 - %.not.i17.i.i.i = icmp eq ptr %243, null - br i1 %.not.i17.i.i.i, label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i, label %269 +_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i: ; preds = %265, %.noexc65 + %266 = getelementptr inbounds nuw i8, ptr %263, i64 4 + %.not.i17.i.i.i = icmp eq ptr %241, null + br i1 %.not.i17.i.i.i, label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i, label %267 -269: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i - call void @_ZdlPvm(ptr noundef nonnull %243, i64 noundef %246) #30 +267: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i + call void @_ZdlPvm(ptr noundef nonnull %241, i64 noundef %244) #30 br label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i -_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i: ; preds = %269, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i - store ptr %264, ptr %2, align 8, !tbaa !118 - store ptr %268, ptr %12, align 8, !tbaa !148 - %270 = getelementptr inbounds nuw i32, ptr %264, i64 %262 - store ptr %270, ptr %15, align 8, !tbaa !119 +_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i: ; preds = %267, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i + store ptr %262, ptr %2, align 8, !tbaa !118 + store ptr %266, ptr %12, align 8, !tbaa !148 + %268 = getelementptr inbounds nuw i32, ptr %262, i64 %260 + store ptr %268, ptr %15, align 8, !tbaa !119 br label %_ZNSt6vectorIiSaIiEE9push_backEOi.exit .loopexit115: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i %lpad.loopexit117 = landingpad { ptr, i32 } cleanup - br label %279 + br label %277 -.loopexit.split-lp116: ; preds = %258 +.loopexit.split-lp116: ; preds = %256 %lpad.loopexit.split-lp118 = landingpad { ptr, i32 } cleanup - br label %279 + br label %277 -_ZNSt6vectorIiSaIiEE9push_backEOi.exit: ; preds = %254, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i, %_ZNSt6vectorIiSaIiEE6resizeEm.exit - %271 = load ptr, ptr %6, align 8, !tbaa !72 - %272 = icmp eq ptr %271, %16 - br i1 %272, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i67, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i66 +_ZNSt6vectorIiSaIiEE9push_backEOi.exit: ; preds = %252, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i, %_ZNSt6vectorIiSaIiEE6resizeEm.exit + %269 = load ptr, ptr %6, align 8, !tbaa !72 + %270 = icmp eq ptr %269, %16 + br i1 %270, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i67, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i66 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i67: ; preds = %_ZNSt6vectorIiSaIiEE9push_backEOi.exit - %273 = load i64, ptr %11, align 8, !tbaa !11 - %274 = icmp ult i64 %273, 16 - call void @llvm.assume(i1 %274) + %271 = load i64, ptr %11, align 8, !tbaa !11 + %272 = icmp ult i64 %271, 16 + call void @llvm.assume(i1 %272) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i66: ; preds = %_ZNSt6vectorIiSaIiEE9push_backEOi.exit - %275 = load i64, ptr %16, align 8, !tbaa !14 - %276 = add i64 %275, 1 - call void @_ZdlPvm(ptr noundef %271, i64 noundef %276) #30 + %273 = load i64, ptr %16, align 8, !tbaa !14 + %274 = add i64 %273, 1 + call void @_ZdlPvm(ptr noundef %269, i64 noundef %274) #30 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i67, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i66 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #29 - br label %277 + br label %275 -277: ; preds = %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68 - %278 = getelementptr inbounds nuw i8, ptr %.sroa.085.0161, i64 32 - %.not98 = icmp eq ptr %278, %10 +275: ; preds = %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68 + %276 = getelementptr inbounds nuw i8, ptr %.sroa.085.0161, i64 32 + %.not98 = icmp eq ptr %276, %10 br i1 %.not98, label %._crit_edge164, label %33 -279: ; preds = %.loopexit115, %.loopexit.split-lp116, %.loopexit110, %.loopexit.split-lp111, %.loopexit105, %.loopexit.split-lp106, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 +277: ; preds = %.loopexit115, %.loopexit.split-lp116, %.loopexit110, %.loopexit.split-lp111, %.loopexit105, %.loopexit.split-lp106, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 %.pn48 = phi { ptr, i32 } [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 ], [ %lpad.loopexit107, %.loopexit105 ], [ %lpad.loopexit.split-lp108, %.loopexit.split-lp106 ], [ %lpad.loopexit112, %.loopexit110 ], [ %lpad.loopexit.split-lp113, %.loopexit.split-lp111 ], [ %lpad.loopexit117, %.loopexit115 ], [ %lpad.loopexit.split-lp118, %.loopexit.split-lp116 ] - %280 = load ptr, ptr %6, align 8, !tbaa !72 - %281 = icmp eq ptr %280, %16 - br i1 %281, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70: ; preds = %279 - %282 = load i64, ptr %11, align 8, !tbaa !11 - %283 = icmp ult i64 %282, 16 - call void @llvm.assume(i1 %283) + %278 = load ptr, ptr %6, align 8, !tbaa !72 + %279 = icmp eq ptr %278, %16 + br i1 %279, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70: ; preds = %277 + %280 = load i64, ptr %11, align 8, !tbaa !11 + %281 = icmp ult i64 %280, 16 + call void @llvm.assume(i1 %281) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69: ; preds = %279 - %284 = load i64, ptr %16, align 8, !tbaa !14 - %285 = add i64 %284, 1 - call void @_ZdlPvm(ptr noundef %280, i64 noundef %285) #30 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69: ; preds = %277 + %282 = load i64, ptr %16, align 8, !tbaa !14 + %283 = add i64 %282, 1 + call void @_ZdlPvm(ptr noundef %278, i64 noundef %283) #30 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70, %55 - %.pn48.pn = phi { ptr, i32 } [ %56, %55 ], [ %.pn48, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70 ], [ %.pn48, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70, %54 + %.pn48.pn = phi { ptr, i32 } [ %55, %54 ], [ %.pn48, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70 ], [ %.pn48, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #29 call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #29 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #29 @@ -29518,6 +29516,9 @@ declare i64 @llvm.smax.i64(i64, i64) #26 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.smin.i64(i64, i64) #26 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smin.i32(i32, i32) #26 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #26 diff --git a/bench/llvm/optimized/LegalizerHelper.ll b/bench/llvm/optimized/LegalizerHelper.ll index b80f77f2a91..0a1c5b5f14b 100644 --- a/bench/llvm/optimized/LegalizerHelper.ll +++ b/bench/llvm/optimized/LegalizerHelper.ll @@ -42530,8 +42530,7 @@ _ZN4llvm5APIntD2Ev.exit63: ; preds = %_ZN4llvm5APInt13get %125 = getelementptr inbounds nuw i8, ptr %22, i64 16 store i32 0, ptr %125, align 8, !tbaa !220 %126 = sub nsw i64 %.0.in.i, %.0.in.i61 - %sext175 = shl i64 %126, 32 - %127 = ashr exact i64 %sext175, 32 + %127 = and i64 %126, 4294967295 %128 = call { ptr, ptr } @_ZN4llvm16MachineIRBuilder13buildConstantERKNS_5DstOpEl(ptr noundef nonnull align 8 dereferenceable(88) %123, ptr noundef nonnull align 8 dereferenceable(20) %22, i64 noundef %127) #19 %129 = extractvalue { ptr, ptr } %128, 0 %130 = extractvalue { ptr, ptr } %128, 1 @@ -42610,8 +42609,7 @@ _ZN4llvm5APIntD2Ev.exit63: ; preds = %_ZN4llvm5APInt13get %152 = getelementptr inbounds nuw i8, ptr %25, i64 16 store i32 0, ptr %152, align 8, !tbaa !220 %153 = sub nsw i64 %.0.in.i61, %.0.in.i - %sext = shl i64 %153, 32 - %154 = ashr exact i64 %sext, 32 + %154 = and i64 %153, 4294967295 %155 = call { ptr, ptr } @_ZN4llvm16MachineIRBuilder13buildConstantERKNS_5DstOpEl(ptr noundef nonnull align 8 dereferenceable(88) %123, ptr noundef nonnull align 8 dereferenceable(20) %25, i64 noundef %154) #19 %156 = extractvalue { ptr, ptr } %155, 0 %157 = extractvalue { ptr, ptr } %155, 1 @@ -42685,8 +42683,8 @@ _ZN4llvm5APIntD2Ev.exit63: ; preds = %_ZN4llvm5APInt13get br label %178 178: ; preds = %124, %151, %114 - %.sink177 = phi { ptr, ptr } [ %150, %124 ], [ %177, %151 ], [ %120, %114 ] - %179 = extractvalue { ptr, ptr } %.sink177, 1 + %.sink176 = phi { ptr, ptr } [ %150, %124 ], [ %177, %151 ], [ %120, %114 ] + %179 = extractvalue { ptr, ptr } %.sink176, 1 %180 = getelementptr inbounds nuw i8, ptr %179, i64 32 %181 = load ptr, ptr %180, align 8, !tbaa !189 %182 = getelementptr inbounds nuw i8, ptr %181, i64 4 diff --git a/bench/luau/optimized/isocline.ll b/bench/luau/optimized/isocline.ll index c95c304a256..1406ba1cd46 100644 --- a/bench/luau/optimized/isocline.ll +++ b/bench/luau/optimized/isocline.ll @@ -1574,7 +1574,7 @@ ic_strlen.exit.split: ; preds = %ic_strlen.exit.spli 11: ; preds = %.preheader.i %12 = sub nsw i64 %.028, %.1.i - %13 = getelementptr inbounds i8, ptr %1, i64 %12 + %13 = getelementptr inbounds nuw i8, ptr %1, i64 %12 %14 = load i8, ptr %13, align 1, !tbaa !4 %or.cond4.i = icmp sgt i8 %14, -65 %15 = add nuw i64 %.1.i, 1 @@ -1784,7 +1784,7 @@ ic_strlen.exit: ; preds = %6, %11 58: ; preds = %.preheader.i %59 = sub nsw i64 %.7179, %.1.i - %60 = getelementptr inbounds i8, ptr %1, i64 %59 + %60 = getelementptr inbounds nuw i8, ptr %1, i64 %59 %61 = load i8, ptr %60, align 1, !tbaa !4 %or.cond4.i = icmp sgt i8 %61, -65 %62 = add nuw i64 %.1.i, 1 @@ -2877,7 +2877,7 @@ ic_strlen.exit: ; preds = %2, %4 12: ; preds = %.preheader.i %13 = sub nsw i64 %1, %.1.i - %14 = getelementptr inbounds i8, ptr %0, i64 %13 + %14 = getelementptr inbounds nuw i8, ptr %0, i64 %13 %15 = load i8, ptr %14, align 1, !tbaa !4 %or.cond4.i = icmp sgt i8 %15, -65 %16 = add nuw i64 %.1.i, 1 @@ -11370,7 +11370,7 @@ ic_strlen.exit.i: ; preds = %121 %140 = getelementptr inbounds i8, ptr %34, i64 %139 %141 = load i8, ptr %140, align 1, !tbaa !4 %142 = sub nsw i64 %133, %.01825.i.i - %143 = getelementptr inbounds i8, ptr %132, i64 %142 + %143 = getelementptr inbounds nuw i8, ptr %132, i64 %142 %144 = load i8, ptr %143, align 1, !tbaa !4 %.not24.i.i = icmp eq i8 %141, %144 br i1 %.not24.i.i, label %137, label %ends_with_n.exit.i @@ -14229,7 +14229,7 @@ hsearch_pop.exit.i.i: ; preds = %823 843: ; preds = %.preheader.i.i.i.i.i.i %844 = sub nsw i64 %840, %.1.i.i.i.i.i.i - %845 = getelementptr inbounds i8, ptr %.val.i.i234.i.i, i64 %844 + %845 = getelementptr inbounds nuw i8, ptr %.val.i.i234.i.i, i64 %844 %846 = load i8, ptr %845, align 1, !tbaa !4 %or.cond4.i.i.i.i.i.i = icmp sgt i8 %846, -65 %847 = add nuw i64 %.1.i.i.i.i.i.i, 1 @@ -14750,7 +14750,7 @@ edit_multiline_eol.exit.backedge: ; preds = %1039, %1787, %1792, 1044: ; preds = %.preheader.i.i.i.i %1045 = sub nsw i64 %1041, %.1.i.i.i.i - %1046 = getelementptr inbounds i8, ptr %.val.i216, i64 %1045 + %1046 = getelementptr inbounds nuw i8, ptr %.val.i216, i64 %1045 %1047 = load i8, ptr %1046, align 1, !tbaa !4 %or.cond4.i.i.i.i = icmp sgt i8 %1047, -65 %1048 = add nuw i64 %.1.i.i.i.i, 1 @@ -14939,7 +14939,7 @@ edit_cursor_row_down.exit: ; preds = %1128, %1129 1135: ; preds = %.preheader.i45.i.i.i.i %1136 = sub nsw i64 %.3.i.i.i.i, %.1.i46.i.i.i.i - %1137 = getelementptr inbounds i8, ptr %.val.i231, i64 %1136 + %1137 = getelementptr inbounds nuw i8, ptr %.val.i231, i64 %1136 %1138 = load i8, ptr %1137, align 1, !tbaa !4 %or.cond4.i48.i.i.i.i = icmp sgt i8 %1138, -65 %1139 = add nuw i64 %.1.i46.i.i.i.i, 1 @@ -15222,7 +15222,7 @@ editor_start_modify.exit510: ; preds = %1238, %editor_undo_ 1248: ; preds = %.preheader.i.i.i.i256 %1249 = sub nsw i64 %1245, %.1.i.i.i.i257 - %1250 = getelementptr inbounds i8, ptr %.val.i.i253, i64 %1249 + %1250 = getelementptr inbounds nuw i8, ptr %.val.i.i253, i64 %1249 %1251 = load i8, ptr %1250, align 1, !tbaa !4 %or.cond4.i.i.i.i259 = icmp sgt i8 %1251, -65 %1252 = add nuw i64 %.1.i.i.i.i257, 1 @@ -15586,7 +15586,7 @@ sbuf_delete_from_to.exit.i: ; preds = %ic_memmove.exit.i.i 1401: ; preds = %.preheader.i.i.i.i.i %1402 = sub nsw i64 %.135.i.i.i.i, %.1.i.i.i.i.i - %1403 = getelementptr inbounds i8, ptr %.val.i284, i64 %1402 + %1403 = getelementptr inbounds nuw i8, ptr %.val.i284, i64 %1402 %1404 = load i8, ptr %1403, align 1, !tbaa !4 %or.cond4.i.i.i.i.i = icmp sgt i8 %1404, -65 %1405 = add nuw i64 %.1.i.i.i.i.i, 1 @@ -15628,7 +15628,7 @@ ic_char_is_white.exit7.i.i.i: ; preds = %1406, %1406, %1406, 1410: ; preds = %.preheader.i45.i.i.i.i297 %1411 = sub nsw i64 %.3.i.i.i.i291, %.1.i46.i.i.i.i298 - %1412 = getelementptr inbounds i8, ptr %.val.i284, i64 %1411 + %1412 = getelementptr inbounds nuw i8, ptr %.val.i284, i64 %1411 %1413 = load i8, ptr %1412, align 1, !tbaa !4 %or.cond4.i48.i.i.i.i300 = icmp sgt i8 %1413, -65 %1414 = add nuw i64 %.1.i46.i.i.i.i298, 1 @@ -15923,7 +15923,7 @@ edit_delete_to_start_of_word.exit: ; preds = %editor_start_modify 1526: ; preds = %.preheader.i45.i.i.i.i319 %1527 = sub nsw i64 %.3.i.i.i.i317, %.1.i46.i.i.i.i320 - %1528 = getelementptr inbounds i8, ptr %.val26.i, i64 %1527 + %1528 = getelementptr inbounds nuw i8, ptr %.val26.i, i64 %1527 %1529 = load i8, ptr %1528, align 1, !tbaa !4 %or.cond4.i48.i.i.i.i322 = icmp sgt i8 %1529, -65 %1530 = add nuw i64 %.1.i46.i.i.i.i320, 1 @@ -16192,7 +16192,7 @@ sbuf_delete_from_to.exit41.i: ; preds = %ic_memmove.exit.i.i 1619: ; preds = %.preheader.i45.i.i.i.i349 %1620 = sub nsw i64 %.3.i.i.i.i347, %.1.i46.i.i.i.i350 - %1621 = getelementptr inbounds i8, ptr %.val24.i339, i64 %1620 + %1621 = getelementptr inbounds nuw i8, ptr %.val24.i339, i64 %1620 %1622 = load i8, ptr %1621, align 1, !tbaa !4 %or.cond4.i48.i.i.i.i352 = icmp sgt i8 %1622, -65 %1623 = add nuw i64 %.1.i46.i.i.i.i350, 1 @@ -16541,7 +16541,7 @@ editor_start_modify.exit622: ; preds = %1750, %editor_undo_ 1764: ; preds = %.preheader.i.i.i.i375 %1765 = sub nsw i64 %1757, %.1.i.i.i.i376 - %1766 = getelementptr inbounds i8, ptr %.val.i.i373, i64 %1765 + %1766 = getelementptr inbounds nuw i8, ptr %.val.i.i373, i64 %1765 %1767 = load i8, ptr %1766, align 1, !tbaa !4 %or.cond4.i.i.i.i378 = icmp sgt i8 %1767, -65 %1768 = add nuw i64 %.1.i.i.i.i376, 1 @@ -25585,7 +25585,7 @@ define internal fastcc range(i64 0, -9223372036854775808) i64 @sbuf_find_word_st 2: ; preds = %.preheader.i.i.i %3 = sub nsw i64 %.135.i.i, %.1.i.i.i - %4 = getelementptr inbounds i8, ptr %.0.val, i64 %3 + %4 = getelementptr inbounds nuw i8, ptr %.0.val, i64 %3 %5 = load i8, ptr %4, align 1, !tbaa !4 %or.cond4.i.i.i = icmp sgt i8 %5, -65 %6 = add nuw i64 %.1.i.i.i, 1 @@ -25645,7 +25645,7 @@ ic_char_is_idletter.exit15.thread.i: ; preds = %ic_char_is_idletter 22: ; preds = %.preheader.i45.i.i %23 = sub nsw i64 %.3.i.i, %.1.i46.i.i - %24 = getelementptr inbounds i8, ptr %.0.val, i64 %23 + %24 = getelementptr inbounds nuw i8, ptr %.0.val, i64 %23 %25 = load i8, ptr %24, align 1, !tbaa !4 %or.cond4.i48.i.i = icmp sgt i8 %25, -65 %26 = add nuw i64 %.1.i46.i.i, 1 diff --git a/bench/lvgl/optimized/lv_draw_sw_mask.ll b/bench/lvgl/optimized/lv_draw_sw_mask.ll index ad88d4eb4f8..90b1ec2f343 100644 --- a/bench/lvgl/optimized/lv_draw_sw_mask.ll +++ b/bench/lvgl/optimized/lv_draw_sw_mask.ll @@ -2072,7 +2072,7 @@ define internal range(i32 0, 3) i32 @lv_draw_mask_radius(ptr noundef %0, i32 nou %48 = zext nneg i32 %43 to i64 %49 = getelementptr inbounds nuw i8, ptr %0, i64 %48 %50 = sub nsw i32 %3, %43 - %51 = sext i32 %50 to i64 + %51 = zext nneg i32 %50 to i64 tail call void @lv_memset(ptr noundef nonnull %49, i8 noundef zeroext 0, i64 noundef range(i64 -2147483648, 2147483648) %51) #8 br label %52 @@ -2419,7 +2419,7 @@ define internal range(i32 1, 3) i32 @lv_draw_mask_fade(ptr noundef captures(none %26 = select i1 %24, i32 %25, i32 0 %.neg80 = sub i32 %3, %26 %.166 = add i32 %.neg80, %.neg95 - %.062.idx = sext i32 %26 to i64 + %.062.idx = zext i32 %26 to i64 %.062 = getelementptr i8, ptr %0, i64 %.062.idx %27 = getelementptr inbounds nuw i8, ptr %4, i64 32 %28 = load i32, ptr %27, align 8, !tbaa !75 @@ -2618,69 +2618,59 @@ define internal range(i32 1, 3) i32 @lv_draw_mask_map(ptr noundef captures(none) %29 = getelementptr inbounds i8, ptr %24, i64 %28 %30 = load i32, ptr %19, align 8, !tbaa !94 %31 = icmp sgt i32 %15, %30 - %32 = xor i32 %30, -1 - %33 = add i32 %15, %32 - %34 = select i1 %31, i32 %33, i32 0 - %.044 = sub nsw i32 %3, %34 - %35 = load i32, ptr %6, align 8, !tbaa !93 - %36 = icmp slt i32 %1, %35 - br i1 %36, label %37, label %42 - -37: ; preds = %22 - %38 = sub nsw i32 %35, %1 - %39 = sub nsw i32 %.044, %38 - %40 = sext i32 %38 to i64 - %41 = getelementptr inbounds i8, ptr %0, i64 %40 - br label %46 - -42: ; preds = %22 - %43 = sub nsw i32 %1, %35 - %44 = sext i32 %43 to i64 - %45 = getelementptr inbounds i8, ptr %29, i64 %44 - br label %46 - -46: ; preds = %42, %37 - %.1 = phi i32 [ %39, %37 ], [ %.044, %42 ] - %.043 = phi ptr [ %41, %37 ], [ %0, %42 ] - %.042 = phi ptr [ %29, %37 ], [ %45, %42 ] - %47 = icmp sgt i32 %.1, 0 - br i1 %47, label %.lr.ph.preheader, label %.loopexit - -.lr.ph.preheader: ; preds = %46 - %wide.trip.count = zext nneg i32 %.1 to i64 + %.neg56 = add i32 %30, 1 + %.neg57 = sub i32 %.neg56, %15 + %.neg58 = select i1 %31, i32 %.neg57, i32 0 + %32 = load i32, ptr %6, align 8, !tbaa !93 + %33 = icmp slt i32 %1, %32 + %34 = sub nsw i32 %32, %1 + %35 = sub nsw i32 %1, %32 + %36 = select i1 %33, i32 %34, i32 0 + %.neg54 = add i32 %.neg58, %3 + %.1 = sub i32 %.neg54, %36 + %.043.idx = zext i32 %36 to i64 + %.043 = getelementptr inbounds nuw i8, ptr %0, i64 %.043.idx + %narrow52 = select i1 %33, i32 0, i32 %35 + %.042.idx = zext i32 %narrow52 to i64 + %.042 = getelementptr inbounds nuw i8, ptr %29, i64 %.042.idx + %37 = icmp sgt i32 %.1, 0 + br i1 %37, label %.lr.ph.preheader, label %.loopexit + +.lr.ph.preheader: ; preds = %22 + %38 = zext nneg i32 %.1 to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %mask_mix.exit %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %mask_mix.exit ] - %48 = getelementptr inbounds nuw i8, ptr %.043, i64 %indvars.iv - %49 = load i8, ptr %48, align 1, !tbaa !36 - %50 = getelementptr inbounds nuw i8, ptr %.042, i64 %indvars.iv - %51 = load i8, ptr %50, align 1, !tbaa !36 - %52 = zext i8 %51 to i32 - %53 = icmp ugt i8 %51, -4 - br i1 %53, label %mask_mix.exit, label %54 - -54: ; preds = %.lr.ph - %55 = icmp ult i8 %51, 3 - br i1 %55, label %mask_mix.exit, label %56 - -56: ; preds = %54 - %57 = zext i8 %49 to i32 - %58 = mul nuw nsw i32 %57, 32897 - %59 = mul nuw nsw i32 %58, %52 - %60 = lshr i32 %59, 23 - %61 = trunc nuw i32 %60 to i8 + %39 = getelementptr inbounds nuw i8, ptr %.043, i64 %indvars.iv + %40 = load i8, ptr %39, align 1, !tbaa !36 + %41 = getelementptr inbounds nuw i8, ptr %.042, i64 %indvars.iv + %42 = load i8, ptr %41, align 1, !tbaa !36 + %43 = zext i8 %42 to i32 + %44 = icmp ugt i8 %42, -4 + br i1 %44, label %mask_mix.exit, label %45 + +45: ; preds = %.lr.ph + %46 = icmp ult i8 %42, 3 + br i1 %46, label %mask_mix.exit, label %47 + +47: ; preds = %45 + %48 = zext i8 %40 to i32 + %49 = mul nuw nsw i32 %48, 32897 + %50 = mul nuw nsw i32 %49, %43 + %51 = lshr i32 %50, 23 + %52 = trunc nuw i32 %51 to i8 br label %mask_mix.exit -mask_mix.exit: ; preds = %.lr.ph, %54, %56 - %.0.i = phi i8 [ %61, %56 ], [ %49, %.lr.ph ], [ 0, %54 ] - store i8 %.0.i, ptr %48, align 1, !tbaa !36 +mask_mix.exit: ; preds = %.lr.ph, %45, %47 + %.0.i = phi i8 [ %52, %47 ], [ %40, %.lr.ph ], [ 0, %45 ] + store i8 %.0.i, ptr %39, align 1, !tbaa !36 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %.loopexit, label %.lr.ph, !llvm.loop !95 + %53 = icmp samesign ult i64 %indvars.iv.next, %38 + br i1 %53, label %.lr.ph, label %.loopexit, !llvm.loop !95 -.loopexit: ; preds = %mask_mix.exit, %46, %18, %14, %10, %5 - %.041 = phi i32 [ 1, %5 ], [ 1, %10 ], [ 1, %14 ], [ 1, %18 ], [ 2, %46 ], [ 2, %mask_mix.exit ] +.loopexit: ; preds = %mask_mix.exit, %22, %18, %14, %10, %5 + %.041 = phi i32 [ 1, %5 ], [ 1, %10 ], [ 1, %14 ], [ 1, %18 ], [ 2, %22 ], [ 2, %mask_mix.exit ] ret i32 %.041 } diff --git a/bench/miniaudio/optimized/unity.ll b/bench/miniaudio/optimized/unity.ll index 94c29511642..081b90e883b 100644 --- a/bench/miniaudio/optimized/unity.ll +++ b/bench/miniaudio/optimized/unity.ll @@ -130951,7 +130951,7 @@ define internal noundef range(i32 0, 2) i32 @ma_dr_flac__on_seek_ogg(ptr noundef .preheader49: ; preds = %3 %5 = getelementptr inbounds nuw i8, ptr %0, i64 624 - br label %53 + br label %51 6: ; preds = %3 %7 = getelementptr inbounds nuw i8, ptr %0, i64 32 @@ -131026,74 +131026,70 @@ ma_dr_flac_oggbs__seek_physical.exit: ; preds = %35, %18 %39 = getelementptr inbounds nuw i8, ptr %0, i64 624 br label %40 -40: ; preds = %.preheader, %51 - %.024.i = phi i32 [ %.226.i, %51 ], [ 0, %.preheader ] +40: ; preds = %.preheader, %49 + %.024.i = phi i32 [ %.226.i, %49 ], [ 0, %.preheader ] %41 = icmp slt i32 %.024.i, %1 br i1 %41, label %42, label %ma_dr_flac__on_seek_ogg.exit 42: ; preds = %40 %43 = sub nsw i32 %1, %.024.i %44 = load i32, ptr %39, align 8, !tbaa !1312 - %45 = zext i32 %44 to i64 - %46 = sext i32 %43 to i64 - %.not.i = icmp ult i64 %45, %46 - br i1 %.not.i, label %48, label %.thread38 + %.not.i = icmp ult i32 %44, %43 + br i1 %.not.i, label %46, label %.thread38 .thread38: ; preds = %42 - %47 = sub i32 %44, %43 - store i32 %47, ptr %39, align 8, !tbaa !1312 + %45 = sub nuw i32 %44, %43 + store i32 %45, ptr %39, align 8, !tbaa !1312 br label %ma_dr_flac__on_seek_ogg.exit -48: ; preds = %42 +46: ; preds = %42 %.not29.i = icmp eq i32 %44, 0 - br i1 %.not29.i, label %51, label %49 + br i1 %.not29.i, label %49, label %47 -49: ; preds = %48 - %50 = add nsw i32 %44, %.024.i +47: ; preds = %46 + %48 = add nsw i32 %44, %.024.i store i32 0, ptr %39, align 8, !tbaa !1312 - br label %51 + br label %49 -51: ; preds = %49, %48 - %.226.i = phi i32 [ %50, %49 ], [ %.024.i, %48 ] - %52 = tail call fastcc i32 @ma_dr_flac_oggbs__goto_next_page(ptr noundef nonnull %0, i32 noundef 1) - %.not30.i = icmp eq i32 %52, 0 +49: ; preds = %47, %46 + %.226.i = phi i32 [ %48, %47 ], [ %.024.i, %46 ] + %50 = tail call fastcc i32 @ma_dr_flac_oggbs__goto_next_page(ptr noundef nonnull %0, i32 noundef 1) + %.not30.i = icmp eq i32 %50, 0 br i1 %.not30.i, label %ma_dr_flac__on_seek_ogg.exit, label %40 -53: ; preds = %.preheader49, %64 - %.024 = phi i32 [ %.226, %64 ], [ 0, %.preheader49 ] - %54 = icmp slt i32 %.024, %1 - br i1 %54, label %55, label %ma_dr_flac__on_seek_ogg.exit +51: ; preds = %.preheader49, %60 + %.024 = phi i32 [ %.226, %60 ], [ 0, %.preheader49 ] + %52 = icmp slt i32 %.024, %1 + br i1 %52, label %53, label %ma_dr_flac__on_seek_ogg.exit -55: ; preds = %53 - %56 = sub nsw i32 %1, %.024 - %57 = load i32, ptr %5, align 8, !tbaa !1312 - %58 = zext i32 %57 to i64 - %59 = sext i32 %56 to i64 - %.not = icmp ult i64 %58, %59 - br i1 %.not, label %61, label %.thread45 - -.thread45: ; preds = %55 - %60 = sub i32 %57, %56 - store i32 %60, ptr %5, align 8, !tbaa !1312 +53: ; preds = %51 + %54 = sub nsw i32 %1, %.024 + %55 = load i32, ptr %5, align 8, !tbaa !1312 + %.not = icmp ult i32 %55, %54 + br i1 %.not, label %57, label %.thread45 + +.thread45: ; preds = %53 + %56 = sub nuw i32 %55, %54 + store i32 %56, ptr %5, align 8, !tbaa !1312 br label %ma_dr_flac__on_seek_ogg.exit -61: ; preds = %55 - %.not29 = icmp eq i32 %57, 0 - br i1 %.not29, label %64, label %62 +57: ; preds = %53 + %.not29 = icmp eq i32 %55, 0 + br i1 %.not29, label %60, label %58 -62: ; preds = %61 - %63 = add nsw i32 %57, %.024 +58: ; preds = %57 + %59 = add nsw i32 %55, %.024 store i32 0, ptr %5, align 8, !tbaa !1312 - br label %64 + br label %60 -64: ; preds = %62, %61 - %.226 = phi i32 [ %63, %62 ], [ %.024, %61 ] - %65 = tail call fastcc i32 @ma_dr_flac_oggbs__goto_next_page(ptr noundef nonnull %0, i32 noundef 1) - %.not30 = icmp eq i32 %65, 0 - br i1 %.not30, label %ma_dr_flac__on_seek_ogg.exit, label %53 +60: ; preds = %58, %57 + %.226 = phi i32 [ %59, %58 ], [ %.024, %57 ] + %61 = tail call fastcc i32 @ma_dr_flac_oggbs__goto_next_page(ptr noundef nonnull %0, i32 noundef 1) + %.not30 = icmp eq i32 %61, 0 + br i1 %.not30, label %ma_dr_flac__on_seek_ogg.exit, label %51 -ma_dr_flac__on_seek_ogg.exit: ; preds = %64, %53, %.lr.ph35.i, %51, %40, %._crit_edge36.i, %20, %15, %.thread45, %.thread38, %ma_dr_flac_oggbs__seek_physical.exit - %.0 = phi i32 [ 0, %ma_dr_flac_oggbs__seek_physical.exit ], [ 1, %.thread38 ], [ 1, %.thread45 ], [ 0, %15 ], [ 0, %20 ], [ 0, %._crit_edge36.i ], [ 0, %51 ], [ 1, %40 ], [ 0, %.lr.ph35.i ], [ 0, %64 ], [ 1, %53 ] +ma_dr_flac__on_seek_ogg.exit: ; preds = %60, %51, %.lr.ph35.i, %49, %40, %._crit_edge36.i, %20, %15, %.thread45, %.thread38, %ma_dr_flac_oggbs__seek_physical.exit + %.0 = phi i32 [ 0, %ma_dr_flac_oggbs__seek_physical.exit ], [ 1, %.thread38 ], [ 1, %.thread45 ], [ 0, %15 ], [ 0, %20 ], [ 0, %._crit_edge36.i ], [ 0, %49 ], [ 1, %40 ], [ 0, %.lr.ph35.i ], [ 0, %60 ], [ 1, %51 ] ret i32 %.0 } diff --git a/bench/ncnn/optimized/padding.ll b/bench/ncnn/optimized/padding.ll index 0b737149870..19889249185 100644 --- a/bench/ncnn/optimized/padding.ll +++ b/bench/ncnn/optimized/padding.ll @@ -1350,7 +1350,7 @@ define internal fastcc void @_ZN4ncnnL22copy_make_border_imageIaEEvRKNS_3MatERS1 .lr.ph485: ; preds = %.preheader384, %.lr.ph485 %indvars.iv628 = phi i64 [ %indvars.iv.next629, %.lr.ph485 ], [ 0, %.preheader384 ] %214 = sub nsw i64 %203, %indvars.iv628 - %215 = getelementptr inbounds i8, ptr %.4343497, i64 %214 + %215 = getelementptr inbounds nuw i8, ptr %.4343497, i64 %214 %216 = load i8, ptr %215, align 1, !tbaa !60 %217 = getelementptr inbounds nuw i8, ptr %.8498, i64 %indvars.iv628 store i8 %216, ptr %217, align 1, !tbaa !60 @@ -1454,7 +1454,7 @@ define internal fastcc void @_ZN4ncnnL22copy_make_border_imageIaEEvRKNS_3MatERS1 .lr.ph504: ; preds = %.preheader380, %.lr.ph504 %indvars.iv642 = phi i64 [ %indvars.iv.next643, %.lr.ph504 ], [ 0, %.preheader380 ] %253 = sub nsw i64 %212, %indvars.iv642 - %254 = getelementptr inbounds i8, ptr %.5344516, i64 %253 + %254 = getelementptr inbounds nuw i8, ptr %.5344516, i64 %253 %255 = load i8, ptr %254, align 1, !tbaa !60 %256 = getelementptr inbounds nuw i8, ptr %.9517, i64 %indvars.iv642 store i8 %255, ptr %256, align 1, !tbaa !60 @@ -1578,7 +1578,7 @@ define internal fastcc void @_ZN4ncnnL22copy_make_border_imageIaEEvRKNS_3MatERS1 .lr.ph524: ; preds = %.preheader376, %.lr.ph524 %indvars.iv655 = phi i64 [ %indvars.iv.next656, %.lr.ph524 ], [ 0, %.preheader376 ] %303 = sub nsw i64 %300, %indvars.iv655 - %304 = getelementptr inbounds i8, ptr %.6345536, i64 %303 + %304 = getelementptr inbounds nuw i8, ptr %.6345536, i64 %303 %305 = load i8, ptr %304, align 1, !tbaa !60 %306 = getelementptr inbounds nuw i8, ptr %.10537, i64 %indvars.iv655 store i8 %305, ptr %306, align 1, !tbaa !60 @@ -2233,7 +2233,7 @@ define internal fastcc void @_ZN4ncnnL22copy_make_border_imageItEEvRKNS_3MatERS1 .lr.ph485: ; preds = %.preheader384, %.lr.ph485 %indvars.iv662 = phi i64 [ %indvars.iv.next663, %.lr.ph485 ], [ 0, %.preheader384 ] %195 = sub nsw i64 %184, %indvars.iv662 - %196 = getelementptr inbounds i16, ptr %.4343497, i64 %195 + %196 = getelementptr inbounds nuw i16, ptr %.4343497, i64 %195 %197 = load i16, ptr %196, align 2, !tbaa !88 %198 = getelementptr inbounds nuw i16, ptr %.8498, i64 %indvars.iv662 store i16 %197, ptr %198, align 2, !tbaa !88 @@ -2321,7 +2321,7 @@ define internal fastcc void @_ZN4ncnnL22copy_make_border_imageItEEvRKNS_3MatERS1 .lr.ph504: ; preds = %.preheader380, %.lr.ph504 %indvars.iv681 = phi i64 [ %indvars.iv.next682, %.lr.ph504 ], [ 0, %.preheader380 ] %227 = sub nsw i64 %193, %indvars.iv681 - %228 = getelementptr inbounds i16, ptr %.5344518, i64 %227 + %228 = getelementptr inbounds nuw i16, ptr %.5344518, i64 %227 %229 = load i16, ptr %228, align 2, !tbaa !88 %230 = getelementptr inbounds nuw i16, ptr %.9519, i64 %indvars.iv681 store i16 %229, ptr %230, align 2, !tbaa !88 @@ -2429,7 +2429,7 @@ define internal fastcc void @_ZN4ncnnL22copy_make_border_imageItEEvRKNS_3MatERS1 .lr.ph526: ; preds = %.preheader376, %.lr.ph526 %indvars.iv699 = phi i64 [ %indvars.iv.next700, %.lr.ph526 ], [ 0, %.preheader376 ] %270 = sub nsw i64 %267, %indvars.iv699 - %271 = getelementptr inbounds i16, ptr %.6345540, i64 %270 + %271 = getelementptr inbounds nuw i16, ptr %.6345540, i64 %270 %272 = load i16, ptr %271, align 2, !tbaa !88 %273 = getelementptr inbounds nuw i16, ptr %.10541, i64 %indvars.iv699 store i16 %272, ptr %273, align 2, !tbaa !88 @@ -3070,7 +3070,7 @@ define internal fastcc void @_ZN4ncnnL22copy_make_border_imageIfEEvRKNS_3MatERS1 .lr.ph485: ; preds = %.preheader384, %.lr.ph485 %indvars.iv662 = phi i64 [ %indvars.iv.next663, %.lr.ph485 ], [ 0, %.preheader384 ] %195 = sub nsw i64 %184, %indvars.iv662 - %196 = getelementptr inbounds float, ptr %.4343497, i64 %195 + %196 = getelementptr inbounds nuw float, ptr %.4343497, i64 %195 %197 = load float, ptr %196, align 4, !tbaa !122 %198 = getelementptr inbounds nuw float, ptr %.8498, i64 %indvars.iv662 store float %197, ptr %198, align 4, !tbaa !122 @@ -3158,7 +3158,7 @@ define internal fastcc void @_ZN4ncnnL22copy_make_border_imageIfEEvRKNS_3MatERS1 .lr.ph504: ; preds = %.preheader380, %.lr.ph504 %indvars.iv681 = phi i64 [ %indvars.iv.next682, %.lr.ph504 ], [ 0, %.preheader380 ] %227 = sub nsw i64 %193, %indvars.iv681 - %228 = getelementptr inbounds float, ptr %.5344518, i64 %227 + %228 = getelementptr inbounds nuw float, ptr %.5344518, i64 %227 %229 = load float, ptr %228, align 4, !tbaa !122 %230 = getelementptr inbounds nuw float, ptr %.9519, i64 %indvars.iv681 store float %229, ptr %230, align 4, !tbaa !122 @@ -3266,7 +3266,7 @@ define internal fastcc void @_ZN4ncnnL22copy_make_border_imageIfEEvRKNS_3MatERS1 .lr.ph526: ; preds = %.preheader376, %.lr.ph526 %indvars.iv699 = phi i64 [ %indvars.iv.next700, %.lr.ph526 ], [ 0, %.preheader376 ] %270 = sub nsw i64 %267, %indvars.iv699 - %271 = getelementptr inbounds float, ptr %.6345540, i64 %270 + %271 = getelementptr inbounds nuw float, ptr %.6345540, i64 %270 %272 = load float, ptr %271, align 4, !tbaa !122 %273 = getelementptr inbounds nuw float, ptr %.10541, i64 %indvars.iv699 store float %272, ptr %273, align 4, !tbaa !122 diff --git a/bench/ncnn/optimized/padding_x86.ll b/bench/ncnn/optimized/padding_x86.ll index 909ad51fc89..1c656b4e1c2 100644 --- a/bench/ncnn/optimized/padding_x86.ll +++ b/bench/ncnn/optimized/padding_x86.ll @@ -3050,7 +3050,7 @@ define internal void @_ZNK4ncnn11Padding_x8612forward_int8ERKNS_3MatERS1_RKNS_6O %16 = load i32, ptr %2, align 4, !tbaa !42 %17 = sdiv i32 %15, %16 %18 = icmp sgt i32 %17, 0 - br i1 %18, label %19, label %309 + br i1 %18, label %19, label %310 19: ; preds = %9 %20 = add nsw i32 %17, -1 @@ -3068,8 +3068,8 @@ define internal void @_ZNK4ncnn11Padding_x8612forward_int8ERKNS_3MatERS1_RKNS_6O %23 = call i32 @llvm.smin.i32(i32 %22, i32 %20) store i32 %23, ptr %11, align 4, !tbaa !42 %24 = load i32, ptr %10, align 4, !tbaa !42 - %.not131 = icmp sgt i32 %24, %23 - br i1 %.not131, label %._crit_edge, label %.noexc.lr.ph + %.not128 = icmp sgt i32 %24, %23 + br i1 %.not128, label %._crit_edge, label %.noexc.lr.ph .noexc.lr.ph: ; preds = %19 %25 = getelementptr inbounds nuw i8, ptr %4, i64 44 @@ -3106,12 +3106,12 @@ define internal void @_ZNK4ncnn11Padding_x8612forward_int8ERKNS_3MatERS1_RKNS_6O br label %.noexc .noexc: ; preds = %.noexc.lr.ph, %_ZN4ncnn3MatD2Ev.exit - %56 = phi i32 [ %23, %.noexc.lr.ph ], [ %307, %_ZN4ncnn3MatD2Ev.exit ] - %indvars.iv178 = phi i64 [ %55, %.noexc.lr.ph ], [ %indvars.iv.next179, %_ZN4ncnn3MatD2Ev.exit ] + %56 = phi i32 [ %23, %.noexc.lr.ph ], [ %308, %_ZN4ncnn3MatD2Ev.exit ] + %indvars.iv174 = phi i64 [ %55, %.noexc.lr.ph ], [ %indvars.iv.next175, %_ZN4ncnn3MatD2Ev.exit ] %57 = load i32, ptr %25, align 4, !tbaa !38, !noalias !120 %58 = load ptr, ptr %4, align 8, !tbaa !16, !noalias !120 %59 = load i64, ptr %26, align 8, !tbaa !17, !noalias !120 - %60 = mul i64 %59, %indvars.iv178 + %60 = mul i64 %59, %indvars.iv174 %61 = load i64, ptr %27, align 8, !tbaa !35, !noalias !120 %62 = mul i64 %60, %61 %63 = getelementptr inbounds nuw i8, ptr %58, i64 %62 @@ -3132,7 +3132,7 @@ define internal void @_ZNK4ncnn11Padding_x8612forward_int8ERKNS_3MatERS1_RKNS_6O %78 = or i64 %77, %72 %79 = or i64 %78, %65 %80 = load i32, ptr %6, align 4, !tbaa !42 - %81 = trunc nsw i64 %indvars.iv178 to i32 + %81 = trunc nsw i64 %indvars.iv174 to i32 %82 = sub nsw i32 %81, %80 %83 = icmp sgt i32 %82, -1 %84 = load i32, ptr %7, align 4 @@ -3545,335 +3545,336 @@ thread-pre-split: ; preds = %_ZNK4ncnn3Mat7chann %214 = icmp sgt i32 %101, 0 %215 = icmp sgt i32 %208, 0 %216 = sub nsw i64 0, %113 - br i1 %213, label %.preheader9.us.preheader.i, label %.preheader9.lr.ph.split.i66 + br i1 %215, label %.preheader9.us.preheader.i, label %.preheader9.lr.ph.split.i66 .preheader9.us.preheader.i: ; preds = %.preheader9.lr.ph.i65 - %217 = zext nneg i32 %207 to i64 - %wide.trip.count152.i = zext nneg i32 %208 to i64 - br label %.preheader9.us.i70 - -.preheader9.us.i70: ; preds = %._crit_edge.us.i75, %.preheader9.us.preheader.i - %.08724.us.i = phi i32 [ %219, %._crit_edge.us.i75 ], [ 0, %.preheader9.us.preheader.i ] - %.08823.us.i = phi ptr [ %.3.lcssa.us.i76, %._crit_edge.us.i75 ], [ %63, %.preheader9.us.preheader.i ] - %.08922.us.i = phi ptr [ %218, %._crit_edge.us.i75 ], [ %211, %.preheader9.us.preheader.i ] - br label %228 - -._crit_edge.us.i75: ; preds = %.lr.ph20.us.i77, %.preheader7.us.i73 - %.3.lcssa.us.i76 = phi ptr [ %.2.lcssa.us.i74, %.preheader7.us.i73 ], [ %223, %.lr.ph20.us.i77 ] - %218 = getelementptr inbounds i64, ptr %.08922.us.i, i64 %216 - %219 = add nuw nsw i32 %.08724.us.i, 1 - %exitcond154.not.i = icmp eq i32 %219, %205 - br i1 %exitcond154.not.i, label %.preheader6.i47, label %.preheader9.us.i70, !llvm.loop !139 - -.lr.ph20.us.i77: ; preds = %.preheader7.us.i73, %.lr.ph20.us.i77 - %indvars.iv149.i = phi i64 [ %indvars.iv.next150.i, %.lr.ph20.us.i77 ], [ 0, %.preheader7.us.i73 ] - %.318.us.i78 = phi ptr [ %223, %.lr.ph20.us.i77 ], [ %.2.lcssa.us.i74, %.preheader7.us.i73 ] - %220 = sub nuw nsw i64 -2, %indvars.iv149.i - %221 = getelementptr inbounds i64, ptr %.086.lcssa.us.i, i64 %220 - %222 = load i64, ptr %221, align 8, !tbaa !57 - %223 = getelementptr inbounds nuw i8, ptr %.318.us.i78, i64 8 - store i64 %222, ptr %.318.us.i78, align 8, !tbaa !57 - %indvars.iv.next150.i = add nuw nsw i64 %indvars.iv149.i, 1 - %exitcond153.not.i = icmp eq i64 %indvars.iv.next150.i, %wide.trip.count152.i - br i1 %exitcond153.not.i, label %._crit_edge.us.i75, label %.lr.ph20.us.i77, !llvm.loop !140 - -.lr.ph15.us.i79: ; preds = %..preheader8_crit_edge.us.i72, %.lr.ph15.us.i79 - %.08414.us.i = phi i32 [ %227, %.lr.ph15.us.i79 ], [ 0, %..preheader8_crit_edge.us.i72 ] - %.08613.us.i = phi ptr [ %224, %.lr.ph15.us.i79 ], [ %.08922.us.i, %..preheader8_crit_edge.us.i72 ] - %.212.us.i80 = phi ptr [ %226, %.lr.ph15.us.i79 ], [ %232, %..preheader8_crit_edge.us.i72 ] - %224 = getelementptr inbounds nuw i8, ptr %.08613.us.i, i64 8 - %225 = load i64, ptr %.08613.us.i, align 8, !tbaa !57 - %226 = getelementptr inbounds nuw i8, ptr %.212.us.i80, i64 8 - store i64 %225, ptr %.212.us.i80, align 8, !tbaa !57 - %227 = add nuw nsw i32 %.08414.us.i, 1 - %exitcond148.not.i = icmp eq i32 %227, %101 - br i1 %exitcond148.not.i, label %.preheader7.us.i73, label %.lr.ph15.us.i79, !llvm.loop !141 - -228: ; preds = %228, %.preheader9.us.i70 - %indvars.iv143.i = phi i64 [ 0, %.preheader9.us.i70 ], [ %indvars.iv.next144.i, %228 ] - %.110.us.i71 = phi ptr [ %.08823.us.i, %.preheader9.us.i70 ], [ %232, %228 ] - %229 = sub nsw i64 %217, %indvars.iv143.i - %230 = getelementptr inbounds i64, ptr %.08922.us.i, i64 %229 - %231 = load i64, ptr %230, align 8, !tbaa !57 - %232 = getelementptr inbounds nuw i8, ptr %.110.us.i71, i64 8 - store i64 %231, ptr %.110.us.i71, align 8, !tbaa !57 - %indvars.iv.next144.i = add nuw nsw i64 %indvars.iv143.i, 1 - %exitcond147.not.i = icmp eq i64 %indvars.iv.next144.i, %217 - br i1 %exitcond147.not.i, label %..preheader8_crit_edge.us.i72, label %228, !llvm.loop !142 - -.preheader7.us.i73: ; preds = %.lr.ph15.us.i79, %..preheader8_crit_edge.us.i72 - %.2.lcssa.us.i74 = phi ptr [ %232, %..preheader8_crit_edge.us.i72 ], [ %226, %.lr.ph15.us.i79 ] - %.086.lcssa.us.i = phi ptr [ %.08922.us.i, %..preheader8_crit_edge.us.i72 ], [ %224, %.lr.ph15.us.i79 ] - br i1 %215, label %.lr.ph20.us.i77, label %._crit_edge.us.i75 - -..preheader8_crit_edge.us.i72: ; preds = %228 - br i1 %214, label %.lr.ph15.us.i79, label %.preheader7.us.i73 + %217 = sext i32 %207 to i64 + %wide.trip.count144.i = zext nneg i32 %207 to i64 + %wide.trip.count150.i = zext nneg i32 %208 to i64 + br label %.preheader9.us.i71 + +.preheader9.us.i71: ; preds = %._crit_edge.us.i75, %.preheader9.us.preheader.i + %.08724.us.i = phi i32 [ %232, %._crit_edge.us.i75 ], [ 0, %.preheader9.us.preheader.i ] + %.08823.us.i = phi ptr [ %222, %._crit_edge.us.i75 ], [ %63, %.preheader9.us.preheader.i ] + %.08922.us.i = phi ptr [ %231, %._crit_edge.us.i75 ], [ %211, %.preheader9.us.preheader.i ] + br i1 %213, label %.lr.ph.us.i, label %.preheader8.us.i + +218: ; preds = %.preheader7.us.i72, %218 + %indvars.iv147.i = phi i64 [ 0, %.preheader7.us.i72 ], [ %indvars.iv.next148.i, %218 ] + %.318.us.i74 = phi ptr [ %.2.lcssa.us.i73, %.preheader7.us.i72 ], [ %222, %218 ] + %219 = sub nuw nsw i64 -2, %indvars.iv147.i + %220 = getelementptr inbounds i64, ptr %.086.lcssa.us.i, i64 %219 + %221 = load i64, ptr %220, align 8, !tbaa !57 + %222 = getelementptr inbounds nuw i8, ptr %.318.us.i74, i64 8 + store i64 %221, ptr %.318.us.i74, align 8, !tbaa !57 + %indvars.iv.next148.i = add nuw nsw i64 %indvars.iv147.i, 1 + %exitcond151.not.i = icmp eq i64 %indvars.iv.next148.i, %wide.trip.count150.i + br i1 %exitcond151.not.i, label %._crit_edge.us.i75, label %218, !llvm.loop !139 + +.lr.ph15.us.i76: ; preds = %.preheader8.us.i, %.lr.ph15.us.i76 + %.08414.us.i = phi i32 [ %226, %.lr.ph15.us.i76 ], [ 0, %.preheader8.us.i ] + %.08613.us.i = phi ptr [ %223, %.lr.ph15.us.i76 ], [ %.08922.us.i, %.preheader8.us.i ] + %.212.us.i77 = phi ptr [ %225, %.lr.ph15.us.i76 ], [ %.1.lcssa.us.i, %.preheader8.us.i ] + %223 = getelementptr inbounds nuw i8, ptr %.08613.us.i, i64 8 + %224 = load i64, ptr %.08613.us.i, align 8, !tbaa !57 + %225 = getelementptr inbounds nuw i8, ptr %.212.us.i77, i64 8 + store i64 %224, ptr %.212.us.i77, align 8, !tbaa !57 + %226 = add nuw nsw i32 %.08414.us.i, 1 + %exitcond146.not.i = icmp eq i32 %226, %101 + br i1 %exitcond146.not.i, label %.preheader7.us.i72, label %.lr.ph15.us.i76, !llvm.loop !140 + +.lr.ph.us.i: ; preds = %.preheader9.us.i71, %.lr.ph.us.i + %indvars.iv141.i = phi i64 [ %indvars.iv.next142.i, %.lr.ph.us.i ], [ 0, %.preheader9.us.i71 ] + %.110.us.i78 = phi ptr [ %230, %.lr.ph.us.i ], [ %.08823.us.i, %.preheader9.us.i71 ] + %227 = sub nsw i64 %217, %indvars.iv141.i + %228 = getelementptr inbounds nuw i64, ptr %.08922.us.i, i64 %227 + %229 = load i64, ptr %228, align 8, !tbaa !57 + %230 = getelementptr inbounds nuw i8, ptr %.110.us.i78, i64 8 + store i64 %229, ptr %.110.us.i78, align 8, !tbaa !57 + %indvars.iv.next142.i = add nuw nsw i64 %indvars.iv141.i, 1 + %exitcond145.not.i = icmp eq i64 %indvars.iv.next142.i, %wide.trip.count144.i + br i1 %exitcond145.not.i, label %.preheader8.us.i, label %.lr.ph.us.i, !llvm.loop !141 + +.preheader7.us.i72: ; preds = %.lr.ph15.us.i76, %.preheader8.us.i + %.2.lcssa.us.i73 = phi ptr [ %.1.lcssa.us.i, %.preheader8.us.i ], [ %225, %.lr.ph15.us.i76 ] + %.086.lcssa.us.i = phi ptr [ %.08922.us.i, %.preheader8.us.i ], [ %223, %.lr.ph15.us.i76 ] + br label %218 + +.preheader8.us.i: ; preds = %.lr.ph.us.i, %.preheader9.us.i71 + %.1.lcssa.us.i = phi ptr [ %.08823.us.i, %.preheader9.us.i71 ], [ %230, %.lr.ph.us.i ] + br i1 %214, label %.lr.ph15.us.i76, label %.preheader7.us.i72 + +._crit_edge.us.i75: ; preds = %218 + %231 = getelementptr inbounds i64, ptr %.08922.us.i, i64 %216 + %232 = add nuw nsw i32 %.08724.us.i, 1 + %exitcond152.not.i = icmp eq i32 %232, %205 + br i1 %exitcond152.not.i, label %.preheader6.i47, label %.preheader9.us.i71, !llvm.loop !142 .preheader9.lr.ph.split.i66: ; preds = %.preheader9.lr.ph.i65 - br i1 %215, label %.preheader9.lr.ph.split.split.us.i69, label %.preheader9.lr.ph.split.split.i67 + br i1 %213, label %.preheader9.lr.ph.split.split.us.i70, label %.preheader9.lr.ph.split.split.i67 -.preheader9.lr.ph.split.split.us.i69: ; preds = %.preheader9.lr.ph.split.i66 - %wide.trip.count140.i = zext nneg i32 %208 to i64 +.preheader9.lr.ph.split.split.us.i70: ; preds = %.preheader9.lr.ph.split.i66 + %233 = zext nneg i32 %207 to i64 br i1 %214, label %.preheader9.us28.us.i, label %.preheader9.us28.i -.preheader9.us28.us.i: ; preds = %.preheader9.lr.ph.split.split.us.i69, %._crit_edge.us46.us.i - %.08724.us29.us.i = phi i32 [ %243, %._crit_edge.us46.us.i ], [ 0, %.preheader9.lr.ph.split.split.us.i69 ] - %.08823.us30.us.i = phi ptr [ %236, %._crit_edge.us46.us.i ], [ %63, %.preheader9.lr.ph.split.split.us.i69 ] - %.08922.us31.us.i = phi ptr [ %242, %._crit_edge.us46.us.i ], [ %211, %.preheader9.lr.ph.split.split.us.i69 ] - br label %237 - -..preheader7_crit_edge.us42.us.i: ; preds = %237, %..preheader7_crit_edge.us42.us.i - %indvars.iv137.i = phi i64 [ %indvars.iv.next138.i, %..preheader7_crit_edge.us42.us.i ], [ 0, %237 ] - %.318.us34.us.i = phi ptr [ %236, %..preheader7_crit_edge.us42.us.i ], [ %240, %237 ] - %233 = sub nuw nsw i64 -2, %indvars.iv137.i - %234 = getelementptr inbounds i64, ptr %238, i64 %233 - %235 = load i64, ptr %234, align 8, !tbaa !57 - %236 = getelementptr inbounds nuw i8, ptr %.318.us34.us.i, i64 8 - store i64 %235, ptr %.318.us34.us.i, align 8, !tbaa !57 - %indvars.iv.next138.i = add nuw nsw i64 %indvars.iv137.i, 1 - %exitcond141.not.i = icmp eq i64 %indvars.iv.next138.i, %wide.trip.count140.i - br i1 %exitcond141.not.i, label %._crit_edge.us46.us.i, label %..preheader7_crit_edge.us42.us.i, !llvm.loop !140 - -237: ; preds = %237, %.preheader9.us28.us.i - %.08414.us35.us.i = phi i32 [ 0, %.preheader9.us28.us.i ], [ %241, %237 ] - %.08613.us36.us.i = phi ptr [ %.08922.us31.us.i, %.preheader9.us28.us.i ], [ %238, %237 ] - %.212.us37.us.i = phi ptr [ %.08823.us30.us.i, %.preheader9.us28.us.i ], [ %240, %237 ] - %238 = getelementptr inbounds nuw i8, ptr %.08613.us36.us.i, i64 8 - %239 = load i64, ptr %.08613.us36.us.i, align 8, !tbaa !57 - %240 = getelementptr inbounds nuw i8, ptr %.212.us37.us.i, i64 8 - store i64 %239, ptr %.212.us37.us.i, align 8, !tbaa !57 - %241 = add nuw nsw i32 %.08414.us35.us.i, 1 - %exitcond136.not.i = icmp eq i32 %241, %101 - br i1 %exitcond136.not.i, label %..preheader7_crit_edge.us42.us.i, label %237, !llvm.loop !141 - -._crit_edge.us46.us.i: ; preds = %..preheader7_crit_edge.us42.us.i - %242 = getelementptr inbounds i64, ptr %.08922.us31.us.i, i64 %216 - %243 = add nuw nsw i32 %.08724.us29.us.i, 1 - %exitcond142.not.i = icmp eq i32 %243, %205 - br i1 %exitcond142.not.i, label %.preheader6.i47, label %.preheader9.us28.us.i, !llvm.loop !139 - -.preheader9.us28.i: ; preds = %.preheader9.lr.ph.split.split.us.i69, %._crit_edge.us46.i - %.08724.us29.i = phi i32 [ %250, %._crit_edge.us46.i ], [ 0, %.preheader9.lr.ph.split.split.us.i69 ] - %.08823.us30.i = phi ptr [ %248, %._crit_edge.us46.i ], [ %63, %.preheader9.lr.ph.split.split.us.i69 ] - %.08922.us31.i = phi ptr [ %249, %._crit_edge.us46.i ], [ %211, %.preheader9.lr.ph.split.split.us.i69 ] - br label %244 - -244: ; preds = %244, %.preheader9.us28.i - %indvars.iv.i = phi i64 [ 0, %.preheader9.us28.i ], [ %indvars.iv.next.i, %244 ] - %.318.us34.i = phi ptr [ %.08823.us30.i, %.preheader9.us28.i ], [ %248, %244 ] - %245 = sub nuw nsw i64 -2, %indvars.iv.i - %246 = getelementptr inbounds i64, ptr %.08922.us31.i, i64 %245 - %247 = load i64, ptr %246, align 8, !tbaa !57 - %248 = getelementptr inbounds nuw i8, ptr %.318.us34.i, i64 8 - store i64 %247, ptr %.318.us34.i, align 8, !tbaa !57 +.preheader9.us28.us.i: ; preds = %.preheader9.lr.ph.split.split.us.i70, %..preheader7_crit_edge.us45.us.i + %.08724.us29.us.i = phi i32 [ %244, %..preheader7_crit_edge.us45.us.i ], [ 0, %.preheader9.lr.ph.split.split.us.i70 ] + %.08823.us30.us.i = phi ptr [ %236, %..preheader7_crit_edge.us45.us.i ], [ %63, %.preheader9.lr.ph.split.split.us.i70 ] + %.08922.us31.us.i = phi ptr [ %243, %..preheader7_crit_edge.us45.us.i ], [ %211, %.preheader9.lr.ph.split.split.us.i70 ] + br label %238 + +..preheader8_crit_edge.us42.us.i: ; preds = %238, %..preheader8_crit_edge.us42.us.i + %.08414.us32.us.i = phi i32 [ %237, %..preheader8_crit_edge.us42.us.i ], [ 0, %238 ] + %.08613.us33.us.i = phi ptr [ %234, %..preheader8_crit_edge.us42.us.i ], [ %.08922.us31.us.i, %238 ] + %.212.us34.us.i = phi ptr [ %236, %..preheader8_crit_edge.us42.us.i ], [ %242, %238 ] + %234 = getelementptr inbounds nuw i8, ptr %.08613.us33.us.i, i64 8 + %235 = load i64, ptr %.08613.us33.us.i, align 8, !tbaa !57 + %236 = getelementptr inbounds nuw i8, ptr %.212.us34.us.i, i64 8 + store i64 %235, ptr %.212.us34.us.i, align 8, !tbaa !57 + %237 = add nuw nsw i32 %.08414.us32.us.i, 1 + %exitcond139.not.i = icmp eq i32 %237, %101 + br i1 %exitcond139.not.i, label %..preheader7_crit_edge.us45.us.i, label %..preheader8_crit_edge.us42.us.i, !llvm.loop !140 + +238: ; preds = %238, %.preheader9.us28.us.i + %indvars.iv134.i = phi i64 [ %indvars.iv.next135.i, %238 ], [ 0, %.preheader9.us28.us.i ] + %.110.us36.us.i = phi ptr [ %242, %238 ], [ %.08823.us30.us.i, %.preheader9.us28.us.i ] + %239 = sub nsw i64 %233, %indvars.iv134.i + %240 = getelementptr inbounds nuw i64, ptr %.08922.us31.us.i, i64 %239 + %241 = load i64, ptr %240, align 8, !tbaa !57 + %242 = getelementptr inbounds nuw i8, ptr %.110.us36.us.i, i64 8 + store i64 %241, ptr %.110.us36.us.i, align 8, !tbaa !57 + %indvars.iv.next135.i = add nuw nsw i64 %indvars.iv134.i, 1 + %exitcond138.not.i = icmp eq i64 %indvars.iv.next135.i, %233 + br i1 %exitcond138.not.i, label %..preheader8_crit_edge.us42.us.i, label %238, !llvm.loop !141 + +..preheader7_crit_edge.us45.us.i: ; preds = %..preheader8_crit_edge.us42.us.i + %243 = getelementptr inbounds i64, ptr %.08922.us31.us.i, i64 %216 + %244 = add nuw nsw i32 %.08724.us29.us.i, 1 + %exitcond140.not.i = icmp eq i32 %244, %205 + br i1 %exitcond140.not.i, label %.preheader6.i47, label %.preheader9.us28.us.i, !llvm.loop !142 + +.preheader9.us28.i: ; preds = %.preheader9.lr.ph.split.split.us.i70, %..preheader8_crit_edge.us42.i + %.08724.us29.i = phi i32 [ %251, %..preheader8_crit_edge.us42.i ], [ 0, %.preheader9.lr.ph.split.split.us.i70 ] + %.08823.us30.i = phi ptr [ %249, %..preheader8_crit_edge.us42.i ], [ %63, %.preheader9.lr.ph.split.split.us.i70 ] + %.08922.us31.i = phi ptr [ %250, %..preheader8_crit_edge.us42.i ], [ %211, %.preheader9.lr.ph.split.split.us.i70 ] + br label %245 + +245: ; preds = %245, %.preheader9.us28.i + %indvars.iv.i = phi i64 [ 0, %.preheader9.us28.i ], [ %indvars.iv.next.i, %245 ] + %.110.us36.i = phi ptr [ %.08823.us30.i, %.preheader9.us28.i ], [ %249, %245 ] + %246 = sub nsw i64 %233, %indvars.iv.i + %247 = getelementptr inbounds nuw i64, ptr %.08922.us31.i, i64 %246 + %248 = load i64, ptr %247, align 8, !tbaa !57 + %249 = getelementptr inbounds nuw i8, ptr %.110.us36.i, i64 8 + store i64 %248, ptr %.110.us36.i, align 8, !tbaa !57 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond134.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count140.i - br i1 %exitcond134.not.i, label %._crit_edge.us46.i, label %244, !llvm.loop !140 + %exitcond132.not.i = icmp eq i64 %indvars.iv.next.i, %233 + br i1 %exitcond132.not.i, label %..preheader8_crit_edge.us42.i, label %245, !llvm.loop !141 -._crit_edge.us46.i: ; preds = %244 - %249 = getelementptr inbounds i64, ptr %.08922.us31.i, i64 %216 - %250 = add nuw nsw i32 %.08724.us29.i, 1 - %exitcond135.not.i = icmp eq i32 %250, %205 - br i1 %exitcond135.not.i, label %.preheader6.i47, label %.preheader9.us28.i, !llvm.loop !139 +..preheader8_crit_edge.us42.i: ; preds = %245 + %250 = getelementptr inbounds i64, ptr %.08922.us31.i, i64 %216 + %251 = add nuw nsw i32 %.08724.us29.i, 1 + %exitcond133.not.i = icmp eq i32 %251, %205 + br i1 %exitcond133.not.i, label %.preheader6.i47, label %.preheader9.us28.i, !llvm.loop !142 .preheader9.lr.ph.split.split.i67: ; preds = %.preheader9.lr.ph.split.i66 - br i1 %214, label %.preheader9.us52.i, label %.preheader9.preheader.i + br i1 %214, label %.preheader9.us51.i, label %.preheader9.preheader.i .preheader9.preheader.i: ; preds = %.preheader9.lr.ph.split.split.i67 - %251 = add nsw i32 %205, -1 - %252 = zext nneg i32 %251 to i64 - %253 = shl nuw nsw i64 %252, 3 - %254 = sub nuw nsw i64 -8, %253 - %255 = mul i64 %254, %113 - %256 = shl nsw i64 %210, 3 - %257 = getelementptr i8, ptr %110, i64 %255 - %scevgep.i = getelementptr i8, ptr %257, i64 %256 + %252 = add nsw i32 %205, -1 + %253 = zext nneg i32 %252 to i64 + %254 = shl nuw nsw i64 %253, 3 + %255 = sub nuw nsw i64 -8, %254 + %256 = mul i64 %255, %113 + %257 = shl nsw i64 %210, 3 + %258 = getelementptr i8, ptr %110, i64 %256 + %scevgep.i = getelementptr i8, ptr %258, i64 %257 br label %.preheader6.i47 -.preheader9.us52.i: ; preds = %.preheader9.lr.ph.split.split.i67, %..preheader7_crit_edge.us62.i - %.08724.us53.i = phi i32 [ %264, %..preheader7_crit_edge.us62.i ], [ 0, %.preheader9.lr.ph.split.split.i67 ] - %.08823.us54.i = phi ptr [ %261, %..preheader7_crit_edge.us62.i ], [ %63, %.preheader9.lr.ph.split.split.i67 ] - %.08922.us55.i = phi ptr [ %263, %..preheader7_crit_edge.us62.i ], [ %211, %.preheader9.lr.ph.split.split.i67 ] - br label %258 - -258: ; preds = %258, %.preheader9.us52.i - %.08414.us56.i = phi i32 [ 0, %.preheader9.us52.i ], [ %262, %258 ] - %.08613.us57.i = phi ptr [ %.08922.us55.i, %.preheader9.us52.i ], [ %259, %258 ] - %.212.us58.i = phi ptr [ %.08823.us54.i, %.preheader9.us52.i ], [ %261, %258 ] - %259 = getelementptr inbounds nuw i8, ptr %.08613.us57.i, i64 8 - %260 = load i64, ptr %.08613.us57.i, align 8, !tbaa !57 - %261 = getelementptr inbounds nuw i8, ptr %.212.us58.i, i64 8 - store i64 %260, ptr %.212.us58.i, align 8, !tbaa !57 - %262 = add nuw nsw i32 %.08414.us56.i, 1 - %exitcond.not.i68 = icmp eq i32 %262, %101 - br i1 %exitcond.not.i68, label %..preheader7_crit_edge.us62.i, label %258, !llvm.loop !141 - -..preheader7_crit_edge.us62.i: ; preds = %258 - %263 = getelementptr inbounds i64, ptr %.08922.us55.i, i64 %216 - %264 = add nuw nsw i32 %.08724.us53.i, 1 - %exitcond132.not.i = icmp eq i32 %264, %205 - br i1 %exitcond132.not.i, label %.preheader6.i47, label %.preheader9.us52.i, !llvm.loop !139 - -.preheader6.i47: ; preds = %..preheader7_crit_edge.us62.i, %._crit_edge.us46.i, %._crit_edge.us46.us.i, %._crit_edge.us.i75, %.preheader9.preheader.i, %204 - %.089.lcssa.i = phi ptr [ %211, %204 ], [ %scevgep.i, %.preheader9.preheader.i ], [ %218, %._crit_edge.us.i75 ], [ %242, %._crit_edge.us46.us.i ], [ %249, %._crit_edge.us46.i ], [ %263, %..preheader7_crit_edge.us62.i ] - %.088.lcssa.i = phi ptr [ %63, %204 ], [ %63, %.preheader9.preheader.i ], [ %.3.lcssa.us.i76, %._crit_edge.us.i75 ], [ %236, %._crit_edge.us46.us.i ], [ %248, %._crit_edge.us46.i ], [ %261, %..preheader7_crit_edge.us62.i ] - %265 = icmp sgt i32 %102, 0 - br i1 %265, label %.preheader5.lr.ph.i56, label %._crit_edge85.i +.preheader9.us51.i: ; preds = %.preheader9.lr.ph.split.split.i67, %..preheader7_crit_edge.us61.i + %.08724.us52.i = phi i32 [ %265, %..preheader7_crit_edge.us61.i ], [ 0, %.preheader9.lr.ph.split.split.i67 ] + %.08823.us53.i = phi ptr [ %262, %..preheader7_crit_edge.us61.i ], [ %63, %.preheader9.lr.ph.split.split.i67 ] + %.08922.us54.i = phi ptr [ %264, %..preheader7_crit_edge.us61.i ], [ %211, %.preheader9.lr.ph.split.split.i67 ] + br label %259 + +259: ; preds = %259, %.preheader9.us51.i + %.08414.us55.i = phi i32 [ 0, %.preheader9.us51.i ], [ %263, %259 ] + %.08613.us56.i = phi ptr [ %.08922.us54.i, %.preheader9.us51.i ], [ %260, %259 ] + %.212.us57.i = phi ptr [ %.08823.us53.i, %.preheader9.us51.i ], [ %262, %259 ] + %260 = getelementptr inbounds nuw i8, ptr %.08613.us56.i, i64 8 + %261 = load i64, ptr %.08613.us56.i, align 8, !tbaa !57 + %262 = getelementptr inbounds nuw i8, ptr %.212.us57.i, i64 8 + store i64 %261, ptr %.212.us57.i, align 8, !tbaa !57 + %263 = add nuw nsw i32 %.08414.us55.i, 1 + %exitcond.not.i68 = icmp eq i32 %263, %101 + br i1 %exitcond.not.i68, label %..preheader7_crit_edge.us61.i, label %259, !llvm.loop !140 + +..preheader7_crit_edge.us61.i: ; preds = %259 + %264 = getelementptr inbounds i64, ptr %.08922.us54.i, i64 %216 + %265 = add nuw nsw i32 %.08724.us52.i, 1 + %exitcond130.not.i69 = icmp eq i32 %265, %205 + br i1 %exitcond130.not.i69, label %.preheader6.i47, label %.preheader9.us51.i, !llvm.loop !142 + +.preheader6.i47: ; preds = %..preheader7_crit_edge.us61.i, %..preheader8_crit_edge.us42.i, %..preheader7_crit_edge.us45.us.i, %._crit_edge.us.i75, %.preheader9.preheader.i, %204 + %.089.lcssa.i = phi ptr [ %211, %204 ], [ %scevgep.i, %.preheader9.preheader.i ], [ %231, %._crit_edge.us.i75 ], [ %243, %..preheader7_crit_edge.us45.us.i ], [ %250, %..preheader8_crit_edge.us42.i ], [ %264, %..preheader7_crit_edge.us61.i ] + %.088.lcssa.i = phi ptr [ %63, %204 ], [ %63, %.preheader9.preheader.i ], [ %222, %._crit_edge.us.i75 ], [ %236, %..preheader7_crit_edge.us45.us.i ], [ %249, %..preheader8_crit_edge.us42.i ], [ %262, %..preheader7_crit_edge.us61.i ] + %266 = icmp sgt i32 %102, 0 + br i1 %266, label %.preheader5.lr.ph.i56, label %._crit_edge84.i .preheader5.lr.ph.i56: ; preds = %.preheader6.i47 - %266 = icmp sgt i32 %207, 0 - %267 = icmp sgt i32 %101, 0 - %268 = icmp sgt i32 %208, 0 - %269 = sext i32 %207 to i64 - %wide.trip.count158.i = zext nneg i32 %207 to i64 - %wide.trip.count164.i = zext nneg i32 %208 to i64 + %267 = icmp sgt i32 %207, 0 + %268 = icmp sgt i32 %101, 0 + %269 = icmp sgt i32 %208, 0 + %270 = sext i32 %207 to i64 + %wide.trip.count156.i = zext nneg i32 %207 to i64 + %wide.trip.count162.i = zext nneg i32 %208 to i64 br label %.preheader5.i57 .preheader5.i57: ; preds = %._crit_edge.i62, %.preheader5.lr.ph.i56 - %.08284.i = phi i32 [ 0, %.preheader5.lr.ph.i56 ], [ %288, %._crit_edge.i62 ] - %.483.i = phi ptr [ %.088.lcssa.i, %.preheader5.lr.ph.i56 ], [ %.7.lcssa.i63, %._crit_edge.i62 ] - %.19082.i = phi ptr [ %.089.lcssa.i, %.preheader5.lr.ph.i56 ], [ %.291.lcssa.i, %._crit_edge.i62 ] - br i1 %266, label %.lr.ph.i64, label %.preheader4.i58 + %.08283.i = phi i32 [ 0, %.preheader5.lr.ph.i56 ], [ %289, %._crit_edge.i62 ] + %.482.i = phi ptr [ %.088.lcssa.i, %.preheader5.lr.ph.i56 ], [ %.7.lcssa.i63, %._crit_edge.i62 ] + %.19081.i = phi ptr [ %.089.lcssa.i, %.preheader5.lr.ph.i56 ], [ %.291.lcssa.i, %._crit_edge.i62 ] + br i1 %267, label %.lr.ph.i64, label %.preheader4.i58 -._crit_edge85.i: ; preds = %._crit_edge.i62, %.preheader6.i47 +._crit_edge84.i: ; preds = %._crit_edge.i62, %.preheader6.i47 %.190.lcssa.i = phi ptr [ %.089.lcssa.i, %.preheader6.i47 ], [ %.291.lcssa.i, %._crit_edge.i62 ] %.4.lcssa.i48 = phi ptr [ %.088.lcssa.i, %.preheader6.i47 ], [ %.7.lcssa.i63, %._crit_edge.i62 ] - %270 = icmp sgt i32 %206, 0 - br i1 %270, label %.preheader2.lr.ph.i49, label %_ZN4ncnn3MatD2Ev.exit35 - -.preheader2.lr.ph.i49: ; preds = %._crit_edge85.i - %271 = shl nsw i32 %101, 1 - %272 = sext i32 %271 to i64 - %273 = sub nsw i64 0, %272 - %274 = getelementptr inbounds i64, ptr %.190.lcssa.i, i64 %273 - %275 = icmp sgt i32 %207, 0 - %276 = icmp sgt i32 %101, 0 - %277 = icmp sgt i32 %208, 0 - %278 = sub nsw i64 0, %113 - %279 = sext i32 %207 to i64 - %wide.trip.count170.i = zext nneg i32 %207 to i64 - %wide.trip.count176.i = zext nneg i32 %208 to i64 + %271 = icmp sgt i32 %206, 0 + br i1 %271, label %.preheader2.lr.ph.i49, label %_ZN4ncnn3MatD2Ev.exit35 + +.preheader2.lr.ph.i49: ; preds = %._crit_edge84.i + %272 = shl nsw i32 %101, 1 + %273 = sext i32 %272 to i64 + %274 = sub nsw i64 0, %273 + %275 = getelementptr inbounds i64, ptr %.190.lcssa.i, i64 %274 + %276 = icmp sgt i32 %207, 0 + %277 = icmp sgt i32 %101, 0 + %278 = icmp sgt i32 %208, 0 + %279 = sub nsw i64 0, %113 + %280 = sext i32 %207 to i64 + %wide.trip.count168.i = zext nneg i32 %207 to i64 + %wide.trip.count174.i = zext nneg i32 %208 to i64 br label %.preheader2.i50 .preheader4.i58: ; preds = %.lr.ph.i64, %.preheader5.i57 - %.5.lcssa.i59 = phi ptr [ %.483.i, %.preheader5.i57 ], [ %283, %.lr.ph.i64 ] - br i1 %267, label %.lr.ph75.i, label %.preheader3.i60 + %.5.lcssa.i59 = phi ptr [ %.482.i, %.preheader5.i57 ], [ %284, %.lr.ph.i64 ] + br i1 %268, label %.lr.ph74.i, label %.preheader3.i60 .lr.ph.i64: ; preds = %.preheader5.i57, %.lr.ph.i64 - %indvars.iv155.i = phi i64 [ %indvars.iv.next156.i, %.lr.ph.i64 ], [ 0, %.preheader5.i57 ] - %.570.i = phi ptr [ %283, %.lr.ph.i64 ], [ %.483.i, %.preheader5.i57 ] - %280 = sub nsw i64 %269, %indvars.iv155.i - %281 = getelementptr inbounds i64, ptr %.19082.i, i64 %280 - %282 = load i64, ptr %281, align 8, !tbaa !57 - %283 = getelementptr inbounds nuw i8, ptr %.570.i, i64 8 - store i64 %282, ptr %.570.i, align 8, !tbaa !57 - %indvars.iv.next156.i = add nuw nsw i64 %indvars.iv155.i, 1 - %exitcond159.not.i = icmp eq i64 %indvars.iv.next156.i, %wide.trip.count158.i - br i1 %exitcond159.not.i, label %.preheader4.i58, label %.lr.ph.i64, !llvm.loop !143 - -.preheader3.i60: ; preds = %.lr.ph75.i, %.preheader4.i58 - %.291.lcssa.i = phi ptr [ %.19082.i, %.preheader4.i58 ], [ %284, %.lr.ph75.i ] - %.6.lcssa.i61 = phi ptr [ %.5.lcssa.i59, %.preheader4.i58 ], [ %286, %.lr.ph75.i ] - br i1 %268, label %.lr.ph80.i, label %._crit_edge.i62 - -.lr.ph75.i: ; preds = %.preheader4.i58, %.lr.ph75.i - %.08074.i = phi i32 [ %287, %.lr.ph75.i ], [ 0, %.preheader4.i58 ] - %.673.i = phi ptr [ %286, %.lr.ph75.i ], [ %.5.lcssa.i59, %.preheader4.i58 ] - %.29172.i = phi ptr [ %284, %.lr.ph75.i ], [ %.19082.i, %.preheader4.i58 ] - %284 = getelementptr inbounds nuw i8, ptr %.29172.i, i64 8 - %285 = load i64, ptr %.29172.i, align 8, !tbaa !57 - %286 = getelementptr inbounds nuw i8, ptr %.673.i, i64 8 - store i64 %285, ptr %.673.i, align 8, !tbaa !57 - %287 = add nuw nsw i32 %.08074.i, 1 - %exitcond160.not.i = icmp eq i32 %287, %101 - br i1 %exitcond160.not.i, label %.preheader3.i60, label %.lr.ph75.i, !llvm.loop !144 - -._crit_edge.i62: ; preds = %.lr.ph80.i, %.preheader3.i60 - %.7.lcssa.i63 = phi ptr [ %.6.lcssa.i61, %.preheader3.i60 ], [ %292, %.lr.ph80.i ] - %288 = add nuw nsw i32 %.08284.i, 1 - %exitcond166.not.i = icmp eq i32 %288, %102 - br i1 %exitcond166.not.i, label %._crit_edge85.i, label %.preheader5.i57, !llvm.loop !145 - -.lr.ph80.i: ; preds = %.preheader3.i60, %.lr.ph80.i - %indvars.iv161.i = phi i64 [ %indvars.iv.next162.i, %.lr.ph80.i ], [ 0, %.preheader3.i60 ] - %.778.i = phi ptr [ %292, %.lr.ph80.i ], [ %.6.lcssa.i61, %.preheader3.i60 ] - %289 = sub nuw nsw i64 -2, %indvars.iv161.i - %290 = getelementptr inbounds i64, ptr %.291.lcssa.i, i64 %289 - %291 = load i64, ptr %290, align 8, !tbaa !57 - %292 = getelementptr inbounds nuw i8, ptr %.778.i, i64 8 - store i64 %291, ptr %.778.i, align 8, !tbaa !57 - %indvars.iv.next162.i = add nuw nsw i64 %indvars.iv161.i, 1 - %exitcond165.not.i = icmp eq i64 %indvars.iv.next162.i, %wide.trip.count164.i - br i1 %exitcond165.not.i, label %._crit_edge.i62, label %.lr.ph80.i, !llvm.loop !146 - -.preheader2.i50: ; preds = %._crit_edge101.i, %.preheader2.lr.ph.i49 - %.078105.i = phi i32 [ 0, %.preheader2.lr.ph.i49 ], [ %302, %._crit_edge101.i ] - %.8104.i = phi ptr [ %.4.lcssa.i48, %.preheader2.lr.ph.i49 ], [ %.11.lcssa.i55, %._crit_edge101.i ] - %.392103.i = phi ptr [ %274, %.preheader2.lr.ph.i49 ], [ %301, %._crit_edge101.i ] - br i1 %275, label %.lr.ph90.i, label %.preheader1.i51 - -.preheader1.i51: ; preds = %.lr.ph90.i, %.preheader2.i50 - %.9.lcssa.i52 = phi ptr [ %.8104.i, %.preheader2.i50 ], [ %296, %.lr.ph90.i ] - br i1 %276, label %.lr.ph95.i, label %.preheader.i53 - -.lr.ph90.i: ; preds = %.preheader2.i50, %.lr.ph90.i - %indvars.iv167.i = phi i64 [ %indvars.iv.next168.i, %.lr.ph90.i ], [ 0, %.preheader2.i50 ] - %.988.i = phi ptr [ %296, %.lr.ph90.i ], [ %.8104.i, %.preheader2.i50 ] - %293 = sub nsw i64 %279, %indvars.iv167.i - %294 = getelementptr inbounds i64, ptr %.392103.i, i64 %293 - %295 = load i64, ptr %294, align 8, !tbaa !57 - %296 = getelementptr inbounds nuw i8, ptr %.988.i, i64 8 - store i64 %295, ptr %.988.i, align 8, !tbaa !57 - %indvars.iv.next168.i = add nuw nsw i64 %indvars.iv167.i, 1 - %exitcond171.not.i = icmp eq i64 %indvars.iv.next168.i, %wide.trip.count170.i - br i1 %exitcond171.not.i, label %.preheader1.i51, label %.lr.ph90.i, !llvm.loop !147 - -.preheader.i53: ; preds = %.lr.ph95.i, %.preheader1.i51 - %.10.lcssa.i54 = phi ptr [ %.9.lcssa.i52, %.preheader1.i51 ], [ %299, %.lr.ph95.i ] - %.077.lcssa.i = phi ptr [ %.392103.i, %.preheader1.i51 ], [ %297, %.lr.ph95.i ] - br i1 %277, label %.lr.ph100.i, label %._crit_edge101.i - -.lr.ph95.i: ; preds = %.preheader1.i51, %.lr.ph95.i - %.07594.i = phi i32 [ %300, %.lr.ph95.i ], [ 0, %.preheader1.i51 ] - %.07793.i = phi ptr [ %297, %.lr.ph95.i ], [ %.392103.i, %.preheader1.i51 ] - %.1092.i = phi ptr [ %299, %.lr.ph95.i ], [ %.9.lcssa.i52, %.preheader1.i51 ] - %297 = getelementptr inbounds nuw i8, ptr %.07793.i, i64 8 - %298 = load i64, ptr %.07793.i, align 8, !tbaa !57 - %299 = getelementptr inbounds nuw i8, ptr %.1092.i, i64 8 - store i64 %298, ptr %.1092.i, align 8, !tbaa !57 - %300 = add nuw nsw i32 %.07594.i, 1 - %exitcond172.not.i = icmp eq i32 %300, %101 - br i1 %exitcond172.not.i, label %.preheader.i53, label %.lr.ph95.i, !llvm.loop !148 - -._crit_edge101.i: ; preds = %.lr.ph100.i, %.preheader.i53 - %.11.lcssa.i55 = phi ptr [ %.10.lcssa.i54, %.preheader.i53 ], [ %306, %.lr.ph100.i ] - %301 = getelementptr inbounds i64, ptr %.392103.i, i64 %278 - %302 = add nuw nsw i32 %.078105.i, 1 - %exitcond178.not.i = icmp eq i32 %302, %206 - br i1 %exitcond178.not.i, label %_ZN4ncnn3MatD2Ev.exit35, label %.preheader2.i50, !llvm.loop !149 - -.lr.ph100.i: ; preds = %.preheader.i53, %.lr.ph100.i - %indvars.iv173.i = phi i64 [ %indvars.iv.next174.i, %.lr.ph100.i ], [ 0, %.preheader.i53 ] - %.1198.i = phi ptr [ %306, %.lr.ph100.i ], [ %.10.lcssa.i54, %.preheader.i53 ] - %303 = sub nuw nsw i64 -2, %indvars.iv173.i - %304 = getelementptr inbounds i64, ptr %.077.lcssa.i, i64 %303 - %305 = load i64, ptr %304, align 8, !tbaa !57 - %306 = getelementptr inbounds nuw i8, ptr %.1198.i, i64 8 - store i64 %305, ptr %.1198.i, align 8, !tbaa !57 - %indvars.iv.next174.i = add nuw nsw i64 %indvars.iv173.i, 1 - %exitcond177.not.i = icmp eq i64 %indvars.iv.next174.i, %wide.trip.count176.i - br i1 %exitcond177.not.i, label %._crit_edge101.i, label %.lr.ph100.i, !llvm.loop !150 - -_ZN4ncnn3MatD2Ev.exit35: ; preds = %._crit_edge101.i, %._crit_edge89.i, %._crit_edge73.i, %130, %._crit_edge85.i + %indvars.iv153.i = phi i64 [ %indvars.iv.next154.i, %.lr.ph.i64 ], [ 0, %.preheader5.i57 ] + %.569.i = phi ptr [ %284, %.lr.ph.i64 ], [ %.482.i, %.preheader5.i57 ] + %281 = sub nsw i64 %270, %indvars.iv153.i + %282 = getelementptr inbounds nuw i64, ptr %.19081.i, i64 %281 + %283 = load i64, ptr %282, align 8, !tbaa !57 + %284 = getelementptr inbounds nuw i8, ptr %.569.i, i64 8 + store i64 %283, ptr %.569.i, align 8, !tbaa !57 + %indvars.iv.next154.i = add nuw nsw i64 %indvars.iv153.i, 1 + %exitcond157.not.i = icmp eq i64 %indvars.iv.next154.i, %wide.trip.count156.i + br i1 %exitcond157.not.i, label %.preheader4.i58, label %.lr.ph.i64, !llvm.loop !143 + +.preheader3.i60: ; preds = %.lr.ph74.i, %.preheader4.i58 + %.291.lcssa.i = phi ptr [ %.19081.i, %.preheader4.i58 ], [ %285, %.lr.ph74.i ] + %.6.lcssa.i61 = phi ptr [ %.5.lcssa.i59, %.preheader4.i58 ], [ %287, %.lr.ph74.i ] + br i1 %269, label %.lr.ph79.i, label %._crit_edge.i62 + +.lr.ph74.i: ; preds = %.preheader4.i58, %.lr.ph74.i + %.08073.i = phi i32 [ %288, %.lr.ph74.i ], [ 0, %.preheader4.i58 ] + %.672.i = phi ptr [ %287, %.lr.ph74.i ], [ %.5.lcssa.i59, %.preheader4.i58 ] + %.29171.i = phi ptr [ %285, %.lr.ph74.i ], [ %.19081.i, %.preheader4.i58 ] + %285 = getelementptr inbounds nuw i8, ptr %.29171.i, i64 8 + %286 = load i64, ptr %.29171.i, align 8, !tbaa !57 + %287 = getelementptr inbounds nuw i8, ptr %.672.i, i64 8 + store i64 %286, ptr %.672.i, align 8, !tbaa !57 + %288 = add nuw nsw i32 %.08073.i, 1 + %exitcond158.not.i = icmp eq i32 %288, %101 + br i1 %exitcond158.not.i, label %.preheader3.i60, label %.lr.ph74.i, !llvm.loop !144 + +._crit_edge.i62: ; preds = %.lr.ph79.i, %.preheader3.i60 + %.7.lcssa.i63 = phi ptr [ %.6.lcssa.i61, %.preheader3.i60 ], [ %293, %.lr.ph79.i ] + %289 = add nuw nsw i32 %.08283.i, 1 + %exitcond164.not.i = icmp eq i32 %289, %102 + br i1 %exitcond164.not.i, label %._crit_edge84.i, label %.preheader5.i57, !llvm.loop !145 + +.lr.ph79.i: ; preds = %.preheader3.i60, %.lr.ph79.i + %indvars.iv159.i = phi i64 [ %indvars.iv.next160.i, %.lr.ph79.i ], [ 0, %.preheader3.i60 ] + %.777.i = phi ptr [ %293, %.lr.ph79.i ], [ %.6.lcssa.i61, %.preheader3.i60 ] + %290 = sub nuw nsw i64 -2, %indvars.iv159.i + %291 = getelementptr inbounds i64, ptr %.291.lcssa.i, i64 %290 + %292 = load i64, ptr %291, align 8, !tbaa !57 + %293 = getelementptr inbounds nuw i8, ptr %.777.i, i64 8 + store i64 %292, ptr %.777.i, align 8, !tbaa !57 + %indvars.iv.next160.i = add nuw nsw i64 %indvars.iv159.i, 1 + %exitcond163.not.i = icmp eq i64 %indvars.iv.next160.i, %wide.trip.count162.i + br i1 %exitcond163.not.i, label %._crit_edge.i62, label %.lr.ph79.i, !llvm.loop !146 + +.preheader2.i50: ; preds = %._crit_edge100.i, %.preheader2.lr.ph.i49 + %.078104.i = phi i32 [ 0, %.preheader2.lr.ph.i49 ], [ %303, %._crit_edge100.i ] + %.8103.i = phi ptr [ %.4.lcssa.i48, %.preheader2.lr.ph.i49 ], [ %.11.lcssa.i55, %._crit_edge100.i ] + %.392102.i = phi ptr [ %275, %.preheader2.lr.ph.i49 ], [ %302, %._crit_edge100.i ] + br i1 %276, label %.lr.ph89.i, label %.preheader1.i51 + +.preheader1.i51: ; preds = %.lr.ph89.i, %.preheader2.i50 + %.9.lcssa.i52 = phi ptr [ %.8103.i, %.preheader2.i50 ], [ %297, %.lr.ph89.i ] + br i1 %277, label %.lr.ph94.i, label %.preheader.i53 + +.lr.ph89.i: ; preds = %.preheader2.i50, %.lr.ph89.i + %indvars.iv165.i = phi i64 [ %indvars.iv.next166.i, %.lr.ph89.i ], [ 0, %.preheader2.i50 ] + %.987.i = phi ptr [ %297, %.lr.ph89.i ], [ %.8103.i, %.preheader2.i50 ] + %294 = sub nsw i64 %280, %indvars.iv165.i + %295 = getelementptr inbounds nuw i64, ptr %.392102.i, i64 %294 + %296 = load i64, ptr %295, align 8, !tbaa !57 + %297 = getelementptr inbounds nuw i8, ptr %.987.i, i64 8 + store i64 %296, ptr %.987.i, align 8, !tbaa !57 + %indvars.iv.next166.i = add nuw nsw i64 %indvars.iv165.i, 1 + %exitcond169.not.i = icmp eq i64 %indvars.iv.next166.i, %wide.trip.count168.i + br i1 %exitcond169.not.i, label %.preheader1.i51, label %.lr.ph89.i, !llvm.loop !147 + +.preheader.i53: ; preds = %.lr.ph94.i, %.preheader1.i51 + %.10.lcssa.i54 = phi ptr [ %.9.lcssa.i52, %.preheader1.i51 ], [ %300, %.lr.ph94.i ] + %.077.lcssa.i = phi ptr [ %.392102.i, %.preheader1.i51 ], [ %298, %.lr.ph94.i ] + br i1 %278, label %.lr.ph99.i, label %._crit_edge100.i + +.lr.ph94.i: ; preds = %.preheader1.i51, %.lr.ph94.i + %.07593.i = phi i32 [ %301, %.lr.ph94.i ], [ 0, %.preheader1.i51 ] + %.07792.i = phi ptr [ %298, %.lr.ph94.i ], [ %.392102.i, %.preheader1.i51 ] + %.1091.i = phi ptr [ %300, %.lr.ph94.i ], [ %.9.lcssa.i52, %.preheader1.i51 ] + %298 = getelementptr inbounds nuw i8, ptr %.07792.i, i64 8 + %299 = load i64, ptr %.07792.i, align 8, !tbaa !57 + %300 = getelementptr inbounds nuw i8, ptr %.1091.i, i64 8 + store i64 %299, ptr %.1091.i, align 8, !tbaa !57 + %301 = add nuw nsw i32 %.07593.i, 1 + %exitcond170.not.i = icmp eq i32 %301, %101 + br i1 %exitcond170.not.i, label %.preheader.i53, label %.lr.ph94.i, !llvm.loop !148 + +._crit_edge100.i: ; preds = %.lr.ph99.i, %.preheader.i53 + %.11.lcssa.i55 = phi ptr [ %.10.lcssa.i54, %.preheader.i53 ], [ %307, %.lr.ph99.i ] + %302 = getelementptr inbounds i64, ptr %.392102.i, i64 %279 + %303 = add nuw nsw i32 %.078104.i, 1 + %exitcond176.not.i = icmp eq i32 %303, %206 + br i1 %exitcond176.not.i, label %_ZN4ncnn3MatD2Ev.exit35, label %.preheader2.i50, !llvm.loop !149 + +.lr.ph99.i: ; preds = %.preheader.i53, %.lr.ph99.i + %indvars.iv171.i = phi i64 [ %indvars.iv.next172.i, %.lr.ph99.i ], [ 0, %.preheader.i53 ] + %.1197.i = phi ptr [ %307, %.lr.ph99.i ], [ %.10.lcssa.i54, %.preheader.i53 ] + %304 = sub nuw nsw i64 -2, %indvars.iv171.i + %305 = getelementptr inbounds i64, ptr %.077.lcssa.i, i64 %304 + %306 = load i64, ptr %305, align 8, !tbaa !57 + %307 = getelementptr inbounds nuw i8, ptr %.1197.i, i64 8 + store i64 %306, ptr %.1197.i, align 8, !tbaa !57 + %indvars.iv.next172.i = add nuw nsw i64 %indvars.iv171.i, 1 + %exitcond175.not.i = icmp eq i64 %indvars.iv.next172.i, %wide.trip.count174.i + br i1 %exitcond175.not.i, label %._crit_edge100.i, label %.lr.ph99.i, !llvm.loop !150 + +_ZN4ncnn3MatD2Ev.exit35: ; preds = %._crit_edge100.i, %._crit_edge89.i, %._crit_edge73.i, %130, %._crit_edge84.i call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %14) #7 %.pre = load i32, ptr %11, align 4, !tbaa !42 br label %_ZN4ncnn3MatD2Ev.exit _ZN4ncnn3MatD2Ev.exit: ; preds = %.lr.ph, %85, %_ZN4ncnn3MatD2Ev.exit35 - %307 = phi i32 [ %56, %85 ], [ %.pre, %_ZN4ncnn3MatD2Ev.exit35 ], [ %56, %.lr.ph ] - %indvars.iv.next179 = add nsw i64 %indvars.iv178, 1 - %308 = sext i32 %307 to i64 - %.not.not = icmp slt i64 %indvars.iv178, %308 + %308 = phi i32 [ %56, %85 ], [ %.pre, %_ZN4ncnn3MatD2Ev.exit35 ], [ %56, %.lr.ph ] + %indvars.iv.next175 = add nsw i64 %indvars.iv174, 1 + %309 = sext i32 %308 to i64 + %.not.not = icmp slt i64 %indvars.iv174, %309 br i1 %.not.not, label %.noexc, label %._crit_edge ._crit_edge: ; preds = %_ZN4ncnn3MatD2Ev.exit, %19 @@ -3882,9 +3883,9 @@ _ZN4ncnn3MatD2Ev.exit: ; preds = %.lr.ph, %85, %_ZN4n call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7 - br label %309 + br label %310 -309: ; preds = %._crit_edge, %9 +310: ; preds = %._crit_edge, %9 ret void } diff --git a/bench/oiio/optimized/tiffoutput.ll b/bench/oiio/optimized/tiffoutput.ll index bb8b5c6c9af..903b7e27c89 100644 --- a/bench/oiio/optimized/tiffoutput.ll +++ b/bench/oiio/optimized/tiffoutput.ll @@ -7903,7 +7903,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit164: ; preds = %_Z 373: ; preds = %371 %374 = sub nsw i32 %2, %351 - %375 = sext i32 %374 to i64 + %375 = zext nneg i32 %374 to i64 %376 = call noundef i64 @_ZNK11OpenImageIO6v3_1_09ImageSpec14scanline_bytesEb(ptr noundef nonnull align 8 dereferenceable(160) %63, i1 noundef zeroext true) #32 %377 = mul i64 %376, %375 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.085.lcssa273, ptr align 1 %.0109.lcssa271, i64 %377, i1 false) @@ -13006,7 +13006,7 @@ _ZZN3fmt2v86detail9write_intIcNS0_8appenderEjEET0_S4_NS1_13write_int_argIT1_EERK %117 = add i32 %57, %104 %118 = zext i32 %117 to i64 %119 = sub nsw i32 %57, %54 - %120 = zext i32 %119 to i64 + %120 = zext nneg i32 %119 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit: ; preds = %109, %111, %114, %116 @@ -13186,7 +13186,7 @@ _ZN3fmt2v86detail11format_uintILj4EcjEEPT0_S4_T1_ib.exit19.i.i: ; preds = %185 %207 = add nuw i32 %143, %194 %208 = zext i32 %207 to i64 %209 = sub nsw i32 %143, %140 - %210 = zext i32 %209 to i64 + %210 = zext nneg i32 %209 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit37 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit37: ; preds = %199, %201, %204, %206 @@ -13390,7 +13390,7 @@ _ZN3fmt2v86detail11format_uintILj1EcjEEPT0_S4_T1_ib.exit18.i.i: ; preds = %287 %308 = add nuw i32 %246, %295 %309 = zext i32 %308 to i64 %310 = sub nsw i32 %246, %243 - %311 = zext i32 %310 to i64 + %311 = zext nneg i32 %310 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit50 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit50: ; preds = %300, %302, %305, %307 @@ -13715,7 +13715,7 @@ _ZN3fmt2v86detail11format_uintILj3EcjEEPT0_S4_T1_ib.exit18.i.i: ; preds = %441 %462 = add nuw i32 %.pre, %449 %463 = zext i32 %462 to i64 %464 = sub nsw i32 %.pre, %389 - %465 = zext i32 %464 to i64 + %465 = zext nneg i32 %464 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit71 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit71: ; preds = %454, %456, %459, %461 @@ -30122,7 +30122,7 @@ _ZZN3fmt2v86detail9write_intIcNS0_8appenderEmEET0_S4_NS1_13write_int_argIT1_EERK %116 = add nuw i32 %58, %103 %117 = zext i32 %116 to i64 %118 = sub nsw i32 %58, %55 - %119 = zext i32 %118 to i64 + %119 = zext nneg i32 %118 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit: ; preds = %108, %110, %113, %115 @@ -30308,7 +30308,7 @@ _ZN3fmt2v86detail11format_uintILj4EcmEEPT0_S4_T1_ib.exit19.i.i: ; preds = %181 %202 = add i32 %140, %189 %203 = zext i32 %202 to i64 %204 = sub nsw i32 %140, %136 - %205 = zext i32 %204 to i64 + %205 = zext nneg i32 %204 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit40 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit40: ; preds = %194, %196, %199, %201 @@ -30519,7 +30519,7 @@ _ZN3fmt2v86detail11format_uintILj1EcmEEPT0_S4_T1_ib.exit18.i.i: ; preds = %283 %304 = add i32 %241, %291 %305 = zext i32 %304 to i64 %306 = sub nsw i32 %241, %237 - %307 = zext i32 %306 to i64 + %307 = zext nneg i32 %306 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit57 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit57: ; preds = %296, %298, %301, %303 @@ -30846,7 +30846,7 @@ _ZN3fmt2v86detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit18.i.i: ; preds = %435 %456 = add i32 %.pre, %443 %457 = zext i32 %456 to i64 %458 = sub nsw i32 %.pre, %381 - %459 = zext i32 %458 to i64 + %459 = zext nneg i32 %458 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit81 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit81: ; preds = %448, %450, %453, %455 @@ -31669,7 +31669,7 @@ _ZZN3fmt2v86detail9write_intIcNS0_8appenderEoEET0_S4_NS1_13write_int_argIT1_EERK %122 = add i32 %62, %109 %123 = zext i32 %122 to i64 %124 = sub nsw i32 %62, %.012.i.i - %125 = zext i32 %124 to i64 + %125 = zext nneg i32 %124 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit: ; preds = %114, %116, %119, %121 @@ -31856,7 +31856,7 @@ _ZN3fmt2v86detail11format_uintILj4EcoEEPT0_S4_T1_ib.exit28.i.i: ; preds = %190 %212 = add i32 %147, %199 %213 = zext i32 %212 to i64 %214 = sub nsw i32 %147, %143 - %215 = zext i32 %214 to i64 + %215 = zext nneg i32 %214 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit40 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit40: ; preds = %204, %206, %209, %211 @@ -32068,7 +32068,7 @@ _ZN3fmt2v86detail11format_uintILj1EcoEEPT0_S4_T1_ib.exit27.i.i: ; preds = %293 %314 = add i32 %251, %301 %315 = zext i32 %314 to i64 %316 = sub nsw i32 %251, %247 - %317 = zext i32 %316 to i64 + %317 = zext nneg i32 %316 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit61 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit61: ; preds = %306, %308, %311, %313 @@ -32395,7 +32395,7 @@ _ZN3fmt2v86detail11format_uintILj3EcoEEPT0_S4_T1_ib.exit27.i.i: ; preds = %445 %466 = add i32 %.pre, %453 %467 = zext i32 %466 to i64 %468 = sub nsw i32 %.pre, %391 - %469 = zext i32 %468 to i64 + %469 = zext nneg i32 %468 to i64 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit89 _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit89: ; preds = %458, %460, %463, %465 diff --git a/bench/openblas/optimized/dbdsqr.ll b/bench/openblas/optimized/dbdsqr.ll index 020806da6b8..97cc51e098c 100644 --- a/bench/openblas/optimized/dbdsqr.ll +++ b/bench/openblas/optimized/dbdsqr.ll @@ -471,12 +471,12 @@ define void @dbdsqr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %indvars.iv1424 = phi i64 [ 1, %.lr.ph1115 ], [ %indvars.iv.next1425, %239 ] %.28601112 = phi double [ %222, %.lr.ph1115 ], [ %243, %239 ] %224 = sub nsw i64 %208, %indvars.iv1424 - %225 = getelementptr inbounds double, ptr %33, i64 %224 + %225 = getelementptr inbounds nuw double, ptr %33, i64 %224 %226 = load double, ptr %225, align 8, !tbaa !7 %227 = fcmp oge double %226, 0.000000e+00 %228 = fneg double %226 %229 = select i1 %227, double %226, double %228 - %230 = getelementptr inbounds double, ptr %34, i64 %224 + %230 = getelementptr inbounds nuw double, ptr %34, i64 %224 %231 = load double, ptr %230, align 8, !tbaa !7 %232 = fcmp oge double %231, 0.000000e+00 %233 = fneg double %231 @@ -503,7 +503,7 @@ define void @dbdsqr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef br i1 %exitcond1428.not, label %..loopexit975_crit_edge, label %223, !llvm.loop !14 244: ; preds = %237 - %245 = getelementptr inbounds double, ptr %34, i64 %224 + %245 = getelementptr inbounds nuw double, ptr %34, i64 %224 %246 = trunc nsw i64 %224 to i32 store double %231, ptr %17, align 8, !tbaa !7 store double 0.000000e+00, ptr %245, align 8, !tbaa !7 diff --git a/bench/opencv/optimized/coded_stream.ll b/bench/opencv/optimized/coded_stream.ll index 9fde5a18ebf..0ac8aee7658 100644 --- a/bench/opencv/optimized/coded_stream.ll +++ b/bench/opencv/optimized/coded_stream.ll @@ -203,7 +203,7 @@ define hidden noundef i32 @_ZN6google8protobuf2io16CodedInputStream9PushLimitEi( 27: ; preds = %19 %28 = sub nsw i32 %4, %25 - %29 = sext i32 %28 to i64 + %29 = zext nneg i32 %28 to i64 %30 = sub nsw i64 0, %29 %31 = getelementptr inbounds i8, ptr %22, i64 %30 store ptr %31, ptr %5, align 8, !tbaa !14 @@ -239,7 +239,7 @@ define hidden void @_ZN6google8protobuf2io16CodedInputStream8PopLimitEi(ptr noun 16: ; preds = %2 %17 = sub nsw i32 %14, %12 - %18 = sext i32 %17 to i64 + %18 = zext nneg i32 %17 to i64 %19 = sub nsw i64 0, %18 %20 = getelementptr inbounds i8, ptr %9, i64 %19 store ptr %20, ptr %6, align 8, !tbaa !14 @@ -293,7 +293,7 @@ define hidden i64 @_ZN6google8protobuf2io16CodedInputStream35IncrementRecursionD 27: ; preds = %19 %28 = sub nsw i32 %4, %25 - %29 = sext i32 %28 to i64 + %29 = zext nneg i32 %28 to i64 %30 = sub nsw i64 0, %29 %31 = getelementptr inbounds i8, ptr %22, i64 %30 store ptr %31, ptr %5, align 8, !tbaa !14 @@ -470,7 +470,7 @@ _ZN6google8protobuf2io16CodedInputStream12ReadVarint32EPj.exit: ; preds = %54, % 86: ; preds = %78 %87 = sub nsw i32 %64, %84 - %88 = sext i32 %87 to i64 + %88 = zext nneg i32 %87 to i64 %89 = sub nsw i64 0, %88 %90 = getelementptr inbounds i8, ptr %81, i64 %89 store ptr %90, ptr %3, align 8, !tbaa !14 @@ -508,7 +508,7 @@ define hidden noundef zeroext i1 @_ZN6google8protobuf2io16CodedInputStream34Decr 18: ; preds = %2 %19 = sub nsw i32 %16, %14 - %20 = sext i32 %19 to i64 + %20 = zext nneg i32 %19 to i64 %21 = sub nsw i64 0, %20 %22 = getelementptr inbounds i8, ptr %11, i64 %21 store ptr %22, ptr %8, align 8, !tbaa !14 @@ -558,7 +558,7 @@ define hidden noundef zeroext i1 @_ZN6google8protobuf2io16CodedInputStream37Chec 18: ; preds = %2 %19 = sub nsw i32 %16, %14 - %20 = sext i32 %19 to i64 + %20 = zext nneg i32 %19 to i64 %21 = sub nsw i64 0, %20 %22 = getelementptr inbounds i8, ptr %11, i64 %21 store ptr %22, ptr %8, align 8, !tbaa !14 @@ -630,7 +630,7 @@ define hidden void @_ZN6google8protobuf2io16CodedInputStream18SetTotalBytesLimit 20: ; preds = %2 %21 = sub nsw i32 %4, %18 - %22 = sext i32 %21 to i64 + %22 = zext nneg i32 %21 to i64 %23 = sub nsw i64 0, %22 %24 = getelementptr inbounds i8, ptr %15, i64 %23 store ptr %24, ptr %5, align 8, !tbaa !14 @@ -958,7 +958,7 @@ define hidden noundef zeroext i1 @_ZN6google8protobuf2io16CodedInputStream7Refre %61 = sub nsw i32 %51, %52 store i32 %61, ptr %10, align 4, !tbaa !17 %62 = load ptr, ptr %43, align 8, !tbaa !14 - %63 = sext i32 %61 to i64 + %63 = zext nneg i32 %61 to i64 %64 = sub nsw i64 0, %63 %65 = getelementptr inbounds i8, ptr %62, i64 %64 store ptr %65, ptr %43, align 8, !tbaa !14 @@ -981,7 +981,7 @@ define hidden noundef zeroext i1 @_ZN6google8protobuf2io16CodedInputStream7Refre 76: ; preds = %66 %77 = sub nsw i32 %storemerge, %74 - %78 = sext i32 %77 to i64 + %78 = zext nneg i32 %77 to i64 %79 = sub nsw i64 0, %78 %80 = getelementptr inbounds i8, ptr %70, i64 %79 store ptr %80, ptr %43, align 8, !tbaa !14 @@ -2781,7 +2781,7 @@ define hidden noundef zeroext i1 @_ZN6google8protobuf2io19EpsCopyOutputStream4Sk %6 = alloca i32, align 4 %7 = alloca ptr, align 8 %8 = icmp slt i32 %1, 0 - br i1 %8, label %95, label %9 + br i1 %8, label %94, label %9 9: ; preds = %3 %10 = getelementptr inbounds nuw i8, ptr %0, i64 56 @@ -2792,7 +2792,7 @@ define hidden noundef zeroext i1 @_ZN6google8protobuf2io19EpsCopyOutputStream4Sk 13: ; preds = %9 %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %14, ptr %2, align 8, !tbaa !62 - br label %95 + br label %94 15: ; preds = %9 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #18 @@ -2915,7 +2915,7 @@ _ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit: ; preds = %25 _ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread: ; preds = %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.i, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.thread.i, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit store ptr %19, ptr %2, align 8, !tbaa !62 - br label %94 + br label %93 70: ; preds = %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread45, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #18 @@ -2941,7 +2941,7 @@ _ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread: ; preds = %_ZN 81: ; preds = %74 store i8 1, ptr %10, align 8, !tbaa !60 store ptr %21, ptr %0, align 8, !tbaa !57 - br label %93 + br label %92 82: ; preds = %72 %83 = load ptr, ptr %7, align 8, !tbaa !33 @@ -2952,28 +2952,27 @@ _ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread: ; preds = %_ZN %88 = zext nneg i32 %86 to i64 %89 = getelementptr inbounds nuw i8, ptr %85, i64 %88 %90 = getelementptr inbounds i8, ptr %89, i64 -16 - %91 = sext i32 %86 to i64 - %92 = getelementptr inbounds i8, ptr %19, i64 %91 - %.sink9.i = select i1 %87, ptr %90, ptr %92 + %91 = getelementptr inbounds nuw i8, ptr %19, i64 %88 + %.sink9.i = select i1 %87, ptr %90, ptr %91 %.sink.i = select i1 %87, ptr null, ptr %85 %.0.i15 = select i1 %87, ptr %85, ptr %19 store ptr %.sink9.i, ptr %0, align 8, !tbaa !57 store ptr %.sink.i, ptr %17, align 8, !tbaa !58 - br label %93 + br label %92 -93: ; preds = %82, %81 +92: ; preds = %82, %81 %storemerge = phi ptr [ %.0.i15, %82 ], [ %19, %81 ] store ptr %storemerge, ptr %2, align 8, !tbaa !62 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #18 - br label %94 + br label %93 -94: ; preds = %93, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread - %.1 = phi i1 [ false, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread ], [ %.not.not.not.not.not, %93 ] +93: ; preds = %92, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread + %.1 = phi i1 [ false, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread ], [ %.not.not.not.not.not, %92 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #18 - br label %95 + br label %94 -95: ; preds = %3, %94, %13 - %.0 = phi i1 [ false, %13 ], [ %.1, %94 ], [ false, %3 ] +94: ; preds = %3, %93, %13 + %.0 = phi i1 [ false, %13 ], [ %.1, %93 ], [ false, %3 ] ret i1 %.0 } @@ -3289,7 +3288,7 @@ _ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit: ; preds = %21 %.0.i43 = trunc i64 %.0.i43.in to i32 %.not = icmp sgt i32 %1, %.0.i43 %67 = load ptr, ptr %13, align 8, !tbaa !58 - br i1 %.not, label %78, label %68 + br i1 %.not, label %77, label %68 68: ; preds = %66 %69 = sext i32 %1 to i64 @@ -3299,33 +3298,32 @@ _ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit: ; preds = %21 %73 = zext nneg i32 %71 to i64 %74 = getelementptr inbounds nuw i8, ptr %70, i64 %73 %75 = getelementptr inbounds i8, ptr %74, i64 -16 - %76 = sext i32 %71 to i64 - %77 = getelementptr inbounds i8, ptr %15, i64 %76 - %.sink9.i = select i1 %72, ptr %75, ptr %77 + %76 = getelementptr inbounds nuw i8, ptr %15, i64 %73 + %.sink9.i = select i1 %72, ptr %75, ptr %76 %.sink.i = select i1 %72, ptr null, ptr %70 %.0.i16 = select i1 %72, ptr %70, ptr %15 store ptr %.sink9.i, ptr %0, align 8, !tbaa !57 store ptr %.sink.i, ptr %13, align 8, !tbaa !58 br label %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread -78: ; preds = %66 - %79 = icmp sgt i32 %.0.i43, 16 - %80 = and i64 %.0.i43.in, 4294967295 - %81 = getelementptr inbounds nuw i8, ptr %67, i64 %80 - %82 = getelementptr inbounds i8, ptr %81, i64 -16 +77: ; preds = %66 + %78 = icmp sgt i32 %.0.i43, 16 + %79 = and i64 %.0.i43.in, 4294967295 + %80 = getelementptr inbounds nuw i8, ptr %67, i64 %79 + %81 = getelementptr inbounds i8, ptr %80, i64 -16 %sext = shl i64 %.0.i43.in, 32 - %83 = ashr exact i64 %sext, 32 - %84 = getelementptr inbounds i8, ptr %15, i64 %83 - %.sink9.i17 = select i1 %79, ptr %82, ptr %84 - %.sink.i18 = select i1 %79, ptr null, ptr %67 - %.0.i19 = select i1 %79, ptr %67, ptr %15 + %82 = ashr exact i64 %sext, 32 + %83 = getelementptr inbounds i8, ptr %15, i64 %82 + %.sink9.i17 = select i1 %78, ptr %81, ptr %83 + %.sink.i18 = select i1 %78, ptr null, ptr %67 + %.0.i19 = select i1 %78, ptr %67, ptr %15 store ptr %.sink9.i17, ptr %0, align 8, !tbaa !57 store ptr %.sink.i18, ptr %13, align 8, !tbaa !58 br label %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread -_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread: ; preds = %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.i, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.thread.i, %68, %78, %9 - %.sink = phi ptr [ %.0.i16, %68 ], [ %.0.i19, %78 ], [ %10, %9 ], [ %15, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.thread.i ], [ %15, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit ], [ %15, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.i ] - %.0 = phi ptr [ %67, %68 ], [ null, %78 ], [ null, %9 ], [ null, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.thread.i ], [ null, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit ], [ null, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.i ] +_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread: ; preds = %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.i, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.thread.i, %68, %77, %9 + %.sink = phi ptr [ %.0.i16, %68 ], [ %.0.i19, %77 ], [ %10, %9 ], [ %15, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.thread.i ], [ %15, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit ], [ %15, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.i ] + %.0 = phi ptr [ %67, %68 ], [ null, %77 ], [ null, %9 ], [ null, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.thread.i ], [ null, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit ], [ null, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.i ] store ptr %.sink, ptr %2, align 8, !tbaa !62 ret ptr %.0 } diff --git a/bench/opencv/optimized/dxt.ll b/bench/opencv/optimized/dxt.ll index 9204037dd61..2d55813bb73 100644 --- a/bench/opencv/optimized/dxt.ll +++ b/bench/opencv/optimized/dxt.ll @@ -12213,39 +12213,39 @@ define linkonce_odr hidden void @_ZN2cv10OcvDftImpl6rowDftEPKhmPhmbb(ptr noundef %96 = lshr i32 %95, 1 %97 = zext nneg i32 %.0 to i64 %wide.trip.count56.i13.i = zext nneg i32 %.046 to i64 - %wide.trip.count51.i30.i = zext nneg i32 %96 to i64 - br label %.lr.ph.us.us.i31.i + %wide.trip.count51.i29.i = zext nneg i32 %96 to i64 + br label %.lr.ph.us.us.i30.i -.lr.ph.us.us.i31.i: ; preds = %._crit_edge.us.us.i38.i, %.lr.ph37.split.us.i11.i - %indvars.iv53.i32.i = phi i64 [ %indvars.iv.next54.i39.i, %._crit_edge.us.us.i38.i ], [ 0, %.lr.ph37.split.us.i11.i ] - %98 = mul i64 %indvars.iv53.i32.i, %94 +.lr.ph.us.us.i30.i: ; preds = %._crit_edge.us.us.i37.i, %.lr.ph37.split.us.i11.i + %indvars.iv53.i31.i = phi i64 [ %indvars.iv.next54.i38.i, %._crit_edge.us.us.i37.i ], [ 0, %.lr.ph37.split.us.i11.i ] + %98 = mul i64 %indvars.iv53.i31.i, %94 %99 = getelementptr inbounds nuw double, ptr %3, i64 %98 br label %100 -100: ; preds = %100, %.lr.ph.us.us.i31.i - %indvars.iv47.i33.i = phi i64 [ 1, %.lr.ph.us.us.i31.i ], [ %indvars.iv.next48.i36.i, %100 ] - %.idx59.i34.i = shl nuw nsw i64 %indvars.iv47.i33.i, 4 - %101 = getelementptr inbounds nuw i8, ptr %99, i64 %.idx59.i34.i +100: ; preds = %100, %.lr.ph.us.us.i30.i + %indvars.iv47.i32.i = phi i64 [ 1, %.lr.ph.us.us.i30.i ], [ %indvars.iv.next48.i35.i, %100 ] + %.idx59.i33.i = shl nuw nsw i64 %indvars.iv47.i32.i, 4 + %101 = getelementptr inbounds nuw i8, ptr %99, i64 %.idx59.i33.i %102 = load double, ptr %101, align 8, !tbaa !144 - %103 = sub nsw i64 %97, %indvars.iv47.i33.i - %.idx60.i35.i = shl nsw i64 %103, 4 - %104 = getelementptr inbounds i8, ptr %99, i64 %.idx60.i35.i + %103 = sub nsw i64 %97, %indvars.iv47.i32.i + %.idx60.i34.i = shl nsw i64 %103, 4 + %104 = getelementptr inbounds i8, ptr %99, i64 %.idx60.i34.i store double %102, ptr %104, align 8, !tbaa !144 %105 = getelementptr inbounds nuw i8, ptr %101, i64 8 %106 = load double, ptr %105, align 8, !tbaa !144 %107 = fneg double %106 %108 = getelementptr i8, ptr %104, i64 8 store double %107, ptr %108, align 8, !tbaa !144 - %indvars.iv.next48.i36.i = add nuw nsw i64 %indvars.iv47.i33.i, 1 - %exitcond52.not.i37.i = icmp eq i64 %indvars.iv.next48.i36.i, %wide.trip.count51.i30.i - br i1 %exitcond52.not.i37.i, label %._crit_edge.us.us.i38.i, label %100, !llvm.loop !296 + %indvars.iv.next48.i35.i = add nuw nsw i64 %indvars.iv47.i32.i, 1 + %exitcond52.not.i36.i = icmp eq i64 %indvars.iv.next48.i35.i, %wide.trip.count51.i29.i + br i1 %exitcond52.not.i36.i, label %._crit_edge.us.us.i37.i, label %100, !llvm.loop !296 -._crit_edge.us.us.i38.i: ; preds = %100 - %indvars.iv.next54.i39.i = add nuw nsw i64 %indvars.iv53.i32.i, 1 - %exitcond57.not.i40.i = icmp eq i64 %indvars.iv.next54.i39.i, %wide.trip.count56.i13.i - br i1 %exitcond57.not.i40.i, label %_ZN2cvL23complementComplexOutputEiPhmiii.exit, label %.lr.ph.us.us.i31.i, !llvm.loop !297 +._crit_edge.us.us.i37.i: ; preds = %100 + %indvars.iv.next54.i38.i = add nuw nsw i64 %indvars.iv53.i31.i, 1 + %exitcond57.not.i39.i = icmp eq i64 %indvars.iv.next54.i38.i, %wide.trip.count56.i13.i + br i1 %exitcond57.not.i39.i, label %_ZN2cvL23complementComplexOutputEiPhmiii.exit, label %.lr.ph.us.us.i30.i, !llvm.loop !297 -_ZN2cvL23complementComplexOutputEiPhmiii.exit: ; preds = %._crit_edge.us.us.i38.i, %._crit_edge.us.us.i.i, %93, %77, %._crit_edge +_ZN2cvL23complementComplexOutputEiPhmiii.exit: ; preds = %._crit_edge.us.us.i37.i, %._crit_edge.us.us.i.i, %93, %77, %._crit_edge ret void } @@ -13829,47 +13829,47 @@ _ZN2cvL14CopyTo2ColumnsEPKhS1_Phmim.exit: ; preds = %.lr.ph.i375, %.lr.p %725 = lshr i32 %724, 1 %726 = zext nneg i32 %14 to i64 %wide.trip.count56.i13.i = zext nneg i32 %12 to i64 - %wide.trip.count51.i30.i = zext nneg i32 %725 to i64 - br label %.lr.ph.us.i17.i + %wide.trip.count51.i29.i = zext nneg i32 %725 to i64 + br label %.lr.ph.us.i16.i -.lr.ph.us.i17.i: ; preds = %._crit_edge.us.i26.i, %.lr.ph37.split.us.i11.i - %indvars.iv42.i18.i = phi i64 [ %indvars.iv.next43.i27.i, %._crit_edge.us.i26.i ], [ 0, %.lr.ph37.split.us.i11.i ] - %727 = mul i64 %indvars.iv42.i18.i, %723 +.lr.ph.us.i16.i: ; preds = %._crit_edge.us.i25.i, %.lr.ph37.split.us.i11.i + %indvars.iv42.i17.i = phi i64 [ %indvars.iv.next43.i26.i, %._crit_edge.us.i25.i ], [ 0, %.lr.ph37.split.us.i11.i ] + %727 = mul i64 %indvars.iv42.i17.i, %723 %728 = getelementptr inbounds nuw double, ptr %3, i64 %727 - %729 = icmp eq i64 %indvars.iv42.i18.i, 0 - %730 = shl nuw nsw i64 %indvars.iv42.i18.i, 1 + %729 = icmp eq i64 %indvars.iv42.i17.i, 0 + %730 = shl nuw nsw i64 %indvars.iv42.i17.i, 1 %731 = icmp eq i64 %730, %wide.trip.count56.i13.i - %or.cond33.us.i19.i = select i1 %729, i1 true, i1 %731 - %732 = sub nsw i64 %wide.trip.count56.i13.i, %indvars.iv42.i18.i + %or.cond33.us.i18.i = select i1 %729, i1 true, i1 %731 + %732 = sub nsw i64 %wide.trip.count56.i13.i, %indvars.iv42.i17.i %733 = mul i64 %732, %723 %734 = getelementptr inbounds nuw double, ptr %3, i64 %733 - %spec.select.i20.i = select i1 %or.cond33.us.i19.i, ptr %728, ptr %734 + %spec.select.i19.i = select i1 %or.cond33.us.i18.i, ptr %728, ptr %734 br label %735 -735: ; preds = %735, %.lr.ph.us.i17.i - %indvars.iv.i21.i = phi i64 [ 1, %.lr.ph.us.i17.i ], [ %indvars.iv.next.i24.i, %735 ] - %.idx.i22.i = shl nuw nsw i64 %indvars.iv.i21.i, 4 - %736 = getelementptr inbounds nuw i8, ptr %spec.select.i20.i, i64 %.idx.i22.i +735: ; preds = %735, %.lr.ph.us.i16.i + %indvars.iv.i20.i = phi i64 [ 1, %.lr.ph.us.i16.i ], [ %indvars.iv.next.i23.i, %735 ] + %.idx.i21.i = shl nuw nsw i64 %indvars.iv.i20.i, 4 + %736 = getelementptr inbounds nuw i8, ptr %spec.select.i19.i, i64 %.idx.i21.i %737 = load double, ptr %736, align 8, !tbaa !144 - %738 = sub nsw i64 %726, %indvars.iv.i21.i - %.idx58.i23.i = shl nsw i64 %738, 4 - %739 = getelementptr inbounds i8, ptr %728, i64 %.idx58.i23.i + %738 = sub nsw i64 %726, %indvars.iv.i20.i + %.idx58.i22.i = shl nsw i64 %738, 4 + %739 = getelementptr inbounds i8, ptr %728, i64 %.idx58.i22.i store double %737, ptr %739, align 8, !tbaa !144 %740 = getelementptr inbounds nuw i8, ptr %736, i64 8 %741 = load double, ptr %740, align 8, !tbaa !144 %742 = fneg double %741 %743 = getelementptr i8, ptr %739, i64 8 store double %742, ptr %743, align 8, !tbaa !144 - %indvars.iv.next.i24.i = add nuw nsw i64 %indvars.iv.i21.i, 1 - %exitcond.not.i25.i = icmp eq i64 %indvars.iv.next.i24.i, %wide.trip.count51.i30.i - br i1 %exitcond.not.i25.i, label %._crit_edge.us.i26.i, label %735, !llvm.loop !296 + %indvars.iv.next.i23.i = add nuw nsw i64 %indvars.iv.i20.i, 1 + %exitcond.not.i24.i = icmp eq i64 %indvars.iv.next.i23.i, %wide.trip.count51.i29.i + br i1 %exitcond.not.i24.i, label %._crit_edge.us.i25.i, label %735, !llvm.loop !296 -._crit_edge.us.i26.i: ; preds = %735 - %indvars.iv.next43.i27.i = add nuw nsw i64 %indvars.iv42.i18.i, 1 - %exitcond46.not.i28.i = icmp eq i64 %indvars.iv.next43.i27.i, %wide.trip.count56.i13.i - br i1 %exitcond46.not.i28.i, label %_ZN2cvL23complementComplexOutputEiPhmiii.exit, label %.lr.ph.us.i17.i, !llvm.loop !297 +._crit_edge.us.i25.i: ; preds = %735 + %indvars.iv.next43.i26.i = add nuw nsw i64 %indvars.iv42.i17.i, 1 + %exitcond46.not.i27.i = icmp eq i64 %indvars.iv.next43.i26.i, %wide.trip.count56.i13.i + br i1 %exitcond46.not.i27.i, label %_ZN2cvL23complementComplexOutputEiPhmiii.exit, label %.lr.ph.us.i16.i, !llvm.loop !297 -_ZN2cvL23complementComplexOutputEiPhmiii.exit: ; preds = %._crit_edge.us.i26.i, %._crit_edge.us.i.i, %722, %700, %._crit_edge +_ZN2cvL23complementComplexOutputEiPhmiii.exit: ; preds = %._crit_edge.us.i25.i, %._crit_edge.us.i.i, %722, %700, %._crit_edge ret void } diff --git a/bench/openjdk/optimized/javaThread.ll b/bench/openjdk/optimized/javaThread.ll index 44b0f295d46..f23e7609ce7 100644 --- a/bench/openjdk/optimized/javaThread.ll +++ b/bench/openjdk/optimized/javaThread.ll @@ -1084,8 +1084,8 @@ define hidden noundef zeroext i1 @_ZN10JavaThread15resize_countersEii(ptr nounde %20 = sext i32 %1 to i64 %21 = getelementptr inbounds i64, ptr %8, i64 %20 %22 = sub nsw i32 %2, %1 - %23 = sext i32 %22 to i64 - %24 = shl nsw i64 %23, 3 + %23 = zext nneg i32 %22 to i64 + %24 = shl nuw nsw i64 %23, 3 tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %21, i8 0, i64 %24, i1 false) br label %25 @@ -1240,25 +1240,27 @@ define hidden void @_ZN10JavaThreadC2E8MEMFLAGS(ptr noundef nonnull align 8 dere .preheader.i.i: ; preds = %60 %62 = icmp sgt i32 %56, 0 - br i1 %62, label %64, label %65 + br i1 %62, label %64, label %67 63: ; preds = %60 tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %59, i8 0, i64 %58, i1 false) - br label %66 + br label %68 64: ; preds = %.preheader.i.i - tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %59, i8 0, i64 %58, i1 false) - br label %65 + %65 = shl i64 %53, 3 + %66 = and i64 %65, 17179869176 + tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %59, i8 0, i64 %66, i1 false) + br label %67 -65: ; preds = %64, %.preheader.i.i +67: ; preds = %64, %.preheader.i.i tail call void @_Z8FreeHeapPv(ptr noundef nonnull %57) #21 - br label %66 + br label %68 -66: ; preds = %65, %63 +68: ; preds = %67, %63 store ptr %59, ptr %29, align 8 br label %_ZN10JavaThread15resize_countersEii.exit -_ZN10JavaThread15resize_countersEii.exit: ; preds = %66, %55, %2 +_ZN10JavaThread15resize_countersEii.exit: ; preds = %68, %55, %2 tail call void @_ZN20ThreadSafepointState6createEP10JavaThread(ptr noundef nonnull %0) #21 tail call void @_ZN18SafepointMechanism17initialize_headerEP10JavaThread(ptr noundef nonnull %0) #21 store volatile ptr null, ptr %5, align 8 @@ -8054,8 +8056,8 @@ define linkonce_odr hidden void @_ZN22VM_JVMCIResizeCounters4doitEv(ptr noundef %22 = ashr exact i64 %sext, 29 %23 = getelementptr inbounds i8, ptr %10, i64 %22 %24 = sub nsw i32 %7, %5 - %25 = sext i32 %24 to i64 - %26 = shl nsw i64 %25, 3 + %25 = zext nneg i32 %24 to i64 + %26 = shl nuw nsw i64 %25, 3 tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %23, i8 0, i64 %26, i1 false) br label %27 @@ -8136,8 +8138,8 @@ _ZL21resize_counters_arrayPlii.exit: ; preds = %1 %60 = ashr exact i64 %sext11, 29 %61 = getelementptr inbounds i8, ptr %49, i64 %60 %62 = sub nsw i32 %44, %43 - %63 = sext i32 %62 to i64 - %64 = shl nsw i64 %63, 3 + %63 = zext nneg i32 %62 to i64 + %64 = shl nuw nsw i64 %63, 3 call void @llvm.memset.p0.i64(ptr nonnull align 8 %61, i8 0, i64 %64, i1 false) br label %65 diff --git a/bench/openssl/optimized/bio_b64.ll b/bench/openssl/optimized/bio_b64.ll index a8c292b7bdf..b1ba5344472 100644 --- a/bench/openssl/optimized/bio_b64.ll +++ b/bench/openssl/optimized/bio_b64.ll @@ -736,17 +736,17 @@ define internal i64 @b64_ctrl(ptr noundef %0, i32 noundef %1, i64 noundef %2, pt %7 = icmp eq ptr %5, null %8 = icmp eq ptr %6, null %or.cond = select i1 %7, i1 true, i1 %8 - br i1 %or.cond, label %84, label %9 + br i1 %or.cond, label %83, label %9 9: ; preds = %4 - switch i32 %1, label %82 [ + switch i32 %1, label %81 [ i32 1, label %16 i32 2, label %21 i32 13, label %27 - i32 10, label %46 + i32 10, label %45 i32 11, label %.preheader - i32 101, label %80 - i32 12, label %84 + i32 101, label %79 + i32 12, label %83 ] .preheader: ; preds = %9 @@ -766,17 +766,17 @@ define internal i64 @b64_ctrl(ptr noundef %0, i32 noundef %1, i64 noundef %2, pt %19 = getelementptr inbounds nuw i8, ptr %5, i64 16 store i32 0, ptr %19, align 8, !tbaa !3 %20 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 1, i64 noundef %2, ptr noundef %3) #8 - br label %84 + br label %83 21: ; preds = %9 %22 = getelementptr inbounds nuw i8, ptr %5, i64 24 %23 = load i32, ptr %22, align 8, !tbaa !18 %24 = icmp slt i32 %23, 1 - br i1 %24, label %84, label %25 + br i1 %24, label %83, label %25 25: ; preds = %21 %26 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 2, i64 noundef %2, ptr noundef %3) #8 - br label %84 + br label %83 27: ; preds = %9 %28 = load i32, ptr %5, align 8, !tbaa !10 @@ -790,123 +790,119 @@ define internal i64 @b64_ctrl(ptr noundef %0, i32 noundef %1, i64 noundef %2, pt unreachable 32: ; preds = %27 - %33 = icmp eq i32 %28, %30 - br i1 %33, label %34, label %41 - -34: ; preds = %32 - %35 = getelementptr inbounds nuw i8, ptr %5, i64 16 - %36 = load i32, ptr %35, align 8, !tbaa !3 - %.not92 = icmp eq i32 %36, 0 - br i1 %.not92, label %.thread, label %37 - -37: ; preds = %34 - %38 = getelementptr inbounds nuw i8, ptr %5, i64 32 - %39 = load ptr, ptr %38, align 8, !tbaa !13 - %40 = tail call i32 @EVP_ENCODE_CTX_num(ptr noundef %39) #8 - %.not93 = icmp eq i32 %40, 0 - br i1 %.not93, label %.thread, label %84 - -41: ; preds = %32 - %42 = sub nsw i32 %28, %30 - %43 = zext nneg i32 %42 to i64 - %44 = icmp slt i32 %42, 1 - br i1 %44, label %.thread, label %84 - -.thread: ; preds = %34, %37, %41 - %45 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 13, i64 noundef %2, ptr noundef %3) #8 - br label %84 - -46: ; preds = %9 - %47 = load i32, ptr %5, align 8, !tbaa !10 - %48 = getelementptr inbounds nuw i8, ptr %5, i64 4 - %49 = load i32, ptr %48, align 4, !tbaa !11 - %.not90 = icmp slt i32 %47, %49 - br i1 %.not90, label %50, label %51 - -50: ; preds = %46 + %33 = sub nsw i32 %28, %30 + %34 = zext nneg i32 %33 to i64 + %35 = icmp eq i32 %28, %30 + br i1 %35, label %36, label %83 + +36: ; preds = %32 + %37 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %38 = load i32, ptr %37, align 8, !tbaa !3 + %.not92 = icmp eq i32 %38, 0 + br i1 %.not92, label %43, label %39 + +39: ; preds = %36 + %40 = getelementptr inbounds nuw i8, ptr %5, i64 32 + %41 = load ptr, ptr %40, align 8, !tbaa !13 + %42 = tail call i32 @EVP_ENCODE_CTX_num(ptr noundef %41) #8 + %.not93 = icmp eq i32 %42, 0 + br i1 %.not93, label %43, label %83 + +43: ; preds = %39, %36 + %44 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 13, i64 noundef %2, ptr noundef %3) #8 + br label %83 + +45: ; preds = %9 + %46 = load i32, ptr %5, align 8, !tbaa !10 + %47 = getelementptr inbounds nuw i8, ptr %5, i64 4 + %48 = load i32, ptr %47, align 4, !tbaa !11 + %.not90 = icmp slt i32 %46, %48 + br i1 %.not90, label %49, label %50 + +49: ; preds = %45 tail call void @OPENSSL_die(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, i32 noundef 469) #9 unreachable -51: ; preds = %46 - %52 = sub nsw i32 %47, %49 - %53 = zext nneg i32 %52 to i64 - %54 = icmp slt i32 %52, 1 - br i1 %54, label %55, label %84 +50: ; preds = %45 + %51 = sub nsw i32 %46, %48 + %52 = zext nneg i32 %51 to i64 + %53 = icmp eq i32 %46, %48 + br i1 %53, label %54, label %83 -55: ; preds = %51 - %56 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 10, i64 noundef %2, ptr noundef %3) #8 - br label %84 +54: ; preds = %50 + %55 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 10, i64 noundef %2, ptr noundef %3) #8 + br label %83 .backedge: ; preds = %.backedge.backedge, %.preheader - %57 = load i32, ptr %5, align 8, !tbaa !10 - %58 = load i32, ptr %10, align 4, !tbaa !11 - %.not = icmp eq i32 %57, %58 - br i1 %.not, label %64, label %59 + %56 = load i32, ptr %5, align 8, !tbaa !10 + %57 = load i32, ptr %10, align 4, !tbaa !11 + %.not = icmp eq i32 %56, %57 + br i1 %.not, label %63, label %58 -59: ; preds = %.backedge - %60 = tail call i32 @b64_write(ptr noundef %0, ptr noundef null, i32 noundef 0) - %61 = icmp slt i32 %60, 0 - br i1 %61, label %62, label %.backedge.backedge +58: ; preds = %.backedge + %59 = tail call i32 @b64_write(ptr noundef %0, ptr noundef null, i32 noundef 0) + %60 = icmp slt i32 %59, 0 + br i1 %60, label %61, label %.backedge.backedge -.backedge.backedge: ; preds = %59, %69, %76 +.backedge.backedge: ; preds = %58, %68, %75 br label %.backedge, !llvm.loop !27 -62: ; preds = %59 - %63 = sext i32 %60 to i64 - br label %84 +61: ; preds = %58 + %62 = sext i32 %59 to i64 + br label %83 -64: ; preds = %.backedge - %65 = tail call i32 @BIO_test_flags(ptr noundef %0, i32 noundef -1) #8 - %66 = and i32 %65, 256 - %.not86 = icmp eq i32 %66, 0 - br i1 %.not86, label %71, label %67 +63: ; preds = %.backedge + %64 = tail call i32 @BIO_test_flags(ptr noundef %0, i32 noundef -1) #8 + %65 = and i32 %64, 256 + %.not86 = icmp eq i32 %65, 0 + br i1 %.not86, label %70, label %66 -67: ; preds = %64 - %68 = load i32, ptr %11, align 8, !tbaa !12 - %.not89 = icmp eq i32 %68, 0 - br i1 %.not89, label %78, label %69 +66: ; preds = %63 + %67 = load i32, ptr %11, align 8, !tbaa !12 + %.not89 = icmp eq i32 %67, 0 + br i1 %.not89, label %77, label %68 -69: ; preds = %67 - %70 = tail call i32 @EVP_EncodeBlock(ptr noundef nonnull %12, ptr noundef nonnull %13, i32 noundef %68) #8 - store i32 %70, ptr %5, align 8, !tbaa !10 +68: ; preds = %66 + %69 = tail call i32 @EVP_EncodeBlock(ptr noundef nonnull %12, ptr noundef nonnull %13, i32 noundef %67) #8 + store i32 %69, ptr %5, align 8, !tbaa !10 store i32 0, ptr %10, align 4, !tbaa !11 store i32 0, ptr %11, align 8, !tbaa !12 br label %.backedge.backedge -71: ; preds = %64 - %72 = load i32, ptr %14, align 8, !tbaa !3 - %.not87 = icmp eq i32 %72, 0 - br i1 %.not87, label %78, label %73 +70: ; preds = %63 + %71 = load i32, ptr %14, align 8, !tbaa !3 + %.not87 = icmp eq i32 %71, 0 + br i1 %.not87, label %77, label %72 -73: ; preds = %71 - %74 = load ptr, ptr %15, align 8, !tbaa !13 - %75 = tail call i32 @EVP_ENCODE_CTX_num(ptr noundef %74) #8 - %.not88 = icmp eq i32 %75, 0 - br i1 %.not88, label %78, label %76 +72: ; preds = %70 + %73 = load ptr, ptr %15, align 8, !tbaa !13 + %74 = tail call i32 @EVP_ENCODE_CTX_num(ptr noundef %73) #8 + %.not88 = icmp eq i32 %74, 0 + br i1 %.not88, label %77, label %75 -76: ; preds = %73 +75: ; preds = %72 store i32 0, ptr %10, align 4, !tbaa !11 - %77 = load ptr, ptr %15, align 8, !tbaa !13 - tail call void @EVP_EncodeFinal(ptr noundef %77, ptr noundef nonnull %12, ptr noundef nonnull %5) #8 + %76 = load ptr, ptr %15, align 8, !tbaa !13 + tail call void @EVP_EncodeFinal(ptr noundef %76, ptr noundef nonnull %12, ptr noundef nonnull %5) #8 br label %.backedge.backedge -78: ; preds = %71, %73, %67 - %79 = tail call i64 @BIO_ctrl(ptr noundef %6, i32 noundef 11, i64 noundef %2, ptr noundef %3) #8 +77: ; preds = %70, %72, %66 + %78 = tail call i64 @BIO_ctrl(ptr noundef %6, i32 noundef 11, i64 noundef %2, ptr noundef %3) #8 tail call void @BIO_copy_next_retry(ptr noundef %0) #8 - br label %84 + br label %83 -80: ; preds = %9 +79: ; preds = %9 tail call void @BIO_clear_flags(ptr noundef %0, i32 noundef 15) #8 - %81 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 101, i64 noundef %2, ptr noundef %3) #8 + %80 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 101, i64 noundef %2, ptr noundef %3) #8 tail call void @BIO_copy_next_retry(ptr noundef %0) #8 - br label %84 + br label %83 -82: ; preds = %9 - %83 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef %1, i64 noundef %2, ptr noundef %3) #8 - br label %84 +81: ; preds = %9 + %82 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef %1, i64 noundef %2, ptr noundef %3) #8 + br label %83 -84: ; preds = %9, %16, %78, %80, %82, %25, %41, %.thread, %55, %51, %21, %37, %4, %62 - %.0 = phi i64 [ %63, %62 ], [ 0, %4 ], [ %83, %82 ], [ %20, %16 ], [ %26, %25 ], [ %45, %.thread ], [ %43, %41 ], [ %56, %55 ], [ %53, %51 ], [ %79, %78 ], [ %81, %80 ], [ 1, %9 ], [ 1, %21 ], [ 1, %37 ] +83: ; preds = %32, %9, %16, %77, %79, %81, %25, %43, %54, %50, %21, %39, %4, %61 + %.0 = phi i64 [ %62, %61 ], [ 0, %4 ], [ %82, %81 ], [ %20, %16 ], [ %26, %25 ], [ %44, %43 ], [ %55, %54 ], [ %52, %50 ], [ %78, %77 ], [ %80, %79 ], [ 1, %9 ], [ 1, %21 ], [ 1, %39 ], [ %34, %32 ] ret i64 %.0 } diff --git a/bench/openusd/optimized/bignum.ll b/bench/openusd/optimized/bignum.ll index 0e332f571e4..10bca7520e3 100644 --- a/bench/openusd/optimized/bignum.ll +++ b/bench/openusd/optimized/bignum.ll @@ -2175,7 +2175,7 @@ _ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum5AlignERKS1_. br i1 %97, label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum5ClampEv.exit, label %.preheader .preheader: ; preds = %90, %.loopexit - %.1 = phi i16 [ %134, %.loopexit ], [ %94, %90 ] + %.1 = phi i16 [ %130, %.loopexit ], [ %94, %90 ] %98 = load i16, ptr %1, align 4 %99 = sext i16 %98 to i32 %100 = load i16, ptr %11, align 2 @@ -2195,62 +2195,58 @@ _ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum5AlignERKS1_. .preheader.i.i: ; preds = %109 %111 = tail call i16 @llvm.smin.i16(i16 %105, i16 %100) - %112 = sext i16 %98 to i64 - %113 = sext i16 %100 to i64 - %114 = add nsw i64 %113, %112 - %115 = sext i16 %105 to i64 - %116 = sext i16 %111 to i64 - %117 = sext i32 %102 to i64 - %118 = sext i32 %107 to i64 - br label %119 - -119: ; preds = %132, %.preheader.i.i - %indvars.iv.i.i = phi i64 [ %114, %.preheader.i.i ], [ %indvars.iv.next.i.i, %132 ] - %indvars.iv.next.i.i = add nsw i64 %indvars.iv.i.i, -1 - %.not.not.i.i = icmp sgt i64 %indvars.iv.i.i, %116 - br i1 %.not.not.i.i, label %120, label %.loopexit - -120: ; preds = %119 - %.not.i.i.i = icmp sgt i64 %indvars.iv.i.i, %117 - %121 = icmp sle i64 %indvars.iv.i.i, %113 - %or.cond.i.i.i = or i1 %121, %.not.i.i.i - br i1 %or.cond.i.i.i, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i, label %122 - -122: ; preds = %120 - %123 = sub nsw i64 %indvars.iv.next.i.i, %113 - %124 = getelementptr inbounds [128 x i32], ptr %68, i64 0, i64 %123 - %125 = load i32, ptr %124, align 4 + %112 = sext i16 %111 to i32 + br label %113 + +113: ; preds = %128, %.preheader.i.i + %.019.in.i.i = phi i32 [ %.019.i.i, %128 ], [ %102, %.preheader.i.i ] + %.019.i.i = add nsw i32 %.019.in.i.i, -1 + %.not.not.i.i = icmp sgt i32 %.019.in.i.i, %112 + br i1 %.not.not.i.i, label %114, label %.loopexit + +114: ; preds = %113 + %.not.i.i.i = icmp sgt i32 %.019.in.i.i, %102 + %115 = icmp sle i32 %.019.in.i.i, %101 + %or.cond.i.i.i = or i1 %115, %.not.i.i.i + br i1 %or.cond.i.i.i, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i, label %116 + +116: ; preds = %114 + %117 = sub nsw i32 %.019.i.i, %101 + %118 = zext nneg i32 %117 to i64 + %119 = getelementptr inbounds nuw [128 x i32], ptr %68, i64 0, i64 %118 + %120 = load i32, ptr %119, align 4 br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i -_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i: ; preds = %122, %120 - %.0.i.i.i = phi i32 [ %125, %122 ], [ 0, %120 ] - %.not.i24.i.i = icmp sgt i64 %indvars.iv.i.i, %118 - %126 = icmp sle i64 %indvars.iv.i.i, %115 - %or.cond.i25.i.i = or i1 %126, %.not.i24.i.i - br i1 %or.cond.i25.i.i, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i, label %127 - -127: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i - %128 = sub nsw i64 %indvars.iv.next.i.i, %115 - %129 = getelementptr inbounds [128 x i32], ptr %63, i64 0, i64 %128 - %130 = load i32, ptr %129, align 4 +_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i: ; preds = %116, %114 + %.0.i.i.i = phi i32 [ %120, %116 ], [ 0, %114 ] + %.not.i24.i.i = icmp sgt i32 %.019.in.i.i, %107 + %121 = icmp sle i32 %.019.in.i.i, %106 + %or.cond.i25.i.i = or i1 %121, %.not.i24.i.i + br i1 %or.cond.i25.i.i, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i, label %122 + +122: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i + %123 = sub nsw i32 %.019.i.i, %106 + %124 = zext nneg i32 %123 to i64 + %125 = getelementptr inbounds nuw [128 x i32], ptr %63, i64 0, i64 %124 + %126 = load i32, ptr %125, align 4 br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i -_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i: ; preds = %127, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i - %.0.i26.i.i = phi i32 [ %130, %127 ], [ 0, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i ] - %131 = icmp ult i32 %.0.i.i.i, %.0.i26.i.i - br i1 %131, label %.loopexit, label %132 +_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i: ; preds = %122, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i + %.0.i26.i.i = phi i32 [ %126, %122 ], [ 0, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i ] + %127 = icmp ult i32 %.0.i.i.i, %.0.i26.i.i + br i1 %127, label %.loopexit, label %128 -132: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i - %133 = icmp ugt i32 %.0.i.i.i, %.0.i26.i.i - br i1 %133, label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum5ClampEv.exit, label %119, !llvm.loop !34 +128: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i + %129 = icmp ugt i32 %.0.i.i.i, %.0.i26.i.i + br i1 %129, label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum5ClampEv.exit, label %113, !llvm.loop !34 -.loopexit: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i, %119, %.preheader +.loopexit: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i, %113, %.preheader tail call void @_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum14SubtractBignumERKS1_(ptr noundef nonnull align 4 dereferenceable(516) %0, ptr noundef nonnull align 4 dereferenceable(516) %1) - %134 = add i16 %.1, 1 + %130 = add i16 %.1, 1 br label %.preheader, !llvm.loop !35 -_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum5ClampEv.exit: ; preds = %109, %132, %.lr.ph.i32, %.critedge.thread3.i, %.critedge.i, %90, %2 - %.0 = phi i16 [ 0, %2 ], [ %94, %90 ], [ %77, %.critedge.i ], [ %77, %.critedge.thread3.i ], [ %77, %.lr.ph.i32 ], [ %.1, %132 ], [ %.1, %109 ] +_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum5ClampEv.exit: ; preds = %109, %128, %.lr.ph.i32, %.critedge.thread3.i, %.critedge.i, %90, %2 + %.0 = phi i16 [ 0, %2 ], [ %94, %90 ], [ %77, %.critedge.i ], [ %77, %.critedge.thread3.i ], [ %77, %.lr.ph.i32 ], [ %.1, %128 ], [ %.1, %109 ] ret i16 %.0 } @@ -2558,8 +2554,8 @@ define noundef i32 @_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversio 10: ; preds = %2 %11 = sub nsw i32 %1, %7 %12 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %13 = sext i32 %11 to i64 - %14 = getelementptr inbounds [128 x i32], ptr %12, i64 0, i64 %13 + %13 = zext nneg i32 %11 to i64 + %14 = getelementptr inbounds nuw [128 x i32], ptr %12, i64 0, i64 %13 %15 = load i32, ptr %14, align 4 br label %16 @@ -2591,60 +2587,55 @@ define noundef range(i32 -1, 2) i32 @_ZN32pxrInternal_v0_24__pxrReserved__21pxr_ .preheader: ; preds = %16 %18 = tail call i16 @llvm.smin.i16(i16 %12, i16 %6) - %19 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %20 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %21 = sext i16 %3 to i64 - %22 = sext i16 %6 to i64 - %23 = add nsw i64 %21, %22 - %24 = sext i16 %6 to i64 - %25 = sext i16 %12 to i64 - %26 = sext i16 %18 to i64 - %27 = sext i32 %8 to i64 - %28 = sext i32 %14 to i64 - br label %29 - -29: ; preds = %.preheader, %42 - %indvars.iv = phi i64 [ %23, %.preheader ], [ %indvars.iv.next, %42 ] - %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not.not = icmp sgt i64 %indvars.iv, %26 - br i1 %.not.not, label %30, label %.loopexit - -30: ; preds = %29 - %.not.i = icmp sgt i64 %indvars.iv, %27 - %31 = icmp sle i64 %indvars.iv, %24 - %or.cond.i = or i1 %31, %.not.i - br i1 %or.cond.i, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit, label %32 - -32: ; preds = %30 - %33 = sub nsw i64 %indvars.iv.next, %24 - %34 = getelementptr inbounds [128 x i32], ptr %19, i64 0, i64 %33 - %35 = load i32, ptr %34, align 4 + %19 = sext i16 %18 to i32 + %20 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %21 = getelementptr inbounds nuw i8, ptr %1, i64 4 + br label %22 + +22: ; preds = %.preheader, %37 + %.019.in = phi i32 [ %.019, %37 ], [ %8, %.preheader ] + %.019 = add nsw i32 %.019.in, -1 + %.not.not = icmp sgt i32 %.019.in, %19 + br i1 %.not.not, label %23, label %.loopexit + +23: ; preds = %22 + %.not.i = icmp sgt i32 %.019.in, %8 + %24 = icmp sle i32 %.019.in, %7 + %or.cond.i = or i1 %24, %.not.i + br i1 %or.cond.i, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit, label %25 + +25: ; preds = %23 + %26 = sub nsw i32 %.019, %7 + %27 = zext nneg i32 %26 to i64 + %28 = getelementptr inbounds nuw [128 x i32], ptr %20, i64 0, i64 %27 + %29 = load i32, ptr %28, align 4 br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit -_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit: ; preds = %30, %32 - %.0.i = phi i32 [ %35, %32 ], [ 0, %30 ] - %.not.i24 = icmp sgt i64 %indvars.iv, %28 - %36 = icmp sle i64 %indvars.iv, %25 - %or.cond.i25 = or i1 %36, %.not.i24 - br i1 %or.cond.i25, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27, label %37 - -37: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit - %38 = sub nsw i64 %indvars.iv.next, %25 - %39 = getelementptr inbounds [128 x i32], ptr %20, i64 0, i64 %38 - %40 = load i32, ptr %39, align 4 +_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit: ; preds = %23, %25 + %.0.i = phi i32 [ %29, %25 ], [ 0, %23 ] + %.not.i24 = icmp sgt i32 %.019.in, %14 + %30 = icmp sle i32 %.019.in, %13 + %or.cond.i25 = or i1 %30, %.not.i24 + br i1 %or.cond.i25, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27, label %31 + +31: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit + %32 = sub nsw i32 %.019, %13 + %33 = zext nneg i32 %32 to i64 + %34 = getelementptr inbounds nuw [128 x i32], ptr %21, i64 0, i64 %33 + %35 = load i32, ptr %34, align 4 br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27 -_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit, %37 - %.0.i26 = phi i32 [ %40, %37 ], [ 0, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit ] - %41 = icmp ult i32 %.0.i, %.0.i26 - br i1 %41, label %.loopexit, label %42 +_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit, %31 + %.0.i26 = phi i32 [ %35, %31 ], [ 0, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit ] + %36 = icmp ult i32 %.0.i, %.0.i26 + br i1 %36, label %.loopexit, label %37 -42: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27 - %43 = icmp ugt i32 %.0.i, %.0.i26 - br i1 %43, label %.loopexit, label %29, !llvm.loop !34 +37: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27 + %38 = icmp ugt i32 %.0.i, %.0.i26 + br i1 %38, label %.loopexit, label %22, !llvm.loop !34 -.loopexit: ; preds = %29, %42, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27, %16, %2 - %.0 = phi i32 [ -1, %2 ], [ 1, %16 ], [ 0, %29 ], [ 1, %42 ], [ -1, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27 ] +.loopexit: ; preds = %22, %37, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27, %16, %2 + %.0 = phi i32 [ -1, %2 ], [ 1, %16 ], [ 0, %22 ], [ 1, %37 ], [ -1, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27 ] ret i32 %.0 } @@ -2652,11 +2643,11 @@ _ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZer define noundef range(i32 -1, 2) i32 @_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11PlusCompareERKS1_S3_S3_(ptr noundef nonnull readonly align 4 captures(none) dereferenceable(516) %0, ptr noundef nonnull readonly align 4 captures(none) dereferenceable(516) %1, ptr noundef nonnull readonly align 4 captures(none) dereferenceable(516) %2) local_unnamed_addr #7 align 2 { %.pre = load i16, ptr %0, align 4 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 2 - %.pre78 = load i16, ptr %.phi.trans.insert, align 2 + %.pre77 = load i16, ptr %.phi.trans.insert, align 2 br label %tailrecurse tailrecurse: ; preds = %tailrecurse, %3 - %4 = phi i16 [ %.pre78, %3 ], [ %12, %tailrecurse ] + %4 = phi i16 [ %.pre77, %3 ], [ %12, %tailrecurse ] %5 = phi i16 [ %.pre, %3 ], [ %9, %tailrecurse ] %.tr = phi ptr [ %0, %3 ], [ %.tr54, %tailrecurse ] %.tr54 = phi ptr [ %1, %3 ], [ %.tr, %tailrecurse ] @@ -2707,83 +2698,76 @@ tailrecurse: ; preds = %tailrecurse, %3 %35 = getelementptr inbounds nuw i8, ptr %.tr, i64 4 %36 = getelementptr inbounds nuw i8, ptr %.tr54, i64 4 %37 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %38 = sext i16 %19 to i64 - %39 = sext i16 %22 to i64 - %40 = add nsw i64 %38, %39 - %41 = sext i16 %22 to i64 - %42 = sext i32 %24 to i64 - %43 = sext i16 %12 to i64 - %44 = sext i32 %14 to i64 - %45 = sext i16 %4 to i64 - %46 = sext i32 %8 to i64 - %47 = sext i16 %33 to i64 - br label %50 - -48: ; preds = %69 - %49 = shl nuw nsw i32 %70, 28 - %.not42.not = icmp sgt i64 %indvars.iv.next, %47 - br i1 %.not42.not, label %50, label %._crit_edge.loopexit, !llvm.loop !44 - -50: ; preds = %.lr.ph, %48 - %indvars.iv = phi i64 [ %40, %.lr.ph ], [ %indvars.iv.next, %48 ] - %.03769 = phi i32 [ 0, %.lr.ph ], [ %49, %48 ] - %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not.i = icmp sgt i64 %indvars.iv, %46 - %51 = icmp sle i64 %indvars.iv, %45 - %or.cond.i = or i1 %51, %.not.i - br i1 %or.cond.i, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit, label %52 - -52: ; preds = %50 - %53 = sub nsw i64 %indvars.iv.next, %45 - %54 = getelementptr inbounds [128 x i32], ptr %35, i64 0, i64 %53 - %55 = load i32, ptr %54, align 4 + br label %40 + +38: ; preds = %62 + %39 = shl nuw nsw i32 %63, 28 + %.not42.not = icmp sgt i32 %.03870, %34 + br i1 %.not42.not, label %40, label %._crit_edge.loopexit, !llvm.loop !44 + +40: ; preds = %.lr.ph, %38 + %.03769 = phi i32 [ 0, %.lr.ph ], [ %39, %38 ] + %.038.in68 = phi i32 [ %24, %.lr.ph ], [ %.03870, %38 ] + %.03870 = add nsw i32 %.038.in68, -1 + %.not.i = icmp sgt i32 %.038.in68, %8 + %41 = icmp sle i32 %.038.in68, %7 + %or.cond.i = or i1 %41, %.not.i + br i1 %or.cond.i, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit, label %42 + +42: ; preds = %40 + %43 = sub nsw i32 %.03870, %7 + %44 = zext nneg i32 %43 to i64 + %45 = getelementptr inbounds nuw [128 x i32], ptr %35, i64 0, i64 %44 + %46 = load i32, ptr %45, align 4 br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit -_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit: ; preds = %50, %52 - %.0.i = phi i32 [ %55, %52 ], [ 0, %50 ] - %.not.i44 = icmp sgt i64 %indvars.iv, %44 - %56 = icmp sle i64 %indvars.iv, %43 - %or.cond.i45 = or i1 %56, %.not.i44 - br i1 %or.cond.i45, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47, label %57 - -57: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit - %58 = sub nsw i64 %indvars.iv.next, %43 - %59 = getelementptr inbounds [128 x i32], ptr %36, i64 0, i64 %58 - %60 = load i32, ptr %59, align 4 +_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit: ; preds = %40, %42 + %.0.i = phi i32 [ %46, %42 ], [ 0, %40 ] + %.not.i44 = icmp sgt i32 %.038.in68, %14 + %47 = icmp sle i32 %.038.in68, %13 + %or.cond.i45 = or i1 %47, %.not.i44 + br i1 %or.cond.i45, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47, label %48 + +48: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit + %49 = sub nsw i32 %.03870, %13 + %50 = zext nneg i32 %49 to i64 + %51 = getelementptr inbounds nuw [128 x i32], ptr %36, i64 0, i64 %50 + %52 = load i32, ptr %51, align 4 br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47 -_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit, %57 - %.0.i46 = phi i32 [ %60, %57 ], [ 0, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit ] - %.not.i48 = icmp sgt i64 %indvars.iv, %42 - %61 = icmp sle i64 %indvars.iv, %41 - %or.cond.i49 = or i1 %61, %.not.i48 - br i1 %or.cond.i49, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51, label %62 - -62: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47 - %63 = sub nsw i64 %indvars.iv.next, %41 - %64 = getelementptr inbounds [128 x i32], ptr %37, i64 0, i64 %63 - %65 = load i32, ptr %64, align 4 +_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit, %48 + %.0.i46 = phi i32 [ %52, %48 ], [ 0, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit ] + %.not.i48 = icmp sgt i32 %.038.in68, %24 + %53 = icmp sle i32 %.038.in68, %23 + %or.cond.i49 = or i1 %53, %.not.i48 + br i1 %or.cond.i49, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51, label %54 + +54: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47 + %55 = sub nsw i32 %.03870, %23 + %56 = zext nneg i32 %55 to i64 + %57 = getelementptr inbounds nuw [128 x i32], ptr %37, i64 0, i64 %56 + %58 = load i32, ptr %57, align 4 br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51 -_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47, %62 - %.0.i50 = phi i32 [ %65, %62 ], [ 0, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47 ] - %66 = add i32 %.0.i46, %.0.i - %67 = add i32 %.0.i50, %.03769 - %68 = icmp ugt i32 %66, %67 - br i1 %68, label %.loopexit, label %69 - -69: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51 - %70 = sub nuw i32 %67, %66 - %71 = icmp ugt i32 %70, 1 - br i1 %71, label %.loopexit, label %48 - -._crit_edge.loopexit: ; preds = %48 - %72 = icmp ne i32 %67, %66 - %73 = sext i1 %72 to i32 +_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47, %54 + %.0.i50 = phi i32 [ %58, %54 ], [ 0, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47 ] + %59 = add i32 %.0.i46, %.0.i + %60 = add i32 %.0.i50, %.03769 + %61 = icmp ugt i32 %59, %60 + br i1 %61, label %.loopexit, label %62 + +62: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51 + %63 = sub nuw i32 %60, %59 + %64 = icmp ugt i32 %63, 1 + br i1 %64, label %.loopexit, label %38 + +._crit_edge.loopexit: ; preds = %38 + %65 = icmp ne i32 %60, %59 + %66 = sext i1 %65 to i32 br label %.loopexit -.loopexit: ; preds = %69, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51, %30, %._crit_edge.loopexit, %28, %26, %16 - %.0 = phi i32 [ -1, %16 ], [ 1, %26 ], [ -1, %28 ], [ 0, %30 ], [ %73, %._crit_edge.loopexit ], [ -1, %69 ], [ 1, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51 ] +.loopexit: ; preds = %62, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51, %30, %._crit_edge.loopexit, %28, %26, %16 + %.0 = phi i32 [ -1, %16 ], [ 1, %26 ], [ -1, %28 ], [ 0, %30 ], [ %66, %._crit_edge.loopexit ], [ -1, %62 ], [ 1, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51 ] ret i32 %.0 } diff --git a/bench/php/optimized/zend_ssa.ll b/bench/php/optimized/zend_ssa.ll index 2a628b3ac05..df20c4bb338 100644 --- a/bench/php/optimized/zend_ssa.ll +++ b/bench/php/optimized/zend_ssa.ll @@ -5325,13 +5325,13 @@ define hidden void @zend_ssa_remove_predecessor(ptr noundef readonly captures(no 52: ; preds = %39 %53 = getelementptr inbounds nuw i8, ptr %42, i64 4 %54 = sub nsw i32 %50, %23 - %55 = sext i32 %54 to i64 - %56 = shl nsw i64 %55, 2 + %55 = zext nneg i32 %54 to i64 + %56 = shl nuw nsw i64 %55, 2 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %42, ptr nonnull align 4 %53, i64 %56, i1 false) %57 = load ptr, ptr %46, align 8, !tbaa !99 %58 = getelementptr inbounds nuw ptr, ptr %57, i64 %24 %59 = getelementptr inbounds nuw i8, ptr %58, i64 8 - %60 = shl nsw i64 %55, 3 + %60 = shl nuw nsw i64 %55, 3 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %58, ptr nonnull align 8 %59, i64 %60, i1 false) br label %61 @@ -5467,8 +5467,8 @@ zend_ssa_remove_phi_source.exit: ; preds = %105, %.critedge.i.i %114 = getelementptr inbounds i32, ptr %110, i64 %113 %115 = getelementptr inbounds nuw i8, ptr %114, i64 4 %116 = sub nsw i32 %107, %23 - %117 = sext i32 %116 to i64 - %118 = shl nsw i64 %117, 2 + %117 = zext nneg i32 %116 to i64 + %118 = shl nuw nsw i64 %117, 2 tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %114, ptr nonnull align 4 %115, i64 %118, i1 false) br label %.thread diff --git a/bench/postgres/optimized/inv_api.ll b/bench/postgres/optimized/inv_api.ll index e3c790919bb..5565e107687 100644 --- a/bench/postgres/optimized/inv_api.ll +++ b/bench/postgres/optimized/inv_api.ll @@ -905,7 +905,7 @@ getdatafield.exit: ; preds = %96 116: ; preds = %111 %117 = getelementptr inbounds i8, ptr %.ptr, i64 %109 %118 = sub nsw i32 %114, %99 - %119 = sext i32 %118 to i64 + %119 = zext nneg i32 %118 to i64 %120 = ptrtoint ptr %117 to i64 %121 = and i64 %120, 7 %122 = icmp eq i64 %121, 0 @@ -921,10 +921,10 @@ getdatafield.exit: ; preds = %96 .lr.ph.preheader: ; preds = %123 %127 = lshr i32 %97, 2 %128 = zext nneg i32 %127 to i64 - %129 = add i64 %68, %128 - %130 = and i64 %112, 2047 - %131 = add i64 %69, %130 - %umax = call i64 @llvm.umax.i64(i64 %129, i64 %131) + %129 = add i64 %6, %128 + %130 = add i64 %129, %119 + %131 = add i64 %68, %128 + %umax = call i64 @llvm.umax.i64(i64 %130, i64 %131) %132 = add i64 %umax, %67 %133 = sub i64 %132, %128 %134 = and i64 %133, -8 @@ -1200,7 +1200,7 @@ open_lo_relation.exit: ; preds = %25, %41 %65 = getelementptr inbounds nuw i8, ptr %64, i64 4 %66 = load i32, ptr %65, align 4 %67 = icmp eq i32 %66, %10 - br i1 %67, label %68, label %115 + br i1 %67, label %68, label %113 68: ; preds = %60 %69 = getelementptr inbounds nuw i8, ptr %64, i64 8 @@ -1251,7 +1251,7 @@ getdatafield.exit: ; preds = %74 92: ; preds = %88 %93 = getelementptr inbounds i8, ptr %.ptr, i64 %86 %94 = sub nsw i32 %90, %77 - %95 = sext i32 %94 to i64 + %95 = zext nneg i32 %94 to i64 %96 = ptrtoint ptr %93 to i64 %97 = and i64 %96, 7 %98 = icmp eq i64 %97, 0 @@ -1268,123 +1268,121 @@ getdatafield.exit: ; preds = %74 %103 = lshr i32 %75, 2 %104 = zext nneg i32 %103 to i64 %105 = add i64 %5, %104 - %106 = add i64 %105, 8 - %107 = and i64 %1, 2047 - %108 = add i64 %107, %5 - %109 = add i64 %108, 4 - %umax = call i64 @llvm.umax.i64(i64 %106, i64 %109) - %110 = xor i64 %5, -1 - %111 = add i64 %umax, %110 - %112 = sub i64 %111, %104 - %113 = and i64 %112, -8 - %114 = add i64 %113, 8 + %106 = add i64 %105, %95 + %107 = add i64 %105, 8 + %umax = call i64 @llvm.umax.i64(i64 %106, i64 %107) + %108 = xor i64 %5, -1 + %109 = add i64 %umax, %108 + %110 = sub i64 %109, %104 + %111 = and i64 %110, -8 + %112 = add i64 %111, 8 br label %.loopexit103.sink.split -115: ; preds = %60 - %116 = load ptr, ptr @lo_heap_r, align 8 - %117 = getelementptr inbounds nuw i8, ptr %52, i64 4 - call void @CatalogTupleDelete(ptr noundef %116, ptr noundef nonnull %117) #9 +113: ; preds = %60 + %114 = load ptr, ptr @lo_heap_r, align 8 + %115 = getelementptr inbounds nuw i8, ptr %52, i64 4 + call void @CatalogTupleDelete(ptr noundef %114, ptr noundef nonnull %115) #9 br label %.critedge -.critedge: ; preds = %open_lo_relation.exit, %115 - %118 = trunc i64 %1 to i32 - %119 = and i32 %118, 2047 - %.not89 = icmp eq i32 %119, 0 - br i1 %.not89, label %.loopexit102, label %120 - -120: ; preds = %.critedge - %121 = and i64 %1, 2047 - %122 = ptrtoint ptr %.ptr to i64 - %123 = and i64 %122, 4 - %124 = icmp eq i64 %123, 0 - br i1 %124, label %125, label %.loopexit102.sink.split - -125: ; preds = %120 - %126 = and i64 %1, 7 - %127 = icmp eq i64 %126, 0 - %128 = icmp samesign ult i64 %121, 1025 - %or.cond9 = select i1 %127, i1 %128, i1 false - br i1 %or.cond9, label %129, label %.loopexit102.sink.split - -129: ; preds = %125 - %.not111 = icmp eq i64 %121, 0 +.critedge: ; preds = %open_lo_relation.exit, %113 + %116 = trunc i64 %1 to i32 + %117 = and i32 %116, 2047 + %.not89 = icmp eq i32 %117, 0 + br i1 %.not89, label %.loopexit102, label %118 + +118: ; preds = %.critedge + %119 = and i64 %1, 2047 + %120 = ptrtoint ptr %.ptr to i64 + %121 = and i64 %120, 4 + %122 = icmp eq i64 %121, 0 + br i1 %122, label %123, label %.loopexit102.sink.split + +123: ; preds = %118 + %124 = and i64 %1, 7 + %125 = icmp eq i64 %124, 0 + %126 = icmp samesign ult i64 %119, 1025 + %or.cond9 = select i1 %125, i1 %126, i1 false + br i1 %or.cond9, label %127, label %.loopexit102.sink.split + +127: ; preds = %123 + %.not111 = icmp eq i64 %119, 0 br i1 %.not111, label %.loopexit102, label %.lr.ph106.preheader -.lr.ph106.preheader: ; preds = %129 - %130 = add i64 %121, %5 - %131 = add i64 %130, 4 - %132 = add nuw i64 %5, 12 - %umax112 = call i64 @llvm.umax.i64(i64 %131, i64 %132) - %133 = add i64 %umax112, -5 - %134 = sub i64 %133, %5 - %135 = and i64 %134, -8 - %136 = add i64 %135, 8 +.lr.ph106.preheader: ; preds = %127 + %128 = add i64 %119, %5 + %129 = add i64 %128, 4 + %130 = add nuw i64 %5, 12 + %umax112 = call i64 @llvm.umax.i64(i64 %129, i64 %130) + %131 = add i64 %umax112, -5 + %132 = sub i64 %131, %5 + %133 = and i64 %132, -8 + %134 = add i64 %133, 8 br label %.loopexit102.sink.split -.loopexit102.sink.split: ; preds = %120, %125, %.lr.ph106.preheader - %.sink = phi i64 [ %136, %.lr.ph106.preheader ], [ %121, %125 ], [ %121, %120 ] +.loopexit102.sink.split: ; preds = %118, %123, %.lr.ph106.preheader + %.sink = phi i64 [ %134, %.lr.ph106.preheader ], [ %119, %123 ], [ %119, %118 ] call void @llvm.memset.p0.i64(ptr nonnull align 4 %.ptr, i8 0, i64 %.sink, i1 false) br label %.loopexit102 -.loopexit102: ; preds = %.loopexit102.sink.split, %129, %.critedge - %137 = shl nuw nsw i32 %119, 2 - %138 = add nuw nsw i32 %137, 16 - store i32 %138, ptr %4, align 4 +.loopexit102: ; preds = %.loopexit102.sink.split, %127, %.critedge + %135 = shl nuw nsw i32 %117, 2 + %136 = add nuw nsw i32 %135, 16 + store i32 %136, ptr %4, align 4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %7, i8 0, i64 3, i1 false) - %139 = load i32, ptr %0, align 8 - %140 = zext i32 %139 to i64 - store i64 %140, ptr %6, align 16 - %141 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store i64 %9, ptr %141, align 8 - %142 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store i64 %5, ptr %142, align 16 - %143 = load ptr, ptr @lo_heap_r, align 8 - %144 = getelementptr inbounds nuw i8, ptr %143, i64 64 - %145 = load ptr, ptr %144, align 8 - %146 = call ptr @heap_form_tuple(ptr noundef %145, ptr noundef nonnull %6, ptr noundef nonnull %7) #9 - %147 = load ptr, ptr @lo_heap_r, align 8 - call void @CatalogTupleInsertWithInfo(ptr noundef %147, ptr noundef %146, ptr noundef %43) #9 - call void @heap_freetuple(ptr noundef %146) #9 + %137 = load i32, ptr %0, align 8 + %138 = zext i32 %137 to i64 + store i64 %138, ptr %6, align 16 + %139 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store i64 %9, ptr %139, align 8 + %140 = getelementptr inbounds nuw i8, ptr %6, i64 16 + store i64 %5, ptr %140, align 16 + %141 = load ptr, ptr @lo_heap_r, align 8 + %142 = getelementptr inbounds nuw i8, ptr %141, i64 64 + %143 = load ptr, ptr %142, align 8 + %144 = call ptr @heap_form_tuple(ptr noundef %143, ptr noundef nonnull %6, ptr noundef nonnull %7) #9 + %145 = load ptr, ptr @lo_heap_r, align 8 + call void @CatalogTupleInsertWithInfo(ptr noundef %145, ptr noundef %144, ptr noundef %43) #9 + call void @heap_freetuple(ptr noundef %144) #9 br i1 %.not, label %.loopexit, label %.preheader .loopexit103.sink.split: ; preds = %92, %99, %.lr.ph.preheader - %.sink115 = phi i64 [ %114, %.lr.ph.preheader ], [ %95, %99 ], [ %95, %92 ] + %.sink115 = phi i64 [ %112, %.lr.ph.preheader ], [ %95, %99 ], [ %95, %92 ] call void @llvm.memset.p0.i64(ptr nonnull align 1 %93, i8 0, i64 %.sink115, i1 false) br label %.loopexit103 .loopexit103: ; preds = %.loopexit103.sink.split, %88 - %148 = shl nuw nsw i32 %90, 2 - %149 = add nuw nsw i32 %148, 16 - store i32 %149, ptr %4, align 4 + %146 = shl nuw nsw i32 %90, 2 + %147 = add nuw nsw i32 %146, 16 + store i32 %147, ptr %4, align 4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %6, i8 0, i64 16, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %7, i8 0, i64 3, i1 false) store i16 0, ptr %8, align 2 - %150 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store i64 %5, ptr %150, align 16 - %151 = getelementptr inbounds nuw i8, ptr %8, i64 2 - store i8 1, ptr %151, align 2 - %152 = load ptr, ptr @lo_heap_r, align 8 - %153 = getelementptr inbounds nuw i8, ptr %152, i64 64 - %154 = load ptr, ptr %153, align 8 - %155 = call ptr @heap_modify_tuple(ptr noundef nonnull %52, ptr noundef %154, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8) #9 - %156 = load ptr, ptr @lo_heap_r, align 8 - %157 = getelementptr inbounds nuw i8, ptr %155, i64 4 - call void @CatalogTupleUpdateWithInfo(ptr noundef %156, ptr noundef nonnull %157, ptr noundef %155, ptr noundef %43) #9 - call void @heap_freetuple(ptr noundef %155) #9 + %148 = getelementptr inbounds nuw i8, ptr %6, i64 16 + store i64 %5, ptr %148, align 16 + %149 = getelementptr inbounds nuw i8, ptr %8, i64 2 + store i8 1, ptr %149, align 2 + %150 = load ptr, ptr @lo_heap_r, align 8 + %151 = getelementptr inbounds nuw i8, ptr %150, i64 64 + %152 = load ptr, ptr %151, align 8 + %153 = call ptr @heap_modify_tuple(ptr noundef nonnull %52, ptr noundef %152, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8) #9 + %154 = load ptr, ptr @lo_heap_r, align 8 + %155 = getelementptr inbounds nuw i8, ptr %153, i64 4 + call void @CatalogTupleUpdateWithInfo(ptr noundef %154, ptr noundef nonnull %155, ptr noundef %153, ptr noundef %43) #9 + call void @heap_freetuple(ptr noundef %153) #9 br label %.preheader .preheader: ; preds = %.loopexit102, %.loopexit103 - %158 = call ptr @systable_getnext_ordered(ptr noundef %51, i32 noundef 1) #9 - %.not90107 = icmp eq ptr %158, null + %156 = call ptr @systable_getnext_ordered(ptr noundef %51, i32 noundef 1) #9 + %.not90107 = icmp eq ptr %156, null br i1 %.not90107, label %.loopexit, label %.lr.ph108 .lr.ph108: ; preds = %.preheader, %.lr.ph108 - %159 = phi ptr [ %162, %.lr.ph108 ], [ %158, %.preheader ] - %160 = load ptr, ptr @lo_heap_r, align 8 - %161 = getelementptr inbounds nuw i8, ptr %159, i64 4 - call void @CatalogTupleDelete(ptr noundef %160, ptr noundef nonnull %161) #9 - %162 = call ptr @systable_getnext_ordered(ptr noundef %51, i32 noundef 1) #9 - %.not90 = icmp eq ptr %162, null + %157 = phi ptr [ %160, %.lr.ph108 ], [ %156, %.preheader ] + %158 = load ptr, ptr @lo_heap_r, align 8 + %159 = getelementptr inbounds nuw i8, ptr %157, i64 4 + call void @CatalogTupleDelete(ptr noundef %158, ptr noundef nonnull %159) #9 + %160 = call ptr @systable_getnext_ordered(ptr noundef %51, i32 noundef 1) #9 + %.not90 = icmp eq ptr %160, null br i1 %.not90, label %.loopexit, label %.lr.ph108, !llvm.loop !7 .loopexit: ; preds = %.lr.ph108, %.preheader, %.loopexit102 diff --git a/bench/protobuf/optimized/coded_stream.ll b/bench/protobuf/optimized/coded_stream.ll index 7813bc3daf4..1ce5200c96d 100644 --- a/bench/protobuf/optimized/coded_stream.ll +++ b/bench/protobuf/optimized/coded_stream.ll @@ -214,7 +214,7 @@ if.then: ; preds = %entry if.then.i: ; preds = %if.then %sub.i9 = sub nsw i32 %0, %6 - %idx.ext6.i = sext i32 %sub.i9 to i64 + %idx.ext6.i = zext nneg i32 %sub.i9 to i64 %idx.neg.i = sub nsw i64 0, %idx.ext6.i %add.ptr7.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 %idx.neg.i store ptr %add.ptr7.i, ptr %buffer_end_.i.i, align 8 @@ -251,7 +251,7 @@ entry: if.then.i: ; preds = %entry %sub.i = sub nsw i32 %4, %3 - %idx.ext6.i = sext i32 %sub.i to i64 + %idx.ext6.i = zext nneg i32 %sub.i to i64 %idx.neg.i = sub nsw i64 0, %idx.ext6.i %add.ptr7.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 %idx.neg.i store ptr %add.ptr7.i, ptr %buffer_end_.i, align 8 @@ -306,7 +306,7 @@ if.then.i: ; preds = %entry if.then.i.i: ; preds = %if.then.i %sub.i9.i = sub nsw i32 %0, %6 - %idx.ext6.i.i = sext i32 %sub.i9.i to i64 + %idx.ext6.i.i = zext nneg i32 %sub.i9.i to i64 %idx.neg.i.i = sub nsw i64 0, %idx.ext6.i.i %add.ptr7.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %idx.neg.i.i store ptr %add.ptr7.i.i, ptr %buffer_end_.i.i.i, align 8 @@ -374,7 +374,7 @@ if.then.i: ; preds = %entry if.then.i.i: ; preds = %if.then.i %sub.i9.i = sub nsw i32 %1, %7 - %idx.ext6.i.i = sext i32 %sub.i9.i to i64 + %idx.ext6.i.i = zext nneg i32 %sub.i9.i to i64 %idx.neg.i.i = sub nsw i64 0, %idx.ext6.i.i %add.ptr7.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %idx.neg.i.i store ptr %add.ptr7.i.i, ptr %buffer_end_.i.i.i, align 8 @@ -540,7 +540,7 @@ entry: if.then.i.i: ; preds = %entry %sub.i.i = sub nsw i32 %5, %4 - %idx.ext6.i.i = sext i32 %sub.i.i to i64 + %idx.ext6.i.i = zext nneg i32 %sub.i.i to i64 %idx.neg.i.i = sub nsw i64 0, %idx.ext6.i.i %add.ptr7.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %idx.neg.i.i store ptr %add.ptr7.i.i, ptr %buffer_end_.i.i, align 8 @@ -582,7 +582,7 @@ entry: if.then.i.i: ; preds = %entry %sub.i.i = sub nsw i32 %5, %4 - %idx.ext6.i.i = sext i32 %sub.i.i to i64 + %idx.ext6.i.i = zext nneg i32 %sub.i.i to i64 %idx.neg.i.i = sub nsw i64 0, %idx.ext6.i.i %add.ptr7.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %idx.neg.i.i store ptr %add.ptr7.i.i, ptr %buffer_end_.i.i, align 8 @@ -656,7 +656,7 @@ entry: if.then.i: ; preds = %entry %sub.i4 = sub nsw i32 %0, %5 - %idx.ext6.i = sext i32 %sub.i4 to i64 + %idx.ext6.i = zext nneg i32 %sub.i4 to i64 %idx.neg.i = sub nsw i64 0, %idx.ext6.i %add.ptr7.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 %idx.neg.i store ptr %add.ptr7.i, ptr %buffer_end_.i.i, align 8 @@ -939,7 +939,7 @@ if.then28: ; preds = %while.end24 if.else: ; preds = %while.end24 %sub32 = sub nsw i32 %13, %sub26 store i32 %sub32, ptr %overflow_bytes_, align 4 - %idx.ext36 = sext i32 %sub32 to i64 + %idx.ext36 = zext nneg i32 %sub32 to i64 %idx.neg = sub nsw i64 0, %idx.ext36 %add.ptr37 = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.neg br label %if.end39 @@ -961,7 +961,7 @@ if.end39: ; preds = %if.else, %if.then28 if.then.i: ; preds = %if.end39 %sub.i = sub nsw i32 %storemerge, %18 - %idx.ext6.i = sext i32 %sub.i to i64 + %idx.ext6.i = zext nneg i32 %sub.i to i64 %idx.neg.i = sub nsw i64 0, %idx.ext6.i %add.ptr7.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 %idx.neg.i store ptr %add.ptr7.i, ptr %buffer_end_, align 8 @@ -3085,8 +3085,7 @@ while.end: ; preds = %while.cond %idx.ext.i11 = zext nneg i32 %sub15 to i64 %add.ptr.i12 = getelementptr inbounds nuw i8, ptr %add.ptr, i64 %idx.ext.i11 %add.ptr2.i = getelementptr inbounds i8, ptr %add.ptr.i12, i64 -16 - %idx.ext3.i = sext i32 %sub15 to i64 - %add.ptr4.i = getelementptr inbounds i8, ptr %buffer_30.i.i, i64 %idx.ext3.i + %add.ptr4.i = getelementptr inbounds nuw i8, ptr %buffer_30.i.i, i64 %idx.ext.i11 %add.ptr4.sink.i = select i1 %cmp.i10, ptr %add.ptr2.i, ptr %add.ptr4.i %data.sink.i = select i1 %cmp.i10, ptr null, ptr %add.ptr %retval.0.i14 = select i1 %cmp.i10, ptr %add.ptr, ptr %buffer_30.i.i @@ -3444,8 +3443,7 @@ if.then8: ; preds = %if.end7 %idx.ext.i10 = zext nneg i32 %sub to i64 %add.ptr.i11 = getelementptr inbounds nuw i8, ptr %add.ptr, i64 %idx.ext.i10 %add.ptr2.i = getelementptr inbounds i8, ptr %add.ptr.i11, i64 -16 - %idx.ext3.i = sext i32 %sub to i64 - %add.ptr4.i = getelementptr inbounds i8, ptr %buffer_30.i.i, i64 %idx.ext3.i + %add.ptr4.i = getelementptr inbounds nuw i8, ptr %buffer_30.i.i, i64 %idx.ext.i10 %add.ptr4.sink.i = select i1 %cmp.i9, ptr %add.ptr2.i, ptr %add.ptr4.i %data.sink.i = select i1 %cmp.i9, ptr null, ptr %add.ptr %retval.0.i12 = select i1 %cmp.i9, ptr %add.ptr, ptr %buffer_30.i.i diff --git a/bench/raylib/optimized/rtextures.ll b/bench/raylib/optimized/rtextures.ll index 4cf44acec67..951521bbcd0 100644 --- a/bench/raylib/optimized/rtextures.ll +++ b/bench/raylib/optimized/rtextures.ll @@ -11201,8 +11201,8 @@ stbir__resample_vertical_gather.exit.i: ; preds = %237, %233 %311 = sub nsw i32 %17, %299 %.0116.i = call i32 @llvm.smax.i32(i32 %299, i32 %17) %narrow.i = select i1 %310, i32 %311, i32 0 - %.0.idx.i = sext i32 %narrow.i to i64 - %.0.i = getelementptr inbounds float, ptr %.0123151.i, i64 %.0.idx.i + %.0.idx.i = zext i32 %narrow.i to i64 + %.0.i = getelementptr inbounds nuw float, ptr %.0123151.i, i64 %.0.idx.i %.0115.i = call i32 @llvm.smin.i32(i32 %301, i32 %285) %312 = load i32, ptr %278, align 8 %313 = icmp slt i32 %312, 0 @@ -58603,7 +58603,7 @@ stbir__calculate_coefficients_for_gather_upsample.exit: ; preds = %._crit_edge.i %194 = zext nneg i32 %spec.store.select.i.i to i64 %reass.sub = sub nsw i32 %.073.i, %spec.store.select.i.i %195 = add i32 %reass.sub, 1 - %wide.trip.count.i = zext i32 %195 to i64 + %wide.trip.count.i = zext nneg i32 %195 to i64 br label %196 196: ; preds = %222, %.lr.ph.i157 @@ -58820,8 +58820,8 @@ stbir__calculate_coefficients_for_gather_downsample.exit: ; preds = %189, %.loop 282: ; preds = %268 %283 = sub nsw i32 %.0191, %254 - %284 = sext i32 %283 to i64 - %285 = getelementptr inbounds float, ptr %.0137183, i64 %284 + %284 = zext nneg i32 %283 to i64 + %285 = getelementptr inbounds nuw float, ptr %.0137183, i64 %284 %286 = load float, ptr %285, align 4 %287 = fadd float %249, %286 store float %287, ptr %285, align 4 @@ -59199,8 +59199,8 @@ stbir_overlapping_memcpy.exit: ; preds = %75, %74, %._crit_ed 133: ; preds = %119 %134 = sub nsw i32 %113, %118 - %135 = sext i32 %134 to i64 - %136 = getelementptr inbounds float, ptr %.1203368, i64 %135 + %135 = zext nneg i32 %134 to i64 + %136 = getelementptr inbounds nuw float, ptr %.1203368, i64 %135 %137 = load float, ptr %136, align 4 %138 = fadd float %116, %137 store float %138, ptr %136, align 4 @@ -59325,8 +59325,8 @@ stbir__insert_coeff.exit: ; preds = %121, %._crit_edge.i 179: ; preds = %165 %180 = sub nsw i32 %160, %164 - %181 = sext i32 %180 to i64 - %182 = getelementptr inbounds float, ptr %.1203368, i64 %181 + %181 = zext nneg i32 %180 to i64 + %182 = getelementptr inbounds nuw float, ptr %.1203368, i64 %181 %183 = load float, ptr %182, align 4 %184 = fadd float %162, %183 store float %184, ptr %182, align 4 @@ -59454,8 +59454,8 @@ stbir__insert_coeff.exit257: ; preds = %167, %._crit_edge.i 229: ; preds = %215 %230 = sub nsw i32 %212, %214 - %231 = sext i32 %230 to i64 - %232 = getelementptr inbounds float, ptr %.1203368, i64 %231 + %231 = zext nneg i32 %230 to i64 + %232 = getelementptr inbounds nuw float, ptr %.1203368, i64 %231 %233 = load float, ptr %232, align 4 %234 = fadd float %202, %233 store float %234, ptr %232, align 4 diff --git a/bench/stb/optimized/stb_image_resize2.ll b/bench/stb/optimized/stb_image_resize2.ll index 1b16b8d728b..c12a6fa8618 100644 --- a/bench/stb/optimized/stb_image_resize2.ll +++ b/bench/stb/optimized/stb_image_resize2.ll @@ -1076,8 +1076,8 @@ define void @stbir__insert_coeff(ptr noundef captures(none) %0, ptr noundef capt 23: ; preds = %9 %24 = sub nsw i32 %2, %8 - %25 = sext i32 %24 to i64 - %26 = getelementptr inbounds float, ptr %1, i64 %25 + %25 = zext nneg i32 %24 to i64 + %26 = getelementptr inbounds nuw float, ptr %1, i64 %25 %27 = load float, ptr %26, align 4, !tbaa !50 %28 = fadd float %3, %27 store float %28, ptr %26, align 4, !tbaa !50 @@ -1239,7 +1239,7 @@ define void @stbir__calculate_coefficients_for_gather_downsample(i32 noundef %0, %67 = zext nneg i32 %spec.store.select.i to i64 %68 = add nuw nsw i32 %.073, 1 %69 = sub nsw i32 %68, %spec.store.select.i - %wide.trip.count = zext i32 %69 to i64 + %wide.trip.count = zext nneg i32 %69 to i64 br label %70 70: ; preds = %.lr.ph, %96 @@ -1608,8 +1608,8 @@ stbir_overlapping_memcpy.exit: ; preds = %75, %74, %._crit_ed 133: ; preds = %119 %134 = sub nsw i32 %113, %118 - %135 = sext i32 %134 to i64 - %136 = getelementptr inbounds float, ptr %.1203368, i64 %135 + %135 = zext nneg i32 %134 to i64 + %136 = getelementptr inbounds nuw float, ptr %.1203368, i64 %135 %137 = load float, ptr %136, align 4, !tbaa !50 %138 = fadd float %116, %137 store float %138, ptr %136, align 4, !tbaa !50 @@ -1730,8 +1730,8 @@ stbir__insert_coeff.exit: ; preds = %121, %._crit_edge.i 181: ; preds = %167 %182 = sub nsw i32 %162, %166 - %183 = sext i32 %182 to i64 - %184 = getelementptr inbounds float, ptr %.1203368, i64 %183 + %183 = zext nneg i32 %182 to i64 + %184 = getelementptr inbounds nuw float, ptr %.1203368, i64 %183 %185 = load float, ptr %184, align 4, !tbaa !50 %186 = fadd float %164, %185 store float %186, ptr %184, align 4, !tbaa !50 @@ -1860,8 +1860,8 @@ stbir__insert_coeff.exit257: ; preds = %169, %._crit_edge.i 231: ; preds = %217 %232 = sub nsw i32 %214, %216 - %233 = sext i32 %232 to i64 - %234 = getelementptr inbounds float, ptr %.1203368, i64 %233 + %233 = zext nneg i32 %232 to i64 + %234 = getelementptr inbounds nuw float, ptr %.1203368, i64 %233 %235 = load float, ptr %234, align 4, !tbaa !50 %236 = fadd float %206, %235 store float %236, ptr %234, align 4, !tbaa !50 @@ -2678,7 +2678,7 @@ stbir__calculate_coefficients_for_gather_upsample.exit: ; preds = %stbir__calcul %193 = zext nneg i32 %spec.store.select.i.i to i64 %reass.sub = sub nsw i32 %.073.i, %spec.store.select.i.i %194 = add i32 %reass.sub, 1 - %wide.trip.count.i = zext i32 %194 to i64 + %wide.trip.count.i = zext nneg i32 %194 to i64 br label %195 195: ; preds = %221, %.lr.ph.i157 @@ -2894,8 +2894,8 @@ stbir__calculate_coefficients_for_gather_downsample.exit: ; preds = %188, %.loop 279: ; preds = %265 %280 = sub nsw i32 %.0191, %252 - %281 = sext i32 %280 to i64 - %282 = getelementptr inbounds float, ptr %.0137183, i64 %281 + %281 = zext nneg i32 %280 to i64 + %282 = getelementptr inbounds nuw float, ptr %.0137183, i64 %281 %283 = load float, ptr %282, align 4, !tbaa !50 %284 = fadd float %247, %283 store float %284, ptr %282, align 4, !tbaa !50 @@ -28287,8 +28287,8 @@ define void @stbir__vertical_scatter_loop(ptr noundef %0, ptr noundef %1, i32 no %80 = sub nsw i32 %10, %68 %.0116 = call i32 @llvm.smax.i32(i32 %68, i32 %10) %narrow = select i1 %79, i32 %80, i32 0 - %.0.idx = sext i32 %narrow to i64 - %.0 = getelementptr inbounds float, ptr %.0123150, i64 %.0.idx + %.0.idx = zext i32 %narrow to i64 + %.0 = getelementptr inbounds nuw float, ptr %.0123150, i64 %.0.idx %.0115 = call i32 @llvm.smin.i32(i32 %70, i32 %58) %81 = load i32, ptr %48, align 8, !tbaa !907 %82 = icmp slt i32 %81, 0 diff --git a/bench/velox/optimized/DecimalVectorFunctions.ll b/bench/velox/optimized/DecimalVectorFunctions.ll index 18c729989a7..eb9a6de6c7b 100644 --- a/bench/velox/optimized/DecimalVectorFunctions.ll +++ b/bench/velox/optimized/DecimalVectorFunctions.ll @@ -87072,8 +87072,8 @@ if.end6.i.i.i.i: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit17.i.i.i.i: ; preds = %if.end6.i.i.i.i %sub12.i.i.i.i = sub nsw i32 %conv2.i.i.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i.i.i - %idxprom13.i.i.i.i = sext i32 %sub12.i.i.i.i to i64 - %arrayidx14.i.i.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i + %idxprom13.i.i.i.i = zext nneg i32 %sub12.i.i.i.i to i64 + %arrayidx14.i.i.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i %34 = load i128, ptr %arrayidx14.i.i.i.i, align 16 %spec.select.i20.i.i.i.i = call i64 @llvm.abs.i64(i64 %.val.i.i.i, i1 true) %unsignedDivisor.0.i26.i.i.i.i = call i128 @llvm.abs.i128(i128 %34, i1 true) @@ -87254,8 +87254,8 @@ if.end6.i.i.i.i.i.i.i.i: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit17.i.i.i.i.i.i.i.i: ; preds = %if.end6.i.i.i.i.i.i.i.i %sub12.i.i.i.i.i.i.i.i = sub nsw i32 %conv2.i.i.i.i.i.i.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i.i.i.i.i.i.i - %idxprom13.i.i.i.i.i.i.i.i = sext i32 %sub12.i.i.i.i.i.i.i.i to i64 - %arrayidx14.i.i.i.i.i.i.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i.i.i.i.i + %idxprom13.i.i.i.i.i.i.i.i = zext nneg i32 %sub12.i.i.i.i.i.i.i.i to i64 + %arrayidx14.i.i.i.i.i.i.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i.i.i.i.i %56 = load i128, ptr %arrayidx14.i.i.i.i.i.i.i.i, align 16 %spec.select.i20.i.i.i.i.i.i.i.i = call i64 @llvm.abs.i64(i64 %.val.i.i.i.i.i.i.i, i1 true) %unsignedDivisor.0.i26.i.i.i.i.i.i.i.i = call i128 @llvm.abs.i128(i128 %56, i1 true) @@ -87346,8 +87346,8 @@ if.end6.i.i50.i.i.i.i.i.i: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit17.i.i54.i.i.i.i.i.i: ; preds = %if.end6.i.i50.i.i.i.i.i.i %sub12.i.i55.i.i.i.i.i.i = sub nsw i32 %conv2.i.i46.i.i.i.i.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i40.i.i.i.i.i.i - %idxprom13.i.i56.i.i.i.i.i.i = sext i32 %sub12.i.i55.i.i.i.i.i.i to i64 - %arrayidx14.i.i57.i.i.i.i.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i56.i.i.i.i.i.i + %idxprom13.i.i56.i.i.i.i.i.i = zext nneg i32 %sub12.i.i55.i.i.i.i.i.i to i64 + %arrayidx14.i.i57.i.i.i.i.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i56.i.i.i.i.i.i %71 = load i128, ptr %arrayidx14.i.i57.i.i.i.i.i.i, align 16 %spec.select.i20.i.i58.i.i.i.i.i.i = call i64 @llvm.abs.i64(i64 %.val.i38.i.i.i.i.i.i, i1 true) %unsignedDivisor.0.i26.i.i59.i.i.i.i.i.i = call i128 @llvm.abs.i128(i128 %71, i1 true) @@ -87562,8 +87562,8 @@ if.end6.i.i.i.i171: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit17.i.i.i.i177: ; preds = %if.end6.i.i.i.i171 %sub12.i.i.i.i178 = sub nsw i32 %conv2.i.i.i.i167, %decimalParam.sroa.0.0.extract.trunc.i.i.i.i161 - %idxprom13.i.i.i.i179 = sext i32 %sub12.i.i.i.i178 to i64 - %arrayidx14.i.i.i.i180 = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i179 + %idxprom13.i.i.i.i179 = zext nneg i32 %sub12.i.i.i.i178 to i64 + %arrayidx14.i.i.i.i180 = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i179 %102 = load i128, ptr %arrayidx14.i.i.i.i180, align 16 %spec.select.i20.i.i.i.i181 = call i64 @llvm.abs.i64(i64 %arrayidx3.val.i.i.i, i1 true) %unsignedDivisor.0.i26.i.i.i.i182 = call i128 @llvm.abs.i128(i128 %102, i1 true) @@ -87746,8 +87746,8 @@ if.end6.i.i.i.i.i.i.i.i86: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit17.i.i.i.i.i.i.i.i92: ; preds = %if.end6.i.i.i.i.i.i.i.i86 %sub12.i.i.i.i.i.i.i.i93 = sub nsw i32 %conv2.i.i.i.i.i.i.i.i82, %decimalParam.sroa.0.0.extract.trunc.i.i.i.i.i.i.i.i76 - %idxprom13.i.i.i.i.i.i.i.i94 = sext i32 %sub12.i.i.i.i.i.i.i.i93 to i64 - %arrayidx14.i.i.i.i.i.i.i.i95 = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i.i.i.i.i94 + %idxprom13.i.i.i.i.i.i.i.i94 = zext nneg i32 %sub12.i.i.i.i.i.i.i.i93 to i64 + %arrayidx14.i.i.i.i.i.i.i.i95 = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i.i.i.i.i94 %125 = load i128, ptr %arrayidx14.i.i.i.i.i.i.i.i95, align 16 %spec.select.i20.i.i.i.i.i.i.i.i96 = call i64 @llvm.abs.i64(i64 %arrayidx2.val.i.i.i.i.i.i.i, i1 true) %unsignedDivisor.0.i26.i.i.i.i.i.i.i.i97 = call i128 @llvm.abs.i128(i128 %125, i1 true) @@ -87841,8 +87841,8 @@ if.end6.i.i49.i.i.i.i.i.i: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit17.i.i53.i.i.i.i.i.i: ; preds = %if.end6.i.i49.i.i.i.i.i.i %sub12.i.i54.i.i.i.i.i.i = sub nsw i32 %conv2.i.i45.i.i.i.i.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i39.i.i.i.i.i.i - %idxprom13.i.i55.i.i.i.i.i.i = sext i32 %sub12.i.i54.i.i.i.i.i.i to i64 - %arrayidx14.i.i56.i.i.i.i.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i55.i.i.i.i.i.i + %idxprom13.i.i55.i.i.i.i.i.i = zext nneg i32 %sub12.i.i54.i.i.i.i.i.i to i64 + %arrayidx14.i.i56.i.i.i.i.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i55.i.i.i.i.i.i %141 = load i128, ptr %arrayidx14.i.i56.i.i.i.i.i.i, align 16 %spec.select.i20.i.i57.i.i.i.i.i.i = call i64 @llvm.abs.i64(i64 %arrayidx3.val.i.i.i.i.i.i.i, i1 true) %unsignedDivisor.0.i26.i.i58.i.i.i.i.i.i = call i128 @llvm.abs.i128(i128 %141, i1 true) @@ -87996,8 +87996,8 @@ if.end6.i.i: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit17.i.i: ; preds = %if.end6.i.i %sub12.i.i = sub nsw i32 %conv2.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i - %idxprom13.i.i = sext i32 %sub12.i.i to i64 - %arrayidx14.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i + %idxprom13.i.i = zext nneg i32 %sub12.i.i to i64 + %arrayidx14.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i %22 = load i128, ptr %arrayidx14.i.i, align 16 %spec.select.i20.i.i = tail call i64 @llvm.abs.i64(i64 %.val.i, i1 true) %unsignedDivisor.0.i26.i.i = tail call i128 @llvm.abs.i128(i128 %22, i1 true) @@ -88123,8 +88123,8 @@ if.end6.i.i: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit17.i.i: ; preds = %if.end6.i.i %sub12.i.i = sub nsw i32 %conv2.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i - %idxprom13.i.i = sext i32 %sub12.i.i to i64 - %arrayidx14.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i + %idxprom13.i.i = zext nneg i32 %sub12.i.i to i64 + %arrayidx14.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i %23 = load i128, ptr %arrayidx14.i.i, align 16 %spec.select.i20.i.i = tail call i64 @llvm.abs.i64(i64 %arrayidx3.val.i, i1 true) %unsignedDivisor.0.i26.i.i = tail call i128 @llvm.abs.i128(i128 %23, i1 true) @@ -88434,8 +88434,8 @@ if.then8.i.i.i.i: ; preds = %if.end6.i.i.i.i _ZNRSt8optionalIiE5valueEv.exit17.i.i.i.i: ; preds = %if.end6.i.i.i.i %sub13.i.i.i.i = sub nsw i32 %conv2.i.i.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i.i.i - %idxprom14.i.i.i.i = sext i32 %sub13.i.i.i.i to i64 - %arrayidx15.i.i.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i.i.i + %idxprom14.i.i.i.i = zext nneg i32 %sub13.i.i.i.i to i64 + %arrayidx15.i.i.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i.i.i %36 = load i128, ptr %arrayidx15.i.i.i.i, align 16 %cmp1.i20.i.i.i.i = icmp slt i128 %.val.i.i.i, 0 %extract.t16.i21.i.i.i.i = trunc i128 %.val.i.i.i to i64 @@ -88624,8 +88624,8 @@ if.then8.i.i.i.i.i.i.i.i: ; preds = %if.end6.i.i.i.i.i.i _ZNRSt8optionalIiE5valueEv.exit17.i.i.i.i.i.i.i.i: ; preds = %if.end6.i.i.i.i.i.i.i.i %sub13.i.i.i.i.i.i.i.i = sub nsw i32 %conv2.i.i.i.i.i.i.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i.i.i.i.i.i.i - %idxprom14.i.i.i.i.i.i.i.i = sext i32 %sub13.i.i.i.i.i.i.i.i to i64 - %arrayidx15.i.i.i.i.i.i.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i.i.i.i.i.i.i + %idxprom14.i.i.i.i.i.i.i.i = zext nneg i32 %sub13.i.i.i.i.i.i.i.i to i64 + %arrayidx15.i.i.i.i.i.i.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i.i.i.i.i.i.i %58 = load i128, ptr %arrayidx15.i.i.i.i.i.i.i.i, align 16 %cmp1.i20.i.i.i.i.i.i.i.i = icmp slt i128 %.val.i.i.i.i.i.i.i, 0 %extract.t16.i21.i.i.i.i.i.i.i.i = trunc i128 %.val.i.i.i.i.i.i.i to i64 @@ -88724,8 +88724,8 @@ if.then8.i.i52.i.i.i.i.i.i: ; preds = %if.end6.i.i50.i.i.i _ZNRSt8optionalIiE5valueEv.exit17.i.i56.i.i.i.i.i.i: ; preds = %if.end6.i.i50.i.i.i.i.i.i %sub13.i.i57.i.i.i.i.i.i = sub nsw i32 %conv2.i.i46.i.i.i.i.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i40.i.i.i.i.i.i - %idxprom14.i.i58.i.i.i.i.i.i = sext i32 %sub13.i.i57.i.i.i.i.i.i to i64 - %arrayidx15.i.i59.i.i.i.i.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i58.i.i.i.i.i.i + %idxprom14.i.i58.i.i.i.i.i.i = zext nneg i32 %sub13.i.i57.i.i.i.i.i.i to i64 + %arrayidx15.i.i59.i.i.i.i.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i58.i.i.i.i.i.i %73 = load i128, ptr %arrayidx15.i.i59.i.i.i.i.i.i, align 16 %cmp1.i20.i.i60.i.i.i.i.i.i = icmp slt i128 %.val.i38.i.i.i.i.i.i, 0 %extract.t16.i21.i.i61.i.i.i.i.i.i = trunc i128 %.val.i38.i.i.i.i.i.i to i64 @@ -88948,8 +88948,8 @@ if.then8.i.i.i.i179: ; preds = %if.end6.i.i.i.i177 _ZNRSt8optionalIiE5valueEv.exit17.i.i.i.i185: ; preds = %if.end6.i.i.i.i177 %sub13.i.i.i.i186 = sub nsw i32 %conv2.i.i.i.i173, %decimalParam.sroa.0.0.extract.trunc.i.i.i.i167 - %idxprom14.i.i.i.i187 = sext i32 %sub13.i.i.i.i186 to i64 - %arrayidx15.i.i.i.i188 = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i.i.i187 + %idxprom14.i.i.i.i187 = zext nneg i32 %sub13.i.i.i.i186 to i64 + %arrayidx15.i.i.i.i188 = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i.i.i187 %104 = load i128, ptr %arrayidx15.i.i.i.i188, align 16 %cmp1.i20.i.i.i.i189 = icmp slt i128 %arrayidx3.val.i.i.i, 0 %extract.t16.i21.i.i.i.i190 = trunc i128 %arrayidx3.val.i.i.i to i64 @@ -89140,8 +89140,8 @@ if.then8.i.i.i.i.i.i.i.i88: ; preds = %if.end6.i.i.i.i.i.i _ZNRSt8optionalIiE5valueEv.exit17.i.i.i.i.i.i.i.i94: ; preds = %if.end6.i.i.i.i.i.i.i.i86 %sub13.i.i.i.i.i.i.i.i95 = sub nsw i32 %conv2.i.i.i.i.i.i.i.i82, %decimalParam.sroa.0.0.extract.trunc.i.i.i.i.i.i.i.i76 - %idxprom14.i.i.i.i.i.i.i.i96 = sext i32 %sub13.i.i.i.i.i.i.i.i95 to i64 - %arrayidx15.i.i.i.i.i.i.i.i97 = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i.i.i.i.i.i.i96 + %idxprom14.i.i.i.i.i.i.i.i96 = zext nneg i32 %sub13.i.i.i.i.i.i.i.i95 to i64 + %arrayidx15.i.i.i.i.i.i.i.i97 = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i.i.i.i.i.i.i96 %127 = load i128, ptr %arrayidx15.i.i.i.i.i.i.i.i97, align 16 %cmp1.i20.i.i.i.i.i.i.i.i98 = icmp slt i128 %arrayidx2.val.i.i.i.i.i.i.i, 0 %extract.t16.i21.i.i.i.i.i.i.i.i99 = trunc i128 %arrayidx2.val.i.i.i.i.i.i.i to i64 @@ -89243,8 +89243,8 @@ if.then8.i.i51.i.i.i.i.i.i: ; preds = %if.end6.i.i49.i.i.i _ZNRSt8optionalIiE5valueEv.exit17.i.i55.i.i.i.i.i.i: ; preds = %if.end6.i.i49.i.i.i.i.i.i %sub13.i.i56.i.i.i.i.i.i = sub nsw i32 %conv2.i.i45.i.i.i.i.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i39.i.i.i.i.i.i - %idxprom14.i.i57.i.i.i.i.i.i = sext i32 %sub13.i.i56.i.i.i.i.i.i to i64 - %arrayidx15.i.i58.i.i.i.i.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i57.i.i.i.i.i.i + %idxprom14.i.i57.i.i.i.i.i.i = zext nneg i32 %sub13.i.i56.i.i.i.i.i.i to i64 + %arrayidx15.i.i58.i.i.i.i.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i57.i.i.i.i.i.i %143 = load i128, ptr %arrayidx15.i.i58.i.i.i.i.i.i, align 16 %cmp1.i20.i.i59.i.i.i.i.i.i = icmp slt i128 %arrayidx3.val.i.i.i.i.i.i.i, 0 %extract.t16.i21.i.i60.i.i.i.i.i.i = trunc i128 %arrayidx3.val.i.i.i.i.i.i.i to i64 @@ -89406,8 +89406,8 @@ if.then8.i.i: ; preds = %if.end6.i.i _ZNRSt8optionalIiE5valueEv.exit17.i.i: ; preds = %if.end6.i.i %sub13.i.i = sub nsw i32 %conv2.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i - %idxprom14.i.i = sext i32 %sub13.i.i to i64 - %arrayidx15.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i + %idxprom14.i.i = zext nneg i32 %sub13.i.i to i64 + %arrayidx15.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i %22 = load i128, ptr %arrayidx15.i.i, align 16 %cmp1.i20.i.i = icmp slt i128 %.val.i, 0 %extract.t16.i21.i.i = trunc i128 %.val.i to i64 @@ -89541,8 +89541,8 @@ if.then8.i.i: ; preds = %if.end6.i.i _ZNRSt8optionalIiE5valueEv.exit17.i.i: ; preds = %if.end6.i.i %sub13.i.i = sub nsw i32 %conv2.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i - %idxprom14.i.i = sext i32 %sub13.i.i to i64 - %arrayidx15.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i + %idxprom14.i.i = zext nneg i32 %sub13.i.i to i64 + %arrayidx15.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom14.i.i %23 = load i128, ptr %arrayidx15.i.i, align 16 %cmp1.i20.i.i = icmp slt i128 %arrayidx3.val.i, 0 %extract.t16.i21.i.i = trunc i128 %arrayidx3.val.i to i64 @@ -89846,8 +89846,8 @@ if.end6.i.i.i.i: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit18.i.i.i.i: ; preds = %if.end6.i.i.i.i %sub12.i.i.i.i = sub nsw i32 %conv2.i.i.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i.i.i - %idxprom13.i.i.i.i = sext i32 %sub12.i.i.i.i to i64 - %arrayidx14.i.i.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i + %idxprom13.i.i.i.i = zext nneg i32 %sub12.i.i.i.i to i64 + %arrayidx14.i.i.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i %36 = load i128, ptr %arrayidx14.i.i.i.i, align 16 %spec.select.i21.i.i.i.i = call i128 @llvm.abs.i128(i128 %.val.i.i.i, i1 true) %unsignedDivisor.0.i27.i.i.i.i = call i128 @llvm.abs.i128(i128 %36, i1 true) @@ -90023,8 +90023,8 @@ if.end6.i.i.i.i.i.i.i.i: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit18.i.i.i.i.i.i.i.i: ; preds = %if.end6.i.i.i.i.i.i.i.i %sub12.i.i.i.i.i.i.i.i = sub nsw i32 %conv2.i.i.i.i.i.i.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i.i.i.i.i.i.i - %idxprom13.i.i.i.i.i.i.i.i = sext i32 %sub12.i.i.i.i.i.i.i.i to i64 - %arrayidx14.i.i.i.i.i.i.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i.i.i.i.i + %idxprom13.i.i.i.i.i.i.i.i = zext nneg i32 %sub12.i.i.i.i.i.i.i.i to i64 + %arrayidx14.i.i.i.i.i.i.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i.i.i.i.i %57 = load i128, ptr %arrayidx14.i.i.i.i.i.i.i.i, align 16 %spec.select.i21.i.i.i.i.i.i.i.i = call i128 @llvm.abs.i128(i128 %.val.i.i.i.i.i.i.i, i1 true) %unsignedDivisor.0.i27.i.i.i.i.i.i.i.i = call i128 @llvm.abs.i128(i128 %57, i1 true) @@ -90110,8 +90110,8 @@ if.end6.i.i50.i.i.i.i.i.i: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit18.i.i54.i.i.i.i.i.i: ; preds = %if.end6.i.i50.i.i.i.i.i.i %sub12.i.i55.i.i.i.i.i.i = sub nsw i32 %conv2.i.i46.i.i.i.i.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i40.i.i.i.i.i.i - %idxprom13.i.i56.i.i.i.i.i.i = sext i32 %sub12.i.i55.i.i.i.i.i.i to i64 - %arrayidx14.i.i57.i.i.i.i.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i56.i.i.i.i.i.i + %idxprom13.i.i56.i.i.i.i.i.i = zext nneg i32 %sub12.i.i55.i.i.i.i.i.i to i64 + %arrayidx14.i.i57.i.i.i.i.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i56.i.i.i.i.i.i %71 = load i128, ptr %arrayidx14.i.i57.i.i.i.i.i.i, align 16 %spec.select.i21.i.i58.i.i.i.i.i.i = call i128 @llvm.abs.i128(i128 %.val.i38.i.i.i.i.i.i, i1 true) %unsignedDivisor.0.i27.i.i59.i.i.i.i.i.i = call i128 @llvm.abs.i128(i128 %71, i1 true) @@ -90321,8 +90321,8 @@ if.end6.i.i.i.i167: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit18.i.i.i.i173: ; preds = %if.end6.i.i.i.i167 %sub12.i.i.i.i174 = sub nsw i32 %conv2.i.i.i.i163, %decimalParam.sroa.0.0.extract.trunc.i.i.i.i157 - %idxprom13.i.i.i.i175 = sext i32 %sub12.i.i.i.i174 to i64 - %arrayidx14.i.i.i.i176 = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i175 + %idxprom13.i.i.i.i175 = zext nneg i32 %sub12.i.i.i.i174 to i64 + %arrayidx14.i.i.i.i176 = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i175 %101 = load i128, ptr %arrayidx14.i.i.i.i176, align 16 %spec.select.i21.i.i.i.i177 = call i128 @llvm.abs.i128(i128 %arrayidx3.val.i.i.i, i1 true) %unsignedDivisor.0.i27.i.i.i.i178 = call i128 @llvm.abs.i128(i128 %101, i1 true) @@ -90500,8 +90500,8 @@ if.end6.i.i.i.i.i.i.i.i86: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit18.i.i.i.i.i.i.i.i92: ; preds = %if.end6.i.i.i.i.i.i.i.i86 %sub12.i.i.i.i.i.i.i.i93 = sub nsw i32 %conv2.i.i.i.i.i.i.i.i82, %decimalParam.sroa.0.0.extract.trunc.i.i.i.i.i.i.i.i76 - %idxprom13.i.i.i.i.i.i.i.i94 = sext i32 %sub12.i.i.i.i.i.i.i.i93 to i64 - %arrayidx14.i.i.i.i.i.i.i.i95 = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i.i.i.i.i94 + %idxprom13.i.i.i.i.i.i.i.i94 = zext nneg i32 %sub12.i.i.i.i.i.i.i.i93 to i64 + %arrayidx14.i.i.i.i.i.i.i.i95 = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i.i.i.i.i.i.i94 %123 = load i128, ptr %arrayidx14.i.i.i.i.i.i.i.i95, align 16 %spec.select.i21.i.i.i.i.i.i.i.i96 = call i128 @llvm.abs.i128(i128 %arrayidx2.val.i.i.i.i.i.i.i, i1 true) %unsignedDivisor.0.i27.i.i.i.i.i.i.i.i97 = call i128 @llvm.abs.i128(i128 %123, i1 true) @@ -90590,8 +90590,8 @@ if.end6.i.i49.i.i.i.i.i.i: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit18.i.i53.i.i.i.i.i.i: ; preds = %if.end6.i.i49.i.i.i.i.i.i %sub12.i.i54.i.i.i.i.i.i = sub nsw i32 %conv2.i.i45.i.i.i.i.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i39.i.i.i.i.i.i - %idxprom13.i.i55.i.i.i.i.i.i = sext i32 %sub12.i.i54.i.i.i.i.i.i to i64 - %arrayidx14.i.i56.i.i.i.i.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i55.i.i.i.i.i.i + %idxprom13.i.i55.i.i.i.i.i.i = zext nneg i32 %sub12.i.i54.i.i.i.i.i.i to i64 + %arrayidx14.i.i56.i.i.i.i.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i55.i.i.i.i.i.i %138 = load i128, ptr %arrayidx14.i.i56.i.i.i.i.i.i, align 16 %spec.select.i21.i.i57.i.i.i.i.i.i = call i128 @llvm.abs.i128(i128 %arrayidx3.val.i.i.i.i.i.i.i, i1 true) %unsignedDivisor.0.i27.i.i58.i.i.i.i.i.i = call i128 @llvm.abs.i128(i128 %138, i1 true) @@ -90740,8 +90740,8 @@ if.end6.i.i: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit18.i.i: ; preds = %if.end6.i.i %sub12.i.i = sub nsw i32 %conv2.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i - %idxprom13.i.i = sext i32 %sub12.i.i to i64 - %arrayidx14.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i + %idxprom13.i.i = zext nneg i32 %sub12.i.i to i64 + %arrayidx14.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i %22 = load i128, ptr %arrayidx14.i.i, align 16 %spec.select.i21.i.i = tail call i128 @llvm.abs.i128(i128 %.val.i, i1 true) %unsignedDivisor.0.i27.i.i = tail call i128 @llvm.abs.i128(i128 %22, i1 true) @@ -90862,8 +90862,8 @@ if.end6.i.i: ; preds = %_ZNRSt8optionalIiE5 _ZNRSt8optionalIiE5valueEv.exit18.i.i: ; preds = %if.end6.i.i %sub12.i.i = sub nsw i32 %conv2.i.i, %decimalParam.sroa.0.0.extract.trunc.i.i - %idxprom13.i.i = sext i32 %sub12.i.i to i64 - %arrayidx14.i.i = getelementptr inbounds [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i + %idxprom13.i.i = zext nneg i32 %sub12.i.i to i64 + %arrayidx14.i.i = getelementptr inbounds nuw [39 x i128], ptr @_ZN8facebook5velox11DecimalUtil12kPowersOfTenE, i64 0, i64 %idxprom13.i.i %23 = load i128, ptr %arrayidx14.i.i, align 16 %spec.select.i21.i.i = tail call i128 @llvm.abs.i128(i128 %arrayidx3.val.i, i1 true) %unsignedDivisor.0.i27.i.i = tail call i128 @llvm.abs.i128(i128 %23, i1 true) diff --git a/bench/wolfssl/optimized/tls.ll b/bench/wolfssl/optimized/tls.ll index 8399e1ed2c8..8d6990562ef 100644 --- a/bench/wolfssl/optimized/tls.ll +++ b/bench/wolfssl/optimized/tls.ll @@ -1181,45 +1181,45 @@ Hmac_HashUpdate.exit144: ; preds = %89, %91, %93, %95 %103 = add nsw i32 %switch.load, -8 %.not172 = icmp eq i32 %4, 0 %104 = zext nneg i32 %103 to i64 + %105 = zext nneg i32 %103 to i64 %wide.trip.count = zext nneg i32 %switch.load to i64 - br label %105 + br label %106 -105: ; preds = %.lr.ph170, %._crit_edge +106: ; preds = %.lr.ph170, %._crit_edge %.0118168 = phi i32 [ %.0125181, %.lr.ph170 ], [ %175, %._crit_edge ] %.0121167 = phi i32 [ %99, %.lr.ph170 ], [ %136, %._crit_edge ] call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %10) #17 - %106 = add i32 %.0118168, %100 - %107 = xor i32 %.0118168, -1 - %108 = add i32 %43, %107 - %.neg7.i = and i32 %106, %108 - %109 = ashr i32 %.neg7.i, 31 - %110 = trunc nsw i32 %109 to i8 - %111 = add i32 %.0118168, %101 - %112 = add i32 %42, %107 - %.neg7.i145 = and i32 %111, %112 - %113 = ashr i32 %.neg7.i145, 31 - %114 = trunc nsw i32 %113 to i8 - %115 = xor i8 %110, -1 - %116 = xor i8 %114, -1 - %117 = or i8 %110, %116 - %118 = icmp slt i32 %.neg7.i145, 0 - br label %119 - -119: ; preds = %105, %147 - %indvars.iv = phi i64 [ 0, %105 ], [ %indvars.iv.next, %147 ] - %.1122164 = phi i32 [ %.0121167, %105 ], [ %136, %147 ] - %120 = trunc nuw nsw i64 %indvars.iv to i32 - %121 = add i32 %120, %102 - %122 = trunc i64 %indvars.iv to i32 - %123 = xor i32 %122, -1 + %107 = add i32 %.0118168, %100 + %108 = xor i32 %.0118168, -1 + %109 = add i32 %43, %108 + %.neg7.i = and i32 %107, %109 + %110 = ashr i32 %.neg7.i, 31 + %111 = trunc nsw i32 %110 to i8 + %112 = add i32 %.0118168, %101 + %113 = add i32 %42, %108 + %.neg7.i145 = and i32 %112, %113 + %114 = ashr i32 %.neg7.i145, 31 + %115 = trunc nsw i32 %114 to i8 + %116 = xor i8 %111, -1 + %117 = xor i8 %115, -1 + %118 = or i8 %111, %117 + %119 = icmp slt i32 %.neg7.i145, 0 + br label %120 + +120: ; preds = %106, %147 + %indvars.iv = phi i64 [ 0, %106 ], [ %indvars.iv.next, %147 ] + %.1122164 = phi i32 [ %.0121167, %106 ], [ %136, %147 ] + %121 = trunc nuw nsw i64 %indvars.iv to i32 + %122 = add i32 %121, %102 + %123 = xor i32 %121, -1 %124 = add i32 %35, %123 %.neg7.i146 = and i32 %124, %.neg7.i - %125 = and i32 %.neg7.i146, %121 - %126 = icmp sgt i32 %121, -1 + %125 = and i32 %.neg7.i146, %122 + %126 = icmp sgt i32 %122, -1 %127 = icmp ult i32 %.1122164, %6 br i1 %127, label %.sink.split, label %128 -128: ; preds = %119 +128: ; preds = %120 %129 = icmp ult i32 %.1122164, %19 br i1 %129, label %130, label %135 @@ -1227,9 +1227,9 @@ Hmac_HashUpdate.exit144: ; preds = %89, %91, %93, %95 %131 = sub i32 %.1122164, %6 br label %.sink.split -.sink.split: ; preds = %119, %130 - %.sink = phi i32 [ %131, %130 ], [ %.1122164, %119 ] - %.sink182 = phi ptr [ %2, %130 ], [ %5, %119 ] +.sink.split: ; preds = %120, %130 + %.sink = phi i32 [ %131, %130 ], [ %.1122164, %120 ] + %.sink182 = phi ptr [ %2, %130 ], [ %5, %120 ] %132 = zext i32 %.sink to i64 %133 = getelementptr inbounds nuw i8, ptr %.sink182, i64 %132 %134 = load i8, ptr %133, align 1, !tbaa !51 @@ -1240,17 +1240,17 @@ Hmac_HashUpdate.exit144: ; preds = %89, %91, %93, %95 %136 = add i32 %.1122164, 1 %137 = icmp slt i32 %125, 0 %138 = select i1 %137, i8 -128, i8 %.0 - %139 = select i1 %126, i8 %115, i8 -1 + %139 = select i1 %126, i8 %116, i8 -1 %140 = and i8 %138, %139 - %141 = and i8 %140, %117 - %.not140 = icmp samesign ult i64 %indvars.iv, %104 + %141 = and i8 %140, %118 + %.not140 = icmp samesign ult i64 %indvars.iv, %105 br i1 %.not140, label %147, label %142 142: ; preds = %135 - %143 = sub nuw nsw i64 %indvars.iv, %104 + %143 = sub nsw i64 %indvars.iv, %104 %144 = getelementptr inbounds nuw [8 x i8], ptr %9, i64 0, i64 %143 %145 = load i8, ptr %144, align 1, !tbaa !51 - %146 = select i1 %118, i8 %145, i8 %140 + %146 = select i1 %119, i8 %145, i8 %140 br label %147 147: ; preds = %142, %135 @@ -1259,7 +1259,7 @@ Hmac_HashUpdate.exit144: ; preds = %89, %91, %93, %95 store i8 %.1, ptr %148, align 1, !tbaa !51 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %149, label %119, !llvm.loop !79 + br i1 %exitcond.not, label %149, label %120, !llvm.loop !79 149: ; preds = %147 %150 = load i8, ptr %11, align 8, !tbaa !77 @@ -1328,7 +1328,7 @@ Hmac_HashFinalRaw.exit: ; preds = %161, %163, %165, %1 %indvars.iv174 = phi i64 [ %indvars.iv.next175, %.lr.ph ], [ 0, %.preheader ] %169 = getelementptr inbounds nuw [144 x i8], ptr %10, i64 0, i64 %indvars.iv174 %170 = load i8, ptr %169, align 1, !tbaa !51 - %171 = and i8 %170, %114 + %171 = and i8 %170, %115 %172 = getelementptr inbounds nuw i8, ptr %72, i64 %indvars.iv174 %173 = load i8, ptr %172, align 1, !tbaa !51 %174 = or i8 %173, %171 @@ -1346,7 +1346,7 @@ Hmac_HashFinalRaw.exit: ; preds = %161, %163, %165, %1 call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %10) #17 %175 = add nuw nsw i32 %.0118168, 1 %176 = icmp slt i32 %175, %27 - br i1 %176, label %105, label %._crit_edge171, !llvm.loop !81 + br i1 %176, label %106, label %._crit_edge171, !llvm.loop !81 ._crit_edge171: ; preds = %._crit_edge, %97 call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %8) #17 diff --git a/bench/z3/optimized/nlarith_util.ll b/bench/z3/optimized/nlarith_util.ll index 87e772d8b33..fd7720a8347 100644 --- a/bench/z3/optimized/nlarith_util.ll +++ b/bench/z3/optimized/nlarith_util.ll @@ -30459,7 +30459,7 @@ _ZN11ast_manager7inc_refEP3ast.exit.i: ; preds = %189, %185 cleanup br label %.body -.loopexit: ; preds = %601, %257 +.loopexit: ; preds = %600, %257 %205 = icmp sgt i64 %indvars.iv256, 1 br i1 %205, label %230, label %._crit_edge, !llvm.loop !520 @@ -30593,8 +30593,8 @@ _ZN11ast_manager7inc_refEP3ast.exit.i117: ; preds = %246, %242 cleanup br label %.body -.lr.ph247: ; preds = %257, %601 - %indvars.iv253 = phi i64 [ %indvars.iv.next254, %601 ], [ %231, %257 ] +.lr.ph247: ; preds = %257, %600 + %indvars.iv253 = phi i64 [ %indvars.iv.next254, %600 ], [ %231, %257 ] %indvars.iv.next254 = add nsw i64 %indvars.iv253, -1 %263 = load ptr, ptr %57, align 8, !tbaa !118 %264 = getelementptr inbounds nuw ptr, ptr %263, i64 %indvars.iv.next254 @@ -30897,12 +30897,12 @@ _ZN11ast_manager7inc_refEP3ast.exit.i128: ; preds = %367, %370 383: ; preds = %378 invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %375, ptr noundef nonnull %377) - to label %384 unwind label %597 + to label %384 unwind label %596 384: ; preds = %378, %_ZN11ast_manager7inc_refEP3ast.exit.i128, %383 store ptr %354, ptr %376, align 8, !tbaa !138 %.not = icmp slt i64 %indvars.iv253, %indvars.iv256 - br i1 %.not, label %601, label %385 + br i1 %.not, label %600, label %385 385: ; preds = %384 %386 = load ptr, ptr %57, align 8, !tbaa !118 @@ -30912,73 +30912,72 @@ _ZN11ast_manager7inc_refEP3ast.exit.i128: ; preds = %367, %370 %390 = load ptr, ptr %389, align 8, !tbaa !138 %391 = sub nsw i64 %indvars.iv253, %indvars.iv256 %392 = load ptr, ptr %26, align 8, !tbaa !118 - %393 = and i64 %391, 4294967295 - %394 = getelementptr inbounds nuw ptr, ptr %392, i64 %393 - %395 = load ptr, ptr %394, align 8, !tbaa !138 + %393 = getelementptr inbounds nuw ptr, ptr %392, i64 %391 + %394 = load ptr, ptr %393, align 8, !tbaa !138 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #21 - %396 = load ptr, ptr %0, align 8, !tbaa !88 + %395 = load ptr, ptr %0, align 8, !tbaa !88 store ptr null, ptr %15, align 8, !tbaa !372 - store ptr %396, ptr %173, align 8, !tbaa !9 + store ptr %395, ptr %173, align 8, !tbaa !9 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #21 store ptr %390, ptr %16, align 16, !tbaa !105 - store ptr %395, ptr %174, align 8, !tbaa !105 - %397 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %390) - to label %.noexc198 unwind label %495 + store ptr %394, ptr %174, align 8, !tbaa !105 + %396 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %390) + to label %.noexc198 unwind label %494 .noexc198: ; preds = %385 - store ptr %397, ptr %170, align 8, !tbaa !319 - %398 = load i8, ptr %171, align 8, !tbaa !456, !range !122, !noundef !123 - %399 = trunc nuw i8 %398 to i1 - br i1 %399, label %400, label %402 + store ptr %396, ptr %170, align 8, !tbaa !319 + %397 = load i8, ptr %171, align 8, !tbaa !456, !range !122, !noundef !123 + %398 = trunc nuw i8 %397 to i1 + br i1 %398, label %399, label %401 -400: ; preds = %.noexc198 - %401 = invoke noundef i32 @_ZN13poly_rewriterI19arith_rewriter_coreE16mk_flat_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %16, ptr noundef nonnull align 8 dereferenceable(16) %15) - to label %_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192 unwind label %495 +399: ; preds = %.noexc198 + %400 = invoke noundef i32 @_ZN13poly_rewriterI19arith_rewriter_coreE16mk_flat_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %16, ptr noundef nonnull align 8 dereferenceable(16) %15) + to label %_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192 unwind label %494 -402: ; preds = %.noexc198 - %403 = invoke noundef i32 @_ZN13poly_rewriterI19arith_rewriter_coreE17mk_nflat_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %16, ptr noundef nonnull align 8 dereferenceable(16) %15) - to label %_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192 unwind label %495 +401: ; preds = %.noexc198 + %402 = invoke noundef i32 @_ZN13poly_rewriterI19arith_rewriter_coreE17mk_nflat_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %16, ptr noundef nonnull align 8 dereferenceable(16) %15) + to label %_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192 unwind label %494 -_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192: ; preds = %402, %400 - %.0.i.i193 = phi i32 [ %401, %400 ], [ %403, %402 ] - %404 = icmp eq i32 %.0.i.i193, 5 - br i1 %404, label %405, label %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203thread-pre-split +_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192: ; preds = %401, %399 + %.0.i.i193 = phi i32 [ %400, %399 ], [ %402, %401 ] + %403 = icmp eq i32 %.0.i.i193, 5 + br i1 %403, label %404, label %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203thread-pre-split -405: ; preds = %_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192 - %406 = invoke noundef ptr @_ZN13poly_rewriterI19arith_rewriter_coreE10mk_mul_appEjPKP4expr(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %16) - to label %.noexc201 unwind label %495 +404: ; preds = %_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192 + %405 = invoke noundef ptr @_ZN13poly_rewriterI19arith_rewriter_coreE10mk_mul_appEjPKP4expr(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %16) + to label %.noexc201 unwind label %494 -.noexc201: ; preds = %405 - %.not.i.i194 = icmp eq ptr %406, null - br i1 %.not.i.i194, label %410, label %_ZN11ast_manager7inc_refEP3ast.exit.i.i195 +.noexc201: ; preds = %404 + %.not.i.i194 = icmp eq ptr %405, null + br i1 %.not.i.i194, label %409, label %_ZN11ast_manager7inc_refEP3ast.exit.i.i195 _ZN11ast_manager7inc_refEP3ast.exit.i.i195: ; preds = %.noexc201 - %407 = getelementptr inbounds nuw i8, ptr %406, i64 8 - %408 = load i32, ptr %407, align 4, !tbaa !74 - %409 = add i32 %408, 1 - store i32 %409, ptr %407, align 4, !tbaa !74 - br label %410 - -410: ; preds = %_ZN11ast_manager7inc_refEP3ast.exit.i.i195, %.noexc201 - %411 = load ptr, ptr %15, align 8, !tbaa !372 - %.not.i4.i.i196 = icmp eq ptr %411, null - br i1 %.not.i4.i.i196, label %.sink.split.i197, label %412 - -412: ; preds = %410 - %413 = load ptr, ptr %173, align 8, !tbaa !386 - %414 = getelementptr inbounds nuw i8, ptr %411, i64 8 - %415 = load i32, ptr %414, align 4, !tbaa !74 - %416 = add i32 %415, -1 - store i32 %416, ptr %414, align 4, !tbaa !74 - %417 = icmp eq i32 %416, 0 - br i1 %417, label %418, label %.sink.split.i197 - -418: ; preds = %412 - invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %413, ptr noundef nonnull %411) - to label %.sink.split.i197 unwind label %495 - -.sink.split.i197: ; preds = %418, %412, %410 - store ptr %406, ptr %15, align 8, !tbaa !372 + %406 = getelementptr inbounds nuw i8, ptr %405, i64 8 + %407 = load i32, ptr %406, align 4, !tbaa !74 + %408 = add i32 %407, 1 + store i32 %408, ptr %406, align 4, !tbaa !74 + br label %409 + +409: ; preds = %_ZN11ast_manager7inc_refEP3ast.exit.i.i195, %.noexc201 + %410 = load ptr, ptr %15, align 8, !tbaa !372 + %.not.i4.i.i196 = icmp eq ptr %410, null + br i1 %.not.i4.i.i196, label %.sink.split.i197, label %411 + +411: ; preds = %409 + %412 = load ptr, ptr %173, align 8, !tbaa !386 + %413 = getelementptr inbounds nuw i8, ptr %410, i64 8 + %414 = load i32, ptr %413, align 4, !tbaa !74 + %415 = add i32 %414, -1 + store i32 %415, ptr %413, align 4, !tbaa !74 + %416 = icmp eq i32 %415, 0 + br i1 %416, label %417, label %.sink.split.i197 + +417: ; preds = %411 + invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %412, ptr noundef nonnull %410) + to label %.sink.split.i197 unwind label %494 + +.sink.split.i197: ; preds = %417, %411, %409 + store ptr %405, ptr %15, align 8, !tbaa !372 br label %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203 _ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203thread-pre-split: ; preds = %_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192 @@ -30986,119 +30985,119 @@ _ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_man br label %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203 _ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203: ; preds = %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203thread-pre-split, %.sink.split.i197 - %419 = phi ptr [ %.pr237, %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203thread-pre-split ], [ %406, %.sink.split.i197 ] - %.not.i.i.i.i.i.i137 = icmp eq ptr %419, null - br i1 %.not.i.i.i.i.i.i137, label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138, label %420 - -420: ; preds = %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203 - %421 = getelementptr inbounds nuw i8, ptr %419, i64 8 - %422 = load i32, ptr %421, align 4, !tbaa !74 - %423 = add i32 %422, 1 - store i32 %423, ptr %421, align 4, !tbaa !74 + %418 = phi ptr [ %.pr237, %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203thread-pre-split ], [ %405, %.sink.split.i197 ] + %.not.i.i.i.i.i.i137 = icmp eq ptr %418, null + br i1 %.not.i.i.i.i.i.i137, label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138, label %419 + +419: ; preds = %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203 + %420 = getelementptr inbounds nuw i8, ptr %418, i64 8 + %421 = load i32, ptr %420, align 4, !tbaa !74 + %422 = add i32 %421, 1 + store i32 %422, ptr %420, align 4, !tbaa !74 br label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138 -_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138: ; preds = %420, %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203 - %424 = load ptr, ptr %172, align 8, !tbaa !82 - %425 = icmp eq ptr %424, null - br i1 %425, label %432, label %426 - -426: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138 - %427 = getelementptr inbounds i8, ptr %424, i64 -4 - %428 = load i32, ptr %427, align 4, !tbaa !104 - %429 = getelementptr inbounds i8, ptr %424, i64 -8 - %430 = load i32, ptr %429, align 4, !tbaa !104 - %431 = icmp eq i32 %428, %430 - br i1 %431, label %436, label %477 - -432: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138 - %433 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef 24) - to label %.noexc187 unwind label %495 - -.noexc187: ; preds = %432 - store i32 2, ptr %433, align 4, !tbaa !104 - %434 = getelementptr inbounds nuw i8, ptr %433, i64 4 - store i32 0, ptr %434, align 4, !tbaa !104 - %435 = getelementptr inbounds nuw i8, ptr %433, i64 8 - store ptr %435, ptr %172, align 8, !tbaa !82 +_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138: ; preds = %419, %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203 + %423 = load ptr, ptr %172, align 8, !tbaa !82 + %424 = icmp eq ptr %423, null + br i1 %424, label %431, label %425 + +425: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138 + %426 = getelementptr inbounds i8, ptr %423, i64 -4 + %427 = load i32, ptr %426, align 4, !tbaa !104 + %428 = getelementptr inbounds i8, ptr %423, i64 -8 + %429 = load i32, ptr %428, align 4, !tbaa !104 + %430 = icmp eq i32 %427, %429 + br i1 %430, label %435, label %476 + +431: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138 + %432 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef 24) + to label %.noexc187 unwind label %494 + +.noexc187: ; preds = %431 + store i32 2, ptr %432, align 4, !tbaa !104 + %433 = getelementptr inbounds nuw i8, ptr %432, i64 4 + store i32 0, ptr %433, align 4, !tbaa !104 + %434 = getelementptr inbounds nuw i8, ptr %432, i64 8 + store ptr %434, ptr %172, align 8, !tbaa !82 br label %.noexc.i140 -436: ; preds = %426 - %437 = mul i32 %428, 3 - %438 = add i32 %437, 1 - %439 = lshr i32 %438, 1 - %440 = shl i32 %439, 3 - %441 = add i32 %440, 8 - %.not.i177 = icmp ugt i32 %439, %428 - br i1 %.not.i177, label %442, label %445 - -442: ; preds = %436 - %443 = shl i32 %428, 3 - %444 = add i32 %443, 8 - %.not27.i186 = icmp ugt i32 %441, %444 - br i1 %.not27.i186, label %472, label %445 - -445: ; preds = %442, %436 - %446 = call ptr @__cxa_allocate_exception(i64 40) #21 +435: ; preds = %425 + %436 = mul i32 %427, 3 + %437 = add i32 %436, 1 + %438 = lshr i32 %437, 1 + %439 = shl i32 %438, 3 + %440 = add i32 %439, 8 + %.not.i177 = icmp ugt i32 %438, %427 + br i1 %.not.i177, label %441, label %444 + +441: ; preds = %435 + %442 = shl i32 %427, 3 + %443 = add i32 %442, 8 + %.not27.i186 = icmp ugt i32 %440, %443 + br i1 %.not27.i186, label %471, label %444 + +444: ; preds = %441, %435 + %445 = call ptr @__cxa_allocate_exception(i64 40) #21 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #21 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #21 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %10) - to label %447 unwind label %470 - -447: ; preds = %445 - store ptr getelementptr inbounds nuw inrange(-16, 32) (i8, ptr @_ZTV17default_exception, i64 16), ptr %446, align 8, !tbaa !89 - %448 = getelementptr inbounds nuw i8, ptr %446, i64 8 - %449 = getelementptr inbounds nuw i8, ptr %446, i64 24 - store ptr %449, ptr %448, align 8, !tbaa !334 - %450 = load ptr, ptr %9, align 8, !tbaa !331 - %451 = getelementptr inbounds nuw i8, ptr %9, i64 16 - %452 = icmp eq ptr %450, %451 - br i1 %452, label %453, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179 - -453: ; preds = %447 - %454 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %455 = load i64, ptr %454, align 8, !tbaa !332 - %456 = icmp ult i64 %455, 16 - call void @llvm.assume(i1 %456) - %457 = add nuw nsw i64 %455, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %449, ptr noundef nonnull align 8 dereferenceable(1) %451, i64 %457, i1 false) + to label %446 unwind label %469 + +446: ; preds = %444 + store ptr getelementptr inbounds nuw inrange(-16, 32) (i8, ptr @_ZTV17default_exception, i64 16), ptr %445, align 8, !tbaa !89 + %447 = getelementptr inbounds nuw i8, ptr %445, i64 8 + %448 = getelementptr inbounds nuw i8, ptr %445, i64 24 + store ptr %448, ptr %447, align 8, !tbaa !334 + %449 = load ptr, ptr %9, align 8, !tbaa !331 + %450 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %451 = icmp eq ptr %449, %450 + br i1 %451, label %452, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179 + +452: ; preds = %446 + %453 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %454 = load i64, ptr %453, align 8, !tbaa !332 + %455 = icmp ult i64 %454, 16 + call void @llvm.assume(i1 %455) + %456 = add nuw nsw i64 %454, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %448, ptr noundef nonnull align 8 dereferenceable(1) %450, i64 %456, i1 false) br label %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179: ; preds = %447 - store ptr %450, ptr %448, align 8, !tbaa !331 - %458 = load i64, ptr %451, align 8, !tbaa !333 - store i64 %458, ptr %449, align 8, !tbaa !333 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179: ; preds = %446 + store ptr %449, ptr %447, align 8, !tbaa !331 + %457 = load i64, ptr %450, align 8, !tbaa !333 + store i64 %457, ptr %448, align 8, !tbaa !333 %.phi.trans.insert.i180 = getelementptr inbounds nuw i8, ptr %9, i64 8 %.pre.i181 = load i64, ptr %.phi.trans.insert.i180, align 8, !tbaa !332 br label %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182 -_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179, %453 - %459 = phi i64 [ %455, %453 ], [ %.pre.i181, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179 ] - %460 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %461 = getelementptr inbounds nuw i8, ptr %446, i64 16 - store i64 %459, ptr %461, align 8, !tbaa !332 - store ptr %451, ptr %9, align 8, !tbaa !331 - store i64 0, ptr %460, align 8, !tbaa !332 - store i8 0, ptr %451, align 8, !tbaa !333 - invoke void @__cxa_throw(ptr nonnull %446, ptr nonnull @_ZTI17default_exception, ptr nonnull @_ZN17default_exceptionD2Ev) #25 - to label %476 unwind label %462 - -462: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182 - %463 = landingpad { ptr, i32 } +_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179, %452 + %458 = phi i64 [ %454, %452 ], [ %.pre.i181, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179 ] + %459 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %460 = getelementptr inbounds nuw i8, ptr %445, i64 16 + store i64 %458, ptr %460, align 8, !tbaa !332 + store ptr %450, ptr %9, align 8, !tbaa !331 + store i64 0, ptr %459, align 8, !tbaa !332 + store i8 0, ptr %450, align 8, !tbaa !333 + invoke void @__cxa_throw(ptr nonnull %445, ptr nonnull @_ZTI17default_exception, ptr nonnull @_ZN17default_exceptionD2Ev) #25 + to label %475 unwind label %461 + +461: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182 + %462 = landingpad { ptr, i32 } cleanup - %464 = load ptr, ptr %9, align 8, !tbaa !331 - %465 = icmp eq ptr %464, %451 - br i1 %465, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i185, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i183 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i185: ; preds = %462 - %466 = load i64, ptr %460, align 8, !tbaa !332 - %467 = icmp ult i64 %466, 16 - call void @llvm.assume(i1 %467) + %463 = load ptr, ptr %9, align 8, !tbaa !331 + %464 = icmp eq ptr %463, %450 + br i1 %464, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i185, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i183 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i185: ; preds = %461 + %465 = load i64, ptr %459, align 8, !tbaa !332 + %466 = icmp ult i64 %465, 16 + call void @llvm.assume(i1 %466) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i183: ; preds = %462 - %468 = load i64, ptr %451, align 8, !tbaa !333 - %469 = add i64 %468, 1 - call void @_ZdlPvm(ptr noundef %464, i64 noundef %469) #23 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i183: ; preds = %461 + %467 = load i64, ptr %450, align 8, !tbaa !333 + %468 = add i64 %467, 1 + call void @_ZdlPvm(ptr noundef %463, i64 noundef %468) #23 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i183, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i185 @@ -31106,206 +31105,206 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184: ; pr call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #21 br label %.body188 -470: ; preds = %445 - %471 = landingpad { ptr, i32 } +469: ; preds = %444 + %470 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #21 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #21 - call void @__cxa_free_exception(ptr %446) #21 + call void @__cxa_free_exception(ptr %445) #21 br label %.body188 -472: ; preds = %442 - %473 = zext i32 %441 to i64 - %474 = invoke noalias noundef ptr @_ZN6memory10reallocateEPvm(ptr noundef nonnull %429, i64 noundef %473) - to label %.noexc190 unwind label %495 +471: ; preds = %441 + %472 = zext i32 %440 to i64 + %473 = invoke noalias noundef ptr @_ZN6memory10reallocateEPvm(ptr noundef nonnull %428, i64 noundef %472) + to label %.noexc190 unwind label %494 -.noexc190: ; preds = %472 - %475 = getelementptr inbounds nuw i8, ptr %474, i64 8 - store ptr %475, ptr %172, align 8, !tbaa !82 - store i32 %439, ptr %474, align 4, !tbaa !104 +.noexc190: ; preds = %471 + %474 = getelementptr inbounds nuw i8, ptr %473, i64 8 + store ptr %474, ptr %172, align 8, !tbaa !82 + store i32 %438, ptr %473, align 4, !tbaa !104 br label %.noexc.i140 -476: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182 +475: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182 unreachable .noexc.i140: ; preds = %.noexc190, %.noexc187 - %.pre.i.i.i.i141 = phi ptr [ %475, %.noexc190 ], [ %435, %.noexc187 ] + %.pre.i.i.i.i141 = phi ptr [ %474, %.noexc190 ], [ %434, %.noexc187 ] %.phi.trans.insert.i.i.i.i142 = getelementptr inbounds i8, ptr %.pre.i.i.i.i141, i64 -4 %.pre2.i.i.i.i143 = load i32, ptr %.phi.trans.insert.i.i.i.i142, align 4, !tbaa !104 - br label %477 - -477: ; preds = %.noexc.i140, %426 - %478 = phi i32 [ %.pre2.i.i.i.i143, %.noexc.i140 ], [ %428, %426 ] - %479 = phi ptr [ %.pre.i.i.i.i141, %.noexc.i140 ], [ %424, %426 ] - %480 = getelementptr inbounds i8, ptr %479, i64 -4 - %481 = zext i32 %478 to i64 - %482 = getelementptr inbounds nuw ptr, ptr %479, i64 %481 - store ptr %419, ptr %482, align 8, !tbaa !105 - %483 = add i32 %478, 1 - store i32 %483, ptr %480, align 4, !tbaa !104 - %484 = load ptr, ptr %15, align 8, !tbaa !372 + br label %476 + +476: ; preds = %.noexc.i140, %425 + %477 = phi i32 [ %.pre2.i.i.i.i143, %.noexc.i140 ], [ %427, %425 ] + %478 = phi ptr [ %.pre.i.i.i.i141, %.noexc.i140 ], [ %423, %425 ] + %479 = getelementptr inbounds i8, ptr %478, i64 -4 + %480 = zext i32 %477 to i64 + %481 = getelementptr inbounds nuw ptr, ptr %478, i64 %480 + store ptr %418, ptr %481, align 8, !tbaa !105 + %482 = add i32 %477, 1 + store i32 %482, ptr %479, align 4, !tbaa !104 + %483 = load ptr, ptr %15, align 8, !tbaa !372 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #21 - %.not.i.i.i139 = icmp eq ptr %484, null - br i1 %.not.i.i.i139, label %497, label %485 - -485: ; preds = %477 - %486 = load ptr, ptr %173, align 8, !tbaa !386 - %487 = getelementptr inbounds nuw i8, ptr %484, i64 8 - %488 = load i32, ptr %487, align 4, !tbaa !74 - %489 = add i32 %488, -1 - store i32 %489, ptr %487, align 4, !tbaa !74 - %490 = icmp eq i32 %489, 0 - br i1 %490, label %491, label %497 - -491: ; preds = %485 - invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %486, ptr noundef nonnull %484) - to label %497 unwind label %492 - -492: ; preds = %491 - %493 = landingpad { ptr, i32 } + %.not.i.i.i139 = icmp eq ptr %483, null + br i1 %.not.i.i.i139, label %496, label %484 + +484: ; preds = %476 + %485 = load ptr, ptr %173, align 8, !tbaa !386 + %486 = getelementptr inbounds nuw i8, ptr %483, i64 8 + %487 = load i32, ptr %486, align 4, !tbaa !74 + %488 = add i32 %487, -1 + store i32 %488, ptr %486, align 4, !tbaa !74 + %489 = icmp eq i32 %488, 0 + br i1 %489, label %490, label %496 + +490: ; preds = %484 + invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %485, ptr noundef nonnull %483) + to label %496 unwind label %491 + +491: ; preds = %490 + %492 = landingpad { ptr, i32 } catch ptr null - %494 = extractvalue { ptr, i32 } %493, 0 - call void @__clang_call_terminate(ptr %494) #22 + %493 = extractvalue { ptr, i32 } %492, 0 + call void @__clang_call_terminate(ptr %493) #22 unreachable -495: ; preds = %418, %405, %402, %400, %385, %472, %432 - %496 = landingpad { ptr, i32 } +494: ; preds = %417, %404, %401, %399, %385, %471, %431 + %495 = landingpad { ptr, i32 } cleanup br label %.body188 -.body188: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184, %470, %495 - %eh.lpad-body189 = phi { ptr, i32 } [ %496, %495 ], [ %463, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184 ], [ %471, %470 ] +.body188: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184, %469, %494 + %eh.lpad-body189 = phi { ptr, i32 } [ %495, %494 ], [ %462, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184 ], [ %470, %469 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #21 call void @_ZN7obj_refI4expr11ast_managerED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #21 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #21 br label %.body -497: ; preds = %491, %485, %477 +496: ; preds = %490, %484, %476 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #21 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #21 - %498 = load ptr, ptr %0, align 8, !tbaa !88 + %497 = load ptr, ptr %0, align 8, !tbaa !88 store ptr null, ptr %13, align 8, !tbaa !372 - store ptr %498, ptr %175, align 8, !tbaa !9 + store ptr %497, ptr %175, align 8, !tbaa !9 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #21 store ptr %388, ptr %14, align 16, !tbaa !105 - store ptr %484, ptr %176, align 8, !tbaa !105 - %499 = invoke noundef i32 @_ZN13poly_rewriterI19arith_rewriter_coreE6mk_subEjPKP4exprR7obj_refIS2_11ast_managerE(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %14, ptr noundef nonnull align 8 dereferenceable(16) %13) - to label %500 unwind label %577 - -500: ; preds = %497 - %501 = load ptr, ptr %13, align 8, !tbaa !372 - %.not.i.i.i.i.i.i147 = icmp eq ptr %501, null - br i1 %.not.i.i.i.i.i.i147, label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148, label %502 - -502: ; preds = %500 - %503 = getelementptr inbounds nuw i8, ptr %501, i64 8 - %504 = load i32, ptr %503, align 4, !tbaa !74 - %505 = add i32 %504, 1 - store i32 %505, ptr %503, align 4, !tbaa !74 + store ptr %483, ptr %176, align 8, !tbaa !105 + %498 = invoke noundef i32 @_ZN13poly_rewriterI19arith_rewriter_coreE6mk_subEjPKP4exprR7obj_refIS2_11ast_managerE(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %14, ptr noundef nonnull align 8 dereferenceable(16) %13) + to label %499 unwind label %576 + +499: ; preds = %496 + %500 = load ptr, ptr %13, align 8, !tbaa !372 + %.not.i.i.i.i.i.i147 = icmp eq ptr %500, null + br i1 %.not.i.i.i.i.i.i147, label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148, label %501 + +501: ; preds = %499 + %502 = getelementptr inbounds nuw i8, ptr %500, i64 8 + %503 = load i32, ptr %502, align 4, !tbaa !74 + %504 = add i32 %503, 1 + store i32 %504, ptr %502, align 4, !tbaa !74 br label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148 -_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148: ; preds = %502, %500 - %506 = load ptr, ptr %172, align 8, !tbaa !82 - %507 = icmp eq ptr %506, null - br i1 %507, label %514, label %508 - -508: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148 - %509 = getelementptr inbounds i8, ptr %506, i64 -4 - %510 = load i32, ptr %509, align 4, !tbaa !104 - %511 = getelementptr inbounds i8, ptr %506, i64 -8 - %512 = load i32, ptr %511, align 4, !tbaa !104 - %513 = icmp eq i32 %510, %512 - br i1 %513, label %518, label %559 - -514: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148 - %515 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef 24) - to label %.noexc214 unwind label %577 - -.noexc214: ; preds = %514 - store i32 2, ptr %515, align 4, !tbaa !104 - %516 = getelementptr inbounds nuw i8, ptr %515, i64 4 - store i32 0, ptr %516, align 4, !tbaa !104 - %517 = getelementptr inbounds nuw i8, ptr %515, i64 8 - store ptr %517, ptr %172, align 8, !tbaa !82 +_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148: ; preds = %501, %499 + %505 = load ptr, ptr %172, align 8, !tbaa !82 + %506 = icmp eq ptr %505, null + br i1 %506, label %513, label %507 + +507: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148 + %508 = getelementptr inbounds i8, ptr %505, i64 -4 + %509 = load i32, ptr %508, align 4, !tbaa !104 + %510 = getelementptr inbounds i8, ptr %505, i64 -8 + %511 = load i32, ptr %510, align 4, !tbaa !104 + %512 = icmp eq i32 %509, %511 + br i1 %512, label %517, label %558 + +513: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148 + %514 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef 24) + to label %.noexc214 unwind label %576 + +.noexc214: ; preds = %513 + store i32 2, ptr %514, align 4, !tbaa !104 + %515 = getelementptr inbounds nuw i8, ptr %514, i64 4 + store i32 0, ptr %515, align 4, !tbaa !104 + %516 = getelementptr inbounds nuw i8, ptr %514, i64 8 + store ptr %516, ptr %172, align 8, !tbaa !82 br label %.noexc.i150 -518: ; preds = %508 - %519 = mul i32 %510, 3 - %520 = add i32 %519, 1 - %521 = lshr i32 %520, 1 - %522 = shl i32 %521, 3 - %523 = add i32 %522, 8 - %.not.i204 = icmp ugt i32 %521, %510 - br i1 %.not.i204, label %524, label %527 - -524: ; preds = %518 - %525 = shl i32 %510, 3 - %526 = add i32 %525, 8 - %.not27.i213 = icmp ugt i32 %523, %526 - br i1 %.not27.i213, label %554, label %527 - -527: ; preds = %524, %518 - %528 = call ptr @__cxa_allocate_exception(i64 40) #21 +517: ; preds = %507 + %518 = mul i32 %509, 3 + %519 = add i32 %518, 1 + %520 = lshr i32 %519, 1 + %521 = shl i32 %520, 3 + %522 = add i32 %521, 8 + %.not.i204 = icmp ugt i32 %520, %509 + br i1 %.not.i204, label %523, label %526 + +523: ; preds = %517 + %524 = shl i32 %509, 3 + %525 = add i32 %524, 8 + %.not27.i213 = icmp ugt i32 %522, %525 + br i1 %.not27.i213, label %553, label %526 + +526: ; preds = %523, %517 + %527 = call ptr @__cxa_allocate_exception(i64 40) #21 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #21 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #21 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %8) - to label %529 unwind label %552 - -529: ; preds = %527 - store ptr getelementptr inbounds nuw inrange(-16, 32) (i8, ptr @_ZTV17default_exception, i64 16), ptr %528, align 8, !tbaa !89 - %530 = getelementptr inbounds nuw i8, ptr %528, i64 8 - %531 = getelementptr inbounds nuw i8, ptr %528, i64 24 - store ptr %531, ptr %530, align 8, !tbaa !334 - %532 = load ptr, ptr %7, align 8, !tbaa !331 - %533 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %534 = icmp eq ptr %532, %533 - br i1 %534, label %535, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206 - -535: ; preds = %529 - %536 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %537 = load i64, ptr %536, align 8, !tbaa !332 - %538 = icmp ult i64 %537, 16 - call void @llvm.assume(i1 %538) - %539 = add nuw nsw i64 %537, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %531, ptr noundef nonnull align 8 dereferenceable(1) %533, i64 %539, i1 false) + to label %528 unwind label %551 + +528: ; preds = %526 + store ptr getelementptr inbounds nuw inrange(-16, 32) (i8, ptr @_ZTV17default_exception, i64 16), ptr %527, align 8, !tbaa !89 + %529 = getelementptr inbounds nuw i8, ptr %527, i64 8 + %530 = getelementptr inbounds nuw i8, ptr %527, i64 24 + store ptr %530, ptr %529, align 8, !tbaa !334 + %531 = load ptr, ptr %7, align 8, !tbaa !331 + %532 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %533 = icmp eq ptr %531, %532 + br i1 %533, label %534, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206 + +534: ; preds = %528 + %535 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %536 = load i64, ptr %535, align 8, !tbaa !332 + %537 = icmp ult i64 %536, 16 + call void @llvm.assume(i1 %537) + %538 = add nuw nsw i64 %536, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %530, ptr noundef nonnull align 8 dereferenceable(1) %532, i64 %538, i1 false) br label %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206: ; preds = %529 - store ptr %532, ptr %530, align 8, !tbaa !331 - %540 = load i64, ptr %533, align 8, !tbaa !333 - store i64 %540, ptr %531, align 8, !tbaa !333 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206: ; preds = %528 + store ptr %531, ptr %529, align 8, !tbaa !331 + %539 = load i64, ptr %532, align 8, !tbaa !333 + store i64 %539, ptr %530, align 8, !tbaa !333 %.phi.trans.insert.i207 = getelementptr inbounds nuw i8, ptr %7, i64 8 %.pre.i208 = load i64, ptr %.phi.trans.insert.i207, align 8, !tbaa !332 br label %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209 -_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206, %535 - %541 = phi i64 [ %537, %535 ], [ %.pre.i208, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206 ] - %542 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %543 = getelementptr inbounds nuw i8, ptr %528, i64 16 - store i64 %541, ptr %543, align 8, !tbaa !332 - store ptr %533, ptr %7, align 8, !tbaa !331 - store i64 0, ptr %542, align 8, !tbaa !332 - store i8 0, ptr %533, align 8, !tbaa !333 - invoke void @__cxa_throw(ptr nonnull %528, ptr nonnull @_ZTI17default_exception, ptr nonnull @_ZN17default_exceptionD2Ev) #25 - to label %558 unwind label %544 - -544: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209 - %545 = landingpad { ptr, i32 } +_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206, %534 + %540 = phi i64 [ %536, %534 ], [ %.pre.i208, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206 ] + %541 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %542 = getelementptr inbounds nuw i8, ptr %527, i64 16 + store i64 %540, ptr %542, align 8, !tbaa !332 + store ptr %532, ptr %7, align 8, !tbaa !331 + store i64 0, ptr %541, align 8, !tbaa !332 + store i8 0, ptr %532, align 8, !tbaa !333 + invoke void @__cxa_throw(ptr nonnull %527, ptr nonnull @_ZTI17default_exception, ptr nonnull @_ZN17default_exceptionD2Ev) #25 + to label %557 unwind label %543 + +543: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209 + %544 = landingpad { ptr, i32 } cleanup - %546 = load ptr, ptr %7, align 8, !tbaa !331 - %547 = icmp eq ptr %546, %533 - br i1 %547, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i212, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i210 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i212: ; preds = %544 - %548 = load i64, ptr %542, align 8, !tbaa !332 - %549 = icmp ult i64 %548, 16 - call void @llvm.assume(i1 %549) + %545 = load ptr, ptr %7, align 8, !tbaa !331 + %546 = icmp eq ptr %545, %532 + br i1 %546, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i212, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i210 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i212: ; preds = %543 + %547 = load i64, ptr %541, align 8, !tbaa !332 + %548 = icmp ult i64 %547, 16 + call void @llvm.assume(i1 %548) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i210: ; preds = %544 - %550 = load i64, ptr %533, align 8, !tbaa !333 - %551 = add i64 %550, 1 - call void @_ZdlPvm(ptr noundef %546, i64 noundef %551) #23 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i210: ; preds = %543 + %549 = load i64, ptr %532, align 8, !tbaa !333 + %550 = add i64 %549, 1 + call void @_ZdlPvm(ptr noundef %545, i64 noundef %550) #23 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i210, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i212 @@ -31313,135 +31312,135 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211: ; pr call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #21 br label %.body215 -552: ; preds = %527 - %553 = landingpad { ptr, i32 } +551: ; preds = %526 + %552 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #21 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #21 - call void @__cxa_free_exception(ptr %528) #21 + call void @__cxa_free_exception(ptr %527) #21 br label %.body215 -554: ; preds = %524 - %555 = zext i32 %523 to i64 - %556 = invoke noalias noundef ptr @_ZN6memory10reallocateEPvm(ptr noundef nonnull %511, i64 noundef %555) - to label %.noexc217 unwind label %577 +553: ; preds = %523 + %554 = zext i32 %522 to i64 + %555 = invoke noalias noundef ptr @_ZN6memory10reallocateEPvm(ptr noundef nonnull %510, i64 noundef %554) + to label %.noexc217 unwind label %576 -.noexc217: ; preds = %554 - %557 = getelementptr inbounds nuw i8, ptr %556, i64 8 - store ptr %557, ptr %172, align 8, !tbaa !82 - store i32 %521, ptr %556, align 4, !tbaa !104 +.noexc217: ; preds = %553 + %556 = getelementptr inbounds nuw i8, ptr %555, i64 8 + store ptr %556, ptr %172, align 8, !tbaa !82 + store i32 %520, ptr %555, align 4, !tbaa !104 br label %.noexc.i150 -558: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209 +557: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209 unreachable .noexc.i150: ; preds = %.noexc217, %.noexc214 - %.pre.i.i.i.i151 = phi ptr [ %557, %.noexc217 ], [ %517, %.noexc214 ] + %.pre.i.i.i.i151 = phi ptr [ %556, %.noexc217 ], [ %516, %.noexc214 ] %.phi.trans.insert.i.i.i.i152 = getelementptr inbounds i8, ptr %.pre.i.i.i.i151, i64 -4 %.pre2.i.i.i.i153 = load i32, ptr %.phi.trans.insert.i.i.i.i152, align 4, !tbaa !104 - br label %559 - -559: ; preds = %.noexc.i150, %508 - %560 = phi i32 [ %.pre2.i.i.i.i153, %.noexc.i150 ], [ %510, %508 ] - %561 = phi ptr [ %.pre.i.i.i.i151, %.noexc.i150 ], [ %506, %508 ] - %562 = getelementptr inbounds i8, ptr %561, i64 -4 - %563 = zext i32 %560 to i64 - %564 = getelementptr inbounds nuw ptr, ptr %561, i64 %563 - store ptr %501, ptr %564, align 8, !tbaa !105 - %565 = add i32 %560, 1 - store i32 %565, ptr %562, align 4, !tbaa !104 - %566 = load ptr, ptr %13, align 8, !tbaa !372 + br label %558 + +558: ; preds = %.noexc.i150, %507 + %559 = phi i32 [ %.pre2.i.i.i.i153, %.noexc.i150 ], [ %509, %507 ] + %560 = phi ptr [ %.pre.i.i.i.i151, %.noexc.i150 ], [ %505, %507 ] + %561 = getelementptr inbounds i8, ptr %560, i64 -4 + %562 = zext i32 %559 to i64 + %563 = getelementptr inbounds nuw ptr, ptr %560, i64 %562 + store ptr %500, ptr %563, align 8, !tbaa !105 + %564 = add i32 %559, 1 + store i32 %564, ptr %561, align 4, !tbaa !104 + %565 = load ptr, ptr %13, align 8, !tbaa !372 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #21 - %.not.i.i.i149 = icmp eq ptr %566, null - br i1 %.not.i.i.i149, label %579, label %567 + %.not.i.i.i149 = icmp eq ptr %565, null + br i1 %.not.i.i.i149, label %578, label %566 -567: ; preds = %559 - %568 = load ptr, ptr %175, align 8, !tbaa !386 - %569 = getelementptr inbounds nuw i8, ptr %566, i64 8 - %570 = load i32, ptr %569, align 4, !tbaa !74 - %571 = add i32 %570, -1 - store i32 %571, ptr %569, align 4, !tbaa !74 - %572 = icmp eq i32 %571, 0 - br i1 %572, label %573, label %582 +566: ; preds = %558 + %567 = load ptr, ptr %175, align 8, !tbaa !386 + %568 = getelementptr inbounds nuw i8, ptr %565, i64 8 + %569 = load i32, ptr %568, align 4, !tbaa !74 + %570 = add i32 %569, -1 + store i32 %570, ptr %568, align 4, !tbaa !74 + %571 = icmp eq i32 %570, 0 + br i1 %571, label %572, label %581 -573: ; preds = %567 - invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %568, ptr noundef nonnull %566) - to label %582 unwind label %574 +572: ; preds = %566 + invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %567, ptr noundef nonnull %565) + to label %581 unwind label %573 -574: ; preds = %573 - %575 = landingpad { ptr, i32 } +573: ; preds = %572 + %574 = landingpad { ptr, i32 } catch ptr null - %576 = extractvalue { ptr, i32 } %575, 0 - call void @__clang_call_terminate(ptr %576) #22 + %575 = extractvalue { ptr, i32 } %574, 0 + call void @__clang_call_terminate(ptr %575) #22 unreachable -577: ; preds = %554, %514, %497 - %578 = landingpad { ptr, i32 } +576: ; preds = %553, %513, %496 + %577 = landingpad { ptr, i32 } cleanup br label %.body215 -.body215: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211, %552, %577 - %eh.lpad-body216 = phi { ptr, i32 } [ %578, %577 ], [ %545, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211 ], [ %553, %552 ] +.body215: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211, %551, %576 + %eh.lpad-body216 = phi { ptr, i32 } [ %577, %576 ], [ %544, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211 ], [ %552, %551 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #21 call void @_ZN7obj_refI4expr11ast_managerED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #21 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #21 br label %.body -579: ; preds = %559 +578: ; preds = %558 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #21 - %580 = load ptr, ptr %57, align 8, !tbaa !118 - %581 = load ptr, ptr %4, align 8, !tbaa !369 + %579 = load ptr, ptr %57, align 8, !tbaa !118 + %580 = load ptr, ptr %4, align 8, !tbaa !369 br label %_ZN11ast_manager7inc_refEP3ast.exit.i159 -582: ; preds = %567, %573 +581: ; preds = %566, %572 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #21 - %583 = load ptr, ptr %57, align 8, !tbaa !118 - %584 = load ptr, ptr %4, align 8, !tbaa !369 - %585 = load i32, ptr %569, align 4, !tbaa !74 - %586 = add i32 %585, 1 - store i32 %586, ptr %569, align 4, !tbaa !74 + %582 = load ptr, ptr %57, align 8, !tbaa !118 + %583 = load ptr, ptr %4, align 8, !tbaa !369 + %584 = load i32, ptr %568, align 4, !tbaa !74 + %585 = add i32 %584, 1 + store i32 %585, ptr %568, align 4, !tbaa !74 br label %_ZN11ast_manager7inc_refEP3ast.exit.i159 -_ZN11ast_manager7inc_refEP3ast.exit.i159: ; preds = %579, %582 - %587 = phi ptr [ %584, %582 ], [ %581, %579 ] - %.pn244 = phi ptr [ %583, %582 ], [ %580, %579 ] - %588 = getelementptr inbounds nuw ptr, ptr %.pn244, i64 %indvars.iv.next254 - %589 = load ptr, ptr %588, align 8, !tbaa !138 - %.not.i3.i160 = icmp eq ptr %589, null - br i1 %.not.i3.i160, label %596, label %590 - -590: ; preds = %_ZN11ast_manager7inc_refEP3ast.exit.i159 - %591 = getelementptr inbounds nuw i8, ptr %589, i64 8 - %592 = load i32, ptr %591, align 4, !tbaa !74 - %593 = add i32 %592, -1 - store i32 %593, ptr %591, align 4, !tbaa !74 - %594 = icmp eq i32 %593, 0 - br i1 %594, label %595, label %596 - -595: ; preds = %590 - invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %587, ptr noundef nonnull %589) - to label %596 unwind label %599 - -596: ; preds = %590, %_ZN11ast_manager7inc_refEP3ast.exit.i159, %595 - store ptr %566, ptr %588, align 8, !tbaa !138 - br label %601 - -597: ; preds = %383 - %598 = landingpad { ptr, i32 } +_ZN11ast_manager7inc_refEP3ast.exit.i159: ; preds = %578, %581 + %586 = phi ptr [ %583, %581 ], [ %580, %578 ] + %.pn244 = phi ptr [ %582, %581 ], [ %579, %578 ] + %587 = getelementptr inbounds nuw ptr, ptr %.pn244, i64 %indvars.iv.next254 + %588 = load ptr, ptr %587, align 8, !tbaa !138 + %.not.i3.i160 = icmp eq ptr %588, null + br i1 %.not.i3.i160, label %595, label %589 + +589: ; preds = %_ZN11ast_manager7inc_refEP3ast.exit.i159 + %590 = getelementptr inbounds nuw i8, ptr %588, i64 8 + %591 = load i32, ptr %590, align 4, !tbaa !74 + %592 = add i32 %591, -1 + store i32 %592, ptr %590, align 4, !tbaa !74 + %593 = icmp eq i32 %592, 0 + br i1 %593, label %594, label %595 + +594: ; preds = %589 + invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %586, ptr noundef nonnull %588) + to label %595 unwind label %598 + +595: ; preds = %589, %_ZN11ast_manager7inc_refEP3ast.exit.i159, %594 + store ptr %565, ptr %587, align 8, !tbaa !138 + br label %600 + +596: ; preds = %383 + %597 = landingpad { ptr, i32 } cleanup br label %.body -599: ; preds = %595 - %600 = landingpad { ptr, i32 } +598: ; preds = %594 + %599 = landingpad { ptr, i32 } cleanup br label %.body -601: ; preds = %596, %384 - %602 = icmp samesign ugt i64 %indvars.iv253, 1 - br i1 %602, label %.lr.ph247, label %.loopexit, !llvm.loop !521 +600: ; preds = %595, %384 + %601 = icmp samesign ugt i64 %indvars.iv253, 1 + br i1 %601, label %.lr.ph247, label %.loopexit, !llvm.loop !521 -.body: ; preds = %.body188, %.body215, %599, %597, %.body167, %259, %261, %201, %203, %178 - %.pn75.pn = phi { ptr, i32 } [ %179, %178 ], [ %204, %203 ], [ %202, %201 ], [ %262, %261 ], [ %260, %259 ], [ %598, %597 ], [ %eh.lpad-body168, %.body167 ], [ %600, %599 ], [ %eh.lpad-body189, %.body188 ], [ %eh.lpad-body216, %.body215 ] +.body: ; preds = %.body188, %.body215, %598, %596, %.body167, %259, %261, %201, %203, %178 + %.pn75.pn = phi { ptr, i32 } [ %179, %178 ], [ %204, %203 ], [ %202, %201 ], [ %262, %261 ], [ %260, %259 ], [ %597, %596 ], [ %eh.lpad-body168, %.body167 ], [ %599, %598 ], [ %eh.lpad-body189, %.body188 ], [ %eh.lpad-body216, %.body215 ] call void @_ZN15ref_vector_coreI3app19ref_manager_wrapperIS0_11ast_managerEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #21 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #21 resume { ptr, i32 } %.pn75.pn From 9e3882295ccbce661e930c2436f91680bbd67b07 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 21 Jun 2025 14:46:44 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/abc/optimized/absVta.ll | 964 ++++++++++---------- bench/abc/optimized/cbaBlast.ll | 194 ++-- bench/abc/optimized/giaDup.ll | 594 ++++++------ bench/abc/optimized/giaIf.ll | 112 +-- bench/abc/optimized/giaResub.ll | 122 +-- bench/abc/optimized/giaResub2.ll | 270 +++--- bench/abc/optimized/ifDec16.ll | 370 ++++---- bench/abc/optimized/lpkMulti.ll | 174 ++-- bench/abc/optimized/wlcBlast.ll | 162 ++-- bench/arrow/optimized/basic_decimal.ll | 20 +- bench/boost/optimized/console_buffer.ll | 40 +- bench/double_conversion/optimized/bignum.ll | 126 +-- bench/ffmpeg/optimized/aacsbr_fixed.ll | 624 ++++++------- bench/ffmpeg/optimized/avf_showcwt.ll | 184 ++-- bench/ffmpeg/optimized/cbs.ll | 38 +- bench/ffmpeg/optimized/network.ll | 56 +- bench/ffmpeg/optimized/vf_atadenoise.ll | 102 +-- bench/gromacs/optimized/do_fit.ll | 318 +++---- bench/libwebp/optimized/predictor_enc.ll | 118 +-- bench/llama.cpp/optimized/llama-vocab.ll | 764 ++++++++-------- bench/llvm/optimized/LegalizerHelper.ll | 4 +- bench/lvgl/optimized/lv_draw_sw_mask.ll | 54 +- bench/miniaudio/optimized/unity.ll | 68 +- bench/ncnn/optimized/padding_x86.ll | 490 +++++----- bench/opencv/optimized/coded_stream.ll | 44 +- bench/opencv/optimized/dxt.ll | 90 +- bench/openjdk/optimized/javaThread.ll | 12 +- bench/openssl/optimized/bio_b64.ll | 134 +-- bench/openusd/optimized/bignum.ll | 128 +-- bench/postgres/optimized/inv_api.ll | 164 ++-- bench/wolfssl/optimized/tls.ll | 64 +- bench/z3/optimized/nlarith_util.ll | 786 ++++++++-------- 32 files changed, 3695 insertions(+), 3695 deletions(-) diff --git a/bench/abc/optimized/absVta.ll b/bench/abc/optimized/absVta.ll index 335777d0680..653ef93287d 100644 --- a/bench/abc/optimized/absVta.ll +++ b/bench/abc/optimized/absVta.ll @@ -5139,7 +5139,7 @@ Abc_Clock.exit: ; preds = %2, %36 55: ; preds = %53 %puts = call i32 @puts(ptr nonnull dereferenceable(1) @str) - br label %1188 + br label %1189 56: ; preds = %53 %57 = getelementptr inbounds nuw i8, ptr %0, i64 376 @@ -5163,7 +5163,7 @@ Abc_Clock.exit: ; preds = %2, %36 %65 = call ptr @Abc_CexMakeTriv(i32 noundef %.val, i32 noundef %64, i32 noundef 1, i32 noundef 0) #28 store ptr %65, ptr %57, align 8, !tbaa !174 %puts265 = call i32 @puts(ptr nonnull dereferenceable(1) @str.1) - br label %1188 + br label %1189 66: ; preds = %Abc_Clock.exit %67 = getelementptr inbounds nuw i8, ptr %0, i64 456 @@ -6720,602 +6720,602 @@ Vga_ManRollBack.exit: ; preds = %853 Vga_ManRollBack.exit.thread.loopexit594: ; preds = %Abc_Clock.exit436, %Vga_ManRollBack.exit %.0219560.ph = phi i32 [ %164, %Abc_Clock.exit436 ], [ %indvars, %Vga_ManRollBack.exit ] - %871 = icmp eq i32 %672, -1 + %872 = icmp eq i32 %672, -1 br label %.loopexit656 Vga_ManRollBack.exit.thread: ; preds = %Gia_ObjIsRo.exit.thread.i450, %.lr.ph45.i, %.critedge.preheader.i, %723 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #28 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #28 - %872 = call ptr @Vga_ManDeriveCex(ptr noundef nonnull %83) - %873 = icmp eq ptr %872, null - br i1 %873, label %.thread, label %Vga_ManRollBack.exit.thread.thread + %873 = call ptr @Vga_ManDeriveCex(ptr noundef nonnull %83) + %874 = icmp eq ptr %873, null + br i1 %874, label %.thread, label %Vga_ManRollBack.exit.thread.thread .loopexit656: ; preds = %422, %._crit_edge.i, %867, %Vga_ManRollBack.exit.thread.loopexit594 - %.ph = phi i1 [ %871, %Vga_ManRollBack.exit.thread.loopexit594 ], [ true, %867 ], [ true, %._crit_edge.i ], [ true, %422 ] + %.ph = phi i1 [ %872, %Vga_ManRollBack.exit.thread.loopexit594 ], [ true, %867 ], [ true, %._crit_edge.i ], [ true, %422 ] %.0219560.ph640 = phi i32 [ %.0219560.ph, %Vga_ManRollBack.exit.thread.loopexit594 ], [ %164, %867 ], [ %164, %._crit_edge.i ], [ %164, %422 ] %.pre633644 = load ptr, ptr %84, align 8, !tbaa !55 - %874 = getelementptr inbounds nuw i8, ptr %.pre633644, i64 112 - %875 = load i32, ptr %874, align 8, !tbaa !150 - %876 = icmp ne i32 %875, 0 - %or.cond = and i1 %876, %.ph - br i1 %or.cond, label %877, label %.thread + %875 = getelementptr inbounds nuw i8, ptr %.pre633644, i64 112 + %876 = load i32, ptr %875, align 8, !tbaa !150 + %877 = icmp ne i32 %876, 0 + %or.cond = and i1 %877, %.ph + br i1 %or.cond, label %878, label %.thread -877: ; preds = %.loopexit656 +878: ; preds = %.loopexit656 %putchar251 = call i32 @putchar(i32 10) br label %.thread -.thread: ; preds = %494, %._crit_edge.i343, %124, %Vga_ManRollBack.exit.thread, %877, %.loopexit656 - %878 = phi i1 [ %.ph, %877 ], [ %.ph, %.loopexit656 ], [ false, %Vga_ManRollBack.exit.thread ], [ false, %._crit_edge.i343 ], [ undef, %124 ], [ false, %494 ] +.thread: ; preds = %494, %._crit_edge.i343, %124, %Vga_ManRollBack.exit.thread, %878, %.loopexit656 + %879 = phi i1 [ %.ph, %877 ], [ %.ph, %.loopexit656 ], [ false, %Vga_ManRollBack.exit.thread ], [ false, %._crit_edge.i343 ], [ undef, %124 ], [ false, %494 ] %.0219560645650 = phi i32 [ %.0219560.ph640, %877 ], [ %.0219560.ph640, %.loopexit656 ], [ %164, %Vga_ManRollBack.exit.thread ], [ %164, %._crit_edge.i343 ], [ 0, %124 ], [ %164, %494 ] - %879 = getelementptr inbounds nuw i8, ptr %83, i64 112 - %880 = load ptr, ptr %879, align 8, !tbaa !130 - %881 = getelementptr i8, ptr %880, i64 4 - %.val278 = load i32, ptr %881, align 4, !tbaa !11 - %882 = icmp eq i32 %.val278, 0 - br i1 %882, label %883, label %884 - -883: ; preds = %.thread + %880 = getelementptr inbounds nuw i8, ptr %83, i64 112 + %881 = load ptr, ptr %880, align 8, !tbaa !130 + %882 = getelementptr i8, ptr %881, i64 4 + %.val278 = load i32, ptr %882, align 4, !tbaa !11 + %883 = icmp eq i32 %.val278, 0 + br i1 %883, label %884, label %885 + +884: ; preds = %.thread call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.35) br label %Vec_IntFreeP.exit473 -884: ; preds = %.thread - %885 = load ptr, ptr %67, align 8, !tbaa !160 - %886 = icmp eq ptr %885, null - br i1 %886, label %Vec_IntFreeP.exit, label %887 - -887: ; preds = %884 - %888 = getelementptr inbounds nuw i8, ptr %885, i64 8 - %889 = load ptr, ptr %888, align 8, !tbaa !3 - %.not.i467 = icmp eq ptr %889, null - br i1 %.not.i467, label %892, label %.thread.i - -.thread.i: ; preds = %887 - call void @free(ptr noundef nonnull %889) #28 - %890 = load ptr, ptr %67, align 8, !tbaa !160 - %891 = getelementptr inbounds nuw i8, ptr %890, i64 8 - store ptr null, ptr %891, align 8, !tbaa !3 - br label %892 - -892: ; preds = %.thread.i, %887 - %893 = phi ptr [ %890, %.thread.i ], [ %885, %887 ] - call void @free(ptr noundef nonnull %893) #28 +885: ; preds = %.thread + %886 = load ptr, ptr %67, align 8, !tbaa !160 + %887 = icmp eq ptr %886, null + br i1 %887, label %Vec_IntFreeP.exit, label %888 + +888: ; preds = %885 + %889 = getelementptr inbounds nuw i8, ptr %886, i64 8 + %890 = load ptr, ptr %889, align 8, !tbaa !3 + %.not.i467 = icmp eq ptr %890, null + br i1 %.not.i467, label %893, label %.thread.i + +.thread.i: ; preds = %888 + call void @free(ptr noundef nonnull %890) #28 + %891 = load ptr, ptr %67, align 8, !tbaa !160 + %892 = getelementptr inbounds nuw i8, ptr %891, i64 8 + store ptr null, ptr %892, align 8, !tbaa !3 + br label %893 + +893: ; preds = %.thread.i, %888 + %894 = phi ptr [ %891, %.thread.i ], [ %886, %887 ] + call void @free(ptr noundef nonnull %894) #28 store ptr null, ptr %67, align 8, !tbaa !160 - %.pre634 = load ptr, ptr %879, align 8, !tbaa !130 + %.pre634 = load ptr, ptr %880, align 8, !tbaa !130 br label %Vec_IntFreeP.exit -Vec_IntFreeP.exit: ; preds = %884, %892 - %894 = phi ptr [ %880, %884 ], [ %.pre634, %892 ] - %895 = call ptr @Gia_VtaFramesToAbs(ptr noundef %894) - store ptr %895, ptr %67, align 8, !tbaa !148 - %896 = load ptr, ptr %84, align 8, !tbaa !55 - br i1 %878, label %897, label %944 - -897: ; preds = %Vec_IntFreeP.exit - %898 = getelementptr inbounds nuw i8, ptr %896, i64 32 - %899 = load i32, ptr %898, align 8, !tbaa !175 - %.not252 = icmp eq i32 %899, 0 - br i1 %.not252, label %912, label %900 - -900: ; preds = %897 - %901 = call fastcc i64 @Abc_Clock() - %902 = getelementptr inbounds nuw i8, ptr %83, i64 120 - %903 = load ptr, ptr %902, align 8, !tbaa !66 - %904 = getelementptr inbounds nuw i8, ptr %903, i64 608 - %905 = load i64, ptr %904, align 8, !tbaa !176 - %.not253 = icmp slt i64 %901, %905 - br i1 %.not253, label %912, label %906 - -906: ; preds = %900 - %907 = load ptr, ptr %84, align 8, !tbaa !55 - %908 = getelementptr inbounds nuw i8, ptr %907, i64 32 - %909 = load i32, ptr %908, align 8, !tbaa !175 - %910 = getelementptr inbounds nuw i8, ptr %907, i64 128 - %911 = load i32, ptr %910, align 8, !tbaa !197 - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.36, i32 noundef %909, i32 noundef %.0219560645650, i32 noundef %911) +Vec_IntFreeP.exit: ; preds = %885, %893 + %895 = phi ptr [ %881, %884 ], [ %.pre634, %892 ] + %896 = call ptr @Gia_VtaFramesToAbs(ptr noundef %895) + store ptr %896, ptr %67, align 8, !tbaa !148 + %897 = load ptr, ptr %84, align 8, !tbaa !55 + br i1 %879, label %898, label %945 + +898: ; preds = %Vec_IntFreeP.exit + %899 = getelementptr inbounds nuw i8, ptr %897, i64 32 + %900 = load i32, ptr %899, align 8, !tbaa !175 + %.not252 = icmp eq i32 %900, 0 + br i1 %.not252, label %913, label %901 + +901: ; preds = %898 + %902 = call fastcc i64 @Abc_Clock() + %903 = getelementptr inbounds nuw i8, ptr %83, i64 120 + %904 = load ptr, ptr %903, align 8, !tbaa !66 + %905 = getelementptr inbounds nuw i8, ptr %904, i64 608 + %906 = load i64, ptr %905, align 8, !tbaa !176 + %.not253 = icmp slt i64 %902, %906 + br i1 %.not253, label %913, label %907 + +907: ; preds = %901 + %908 = load ptr, ptr %84, align 8, !tbaa !55 + %909 = getelementptr inbounds nuw i8, ptr %908, i64 32 + %910 = load i32, ptr %909, align 8, !tbaa !175 + %911 = getelementptr inbounds nuw i8, ptr %908, i64 128 + %912 = load i32, ptr %911, align 8, !tbaa !197 + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.36, i32 noundef %910, i32 noundef %.0219560645650, i32 noundef %912) br label %Vec_IntFreeP.exit473 -912: ; preds = %900, %897 - %913 = getelementptr inbounds nuw i8, ptr %1, i64 12 - %914 = load i32, ptr %913, align 4, !tbaa !179 - %.not254 = icmp eq i32 %914, 0 - br i1 %.not254, label %924, label %915 - -915: ; preds = %912 - %916 = getelementptr inbounds nuw i8, ptr %83, i64 120 - %917 = load ptr, ptr %916, align 8, !tbaa !66 - %918 = getelementptr i8, ptr %917, i64 560 - %.val283 = load i64, ptr %918, align 8, !tbaa !153 - %919 = trunc i64 %.val283 to i32 - %.not255 = icmp sgt i32 %914, %919 - br i1 %.not255, label %924, label %920 - -920: ; preds = %915 - %921 = load ptr, ptr %84, align 8, !tbaa !55 - %922 = getelementptr inbounds nuw i8, ptr %921, i64 128 - %923 = load i32, ptr %922, align 8, !tbaa !197 - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.37, i32 noundef %914, i32 noundef %.0219560645650, i32 noundef %923) +913: ; preds = %901, %898 + %914 = getelementptr inbounds nuw i8, ptr %1, i64 12 + %915 = load i32, ptr %914, align 4, !tbaa !179 + %.not254 = icmp eq i32 %915, 0 + br i1 %.not254, label %925, label %916 + +916: ; preds = %913 + %917 = getelementptr inbounds nuw i8, ptr %83, i64 120 + %918 = load ptr, ptr %917, align 8, !tbaa !66 + %919 = getelementptr i8, ptr %918, i64 560 + %.val283 = load i64, ptr %919, align 8, !tbaa !153 + %920 = trunc i64 %.val283 to i32 + %.not255 = icmp sgt i32 %915, %920 + br i1 %.not255, label %925, label %921 + +921: ; preds = %916 + %922 = load ptr, ptr %84, align 8, !tbaa !55 + %923 = getelementptr inbounds nuw i8, ptr %922, i64 128 + %924 = load i32, ptr %923, align 8, !tbaa !197 + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.37, i32 noundef %915, i32 noundef %.0219560645650, i32 noundef %924) br label %Vec_IntFreeP.exit473 -924: ; preds = %915, %912 - %925 = getelementptr inbounds nuw i8, ptr %83, i64 104 - %926 = load i32, ptr %925, align 8, !tbaa !128 - %927 = getelementptr i8, ptr %0, i64 64 - %.val.i468 = load ptr, ptr %927, align 8, !tbaa !54 - %928 = getelementptr i8, ptr %.val.i468, i64 4 - %.val.val.i469 = load i32, ptr %928, align 4, !tbaa !15 - %929 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %930 = load i32, ptr %929, align 8, !tbaa !121 - %931 = load ptr, ptr %44, align 8, !tbaa !91 - %932 = getelementptr i8, ptr %931, i64 4 - %.val.i.i470 = load i32, ptr %932, align 4, !tbaa !15 - %933 = add i32 %.val.i.i470, %.val.val.i469 - %934 = xor i32 %933, -1 - %935 = add i32 %930, %.val.val.i469 - %936 = add i32 %935, %934 - %937 = getelementptr inbounds nuw i8, ptr %1, i64 36 - %938 = load i32, ptr %937, align 4, !tbaa !180 - %939 = sub nsw i32 100, %938 - %940 = mul nsw i32 %936, %939 - %941 = sdiv i32 %940, 100 - %.not256 = icmp slt i32 %926, %941 - br i1 %.not256, label %943, label %942 - -942: ; preds = %924 - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.38, i32 noundef %938, i32 noundef %.0219560645650) +925: ; preds = %916, %913 + %926 = getelementptr inbounds nuw i8, ptr %83, i64 104 + %927 = load i32, ptr %926, align 8, !tbaa !128 + %928 = getelementptr i8, ptr %0, i64 64 + %.val.i468 = load ptr, ptr %928, align 8, !tbaa !54 + %929 = getelementptr i8, ptr %.val.i468, i64 4 + %.val.val.i469 = load i32, ptr %929, align 4, !tbaa !15 + %930 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %931 = load i32, ptr %930, align 8, !tbaa !121 + %932 = load ptr, ptr %44, align 8, !tbaa !91 + %933 = getelementptr i8, ptr %932, i64 4 + %.val.i.i470 = load i32, ptr %933, align 4, !tbaa !15 + %934 = add i32 %.val.i.i470, %.val.val.i469 + %935 = xor i32 %934, -1 + %936 = add i32 %931, %.val.val.i469 + %937 = add i32 %936, %935 + %938 = getelementptr inbounds nuw i8, ptr %1, i64 36 + %939 = load i32, ptr %938, align 4, !tbaa !180 + %940 = sub nsw i32 100, %939 + %941 = mul nsw i32 %937, %940 + %942 = sdiv i32 %941, 100 + %.not256 = icmp slt i32 %927, %942 + br i1 %.not256, label %944, label %943 + +943: ; preds = %925 + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.38, i32 noundef %939, i32 noundef %.0219560645650) br label %Vec_IntFreeP.exit473 -943: ; preds = %924 +944: ; preds = %925 call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.39, i32 noundef %.0219560645650) br label %Vec_IntFreeP.exit473 -944: ; preds = %Vec_IntFreeP.exit - %945 = getelementptr inbounds nuw i8, ptr %896, i64 120 - %946 = load i32, ptr %945, align 8, !tbaa !56 - %947 = add nsw i32 %946, 1 - store i32 %947, ptr %945, align 8, !tbaa !56 - %948 = getelementptr inbounds nuw i8, ptr %896, i64 128 - %949 = load i32, ptr %948, align 8, !tbaa !197 - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.40, i32 noundef %.0219560645650, i32 noundef %949) +945: ; preds = %Vec_IntFreeP.exit + %946 = getelementptr inbounds nuw i8, ptr %897, i64 120 + %947 = load i32, ptr %946, align 8, !tbaa !56 + %948 = add nsw i32 %947, 1 + store i32 %948, ptr %946, align 8, !tbaa !56 + %949 = getelementptr inbounds nuw i8, ptr %897, i64 128 + %950 = load i32, ptr %949, align 8, !tbaa !197 + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.40, i32 noundef %.0219560645650, i32 noundef %950) br label %Vec_IntFreeP.exit473 Vga_ManRollBack.exit.thread.thread: ; preds = %Abc_Clock.exit442, %Vga_ManRollBack.exit.thread - %.3507 = phi ptr [ %872, %Vga_ManRollBack.exit.thread ], [ %692, %Abc_Clock.exit442 ] - %950 = load ptr, ptr %84, align 8, !tbaa !55 - %951 = getelementptr inbounds nuw i8, ptr %950, i64 112 - %952 = load i32, ptr %951, align 8, !tbaa !150 - %.not248 = icmp eq i32 %952, 0 - br i1 %.not248, label %954, label %953 - -953: ; preds = %Vga_ManRollBack.exit.thread.thread + %.3507 = phi ptr [ %873, %Vga_ManRollBack.exit.thread ], [ %692, %Abc_Clock.exit442 ] + %951 = load ptr, ptr %84, align 8, !tbaa !55 + %952 = getelementptr inbounds nuw i8, ptr %951, i64 112 + %953 = load i32, ptr %952, align 8, !tbaa !150 + %.not248 = icmp eq i32 %953, 0 + br i1 %.not248, label %955, label %954 + +954: ; preds = %Vga_ManRollBack.exit.thread.thread %putchar = call i32 @putchar(i32 10) - br label %954 - -954: ; preds = %953, %Vga_ManRollBack.exit.thread.thread - %955 = load ptr, ptr %83, align 8, !tbaa !30 - %956 = getelementptr inbounds nuw i8, ptr %955, i64 376 - %957 = load ptr, ptr %956, align 8, !tbaa !174 - %.not249 = icmp eq ptr %957, null - br i1 %.not249, label %961, label %958 - -958: ; preds = %954 - call void @free(ptr noundef nonnull %957) #28 - %959 = load ptr, ptr %83, align 8, !tbaa !30 - %960 = getelementptr inbounds nuw i8, ptr %959, i64 376 - store ptr null, ptr %960, align 8, !tbaa !174 - br label %961 - -961: ; preds = %954, %958 - %962 = phi ptr [ %955, %954 ], [ %959, %958 ] - %963 = getelementptr inbounds nuw i8, ptr %962, i64 376 - store ptr %.3507, ptr %963, align 8, !tbaa !174 - %964 = call i32 @Gia_ManVerifyCex(ptr noundef nonnull %962, ptr noundef nonnull %.3507, i32 noundef 0) #28 - %.not250 = icmp eq i32 %964, 0 - br i1 %.not250, label %965, label %966 - -965: ; preds = %961 + br label %955 + +955: ; preds = %954, %Vga_ManRollBack.exit.thread.thread + %956 = load ptr, ptr %83, align 8, !tbaa !30 + %957 = getelementptr inbounds nuw i8, ptr %956, i64 376 + %958 = load ptr, ptr %957, align 8, !tbaa !174 + %.not249 = icmp eq ptr %958, null + br i1 %.not249, label %962, label %959 + +959: ; preds = %955 + call void @free(ptr noundef nonnull %958) #28 + %960 = load ptr, ptr %83, align 8, !tbaa !30 + %961 = getelementptr inbounds nuw i8, ptr %960, i64 376 + store ptr null, ptr %961, align 8, !tbaa !174 + br label %962 + +962: ; preds = %955, %959 + %963 = phi ptr [ %956, %954 ], [ %960, %958 ] + %964 = getelementptr inbounds nuw i8, ptr %963, i64 376 + store ptr %.3507, ptr %964, align 8, !tbaa !174 + %965 = call i32 @Gia_ManVerifyCex(ptr noundef nonnull %963, ptr noundef nonnull %.3507, i32 noundef 0) #28 + %.not250 = icmp eq i32 %965, 0 + br i1 %.not250, label %966, label %967 + +966: ; preds = %962 call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.41) - br label %966 + br label %967 -966: ; preds = %965, %961 +967: ; preds = %966, %962 call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.42, i32 noundef %164) - %967 = getelementptr inbounds nuw i8, ptr %.3507, i64 4 - %968 = load i32, ptr %967, align 4, !tbaa !60 - %969 = add nsw i32 %968, -1 - %970 = load ptr, ptr %84, align 8, !tbaa !55 - %971 = getelementptr inbounds nuw i8, ptr %970, i64 120 - store i32 %969, ptr %971, align 8, !tbaa !56 - %972 = load ptr, ptr %67, align 8, !tbaa !160 - %973 = icmp eq ptr %972, null - br i1 %973, label %Vec_IntFreeP.exit473, label %974 - -974: ; preds = %966 - %975 = getelementptr inbounds nuw i8, ptr %972, i64 8 - %976 = load ptr, ptr %975, align 8, !tbaa !3 - %.not.i471 = icmp eq ptr %976, null - br i1 %.not.i471, label %979, label %.thread.i472 - -.thread.i472: ; preds = %974 - call void @free(ptr noundef nonnull %976) #28 - %977 = load ptr, ptr %67, align 8, !tbaa !160 - %978 = getelementptr inbounds nuw i8, ptr %977, i64 8 - store ptr null, ptr %978, align 8, !tbaa !3 - br label %979 - -979: ; preds = %.thread.i472, %974 - %980 = phi ptr [ %977, %.thread.i472 ], [ %972, %974 ] - call void @free(ptr noundef nonnull %980) #28 + %968 = getelementptr inbounds nuw i8, ptr %.3507, i64 4 + %969 = load i32, ptr %968, align 4, !tbaa !60 + %970 = add nsw i32 %969, -1 + %971 = load ptr, ptr %84, align 8, !tbaa !55 + %972 = getelementptr inbounds nuw i8, ptr %971, i64 120 + store i32 %970, ptr %972, align 8, !tbaa !56 + %973 = load ptr, ptr %67, align 8, !tbaa !160 + %974 = icmp eq ptr %973, null + br i1 %974, label %Vec_IntFreeP.exit473, label %975 + +975: ; preds = %967 + %976 = getelementptr inbounds nuw i8, ptr %973, i64 8 + %977 = load ptr, ptr %976, align 8, !tbaa !3 + %.not.i471 = icmp eq ptr %977, null + br i1 %.not.i471, label %980, label %.thread.i472 + +.thread.i472: ; preds = %975 + call void @free(ptr noundef nonnull %977) #28 + %978 = load ptr, ptr %67, align 8, !tbaa !160 + %979 = getelementptr inbounds nuw i8, ptr %978, i64 8 + store ptr null, ptr %979, align 8, !tbaa !3 + br label %980 + +980: ; preds = %.thread.i472, %975 + %981 = phi ptr [ %978, %.thread.i472 ], [ %973, %974 ] + call void @free(ptr noundef nonnull %981) #28 store ptr null, ptr %67, align 8, !tbaa !160 br label %Vec_IntFreeP.exit473 -Vec_IntFreeP.exit473: ; preds = %979, %966, %883, %906, %942, %943, %920, %944 +Vec_IntFreeP.exit473: ; preds = %980, %967, %884, %907, %943, %944, %921, %945 %.0215 = phi i32 [ -1, %883 ], [ -1, %906 ], [ -1, %920 ], [ -1, %942 ], [ -1, %943 ], [ -1, %944 ], [ 0, %966 ], [ 0, %979 ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #28 - %981 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %16) #28 - %982 = icmp slt i32 %981, 0 - br i1 %982, label %Abc_Clock.exit475, label %983 - -983: ; preds = %Vec_IntFreeP.exit473 - %984 = load i64, ptr %16, align 8, !tbaa !171 - %985 = mul nsw i64 %984, 1000000 - %986 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %987 = load i64, ptr %986, align 8, !tbaa !173 - %988 = sdiv i64 %987, 1000 - %989 = add nsw i64 %988, %985 + %982 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %16) #28 + %983 = icmp slt i32 %982, 0 + br i1 %983, label %Abc_Clock.exit475, label %984 + +984: ; preds = %Vec_IntFreeP.exit473 + %985 = load i64, ptr %16, align 8, !tbaa !171 + %986 = mul nsw i64 %985, 1000000 + %987 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %988 = load i64, ptr %987, align 8, !tbaa !173 + %989 = sdiv i64 %988, 1000 + %990 = add nsw i64 %989, %986 br label %Abc_Clock.exit475 -Abc_Clock.exit475: ; preds = %Vec_IntFreeP.exit473, %983 - %.0.i474 = phi i64 [ %989, %983 ], [ -1, %Vec_IntFreeP.exit473 ] +Abc_Clock.exit475: ; preds = %Vec_IntFreeP.exit473, %984 + %.0.i474 = phi i64 [ %990, %983 ], [ -1, %Vec_IntFreeP.exit473 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #28 - %990 = sub nsw i64 %.0.i474, %.0.i + %991 = sub nsw i64 %.0.i474, %.0.i call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.43) - %991 = sitofp i64 %990 to double - %992 = fdiv double %991, 1.000000e+06 - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.60, double noundef %992) - %993 = load ptr, ptr %84, align 8, !tbaa !55 - %994 = getelementptr inbounds nuw i8, ptr %993, i64 112 - %995 = load i32, ptr %994, align 8, !tbaa !150 - %.not257 = icmp eq i32 %995, 0 - br i1 %.not257, label %1185, label %996 - -996: ; preds = %Abc_Clock.exit475 + %992 = sitofp i64 %991 to double + %993 = fdiv double %992, 1.000000e+06 + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.60, double noundef %993) + %994 = load ptr, ptr %84, align 8, !tbaa !55 + %995 = getelementptr inbounds nuw i8, ptr %994, i64 112 + %996 = load i32, ptr %995, align 8, !tbaa !150 + %.not257 = icmp eq i32 %996, 0 + br i1 %.not257, label %1186, label %997 + +997: ; preds = %Abc_Clock.exit475 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #28 - %997 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %15) #28 - %998 = icmp slt i32 %997, 0 - br i1 %998, label %Abc_Clock.exit477, label %999 - -999: ; preds = %996 - %1000 = load i64, ptr %15, align 8, !tbaa !171 - %1001 = mul nsw i64 %1000, 1000000 - %1002 = getelementptr inbounds nuw i8, ptr %15, i64 8 - %1003 = load i64, ptr %1002, align 8, !tbaa !173 - %1004 = sdiv i64 %1003, 1000 - %1005 = add nsw i64 %1004, %1001 + %998 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %15) #28 + %999 = icmp slt i32 %998, 0 + br i1 %999, label %Abc_Clock.exit477, label %1000 + +1000: ; preds = %997 + %1001 = load i64, ptr %15, align 8, !tbaa !171 + %1002 = mul nsw i64 %1001, 1000000 + %1003 = getelementptr inbounds nuw i8, ptr %15, i64 8 + %1004 = load i64, ptr %1003, align 8, !tbaa !173 + %1005 = sdiv i64 %1004, 1000 + %1006 = add nsw i64 %1005, %1002 br label %Abc_Clock.exit477 -Abc_Clock.exit477: ; preds = %996, %999 - %.0.i476 = phi i64 [ %1005, %999 ], [ -1, %996 ] +Abc_Clock.exit477: ; preds = %997, %1000 + %.0.i476 = phi i64 [ %1006, %999 ], [ -1, %996 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #28 - %1006 = getelementptr inbounds nuw i8, ptr %83, i64 144 - %1007 = load i64, ptr %1006, align 8, !tbaa !194 - %1008 = getelementptr inbounds nuw i8, ptr %83, i64 136 - %1009 = load i64, ptr %1008, align 8, !tbaa !195 - %1010 = getelementptr inbounds nuw i8, ptr %83, i64 152 - %1011 = load i64, ptr %1010, align 8, !tbaa !196 - %1012 = add i64 %.0.i, %1007 - %1013 = add i64 %1012, %1009 - %1014 = add i64 %1013, %1011 - %1015 = sub i64 %.0.i476, %1014 - %1016 = getelementptr inbounds nuw i8, ptr %83, i64 160 - store i64 %1015, ptr %1016, align 8, !tbaa !200 + %1007 = getelementptr inbounds nuw i8, ptr %83, i64 144 + %1008 = load i64, ptr %1007, align 8, !tbaa !194 + %1009 = getelementptr inbounds nuw i8, ptr %83, i64 136 + %1010 = load i64, ptr %1009, align 8, !tbaa !195 + %1011 = getelementptr inbounds nuw i8, ptr %83, i64 152 + %1012 = load i64, ptr %1011, align 8, !tbaa !196 + %1013 = add i64 %.0.i, %1008 + %1014 = add i64 %1013, %1010 + %1015 = add i64 %1014, %1012 + %1016 = sub i64 %.0.i476, %1015 + %1017 = getelementptr inbounds nuw i8, ptr %83, i64 160 + store i64 %1016, ptr %1017, align 8, !tbaa !200 call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.44) - %1017 = load i64, ptr %1006, align 8, !tbaa !194 - %1018 = sitofp i64 %1017 to double - %1019 = fdiv double %1018, 1.000000e+06 + %1018 = load i64, ptr %1007, align 8, !tbaa !194 + %1019 = sitofp i64 %1018 to double + %1020 = fdiv double %1019, 1.000000e+06 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #28 - %1020 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %14) #28 - %1021 = icmp slt i32 %1020, 0 - br i1 %1021, label %Abc_Clock.exit479, label %1022 - -1022: ; preds = %Abc_Clock.exit477 - %1023 = load i64, ptr %14, align 8, !tbaa !171 - %1024 = mul nsw i64 %1023, 1000000 - %1025 = getelementptr inbounds nuw i8, ptr %14, i64 8 - %1026 = load i64, ptr %1025, align 8, !tbaa !173 - %1027 = sdiv i64 %1026, 1000 - %1028 = add nsw i64 %1027, %1024 + %1021 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %14) #28 + %1022 = icmp slt i32 %1021, 0 + br i1 %1022, label %Abc_Clock.exit479, label %1023 + +1023: ; preds = %Abc_Clock.exit477 + %1024 = load i64, ptr %14, align 8, !tbaa !171 + %1025 = mul nsw i64 %1024, 1000000 + %1026 = getelementptr inbounds nuw i8, ptr %14, i64 8 + %1027 = load i64, ptr %1026, align 8, !tbaa !173 + %1028 = sdiv i64 %1027, 1000 + %1029 = add nsw i64 %1028, %1025 br label %Abc_Clock.exit479 -Abc_Clock.exit479: ; preds = %Abc_Clock.exit477, %1022 - %.0.i478 = phi i64 [ %1028, %1022 ], [ -1, %Abc_Clock.exit477 ] +Abc_Clock.exit479: ; preds = %Abc_Clock.exit477, %1023 + %.0.i478 = phi i64 [ %1029, %1022 ], [ -1, %Abc_Clock.exit477 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #28 %.not258 = icmp eq i64 %.0.i478, %.0.i - br i1 %.not258, label %1045, label %1029 + br i1 %.not258, label %1046, label %1030 -1029: ; preds = %Abc_Clock.exit479 - %1030 = load i64, ptr %1006, align 8, !tbaa !194 - %1031 = sitofp i64 %1030 to double - %1032 = fmul double %1031, 1.000000e+02 +1030: ; preds = %Abc_Clock.exit479 + %1031 = load i64, ptr %1007, align 8, !tbaa !194 + %1032 = sitofp i64 %1031 to double + %1033 = fmul double %1032, 1.000000e+02 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #28 - %1033 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %13) #28 - %1034 = icmp slt i32 %1033, 0 - br i1 %1034, label %Abc_Clock.exit481, label %1035 - -1035: ; preds = %1029 - %1036 = load i64, ptr %13, align 8, !tbaa !171 - %1037 = mul nsw i64 %1036, 1000000 - %1038 = getelementptr inbounds nuw i8, ptr %13, i64 8 - %1039 = load i64, ptr %1038, align 8, !tbaa !173 - %1040 = sdiv i64 %1039, 1000 - %1041 = add nsw i64 %1040, %1037 + %1034 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %13) #28 + %1035 = icmp slt i32 %1034, 0 + br i1 %1035, label %Abc_Clock.exit481, label %1036 + +1036: ; preds = %1030 + %1037 = load i64, ptr %13, align 8, !tbaa !171 + %1038 = mul nsw i64 %1037, 1000000 + %1039 = getelementptr inbounds nuw i8, ptr %13, i64 8 + %1040 = load i64, ptr %1039, align 8, !tbaa !173 + %1041 = sdiv i64 %1040, 1000 + %1042 = add nsw i64 %1041, %1038 br label %Abc_Clock.exit481 -Abc_Clock.exit481: ; preds = %1029, %1035 - %.0.i480 = phi i64 [ %1041, %1035 ], [ -1, %1029 ] +Abc_Clock.exit481: ; preds = %1030, %1036 + %.0.i480 = phi i64 [ %1042, %1035 ], [ -1, %1029 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #28 - %1042 = sub nsw i64 %.0.i480, %.0.i - %1043 = sitofp i64 %1042 to double - %1044 = fdiv double %1032, %1043 - br label %1045 - -1045: ; preds = %Abc_Clock.exit479, %Abc_Clock.exit481 - %1046 = phi double [ %1044, %Abc_Clock.exit481 ], [ 0.000000e+00, %Abc_Clock.exit479 ] - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1019, double noundef %1046) + %1043 = sub nsw i64 %.0.i480, %.0.i + %1044 = sitofp i64 %1043 to double + %1045 = fdiv double %1033, %1044 + br label %1046 + +1046: ; preds = %Abc_Clock.exit479, %Abc_Clock.exit481 + %1047 = phi double [ %1045, %Abc_Clock.exit481 ], [ 0.000000e+00, %Abc_Clock.exit479 ] + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1020, double noundef %1047) call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.46) - %1047 = load i64, ptr %1008, align 8, !tbaa !195 - %1048 = sitofp i64 %1047 to double - %1049 = fdiv double %1048, 1.000000e+06 + %1048 = load i64, ptr %1009, align 8, !tbaa !195 + %1049 = sitofp i64 %1048 to double + %1050 = fdiv double %1049, 1.000000e+06 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #28 - %1050 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %12) #28 - %1051 = icmp slt i32 %1050, 0 - br i1 %1051, label %Abc_Clock.exit483, label %1052 - -1052: ; preds = %1045 - %1053 = load i64, ptr %12, align 8, !tbaa !171 - %1054 = mul nsw i64 %1053, 1000000 - %1055 = getelementptr inbounds nuw i8, ptr %12, i64 8 - %1056 = load i64, ptr %1055, align 8, !tbaa !173 - %1057 = sdiv i64 %1056, 1000 - %1058 = add nsw i64 %1057, %1054 + %1051 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %12) #28 + %1052 = icmp slt i32 %1051, 0 + br i1 %1052, label %Abc_Clock.exit483, label %1053 + +1053: ; preds = %1046 + %1054 = load i64, ptr %12, align 8, !tbaa !171 + %1055 = mul nsw i64 %1054, 1000000 + %1056 = getelementptr inbounds nuw i8, ptr %12, i64 8 + %1057 = load i64, ptr %1056, align 8, !tbaa !173 + %1058 = sdiv i64 %1057, 1000 + %1059 = add nsw i64 %1058, %1055 br label %Abc_Clock.exit483 -Abc_Clock.exit483: ; preds = %1045, %1052 - %.0.i482 = phi i64 [ %1058, %1052 ], [ -1, %1045 ] +Abc_Clock.exit483: ; preds = %1046, %1053 + %.0.i482 = phi i64 [ %1059, %1052 ], [ -1, %1045 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #28 %.not259 = icmp eq i64 %.0.i482, %.0.i - br i1 %.not259, label %1075, label %1059 + br i1 %.not259, label %1076, label %1060 -1059: ; preds = %Abc_Clock.exit483 - %1060 = load i64, ptr %1008, align 8, !tbaa !195 - %1061 = sitofp i64 %1060 to double - %1062 = fmul double %1061, 1.000000e+02 +1060: ; preds = %Abc_Clock.exit483 + %1061 = load i64, ptr %1009, align 8, !tbaa !195 + %1062 = sitofp i64 %1061 to double + %1063 = fmul double %1062, 1.000000e+02 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #28 - %1063 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %11) #28 - %1064 = icmp slt i32 %1063, 0 - br i1 %1064, label %Abc_Clock.exit485, label %1065 - -1065: ; preds = %1059 - %1066 = load i64, ptr %11, align 8, !tbaa !171 - %1067 = mul nsw i64 %1066, 1000000 - %1068 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %1069 = load i64, ptr %1068, align 8, !tbaa !173 - %1070 = sdiv i64 %1069, 1000 - %1071 = add nsw i64 %1070, %1067 + %1064 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %11) #28 + %1065 = icmp slt i32 %1064, 0 + br i1 %1065, label %Abc_Clock.exit485, label %1066 + +1066: ; preds = %1060 + %1067 = load i64, ptr %11, align 8, !tbaa !171 + %1068 = mul nsw i64 %1067, 1000000 + %1069 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %1070 = load i64, ptr %1069, align 8, !tbaa !173 + %1071 = sdiv i64 %1070, 1000 + %1072 = add nsw i64 %1071, %1068 br label %Abc_Clock.exit485 -Abc_Clock.exit485: ; preds = %1059, %1065 - %.0.i484 = phi i64 [ %1071, %1065 ], [ -1, %1059 ] +Abc_Clock.exit485: ; preds = %1060, %1066 + %.0.i484 = phi i64 [ %1072, %1065 ], [ -1, %1059 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #28 - %1072 = sub nsw i64 %.0.i484, %.0.i - %1073 = sitofp i64 %1072 to double - %1074 = fdiv double %1062, %1073 - br label %1075 - -1075: ; preds = %Abc_Clock.exit483, %Abc_Clock.exit485 - %1076 = phi double [ %1074, %Abc_Clock.exit485 ], [ 0.000000e+00, %Abc_Clock.exit483 ] - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1049, double noundef %1076) + %1073 = sub nsw i64 %.0.i484, %.0.i + %1074 = sitofp i64 %1073 to double + %1075 = fdiv double %1063, %1074 + br label %1076 + +1076: ; preds = %Abc_Clock.exit483, %Abc_Clock.exit485 + %1077 = phi double [ %1075, %Abc_Clock.exit485 ], [ 0.000000e+00, %Abc_Clock.exit483 ] + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1050, double noundef %1077) call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.47) - %1077 = load i64, ptr %1010, align 8, !tbaa !196 - %1078 = sitofp i64 %1077 to double - %1079 = fdiv double %1078, 1.000000e+06 + %1078 = load i64, ptr %1011, align 8, !tbaa !196 + %1079 = sitofp i64 %1078 to double + %1080 = fdiv double %1079, 1.000000e+06 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #28 - %1080 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %10) #28 - %1081 = icmp slt i32 %1080, 0 - br i1 %1081, label %Abc_Clock.exit487, label %1082 - -1082: ; preds = %1075 - %1083 = load i64, ptr %10, align 8, !tbaa !171 - %1084 = mul nsw i64 %1083, 1000000 - %1085 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %1086 = load i64, ptr %1085, align 8, !tbaa !173 - %1087 = sdiv i64 %1086, 1000 - %1088 = add nsw i64 %1087, %1084 + %1081 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %10) #28 + %1082 = icmp slt i32 %1081, 0 + br i1 %1082, label %Abc_Clock.exit487, label %1083 + +1083: ; preds = %1076 + %1084 = load i64, ptr %10, align 8, !tbaa !171 + %1085 = mul nsw i64 %1084, 1000000 + %1086 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %1087 = load i64, ptr %1086, align 8, !tbaa !173 + %1088 = sdiv i64 %1087, 1000 + %1089 = add nsw i64 %1088, %1085 br label %Abc_Clock.exit487 -Abc_Clock.exit487: ; preds = %1075, %1082 - %.0.i486 = phi i64 [ %1088, %1082 ], [ -1, %1075 ] +Abc_Clock.exit487: ; preds = %1076, %1083 + %.0.i486 = phi i64 [ %1089, %1082 ], [ -1, %1075 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #28 %.not260 = icmp eq i64 %.0.i486, %.0.i - br i1 %.not260, label %1105, label %1089 + br i1 %.not260, label %1106, label %1090 -1089: ; preds = %Abc_Clock.exit487 - %1090 = load i64, ptr %1010, align 8, !tbaa !196 - %1091 = sitofp i64 %1090 to double - %1092 = fmul double %1091, 1.000000e+02 +1090: ; preds = %Abc_Clock.exit487 + %1091 = load i64, ptr %1011, align 8, !tbaa !196 + %1092 = sitofp i64 %1091 to double + %1093 = fmul double %1092, 1.000000e+02 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #28 - %1093 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %9) #28 - %1094 = icmp slt i32 %1093, 0 - br i1 %1094, label %Abc_Clock.exit489, label %1095 - -1095: ; preds = %1089 - %1096 = load i64, ptr %9, align 8, !tbaa !171 - %1097 = mul nsw i64 %1096, 1000000 - %1098 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %1099 = load i64, ptr %1098, align 8, !tbaa !173 - %1100 = sdiv i64 %1099, 1000 - %1101 = add nsw i64 %1100, %1097 + %1094 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %9) #28 + %1095 = icmp slt i32 %1094, 0 + br i1 %1095, label %Abc_Clock.exit489, label %1096 + +1096: ; preds = %1090 + %1097 = load i64, ptr %9, align 8, !tbaa !171 + %1098 = mul nsw i64 %1097, 1000000 + %1099 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %1100 = load i64, ptr %1099, align 8, !tbaa !173 + %1101 = sdiv i64 %1100, 1000 + %1102 = add nsw i64 %1101, %1098 br label %Abc_Clock.exit489 -Abc_Clock.exit489: ; preds = %1089, %1095 - %.0.i488 = phi i64 [ %1101, %1095 ], [ -1, %1089 ] +Abc_Clock.exit489: ; preds = %1090, %1096 + %.0.i488 = phi i64 [ %1102, %1095 ], [ -1, %1089 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #28 - %1102 = sub nsw i64 %.0.i488, %.0.i - %1103 = sitofp i64 %1102 to double - %1104 = fdiv double %1092, %1103 - br label %1105 - -1105: ; preds = %Abc_Clock.exit487, %Abc_Clock.exit489 - %1106 = phi double [ %1104, %Abc_Clock.exit489 ], [ 0.000000e+00, %Abc_Clock.exit487 ] - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1079, double noundef %1106) + %1103 = sub nsw i64 %.0.i488, %.0.i + %1104 = sitofp i64 %1103 to double + %1105 = fdiv double %1093, %1104 + br label %1106 + +1106: ; preds = %Abc_Clock.exit487, %Abc_Clock.exit489 + %1107 = phi double [ %1105, %Abc_Clock.exit489 ], [ 0.000000e+00, %Abc_Clock.exit487 ] + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1080, double noundef %1107) call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.48) - %1107 = load i64, ptr %1016, align 8, !tbaa !200 - %1108 = sitofp i64 %1107 to double - %1109 = fdiv double %1108, 1.000000e+06 + %1108 = load i64, ptr %1017, align 8, !tbaa !200 + %1109 = sitofp i64 %1108 to double + %1110 = fdiv double %1109, 1.000000e+06 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #28 - %1110 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %8) #28 - %1111 = icmp slt i32 %1110, 0 - br i1 %1111, label %Abc_Clock.exit491, label %1112 - -1112: ; preds = %1105 - %1113 = load i64, ptr %8, align 8, !tbaa !171 - %1114 = mul nsw i64 %1113, 1000000 - %1115 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %1116 = load i64, ptr %1115, align 8, !tbaa !173 - %1117 = sdiv i64 %1116, 1000 - %1118 = add nsw i64 %1117, %1114 + %1111 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %8) #28 + %1112 = icmp slt i32 %1111, 0 + br i1 %1112, label %Abc_Clock.exit491, label %1113 + +1113: ; preds = %1106 + %1114 = load i64, ptr %8, align 8, !tbaa !171 + %1115 = mul nsw i64 %1114, 1000000 + %1116 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %1117 = load i64, ptr %1116, align 8, !tbaa !173 + %1118 = sdiv i64 %1117, 1000 + %1119 = add nsw i64 %1118, %1115 br label %Abc_Clock.exit491 -Abc_Clock.exit491: ; preds = %1105, %1112 - %.0.i490 = phi i64 [ %1118, %1112 ], [ -1, %1105 ] +Abc_Clock.exit491: ; preds = %1106, %1113 + %.0.i490 = phi i64 [ %1119, %1112 ], [ -1, %1105 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #28 %.not261 = icmp eq i64 %.0.i490, %.0.i - br i1 %.not261, label %1135, label %1119 + br i1 %.not261, label %1136, label %1120 -1119: ; preds = %Abc_Clock.exit491 - %1120 = load i64, ptr %1016, align 8, !tbaa !200 - %1121 = sitofp i64 %1120 to double - %1122 = fmul double %1121, 1.000000e+02 +1120: ; preds = %Abc_Clock.exit491 + %1121 = load i64, ptr %1017, align 8, !tbaa !200 + %1122 = sitofp i64 %1121 to double + %1123 = fmul double %1122, 1.000000e+02 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #28 - %1123 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %7) #28 - %1124 = icmp slt i32 %1123, 0 - br i1 %1124, label %Abc_Clock.exit493, label %1125 - -1125: ; preds = %1119 - %1126 = load i64, ptr %7, align 8, !tbaa !171 - %1127 = mul nsw i64 %1126, 1000000 - %1128 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %1129 = load i64, ptr %1128, align 8, !tbaa !173 - %1130 = sdiv i64 %1129, 1000 - %1131 = add nsw i64 %1130, %1127 + %1124 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %7) #28 + %1125 = icmp slt i32 %1124, 0 + br i1 %1125, label %Abc_Clock.exit493, label %1126 + +1126: ; preds = %1120 + %1127 = load i64, ptr %7, align 8, !tbaa !171 + %1128 = mul nsw i64 %1127, 1000000 + %1129 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %1130 = load i64, ptr %1129, align 8, !tbaa !173 + %1131 = sdiv i64 %1130, 1000 + %1132 = add nsw i64 %1131, %1128 br label %Abc_Clock.exit493 -Abc_Clock.exit493: ; preds = %1119, %1125 - %.0.i492 = phi i64 [ %1131, %1125 ], [ -1, %1119 ] +Abc_Clock.exit493: ; preds = %1120, %1126 + %.0.i492 = phi i64 [ %1132, %1125 ], [ -1, %1119 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #28 - %1132 = sub nsw i64 %.0.i492, %.0.i - %1133 = sitofp i64 %1132 to double - %1134 = fdiv double %1122, %1133 - br label %1135 - -1135: ; preds = %Abc_Clock.exit491, %Abc_Clock.exit493 - %1136 = phi double [ %1134, %Abc_Clock.exit493 ], [ 0.000000e+00, %Abc_Clock.exit491 ] - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1109, double noundef %1136) + %1133 = sub nsw i64 %.0.i492, %.0.i + %1134 = sitofp i64 %1133 to double + %1135 = fdiv double %1123, %1134 + br label %1136 + +1136: ; preds = %Abc_Clock.exit491, %Abc_Clock.exit493 + %1137 = phi double [ %1135, %Abc_Clock.exit493 ], [ 0.000000e+00, %Abc_Clock.exit491 ] + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1110, double noundef %1137) call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.49) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #28 - %1137 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %6) #28 - %1138 = icmp slt i32 %1137, 0 - br i1 %1138, label %Abc_Clock.exit495, label %1139 - -1139: ; preds = %1135 - %1140 = load i64, ptr %6, align 8, !tbaa !171 - %1141 = mul nsw i64 %1140, 1000000 - %1142 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %1143 = load i64, ptr %1142, align 8, !tbaa !173 - %1144 = sdiv i64 %1143, 1000 - %1145 = add nsw i64 %1144, %1141 + %1138 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %6) #28 + %1139 = icmp slt i32 %1138, 0 + br i1 %1139, label %Abc_Clock.exit495, label %1140 + +1140: ; preds = %1136 + %1141 = load i64, ptr %6, align 8, !tbaa !171 + %1142 = mul nsw i64 %1141, 1000000 + %1143 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %1144 = load i64, ptr %1143, align 8, !tbaa !173 + %1145 = sdiv i64 %1144, 1000 + %1146 = add nsw i64 %1145, %1142 br label %Abc_Clock.exit495 -Abc_Clock.exit495: ; preds = %1135, %1139 - %.0.i494 = phi i64 [ %1145, %1139 ], [ -1, %1135 ] +Abc_Clock.exit495: ; preds = %1136, %1140 + %.0.i494 = phi i64 [ %1146, %1139 ], [ -1, %1135 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #28 - %1146 = sub nsw i64 %.0.i494, %.0.i - %1147 = sitofp i64 %1146 to double - %1148 = fdiv double %1147, 1.000000e+06 + %1147 = sub nsw i64 %.0.i494, %.0.i + %1148 = sitofp i64 %1147 to double + %1149 = fdiv double %1148, 1.000000e+06 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #28 - %1149 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %5) #28 - %1150 = icmp slt i32 %1149, 0 - br i1 %1150, label %Abc_Clock.exit497, label %1151 - -1151: ; preds = %Abc_Clock.exit495 - %1152 = load i64, ptr %5, align 8, !tbaa !171 - %1153 = mul nsw i64 %1152, 1000000 - %1154 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %1155 = load i64, ptr %1154, align 8, !tbaa !173 - %1156 = sdiv i64 %1155, 1000 - %1157 = add nsw i64 %1156, %1153 + %1150 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %5) #28 + %1151 = icmp slt i32 %1150, 0 + br i1 %1151, label %Abc_Clock.exit497, label %1152 + +1152: ; preds = %Abc_Clock.exit495 + %1153 = load i64, ptr %5, align 8, !tbaa !171 + %1154 = mul nsw i64 %1153, 1000000 + %1155 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %1156 = load i64, ptr %1155, align 8, !tbaa !173 + %1157 = sdiv i64 %1156, 1000 + %1158 = add nsw i64 %1157, %1154 br label %Abc_Clock.exit497 -Abc_Clock.exit497: ; preds = %Abc_Clock.exit495, %1151 - %.0.i496 = phi i64 [ %1157, %1151 ], [ -1, %Abc_Clock.exit495 ] +Abc_Clock.exit497: ; preds = %Abc_Clock.exit495, %1152 + %.0.i496 = phi i64 [ %1158, %1151 ], [ -1, %Abc_Clock.exit495 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #28 %.not262 = icmp eq i64 %.0.i496, %.0.i - br i1 %.not262, label %1183, label %1158 + br i1 %.not262, label %1184, label %1159 -1158: ; preds = %Abc_Clock.exit497 +1159: ; preds = %Abc_Clock.exit497 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #28 - %1159 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %4) #28 - %1160 = icmp slt i32 %1159, 0 - br i1 %1160, label %Abc_Clock.exit499, label %1161 - -1161: ; preds = %1158 - %1162 = load i64, ptr %4, align 8, !tbaa !171 - %1163 = mul nsw i64 %1162, 1000000 - %1164 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %1165 = load i64, ptr %1164, align 8, !tbaa !173 - %1166 = sdiv i64 %1165, 1000 - %1167 = add nsw i64 %1166, %1163 + %1160 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %4) #28 + %1161 = icmp slt i32 %1160, 0 + br i1 %1161, label %Abc_Clock.exit499, label %1162 + +1162: ; preds = %1159 + %1163 = load i64, ptr %4, align 8, !tbaa !171 + %1164 = mul nsw i64 %1163, 1000000 + %1165 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %1166 = load i64, ptr %1165, align 8, !tbaa !173 + %1167 = sdiv i64 %1166, 1000 + %1168 = add nsw i64 %1167, %1164 br label %Abc_Clock.exit499 -Abc_Clock.exit499: ; preds = %1158, %1161 - %.0.i498 = phi i64 [ %1167, %1161 ], [ -1, %1158 ] +Abc_Clock.exit499: ; preds = %1159, %1162 + %.0.i498 = phi i64 [ %1168, %1161 ], [ -1, %1158 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #28 - %1168 = sub nsw i64 %.0.i498, %.0.i - %1169 = sitofp i64 %1168 to double - %1170 = fmul double %1169, 1.000000e+02 + %1169 = sub nsw i64 %.0.i498, %.0.i + %1170 = sitofp i64 %1169 to double + %1171 = fmul double %1170, 1.000000e+02 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #28 - %1171 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %3) #28 - %1172 = icmp slt i32 %1171, 0 - br i1 %1172, label %Abc_Clock.exit501, label %1173 - -1173: ; preds = %Abc_Clock.exit499 - %1174 = load i64, ptr %3, align 8, !tbaa !171 - %1175 = mul nsw i64 %1174, 1000000 - %1176 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %1177 = load i64, ptr %1176, align 8, !tbaa !173 - %1178 = sdiv i64 %1177, 1000 - %1179 = add nsw i64 %1178, %1175 + %1172 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %3) #28 + %1173 = icmp slt i32 %1172, 0 + br i1 %1173, label %Abc_Clock.exit501, label %1174 + +1174: ; preds = %Abc_Clock.exit499 + %1175 = load i64, ptr %3, align 8, !tbaa !171 + %1176 = mul nsw i64 %1175, 1000000 + %1177 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %1178 = load i64, ptr %1177, align 8, !tbaa !173 + %1179 = sdiv i64 %1178, 1000 + %1180 = add nsw i64 %1179, %1176 br label %Abc_Clock.exit501 -Abc_Clock.exit501: ; preds = %Abc_Clock.exit499, %1173 - %.0.i500 = phi i64 [ %1179, %1173 ], [ -1, %Abc_Clock.exit499 ] +Abc_Clock.exit501: ; preds = %Abc_Clock.exit499, %1174 + %.0.i500 = phi i64 [ %1180, %1173 ], [ -1, %Abc_Clock.exit499 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #28 - %1180 = sub nsw i64 %.0.i500, %.0.i - %1181 = sitofp i64 %1180 to double - %1182 = fdiv double %1170, %1181 - br label %1183 - -1183: ; preds = %Abc_Clock.exit497, %Abc_Clock.exit501 - %1184 = phi double [ %1182, %Abc_Clock.exit501 ], [ 0.000000e+00, %Abc_Clock.exit497 ] - call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1148, double noundef %1184) + %1181 = sub nsw i64 %.0.i500, %.0.i + %1182 = sitofp i64 %1181 to double + %1183 = fdiv double %1171, %1182 + br label %1184 + +1184: ; preds = %Abc_Clock.exit497, %Abc_Clock.exit501 + %1185 = phi double [ %1183, %Abc_Clock.exit501 ], [ 0.000000e+00, %Abc_Clock.exit497 ] + call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.45, double noundef %1149, double noundef %1185) call void @Gia_VtaPrintMemory(ptr noundef nonnull %83) - br label %1185 + br label %1186 -1185: ; preds = %1183, %Abc_Clock.exit475 +1186: ; preds = %1184, %Abc_Clock.exit475 call void @Vga_ManStop(ptr noundef nonnull %83) - %1186 = load ptr, ptr @stdout, align 8, !tbaa !97 - %1187 = call i32 @fflush(ptr noundef %1186) - br label %1188 + %1187 = load ptr, ptr @stdout, align 8, !tbaa !97 + %1188 = call i32 @fflush(ptr noundef %1187) + br label %1189 -1188: ; preds = %1185, %60, %55 +1189: ; preds = %1186, %60, %55 %.0 = phi i32 [ 0, %60 ], [ 1, %55 ], [ %.0215, %1185 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #28 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #28 diff --git a/bench/abc/optimized/cbaBlast.ll b/bench/abc/optimized/cbaBlast.ll index 554d24a0c1d..1e725912875 100644 --- a/bench/abc/optimized/cbaBlast.ll +++ b/bench/abc/optimized/cbaBlast.ll @@ -2337,147 +2337,147 @@ define void @Cba_BlastDivider(ptr noundef %0, ptr noundef readonly captures(none .preheader120: ; preds = %.preheader120.lr.ph, %.loopexit %indvars.iv152 = phi i64 [ %15, %.preheader120.lr.ph ], [ %indvars.iv.next153, %.loopexit ] - %18 = sub nuw nsw i64 %17, %indvars.iv152 - %19 = icmp sgt i64 %indvars.iv152, 0 - br i1 %19, label %.lr.ph, label %.lr.ph129 + %17 = sub nuw nsw i64 %17, %indvars.iv152 + %18 = icmp sgt i64 %indvars.iv152, 0 + br i1 %18, label %.lr.ph, label %.lr.ph129 -20: ; preds = %.lr.ph +19: ; preds = %.lr.ph %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %21 = icmp sgt i64 %indvars.iv.next, %18 - br i1 %21, label %.lr.ph, label %.lr.ph129, !llvm.loop !63 + %20 = icmp sgt i64 %indvars.iv.next, %17 + br i1 %20, label %.lr.ph, label %.lr.ph129, !llvm.loop !63 -.lr.ph: ; preds = %.preheader120, %20 +.lr.ph: ; preds = %.preheader120, %19 %indvars.iv = phi i64 [ %indvars.iv.next, %20 ], [ %15, %.preheader120 ] - %.0105122 = phi i32 [ %24, %20 ], [ 0, %.preheader120 ] - %22 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv - %23 = load i32, ptr %22, align 4, !tbaa !11 - %24 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.0105122, i32 noundef %23) #21 - %25 = icmp eq i32 %24, 1 - br i1 %25, label %.thread, label %20 + %.0105122 = phi i32 [ %23, %20 ], [ 0, %.preheader120 ] + %21 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv + %22 = load i32, ptr %21, align 4, !tbaa !11 + %23 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.0105122, i32 noundef %22) #21 + %24 = icmp eq i32 %23, 1 + br i1 %24, label %.thread, label %19 .thread: ; preds = %.lr.ph - %26 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 - store i32 0, ptr %26, align 4, !tbaa !11 + %25 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 + store i32 0, ptr %25, align 4, !tbaa !11 br label %.loopexit -.lr.ph129: ; preds = %20, %.preheader120 - %.promoted.ph = phi i32 [ 0, %.preheader120 ], [ %24, %20 ] - %27 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 - br label %28 +.lr.ph129: ; preds = %19, %.preheader120 + %.promoted.ph = phi i32 [ 0, %.preheader120 ], [ %23, %20 ] + %26 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 + br label %27 -28: ; preds = %.lr.ph129, %34 +27: ; preds = %.lr.ph129, %33 %indvars.iv141 = phi i64 [ %16, %.lr.ph129 ], [ %indvars.iv.next142, %34 ] - %29 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %40, %34 ] - %.2127 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %43, %34 ] + %28 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %39, %34 ] + %.2127 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %42, %34 ] %.not117 = icmp slt i64 %indvars.iv141, %indvars.iv152 - br i1 %.not117, label %34, label %30 + br i1 %.not117, label %33, label %29 -30: ; preds = %28 - %31 = sub nsw i64 %indvars.iv141, %indvars.iv152 - %32 = getelementptr inbounds nuw i32, ptr %3, i64 %31 - %33 = load i32, ptr %32, align 4, !tbaa !11 - br label %34 +29: ; preds = %27 + %30 = sub nsw i64 %indvars.iv141, %indvars.iv152 + %31 = getelementptr inbounds nuw i32, ptr %3, i64 %30 + %32 = load i32, ptr %31, align 4, !tbaa !11 + br label %33 -34: ; preds = %28, %30 - %35 = phi i32 [ %33, %30 ], [ 0, %28 ] - %36 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv141 - %37 = load i32, ptr %36, align 4, !tbaa !11 - %38 = xor i32 %37, 1 - %39 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %35, i32 noundef %38) #21 - %40 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.2127, i32 noundef %29, i32 noundef %39) #21 - %41 = load i32, ptr %36, align 4, !tbaa !11 - %42 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %35, i32 noundef %41) #21 - %43 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.2127, i32 noundef %42) #21 +33: ; preds = %27, %29 + %34 = phi i32 [ %32, %30 ], [ 0, %28 ] + %35 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv141 + %36 = load i32, ptr %35, align 4, !tbaa !11 + %37 = xor i32 %36, 1 + %38 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %34, i32 noundef %37) #21 + %39 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.2127, i32 noundef %28, i32 noundef %38) #21 + %40 = load i32, ptr %35, align 4, !tbaa !11 + %41 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %34, i32 noundef %40) #21 + %42 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.2127, i32 noundef %41) #21 %indvars.iv.next142 = add nsw i64 %indvars.iv141, -1 - %44 = icmp slt i64 %indvars.iv141, 1 - %45 = icmp eq i32 %43, 1 - %or.cond = select i1 %44, i1 true, i1 %45 - br i1 %or.cond, label %46, label %28, !llvm.loop !64 - -46: ; preds = %34 - %47 = xor i32 %40, 1 - store i32 %47, ptr %27, align 4, !tbaa !11 - %48 = icmp eq i32 %40, 1 - br i1 %48, label %.loopexit, label %.lr.ph133 - -.lr.ph133: ; preds = %46, %57 + %43 = icmp slt i64 %indvars.iv141, 1 + %44 = icmp eq i32 %42, 1 + %or.cond = select i1 %43, i1 true, i1 %44 + br i1 %or.cond, label %45, label %27, !llvm.loop !64 + +45: ; preds = %33 + %46 = xor i32 %39, 1 + store i32 %46, ptr %26, align 4, !tbaa !11 + %47 = icmp eq i32 %39, 1 + br i1 %47, label %.loopexit, label %.lr.ph133 + +.lr.ph133: ; preds = %45, %56 %indvars.iv144 = phi i64 [ %indvars.iv.next145, %57 ], [ 0, %46 ] - %.0132 = phi i32 [ %62, %57 ], [ 0, %46 ] - %49 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv144 - %50 = load i32, ptr %49, align 4, !tbaa !11 - %51 = xor i32 %50, 1 - %52 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.0132, i32 noundef %51, i32 noundef %50) #21 + %.0132 = phi i32 [ %61, %57 ], [ 0, %46 ] + %48 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv144 + %49 = load i32, ptr %48, align 4, !tbaa !11 + %50 = xor i32 %49, 1 + %51 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.0132, i32 noundef %50, i32 noundef %49) #21 %.not118 = icmp slt i64 %indvars.iv144, %indvars.iv152 - br i1 %.not118, label %57, label %53 + br i1 %.not118, label %56, label %52 -53: ; preds = %.lr.ph133 - %54 = sub nsw i64 %indvars.iv144, %indvars.iv152 - %55 = getelementptr inbounds nuw i32, ptr %3, i64 %54 - %56 = load i32, ptr %55, align 4, !tbaa !11 - br label %57 - -57: ; preds = %.lr.ph133, %53 - %58 = phi i32 [ %56, %53 ], [ 0, %.lr.ph133 ] - %59 = load i32, ptr %49, align 4, !tbaa !11 - %60 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %.0132, i32 noundef %58) #21 - %61 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.0132, i32 noundef %58) #21 - %62 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %59, i32 noundef %60, i32 noundef %61) #21 - %63 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %52, i32 noundef %58) #21 - %64 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv144 - store i32 %63, ptr %64, align 4, !tbaa !11 +52: ; preds = %.lr.ph133 + %53 = sub nsw i64 %indvars.iv144, %indvars.iv152 + %54 = getelementptr inbounds nuw i32, ptr %3, i64 %53 + %55 = load i32, ptr %54, align 4, !tbaa !11 + br label %56 + +56: ; preds = %.lr.ph133, %52 + %57 = phi i32 [ %55, %53 ], [ 0, %.lr.ph133 ] + %58 = load i32, ptr %48, align 4, !tbaa !11 + %59 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %.0132, i32 noundef %57) #21 + %60 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.0132, i32 noundef %57) #21 + %61 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %58, i32 noundef %59, i32 noundef %60) #21 + %62 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %51, i32 noundef %57) #21 + %63 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv144 + store i32 %62, ptr %63, align 4, !tbaa !11 %indvars.iv.next145 = add nuw nsw i64 %indvars.iv144, 1 %exitcond.not = icmp eq i64 %indvars.iv.next145, %wide.trip.count br i1 %exitcond.not, label %._crit_edge134, label %.lr.ph133, !llvm.loop !65 -._crit_edge134: ; preds = %57 - %65 = icmp eq i32 %40, 0 - br i1 %65, label %66, label %.lr.ph136 +._crit_edge134: ; preds = %56 + %64 = icmp eq i32 %39, 0 + br i1 %64, label %65, label %.lr.ph136 -66: ; preds = %._crit_edge134 - %67 = tail call ptr @Cba_VecCopy(ptr noundef %6, ptr noundef nonnull %12, i32 noundef %2) +65: ; preds = %._crit_edge134 + %66 = tail call ptr @Cba_VecCopy(ptr noundef %6, ptr noundef nonnull %12, i32 noundef %2) br label %.loopexit .lr.ph136: ; preds = %._crit_edge134, %.lr.ph136 %indvars.iv147 = phi i64 [ %indvars.iv.next148, %.lr.ph136 ], [ 0, %._crit_edge134 ] - %68 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv147 - %69 = load i32, ptr %68, align 4, !tbaa !11 - %70 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv147 - %71 = load i32, ptr %70, align 4, !tbaa !11 - %72 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %47, i32 noundef %69, i32 noundef %71) #21 - store i32 %72, ptr %70, align 4, !tbaa !11 + %67 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv147 + %68 = load i32, ptr %67, align 4, !tbaa !11 + %69 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv147 + %70 = load i32, ptr %69, align 4, !tbaa !11 + %71 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %46, i32 noundef %68, i32 noundef %70) #21 + store i32 %71, ptr %69, align 4, !tbaa !11 %indvars.iv.next148 = add nuw nsw i64 %indvars.iv147, 1 %exitcond151.not = icmp eq i64 %indvars.iv.next148, %wide.trip.count150 br i1 %exitcond151.not, label %.loopexit, label %.lr.ph136, !llvm.loop !66 -.loopexit: ; preds = %.lr.ph136, %.thread, %66, %46 +.loopexit: ; preds = %.lr.ph136, %.thread, %65, %45 %indvars.iv.next153 = add nsw i64 %indvars.iv152, -1 - br i1 %19, label %.preheader120, label %._crit_edge139, !llvm.loop !67 + br i1 %18, label %.preheader120, label %._crit_edge139, !llvm.loop !67 ._crit_edge139: ; preds = %.loopexit, %7 %.not = icmp eq ptr %12, null - br i1 %.not, label %74, label %73 + br i1 %.not, label %73, label %72 -73: ; preds = %._crit_edge139 +72: ; preds = %._crit_edge139 tail call void @free(ptr noundef nonnull %12) #21 - br label %74 + br label %73 -74: ; preds = %._crit_edge139, %73 +73: ; preds = %._crit_edge139, %72 %.not115 = icmp eq i32 %5, 0 - br i1 %.not115, label %77, label %75 + br i1 %.not115, label %76, label %74 -75: ; preds = %74 - %76 = tail call ptr @Cba_VecCopy(ptr noundef %6, ptr noundef %11, i32 noundef %2) - br label %77 +74: ; preds = %73 + %75 = tail call ptr @Cba_VecCopy(ptr noundef %6, ptr noundef %11, i32 noundef %2) + br label %76 -77: ; preds = %75, %74 +76: ; preds = %74, %73 %.not116 = icmp eq ptr %11, null - br i1 %.not116, label %79, label %78 + br i1 %.not116, label %78, label %77 -78: ; preds = %77 +77: ; preds = %76 tail call void @free(ptr noundef nonnull %11) #21 - br label %79 + br label %78 -79: ; preds = %77, %78 +78: ; preds = %76, %77 ret void } diff --git a/bench/abc/optimized/giaDup.ll b/bench/abc/optimized/giaDup.ll index 5f74235ff4e..55c2bcd0e08 100644 --- a/bench/abc/optimized/giaDup.ll +++ b/bench/abc/optimized/giaDup.ll @@ -20066,7 +20066,7 @@ define ptr @Gia_ManMiterInverse(ptr noundef %0, ptr noundef %1, i32 noundef %2, %.val144.sink = load ptr, ptr %23, align 8, !tbaa !12 br label %.lr.ph208.split -.lr.ph208.split: ; preds = %.lr.ph208.split.preheader, %149 +.lr.ph208.split: ; preds = %.lr.ph208.split.preheader, %147 %indvars.iv225 = phi i64 [ 0, %.lr.ph208.split.preheader ], [ %indvars.iv.next226, %149 ] %137 = getelementptr inbounds nuw i32, ptr %.val147.val, i64 %indvars.iv225 %138 = load i32, ptr %137, align 4, !tbaa !11 @@ -20079,7 +20079,7 @@ define ptr @Gia_ManMiterInverse(ptr noundef %0, ptr noundef %1, i32 noundef %2, %142 = getelementptr i8, ptr %.val145, i64 8 %.val145.val = load ptr, ptr %142, align 8, !tbaa !10 %143 = getelementptr inbounds nuw i32, ptr %.val145.val, i64 %indvars.iv225 - br label %149 + br label %147 144: ; preds = %.lr.ph208.split %145 = trunc nuw nsw i64 %indvars.iv225 to i32 @@ -20089,251 +20089,251 @@ define ptr @Gia_ManMiterInverse(ptr noundef %0, ptr noundef %1, i32 noundef %2, %148 = getelementptr inbounds nuw i32, ptr %.val153.val, i64 %147 br label %149 -149: ; preds = %141, %144 +147: ; preds = %141, %144 %.sink245.in = phi ptr [ %143, %141 ], [ %148, %144 ] %.sink245 = load i32, ptr %.sink245.in, align 4, !tbaa !11 - %150 = sext i32 %.sink245 to i64 - %151 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val144.sink, i64 %150, i32 1 - %.sink = load i32, ptr %151, align 4, !tbaa !31 - %152 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val146, i64 %139, i32 1 - store i32 %.sink, ptr %152, align 4, !tbaa !31 + %148 = sext i32 %.sink245 to i64 + %149 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val144.sink, i64 %148, i32 1 + %.sink = load i32, ptr %149, align 4, !tbaa !31 + %150 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val146, i64 %139, i32 1 + store i32 %.sink, ptr %150, align 4, !tbaa !31 %indvars.iv.next226 = add nuw nsw i64 %indvars.iv225, 1 %exitcond229.not = icmp eq i64 %indvars.iv.next226, %wide.trip.count228 br i1 %exitcond229.not, label %.critedge6, label %.lr.ph208.split, !llvm.loop !329 -.critedge6: ; preds = %149, %.lr.ph208, %.critedge4 - %153 = load i32, ptr %19, align 8, !tbaa !36 - %154 = icmp sgt i32 %153, 0 - br i1 %154, label %.lr.ph211, label %.critedge8 +.critedge6: ; preds = %147, %.lr.ph208, %.critedge4 + %151 = load i32, ptr %19, align 8, !tbaa !36 + %152 = icmp sgt i32 %151, 0 + br i1 %152, label %.lr.ph211, label %.critedge8 .lr.ph211: ; preds = %.critedge6 - %155 = getelementptr i8, ptr %21, i64 32 - %156 = getelementptr inbounds nuw i8, ptr %21, i64 56 - br label %157 + %153 = getelementptr i8, ptr %21, i64 32 + %154 = getelementptr inbounds nuw i8, ptr %21, i64 56 + br label %155 -157: ; preds = %.lr.ph211, %218 +155: ; preds = %.lr.ph211, %216 %indvars.iv230 = phi i64 [ 0, %.lr.ph211 ], [ %indvars.iv.next231, %218 ] %.val136 = load ptr, ptr %25, align 8, !tbaa !12 - %158 = getelementptr inbounds nuw %struct.Gia_Obj_t_, ptr %.val136, i64 %indvars.iv230 + %156 = getelementptr inbounds nuw %struct.Gia_Obj_t_, ptr %.val136, i64 %indvars.iv230 %.not123 = icmp eq ptr %.val136, null - br i1 %.not123, label %.critedge8, label %159 - -159: ; preds = %157 - %.val163 = load i64, ptr %158, align 4 - %160 = and i64 %.val163, 2147483648 - %.not.i172 = icmp eq i64 %160, 0 - %161 = and i64 %.val163, 536870911 - %162 = icmp ne i64 %161, 536870911 - %narrow.i173 = and i1 %.not.i172, %162 - br i1 %narrow.i173, label %163, label %218 - -163: ; preds = %159 - %164 = trunc i64 %.val163 to i32 - %165 = and i32 %164, 536870911 - %166 = lshr i64 %.val163, 32 - %167 = trunc nuw i64 %166 to i32 - %168 = and i32 %167, 536870911 - %169 = icmp eq i32 %165, %168 - %.not.i174 = icmp ne i32 %165, 536870911 - %or.cond.not.i175 = and i1 %.not.i174, %169 - %170 = sub nsw i64 0, %161 - %171 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %158, i64 %170, i32 1 - %172 = load i32, ptr %171, align 4, !tbaa !31 - %173 = lshr i32 %164, 29 - br i1 %or.cond.not.i175, label %174, label %205 - -174: ; preds = %163 - %175 = xor i32 %172, %173 - %176 = tail call fastcc ptr @Gia_ManAppendObj(ptr noundef nonnull %21) - %.val11.i178 = load ptr, ptr %155, align 8, !tbaa !12 - %177 = ptrtoint ptr %176 to i64 - %178 = ptrtoint ptr %.val11.i178 to i64 - %179 = sub i64 %177, %178 - %180 = sdiv exact i64 %179, 12 - %181 = trunc i64 %180 to i32 - %182 = lshr i32 %172, 1 - %183 = sub i32 %181, %182 - %184 = load i64, ptr %176, align 4 - %185 = and i32 %183, 536870911 - %186 = zext nneg i32 %185 to i64 - %187 = shl nuw nsw i64 %186, 32 - %188 = and i64 %184, -4611686015206162432 - %189 = or disjoint i64 %187, %188 - %190 = and i32 %175, 1 - %191 = zext nneg i32 %190 to i64 - %192 = shl nuw nsw i64 %191, 61 - %193 = or disjoint i64 %189, %192 - %194 = shl nuw nsw i32 %190, 29 - %195 = zext nneg i32 %194 to i64 - %196 = or disjoint i64 %193, %195 - %197 = or disjoint i64 %196, %186 - store i64 %197, ptr %176, align 4 - %198 = load i32, ptr %156, align 8, !tbaa !100 - %199 = add nsw i32 %198, 1 - store i32 %199, ptr %156, align 8, !tbaa !100 - %.val.i179 = load ptr, ptr %155, align 8, !tbaa !12 - %200 = ptrtoint ptr %.val.i179 to i64 - %201 = sub i64 %177, %200 - %202 = sdiv exact i64 %201, 12 - %203 = trunc i64 %202 to i32 - %204 = shl i32 %203, 1 + br i1 %.not123, label %.critedge8, label %157 + +157: ; preds = %155 + %.val163 = load i64, ptr %156, align 4 + %158 = and i64 %.val163, 2147483648 + %.not.i172 = icmp eq i64 %158, 0 + %159 = and i64 %.val163, 536870911 + %160 = icmp ne i64 %159, 536870911 + %narrow.i173 = and i1 %.not.i172, %160 + br i1 %narrow.i173, label %161, label %216 + +161: ; preds = %157 + %162 = trunc i64 %.val163 to i32 + %163 = and i32 %162, 536870911 + %164 = lshr i64 %.val163, 32 + %165 = trunc nuw i64 %164 to i32 + %166 = and i32 %165, 536870911 + %167 = icmp eq i32 %163, %166 + %.not.i174 = icmp ne i32 %163, 536870911 + %or.cond.not.i175 = and i1 %.not.i174, %167 + %168 = sub nsw i64 0, %159 + %169 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %156, i64 %168, i32 1 + %170 = load i32, ptr %169, align 4, !tbaa !31 + %171 = lshr i32 %162, 29 + br i1 %or.cond.not.i175, label %172, label %203 + +172: ; preds = %161 + %173 = xor i32 %170, %171 + %174 = tail call fastcc ptr @Gia_ManAppendObj(ptr noundef nonnull %21) + %.val11.i178 = load ptr, ptr %153, align 8, !tbaa !12 + %175 = ptrtoint ptr %174 to i64 + %176 = ptrtoint ptr %.val11.i178 to i64 + %177 = sub i64 %175, %176 + %178 = sdiv exact i64 %177, 12 + %179 = trunc i64 %178 to i32 + %180 = lshr i32 %170, 1 + %181 = sub i32 %179, %180 + %182 = load i64, ptr %174, align 4 + %183 = and i32 %181, 536870911 + %184 = zext nneg i32 %183 to i64 + %185 = shl nuw nsw i64 %184, 32 + %186 = and i64 %182, -4611686015206162432 + %187 = or disjoint i64 %185, %186 + %188 = and i32 %173, 1 + %189 = zext nneg i32 %188 to i64 + %190 = shl nuw nsw i64 %189, 61 + %191 = or disjoint i64 %187, %190 + %192 = shl nuw nsw i32 %188, 29 + %193 = zext nneg i32 %192 to i64 + %194 = or disjoint i64 %191, %193 + %195 = or disjoint i64 %194, %184 + store i64 %195, ptr %174, align 4 + %196 = load i32, ptr %154, align 8, !tbaa !100 + %197 = add nsw i32 %196, 1 + store i32 %197, ptr %154, align 8, !tbaa !100 + %.val.i179 = load ptr, ptr %153, align 8, !tbaa !12 + %198 = ptrtoint ptr %.val.i179 to i64 + %199 = sub i64 %175, %198 + %200 = sdiv exact i64 %199, 12 + %201 = trunc i64 %200 to i32 + %202 = shl i32 %201, 1 br label %.sink.split246 -205: ; preds = %163 - %206 = and i32 %173, 1 - %207 = xor i32 %172, %206 - %208 = and i64 %166, 536870911 - %209 = sub nsw i64 0, %208 - %210 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %158, i64 %209, i32 1 - %211 = load i32, ptr %210, align 4, !tbaa !31 - %212 = lshr i64 %.val163, 61 - %213 = trunc nuw nsw i64 %212 to i32 - %214 = and i32 %213, 1 - %215 = xor i32 %211, %214 - %216 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef nonnull %21, i32 noundef %207, i32 noundef %215) +203: ; preds = %161 + %204 = and i32 %171, 1 + %205 = xor i32 %170, %204 + %206 = and i64 %164, 536870911 + %207 = sub nsw i64 0, %206 + %208 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %156, i64 %207, i32 1 + %209 = load i32, ptr %208, align 4, !tbaa !31 + %210 = lshr i64 %.val163, 61 + %211 = trunc nuw nsw i64 %210 to i32 + %212 = and i32 %211, 1 + %213 = xor i32 %209, %212 + %214 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef nonnull %21, i32 noundef %205, i32 noundef %213) br label %.sink.split246 -.sink.split246: ; preds = %174, %205 - %.sink247 = phi i32 [ %216, %205 ], [ %204, %174 ] - %217 = getelementptr inbounds nuw i8, ptr %158, i64 8 - store i32 %.sink247, ptr %217, align 4, !tbaa !31 - br label %218 +.sink.split246: ; preds = %172, %203 + %.sink247 = phi i32 [ %214, %205 ], [ %202, %174 ] + %215 = getelementptr inbounds nuw i8, ptr %156, i64 8 + store i32 %.sink247, ptr %215, align 4, !tbaa !31 + br label %216 -218: ; preds = %.sink.split246, %159 +216: ; preds = %.sink.split246, %157 %indvars.iv.next231 = add nuw nsw i64 %indvars.iv230, 1 - %219 = load i32, ptr %19, align 8, !tbaa !36 - %220 = sext i32 %219 to i64 - %221 = icmp slt i64 %indvars.iv.next231, %220 - br i1 %221, label %157, label %.critedge8, !llvm.loop !330 - -.critedge8: ; preds = %157, %218, %.critedge6 - %222 = load ptr, ptr %12, align 8, !tbaa !47 - %223 = getelementptr i8, ptr %222, i64 4 - %.val213 = load i32, ptr %223, align 4, !tbaa !3 - %224 = icmp sgt i32 %.val213, 0 - br i1 %224, label %.lr.ph215, label %.critedge10 + %217 = load i32, ptr %19, align 8, !tbaa !36 + %218 = sext i32 %217 to i64 + %219 = icmp slt i64 %indvars.iv.next231, %218 + br i1 %219, label %155, label %.critedge8, !llvm.loop !330 + +.critedge8: ; preds = %155, %216, %.critedge6 + %220 = load ptr, ptr %12, align 8, !tbaa !47 + %221 = getelementptr i8, ptr %220, i64 4 + %.val213 = load i32, ptr %221, align 4, !tbaa !3 + %222 = icmp sgt i32 %.val213, 0 + br i1 %222, label %.lr.ph215, label %.critedge10 .lr.ph215: ; preds = %.critedge8 %.not126 = icmp eq i32 %2, 0 - %225 = sext i32 %9 to i64 + %223 = sext i32 %9 to i64 br i1 %.not126, label %.lr.ph215.split.us, label %.lr.ph215.split -.lr.ph215.split.us: ; preds = %.lr.ph215, %227 +.lr.ph215.split.us: ; preds = %.lr.ph215, %225 %indvars.iv236 = phi i64 [ %indvars.iv.next237, %227 ], [ 0, %.lr.ph215 ] - %226 = phi ptr [ %251, %227 ], [ %222, %.lr.ph215 ] + %224 = phi ptr [ %249, %227 ], [ %220, %.lr.ph215 ] %.val150.us = load ptr, ptr %25, align 8, !tbaa !12 %.not124.us = icmp eq ptr %.val150.us, null - br i1 %.not124.us, label %.critedge10, label %227 - -227: ; preds = %.lr.ph215.split.us - %228 = getelementptr i8, ptr %226, i64 8 - %.val151.val.us = load ptr, ptr %228, align 8, !tbaa !10 - %229 = getelementptr inbounds nuw i32, ptr %.val151.val.us, i64 %indvars.iv236 - %230 = load i32, ptr %229, align 4, !tbaa !11 - %231 = sext i32 %230 to i64 - %232 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val150.us, i64 %231 - %233 = load i64, ptr %232, align 4 - %234 = and i64 %233, 536870911 - %235 = sub nsw i64 0, %234 - %236 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %232, i64 %235, i32 1 - %237 = load i32, ptr %236, align 4, !tbaa !31 - %238 = trunc i64 %233 to i32 - %239 = lshr i32 %238, 29 - %240 = and i32 %239, 1 - %241 = xor i32 %240, %237 + br i1 %.not124.us, label %.critedge10, label %225 + +225: ; preds = %.lr.ph215.split.us + %226 = getelementptr i8, ptr %224, i64 8 + %.val151.val.us = load ptr, ptr %226, align 8, !tbaa !10 + %227 = getelementptr inbounds nuw i32, ptr %.val151.val.us, i64 %indvars.iv236 + %228 = load i32, ptr %227, align 4, !tbaa !11 + %229 = sext i32 %228 to i64 + %230 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val150.us, i64 %229 + %231 = load i64, ptr %230, align 4 + %232 = and i64 %231, 536870911 + %233 = sub nsw i64 0, %232 + %234 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %230, i64 %233, i32 1 + %235 = load i32, ptr %234, align 4, !tbaa !31 + %236 = trunc i64 %231 to i32 + %237 = lshr i32 %236, 29 + %238 = and i32 %237, 1 + %239 = xor i32 %238, %235 %.val140.us = load ptr, ptr %23, align 8, !tbaa !12 %.val141.us = load ptr, ptr %10, align 8, !tbaa !45 - %242 = getelementptr i8, ptr %.val141.us, i64 8 - %.val141.val.us = load ptr, ptr %242, align 8, !tbaa !10 - %243 = getelementptr i32, ptr %.val141.val.us, i64 %indvars.iv236 - %244 = getelementptr i32, ptr %243, i64 %225 - %245 = load i32, ptr %244, align 4, !tbaa !11 - %246 = sext i32 %245 to i64 - %247 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val140.us, i64 %246, i32 1 - %248 = load i32, ptr %247, align 4, !tbaa !31 - %249 = tail call i32 @Gia_ManHashXor(ptr noundef nonnull %21, i32 noundef %241, i32 noundef %248) #31 - %250 = tail call fastcc i32 @Gia_ManAppendCo(ptr noundef nonnull %21, i32 noundef %249) + %240 = getelementptr i8, ptr %.val141.us, i64 8 + %.val141.val.us = load ptr, ptr %240, align 8, !tbaa !10 + %241 = getelementptr i32, ptr %.val141.val.us, i64 %indvars.iv236 + %242 = getelementptr i32, ptr %241, i64 %223 + %243 = load i32, ptr %242, align 4, !tbaa !11 + %244 = sext i32 %243 to i64 + %245 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val140.us, i64 %244, i32 1 + %246 = load i32, ptr %245, align 4, !tbaa !31 + %247 = tail call i32 @Gia_ManHashXor(ptr noundef nonnull %21, i32 noundef %239, i32 noundef %246) #31 + %248 = tail call fastcc i32 @Gia_ManAppendCo(ptr noundef nonnull %21, i32 noundef %247) %indvars.iv.next237 = add nuw nsw i64 %indvars.iv236, 1 - %251 = load ptr, ptr %12, align 8, !tbaa !47 - %252 = getelementptr i8, ptr %251, i64 4 - %.val.us = load i32, ptr %252, align 4, !tbaa !3 - %253 = sext i32 %.val.us to i64 - %254 = icmp slt i64 %indvars.iv.next237, %253 - br i1 %254, label %.lr.ph215.split.us, label %.critedge10, !llvm.loop !331 - -.lr.ph215.split: ; preds = %.lr.ph215, %256 + %249 = load ptr, ptr %12, align 8, !tbaa !47 + %250 = getelementptr i8, ptr %249, i64 4 + %.val.us = load i32, ptr %250, align 4, !tbaa !3 + %251 = sext i32 %.val.us to i64 + %252 = icmp slt i64 %indvars.iv.next237, %251 + br i1 %252, label %.lr.ph215.split.us, label %.critedge10, !llvm.loop !331 + +.lr.ph215.split: ; preds = %.lr.ph215, %254 %indvars.iv233 = phi i64 [ %indvars.iv.next234, %256 ], [ 0, %.lr.ph215 ] - %255 = phi ptr [ %280, %256 ], [ %222, %.lr.ph215 ] + %253 = phi ptr [ %278, %256 ], [ %220, %.lr.ph215 ] %.val150 = load ptr, ptr %25, align 8, !tbaa !12 %.not124 = icmp eq ptr %.val150, null - br i1 %.not124, label %.critedge10, label %256 - -256: ; preds = %.lr.ph215.split - %257 = getelementptr i8, ptr %255, i64 8 - %.val151.val = load ptr, ptr %257, align 8, !tbaa !10 - %258 = getelementptr inbounds nuw i32, ptr %.val151.val, i64 %indvars.iv233 - %259 = load i32, ptr %258, align 4, !tbaa !11 - %260 = sext i32 %259 to i64 - %261 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val150, i64 %260 - %262 = load i64, ptr %261, align 4 - %263 = and i64 %262, 536870911 - %264 = sub nsw i64 0, %263 - %265 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %261, i64 %264, i32 1 - %266 = load i32, ptr %265, align 4, !tbaa !31 - %267 = trunc i64 %262 to i32 - %268 = lshr i32 %267, 29 - %269 = and i32 %268, 1 - %270 = xor i32 %269, %266 - %271 = tail call fastcc i32 @Gia_ManAppendCo(ptr noundef nonnull %21, i32 noundef %270) + br i1 %.not124, label %.critedge10, label %254 + +254: ; preds = %.lr.ph215.split + %255 = getelementptr i8, ptr %253, i64 8 + %.val151.val = load ptr, ptr %255, align 8, !tbaa !10 + %256 = getelementptr inbounds nuw i32, ptr %.val151.val, i64 %indvars.iv233 + %257 = load i32, ptr %256, align 4, !tbaa !11 + %258 = sext i32 %257 to i64 + %259 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val150, i64 %258 + %260 = load i64, ptr %259, align 4 + %261 = and i64 %260, 536870911 + %262 = sub nsw i64 0, %261 + %263 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %259, i64 %262, i32 1 + %264 = load i32, ptr %263, align 4, !tbaa !31 + %265 = trunc i64 %260 to i32 + %266 = lshr i32 %265, 29 + %267 = and i32 %266, 1 + %268 = xor i32 %267, %264 + %269 = tail call fastcc i32 @Gia_ManAppendCo(ptr noundef nonnull %21, i32 noundef %268) %.val142 = load ptr, ptr %23, align 8, !tbaa !12 %.val143 = load ptr, ptr %10, align 8, !tbaa !45 - %272 = getelementptr i8, ptr %.val143, i64 8 - %.val143.val = load ptr, ptr %272, align 8, !tbaa !10 - %273 = getelementptr i32, ptr %.val143.val, i64 %indvars.iv233 - %274 = getelementptr i32, ptr %273, i64 %225 - %275 = load i32, ptr %274, align 4, !tbaa !11 - %276 = sext i32 %275 to i64 - %277 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val142, i64 %276, i32 1 - %278 = load i32, ptr %277, align 4, !tbaa !31 - %279 = tail call fastcc i32 @Gia_ManAppendCo(ptr noundef nonnull %21, i32 noundef %278) + %270 = getelementptr i8, ptr %.val143, i64 8 + %.val143.val = load ptr, ptr %270, align 8, !tbaa !10 + %271 = getelementptr i32, ptr %.val143.val, i64 %indvars.iv233 + %272 = getelementptr i32, ptr %271, i64 %223 + %273 = load i32, ptr %272, align 4, !tbaa !11 + %274 = sext i32 %273 to i64 + %275 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val142, i64 %274, i32 1 + %276 = load i32, ptr %275, align 4, !tbaa !31 + %277 = tail call fastcc i32 @Gia_ManAppendCo(ptr noundef nonnull %21, i32 noundef %276) %indvars.iv.next234 = add nuw nsw i64 %indvars.iv233, 1 - %280 = load ptr, ptr %12, align 8, !tbaa !47 - %281 = getelementptr i8, ptr %280, i64 4 - %.val = load i32, ptr %281, align 4, !tbaa !3 - %282 = sext i32 %.val to i64 - %283 = icmp slt i64 %indvars.iv.next234, %282 - br i1 %283, label %.lr.ph215.split, label %.critedge10, !llvm.loop !331 - -.critedge10: ; preds = %.lr.ph215.split, %256, %.lr.ph215.split.us, %227, %.critedge8 + %278 = load ptr, ptr %12, align 8, !tbaa !47 + %279 = getelementptr i8, ptr %278, i64 4 + %.val = load i32, ptr %279, align 4, !tbaa !3 + %280 = sext i32 %.val to i64 + %281 = icmp slt i64 %indvars.iv.next234, %280 + br i1 %281, label %.lr.ph215.split, label %.critedge10, !llvm.loop !331 + +.critedge10: ; preds = %.lr.ph215.split, %254, %.lr.ph215.split.us, %225, %.critedge8 tail call void @Gia_ManHashStop(ptr noundef nonnull %21) #31 - %284 = tail call ptr @Gia_ManCleanup(ptr noundef nonnull %21) #31 + %282 = tail call ptr @Gia_ManCleanup(ptr noundef nonnull %21) #31 tail call void @Gia_ManStop(ptr noundef nonnull %21) #31 - %285 = getelementptr inbounds nuw i8, ptr %0, i64 496 - %286 = load ptr, ptr %285, align 8, !tbaa !332 - %.not125 = icmp eq ptr %286, null - br i1 %.not125, label %Vec_IntAppend.exit196, label %287 - -287: ; preds = %.critedge10 - %288 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #29 - %289 = getelementptr inbounds nuw i8, ptr %288, i64 4 - store i32 0, ptr %289, align 4, !tbaa !3 - store i32 1000, ptr %288, align 8, !tbaa !39 - %290 = tail call noalias dereferenceable_or_null(4000) ptr @malloc(i64 noundef 4000) #29 - %291 = getelementptr inbounds nuw i8, ptr %288, i64 8 - store ptr %290, ptr %291, align 8, !tbaa !10 - %292 = getelementptr inbounds nuw i8, ptr %284, i64 496 - store ptr %288, ptr %292, align 8, !tbaa !332 - %293 = load ptr, ptr %285, align 8, !tbaa !332 - %294 = getelementptr i8, ptr %293, i64 4 - %.val7.i = load i32, ptr %294, align 4, !tbaa !3 - %295 = icmp sgt i32 %.val7.i, 0 - br i1 %295, label %.lr.ph.i, label %Vec_IntAppend.exit - -.lr.ph.i: ; preds = %287 - %296 = getelementptr i8, ptr %293, i64 8 + %283 = getelementptr inbounds nuw i8, ptr %0, i64 496 + %284 = load ptr, ptr %283, align 8, !tbaa !332 + %.not125 = icmp eq ptr %284, null + br i1 %.not125, label %Vec_IntAppend.exit196, label %285 + +285: ; preds = %.critedge10 + %286 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #29 + %287 = getelementptr inbounds nuw i8, ptr %286, i64 4 + store i32 0, ptr %287, align 4, !tbaa !3 + store i32 1000, ptr %286, align 8, !tbaa !39 + %288 = tail call noalias dereferenceable_or_null(4000) ptr @malloc(i64 noundef 4000) #29 + %289 = getelementptr inbounds nuw i8, ptr %286, i64 8 + store ptr %288, ptr %289, align 8, !tbaa !10 + %290 = getelementptr inbounds nuw i8, ptr %282, i64 496 + store ptr %286, ptr %290, align 8, !tbaa !332 + %291 = load ptr, ptr %283, align 8, !tbaa !332 + %292 = getelementptr i8, ptr %291, i64 4 + %.val7.i = load i32, ptr %292, align 4, !tbaa !3 + %293 = icmp sgt i32 %.val7.i, 0 + br i1 %293, label %.lr.ph.i, label %Vec_IntAppend.exit + +.lr.ph.i: ; preds = %285 + %294 = getelementptr i8, ptr %291, i64 8 br label %297 -297: ; preds = %Vec_IntPush.exit.i, %.lr.ph.i +305: ; preds = %Vec_IntPush.exit.i, %.lr.ph.i %298 = phi ptr [ %290, %.lr.ph.i ], [ %.pre.i.i240, %Vec_IntPush.exit.i ] %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %Vec_IntPush.exit.i ] %.val6.i = load ptr, ptr %296, align 8, !tbaa !10 @@ -20356,82 +20356,82 @@ define ptr @Gia_ManMiterInverse(ptr noundef %0, ptr noundef %1, i32 noundef %2, %308 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %298, i64 noundef 64) #30 br label %Vec_IntPush.exit.i.sink.split -309: ; preds = %306 - %310 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #29 +307: ; preds = %306 + %308 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #29 br label %Vec_IntPush.exit.i.sink.split -311: ; preds = %304 - %312 = shl nuw nsw i32 %301, 1 +309: ; preds = %304 + %310 = shl nuw nsw i32 %301, 1 %.not9.i9.i.i = icmp eq ptr %298, null - %313 = zext nneg i32 %312 to i64 - %314 = shl nuw nsw i64 %313, 2 - br i1 %.not9.i9.i.i, label %317, label %315 + %311 = zext nneg i32 %310 to i64 + %312 = shl nuw nsw i64 %311, 2 + br i1 %.not9.i9.i.i, label %315, label %313 -315: ; preds = %311 - %316 = tail call ptr @realloc(ptr noundef nonnull %298, i64 noundef %314) #30 +313: ; preds = %309 + %314 = tail call ptr @realloc(ptr noundef nonnull %298, i64 noundef %312) #30 br label %Vec_IntPush.exit.i.sink.split -317: ; preds = %311 - %318 = tail call noalias ptr @malloc(i64 noundef %314) #29 +315: ; preds = %309 + %316 = tail call noalias ptr @malloc(i64 noundef %312) #29 br label %Vec_IntPush.exit.i.sink.split -Vec_IntPush.exit.i.sink.split: ; preds = %315, %317, %307, %309 +Vec_IntPush.exit.i.sink.split: ; preds = %313, %315, %307, %307 %.sink250 = phi ptr [ %308, %307 ], [ %310, %309 ], [ %316, %315 ], [ %318, %317 ] %.sink249 = phi i32 [ 16, %307 ], [ 16, %309 ], [ %312, %315 ], [ %312, %317 ] - store ptr %.sink250, ptr %291, align 8, !tbaa !10 - store i32 %.sink249, ptr %288, align 8, !tbaa !39 + store ptr %.sink250, ptr %289, align 8, !tbaa !10 + store i32 %.sink249, ptr %286, align 8, !tbaa !39 br label %Vec_IntPush.exit.i Vec_IntPush.exit.i: ; preds = %Vec_IntPush.exit.i.sink.split, %297 %.pre.i.i240 = phi ptr [ %298, %297 ], [ %.sink250, %Vec_IntPush.exit.i.sink.split ] - %319 = load i32, ptr %289, align 4, !tbaa !3 - %320 = add nsw i32 %319, 1 - store i32 %320, ptr %289, align 4, !tbaa !3 - %321 = sext i32 %319 to i64 - %322 = getelementptr inbounds i32, ptr %.pre.i.i240, i64 %321 - store i32 %300, ptr %322, align 4, !tbaa !11 + %317 = load i32, ptr %287, align 4, !tbaa !3 + %318 = add nsw i32 %317, 1 + store i32 %318, ptr %287, align 4, !tbaa !3 + %319 = sext i32 %317 to i64 + %320 = getelementptr inbounds i32, ptr %.pre.i.i240, i64 %319 + store i32 %300, ptr %320, align 4, !tbaa !11 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %.val.i182 = load i32, ptr %294, align 4, !tbaa !3 - %323 = sext i32 %.val.i182 to i64 - %324 = icmp slt i64 %indvars.iv.next.i, %323 - br i1 %324, label %297, label %Vec_IntAppend.exit.loopexit, !llvm.loop !333 + %.val.i182 = load i32, ptr %292, align 4, !tbaa !3 + %321 = sext i32 %.val.i182 to i64 + %322 = icmp slt i64 %indvars.iv.next.i, %321 + br i1 %322, label %297, label %Vec_IntAppend.exit.loopexit, !llvm.loop !333 Vec_IntAppend.exit.loopexit: ; preds = %Vec_IntPush.exit.i - %.pre = load ptr, ptr %292, align 8, !tbaa !332 + %.pre = load ptr, ptr %290, align 8, !tbaa !332 br label %Vec_IntAppend.exit -Vec_IntAppend.exit: ; preds = %Vec_IntAppend.exit.loopexit, %287 - %325 = phi ptr [ %.pre, %Vec_IntAppend.exit.loopexit ], [ %288, %287 ] - %326 = getelementptr inbounds nuw i8, ptr %1, i64 496 - %327 = load ptr, ptr %326, align 8, !tbaa !332 - %328 = getelementptr i8, ptr %327, i64 4 - %.val7.i183 = load i32, ptr %328, align 4, !tbaa !3 - %329 = icmp sgt i32 %.val7.i183, 0 - br i1 %329, label %.lr.ph.i184, label %Vec_IntAppend.exit196 +Vec_IntAppend.exit: ; preds = %Vec_IntAppend.exit.loopexit, %285 + %323 = phi ptr [ %.pre, %Vec_IntAppend.exit.loopexit ], [ %286, %287 ] + %324 = getelementptr inbounds nuw i8, ptr %1, i64 496 + %325 = load ptr, ptr %324, align 8, !tbaa !332 + %326 = getelementptr i8, ptr %325, i64 4 + %.val7.i183 = load i32, ptr %326, align 4, !tbaa !3 + %327 = icmp sgt i32 %.val7.i183, 0 + br i1 %327, label %.lr.ph.i184, label %Vec_IntAppend.exit196 .lr.ph.i184: ; preds = %Vec_IntAppend.exit - %330 = getelementptr i8, ptr %327, i64 8 - %331 = getelementptr inbounds nuw i8, ptr %325, i64 4 - %.phi.trans.insert.i.i185 = getelementptr inbounds nuw i8, ptr %325, i64 8 - br label %332 + %328 = getelementptr i8, ptr %325, i64 8 + %329 = getelementptr inbounds nuw i8, ptr %323, i64 4 + %.phi.trans.insert.i.i185 = getelementptr inbounds nuw i8, ptr %323, i64 8 + br label %330 -332: ; preds = %Vec_IntPush.exit.i190, %.lr.ph.i184 +330: ; preds = %Vec_IntPush.exit.i190, %.lr.ph.i184 %indvars.iv.i186 = phi i64 [ 0, %.lr.ph.i184 ], [ %indvars.iv.next.i191, %Vec_IntPush.exit.i190 ] - %.val6.i187 = load ptr, ptr %330, align 8, !tbaa !10 - %333 = getelementptr inbounds nuw i32, ptr %.val6.i187, i64 %indvars.iv.i186 - %334 = load i32, ptr %333, align 4, !tbaa !11 - %335 = load i32, ptr %331, align 4, !tbaa !3 - %336 = load i32, ptr %325, align 8, !tbaa !39 - %337 = icmp eq i32 %335, %336 - br i1 %337, label %338, label %.Vec_IntGrow.exit10_crit_edge.i.i188 - -.Vec_IntGrow.exit10_crit_edge.i.i188: ; preds = %332 + %.val6.i187 = load ptr, ptr %328, align 8, !tbaa !10 + %331 = getelementptr inbounds nuw i32, ptr %.val6.i187, i64 %indvars.iv.i186 + %332 = load i32, ptr %331, align 4, !tbaa !11 + %333 = load i32, ptr %329, align 4, !tbaa !3 + %334 = load i32, ptr %323, align 8, !tbaa !39 + %335 = icmp eq i32 %333, %334 + br i1 %335, label %336, label %.Vec_IntGrow.exit10_crit_edge.i.i188 + +.Vec_IntGrow.exit10_crit_edge.i.i188: ; preds = %330 %.pre.i.i189 = load ptr, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 br label %Vec_IntPush.exit.i190 -338: ; preds = %332 - %339 = icmp slt i32 %335, 16 - br i1 %339, label %340, label %347 +336: ; preds = %330 + %337 = icmp slt i32 %333, 16 + br i1 %337, label %340, label %345 340: ; preds = %338 %341 = load ptr, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 @@ -20442,54 +20442,54 @@ Vec_IntAppend.exit: ; preds = %Vec_IntAppend.exit. %343 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %341, i64 noundef 64) #30 br label %Vec_IntGrow.exit.i.i195 -344: ; preds = %340 - %345 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #29 +342: ; preds = %340 + %343 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #29 br label %Vec_IntGrow.exit.i.i195 -Vec_IntGrow.exit.i.i195: ; preds = %344, %342 - %346 = phi ptr [ %343, %342 ], [ %345, %344 ] - store ptr %346, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 - store i32 16, ptr %325, align 8, !tbaa !39 +Vec_IntGrow.exit.i.i195: ; preds = %342, %342 + %344 = phi ptr [ %343, %342 ], [ %343, %344 ] + store ptr %344, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 + store i32 16, ptr %323, align 8, !tbaa !39 br label %Vec_IntPush.exit.i190 -347: ; preds = %338 - %348 = shl nuw nsw i32 %335, 1 - %349 = load ptr, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 - %.not9.i9.i.i193 = icmp eq ptr %349, null - %350 = zext nneg i32 %348 to i64 - %351 = shl nuw nsw i64 %350, 2 - br i1 %.not9.i9.i.i193, label %354, label %352 - -352: ; preds = %347 - %353 = tail call ptr @realloc(ptr noundef nonnull %349, i64 noundef %351) #30 - br label %356 - -354: ; preds = %347 - %355 = tail call noalias ptr @malloc(i64 noundef %351) #29 - br label %356 - -356: ; preds = %354, %352 - %357 = phi ptr [ %353, %352 ], [ %355, %354 ] - store ptr %357, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 - store i32 %348, ptr %325, align 8, !tbaa !39 +345: ; preds = %336 + %346 = shl nuw nsw i32 %333, 1 + %347 = load ptr, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 + %.not9.i9.i.i193 = icmp eq ptr %347, null + %348 = zext nneg i32 %346 to i64 + %349 = shl nuw nsw i64 %348, 2 + br i1 %.not9.i9.i.i193, label %352, label %350 + +350: ; preds = %345 + %351 = tail call ptr @realloc(ptr noundef nonnull %347, i64 noundef %349) #30 + br label %354 + +352: ; preds = %345 + %353 = tail call noalias ptr @malloc(i64 noundef %349) #29 + br label %354 + +354: ; preds = %352, %350 + %355 = phi ptr [ %351, %352 ], [ %353, %354 ] + store ptr %355, ptr %.phi.trans.insert.i.i185, align 8, !tbaa !10 + store i32 %346, ptr %323, align 8, !tbaa !39 br label %Vec_IntPush.exit.i190 -Vec_IntPush.exit.i190: ; preds = %356, %Vec_IntGrow.exit.i.i195, %.Vec_IntGrow.exit10_crit_edge.i.i188 - %358 = phi ptr [ %.pre.i.i189, %.Vec_IntGrow.exit10_crit_edge.i.i188 ], [ %357, %356 ], [ %346, %Vec_IntGrow.exit.i.i195 ] - %359 = load i32, ptr %331, align 4, !tbaa !3 - %360 = add nsw i32 %359, 1 - store i32 %360, ptr %331, align 4, !tbaa !3 - %361 = sext i32 %359 to i64 - %362 = getelementptr inbounds i32, ptr %358, i64 %361 - store i32 %334, ptr %362, align 4, !tbaa !11 +Vec_IntPush.exit.i190: ; preds = %354, %Vec_IntGrow.exit.i.i195, %.Vec_IntGrow.exit10_crit_edge.i.i188 + %356 = phi ptr [ %.pre.i.i189, %.Vec_IntGrow.exit10_crit_edge.i.i188 ], [ %355, %356 ], [ %344, %Vec_IntGrow.exit.i.i195 ] + %357 = load i32, ptr %329, align 4, !tbaa !3 + %358 = add nsw i32 %357, 1 + store i32 %358, ptr %329, align 4, !tbaa !3 + %359 = sext i32 %357 to i64 + %360 = getelementptr inbounds i32, ptr %356, i64 %359 + store i32 %332, ptr %360, align 4, !tbaa !11 %indvars.iv.next.i191 = add nuw nsw i64 %indvars.iv.i186, 1 - %.val.i192 = load i32, ptr %328, align 4, !tbaa !3 - %363 = sext i32 %.val.i192 to i64 - %364 = icmp slt i64 %indvars.iv.next.i191, %363 - br i1 %364, label %332, label %Vec_IntAppend.exit196, !llvm.loop !333 + %.val.i192 = load i32, ptr %326, align 4, !tbaa !3 + %361 = sext i32 %.val.i192 to i64 + %362 = icmp slt i64 %indvars.iv.next.i191, %361 + br i1 %362, label %330, label %Vec_IntAppend.exit196, !llvm.loop !333 Vec_IntAppend.exit196: ; preds = %Vec_IntPush.exit.i190, %Vec_IntAppend.exit, %.critedge10, %30 - %.0 = phi ptr [ null, %30 ], [ %284, %.critedge10 ], [ %284, %Vec_IntAppend.exit ], [ %284, %Vec_IntPush.exit.i190 ] + %.0 = phi ptr [ null, %30 ], [ %282, %.critedge10 ], [ %282, %Vec_IntAppend.exit ], [ %282, %Vec_IntPush.exit.i190 ] ret ptr %.0 } diff --git a/bench/abc/optimized/giaIf.ll b/bench/abc/optimized/giaIf.ll index 09deadd3be4..2cc9c89f3b5 100644 --- a/bench/abc/optimized/giaIf.ll +++ b/bench/abc/optimized/giaIf.ll @@ -4671,7 +4671,7 @@ define i32 @Gia_ManBuildFromMiniInt(ptr noundef %0, ptr noundef readonly capture %7 = getelementptr i8, ptr %2, i64 8 %.val69 = load ptr, ptr %7, align 8, !tbaa !47 %8 = load i32, ptr %.val69, align 4, !tbaa !48 - br label %104 + br label %96 9: ; preds = %4 %10 = getelementptr i8, ptr %1, i64 8 @@ -4684,7 +4684,7 @@ define i32 @Gia_ManBuildFromMiniInt(ptr noundef %0, ptr noundef readonly capture %15 = icmp sgt i32 %14, 0 %16 = zext i1 %15 to i32 %17 = xor i32 %11, %16 - br label %104 + br label %96 18: ; preds = %4 %19 = getelementptr i8, ptr %1, i64 4 @@ -4703,7 +4703,7 @@ define i32 @Gia_ManBuildFromMiniInt(ptr noundef %0, ptr noundef readonly capture %.val66.us.pre = load ptr, ptr %21, align 8, !tbaa !47 br i1 %.not, label %.lr.ph.split.us, label %.lr.ph.split -.lr.ph.split.us: ; preds = %.lr.ph, %56 +.lr.ph.split.us: ; preds = %.lr.ph, %52 %.val74.us89 = phi ptr [ %.val74.us, %56 ], [ %.val66.us.pre, %.lr.ph ] %indvars.iv84 = phi i64 [ %indvars.iv.next85, %56 ], [ 0, %.lr.ph ] %23 = getelementptr inbounds nuw i32, ptr %.val74.us89, i64 %indvars.iv84 @@ -4713,7 +4713,7 @@ define i32 @Gia_ManBuildFromMiniInt(ptr noundef %0, ptr noundef readonly capture %27 = ashr i32 %24, 1 %28 = ashr i32 %26, 1 %29 = icmp slt i32 %27, %.val71 - br i1 %29, label %34, label %30 + br i1 %29, label %32, label %30 30: ; preds = %.lr.ph.split.us %31 = sub nsw i32 %27, %.val71 @@ -4721,13 +4721,13 @@ define i32 @Gia_ManBuildFromMiniInt(ptr noundef %0, ptr noundef readonly capture %33 = getelementptr inbounds nuw i32, ptr %.val74.us89, i64 %32 br label %37 -34: ; preds = %.lr.ph.split.us +32: ; preds = %.lr.ph.split.us %.val64.us = load ptr, ptr %22, align 8, !tbaa !47 %35 = sext i32 %27 to i64 %36 = getelementptr inbounds i32, ptr %.val64.us, i64 %35 br label %37 -37: ; preds = %34, %30 +42: ; preds = %34, %30 %.in.us = phi ptr [ %36, %34 ], [ %33, %30 ] %38 = load i32, ptr %.in.us, align 4, !tbaa !48 %39 = and i32 %24, 1 @@ -4735,13 +4735,13 @@ define i32 @Gia_ManBuildFromMiniInt(ptr noundef %0, ptr noundef readonly capture %41 = icmp slt i32 %28, %.val71 br i1 %41, label %46, label %42 -42: ; preds = %37 +43: ; preds = %42 %43 = sub nsw i32 %28, %.val71 %44 = zext nneg i32 %43 to i64 %45 = getelementptr inbounds nuw i32, ptr %.val74.us89, i64 %44 br label %49 -46: ; preds = %37 +50: ; preds = %37 %.val62.us = load ptr, ptr %22, align 8, !tbaa !47 %47 = sext i32 %28 to i64 %48 = getelementptr inbounds i32, ptr %.val62.us, i64 %47 @@ -4758,97 +4758,97 @@ define i32 @Gia_ManBuildFromMiniInt(ptr noundef %0, ptr noundef readonly capture 54: ; preds = %49 %55 = tail call fastcc i32 @Gia_ManAppendAnd(ptr noundef %0, i32 noundef %40, i32 noundef %52) %.val74.us.pre = load ptr, ptr %21, align 8, !tbaa !47 - br label %56 + br label %52 -56: ; preds = %54, %49 +52: ; preds = %54, %49 %.val74.us = phi ptr [ %.val74.us.pre, %54 ], [ %.val74.us89, %49 ] %.1.us = phi i32 [ %55, %54 ], [ %40, %49 ] - %57 = lshr exact i64 %indvars.iv84, 1 - %58 = getelementptr inbounds nuw i32, ptr %.val74.us, i64 %57 - store i32 %.1.us, ptr %58, align 4, !tbaa !48 + %53 = lshr exact i64 %indvars.iv84, 1 + %54 = getelementptr inbounds nuw i32, ptr %.val74.us, i64 %53 + store i32 %.1.us, ptr %54, align 4, !tbaa !48 %indvars.iv.next85 = add nuw nsw i64 %indvars.iv84, 2 %.val70.us = load i32, ptr %5, align 4, !tbaa !54 - %59 = trunc i64 %indvars.iv.next85 to i32 - %60 = or disjoint i32 %59, 1 - %61 = icmp slt i32 %60, %.val70.us - br i1 %61, label %.lr.ph.split.us, label %.critedge, !llvm.loop !144 + %55 = trunc i64 %indvars.iv.next85 to i32 + %56 = or disjoint i32 %55, 1 + %57 = icmp slt i32 %56, %.val70.us + br i1 %57, label %.lr.ph.split.us, label %.critedge, !llvm.loop !144 -.lr.ph.split: ; preds = %.lr.ph, %88 +.lr.ph.split: ; preds = %.lr.ph, %78 %.val66 = phi ptr [ %.val74, %88 ], [ %.val66.us.pre, %.lr.ph ] %indvars.iv = phi i64 [ %indvars.iv.next, %88 ], [ 0, %.lr.ph ] - %62 = getelementptr inbounds nuw i32, ptr %.val66, i64 %indvars.iv - %63 = load i32, ptr %62, align 4, !tbaa !48 - %64 = getelementptr inbounds nuw i8, ptr %62, i64 4 - %65 = load i32, ptr %64, align 4, !tbaa !48 - %66 = ashr i32 %63, 1 - %67 = ashr i32 %65, 1 - %68 = icmp slt i32 %66, %.val71 - br i1 %68, label %69, label %72 - -69: ; preds = %.lr.ph.split + %58 = getelementptr inbounds nuw i32, ptr %.val66, i64 %indvars.iv + %59 = load i32, ptr %58, align 4, !tbaa !48 + %60 = getelementptr inbounds nuw i8, ptr %58, i64 4 + %61 = load i32, ptr %60, align 4, !tbaa !48 + %62 = ashr i32 %59, 1 + %63 = ashr i32 %61, 1 + %64 = icmp slt i32 %62, %.val71 + br i1 %64, label %65, label %66 + +65: ; preds = %.lr.ph.split %.val64 = load ptr, ptr %22, align 8, !tbaa !47 %70 = sext i32 %66 to i64 %71 = getelementptr inbounds i32, ptr %.val64, i64 %70 br label %76 -72: ; preds = %.lr.ph.split - %73 = sub nsw i32 %66, %.val71 - %74 = zext nneg i32 %73 to i64 +66: ; preds = %.lr.ph.split + %67 = sub nsw i32 %62, %.val71 + %74 = zext nneg i32 %67 to i64 %75 = getelementptr inbounds nuw i32, ptr %.val66, i64 %74 br label %76 -76: ; preds = %72, %69 - %.in = phi ptr [ %71, %69 ], [ %75, %72 ] +68: ; preds = %66, %65 + %.sink95 = phi ptr [ %71, %69 ], [ %75, %72 ] %77 = load i32, ptr %.in, align 4, !tbaa !48 - %78 = and i32 %63, 1 + %78 = and i32 %59, 1 %79 = xor i32 %77, %78 %80 = icmp slt i32 %67, %.val71 br i1 %80, label %81, label %84 -81: ; preds = %76 +81:; preds = %76 %.val62 = load ptr, ptr %22, align 8, !tbaa !47 %82 = sext i32 %67 to i64 %83 = getelementptr inbounds i32, ptr %.val62, i64 %82 br label %88 -84: ; preds = %76 - %85 = sub nsw i32 %67, %.val71 - %86 = zext nneg i32 %85 to i64 +76: ; preds = %68 + %77 = sub nsw i32 %63, %.val71 + %86 = zext nneg i32 %77 to i64 %87 = getelementptr inbounds nuw i32, ptr %.val66, i64 %86 br label %88 -88: ; preds = %84, %81 - %.in75 = phi ptr [ %83, %81 ], [ %87, %84 ] +78: ; preds = %76, %81 + %.sink97 = phi ptr [ %83, %81 ], [ %87, %84 ] %89 = load i32, ptr %.in75, align 4, !tbaa !48 %90 = and i32 %65, 1 %91 = xor i32 %89, %90 %92 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %79, i32 noundef %91) #27 %93 = lshr exact i64 %indvars.iv, 1 %.val74 = load ptr, ptr %21, align 8, !tbaa !47 - %94 = getelementptr inbounds nuw i32, ptr %.val74, i64 %93 - store i32 %92, ptr %94, align 4, !tbaa !48 + %86 = getelementptr inbounds nuw i32, ptr %.val74, i64 %93 + store i32 %92, ptr %86, align 4, !tbaa !48 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 2 %.val70 = load i32, ptr %5, align 4, !tbaa !54 - %95 = trunc i64 %indvars.iv.next to i32 - %96 = or disjoint i32 %95, 1 - %97 = icmp slt i32 %96, %.val70 - br i1 %97, label %.lr.ph.split, label %.critedge, !llvm.loop !144 + %87 = trunc i64 %indvars.iv.next to i32 + %88 = or disjoint i32 %87, 1 + %89 = icmp slt i32 %88, %.val70 + br i1 %89, label %.lr.ph.split, label %.critedge, !llvm.loop !144 -.critedge: ; preds = %88, %56, %..critedge_crit_edge +.critedge: ; preds = %78, %52, %..critedge_crit_edge %.val = phi ptr [ %.val.pre, %..critedge_crit_edge ], [ %.val74.us, %56 ], [ %.val74, %88 ] %.050.lcssa = phi i64 [ 0, %..critedge_crit_edge ], [ %indvars.iv.next85, %56 ], [ %indvars.iv.next, %88 ] %.0.lcssa = phi i32 [ 0, %..critedge_crit_edge ], [ %.1.us, %56 ], [ %92, %88 ] - %98 = and i64 %.050.lcssa, 4294967295 - %99 = getelementptr inbounds nuw i32, ptr %.val, i64 %98 - %100 = load i32, ptr %99, align 4, !tbaa !48 - %101 = icmp sgt i32 %100, 0 - %102 = zext i1 %101 to i32 - %103 = xor i32 %.0.lcssa, %102 + %90 = and i64 %.050.lcssa, 4294967295 + %91 = getelementptr inbounds nuw i32, ptr %.val, i64 %90 + %92 = load i32, ptr %91, align 4, !tbaa !48 + %93 = icmp sgt i32 %92, 0 + %94 = zext i1 %93 to i32 + %95 = xor i32 %.0.lcssa, %94 store i32 0, ptr %5, align 4, !tbaa !54 - br label %104 + br label %96 -104: ; preds = %.critedge, %9, %6 - %.049 = phi i32 [ %8, %6 ], [ %17, %9 ], [ %103, %.critedge ] +96: ; preds = %.critedge, %9, %6 + %.049 = phi i32 [ %8, %6 ], [ %17, %9 ], [ %95, %.critedge ] ret i32 %.049 } diff --git a/bench/abc/optimized/giaResub.ll b/bench/abc/optimized/giaResub.ll index 2a251823e16..b7bd6393726 100644 --- a/bench/abc/optimized/giaResub.ll +++ b/bench/abc/optimized/giaResub.ll @@ -3785,47 +3785,47 @@ define i32 @Gia_ManConstructFromMap(ptr noundef %0, ptr noundef readonly capture %18 = ashr i32 %15, 1 %19 = ashr i32 %17, 1 %20 = icmp slt i32 %18, %2 - br i1 %20, label %21, label %24 + br i1 %20, label %38, label %24 -21: ; preds = %13 +38: ; preds = %13 %.val70 = load ptr, ptr %12, align 8, !tbaa !30 %22 = sext i32 %18 to i64 %23 = getelementptr inbounds i32, ptr %.val70, i64 %22 br label %28 -24: ; preds = %13 +40: ; preds = %13 %25 = sub nsw i32 %18, %2 %.val69 = load ptr, ptr %11, align 8, !tbaa !30 %26 = zext nneg i32 %25 to i64 %27 = getelementptr inbounds nuw i32, ptr %.val69, i64 %26 br label %28 -28: ; preds = %24, %21 +42: ; preds = %40, %21 %.in = phi ptr [ %23, %21 ], [ %27, %24 ] %29 = load i32, ptr %.in, align 4, !tbaa !31 %30 = icmp slt i32 %19, %2 br i1 %30, label %31, label %34 -31: ; preds = %28 +47: ; preds = %42 %.val68 = load ptr, ptr %12, align 8, !tbaa !30 %32 = sext i32 %19 to i64 %33 = getelementptr inbounds i32, ptr %.val68, i64 %32 br label %38 -34: ; preds = %28 +49: ; preds = %42 %35 = sub nsw i32 %19, %2 %.val67 = load ptr, ptr %11, align 8, !tbaa !30 %36 = zext nneg i32 %35 to i64 %37 = getelementptr inbounds nuw i32, ptr %.val67, i64 %36 - br label %38 + br label %58 -38: ; preds = %34, %31 - %.in75 = phi ptr [ %33, %31 ], [ %37, %34 ] - %39 = load i32, ptr %.in75, align 4, !tbaa !31 +58: ; preds = %49, %47 + %.1 = phi ptr [ %33, %31 ], [ %37, %34 ] + %59 = load i32, ptr %.1, align 4, !tbaa !31 %40 = icmp slt i32 %18, %19 br i1 %40, label %41, label %50 -41: ; preds = %38 +.Vec_IntGrow.exit10_crit_edge.i: ; preds = %58 %42 = and i32 %15, 1 %43 = xor i32 %29, %42 %44 = and i32 %17, 1 @@ -3877,75 +3877,75 @@ define i32 @Gia_ManConstructFromMap(ptr noundef %0, ptr noundef readonly capture %.pre.i = load ptr, ptr %11, align 8, !tbaa !30 br label %Vec_IntPush.exit -72: ; preds = %68 - %73 = icmp slt i32 %69, 16 - br i1 %73, label %74, label %81 +62: ; preds = %68 + %63 = icmp slt i32 %69, 16 + br i1 %63, label %64, label %71 -74: ; preds = %72 - %75 = load ptr, ptr %11, align 8, !tbaa !30 - %.not9.i.i = icmp eq ptr %75, null - br i1 %.not9.i.i, label %78, label %76 +64: ; preds = %62 + %65 = load ptr, ptr %11, align 8, !tbaa !30 + %.not9.i.i = icmp eq ptr %65, null + br i1 %.not9.i.i, label %68, label %66 -76: ; preds = %74 - %77 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %75, i64 noundef 64) #30 +66: ; preds = %64 + %67 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %65, i64 noundef 64) #30 br label %Vec_IntGrow.exit.i -78: ; preds = %74 - %79 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #31 +68: ; preds = %64 + %69 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #31 br label %Vec_IntGrow.exit.i -Vec_IntGrow.exit.i: ; preds = %78, %76 - %80 = phi ptr [ %77, %76 ], [ %79, %78 ] - store ptr %80, ptr %11, align 8, !tbaa !30 +Vec_IntGrow.exit.i: ; preds = %68, %66 + %70 = phi ptr [ %67, %76 ], [ %69, %78 ] + store ptr %70, ptr %11, align 8, !tbaa !30 store i32 16, ptr %4, align 8, !tbaa !29 br label %Vec_IntPush.exit -81: ; preds = %72 - %82 = shl nuw nsw i32 %69, 1 - %83 = load ptr, ptr %11, align 8, !tbaa !30 - %.not9.i9.i = icmp eq ptr %83, null - %84 = zext nneg i32 %82 to i64 - %85 = shl nuw nsw i64 %84, 2 - br i1 %.not9.i9.i, label %88, label %86 +71: ; preds = %62 + %72 = shl nuw nsw i32 %69, 1 + %73 = load ptr, ptr %11, align 8, !tbaa !30 + %.not9.i9.i = icmp eq ptr %73, null + %74 = zext nneg i32 %72 to i64 + %75 = shl nuw nsw i64 %74, 2 + br i1 %.not9.i9.i, label %78, label %76 -86: ; preds = %81 - %87 = tail call ptr @realloc(ptr noundef nonnull %83, i64 noundef %85) #30 - br label %90 +76: ; preds = %71 + %77 = tail call ptr @realloc(ptr noundef nonnull %73, i64 noundef %75) #30 + br label %80 -88: ; preds = %81 - %89 = tail call noalias ptr @malloc(i64 noundef %85) #31 - br label %90 +78: ; preds = %71 + %79 = tail call noalias ptr @malloc(i64 noundef %75) #31 + br label %80 -90: ; preds = %88, %86 - %91 = phi ptr [ %87, %86 ], [ %89, %88 ] - store ptr %91, ptr %11, align 8, !tbaa !30 - store i32 %82, ptr %4, align 8, !tbaa !29 +80: ; preds = %78, %76 + %81 = phi ptr [ %77, %86 ], [ %79, %88 ] + store ptr %81, ptr %11, align 8, !tbaa !30 + store i32 %72, ptr %4, align 8, !tbaa !29 br label %Vec_IntPush.exit -Vec_IntPush.exit: ; preds = %.Vec_IntGrow.exit10_crit_edge.i, %Vec_IntGrow.exit.i, %90 - %92 = phi ptr [ %.pre.i, %.Vec_IntGrow.exit10_crit_edge.i ], [ %91, %90 ], [ %80, %Vec_IntGrow.exit.i ] - %93 = load i32, ptr %9, align 4, !tbaa !28 - %94 = add nsw i32 %93, 1 - store i32 %94, ptr %9, align 4, !tbaa !28 - %95 = sext i32 %93 to i64 - %96 = getelementptr inbounds i32, ptr %92, i64 %95 - store i32 %.1, ptr %96, align 4, !tbaa !31 +Vec_IntPush.exit: ; preds = %.Vec_IntGrow.exit10_crit_edge.i, %Vec_IntGrow.exit.i, %80 + %82 = phi ptr [ %.pre.i, %.Vec_IntGrow.exit10_crit_edge.i ], [ %81, %90 ], [ %70, %Vec_IntGrow.exit.i ] + %83 = load i32, ptr %9, align 4, !tbaa !28 + %84 = add nsw i32 %83, 1 + store i32 %84, ptr %9, align 4, !tbaa !28 + %85 = sext i32 %83 to i64 + %86 = getelementptr inbounds i32, ptr %82, i64 %85 + store i32 %.1, ptr %86, align 4, !tbaa !31 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 2 %.val65 = load i32, ptr %7, align 4, !tbaa !28 - %97 = trunc i64 %indvars.iv.next to i32 - %98 = or disjoint i32 %97, 1 - %99 = icmp slt i32 %98, %.val65 - br i1 %99, label %13, label %.critedge, !llvm.loop !107 + %87 = trunc i64 %indvars.iv.next to i32 + %88 = or disjoint i32 %87, 1 + %89 = icmp slt i32 %88, %.val65 + br i1 %89, label %13, label %.critedge, !llvm.loop !107 .critedge: ; preds = %Vec_IntPush.exit, %..critedge_crit_edge - %.val66 = phi ptr [ %.val66.pre, %..critedge_crit_edge ], [ %92, %Vec_IntPush.exit ] + %.val66 = phi ptr [ %.val66.pre, %..critedge_crit_edge ], [ %82, %Vec_IntPush.exit ] %.val65.lcssa = phi i32 [ %.val6576, %..critedge_crit_edge ], [ %.val65, %Vec_IntPush.exit ] - %100 = sdiv i32 %.val65.lcssa, 2 - %101 = sext i32 %100 to i64 - %102 = getelementptr i32, ptr %.val66, i64 %101 - %103 = getelementptr i8, ptr %102, i64 -4 - %104 = load i32, ptr %103, align 4, !tbaa !31 - ret i32 %104 + %90 = sdiv i32 %.val65.lcssa, 2 + %91 = sext i32 %90 to i64 + %92 = getelementptr i32, ptr %.val66, i64 %91 + %93 = getelementptr i8, ptr %92, i64 -4 + %94 = load i32, ptr %93, align 4, !tbaa !31 + ret i32 %94 } declare i32 @Gia_ManHashAnd(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2 diff --git a/bench/abc/optimized/giaResub2.ll b/bench/abc/optimized/giaResub2.ll index 1b61333c48b..9491e936fd3 100644 --- a/bench/abc/optimized/giaResub2.ll +++ b/bench/abc/optimized/giaResub2.ll @@ -1971,11 +1971,11 @@ define i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2 %11 = getelementptr inbounds i32, ptr %.val129, i64 %10 %12 = load i32, ptr %11, align 4, !tbaa !30 %13 = icmp sgt i32 %12, -1 - br i1 %13, label %176, label %14 + br i1 %13, label %172, label %14 14: ; preds = %8 %15 = icmp eq i32 %7, %3 - br i1 %15, label %16, label %141 + br i1 %15, label %16, label %137 16: ; preds = %14 %17 = getelementptr i8, ptr %5, i64 4 @@ -1990,7 +1990,7 @@ define i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2 %23 = load i32, ptr %22, align 4, !tbaa !30 %24 = ashr i32 %23, 1 %25 = icmp ult i32 %23, 2 - br i1 %25, label %138, label %26 + br i1 %25, label %134, label %26 26: ; preds = %16 %27 = icmp slt i32 %24, %.val132 @@ -2003,7 +2003,7 @@ define i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2 %31 = getelementptr inbounds i32, ptr %.val127, i64 %30 %32 = load i32, ptr %31, align 4, !tbaa !30 %33 = tail call i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef -1, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %32) - br label %138 + br label %134 34: ; preds = %26 %35 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #34 @@ -2079,13 +2079,13 @@ define i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2 %72 = getelementptr inbounds i32, ptr %.val121, i64 %71 br label %77 -73: ; preds = %58 +73:; preds = %58 %74 = sub nsw i32 %64, %.val132 %75 = zext nneg i32 %74 to i64 %76 = getelementptr inbounds nuw i32, ptr %59, i64 %75 br label %77 -77: ; preds = %73, %67 +77: ; preds = %73, %67 %.in = phi ptr [ %72, %67 ], [ %76, %73 ] %78 = load i32, ptr %.in, align 4, !tbaa !30 %79 = icmp slt i32 %65, %.val132 @@ -2093,21 +2093,21 @@ define i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2 80: ; preds = %77 %.val119 = load ptr, ptr %42, align 8, !tbaa !3 - %81 = sext i32 %65 to i64 - %82 = getelementptr inbounds i32, ptr %.val119, i64 %81 - %83 = load i32, ptr %82, align 4, !tbaa !30 + %79 = sext i32 %65 to i64 + %80 = getelementptr inbounds i32, ptr %.val119, i64 %79 + %81 = load i32, ptr %80, align 4, !tbaa !30 %.val118 = load ptr, ptr %9, align 8, !tbaa !3 %84 = sext i32 %83 to i64 %85 = getelementptr inbounds i32, ptr %.val118, i64 %84 br label %90 -86: ; preds = %77 +86:; preds = %77 %87 = sub nsw i32 %65, %.val132 %88 = zext nneg i32 %87 to i64 %89 = getelementptr inbounds nuw i32, ptr %59, i64 %88 br label %90 -90: ; preds = %86, %80 +90: ; preds = %86, %80 %.in144 = phi ptr [ %85, %80 ], [ %89, %86 ] %91 = load i32, ptr %.in144, align 4, !tbaa !30 %92 = icmp slt i32 %78, %91 @@ -2120,108 +2120,108 @@ define i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2 %95 = and i32 %.54.i, 1 %96 = xor i32 %95, %.55.i %.val.i = load i32, ptr %43, align 4, !tbaa !10 - %97 = icmp slt i32 %61, %63 - br i1 %97, label %98, label %103 + %93 = icmp slt i32 %61, %63 + br i1 %93, label %94, label %99 -98: ; preds = %90 +94: ; preds = %90 switch i32 %94, label %100 [ i32 0, label %Gia_Rsb2AddNode.exit - i32 1, label %99 + i32 1, label %95 ] -99: ; preds = %98 +95: ; preds = %94 br label %Gia_Rsb2AddNode.exit -100: ; preds = %98 - %101 = xor i32 %96, %94 - %102 = icmp eq i32 %101, 1 - br i1 %102, label %Gia_Rsb2AddNode.exit, label %111 +96: ; preds = %94 + %97 = xor i32 %96, %94 + %98 = icmp eq i32 %97, 1 + br i1 %98, label %Gia_Rsb2AddNode.exit, label %107 -103: ; preds = %90 - %104 = icmp sgt i32 %61, %63 - br i1 %104, label %105, label %Gia_Rsb2AddNode.exit +99: ; preds = %90 + %100 = icmp sgt i32 %61, %63 + br i1 %100, label %101, label %Gia_Rsb2AddNode.exit -105: ; preds = %103 +101: ; preds = %99 switch i32 %94, label %108 [ i32 0, label %Gia_Rsb2AddNode.exit - i32 1, label %106 + i32 1, label %102 ] -106: ; preds = %105 - %107 = xor i32 %96, 1 +102: ; preds = %101 + %103 = xor i32 %96, 1 br label %Gia_Rsb2AddNode.exit -108: ; preds = %105 - %109 = xor i32 %96, %94 - %110 = icmp eq i32 %109, 1 - br i1 %110, label %Gia_Rsb2AddNode.exit, label %112 +104: ; preds = %101 + %105 = xor i32 %96, %94 + %106 = icmp eq i32 %105, 1 + br i1 %106, label %Gia_Rsb2AddNode.exit, label %108 -111: ; preds = %100 +107: ; preds = %96 tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %0, i32 noundef %94, i32 noundef %96) br label %Gia_Rsb2AddNode.exit -112: ; preds = %108 +108: ; preds = %104 tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %0, i32 noundef %96, i32 noundef %94) br label %Gia_Rsb2AddNode.exit -Gia_Rsb2AddNode.exit: ; preds = %98, %99, %100, %103, %105, %106, %108, %111, %112 - %.0.i = phi i32 [ %96, %99 ], [ %107, %106 ], [ %94, %98 ], [ 0, %100 ], [ %96, %105 ], [ 1, %108 ], [ %.val.i, %112 ], [ %.val.i, %111 ], [ %.val.i, %103 ] - %113 = load i32, ptr %36, align 4, !tbaa !10 - %114 = load i32, ptr %35, align 8, !tbaa !11 - %115 = icmp eq i32 %113, %114 - br i1 %115, label %116, label %Vec_IntPush.exit +Gia_Rsb2AddNode.exit: ; preds = %94, %99, %100, %103, %105, %106, %108, %111, %112 + %.0.i = phi i32 [ %96, %99 ], [ %103, %106 ], [ %94, %98 ], [ 0, %100 ], [ %96, %105 ], [ 1, %108 ], [ %.val.i, %112 ], [ %.val.i, %111 ], [ %.val.i, %103 ] + %109 = load i32, ptr %36, align 4, !tbaa !10 + %110 = load i32, ptr %35, align 8, !tbaa !11 + %111 = icmp eq i32 %109, %110 + br i1 %111, label %112, label %Vec_IntPush.exit -116: ; preds = %Gia_Rsb2AddNode.exit - %117 = icmp slt i32 %113, 16 - br i1 %117, label %118, label %123 +112: ; preds = %Gia_Rsb2AddNode.exit + %113 = icmp slt i32 %109, 16 + br i1 %113, label %114, label %119 -118: ; preds = %116 +114: ; preds = %112 %.not9.i.i = icmp eq ptr %59, null - br i1 %.not9.i.i, label %121, label %119 + br i1 %.not9.i.i, label %117, label %115 -119: ; preds = %118 - %120 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %59, i64 noundef 64) #33 +115: ; preds = %114 + %116 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %59, i64 noundef 64) #33 br label %Vec_IntPush.exit.sink.split -121: ; preds = %118 - %122 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #34 +117: ; preds = %114 + %118 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #34 br label %Vec_IntPush.exit.sink.split -123: ; preds = %116 - %124 = shl nuw nsw i32 %113, 1 +119: ; preds = %112 + %120 = shl nuw nsw i32 %109, 1 %.not9.i9.i = icmp eq ptr %59, null - %125 = zext nneg i32 %124 to i64 - %126 = shl nuw nsw i64 %125, 2 - br i1 %.not9.i9.i, label %129, label %127 + %121 = zext nneg i32 %120 to i64 + %122 = shl nuw nsw i64 %121, 2 + br i1 %.not9.i9.i, label %125, label %123 -127: ; preds = %123 - %128 = tail call ptr @realloc(ptr noundef nonnull %59, i64 noundef %126) #33 +123: ; preds = %119 + %124 = tail call ptr @realloc(ptr noundef nonnull %59, i64 noundef %122) #33 br label %Vec_IntPush.exit.sink.split -129: ; preds = %123 - %130 = tail call noalias ptr @malloc(i64 noundef %126) #34 +125: ; preds = %119 + %126 = tail call noalias ptr @malloc(i64 noundef %122) #34 br label %Vec_IntPush.exit.sink.split -Vec_IntPush.exit.sink.split: ; preds = %127, %129, %119, %121 - %.sink165 = phi ptr [ %120, %119 ], [ %122, %121 ], [ %128, %127 ], [ %130, %129 ] - %.sink = phi i32 [ 16, %119 ], [ 16, %121 ], [ %124, %127 ], [ %124, %129 ] - store ptr %.sink165, ptr %38, align 8, !tbaa !3 - store i32 %.sink, ptr %35, align 8, !tbaa !11 +Vec_IntPush.exit.sink.split: ; preds = %123, %125, %115, %117 + %.sink171 = phi ptr [ %116, %119 ], [ %118, %121 ], [ %124, %127 ], [ %126, %129 ] + %.sink170 = phi i32 [ 16, %119 ], [ 16, %121 ], [ %120, %127 ], [ %124, %129 ] + store ptr %.sink171, ptr %38, align 8, !tbaa !3 + store i32 %.sink170, ptr %35, align 8, !tbaa !11 br label %Vec_IntPush.exit Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.sink.split, %Gia_Rsb2AddNode.exit - %.pre.i159 = phi ptr [ %59, %Gia_Rsb2AddNode.exit ], [ %.sink165, %Vec_IntPush.exit.sink.split ] - %131 = add nsw i32 %113, 1 - store i32 %131, ptr %36, align 4, !tbaa !10 - %132 = sext i32 %113 to i64 - %133 = getelementptr inbounds i32, ptr %.pre.i159, i64 %132 - store i32 %.0.i, ptr %133, align 4, !tbaa !30 + %.pre.i159 = phi ptr [ %59, %Gia_Rsb2AddNode.exit ], [ %.sink171, %Vec_IntPush.exit.sink.split ] + %127 = add nsw i32 %109, 1 + store i32 %127, ptr %36, align 4, !tbaa !10 + %128 = sext i32 %109 to i64 + %129 = getelementptr inbounds i32, ptr %.pre.i159, i64 %128 + store i32 %.0.i, ptr %129, align 4, !tbaa !30 %indvars.iv.next152 = add nuw nsw i64 %indvars.iv151, 2 %.val130 = load i32, ptr %18, align 4, !tbaa !10 - %134 = trunc i64 %indvars.iv.next152 to i32 - %135 = or disjoint i32 %134, 1 - %136 = icmp slt i32 %135, %.val130 - br i1 %136, label %58, label %.critedge2.thread, !llvm.loop !61 + %130 = trunc i64 %indvars.iv.next152 to i32 + %131 = or disjoint i32 %130, 1 + %132 = icmp slt i32 %131, %.val130 + br i1 %132, label %58, label %.critedge2.thread, !llvm.loop !61 .critedge2: ; preds = %34, %.critedge.preheader %.not.i = icmp eq ptr %37, null @@ -2229,97 +2229,97 @@ Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.si .critedge2.thread: ; preds = %Vec_IntPush.exit, %.critedge2 %.1.lcssa163 = phi i32 [ -1, %.critedge2 ], [ %.0.i, %Vec_IntPush.exit ] - %137 = phi ptr [ %37, %.critedge2 ], [ %.pre.i159, %Vec_IntPush.exit ] - tail call void @free(ptr noundef nonnull %137) #32 + %133 = phi ptr [ %37, %.critedge2 ], [ %.pre.i159, %Vec_IntPush.exit ] + tail call void @free(ptr noundef nonnull %133) #32 br label %Vec_IntFree.exit Vec_IntFree.exit: ; preds = %.critedge2, %.critedge2.thread %.1.lcssa164 = phi i32 [ -1, %.critedge2 ], [ %.1.lcssa163, %.critedge2.thread ] tail call void @free(ptr noundef nonnull %35) #32 - br label %138 + br label %134 -138: ; preds = %16, %28, %Vec_IntFree.exit +134: ; preds = %16, %28, %Vec_IntFree.exit %.0104 = phi i32 [ %33, %28 ], [ %.1.lcssa164, %Vec_IntFree.exit ], [ 0, %16 ] - %139 = and i32 %23, 1 - %140 = xor i32 %.0104, %139 + %135 = and i32 %23, 1 + %136 = xor i32 %.0104, %135 br label %.sink.split -141: ; preds = %14 - %142 = shl nsw i32 %7, 1 - %143 = getelementptr i8, ptr %2, i64 8 - %.val116 = load ptr, ptr %143, align 8, !tbaa !3 - %144 = sext i32 %142 to i64 - %145 = getelementptr i32, ptr %.val116, i64 %144 - %146 = load i32, ptr %145, align 4, !tbaa !30 - %147 = getelementptr i8, ptr %145, i64 4 - %148 = load i32, ptr %147, align 4, !tbaa !30 - %149 = ashr i32 %146, 1 - %150 = tail call i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %149) - %151 = ashr i32 %148, 1 - %152 = tail call i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %151) - %153 = icmp slt i32 %150, %152 - %..i137 = select i1 %153, i32 %146, i32 %148 - %.53.i138 = tail call i32 @llvm.smin.i32(i32 %150, i32 %152) - %.54.i139 = select i1 %153, i32 %148, i32 %146 - %.55.i140 = tail call i32 @llvm.smax.i32(i32 %150, i32 %152) - %154 = and i32 %..i137, 1 - %155 = xor i32 %154, %.53.i138 - %156 = and i32 %.54.i139, 1 - %157 = xor i32 %156, %.55.i140 - %158 = getelementptr i8, ptr %0, i64 4 - %.val.i141 = load i32, ptr %158, align 4, !tbaa !10 - %159 = icmp slt i32 %146, %148 - br i1 %159, label %160, label %165 - -160: ; preds = %141 - switch i32 %155, label %162 [ +137: ; preds = %14 + %138 = shl nsw i32 %7, 1 + %139 = getelementptr i8, ptr %2, i64 8 + %.val116 = load ptr, ptr %139, align 8, !tbaa !3 + %140 = sext i32 %138 to i64 + %141 = getelementptr i32, ptr %.val116, i64 %140 + %142 = load i32, ptr %141, align 4, !tbaa !30 + %143 = getelementptr i8, ptr %141, i64 4 + %144 = load i32, ptr %143, align 4, !tbaa !30 + %145 = ashr i32 %142, 1 + %146 = tail call i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %145) + %147 = ashr i32 %144, 1 + %148 = tail call i32 @Gia_Rsb2ManInsert_rec(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %147) + %149 = icmp slt i32 %146, %148 + %..i137 = select i1 %149, i32 %142, i32 %144 + %.53.i138 = tail call i32 @llvm.smin.i32(i32 %146, i32 %148) + %.54.i139 = select i1 %149, i32 %144, i32 %142 + %.55.i140 = tail call i32 @llvm.smax.i32(i32 %146, i32 %148) + %150 = and i32 %..i137, 1 + %151 = xor i32 %150, %.53.i138 + %152 = and i32 %.54.i139, 1 + %153 = xor i32 %152, %.55.i140 + %154 = getelementptr i8, ptr %0, i64 4 + %.val.i141 = load i32, ptr %154, align 4, !tbaa !10 + %155 = icmp slt i32 %142, %144 + br i1 %155, label %156, label %161 + +156: ; preds = %137 + switch i32 %151, label %162 [ i32 0, label %.sink.split - i32 1, label %161 + i32 1, label %157 ] -161: ; preds = %160 +157: ; preds = %156 br label %.sink.split -162: ; preds = %160 - %163 = xor i32 %157, %155 - %164 = icmp eq i32 %163, 1 - br i1 %164, label %.sink.split, label %173 +158: ; preds = %156 + %159 = xor i32 %153, %151 + %160 = icmp eq i32 %159, 1 + br i1 %160, label %.sink.split, label %169 -165: ; preds = %141 - %166 = icmp sgt i32 %146, %148 - br i1 %166, label %167, label %.sink.split +161: ; preds = %137 + %162 = icmp sgt i32 %142, %144 + br i1 %162, label %163, label %.sink.split -167: ; preds = %165 - switch i32 %155, label %170 [ +163: ; preds = %161 + switch i32 %151, label %170 [ i32 0, label %.sink.split - i32 1, label %168 + i32 1, label %164 ] -168: ; preds = %167 - %169 = xor i32 %157, 1 +164: ; preds = %163 + %165 = xor i32 %153, 1 br label %.sink.split -170: ; preds = %167 - %171 = xor i32 %157, %155 - %172 = icmp eq i32 %171, 1 - br i1 %172, label %.sink.split, label %174 +166: ; preds = %163 + %167 = xor i32 %153, %151 + %168 = icmp eq i32 %167, 1 + br i1 %168, label %.sink.split, label %170 -173: ; preds = %162 - tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %0, i32 noundef %155, i32 noundef %157) +169: ; preds = %158 + tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %0, i32 noundef %151, i32 noundef %153) br label %.sink.split -174: ; preds = %170 - tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %0, i32 noundef %157, i32 noundef %155) +170: ; preds = %166 + tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %0, i32 noundef %153, i32 noundef %151) br label %.sink.split -.sink.split: ; preds = %174, %173, %170, %168, %167, %165, %162, %161, %160, %138 - %.0.i142.sink = phi i32 [ %140, %138 ], [ %157, %161 ], [ %169, %168 ], [ %155, %160 ], [ 0, %162 ], [ %157, %167 ], [ 1, %170 ], [ %.val.i141, %174 ], [ %.val.i141, %173 ], [ %.val.i141, %165 ] +.sink.split: ; preds = %174, %173, %170, %168, %167, %165, %162, %161, %156, %134 + %.0.i142.sink = phi i32 [ %136, %138 ], [ %157, %161 ], [ %165, %168 ], [ %151, %160 ], [ 0, %162 ], [ %153, %167 ], [ 1, %170 ], [ %.val.i141, %174 ], [ %.val.i141, %173 ], [ %.val.i141, %165 ] %.val136 = load ptr, ptr %9, align 8, !tbaa !3 - %175 = getelementptr inbounds i32, ptr %.val136, i64 %10 - store i32 %.0.i142.sink, ptr %175, align 4, !tbaa !30 - br label %176 + %171 = getelementptr inbounds i32, ptr %.val136, i64 %10 + store i32 %.0.i142.sink, ptr %171, align 4, !tbaa !30 + br label %172 -176: ; preds = %.sink.split, %8 +172: ; preds = %.sink.split, %8 %.0 = phi i32 [ %12, %8 ], [ %.0.i142.sink, %.sink.split ] ret i32 %.0 } diff --git a/bench/abc/optimized/ifDec16.ll b/bench/abc/optimized/ifDec16.ll index 54788fbc8f2..170f471a59d 100644 --- a/bench/abc/optimized/ifDec16.ll +++ b/bench/abc/optimized/ifDec16.ll @@ -6402,149 +6402,149 @@ define void @If_CluFindGroup(ptr dead_on_unwind noalias writable sret(%struct.If %46 = add i32 %41, -6 %47 = shl nuw i32 1, %46 %.not.i = icmp eq i32 %7, 31 - %48 = sext i32 %47 to i64 + %46 = sext i32 %47 to i64 %.not178.i = icmp eq i32 %46, 31 %smax.i = tail call i32 @llvm.smax.i32(i32 %47, i32 1) %smax200.i = tail call i32 @llvm.smax.i32(i32 %44, i32 1) %wide.trip.count201.i = zext nneg i32 %smax200.i to i64 %wide.trip.count.i = zext nneg i32 %smax.i to i64 - %49 = shl nuw nsw i32 1, %41 - %50 = zext nneg i32 %49 to i64 - %notmask.i = shl nsw i64 -1, %50 - %51 = xor i64 %notmask.i, -1 - %52 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %53 = sext i32 %38 to i64 - %54 = sext i32 %3 to i64 - %55 = sext i32 %41 to i64 - %56 = sext i32 %42 to i64 + %47 = shl nuw nsw i32 1, %41 + %48 = zext nneg i32 %47 to i64 + %notmask.i = shl nsw i64 -1, %48 + %49 = xor i64 %notmask.i, -1 + %50 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %51 = sext i32 %38 to i64 + %52 = sext i32 %3 to i64 + %53 = sext i32 %41 to i64 + %54 = sext i32 %42 to i64 %wide.trip.count202 = zext nneg i32 %7 to i64 - %invariant.gep211 = getelementptr i32, ptr %6, i64 %55 - br label %57 + %invariant.gep211 = getelementptr i32, ptr %6, i64 %53 + br label %55 -57: ; preds = %.preheader, %154 - %58 = phi i1 [ true, %.preheader ], [ false, %154 ] - br i1 %32, label %59, label %75 +55: ; preds = %.preheader, %152 + %56 = phi i1 [ true, %.preheader ], [ false, %154 ] + br i1 %32, label %57, label %73 -59: ; preds = %57 - %60 = load i32, ptr %35, align 4, !tbaa !6 - %61 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %36, i32 noundef 0, ptr noundef null) +57: ; preds = %55 + %58 = load i32, ptr %35, align 4, !tbaa !6 + %59 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %36, i32 noundef 0, ptr noundef null) br i1 %.not152166, label %._crit_edge172, label %.lr.ph171 -.lr.ph171: ; preds = %59, %70 - %indvars.iv193 = phi i64 [ %indvars.iv.next194, %70 ], [ %53, %59 ] - %.0169 = phi i32 [ %.1, %70 ], [ %61, %59 ] - %.0135168 = phi i32 [ %.1136, %70 ], [ %60, %59 ] - %62 = getelementptr inbounds i32, ptr %6, i64 %indvars.iv193 - %63 = load i32, ptr %62, align 4, !tbaa !6 - %64 = sext i32 %63 to i64 - %65 = getelementptr inbounds i32, ptr %5, i64 %64 - %66 = load i32, ptr %65, align 4, !tbaa !6 - tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %66, i32 noundef %33) - %67 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %36, i32 noundef 0, ptr noundef null) - %.not156 = icmp slt i32 %.0169, %67 - br i1 %.not156, label %70, label %68 - -68: ; preds = %.lr.ph171 - %69 = load i32, ptr %35, align 4, !tbaa !6 - br label %70 - -70: ; preds = %.lr.ph171, %68 - %.1136 = phi i32 [ %69, %68 ], [ %.0135168, %.lr.ph171 ] - %.1 = phi i32 [ %67, %68 ], [ %.0169, %.lr.ph171 ] +.lr.ph171: ; preds = %57, %68 + %indvars.iv193 = phi i64 [ %indvars.iv.next194, %70 ], [ %51, %59 ] + %.0169 = phi i32 [ %.1, %70 ], [ %59, %59 ] + %.0135168 = phi i32 [ %.1136, %70 ], [ %58, %59 ] + %60 = getelementptr inbounds i32, ptr %6, i64 %indvars.iv193 + %61 = load i32, ptr %60, align 4, !tbaa !6 + %62 = sext i32 %61 to i64 + %63 = getelementptr inbounds i32, ptr %5, i64 %62 + %64 = load i32, ptr %63, align 4, !tbaa !6 + tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %64, i32 noundef %33) + %65 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %36, i32 noundef 0, ptr noundef null) + %.not156 = icmp slt i32 %.0169, %65 + br i1 %.not156, label %68, label %66 + +66: ; preds = %.lr.ph171 + %67 = load i32, ptr %35, align 4, !tbaa !6 + br label %68 + +68: ; preds = %.lr.ph171, %66 + %.1136 = phi i32 [ %67, %68 ], [ %.0135168, %.lr.ph171 ] + %.1 = phi i32 [ %65, %68 ], [ %.0169, %.lr.ph171 ] %indvars.iv.next194 = add nsw i64 %indvars.iv193, -1 - %.not152.not = icmp sgt i64 %indvars.iv193, %54 + %.not152.not = icmp sgt i64 %indvars.iv193, %52 br i1 %.not152.not, label %.lr.ph171, label %._crit_edge172, !llvm.loop !167 -._crit_edge172: ; preds = %70, %59 - %.0135.lcssa = phi i32 [ %60, %59 ], [ %.1136, %70 ] - %71 = sext i32 %.0135.lcssa to i64 - %72 = getelementptr inbounds i32, ptr %5, i64 %71 - %73 = load i32, ptr %72, align 4, !tbaa !6 - tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %73, i32 noundef %33) - %74 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %36, i32 noundef 0, ptr noundef null) - br label %75 +._crit_edge172: ; preds = %68, %57 + %.0135.lcssa = phi i32 [ %58, %59 ], [ %.1136, %70 ] + %69 = sext i32 %.0135.lcssa to i64 + %70 = getelementptr inbounds i32, ptr %5, i64 %69 + %71 = load i32, ptr %70, align 4, !tbaa !6 + tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef nonnull %6, i32 noundef %71, i32 noundef %33) + %72 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %36, i32 noundef 0, ptr noundef null) + br label %73 -75: ; preds = %._crit_edge172, %57 - %76 = load i32, ptr %40, align 4, !tbaa !6 - %77 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %7, i32 noundef 0, ptr noundef null) +73: ; preds = %._crit_edge172, %55 + %74 = load i32, ptr %40, align 4, !tbaa !6 + %75 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %7, i32 noundef 0, ptr noundef null) br i1 %43, label %.lr.ph177, label %._crit_edge178 -.lr.ph177: ; preds = %75, %136 - %indvars.iv196 = phi i64 [ %indvars.iv.next197, %136 ], [ %55, %75 ] - %.2175 = phi i32 [ %.3, %136 ], [ %77, %75 ] - %.2137174 = phi i32 [ %.3138, %136 ], [ %76, %75 ] - %78 = getelementptr inbounds i32, ptr %6, i64 %indvars.iv196 - %79 = load i32, ptr %78, align 4, !tbaa !6 - %80 = sext i32 %79 to i64 - %81 = getelementptr inbounds i32, ptr %5, i64 %80 - %82 = load i32, ptr %81, align 4, !tbaa !6 - tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef %6, i32 noundef %82, i32 noundef %33) +.lr.ph177: ; preds = %73, %134 + %indvars.iv196 = phi i64 [ %indvars.iv.next197, %136 ], [ %53, %75 ] + %.2175 = phi i32 [ %.3, %136 ], [ %75, %75 ] + %.2137174 = phi i32 [ %.3138, %136 ], [ %74, %75 ] + %76 = getelementptr inbounds i32, ptr %6, i64 %indvars.iv196 + %77 = load i32, ptr %76, align 4, !tbaa !6 + %78 = sext i32 %77 to i64 + %79 = getelementptr inbounds i32, ptr %5, i64 %78 + %80 = load i32, ptr %79, align 4, !tbaa !6 + tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef %6, i32 noundef %80, i32 noundef %33) call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %10) #22 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) %10, i8 0, i64 1024, i1 false) - br i1 %45, label %83, label %105 + br i1 %45, label %81, label %103 -83: ; preds = %.lr.ph177 +81: ; preds = %.lr.ph177 br i1 %.not.i, label %If_CluCountCofs.exit, label %.lr.ph174.i -.lr.ph174.i: ; preds = %83, %.thread215.i +.lr.ph174.i: ; preds = %81, %.thread215.i %indvars.iv208.i = phi i64 [ %indvars.iv.next209.i, %.thread215.i ], [ 0, %83 ] %.0100170.i = phi i32 [ %.2102217.i, %.thread215.i ], [ 0, %83 ] - %84 = trunc nuw nsw i64 %indvars.iv208.i to i32 - %85 = shl nsw i32 %84, %41 - %86 = sdiv i32 %85, 64 - %87 = sext i32 %86 to i64 - %88 = getelementptr inbounds i64, ptr %1, i64 %87 - %89 = load i64, ptr %88, align 8, !tbaa !16 - %90 = and i32 %85, 63 - %91 = zext nneg i32 %90 to i64 - %92 = lshr i64 %89, %91 - %93 = and i64 %92, %51 - %94 = icmp sgt i32 %.0100170.i, 0 - br i1 %94, label %.lr.ph165.preheader.i, label %._crit_edge166.i + %82 = trunc nuw nsw i64 %indvars.iv208.i to i32 + %83 = shl nsw i32 %82, %41 + %84 = sdiv i32 %83, 64 + %85 = sext i32 %84 to i64 + %86 = getelementptr inbounds i64, ptr %1, i64 %85 + %87 = load i64, ptr %86, align 8, !tbaa !16 + %88 = and i32 %83, 63 + %89 = zext nneg i32 %88 to i64 + %90 = lshr i64 %87, %89 + %91 = and i64 %90, %49 + %92 = icmp sgt i32 %.0100170.i, 0 + br i1 %92, label %.lr.ph165.preheader.i, label %._crit_edge166.i .lr.ph165.preheader.i: ; preds = %.lr.ph174.i %wide.trip.count206.i = zext nneg i32 %.0100170.i to i64 br label %.lr.ph165.i -.lr.ph165.i: ; preds = %98, %.lr.ph165.preheader.i +.lr.ph165.i: ; preds = %96, %.lr.ph165.preheader.i %indvars.iv203.i = phi i64 [ 0, %.lr.ph165.preheader.i ], [ %indvars.iv.next204.i, %98 ] - %95 = getelementptr inbounds nuw [128 x i64], ptr %10, i64 0, i64 %indvars.iv203.i - %96 = load i64, ptr %95, align 8, !tbaa !16 - %97 = icmp eq i64 %93, %96 - br i1 %97, label %._crit_edge166.loopexit.i, label %98 + %93 = getelementptr inbounds nuw [128 x i64], ptr %10, i64 0, i64 %indvars.iv203.i + %94 = load i64, ptr %93, align 8, !tbaa !16 + %95 = icmp eq i64 %91, %94 + br i1 %95, label %._crit_edge166.loopexit.i, label %96 -98: ; preds = %.lr.ph165.i +96: ; preds = %.lr.ph165.i %indvars.iv.next204.i = add nuw nsw i64 %indvars.iv203.i, 1 %exitcond207.not.i = icmp eq i64 %indvars.iv.next204.i, %wide.trip.count206.i br i1 %exitcond207.not.i, label %._crit_edge166.thread.i, label %.lr.ph165.i, !llvm.loop !140 ._crit_edge166.loopexit.i: ; preds = %.lr.ph165.i - %99 = trunc nuw nsw i64 %indvars.iv203.i to i32 + %97 = trunc nuw nsw i64 %indvars.iv203.i to i32 br label %._crit_edge166.i ._crit_edge166.i: ; preds = %._crit_edge166.loopexit.i, %.lr.ph174.i - %.0108.lcssa.i = phi i32 [ 0, %.lr.ph174.i ], [ %99, %._crit_edge166.loopexit.i ] - %100 = icmp eq i32 %.0108.lcssa.i, %.0100170.i - br i1 %100, label %._crit_edge166.thread.i, label %.thread215.i - -._crit_edge166.thread.i: ; preds = %98, %._crit_edge166.i - %101 = add nsw i32 %.0100170.i, 1 - %102 = sext i32 %.0100170.i to i64 - %103 = getelementptr inbounds [128 x i64], ptr %10, i64 0, i64 %102 - store i64 %93, ptr %103, align 8, !tbaa !16 - %104 = icmp eq i32 %101, 5 - br i1 %104, label %If_CluCountCofs.exit, label %.thread215.i + %.0108.lcssa.i = phi i32 [ 0, %.lr.ph174.i ], [ %97, %._crit_edge166.loopexit.i ] + %98 = icmp eq i32 %.0108.lcssa.i, %.0100170.i + br i1 %98, label %._crit_edge166.thread.i, label %.thread215.i + +._crit_edge166.thread.i: ; preds = %96, %._crit_edge166.i + %99 = add nsw i32 %.0100170.i, 1 + %100 = sext i32 %.0100170.i to i64 + %101 = getelementptr inbounds [128 x i64], ptr %10, i64 0, i64 %100 + store i64 %91, ptr %101, align 8, !tbaa !16 + %102 = icmp eq i32 %99, 5 + br i1 %102, label %If_CluCountCofs.exit, label %.thread215.i .thread215.i: ; preds = %._crit_edge166.thread.i, %._crit_edge166.i - %.2102217.i = phi i32 [ %101, %._crit_edge166.thread.i ], [ %.0100170.i, %._crit_edge166.i ] + %.2102217.i = phi i32 [ %99, %._crit_edge166.thread.i ], [ %.0100170.i, %._crit_edge166.i ] %indvars.iv.next209.i = add nuw nsw i64 %indvars.iv208.i, 1 %exitcond213.not.i = icmp eq i64 %indvars.iv.next209.i, %wide.trip.count201.i br i1 %exitcond213.not.i, label %If_CluCountCofs.exit, label %.lr.ph174.i, !llvm.loop !141 -105: ; preds = %.lr.ph177 +103: ; preds = %.lr.ph177 br i1 %.not.i, label %If_CluCountCofs.exit, label %.lr.ph159.i -.lr.ph159.i: ; preds = %105 +.lr.ph159.i: ; preds = %103 br i1 %.not178.i, label %.lr.ph159.i.split.us, label %.lr.ph159.i.split .lr.ph159.i.split.us: ; preds = %.lr.ph159.i, %.thread.us @@ -6554,21 +6554,21 @@ define void @If_CluFindGroup(ptr dead_on_unwind noalias writable sret(%struct.If br i1 %or.cond, label %.lr.ph145.i.us, label %.thread.us .lr.ph145.i.us: ; preds = %.lr.ph159.i.split.us - %106 = add nuw nsw i32 %.4104154.i.us, 1 - %107 = zext nneg i32 %.4104154.i.us to i64 - %108 = getelementptr inbounds nuw [128 x i64], ptr %10, i64 0, i64 %107 - store i64 %indvars.iv197.i.us, ptr %108, align 8, !tbaa !16 - %109 = icmp eq i32 %106, 5 - br i1 %109, label %If_CluCountCofs.exit, label %.thread.us + %104 = add nuw nsw i32 %.4104154.i.us, 1 + %105 = zext nneg i32 %.4104154.i.us to i64 + %106 = getelementptr inbounds nuw [128 x i64], ptr %10, i64 0, i64 %105 + store i64 %indvars.iv197.i.us, ptr %106, align 8, !tbaa !16 + %107 = icmp eq i32 %104, 5 + br i1 %107, label %If_CluCountCofs.exit, label %.thread.us .thread.us: ; preds = %.lr.ph159.i.split.us, %.lr.ph145.i.us - %.6.i158.us = phi i32 [ %106, %.lr.ph145.i.us ], [ %.4104154.i.us, %.lr.ph159.i.split.us ] + %.6.i158.us = phi i32 [ %104, %.lr.ph145.i.us ], [ %.4104154.i.us, %.lr.ph159.i.split.us ] %indvars.iv.next198.i.us = add nuw nsw i64 %indvars.iv197.i.us, 1 %exitcond202.not.i.us = icmp eq i64 %indvars.iv.next198.i.us, %wide.trip.count201.i br i1 %exitcond202.not.i.us, label %If_CluCountCofs.exit, label %.lr.ph159.i.split.us, !llvm.loop !142 .thread: ; preds = %._crit_edge146.split.us.i, %.loopexit - %.6.i158 = phi i32 [ %130, %.loopexit ], [ %.4104154.i, %._crit_edge146.split.us.i ] + %.6.i158 = phi i32 [ %128, %.loopexit ], [ %.4104154.i, %._crit_edge146.split.us.i ] %indvars.iv.next198.i = add nuw nsw i64 %indvars.iv197.i, 1 %exitcond202.not.i = icmp eq i64 %indvars.iv.next198.i, %wide.trip.count201.i br i1 %exitcond202.not.i, label %If_CluCountCofs.exit, label %.lr.ph159.i.split, !llvm.loop !142 @@ -6576,137 +6576,137 @@ define void @If_CluFindGroup(ptr dead_on_unwind noalias writable sret(%struct.If .lr.ph159.i.split: ; preds = %.lr.ph159.i, %.thread %indvars.iv197.i = phi i64 [ %indvars.iv.next198.i, %.thread ], [ 0, %.lr.ph159.i ] %.4104154.i = phi i32 [ %.6.i158, %.thread ], [ 0, %.lr.ph159.i ] - %110 = trunc nuw nsw i64 %indvars.iv197.i to i32 - %111 = shl i32 %110, %46 - %112 = sext i32 %111 to i64 - %113 = getelementptr inbounds i64, ptr %1, i64 %112 - %114 = icmp sgt i32 %.4104154.i, 0 - br i1 %114, label %.lr.ph145.i, label %._crit_edge146.split.us.i + %108 = trunc nuw nsw i64 %indvars.iv197.i to i32 + %109 = shl i32 %108, %46 + %110 = sext i32 %109 to i64 + %111 = getelementptr inbounds i64, ptr %1, i64 %110 + %112 = icmp sgt i32 %.4104154.i, 0 + br i1 %112, label %.lr.ph145.i, label %._crit_edge146.split.us.i .lr.ph145.i: ; preds = %.lr.ph159.i.split %wide.trip.count190.i = zext nneg i32 %.4104154.i to i64 br label %.lr.ph.us.i -.lr.ph.us.i: ; preds = %126, %.lr.ph145.i +.lr.ph.us.i: ; preds = %124, %.lr.ph145.i %indvars.iv187.i = phi i64 [ 0, %.lr.ph145.i ], [ %indvars.iv.next188.i, %126 ] - %115 = getelementptr inbounds nuw [128 x i64], ptr %10, i64 0, i64 %indvars.iv187.i - %116 = load i64, ptr %115, align 8, !tbaa !16 - %117 = mul i64 %116, %48 - %118 = getelementptr inbounds nuw i64, ptr %1, i64 %117 - br label %119 + %113 = getelementptr inbounds nuw [128 x i64], ptr %10, i64 0, i64 %indvars.iv187.i + %114 = load i64, ptr %113, align 8, !tbaa !16 + %115 = mul i64 %114, %46 + %116 = getelementptr inbounds nuw i64, ptr %1, i64 %115 + br label %117 -119: ; preds = %127, %.lr.ph.us.i +117: ; preds = %125, %.lr.ph.us.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.us.i ], [ %indvars.iv.next.i, %127 ] - %120 = getelementptr inbounds nuw i64, ptr %113, i64 %indvars.iv.i + %118 = getelementptr inbounds nuw i64, ptr %111, i64 %indvars.iv.i %121 = load i64, ptr %120, align 8, !tbaa !16 %122 = getelementptr inbounds nuw i64, ptr %118, i64 %indvars.iv.i %123 = load i64, ptr %122, align 8, !tbaa !16 %.not.us.i = icmp eq i64 %121, %123 br i1 %.not.us.i, label %127, label %._crit_edge.us.split.loop.exit228.i -._crit_edge.us.split.loop.exit228.i: ; preds = %119 - %124 = trunc nuw nsw i64 %indvars.iv.i to i32 +._crit_edge.us.split.loop.exit228.i: ; preds = %117 + %122 = trunc nuw nsw i64 %indvars.iv.i to i32 br label %._crit_edge.us.i -._crit_edge.us.i: ; preds = %127, %._crit_edge.us.split.loop.exit228.i - %.0106.lcssa.us.i = phi i32 [ %124, %._crit_edge.us.split.loop.exit228.i ], [ %smax.i, %127 ] - %125 = icmp eq i32 %.0106.lcssa.us.i, %47 - br i1 %125, label %._crit_edge146.split.us.loopexit.i, label %126 +._crit_edge.us.i: ; preds = %125, %._crit_edge.us.split.loop.exit228.i + %.0106.lcssa.us.i = phi i32 [ %122, %._crit_edge.us.split.loop.exit228.i ], [ %smax.i, %127 ] + %123 = icmp eq i32 %.0106.lcssa.us.i, %47 + br i1 %123, label %._crit_edge146.split.us.loopexit.i, label %124 -126: ; preds = %._crit_edge.us.i +124: ; preds = %._crit_edge.us.i %indvars.iv.next188.i = add nuw nsw i64 %indvars.iv187.i, 1 %exitcond191.not.i = icmp eq i64 %indvars.iv.next188.i, %wide.trip.count190.i br i1 %exitcond191.not.i, label %.loopexit, label %.lr.ph.us.i, !llvm.loop !143 -127: ; preds = %119 +125: ; preds = %117 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %._crit_edge.us.i, label %119, !llvm.loop !144 + br i1 %exitcond.not.i, label %._crit_edge.us.i, label %117, !llvm.loop !144 ._crit_edge146.split.us.loopexit.i: ; preds = %._crit_edge.us.i - %128 = trunc nuw nsw i64 %indvars.iv187.i to i32 + %126 = trunc nuw nsw i64 %indvars.iv187.i to i32 br label %._crit_edge146.split.us.i ._crit_edge146.split.us.i: ; preds = %._crit_edge146.split.us.loopexit.i, %.lr.ph159.i.split - %.1109.lcssa.i = phi i32 [ 0, %.lr.ph159.i.split ], [ %128, %._crit_edge146.split.us.loopexit.i ] - %129 = icmp eq i32 %.1109.lcssa.i, %.4104154.i - br i1 %129, label %.loopexit, label %.thread - -.loopexit: ; preds = %126, %._crit_edge146.split.us.i - %130 = add nsw i32 %.4104154.i, 1 - %131 = sext i32 %.4104154.i to i64 - %132 = getelementptr inbounds [128 x i64], ptr %10, i64 0, i64 %131 - store i64 %indvars.iv197.i, ptr %132, align 8, !tbaa !16 - %133 = icmp eq i32 %130, 5 - br i1 %133, label %If_CluCountCofs.exit, label %.thread - -If_CluCountCofs.exit: ; preds = %.loopexit, %.thread, %.thread.us, %.lr.ph145.i.us, %.thread215.i, %._crit_edge166.thread.i, %105, %83 + %.1109.lcssa.i = phi i32 [ 0, %.lr.ph159.i.split ], [ %126, %._crit_edge146.split.us.loopexit.i ] + %127 = icmp eq i32 %.1109.lcssa.i, %.4104154.i + br i1 %127, label %.loopexit, label %.thread + +.loopexit: ; preds = %124, %._crit_edge146.split.us.i + %128 = add nsw i32 %.4104154.i, 1 + %129 = sext i32 %.4104154.i to i64 + %130 = getelementptr inbounds [128 x i64], ptr %10, i64 0, i64 %129 + store i64 %indvars.iv197.i, ptr %130, align 8, !tbaa !16 + %131 = icmp eq i32 %128, 5 + br i1 %131, label %If_CluCountCofs.exit, label %.thread + +If_CluCountCofs.exit: ; preds = %.loopexit, %.thread, %.thread.us, %.lr.ph145.i.us, %.thread215.i, %._crit_edge166.thread.i, %103, %81 %.3103.i = phi i32 [ 0, %83 ], [ 0, %105 ], [ %.2102217.i, %.thread215.i ], [ 5, %._crit_edge166.thread.i ], [ %.6.i158.us, %.thread.us ], [ 5, %.lr.ph145.i.us ], [ %.6.i158, %.thread ], [ 5, %.loopexit ] call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %10) #22 %.not155 = icmp slt i32 %.2175, %.3103.i - br i1 %.not155, label %136, label %134 + br i1 %.not155, label %134, label %132 -134: ; preds = %If_CluCountCofs.exit - %135 = load i32, ptr %40, align 4, !tbaa !6 - br label %136 +132: ; preds = %If_CluCountCofs.exit + %133 = load i32, ptr %40, align 4, !tbaa !6 + br label %134 -136: ; preds = %If_CluCountCofs.exit, %134 - %.3138 = phi i32 [ %135, %134 ], [ %.2137174, %If_CluCountCofs.exit ] +134: ; preds = %If_CluCountCofs.exit, %132 + %.3138 = phi i32 [ %133, %134 ], [ %.2137174, %If_CluCountCofs.exit ] %.3 = phi i32 [ %.3103.i, %134 ], [ %.2175, %If_CluCountCofs.exit ] %indvars.iv.next197 = add nsw i64 %indvars.iv196, 1 - %137 = icmp slt i64 %indvars.iv.next197, %56 - br i1 %137, label %.lr.ph177, label %._crit_edge178, !llvm.loop !168 - -._crit_edge178: ; preds = %136, %75 - %.2137.lcssa = phi i32 [ %76, %75 ], [ %.3138, %136 ] - %138 = sext i32 %.2137.lcssa to i64 - %139 = getelementptr inbounds i32, ptr %5, i64 %138 - %140 = load i32, ptr %139, align 4, !tbaa !6 - tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef %6, i32 noundef %140, i32 noundef %33) - %141 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %7, i32 noundef 0, ptr noundef null) - %142 = load i8, ptr %15, align 1, !tbaa !112 - %143 = sext i8 %142 to i32 - %.not153 = icmp sgt i32 %141, %143 - br i1 %.not153, label %thread-pre-split, label %144 - -144: ; preds = %._crit_edge178 + %135 = icmp slt i64 %indvars.iv.next197, %54 + br i1 %135, label %.lr.ph177, label %._crit_edge178, !llvm.loop !168 + +._crit_edge178: ; preds = %134, %73 + %.2137.lcssa = phi i32 [ %74, %75 ], [ %.3138, %136 ] + %136 = sext i32 %.2137.lcssa to i64 + %137 = getelementptr inbounds i32, ptr %5, i64 %136 + %138 = load i32, ptr %137, align 4, !tbaa !6 + tail call void @If_CluSwapVars(ptr noundef %1, i32 noundef %2, ptr noundef %5, ptr noundef %6, i32 noundef %138, i32 noundef %33) + %139 = tail call i32 @If_CluCountCofs(ptr noundef %1, i32 noundef %2, i32 noundef %7, i32 noundef 0, ptr noundef null) + %140 = load i8, ptr %15, align 1, !tbaa !112 + %141 = sext i8 %140 to i32 + %.not153 = icmp sgt i32 %139, %141 + br i1 %.not153, label %thread-pre-split, label %142 + +142: ; preds = %._crit_edge178 store i8 %12, ptr %0, align 1, !tbaa !110 - %145 = trunc i32 %141 to i8 - store i8 %145, ptr %15, align 1, !tbaa !112 + %143 = trunc i32 %139 to i8 + store i8 %143, ptr %15, align 1, !tbaa !112 br i1 %16, label %.lr.ph182, label %thread-pre-split -.lr.ph182: ; preds = %144, %.lr.ph182 +.lr.ph182: ; preds = %142, %.lr.ph182 %indvars.iv199 = phi i64 [ %indvars.iv.next200, %.lr.ph182 ], [ 0, %144 ] %gep212 = getelementptr i32, ptr %invariant.gep211, i64 %indvars.iv199 - %146 = load i32, ptr %gep212, align 4, !tbaa !6 - %147 = trunc i32 %146 to i8 - %148 = getelementptr inbounds nuw [16 x i8], ptr %52, i64 0, i64 %indvars.iv199 - store i8 %147, ptr %148, align 1, !tbaa !59 + %144 = load i32, ptr %gep212, align 4, !tbaa !6 + %145 = trunc i32 %144 to i8 + %146 = getelementptr inbounds nuw [16 x i8], ptr %50, i64 0, i64 %indvars.iv199 + store i8 %145, ptr %146, align 1, !tbaa !59 %indvars.iv.next200 = add nuw nsw i64 %indvars.iv199, 1 %exitcond203.not = icmp eq i64 %indvars.iv.next200, %wide.trip.count202 br i1 %exitcond203.not, label %thread-pre-split, label %.lr.ph182, !llvm.loop !169 -thread-pre-split: ; preds = %.lr.ph182, %144, %._crit_edge178 - %149 = phi i8 [ %142, %._crit_edge178 ], [ %145, %144 ], [ %145, %.lr.ph182 ] - %150 = icmp eq i8 %149, 2 - br i1 %150, label %.loopexit161, label %151 +thread-pre-split: ; preds = %.lr.ph182, %142, %._crit_edge178 + %147 = phi i8 [ %140, %._crit_edge178 ], [ %143, %144 ], [ %143, %.lr.ph182 ] + %148 = icmp eq i8 %147, 2 + br i1 %148, label %.loopexit161, label %149 -151: ; preds = %thread-pre-split - br i1 %.not, label %152, label %154 +149: ; preds = %thread-pre-split + br i1 %.not, label %150, label %152 -152: ; preds = %151 - %153 = tail call i32 @If_CluCheckNonDisjointGroup(ptr noundef %1, i32 noundef %2, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %0) - %.not154 = icmp eq i32 %153, 0 - br i1 %.not154, label %154, label %.loopexit161 +150: ; preds = %149 + %151 = tail call i32 @If_CluCheckNonDisjointGroup(ptr noundef %1, i32 noundef %2, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %0) + %.not154 = icmp eq i32 %151, 0 + br i1 %.not154, label %152, label %.loopexit161 -154: ; preds = %151, %152 - br i1 %58, label %57, label %.loopexit161.sink.split, !llvm.loop !170 +152: ; preds = %149, %150 + br i1 %56, label %55, label %.loopexit161.sink.split, !llvm.loop !170 -.loopexit161.sink.split: ; preds = %154, %28 +.loopexit161.sink.split: ; preds = %152, %28 store i8 0, ptr %0, align 1, !tbaa !110 br label %.loopexit161 -.loopexit161: ; preds = %152, %thread-pre-split, %.loopexit161.sink.split, %26, %._crit_edge +.loopexit161: ; preds = %150, %thread-pre-split, %.loopexit161.sink.split, %26, %._crit_edge ret void } diff --git a/bench/abc/optimized/lpkMulti.ll b/bench/abc/optimized/lpkMulti.ll index 4792a612ec7..3d8ef034f82 100644 --- a/bench/abc/optimized/lpkMulti.ll +++ b/bench/abc/optimized/lpkMulti.ll @@ -467,15 +467,15 @@ define i32 @Lpk_FindHighest(ptr noundef readonly captures(none) %0, ptr noundef %wide.trip.count = zext nneg i32 %2 to i64 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %73 +.lr.ph: ; preds = %.lr.ph.preheader, %74 %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %73 ] - %.095121 = phi i32 [ 0, %.lr.ph.preheader ], [ %75, %73 ] + %.095121 = phi i32 [ 0, %.lr.ph.preheader ], [ %76, %73 ] %9 = getelementptr inbounds nuw [8 x i32], ptr %7, i64 0, i64 %indvars.iv store i32 1, ptr %9, align 4, !tbaa !16 %10 = getelementptr inbounds nuw i32, ptr %1, i64 %indvars.iv %11 = load i32, ptr %10, align 4, !tbaa !16 %12 = icmp slt i32 %11, 0 - br i1 %12, label %73, label %13 + br i1 %12, label %74, label %13 13: ; preds = %.lr.ph %14 = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv @@ -492,7 +492,7 @@ Kit_DsdLitSupport.exit: ; preds = %13 %.not.i = icmp eq ptr %19, null %20 = shl nuw i32 1, %16 %spec.select164 = select i1 %.not.i, i32 0, i32 %20 - br label %73 + br label %74 Kit_DsdNtkObj.exit: ; preds = %13 %21 = getelementptr inbounds nuw i8, ptr %15, i64 24 @@ -578,31 +578,31 @@ Kit_DsdNtkObj.exit: ; preds = %13 Kit_DsdLitSupport.exit116: ; preds = %30, %51, %67 %.096158 = phi i32 [ %70, %67 ], [ -1, %30 ], [ -1, %51 ] - %71 = phi i32 [ %69, %67 ], [ 0, %30 ], [ 0, %51 ] - %72 = and i32 %71, %.096158 - br label %73 - -73: ; preds = %.lr.ph, %Kit_DsdLitSupport.exit, %Kit_DsdLitSupport.exit116 - %spec.select164.sink = phi i32 [ %spec.select164, %Kit_DsdLitSupport.exit ], [ %72, %Kit_DsdLitSupport.exit116 ], [ 0, %.lr.ph ] - %74 = getelementptr inbounds nuw [8 x i32], ptr %6, i64 0, i64 %indvars.iv - store i32 %spec.select164.sink, ptr %74, align 4, !tbaa !16 - %75 = or i32 %spec.select164.sink, %.095121 + %72 = phi i32 [ %69, %67 ], [ 0, %30 ], [ 0, %51 ] + %73 = and i32 %72, %.096158 + br label %74 + +74: ; preds = %.lr.ph, %Kit_DsdLitSupport.exit, %Kit_DsdLitSupport.exit116 + %spec.select164.sink = phi i32 [ %spec.select164, %Kit_DsdLitSupport.exit ], [ %73, %Kit_DsdLitSupport.exit116 ], [ 0, %.lr.ph ] + %75 = getelementptr inbounds nuw [8 x i32], ptr %6, i64 0, i64 %indvars.iv + store i32 %spec.select164.sink, ptr %75, align 4, !tbaa !16 + %76 = or i32 %spec.select164.sink, %.095121 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !37 -._crit_edge: ; preds = %73 - %76 = icmp eq i32 %75, 0 - br i1 %76, label %.loopexit, label %.preheader120 +._crit_edge: ; preds = %74 + %77 = icmp eq i32 %76, 0 + br i1 %77, label %.loopexit, label %.preheader120 .lr.ph130: ; preds = %85 - %77 = shl nuw i32 1, %.185 + %78 = shl nuw i32 1, %.185 %wide.trip.count148 = zext nneg i32 %2 to i64 br label %86 -.preheader120: ; preds = %._crit_edge, %85 - %indvars.iv141 = phi i64 [ %indvars.iv.next142, %85 ], [ 0, %._crit_edge ] - %.084125 = phi i32 [ %.185, %85 ], [ -1, %._crit_edge ] +86: ; preds = %._crit_edge, %85 + %.187 = phi i64 [ %indvars.iv.next142, %85 ], [ 0, %._crit_edge ] + %.185 = phi i32 [ %.185, %85 ], [ -1, %._crit_edge ] %.086124 = phi i32 [ %.187, %85 ], [ 1000000000, %._crit_edge ] %78 = trunc nuw nsw i64 %indvars.iv141 to i32 %79 = shl nuw nsw i32 1, %78 @@ -625,93 +625,93 @@ Kit_DsdLitSupport.exit116: ; preds = %30, %51, %67 %exitcond144.not = icmp eq i64 %indvars.iv.next142, 16 br i1 %exitcond144.not, label %.lr.ph130, label %.preheader120, !llvm.loop !38 -86: ; preds = %.lr.ph130, %102 +87: ; preds = %.lr.ph130, %103 %indvars.iv145 = phi i64 [ 0, %.lr.ph130 ], [ %indvars.iv.next146, %102 ] %.0129 = phi i32 [ 0, %.lr.ph130 ], [ %.2, %102 ] %.081128 = phi i32 [ 0, %.lr.ph130 ], [ %.182, %102 ] %.092126 = phi i32 [ 0, %.lr.ph130 ], [ %.294, %102 ] - %87 = getelementptr inbounds nuw [8 x i32], ptr %6, i64 0, i64 %indvars.iv145 - %88 = load i32, ptr %87, align 4, !tbaa !16 - %89 = and i32 %88, %77 - %.not102 = icmp eq i32 %89, 0 - br i1 %.not102, label %100, label %90 - -90: ; preds = %86 - %91 = getelementptr inbounds nuw [8 x i32], ptr %7, i64 0, i64 %indvars.iv145 - %92 = load i32, ptr %91, align 4, !tbaa !16 - %93 = icmp eq i32 %92, 0 - %94 = icmp ne i32 %.0129, 0 - %or.cond = select i1 %93, i1 %94, i1 false - br i1 %or.cond, label %98, label %95 - -95: ; preds = %90 - %spec.select108 = select i1 %93, i32 %88, i32 %.092126 - %spec.select109 = select i1 %93, i32 1, i32 %.0129 - %96 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv145 - store i32 1, ptr %96, align 4, !tbaa !16 - %97 = add nsw i32 %.081128, 1 - br label %102 - -98: ; preds = %90 - %99 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv145 - store i32 0, ptr %99, align 4, !tbaa !16 - br label %102 - -100: ; preds = %86 - %101 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv145 - store i32 0, ptr %101, align 4, !tbaa !16 - br label %102 - -102: ; preds = %100, %98, %95 + %88 = getelementptr inbounds nuw [8 x i32], ptr %6, i64 0, i64 %indvars.iv145 + %89 = load i32, ptr %88, align 4, !tbaa !16 + %90 = and i32 %89, %78 + %.not102 = icmp eq i32 %90, 0 + br i1 %.not102, label %101, label %91 + +91: ; preds = %87 + %92 = getelementptr inbounds nuw [8 x i32], ptr %7, i64 0, i64 %indvars.iv145 + %93 = load i32, ptr %92, align 4, !tbaa !16 + %94 = icmp eq i32 %93, 0 + %95 = icmp ne i32 %.0129, 0 + %or.cond = select i1 %94, i1 %95, i1 false + br i1 %or.cond, label %99, label %96 + +96: ; preds = %91 + %spec.select108 = select i1 %94, i32 %89, i32 %.092126 + %spec.select109 = select i1 %94, i32 1, i32 %.0129 + %97 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv145 + store i32 1, ptr %97, align 4, !tbaa !16 + %98 = add nsw i32 %.081128, 1 + br label %103 + +99: ; preds = %91 + %100 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv145 + store i32 0, ptr %100, align 4, !tbaa !16 + br label %103 + +101: ; preds = %87 + %102 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv145 + store i32 0, ptr %102, align 4, !tbaa !16 + br label %103 + +103: ; preds = %101, %99, %96 %.294 = phi i32 [ %.092126, %98 ], [ %spec.select108, %95 ], [ %.092126, %100 ] - %.182 = phi i32 [ %.081128, %98 ], [ %97, %95 ], [ %.081128, %100 ] + %.182 = phi i32 [ %.081128, %98 ], [ %98, %95 ], [ %.081128, %100 ] %.2 = phi i32 [ 1, %98 ], [ %spec.select109, %95 ], [ %.0129, %100 ] %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_edge131, label %86, !llvm.loop !39 + br i1 %exitcond149.not, label %._crit_edge131, label %87, !llvm.loop !39 -._crit_edge131: ; preds = %102 +._crit_edge131: ; preds = %103 %.not = icmp eq i32 %.2, 0 - %103 = xor i32 %.294, -1 + %104 = xor i32 %.294, -1 br i1 %.not, label %.loopexit, label %.lr.ph137 .lr.ph137: ; preds = %._crit_edge131 %wide.trip.count153 = zext nneg i32 %2 to i64 - br label %104 + br label %105 -104: ; preds = %.lr.ph137, %118 +105: ; preds = %.lr.ph137, %119 %indvars.iv150 = phi i64 [ 0, %.lr.ph137 ], [ %indvars.iv.next151, %118 ] %.3136 = phi i32 [ %.182, %.lr.ph137 ], [ %.4, %118 ] - %105 = getelementptr inbounds nuw [8 x i32], ptr %7, i64 0, i64 %indvars.iv150 - %106 = load i32, ptr %105, align 4, !tbaa !16 - %.not101 = icmp eq i32 %106, 0 - br i1 %.not101, label %107, label %118 - -107: ; preds = %104 - %108 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv150 - %109 = load i32, ptr %108, align 4, !tbaa !16 - %110 = icmp eq i32 %109, 0 - br i1 %110, label %111, label %118 - -111: ; preds = %107 - %112 = getelementptr inbounds nuw [8 x i32], ptr %6, i64 0, i64 %indvars.iv150 - %113 = load i32, ptr %112, align 4, !tbaa !16 - %114 = and i32 %113, %103 - %115 = icmp eq i32 %114, 0 - br i1 %115, label %116, label %118 - -116: ; preds = %111 - store i32 1, ptr %108, align 4, !tbaa !16 - %117 = add nsw i32 %.3136, 1 - br label %118 - -118: ; preds = %104, %107, %111, %116 - %.4 = phi i32 [ %.3136, %104 ], [ %117, %116 ], [ %.3136, %111 ], [ %.3136, %107 ] + %106 = getelementptr inbounds nuw [8 x i32], ptr %7, i64 0, i64 %indvars.iv150 + %107 = load i32, ptr %106, align 4, !tbaa !16 + %.not101 = icmp eq i32 %107, 0 + br i1 %.not101, label %108, label %119 + +108: ; preds = %105 + %109 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv150 + %110 = load i32, ptr %109, align 4, !tbaa !16 + %111 = icmp eq i32 %110, 0 + br i1 %111, label %112, label %119 + +112: ; preds = %108 + %113 = getelementptr inbounds nuw [8 x i32], ptr %6, i64 0, i64 %indvars.iv150 + %114 = load i32, ptr %113, align 4, !tbaa !16 + %115 = and i32 %114, %104 + %116 = icmp eq i32 %115, 0 + br i1 %116, label %117, label %119 + +117: ; preds = %112 + store i32 1, ptr %109, align 4, !tbaa !16 + %118 = add nsw i32 %.3136, 1 + br label %119 + +119: ; preds = %105, %108, %112, %117 + %.4 = phi i32 [ %.3136, %104 ], [ %118, %116 ], [ %.3136, %111 ], [ %.3136, %107 ] %indvars.iv.next151 = add nuw nsw i64 %indvars.iv150, 1 %exitcond154.not = icmp eq i64 %indvars.iv.next151, %wide.trip.count153 - br i1 %exitcond154.not, label %.loopexit, label %104, !llvm.loop !40 + br i1 %exitcond154.not, label %.loopexit, label %105, !llvm.loop !40 -.loopexit: ; preds = %118, %5, %._crit_edge131, %._crit_edge +.loopexit: ; preds = %119, %5, %._crit_edge131, %._crit_edge %.097 = phi i32 [ 0, %._crit_edge ], [ %.182, %._crit_edge131 ], [ 0, %5 ], [ %.4, %118 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #12 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #12 diff --git a/bench/abc/optimized/wlcBlast.ll b/bench/abc/optimized/wlcBlast.ll index eda735f2156..6b2698e7b9e 100644 --- a/bench/abc/optimized/wlcBlast.ll +++ b/bench/abc/optimized/wlcBlast.ll @@ -3330,86 +3330,86 @@ define void @Wlc_BlastDivider(ptr noundef %0, ptr noundef readonly captures(none .preheader120: ; preds = %.preheader120.lr.ph, %.loopexit %indvars.iv152 = phi i64 [ %15, %.preheader120.lr.ph ], [ %indvars.iv.next153, %.loopexit ] - %18 = sub nuw nsw i64 %17, %indvars.iv152 - %19 = icmp sgt i64 %indvars.iv152, 0 - br i1 %19, label %.lr.ph, label %.lr.ph129 + %17 = sub nuw nsw i64 %17, %indvars.iv152 + %18 = icmp sgt i64 %indvars.iv152, 0 + br i1 %18, label %.lr.ph, label %.lr.ph129 -20: ; preds = %.lr.ph +19: ; preds = %.lr.ph %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %21 = icmp sgt i64 %indvars.iv.next, %18 - br i1 %21, label %.lr.ph, label %.lr.ph129, !llvm.loop !90 + %20 = icmp sgt i64 %indvars.iv.next, %17 + br i1 %20, label %.lr.ph, label %.lr.ph129, !llvm.loop !90 -.lr.ph: ; preds = %.preheader120, %20 +.lr.ph: ; preds = %.preheader120, %19 %indvars.iv = phi i64 [ %indvars.iv.next, %20 ], [ %15, %.preheader120 ] - %.0105122 = phi i32 [ %24, %20 ], [ 0, %.preheader120 ] - %22 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv - %23 = load i32, ptr %22, align 4, !tbaa !3 - %24 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.0105122, i32 noundef %23) #23 - %25 = icmp eq i32 %24, 1 - br i1 %25, label %.thread, label %20 + %.0105122 = phi i32 [ %23, %20 ], [ 0, %.preheader120 ] + %21 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv + %22 = load i32, ptr %21, align 4, !tbaa !3 + %23 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.0105122, i32 noundef %22) #23 + %24 = icmp eq i32 %23, 1 + br i1 %24, label %.thread, label %19 .thread: ; preds = %.lr.ph - %26 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 - store i32 0, ptr %26, align 4, !tbaa !3 + %25 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 + store i32 0, ptr %25, align 4, !tbaa !3 br label %.loopexit -.lr.ph129: ; preds = %20, %.preheader120 - %.promoted.ph = phi i32 [ 0, %.preheader120 ], [ %24, %20 ] - %27 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 - br label %28 +.lr.ph129: ; preds = %19, %.preheader120 + %.promoted.ph = phi i32 [ 0, %.preheader120 ], [ %23, %20 ] + %26 = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv152 + br label %27 -28: ; preds = %.lr.ph129, %34 +27: ; preds = %.lr.ph129, %33 %indvars.iv141 = phi i64 [ %16, %.lr.ph129 ], [ %indvars.iv.next142, %34 ] - %29 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %40, %34 ] - %.2127 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %43, %34 ] + %28 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %39, %34 ] + %.2127 = phi i32 [ %.promoted.ph, %.lr.ph129 ], [ %42, %34 ] %.not117 = icmp slt i64 %indvars.iv141, %indvars.iv152 - br i1 %.not117, label %34, label %30 + br i1 %.not117, label %33, label %29 -30: ; preds = %28 - %31 = sub nsw i64 %indvars.iv141, %indvars.iv152 - %32 = getelementptr inbounds nuw i32, ptr %3, i64 %31 - %33 = load i32, ptr %32, align 4, !tbaa !3 - br label %34 +29: ; preds = %27 + %30 = sub nsw i64 %indvars.iv141, %indvars.iv152 + %31 = getelementptr inbounds nuw i32, ptr %3, i64 %30 + %32 = load i32, ptr %31, align 4, !tbaa !3 + br label %33 -34: ; preds = %28, %30 - %35 = phi i32 [ %33, %30 ], [ 0, %28 ] - %36 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv141 - %37 = load i32, ptr %36, align 4, !tbaa !3 - %38 = xor i32 %37, 1 - %39 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %35, i32 noundef %38) #23 - %40 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.2127, i32 noundef %29, i32 noundef %39) #23 - %41 = load i32, ptr %36, align 4, !tbaa !3 - %42 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %35, i32 noundef %41) #23 - %43 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.2127, i32 noundef %42) #23 +33: ; preds = %27, %29 + %34 = phi i32 [ %32, %30 ], [ 0, %28 ] + %35 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv141 + %36 = load i32, ptr %35, align 4, !tbaa !3 + %37 = xor i32 %36, 1 + %38 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %34, i32 noundef %37) #23 + %39 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.2127, i32 noundef %28, i32 noundef %38) #23 + %40 = load i32, ptr %35, align 4, !tbaa !3 + %41 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %34, i32 noundef %40) #23 + %42 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.2127, i32 noundef %41) #23 %indvars.iv.next142 = add nsw i64 %indvars.iv141, -1 - %44 = icmp slt i64 %indvars.iv141, 1 - %45 = icmp eq i32 %43, 1 - %or.cond = select i1 %44, i1 true, i1 %45 - br i1 %or.cond, label %46, label %28, !llvm.loop !91 - -46: ; preds = %34 - %47 = xor i32 %40, 1 - store i32 %47, ptr %27, align 4, !tbaa !3 - %48 = icmp eq i32 %40, 1 - br i1 %48, label %.loopexit, label %.lr.ph133 - -.lr.ph133: ; preds = %46, %57 + %43 = icmp slt i64 %indvars.iv141, 1 + %44 = icmp eq i32 %42, 1 + %or.cond = select i1 %43, i1 true, i1 %44 + br i1 %or.cond, label %45, label %27, !llvm.loop !91 + +45: ; preds = %33 + %46 = xor i32 %39, 1 + store i32 %46, ptr %26, align 4, !tbaa !3 + %47 = icmp eq i32 %39, 1 + br i1 %47, label %.loopexit, label %.lr.ph133 + +.lr.ph133: ; preds = %45, %57 %indvars.iv144 = phi i64 [ %indvars.iv.next145, %57 ], [ 0, %46 ] %.0132 = phi i32 [ %62, %57 ], [ 0, %46 ] - %49 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv144 - %50 = load i32, ptr %49, align 4, !tbaa !3 - %51 = xor i32 %50, 1 - %52 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.0132, i32 noundef %51, i32 noundef %50) #23 + %48 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv144 + %49 = load i32, ptr %48, align 4, !tbaa !3 + %50 = xor i32 %49, 1 + %51 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.0132, i32 noundef %50, i32 noundef %49) #23 %.not118 = icmp slt i64 %indvars.iv144, %indvars.iv152 br i1 %.not118, label %57, label %53 -53: ; preds = %.lr.ph133 +56: ; preds = %.lr.ph133 %54 = sub nsw i64 %indvars.iv144, %indvars.iv152 %55 = getelementptr inbounds nuw i32, ptr %3, i64 %54 %56 = load i32, ptr %55, align 4, !tbaa !3 br label %57 -57: ; preds = %.lr.ph133, %53 +57:; preds = %.lr.ph133, %53 %58 = phi i32 [ %56, %53 ], [ 0, %.lr.ph133 ] %59 = load i32, ptr %49, align 4, !tbaa !3 %60 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %.0132, i32 noundef %58) #23 @@ -3423,54 +3423,54 @@ define void @Wlc_BlastDivider(ptr noundef %0, ptr noundef readonly captures(none br i1 %exitcond.not, label %._crit_edge134, label %.lr.ph133, !llvm.loop !92 ._crit_edge134: ; preds = %57 - %65 = icmp eq i32 %40, 0 - br i1 %65, label %66, label %.lr.ph136 + %64 = icmp eq i32 %39, 0 + br i1 %64, label %65, label %.lr.ph136 -66: ; preds = %._crit_edge134 - %67 = tail call ptr @Wlc_VecCopy(ptr noundef %6, ptr noundef nonnull %12, i32 noundef %2) +65: ; preds = %._crit_edge134 + %66 = tail call ptr @Wlc_VecCopy(ptr noundef %6, ptr noundef nonnull %12, i32 noundef %2) br label %.loopexit .lr.ph136: ; preds = %._crit_edge134, %.lr.ph136 %indvars.iv147 = phi i64 [ %indvars.iv.next148, %.lr.ph136 ], [ 0, %._crit_edge134 ] - %68 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv147 - %69 = load i32, ptr %68, align 4, !tbaa !3 - %70 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv147 - %71 = load i32, ptr %70, align 4, !tbaa !3 - %72 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %47, i32 noundef %69, i32 noundef %71) #23 - store i32 %72, ptr %70, align 4, !tbaa !3 + %67 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv147 + %68 = load i32, ptr %67, align 4, !tbaa !3 + %69 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv147 + %70 = load i32, ptr %69, align 4, !tbaa !3 + %71 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %46, i32 noundef %68, i32 noundef %70) #23 + store i32 %71, ptr %69, align 4, !tbaa !3 %indvars.iv.next148 = add nuw nsw i64 %indvars.iv147, 1 %exitcond151.not = icmp eq i64 %indvars.iv.next148, %wide.trip.count150 br i1 %exitcond151.not, label %.loopexit, label %.lr.ph136, !llvm.loop !93 -.loopexit: ; preds = %.lr.ph136, %.thread, %66, %46 +.loopexit: ; preds = %.lr.ph136, %.thread, %65, %45 %indvars.iv.next153 = add nsw i64 %indvars.iv152, -1 - br i1 %19, label %.preheader120, label %._crit_edge139, !llvm.loop !94 + br i1 %18, label %.preheader120, label %._crit_edge139, !llvm.loop !94 ._crit_edge139: ; preds = %.loopexit, %7 %.not = icmp eq ptr %12, null - br i1 %.not, label %74, label %73 + br i1 %.not, label %73, label %72 -73: ; preds = %._crit_edge139 +72: ; preds = %._crit_edge139 tail call void @free(ptr noundef nonnull %12) #23 - br label %74 + br label %73 -74: ; preds = %._crit_edge139, %73 +73: ; preds = %._crit_edge139, %72 %.not115 = icmp eq i32 %5, 0 - br i1 %.not115, label %77, label %75 + br i1 %.not115, label %76, label %74 -75: ; preds = %74 - %76 = tail call ptr @Wlc_VecCopy(ptr noundef %6, ptr noundef %11, i32 noundef %2) - br label %77 +74: ; preds = %73 + %75 = tail call ptr @Wlc_VecCopy(ptr noundef %6, ptr noundef %11, i32 noundef %2) + br label %76 -77: ; preds = %75, %74 +76: ; preds = %74, %73 %.not116 = icmp eq ptr %11, null - br i1 %.not116, label %79, label %78 + br i1 %.not116, label %78, label %77 -78: ; preds = %77 +77: ; preds = %76 tail call void @free(ptr noundef nonnull %11) #23 - br label %79 + br label %78 -79: ; preds = %77, %78 +78: ; preds = %76, %77 ret void } diff --git a/bench/arrow/optimized/basic_decimal.ll b/bench/arrow/optimized/basic_decimal.ll index f3a93f7ccb3..5ddc022eda6 100644 --- a/bench/arrow/optimized/basic_decimal.ll +++ b/bench/arrow/optimized/basic_decimal.ll @@ -3193,22 +3193,22 @@ define noundef nonnull align 8 dereferenceable(32) ptr @_ZN5arrow15BasicDecimal2 %17 = getelementptr inbounds nuw i8, ptr %0, i64 24 %18 = shl i64 %16, %9 store i64 %18, ptr %17, align 8, !tbaa !7 - %.not31.not52 = icmp ult i32 %1, 192 - br i1 %.not31.not52, label %.lr.ph.split, label %.preheader + %.not31.not53 = icmp ult i32 %1, 192 + br i1 %.not31.not53, label %.lr.ph.split, label %.preheader .lr.ph.split.us.preheader: ; preds = %.lr.ph %19 = zext nneg i32 %5 to i64 br label %.lr.ph.split.us .lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %.lr.ph.split.us - %indvars.iv44 = phi i64 [ 3, %.lr.ph.split.us.preheader ], [ %indvars.iv.next45, %.lr.ph.split.us ] - %20 = sub nsw i64 %indvars.iv44, %19 + %indvars.iv45 = phi i64 [ 3, %.lr.ph.split.us.preheader ], [ %indvars.iv.next46, %.lr.ph.split.us ] + %20 = sub nsw i64 %indvars.iv45, %19 %21 = getelementptr inbounds nuw [4 x i64], ptr %0, i64 0, i64 %20 %22 = load i64, ptr %21, align 8, !tbaa !7 - %23 = getelementptr inbounds nuw [4 x i64], ptr %0, i64 0, i64 %indvars.iv44 + %23 = getelementptr inbounds nuw [4 x i64], ptr %0, i64 0, i64 %indvars.iv45 store i64 %22, ptr %23, align 8, !tbaa !7 - %indvars.iv.next45 = add nsw i64 %indvars.iv44, -1 - %.not.us.not = icmp samesign ugt i64 %indvars.iv44, %19 + %indvars.iv.next46 = add nsw i64 %indvars.iv45, -1 + %.not.us.not = icmp samesign ugt i64 %indvars.iv45, %19 br i1 %.not.us.not, label %.lr.ph.split.us, label %.preheader, !llvm.loop !31 .preheader: ; preds = %.lr.ph.split, %.lr.ph.split.us, %.lr.ph.split.preheader @@ -3232,14 +3232,14 @@ define noundef nonnull align 8 dereferenceable(32) ptr @_ZN5arrow15BasicDecimal2 .lr.ph.split: ; preds = %.lr.ph.split.preheader, %.lr.ph.split %32 = phi i64 [ %43, %.lr.ph.split ], [ %18, %.lr.ph.split.preheader ] %33 = phi ptr [ %42, %.lr.ph.split ], [ %17, %.lr.ph.split.preheader ] - %indvars.iv53 = phi i64 [ %indvars.iv.next, %.lr.ph.split ], [ 3, %.lr.ph.split.preheader ] - %34 = add nsw i64 %indvars.iv53, %13 + %indvars.iv54 = phi i64 [ %indvars.iv.next, %.lr.ph.split ], [ 3, %.lr.ph.split.preheader ] + %34 = add nsw i64 %indvars.iv54, %13 %35 = getelementptr inbounds nuw [4 x i64], ptr %0, i64 0, i64 %34 %36 = load i64, ptr %35, align 8, !tbaa !7 %37 = lshr i64 %36, %11 %38 = or i64 %37, %32 store i64 %38, ptr %33, align 8, !tbaa !7 - %indvars.iv.next = add nsw i64 %indvars.iv53, -1 + %indvars.iv.next = add nsw i64 %indvars.iv54, -1 %39 = sub nsw i64 %indvars.iv.next, %12 %40 = getelementptr inbounds nuw [4 x i64], ptr %0, i64 0, i64 %39 %41 = load i64, ptr %40, align 8, !tbaa !7 diff --git a/bench/boost/optimized/console_buffer.ll b/bench/boost/optimized/console_buffer.ll index 0dea03e597d..f851d0d97dd 100644 --- a/bench/boost/optimized/console_buffer.ll +++ b/bench/boost/optimized/console_buffer.ll @@ -131,33 +131,33 @@ _ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit: ; preds = % %49 = getelementptr inbounds nuw i8, ptr %0, i64 48 store ptr %48, ptr %49, align 8, !tbaa !19 %50 = sext i32 %.pre-phi to i64 - %51 = getelementptr i8, ptr %0, i64 %50 + %.ptr15 = getelementptr i8, ptr %0, i64 %50 %.ptr15 = getelementptr i8, ptr %51, i64 64 store ptr %.ptr15, ptr %5, align 8, !tbaa !6 %.not = icmp eq i32 %1, -1 - br i1 %.not, label %_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc.exit, label %52 - -52: ; preds = %47 - %53 = icmp slt i32 %.pre-phi, 1024 - br i1 %53, label %54, label %58, !prof !20 - -54: ; preds = %52 - %55 = trunc i32 %1 to i8 - store i8 %55, ptr %.ptr15, align 1, !tbaa !21 - %56 = load ptr, ptr %5, align 8, !tbaa !6 - %57 = getelementptr inbounds nuw i8, ptr %56, i64 1 - store ptr %57, ptr %5, align 8, !tbaa !6 + br i1 %.not, label %_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc.exit, label %51 + +51: ; preds = %47 + %52 = icmp slt i32 %.pre-phi, 1024 + br i1 %52, label %53, label %57, !prof !20 + +53: ; preds = %51 + %54 = trunc i32 %1 to i8 + store i8 %54, ptr %.ptr15, align 1, !tbaa !21 + %55 = load ptr, ptr %5, align 8, !tbaa !6 + %56 = getelementptr inbounds nuw i8, ptr %55, i64 1 + store ptr %56, ptr %5, align 8, !tbaa !6 br label %_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc.exit -58: ; preds = %52 - %59 = and i32 %1, 255 - %60 = load ptr, ptr %0, align 8, !tbaa !3 - %61 = getelementptr inbounds nuw i8, ptr %60, i64 104 - %62 = load ptr, ptr %61, align 8 - %63 = call noundef i32 %62(ptr noundef nonnull align 8 dereferenceable(64) %0, i32 noundef %59) +57: ; preds = %51 + %58 = and i32 %1, 255 + %59 = load ptr, ptr %0, align 8, !tbaa !3 + %60 = getelementptr inbounds nuw i8, ptr %59, i64 104 + %61 = load ptr, ptr %60, align 8 + %62 = call noundef i32 %62(ptr noundef nonnull align 8 dereferenceable(64) %0, i32 noundef %58) br label %_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc.exit -_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc.exit: ; preds = %58, %54, %_ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit.thread, %47, %_ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit +_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc.exit: ; preds = %57, %53, %_ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit.thread, %47, %_ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit %.010 = phi i32 [ -1, %_ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit ], [ 0, %47 ], [ -1, %_ZN5boost6nowide6detail26console_output_buffer_base5writeEPKci.exit.thread ], [ 0, %54 ], [ 0, %58 ] ret i32 %.010 } diff --git a/bench/double_conversion/optimized/bignum.ll b/bench/double_conversion/optimized/bignum.ll index 43fd581767c..2e72a020016 100644 --- a/bench/double_conversion/optimized/bignum.ll +++ b/bench/double_conversion/optimized/bignum.ll @@ -2100,7 +2100,7 @@ _ZN17double_conversion6Bignum5AlignERKS0_.exit: ; preds = %16, %.lr.ph20.i br i1 %96, label %_ZN17double_conversion6Bignum5ClampEv.exit, label %.preheader .preheader: ; preds = %89, %.loopexit - %.132 = phi i16 [ %128, %.loopexit ], [ %93, %89 ] + %.132 = phi i16 [ %132, %.loopexit ], [ %93, %89 ] %97 = load i16, ptr %1, align 4, !tbaa !3 %98 = sext i16 %97 to i32 %99 = load i16, ptr %11, align 2, !tbaa !8 @@ -2123,19 +2123,19 @@ _ZN17double_conversion6Bignum5AlignERKS0_.exit: ; preds = %16, %.lr.ph20.i %111 = sext i16 %110 to i32 br label %112 -112: ; preds = %127, %.preheader.i.i +112:; preds = %127, %.preheader.i.i %.024.in.i.i = phi i32 [ %.024.i.i, %127 ], [ %101, %.preheader.i.i ] %.024.i.i = add nsw i32 %.024.in.i.i, -1 %.not.not.not.i.i = icmp sgt i32 %.024.in.i.i, %111 - br i1 %.not.not.not.i.i, label %113, label %.loopexit + br i1 %.not.not.not.i.i, label %118, label %.loopexit -113: ; preds = %112 +118: ; preds = %112 %.not.i.i.i = icmp sgt i32 %.024.in.i.i, %101 %114 = icmp sle i32 %.024.in.i.i, %100 %or.cond.i.i.i = or i1 %114, %.not.i.i.i - br i1 %or.cond.i.i.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i, label %115 + br i1 %or.cond.i.i.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i, label %119 -115: ; preds = %113 +119: ; preds = %118 %116 = sub nsw i32 %.024.i.i, %100 %117 = zext nneg i32 %116 to i64 %118 = getelementptr inbounds nuw [128 x i32], ptr %67, i64 0, i64 %117 @@ -2145,32 +2145,32 @@ _ZN17double_conversion6Bignum5AlignERKS0_.exit: ; preds = %16, %.lr.ph20.i _ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i: ; preds = %115, %113 %.0.i.i.i = phi i32 [ %119, %115 ], [ 0, %113 ] %.not.i29.i.i = icmp sgt i32 %.024.in.i.i, %106 - %120 = icmp sle i32 %.024.in.i.i, %105 - %or.cond.i30.i.i = or i1 %120, %.not.i29.i.i - br i1 %or.cond.i30.i.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i, label %121 + %125 = icmp sle i32 %.024.in.i.i, %105 + %or.cond.i30.i.i = or i1 %125, %.not.i29.i.i + br i1 %or.cond.i30.i.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i, label %126 -121: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i - %122 = sub nsw i32 %.024.i.i, %105 - %123 = zext nneg i32 %122 to i64 +126: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i + %127 = sub nsw i32 %.024.i.i, %105 + %123 = zext nneg i32 %127 to i64 %124 = getelementptr inbounds nuw [128 x i32], ptr %62, i64 0, i64 %123 %125 = load i32, ptr %124, align 4, !tbaa !9 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i -_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i: ; preds = %121, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i +_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i: ; preds = %126, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i %.0.i31.i.i = phi i32 [ %125, %121 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i ] - %126 = icmp ult i32 %.0.i.i.i, %.0.i31.i.i - br i1 %126, label %.loopexit, label %127 + %130 = icmp ult i32 %.0.i.i.i, %.0.i31.i.i + br i1 %130, label %.loopexit, label %131 -127: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i +131: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i %.not.i.i = icmp ugt i32 %.0.i.i.i, %.0.i31.i.i br i1 %.not.i.i, label %_ZN17double_conversion6Bignum5ClampEv.exit, label %112, !llvm.loop !41 .loopexit: ; preds = %112, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32.i.i, %.preheader tail call void @_ZN17double_conversion6Bignum14SubtractBignumERKS0_(ptr noundef nonnull align 4 dereferenceable(516) %0, ptr noundef nonnull align 4 dereferenceable(516) %1) - %128 = add i16 %.132, 1 + %132 = add i16 %.132, 1 br label %.preheader, !llvm.loop !42 -_ZN17double_conversion6Bignum5ClampEv.exit: ; preds = %108, %127, %.lr.ph.i33, %.critedge.thread3.i, %.critedge.i, %89, %2 +_ZN17double_conversion6Bignum5ClampEv.exit: ; preds = %108, %131, %.lr.ph.i33, %.critedge.thread3.i, %.critedge.i, %89, %2 %.0 = phi i16 [ 0, %2 ], [ %93, %89 ], [ %76, %.critedge.i ], [ %76, %.critedge.thread3.i ], [ %76, %.lr.ph.i33 ], [ %.132, %127 ], [ %.132, %108 ] ret i16 %.0 } @@ -2513,7 +2513,7 @@ define noundef range(i32 -1, 2) i32 @_ZN17double_conversion6Bignum7CompareERKS0_ %21 = getelementptr inbounds nuw i8, ptr %1, i64 4 br label %22 -22: ; preds = %.preheader, %37 +22:; preds = %.preheader, %42 %.024.in = phi i32 [ %.024, %37 ], [ %8, %.preheader ] %.024 = add nsw i32 %.024.in, -1 %.not.not.not = icmp sgt i32 %.024.in, %19 @@ -2535,27 +2535,27 @@ define noundef range(i32 -1, 2) i32 @_ZN17double_conversion6Bignum7CompareERKS0_ _ZNK17double_conversion6Bignum11BigitOrZeroEi.exit: ; preds = %23, %25 %.0.i = phi i32 [ %29, %25 ], [ 0, %23 ] %.not.i29 = icmp sgt i32 %.024.in, %14 - %30 = icmp sle i32 %.024.in, %13 - %or.cond.i30 = or i1 %30, %.not.i29 - br i1 %or.cond.i30, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32, label %31 + %36 = icmp sle i32 %.024.in, %13 + %or.cond.i30 = or i1 %36, %.not.i29 + br i1 %or.cond.i30, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32, label %37 -31: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit - %32 = sub nsw i32 %.024, %13 +37: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit + %38 = sub nsw i32 %.024, %13 %33 = zext nneg i32 %32 to i64 %34 = getelementptr inbounds nuw [128 x i32], ptr %21, i64 0, i64 %33 %35 = load i32, ptr %34, align 4, !tbaa !9 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32 -_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, %31 +_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, %37 %.0.i31 = phi i32 [ %35, %31 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit ] - %36 = icmp ult i32 %.0.i, %.0.i31 - br i1 %36, label %.thread, label %37 + %41 = icmp ult i32 %.0.i, %.0.i31 + br i1 %41, label %.thread, label %42 -37: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32 +42: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32 %.not = icmp ugt i32 %.0.i, %.0.i31 br i1 %.not, label %.thread, label %22, !llvm.loop !41 -.thread: ; preds = %37, %22, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32, %16, %2 +.thread: ; preds = %42, %22, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32, %16, %2 %.0 = phi i32 [ -1, %2 ], [ 1, %16 ], [ -1, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32 ], [ 0, %22 ], [ 1, %37 ] ret i32 %.0 } @@ -2564,11 +2564,11 @@ _ZNK17double_conversion6Bignum11BigitOrZeroEi.exit32: ; preds = %_ZNK17double_co define noundef range(i32 -1, 2) i32 @_ZN17double_conversion6Bignum11PlusCompareERKS0_S2_S2_(ptr noundef nonnull readonly align 4 captures(none) dereferenceable(516) %0, ptr noundef nonnull readonly align 4 captures(none) dereferenceable(516) %1, ptr noundef nonnull readonly align 4 captures(none) dereferenceable(516) %2) local_unnamed_addr #8 align 2 { %.pre = load i16, ptr %0, align 4, !tbaa !3 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 2 - %.pre96 = load i16, ptr %.phi.trans.insert, align 2, !tbaa !8 + %.pre97 = load i16, ptr %.phi.trans.insert, align 2, !tbaa !8 br label %tailrecurse tailrecurse: ; preds = %tailrecurse, %3 - %4 = phi i16 [ %.pre96, %3 ], [ %12, %tailrecurse ] + %4 = phi i16 [ %.pre97, %3 ], [ %12, %tailrecurse ] %5 = phi i16 [ %.pre, %3 ], [ %9, %tailrecurse ] %.tr = phi ptr [ %0, %3 ], [ %.tr65, %tailrecurse ] %.tr65 = phi ptr [ %1, %3 ], [ %.tr, %tailrecurse ] @@ -2619,9 +2619,9 @@ tailrecurse: ; preds = %tailrecurse, %3 %35 = getelementptr inbounds nuw i8, ptr %.tr, i64 4 %36 = getelementptr inbounds nuw i8, ptr %.tr65, i64 4 %37 = getelementptr inbounds nuw i8, ptr %2, i64 4 - br label %38 + br label %50 -38: ; preds = %.lr.ph, %63 +50: ; preds = %.lr.ph, %63 %.04079 = phi i32 [ 0, %.lr.ph ], [ %64, %63 ] %.043.in78 = phi i32 [ %24, %.lr.ph ], [ %.04380, %63 ] %.04380 = add nsw i32 %.043.in78, -1 @@ -2640,55 +2640,55 @@ tailrecurse: ; preds = %tailrecurse, %3 _ZNK17double_conversion6Bignum11BigitOrZeroEi.exit: ; preds = %38, %40 %.0.i = phi i32 [ %44, %40 ], [ 0, %38 ] %.not.i52 = icmp sgt i32 %.043.in78, %14 - %45 = icmp sle i32 %.043.in78, %13 - %or.cond.i53 = or i1 %45, %.not.i52 - br i1 %or.cond.i53, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55, label %46 + %54 = icmp sle i32 %.043.in78, %13 + %or.cond.i53 = or i1 %54, %.not.i52 + br i1 %or.cond.i53, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55, label %55 -46: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit - %47 = sub nsw i32 %.04380, %13 +55: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit + %56 = sub nsw i32 %.04380, %13 %48 = zext nneg i32 %47 to i64 %49 = getelementptr inbounds nuw [128 x i32], ptr %36, i64 0, i64 %48 %50 = load i32, ptr %49, align 4, !tbaa !9 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55 -_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, %46 +_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, %55 %.0.i54 = phi i32 [ %50, %46 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit ] %.not.i56 = icmp sgt i32 %.043.in78, %24 - %51 = icmp sle i32 %.043.in78, %23 - %or.cond.i57 = or i1 %51, %.not.i56 - br i1 %or.cond.i57, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59, label %52 + %59 = icmp sle i32 %.043.in78, %23 + %or.cond.i57 = or i1 %59, %.not.i56 + br i1 %or.cond.i57, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59, label %60 -52: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55 - %53 = sub nsw i32 %.04380, %23 +60: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55 + %61 = sub nsw i32 %.04380, %23 %54 = zext nneg i32 %53 to i64 - %55 = getelementptr inbounds nuw [128 x i32], ptr %37, i64 0, i64 %54 + %55 = getelementptr inbounds nuw [128 x i32], ptr %42, i64 0, i64 %54 %56 = load i32, ptr %55, align 4, !tbaa !9 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59 -_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55, %52 +_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55, %60 %.0.i58 = phi i32 [ %56, %52 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit55 ] - %57 = add i32 %.0.i54, %.0.i - %58 = add i32 %.0.i58, %.04079 - %59 = icmp ugt i32 %57, %58 - br i1 %59, label %.thread, label %60 - -60: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59 - %61 = sub nuw i32 %58, %57 - %62 = icmp ugt i32 %61, 1 - br i1 %62, label %.thread, label %63 - -63: ; preds = %60 - %64 = shl nuw nsw i32 %61, 28 + %64 = add i32 %.0.i54, %.0.i + %65 = add i32 %.0.i58, %.04079 + %66 = icmp ugt i32 %64, %65 + br i1 %66, label %.thread, label %67 + +67: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59 + %68 = sub nuw i32 %65, %64 + %69 = icmp ugt i32 %68, 1 + br i1 %69, label %.thread, label %70 + +70: ; preds = %67 + %71 = shl nuw nsw i32 %68, 28 %.not50.not.not = icmp sgt i32 %.04380, %34 br i1 %.not50.not.not, label %38, label %.thread.loopexit, !llvm.loop !51 -.thread.loopexit: ; preds = %63 - %65 = icmp ne i32 %58, %57 - %66 = sext i1 %65 to i32 +.thread.loopexit: ; preds = %70 + %72 = icmp ne i32 %65, %64 + %73 = sext i1 %72 to i32 br label %.thread -.thread: ; preds = %60, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59, %30, %.thread.loopexit, %28, %26, %16 - %.0 = phi i32 [ -1, %16 ], [ 1, %26 ], [ -1, %28 ], [ 0, %30 ], [ %66, %.thread.loopexit ], [ 1, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59 ], [ -1, %60 ] +.thread: ; preds = %67, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59, %30, %.thread.loopexit, %28, %26, %16 + %.0 = phi i32 [ -1, %16 ], [ 1, %26 ], [ -1, %28 ], [ 0, %30 ], [ %73, %.thread.loopexit ], [ 1, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit59 ], [ -1, %60 ] ret i32 %.0 } diff --git a/bench/ffmpeg/optimized/aacsbr_fixed.ll b/bench/ffmpeg/optimized/aacsbr_fixed.ll index 04bb8b66d9f..d6a9bfd666a 100644 --- a/bench/ffmpeg/optimized/aacsbr_fixed.ll +++ b/bench/ffmpeg/optimized/aacsbr_fixed.ll @@ -8912,7 +8912,7 @@ define internal fastcc range(i32 -1, 1) i32 @read_sbr_grid(ptr noundef readonly i32 0, label %44 i32 1, label %84 i32 2, label %161 - i32 3, label %225 + i32 3, label %230 ] 44: ; preds = %4 @@ -8955,18 +8955,18 @@ define internal fastcc range(i32 -1, 1) i32 @read_sbr_grid(ptr noundef readonly %62 = lshr i8 %.lhs.trunc, %61 %63 = tail call i32 @llvm.umax.i32(i32 %45, i32 2) %smax = add nsw i32 %63, -1 - %wide.trip.count284 = zext nneg i32 %smax to i64 + %wide.trip.count279 = zext nneg i32 %smax to i64 br label %.lr.ph241 .lr.ph241: ; preds = %.lr.ph241.preheader, %.lr.ph241 %64 = phi i8 [ 0, %.lr.ph241.preheader ], [ %65, %.lr.ph241 ] - %indvars.iv281 = phi i64 [ 0, %.lr.ph241.preheader ], [ %indvars.iv.next282, %.lr.ph241 ] + %indvars.iv276 = phi i64 [ 0, %.lr.ph241.preheader ], [ %indvars.iv.next277, %.lr.ph241 ] %65 = add i8 %64, %62 - %indvars.iv.next282 = add nuw nsw i64 %indvars.iv281, 1 - %66 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv.next282 + %indvars.iv.next277 = add nuw nsw i64 %indvars.iv276, 1 + %66 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv.next277 store i8 %65, ptr %66, align 1, !tbaa !9 - %exitcond285.not = icmp eq i64 %indvars.iv.next282, %wide.trip.count284 - br i1 %exitcond285.not, label %._crit_edge242, label %.lr.ph241, !llvm.loop !221 + %exitcond280.not = icmp eq i64 %indvars.iv.next277, %wide.trip.count279 + br i1 %exitcond280.not, label %._crit_edge242, label %.lr.ph241, !llvm.loop !221 ._crit_edge242: ; preds = %.lr.ph241, %.thread %67 = load i32, ptr %19, align 8, !tbaa !35 @@ -9055,11 +9055,11 @@ define internal fastcc range(i32 -1, 1) i32 @read_sbr_grid(ptr noundef readonly br i1 %exitcond275.not, label %._crit_edge235.loopexit, label %.lr.ph234, !llvm.loop !222 ._crit_edge235.loopexit: ; preds = %.lr.ph234 - %.pre296 = load i32, ptr %5, align 8, !tbaa !119 + %.pre291 = load i32, ptr %5, align 8, !tbaa !119 br label %._crit_edge235 ._crit_edge235: ; preds = %._crit_edge235.loopexit, %84 - %125 = phi i32 [ %.pre296, %._crit_edge235.loopexit ], [ %95, %84 ] + %125 = phi i32 [ %.pre291, %._crit_edge235.loopexit ], [ %95, %84 ] %126 = sext i32 %125 to i64 %127 = getelementptr inbounds [6 x i8], ptr @ceil_log2, i64 0, i64 %126 %128 = load i8, ptr %127, align 1, !tbaa !9 @@ -9080,13 +9080,13 @@ define internal fastcc range(i32 -1, 1) i32 @read_sbr_grid(ptr noundef readonly %143 = tail call i32 @llvm.umin.i32(i32 %131, i32 %142) store i32 %143, ptr %19, align 8, !tbaa !35 %144 = icmp sgt i32 %125, 0 - br i1 %144, label %.lr.ph238.preheader, label %get_bits1_vector.exit + br i1 %144, label %.lr.ph238, label %get_bits1_vector.exit -.lr.ph238.preheader: ; preds = %._crit_edge235 +.lr.ph238: ; preds = %._crit_edge235 %wide.trip.count279 = zext nneg i32 %125 to i64 br label %.lr.ph238 -.lr.ph238: ; preds = %.lr.ph238.preheader, %.lr.ph238 +.lr.ph238:; preds = %.lr.ph238.preheader, %.lr.ph238 %indvars.iv276 = phi i64 [ 0, %.lr.ph238.preheader ], [ %indvars.iv.next277, %.lr.ph238 ] %145 = load i32, ptr %19, align 8, !tbaa !35 %146 = load ptr, ptr %2, align 8, !tbaa !49 @@ -9102,24 +9102,24 @@ define internal fastcc range(i32 -1, 1) i32 @read_sbr_grid(ptr noundef readonly %155 = and i32 %145, 7 %156 = shl nuw nsw i32 %154, %155 store i32 %spec.select.i202, ptr %19, align 8, !tbaa !35 - %157 = trunc i32 %156 to i8 - %158 = lshr i8 %157, 7 - %159 = sub nsw i64 %126, %indvars.iv276 + %158 = trunc i32 %156 to i8 + %159 = lshr i8 %158, 7 + %160 = sub nsw i64 %126, %indvars.iv276 %160 = getelementptr inbounds nuw [9 x i8], ptr %7, i64 0, i64 %159 store i8 %158, ptr %160, align 1, !tbaa !9 %indvars.iv.next277 = add nuw nsw i64 %indvars.iv276, 1 %exitcond280.not = icmp eq i64 %indvars.iv.next277, %wide.trip.count279 br i1 %exitcond280.not, label %get_bits1_vector.exit, label %.lr.ph238, !llvm.loop !223 -161: ; preds = %4 +161:; preds = %4 %162 = trunc nuw nsw i32 %41 to i8 store i8 %162, ptr %14, align 8, !tbaa !9 %163 = load i32, ptr %19, align 8, !tbaa !35 %164 = load i32, ptr %21, align 8, !tbaa !37 - %165 = load ptr, ptr %2, align 8, !tbaa !49 + %168 = load ptr, ptr %2, align 8, !tbaa !49 %166 = lshr i32 %163, 3 %167 = zext nneg i32 %166 to i64 - %168 = getelementptr inbounds nuw i8, ptr %165, i64 %167 + %168 = getelementptr inbounds nuw i8, ptr %168, i64 %167 %169 = load i32, ptr %168, align 1, !tbaa !9 %170 = tail call i32 @llvm.bswap.i32(i32 %169) %171 = and i32 %163, 7 @@ -9138,383 +9138,383 @@ define internal fastcc range(i32 -1, 1) i32 @read_sbr_grid(ptr noundef readonly .lr.ph229.preheader: ; preds = %161 %wide.trip.count268 = zext nneg i32 %173 to i64 - %.pre295 = load i8, ptr %14, align 1, !tbaa !9 + %.pre290 = load i8, ptr %14, align 1, !tbaa !9 br label %.lr.ph229 .lr.ph229: ; preds = %.lr.ph229.preheader, %.lr.ph229 - %179 = phi i8 [ %.pre295, %.lr.ph229.preheader ], [ %194, %.lr.ph229 ] + %184 = phi i8 [ %.pre290, %.lr.ph229.preheader ], [ %199, %.lr.ph229 ] %indvars.iv265 = phi i64 [ 0, %.lr.ph229.preheader ], [ %indvars.iv.next266, %.lr.ph229 ] - %180 = load i32, ptr %19, align 8, !tbaa !35 - %181 = load i32, ptr %21, align 8, !tbaa !37 - %182 = load ptr, ptr %2, align 8, !tbaa !49 - %183 = lshr i32 %180, 3 - %184 = zext nneg i32 %183 to i64 - %185 = getelementptr inbounds nuw i8, ptr %182, i64 %184 - %186 = load i32, ptr %185, align 1, !tbaa !9 - %187 = tail call i32 @llvm.bswap.i32(i32 %186) - %188 = and i32 %180, 7 - %189 = shl i32 %187, %188 - %190 = add i32 %180, 2 - %191 = tail call i32 @llvm.umin.i32(i32 %181, i32 %190) - store i32 %191, ptr %19, align 8, !tbaa !35 - %sh.diff210 = lshr i32 %189, 29 + %185 = load i32, ptr %19, align 8, !tbaa !35 + %186 = load i32, ptr %21, align 8, !tbaa !37 + %187 = load ptr, ptr %2, align 8, !tbaa !49 + %188 = lshr i32 %185, 3 + %189 = zext nneg i32 %188 to i64 + %190 = getelementptr inbounds nuw i8, ptr %187, i64 %189 + %191 = load i32, ptr %190, align 1, !tbaa !9 + %192 = tail call i32 @llvm.bswap.i32(i32 %191) + %193 = and i32 %185, 7 + %194 = shl i32 %192, %193 + %195 = add i32 %185, 2 + %196 = tail call i32 @llvm.umin.i32(i32 %186, i32 %195) + store i32 %196, ptr %19, align 8, !tbaa !35 + %sh.diff210 = lshr i32 %194, 29 %tr.sh.diff211 = trunc nuw nsw i32 %sh.diff210 to i8 - %192 = and i8 %tr.sh.diff211, 6 - %193 = add i8 %179, 2 - %194 = add i8 %193, %192 + %197 = and i8 %tr.sh.diff211, 6 + %198 = add i8 %184, 2 + %199 = add i8 %198, %197 %indvars.iv.next266 = add nuw nsw i64 %indvars.iv265, 1 - %195 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv.next266 - store i8 %194, ptr %195, align 1, !tbaa !9 + %200 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv.next266 + store i8 %199, ptr %200, align 1, !tbaa !9 %exitcond269.not = icmp eq i64 %indvars.iv.next266, %wide.trip.count268 br i1 %exitcond269.not, label %._crit_edge230, label %.lr.ph229, !llvm.loop !224 ._crit_edge230: ; preds = %.lr.ph229, %161 - %196 = getelementptr inbounds nuw [6 x i8], ptr @ceil_log2, i64 0, i64 %177 - %197 = load i8, ptr %196, align 1, !tbaa !9 - %198 = sext i8 %197 to i32 - %199 = load i32, ptr %19, align 8, !tbaa !35 - %200 = load i32, ptr %21, align 8, !tbaa !37 - %201 = load ptr, ptr %2, align 8, !tbaa !49 - %202 = lshr i32 %199, 3 - %203 = zext nneg i32 %202 to i64 - %204 = getelementptr inbounds nuw i8, ptr %201, i64 %203 - %205 = load i32, ptr %204, align 1, !tbaa !9 - %206 = add i32 %199, %198 - %207 = tail call i32 @llvm.umin.i32(i32 %200, i32 %206) - store i32 %207, ptr %19, align 8, !tbaa !35 - %208 = getelementptr inbounds nuw i8, ptr %3, i64 13 - br label %209 - -209: ; preds = %._crit_edge230, %209 + %201 = getelementptr inbounds nuw [6 x i8], ptr @ceil_log2, i64 0, i64 %177 + %202 = load i8, ptr %201, align 1, !tbaa !9 + %203 = sext i8 %202 to i32 + %204 = load i32, ptr %19, align 8, !tbaa !35 + %205 = load i32, ptr %21, align 8, !tbaa !37 + %206 = load ptr, ptr %2, align 8, !tbaa !49 + %207 = lshr i32 %204, 3 + %208 = zext nneg i32 %207 to i64 + %209 = getelementptr inbounds nuw i8, ptr %206, i64 %208 + %210 = load i32, ptr %209, align 1, !tbaa !9 + %211 = add i32 %204, %203 + %212 = tail call i32 @llvm.umin.i32(i32 %205, i32 %211) + store i32 %212, ptr %19, align 8, !tbaa !35 + %213 = getelementptr inbounds nuw i8, ptr %3, i64 13 + br label %214 + +214: ; preds = %._crit_edge230, %214 %indvars.iv270 = phi i64 [ 0, %._crit_edge230 ], [ %indvars.iv.next271, %209 ] - %210 = load i32, ptr %19, align 8, !tbaa !35 - %211 = load ptr, ptr %2, align 8, !tbaa !49 - %212 = lshr i32 %210, 3 - %213 = zext nneg i32 %212 to i64 - %214 = getelementptr inbounds nuw i8, ptr %211, i64 %213 - %215 = load i8, ptr %214, align 1, !tbaa !9 - %216 = load i32, ptr %21, align 8, !tbaa !37 - %217 = icmp slt i32 %210, %216 - %218 = zext i1 %217 to i32 - %spec.select.i203 = add i32 %210, %218 - %219 = zext i8 %215 to i32 - %220 = and i32 %210, 7 - %221 = shl nuw nsw i32 %219, %220 + %215 = load i32, ptr %19, align 8, !tbaa !35 + %216 = load ptr, ptr %2, align 8, !tbaa !49 + %217 = lshr i32 %215, 3 + %218 = zext nneg i32 %217 to i64 + %219 = getelementptr inbounds nuw i8, ptr %216, i64 %218 + %220 = load i8, ptr %219, align 1, !tbaa !9 + %221 = load i32, ptr %21, align 8, !tbaa !37 + %222 = icmp slt i32 %215, %221 + %223 = zext i1 %222 to i32 + %spec.select.i203 = add i32 %215, %223 + %224 = zext i8 %220 to i32 + %225 = and i32 %215, 7 + %226 = shl nuw nsw i32 %224, %225 store i32 %spec.select.i203, ptr %19, align 8, !tbaa !35 - %222 = trunc i32 %221 to i8 - %223 = lshr i8 %222, 7 - %224 = getelementptr inbounds nuw i8, ptr %208, i64 %indvars.iv270 - store i8 %223, ptr %224, align 1, !tbaa !9 + %227 = trunc i32 %226 to i8 + %228 = lshr i8 %227, 7 + %229 = getelementptr inbounds nuw i8, ptr %213, i64 %indvars.iv270 + store i8 %228, ptr %229, align 1, !tbaa !9 %indvars.iv.next271 = add nuw nsw i64 %indvars.iv270, 1 %exitcond274.not = icmp eq i64 %indvars.iv.next271, %177 - br i1 %exitcond274.not, label %get_bits1_vector.exit.loopexit256, label %209, !llvm.loop !117 - -225: ; preds = %4 - %226 = trunc nuw nsw i32 %41 to i8 - store i8 %226, ptr %14, align 8, !tbaa !9 - %227 = load i32, ptr %19, align 8, !tbaa !35 - %228 = load i32, ptr %21, align 8, !tbaa !37 - %229 = load ptr, ptr %2, align 8, !tbaa !49 - %230 = lshr i32 %227, 3 - %231 = zext nneg i32 %230 to i64 - %232 = getelementptr inbounds nuw i8, ptr %229, i64 %231 - %233 = load i32, ptr %232, align 1, !tbaa !9 - %234 = add i32 %227, 2 - %235 = tail call i32 @llvm.umin.i32(i32 %228, i32 %234) - store i32 %235, ptr %19, align 8, !tbaa !35 - %236 = lshr i32 %235, 3 - %237 = zext nneg i32 %236 to i64 - %238 = getelementptr inbounds nuw i8, ptr %229, i64 %237 - %239 = load i32, ptr %238, align 1, !tbaa !9 - %240 = tail call i32 @llvm.bswap.i32(i32 %239) - %241 = and i32 %235, 7 - %242 = shl i32 %240, %241 - %243 = lshr i32 %242, 30 - %244 = add i32 %235, 2 - %245 = tail call i32 @llvm.umin.i32(i32 %228, i32 %244) - store i32 %245, ptr %19, align 8, !tbaa !35 - %246 = lshr i32 %245, 3 - %247 = zext nneg i32 %246 to i64 - %248 = getelementptr inbounds nuw i8, ptr %229, i64 %247 - %249 = load i32, ptr %248, align 1, !tbaa !9 - %250 = tail call i32 @llvm.bswap.i32(i32 %249) - %251 = and i32 %245, 7 - %252 = shl i32 %250, %251 - %253 = lshr i32 %252, 30 - %254 = add i32 %245, 2 - %255 = tail call i32 @llvm.umin.i32(i32 %228, i32 %254) - store i32 %255, ptr %19, align 8, !tbaa !35 - %256 = add nuw nsw i32 %253, %243 - %257 = add nuw nsw i32 %256, 1 - %258 = icmp samesign ugt i32 %256, 4 - br i1 %258, label %259, label %262 - -259: ; preds = %225 - %260 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %261 = load ptr, ptr %260, align 8, !tbaa !61 - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %261, i32 noundef 16, ptr noundef nonnull @.str.24, i32 noundef %257) #13 + br i1 %exitcond274.not, label %get_bits1_vector.exit.loopexit256, label %214, !llvm.loop !117 + +230: ; preds = %4 + %231 = trunc nuw nsw i32 %41 to i8 + store i8 %231, ptr %14, align 8, !tbaa !9 + %232 = load i32, ptr %19, align 8, !tbaa !35 + %233 = load i32, ptr %21, align 8, !tbaa !37 + %234 = load ptr, ptr %2, align 8, !tbaa !49 + %235 = lshr i32 %232, 3 + %236 = zext nneg i32 %235 to i64 + %237 = getelementptr inbounds nuw i8, ptr %234, i64 %236 + %238 = load i32, ptr %237, align 1, !tbaa !9 + %239 = add i32 %232, 2 + %240 = tail call i32 @llvm.umin.i32(i32 %233, i32 %239) + store i32 %240, ptr %19, align 8, !tbaa !35 + %241 = lshr i32 %240, 3 + %242 = zext nneg i32 %241 to i64 + %243 = getelementptr inbounds nuw i8, ptr %234, i64 %242 + %244 = load i32, ptr %243, align 1, !tbaa !9 + %245 = tail call i32 @llvm.bswap.i32(i32 %244) + %246 = and i32 %240, 7 + %247 = shl i32 %245, %246 + %248 = lshr i32 %247, 30 + %249 = add i32 %240, 2 + %250 = tail call i32 @llvm.umin.i32(i32 %233, i32 %249) + store i32 %250, ptr %19, align 8, !tbaa !35 + %251 = lshr i32 %250, 3 + %252 = zext nneg i32 %251 to i64 + %253 = getelementptr inbounds nuw i8, ptr %234, i64 %252 + %254 = load i32, ptr %253, align 1, !tbaa !9 + %255 = tail call i32 @llvm.bswap.i32(i32 %254) + %256 = and i32 %250, 7 + %257 = shl i32 %255, %256 + %258 = lshr i32 %257, 30 + %259 = add i32 %250, 2 + %260 = tail call i32 @llvm.umin.i32(i32 %233, i32 %259) + store i32 %260, ptr %19, align 8, !tbaa !35 + %261 = add nuw nsw i32 %258, %248 + %262 = add nuw nsw i32 %261, 1 + %263 = icmp samesign ugt i32 %261, 4 + br i1 %263, label %264, label %267 + +264: ; preds = %230 + %265 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %266 = load ptr, ptr %265, align 8, !tbaa !61 + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %266, i32 noundef 16, ptr noundef nonnull @.str.24, i32 noundef %262) #13 br label %415 -262: ; preds = %225 - %263 = tail call i32 @llvm.bswap.i32(i32 %233) - %264 = and i32 %227, 7 - %265 = shl i32 %263, %264 - %266 = lshr i32 %265, 30 - store i32 %257, ptr %5, align 8, !tbaa !119 - %267 = trunc nuw nsw i32 %266 to i8 - %268 = or disjoint i8 %267, 16 - %269 = zext nneg i32 %257 to i64 - %270 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %269 - store i8 %268, ptr %270, align 1, !tbaa !9 - %.not250 = icmp ult i32 %242, 1073741824 +267: ; preds = %230 + %268 = tail call i32 @llvm.bswap.i32(i32 %238) + %269 = and i32 %232, 7 + %270 = shl i32 %268, %269 + %271 = lshr i32 %270, 30 + store i32 %262, ptr %5, align 8, !tbaa !119 + %272 = trunc nuw nsw i32 %271 to i8 + %273 = or disjoint i8 %272, 16 + %274 = zext nneg i32 %262 to i64 + %275 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %274 + store i8 %273, ptr %275, align 1, !tbaa !9 + %.not250 = icmp ult i32 %247, 1073741824 br i1 %.not250, label %.preheader220, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %262 - %wide.trip.count = zext nneg i32 %243 to i64 +.lr.ph.preheader: ; preds = %267 + %wide.trip.count = zext nneg i32 %248 to i64 %.pre = load i8, ptr %14, align 1, !tbaa !9 br label %.lr.ph -.preheader220: ; preds = %.lr.ph, %262 - %.not251 = icmp ult i32 %252, 1073741824 +.preheader220: ; preds = %.lr.ph, %267 + %.not251 = icmp ult i32 %257, 1073741824 br i1 %.not251, label %._crit_edge, label %.lr.ph223 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %271 = phi i8 [ %.pre, %.lr.ph.preheader ], [ %286, %.lr.ph ] + %276 = phi i8 [ %.pre, %.lr.ph.preheader ], [ %291, %.lr.ph ] %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %272 = load i32, ptr %19, align 8, !tbaa !35 - %273 = load i32, ptr %21, align 8, !tbaa !37 - %274 = load ptr, ptr %2, align 8, !tbaa !49 - %275 = lshr i32 %272, 3 - %276 = zext nneg i32 %275 to i64 - %277 = getelementptr inbounds nuw i8, ptr %274, i64 %276 - %278 = load i32, ptr %277, align 1, !tbaa !9 - %279 = tail call i32 @llvm.bswap.i32(i32 %278) - %280 = and i32 %272, 7 - %281 = shl i32 %279, %280 - %282 = add i32 %272, 2 - %283 = tail call i32 @llvm.umin.i32(i32 %273, i32 %282) - store i32 %283, ptr %19, align 8, !tbaa !35 - %sh.diff207 = lshr i32 %281, 29 + %277 = load i32, ptr %19, align 8, !tbaa !35 + %278 = load i32, ptr %21, align 8, !tbaa !37 + %279 = load ptr, ptr %2, align 8, !tbaa !49 + %280 = lshr i32 %277, 3 + %281 = zext nneg i32 %280 to i64 + %282 = getelementptr inbounds nuw i8, ptr %279, i64 %281 + %283 = load i32, ptr %282, align 1, !tbaa !9 + %284 = tail call i32 @llvm.bswap.i32(i32 %283) + %285 = and i32 %277, 7 + %286 = shl i32 %284, %285 + %287 = add i32 %277, 2 + %288 = tail call i32 @llvm.umin.i32(i32 %278, i32 %287) + store i32 %288, ptr %19, align 8, !tbaa !35 + %sh.diff207 = lshr i32 %286, 29 %tr.sh.diff208 = trunc nuw nsw i32 %sh.diff207 to i8 - %284 = and i8 %tr.sh.diff208, 6 - %285 = add i8 %271, 2 - %286 = add i8 %285, %284 + %289 = and i8 %tr.sh.diff208, 6 + %290 = add i8 %276, 2 + %291 = add i8 %290, %289 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %287 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv.next - store i8 %286, ptr %287, align 1, !tbaa !9 + %292 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv.next + store i8 %291, ptr %292, align 1, !tbaa !9 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.preheader220, label %.lr.ph, !llvm.loop !225 .lr.ph223: ; preds = %.preheader220, %.lr.ph223 - %.6222 = phi i32 [ %312, %.lr.ph223 ], [ 0, %.preheader220 ] - %288 = load i32, ptr %5, align 8, !tbaa !119 - %289 = sub nsw i32 %288, %.6222 - %290 = sext i32 %289 to i64 - %291 = getelementptr inbounds [9 x i8], ptr %14, i64 0, i64 %290 - %292 = load i8, ptr %291, align 1, !tbaa !9 - %293 = load i32, ptr %19, align 8, !tbaa !35 - %294 = load i32, ptr %21, align 8, !tbaa !37 - %295 = load ptr, ptr %2, align 8, !tbaa !49 - %296 = lshr i32 %293, 3 - %297 = zext nneg i32 %296 to i64 - %298 = getelementptr inbounds nuw i8, ptr %295, i64 %297 - %299 = load i32, ptr %298, align 1, !tbaa !9 - %300 = tail call i32 @llvm.bswap.i32(i32 %299) - %301 = and i32 %293, 7 - %302 = shl i32 %300, %301 - %303 = add i32 %293, 2 - %304 = tail call i32 @llvm.umin.i32(i32 %294, i32 %303) - store i32 %304, ptr %19, align 8, !tbaa !35 - %sh.diff = lshr i32 %302, 29 + %.6222 = phi i32 [ %317, %.lr.ph223 ], [ 0, %.preheader220 ] + %293 = load i32, ptr %5, align 8, !tbaa !119 + %294 = sub nsw i32 %293, %.6222 + %295 = sext i32 %294 to i64 + %296 = getelementptr inbounds [9 x i8], ptr %14, i64 0, i64 %295 + %297 = load i8, ptr %296, align 1, !tbaa !9 + %298 = load i32, ptr %19, align 8, !tbaa !35 + %299 = load i32, ptr %21, align 8, !tbaa !37 + %300 = load ptr, ptr %2, align 8, !tbaa !49 + %301 = lshr i32 %298, 3 + %302 = zext nneg i32 %301 to i64 + %303 = getelementptr inbounds nuw i8, ptr %300, i64 %302 + %304 = load i32, ptr %303, align 1, !tbaa !9 + %305 = tail call i32 @llvm.bswap.i32(i32 %304) + %306 = and i32 %298, 7 + %307 = shl i32 %305, %306 + %308 = add i32 %298, 2 + %309 = tail call i32 @llvm.umin.i32(i32 %299, i32 %308) + store i32 %309, ptr %19, align 8, !tbaa !35 + %sh.diff = lshr i32 %307, 29 %tr.sh.diff = trunc nuw nsw i32 %sh.diff to i8 - %305 = and i8 %tr.sh.diff, 6 - %306 = add i8 %292, -2 - %307 = sub i8 %306, %305 - %308 = xor i32 %.6222, -1 - %309 = add i32 %288, %308 - %310 = sext i32 %309 to i64 - %311 = getelementptr inbounds [9 x i8], ptr %14, i64 0, i64 %310 - store i8 %307, ptr %311, align 1, !tbaa !9 - %312 = add nuw nsw i32 %.6222, 1 - %exitcond259.not = icmp eq i32 %312, %253 + %310 = and i8 %tr.sh.diff, 6 + %311 = add i8 %297, -2 + %312 = sub i8 %311, %310 + %313 = xor i32 %.6222, -1 + %314 = add i32 %293, %313 + %315 = sext i32 %314 to i64 + %316 = getelementptr inbounds [9 x i8], ptr %14, i64 0, i64 %315 + store i8 %312, ptr %316, align 1, !tbaa !9 + %317 = add nuw nsw i32 %.6222, 1 + %exitcond259.not = icmp eq i32 %317, %258 br i1 %exitcond259.not, label %._crit_edge.loopexit, label %.lr.ph223, !llvm.loop !226 ._crit_edge.loopexit: ; preds = %.lr.ph223 - %.pre294 = load i32, ptr %5, align 8, !tbaa !119 + %.pre289 = load i32, ptr %5, align 8, !tbaa !119 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader220 - %313 = phi i32 [ %.pre294, %._crit_edge.loopexit ], [ %257, %.preheader220 ] - %314 = sext i32 %313 to i64 - %315 = getelementptr inbounds [6 x i8], ptr @ceil_log2, i64 0, i64 %314 - %316 = load i8, ptr %315, align 1, !tbaa !9 - %317 = sext i8 %316 to i32 - %318 = load i32, ptr %19, align 8, !tbaa !35 - %319 = load i32, ptr %21, align 8, !tbaa !37 - %320 = load ptr, ptr %2, align 8, !tbaa !49 - %321 = lshr i32 %318, 3 - %322 = zext nneg i32 %321 to i64 - %323 = getelementptr inbounds nuw i8, ptr %320, i64 %322 - %324 = load i32, ptr %323, align 1, !tbaa !9 - %325 = tail call i32 @llvm.bswap.i32(i32 %324) - %326 = and i32 %318, 7 - %327 = shl i32 %325, %326 - %328 = sub nsw i32 32, %317 - %329 = lshr i32 %327, %328 - %330 = add i32 %318, %317 - %331 = tail call i32 @llvm.umin.i32(i32 %319, i32 %330) - store i32 %331, ptr %19, align 8, !tbaa !35 - %332 = getelementptr inbounds nuw i8, ptr %3, i64 13 - %333 = icmp sgt i32 %313, 0 - br i1 %333, label %.lr.ph226.preheader, label %get_bits1_vector.exit + %318 = phi i32 [ %.pre289, %._crit_edge.loopexit ], [ %262, %.preheader220 ] + %319 = sext i32 %318 to i64 + %320 = getelementptr inbounds [6 x i8], ptr @ceil_log2, i64 0, i64 %319 + %321 = load i8, ptr %320, align 1, !tbaa !9 + %322 = sext i8 %321 to i32 + %323 = load i32, ptr %19, align 8, !tbaa !35 + %324 = load i32, ptr %21, align 8, !tbaa !37 + %325 = load ptr, ptr %2, align 8, !tbaa !49 + %326 = lshr i32 %323, 3 + %327 = zext nneg i32 %326 to i64 + %328 = getelementptr inbounds nuw i8, ptr %325, i64 %327 + %329 = load i32, ptr %328, align 1, !tbaa !9 + %330 = tail call i32 @llvm.bswap.i32(i32 %329) + %331 = and i32 %323, 7 + %332 = shl i32 %330, %331 + %333 = sub nsw i32 32, %322 + %334 = lshr i32 %332, %333 + %335 = add i32 %323, %322 + %336 = tail call i32 @llvm.umin.i32(i32 %324, i32 %335) + store i32 %336, ptr %19, align 8, !tbaa !35 + %337 = getelementptr inbounds nuw i8, ptr %3, i64 13 + %338 = icmp sgt i32 %318, 0 + br i1 %338, label %.lr.ph226.preheader, label %get_bits1_vector.exit .lr.ph226.preheader: ; preds = %._crit_edge - %wide.trip.count263 = zext nneg i32 %313 to i64 + %wide.trip.count263 = zext nneg i32 %318 to i64 br label %.lr.ph226 .lr.ph226: ; preds = %.lr.ph226.preheader, %.lr.ph226 %indvars.iv260 = phi i64 [ 0, %.lr.ph226.preheader ], [ %indvars.iv.next261, %.lr.ph226 ] - %334 = load i32, ptr %19, align 8, !tbaa !35 - %335 = load ptr, ptr %2, align 8, !tbaa !49 - %336 = lshr i32 %334, 3 - %337 = zext nneg i32 %336 to i64 - %338 = getelementptr inbounds nuw i8, ptr %335, i64 %337 - %339 = load i8, ptr %338, align 1, !tbaa !9 - %340 = load i32, ptr %21, align 8, !tbaa !37 - %341 = icmp slt i32 %334, %340 - %342 = zext i1 %341 to i32 - %spec.select.i204 = add i32 %334, %342 - %343 = zext i8 %339 to i32 - %344 = and i32 %334, 7 - %345 = shl nuw nsw i32 %343, %344 + %339 = load i32, ptr %19, align 8, !tbaa !35 + %340 = load ptr, ptr %2, align 8, !tbaa !49 + %341 = lshr i32 %339, 3 + %342 = zext nneg i32 %341 to i64 + %343 = getelementptr inbounds nuw i8, ptr %340, i64 %342 + %344 = load i8, ptr %343, align 1, !tbaa !9 + %345 = load i32, ptr %21, align 8, !tbaa !37 + %346 = icmp slt i32 %339, %345 + %347 = zext i1 %346 to i32 + %spec.select.i204 = add i32 %339, %347 + %348 = zext i8 %344 to i32 + %349 = and i32 %339, 7 + %350 = shl nuw nsw i32 %348, %349 store i32 %spec.select.i204, ptr %19, align 8, !tbaa !35 - %346 = trunc i32 %345 to i8 - %347 = lshr i8 %346, 7 - %348 = getelementptr inbounds nuw i8, ptr %332, i64 %indvars.iv260 - store i8 %347, ptr %348, align 1, !tbaa !9 + %351 = trunc i32 %350 to i8 + %352 = lshr i8 %351, 7 + %353 = getelementptr inbounds nuw i8, ptr %337, i64 %indvars.iv260 + store i8 %352, ptr %353, align 1, !tbaa !9 %indvars.iv.next261 = add nuw nsw i64 %indvars.iv260, 1 %exitcond264.not = icmp eq i64 %indvars.iv.next261, %wide.trip.count263 br i1 %exitcond264.not, label %get_bits1_vector.exit, label %.lr.ph226, !llvm.loop !117 -default.unreachable299: ; preds = %4 +default.unreachable294: ; preds = %4 unreachable get_bits1_vector.exit.thread: ; preds = %.lr.ph245.preheader, %._crit_edge242 store i32 0, ptr %3, align 16, !tbaa !123 - br label %357 - -get_bits1_vector.exit.loopexit256: ; preds = %209 - %349 = tail call i32 @llvm.bswap.i32(i32 %205) - %350 = and i32 %199, 7 - %351 = shl i32 %349, %350 - %352 = sub nsw i32 32, %198 - %353 = lshr i32 %351, %352 + br label %362 + +get_bits1_vector.exit.loopexit256: ; preds = %214 + %354 = tail call i32 @llvm.bswap.i32(i32 %210) + %355 = and i32 %204, 7 + %356 = shl i32 %354, %355 + %357 = sub nsw i32 32, %203 + %358 = lshr i32 %356, %357 br label %get_bits1_vector.exit get_bits1_vector.exit: ; preds = %.lr.ph226, %.lr.ph238, %get_bits1_vector.exit.loopexit256, %._crit_edge, %._crit_edge235 - %354 = phi i32 [ %125, %._crit_edge235 ], [ %313, %._crit_edge ], [ %176, %get_bits1_vector.exit.loopexit256 ], [ %125, %.lr.ph238 ], [ %313, %.lr.ph226 ] - %.0186 = phi i32 [ %141, %._crit_edge235 ], [ %329, %._crit_edge ], [ %353, %get_bits1_vector.exit.loopexit256 ], [ %141, %.lr.ph238 ], [ %329, %.lr.ph226 ] + %359 = phi i32 [ %125, %._crit_edge235 ], [ %318, %._crit_edge ], [ %176, %get_bits1_vector.exit.loopexit256 ], [ %125, %.lr.ph238 ], [ %318, %.lr.ph226 ] + %.0186 = phi i32 [ %141, %._crit_edge235 ], [ %334, %._crit_edge ], [ %358, %get_bits1_vector.exit.loopexit256 ], [ %141, %.lr.ph238 ], [ %334, %.lr.ph226 ] store i32 %31, ptr %3, align 16, !tbaa !123 - %355 = icmp sgt i32 %.0186, -1 - br i1 %355, label %357, label %356 + %360 = icmp sgt i32 %.0186, -1 + br i1 %360, label %362, label %361 -356: ; preds = %get_bits1_vector.exit +361: ; preds = %get_bits1_vector.exit tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef null, i32 noundef 0, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.5, i32 noundef 739) #13 tail call void @abort() #14 unreachable -357: ; preds = %get_bits1_vector.exit.thread, %get_bits1_vector.exit - %358 = phi i32 [ %45, %get_bits1_vector.exit.thread ], [ %354, %get_bits1_vector.exit ] +362: ; preds = %get_bits1_vector.exit.thread, %get_bits1_vector.exit + %363 = phi i32 [ %45, %get_bits1_vector.exit.thread ], [ %359, %get_bits1_vector.exit ] %.0186206 = phi i32 [ 0, %get_bits1_vector.exit.thread ], [ %.0186, %get_bits1_vector.exit ] - %359 = add nsw i32 %358, 1 - %360 = icmp sgt i32 %.0186206, %359 - br i1 %360, label %361, label %.preheader + %364 = add nsw i32 %363, 1 + %365 = icmp sgt i32 %.0186206, %364 + br i1 %365, label %366, label %.preheader -.preheader: ; preds = %357 - %.not196246 = icmp slt i32 %358, 1 +.preheader: ; preds = %362 + %.not196246 = icmp slt i32 %363, 1 br i1 %.not196246, label %.preheader.._crit_edge249_crit_edge, label %.lr.ph248.preheader .preheader.._crit_edge249_crit_edge: ; preds = %.preheader - %.pre298 = load i8, ptr %14, align 8, !tbaa !9 + %.pre293 = load i8, ptr %14, align 8, !tbaa !9 br label %._crit_edge249 .lr.ph248.preheader: ; preds = %.preheader - %wide.trip.count292 = zext nneg i32 %359 to i64 - %.pre297 = load i8, ptr %14, align 1, !tbaa !9 + %wide.trip.count287 = zext nneg i32 %364 to i64 + %.pre292 = load i8, ptr %14, align 1, !tbaa !9 br label %.lr.ph248 -361: ; preds = %357 - %362 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %363 = load ptr, ptr %362, align 8, !tbaa !61 - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %363, i32 noundef 16, ptr noundef nonnull @.str.26, i32 noundef %.0186206) #13 +366: ; preds = %362 + %367 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %368 = load ptr, ptr %367, align 8, !tbaa !61 + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %368, i32 noundef 16, ptr noundef nonnull @.str.26, i32 noundef %.0186206) #13 br label %415 -364: ; preds = %.lr.ph248 - %indvars.iv.next290 = add nuw nsw i64 %indvars.iv289, 1 - %exitcond293.not = icmp eq i64 %indvars.iv.next290, %wide.trip.count292 - br i1 %exitcond293.not, label %._crit_edge249, label %.lr.ph248, !llvm.loop !227 - -.lr.ph248: ; preds = %.lr.ph248.preheader, %364 - %365 = phi i8 [ %.pre297, %.lr.ph248.preheader ], [ %367, %364 ] - %indvars.iv289 = phi i64 [ 1, %.lr.ph248.preheader ], [ %indvars.iv.next290, %364 ] - %366 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv289 - %367 = load i8, ptr %366, align 1, !tbaa !9 - %.not199 = icmp ult i8 %365, %367 - br i1 %.not199, label %364, label %368 - -368: ; preds = %.lr.ph248 - %369 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %370 = load ptr, ptr %369, align 8, !tbaa !61 - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %370, i32 noundef 16, ptr noundef nonnull @.str.27) #13 +369: ; preds = %.lr.ph248 + %indvars.iv.next285 = add nuw nsw i64 %indvars.iv284, 1 + %exitcond288.not = icmp eq i64 %indvars.iv.next285, %wide.trip.count287 + br i1 %exitcond288.not, label %._crit_edge249, label %.lr.ph248, !llvm.loop !227 + +.lr.ph248: ; preds = %.lr.ph248.preheader, %369 + %370 = phi i8 [ %.pre292, %.lr.ph248.preheader ], [ %372, %364 ] + %indvars.iv284 = phi i64 [ 1, %.lr.ph248.preheader ], [ %indvars.iv.next285, %364 ] + %371 = getelementptr inbounds nuw [9 x i8], ptr %14, i64 0, i64 %indvars.iv284 + %372 = load i8, ptr %371, align 1, !tbaa !9 + %.not199 = icmp ult i8 %370, %372 + br i1 %.not199, label %369, label %373 + +373: ; preds = %.lr.ph248 + %374 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %375 = load ptr, ptr %374, align 8, !tbaa !61 + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %375, i32 noundef 16, ptr noundef nonnull @.str.27) #13 br label %415 -._crit_edge249: ; preds = %364, %.preheader.._crit_edge249_crit_edge - %371 = phi i8 [ %.pre298, %.preheader.._crit_edge249_crit_edge ], [ %.pre297, %364 ] - %372 = icmp sgt i32 %358, 1 - %373 = select i1 %372, i32 2, i32 1 - %374 = getelementptr inbounds nuw i8, ptr %3, i64 24 - store i32 %373, ptr %374, align 8, !tbaa !122 - %375 = getelementptr inbounds nuw i8, ptr %3, i64 106642 - store i8 %371, ptr %375, align 2, !tbaa !9 - %376 = sext i32 %358 to i64 - %377 = getelementptr inbounds [9 x i8], ptr %14, i64 0, i64 %376 - %378 = load i8, ptr %377, align 1, !tbaa !9 - %379 = zext nneg i32 %373 to i64 - %380 = getelementptr inbounds nuw [3 x i8], ptr %375, i64 0, i64 %379 - store i8 %378, ptr %380, align 1, !tbaa !9 - br i1 %372, label %381, label %400 - -381: ; preds = %._crit_edge249 - %382 = icmp ult i32 %30, 1073741824 - br i1 %382, label %383, label %385 - -383: ; preds = %381 - %384 = lshr i32 %358, 1 +._crit_edge249: ; preds = %369, %.preheader.._crit_edge249_crit_edge + %376 = phi i8 [ %.pre293, %.preheader.._crit_edge249_crit_edge ], [ %.pre292, %364 ] + %377 = icmp sgt i32 %363, 1 + %378 = select i1 %377, i32 2, i32 1 + %379 = getelementptr inbounds nuw i8, ptr %3, i64 24 + store i32 %378, ptr %379, align 8, !tbaa !122 + %380 = getelementptr inbounds nuw i8, ptr %3, i64 106642 + store i8 %376, ptr %380, align 2, !tbaa !9 + %381 = sext i32 %363 to i64 + %382 = getelementptr inbounds [9 x i8], ptr %14, i64 0, i64 %381 + %383 = load i8, ptr %382, align 1, !tbaa !9 + %384 = zext nneg i32 %378 to i64 + %385 = getelementptr inbounds nuw [3 x i8], ptr %380, i64 0, i64 %384 + store i8 %383, ptr %385, align 1, !tbaa !9 + br i1 %377, label %386, label %400 + +386: ; preds = %._crit_edge249 + %387 = icmp ult i32 %30, 1073741824 + br i1 %387, label %388, label %390 + +388: ; preds = %386 + %389 = lshr i32 %363, 1 br label %395 -385: ; preds = %381 - %386 = and i32 %30, 1073741824 - %.not197 = icmp eq i32 %386, 0 - br i1 %.not197, label %390, label %387 +390: ; preds = %386 + %391 = and i32 %30, 1073741824 + %.not197 = icmp eq i32 %391, 0 + br i1 %.not197, label %395, label %392 -387: ; preds = %385 - %388 = tail call i32 @llvm.smax.i32(i32 %.0186206, i32 2) - %reass.sub = sub nsw i32 %358, %388 - %389 = add nsw i32 %reass.sub, 1 +392: ; preds = %390 + %393 = tail call i32 @llvm.smax.i32(i32 %.0186206, i32 2) + %reass.sub = sub nsw i32 %363, %393 + %394 = add nsw i32 %reass.sub, 1 br label %395 -390: ; preds = %385 +395: ; preds = %390 switch i32 %.0186206, label %393 [ i32 0, label %395 - i32 1, label %391 + i32 1, label %396 ] -391: ; preds = %390 - %392 = add nsw i32 %358, -1 +396: ; preds = %395 + %397 = add nsw i32 %363, -1 br label %395 -393: ; preds = %390 - %394 = add nsw i32 %.0186206, -1 +398: ; preds = %395 + %399 = add nsw i32 %.0186206, -1 br label %395 395: ; preds = %390, %387, %391, %393, %383 @@ -9540,23 +9540,23 @@ get_bits1_vector.exit: ; preds = %.lr.ph226, %.lr.ph2 %or.cond = and i1 %406, %407 br i1 %or.cond, label %408, label %410 -408: ; preds = %400 +408:; preds = %400 %409 = sub nsw i32 %359, %.0186206 store i32 %409, ptr %402, align 4, !tbaa !10 br label %415 -410: ; preds = %400 +410:; preds = %400 %411 = icmp eq i32 %31, 2 %412 = icmp samesign ugt i32 %.0186206, 1 %or.cond3 = and i1 %411, %412 br i1 %or.cond3, label %413, label %415 -413: ; preds = %410 +413:; preds = %410 %414 = add nsw i32 %.0186206, -1 store i32 %414, ptr %402, align 4, !tbaa !10 br label %415 -415: ; preds = %408, %413, %410, %368, %361, %259, %50 +415:; preds = %408, %413, %410, %368, %366, %259, %50 %.0184 = phi i32 [ -1, %361 ], [ -1, %368 ], [ -1, %50 ], [ -1, %259 ], [ 0, %410 ], [ 0, %413 ], [ 0, %408 ] ret i32 %.0184 } diff --git a/bench/ffmpeg/optimized/avf_showcwt.ll b/bench/ffmpeg/optimized/avf_showcwt.ll index 86516d7e28d..28ef11a04fd 100644 --- a/bench/ffmpeg/optimized/avf_showcwt.ll +++ b/bench/ffmpeg/optimized/avf_showcwt.ll @@ -1444,7 +1444,7 @@ define internal fastcc range(i32 -22, 1) i32 @compute_kernel(ptr noundef %0) unn %18 = tail call ptr @av_malloc_array(i64 noundef %17, i64 noundef 4) #13 store ptr %18, ptr %2, align 8, !tbaa !125 %.not = icmp eq ptr %18, null - br i1 %.not, label %115, label %.preheader161 + br i1 %.not, label %116, label %.preheader161 .preheader161: ; preds = %1 %19 = icmp sgt i32 %10, 0 @@ -1457,15 +1457,15 @@ define internal fastcc range(i32 -22, 1) i32 @compute_kernel(ptr noundef %0) unn %23 = sub nsw i32 0, %6 %24 = sitofp i32 %23 to float %25 = shl nsw i64 %17, 2 - %wide.trip.count226 = zext nneg i32 %10 to i64 + %wide.trip.count229 = zext nneg i32 %10 to i64 br label %26 26: ; preds = %.lr.ph186, %._crit_edge - %indvars.iv223 = phi i64 [ 0, %.lr.ph186 ], [ %indvars.iv.next224, %._crit_edge ] + %indvars.iv226 = phi i64 [ 0, %.lr.ph186 ], [ %indvars.iv.next227, %._crit_edge ] %.0128185 = phi i32 [ 2147483647, %.lr.ph186 ], [ %..0128, %._crit_edge ] - %.0130184 = phi i32 [ 0, %.lr.ph186 ], [ %104, %._crit_edge ] + %.0130184 = phi i32 [ 0, %.lr.ph186 ], [ %105, %._crit_edge ] %27 = load ptr, ptr %21, align 8, !tbaa !83 - %.idx = shl nuw nsw i64 %indvars.iv223, 3 + %.idx = shl nuw nsw i64 %indvars.iv226, 3 %28 = getelementptr inbounds nuw i8, ptr %27, i64 %.idx %29 = load float, ptr %28, align 4, !tbaa !76 %30 = getelementptr inbounds nuw i8, ptr %28, i64 4 @@ -1550,116 +1550,116 @@ define internal fastcc range(i32 -22, 1) i32 @compute_kernel(ptr noundef %0) unn %71 = sub i32 %70, %.0139 br label %.lr.ph175 -.lr.ph175: ; preds = %.lr.ph175.preheader, %81 - %indvars.iv218 = phi i32 [ %71, %.lr.ph175.preheader ], [ %indvars.iv.next219, %81 ] - %.0125174 = phi i32 [ %46, %.lr.ph175.preheader ], [ %82, %81 ] - %72 = sub nsw i32 %.0125174, %39 +.lr.ph175: ; preds = %.lr.ph175.preheader, %83 + %indvars.iv221 = phi i32 [ %71, %.lr.ph175.preheader ], [ %indvars.iv.next222, %81 ] + %indvars.iv215 = phi i32 [ %46, %.lr.ph175.preheader ], [ %indvars.iv.next216, %81 ] + %74 = sub nsw i32 %indvars.iv215, %39 %73 = zext nneg i32 %72 to i64 %74 = getelementptr inbounds nuw float, ptr %18, i64 %73 %75 = load float, ptr %74, align 4, !tbaa !76 %76 = fcmp nsz une float %75, 0.000000e+00 br i1 %76, label %77, label %81 -77: ; preds = %.lr.ph175 - %78 = fcmp nsz ogt float %75, 0x3810000000000000 - br i1 %78, label %79, label %83 +77:; preds = %.lr.ph175 + %80 = fcmp nsz ogt float %75, 0x3810000000000000 + br i1 %80, label %81, label %84 -79: ; preds = %77 - %80 = fpext nsz float %75 to double - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 48, ptr noundef nonnull @.str.13, double noundef %80) #13 - br label %83 +81: ; preds = %77 + %82 = fpext nsz float %75 to double + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 48, ptr noundef nonnull @.str.13, double noundef %82) #13 + br label %84 -81: ; preds = %.lr.ph175 - %82 = add nsw i32 %.0125174, -1 - %.not150.not = icmp sgt i32 %.0125174, %39 - %indvars.iv.next219 = add i32 %indvars.iv218, -1 +83: ; preds = %.lr.ph175 + %indvars.iv.next216 = add nsw i32 %indvars.iv215, -1 + %.not150.not = icmp sgt i32 %indvars.iv215, %39 + %indvars.iv.next222 = add i32 %indvars.iv221, -1 br i1 %.not150.not, label %.lr.ph175, label %.thread155, !llvm.loop !128 -83: ; preds = %77, %79 - %84 = icmp eq i32 %.0139, -2147483648 - %85 = icmp eq i32 %.0125174, 2147483647 - %or.cond = or i1 %84, %85 - br i1 %or.cond, label %.thread155, label %86 - -86: ; preds = %83 - %87 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv223 - store i32 %.0139, ptr %87, align 4, !tbaa !62 - %88 = getelementptr inbounds nuw i32, ptr %14, i64 %indvars.iv223 - store i32 %.0125174, ptr %88, align 4, !tbaa !62 - %89 = sub i32 %.0125174, %.0139 - %90 = and i32 %89, -16 - %91 = add nsw i32 %90, 16 - %92 = sext i32 %91 to i64 - %93 = tail call noalias ptr @av_calloc(i64 noundef %92, i64 noundef 8) #13 - %.not151 = icmp eq ptr %93, null +84: ; preds = %77, %81 + %85 = icmp eq i32 %.0139, -2147483648 + %86 = icmp eq i32 %indvars.iv215, 2147483647 + %or.cond = or i1 %85, %86 + br i1 %or.cond, label %.thread155, label %87 + +87: ; preds = %84 + %88 = getelementptr inbounds nuw i32, ptr %12, i64 %indvars.iv226 + store i32 %.0139, ptr %88, align 4, !tbaa !62 + %89 = getelementptr inbounds nuw i32, ptr %14, i64 %indvars.iv226 + store i32 %.0125174, ptr %89, align 4, !tbaa !62 + %90 = sub i32 %.0125174, %.0139 + %91 = and i32 %90, -16 + %92 = add nsw i32 %91, 16 + %93 = sext i32 %92 to i64 + %94 = tail call noalias ptr @av_calloc(i64 noundef %93, i64 noundef 8) #13 + %.not151 = icmp eq ptr %94, null br i1 %.not151, label %.thread155, label %.preheader -.preheader: ; preds = %86 - %.not152180 = icmp slt i32 %89, 0 +.preheader: ; preds = %87 + %.not152180 = icmp slt i32 %90, 0 br i1 %.not152180, label %._crit_edge, label %.lr.ph182 .lr.ph182: ; preds = %.preheader - %94 = sub i32 %.0139, %39 - %wide.trip.count221 = zext i32 %indvars.iv218 to i64 - br label %95 - -95: ; preds = %.lr.ph182, %95 - %indvars.iv215 = phi i64 [ 0, %.lr.ph182 ], [ %indvars.iv.next216, %95 ] - %96 = trunc nuw nsw i64 %indvars.iv215 to i32 - %97 = add i32 %94, %96 - %98 = sext i32 %97 to i64 - %99 = getelementptr inbounds float, ptr %18, i64 %98 - %100 = load float, ptr %99, align 4, !tbaa !76 - %101 = getelementptr inbounds nuw %struct.AVComplexFloat, ptr %93, i64 %indvars.iv215 - store float %100, ptr %101, align 4, !tbaa !129 - %102 = getelementptr inbounds nuw i8, ptr %101, i64 4 - store float %100, ptr %102, align 4, !tbaa !131 - %indvars.iv.next216 = add nuw nsw i64 %indvars.iv215, 1 - %exitcond222.not = icmp eq i64 %indvars.iv.next216, %wide.trip.count221 - br i1 %exitcond222.not, label %._crit_edge, label %95, !llvm.loop !132 - -._crit_edge: ; preds = %95, %.preheader - %103 = add i32 %89, 1 - %..0128 = tail call i32 @llvm.smin.i32(i32 %.0128185, i32 %103) - %104 = tail call i32 @llvm.smax.i32(i32 %.0130184, i32 %103) - %105 = load ptr, ptr %20, align 8, !tbaa !36 - %106 = getelementptr inbounds nuw ptr, ptr %105, i64 %indvars.iv223 - store ptr %93, ptr %106, align 8, !tbaa !133 - %indvars.iv.next224 = add nuw nsw i64 %indvars.iv223, 1 - %exitcond227.not = icmp eq i64 %indvars.iv.next224, %wide.trip.count226 - br i1 %exitcond227.not, label %.thread155, label %26, !llvm.loop !135 - -.thread155: ; preds = %._crit_edge, %83, %86, %.loopexit, %81, %.preheader161 - %.0130169 = phi i32 [ 0, %.preheader161 ], [ %.0130184, %81 ], [ %.0130184, %.loopexit ], [ %104, %._crit_edge ], [ %.0130184, %83 ], [ %.0130184, %86 ] + %95 = sub i32 %.0139, %39 + %wide.trip.count224 = zext i32 %indvars.iv221 to i64 + br label %96 + +96: ; preds = %.lr.ph182, %96 + %indvars.iv218 = phi i64 [ 0, %.lr.ph182 ], [ %indvars.iv.next219, %95 ] + %97 = trunc nuw nsw i64 %indvars.iv218 to i32 + %98 = add i32 %95, %97 + %99 = sext i32 %98 to i64 + %100 = getelementptr inbounds float, ptr %18, i64 %99 + %101 = load float, ptr %100, align 4, !tbaa !76 + %102 = getelementptr inbounds nuw %struct.AVComplexFloat, ptr %94, i64 %indvars.iv218 + store float %101, ptr %102, align 4, !tbaa !129 + %103 = getelementptr inbounds nuw i8, ptr %102, i64 4 + store float %101, ptr %103, align 4, !tbaa !131 + %indvars.iv.next219 = add nuw nsw i64 %indvars.iv218, 1 + %exitcond225.not = icmp eq i64 %indvars.iv.next219, %wide.trip.count224 + br i1 %exitcond225.not, label %._crit_edge, label %96, !llvm.loop !132 + +._crit_edge: ; preds = %96, %.preheader + %104 = add i32 %90, 1 + %..0128 = tail call i32 @llvm.smin.i32(i32 %.0128185, i32 %104) + %105 = tail call i32 @llvm.smax.i32(i32 %.0130184, i32 %104) + %106 = load ptr, ptr %20, align 8, !tbaa !36 + %107 = getelementptr inbounds nuw ptr, ptr %106, i64 %indvars.iv226 + store ptr %94, ptr %107, align 8, !tbaa !133 + %indvars.iv.next227 = add nuw nsw i64 %indvars.iv226, 1 + %exitcond230.not = icmp eq i64 %indvars.iv.next227, %wide.trip.count229 + br i1 %exitcond230.not, label %.thread155, label %26, !llvm.loop !135 + +.thread155: ; preds = %._crit_edge, %84, %87, %.loopexit, %83, %.preheader161 + %.0130169 = phi i32 [ 0, %.preheader161 ], [ %.0130184, %81 ], [ %.0130184, %.loopexit ], [ %105, %._crit_edge ], [ %.0130184, %83 ], [ %.0130184, %86 ] %.0128167 = phi i32 [ 2147483647, %.preheader161 ], [ %.0128185, %81 ], [ %.0128185, %.loopexit ], [ %..0128, %._crit_edge ], [ %.0128185, %83 ], [ %.0128185, %86 ] %.1134 = phi i32 [ 0, %.preheader161 ], [ -22, %81 ], [ -22, %.loopexit ], [ 0, %._crit_edge ], [ -22, %83 ], [ -12, %86 ] - %107 = icmp sgt i32 %6, 0 - br i1 %107, label %.lr.ph199, label %._crit_edge200 + %108 = icmp sgt i32 %6, 0 + br i1 %108, label %.lr.ph199, label %._crit_edge200 .lr.ph199: ; preds = %.thread155 - %108 = getelementptr inbounds nuw i8, ptr %4, i64 300 - %wide.trip.count231 = zext nneg i32 %6 to i64 - br label %109 + %109 = getelementptr inbounds nuw i8, ptr %4, i64 300 + %wide.trip.count234 = zext nneg i32 %6 to i64 + br label %110 -._crit_edge200: ; preds = %109, %.thread155 +._crit_edge200: ; preds = %110, %.thread155 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 48, ptr noundef nonnull @.str.14, i32 noundef %.0128167) #13 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 48, ptr noundef nonnull @.str.15, i32 noundef %.0130169) #13 call void @av_freep(ptr noundef nonnull %2) #13 - br label %115 - -109: ; preds = %.lr.ph199, %109 - %indvars.iv228 = phi i64 [ 0, %.lr.ph199 ], [ %indvars.iv.next229, %109 ] - %110 = load i32, ptr %108, align 4, !tbaa !93 - %111 = add i32 %110, 2147483647 - %112 = trunc nuw nsw i64 %indvars.iv228 to i32 - %113 = and i32 %111, %112 - %114 = getelementptr inbounds nuw i32, ptr %16, i64 %indvars.iv228 - store i32 %113, ptr %114, align 4, !tbaa !62 - %indvars.iv.next229 = add nuw nsw i64 %indvars.iv228, 1 - %exitcond232.not = icmp eq i64 %indvars.iv.next229, %wide.trip.count231 - br i1 %exitcond232.not, label %._crit_edge200, label %109, !llvm.loop !136 - -115: ; preds = %1, %._crit_edge200 + br label %116 + +110: ; preds = %.lr.ph199, %110 + %indvars.iv231 = phi i64 [ 0, %.lr.ph199 ], [ %indvars.iv.next232, %109 ] + %111 = load i32, ptr %109, align 4, !tbaa !93 + %112 = add i32 %111, 2147483647 + %113 = trunc nuw nsw i64 %indvars.iv231 to i32 + %114 = and i32 %112, %113 + %115 = getelementptr inbounds nuw i32, ptr %16, i64 %indvars.iv231 + store i32 %114, ptr %115, align 4, !tbaa !62 + %indvars.iv.next232 = add nuw nsw i64 %indvars.iv231, 1 + %exitcond235.not = icmp eq i64 %indvars.iv.next232, %wide.trip.count234 + br i1 %exitcond235.not, label %._crit_edge200, label %110, !llvm.loop !136 + +116: ; preds = %1, %._crit_edge200 %.0127 = phi i32 [ %.1134, %._crit_edge200 ], [ -12, %1 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #13 ret i32 %.0127 diff --git a/bench/ffmpeg/optimized/cbs.ll b/bench/ffmpeg/optimized/cbs.ll index e6b1e9d927c..47b430d822e 100644 --- a/bench/ffmpeg/optimized/cbs.ll +++ b/bench/ffmpeg/optimized/cbs.ll @@ -1960,13 +1960,13 @@ define range(i32 -12, 1) i32 @ff_cbs_insert_unit_content(ptr noundef captures(no %19 = icmp slt i32 %14, %18 br i1 %19, label %20, label %31 -20: ; preds = %16 +19: ; preds = %16 %21 = getelementptr inbounds nuw i8, ptr %0, i64 40 %22 = load ptr, ptr %21, align 8, !tbaa !38 %23 = icmp samesign ult i32 %.019, %14 br i1 %23, label %24, label %61 -24: ; preds = %20 +22: ; preds = %20 %25 = zext nneg i32 %.019 to i64 %26 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %22, i64 %25 %27 = getelementptr inbounds nuw i8, ptr %26, i64 56 @@ -1976,7 +1976,7 @@ define range(i32 -12, 1) i32 @ff_cbs_insert_unit_content(ptr noundef captures(no tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %27, ptr align 8 %26, i64 %30, i1 false) br label %61 -31: ; preds = %16 +29: ; preds = %16 %32 = shl nuw nsw i32 %14, 1 %33 = or disjoint i32 %32, 1 %34 = zext nneg i32 %33 to i64 @@ -1984,9 +1984,9 @@ define range(i32 -12, 1) i32 @ff_cbs_insert_unit_content(ptr noundef captures(no %.not.i = icmp eq ptr %35, null br i1 %.not.i, label %cbs_insert_unit.exit.thread, label %36 -36: ; preds = %31 - %37 = load i32, ptr %17, align 4, !tbaa !42 - %38 = shl nsw i32 %37, 1 +36: ; preds = %31 + %6 = load i32, ptr %17, align 4, !tbaa !42 + %38 = shl nsw i32 %6, 1 %39 = or disjoint i32 %38, 1 store i32 %39, ptr %17, align 4, !tbaa !42 %.not39.i = icmp eq i32 %.019, 0 @@ -2005,7 +2005,7 @@ define range(i32 -12, 1) i32 @ff_cbs_insert_unit_content(ptr noundef captures(no %47 = icmp slt i32 %.019, %46 br i1 %47, label %48, label %58 -48: ; preds = %45 +8: ; preds = %45 %49 = zext nneg i32 %.019 to i64 %50 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %35, i64 %49 %51 = getelementptr inbounds nuw i8, ptr %50, i64 56 @@ -2036,12 +2036,12 @@ define range(i32 -12, 1) i32 @ff_cbs_insert_unit_content(ptr noundef captures(no %.not24 = icmp eq ptr %4, null br i1 %.not24, label %68, label %66 -66: ; preds = %61 +12: ; preds = %61 %67 = tail call ptr @av_refstruct_ref(ptr noundef nonnull %4) #10 br label %68 -68: ; preds = %66, %61 - %.020 = phi ptr [ %67, %66 ], [ null, %61 ] +54: ; preds = %12, %61 + %.033 = phi ptr [ %67, %66 ], [ null, %61 ] %69 = getelementptr inbounds nuw i8, ptr %0, i64 40 %70 = load ptr, ptr %69, align 8, !tbaa !38 %71 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %70, i64 %62 @@ -2101,7 +2101,7 @@ define range(i32 -12, 1) i32 @ff_cbs_append_unit_data(ptr noundef captures(none) %21 = icmp slt i32 %18, %20 br i1 %21, label %22, label %33 -22: ; preds = %16 +20: ; preds = %16 %23 = getelementptr inbounds nuw i8, ptr %0, i64 40 %24 = load ptr, ptr %23, align 8, !tbaa !38 %25 = icmp slt i32 %8, %18 @@ -2170,18 +2170,18 @@ define range(i32 -12, 1) i32 @ff_cbs_append_unit_data(ptr noundef captures(none) call void @av_buffer_unref(ptr noundef nonnull %6) #10 br label %cbs_insert_unit_data.exit -64: ; preds = %60, %26, %22 - %.0.i.i = phi ptr [ %24, %26 ], [ %24, %22 ], [ %37, %60 ] +21: ; preds = %60, %26, %22 + %.0.i.i = phi ptr [ %24, %26 ], [ %24, %22 ], [ %6, %60 ] %65 = zext nneg i32 %8 to i64 %66 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %.0.i.i, i64 %65 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %66, i8 0, i64 56, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %12, i8 0, i64 56, i1 false) %67 = load i32, ptr %7, align 8, !tbaa !34 %68 = add nsw i32 %67, 1 store i32 %68, ptr %7, align 8, !tbaa !34 - %69 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %70 = load ptr, ptr %69, align 8, !tbaa !38 - %71 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %70, i64 %65 - store i32 %1, ptr %71, align 8, !tbaa !57 + %27 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %70 = load ptr, ptr %27, align 8, !tbaa !38 + %28 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %70, i64 %65 + store i32 %1, ptr %28, align 8, !tbaa !57 %72 = getelementptr inbounds nuw i8, ptr %71, i64 8 store ptr %2, ptr %72, align 8, !tbaa !60 %73 = getelementptr inbounds nuw i8, ptr %71, i64 16 @@ -2190,7 +2190,7 @@ define range(i32 -12, 1) i32 @ff_cbs_append_unit_data(ptr noundef captures(none) store ptr %17, ptr %74, align 8, !tbaa !61 br label %cbs_insert_unit_data.exit -cbs_insert_unit_data.exit: ; preds = %.thread.i, %15, %63, %64 +cbs_insert_unit_data.exit: ; preds = %.thread.i, %15, %63, %21 %.0.i = phi i32 [ -12, %63 ], [ 0, %64 ], [ -12, %15 ], [ -12, %.thread.i ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10 ret i32 %.0.i diff --git a/bench/ffmpeg/optimized/network.ll b/bench/ffmpeg/optimized/network.ll index 1bccb02d2f4..ab1b25d1156 100644 --- a/bench/ffmpeg/optimized/network.ll +++ b/bench/ffmpeg/optimized/network.ll @@ -1222,18 +1222,18 @@ define range(i32 0, 2) i32 @ff_http_match_no_proxy(ptr noundef %0, ptr noundef r %.not = icmp eq ptr %0, null %.not27 = icmp eq ptr %1, null %or.cond = or i1 %.not, %.not27 - br i1 %or.cond, label %36, label %3 + br i1 %or.cond, label %35, label %3 3: ; preds = %2 %4 = tail call noalias ptr @av_strdup(ptr noundef nonnull %0) #12 %.not28 = icmp eq ptr %4, null - br i1 %.not28, label %36, label %.preheader + br i1 %.not28, label %35, label %.preheader -.preheader: ; preds = %3 +select.unfold: ; preds = %3 %invariant.gep = getelementptr i8, ptr %1, i64 -1 br label %5 -select.unfold: ; preds = %.tail.thread.i, %32, %25 +12: ; preds = %.tail.thread.i, %32, %25 %.not29 = icmp eq ptr %.0, null br i1 %.not29, label %match_host_pattern.exit.thread, label %5 @@ -1259,32 +1259,32 @@ select.unfold: ; preds = %.tail.thread.i, %32 br i1 %.not22.i, label %.tail.i, label %.tail.thread.i .tail.i: ; preds = %13 - %15 = getelementptr inbounds nuw i8, ptr %7, i64 1 - %16 = load i8, ptr %15, align 1 - %17 = icmp eq i8 %16, 0 - br i1 %17, label %match_host_pattern.exit.thread, label %.tail.thread.i + %14 = getelementptr inbounds nuw i8, ptr %7, i64 1 + %15 = load i8, ptr %14, align 1 + %16 = icmp eq i8 %15, 0 + br i1 %16, label %match_host_pattern.exit.thread, label %.tail.thread.i .tail.thread.i: ; preds = %.tail.i, %13 %spec.select.idx.i = zext i1 %.not22.i to i64 %spec.select.i = getelementptr inbounds nuw i8, ptr %7, i64 %spec.select.idx.i - %18 = load i8, ptr %spec.select.i, align 1, !tbaa !18 - %19 = icmp eq i8 %18, 46 - %.1.idx.i = zext i1 %19 to i64 + %17 = load i8, ptr %spec.select.i, align 1, !tbaa !18 + %18 = icmp eq i8 %17, 46 + %.1.idx.i = zext i1 %18 to i64 %.1.i = getelementptr inbounds nuw i8, ptr %spec.select.i, i64 %.1.idx.i - %20 = tail call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %.1.i) #15 - %21 = trunc i64 %20 to i32 - %22 = tail call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %1) #15 - %23 = trunc i64 %22 to i32 - %24 = icmp sgt i32 %21, %23 - br i1 %24, label %select.unfold, label %25 - -25: ; preds = %.tail.thread.i - %26 = sub nsw i32 %23, %21 - %27 = zext nneg i32 %26 to i64 + %19 = tail call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %.1.i) #15 + %20 = trunc i64 %19 to i32 + %21 = tail call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %1) #15 + %22 = trunc i64 %21 to i32 + %23 = icmp sgt i32 %20, %22 + br i1 %23, label %select.unfold, label %24 + +24: ; preds = %.tail.thread.i + %25 = sub nsw i32 %23, %19 + %27 = zext nneg i32 %25 to i64 %28 = getelementptr inbounds nuw i8, ptr %1, i64 %27 %29 = tail call i32 @strcmp(ptr noundef nonnull readonly dereferenceable(1) %.1.i, ptr noundef nonnull readonly dereferenceable(1) %28) #15 %.not21.i = icmp eq i32 %29, 0 - br i1 %.not21.i, label %30, label %select.unfold + br i1 %.not21.i, label %30, label %12 30: ; preds = %25 %31 = icmp eq i32 %23, %21 @@ -1292,17 +1292,17 @@ select.unfold: ; preds = %.tail.thread.i, %32 32: ; preds = %30 %33 = sext i32 %26 to i64 - %gep = getelementptr i8, ptr %invariant.gep, i64 %33 - %34 = load i8, ptr %gep, align 1, !tbaa !18 - %35 = icmp eq i8 %34, 46 - br i1 %35, label %match_host_pattern.exit.thread, label %select.unfold + %32 = getelementptr i8, ptr %invariant.gep, i64 %33 + %33 = load i8, ptr %32, align 1, !tbaa !18 + %34 = icmp eq i8 %33, 46 + br i1 %34, label %match_host_pattern.exit.thread, label %select.unfold match_host_pattern.exit.thread: ; preds = %32, %30, %.tail.i, %select.unfold %.1 = phi i32 [ 0, %select.unfold ], [ 1, %.tail.i ], [ 1, %30 ], [ 1, %32 ] tail call void @av_free(ptr noundef nonnull %4) #12 - br label %36 + br label %35 -36: ; preds = %3, %2, %match_host_pattern.exit.thread +35: ; preds = %3, %2, %match_host_pattern.exit.thread %.019 = phi i32 [ %.1, %match_host_pattern.exit.thread ], [ 0, %2 ], [ 0, %3 ] ret i32 %.019 } diff --git a/bench/ffmpeg/optimized/vf_atadenoise.ll b/bench/ffmpeg/optimized/vf_atadenoise.ll index 306b0d1e14b..754b0d38fb2 100644 --- a/bench/ffmpeg/optimized/vf_atadenoise.ll +++ b/bench/ffmpeg/optimized/vf_atadenoise.ll @@ -570,7 +570,7 @@ define internal range(i32 -2147483648, 1) i32 @config_input(ptr noundef readonly %exitcond123.not = icmp eq i64 %indvars.iv.next120, %wide.trip.count122 br i1 %exitcond123.not, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !72 -._crit_edge: ; preds = %125, %69, %.preheader +._crit_edge: ; preds = %124, %69, %.preheader %70 = getelementptr inbounds nuw i8, ptr %8, i64 8 %71 = load float, ptr %70, align 8, !tbaa !69 %72 = shl nuw i32 1, %42 @@ -634,80 +634,80 @@ define internal range(i32 -2147483648, 1) i32 @config_input(ptr noundef readonly .lr.ph114.split.us: ; preds = %.lr.ph114.split.us.preheader, %.lr.ph114.split.us %indvars.iv134 = phi i64 [ 0, %.lr.ph114.split.us.preheader ], [ %indvars.iv.next135, %.lr.ph114.split.us ] - %110 = getelementptr inbounds [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv134, i64 %107 - store float 1.000000e+00, ptr %110, align 4, !tbaa !69 + %109 = getelementptr inbounds [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv134, i64 %107 + store float 1.000000e+00, ptr %109, align 4, !tbaa !69 %indvars.iv.next135 = add nuw nsw i64 %indvars.iv134, 1 %exitcond138.not = icmp eq i64 %indvars.iv.next135, %wide.trip.count137 br i1 %exitcond138.not, label %.loopexit, label %.lr.ph114.split.us, !llvm.loop !73 -.lr.ph.split: ; preds = %.lr.ph, %125 +.lr.ph.split: ; preds = %.lr.ph, %124 %indvars.iv = phi i64 [ %indvars.iv.next, %125 ], [ 0, %.lr.ph ] - %111 = getelementptr inbounds nuw [4 x float], ptr %52, i64 0, i64 %indvars.iv - %112 = load float, ptr %111, align 4, !tbaa !69 - %113 = fcmp nsz oeq float %112, 3.276700e+04 - br i1 %113, label %114, label %118 - -114: ; preds = %.lr.ph.split - %115 = load i32, ptr %53, align 8, !tbaa !71 - %116 = icmp eq i32 %115, 0 - %117 = select i1 %116, ptr @filter_row16, ptr @filter_row16_serial + %110 = getelementptr inbounds nuw [4 x float], ptr %52, i64 0, i64 %indvars.iv + %111 = load float, ptr %110, align 4, !tbaa !69 + %112 = fcmp nsz oeq float %111, 3.276700e+04 + br i1 %112, label %113, label %117 + +113: ; preds = %.lr.ph.split + %114 = load i32, ptr %53, align 8, !tbaa !71 + %115 = icmp eq i32 %114, 0 + %116 = select i1 %115, ptr @filter_row16, ptr @filter_row16_serial br label %.sink.split142 -118: ; preds = %.lr.ph.split - %119 = fcmp nsz olt float %112, 3.276700e+04 - br i1 %119, label %120, label %125 +117: ; preds = %.lr.ph.split + %118 = fcmp nsz olt float %111, 3.276700e+04 + br i1 %118, label %119, label %124 -120: ; preds = %118 - %121 = load i32, ptr %53, align 8, !tbaa !71 - %122 = icmp eq i32 %121, 0 - %123 = select i1 %122, ptr @fweight_row16, ptr @fweight_row16_serial +119: ; preds = %117 + %120 = load i32, ptr %53, align 8, !tbaa !71 + %121 = icmp eq i32 %120, 0 + %122 = select i1 %121, ptr @fweight_row16, ptr @fweight_row16_serial br label %.sink.split142 -.sink.split142: ; preds = %114, %120 - %.sink143 = phi ptr [ %123, %120 ], [ %117, %114 ] - %124 = getelementptr inbounds nuw [4 x ptr], ptr %54, i64 0, i64 %indvars.iv - store ptr %.sink143, ptr %124, align 8, !tbaa !53 - br label %125 +.sink.split142: ; preds = %113, %119 + %.sink143 = phi ptr [ %122, %120 ], [ %116, %114 ] + %123 = getelementptr inbounds nuw [4 x ptr], ptr %54, i64 0, i64 %indvars.iv + store ptr %.sink143, ptr %123, align 8, !tbaa !53 + br label %124 -125: ; preds = %.sink.split142, %118 +124: ; preds = %.sink.split142, %117 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count122 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !72 .lr.ph110: ; preds = %.lr.ph110.preheader, %._crit_edge111 %indvars.iv129 = phi i64 [ 0, %.lr.ph110.preheader ], [ %indvars.iv.next130, %._crit_edge111 ] - %126 = getelementptr inbounds nuw [4 x float], ptr %105, i64 0, i64 %indvars.iv129 - %127 = load float, ptr %126, align 4, !tbaa !69 - %128 = fmul nsz float %127, %104 - %129 = getelementptr inbounds nuw [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv129, i64 %107 - store float 1.000000e+00, ptr %129, align 4, !tbaa !69 - %130 = fmul nsz float %128, %128 - %131 = fpext nsz float %130 to double - br label %132 - -._crit_edge111: ; preds = %132 + %125 = getelementptr inbounds nuw [4 x float], ptr %105, i64 0, i64 %indvars.iv129 + %126 = load float, ptr %125, align 4, !tbaa !69 + %127 = fmul nsz float %126, %104 + %128 = getelementptr inbounds nuw [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv129, i64 %107 + store float 1.000000e+00, ptr %128, align 4, !tbaa !69 + %129 = fmul nsz float %127, %127 + %130 = fpext nsz float %129 to double + br label %131 + +._crit_edge111: ; preds = %131 %indvars.iv.next130 = add nuw nsw i64 %indvars.iv129, 1 %exitcond133.not = icmp eq i64 %indvars.iv.next130, %wide.trip.count132 br i1 %exitcond133.not, label %.loopexit, label %.lr.ph110, !llvm.loop !73 -132: ; preds = %.lr.ph110, %132 +131: ; preds = %.lr.ph110, %131 %indvars.iv124 = phi i64 [ 1, %.lr.ph110 ], [ %indvars.iv.next125, %132 ] %indvars.iv.next125 = add nuw nsw i64 %indvars.iv124, 1 - %133 = trunc nuw i64 %indvars.iv.next125 to i32 - %134 = uitofp nneg i32 %133 to double - %135 = fmul nsz double %134, -5.000000e-01 - %136 = fmul nsz double %135, %134 - %137 = fdiv nsz double %136, %131 - %138 = fptrunc nsz double %137 to float - %139 = tail call nsz float @llvm.exp.f32(float %138) - %140 = sub nsw i64 %107, %indvars.iv124 - %141 = getelementptr inbounds nuw [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv129, i64 %140 - store float %139, ptr %141, align 4, !tbaa !69 - %142 = add nuw nsw i64 %indvars.iv124, %108 - %143 = getelementptr inbounds nuw [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv129, i64 %142 - store float %139, ptr %143, align 4, !tbaa !69 + %132 = trunc nuw i64 %indvars.iv.next125 to i32 + %133 = uitofp nneg i32 %132 to double + %134 = fmul nsz double %133, -5.000000e-01 + %135 = fmul nsz double %134, %133 + %136 = fdiv nsz double %135, %130 + %137 = fptrunc nsz double %136 to float + %138 = tail call nsz float @llvm.exp.f32(float %137) + %139 = sub nsw i64 %107, %indvars.iv124 + %140 = getelementptr inbounds nuw [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv129, i64 %139 + store float %138, ptr %140, align 4, !tbaa !69 + %141 = add nuw nsw i64 %indvars.iv124, %108 + %142 = getelementptr inbounds nuw [4 x [129 x float]], ptr %106, i64 0, i64 %indvars.iv129, i64 %141 + store float %138, ptr %142, align 4, !tbaa !69 %exitcond128.not = icmp eq i64 %indvars.iv.next125, %wide.trip.count127 - br i1 %exitcond128.not, label %._crit_edge111, label %132, !llvm.loop !74 + br i1 %exitcond128.not, label %._crit_edge111, label %131, !llvm.loop !74 .loopexit: ; preds = %._crit_edge111, %.lr.ph114.split.us, %._crit_edge, %1 %.0100 = phi i32 [ %47, %1 ], [ 0, %._crit_edge ], [ 0, %.lr.ph114.split.us ], [ 0, %._crit_edge111 ] diff --git a/bench/gromacs/optimized/do_fit.ll b/bench/gromacs/optimized/do_fit.ll index 18f55d30902..f27f0bb6b77 100644 --- a/bench/gromacs/optimized/do_fit.ll +++ b/bench/gromacs/optimized/do_fit.ll @@ -486,8 +486,8 @@ define void @_Z10calc_fit_RiiPKfPA3_S_PA3_fS4_(i32 noundef %0, i32 noundef %1, p call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %11) #15 %13 = add i32 %0, -4 %or.cond = icmp ult i32 %13, -2 - %.sink316.sroa.gep = getelementptr inbounds nuw i8, ptr %10, i64 16 - %.sink316.sroa.gep319 = getelementptr inbounds nuw i8, ptr %10, i64 32 + %.sink311.sroa.gep = getelementptr inbounds nuw i8, ptr %10, i64 16 + %.sink311.sroa.gep314 = getelementptr inbounds nuw i8, ptr %10, i64 32 br i1 %or.cond, label %14, label %.lr.ph.preheader 14: ; preds = %6 @@ -563,8 +563,8 @@ define void @_Z10calc_fit_RiiPKfPA3_S_PA3_fS4_(i32 noundef %0, i32 noundef %1, p call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(36) %11, i8 0, i64 36, i1 false) %35 = icmp sgt i32 %1, 0 %36 = icmp sgt i32 %0, 0 - %or.cond307 = and i1 %35, %36 - br i1 %or.cond307, label %.lr.ph187.split.us.preheader, label %.preheader171.preheader + %or.cond302 = and i1 %35, %36 + br i1 %or.cond302, label %.lr.ph187.split.us.preheader, label %.preheader171.preheader .lr.ph187.split.us.preheader: ; preds = %._crit_edge %wide.trip.count243 = zext nneg i32 %1 to i64 @@ -659,69 +659,69 @@ define void @_Z10calc_fit_RiiPKfPA3_S_PA3_fS4_(i32 noundef %0, i32 noundef %1, p br label %71 71: ; preds = %.preheader171.split, %67 - %.sink311 = phi double [ %70, %67 ], [ 0.000000e+00, %.preheader171.split ] + %.sink306 = phi double [ %70, %67 ], [ 0.000000e+00, %.preheader171.split ] %72 = getelementptr inbounds nuw double, ptr %59, i64 %indvars.iv245 - store double %.sink311, ptr %72, align 8, !tbaa !17 + store double %.sink306, ptr %72, align 8, !tbaa !17 %73 = getelementptr inbounds nuw ptr, ptr %20, i64 %indvars.iv245 %74 = load ptr, ptr %73, align 8, !tbaa !13 %75 = getelementptr inbounds nuw double, ptr %74, i64 %indvars.iv259 - store double %.sink311, ptr %75, align 8, !tbaa !17 + store double %.sink306, ptr %75, align 8, !tbaa !17 %indvars.iv.next246 = add nuw nsw i64 %indvars.iv245, 1 %exitcond251.not = icmp eq i64 %indvars.iv.next246, %indvars.iv257 br i1 %exitcond251.not, label %.split.us, label %.preheader171.split, !llvm.loop !24 .split.us: ; preds = %71, %61 - %indvars.iv.next260 = add nuw nsw i64 %indvars.iv259, 1 + %76 = add nuw nsw i64 %indvars.iv259, 1 %indvars.iv.next258 = add nuw nsw i64 %indvars.iv257, 1 - %exitcond266.not = icmp eq i64 %indvars.iv.next260, %wide.trip.count265 - br i1 %exitcond266.not, label %._crit_edge190, label %.preheader171, !llvm.loop !25 + %exitcond261.not = icmp eq i64 %76, %wide.trip.count265 + br i1 %exitcond261.not, label %._crit_edge190, label %.preheader171, !llvm.loop !25 ._crit_edge190: ; preds = %.split.us call void @_Z6jacobiPPdiS_S0_Pi(ptr noundef nonnull %20, i32 noundef %18, ptr noundef nonnull %8, ptr noundef %21, ptr noundef nonnull %7) - %76 = load ptr, ptr @debug, align 8, !tbaa !26 - %77 = icmp ne ptr %76, null - %78 = load i32, ptr %7, align 4 - %79 = icmp eq i32 %78, 0 - %or.cond3 = select i1 %77, i1 %79, i1 false - br i1 %or.cond3, label %80, label %82 - -80: ; preds = %._crit_edge190 - %81 = call i64 @fwrite(ptr nonnull @.str.6, i64 7, i64 1, ptr nonnull %76) - br label %82 - -82: ; preds = %80, %._crit_edge190 - %83 = icmp sgt i32 %0, 1 - br i1 %83, label %.preheader170.lr.ph, label %._crit_edge202 - -.preheader170.lr.ph: ; preds = %82 - %84 = add nsw i32 %0, -1 - %85 = zext nneg i32 %0 to i64 - %wide.trip.count280 = zext nneg i32 %84 to i64 - %invariant.gep = getelementptr inbounds nuw ptr, ptr %21, i64 %85 + %77 = load ptr, ptr @debug, align 8, !tbaa !26 + %78 = icmp ne ptr %77, null + %79 = load i32, ptr %7, align 4 + %80 = icmp eq i32 %79, 0 + %or.cond3 = select i1 %78, i1 %80, i1 false + br i1 %or.cond3, label %81, label %83 + +81: ; preds = %._crit_edge190 + %82 = call i64 @fwrite(ptr nonnull @.str.6, i64 7, i64 1, ptr nonnull %77) + br label %83 + +83: ; preds = %81, %._crit_edge190 + %84 = icmp sgt i32 %0, 1 + br i1 %84, label %.preheader170.lr.ph, label %._crit_edge202 + +.preheader170.lr.ph: ; preds = %83 + %85 = add nsw i32 %0, -1 + %86 = zext nneg i32 %0 to i64 + %wide.trip.count275 = zext nneg i32 %85 to i64 + %invariant.gep = getelementptr inbounds nuw ptr, ptr %21, i64 %86 br label %.lr.ph194.preheader .lr.ph194.preheader: ; preds = %._crit_edge199, %.preheader170.lr.ph - %indvars.iv277 = phi i64 [ 0, %.preheader170.lr.ph ], [ %indvars.iv.next278, %._crit_edge199 ] + %indvars.iv272 = phi i64 [ 0, %.preheader170.lr.ph ], [ %indvars.iv.next278, %._crit_edge199 ] %.0132201 = phi i32 [ 0, %.preheader170.lr.ph ], [ %.2134, %._crit_edge199 ] br label %.lr.ph194 .lr.ph194: ; preds = %.lr.ph194.preheader, %.lr.ph194 - %indvars.iv267 = phi i64 [ 0, %.lr.ph194.preheader ], [ %indvars.iv.next268, %.lr.ph194 ] + %indvars.iv262 = phi i64 [ 0, %.lr.ph194.preheader ], [ %indvars.iv.next268, %.lr.ph194 ] %.0130193 = phi float [ -1.000000e+03, %.lr.ph194.preheader ], [ %.1131, %.lr.ph194 ] %.1133192 = phi i32 [ %.0132201, %.lr.ph194.preheader ], [ %.2134, %.lr.ph194 ] - %86 = getelementptr inbounds nuw [6 x double], ptr %8, i64 0, i64 %indvars.iv267 - %87 = load double, ptr %86, align 8, !tbaa !17 - %88 = fpext float %.0130193 to double - %89 = fcmp ogt double %87, %88 - %90 = fptrunc double %87 to float - %91 = trunc nuw nsw i64 %indvars.iv267 to i32 - %.2134 = select i1 %89, i32 %91, i32 %.1133192 - %.1131 = select i1 %89, float %90, float %.0130193 + %87 = getelementptr inbounds nuw [6 x double], ptr %8, i64 0, i64 %indvars.iv262 + %88 = load double, ptr %87, align 8, !tbaa !17 + %89 = fpext float %.0130193 to double + %90 = fcmp ogt double %88, %89 + %91 = fptrunc double %88 to float + %92 = trunc nuw nsw i64 %indvars.iv262 to i32 + %.2134 = select i1 %90, i32 %92, i32 %.1133192 + %.1131 = select i1 %90, float %91, float %.0130193 %indvars.iv.next268 = add nuw nsw i64 %indvars.iv267, 1 %exitcond271.not = icmp eq i64 %indvars.iv.next268, %19 - br i1 %exitcond271.not, label %.lr.ph198, label %.lr.ph194, !llvm.loop !28 + br i1 %exitcond271.not, label %._crit_edge199, label %.lr.ph194, !llvm.loop !28 -.lr.ph198: ; preds = %.lr.ph194 +._crit_edge199: ; preds = %.lr.ph194 %92 = zext nneg i32 %.2134 to i64 %93 = getelementptr inbounds nuw [6 x double], ptr %8, i64 0, i64 %92 store double -1.000000e+04, ptr %93, align 8, !tbaa !17 @@ -747,9 +747,9 @@ define void @_Z10calc_fit_RiiPKfPA3_S_PA3_fS4_(i32 noundef %0, i32 noundef %1, p store float %106, ptr %107, align 4, !tbaa !4 %indvars.iv.next273 = add nuw nsw i64 %indvars.iv272, 1 %exitcond276.not = icmp eq i64 %indvars.iv.next273, %85 - br i1 %exitcond276.not, label %._crit_edge199, label %94, !llvm.loop !29 + br i1 %exitcond276.not, label %._crit_edge202, label %94, !llvm.loop !29 -._crit_edge199: ; preds = %94 +._crit_edge202: ; preds = %94 %indvars.iv.next278 = add nuw nsw i64 %indvars.iv277, 1 %exitcond281.not = icmp eq i64 %indvars.iv.next278, %wide.trip.count280 br i1 %exitcond281.not, label %._crit_edge202, label %.lr.ph194.preheader, !llvm.loop !30 @@ -760,118 +760,118 @@ define void @_Z10calc_fit_RiiPKfPA3_S_PA3_fS4_(i32 noundef %0, i32 noundef %1, p i32 2, label %154 ] -108: ; preds = %._crit_edge202 - %109 = getelementptr inbounds nuw i8, ptr %9, i64 12 - %110 = getelementptr inbounds nuw i8, ptr %9, i64 24 - %111 = getelementptr inbounds nuw i8, ptr %9, i64 4 - %112 = load float, ptr %111, align 4, !tbaa !4 - %113 = getelementptr inbounds nuw i8, ptr %9, i64 20 - %114 = load float, ptr %113, align 4, !tbaa !4 - %115 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %116 = load float, ptr %115, align 8, !tbaa !4 - %117 = getelementptr inbounds nuw i8, ptr %9, i64 16 - %118 = load float, ptr %117, align 16, !tbaa !4 - %119 = fneg float %118 - %120 = fmul float %116, %119 - %121 = call float @llvm.fmuladd.f32(float %112, float %114, float %120) - store float %121, ptr %110, align 8, !tbaa !4 - %122 = load float, ptr %109, align 4, !tbaa !4 - %123 = load float, ptr %9, align 16, !tbaa !4 - %124 = fneg float %114 - %125 = fmul float %123, %124 - %126 = call float @llvm.fmuladd.f32(float %116, float %122, float %125) - %127 = getelementptr inbounds nuw i8, ptr %9, i64 28 - store float %126, ptr %127, align 4, !tbaa !4 - %128 = fneg float %122 - %129 = fmul float %112, %128 - %130 = call float @llvm.fmuladd.f32(float %123, float %118, float %129) - %131 = getelementptr inbounds nuw i8, ptr %9, i64 32 - store float %130, ptr %131, align 16, !tbaa !4 - %132 = getelementptr inbounds nuw i8, ptr %10, i64 12 - %133 = getelementptr inbounds nuw i8, ptr %10, i64 24 - %134 = getelementptr inbounds nuw i8, ptr %10, i64 4 - %135 = load float, ptr %134, align 4, !tbaa !4 - %136 = getelementptr inbounds nuw i8, ptr %10, i64 20 - %137 = load float, ptr %136, align 4, !tbaa !4 - %138 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %139 = load float, ptr %138, align 8, !tbaa !4 - %140 = getelementptr inbounds nuw i8, ptr %10, i64 16 - %141 = load float, ptr %140, align 16, !tbaa !4 - %142 = fneg float %141 - %143 = fmul float %139, %142 - %144 = call float @llvm.fmuladd.f32(float %135, float %137, float %143) - store float %144, ptr %133, align 8, !tbaa !4 - %145 = load float, ptr %132, align 4, !tbaa !4 - %146 = load float, ptr %10, align 16, !tbaa !4 - %147 = fneg float %137 - %148 = fmul float %146, %147 - %149 = call float @llvm.fmuladd.f32(float %139, float %145, float %148) - %150 = getelementptr inbounds nuw i8, ptr %10, i64 28 - store float %149, ptr %150, align 4, !tbaa !4 - %151 = fneg float %145 - %152 = fmul float %135, %151 - %153 = call float @llvm.fmuladd.f32(float %146, float %141, float %152) +109: ; preds = %._crit_edge202 + %110 = getelementptr inbounds nuw i8, ptr %9, i64 12 + %111 = getelementptr inbounds nuw i8, ptr %9, i64 24 + %112 = getelementptr inbounds nuw i8, ptr %9, i64 4 + %113 = load float, ptr %112, align 4, !tbaa !4 + %114 = getelementptr inbounds nuw i8, ptr %9, i64 20 + %115 = load float, ptr %114, align 4, !tbaa !4 + %116 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %117 = load float, ptr %116, align 8, !tbaa !4 + %118 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %119 = load float, ptr %118, align 16, !tbaa !4 + %120 = fneg float %119 + %121 = fmul float %117, %120 + %122 = call float @llvm.fmuladd.f32(float %113, float %115, float %121) + store float %122, ptr %111, align 8, !tbaa !4 + %123 = load float, ptr %110, align 4, !tbaa !4 + %124 = load float, ptr %9, align 16, !tbaa !4 + %125 = fneg float %115 + %126 = fmul float %124, %125 + %127 = call float @llvm.fmuladd.f32(float %117, float %123, float %126) + %128 = getelementptr inbounds nuw i8, ptr %9, i64 28 + store float %127, ptr %128, align 4, !tbaa !4 + %129 = fneg float %123 + %130 = fmul float %113, %129 + %131 = call float @llvm.fmuladd.f32(float %124, float %119, float %130) + %132 = getelementptr inbounds nuw i8, ptr %9, i64 32 + store float %131, ptr %132, align 16, !tbaa !4 + %133 = getelementptr inbounds nuw i8, ptr %10, i64 12 + %134 = getelementptr inbounds nuw i8, ptr %10, i64 24 + %135 = getelementptr inbounds nuw i8, ptr %10, i64 4 + %136 = load float, ptr %135, align 4, !tbaa !4 + %137 = getelementptr inbounds nuw i8, ptr %10, i64 20 + %138 = load float, ptr %137, align 4, !tbaa !4 + %139 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %140 = load float, ptr %139, align 8, !tbaa !4 + %141 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %142 = load float, ptr %141, align 16, !tbaa !4 + %143 = fneg float %142 + %144 = fmul float %140, %143 + %145 = call float @llvm.fmuladd.f32(float %136, float %138, float %144) + store float %145, ptr %134, align 8, !tbaa !4 + %146 = load float, ptr %133, align 4, !tbaa !4 + %147 = load float, ptr %10, align 16, !tbaa !4 + %148 = fneg float %138 + %149 = fmul float %147, %148 + %150 = call float @llvm.fmuladd.f32(float %140, float %146, float %149) + %151 = getelementptr inbounds nuw i8, ptr %10, i64 28 + store float %150, ptr %151, align 4, !tbaa !4 + %152 = fneg float %146 + %153 = fmul float %136, %152 + %154 = call float @llvm.fmuladd.f32(float %147, float %142, float %153) br label %.thread -154: ; preds = %._crit_edge202 - %155 = getelementptr inbounds nuw i8, ptr %9, i64 4 - %156 = load float, ptr %155, align 4, !tbaa !4 - %157 = fneg float %156 - %158 = getelementptr inbounds nuw i8, ptr %9, i64 12 - store float %157, ptr %158, align 4, !tbaa !4 - %159 = load float, ptr %9, align 16, !tbaa !4 - %160 = getelementptr inbounds nuw i8, ptr %9, i64 16 - store float %159, ptr %160, align 16, !tbaa !4 - %161 = getelementptr inbounds nuw i8, ptr %10, i64 4 - %162 = load float, ptr %161, align 4, !tbaa !4 - %163 = fneg float %162 - %164 = getelementptr inbounds nuw i8, ptr %10, i64 12 - store float %163, ptr %164, align 4, !tbaa !4 - %165 = load float, ptr %10, align 16, !tbaa !4 +155: ; preds = %._crit_edge202 + %156 = getelementptr inbounds nuw i8, ptr %9, i64 4 + %157 = load float, ptr %156, align 4, !tbaa !4 + %158 = fneg float %157 + %159 = getelementptr inbounds nuw i8, ptr %9, i64 12 + store float %158, ptr %159, align 4, !tbaa !4 + %160 = load float, ptr %9, align 16, !tbaa !4 + %161 = getelementptr inbounds nuw i8, ptr %9, i64 16 + store float %160, ptr %161, align 16, !tbaa !4 + %162 = getelementptr inbounds nuw i8, ptr %10, i64 4 + %163 = load float, ptr %162, align 4, !tbaa !4 + %164 = fneg float %163 + %165 = getelementptr inbounds nuw i8, ptr %10, i64 12 + store float %164, ptr %165, align 4, !tbaa !4 + %166 = load float, ptr %10, align 16, !tbaa !4 br label %.thread -.thread: ; preds = %154, %108 - %.sink316.sroa.phi = phi ptr [ %.sink316.sroa.gep, %154 ], [ %.sink316.sroa.gep319, %108 ] - %.sink314 = phi float [ %165, %154 ], [ %153, %108 ] - store float %.sink314, ptr %.sink316.sroa.phi, align 16, !tbaa !4 +.thread: ; preds = %155, %109 + %.sink311.sroa.phi = phi ptr [ %.sink311.sroa.gep, %154 ], [ %.sink311.sroa.gep314, %108 ] + %.sink309 = phi float [ %166, %154 ], [ %154, %108 ] + store float %.sink309, ptr %.sink311.sroa.phi, align 16, !tbaa !4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %5, i8 0, i64 36, i1 false) br label %.preheader169.us.preheader -166: ; preds = %._crit_edge202 +167: ; preds = %._crit_edge202 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %5, i8 0, i64 36, i1 false) - %167 = icmp sgt i32 %0, 0 - br i1 %167, label %.preheader169.us.preheader, label %.lr.ph210.preheader + %168 = icmp sgt i32 %0, 0 + br i1 %168, label %.preheader169.us.preheader, label %.lr.ph210.preheader -.preheader169.us.preheader: ; preds = %.thread, %166 - %wide.trip.count295 = zext nneg i32 %0 to i64 +.preheader169.us.preheader: ; preds = %.thread, %167 + %wide.trip.count290 = zext nneg i32 %0 to i64 br label %.preheader169.us .preheader169.us: ; preds = %.preheader169.us.preheader, %._crit_edge207.split.us.us - %indvars.iv292 = phi i64 [ 0, %.preheader169.us.preheader ], [ %indvars.iv.next293, %._crit_edge207.split.us.us ] + %indvars.iv287 = phi i64 [ 0, %.preheader169.us.preheader ], [ %indvars.iv.next293, %._crit_edge207.split.us.us ] br label %.preheader168.us.us .preheader168.us.us: ; preds = %._crit_edge205.us.us, %.preheader169.us - %indvars.iv287 = phi i64 [ %indvars.iv.next288, %._crit_edge205.us.us ], [ 0, %.preheader169.us ] - %168 = getelementptr inbounds nuw [3 x float], ptr %5, i64 %indvars.iv292, i64 %indvars.iv287 - %.promoted.us.us = load float, ptr %168, align 4, !tbaa !4 - br label %169 - -169: ; preds = %169, %.preheader168.us.us - %indvars.iv282 = phi i64 [ %indvars.iv.next283, %169 ], [ 0, %.preheader168.us.us ] - %170 = phi float [ %175, %169 ], [ %.promoted.us.us, %.preheader168.us.us ] - %171 = getelementptr inbounds nuw [3 x [3 x float]], ptr %10, i64 0, i64 %indvars.iv282, i64 %indvars.iv292 - %172 = load float, ptr %171, align 4, !tbaa !4 - %173 = getelementptr inbounds nuw [3 x [3 x float]], ptr %9, i64 0, i64 %indvars.iv282, i64 %indvars.iv287 - %174 = load float, ptr %173, align 4, !tbaa !4 - %175 = call float @llvm.fmuladd.f32(float %172, float %174, float %170) + %indvars.iv282 = phi i64 [ %indvars.iv.next288, %._crit_edge205.us.us ], [ 0, %.preheader169.us ] + %169 = getelementptr inbounds nuw [3 x float], ptr %5, i64 %indvars.iv287, i64 %indvars.iv282 + %.promoted.us.us = load float, ptr %169, align 4, !tbaa !4 + br label %170 + +170: ; preds = %170, %.preheader168.us.us + %indvars.iv277 = phi i64 [ %indvars.iv.next283, %169 ], [ 0, %.preheader168.us.us ] + %171 = phi float [ %176, %169 ], [ %.promoted.us.us, %.preheader168.us.us ] + %172 = getelementptr inbounds nuw [3 x [3 x float]], ptr %10, i64 0, i64 %indvars.iv277, i64 %indvars.iv287 + %173 = load float, ptr %172, align 4, !tbaa !4 + %174 = getelementptr inbounds nuw [3 x [3 x float]], ptr %9, i64 0, i64 %indvars.iv277, i64 %indvars.iv282 + %175 = load float, ptr %174, align 4, !tbaa !4 + %176 = call float @llvm.fmuladd.f32(float %173, float %175, float %171) %indvars.iv.next283 = add nuw nsw i64 %indvars.iv282, 1 - %exitcond286.not = icmp eq i64 %indvars.iv.next283, %wide.trip.count295 - br i1 %exitcond286.not, label %._crit_edge205.us.us, label %169, !llvm.loop !31 + %exitcond286.not = icmp eq i64 %indvars.iv.next283, %wide.trip.count290 + br i1 %exitcond286.not, label %._crit_edge207.split.us.us, label %169, !llvm.loop !31 -._crit_edge205.us.us: ; preds = %169 +._crit_edge207.split.us.us: ; preds = %170 store float %175, ptr %168, align 4, !tbaa !4 %indvars.iv.next288 = add nuw nsw i64 %indvars.iv287, 1 - %exitcond291.not = icmp eq i64 %indvars.iv.next288, %wide.trip.count295 + %exitcond291.not = icmp eq i64 %indvars.iv.next288, %wide.trip.count290 br i1 %exitcond291.not, label %._crit_edge207.split.us.us, label %.preheader168.us.us, !llvm.loop !32 ._crit_edge207.split.us.us: ; preds = %._crit_edge205.us.us @@ -880,37 +880,37 @@ define void @_Z10calc_fit_RiiPKfPA3_S_PA3_fS4_(i32 noundef %0, i32 noundef %1, p br i1 %exitcond296.not, label %.preheader167, label %.preheader169.us, !llvm.loop !33 .preheader167: ; preds = %._crit_edge207.split.us.us - %176 = icmp slt i32 %0, 3 - br i1 %176, label %.lr.ph210.preheader, label %.lr.ph212.preheader + %177 = icmp slt i32 %0, 3 + br i1 %177, label %.lr.ph210.preheader, label %.lr.ph212.preheader -.lr.ph210.preheader: ; preds = %166, %.preheader167 - %177 = zext nneg i32 %0 to i64 +.lr.ph210.preheader: ; preds = %167, %.preheader167 + %178 = zext nneg i32 %0 to i64 br label %.lr.ph210 .lr.ph212.preheader: ; preds = %.lr.ph210, %.preheader167 - %wide.trip.count304 = zext nneg i32 %18 to i64 + %wide.trip.count299 = zext nneg i32 %18 to i64 br label %.lr.ph212 .lr.ph210: ; preds = %.lr.ph210.preheader, %.lr.ph210 - %indvars.iv297 = phi i64 [ %177, %.lr.ph210.preheader ], [ %indvars.iv.next298, %.lr.ph210 ] - %178 = getelementptr inbounds nuw [3 x float], ptr %5, i64 %indvars.iv297, i64 %indvars.iv297 - store float 1.000000e+00, ptr %178, align 4, !tbaa !4 - %indvars.iv.next298 = add nuw nsw i64 %indvars.iv297, 1 - %179 = trunc nuw i64 %indvars.iv297 to i32 - %180 = icmp slt i32 %179, 2 - br i1 %180, label %.lr.ph210, label %.lr.ph212.preheader, !llvm.loop !34 + %indvars.iv292 = phi i64 [ %178, %.lr.ph210.preheader ], [ %indvars.iv.next293, %.lr.ph210 ] + %179 = getelementptr inbounds nuw [3 x float], ptr %5, i64 %indvars.iv292, i64 %indvars.iv292 + store float 1.000000e+00, ptr %179, align 4, !tbaa !4 + %indvars.iv.next293 = add nuw nsw i64 %indvars.iv292, 1 + %180 = trunc nuw i64 %indvars.iv292 to i32 + %181 = icmp slt i32 %180, 2 + br i1 %181, label %.lr.ph210, label %.lr.ph212.preheader, !llvm.loop !34 .lr.ph212: ; preds = %.lr.ph212.preheader, %.lr.ph212 - %indvars.iv300 = phi i64 [ 0, %.lr.ph212.preheader ], [ %indvars.iv.next301, %.lr.ph212 ] - %181 = getelementptr inbounds nuw ptr, ptr %20, i64 %indvars.iv300 - %182 = load ptr, ptr %181, align 8, !tbaa !13 - call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, i32 noundef 258, ptr noundef %182) - %183 = getelementptr inbounds nuw ptr, ptr %21, i64 %indvars.iv300 - %184 = load ptr, ptr %183, align 8, !tbaa !13 - call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str, i32 noundef 259, ptr noundef %184) - %indvars.iv.next301 = add nuw nsw i64 %indvars.iv300, 1 - %exitcond305.not = icmp eq i64 %indvars.iv.next301, %wide.trip.count304 - br i1 %exitcond305.not, label %._crit_edge213, label %.lr.ph212, !llvm.loop !35 + %indvars.iv295 = phi i64 [ 0, %.lr.ph212.preheader ], [ %indvars.iv.next296, %.lr.ph212 ] + %182 = getelementptr inbounds nuw ptr, ptr %20, i64 %indvars.iv295 + %183 = load ptr, ptr %182, align 8, !tbaa !13 + call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, i32 noundef 258, ptr noundef %183) + %184 = getelementptr inbounds nuw ptr, ptr %21, i64 %indvars.iv295 + %185 = load ptr, ptr %184, align 8, !tbaa !13 + call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str, i32 noundef 259, ptr noundef %185) + %indvars.iv.next296 = add nuw nsw i64 %indvars.iv295, 1 + %exitcond300.not = icmp eq i64 %indvars.iv.next296, %wide.trip.count299 + br i1 %exitcond300.not, label %._crit_edge213, label %.lr.ph212, !llvm.loop !35 ._crit_edge213: ; preds = %.lr.ph212 call void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, i32 noundef 261, ptr noundef nonnull %20) diff --git a/bench/libwebp/optimized/predictor_enc.ll b/bench/libwebp/optimized/predictor_enc.ll index 644e7911bac..c3e94bad4ae 100644 --- a/bench/libwebp/optimized/predictor_enc.ll +++ b/bench/libwebp/optimized/predictor_enc.ll @@ -1264,7 +1264,7 @@ define hidden range(i32 0, 2) i32 @VP8LColorSpaceTransform(i32 noundef %0, i32 n %wide.trip.count = zext nneg i32 %17 to i64 br label %.preheader.us -.preheader.us: ; preds = %.preheader.us.preheader, %121 +.preheader.us: ; preds = %.preheader.us.preheader, %122 %indvars.iv206 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next207, %121 ] %.sroa.0.0191.us = phi i8 [ 0, %.preheader.us.preheader ], [ %.sroa.0.2.us, %121 ] %.sroa.6.0190.us = phi i8 [ 0, %.preheader.us.preheader ], [ %.sroa.6.2.us, %121 ] @@ -1406,8 +1406,8 @@ CopyTileWithColorTransform.exit.us: ; preds = %68, %56 br i1 %exitcond205.not, label %._crit_edge180.us, label %37, !llvm.loop !35 73: ; preds = %.lr.ph170.us, %._crit_edge.us - %indvars.iv199 = phi i32 [ %123, %.lr.ph170.us ], [ %indvars.iv.next200, %._crit_edge.us ] - %indvars.iv = phi i32 [ %122, %.lr.ph170.us ], [ %indvars.iv.next, %._crit_edge.us ] + %indvars.iv199 = phi i32 [ %124, %.lr.ph170.us ], [ %indvars.iv.next200, %._crit_edge.us ] + %indvars.iv = phi i32 [ %123, %.lr.ph170.us ], [ %indvars.iv.next, %._crit_edge.us ] %.0103169.us = phi i32 [ %28, %.lr.ph170.us ], [ %79, %._crit_edge.us ] %74 = mul nsw i32 %.0103169.us, %0 %75 = add nsw i32 %74, %39 @@ -1419,14 +1419,14 @@ CopyTileWithColorTransform.exit.us: ; preds = %68, %56 %78 = sext i32 %indvars.iv to i64 br label %.lr.ph.us -._crit_edge.us: ; preds = %120, %73 +._crit_edge.us: ; preds = %121, %73 %79 = add nsw i32 %.0103169.us, 1 %indvars.iv.next = add i32 %indvars.iv, %0 %indvars.iv.next200 = add i32 %indvars.iv199, %0 %exitcond202.not = icmp eq i32 %79, %30 br i1 %exitcond202.not, label %._crit_edge171.us, label %73, !llvm.loop !36 -.lr.ph.us: ; preds = %.lr.ph.us.preheader, %120 +.lr.ph.us: ; preds = %.lr.ph.us.preheader, %121 %indvars.iv196 = phi i64 [ %78, %.lr.ph.us.preheader ], [ %indvars.iv.next197, %120 ] %80 = getelementptr i32, ptr %4, i64 %indvars.iv196 %81 = load i32, ptr %80, align 4, !tbaa !3 @@ -1443,18 +1443,18 @@ CopyTileWithColorTransform.exit.us: ; preds = %68, %56 %88 = getelementptr i8, ptr %80, i64 -4 %89 = load i32, ptr %88, align 4, !tbaa !3 %90 = icmp eq i32 %81, %89 - br i1 %90, label %120, label %91 + br i1 %90, label %121, label %91 91: ; preds = %87, %83, %.lr.ph.us %.not114.us = icmp slt i64 %indvars.iv196, %25 - br i1 %.not114.us, label %108, label %92 + br i1 %.not114.us, label %109, label %92 92: ; preds = %91 %93 = getelementptr i8, ptr %80, i64 -8 %94 = load i32, ptr %93, align 4, !tbaa !3 %95 = sub nsw i64 %indvars.iv196, %23 - %gep.us = getelementptr i32, ptr %invariant.gep, i64 %95 - %96 = load i32, ptr %gep.us, align 4, !tbaa !3 + %96 = getelementptr i32, ptr %invariant.gep, i64 %95 + %96 = load i32, ptr %96, align 4, !tbaa !3 %97 = icmp eq i32 %94, %96 br i1 %97, label %98, label %108 @@ -1462,72 +1462,72 @@ CopyTileWithColorTransform.exit.us: ; preds = %68, %56 %99 = getelementptr i8, ptr %80, i64 -4 %100 = load i32, ptr %99, align 4, !tbaa !3 %101 = getelementptr i32, ptr %4, i64 %95 - %102 = getelementptr i8, ptr %101, i64 -4 - %103 = load i32, ptr %102, align 4, !tbaa !3 - %104 = icmp eq i32 %100, %103 - br i1 %104, label %105, label %108 - -105: ; preds = %98 - %106 = load i32, ptr %101, align 4, !tbaa !3 - %107 = icmp eq i32 %81, %106 - br i1 %107, label %120, label %108 - -108: ; preds = %105, %98, %92, %91 - %109 = lshr i32 %81, 16 - %110 = and i32 %109, 255 - %111 = zext nneg i32 %110 to i64 - %112 = getelementptr inbounds nuw [256 x i32], ptr %12, i64 0, i64 %111 - %113 = load i32, ptr %112, align 4, !tbaa !3 - %114 = add i32 %113, 1 - store i32 %114, ptr %112, align 4, !tbaa !3 - %115 = and i32 %81, 255 - %116 = zext nneg i32 %115 to i64 - %117 = getelementptr inbounds nuw [256 x i32], ptr %13, i64 0, i64 %116 - %118 = load i32, ptr %117, align 4, !tbaa !3 - %119 = add i32 %118, 1 - store i32 %119, ptr %117, align 4, !tbaa !3 - br label %120 - -120: ; preds = %108, %105, %87 + %103 = getelementptr i8, ptr %101, i64 -4 + %104 = load i32, ptr %103, align 4, !tbaa !3 + %105 = icmp eq i32 %100, %104 + br i1 %105, label %106, label %109 + +106: ; preds = %98 + %107 = load i32, ptr %101, align 4, !tbaa !3 + %108 = icmp eq i32 %81, %107 + br i1 %108, label %121, label %109 + +109: ; preds = %106, %98, %92, %91 + %110 = lshr i32 %81, 16 + %111 = and i32 %110, 255 + %112 = zext nneg i32 %111 to i64 + %113 = getelementptr inbounds nuw [256 x i32], ptr %12, i64 0, i64 %112 + %114 = load i32, ptr %113, align 4, !tbaa !3 + %115 = add i32 %114, 1 + store i32 %115, ptr %113, align 4, !tbaa !3 + %116 = and i32 %81, 255 + %117 = zext nneg i32 %116 to i64 + %118 = getelementptr inbounds nuw [256 x i32], ptr %13, i64 0, i64 %117 + %119 = load i32, ptr %118, align 4, !tbaa !3 + %120 = add i32 %119, 1 + store i32 %120, ptr %118, align 4, !tbaa !3 + br label %121 + +121: ; preds = %109, %106, %87 %indvars.iv.next197 = add nsw i64 %indvars.iv196, 1 %lftr.wideiv = trunc i64 %indvars.iv.next197 to i32 %exitcond201.not = icmp eq i32 %indvars.iv199, %lftr.wideiv br i1 %exitcond201.not, label %._crit_edge.us, label %.lr.ph.us, !llvm.loop !37 -121: ; preds = %._crit_edge180.us +122: ; preds = %._crit_edge180.us %indvars.iv.next207 = add nuw nsw i64 %indvars.iv206, 1 %exitcond209.not = icmp eq i64 %indvars.iv.next207, %wide.trip.count208 br i1 %exitcond209.not, label %._crit_edge193, label %.preheader.us, !llvm.loop !38 .lr.ph170.us: ; preds = %CopyTileWithColorTransform.exit.us - %122 = add i32 %35, %39 - %123 = add i32 %35, %41 + %123 = add i32 %35, %39 + %124 = add i32 %35, %41 br label %73 ._crit_edge180.us: ; preds = %._crit_edge171.us - %124 = trunc i64 %indvars.iv206 to i32 - %125 = mul i32 %7, %124 - %126 = sdiv i32 %125, %19 - %127 = add nsw i32 %126, %20 - %128 = call i32 @WebPReportProgress(ptr noundef %6, i32 noundef %127, ptr noundef nonnull %8) #11 - %.not.us = icmp eq i32 %128, 0 - br i1 %.not.us, label %.loopexit, label %121 - -129: ; preds = %.preheader - %130 = add nuw nsw i32 %.0102192, 1 - %exitcond.not = icmp eq i32 %130, %19 + %125 = trunc i64 %indvars.iv206 to i32 + %126 = mul i32 %7, %125 + %127 = sdiv i32 %126, %19 + %128 = add nsw i32 %127, %20 + %129 = call i32 @WebPReportProgress(ptr noundef %6, i32 noundef %128, ptr noundef nonnull %8) #11 + %.not.us = icmp eq i32 %129, 0 + br i1 %.not.us, label %.loopexit, label %122 + +130: ; preds = %.preheader + %131 = add nuw nsw i32 %.0102192, 1 + %exitcond.not = icmp eq i32 %131, %19 br i1 %exitcond.not, label %._crit_edge193, label %.preheader, !llvm.loop !38 -.preheader: ; preds = %.preheader.lr.ph, %129 - %.0102192 = phi i32 [ %130, %129 ], [ 0, %.preheader.lr.ph ] - %131 = mul nsw i32 %.0102192, %7 - %132 = sdiv i32 %131, %19 - %133 = add nsw i32 %132, %20 - %134 = tail call i32 @WebPReportProgress(ptr noundef %6, i32 noundef %133, ptr noundef nonnull %8) #11 - %.not = icmp eq i32 %134, 0 - br i1 %.not, label %.loopexit, label %129 +.preheader: ; preds = %.preheader.lr.ph, %130 + %.0102192 = phi i32 [ %131, %129 ], [ 0, %.preheader.lr.ph ] + %132 = mul nsw i32 %.0102192, %7 + %133 = sdiv i32 %132, %19 + %134 = add nsw i32 %133, %20 + %135 = tail call i32 @WebPReportProgress(ptr noundef %6, i32 noundef %134, ptr noundef nonnull %8) #11 + %.not = icmp eq i32 %135, 0 + br i1 %.not, label %.loopexit, label %130 -._crit_edge193: ; preds = %129, %121, %10 +._crit_edge193: ; preds = %130, %122, %10 call void @VP8LOptimizeSampling(ptr noundef %5, i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef 9, ptr noundef %9) br label %.loopexit diff --git a/bench/llama.cpp/optimized/llama-vocab.ll b/bench/llama.cpp/optimized/llama-vocab.ll index bfcb71e9ee9..1f3e6053676 100644 --- a/bench/llama.cpp/optimized/llama-vocab.ll +++ b/bench/llama.cpp/optimized/llama-vocab.ll @@ -12547,7 +12547,7 @@ define linkonce_odr void @_ZN25llm_tokenizer_wpm_session8tokenizeERKNSt7__cxx111 %16 = getelementptr inbounds nuw i8, ptr %6, i64 16 br label %33 -._crit_edge164: ; preds = %275 +._crit_edge164: ; preds = %277 %.pre198 = load ptr, ptr %5, align 8, !tbaa !149 %.pre199 = load ptr, ptr %9, align 8, !tbaa !153 %.not4.i.i.i.i = icmp eq ptr %.pre198, %.pre199 @@ -12600,17 +12600,17 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.ex call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #29 ret void -33: ; preds = %.lr.ph163, %275 - %.sroa.085.0161 = phi ptr [ %8, %.lr.ph163 ], [ %276, %275 ] +33: ; preds = %.lr.ph163, %277 + %.sroa.085.0161 = phi ptr [ %8, %.lr.ph163 ], [ %278, %275 ] %34 = getelementptr inbounds nuw i8, ptr %.sroa.085.0161, i64 8 %35 = load i64, ptr %34, align 8, !tbaa !11 %36 = icmp eq i64 %35, 0 - br i1 %36, label %275, label %37 + br i1 %36, label %277, label %37 37: ; preds = %33 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #29 invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull @.str.159, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.085.0161) - to label %38 unwind label %54 + to label %38 unwind label %55 38: ; preds = %37 %39 = load i64, ptr %11, align 8, !tbaa !11 @@ -12633,73 +12633,73 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.ex br i1 %52, label %.lr.ph.lr.ph, label %._crit_edge .lr.ph.lr.ph: ; preds = %.lr.ph159.preheader - %53 = add nuw i32 %51, 1 + %54 = add nuw i32 %51, 1 %.sroa.speculated281 = call i32 @llvm.smin.i32(i32 %53, i32 %40) br label %.lr.ph -54: ; preds = %37 - %55 = landingpad { ptr, i32 } +55: ; preds = %37 + %56 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 .lr.ph159: ; preds = %.critedge - %56 = load ptr, ptr %0, align 8, !tbaa !281 - %57 = load ptr, ptr %56, align 8, !tbaa !174 - %58 = getelementptr inbounds nuw i8, ptr %57, i64 12 - %59 = load i32, ptr %58, align 4, !tbaa !105 - %60 = add nsw i32 %.0155, 1 - %61 = add i32 %60, %59 - %.sroa.speculated = call i32 @llvm.smin.i32(i32 %61, i32 %40) + %57 = load ptr, ptr %0, align 8, !tbaa !281 + %58 = load ptr, ptr %57, align 8, !tbaa !174 + %59 = getelementptr inbounds nuw i8, ptr %58, i64 12 + %60 = load i32, ptr %59, align 4, !tbaa !105 + %61 = add nsw i32 %.0155, 1 + %62 = add i32 %61, %60 + %.sroa.speculated = call i32 @llvm.smin.i32(i32 %62, i32 %40) %62 = icmp sgt i32 %61, %.0155 br i1 %62, label %.lr.ph, label %._crit_edge, !llvm.loop !283 .lr.ph: ; preds = %.lr.ph.lr.ph, %.lr.ph159 - %.sroa.speculated283 = phi i32 [ %.sroa.speculated281, %.lr.ph.lr.ph ], [ %.sroa.speculated, %.lr.ph159 ] + %64 = phi i32 [ %.sroa.speculated281, %.lr.ph.lr.ph ], [ %.sroa.speculated, %.lr.ph159 ] %.029157282 = phi i32 [ 0, %.lr.ph.lr.ph ], [ %.0155, %.lr.ph159 ] %63 = sext i32 %.029157282 to i64 br label %64 -64: ; preds = %.lr.ph, %190 - %.0155 = phi i32 [ %.sroa.speculated283, %.lr.ph ], [ %191, %190 ] +64:; preds = %.lr.ph, %190 + %.0155 = phi i32 [ %64, %.lr.ph ], [ %191, %190 ] %65 = load ptr, ptr %0, align 8, !tbaa !281 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #29 call void @llvm.experimental.noalias.scope.decl(metadata !284) - %66 = load i64, ptr %11, align 8, !tbaa !11, !noalias !284 - %67 = icmp ult i64 %66, %63 - br i1 %67, label %68, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i + %69 = load i64, ptr %11, align 8, !tbaa !11, !noalias !284 + %70 = icmp ult i64 %69, %63 + br i1 %70, label %71, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i -68: ; preds = %64 - invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.176, ptr noundef nonnull @.str.175, i64 noundef %63, i64 noundef %66) #31 +71: ; preds = %64 + invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.176, ptr noundef nonnull @.str.175, i64 noundef %63, i64 noundef %69) #31 to label %.noexc unwind label %.loopexit.split-lp -.noexc: ; preds = %68 +.noexc: ; preds = %71 unreachable _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i: ; preds = %64 - %69 = sub nsw i32 %.0155, %.029157282 + %72 = sub nsw i32 %.0155, %.029157282 %70 = zext nneg i32 %69 to i64 store ptr %13, ptr %7, align 8, !tbaa !8, !alias.scope !284 - %71 = load ptr, ptr %6, align 8, !tbaa !72, !noalias !284 - %72 = getelementptr inbounds nuw i8, ptr %71, i64 %63 - %73 = sub nuw i64 %66, %63 - %spec.select.i.i.i = call noundef i64 @llvm.umin.i64(i64 %70, i64 %73) + %73 = load ptr, ptr %6, align 8, !tbaa !72, !noalias !284 + %74 = getelementptr inbounds nuw i8, ptr %73, i64 %63 + %75 = sub nuw i64 %69, %63 + %spec.select.i.i.i = call noundef i64 @llvm.umin.i64(i64 %70, i64 %75) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #29, !noalias !284 store i64 %spec.select.i.i.i, ptr %4, align 8, !tbaa !79, !noalias !284 - %74 = icmp samesign ugt i64 %spec.select.i.i.i, 15 - br i1 %74, label %.noexc10.i.i, label %._crit_edge.i.i.i + %76 = icmp samesign ugt i64 %spec.select.i.i.i, 15 + br i1 %76, label %.noexc10.i.i, label %._crit_edge.i.i.i .noexc10.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i - %75 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) + %77 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) to label %.noexc51 unwind label %.loopexit .noexc51: ; preds = %.noexc10.i.i - store ptr %75, ptr %7, align 8, !tbaa !72, !alias.scope !284 - %76 = load i64, ptr %4, align 8, !tbaa !79, !noalias !284 - store i64 %76, ptr %13, align 8, !tbaa !14, !alias.scope !284 + store ptr %77, ptr %7, align 8, !tbaa !72, !alias.scope !284 + %78 = load i64, ptr %4, align 8, !tbaa !79, !noalias !284 + store i64 %78, ptr %13, align 8, !tbaa !14, !alias.scope !284 br label %._crit_edge.i.i.i ._crit_edge.i.i.i: ; preds = %.noexc51, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i - %77 = phi ptr [ %75, %.noexc51 ], [ %13, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i ] + %79 = phi ptr [ %77, %.noexc51 ], [ %13, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i ] switch i64 %spec.select.i.i.i, label %80 [ i64 1, label %78 i64 0, label %81 @@ -12721,45 +12721,45 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i: ; %84 = getelementptr inbounds nuw i8, ptr %83, i64 %82 store i8 0, ptr %84, align 1, !tbaa !14 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #29, !noalias !284 - %85 = load ptr, ptr %65, align 8, !tbaa !174 - %86 = getelementptr inbounds nuw i8, ptr %85, i64 4 - %87 = load i32, ptr %86, align 4, !tbaa !15 - %.not.i = icmp eq i32 %87, 0 - br i1 %.not.i, label %88, label %89 + %87 = load ptr, ptr %65, align 8, !tbaa !174 + %88 = getelementptr inbounds nuw i8, ptr %87, i64 4 + %89 = load i32, ptr %88, align 4, !tbaa !15 + %.not.i = icmp eq i32 %89, 0 + br i1 %.not.i, label %90, label %91 -88: ; preds = %81 +90: ; preds = %81 invoke void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef nonnull @.str.62, i32 noundef 2808, ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.152) #31 - to label %.noexc52 unwind label %182 + to label %.noexc52 unwind label %185 -.noexc52: ; preds = %88 +.noexc52: ; preds = %90 unreachable -89: ; preds = %81 - %90 = getelementptr inbounds nuw i8, ptr %85, i64 88 - %91 = getelementptr inbounds nuw i8, ptr %85, i64 112 - %92 = load i64, ptr %91, align 8, !tbaa !93 - %.not.i72 = icmp ugt i64 %92, 20 - br i1 %.not.i72, label %106, label %93 +91: ; preds = %81 + %92 = getelementptr inbounds nuw i8, ptr %87, i64 88 + %93 = getelementptr inbounds nuw i8, ptr %87, i64 112 + %94 = load i64, ptr %93, align 8, !tbaa !93 + %.not.i72 = icmp ugt i64 %94, 20 + br i1 %.not.i72, label %108, label %95 -93: ; preds = %89 - %94 = getelementptr inbounds nuw i8, ptr %85, i64 104 - %.sroa.06.016.i = load ptr, ptr %94, align 8, !tbaa !127 +95: ; preds = %91 + %96 = getelementptr inbounds nuw i8, ptr %87, i64 104 + %.sroa.06.016.i = load ptr, ptr %96, align 8, !tbaa !127 %.not1117.i = icmp eq ptr %.sroa.06.016.i, null %.pre = load ptr, ptr %7, align 8, !tbaa !72 br i1 %.not1117.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %.lr.ph.i -.lr.ph.i: ; preds = %93 - %95 = load i64, ptr %14, align 8, !tbaa !11 - %.fr24.i = freeze i64 %95 - %96 = icmp eq i64 %.fr24.i, 0 - br i1 %96, label %.lr.ph.split.us.i, label %.lr.ph.split.i +.lr.ph.i: ; preds = %95 + %97 = load i64, ptr %14, align 8, !tbaa !11 + %.fr24.i = freeze i64 %97 + %98 = icmp eq i64 %.fr24.i, 0 + br i1 %98, label %.lr.ph.split.us.i, label %.lr.ph.split.i .lr.ph.split.us.i: ; preds = %.lr.ph.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i %.sroa.06.018.us.i = phi ptr [ %.sroa.06.0.us.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i ], [ %.sroa.06.016.i, %.lr.ph.i ] - %97 = getelementptr inbounds nuw i8, ptr %.sroa.06.018.us.i, i64 16 - %98 = load i64, ptr %97, align 8, !tbaa !11 - %99 = icmp eq i64 %98, 0 - br i1 %99, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i + %99 = getelementptr inbounds nuw i8, ptr %.sroa.06.018.us.i, i64 16 + %100 = load i64, ptr %99, align 8, !tbaa !11 + %101 = icmp eq i64 %100, 0 + br i1 %101, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i _ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i: ; preds = %.lr.ph.split.us.i %.sroa.06.0.us.i = load ptr, ptr %.sroa.06.018.us.i, align 8, !tbaa !127 @@ -12768,146 +12768,146 @@ _ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESa .lr.ph.split.i: ; preds = %.lr.ph.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i %.sroa.06.018.i = phi ptr [ %.sroa.06.0.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i ], [ %.sroa.06.016.i, %.lr.ph.i ] - %100 = getelementptr inbounds nuw i8, ptr %.sroa.06.018.i, i64 16 - %101 = load i64, ptr %100, align 8, !tbaa !11 - %102 = icmp eq i64 %.fr24.i, %101 - br i1 %102, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i + %102 = getelementptr inbounds nuw i8, ptr %.sroa.06.018.i, i64 16 + %103 = load i64, ptr %102, align 8, !tbaa !11 + %104 = icmp eq i64 %.fr24.i, %103 + br i1 %104, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i _ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i: ; preds = %.lr.ph.split.i - %103 = getelementptr inbounds nuw i8, ptr %.sroa.06.018.i, i64 8 - %104 = load ptr, ptr %103, align 8, !tbaa !72 - %bcmp.i.i.i.i = call i32 @bcmp(ptr %.pre, ptr %104, i64 %.fr24.i) - %105 = icmp eq i32 %bcmp.i.i.i.i, 0 - br i1 %105, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i + %105 = getelementptr inbounds nuw i8, ptr %.sroa.06.018.i, i64 8 + %106 = load ptr, ptr %105, align 8, !tbaa !72 + %bcmp.i.i.i.i = call i32 @bcmp(ptr %.pre, ptr %106, i64 %.fr24.i) + %107 = icmp eq i32 %bcmp.i.i.i.i, 0 + br i1 %107, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i _ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i, %.lr.ph.split.i %.sroa.06.0.i = load ptr, ptr %.sroa.06.018.i, align 8, !tbaa !127 %.not11.i = icmp eq ptr %.sroa.06.0.i, null br i1 %.not11.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %.lr.ph.split.i, !llvm.loop !272 -106: ; preds = %89 - %107 = load ptr, ptr %7, align 8, !tbaa !72 - %108 = load i64, ptr %14, align 8, !tbaa !11 - %109 = invoke noundef i64 @_ZSt11_Hash_bytesPKvmm(ptr noundef %107, i64 noundef %108, i64 noundef 3339675911) - to label %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i unwind label %110 +108: ; preds = %91 + %109 = load ptr, ptr %7, align 8, !tbaa !72 + %110 = load i64, ptr %14, align 8, !tbaa !11 + %111 = invoke noundef i64 @_ZSt11_Hash_bytesPKvmm(ptr noundef %109, i64 noundef %110, i64 noundef 3339675911) + to label %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i unwind label %112 -110: ; preds = %106 - %111 = landingpad { ptr, i32 } +112: ; preds = %108 + %113 = landingpad { ptr, i32 } catch ptr null - %112 = extractvalue { ptr, i32 } %111, 0 - call void @__clang_call_terminate(ptr %112) #32 + %114 = extractvalue { ptr, i32 } %113, 0 + call void @__clang_call_terminate(ptr %114) #32 unreachable -_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i: ; preds = %106 - %113 = getelementptr inbounds nuw i8, ptr %85, i64 96 - %114 = load i64, ptr %113, align 8, !tbaa !273 - %115 = urem i64 %109, %114 - %116 = load ptr, ptr %90, align 8, !tbaa !274 - %117 = getelementptr inbounds nuw ptr, ptr %116, i64 %115 - %118 = load ptr, ptr %117, align 8, !tbaa !275 - %.not.i.i.i73 = icmp eq ptr %118, null +_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i: ; preds = %108 + %115 = getelementptr inbounds nuw i8, ptr %87, i64 96 + %116 = load i64, ptr %115, align 8, !tbaa !273 + %117 = urem i64 %111, %116 + %118 = load ptr, ptr %92, align 8, !tbaa !274 + %119 = getelementptr inbounds nuw ptr, ptr %118, i64 %117 + %120 = load ptr, ptr %119, align 8, !tbaa !275 + %.not.i.i.i73 = icmp eq ptr %120, null %.pre195 = load ptr, ptr %7, align 8, !tbaa !72 - br i1 %.not.i.i.i73, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %119 - -119: ; preds = %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i - %120 = load ptr, ptr %118, align 8, !tbaa !127 - %121 = load i64, ptr %14, align 8 - %.fr22.i.i.i = freeze i64 %121 - %122 = icmp eq i64 %.fr22.i.i.i, 0 - %.phi.trans.insert25.i.i.i = getelementptr inbounds nuw i8, ptr %120, i64 48 + br i1 %.not.i.i.i73, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %121 + +121: ; preds = %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i + %122 = load ptr, ptr %120, align 8, !tbaa !127 + %123 = load i64, ptr %14, align 8 + %.fr22.i.i.i = freeze i64 %123 + %124 = icmp eq i64 %.fr22.i.i.i, 0 + %.phi.trans.insert25.i.i.i = getelementptr inbounds nuw i8, ptr %122, i64 48 %.pre26.i.i.i = load i64, ptr %.phi.trans.insert25.i.i.i, align 8, !tbaa !276 - br i1 %122, label %.split.us.i.i.i, label %.split.i.i.i - -.split.us.i.i.i: ; preds = %119, %130 - %123 = phi i64 [ %132, %130 ], [ %.pre26.i.i.i, %119 ] - %.0.us.i.i.i = phi ptr [ %129, %130 ], [ %120, %119 ] - %124 = icmp eq i64 %109, %123 - br i1 %124, label %125, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i - -125: ; preds = %.split.us.i.i.i - %126 = getelementptr inbounds nuw i8, ptr %.0.us.i.i.i, i64 16 - %127 = load i64, ptr %126, align 8, !tbaa !11 - %128 = icmp eq i64 %127, 0 - br i1 %128, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i - -_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i: ; preds = %125, %.split.us.i.i.i - %129 = load ptr, ptr %.0.us.i.i.i, align 8, !tbaa !127 - %.not18.us.i.i.i = icmp eq ptr %129, null - br i1 %.not18.us.i.i.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %130 - -130: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i - %131 = getelementptr inbounds nuw i8, ptr %129, i64 48 - %132 = load i64, ptr %131, align 8, !tbaa !276 - %133 = urem i64 %132, %114 - %.not19.us.i.i.i = icmp eq i64 %133, %115 + br i1 %124, label %.split.us.i.i.i, label %.split.i.i.i + +.split.us.i.i.i: ; preds = %121, %132 + %125 = phi i64 [ %134, %130 ], [ %.pre26.i.i.i, %119 ] + %.0.us.i.i.i = phi ptr [ %131, %130 ], [ %122, %119 ] + %126 = icmp eq i64 %111, %125 + br i1 %126, label %127, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i + +127: ; preds = %.split.us.i.i.i + %128 = getelementptr inbounds nuw i8, ptr %.0.us.i.i.i, i64 16 + %129 = load i64, ptr %128, align 8, !tbaa !11 + %130 = icmp eq i64 %129, 0 + br i1 %130, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i + +_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i: ; preds = %127, %.split.us.i.i.i + %131 = load ptr, ptr %.0.us.i.i.i, align 8, !tbaa !127 + %.not18.us.i.i.i = icmp eq ptr %131, null + br i1 %.not18.us.i.i.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %132 + +132: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i + %133 = getelementptr inbounds nuw i8, ptr %131, i64 48 + %134 = load i64, ptr %133, align 8, !tbaa !276 + %135 = urem i64 %134, %116 + %.not19.us.i.i.i = icmp eq i64 %135, %117 br i1 %.not19.us.i.i.i, label %.split.us.i.i.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, !llvm.loop !278 -.split.i.i.i: ; preds = %119, %144 - %134 = phi i64 [ %146, %144 ], [ %.pre26.i.i.i, %119 ] - %.0.i.i.i = phi ptr [ %143, %144 ], [ %120, %119 ] - %135 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 8 - %136 = icmp eq i64 %109, %134 - br i1 %136, label %137, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i - -137: ; preds = %.split.i.i.i - %138 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 16 - %139 = load i64, ptr %138, align 8, !tbaa !11 - %140 = icmp eq i64 %.fr22.i.i.i, %139 - br i1 %140, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i - -_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i: ; preds = %137 - %141 = load ptr, ptr %135, align 8, !tbaa !72 - %bcmp.i.i.i.i.i.i.i = call i32 @bcmp(ptr %.pre195, ptr %141, i64 %.fr22.i.i.i) - %142 = icmp eq i32 %bcmp.i.i.i.i.i.i.i, 0 - br i1 %142, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i - -_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i, %137, %.split.i.i.i - %143 = load ptr, ptr %.0.i.i.i, align 8, !tbaa !127 - %.not18.i.i.i = icmp eq ptr %143, null - br i1 %.not18.i.i.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %144 - -144: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i - %145 = getelementptr inbounds nuw i8, ptr %143, i64 48 - %146 = load i64, ptr %145, align 8, !tbaa !276 - %147 = urem i64 %146, %114 - %.not19.i.i.i = icmp eq i64 %147, %115 +.split.i.i.i: ; preds = %121, %146 + %136 = phi i64 [ %148, %144 ], [ %.pre26.i.i.i, %119 ] + %.0.i.i.i = phi ptr [ %145, %144 ], [ %122, %119 ] + %137 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 8 + %138 = icmp eq i64 %111, %136 + br i1 %138, label %139, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i + +139: ; preds = %.split.i.i.i + %140 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 16 + %141 = load i64, ptr %140, align 8, !tbaa !11 + %142 = icmp eq i64 %.fr22.i.i.i, %141 + br i1 %142, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i + +_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i: ; preds = %139 + %143 = load ptr, ptr %137, align 8, !tbaa !72 + %bcmp.i.i.i.i.i.i.i = call i32 @bcmp(ptr %.pre195, ptr %143, i64 %.fr22.i.i.i) + %144 = icmp eq i32 %bcmp.i.i.i.i.i.i.i, 0 + br i1 %144, label %.noexc53, label %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i + +_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i, %139, %.split.i.i.i + %145 = load ptr, ptr %.0.i.i.i, align 8, !tbaa !127 + %.not18.i.i.i = icmp eq ptr %145, null + br i1 %.not18.i.i.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %146 + +146: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i + %147 = getelementptr inbounds nuw i8, ptr %145, i64 48 + %148 = load i64, ptr %147, align 8, !tbaa !276 + %149 = urem i64 %148, %116 + %.not19.i.i.i = icmp eq i64 %149, %117 br i1 %.not19.i.i.i, label %.split.i.i.i, label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, !llvm.loop !278 -.noexc53: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i, %.lr.ph.split.us.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i, %125 - %148 = phi ptr [ %.pre195, %125 ], [ %.pre195, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i ], [ %.pre, %.lr.ph.split.us.i ], [ %.pre, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i ] +.noexc53: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i, %.lr.ph.split.us.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i, %127 + %150 = phi ptr [ %.pre195, %125 ], [ %.pre195, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i ], [ %.pre, %.lr.ph.split.us.i ], [ %.pre, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i ] %.sroa.06.1.i = phi ptr [ %.0.us.i.i.i, %125 ], [ %.0.i.i.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i.i.i ], [ %.sroa.06.018.us.i, %.lr.ph.split.us.i ], [ %.sroa.06.018.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.i ] - %149 = getelementptr inbounds nuw i8, ptr %.sroa.06.1.i, i64 40 - %150 = load i32, ptr %149, align 8, !tbaa !134 + %151 = getelementptr inbounds nuw i8, ptr %.sroa.06.1.i, i64 40 + %152 = load i32, ptr %151, align 8, !tbaa !134 br label %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit -_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i, %144, %130, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i, %93, %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i, %.noexc53 - %151 = phi ptr [ %148, %.noexc53 ], [ %.pre195, %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i ], [ %.pre, %93 ], [ %.pre195, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i ], [ %.pre195, %130 ], [ %.pre195, %144 ], [ %.pre195, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i ], [ %.pre, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i ], [ %.pre, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i ] - %.0.i = phi i32 [ %150, %.noexc53 ], [ -1, %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i ], [ -1, %93 ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i ], [ -1, %130 ], [ -1, %144 ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i ] - %152 = icmp eq ptr %151, %13 - br i1 %152, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i +_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit: ; preds = %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i, %146, %132, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i, %95, %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i, %.noexc53 + %153 = phi ptr [ %150, %.noexc53 ], [ %.pre195, %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i ], [ %.pre, %93 ], [ %.pre195, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i ], [ %.pre195, %130 ], [ %.pre195, %144 ], [ %.pre195, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i ], [ %.pre, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i ], [ %.pre, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i ] + %.0.i = phi i32 [ %152, %.noexc53 ], [ -1, %_ZNKSt8__detail15_Hash_code_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb1EE12_M_hash_codeERS8_.exit.i ], [ -1, %93 ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.us.i.i.i ], [ -1, %130 ], [ -1, %144 ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS8_mRKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread.i.i.i ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.us.i ], [ -1, %_ZNKSt8__detail15_Hashtable_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_iENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE13_M_key_equalsERS8_RKNS_16_Hash_node_valueIS9_Lb1EEE.exit.thread10.i ] + %154 = icmp eq ptr %153, %13 + br i1 %154, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit - %153 = load i64, ptr %14, align 8, !tbaa !11 - %154 = icmp ult i64 %153, 16 - call void @llvm.assume(i1 %154) + %155 = load i64, ptr %14, align 8, !tbaa !11 + %156 = icmp ult i64 %155, 16 + call void @llvm.assume(i1 %156) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZNK11llama_vocab13text_to_tokenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit - %155 = load i64, ptr %13, align 8, !tbaa !14 - %156 = add i64 %155, 1 - call void @_ZdlPvm(ptr noundef %151, i64 noundef %156) #30 + %157 = load i64, ptr %13, align 8, !tbaa !14 + %158 = add i64 %157, 1 + call void @_ZdlPvm(ptr noundef %153, i64 noundef %158) #30 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.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #29 %.not = icmp eq i32 %.0.i, -1 - br i1 %.not, label %190, label %157 + br i1 %.not, label %193, label %159 -157: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit +159: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit %158 = load ptr, ptr %12, align 8, !tbaa !148 - %159 = load ptr, ptr %15, align 8, !tbaa !119 + %161 = load ptr, ptr %15, align 8, !tbaa !119 %.not.i54 = icmp eq ptr %158, %159 - br i1 %.not.i54, label %162, label %160 + br i1 %.not.i54, label %165, label %160 160: ; preds = %157 store i32 %.0.i, ptr %158, align 4, !tbaa !69 @@ -12915,58 +12915,58 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS store ptr %161, ptr %12, align 8, !tbaa !148 br label %.critedge -162: ; preds = %157 - %163 = load ptr, ptr %2, align 8, !tbaa !118 - %164 = ptrtoint ptr %158 to i64 - %165 = ptrtoint ptr %163 to i64 - %166 = sub i64 %164, %165 - %167 = icmp eq i64 %166, 9223372036854775804 - br i1 %167, label %168, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i +165: ; preds = %159 + %166 = load ptr, ptr %2, align 8, !tbaa !118 + %167 = ptrtoint ptr %158 to i64 + %168 = ptrtoint ptr %166 to i64 + %169 = sub i64 %167, %168 + %170 = icmp eq i64 %169, 9223372036854775804 + br i1 %170, label %171, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i -168: ; preds = %162 +171: ; preds = %165 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.160) #31 to label %.noexc56 unwind label %.loopexit.split-lp106 -.noexc56: ; preds = %168 +.noexc56: ; preds = %171 unreachable -_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i: ; preds = %162 - %169 = ashr exact i64 %166, 2 - %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %169, i64 1) - %170 = add nsw i64 %.sroa.speculated.i.i.i, %169 - %171 = icmp ult i64 %170, %169 - %172 = call i64 @llvm.umin.i64(i64 %170, i64 2305843009213693951) - %173 = select i1 %171, i64 2305843009213693951, i64 %172 - %.not.i.i.i55 = icmp ne i64 %173, 0 +_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i: ; preds = %165 + %172 = ashr exact i64 %169, 2 + %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %172, i64 1) + %173 = add nsw i64 %.sroa.speculated.i.i.i, %172 + %174 = icmp ult i64 %173, %172 + %175 = call i64 @llvm.umin.i64(i64 %173, i64 2305843009213693951) + %176 = select i1 %174, i64 2305843009213693951, i64 %175 + %.not.i.i.i55 = icmp ne i64 %176, 0 call void @llvm.assume(i1 %.not.i.i.i55) - %174 = shl nuw nsw i64 %173, 2 - %175 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %174) #33 + %177 = shl nuw nsw i64 %176, 2 + %178 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %177) #33 to label %.noexc57 unwind label %.loopexit105 .noexc57: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i - %176 = getelementptr inbounds i8, ptr %175, i64 %166 - store i32 %.0.i, ptr %176, align 4, !tbaa !69 - %177 = icmp sgt i64 %166, 0 - br i1 %177, label %178, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i + %179 = getelementptr inbounds i8, ptr %178, i64 %169 + store i32 %.0.i, ptr %179, align 4, !tbaa !69 + %180 = icmp sgt i64 %169, 0 + br i1 %180, label %181, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i -178: ; preds = %.noexc57 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %175, ptr align 4 %163, i64 %166, i1 false) +181: ; preds = %.noexc57 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %178, ptr align 4 %166, i64 %169, i1 false) br label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i -_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i: ; preds = %178, %.noexc57 - %179 = getelementptr inbounds nuw i8, ptr %176, i64 4 - %.not.i17.i.i = icmp eq ptr %163, null - br i1 %.not.i17.i.i, label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i, label %180 +_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i: ; preds = %181, %.noexc57 + %182 = getelementptr inbounds nuw i8, ptr %179, i64 4 + %.not.i17.i.i = icmp eq ptr %166, null + br i1 %.not.i17.i.i, label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i, label %183 -180: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i - call void @_ZdlPvm(ptr noundef nonnull %163, i64 noundef %166) #30 +183: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i + call void @_ZdlPvm(ptr noundef nonnull %166, i64 noundef %169) #30 br label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i -_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i: ; preds = %180, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i - store ptr %175, ptr %2, align 8, !tbaa !118 - store ptr %179, ptr %12, align 8, !tbaa !148 - %181 = getelementptr inbounds nuw i32, ptr %175, i64 %173 - store ptr %181, ptr %15, align 8, !tbaa !119 +_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i: ; preds = %183, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i + store ptr %178, ptr %2, align 8, !tbaa !118 + store ptr %182, ptr %12, align 8, !tbaa !148 + %184 = getelementptr inbounds nuw i32, ptr %178, i64 %176 + store ptr %184, ptr %15, align 8, !tbaa !119 br label %.critedge .loopexit: ; preds = %.noexc10.i.i @@ -12974,89 +12974,89 @@ _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIP cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 -.loopexit.split-lp: ; preds = %68 +.loopexit.split-lp: ; preds = %71 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 -182: ; preds = %88 - %183 = landingpad { ptr, i32 } +185: ; preds = %90 + %186 = landingpad { ptr, i32 } cleanup - %184 = load ptr, ptr %7, align 8, !tbaa !72 - %185 = icmp eq ptr %184, %13 - br i1 %185, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i59, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58 + %187 = load ptr, ptr %7, align 8, !tbaa !72 + %188 = icmp eq ptr %187, %13 + br i1 %188, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i59, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i59: ; preds = %182 - %186 = load i64, ptr %14, align 8, !tbaa !11 - %187 = icmp ult i64 %186, 16 - call void @llvm.assume(i1 %187) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i59: ; preds = %185 + %189 = load i64, ptr %14, align 8, !tbaa !11 + %190 = icmp ult i64 %189, 16 + call void @llvm.assume(i1 %190) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58: ; preds = %182 - %188 = load i64, ptr %13, align 8, !tbaa !14 - %189 = add i64 %188, 1 - call void @_ZdlPvm(ptr noundef %184, i64 noundef %189) #30 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58: ; preds = %185 + %191 = load i64, ptr %13, align 8, !tbaa !14 + %192 = add i64 %190, 1 + call void @_ZdlPvm(ptr noundef %187, i64 noundef %192) #30 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60: ; preds = %.loopexit, %.loopexit.split-lp, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i59 - %.pn = phi { ptr, i32 } [ %183, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i59 ], [ %183, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %.pn = phi { ptr, i32 } [ %186, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i59 ], [ %186, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #29 - br label %277 + br label %279 .loopexit105: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i %lpad.loopexit107 = landingpad { ptr, i32 } cleanup - br label %277 + br label %279 -.loopexit.split-lp106: ; preds = %168 +.loopexit.split-lp106: ; preds = %171 %lpad.loopexit.split-lp108 = landingpad { ptr, i32 } cleanup - br label %277 + br label %279 -190: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %191 = add nsw i32 %.0155, -1 - %192 = icmp sgt i32 %191, %.029157282 - br i1 %192, label %64, label %._crit_edge.loopexit, !llvm.loop !287 +193: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit + %indvars.iv.next = add nsw i32 %.0155, -1 + %194 = icmp sgt i32 %indvars.iv.next, %.029157282 + br i1 %194, label %64, label %._crit_edge.loopexit, !llvm.loop !287 -._crit_edge.loopexit: ; preds = %190 +._crit_edge.loopexit: ; preds = %193 %.pre196 = load ptr, ptr %12, align 8, !tbaa !148 br label %._crit_edge ._crit_edge: ; preds = %.lr.ph159, %.lr.ph159.preheader, %._crit_edge.loopexit - %193 = phi ptr [ %.pre196, %._crit_edge.loopexit ], [ %41, %.lr.ph159.preheader ], [ %238, %.lr.ph159 ] - %194 = load ptr, ptr %2, align 8, !tbaa !118 - %195 = ptrtoint ptr %193 to i64 - %196 = ptrtoint ptr %194 to i64 - %197 = sub i64 %195, %196 - %198 = ashr exact i64 %197, 2 - %199 = icmp ugt i64 %46, %198 - br i1 %199, label %200, label %233 - -200: ; preds = %._crit_edge - %201 = sub nuw nsw i64 %46, %198 - %202 = load ptr, ptr %15, align 8, !tbaa !119 - %203 = ptrtoint ptr %202 to i64 - %204 = sub i64 %203, %195 - %205 = ashr exact i64 %204, 2 - %206 = icmp ult i64 %198, 2305843009213693952 + %195 = phi ptr [ %.pre196, %._crit_edge.loopexit ], [ %41, %.lr.ph159.preheader ], [ %240, %.lr.ph159 ] + %196 = load ptr, ptr %2, align 8, !tbaa !118 + %197 = ptrtoint ptr %195 to i64 + %198 = ptrtoint ptr %196 to i64 + %199 = sub i64 %197, %198 + %200 = ashr exact i64 %199, 2 + %201 = icmp ugt i64 %46, %200 + br i1 %201, label %202, label %235 + +202: ; preds = %._crit_edge + %203 = sub nuw nsw i64 %46, %200 + %204 = load ptr, ptr %15, align 8, !tbaa !119 + %205 = ptrtoint ptr %204 to i64 + %206 = sub i64 %205, %197 + %207 = ashr exact i64 %206, 2 + %208 = icmp ult i64 %200, 2305843009213693952 call void @llvm.assume(i1 %206) %207 = xor i64 %198, 2305843009213693951 %208 = icmp ule i64 %205, %207 call void @llvm.assume(i1 %208) %.not28.i = icmp ult i64 %205, %201 - br i1 %.not28.i, label %215, label %209 + br i1 %.not28.i, label %217, label %209 -209: ; preds = %200 +209:; preds = %200 store i32 0, ptr %193, align 4, !tbaa !69 %210 = getelementptr i8, ptr %193, i64 4 %211 = icmp eq i64 %201, 1 br i1 %211, label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i, label %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i -_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i: ; preds = %209 +_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i:; preds = %209 %212 = shl i64 %201, 2 %213 = add i64 %212, -4 call void @llvm.memset.p0.i64(ptr align 4 %210, i8 0, i64 %213, i1 false), !tbaa !69 - %214 = getelementptr i32, ptr %193, i64 %201 + %214 = getelementptr i32, ptr %193, i64 %203 br label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i _ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i: ; preds = %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i, %209 @@ -13064,224 +13064,224 @@ _ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i: ; preds = %_ZSt6 store ptr %.0.i.i.i.i, ptr %12, align 8, !tbaa !148 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit -215: ; preds = %200 - %216 = icmp ult i64 %207, %201 - br i1 %216, label %217, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i +217: ; preds = %202 + %218 = icmp ult i64 %207, %203 + br i1 %218, label %219, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i -217: ; preds = %215 +219: ; preds = %217 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.168) #31 to label %.noexc75 unwind label %.loopexit.split-lp111 -.noexc75: ; preds = %217 +.noexc75: ; preds = %219 unreachable -_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i: ; preds = %215 - %.sroa.speculated.i.i = call i64 @llvm.umax.i64(i64 %198, i64 %201) - %218 = add nuw nsw i64 %.sroa.speculated.i.i, %198 - %219 = call i64 @llvm.umin.i64(i64 %218, i64 2305843009213693951) - %220 = shl nuw nsw i64 %219, 2 - %221 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %220) #33 +_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i: ; preds = %217 + %.sroa.speculated.i.i = call i64 @llvm.umax.i64(i64 %200, i64 %203) + %220 = add nuw nsw i64 %.sroa.speculated.i.i, %200 + %221 = call i64 @llvm.umin.i64(i64 %220, i64 2305843009213693951) + %222 = shl nuw nsw i64 %221, 2 + %223 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %222) #33 to label %.noexc76 unwind label %.loopexit110 .noexc76: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i - %222 = getelementptr inbounds nuw i8, ptr %221, i64 %197 - store i32 0, ptr %222, align 4, !tbaa !69 - %223 = icmp eq i64 %201, 1 - br i1 %223, label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i, label %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i30.i + %224 = getelementptr inbounds nuw i8, ptr %223, i64 %199 + store i32 0, ptr %224, align 4, !tbaa !69 + %225 = icmp eq i64 %203, 1 + br i1 %225, label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i, label %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i30.i _ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i30.i: ; preds = %.noexc76 - %224 = getelementptr i8, ptr %222, i64 4 - %225 = shl nuw nsw i64 %201, 2 - %226 = add nsw i64 %225, -4 - call void @llvm.memset.p0.i64(ptr align 4 %224, i8 0, i64 %226, i1 false), !tbaa !69 + %226 = getelementptr i8, ptr %224, i64 4 + %227 = shl nuw nsw i64 %203, 2 + %228 = add nsw i64 %227, -4 + call void @llvm.memset.p0.i64(ptr align 4 %226, i8 0, i64 %228, i1 false), !tbaa !69 br label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i _ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i: ; preds = %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i30.i, %.noexc76 - %227 = icmp sgt i64 %197, 0 - br i1 %227, label %228, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i + %229 = icmp sgt i64 %199, 0 + br i1 %229, label %230, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i -228: ; preds = %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %221, ptr align 4 %194, i64 %197, i1 false) +230: ; preds = %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %223, ptr align 4 %196, i64 %199, i1 false) br label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i -_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i: ; preds = %228, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i - %.not.i34.i = icmp eq ptr %194, null - br i1 %.not.i34.i, label %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i, label %229 +_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i: ; preds = %230, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit32.i + %.not.i34.i = icmp eq ptr %196, null + br i1 %.not.i34.i, label %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i, label %231 -229: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i - %230 = sub i64 %203, %196 - call void @_ZdlPvm(ptr noundef nonnull %194, i64 noundef %230) #30 +231: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i + %232 = sub i64 %205, %198 + call void @_ZdlPvm(ptr noundef nonnull %196, i64 noundef %232) #30 br label %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i -_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i: ; preds = %229, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i - store ptr %221, ptr %2, align 8, !tbaa !118 - %231 = getelementptr inbounds nuw i32, ptr %222, i64 %201 - store ptr %231, ptr %12, align 8, !tbaa !148 - %232 = getelementptr inbounds nuw i32, ptr %221, i64 %219 - store ptr %232, ptr %15, align 8, !tbaa !119 +_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i: ; preds = %231, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit.i + store ptr %223, ptr %2, align 8, !tbaa !118 + %233 = getelementptr inbounds nuw i32, ptr %224, i64 %203 + store ptr %233, ptr %12, align 8, !tbaa !148 + %234 = getelementptr inbounds nuw i32, ptr %223, i64 %221 + store ptr %234, ptr %15, align 8, !tbaa !119 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit -233: ; preds = %._crit_edge - %234 = icmp ult i64 %46, %198 - br i1 %234, label %235, label %_ZNSt6vectorIiSaIiEE6resizeEm.exit - -235: ; preds = %233 - %236 = getelementptr inbounds nuw i8, ptr %194, i64 %45 - %.not.i.i = icmp eq ptr %193, %236 - br i1 %.not.i.i, label %_ZNSt6vectorIiSaIiEE6resizeEm.exit, label %237 +235: ; preds = %._crit_edge + %236 = icmp ult i64 %46, %200 + br i1 %236, label %237, label %_ZNSt6vectorIiSaIiEE6resizeEm.exit 237: ; preds = %235 - store ptr %236, ptr %12, align 8, !tbaa !148 + %238 = getelementptr inbounds nuw i8, ptr %196, i64 %45 + %.not.i.i = icmp eq ptr %195, %238 + br i1 %.not.i.i, label %_ZNSt6vectorIiSaIiEE6resizeEm.exit, label %239 + +239: ; preds = %237 + store ptr %238, ptr %12, align 8, !tbaa !148 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit .loopexit110: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i %lpad.loopexit112 = landingpad { ptr, i32 } cleanup - br label %277 + br label %279 -.loopexit.split-lp111: ; preds = %217 +.loopexit.split-lp111: ; preds = %219 %lpad.loopexit.split-lp113 = landingpad { ptr, i32 } cleanup - br label %277 + br label %279 .critedge: ; preds = %160, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i - %238 = phi ptr [ %161, %160 ], [ %179, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ] - %239 = icmp slt i32 %.0155, %40 - br i1 %239, label %.lr.ph159, label %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit, !llvm.loop !283 + %240 = phi ptr [ %161, %160 ], [ %182, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ] + %241 = icmp slt i32 %.0155, %40 + br i1 %241, label %.lr.ph159, label %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit, !llvm.loop !283 _ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit: ; preds = %.critedge %.pr.pre = load ptr, ptr %2, align 8, !tbaa !118 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit -_ZNSt6vectorIiSaIiEE6resizeEm.exit: ; preds = %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i, %233, %235, %237, %38, %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i - %240 = phi ptr [ %231, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i ], [ %238, %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit ], [ %41, %38 ], [ %236, %237 ], [ %193, %235 ], [ %193, %233 ], [ %.0.i.i.i.i, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] - %241 = phi ptr [ %221, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i ], [ %.pr.pre, %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit ], [ %42, %38 ], [ %194, %237 ], [ %194, %235 ], [ %194, %233 ], [ %194, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] - %242 = ptrtoint ptr %240 to i64 - %243 = ptrtoint ptr %241 to i64 - %244 = sub i64 %242, %243 - %245 = icmp eq i64 %45, %244 - br i1 %245, label %246, label %_ZNSt6vectorIiSaIiEE9push_backEOi.exit - -246: ; preds = %_ZNSt6vectorIiSaIiEE6resizeEm.exit - %247 = load ptr, ptr %0, align 8, !tbaa !281 - %248 = load ptr, ptr %247, align 8, !tbaa !174 - %249 = getelementptr inbounds nuw i8, ptr %248, i64 32 - %250 = load i32, ptr %249, align 8, !tbaa !75 - %251 = load ptr, ptr %15, align 8, !tbaa !119 - %.not.i.i62 = icmp eq ptr %240, %251 - br i1 %.not.i.i62, label %254, label %252 - -252: ; preds = %246 - store i32 %250, ptr %240, align 4, !tbaa !69 - %253 = getelementptr inbounds nuw i8, ptr %240, i64 4 - store ptr %253, ptr %12, align 8, !tbaa !148 +_ZNSt6vectorIiSaIiEE6resizeEm.exit: ; preds = %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i, %235, %237, %239, %38, %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i + %242 = phi ptr [ %233, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i ], [ %240, %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit ], [ %41, %38 ], [ %238, %237 ], [ %195, %235 ], [ %193, %233 ], [ %.0.i.i.i.i, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] + %243 = phi ptr [ %223, %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit35.i ], [ %.pr.pre, %_ZNSt6vectorIiSaIiEE6resizeEm.exitthread-pre-split.loopexit ], [ %42, %38 ], [ %196, %237 ], [ %196, %235 ], [ %196, %233 ], [ %194, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] + %244 = ptrtoint ptr %242 to i64 + %245 = ptrtoint ptr %243 to i64 + %246 = sub i64 %244, %245 + %247 = icmp eq i64 %45, %246 + br i1 %247, label %248, label %_ZNSt6vectorIiSaIiEE9push_backEOi.exit + +248: ; preds = %_ZNSt6vectorIiSaIiEE6resizeEm.exit + %249 = load ptr, ptr %0, align 8, !tbaa !281 + %250 = load ptr, ptr %249, align 8, !tbaa !174 + %251 = getelementptr inbounds nuw i8, ptr %250, i64 32 + %252 = load i32, ptr %251, align 8, !tbaa !75 + %253 = load ptr, ptr %15, align 8, !tbaa !119 + %.not.i.i62 = icmp eq ptr %242, %253 + br i1 %.not.i.i62, label %256, label %254 + +254: ; preds = %248 + store i32 %252, ptr %242, align 4, !tbaa !69 + %255 = getelementptr inbounds nuw i8, ptr %242, i64 4 + store ptr %255, ptr %12, align 8, !tbaa !148 br label %_ZNSt6vectorIiSaIiEE9push_backEOi.exit -254: ; preds = %246 - %255 = icmp eq i64 %244, 9223372036854775804 - br i1 %255, label %256, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i +256: ; preds = %248 + %257 = icmp eq i64 %246, 9223372036854775804 + br i1 %257, label %258, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i -256: ; preds = %254 +258: ; preds = %256 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.160) #31 to label %.noexc64 unwind label %.loopexit.split-lp116 -.noexc64: ; preds = %256 +.noexc64: ; preds = %258 unreachable -_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %254 +_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %256 %.sroa.speculated.i.i.i.i = call i64 @llvm.umax.i64(i64 %46, i64 1) - %257 = add nsw i64 %.sroa.speculated.i.i.i.i, %46 - %258 = icmp ult i64 %257, %46 - %259 = call i64 @llvm.umin.i64(i64 %257, i64 2305843009213693951) - %260 = select i1 %258, i64 2305843009213693951, i64 %259 - %.not.i.i.i.i63 = icmp ne i64 %260, 0 + %259 = add nsw i64 %.sroa.speculated.i.i.i.i, %46 + %260 = icmp ult i64 %259, %46 + %261 = call i64 @llvm.umin.i64(i64 %259, i64 2305843009213693951) + %262 = select i1 %260, i64 2305843009213693951, i64 %261 + %.not.i.i.i.i63 = icmp ne i64 %262, 0 call void @llvm.assume(i1 %.not.i.i.i.i63) - %261 = shl nuw nsw i64 %260, 2 - %262 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %261) #33 + %263 = shl nuw nsw i64 %262, 2 + %264 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %263) #33 to label %.noexc65 unwind label %.loopexit115 .noexc65: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i - %263 = getelementptr inbounds i8, ptr %262, i64 %244 - store i32 %250, ptr %263, align 4, !tbaa !69 - %264 = icmp sgt i64 %244, 0 - br i1 %264, label %265, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i + %265 = getelementptr inbounds i8, ptr %264, i64 %246 + store i32 %252, ptr %265, align 4, !tbaa !69 + %266 = icmp sgt i64 %246, 0 + br i1 %266, label %267, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i -265: ; preds = %.noexc65 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %262, ptr align 4 %241, i64 %244, i1 false) +267: ; preds = %.noexc65 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %264, ptr align 4 %243, i64 %246, i1 false) br label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i -_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i: ; preds = %265, %.noexc65 - %266 = getelementptr inbounds nuw i8, ptr %263, i64 4 - %.not.i17.i.i.i = icmp eq ptr %241, null - br i1 %.not.i17.i.i.i, label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i, label %267 +_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i: ; preds = %267, %.noexc65 + %268 = getelementptr inbounds nuw i8, ptr %265, i64 4 + %.not.i17.i.i.i = icmp eq ptr %243, null + br i1 %.not.i17.i.i.i, label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i, label %269 -267: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i - call void @_ZdlPvm(ptr noundef nonnull %241, i64 noundef %244) #30 +269: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i + call void @_ZdlPvm(ptr noundef nonnull %243, i64 noundef %246) #30 br label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i -_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i: ; preds = %267, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i - store ptr %262, ptr %2, align 8, !tbaa !118 - store ptr %266, ptr %12, align 8, !tbaa !148 - %268 = getelementptr inbounds nuw i32, ptr %262, i64 %260 - store ptr %268, ptr %15, align 8, !tbaa !119 +_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i: ; preds = %269, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i.i + store ptr %264, ptr %2, align 8, !tbaa !118 + store ptr %268, ptr %12, align 8, !tbaa !148 + %270 = getelementptr inbounds nuw i32, ptr %264, i64 %262 + store ptr %271, ptr %15, align 8, !tbaa !119 br label %_ZNSt6vectorIiSaIiEE9push_backEOi.exit .loopexit115: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i %lpad.loopexit117 = landingpad { ptr, i32 } cleanup - br label %277 + br label %279 -.loopexit.split-lp116: ; preds = %256 +.loopexit.split-lp116: ; preds = %258 %lpad.loopexit.split-lp118 = landingpad { ptr, i32 } cleanup - br label %277 + br label %279 -_ZNSt6vectorIiSaIiEE9push_backEOi.exit: ; preds = %252, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i, %_ZNSt6vectorIiSaIiEE6resizeEm.exit - %269 = load ptr, ptr %6, align 8, !tbaa !72 - %270 = icmp eq ptr %269, %16 - br i1 %270, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i67, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i66 +_ZNSt6vectorIiSaIiEE9push_backEOi.exit: ; preds = %254, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i, %_ZNSt6vectorIiSaIiEE6resizeEm.exit + %271 = load ptr, ptr %6, align 8, !tbaa !72 + %272 = icmp eq ptr %271, %16 + br i1 %272, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i67, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i66 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i67: ; preds = %_ZNSt6vectorIiSaIiEE9push_backEOi.exit - %271 = load i64, ptr %11, align 8, !tbaa !11 - %272 = icmp ult i64 %271, 16 - call void @llvm.assume(i1 %272) + %273 = load i64, ptr %11, align 8, !tbaa !11 + %274 = icmp ult i64 %273, 16 + call void @llvm.assume(i1 %274) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i66: ; preds = %_ZNSt6vectorIiSaIiEE9push_backEOi.exit - %273 = load i64, ptr %16, align 8, !tbaa !14 - %274 = add i64 %273, 1 - call void @_ZdlPvm(ptr noundef %269, i64 noundef %274) #30 + %275 = load i64, ptr %16, align 8, !tbaa !14 + %276 = add i64 %275, 1 + call void @_ZdlPvm(ptr noundef %271, i64 noundef %276) #30 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i67, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i66 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #29 - br label %275 + br label %277 -275: ; preds = %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68 - %276 = getelementptr inbounds nuw i8, ptr %.sroa.085.0161, i64 32 - %.not98 = icmp eq ptr %276, %10 +277: ; preds = %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68 + %278 = getelementptr inbounds nuw i8, ptr %.sroa.085.0161, i64 32 + %.not98 = icmp eq ptr %278, %10 br i1 %.not98, label %._crit_edge164, label %33 -277: ; preds = %.loopexit115, %.loopexit.split-lp116, %.loopexit110, %.loopexit.split-lp111, %.loopexit105, %.loopexit.split-lp106, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 +279: ; preds = %.loopexit115, %.loopexit.split-lp116, %.loopexit110, %.loopexit.split-lp111, %.loopexit105, %.loopexit.split-lp106, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 %.pn48 = phi { ptr, i32 } [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 ], [ %lpad.loopexit107, %.loopexit105 ], [ %lpad.loopexit.split-lp108, %.loopexit.split-lp106 ], [ %lpad.loopexit112, %.loopexit110 ], [ %lpad.loopexit.split-lp113, %.loopexit.split-lp111 ], [ %lpad.loopexit117, %.loopexit115 ], [ %lpad.loopexit.split-lp118, %.loopexit.split-lp116 ] - %278 = load ptr, ptr %6, align 8, !tbaa !72 - %279 = icmp eq ptr %278, %16 - br i1 %279, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70: ; preds = %277 - %280 = load i64, ptr %11, align 8, !tbaa !11 - %281 = icmp ult i64 %280, 16 - call void @llvm.assume(i1 %281) + %280 = load ptr, ptr %6, align 8, !tbaa !72 + %281 = icmp eq ptr %280, %16 + br i1 %281, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70: ; preds = %279 + %282 = load i64, ptr %11, align 8, !tbaa !11 + %283 = icmp ult i64 %282, 16 + call void @llvm.assume(i1 %283) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69: ; preds = %277 - %282 = load i64, ptr %16, align 8, !tbaa !14 - %283 = add i64 %282, 1 - call void @_ZdlPvm(ptr noundef %278, i64 noundef %283) #30 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69: ; preds = %279 + %284 = load i64, ptr %16, align 8, !tbaa !14 + %285 = add i64 %284, 1 + call void @_ZdlPvm(ptr noundef %280, i64 noundef %285) #30 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70, %54 - %.pn48.pn = phi { ptr, i32 } [ %55, %54 ], [ %.pn48, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70 ], [ %.pn48, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70, %55 + %.pn48.pn = phi { ptr, i32 } [ %56, %54 ], [ %.pn48, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i70 ], [ %.pn48, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #29 call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #29 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #29 diff --git a/bench/llvm/optimized/LegalizerHelper.ll b/bench/llvm/optimized/LegalizerHelper.ll index 0a1c5b5f14b..248ea81733e 100644 --- a/bench/llvm/optimized/LegalizerHelper.ll +++ b/bench/llvm/optimized/LegalizerHelper.ll @@ -42683,8 +42683,8 @@ _ZN4llvm5APIntD2Ev.exit63: ; preds = %_ZN4llvm5APInt13get br label %178 178: ; preds = %124, %151, %114 - %.sink176 = phi { ptr, ptr } [ %150, %124 ], [ %177, %151 ], [ %120, %114 ] - %179 = extractvalue { ptr, ptr } %.sink176, 1 + %.sink177 = phi { ptr, ptr } [ %150, %124 ], [ %177, %151 ], [ %120, %114 ] + %179 = extractvalue { ptr, ptr } %.sink177, 1 %180 = getelementptr inbounds nuw i8, ptr %179, i64 32 %181 = load ptr, ptr %180, align 8, !tbaa !189 %182 = getelementptr inbounds nuw i8, ptr %181, i64 4 diff --git a/bench/lvgl/optimized/lv_draw_sw_mask.ll b/bench/lvgl/optimized/lv_draw_sw_mask.ll index 90b1ec2f343..ced427e8e94 100644 --- a/bench/lvgl/optimized/lv_draw_sw_mask.ll +++ b/bench/lvgl/optimized/lv_draw_sw_mask.ll @@ -2620,14 +2620,14 @@ define internal range(i32 1, 3) i32 @lv_draw_mask_map(ptr noundef captures(none) %31 = icmp sgt i32 %15, %30 %.neg56 = add i32 %30, 1 %.neg57 = sub i32 %.neg56, %15 - %.neg58 = select i1 %31, i32 %.neg57, i32 0 + %34 = select i1 %31, i32 %.neg57, i32 0 %32 = load i32, ptr %6, align 8, !tbaa !93 %33 = icmp slt i32 %1, %32 %34 = sub nsw i32 %32, %1 %35 = sub nsw i32 %1, %32 %36 = select i1 %33, i32 %34, i32 0 - %.neg54 = add i32 %.neg58, %3 - %.1 = sub i32 %.neg54, %36 + %.neg54 = add i32 %34, %3 + %38 = sub i32 %.neg54, %36 %.043.idx = zext i32 %36 to i64 %.043 = getelementptr inbounds nuw i8, ptr %0, i64 %.043.idx %narrow52 = select i1 %33, i32 0, i32 %35 @@ -2636,38 +2636,38 @@ define internal range(i32 1, 3) i32 @lv_draw_mask_map(ptr noundef captures(none) %37 = icmp sgt i32 %.1, 0 br i1 %37, label %.lr.ph.preheader, label %.loopexit -.lr.ph.preheader: ; preds = %22 +.lr.ph.preheader:; preds = %22 %38 = zext nneg i32 %.1 to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %mask_mix.exit %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %mask_mix.exit ] - %39 = getelementptr inbounds nuw i8, ptr %.043, i64 %indvars.iv - %40 = load i8, ptr %39, align 1, !tbaa !36 - %41 = getelementptr inbounds nuw i8, ptr %.042, i64 %indvars.iv - %42 = load i8, ptr %41, align 1, !tbaa !36 - %43 = zext i8 %42 to i32 - %44 = icmp ugt i8 %42, -4 - br i1 %44, label %mask_mix.exit, label %45 - -45: ; preds = %.lr.ph - %46 = icmp ult i8 %42, 3 - br i1 %46, label %mask_mix.exit, label %47 - -47: ; preds = %45 - %48 = zext i8 %40 to i32 - %49 = mul nuw nsw i32 %48, 32897 - %50 = mul nuw nsw i32 %49, %43 - %51 = lshr i32 %50, 23 - %52 = trunc nuw i32 %51 to i8 + %48 = getelementptr inbounds nuw i8, ptr %.043, i64 %indvars.iv + %49 = load i8, ptr %48, align 1, !tbaa !36 + %50 = getelementptr inbounds nuw i8, ptr %.042, i64 %indvars.iv + %51 = load i8, ptr %50, align 1, !tbaa !36 + %52 = zext i8 %51 to i32 + %53 = icmp ugt i8 %51, -4 + br i1 %53, label %mask_mix.exit, label %54 + +54: ; preds = %.lr.ph + %55 = icmp ult i8 %51, 3 + br i1 %55, label %mask_mix.exit, label %56 + +56: ; preds = %54 + %57 = zext i8 %49 to i32 + %58 = mul nuw nsw i32 %57, 32897 + %59 = mul nuw nsw i32 %58, %52 + %60 = lshr i32 %59, 23 + %61 = trunc nuw i32 %60 to i8 br label %mask_mix.exit -mask_mix.exit: ; preds = %.lr.ph, %45, %47 - %.0.i = phi i8 [ %52, %47 ], [ %40, %.lr.ph ], [ 0, %45 ] - store i8 %.0.i, ptr %39, align 1, !tbaa !36 +mask_mix.exit: ; preds = %.lr.ph, %54, %56 + %.0.i = phi i8 [ %61, %47 ], [ %49, %.lr.ph ], [ 0, %45 ] + store i8 %.0.i, ptr %48, align 1, !tbaa !36 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %53 = icmp samesign ult i64 %indvars.iv.next, %38 - br i1 %53, label %.lr.ph, label %.loopexit, !llvm.loop !95 + %exitcond.not = icmp samesign ult i64 %indvars.iv.next, %38 + br i1 %exitcond.not, label %.lr.ph, label %.loopexit, !llvm.loop !95 .loopexit: ; preds = %mask_mix.exit, %22, %18, %14, %10, %5 %.041 = phi i32 [ 1, %5 ], [ 1, %10 ], [ 1, %14 ], [ 1, %18 ], [ 2, %22 ], [ 2, %mask_mix.exit ] diff --git a/bench/miniaudio/optimized/unity.ll b/bench/miniaudio/optimized/unity.ll index 081b90e883b..bb1f876d460 100644 --- a/bench/miniaudio/optimized/unity.ll +++ b/bench/miniaudio/optimized/unity.ll @@ -130951,7 +130951,7 @@ define internal noundef range(i32 0, 2) i32 @ma_dr_flac__on_seek_ogg(ptr noundef .preheader49: ; preds = %3 %5 = getelementptr inbounds nuw i8, ptr %0, i64 624 - br label %51 + br label %53 6: ; preds = %3 %7 = getelementptr inbounds nuw i8, ptr %0, i64 32 @@ -131026,7 +131026,7 @@ ma_dr_flac_oggbs__seek_physical.exit: ; preds = %35, %18 %39 = getelementptr inbounds nuw i8, ptr %0, i64 624 br label %40 -40: ; preds = %.preheader, %49 +40: ; preds = %.preheader, %51 %.024.i = phi i32 [ %.226.i, %49 ], [ 0, %.preheader ] %41 = icmp slt i32 %.024.i, %1 br i1 %41, label %42, label %ma_dr_flac__on_seek_ogg.exit @@ -131035,60 +131035,60 @@ ma_dr_flac_oggbs__seek_physical.exit: ; preds = %35, %18 %43 = sub nsw i32 %1, %.024.i %44 = load i32, ptr %39, align 8, !tbaa !1312 %.not.i = icmp ult i32 %44, %43 - br i1 %.not.i, label %46, label %.thread38 + br i1 %.not.i, label %48, label %.thread38 .thread38: ; preds = %42 - %45 = sub nuw i32 %44, %43 - store i32 %45, ptr %39, align 8, !tbaa !1312 + %47 = sub nuw i32 %44, %43 + store i32 %47, ptr %39, align 8, !tbaa !1312 br label %ma_dr_flac__on_seek_ogg.exit -46: ; preds = %42 +48: ; preds = %42 %.not29.i = icmp eq i32 %44, 0 - br i1 %.not29.i, label %49, label %47 + br i1 %.not29.i, label %51, label %49 -47: ; preds = %46 - %48 = add nsw i32 %44, %.024.i +49: ; preds = %48 + %50 = add nsw i32 %44, %.024.i store i32 0, ptr %39, align 8, !tbaa !1312 - br label %49 + br label %51 -49: ; preds = %47, %46 - %.226.i = phi i32 [ %48, %47 ], [ %.024.i, %46 ] - %50 = tail call fastcc i32 @ma_dr_flac_oggbs__goto_next_page(ptr noundef nonnull %0, i32 noundef 1) - %.not30.i = icmp eq i32 %50, 0 +51: ; preds = %49, %48 + %.226.i = phi i32 [ %50, %47 ], [ %.024.i, %46 ] + %52 = tail call fastcc i32 @ma_dr_flac_oggbs__goto_next_page(ptr noundef nonnull %0, i32 noundef 1) + %.not30.i = icmp eq i32 %52, 0 br i1 %.not30.i, label %ma_dr_flac__on_seek_ogg.exit, label %40 -51: ; preds = %.preheader49, %60 +53: ; preds = %.preheader49, %64 %.024 = phi i32 [ %.226, %60 ], [ 0, %.preheader49 ] - %52 = icmp slt i32 %.024, %1 - br i1 %52, label %53, label %ma_dr_flac__on_seek_ogg.exit + %54 = icmp slt i32 %.024, %1 + br i1 %54, label %55, label %ma_dr_flac__on_seek_ogg.exit -53: ; preds = %51 - %54 = sub nsw i32 %1, %.024 - %55 = load i32, ptr %5, align 8, !tbaa !1312 - %.not = icmp ult i32 %55, %54 +55: ; preds = %53 + %56 = sub nsw i32 %1, %.024 + %57 = load i32, ptr %5, align 8, !tbaa !1312 + %.not = icmp ult i32 %57, %54 br i1 %.not, label %57, label %.thread45 -.thread45: ; preds = %53 +.thread45:; preds = %53 %56 = sub nuw i32 %55, %54 store i32 %56, ptr %5, align 8, !tbaa !1312 br label %ma_dr_flac__on_seek_ogg.exit -57: ; preds = %53 - %.not29 = icmp eq i32 %55, 0 - br i1 %.not29, label %60, label %58 +61: ; preds = %55 + %.not29 = icmp eq i32 %57, 0 + br i1 %.not29, label %64, label %62 -58: ; preds = %57 - %59 = add nsw i32 %55, %.024 +62: ; preds = %61 + %63 = add nsw i32 %57, %.024 store i32 0, ptr %5, align 8, !tbaa !1312 - br label %60 + br label %64 -60: ; preds = %58, %57 - %.226 = phi i32 [ %59, %58 ], [ %.024, %57 ] - %61 = tail call fastcc i32 @ma_dr_flac_oggbs__goto_next_page(ptr noundef nonnull %0, i32 noundef 1) - %.not30 = icmp eq i32 %61, 0 - br i1 %.not30, label %ma_dr_flac__on_seek_ogg.exit, label %51 +64: ; preds = %62, %61 + %.226 = phi i32 [ %63, %58 ], [ %.024, %57 ] + %65 = tail call fastcc i32 @ma_dr_flac_oggbs__goto_next_page(ptr noundef nonnull %0, i32 noundef 1) + %.not30 = icmp eq i32 %65, 0 + br i1 %.not30, label %ma_dr_flac__on_seek_ogg.exit, label %53 -ma_dr_flac__on_seek_ogg.exit: ; preds = %60, %51, %.lr.ph35.i, %49, %40, %._crit_edge36.i, %20, %15, %.thread45, %.thread38, %ma_dr_flac_oggbs__seek_physical.exit +ma_dr_flac__on_seek_ogg.exit: ; preds = %64, %53, %.lr.ph35.i, %51, %40, %._crit_edge36.i, %20, %15, %.thread45, %.thread38, %ma_dr_flac_oggbs__seek_physical.exit %.0 = phi i32 [ 0, %ma_dr_flac_oggbs__seek_physical.exit ], [ 1, %.thread38 ], [ 1, %.thread45 ], [ 0, %15 ], [ 0, %20 ], [ 0, %._crit_edge36.i ], [ 0, %49 ], [ 1, %40 ], [ 0, %.lr.ph35.i ], [ 0, %60 ], [ 1, %51 ] ret i32 %.0 } diff --git a/bench/ncnn/optimized/padding_x86.ll b/bench/ncnn/optimized/padding_x86.ll index 1c656b4e1c2..21edc880a85 100644 --- a/bench/ncnn/optimized/padding_x86.ll +++ b/bench/ncnn/optimized/padding_x86.ll @@ -3050,7 +3050,7 @@ define internal void @_ZNK4ncnn11Padding_x8612forward_int8ERKNS_3MatERS1_RKNS_6O %16 = load i32, ptr %2, align 4, !tbaa !42 %17 = sdiv i32 %15, %16 %18 = icmp sgt i32 %17, 0 - br i1 %18, label %19, label %310 + br i1 %18, label %19, label %309 19: ; preds = %9 %20 = add nsw i32 %17, -1 @@ -3068,8 +3068,8 @@ define internal void @_ZNK4ncnn11Padding_x8612forward_int8ERKNS_3MatERS1_RKNS_6O %23 = call i32 @llvm.smin.i32(i32 %22, i32 %20) store i32 %23, ptr %11, align 4, !tbaa !42 %24 = load i32, ptr %10, align 4, !tbaa !42 - %.not128 = icmp sgt i32 %24, %23 - br i1 %.not128, label %._crit_edge, label %.noexc.lr.ph + %.not131 = icmp sgt i32 %24, %23 + br i1 %.not131, label %._crit_edge, label %.noexc.lr.ph .noexc.lr.ph: ; preds = %19 %25 = getelementptr inbounds nuw i8, ptr %4, i64 44 @@ -3106,12 +3106,12 @@ define internal void @_ZNK4ncnn11Padding_x8612forward_int8ERKNS_3MatERS1_RKNS_6O br label %.noexc .noexc: ; preds = %.noexc.lr.ph, %_ZN4ncnn3MatD2Ev.exit - %56 = phi i32 [ %23, %.noexc.lr.ph ], [ %308, %_ZN4ncnn3MatD2Ev.exit ] - %indvars.iv174 = phi i64 [ %55, %.noexc.lr.ph ], [ %indvars.iv.next175, %_ZN4ncnn3MatD2Ev.exit ] + %56 = phi i32 [ %23, %.noexc.lr.ph ], [ %307, %_ZN4ncnn3MatD2Ev.exit ] + %indvars.iv178 = phi i64 [ %55, %.noexc.lr.ph ], [ %indvars.iv.next179, %_ZN4ncnn3MatD2Ev.exit ] %57 = load i32, ptr %25, align 4, !tbaa !38, !noalias !120 %58 = load ptr, ptr %4, align 8, !tbaa !16, !noalias !120 %59 = load i64, ptr %26, align 8, !tbaa !17, !noalias !120 - %60 = mul i64 %59, %indvars.iv174 + %60 = mul i64 %59, %indvars.iv178 %61 = load i64, ptr %27, align 8, !tbaa !35, !noalias !120 %62 = mul i64 %60, %61 %63 = getelementptr inbounds nuw i8, ptr %58, i64 %62 @@ -3132,7 +3132,7 @@ define internal void @_ZNK4ncnn11Padding_x8612forward_int8ERKNS_3MatERS1_RKNS_6O %78 = or i64 %77, %72 %79 = or i64 %78, %65 %80 = load i32, ptr %6, align 4, !tbaa !42 - %81 = trunc nsw i64 %indvars.iv174 to i32 + %81 = trunc nsw i64 %indvars.iv178 to i32 %82 = sub nsw i32 %81, %80 %83 = icmp sgt i32 %82, -1 %84 = load i32, ptr %7, align 4 @@ -3549,17 +3549,17 @@ thread-pre-split: ; preds = %_ZNK4ncnn3Mat7chann .preheader9.us.preheader.i: ; preds = %.preheader9.lr.ph.i65 %217 = sext i32 %207 to i64 - %wide.trip.count144.i = zext nneg i32 %207 to i64 + %wide.trip.count152.i = zext nneg i32 %207 to i64 %wide.trip.count150.i = zext nneg i32 %208 to i64 br label %.preheader9.us.i71 -.preheader9.us.i71: ; preds = %._crit_edge.us.i75, %.preheader9.us.preheader.i - %.08724.us.i = phi i32 [ %232, %._crit_edge.us.i75 ], [ 0, %.preheader9.us.preheader.i ] - %.08823.us.i = phi ptr [ %222, %._crit_edge.us.i75 ], [ %63, %.preheader9.us.preheader.i ] +.preheader9.us.i71: ; preds = %._crit_edge.us.i75, %.preheader9.us.preheader.i + %.08823.us.i = phi i32 [ %232, %._crit_edge.us.i75 ], [ 0, %.preheader9.us.preheader.i ] + %.08922.us.i = phi ptr [ %222, %._crit_edge.us.i75 ], [ %63, %.preheader9.us.preheader.i ] %.08922.us.i = phi ptr [ %231, %._crit_edge.us.i75 ], [ %211, %.preheader9.us.preheader.i ] br i1 %213, label %.lr.ph.us.i, label %.preheader8.us.i -218: ; preds = %.preheader7.us.i72, %218 +218: ; preds = %.preheader7.us.i72, %218 %indvars.iv147.i = phi i64 [ 0, %.preheader7.us.i72 ], [ %indvars.iv.next148.i, %218 ] %.318.us.i74 = phi ptr [ %.2.lcssa.us.i73, %.preheader7.us.i72 ], [ %222, %218 ] %219 = sub nuw nsw i64 -2, %indvars.iv147.i @@ -3571,7 +3571,7 @@ thread-pre-split: ; preds = %_ZNK4ncnn3Mat7chann %exitcond151.not.i = icmp eq i64 %indvars.iv.next148.i, %wide.trip.count150.i br i1 %exitcond151.not.i, label %._crit_edge.us.i75, label %218, !llvm.loop !139 -.lr.ph15.us.i76: ; preds = %.preheader8.us.i, %.lr.ph15.us.i76 +.lr.ph15.us.i76:; preds = %.preheader8.us.i, %.lr.ph15.us.i76 %.08414.us.i = phi i32 [ %226, %.lr.ph15.us.i76 ], [ 0, %.preheader8.us.i ] %.08613.us.i = phi ptr [ %223, %.lr.ph15.us.i76 ], [ %.08922.us.i, %.preheader8.us.i ] %.212.us.i77 = phi ptr [ %225, %.lr.ph15.us.i76 ], [ %.1.lcssa.us.i, %.preheader8.us.i ] @@ -3583,7 +3583,7 @@ thread-pre-split: ; preds = %_ZNK4ncnn3Mat7chann %exitcond146.not.i = icmp eq i32 %226, %101 br i1 %exitcond146.not.i, label %.preheader7.us.i72, label %.lr.ph15.us.i76, !llvm.loop !140 -.lr.ph.us.i: ; preds = %.preheader9.us.i71, %.lr.ph.us.i +.lr.ph.us.i:; preds = %.preheader9.us.i71, %.lr.ph.us.i %indvars.iv141.i = phi i64 [ %indvars.iv.next142.i, %.lr.ph.us.i ], [ 0, %.preheader9.us.i71 ] %.110.us.i78 = phi ptr [ %230, %.lr.ph.us.i ], [ %.08823.us.i, %.preheader9.us.i71 ] %227 = sub nsw i64 %217, %indvars.iv141.i @@ -3595,7 +3595,7 @@ thread-pre-split: ; preds = %_ZNK4ncnn3Mat7chann %exitcond145.not.i = icmp eq i64 %indvars.iv.next142.i, %wide.trip.count144.i br i1 %exitcond145.not.i, label %.preheader8.us.i, label %.lr.ph.us.i, !llvm.loop !141 -.preheader7.us.i72: ; preds = %.lr.ph15.us.i76, %.preheader8.us.i +.preheader7.us.i72:; preds = %.lr.ph15.us.i76, %.preheader8.us.i %.2.lcssa.us.i73 = phi ptr [ %.1.lcssa.us.i, %.preheader8.us.i ], [ %225, %.lr.ph15.us.i76 ] %.086.lcssa.us.i = phi ptr [ %.08922.us.i, %.preheader8.us.i ], [ %223, %.lr.ph15.us.i76 ] br label %218 @@ -3604,277 +3604,277 @@ thread-pre-split: ; preds = %_ZNK4ncnn3Mat7chann %.1.lcssa.us.i = phi ptr [ %.08823.us.i, %.preheader9.us.i71 ], [ %230, %.lr.ph.us.i ] br i1 %214, label %.lr.ph15.us.i76, label %.preheader7.us.i72 -._crit_edge.us.i75: ; preds = %218 +._crit_edge.us.i75:; preds = %218 %231 = getelementptr inbounds i64, ptr %.08922.us.i, i64 %216 %232 = add nuw nsw i32 %.08724.us.i, 1 %exitcond152.not.i = icmp eq i32 %232, %205 br i1 %exitcond152.not.i, label %.preheader6.i47, label %.preheader9.us.i71, !llvm.loop !142 .preheader9.lr.ph.split.i66: ; preds = %.preheader9.lr.ph.i65 - br i1 %213, label %.preheader9.lr.ph.split.split.us.i70, label %.preheader9.lr.ph.split.split.i67 + br i1 %213, label %.preheader9.lr.ph.split.split.us.i69, label %.preheader9.lr.ph.split.split.i67 -.preheader9.lr.ph.split.split.us.i70: ; preds = %.preheader9.lr.ph.split.i66 - %233 = zext nneg i32 %207 to i64 +.preheader9.lr.ph.split.split.us.i69: ; preds = %.preheader9.lr.ph.split.i66 + %wide.trip.count140.i = zext nneg i32 %207 to i64 br i1 %214, label %.preheader9.us28.us.i, label %.preheader9.us28.i -.preheader9.us28.us.i: ; preds = %.preheader9.lr.ph.split.split.us.i70, %..preheader7_crit_edge.us45.us.i - %.08724.us29.us.i = phi i32 [ %244, %..preheader7_crit_edge.us45.us.i ], [ 0, %.preheader9.lr.ph.split.split.us.i70 ] +.preheader9.us28.us.i: ; preds = %.preheader9.lr.ph.split.split.us.i69, %._crit_edge.us46.us.i + %.08724.us29.us.i = phi i32 [ %243, %..preheader7_crit_edge.us45.us.i ], [ 0, %.preheader9.lr.ph.split.split.us.i70 ] %.08823.us30.us.i = phi ptr [ %236, %..preheader7_crit_edge.us45.us.i ], [ %63, %.preheader9.lr.ph.split.split.us.i70 ] - %.08922.us31.us.i = phi ptr [ %243, %..preheader7_crit_edge.us45.us.i ], [ %211, %.preheader9.lr.ph.split.split.us.i70 ] - br label %238 + %.08922.us31.us.i = phi ptr [ %242, %..preheader7_crit_edge.us45.us.i ], [ %211, %.preheader9.lr.ph.split.split.us.i70 ] + br label %237 -..preheader8_crit_edge.us42.us.i: ; preds = %238, %..preheader8_crit_edge.us42.us.i - %.08414.us32.us.i = phi i32 [ %237, %..preheader8_crit_edge.us42.us.i ], [ 0, %238 ] - %.08613.us33.us.i = phi ptr [ %234, %..preheader8_crit_edge.us42.us.i ], [ %.08922.us31.us.i, %238 ] +..preheader7_crit_edge.us42.us.i: ; preds = %237, %..preheader7_crit_edge.us42.us.i + %indvars.iv137.i = phi i32 [ %indvars.iv.next138.i, %..preheader8_crit_edge.us42.us.i ], [ 0, %238 ] + %.318.us34.us.i = phi ptr [ %234, %..preheader8_crit_edge.us42.us.i ], [ %.08922.us31.us.i, %238 ] %.212.us34.us.i = phi ptr [ %236, %..preheader8_crit_edge.us42.us.i ], [ %242, %238 ] - %234 = getelementptr inbounds nuw i8, ptr %.08613.us33.us.i, i64 8 - %235 = load i64, ptr %.08613.us33.us.i, align 8, !tbaa !57 + %234 = getelementptr inbounds nuw i8, ptr %.318.us34.us.i, i64 8 + %235 = load i64, ptr %.318.us34.us.i, align 8, !tbaa !57 %236 = getelementptr inbounds nuw i8, ptr %.212.us34.us.i, i64 8 store i64 %235, ptr %.212.us34.us.i, align 8, !tbaa !57 - %237 = add nuw nsw i32 %.08414.us32.us.i, 1 - %exitcond139.not.i = icmp eq i32 %237, %101 - br i1 %exitcond139.not.i, label %..preheader7_crit_edge.us45.us.i, label %..preheader8_crit_edge.us42.us.i, !llvm.loop !140 - -238: ; preds = %238, %.preheader9.us28.us.i - %indvars.iv134.i = phi i64 [ %indvars.iv.next135.i, %238 ], [ 0, %.preheader9.us28.us.i ] - %.110.us36.us.i = phi ptr [ %242, %238 ], [ %.08823.us30.us.i, %.preheader9.us28.us.i ] - %239 = sub nsw i64 %233, %indvars.iv134.i - %240 = getelementptr inbounds nuw i64, ptr %.08922.us31.us.i, i64 %239 - %241 = load i64, ptr %240, align 8, !tbaa !57 - %242 = getelementptr inbounds nuw i8, ptr %.110.us36.us.i, i64 8 - store i64 %241, ptr %.110.us36.us.i, align 8, !tbaa !57 - %indvars.iv.next135.i = add nuw nsw i64 %indvars.iv134.i, 1 - %exitcond138.not.i = icmp eq i64 %indvars.iv.next135.i, %233 - br i1 %exitcond138.not.i, label %..preheader8_crit_edge.us42.us.i, label %238, !llvm.loop !141 - -..preheader7_crit_edge.us45.us.i: ; preds = %..preheader8_crit_edge.us42.us.i - %243 = getelementptr inbounds i64, ptr %.08922.us31.us.i, i64 %216 - %244 = add nuw nsw i32 %.08724.us29.us.i, 1 - %exitcond140.not.i = icmp eq i32 %244, %205 - br i1 %exitcond140.not.i, label %.preheader6.i47, label %.preheader9.us28.us.i, !llvm.loop !142 - -.preheader9.us28.i: ; preds = %.preheader9.lr.ph.split.split.us.i70, %..preheader8_crit_edge.us42.i - %.08724.us29.i = phi i32 [ %251, %..preheader8_crit_edge.us42.i ], [ 0, %.preheader9.lr.ph.split.split.us.i70 ] - %.08823.us30.i = phi ptr [ %249, %..preheader8_crit_edge.us42.i ], [ %63, %.preheader9.lr.ph.split.split.us.i70 ] - %.08922.us31.i = phi ptr [ %250, %..preheader8_crit_edge.us42.i ], [ %211, %.preheader9.lr.ph.split.split.us.i70 ] - br label %245 - -245: ; preds = %245, %.preheader9.us28.i + %indvars.iv.next138.i = add nuw nsw i32 %indvars.iv137.i, 1 + %exitcond141.not.i = icmp eq i32 %indvars.iv.next138.i, %101 + br i1 %exitcond141.not.i, label %._crit_edge.us46.us.i, label %..preheader7_crit_edge.us42.us.i, !llvm.loop !140 + +237: ; preds = %237, %.preheader9.us28.us.i + %.08414.us35.us.i = phi i64 [ %241, %238 ], [ 0, %.preheader9.us28.us.i ] + %.08613.us36.us.i = phi ptr [ %242, %238 ], [ %.08823.us30.us.i, %.preheader9.us28.us.i ] + %239 = sub nsw i64 %wide.trip.count140.i, %.08414.us35.us.i + %238 = getelementptr inbounds nuw i64, ptr %.08922.us31.us.i, i64 %239 + %239 = load i64, ptr %240, align 8, !tbaa !57 + %240 = getelementptr inbounds nuw i8, ptr %.110.us36.us.i, i64 8 + store i64 %239, ptr %.110.us36.us.i, align 8, !tbaa !57 + %241 = add nuw nsw i64 %.08414.us35.us.i, 1 + %exitcond136.not.i = icmp eq i64 %241, %233 + br i1 %exitcond136.not.i, label %..preheader7_crit_edge.us42.us.i, label %237, !llvm.loop !141 + +._crit_edge.us46.us.i: ; preds = %..preheader7_crit_edge.us42.us.i + %242 = getelementptr inbounds i64, ptr %.08922.us31.us.i, i64 %216 + %243 = add nuw nsw i32 %.08724.us29.us.i, 1 + %exitcond142.not.i = icmp eq i32 %243, %205 + br i1 %exitcond142.not.i, label %.preheader6.i47, label %.preheader9.us28.us.i, !llvm.loop !142 + +.preheader9.us28.i: ; preds = %.preheader9.lr.ph.split.split.us.i69, %._crit_edge.us46.i + %.08724.us29.i = phi i32 [ %250, %..preheader8_crit_edge.us42.i ], [ 0, %.preheader9.lr.ph.split.split.us.i70 ] + %.08823.us30.i = phi ptr [ %248, %..preheader8_crit_edge.us42.i ], [ %63, %.preheader9.lr.ph.split.split.us.i70 ] + %.08922.us31.i = phi ptr [ %249, %..preheader8_crit_edge.us42.i ], [ %211, %.preheader9.lr.ph.split.split.us.i70 ] + br label %244 + +244: ; preds = %244, %.preheader9.us28.i %indvars.iv.i = phi i64 [ 0, %.preheader9.us28.i ], [ %indvars.iv.next.i, %245 ] - %.110.us36.i = phi ptr [ %.08823.us30.i, %.preheader9.us28.i ], [ %249, %245 ] - %246 = sub nsw i64 %233, %indvars.iv.i - %247 = getelementptr inbounds nuw i64, ptr %.08922.us31.i, i64 %246 - %248 = load i64, ptr %247, align 8, !tbaa !57 - %249 = getelementptr inbounds nuw i8, ptr %.110.us36.i, i64 8 - store i64 %248, ptr %.110.us36.i, align 8, !tbaa !57 + %.318.us34.i = phi ptr [ %.08823.us30.i, %.preheader9.us28.i ], [ %248, %245 ] + %245 = sub nsw i64 %233, %indvars.iv.i + %246 = getelementptr inbounds nuw i64, ptr %.08922.us31.i, i64 %245 + %247 = load i64, ptr %246, align 8, !tbaa !57 + %248 = getelementptr inbounds nuw i8, ptr %.318.us34.i, i64 8 + store i64 %247, ptr %.318.us34.i, align 8, !tbaa !57 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond132.not.i = icmp eq i64 %indvars.iv.next.i, %233 - br i1 %exitcond132.not.i, label %..preheader8_crit_edge.us42.i, label %245, !llvm.loop !141 + %exitcond134.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count140.i + br i1 %exitcond134.not.i, label %._crit_edge.us46.i, label %244, !llvm.loop !141 -..preheader8_crit_edge.us42.i: ; preds = %245 - %250 = getelementptr inbounds i64, ptr %.08922.us31.i, i64 %216 - %251 = add nuw nsw i32 %.08724.us29.i, 1 - %exitcond133.not.i = icmp eq i32 %251, %205 - br i1 %exitcond133.not.i, label %.preheader6.i47, label %.preheader9.us28.i, !llvm.loop !142 +._crit_edge.us46.i: ; preds = %244 + %249 = getelementptr inbounds i64, ptr %.08922.us31.i, i64 %216 + %250 = add nuw nsw i32 %.08724.us29.i, 1 + %exitcond135.not.i = icmp eq i32 %250, %205 + br i1 %exitcond135.not.i, label %.preheader6.i47, label %.preheader9.us28.i, !llvm.loop !142 .preheader9.lr.ph.split.split.i67: ; preds = %.preheader9.lr.ph.split.i66 - br i1 %214, label %.preheader9.us51.i, label %.preheader9.preheader.i + br i1 %214, label %.preheader9.us52.i, label %.preheader9.preheader.i .preheader9.preheader.i: ; preds = %.preheader9.lr.ph.split.split.i67 - %252 = add nsw i32 %205, -1 - %253 = zext nneg i32 %252 to i64 - %254 = shl nuw nsw i64 %253, 3 - %255 = sub nuw nsw i64 -8, %254 - %256 = mul i64 %255, %113 - %257 = shl nsw i64 %210, 3 - %258 = getelementptr i8, ptr %110, i64 %256 - %scevgep.i = getelementptr i8, ptr %258, i64 %257 + %251 = add nsw i32 %205, -1 + %252 = zext nneg i32 %251 to i64 + %253 = shl nuw nsw i64 %252, 3 + %254 = sub nuw nsw i64 -8, %253 + %255 = mul i64 %254, %113 + %256 = shl nsw i64 %210, 3 + %257 = getelementptr i8, ptr %110, i64 %255 + %scevgep.i = getelementptr i8, ptr %257, i64 %256 br label %.preheader6.i47 -.preheader9.us51.i: ; preds = %.preheader9.lr.ph.split.split.i67, %..preheader7_crit_edge.us61.i - %.08724.us52.i = phi i32 [ %265, %..preheader7_crit_edge.us61.i ], [ 0, %.preheader9.lr.ph.split.split.i67 ] - %.08823.us53.i = phi ptr [ %262, %..preheader7_crit_edge.us61.i ], [ %63, %.preheader9.lr.ph.split.split.i67 ] - %.08922.us54.i = phi ptr [ %264, %..preheader7_crit_edge.us61.i ], [ %211, %.preheader9.lr.ph.split.split.i67 ] - br label %259 - -259: ; preds = %259, %.preheader9.us51.i - %.08414.us55.i = phi i32 [ 0, %.preheader9.us51.i ], [ %263, %259 ] - %.08613.us56.i = phi ptr [ %.08922.us54.i, %.preheader9.us51.i ], [ %260, %259 ] - %.212.us57.i = phi ptr [ %.08823.us53.i, %.preheader9.us51.i ], [ %262, %259 ] - %260 = getelementptr inbounds nuw i8, ptr %.08613.us56.i, i64 8 - %261 = load i64, ptr %.08613.us56.i, align 8, !tbaa !57 - %262 = getelementptr inbounds nuw i8, ptr %.212.us57.i, i64 8 - store i64 %261, ptr %.212.us57.i, align 8, !tbaa !57 - %263 = add nuw nsw i32 %.08414.us55.i, 1 - %exitcond.not.i68 = icmp eq i32 %263, %101 - br i1 %exitcond.not.i68, label %..preheader7_crit_edge.us61.i, label %259, !llvm.loop !140 - -..preheader7_crit_edge.us61.i: ; preds = %259 - %264 = getelementptr inbounds i64, ptr %.08922.us54.i, i64 %216 - %265 = add nuw nsw i32 %.08724.us52.i, 1 - %exitcond130.not.i69 = icmp eq i32 %265, %205 - br i1 %exitcond130.not.i69, label %.preheader6.i47, label %.preheader9.us51.i, !llvm.loop !142 - -.preheader6.i47: ; preds = %..preheader7_crit_edge.us61.i, %..preheader8_crit_edge.us42.i, %..preheader7_crit_edge.us45.us.i, %._crit_edge.us.i75, %.preheader9.preheader.i, %204 +.preheader9.us52.i: ; preds = %.preheader9.lr.ph.split.split.i67, %..preheader7_crit_edge.us62.i + %.08724.us53.i = phi i32 [ %264, %..preheader7_crit_edge.us61.i ], [ 0, %.preheader9.lr.ph.split.split.i67 ] + %.08823.us54.i = phi ptr [ %261, %..preheader7_crit_edge.us61.i ], [ %63, %.preheader9.lr.ph.split.split.i67 ] + %.08922.us55.i = phi ptr [ %263, %..preheader7_crit_edge.us61.i ], [ %211, %.preheader9.lr.ph.split.split.i67 ] + br label %258 + +258: ; preds = %258, %.preheader9.us52.i + %.08414.us56.i = phi i32 [ 0, %.preheader9.us51.i ], [ %262, %259 ] + %.08613.us57.i = phi ptr [ %.08922.us55.i, %.preheader9.us51.i ], [ %259, %259 ] + %.212.us58.i = phi ptr [ %.08823.us54.i, %.preheader9.us51.i ], [ %261, %259 ] + %259 = getelementptr inbounds nuw i8, ptr %.08613.us57.i, i64 8 + %260 = load i64, ptr %.08613.us57.i, align 8, !tbaa !57 + %261 = getelementptr inbounds nuw i8, ptr %.212.us58.i, i64 8 + store i64 %260, ptr %.212.us58.i, align 8, !tbaa !57 + %262 = add nuw nsw i32 %.08414.us56.i, 1 + %exitcond.not.i68 = icmp eq i32 %262, %101 + br i1 %exitcond.not.i68, label %..preheader7_crit_edge.us62.i, label %258, !llvm.loop !140 + +..preheader7_crit_edge.us62.i: ; preds = %258 + %263 = getelementptr inbounds i64, ptr %.08922.us55.i, i64 %216 + %264 = add nuw nsw i32 %.08724.us53.i, 1 + %exitcond132.not.i = icmp eq i32 %264, %205 + br i1 %exitcond132.not.i, label %.preheader6.i47, label %.preheader9.us52.i, !llvm.loop !142 + +.preheader6.i47: ; preds = %..preheader7_crit_edge.us62.i, %._crit_edge.us46.i, %._crit_edge.us46.us.i, %._crit_edge.us.i75, %.preheader9.preheader.i, %204 %.089.lcssa.i = phi ptr [ %211, %204 ], [ %scevgep.i, %.preheader9.preheader.i ], [ %231, %._crit_edge.us.i75 ], [ %243, %..preheader7_crit_edge.us45.us.i ], [ %250, %..preheader8_crit_edge.us42.i ], [ %264, %..preheader7_crit_edge.us61.i ] %.088.lcssa.i = phi ptr [ %63, %204 ], [ %63, %.preheader9.preheader.i ], [ %222, %._crit_edge.us.i75 ], [ %236, %..preheader7_crit_edge.us45.us.i ], [ %249, %..preheader8_crit_edge.us42.i ], [ %262, %..preheader7_crit_edge.us61.i ] - %266 = icmp sgt i32 %102, 0 - br i1 %266, label %.preheader5.lr.ph.i56, label %._crit_edge84.i + %265 = icmp sgt i32 %102, 0 + br i1 %265, label %.preheader5.lr.ph.i56, label %._crit_edge85.i .preheader5.lr.ph.i56: ; preds = %.preheader6.i47 - %267 = icmp sgt i32 %207, 0 - %268 = icmp sgt i32 %101, 0 - %269 = icmp sgt i32 %208, 0 - %270 = sext i32 %207 to i64 - %wide.trip.count156.i = zext nneg i32 %207 to i64 - %wide.trip.count162.i = zext nneg i32 %208 to i64 + %266 = icmp sgt i32 %207, 0 + %267 = icmp sgt i32 %101, 0 + %268 = icmp sgt i32 %208, 0 + %269 = sext i32 %207 to i64 + %wide.trip.count158.i = zext nneg i32 %207 to i64 + %wide.trip.count164.i = zext nneg i32 %208 to i64 br label %.preheader5.i57 .preheader5.i57: ; preds = %._crit_edge.i62, %.preheader5.lr.ph.i56 - %.08283.i = phi i32 [ 0, %.preheader5.lr.ph.i56 ], [ %289, %._crit_edge.i62 ] - %.482.i = phi ptr [ %.088.lcssa.i, %.preheader5.lr.ph.i56 ], [ %.7.lcssa.i63, %._crit_edge.i62 ] - %.19081.i = phi ptr [ %.089.lcssa.i, %.preheader5.lr.ph.i56 ], [ %.291.lcssa.i, %._crit_edge.i62 ] - br i1 %267, label %.lr.ph.i64, label %.preheader4.i58 + %.08284.i = phi i32 [ 0, %.preheader5.lr.ph.i56 ], [ %288, %._crit_edge.i62 ] + %.483.i = phi ptr [ %.088.lcssa.i, %.preheader5.lr.ph.i56 ], [ %.7.lcssa.i63, %._crit_edge.i62 ] + %.19082.i = phi ptr [ %.089.lcssa.i, %.preheader5.lr.ph.i56 ], [ %.291.lcssa.i, %._crit_edge.i62 ] + br i1 %266, label %.lr.ph.i64, label %.preheader4.i58 -._crit_edge84.i: ; preds = %._crit_edge.i62, %.preheader6.i47 +._crit_edge85.i: ; preds = %._crit_edge.i62, %.preheader6.i47 %.190.lcssa.i = phi ptr [ %.089.lcssa.i, %.preheader6.i47 ], [ %.291.lcssa.i, %._crit_edge.i62 ] %.4.lcssa.i48 = phi ptr [ %.088.lcssa.i, %.preheader6.i47 ], [ %.7.lcssa.i63, %._crit_edge.i62 ] - %271 = icmp sgt i32 %206, 0 - br i1 %271, label %.preheader2.lr.ph.i49, label %_ZN4ncnn3MatD2Ev.exit35 - -.preheader2.lr.ph.i49: ; preds = %._crit_edge84.i - %272 = shl nsw i32 %101, 1 - %273 = sext i32 %272 to i64 - %274 = sub nsw i64 0, %273 - %275 = getelementptr inbounds i64, ptr %.190.lcssa.i, i64 %274 - %276 = icmp sgt i32 %207, 0 - %277 = icmp sgt i32 %101, 0 - %278 = icmp sgt i32 %208, 0 - %279 = sub nsw i64 0, %113 - %280 = sext i32 %207 to i64 - %wide.trip.count168.i = zext nneg i32 %207 to i64 - %wide.trip.count174.i = zext nneg i32 %208 to i64 + %270 = icmp sgt i32 %206, 0 + br i1 %270, label %.preheader2.lr.ph.i49, label %_ZN4ncnn3MatD2Ev.exit35 + +.preheader2.lr.ph.i49: ; preds = %._crit_edge85.i + %271 = shl nsw i32 %101, 1 + %272 = sext i32 %271 to i64 + %273 = sub nsw i64 0, %272 + %274 = getelementptr inbounds i64, ptr %.190.lcssa.i, i64 %273 + %275 = icmp sgt i32 %207, 0 + %276 = icmp sgt i32 %101, 0 + %277 = icmp sgt i32 %208, 0 + %278 = sub nsw i64 0, %113 + %279 = sext i32 %207 to i64 + %wide.trip.count170.i = zext nneg i32 %207 to i64 + %wide.trip.count176.i = zext nneg i32 %208 to i64 br label %.preheader2.i50 .preheader4.i58: ; preds = %.lr.ph.i64, %.preheader5.i57 - %.5.lcssa.i59 = phi ptr [ %.482.i, %.preheader5.i57 ], [ %284, %.lr.ph.i64 ] - br i1 %268, label %.lr.ph74.i, label %.preheader3.i60 + %.5.lcssa.i59 = phi ptr [ %.483.i, %.preheader5.i57 ], [ %283, %.lr.ph.i64 ] + br i1 %267, label %.lr.ph75.i, label %.preheader3.i60 .lr.ph.i64: ; preds = %.preheader5.i57, %.lr.ph.i64 - %indvars.iv153.i = phi i64 [ %indvars.iv.next154.i, %.lr.ph.i64 ], [ 0, %.preheader5.i57 ] - %.569.i = phi ptr [ %284, %.lr.ph.i64 ], [ %.482.i, %.preheader5.i57 ] - %281 = sub nsw i64 %270, %indvars.iv153.i - %282 = getelementptr inbounds nuw i64, ptr %.19081.i, i64 %281 - %283 = load i64, ptr %282, align 8, !tbaa !57 - %284 = getelementptr inbounds nuw i8, ptr %.569.i, i64 8 - store i64 %283, ptr %.569.i, align 8, !tbaa !57 - %indvars.iv.next154.i = add nuw nsw i64 %indvars.iv153.i, 1 - %exitcond157.not.i = icmp eq i64 %indvars.iv.next154.i, %wide.trip.count156.i - br i1 %exitcond157.not.i, label %.preheader4.i58, label %.lr.ph.i64, !llvm.loop !143 - -.preheader3.i60: ; preds = %.lr.ph74.i, %.preheader4.i58 - %.291.lcssa.i = phi ptr [ %.19081.i, %.preheader4.i58 ], [ %285, %.lr.ph74.i ] - %.6.lcssa.i61 = phi ptr [ %.5.lcssa.i59, %.preheader4.i58 ], [ %287, %.lr.ph74.i ] - br i1 %269, label %.lr.ph79.i, label %._crit_edge.i62 - -.lr.ph74.i: ; preds = %.preheader4.i58, %.lr.ph74.i - %.08073.i = phi i32 [ %288, %.lr.ph74.i ], [ 0, %.preheader4.i58 ] - %.672.i = phi ptr [ %287, %.lr.ph74.i ], [ %.5.lcssa.i59, %.preheader4.i58 ] - %.29171.i = phi ptr [ %285, %.lr.ph74.i ], [ %.19081.i, %.preheader4.i58 ] - %285 = getelementptr inbounds nuw i8, ptr %.29171.i, i64 8 - %286 = load i64, ptr %.29171.i, align 8, !tbaa !57 - %287 = getelementptr inbounds nuw i8, ptr %.672.i, i64 8 - store i64 %286, ptr %.672.i, align 8, !tbaa !57 - %288 = add nuw nsw i32 %.08073.i, 1 - %exitcond158.not.i = icmp eq i32 %288, %101 - br i1 %exitcond158.not.i, label %.preheader3.i60, label %.lr.ph74.i, !llvm.loop !144 - -._crit_edge.i62: ; preds = %.lr.ph79.i, %.preheader3.i60 - %.7.lcssa.i63 = phi ptr [ %.6.lcssa.i61, %.preheader3.i60 ], [ %293, %.lr.ph79.i ] - %289 = add nuw nsw i32 %.08283.i, 1 - %exitcond164.not.i = icmp eq i32 %289, %102 - br i1 %exitcond164.not.i, label %._crit_edge84.i, label %.preheader5.i57, !llvm.loop !145 - -.lr.ph79.i: ; preds = %.preheader3.i60, %.lr.ph79.i - %indvars.iv159.i = phi i64 [ %indvars.iv.next160.i, %.lr.ph79.i ], [ 0, %.preheader3.i60 ] - %.777.i = phi ptr [ %293, %.lr.ph79.i ], [ %.6.lcssa.i61, %.preheader3.i60 ] - %290 = sub nuw nsw i64 -2, %indvars.iv159.i - %291 = getelementptr inbounds i64, ptr %.291.lcssa.i, i64 %290 - %292 = load i64, ptr %291, align 8, !tbaa !57 - %293 = getelementptr inbounds nuw i8, ptr %.777.i, i64 8 - store i64 %292, ptr %.777.i, align 8, !tbaa !57 - %indvars.iv.next160.i = add nuw nsw i64 %indvars.iv159.i, 1 - %exitcond163.not.i = icmp eq i64 %indvars.iv.next160.i, %wide.trip.count162.i - br i1 %exitcond163.not.i, label %._crit_edge.i62, label %.lr.ph79.i, !llvm.loop !146 - -.preheader2.i50: ; preds = %._crit_edge100.i, %.preheader2.lr.ph.i49 - %.078104.i = phi i32 [ 0, %.preheader2.lr.ph.i49 ], [ %303, %._crit_edge100.i ] - %.8103.i = phi ptr [ %.4.lcssa.i48, %.preheader2.lr.ph.i49 ], [ %.11.lcssa.i55, %._crit_edge100.i ] - %.392102.i = phi ptr [ %275, %.preheader2.lr.ph.i49 ], [ %302, %._crit_edge100.i ] - br i1 %276, label %.lr.ph89.i, label %.preheader1.i51 - -.preheader1.i51: ; preds = %.lr.ph89.i, %.preheader2.i50 - %.9.lcssa.i52 = phi ptr [ %.8103.i, %.preheader2.i50 ], [ %297, %.lr.ph89.i ] - br i1 %277, label %.lr.ph94.i, label %.preheader.i53 - -.lr.ph89.i: ; preds = %.preheader2.i50, %.lr.ph89.i - %indvars.iv165.i = phi i64 [ %indvars.iv.next166.i, %.lr.ph89.i ], [ 0, %.preheader2.i50 ] - %.987.i = phi ptr [ %297, %.lr.ph89.i ], [ %.8103.i, %.preheader2.i50 ] - %294 = sub nsw i64 %280, %indvars.iv165.i - %295 = getelementptr inbounds nuw i64, ptr %.392102.i, i64 %294 - %296 = load i64, ptr %295, align 8, !tbaa !57 - %297 = getelementptr inbounds nuw i8, ptr %.987.i, i64 8 - store i64 %296, ptr %.987.i, align 8, !tbaa !57 - %indvars.iv.next166.i = add nuw nsw i64 %indvars.iv165.i, 1 - %exitcond169.not.i = icmp eq i64 %indvars.iv.next166.i, %wide.trip.count168.i - br i1 %exitcond169.not.i, label %.preheader1.i51, label %.lr.ph89.i, !llvm.loop !147 - -.preheader.i53: ; preds = %.lr.ph94.i, %.preheader1.i51 - %.10.lcssa.i54 = phi ptr [ %.9.lcssa.i52, %.preheader1.i51 ], [ %300, %.lr.ph94.i ] - %.077.lcssa.i = phi ptr [ %.392102.i, %.preheader1.i51 ], [ %298, %.lr.ph94.i ] - br i1 %278, label %.lr.ph99.i, label %._crit_edge100.i - -.lr.ph94.i: ; preds = %.preheader1.i51, %.lr.ph94.i - %.07593.i = phi i32 [ %301, %.lr.ph94.i ], [ 0, %.preheader1.i51 ] - %.07792.i = phi ptr [ %298, %.lr.ph94.i ], [ %.392102.i, %.preheader1.i51 ] - %.1091.i = phi ptr [ %300, %.lr.ph94.i ], [ %.9.lcssa.i52, %.preheader1.i51 ] - %298 = getelementptr inbounds nuw i8, ptr %.07792.i, i64 8 - %299 = load i64, ptr %.07792.i, align 8, !tbaa !57 - %300 = getelementptr inbounds nuw i8, ptr %.1091.i, i64 8 - store i64 %299, ptr %.1091.i, align 8, !tbaa !57 - %301 = add nuw nsw i32 %.07593.i, 1 - %exitcond170.not.i = icmp eq i32 %301, %101 - br i1 %exitcond170.not.i, label %.preheader.i53, label %.lr.ph94.i, !llvm.loop !148 - -._crit_edge100.i: ; preds = %.lr.ph99.i, %.preheader.i53 - %.11.lcssa.i55 = phi ptr [ %.10.lcssa.i54, %.preheader.i53 ], [ %307, %.lr.ph99.i ] - %302 = getelementptr inbounds i64, ptr %.392102.i, i64 %279 - %303 = add nuw nsw i32 %.078104.i, 1 - %exitcond176.not.i = icmp eq i32 %303, %206 - br i1 %exitcond176.not.i, label %_ZN4ncnn3MatD2Ev.exit35, label %.preheader2.i50, !llvm.loop !149 - -.lr.ph99.i: ; preds = %.preheader.i53, %.lr.ph99.i - %indvars.iv171.i = phi i64 [ %indvars.iv.next172.i, %.lr.ph99.i ], [ 0, %.preheader.i53 ] - %.1197.i = phi ptr [ %307, %.lr.ph99.i ], [ %.10.lcssa.i54, %.preheader.i53 ] - %304 = sub nuw nsw i64 -2, %indvars.iv171.i - %305 = getelementptr inbounds i64, ptr %.077.lcssa.i, i64 %304 - %306 = load i64, ptr %305, align 8, !tbaa !57 - %307 = getelementptr inbounds nuw i8, ptr %.1197.i, i64 8 - store i64 %306, ptr %.1197.i, align 8, !tbaa !57 - %indvars.iv.next172.i = add nuw nsw i64 %indvars.iv171.i, 1 - %exitcond175.not.i = icmp eq i64 %indvars.iv.next172.i, %wide.trip.count174.i - br i1 %exitcond175.not.i, label %._crit_edge100.i, label %.lr.ph99.i, !llvm.loop !150 - -_ZN4ncnn3MatD2Ev.exit35: ; preds = %._crit_edge100.i, %._crit_edge89.i, %._crit_edge73.i, %130, %._crit_edge84.i + %indvars.iv155.i = phi i64 [ %indvars.iv.next156.i, %.lr.ph.i64 ], [ 0, %.preheader5.i57 ] + %.570.i = phi ptr [ %283, %.lr.ph.i64 ], [ %.483.i, %.preheader5.i57 ] + %280 = sub nsw i64 %269, %indvars.iv155.i + %281 = getelementptr inbounds nuw i64, ptr %.19082.i, i64 %280 + %282 = load i64, ptr %281, align 8, !tbaa !57 + %283 = getelementptr inbounds nuw i8, ptr %.570.i, i64 8 + store i64 %282, ptr %.570.i, align 8, !tbaa !57 + %indvars.iv.next156.i = add nuw nsw i64 %indvars.iv155.i, 1 + %exitcond159.not.i = icmp eq i64 %indvars.iv.next156.i, %wide.trip.count158.i + br i1 %exitcond159.not.i, label %.preheader4.i58, label %.lr.ph.i64, !llvm.loop !143 + +.preheader3.i60: ; preds = %.lr.ph75.i, %.preheader4.i58 + %.291.lcssa.i = phi ptr [ %.19082.i, %.preheader4.i58 ], [ %284, %.lr.ph74.i ] + %.6.lcssa.i61 = phi ptr [ %.5.lcssa.i59, %.preheader4.i58 ], [ %286, %.lr.ph74.i ] + br i1 %268, label %.lr.ph80.i, label %._crit_edge.i62 + +.lr.ph75.i: ; preds = %.preheader4.i58, %.lr.ph75.i + %.08074.i = phi i32 [ %287, %.lr.ph74.i ], [ 0, %.preheader4.i58 ] + %.673.i = phi ptr [ %286, %.lr.ph74.i ], [ %.5.lcssa.i59, %.preheader4.i58 ] + %.29172.i = phi ptr [ %284, %.lr.ph74.i ], [ %.19082.i, %.preheader4.i58 ] + %284 = getelementptr inbounds nuw i8, ptr %.29172.i, i64 8 + %285 = load i64, ptr %.29172.i, align 8, !tbaa !57 + %286 = getelementptr inbounds nuw i8, ptr %.673.i, i64 8 + store i64 %285, ptr %.673.i, align 8, !tbaa !57 + %287 = add nuw nsw i32 %.08074.i, 1 + %exitcond160.not.i = icmp eq i32 %287, %101 + br i1 %exitcond160.not.i, label %.preheader3.i60, label %.lr.ph75.i, !llvm.loop !144 + +._crit_edge.i62: ; preds = %.lr.ph80.i, %.preheader3.i60 + %.7.lcssa.i63 = phi ptr [ %.6.lcssa.i61, %.preheader3.i60 ], [ %292, %.lr.ph79.i ] + %288 = add nuw nsw i32 %.08284.i, 1 + %exitcond166.not.i = icmp eq i32 %288, %102 + br i1 %exitcond166.not.i, label %._crit_edge85.i, label %.preheader5.i57, !llvm.loop !145 + +.lr.ph80.i: ; preds = %.preheader3.i60, %.lr.ph80.i + %indvars.iv161.i = phi i64 [ %indvars.iv.next162.i, %.lr.ph79.i ], [ 0, %.preheader3.i60 ] + %.778.i = phi ptr [ %292, %.lr.ph79.i ], [ %.6.lcssa.i61, %.preheader3.i60 ] + %289 = sub nuw nsw i64 -2, %indvars.iv161.i + %290 = getelementptr inbounds i64, ptr %.291.lcssa.i, i64 %289 + %291 = load i64, ptr %290, align 8, !tbaa !57 + %292 = getelementptr inbounds nuw i8, ptr %.778.i, i64 8 + store i64 %291, ptr %.778.i, align 8, !tbaa !57 + %indvars.iv.next162.i = add nuw nsw i64 %indvars.iv161.i, 1 + %exitcond165.not.i = icmp eq i64 %indvars.iv.next162.i, %wide.trip.count164.i + br i1 %exitcond165.not.i, label %._crit_edge.i62, label %.lr.ph80.i, !llvm.loop !146 + +.preheader2.i50: ; preds = %._crit_edge101.i, %.preheader2.lr.ph.i49 + %.078105.i = phi i32 [ 0, %.preheader2.lr.ph.i49 ], [ %302, %._crit_edge100.i ] + %.8104.i = phi ptr [ %.4.lcssa.i48, %.preheader2.lr.ph.i49 ], [ %.11.lcssa.i55, %._crit_edge100.i ] + %.392103.i = phi ptr [ %274, %.preheader2.lr.ph.i49 ], [ %301, %._crit_edge100.i ] + br i1 %275, label %.lr.ph90.i, label %.preheader1.i51 + +.preheader1.i51: ; preds = %.lr.ph90.i, %.preheader2.i50 + %.9.lcssa.i52 = phi ptr [ %.8104.i, %.preheader2.i50 ], [ %296, %.lr.ph89.i ] + br i1 %276, label %.lr.ph95.i, label %.preheader.i53 + +.lr.ph90.i: ; preds = %.preheader2.i50, %.lr.ph90.i + %indvars.iv167.i = phi i64 [ %indvars.iv.next168.i, %.lr.ph89.i ], [ 0, %.preheader2.i50 ] + %.988.i = phi ptr [ %296, %.lr.ph89.i ], [ %.8104.i, %.preheader2.i50 ] + %293 = sub nsw i64 %279, %indvars.iv167.i + %294 = getelementptr inbounds nuw i64, ptr %.392103.i, i64 %293 + %295 = load i64, ptr %294, align 8, !tbaa !57 + %296 = getelementptr inbounds nuw i8, ptr %.988.i, i64 8 + store i64 %295, ptr %.988.i, align 8, !tbaa !57 + %indvars.iv.next168.i = add nuw nsw i64 %indvars.iv167.i, 1 + %exitcond171.not.i = icmp eq i64 %indvars.iv.next168.i, %wide.trip.count170.i + br i1 %exitcond171.not.i, label %.preheader1.i51, label %.lr.ph90.i, !llvm.loop !147 + +.preheader.i53: ; preds = %.lr.ph95.i, %.preheader1.i51 + %.10.lcssa.i54 = phi ptr [ %.9.lcssa.i52, %.preheader1.i51 ], [ %299, %.lr.ph94.i ] + %.077.lcssa.i = phi ptr [ %.392103.i, %.preheader1.i51 ], [ %297, %.lr.ph94.i ] + br i1 %277, label %.lr.ph100.i, label %._crit_edge101.i + +.lr.ph95.i: ; preds = %.preheader1.i51, %.lr.ph95.i + %.07594.i = phi i32 [ %300, %.lr.ph94.i ], [ 0, %.preheader1.i51 ] + %.07793.i = phi ptr [ %297, %.lr.ph94.i ], [ %.392103.i, %.preheader1.i51 ] + %.1092.i = phi ptr [ %299, %.lr.ph94.i ], [ %.9.lcssa.i52, %.preheader1.i51 ] + %297 = getelementptr inbounds nuw i8, ptr %.07793.i, i64 8 + %298 = load i64, ptr %.07793.i, align 8, !tbaa !57 + %299 = getelementptr inbounds nuw i8, ptr %.1092.i, i64 8 + store i64 %298, ptr %.1092.i, align 8, !tbaa !57 + %300 = add nuw nsw i32 %.07594.i, 1 + %exitcond172.not.i = icmp eq i32 %300, %101 + br i1 %exitcond172.not.i, label %.preheader.i53, label %.lr.ph95.i, !llvm.loop !148 + +._crit_edge101.i: ; preds = %.lr.ph100.i, %.preheader.i53 + %.11.lcssa.i55 = phi ptr [ %.10.lcssa.i54, %.preheader.i53 ], [ %306, %.lr.ph99.i ] + %301 = getelementptr inbounds i64, ptr %.392103.i, i64 %278 + %302 = add nuw nsw i32 %.078105.i, 1 + %exitcond178.not.i = icmp eq i32 %302, %206 + br i1 %exitcond178.not.i, label %_ZN4ncnn3MatD2Ev.exit35, label %.preheader2.i50, !llvm.loop !149 + +.lr.ph100.i: ; preds = %.preheader.i53, %.lr.ph100.i + %indvars.iv173.i = phi i64 [ %indvars.iv.next174.i, %.lr.ph99.i ], [ 0, %.preheader.i53 ] + %.1198.i = phi ptr [ %306, %.lr.ph99.i ], [ %.10.lcssa.i54, %.preheader.i53 ] + %303 = sub nuw nsw i64 -2, %indvars.iv173.i + %304 = getelementptr inbounds i64, ptr %.077.lcssa.i, i64 %303 + %305 = load i64, ptr %304, align 8, !tbaa !57 + %306 = getelementptr inbounds nuw i8, ptr %.1198.i, i64 8 + store i64 %305, ptr %.1198.i, align 8, !tbaa !57 + %indvars.iv.next174.i = add nuw nsw i64 %indvars.iv173.i, 1 + %exitcond177.not.i = icmp eq i64 %indvars.iv.next174.i, %wide.trip.count176.i + br i1 %exitcond177.not.i, label %._crit_edge101.i, label %.lr.ph100.i, !llvm.loop !150 + +_ZN4ncnn3MatD2Ev.exit35: ; preds = %._crit_edge101.i, %._crit_edge89.i, %._crit_edge73.i, %130, %._crit_edge85.i call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %14) #7 %.pre = load i32, ptr %11, align 4, !tbaa !42 br label %_ZN4ncnn3MatD2Ev.exit _ZN4ncnn3MatD2Ev.exit: ; preds = %.lr.ph, %85, %_ZN4ncnn3MatD2Ev.exit35 - %308 = phi i32 [ %56, %85 ], [ %.pre, %_ZN4ncnn3MatD2Ev.exit35 ], [ %56, %.lr.ph ] - %indvars.iv.next175 = add nsw i64 %indvars.iv174, 1 - %309 = sext i32 %308 to i64 - %.not.not = icmp slt i64 %indvars.iv174, %309 + %307 = phi i32 [ %56, %85 ], [ %.pre, %_ZN4ncnn3MatD2Ev.exit35 ], [ %56, %.lr.ph ] + %indvars.iv.next179 = add nsw i64 %indvars.iv178, 1 + %308 = sext i32 %307 to i64 + %.not.not = icmp slt i64 %indvars.iv178, %308 br i1 %.not.not, label %.noexc, label %._crit_edge ._crit_edge: ; preds = %_ZN4ncnn3MatD2Ev.exit, %19 @@ -3883,9 +3883,9 @@ _ZN4ncnn3MatD2Ev.exit: ; preds = %.lr.ph, %85, %_ZN4n call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7 - br label %310 + br label %309 -310: ; preds = %._crit_edge, %9 +309: ; preds = %._crit_edge, %9 ret void } diff --git a/bench/opencv/optimized/coded_stream.ll b/bench/opencv/optimized/coded_stream.ll index 0ac8aee7658..87ad7e50c6d 100644 --- a/bench/opencv/optimized/coded_stream.ll +++ b/bench/opencv/optimized/coded_stream.ll @@ -2781,7 +2781,7 @@ define hidden noundef zeroext i1 @_ZN6google8protobuf2io19EpsCopyOutputStream4Sk %6 = alloca i32, align 4 %7 = alloca ptr, align 8 %8 = icmp slt i32 %1, 0 - br i1 %8, label %94, label %9 + br i1 %8, label %95, label %9 9: ; preds = %3 %10 = getelementptr inbounds nuw i8, ptr %0, i64 56 @@ -2792,7 +2792,7 @@ define hidden noundef zeroext i1 @_ZN6google8protobuf2io19EpsCopyOutputStream4Sk 13: ; preds = %9 %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %14, ptr %2, align 8, !tbaa !62 - br label %94 + br label %95 15: ; preds = %9 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #18 @@ -2915,7 +2915,7 @@ _ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit: ; preds = %25 _ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread: ; preds = %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.i, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.thread.i, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit store ptr %19, ptr %2, align 8, !tbaa !62 - br label %93 + br label %94 70: ; preds = %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread45, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #18 @@ -2941,7 +2941,7 @@ _ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread: ; preds = %_ZN 81: ; preds = %74 store i8 1, ptr %10, align 8, !tbaa !60 store ptr %21, ptr %0, align 8, !tbaa !57 - br label %92 + br label %93 82: ; preds = %72 %83 = load ptr, ptr %7, align 8, !tbaa !33 @@ -2958,20 +2958,20 @@ _ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread: ; preds = %_ZN %.0.i15 = select i1 %87, ptr %85, ptr %19 store ptr %.sink9.i, ptr %0, align 8, !tbaa !57 store ptr %.sink.i, ptr %17, align 8, !tbaa !58 - br label %92 + br label %93 -92: ; preds = %82, %81 +93: ; preds = %82, %81 %storemerge = phi ptr [ %.0.i15, %82 ], [ %19, %81 ] store ptr %storemerge, ptr %2, align 8, !tbaa !62 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #18 - br label %93 + br label %94 -93: ; preds = %92, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread +94: ; preds = %93, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread %.1 = phi i1 [ false, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread ], [ %.not.not.not.not.not, %92 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #18 - br label %94 + br label %95 -94: ; preds = %3, %93, %13 +95: ; preds = %3, %94, %13 %.0 = phi i1 [ false, %13 ], [ %.1, %93 ], [ false, %3 ] ret i1 %.0 } @@ -3288,7 +3288,7 @@ _ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit: ; preds = %21 %.0.i43 = trunc i64 %.0.i43.in to i32 %.not = icmp sgt i32 %1, %.0.i43 %67 = load ptr, ptr %13, align 8, !tbaa !58 - br i1 %.not, label %77, label %68 + br i1 %.not, label %78, label %68 68: ; preds = %66 %69 = sext i32 %1 to i64 @@ -3306,22 +3306,22 @@ _ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit: ; preds = %21 store ptr %.sink.i, ptr %13, align 8, !tbaa !58 br label %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread -77: ; preds = %66 - %78 = icmp sgt i32 %.0.i43, 16 - %79 = and i64 %.0.i43.in, 4294967295 - %80 = getelementptr inbounds nuw i8, ptr %67, i64 %79 - %81 = getelementptr inbounds i8, ptr %80, i64 -16 +78: ; preds = %66 + %79 = icmp sgt i32 %.0.i43, 16 + %80 = and i64 %.0.i43.in, 4294967295 + %81 = getelementptr inbounds nuw i8, ptr %67, i64 %80 + %82 = getelementptr inbounds i8, ptr %81, i64 -16 %sext = shl i64 %.0.i43.in, 32 - %82 = ashr exact i64 %sext, 32 - %83 = getelementptr inbounds i8, ptr %15, i64 %82 - %.sink9.i17 = select i1 %78, ptr %81, ptr %83 - %.sink.i18 = select i1 %78, ptr null, ptr %67 - %.0.i19 = select i1 %78, ptr %67, ptr %15 + %83 = ashr exact i64 %sext, 32 + %84 = getelementptr inbounds i8, ptr %15, i64 %83 + %.sink9.i17 = select i1 %79, ptr %82, ptr %84 + %.sink.i18 = select i1 %79, ptr null, ptr %67 + %.0.i19 = select i1 %79, ptr %67, ptr %15 store ptr %.sink9.i17, ptr %0, align 8, !tbaa !57 store ptr %.sink.i18, ptr %13, align 8, !tbaa !58 br label %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread -_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread: ; preds = %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.i, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.thread.i, %68, %77, %9 +_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit.thread: ; preds = %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.i, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.thread.i, %68, %78, %9 %.sink = phi ptr [ %.0.i16, %68 ], [ %.0.i19, %77 ], [ %10, %9 ], [ %15, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.thread.i ], [ %15, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit ], [ %15, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.i ] %.0 = phi ptr [ %67, %68 ], [ null, %77 ], [ null, %9 ], [ null, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.thread.i ], [ null, %_ZN6google8protobuf2io19EpsCopyOutputStream5FlushEPh.exit ], [ null, %_ZN6google8protobuf2io19EpsCopyOutputStream4NextEv.exit.i ] store ptr %.sink, ptr %2, align 8, !tbaa !62 diff --git a/bench/opencv/optimized/dxt.ll b/bench/opencv/optimized/dxt.ll index 2d55813bb73..d8dffc878a8 100644 --- a/bench/opencv/optimized/dxt.ll +++ b/bench/opencv/optimized/dxt.ll @@ -12213,39 +12213,39 @@ define linkonce_odr hidden void @_ZN2cv10OcvDftImpl6rowDftEPKhmPhmbb(ptr noundef %96 = lshr i32 %95, 1 %97 = zext nneg i32 %.0 to i64 %wide.trip.count56.i13.i = zext nneg i32 %.046 to i64 - %wide.trip.count51.i29.i = zext nneg i32 %96 to i64 - br label %.lr.ph.us.us.i30.i + %wide.trip.count51.i30.i = zext nneg i32 %96 to i64 + br label %.lr.ph.us.us.i31.i -.lr.ph.us.us.i30.i: ; preds = %._crit_edge.us.us.i37.i, %.lr.ph37.split.us.i11.i - %indvars.iv53.i31.i = phi i64 [ %indvars.iv.next54.i38.i, %._crit_edge.us.us.i37.i ], [ 0, %.lr.ph37.split.us.i11.i ] - %98 = mul i64 %indvars.iv53.i31.i, %94 +.lr.ph.us.us.i31.i: ; preds = %._crit_edge.us.us.i38.i, %.lr.ph37.split.us.i11.i + %indvars.iv53.i32.i = phi i64 [ %indvars.iv.next54.i39.i, %._crit_edge.us.us.i37.i ], [ 0, %.lr.ph37.split.us.i11.i ] + %98 = mul i64 %indvars.iv53.i32.i, %94 %99 = getelementptr inbounds nuw double, ptr %3, i64 %98 br label %100 -100: ; preds = %100, %.lr.ph.us.us.i30.i - %indvars.iv47.i32.i = phi i64 [ 1, %.lr.ph.us.us.i30.i ], [ %indvars.iv.next48.i35.i, %100 ] - %.idx59.i33.i = shl nuw nsw i64 %indvars.iv47.i32.i, 4 - %101 = getelementptr inbounds nuw i8, ptr %99, i64 %.idx59.i33.i +100: ; preds = %100, %.lr.ph.us.us.i31.i + %indvars.iv47.i33.i = phi i64 [ 1, %.lr.ph.us.us.i30.i ], [ %indvars.iv.next48.i36.i, %100 ] + %.idx59.i34.i = shl nuw nsw i64 %indvars.iv47.i33.i, 4 + %101 = getelementptr inbounds nuw i8, ptr %99, i64 %.idx59.i34.i %102 = load double, ptr %101, align 8, !tbaa !144 - %103 = sub nsw i64 %97, %indvars.iv47.i32.i - %.idx60.i34.i = shl nsw i64 %103, 4 - %104 = getelementptr inbounds i8, ptr %99, i64 %.idx60.i34.i + %103 = sub nsw i64 %97, %indvars.iv47.i33.i + %.idx60.i35.i = shl nsw i64 %103, 4 + %104 = getelementptr inbounds i8, ptr %99, i64 %.idx60.i35.i store double %102, ptr %104, align 8, !tbaa !144 %105 = getelementptr inbounds nuw i8, ptr %101, i64 8 %106 = load double, ptr %105, align 8, !tbaa !144 %107 = fneg double %106 %108 = getelementptr i8, ptr %104, i64 8 store double %107, ptr %108, align 8, !tbaa !144 - %indvars.iv.next48.i35.i = add nuw nsw i64 %indvars.iv47.i32.i, 1 - %exitcond52.not.i36.i = icmp eq i64 %indvars.iv.next48.i35.i, %wide.trip.count51.i29.i - br i1 %exitcond52.not.i36.i, label %._crit_edge.us.us.i37.i, label %100, !llvm.loop !296 + %indvars.iv.next48.i36.i = add nuw nsw i64 %indvars.iv47.i33.i, 1 + %exitcond52.not.i37.i = icmp eq i64 %indvars.iv.next48.i36.i, %wide.trip.count51.i30.i + br i1 %exitcond52.not.i37.i, label %._crit_edge.us.us.i38.i, label %100, !llvm.loop !296 -._crit_edge.us.us.i37.i: ; preds = %100 - %indvars.iv.next54.i38.i = add nuw nsw i64 %indvars.iv53.i31.i, 1 - %exitcond57.not.i39.i = icmp eq i64 %indvars.iv.next54.i38.i, %wide.trip.count56.i13.i - br i1 %exitcond57.not.i39.i, label %_ZN2cvL23complementComplexOutputEiPhmiii.exit, label %.lr.ph.us.us.i30.i, !llvm.loop !297 +._crit_edge.us.us.i38.i: ; preds = %100 + %indvars.iv.next54.i39.i = add nuw nsw i64 %indvars.iv53.i32.i, 1 + %exitcond57.not.i40.i = icmp eq i64 %indvars.iv.next54.i39.i, %wide.trip.count56.i13.i + br i1 %exitcond57.not.i40.i, label %_ZN2cvL23complementComplexOutputEiPhmiii.exit, label %.lr.ph.us.us.i31.i, !llvm.loop !297 -_ZN2cvL23complementComplexOutputEiPhmiii.exit: ; preds = %._crit_edge.us.us.i37.i, %._crit_edge.us.us.i.i, %93, %77, %._crit_edge +_ZN2cvL23complementComplexOutputEiPhmiii.exit: ; preds = %._crit_edge.us.us.i38.i, %._crit_edge.us.us.i.i, %93, %77, %._crit_edge ret void } @@ -13829,47 +13829,47 @@ _ZN2cvL14CopyTo2ColumnsEPKhS1_Phmim.exit: ; preds = %.lr.ph.i375, %.lr.p %725 = lshr i32 %724, 1 %726 = zext nneg i32 %14 to i64 %wide.trip.count56.i13.i = zext nneg i32 %12 to i64 - %wide.trip.count51.i29.i = zext nneg i32 %725 to i64 - br label %.lr.ph.us.i16.i + %wide.trip.count51.i30.i = zext nneg i32 %725 to i64 + br label %.lr.ph.us.i17.i -.lr.ph.us.i16.i: ; preds = %._crit_edge.us.i25.i, %.lr.ph37.split.us.i11.i - %indvars.iv42.i17.i = phi i64 [ %indvars.iv.next43.i26.i, %._crit_edge.us.i25.i ], [ 0, %.lr.ph37.split.us.i11.i ] - %727 = mul i64 %indvars.iv42.i17.i, %723 +.lr.ph.us.i17.i: ; preds = %._crit_edge.us.i26.i, %.lr.ph37.split.us.i11.i + %indvars.iv42.i18.i = phi i64 [ %indvars.iv.next43.i27.i, %._crit_edge.us.i25.i ], [ 0, %.lr.ph37.split.us.i11.i ] + %727 = mul i64 %indvars.iv42.i18.i, %723 %728 = getelementptr inbounds nuw double, ptr %3, i64 %727 - %729 = icmp eq i64 %indvars.iv42.i17.i, 0 - %730 = shl nuw nsw i64 %indvars.iv42.i17.i, 1 + %729 = icmp eq i64 %indvars.iv42.i18.i, 0 + %730 = shl nuw nsw i64 %indvars.iv42.i18.i, 1 %731 = icmp eq i64 %730, %wide.trip.count56.i13.i - %or.cond33.us.i18.i = select i1 %729, i1 true, i1 %731 - %732 = sub nsw i64 %wide.trip.count56.i13.i, %indvars.iv42.i17.i + %or.cond33.us.i19.i = select i1 %729, i1 true, i1 %731 + %732 = sub nsw i64 %wide.trip.count56.i13.i, %indvars.iv42.i18.i %733 = mul i64 %732, %723 %734 = getelementptr inbounds nuw double, ptr %3, i64 %733 - %spec.select.i19.i = select i1 %or.cond33.us.i18.i, ptr %728, ptr %734 + %spec.select.i20.i = select i1 %or.cond33.us.i19.i, ptr %728, ptr %734 br label %735 -735: ; preds = %735, %.lr.ph.us.i16.i - %indvars.iv.i20.i = phi i64 [ 1, %.lr.ph.us.i16.i ], [ %indvars.iv.next.i23.i, %735 ] - %.idx.i21.i = shl nuw nsw i64 %indvars.iv.i20.i, 4 - %736 = getelementptr inbounds nuw i8, ptr %spec.select.i19.i, i64 %.idx.i21.i +735: ; preds = %735, %.lr.ph.us.i17.i + %indvars.iv.i21.i = phi i64 [ 1, %.lr.ph.us.i16.i ], [ %indvars.iv.next.i24.i, %735 ] + %.idx.i22.i = shl nuw nsw i64 %indvars.iv.i21.i, 4 + %736 = getelementptr inbounds nuw i8, ptr %spec.select.i20.i, i64 %.idx.i22.i %737 = load double, ptr %736, align 8, !tbaa !144 - %738 = sub nsw i64 %726, %indvars.iv.i20.i - %.idx58.i22.i = shl nsw i64 %738, 4 - %739 = getelementptr inbounds i8, ptr %728, i64 %.idx58.i22.i + %738 = sub nsw i64 %726, %indvars.iv.i21.i + %.idx58.i23.i = shl nsw i64 %738, 4 + %739 = getelementptr inbounds i8, ptr %728, i64 %.idx58.i23.i store double %737, ptr %739, align 8, !tbaa !144 %740 = getelementptr inbounds nuw i8, ptr %736, i64 8 %741 = load double, ptr %740, align 8, !tbaa !144 %742 = fneg double %741 %743 = getelementptr i8, ptr %739, i64 8 store double %742, ptr %743, align 8, !tbaa !144 - %indvars.iv.next.i23.i = add nuw nsw i64 %indvars.iv.i20.i, 1 - %exitcond.not.i24.i = icmp eq i64 %indvars.iv.next.i23.i, %wide.trip.count51.i29.i - br i1 %exitcond.not.i24.i, label %._crit_edge.us.i25.i, label %735, !llvm.loop !296 + %indvars.iv.next.i24.i = add nuw nsw i64 %indvars.iv.i21.i, 1 + %exitcond.not.i25.i = icmp eq i64 %indvars.iv.next.i24.i, %wide.trip.count51.i30.i + br i1 %exitcond.not.i25.i, label %._crit_edge.us.i26.i, label %735, !llvm.loop !296 -._crit_edge.us.i25.i: ; preds = %735 - %indvars.iv.next43.i26.i = add nuw nsw i64 %indvars.iv42.i17.i, 1 - %exitcond46.not.i27.i = icmp eq i64 %indvars.iv.next43.i26.i, %wide.trip.count56.i13.i - br i1 %exitcond46.not.i27.i, label %_ZN2cvL23complementComplexOutputEiPhmiii.exit, label %.lr.ph.us.i16.i, !llvm.loop !297 +._crit_edge.us.i26.i: ; preds = %735 + %indvars.iv.next43.i27.i = add nuw nsw i64 %indvars.iv42.i18.i, 1 + %exitcond46.not.i28.i = icmp eq i64 %indvars.iv.next43.i27.i, %wide.trip.count56.i13.i + br i1 %exitcond46.not.i28.i, label %_ZN2cvL23complementComplexOutputEiPhmiii.exit, label %.lr.ph.us.i17.i, !llvm.loop !297 -_ZN2cvL23complementComplexOutputEiPhmiii.exit: ; preds = %._crit_edge.us.i25.i, %._crit_edge.us.i.i, %722, %700, %._crit_edge +_ZN2cvL23complementComplexOutputEiPhmiii.exit: ; preds = %._crit_edge.us.i26.i, %._crit_edge.us.i.i, %722, %700, %._crit_edge ret void } diff --git a/bench/openjdk/optimized/javaThread.ll b/bench/openjdk/optimized/javaThread.ll index f23e7609ce7..c41f8d4c85e 100644 --- a/bench/openjdk/optimized/javaThread.ll +++ b/bench/openjdk/optimized/javaThread.ll @@ -1240,11 +1240,11 @@ define hidden void @_ZN10JavaThreadC2E8MEMFLAGS(ptr noundef nonnull align 8 dere .preheader.i.i: ; preds = %60 %62 = icmp sgt i32 %56, 0 - br i1 %62, label %64, label %67 + br i1 %62, label %64, label %65 63: ; preds = %60 tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %59, i8 0, i64 %58, i1 false) - br label %68 + br label %66 64: ; preds = %.preheader.i.i %65 = shl i64 %53, 3 @@ -1252,15 +1252,15 @@ define hidden void @_ZN10JavaThreadC2E8MEMFLAGS(ptr noundef nonnull align 8 dere tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %59, i8 0, i64 %66, i1 false) br label %67 -67: ; preds = %64, %.preheader.i.i +65: ; preds = %64, %.preheader.i.i tail call void @_Z8FreeHeapPv(ptr noundef nonnull %57) #21 - br label %68 + br label %66 -68: ; preds = %67, %63 +66: ; preds = %65, %63 store ptr %59, ptr %29, align 8 br label %_ZN10JavaThread15resize_countersEii.exit -_ZN10JavaThread15resize_countersEii.exit: ; preds = %68, %55, %2 +_ZN10JavaThread15resize_countersEii.exit: ; preds = %66, %55, %2 tail call void @_ZN20ThreadSafepointState6createEP10JavaThread(ptr noundef nonnull %0) #21 tail call void @_ZN18SafepointMechanism17initialize_headerEP10JavaThread(ptr noundef nonnull %0) #21 store volatile ptr null, ptr %5, align 8 diff --git a/bench/openssl/optimized/bio_b64.ll b/bench/openssl/optimized/bio_b64.ll index b1ba5344472..fc042f4258b 100644 --- a/bench/openssl/optimized/bio_b64.ll +++ b/bench/openssl/optimized/bio_b64.ll @@ -736,7 +736,7 @@ define internal i64 @b64_ctrl(ptr noundef %0, i32 noundef %1, i64 noundef %2, pt %7 = icmp eq ptr %5, null %8 = icmp eq ptr %6, null %or.cond = select i1 %7, i1 true, i1 %8 - br i1 %or.cond, label %83, label %9 + br i1 %or.cond, label %84, label %9 9: ; preds = %4 switch i32 %1, label %81 [ @@ -745,8 +745,8 @@ define internal i64 @b64_ctrl(ptr noundef %0, i32 noundef %1, i64 noundef %2, pt i32 13, label %27 i32 10, label %45 i32 11, label %.preheader - i32 101, label %79 - i32 12, label %83 + i32 101, label %80 + i32 12, label %84 ] .preheader: ; preds = %9 @@ -766,17 +766,17 @@ define internal i64 @b64_ctrl(ptr noundef %0, i32 noundef %1, i64 noundef %2, pt %19 = getelementptr inbounds nuw i8, ptr %5, i64 16 store i32 0, ptr %19, align 8, !tbaa !3 %20 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 1, i64 noundef %2, ptr noundef %3) #8 - br label %83 + br label %84 21: ; preds = %9 %22 = getelementptr inbounds nuw i8, ptr %5, i64 24 %23 = load i32, ptr %22, align 8, !tbaa !18 %24 = icmp slt i32 %23, 1 - br i1 %24, label %83, label %25 + br i1 %24, label %84, label %25 25: ; preds = %21 %26 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 2, i64 noundef %2, ptr noundef %3) #8 - br label %83 + br label %84 27: ; preds = %9 %28 = load i32, ptr %5, align 8, !tbaa !10 @@ -795,114 +795,114 @@ define internal i64 @b64_ctrl(ptr noundef %0, i32 noundef %1, i64 noundef %2, pt %35 = icmp eq i32 %28, %30 br i1 %35, label %36, label %83 -36: ; preds = %32 +36:; preds = %32 %37 = getelementptr inbounds nuw i8, ptr %5, i64 16 %38 = load i32, ptr %37, align 8, !tbaa !3 %.not92 = icmp eq i32 %38, 0 br i1 %.not92, label %43, label %39 -39: ; preds = %36 +39:; preds = %36 %40 = getelementptr inbounds nuw i8, ptr %5, i64 32 %41 = load ptr, ptr %40, align 8, !tbaa !13 %42 = tail call i32 @EVP_ENCODE_CTX_num(ptr noundef %41) #8 %.not93 = icmp eq i32 %42, 0 br i1 %.not93, label %43, label %83 -43: ; preds = %39, %36 +43:; preds = %39, %36 %44 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 13, i64 noundef %2, ptr noundef %3) #8 - br label %83 + br label %84 -45: ; preds = %9 +.thread: ; preds = %9 %46 = load i32, ptr %5, align 8, !tbaa !10 %47 = getelementptr inbounds nuw i8, ptr %5, i64 4 %48 = load i32, ptr %47, align 4, !tbaa !11 %.not90 = icmp slt i32 %46, %48 br i1 %.not90, label %49, label %50 -49: ; preds = %45 +49:; preds = %45 tail call void @OPENSSL_die(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, i32 noundef 469) #9 unreachable -50: ; preds = %45 - %51 = sub nsw i32 %46, %48 - %52 = zext nneg i32 %51 to i64 - %53 = icmp eq i32 %46, %48 - br i1 %53, label %54, label %83 +51: ; preds = %45 + %52 = sub nsw i32 %46, %48 + %53 = zext nneg i32 %52 to i64 + %54 = icmp eq i32 %46, %48 + br i1 %54, label %55, label %84 -54: ; preds = %50 - %55 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 10, i64 noundef %2, ptr noundef %3) #8 - br label %83 +55: ; preds = %51 + %56 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 10, i64 noundef %2, ptr noundef %3) #8 + br label %84 .backedge: ; preds = %.backedge.backedge, %.preheader - %56 = load i32, ptr %5, align 8, !tbaa !10 - %57 = load i32, ptr %10, align 4, !tbaa !11 - %.not = icmp eq i32 %56, %57 - br i1 %.not, label %63, label %58 + %57 = load i32, ptr %5, align 8, !tbaa !10 + %58 = load i32, ptr %10, align 4, !tbaa !11 + %.not = icmp eq i32 %57, %58 + br i1 %.not, label %64, label %59 -58: ; preds = %.backedge - %59 = tail call i32 @b64_write(ptr noundef %0, ptr noundef null, i32 noundef 0) - %60 = icmp slt i32 %59, 0 - br i1 %60, label %61, label %.backedge.backedge +59: ; preds = %.backedge + %60 = tail call i32 @b64_write(ptr noundef %0, ptr noundef null, i32 noundef 0) + %61 = icmp slt i32 %60, 0 + br i1 %61, label %62, label %.backedge.backedge -.backedge.backedge: ; preds = %58, %68, %75 +.backedge.backedge: ; preds = %59, %69, %76 br label %.backedge, !llvm.loop !27 -61: ; preds = %58 - %62 = sext i32 %59 to i64 - br label %83 +62: ; preds = %59 + %63 = sext i32 %60 to i64 + br label %84 -63: ; preds = %.backedge - %64 = tail call i32 @BIO_test_flags(ptr noundef %0, i32 noundef -1) #8 - %65 = and i32 %64, 256 - %.not86 = icmp eq i32 %65, 0 - br i1 %.not86, label %70, label %66 +64: ; preds = %.backedge + %65 = tail call i32 @BIO_test_flags(ptr noundef %0, i32 noundef -1) #8 + %66 = and i32 %65, 256 + %.not86 = icmp eq i32 %66, 0 + br i1 %.not86, label %71, label %67 -66: ; preds = %63 - %67 = load i32, ptr %11, align 8, !tbaa !12 - %.not89 = icmp eq i32 %67, 0 - br i1 %.not89, label %77, label %68 +67: ; preds = %64 + %68 = load i32, ptr %11, align 8, !tbaa !12 + %.not89 = icmp eq i32 %68, 0 + br i1 %.not89, label %78, label %69 -68: ; preds = %66 - %69 = tail call i32 @EVP_EncodeBlock(ptr noundef nonnull %12, ptr noundef nonnull %13, i32 noundef %67) #8 - store i32 %69, ptr %5, align 8, !tbaa !10 +69: ; preds = %67 + %70 = tail call i32 @EVP_EncodeBlock(ptr noundef nonnull %12, ptr noundef nonnull %13, i32 noundef %68) #8 + store i32 %70, ptr %5, align 8, !tbaa !10 store i32 0, ptr %10, align 4, !tbaa !11 store i32 0, ptr %11, align 8, !tbaa !12 br label %.backedge.backedge -70: ; preds = %63 - %71 = load i32, ptr %14, align 8, !tbaa !3 - %.not87 = icmp eq i32 %71, 0 - br i1 %.not87, label %77, label %72 +71: ; preds = %64 + %72 = load i32, ptr %14, align 8, !tbaa !3 + %.not87 = icmp eq i32 %72, 0 + br i1 %.not87, label %78, label %73 -72: ; preds = %70 - %73 = load ptr, ptr %15, align 8, !tbaa !13 - %74 = tail call i32 @EVP_ENCODE_CTX_num(ptr noundef %73) #8 - %.not88 = icmp eq i32 %74, 0 - br i1 %.not88, label %77, label %75 +73: ; preds = %71 + %74 = load ptr, ptr %15, align 8, !tbaa !13 + %75 = tail call i32 @EVP_ENCODE_CTX_num(ptr noundef %74) #8 + %.not88 = icmp eq i32 %75, 0 + br i1 %.not88, label %78, label %76 -75: ; preds = %72 +76: ; preds = %73 store i32 0, ptr %10, align 4, !tbaa !11 - %76 = load ptr, ptr %15, align 8, !tbaa !13 - tail call void @EVP_EncodeFinal(ptr noundef %76, ptr noundef nonnull %12, ptr noundef nonnull %5) #8 + %77 = load ptr, ptr %15, align 8, !tbaa !13 + tail call void @EVP_EncodeFinal(ptr noundef %77, ptr noundef nonnull %12, ptr noundef nonnull %5) #8 br label %.backedge.backedge -77: ; preds = %70, %72, %66 - %78 = tail call i64 @BIO_ctrl(ptr noundef %6, i32 noundef 11, i64 noundef %2, ptr noundef %3) #8 +78: ; preds = %71, %73, %67 + %79 = tail call i64 @BIO_ctrl(ptr noundef %6, i32 noundef 11, i64 noundef %2, ptr noundef %3) #8 tail call void @BIO_copy_next_retry(ptr noundef %0) #8 - br label %83 + br label %84 -79: ; preds = %9 +80: ; preds = %9 tail call void @BIO_clear_flags(ptr noundef %0, i32 noundef 15) #8 - %80 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 101, i64 noundef %2, ptr noundef %3) #8 + %81 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef 101, i64 noundef %2, ptr noundef %3) #8 tail call void @BIO_copy_next_retry(ptr noundef %0) #8 - br label %83 + br label %84 -81: ; preds = %9 - %82 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef %1, i64 noundef %2, ptr noundef %3) #8 - br label %83 +82: ; preds = %9 + %83 = tail call i64 @BIO_ctrl(ptr noundef nonnull %6, i32 noundef %1, i64 noundef %2, ptr noundef %3) #8 + br label %84 -83: ; preds = %32, %9, %16, %77, %79, %81, %25, %43, %54, %50, %21, %39, %4, %61 - %.0 = phi i64 [ %62, %61 ], [ 0, %4 ], [ %82, %81 ], [ %20, %16 ], [ %26, %25 ], [ %44, %43 ], [ %55, %54 ], [ %52, %50 ], [ %78, %77 ], [ %80, %79 ], [ 1, %9 ], [ 1, %21 ], [ 1, %39 ], [ %34, %32 ] +84: ; preds = %32, %9, %16, %78, %80, %82, %25, %43, %55, %51, %21, %39, %4, %62 + %.0 = phi i64 [ %63, %61 ], [ 0, %4 ], [ %82, %81 ], [ %20, %16 ], [ %26, %25 ], [ %44, %43 ], [ %55, %54 ], [ %52, %50 ], [ %78, %77 ], [ %80, %79 ], [ 1, %9 ], [ 1, %21 ], [ 1, %39 ], [ %34, %32 ] ret i64 %.0 } diff --git a/bench/openusd/optimized/bignum.ll b/bench/openusd/optimized/bignum.ll index 10bca7520e3..8db1bda0cee 100644 --- a/bench/openusd/optimized/bignum.ll +++ b/bench/openusd/optimized/bignum.ll @@ -2175,7 +2175,7 @@ _ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum5AlignERKS1_. br i1 %97, label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum5ClampEv.exit, label %.preheader .preheader: ; preds = %90, %.loopexit - %.1 = phi i16 [ %130, %.loopexit ], [ %94, %90 ] + %.1 = phi i16 [ %134, %.loopexit ], [ %94, %90 ] %98 = load i16, ptr %1, align 4 %99 = sext i16 %98 to i32 %100 = load i16, ptr %11, align 2 @@ -2198,54 +2198,54 @@ _ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum5AlignERKS1_. %112 = sext i16 %111 to i32 br label %113 -113: ; preds = %128, %.preheader.i.i +113:; preds = %128, %.preheader.i.i %.019.in.i.i = phi i32 [ %.019.i.i, %128 ], [ %102, %.preheader.i.i ] %.019.i.i = add nsw i32 %.019.in.i.i, -1 %.not.not.i.i = icmp sgt i32 %.019.in.i.i, %112 - br i1 %.not.not.i.i, label %114, label %.loopexit + br i1 %.not.not.i.i, label %119, label %.loopexit -114: ; preds = %113 +119: ; preds = %113 %.not.i.i.i = icmp sgt i32 %.019.in.i.i, %102 %115 = icmp sle i32 %.019.in.i.i, %101 %or.cond.i.i.i = or i1 %115, %.not.i.i.i - br i1 %or.cond.i.i.i, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i, label %116 + br i1 %or.cond.i.i.i, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i, label %120 -116: ; preds = %114 +120: ; preds = %119 %117 = sub nsw i32 %.019.i.i, %101 %118 = zext nneg i32 %117 to i64 %119 = getelementptr inbounds nuw [128 x i32], ptr %68, i64 0, i64 %118 %120 = load i32, ptr %119, align 4 br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i -_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i: ; preds = %116, %114 +_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i: ; preds = %120, %114 %.0.i.i.i = phi i32 [ %120, %116 ], [ 0, %114 ] %.not.i24.i.i = icmp sgt i32 %.019.in.i.i, %107 - %121 = icmp sle i32 %.019.in.i.i, %106 - %or.cond.i25.i.i = or i1 %121, %.not.i24.i.i - br i1 %or.cond.i25.i.i, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i, label %122 + %126 = icmp sle i32 %.019.in.i.i, %106 + %or.cond.i25.i.i = or i1 %126, %.not.i24.i.i + br i1 %or.cond.i25.i.i, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i, label %127 -122: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i - %123 = sub nsw i32 %.019.i.i, %106 - %124 = zext nneg i32 %123 to i64 +127: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i + %128 = sub nsw i32 %.019.i.i, %106 + %124 = zext nneg i32 %128 to i64 %125 = getelementptr inbounds nuw [128 x i32], ptr %63, i64 0, i64 %124 %126 = load i32, ptr %125, align 4 br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i -_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i: ; preds = %122, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i +_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i: ; preds = %127, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i %.0.i26.i.i = phi i32 [ %126, %122 ], [ 0, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit.i.i ] - %127 = icmp ult i32 %.0.i.i.i, %.0.i26.i.i - br i1 %127, label %.loopexit, label %128 + %131 = icmp ult i32 %.0.i.i.i, %.0.i26.i.i + br i1 %131, label %.loopexit, label %132 -128: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i - %129 = icmp ugt i32 %.0.i.i.i, %.0.i26.i.i - br i1 %129, label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum5ClampEv.exit, label %113, !llvm.loop !34 +132: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i + %133 = icmp ugt i32 %.0.i.i.i, %.0.i26.i.i + br i1 %133, label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum5ClampEv.exit, label %113, !llvm.loop !34 .loopexit: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27.i.i, %113, %.preheader tail call void @_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum14SubtractBignumERKS1_(ptr noundef nonnull align 4 dereferenceable(516) %0, ptr noundef nonnull align 4 dereferenceable(516) %1) - %130 = add i16 %.1, 1 + %134 = add i16 %.1, 1 br label %.preheader, !llvm.loop !35 -_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum5ClampEv.exit: ; preds = %109, %128, %.lr.ph.i32, %.critedge.thread3.i, %.critedge.i, %90, %2 +_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum5ClampEv.exit: ; preds = %109, %132, %.lr.ph.i32, %.critedge.thread3.i, %.critedge.i, %90, %2 %.0 = phi i16 [ 0, %2 ], [ %94, %90 ], [ %77, %.critedge.i ], [ %77, %.critedge.thread3.i ], [ %77, %.lr.ph.i32 ], [ %.1, %128 ], [ %.1, %109 ] ret i16 %.0 } @@ -2592,7 +2592,7 @@ define noundef range(i32 -1, 2) i32 @_ZN32pxrInternal_v0_24__pxrReserved__21pxr_ %21 = getelementptr inbounds nuw i8, ptr %1, i64 4 br label %22 -22: ; preds = %.preheader, %37 +22:; preds = %.preheader, %42 %.019.in = phi i32 [ %.019, %37 ], [ %8, %.preheader ] %.019 = add nsw i32 %.019.in, -1 %.not.not = icmp sgt i32 %.019.in, %19 @@ -2614,27 +2614,27 @@ define noundef range(i32 -1, 2) i32 @_ZN32pxrInternal_v0_24__pxrReserved__21pxr_ _ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit: ; preds = %23, %25 %.0.i = phi i32 [ %29, %25 ], [ 0, %23 ] %.not.i24 = icmp sgt i32 %.019.in, %14 - %30 = icmp sle i32 %.019.in, %13 - %or.cond.i25 = or i1 %30, %.not.i24 - br i1 %or.cond.i25, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27, label %31 + %36 = icmp sle i32 %.019.in, %13 + %or.cond.i25 = or i1 %36, %.not.i24 + br i1 %or.cond.i25, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27, label %37 -31: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit - %32 = sub nsw i32 %.019, %13 +37: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit + %38 = sub nsw i32 %.019, %13 %33 = zext nneg i32 %32 to i64 %34 = getelementptr inbounds nuw [128 x i32], ptr %21, i64 0, i64 %33 %35 = load i32, ptr %34, align 4 br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27 -_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit, %31 +_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit, %37 %.0.i26 = phi i32 [ %35, %31 ], [ 0, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit ] - %36 = icmp ult i32 %.0.i, %.0.i26 - br i1 %36, label %.loopexit, label %37 + %41 = icmp ult i32 %.0.i, %.0.i26 + br i1 %41, label %.loopexit, label %42 -37: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27 - %38 = icmp ugt i32 %.0.i, %.0.i26 - br i1 %38, label %.loopexit, label %22, !llvm.loop !34 +42: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27 + %43 = icmp ugt i32 %.0.i, %.0.i26 + br i1 %43, label %.loopexit, label %22, !llvm.loop !34 -.loopexit: ; preds = %22, %37, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27, %16, %2 +.loopexit: ; preds = %22, %42, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27, %16, %2 %.0 = phi i32 [ -1, %2 ], [ 1, %16 ], [ 0, %22 ], [ 1, %37 ], [ -1, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit27 ] ret i32 %.0 } @@ -2643,11 +2643,11 @@ _ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZer define noundef range(i32 -1, 2) i32 @_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11PlusCompareERKS1_S3_S3_(ptr noundef nonnull readonly align 4 captures(none) dereferenceable(516) %0, ptr noundef nonnull readonly align 4 captures(none) dereferenceable(516) %1, ptr noundef nonnull readonly align 4 captures(none) dereferenceable(516) %2) local_unnamed_addr #7 align 2 { %.pre = load i16, ptr %0, align 4 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 2 - %.pre77 = load i16, ptr %.phi.trans.insert, align 2 + %.pre78 = load i16, ptr %.phi.trans.insert, align 2 br label %tailrecurse tailrecurse: ; preds = %tailrecurse, %3 - %4 = phi i16 [ %.pre77, %3 ], [ %12, %tailrecurse ] + %4 = phi i16 [ %.pre78, %3 ], [ %12, %tailrecurse ] %5 = phi i16 [ %.pre, %3 ], [ %9, %tailrecurse ] %.tr = phi ptr [ %0, %3 ], [ %.tr54, %tailrecurse ] %.tr54 = phi ptr [ %1, %3 ], [ %.tr, %tailrecurse ] @@ -2700,14 +2700,14 @@ tailrecurse: ; preds = %tailrecurse, %3 %37 = getelementptr inbounds nuw i8, ptr %2, i64 4 br label %40 -38: ; preds = %62 +38:; preds = %69 %39 = shl nuw nsw i32 %63, 28 %.not42.not = icmp sgt i32 %.03870, %34 br i1 %.not42.not, label %40, label %._crit_edge.loopexit, !llvm.loop !44 -40: ; preds = %.lr.ph, %38 +40:; preds = %.lr.ph, %43 %.03769 = phi i32 [ 0, %.lr.ph ], [ %39, %38 ] - %.038.in68 = phi i32 [ %24, %.lr.ph ], [ %.03870, %38 ] + %.038.in68 = phi i32 [ %24, %.lr.ph ], [ %.03870, %43 ] %.03870 = add nsw i32 %.038.in68, -1 %.not.i = icmp sgt i32 %.038.in68, %8 %41 = icmp sle i32 %.038.in68, %7 @@ -2724,50 +2724,50 @@ tailrecurse: ; preds = %tailrecurse, %3 _ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit: ; preds = %40, %42 %.0.i = phi i32 [ %46, %42 ], [ 0, %40 ] %.not.i44 = icmp sgt i32 %.038.in68, %14 - %47 = icmp sle i32 %.038.in68, %13 - %or.cond.i45 = or i1 %47, %.not.i44 - br i1 %or.cond.i45, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47, label %48 + %56 = icmp sle i32 %.038.in68, %13 + %or.cond.i45 = or i1 %56, %.not.i44 + br i1 %or.cond.i45, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47, label %57 -48: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit - %49 = sub nsw i32 %.03870, %13 +57: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit + %58 = sub nsw i32 %.03870, %13 %50 = zext nneg i32 %49 to i64 %51 = getelementptr inbounds nuw [128 x i32], ptr %36, i64 0, i64 %50 %52 = load i32, ptr %51, align 4 br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47 -_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit, %48 +_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit, %57 %.0.i46 = phi i32 [ %52, %48 ], [ 0, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit ] %.not.i48 = icmp sgt i32 %.038.in68, %24 - %53 = icmp sle i32 %.038.in68, %23 - %or.cond.i49 = or i1 %53, %.not.i48 - br i1 %or.cond.i49, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51, label %54 + %61 = icmp sle i32 %.038.in68, %23 + %or.cond.i49 = or i1 %61, %.not.i48 + br i1 %or.cond.i49, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51, label %62 -54: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47 - %55 = sub nsw i32 %.03870, %23 +62: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47 + %63 = sub nsw i32 %.03870, %23 %56 = zext nneg i32 %55 to i64 - %57 = getelementptr inbounds nuw [128 x i32], ptr %37, i64 0, i64 %56 + %57 = getelementptr inbounds nuw [128 x i32], ptr %42, i64 0, i64 %56 %58 = load i32, ptr %57, align 4 br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51 -_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47, %54 +_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47, %62 %.0.i50 = phi i32 [ %58, %54 ], [ 0, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit47 ] - %59 = add i32 %.0.i46, %.0.i - %60 = add i32 %.0.i50, %.03769 - %61 = icmp ugt i32 %59, %60 - br i1 %61, label %.loopexit, label %62 + %66 = add i32 %.0.i46, %.0.i + %67 = add i32 %.0.i50, %.03769 + %68 = icmp ugt i32 %66, %67 + br i1 %68, label %.loopexit, label %69 -62: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51 - %63 = sub nuw i32 %60, %59 - %64 = icmp ugt i32 %63, 1 - br i1 %64, label %.loopexit, label %38 +69: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51 + %70 = sub nuw i32 %67, %66 + %71 = icmp ugt i32 %70, 1 + br i1 %71, label %.loopexit, label %38 ._crit_edge.loopexit: ; preds = %38 - %65 = icmp ne i32 %60, %59 - %66 = sext i1 %65 to i32 + %72 = icmp ne i32 %67, %66 + %73 = sext i1 %72 to i32 br label %.loopexit -.loopexit: ; preds = %62, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51, %30, %._crit_edge.loopexit, %28, %26, %16 - %.0 = phi i32 [ -1, %16 ], [ 1, %26 ], [ -1, %28 ], [ 0, %30 ], [ %66, %._crit_edge.loopexit ], [ -1, %62 ], [ 1, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51 ] +.loopexit: ; preds = %69, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51, %30, %._crit_edge.loopexit, %28, %26, %16 + %.0 = phi i32 [ -1, %16 ], [ 1, %26 ], [ -1, %28 ], [ 0, %30 ], [ %73, %._crit_edge.loopexit ], [ -1, %62 ], [ 1, %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Bignum11BigitOrZeroEi.exit51 ] ret i32 %.0 } diff --git a/bench/postgres/optimized/inv_api.ll b/bench/postgres/optimized/inv_api.ll index 5565e107687..7e03e8d6c6d 100644 --- a/bench/postgres/optimized/inv_api.ll +++ b/bench/postgres/optimized/inv_api.ll @@ -922,9 +922,9 @@ getdatafield.exit: ; preds = %96 %127 = lshr i32 %97, 2 %128 = zext nneg i32 %127 to i64 %129 = add i64 %6, %128 - %130 = add i64 %129, %119 - %131 = add i64 %68, %128 - %umax = call i64 @llvm.umax.i64(i64 %130, i64 %131) + %130 = add i64 %129, %121 + %131 = add i64 %68, %130 + %umax = call i64 @llvm.umax.i64(i64 %132, i64 %131) %132 = add i64 %umax, %67 %133 = sub i64 %132, %128 %134 = and i64 %133, -8 @@ -1200,7 +1200,7 @@ open_lo_relation.exit: ; preds = %25, %41 %65 = getelementptr inbounds nuw i8, ptr %64, i64 4 %66 = load i32, ptr %65, align 4 %67 = icmp eq i32 %66, %10 - br i1 %67, label %68, label %113 + br i1 %67, label %68, label %115 68: ; preds = %60 %69 = getelementptr inbounds nuw i8, ptr %64, i64 8 @@ -1278,71 +1278,71 @@ getdatafield.exit: ; preds = %74 %112 = add i64 %111, 8 br label %.loopexit103.sink.split -113: ; preds = %60 - %114 = load ptr, ptr @lo_heap_r, align 8 - %115 = getelementptr inbounds nuw i8, ptr %52, i64 4 - call void @CatalogTupleDelete(ptr noundef %114, ptr noundef nonnull %115) #9 +115: ; preds = %60 + %116 = load ptr, ptr @lo_heap_r, align 8 + %117 = getelementptr inbounds nuw i8, ptr %52, i64 4 + call void @CatalogTupleDelete(ptr noundef %116, ptr noundef nonnull %117) #9 br label %.critedge -.critedge: ; preds = %open_lo_relation.exit, %113 - %116 = trunc i64 %1 to i32 - %117 = and i32 %116, 2047 - %.not89 = icmp eq i32 %117, 0 - br i1 %.not89, label %.loopexit102, label %118 - -118: ; preds = %.critedge - %119 = and i64 %1, 2047 - %120 = ptrtoint ptr %.ptr to i64 - %121 = and i64 %120, 4 - %122 = icmp eq i64 %121, 0 - br i1 %122, label %123, label %.loopexit102.sink.split - -123: ; preds = %118 - %124 = and i64 %1, 7 - %125 = icmp eq i64 %124, 0 - %126 = icmp samesign ult i64 %119, 1025 - %or.cond9 = select i1 %125, i1 %126, i1 false - br i1 %or.cond9, label %127, label %.loopexit102.sink.split - -127: ; preds = %123 - %.not111 = icmp eq i64 %119, 0 +.critedge: ; preds = %open_lo_relation.exit, %115 + %118 = trunc i64 %1 to i32 + %119 = and i32 %118, 2047 + %.not89 = icmp eq i32 %119, 0 + br i1 %.not89, label %.loopexit102, label %120 + +120: ; preds = %.critedge + %121 = and i64 %1, 2047 + %122 = ptrtoint ptr %.ptr to i64 + %123 = and i64 %122, 4 + %124 = icmp eq i64 %123, 0 + br i1 %124, label %125, label %.loopexit102.sink.split + +125: ; preds = %120 + %126 = and i64 %1, 7 + %127 = icmp eq i64 %126, 0 + %128 = icmp samesign ult i64 %121, 1025 + %or.cond9 = select i1 %127, i1 %128, i1 false + br i1 %or.cond9, label %129, label %.loopexit102.sink.split + +129: ; preds = %125 + %.not111 = icmp eq i64 %121, 0 br i1 %.not111, label %.loopexit102, label %.lr.ph106.preheader -.lr.ph106.preheader: ; preds = %127 - %128 = add i64 %119, %5 - %129 = add i64 %128, 4 - %130 = add nuw i64 %5, 12 - %umax112 = call i64 @llvm.umax.i64(i64 %129, i64 %130) - %131 = add i64 %umax112, -5 - %132 = sub i64 %131, %5 - %133 = and i64 %132, -8 - %134 = add i64 %133, 8 +.lr.ph106.preheader: ; preds = %129 + %130 = add i64 %121, %5 + %131 = add i64 %130, 4 + %132 = add nuw i64 %5, 12 + %umax112 = call i64 @llvm.umax.i64(i64 %131, i64 %132) + %133 = add i64 %umax112, -5 + %134 = sub i64 %133, %5 + %135 = and i64 %134, -8 + %136 = add i64 %135, 8 br label %.loopexit102.sink.split -.loopexit102.sink.split: ; preds = %118, %123, %.lr.ph106.preheader - %.sink = phi i64 [ %134, %.lr.ph106.preheader ], [ %119, %123 ], [ %119, %118 ] +.loopexit102.sink.split: ; preds = %120, %125, %.lr.ph106.preheader + %.sink = phi i64 [ %136, %.lr.ph106.preheader ], [ %121, %123 ], [ %121, %118 ] call void @llvm.memset.p0.i64(ptr nonnull align 4 %.ptr, i8 0, i64 %.sink, i1 false) br label %.loopexit102 -.loopexit102: ; preds = %.loopexit102.sink.split, %127, %.critedge - %135 = shl nuw nsw i32 %117, 2 - %136 = add nuw nsw i32 %135, 16 - store i32 %136, ptr %4, align 4 +.loopexit102: ; preds = %.loopexit102.sink.split, %129, %.critedge + %137 = shl nuw nsw i32 %119, 2 + %138 = add nuw nsw i32 %137, 16 + store i32 %138, ptr %4, align 4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %7, i8 0, i64 3, i1 false) - %137 = load i32, ptr %0, align 8 - %138 = zext i32 %137 to i64 - store i64 %138, ptr %6, align 16 - %139 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store i64 %9, ptr %139, align 8 - %140 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store i64 %5, ptr %140, align 16 - %141 = load ptr, ptr @lo_heap_r, align 8 - %142 = getelementptr inbounds nuw i8, ptr %141, i64 64 - %143 = load ptr, ptr %142, align 8 - %144 = call ptr @heap_form_tuple(ptr noundef %143, ptr noundef nonnull %6, ptr noundef nonnull %7) #9 - %145 = load ptr, ptr @lo_heap_r, align 8 - call void @CatalogTupleInsertWithInfo(ptr noundef %145, ptr noundef %144, ptr noundef %43) #9 - call void @heap_freetuple(ptr noundef %144) #9 + %139 = load i32, ptr %0, align 8 + %140 = zext i32 %139 to i64 + store i64 %140, ptr %6, align 16 + %141 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store i64 %9, ptr %141, align 8 + %142 = getelementptr inbounds nuw i8, ptr %6, i64 16 + store i64 %5, ptr %142, align 16 + %143 = load ptr, ptr @lo_heap_r, align 8 + %144 = getelementptr inbounds nuw i8, ptr %143, i64 64 + %145 = load ptr, ptr %144, align 8 + %146 = call ptr @heap_form_tuple(ptr noundef %145, ptr noundef nonnull %6, ptr noundef nonnull %7) #9 + %147 = load ptr, ptr @lo_heap_r, align 8 + call void @CatalogTupleInsertWithInfo(ptr noundef %147, ptr noundef %146, ptr noundef %43) #9 + call void @heap_freetuple(ptr noundef %146) #9 br i1 %.not, label %.loopexit, label %.preheader .loopexit103.sink.split: ; preds = %92, %99, %.lr.ph.preheader @@ -1351,38 +1351,38 @@ getdatafield.exit: ; preds = %74 br label %.loopexit103 .loopexit103: ; preds = %.loopexit103.sink.split, %88 - %146 = shl nuw nsw i32 %90, 2 - %147 = add nuw nsw i32 %146, 16 - store i32 %147, ptr %4, align 4 + %148 = shl nuw nsw i32 %90, 2 + %149 = add nuw nsw i32 %148, 16 + store i32 %149, ptr %4, align 4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %6, i8 0, i64 16, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %7, i8 0, i64 3, i1 false) store i16 0, ptr %8, align 2 - %148 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store i64 %5, ptr %148, align 16 - %149 = getelementptr inbounds nuw i8, ptr %8, i64 2 - store i8 1, ptr %149, align 2 - %150 = load ptr, ptr @lo_heap_r, align 8 - %151 = getelementptr inbounds nuw i8, ptr %150, i64 64 - %152 = load ptr, ptr %151, align 8 - %153 = call ptr @heap_modify_tuple(ptr noundef nonnull %52, ptr noundef %152, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8) #9 - %154 = load ptr, ptr @lo_heap_r, align 8 - %155 = getelementptr inbounds nuw i8, ptr %153, i64 4 - call void @CatalogTupleUpdateWithInfo(ptr noundef %154, ptr noundef nonnull %155, ptr noundef %153, ptr noundef %43) #9 - call void @heap_freetuple(ptr noundef %153) #9 + %150 = getelementptr inbounds nuw i8, ptr %6, i64 16 + store i64 %5, ptr %150, align 16 + %151 = getelementptr inbounds nuw i8, ptr %8, i64 2 + store i8 1, ptr %151, align 2 + %152 = load ptr, ptr @lo_heap_r, align 8 + %153 = getelementptr inbounds nuw i8, ptr %152, i64 64 + %154 = load ptr, ptr %153, align 8 + %155 = call ptr @heap_modify_tuple(ptr noundef nonnull %52, ptr noundef %154, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8) #9 + %156 = load ptr, ptr @lo_heap_r, align 8 + %157 = getelementptr inbounds nuw i8, ptr %155, i64 4 + call void @CatalogTupleUpdateWithInfo(ptr noundef %156, ptr noundef nonnull %157, ptr noundef %155, ptr noundef %43) #9 + call void @heap_freetuple(ptr noundef %155) #9 br label %.preheader .preheader: ; preds = %.loopexit102, %.loopexit103 - %156 = call ptr @systable_getnext_ordered(ptr noundef %51, i32 noundef 1) #9 - %.not90107 = icmp eq ptr %156, null + %158 = call ptr @systable_getnext_ordered(ptr noundef %51, i32 noundef 1) #9 + %.not90107 = icmp eq ptr %158, null br i1 %.not90107, label %.loopexit, label %.lr.ph108 .lr.ph108: ; preds = %.preheader, %.lr.ph108 - %157 = phi ptr [ %160, %.lr.ph108 ], [ %156, %.preheader ] - %158 = load ptr, ptr @lo_heap_r, align 8 - %159 = getelementptr inbounds nuw i8, ptr %157, i64 4 - call void @CatalogTupleDelete(ptr noundef %158, ptr noundef nonnull %159) #9 - %160 = call ptr @systable_getnext_ordered(ptr noundef %51, i32 noundef 1) #9 - %.not90 = icmp eq ptr %160, null + %159 = phi ptr [ %162, %.lr.ph108 ], [ %158, %.preheader ] + %160 = load ptr, ptr @lo_heap_r, align 8 + %161 = getelementptr inbounds nuw i8, ptr %159, i64 4 + call void @CatalogTupleDelete(ptr noundef %160, ptr noundef nonnull %161) #9 + %162 = call ptr @systable_getnext_ordered(ptr noundef %51, i32 noundef 1) #9 + %.not90 = icmp eq ptr %162, null br i1 %.not90, label %.loopexit, label %.lr.ph108, !llvm.loop !7 .loopexit: ; preds = %.lr.ph108, %.preheader, %.loopexit102 diff --git a/bench/wolfssl/optimized/tls.ll b/bench/wolfssl/optimized/tls.ll index 8d6990562ef..56708da9491 100644 --- a/bench/wolfssl/optimized/tls.ll +++ b/bench/wolfssl/optimized/tls.ll @@ -1183,43 +1183,43 @@ Hmac_HashUpdate.exit144: ; preds = %89, %91, %93, %95 %104 = zext nneg i32 %103 to i64 %105 = zext nneg i32 %103 to i64 %wide.trip.count = zext nneg i32 %switch.load to i64 - br label %106 + br label %105 -106: ; preds = %.lr.ph170, %._crit_edge +105: ; preds = %.lr.ph170, %._crit_edge %.0118168 = phi i32 [ %.0125181, %.lr.ph170 ], [ %175, %._crit_edge ] %.0121167 = phi i32 [ %99, %.lr.ph170 ], [ %136, %._crit_edge ] call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %10) #17 - %107 = add i32 %.0118168, %100 - %108 = xor i32 %.0118168, -1 - %109 = add i32 %43, %108 - %.neg7.i = and i32 %107, %109 - %110 = ashr i32 %.neg7.i, 31 - %111 = trunc nsw i32 %110 to i8 - %112 = add i32 %.0118168, %101 - %113 = add i32 %42, %108 - %.neg7.i145 = and i32 %112, %113 - %114 = ashr i32 %.neg7.i145, 31 - %115 = trunc nsw i32 %114 to i8 - %116 = xor i8 %111, -1 - %117 = xor i8 %115, -1 - %118 = or i8 %111, %117 - %119 = icmp slt i32 %.neg7.i145, 0 - br label %120 - -120: ; preds = %106, %147 + %106 = add i32 %.0118168, %100 + %107 = xor i32 %.0118168, -1 + %108 = add i32 %43, %107 + %.neg7.i = and i32 %106, %108 + %109 = ashr i32 %.neg7.i, 31 + %110 = trunc nsw i32 %109 to i8 + %111 = add i32 %.0118168, %101 + %112 = add i32 %42, %107 + %.neg7.i145 = and i32 %111, %112 + %113 = ashr i32 %.neg7.i145, 31 + %114 = trunc nsw i32 %113 to i8 + %115 = xor i8 %110, -1 + %116 = xor i8 %114, -1 + %117 = or i8 %110, %116 + %118 = icmp slt i32 %.neg7.i145, 0 + br label %119 + +119: ; preds = %105, %147 %indvars.iv = phi i64 [ 0, %106 ], [ %indvars.iv.next, %147 ] %.1122164 = phi i32 [ %.0121167, %106 ], [ %136, %147 ] - %121 = trunc nuw nsw i64 %indvars.iv to i32 - %122 = add i32 %121, %102 + %120 = trunc nuw nsw i64 %indvars.iv to i32 + %121 = add i32 %120, %102 %123 = xor i32 %121, -1 %124 = add i32 %35, %123 %.neg7.i146 = and i32 %124, %.neg7.i - %125 = and i32 %.neg7.i146, %122 - %126 = icmp sgt i32 %122, -1 + %125 = and i32 %.neg7.i146, %121 + %126 = icmp sgt i32 %121, -1 %127 = icmp ult i32 %.1122164, %6 br i1 %127, label %.sink.split, label %128 -128: ; preds = %120 +128: ; preds = %119 %129 = icmp ult i32 %.1122164, %19 br i1 %129, label %130, label %135 @@ -1227,7 +1227,7 @@ Hmac_HashUpdate.exit144: ; preds = %89, %91, %93, %95 %131 = sub i32 %.1122164, %6 br label %.sink.split -.sink.split: ; preds = %120, %130 +.sink.split: ; preds = %119, %130 %.sink = phi i32 [ %131, %130 ], [ %.1122164, %120 ] %.sink182 = phi ptr [ %2, %130 ], [ %5, %120 ] %132 = zext i32 %.sink to i64 @@ -1240,9 +1240,9 @@ Hmac_HashUpdate.exit144: ; preds = %89, %91, %93, %95 %136 = add i32 %.1122164, 1 %137 = icmp slt i32 %125, 0 %138 = select i1 %137, i8 -128, i8 %.0 - %139 = select i1 %126, i8 %116, i8 -1 + %139 = select i1 %126, i8 %115, i8 -1 %140 = and i8 %138, %139 - %141 = and i8 %140, %118 + %141 = and i8 %140, %117 %.not140 = icmp samesign ult i64 %indvars.iv, %105 br i1 %.not140, label %147, label %142 @@ -1250,7 +1250,7 @@ Hmac_HashUpdate.exit144: ; preds = %89, %91, %93, %95 %143 = sub nsw i64 %indvars.iv, %104 %144 = getelementptr inbounds nuw [8 x i8], ptr %9, i64 0, i64 %143 %145 = load i8, ptr %144, align 1, !tbaa !51 - %146 = select i1 %119, i8 %145, i8 %140 + %146 = select i1 %118, i8 %145, i8 %140 br label %147 147: ; preds = %142, %135 @@ -1259,7 +1259,7 @@ Hmac_HashUpdate.exit144: ; preds = %89, %91, %93, %95 store i8 %.1, ptr %148, align 1, !tbaa !51 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %149, label %120, !llvm.loop !79 + br i1 %exitcond.not, label %149, label %119, !llvm.loop !79 149: ; preds = %147 %150 = load i8, ptr %11, align 8, !tbaa !77 @@ -1328,7 +1328,7 @@ Hmac_HashFinalRaw.exit: ; preds = %161, %163, %165, %1 %indvars.iv174 = phi i64 [ %indvars.iv.next175, %.lr.ph ], [ 0, %.preheader ] %169 = getelementptr inbounds nuw [144 x i8], ptr %10, i64 0, i64 %indvars.iv174 %170 = load i8, ptr %169, align 1, !tbaa !51 - %171 = and i8 %170, %115 + %171 = and i8 %170, %114 %172 = getelementptr inbounds nuw i8, ptr %72, i64 %indvars.iv174 %173 = load i8, ptr %172, align 1, !tbaa !51 %174 = or i8 %173, %171 @@ -1346,7 +1346,7 @@ Hmac_HashFinalRaw.exit: ; preds = %161, %163, %165, %1 call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %10) #17 %175 = add nuw nsw i32 %.0118168, 1 %176 = icmp slt i32 %175, %27 - br i1 %176, label %106, label %._crit_edge171, !llvm.loop !81 + br i1 %176, label %105, label %._crit_edge171, !llvm.loop !81 ._crit_edge171: ; preds = %._crit_edge, %97 call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %8) #17 diff --git a/bench/z3/optimized/nlarith_util.ll b/bench/z3/optimized/nlarith_util.ll index fd7720a8347..bbe341edcd9 100644 --- a/bench/z3/optimized/nlarith_util.ll +++ b/bench/z3/optimized/nlarith_util.ll @@ -30459,7 +30459,7 @@ _ZN11ast_manager7inc_refEP3ast.exit.i: ; preds = %189, %185 cleanup br label %.body -.loopexit: ; preds = %600, %257 +.loopexit: ; preds = %601, %257 %205 = icmp sgt i64 %indvars.iv256, 1 br i1 %205, label %230, label %._crit_edge, !llvm.loop !520 @@ -30593,7 +30593,7 @@ _ZN11ast_manager7inc_refEP3ast.exit.i117: ; preds = %246, %242 cleanup br label %.body -.lr.ph247: ; preds = %257, %600 +.lr.ph247: ; preds = %257, %601 %indvars.iv253 = phi i64 [ %indvars.iv.next254, %600 ], [ %231, %257 ] %indvars.iv.next254 = add nsw i64 %indvars.iv253, -1 %263 = load ptr, ptr %57, align 8, !tbaa !118 @@ -30897,12 +30897,12 @@ _ZN11ast_manager7inc_refEP3ast.exit.i128: ; preds = %367, %370 383: ; preds = %378 invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %375, ptr noundef nonnull %377) - to label %384 unwind label %596 + to label %384 unwind label %597 384: ; preds = %378, %_ZN11ast_manager7inc_refEP3ast.exit.i128, %383 store ptr %354, ptr %376, align 8, !tbaa !138 %.not = icmp slt i64 %indvars.iv253, %indvars.iv256 - br i1 %.not, label %600, label %385 + br i1 %.not, label %601, label %385 385: ; preds = %384 %386 = load ptr, ptr %57, align 8, !tbaa !118 @@ -30915,69 +30915,69 @@ _ZN11ast_manager7inc_refEP3ast.exit.i128: ; preds = %367, %370 %393 = getelementptr inbounds nuw ptr, ptr %392, i64 %391 %394 = load ptr, ptr %393, align 8, !tbaa !138 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #21 - %395 = load ptr, ptr %0, align 8, !tbaa !88 + %396 = load ptr, ptr %0, align 8, !tbaa !88 store ptr null, ptr %15, align 8, !tbaa !372 - store ptr %395, ptr %173, align 8, !tbaa !9 + store ptr %396, ptr %173, align 8, !tbaa !9 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #21 store ptr %390, ptr %16, align 16, !tbaa !105 store ptr %394, ptr %174, align 8, !tbaa !105 - %396 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %390) - to label %.noexc198 unwind label %494 + %397 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %390) + to label %.noexc198 unwind label %495 .noexc198: ; preds = %385 - store ptr %396, ptr %170, align 8, !tbaa !319 - %397 = load i8, ptr %171, align 8, !tbaa !456, !range !122, !noundef !123 - %398 = trunc nuw i8 %397 to i1 - br i1 %398, label %399, label %401 + store ptr %397, ptr %170, align 8, !tbaa !319 + %398 = load i8, ptr %171, align 8, !tbaa !456, !range !122, !noundef !123 + %399 = trunc nuw i8 %398 to i1 + br i1 %399, label %400, label %402 -399: ; preds = %.noexc198 - %400 = invoke noundef i32 @_ZN13poly_rewriterI19arith_rewriter_coreE16mk_flat_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %16, ptr noundef nonnull align 8 dereferenceable(16) %15) - to label %_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192 unwind label %494 +400: ; preds = %.noexc198 + %401 = invoke noundef i32 @_ZN13poly_rewriterI19arith_rewriter_coreE16mk_flat_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %16, ptr noundef nonnull align 8 dereferenceable(16) %15) + to label %_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192 unwind label %495 -401: ; preds = %.noexc198 - %402 = invoke noundef i32 @_ZN13poly_rewriterI19arith_rewriter_coreE17mk_nflat_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %16, ptr noundef nonnull align 8 dereferenceable(16) %15) - to label %_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192 unwind label %494 +402: ; preds = %.noexc198 + %403 = invoke noundef i32 @_ZN13poly_rewriterI19arith_rewriter_coreE17mk_nflat_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %16, ptr noundef nonnull align 8 dereferenceable(16) %15) + to label %_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192 unwind label %495 -_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192: ; preds = %401, %399 - %.0.i.i193 = phi i32 [ %400, %399 ], [ %402, %401 ] - %403 = icmp eq i32 %.0.i.i193, 5 - br i1 %403, label %404, label %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203thread-pre-split +_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192: ; preds = %402, %400 + %.0.i.i193 = phi i32 [ %401, %399 ], [ %403, %401 ] + %404 = icmp eq i32 %.0.i.i193, 5 + br i1 %404, label %405, label %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203thread-pre-split -404: ; preds = %_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192 - %405 = invoke noundef ptr @_ZN13poly_rewriterI19arith_rewriter_coreE10mk_mul_appEjPKP4expr(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %16) - to label %.noexc201 unwind label %494 +405: ; preds = %_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192 + %406 = invoke noundef ptr @_ZN13poly_rewriterI19arith_rewriter_coreE10mk_mul_appEjPKP4expr(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %16) + to label %.noexc201 unwind label %495 -.noexc201: ; preds = %404 - %.not.i.i194 = icmp eq ptr %405, null - br i1 %.not.i.i194, label %409, label %_ZN11ast_manager7inc_refEP3ast.exit.i.i195 +.noexc201: ; preds = %405 + %.not.i.i194 = icmp eq ptr %406, null + br i1 %.not.i.i194, label %410, label %_ZN11ast_manager7inc_refEP3ast.exit.i.i195 _ZN11ast_manager7inc_refEP3ast.exit.i.i195: ; preds = %.noexc201 - %406 = getelementptr inbounds nuw i8, ptr %405, i64 8 - %407 = load i32, ptr %406, align 4, !tbaa !74 - %408 = add i32 %407, 1 - store i32 %408, ptr %406, align 4, !tbaa !74 - br label %409 - -409: ; preds = %_ZN11ast_manager7inc_refEP3ast.exit.i.i195, %.noexc201 - %410 = load ptr, ptr %15, align 8, !tbaa !372 - %.not.i4.i.i196 = icmp eq ptr %410, null - br i1 %.not.i4.i.i196, label %.sink.split.i197, label %411 - -411: ; preds = %409 - %412 = load ptr, ptr %173, align 8, !tbaa !386 - %413 = getelementptr inbounds nuw i8, ptr %410, i64 8 - %414 = load i32, ptr %413, align 4, !tbaa !74 - %415 = add i32 %414, -1 - store i32 %415, ptr %413, align 4, !tbaa !74 - %416 = icmp eq i32 %415, 0 - br i1 %416, label %417, label %.sink.split.i197 - -417: ; preds = %411 - invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %412, ptr noundef nonnull %410) - to label %.sink.split.i197 unwind label %494 - -.sink.split.i197: ; preds = %417, %411, %409 - store ptr %405, ptr %15, align 8, !tbaa !372 + %407 = getelementptr inbounds nuw i8, ptr %406, i64 8 + %408 = load i32, ptr %407, align 4, !tbaa !74 + %409 = add i32 %408, 1 + store i32 %409, ptr %407, align 4, !tbaa !74 + br label %410 + +410: ; preds = %_ZN11ast_manager7inc_refEP3ast.exit.i.i195, %.noexc201 + %411 = load ptr, ptr %15, align 8, !tbaa !372 + %.not.i4.i.i196 = icmp eq ptr %411, null + br i1 %.not.i4.i.i196, label %.sink.split.i197, label %412 + +412: ; preds = %410 + %413 = load ptr, ptr %173, align 8, !tbaa !386 + %414 = getelementptr inbounds nuw i8, ptr %411, i64 8 + %415 = load i32, ptr %414, align 4, !tbaa !74 + %416 = add i32 %415, -1 + store i32 %416, ptr %414, align 4, !tbaa !74 + %417 = icmp eq i32 %416, 0 + br i1 %417, label %418, label %.sink.split.i197 + +418: ; preds = %412 + invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %413, ptr noundef nonnull %411) + to label %.sink.split.i197 unwind label %495 + +.sink.split.i197: ; preds = %418, %412, %410 + store ptr %406, ptr %15, align 8, !tbaa !372 br label %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203 _ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203thread-pre-split: ; preds = %_ZN13poly_rewriterI19arith_rewriter_coreE11mk_mul_coreEjPKP4exprR7obj_refIS2_11ast_managerE.exit.i192 @@ -30985,119 +30985,119 @@ _ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_man br label %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203 _ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203: ; preds = %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203thread-pre-split, %.sink.split.i197 - %418 = phi ptr [ %.pr237, %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203thread-pre-split ], [ %405, %.sink.split.i197 ] - %.not.i.i.i.i.i.i137 = icmp eq ptr %418, null - br i1 %.not.i.i.i.i.i.i137, label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138, label %419 - -419: ; preds = %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203 - %420 = getelementptr inbounds nuw i8, ptr %418, i64 8 - %421 = load i32, ptr %420, align 4, !tbaa !74 - %422 = add i32 %421, 1 - store i32 %422, ptr %420, align 4, !tbaa !74 + %419 = phi ptr [ %.pr237, %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203thread-pre-split ], [ %406, %.sink.split.i197 ] + %.not.i.i.i.i.i.i137 = icmp eq ptr %419, null + br i1 %.not.i.i.i.i.i.i137, label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138, label %420 + +420: ; preds = %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203 + %421 = getelementptr inbounds nuw i8, ptr %419, i64 8 + %422 = load i32, ptr %421, align 4, !tbaa !74 + %423 = add i32 %422, 1 + store i32 %423, ptr %421, align 4, !tbaa !74 br label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138 -_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138: ; preds = %419, %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203 - %423 = load ptr, ptr %172, align 8, !tbaa !82 - %424 = icmp eq ptr %423, null - br i1 %424, label %431, label %425 - -425: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138 - %426 = getelementptr inbounds i8, ptr %423, i64 -4 - %427 = load i32, ptr %426, align 4, !tbaa !104 - %428 = getelementptr inbounds i8, ptr %423, i64 -8 - %429 = load i32, ptr %428, align 4, !tbaa !104 - %430 = icmp eq i32 %427, %429 - br i1 %430, label %435, label %476 - -431: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138 - %432 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef 24) - to label %.noexc187 unwind label %494 - -.noexc187: ; preds = %431 - store i32 2, ptr %432, align 4, !tbaa !104 - %433 = getelementptr inbounds nuw i8, ptr %432, i64 4 - store i32 0, ptr %433, align 4, !tbaa !104 - %434 = getelementptr inbounds nuw i8, ptr %432, i64 8 - store ptr %434, ptr %172, align 8, !tbaa !82 +_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138: ; preds = %420, %_ZN13poly_rewriterI19arith_rewriter_coreE6mk_mulEjPKP4exprR7obj_refIS2_11ast_managerE.exit203 + %424 = load ptr, ptr %172, align 8, !tbaa !82 + %425 = icmp eq ptr %424, null + br i1 %425, label %432, label %426 + +426: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138 + %427 = getelementptr inbounds i8, ptr %424, i64 -4 + %428 = load i32, ptr %427, align 4, !tbaa !104 + %429 = getelementptr inbounds i8, ptr %424, i64 -8 + %430 = load i32, ptr %429, align 4, !tbaa !104 + %431 = icmp eq i32 %428, %430 + br i1 %431, label %436, label %477 + +432: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i138 + %433 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef 24) + to label %.noexc187 unwind label %495 + +.noexc187: ; preds = %432 + store i32 2, ptr %433, align 4, !tbaa !104 + %434 = getelementptr inbounds nuw i8, ptr %433, i64 4 + store i32 0, ptr %434, align 4, !tbaa !104 + %435 = getelementptr inbounds nuw i8, ptr %433, i64 8 + store ptr %435, ptr %172, align 8, !tbaa !82 br label %.noexc.i140 -435: ; preds = %425 - %436 = mul i32 %427, 3 - %437 = add i32 %436, 1 - %438 = lshr i32 %437, 1 - %439 = shl i32 %438, 3 - %440 = add i32 %439, 8 - %.not.i177 = icmp ugt i32 %438, %427 - br i1 %.not.i177, label %441, label %444 - -441: ; preds = %435 - %442 = shl i32 %427, 3 - %443 = add i32 %442, 8 - %.not27.i186 = icmp ugt i32 %440, %443 - br i1 %.not27.i186, label %471, label %444 - -444: ; preds = %441, %435 - %445 = call ptr @__cxa_allocate_exception(i64 40) #21 +436: ; preds = %426 + %437 = mul i32 %428, 3 + %438 = add i32 %437, 1 + %439 = lshr i32 %438, 1 + %440 = shl i32 %439, 3 + %441 = add i32 %440, 8 + %.not.i177 = icmp ugt i32 %439, %428 + br i1 %.not.i177, label %442, label %445 + +442: ; preds = %436 + %443 = shl i32 %428, 3 + %444 = add i32 %443, 8 + %.not27.i186 = icmp ugt i32 %441, %444 + br i1 %.not27.i186, label %472, label %445 + +445: ; preds = %442, %436 + %446 = call ptr @__cxa_allocate_exception(i64 40) #21 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #21 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #21 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %10) - to label %446 unwind label %469 - -446: ; preds = %444 - store ptr getelementptr inbounds nuw inrange(-16, 32) (i8, ptr @_ZTV17default_exception, i64 16), ptr %445, align 8, !tbaa !89 - %447 = getelementptr inbounds nuw i8, ptr %445, i64 8 - %448 = getelementptr inbounds nuw i8, ptr %445, i64 24 - store ptr %448, ptr %447, align 8, !tbaa !334 - %449 = load ptr, ptr %9, align 8, !tbaa !331 - %450 = getelementptr inbounds nuw i8, ptr %9, i64 16 - %451 = icmp eq ptr %449, %450 - br i1 %451, label %452, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179 - -452: ; preds = %446 - %453 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %454 = load i64, ptr %453, align 8, !tbaa !332 - %455 = icmp ult i64 %454, 16 - call void @llvm.assume(i1 %455) - %456 = add nuw nsw i64 %454, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %448, ptr noundef nonnull align 8 dereferenceable(1) %450, i64 %456, i1 false) + to label %446 unwind label %470 + +447: ; preds = %445 + store ptr getelementptr inbounds nuw inrange(-16, 32) (i8, ptr @_ZTV17default_exception, i64 16), ptr %446, align 8, !tbaa !89 + %448 = getelementptr inbounds nuw i8, ptr %446, i64 8 + %449 = getelementptr inbounds nuw i8, ptr %446, i64 24 + store ptr %449, ptr %448, align 8, !tbaa !334 + %450 = load ptr, ptr %9, align 8, !tbaa !331 + %451 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %452 = icmp eq ptr %450, %451 + br i1 %452, label %453, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179 + +453: ; preds = %447 + %454 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %455 = load i64, ptr %454, align 8, !tbaa !332 + %456 = icmp ult i64 %455, 16 + call void @llvm.assume(i1 %456) + %457 = add nuw nsw i64 %455, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %449, ptr noundef nonnull align 8 dereferenceable(1) %451, i64 %457, i1 false) br label %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179: ; preds = %446 - store ptr %449, ptr %447, align 8, !tbaa !331 - %457 = load i64, ptr %450, align 8, !tbaa !333 - store i64 %457, ptr %448, align 8, !tbaa !333 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179: ; preds = %447 + store ptr %450, ptr %448, align 8, !tbaa !331 + %458 = load i64, ptr %451, align 8, !tbaa !333 + store i64 %458, ptr %449, align 8, !tbaa !333 %.phi.trans.insert.i180 = getelementptr inbounds nuw i8, ptr %9, i64 8 %.pre.i181 = load i64, ptr %.phi.trans.insert.i180, align 8, !tbaa !332 br label %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182 -_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179, %452 - %458 = phi i64 [ %454, %452 ], [ %.pre.i181, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179 ] - %459 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %460 = getelementptr inbounds nuw i8, ptr %445, i64 16 - store i64 %458, ptr %460, align 8, !tbaa !332 - store ptr %450, ptr %9, align 8, !tbaa !331 - store i64 0, ptr %459, align 8, !tbaa !332 - store i8 0, ptr %450, align 8, !tbaa !333 - invoke void @__cxa_throw(ptr nonnull %445, ptr nonnull @_ZTI17default_exception, ptr nonnull @_ZN17default_exceptionD2Ev) #25 - to label %475 unwind label %461 - -461: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182 - %462 = landingpad { ptr, i32 } +_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179, %453 + %459 = phi i64 [ %455, %452 ], [ %.pre.i181, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i179 ] + %460 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %461 = getelementptr inbounds nuw i8, ptr %446, i64 16 + store i64 %459, ptr %461, align 8, !tbaa !332 + store ptr %451, ptr %9, align 8, !tbaa !331 + store i64 0, ptr %460, align 8, !tbaa !332 + store i8 0, ptr %451, align 8, !tbaa !333 + invoke void @__cxa_throw(ptr nonnull %446, ptr nonnull @_ZTI17default_exception, ptr nonnull @_ZN17default_exceptionD2Ev) #25 + to label %475 unwind label %462 + +462: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182 + %463 = landingpad { ptr, i32 } cleanup - %463 = load ptr, ptr %9, align 8, !tbaa !331 - %464 = icmp eq ptr %463, %450 - br i1 %464, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i185, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i183 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i185: ; preds = %461 - %465 = load i64, ptr %459, align 8, !tbaa !332 - %466 = icmp ult i64 %465, 16 - call void @llvm.assume(i1 %466) + %464 = load ptr, ptr %9, align 8, !tbaa !331 + %465 = icmp eq ptr %464, %451 + br i1 %465, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i185, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i183 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i185: ; preds = %462 + %466 = load i64, ptr %460, align 8, !tbaa !332 + %467 = icmp ult i64 %466, 16 + call void @llvm.assume(i1 %467) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i183: ; preds = %461 - %467 = load i64, ptr %450, align 8, !tbaa !333 - %468 = add i64 %467, 1 - call void @_ZdlPvm(ptr noundef %463, i64 noundef %468) #23 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i183: ; preds = %462 + %468 = load i64, ptr %451, align 8, !tbaa !333 + %469 = add i64 %468, 1 + call void @_ZdlPvm(ptr noundef %464, i64 noundef %469) #23 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i183, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i185 @@ -31105,206 +31105,206 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184: ; pr call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #21 br label %.body188 -469: ; preds = %444 - %470 = landingpad { ptr, i32 } +470: ; preds = %445 + %471 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #21 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #21 - call void @__cxa_free_exception(ptr %445) #21 + call void @__cxa_free_exception(ptr %446) #21 br label %.body188 -471: ; preds = %441 - %472 = zext i32 %440 to i64 - %473 = invoke noalias noundef ptr @_ZN6memory10reallocateEPvm(ptr noundef nonnull %428, i64 noundef %472) - to label %.noexc190 unwind label %494 +472: ; preds = %442 + %473 = zext i32 %441 to i64 + %474 = invoke noalias noundef ptr @_ZN6memory10reallocateEPvm(ptr noundef nonnull %429, i64 noundef %473) + to label %.noexc190 unwind label %495 -.noexc190: ; preds = %471 - %474 = getelementptr inbounds nuw i8, ptr %473, i64 8 - store ptr %474, ptr %172, align 8, !tbaa !82 - store i32 %438, ptr %473, align 4, !tbaa !104 +.noexc190: ; preds = %472 + %475 = getelementptr inbounds nuw i8, ptr %474, i64 8 + store ptr %475, ptr %172, align 8, !tbaa !82 + store i32 %439, ptr %474, align 4, !tbaa !104 br label %.noexc.i140 -475: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182 +476: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i182 unreachable .noexc.i140: ; preds = %.noexc190, %.noexc187 - %.pre.i.i.i.i141 = phi ptr [ %474, %.noexc190 ], [ %434, %.noexc187 ] + %.pre.i.i.i.i141 = phi ptr [ %475, %.noexc190 ], [ %435, %.noexc187 ] %.phi.trans.insert.i.i.i.i142 = getelementptr inbounds i8, ptr %.pre.i.i.i.i141, i64 -4 %.pre2.i.i.i.i143 = load i32, ptr %.phi.trans.insert.i.i.i.i142, align 4, !tbaa !104 - br label %476 - -476: ; preds = %.noexc.i140, %425 - %477 = phi i32 [ %.pre2.i.i.i.i143, %.noexc.i140 ], [ %427, %425 ] - %478 = phi ptr [ %.pre.i.i.i.i141, %.noexc.i140 ], [ %423, %425 ] - %479 = getelementptr inbounds i8, ptr %478, i64 -4 - %480 = zext i32 %477 to i64 - %481 = getelementptr inbounds nuw ptr, ptr %478, i64 %480 - store ptr %418, ptr %481, align 8, !tbaa !105 - %482 = add i32 %477, 1 - store i32 %482, ptr %479, align 4, !tbaa !104 - %483 = load ptr, ptr %15, align 8, !tbaa !372 + br label %477 + +477: ; preds = %.noexc.i140, %426 + %478 = phi i32 [ %.pre2.i.i.i.i143, %.noexc.i140 ], [ %428, %425 ] + %479 = phi ptr [ %.pre.i.i.i.i141, %.noexc.i140 ], [ %424, %425 ] + %480 = getelementptr inbounds i8, ptr %479, i64 -4 + %481 = zext i32 %478 to i64 + %482 = getelementptr inbounds nuw ptr, ptr %479, i64 %481 + store ptr %419, ptr %482, align 8, !tbaa !105 + %483 = add i32 %478, 1 + store i32 %483, ptr %480, align 4, !tbaa !104 + %484 = load ptr, ptr %15, align 8, !tbaa !372 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #21 - %.not.i.i.i139 = icmp eq ptr %483, null - br i1 %.not.i.i.i139, label %496, label %484 - -484: ; preds = %476 - %485 = load ptr, ptr %173, align 8, !tbaa !386 - %486 = getelementptr inbounds nuw i8, ptr %483, i64 8 - %487 = load i32, ptr %486, align 4, !tbaa !74 - %488 = add i32 %487, -1 - store i32 %488, ptr %486, align 4, !tbaa !74 - %489 = icmp eq i32 %488, 0 - br i1 %489, label %490, label %496 - -490: ; preds = %484 - invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %485, ptr noundef nonnull %483) - to label %496 unwind label %491 - -491: ; preds = %490 - %492 = landingpad { ptr, i32 } + %.not.i.i.i139 = icmp eq ptr %484, null + br i1 %.not.i.i.i139, label %497, label %485 + +485: ; preds = %477 + %486 = load ptr, ptr %173, align 8, !tbaa !386 + %487 = getelementptr inbounds nuw i8, ptr %484, i64 8 + %488 = load i32, ptr %487, align 4, !tbaa !74 + %489 = add i32 %488, -1 + store i32 %489, ptr %487, align 4, !tbaa !74 + %490 = icmp eq i32 %489, 0 + br i1 %490, label %491, label %497 + +491: ; preds = %485 + invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %486, ptr noundef nonnull %484) + to label %496 unwind label %492 + +492: ; preds = %491 + %493 = landingpad { ptr, i32 } catch ptr null - %493 = extractvalue { ptr, i32 } %492, 0 - call void @__clang_call_terminate(ptr %493) #22 + %494 = extractvalue { ptr, i32 } %493, 0 + call void @__clang_call_terminate(ptr %494) #22 unreachable -494: ; preds = %417, %404, %401, %399, %385, %471, %431 - %495 = landingpad { ptr, i32 } +495: ; preds = %418, %405, %402, %400, %385, %472, %432 + %496 = landingpad { ptr, i32 } cleanup br label %.body188 -.body188: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184, %469, %494 - %eh.lpad-body189 = phi { ptr, i32 } [ %495, %494 ], [ %462, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184 ], [ %470, %469 ] +.body188: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184, %470, %495 + %eh.lpad-body189 = phi { ptr, i32 } [ %496, %494 ], [ %463, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i184 ], [ %471, %469 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #21 call void @_ZN7obj_refI4expr11ast_managerED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #21 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #21 br label %.body -496: ; preds = %490, %484, %476 +497: ; preds = %491, %485, %477 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #21 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #21 - %497 = load ptr, ptr %0, align 8, !tbaa !88 + %498 = load ptr, ptr %0, align 8, !tbaa !88 store ptr null, ptr %13, align 8, !tbaa !372 - store ptr %497, ptr %175, align 8, !tbaa !9 + store ptr %498, ptr %175, align 8, !tbaa !9 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #21 store ptr %388, ptr %14, align 16, !tbaa !105 - store ptr %483, ptr %176, align 8, !tbaa !105 - %498 = invoke noundef i32 @_ZN13poly_rewriterI19arith_rewriter_coreE6mk_subEjPKP4exprR7obj_refIS2_11ast_managerE(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %14, ptr noundef nonnull align 8 dereferenceable(16) %13) - to label %499 unwind label %576 - -499: ; preds = %496 - %500 = load ptr, ptr %13, align 8, !tbaa !372 - %.not.i.i.i.i.i.i147 = icmp eq ptr %500, null - br i1 %.not.i.i.i.i.i.i147, label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148, label %501 - -501: ; preds = %499 - %502 = getelementptr inbounds nuw i8, ptr %500, i64 8 - %503 = load i32, ptr %502, align 4, !tbaa !74 - %504 = add i32 %503, 1 - store i32 %504, ptr %502, align 4, !tbaa !74 + store ptr %484, ptr %176, align 8, !tbaa !105 + %499 = invoke noundef i32 @_ZN13poly_rewriterI19arith_rewriter_coreE6mk_subEjPKP4exprR7obj_refIS2_11ast_managerE(ptr noundef nonnull align 8 dereferenceable(84) %169, i32 noundef 2, ptr noundef nonnull %14, ptr noundef nonnull align 8 dereferenceable(16) %13) + to label %499 unwind label %577 + +500: ; preds = %497 + %501 = load ptr, ptr %13, align 8, !tbaa !372 + %.not.i.i.i.i.i.i147 = icmp eq ptr %501, null + br i1 %.not.i.i.i.i.i.i147, label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148, label %502 + +502: ; preds = %500 + %503 = getelementptr inbounds nuw i8, ptr %501, i64 8 + %504 = load i32, ptr %503, align 4, !tbaa !74 + %505 = add i32 %504, 1 + store i32 %505, ptr %503, align 4, !tbaa !74 br label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148 -_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148: ; preds = %501, %499 - %505 = load ptr, ptr %172, align 8, !tbaa !82 - %506 = icmp eq ptr %505, null - br i1 %506, label %513, label %507 - -507: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148 - %508 = getelementptr inbounds i8, ptr %505, i64 -4 - %509 = load i32, ptr %508, align 4, !tbaa !104 - %510 = getelementptr inbounds i8, ptr %505, i64 -8 - %511 = load i32, ptr %510, align 4, !tbaa !104 - %512 = icmp eq i32 %509, %511 - br i1 %512, label %517, label %558 - -513: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148 - %514 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef 24) - to label %.noexc214 unwind label %576 - -.noexc214: ; preds = %513 - store i32 2, ptr %514, align 4, !tbaa !104 - %515 = getelementptr inbounds nuw i8, ptr %514, i64 4 - store i32 0, ptr %515, align 4, !tbaa !104 - %516 = getelementptr inbounds nuw i8, ptr %514, i64 8 - store ptr %516, ptr %172, align 8, !tbaa !82 +_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148: ; preds = %502, %500 + %506 = load ptr, ptr %172, align 8, !tbaa !82 + %507 = icmp eq ptr %506, null + br i1 %507, label %514, label %508 + +508: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148 + %509 = getelementptr inbounds i8, ptr %506, i64 -4 + %510 = load i32, ptr %509, align 4, !tbaa !104 + %511 = getelementptr inbounds i8, ptr %506, i64 -8 + %512 = load i32, ptr %511, align 4, !tbaa !104 + %513 = icmp eq i32 %510, %512 + br i1 %513, label %518, label %559 + +514: ; preds = %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7inc_refEPS0_.exit.i.i.i148 + %515 = invoke noalias noundef ptr @_ZN6memory8allocateEm(i64 noundef 24) + to label %.noexc214 unwind label %577 + +.noexc214: ; preds = %514 + store i32 2, ptr %515, align 4, !tbaa !104 + %516 = getelementptr inbounds nuw i8, ptr %515, i64 4 + store i32 0, ptr %516, align 4, !tbaa !104 + %517 = getelementptr inbounds nuw i8, ptr %515, i64 8 + store ptr %517, ptr %172, align 8, !tbaa !82 br label %.noexc.i150 -517: ; preds = %507 - %518 = mul i32 %509, 3 - %519 = add i32 %518, 1 - %520 = lshr i32 %519, 1 - %521 = shl i32 %520, 3 - %522 = add i32 %521, 8 - %.not.i204 = icmp ugt i32 %520, %509 - br i1 %.not.i204, label %523, label %526 - -523: ; preds = %517 - %524 = shl i32 %509, 3 - %525 = add i32 %524, 8 - %.not27.i213 = icmp ugt i32 %522, %525 - br i1 %.not27.i213, label %553, label %526 - -526: ; preds = %523, %517 - %527 = call ptr @__cxa_allocate_exception(i64 40) #21 +518: ; preds = %508 + %519 = mul i32 %510, 3 + %520 = add i32 %519, 1 + %521 = lshr i32 %520, 1 + %522 = shl i32 %521, 3 + %523 = add i32 %522, 8 + %.not.i204 = icmp ugt i32 %521, %510 + br i1 %.not.i204, label %524, label %527 + +524: ; preds = %518 + %525 = shl i32 %510, 3 + %526 = add i32 %525, 8 + %.not27.i213 = icmp ugt i32 %523, %526 + br i1 %.not27.i213, label %554, label %527 + +527: ; preds = %524, %518 + %528 = call ptr @__cxa_allocate_exception(i64 40) #21 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #21 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #21 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %8) - to label %528 unwind label %551 - -528: ; preds = %526 - store ptr getelementptr inbounds nuw inrange(-16, 32) (i8, ptr @_ZTV17default_exception, i64 16), ptr %527, align 8, !tbaa !89 - %529 = getelementptr inbounds nuw i8, ptr %527, i64 8 - %530 = getelementptr inbounds nuw i8, ptr %527, i64 24 - store ptr %530, ptr %529, align 8, !tbaa !334 - %531 = load ptr, ptr %7, align 8, !tbaa !331 - %532 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %533 = icmp eq ptr %531, %532 - br i1 %533, label %534, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206 - -534: ; preds = %528 - %535 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %536 = load i64, ptr %535, align 8, !tbaa !332 - %537 = icmp ult i64 %536, 16 - call void @llvm.assume(i1 %537) - %538 = add nuw nsw i64 %536, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %530, ptr noundef nonnull align 8 dereferenceable(1) %532, i64 %538, i1 false) + to label %528 unwind label %552 + +529: ; preds = %527 + store ptr getelementptr inbounds nuw inrange(-16, 32) (i8, ptr @_ZTV17default_exception, i64 16), ptr %528, align 8, !tbaa !89 + %530 = getelementptr inbounds nuw i8, ptr %528, i64 8 + %531 = getelementptr inbounds nuw i8, ptr %528, i64 24 + store ptr %531, ptr %530, align 8, !tbaa !334 + %532 = load ptr, ptr %7, align 8, !tbaa !331 + %533 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %534 = icmp eq ptr %532, %533 + br i1 %534, label %535, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206 + +535: ; preds = %529 + %536 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %537 = load i64, ptr %536, align 8, !tbaa !332 + %538 = icmp ult i64 %537, 16 + call void @llvm.assume(i1 %538) + %539 = add nuw nsw i64 %537, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %531, ptr noundef nonnull align 8 dereferenceable(1) %533, i64 %539, i1 false) br label %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206: ; preds = %528 - store ptr %531, ptr %529, align 8, !tbaa !331 - %539 = load i64, ptr %532, align 8, !tbaa !333 - store i64 %539, ptr %530, align 8, !tbaa !333 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206: ; preds = %529 + store ptr %532, ptr %530, align 8, !tbaa !331 + %540 = load i64, ptr %533, align 8, !tbaa !333 + store i64 %540, ptr %531, align 8, !tbaa !333 %.phi.trans.insert.i207 = getelementptr inbounds nuw i8, ptr %7, i64 8 %.pre.i208 = load i64, ptr %.phi.trans.insert.i207, align 8, !tbaa !332 br label %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209 -_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206, %534 - %540 = phi i64 [ %536, %534 ], [ %.pre.i208, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206 ] - %541 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %542 = getelementptr inbounds nuw i8, ptr %527, i64 16 - store i64 %540, ptr %542, align 8, !tbaa !332 - store ptr %532, ptr %7, align 8, !tbaa !331 - store i64 0, ptr %541, align 8, !tbaa !332 - store i8 0, ptr %532, align 8, !tbaa !333 - invoke void @__cxa_throw(ptr nonnull %527, ptr nonnull @_ZTI17default_exception, ptr nonnull @_ZN17default_exceptionD2Ev) #25 - to label %557 unwind label %543 - -543: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209 - %544 = landingpad { ptr, i32 } +_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206, %535 + %541 = phi i64 [ %537, %534 ], [ %.pre.i208, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i206 ] + %542 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %543 = getelementptr inbounds nuw i8, ptr %528, i64 16 + store i64 %541, ptr %543, align 8, !tbaa !332 + store ptr %533, ptr %7, align 8, !tbaa !331 + store i64 0, ptr %542, align 8, !tbaa !332 + store i8 0, ptr %533, align 8, !tbaa !333 + invoke void @__cxa_throw(ptr nonnull %528, ptr nonnull @_ZTI17default_exception, ptr nonnull @_ZN17default_exceptionD2Ev) #25 + to label %557 unwind label %544 + +544: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209 + %545 = landingpad { ptr, i32 } cleanup - %545 = load ptr, ptr %7, align 8, !tbaa !331 - %546 = icmp eq ptr %545, %532 - br i1 %546, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i212, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i210 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i212: ; preds = %543 - %547 = load i64, ptr %541, align 8, !tbaa !332 - %548 = icmp ult i64 %547, 16 - call void @llvm.assume(i1 %548) + %546 = load ptr, ptr %7, align 8, !tbaa !331 + %547 = icmp eq ptr %546, %533 + br i1 %547, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i212, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i210 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i212: ; preds = %544 + %548 = load i64, ptr %542, align 8, !tbaa !332 + %549 = icmp ult i64 %548, 16 + call void @llvm.assume(i1 %549) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i210: ; preds = %543 - %549 = load i64, ptr %532, align 8, !tbaa !333 - %550 = add i64 %549, 1 - call void @_ZdlPvm(ptr noundef %545, i64 noundef %550) #23 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i210: ; preds = %544 + %550 = load i64, ptr %533, align 8, !tbaa !333 + %551 = add i64 %550, 1 + call void @_ZdlPvm(ptr noundef %546, i64 noundef %551) #23 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i210, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i212 @@ -31312,135 +31312,135 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211: ; pr call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #21 br label %.body215 -551: ; preds = %526 - %552 = landingpad { ptr, i32 } +552: ; preds = %527 + %553 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #21 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #21 - call void @__cxa_free_exception(ptr %527) #21 + call void @__cxa_free_exception(ptr %528) #21 br label %.body215 -553: ; preds = %523 - %554 = zext i32 %522 to i64 - %555 = invoke noalias noundef ptr @_ZN6memory10reallocateEPvm(ptr noundef nonnull %510, i64 noundef %554) - to label %.noexc217 unwind label %576 +554: ; preds = %524 + %555 = zext i32 %523 to i64 + %556 = invoke noalias noundef ptr @_ZN6memory10reallocateEPvm(ptr noundef nonnull %511, i64 noundef %555) + to label %.noexc217 unwind label %577 -.noexc217: ; preds = %553 - %556 = getelementptr inbounds nuw i8, ptr %555, i64 8 - store ptr %556, ptr %172, align 8, !tbaa !82 - store i32 %520, ptr %555, align 4, !tbaa !104 +.noexc217: ; preds = %554 + %557 = getelementptr inbounds nuw i8, ptr %556, i64 8 + store ptr %557, ptr %172, align 8, !tbaa !82 + store i32 %521, ptr %556, align 4, !tbaa !104 br label %.noexc.i150 -557: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209 +558: ; preds = %_ZN17default_exceptionC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209 unreachable .noexc.i150: ; preds = %.noexc217, %.noexc214 - %.pre.i.i.i.i151 = phi ptr [ %556, %.noexc217 ], [ %516, %.noexc214 ] + %.pre.i.i.i.i151 = phi ptr [ %557, %.noexc217 ], [ %517, %.noexc214 ] %.phi.trans.insert.i.i.i.i152 = getelementptr inbounds i8, ptr %.pre.i.i.i.i151, i64 -4 %.pre2.i.i.i.i153 = load i32, ptr %.phi.trans.insert.i.i.i.i152, align 4, !tbaa !104 - br label %558 - -558: ; preds = %.noexc.i150, %507 - %559 = phi i32 [ %.pre2.i.i.i.i153, %.noexc.i150 ], [ %509, %507 ] - %560 = phi ptr [ %.pre.i.i.i.i151, %.noexc.i150 ], [ %505, %507 ] - %561 = getelementptr inbounds i8, ptr %560, i64 -4 - %562 = zext i32 %559 to i64 - %563 = getelementptr inbounds nuw ptr, ptr %560, i64 %562 - store ptr %500, ptr %563, align 8, !tbaa !105 - %564 = add i32 %559, 1 - store i32 %564, ptr %561, align 4, !tbaa !104 - %565 = load ptr, ptr %13, align 8, !tbaa !372 + br label %559 + +559: ; preds = %.noexc.i150, %508 + %560 = phi i32 [ %.pre2.i.i.i.i153, %.noexc.i150 ], [ %510, %507 ] + %561 = phi ptr [ %.pre.i.i.i.i151, %.noexc.i150 ], [ %506, %507 ] + %562 = getelementptr inbounds i8, ptr %561, i64 -4 + %563 = zext i32 %560 to i64 + %564 = getelementptr inbounds nuw ptr, ptr %561, i64 %563 + store ptr %501, ptr %564, align 8, !tbaa !105 + %565 = add i32 %560, 1 + store i32 %565, ptr %562, align 4, !tbaa !104 + %566 = load ptr, ptr %13, align 8, !tbaa !372 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #21 - %.not.i.i.i149 = icmp eq ptr %565, null - br i1 %.not.i.i.i149, label %578, label %566 + %.not.i.i.i149 = icmp eq ptr %566, null + br i1 %.not.i.i.i149, label %579, label %567 -566: ; preds = %558 - %567 = load ptr, ptr %175, align 8, !tbaa !386 - %568 = getelementptr inbounds nuw i8, ptr %565, i64 8 - %569 = load i32, ptr %568, align 4, !tbaa !74 - %570 = add i32 %569, -1 - store i32 %570, ptr %568, align 4, !tbaa !74 - %571 = icmp eq i32 %570, 0 - br i1 %571, label %572, label %581 +567: ; preds = %559 + %568 = load ptr, ptr %175, align 8, !tbaa !386 + %569 = getelementptr inbounds nuw i8, ptr %566, i64 8 + %570 = load i32, ptr %569, align 4, !tbaa !74 + %571 = add i32 %570, -1 + store i32 %571, ptr %569, align 4, !tbaa !74 + %572 = icmp eq i32 %571, 0 + br i1 %572, label %573, label %582 -572: ; preds = %566 - invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %567, ptr noundef nonnull %565) - to label %581 unwind label %573 +573: ; preds = %567 + invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %568, ptr noundef nonnull %566) + to label %581 unwind label %574 -573: ; preds = %572 - %574 = landingpad { ptr, i32 } +574: ; preds = %573 + %575 = landingpad { ptr, i32 } catch ptr null - %575 = extractvalue { ptr, i32 } %574, 0 - call void @__clang_call_terminate(ptr %575) #22 + %576 = extractvalue { ptr, i32 } %575, 0 + call void @__clang_call_terminate(ptr %576) #22 unreachable -576: ; preds = %553, %513, %496 - %577 = landingpad { ptr, i32 } +577: ; preds = %554, %514, %497 + %578 = landingpad { ptr, i32 } cleanup br label %.body215 -.body215: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211, %551, %576 - %eh.lpad-body216 = phi { ptr, i32 } [ %577, %576 ], [ %544, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211 ], [ %552, %551 ] +.body215: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211, %552, %577 + %eh.lpad-body216 = phi { ptr, i32 } [ %578, %576 ], [ %545, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i211 ], [ %553, %551 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #21 call void @_ZN7obj_refI4expr11ast_managerED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #21 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #21 br label %.body -578: ; preds = %558 +579: ; preds = %559 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #21 - %579 = load ptr, ptr %57, align 8, !tbaa !118 - %580 = load ptr, ptr %4, align 8, !tbaa !369 + %580 = load ptr, ptr %57, align 8, !tbaa !118 + %581 = load ptr, ptr %4, align 8, !tbaa !369 br label %_ZN11ast_manager7inc_refEP3ast.exit.i159 -581: ; preds = %566, %572 +582: ; preds = %567, %573 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #21 - %582 = load ptr, ptr %57, align 8, !tbaa !118 - %583 = load ptr, ptr %4, align 8, !tbaa !369 - %584 = load i32, ptr %568, align 4, !tbaa !74 - %585 = add i32 %584, 1 - store i32 %585, ptr %568, align 4, !tbaa !74 + %583 = load ptr, ptr %57, align 8, !tbaa !118 + %584 = load ptr, ptr %4, align 8, !tbaa !369 + %585 = load i32, ptr %569, align 4, !tbaa !74 + %586 = add i32 %585, 1 + store i32 %586, ptr %569, align 4, !tbaa !74 br label %_ZN11ast_manager7inc_refEP3ast.exit.i159 -_ZN11ast_manager7inc_refEP3ast.exit.i159: ; preds = %578, %581 - %586 = phi ptr [ %583, %581 ], [ %580, %578 ] - %.pn244 = phi ptr [ %582, %581 ], [ %579, %578 ] - %587 = getelementptr inbounds nuw ptr, ptr %.pn244, i64 %indvars.iv.next254 - %588 = load ptr, ptr %587, align 8, !tbaa !138 - %.not.i3.i160 = icmp eq ptr %588, null - br i1 %.not.i3.i160, label %595, label %589 - -589: ; preds = %_ZN11ast_manager7inc_refEP3ast.exit.i159 - %590 = getelementptr inbounds nuw i8, ptr %588, i64 8 - %591 = load i32, ptr %590, align 4, !tbaa !74 - %592 = add i32 %591, -1 - store i32 %592, ptr %590, align 4, !tbaa !74 - %593 = icmp eq i32 %592, 0 - br i1 %593, label %594, label %595 - -594: ; preds = %589 - invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %586, ptr noundef nonnull %588) - to label %595 unwind label %598 - -595: ; preds = %589, %_ZN11ast_manager7inc_refEP3ast.exit.i159, %594 - store ptr %565, ptr %587, align 8, !tbaa !138 - br label %600 - -596: ; preds = %383 - %597 = landingpad { ptr, i32 } +_ZN11ast_manager7inc_refEP3ast.exit.i159: ; preds = %579, %582 + %587 = phi ptr [ %584, %581 ], [ %581, %578 ] + %.pn244 = phi ptr [ %583, %581 ], [ %580, %578 ] + %588 = getelementptr inbounds nuw ptr, ptr %.pn244, i64 %indvars.iv.next254 + %589 = load ptr, ptr %588, align 8, !tbaa !138 + %.not.i3.i160 = icmp eq ptr %589, null + br i1 %.not.i3.i160, label %596, label %590 + +590: ; preds = %_ZN11ast_manager7inc_refEP3ast.exit.i159 + %591 = getelementptr inbounds nuw i8, ptr %589, i64 8 + %592 = load i32, ptr %591, align 4, !tbaa !74 + %593 = add i32 %592, -1 + store i32 %593, ptr %591, align 4, !tbaa !74 + %594 = icmp eq i32 %593, 0 + br i1 %594, label %595, label %596 + +595: ; preds = %590 + invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %587, ptr noundef nonnull %589) + to label %595 unwind label %599 + +596: ; preds = %590, %_ZN11ast_manager7inc_refEP3ast.exit.i159, %595 + store ptr %566, ptr %588, align 8, !tbaa !138 + br label %601 + +597: ; preds = %383 + %598 = landingpad { ptr, i32 } cleanup br label %.body -598: ; preds = %594 - %599 = landingpad { ptr, i32 } +599: ; preds = %595 + %600 = landingpad { ptr, i32 } cleanup br label %.body -600: ; preds = %595, %384 - %601 = icmp samesign ugt i64 %indvars.iv253, 1 - br i1 %601, label %.lr.ph247, label %.loopexit, !llvm.loop !521 +601: ; preds = %596, %384 + %602 = icmp samesign ugt i64 %indvars.iv253, 1 + br i1 %602, label %.lr.ph247, label %.loopexit, !llvm.loop !521 -.body: ; preds = %.body188, %.body215, %598, %596, %.body167, %259, %261, %201, %203, %178 - %.pn75.pn = phi { ptr, i32 } [ %179, %178 ], [ %204, %203 ], [ %202, %201 ], [ %262, %261 ], [ %260, %259 ], [ %597, %596 ], [ %eh.lpad-body168, %.body167 ], [ %599, %598 ], [ %eh.lpad-body189, %.body188 ], [ %eh.lpad-body216, %.body215 ] +.body: ; preds = %.body188, %.body215, %599, %597, %.body167, %259, %261, %201, %203, %178 + %.pn75.pn = phi { ptr, i32 } [ %179, %178 ], [ %204, %203 ], [ %202, %201 ], [ %262, %261 ], [ %260, %259 ], [ %598, %596 ], [ %eh.lpad-body168, %.body167 ], [ %600, %598 ], [ %eh.lpad-body189, %.body188 ], [ %eh.lpad-body216, %.body215 ] call void @_ZN15ref_vector_coreI3app19ref_manager_wrapperIS0_11ast_managerEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #21 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #21 resume { ptr, i32 } %.pn75.pn